我正在尝试编写一个函数来计算图像的方向或梯度方向,而不使用 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对不起我的写作错误。英语不是我的母语。