使用java计算梯度方向

时间:2014-12-04 23:49:33

标签: java opencv image-processing gradient boofcv

我试图编写一个函数来计算图像的方向或渐变方向而不使用boofCV库中的内置方法

 GradientToEdgeFeatures.direction(derivX,derivY,orientation);

derivX是x方向的图像导数。 derivY是Y方向的图像导数。 orientation是用于存储梯度方向值的图像。 幅度是用于存储梯度方向值的图像。 最后一个内置方法的输出为3x3 image =

方向1.5707964
方向1.5707964
方向1.5707964
方向1.5707964
方向1.5707964
方向1.5707964
方向1.5707964
方向1.5707964
方向1.5707964

我为此步骤编写了代码,并且还为以下计算了Magnitude:

         for (int i = 0; i < Orientation.getHeight(); i++) {
                for (int j = 0; j < orientation.getWidth(); j++) {
                    float valueOfOrientation =  (float) ((float)Math.atan2(derivY.get(j, i), derivX.get(j, i)));
                    orientation.set(j, i,valueOfOrientation);
                    System.out.println("Orientation"+valueOfOrientation );


                   }
                }

         for (int i = 0; i < (magnitude.getHeight()); i++) {
                for (int j = 0; j <( magnitude.getWidth()); j++) {

                    float valueXMag=(float) Math.pow(derivX.get(j, i),2);
                    float valueYMag=(float) Math.pow(derivY.get(j, i),2);
                    float magnitudeValue=(float) Math.sqrt(valueXMag+valueYMag);
                    magnitude.set(j, i,magnitudeValue );
                    System.out.println("Magnitude  "+magnitudeValue);

                    }
                }

但输出值为3x3 Image =

取向-1.5707964
定向1.5707964
定向1.5707964
定向1.5707964
Orientation0.0
定向1.5707964
定向1.5707964
定向1.5707964
取向-1.5707964

幅度1.9073486E-6
幅度1.9073486E-6
幅度1.9073486E-6
幅度1.9073486E-6
幅度0.0
幅度1.9073486E-6
幅度1.9073486E-6
幅度1.9073486E-6
幅度1.9073486E-6

不等于内置方法 造成这种情况的原因是什么?如何解决这个问题?在此先感谢!

P.S对不起我的写作错误。英语不是我的母语。

0 个答案:

没有答案
相关问题