画像ローカルフィーチャー(十)--BRIEF記述子
5079 ワード
原文:
http://www.cnblogs.com/ronny/p/4081362.html
Binary Robust Independent Elementary Features
www.cnblogs.com/ronny
1.BRIEFの基本原理
SIFT特徴は128次元の特徴記述子を用い,記述子用の浮動小数点数のため512 bytesの空間を占有することを知った.同様に、SURF特性については、64次元の記述子が一般的であり、256 bytesの空間も占有する.1枚の画像に1000個の特徴点がある場合(驚くべきことではないが、これは正常なことである)、SIFTまたはSURFの特徴記述子は、リソースが緊張しているアプリケーション、特に埋め込みアプリケーションに対して、このような特徴記述子は明らかに不可能である.また,大きな空間を占有するほど,マッチング時間が長くなることを意味する.
しかし,実際にSFITやSURFの特徴記述子では,すべての次元がマッチングに実質的な役割を果たすわけではない.PCA,LDAなどの特徴的次元降下法を用いて特徴記述子の次元を圧縮することができる.LSHのようないくつかのアルゴリズムは、SIFTの特徴記述子を2値の符号列に変換し、その後、この符号列はハミング距離で特徴点間の整合を行う.この方法は,漢明距離の計算が異或操作後にバイナリビット数を計算して実現でき,現代の計算機構造において便利であるため,特徴間の整合を大幅に向上させるであろう.次に、二値符号列の特徴記述子を抽出する.
BRIEF[1]は、SIFTのような特徴記述子を計算する必要がなく、二値列を計算する近道を提供する.画像を平滑化してから、特徴点の周りにPatchを選択し、このPatch内でn d nd個の点対を選択する方法が必要です.次に、各点対(p,q)(p,q)について、この2つの点の輝度値を比較し、I(p)>I(q)I(p)>I(q)であれば、この点対は2値列のうちの1つの値を1とし、I(p)
n d ndの選択については,128256または512に設定することができ,これら3つのパラメータはOpenCVで提供されるが,OpenCVではデフォルトのパラメータは256であり,この場合,非整合点のハミング距離は平均128比の特徴のGauss分布を示す.次元数が選択されると,これらの記述子をハミング距離でマッチングすることができる.
BRIEFについては、特徴点を抽出する方法を提供しない特徴記述子にすぎないことに留意されたい.したがって、FAST、SIFT、SURFなどの特徴点を位置決めする方法が必要である場合.ここではCenSurE法を用いてキーを抽出するが,BRIEFにとってCenSurEの表現はSURFの特徴点よりもやや優れている.
CenSurE特徴検出子は3つのステップからなる.まず積分画像を用いて二層GaussLaplaceフィルタ応答を計算し,次に非極大値を用いて局所極大値の検出を抑制し,最後にエッジまたは線上に分布する不安定な特徴点をフィルタリングした.Agrawalらが提案したCenSurE特徴検出子は簡単な二層フィルタを用いてGaussLaplaceを近似した.
CenSurEフィルタのカーネルサイズを(2 n+1)とする×(2 n+1)、外核サイズ(4 n+1)×(4n+1).Inをカーネル重み係数、Onをカーネル重み係数とします.このようなフィルタのDC応答を0とするために、重み係数は、On(4 n+1)^2=In(2 n+1)^2(1)スケールを正規化する必要がある.In(2 n+1)^2=In+1(2(n+1)^2(2(2)CenSurEは、図1に示すように、線形スケール、すなわちn=1,2,3,....図1に近似した2層LOGフィルタの各スケールのフィルタを画像の各画素で計算した.スケール空間の各点を,本スケールの隣接位置および隣接スケールの対応位置の26個の隣接領域と逐次比較し,非極大値抑制により得られた局所極値点とした.これらの特性は不安定であるため,弱い応答はフィルタリングされる.最後に,スケール適応Harris法を用いて主曲率の比を計算し,端または線上に位置する不安定な特徴点を除去した.
全体として,BRIEFは非常に効率の良い特徴記述子を抽出する方法であると同時に,非常に良好な識別率を持つが,画像が大きな面内回転を起こすときにはそれが起こる.
2.ポイントペアの選択について
特徴点の近傍ブロックサイズをSとする×S S×S内でn d nd個のドット対(p,q)(p,q),Calonderを選択した実験で,5種類のサンプリング法を試験した.
1)画像ブロック内で平均サンプリング;
2)p pとqは共に(0125 S 2)(0125 S 2)のGauss分布に合致する.
3)p pは(0125 S 2)(0125 S 2)のガウス分布に合致し、q qは(01100 S 2)(01100 S 2)のガウス分布に合致する.
4)空間量子化極座標での離散位置ランダムサンプリング
5)p pを(0,0)(0,0)に固定し,q qを周囲で平均サンプリングする
以下に、上記5つのサンプリング方法の結果を示す概略図を示す.
2.OpenCV実装BRIEF
[1] Michael Calonder, Vincent Lepetit, Christoph Strecha, and Pascal Fua, “BRIEF: Binary Robust Independent Elementary Features”, 11th European Conference on Computer Vision (ECCV), Heraklion, Crete. LNCS Springer, September 2010.
原文:
http://www.cnblogs.com/ronny/p/4081362.html
Binary Robust Independent Elementary Features
www.cnblogs.com/ronny
1.BRIEFの基本原理
SIFT特徴は128次元の特徴記述子を用い,記述子用の浮動小数点数のため512 bytesの空間を占有することを知った.同様に、SURF特性については、64次元の記述子が一般的であり、256 bytesの空間も占有する.1枚の画像に1000個の特徴点がある場合(驚くべきことではないが、これは正常なことである)、SIFTまたはSURFの特徴記述子は、リソースが緊張しているアプリケーション、特に埋め込みアプリケーションに対して、このような特徴記述子は明らかに不可能である.また,大きな空間を占有するほど,マッチング時間が長くなることを意味する.
しかし,実際にSFITやSURFの特徴記述子では,すべての次元がマッチングに実質的な役割を果たすわけではない.PCA,LDAなどの特徴的次元降下法を用いて特徴記述子の次元を圧縮することができる.LSHのようないくつかのアルゴリズムは、SIFTの特徴記述子を2値の符号列に変換し、その後、この符号列はハミング距離で特徴点間の整合を行う.この方法は,漢明距離の計算が異或操作後にバイナリビット数を計算して実現でき,現代の計算機構造において便利であるため,特徴間の整合を大幅に向上させるであろう.次に、二値符号列の特徴記述子を抽出する.
BRIEF[1]は、SIFTのような特徴記述子を計算する必要がなく、二値列を計算する近道を提供する.画像を平滑化してから、特徴点の周りにPatchを選択し、このPatch内でn d nd個の点対を選択する方法が必要です.次に、各点対(p,q)(p,q)について、この2つの点の輝度値を比較し、I(p)>I(q)I(p)>I(q)であれば、この点対は2値列のうちの1つの値を1とし、I(p)
n d ndの選択については,128256または512に設定することができ,これら3つのパラメータはOpenCVで提供されるが,OpenCVではデフォルトのパラメータは256であり,この場合,非整合点のハミング距離は平均128比の特徴のGauss分布を示す.次元数が選択されると,これらの記述子をハミング距離でマッチングすることができる.
BRIEFについては、特徴点を抽出する方法を提供しない特徴記述子にすぎないことに留意されたい.したがって、FAST、SIFT、SURFなどの特徴点を位置決めする方法が必要である場合.ここではCenSurE法を用いてキーを抽出するが,BRIEFにとってCenSurEの表現はSURFの特徴点よりもやや優れている.
CenSurE特徴検出子は3つのステップからなる.まず積分画像を用いて二層GaussLaplaceフィルタ応答を計算し,次に非極大値を用いて局所極大値の検出を抑制し,最後にエッジまたは線上に分布する不安定な特徴点をフィルタリングした.Agrawalらが提案したCenSurE特徴検出子は簡単な二層フィルタを用いてGaussLaplaceを近似した.
CenSurEフィルタのカーネルサイズを(2 n+1)とする×(2 n+1)、外核サイズ(4 n+1)×(4n+1).Inをカーネル重み係数、Onをカーネル重み係数とします.このようなフィルタのDC応答を0とするために、重み係数は、On(4 n+1)^2=In(2 n+1)^2(1)スケールを正規化する必要がある.In(2 n+1)^2=In+1(2(n+1)^2(2(2)CenSurEは、図1に示すように、線形スケール、すなわちn=1,2,3,....図1に近似した2層LOGフィルタの各スケールのフィルタを画像の各画素で計算した.スケール空間の各点を,本スケールの隣接位置および隣接スケールの対応位置の26個の隣接領域と逐次比較し,非極大値抑制により得られた局所極値点とした.これらの特性は不安定であるため,弱い応答はフィルタリングされる.最後に,スケール適応Harris法を用いて主曲率の比を計算し,端または線上に位置する不安定な特徴点を除去した.
全体として,BRIEFは非常に効率の良い特徴記述子を抽出する方法であると同時に,非常に良好な識別率を持つが,画像が大きな面内回転を起こすときにはそれが起こる.
2.ポイントペアの選択について
特徴点の近傍ブロックサイズをSとする×S S×S内でn d nd個のドット対(p,q)(p,q),Calonderを選択した実験で,5種類のサンプリング法を試験した.
1)画像ブロック内で平均サンプリング;
2)p pとqは共に(0125 S 2)(0125 S 2)のGauss分布に合致する.
3)p pは(0125 S 2)(0125 S 2)のガウス分布に合致し、q qは(01100 S 2)(01100 S 2)のガウス分布に合致する.
4)空間量子化極座標での離散位置ランダムサンプリング
5)p pを(0,0)(0,0)に固定し,q qを周囲で平均サンプリングする
以下に、上記5つのサンプリング方法の結果を示す概略図を示す.
2.OpenCV実装BRIEF
#include
#include
#include
#include
using namespace cv;
int main(int argc, char** argv)
{
Mat img_1 = imread("box.png");
Mat img_2 = imread("box_in_scene.png");
// -- Step 1: Detect the keypoints using STAR Detector
std::vector keypoints_1,keypoints_2;
StarDetector detector;
detector.detect(img_1, keypoints_1);
detector.detect(img_2, keypoints_2);
// -- Stpe 2: Calculate descriptors (feature vectors)
BriefDescriptorExtractor brief;
Mat descriptors_1, descriptors_2;
brief.compute(img_1, keypoints_1, descriptors_1);
brief.compute(img_2, keypoints_2, descriptors_2);
//-- Step 3: Matching descriptor vectors with a brute force matcher
BFMatcher matcher(NORM_HAMMING);
std::vector mathces;
matcher.match(descriptors_1, descriptors_2, mathces);
// -- dwaw matches
Mat img_mathes;
drawMatches(img_1, keypoints_1, img_2, keypoints_2, mathces, img_mathes);
// -- show
imshow("Mathces", img_mathes);
waitKey(0);
return 0;
}
[1] Michael Calonder, Vincent Lepetit, Christoph Strecha, and Pascal Fua, “BRIEF: Binary Robust Independent Elementary Features”, 11th European Conference on Computer Vision (ECCV), Heraklion, Crete. LNCS Springer, September 2010.