0

boofCV ライブラリの組み込みメソッドを使用せずに、画像の向きまたは勾配方向を計算する関数をコーディングしようとしています。

 GradientToEdgeFeatures.direction(derivX,derivY,orientation);

derivX は x 方向の画像導関数です。derivY は Y 方向の画像導関数です。方向は、勾配方向の値を格納するためのイメージです。マグニチュードは、勾配方向の値を格納するためのイメージです。3x3 image= の最後の組み込みメソッドからの出力

向き 1.5707964
向き 1.5707964
向き 1.5707964
向き 1.5707964
向き 1.5707964
向き 1.5707964
向き 1.5707964
向き 1.5707964
向き 1.5707964

このステップとマグニチュードを計算するためのコードを次のように記述しました。

         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
マグニチュード 4-6 1.90

これは組み込みメソッドとは異なります。
これは何が原因で、どうすれば解決できますか? 前もって感謝します!

PS私の書き間違いで申し訳ありません。私の母国語ではない英語。

4

0 に答える 0