SURF特徴量とは?
- アフィン変換(スケーリング/回転/平行移動)によって変わりにくい特徴量。
- keypoint(画像の中の特徴的なポイント)と各keypointのdescriptor(特徴)によって特徴量が決まる。
- descriptorの計算には勾配ベクトルの情報を使用する。
SURFを実装するわけではなく、SURFを使いたいだけなのであまり深入りしないようにします。大切なのはアフィン変換の影響を受けにくいことと、画像によってkeypointの数が異なるため特徴ベクトルのサイズが一定ではないというところです。
ソースコード
サンプルコード: /samples/cpp/matcher_simple.cppを使いました。
気になったところをメモしておきます。
- SurfFeatureDetectorのコンストラクタには、パラメータhessianThresholdを渡す。このパラメータが高いほど抽出されるkeypointの数は少なくなる。
- SurfDescriptorExtractor.computeの結果は、特徴点の数 * 64のサイズの行列に格納される。行列のビット深度は32F、チャネル数は1。
結果
ABCという文字をペイントで書きました。これをimage1とします。
次にimage1の画像を90度回転させて、画像サイズを拡大してimage2を作りました。
これらのファイルを入力としてサンプルを動かしました。
0 件のコメント:
コメントを投稿