0

我正在尝试编写一个函数来计算图像的方向或梯度方向,而不使用 boofCV 库中的内置方法,即

 GradientToEdgeFeatures.direction(derivX,derivY,orientation);

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

方位 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 方向0.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.9E-60

这不等于内置方法。
是什么原因造成的,我该如何解决?提前致谢!

PS对不起我的写作错误。英语不是我的母语。

4

0 回答 0