OpenCVチュートリアルページからFLANNとの機能マッチングのコードをコピーし、次の変更を加えました。
- SURFの代わりにSIFT機能を使用しました。
「良い一致」のチェックを変更しました。それ以外の
if( matches[i].distance < 2*min_dist )
使用しました
if( matches[i].distance <= 2*min_dist )
そうしないと、画像をそれ自体と比較するときに、適切な一致がゼロになります。
キーポイントを描画する際の変更されたパラメータ:
drawMatches( img1, k1, img2, k2, good_matches, img_matches, Scalar::all(-1), Scalar::all(-1), vector<char>(), DrawMatchesFlags::DEFAULT);
INRIA-HolidaysデータセットのIrelandフォルダー内のすべての画像からSIFTを抽出しました。次に、各画像を他のすべての画像と比較して、一致するものを描画しました。
ただし、過去に使用した他のSIFT/Matcher実装では経験したことがない奇妙な問題があります。
- 私が自分自身と照合した画像の一致は良好です。一部を除いて、各キーポイントはそれ自体にマップされます。上の画像を参照してください。
- Iを別の画像J(JはIと等しくない)と照合すると、多くの点が同じ画像にマッピングされます。いくつかの例を以下に示します。
OpenCVチュートリアルから同じコードを使用し、私のものとは異なる経験を報告できる人はいますか?