0

私のプロジェクトは葉の形状認識です。Invariant Moments を使用して特徴抽出を行い、City Block Distance を使用してテスト画像とデータベース内の画像の間の距離を計算します。私が得る結果は非常に悪いです。認識は、一致の 50% 未満しか得られないと言えます。例えば:

これはテスト画像です

ここに画像の説明を入力

しかし、それはこの画像と一致します:

ここに画像の説明を入力

その画像を大津閾値を使って二値画像に変換するので、形が整った画像になります。私の質問は、これは正常ですか? または コーディングに誤りがありますか? これは、City Block Distance を使用した私のコーディングです。

CityBlock[j] = Math.abs(bMom1 - DB.GetBentukMoment1(j)) + Math.abs(bMom2 - DB.GetBentukMoment2(j)) +
                                Math.abs(bMom3 - DB.GetBentukMoment3(j)) + Math.abs(bMom4 - DB.GetBentukMoment4(j)) +
                                Math.abs(bMom5 - DB.GetBentukMoment5(j)) + Math.abs(bMom6 - DB.GetBentukMoment6(j)) +
                                Math.abs(bMom7 - DB.GetBentukMoment7(j));

そのコーディングで同じ画像を使用すると、結果は 0 値になりませんでした。なんで?ダブルデータ型だからですか?

4

1 に答える 1

0

最後に、アプリケーションの問題を知っています。double データ型でデータベースに保存する double 値が変更されたので、Text データ型を使用して double 値を格納し、それを解析して double にし、ゼロ値を取得します。同じ画像の場合。しかし、不変モーメントはバイナリ画像でのマッチングには適していないと思います。キャニー画像での使用が適しています。それは、バイナリ イメージのいくつかのマッチングのために、私の質問のような問題がまだ発生するためです。

于 2014-04-23T18:27:22.717 に答える