OpenCV3.0.0-alphaの特徴抽出・マッチングまとめ
OpenCV3.0.0-alphaのパッケージが公開されたと話題になっていたので使ってみる.
Change Logを見るとAKAZE特徴量が組み込まれている.
AKAZE特徴量の紹介と他特徴量との比較 - 遥かへのスピードランナー
によるとAKAZE特徴量は,以前のOpenCVでもakaze-opencvというパッケージを入れれば使えたが,OpenCV3.0.0-alphaでは元々組み込まれているのでそのまま使えるようだ.
逆にSIFTやSURFなんかは元々OpenCVで使えたが
OpenCV 3.0.0-alphaでSIFT/SURFを使う | .COM-POUND
によると,opencv_contribに移動されてしまいOpenCVと一緒にビルドしないと使えないようである.
OpenCV3.0.0-alphaでの変更点まとめ
以前当ブログで
OpenCVで画像の特徴抽出・マッチングを行う - whoopsidaisies's diary
にOpenCV2.4.7の画像の特徴抽出あたりをまとめた記事を書いていたので,今回はOpenCV3.0.0-alphaでの変更点をまとめてみる.
特徴点抽出(FeatureDetectorインターフェース)
FeatureDetector | |
---|---|
OpenCV2.4.7 | FAST,FASTX,STAR,SIFT,SURF,ORB,BRISK,MSER,GFTT,HARRIS,Dense,SimpleBlob |
OpenCV3.0.0-alpha | FAST,ORB,BRISK,MSER,GFTT,HARRIS,SimpleBlob,KAZE,AKAZE |
opencv_contrib | STAR,SIFT,SURF |
赤字はOpenCV3.0.0-alphaで追加されたもの.
青字はopencv_contribを入れれば使えるもの.
灰色はOpenCV3.0.0-alphaでなくなってしまってopencv_contribにも入ってないもの.
FASTXとDenseはなくなってしまったようである.
特徴記述(DescriptorExtractorインターフェース)
DescriptorExtractor | |
---|---|
OpenCV2.4.7 | SIFT,SURF,BRIEF,BRISK,ORB,FRIEK |
OpenCV3.0.0-alpha | BRISK,ORB,KAZE,AKAZE |
opencv_contrib | SIFT,SURF,BRIEF,FREAK |
赤字はOpenCV3.0.0-alphaで追加されたもの.
青字はopencv_contribを入れれば使えるもの.
特徴点マッチング(DescriptorMatcherインターフェース)
DescriptorExtractor | |
---|---|
OpenCV2.4.7およびOpenCV3.0.0-alpha | BruteForce,BruteForce-L1,BruteForce-SL2,BruteForce-Hamming,BruteForce-Hamming(2),FlannBased |
DescriptorMatcherに関しては変わりがないようである.
AKAZEを使ってみる
AKAZEを使ってみたかったので,OpenCV3.0.0-alphaで特徴抽出を行ってみる.ついでに他のアルゴリズムとも画像を比較してみる.特徴抽出のソースコードは以下.
cv::String detectorNames[] = {"AKAZE", "KAZE", "FAST", "ORB", "BRISK", "MSER", "GFTT", "HARRIS", "SimpleBlob",}; auto img = cv::imread("Penguins.jpg"); for (int i = 0; i < 9; i++) { auto detector = cv::FeatureDetector::create(detectorNames[i]); std::vector<cv::KeyPoint> keyPoints; detector->detect(img, keyPoints); cv::Mat output; cv::drawKeypoints(img, keyPoints, output, cv::Scalar::all(-1),cv::DrawMatchesFlags::DRAW_RICH_KEYPOINTS); cv::imwrite(detectorNames[i] + ".bmp", output); }
AKAZE
KAZE
FAST
ORB
BRISK
MSER
GFTT
HARRIS
SimpleBlog