SURF検出器に基づく特徴点検出概要 [OpenCV]
画像内の強いコーナーを検出します。
◆画像処理効果
処理前
処理後
以下に制作したSURF検出器による特徴点検出部のソースを示す。
Detectors.cpp
SURFはノンフリー版なので、この関数を使用するには以下の2点を追加する必要があります。
1.マクロとヘッダーの追加
2.main関数の最初にcv::initModule_nonfree関数を追加
参考サイト
- http://physics.nyu.edu/grierlab/manuals/opencv/classcv_1_1SurfFeatureDetector.html
- http://opencv.jp/opencv-2svn/cpp/features2d_common_interfaces_of_feature_detectors.html#surffeaturedetector
- http://opencv.jp/cookbook/opencv_img.html#id32
Star検出器に基づく特徴点検出概要 [OpenCV]
画像内の強いコーナーを検出します。
◆画像処理効果
処理前
処理後
以下に制作したStar検出器による特徴点検出部のソースを示す。
Detectors.cpp
参考サイト
- http://opencv.jp/opencv-2svn/cpp/features2d_common_interfaces_of_feature_detectors.html#starfeaturedetector
- http://opencv.jp/cookbook/opencv_img.html#id32
FAST検出器に基づく特徴点検出概要 [OpenCV]
画像内の強いコーナーを検出します。
◆画像処理効果
処理前
処理後
以下に制作したFAST検出器による特徴点検出部のソースを示す。
Detectors.cpp
参考サイト
- http://physics.nyu.edu/grierlab/manuals/opencv/classcv_1_1FastFeatureDetector.html
- http://opencv.jp/opencv-2svn/cpp/features2d_common_interfaces_of_feature_detectors.html#fastfeaturedetector
- http://opencv.jp/cookbook/opencv_img.html#id32
Harris検出器に基づく特徴点検出概要 [OpenCV]
画像内の強いコーナーを検出します。
◆画像処理効果
処理前
処理後
以下に制作したHarris検出器による特徴点検出部のソースを示す。
Detectors.cpp
参考サイト
- http://opencv.jp/opencv-2svn/cpp/feature_detection.html#cv-goodfeaturestotrack
- http://opencv.jp/opencv-2svn/cpp/features2d_common_interfaces_of_feature_detectors.html#goodfeaturestotrackdetector
- http://opencv.jp/cookbook/opencv_img.html#id32
固有値に基づく特徴点検出概要 [OpenCV]
画像内の強いコーナーを検出します。
◆画像処理効果
処理前
処理後
以下に制作したDetectorsクラスのソースを示す。
Detectors.h
Detectors.cpp
参考サイト
- http://opencv.jp/opencv-2svn/cpp/feature_detection.html#cv-goodfeaturestotrack
- http://opencv.jp/opencv-2svn/cpp/features2d_common_interfaces_of_feature_detectors.html#goodfeaturestotrackdetector
- http://opencv.jp/cookbook/opencv_img.html#id32
画像のHistgramを得る方法概要 [OpenCV]
画像のヒストグラムを計算し描画します。
◆ヒストグラムを計算する画像
◆ヒストグラムの描画
以下に制作したHistgramクラスのソースを示す。
Histgram.h
Histgram.cpp
参考サイト
- http://opencv.jp/opencv-2svn/cpp/histograms.html
- http://book.mynavi.jp/support/pc/opencv2/c3/opencv_img.html
MatchTemplate による物体検出「複数検出」 [OpenCV]
前回、テンプレートマッチングの記事を書いたが、スコアが最大となる1個しか検出できなかった。そこで複数個検出できるように変更したので結果を表示する。
動作確認の環境により画面が暗くなってしまっているが、複数検出しているのわかる。
テンプレート画像
複数検出確認
以下に変更後の関数を示す。
MatchTemplate.cpp
void MatchTemplate::doVisions(int num=4, double score) 関数
num は検出個数、score は検出スコアを指定する。
MatchTemplate による物体検出概要 [OpenCV]
入力画像上で実画像のパッチ(テンプレート)をスライドさせ、以下に説明するマッチング手法を使ってマッチングする関数。
- 二乗差分マッチング手法(CV_TM_SQDIFF)
差分の二乗でマッチングする。
- 相関マッチング手法(CV_TM_CCORR)
テンプレートを乗算してマッチングする。
- 相関係数マッチング手法(CV_TM_CCOEFF)
平均値に比例したテンプレートを、その平均値に比例した画像に対してマッチングする。
◆画像処理効果
テンプレート画像
処理前
処理後
- CV_TM_SQDIFF
- CV_TM_SQDIFF_NORMED
- CV_TM_CCORR
- CV_TM_CCORR_NORMED
- CV_TM_CCOEFF
- CV_TM_CCOEFF_NORMED
以下に制作したMatchTemplateクラスのソースを示す。
MatchTemplate.h
MatchTemplate.cpp
参考サイト
AdaptiveThreshhold 適応型閾値概要 [OpenCV]
閾値のレベルがそれ自身変化する閾値処理。
この手法は、照明や反射による輝度勾配が存在し、輝度勾配に合わせて閾値を設定しないといけない場合等に役立つ。
◆画像処理効果
処理前
処理後
- CV_THRESH_BINARY
CV_ADAPTIVE_THRESH_MEAN_C
CV_ADAPTIVE_THRESH_GAUSSIAN_C
- CV_THRESH_BINARY_INV
CV_ADAPTIVE_THRESH_MEAN_C
CV_ADAPTIVE_THRESH_GAUSSIAN_C
以下に制作したAdaptiveThreshHoldクラスのソースを示す。
AdaptiveThreshHold.h
AdaptiveThreshHold.cpp
参考サイト
Threshhold 閾値概要 [OpenCV]
配列と閾値が与えられると、その配列のすべての要素に対して閾値が上か下かに応じて指定された処理が行われる。閾値のタイプは5種類あり、それぞれに対し大津アルゴリズムを組み合わせることができるので計10種類のタイプを利用できる。
◆画像処理効果
処理前
処理後
- CV_THRESH_BINARY
- CV_THRESH_BINARY_INV
- CV_THRESH_TRUNC
- CV_THRESH_TOZERO
- CV_THRESH_TOZERO_INV
- CV_THRESH_BINARY | CV_THRESH_OTSU
- CV_THRESH_BINARY_INV | CV_THRESH_OTSU
- CV_THRESH_TRUNC | CV_THRESH_OTSU
- CV_THRESH_TOZERO | CV_THRESH_OTSU
- CV_THRESH_TOZERO_INV | CV_THRESH_OTSU
以下に制作したThreshHoldクラスのソースを示す。
ThreshHold.h
ThreshHold.cpp
参考サイト