-1

2枚の画像を比較できるアプリを作っています(スマホで2枚の写真)。そこで、限られた量のキーポイントで FAST 検出器と FREAK 記述子を使用します (応答に従って 300 の最良のものを除外しました)。BRUTEFORCE_HAMMING と照合しようとすると、0 の一致が返されます。

マッチングは

        MatOfDMatch matches = new MatOfDMatch();

        matcher = DescriptorMatcher.create(DescriptorMatcher.BRUTEFORCE_HAMMING);
        matcher.match(descriptors,descriptors1,matches);
        MatOfDMatch goedematches = new MatOfDMatch();

        double max_dist = 0;
        double min_dist = 100;
        //if (descriptors.cols() == descriptors1.cols())
        //{
        for( int i = 0; i < descriptors.rows(); i++ )
        { double dist = matches.toArray()[i].distance;
          if( dist < min_dist ) min_dist = dist;
          if( dist > max_dist ) max_dist = dist;
        }
        // should only draw good matches
       for( int i = 0; i < descriptors.rows(); i++ )
        {  MatOfDMatch temp = new MatOfDMatch();
           if( matches.toArray()[i].distance < 2*min_dist )
           {   temp.fromArray(matches.toArray()[i]);
               goedematches.push_back(temp); 
               }        
       // }
        }

       Log.d("LOG!", "Number of good matches= " + goedematches.size());

画像をそれ自体と比較すると、次の出力が得られます。出力は 0x0 良好な一致です。 ここに画像の説明を入力

05-02 15:52:30.325: D/LOG!(17866): Number of Descriptors image 1= 64x286
05-02 15:52:30.325: D/LOG!(17866): Number of Descriptors image 2= 64x286
05-02 15:52:30.325: D/LOG!(17866): description time elapsed 339 ms
05-02 15:52:30.555: D/LOG!(17866): Minimum distance = 0.0
05-02 15:52:30.560: D/LOG!(17866): Maximum distance= 0.0
05-02 15:52:30.560: D/LOG!(17866): Number of good matches= 0x0

同じ絵と全く関係のない絵を合わせると、471回くらい一致します。コード内に何か問題がありますが、何が問題なのかわかりません (コードは予約されているようで、同じものはすべて一致しないため、完全に異なる場合は一致します。コードはどこにありますか?やり方が悪い?)

重要:右の写真の赤い点は気にしないでください。これは、画面にキーポイントを描いたときに撮った古い写真です。マッチングそのものを表すものではありません!最初の画像とは関係のない他の画像である可能性があります。

ここに画像の説明を入力

05-02 16:03:06.120: D/LOG!(19025): Number of Descriptors image 1= 64x259
05-02 16:03:06.120: D/LOG!(19025): Number of Descriptors image 2= 64x286
05-02 16:03:06.420: D/LOG!(19025): Minimum distance= 93.0
05-02 16:03:06.420: D/LOG!(19025): Maximum distance = 183.0
05-02 16:03:06.420: D/LOG!(19025): Number of good matches= 1x286
4

1 に答える 1