![]() |
OpenCV 4.13.0
Open Source Computer Vision
|
画像における主要な特徴とは何か? そうした特徴を見つけることはどのように役立つのか?
なるほど、コーナーは良い特徴である。では、どうやって見つけるのか?
Shi-Tomasiコーナー検出について見ていく
Harrisコーナー検出器は、画像のスケールが変化すると十分な性能を発揮できない。Loweはスケール不変な特徴を見つける画期的な手法を開発し、それはSIFTと呼ばれる
SURF (Speeded-Up Robust Features) 入門
SIFTは非常に優れているが、十分に高速ではない。そこで人々はSURFと呼ばれる高速化版を考案した。
上記の特徴検出手法はいずれも何らかの点で優れている。しかし、SLAMのようなリアルタイムアプリケーションで動作させるには十分に高速とは言えない。そこで登場するのがFASTアルゴリズムであり、これはまさに "FAST"(高速)である。
BRIEF (Binary Robust Independent Elementary Features)
SIFTは128個の浮動小数点数からなる特徴記述子を用いる。そのような特徴が何千個もある場合を考えてみよう。マッチングには多くのメモリと時間を要する。これを圧縮すれば高速化できるが、それでもまず計算する必要がある。そこで登場するのがBRIEFであり、より少ないメモリでバイナリ記述子を見つける近道を提供し、マッチングを高速化しつつ、なお高い認識率を実現する。
ORB (Oriented FAST and Rotated BRIEF)
SIFTとSURFはその役割において優れているが、もしアプリケーションでこれらを使うために毎年数ドルを支払わなければならないとしたらどうだろうか? そう、これらは特許に守られているのだ!!! その問題を解決するため、OpenCVの開発者たちはSIFTやSURFに代わる新たな "無料" の手法を考案した。それがORBである。
ここまでで特徴検出器と記述子について多くのことを学んだ。次はさまざまな記述子をマッチングする方法を学ぶときである。OpenCVは2つの手法、すなわち総当たり (Brute-Force) マッチングとFLANNベースのマッチングを提供している。
これで特徴マッチングについて理解できた。次はこれをcalib3dモジュールと組み合わせて、複雑な画像の中から物体を見つけてみよう。