入力画像にスタンプの刻印が含まれているかどうかを判断し、その場所を返すアプリケーションに取り組んでいます。RGB画像の場合、カラーセグメンテーションを使用して検証を行っています(さまざまな形状係数を使用)。グレースケール画像の場合、SIFT +検証でうまくいくと思いましたが、SIFTを使用すると、入力画像で取得したスタンプのみが見つかりますデータベース。
理想的なケースでは、下の画像に示すように、非常にうまく機能します。
図 1. http://i.stack.imgur.com/JHkUl.png
この問題は、入力画像にデータベースに存在しないスタンプが含まれている場合に発生します。最初にやったのは、入力画像のスタンプと似たようなスタンプを比較すると、一致するキーポイントがあるかどうかを確認することでした。ほとんどの場合、一致するキー ポイントは 1 つではなく、図 2 に示すように、一致するキー ポイントがあれば、スタンプではなく入力画像の他の部分を参照します。
図 2. http://i.stack.imgur.com/coA4l.png
また、スタンプが円形であるため、入力画像と円画像の一致を見つけようとしましたが、円画像には重要なポイントがほとんどありません。
だから、この正確なケースでSIFTをもう少し便利にする別のアプローチがあるのだろうか? データベースからすべての記述子とキーポイントを使用してマトリックスを作成し、入力画像とマトリックスの間の最も近いユークリッド距離を探すことについて考えましたが、データベース全体に一致するキーポイント (不要な) がたくさんあるため、おそらく機能しません。 (図 2 参照)。
私は Matlab を使用しており、VLFeat と D. Lowe SIFT の両方の実装を試しました。
編集:
そこで、SIFT に画像上のユーザー定義点の記述子を強制的に計算させる方法を見つけました。私のテスト画像には円が含まれており、記述子が計算され、図 1 と 2 の下のものを含む入力画像と照合されました。このプロセスは 0 から 10 までのスケールで繰り返されました。