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