OpenCVで物体検出(たとえば顔検出)をするときに使用する detectMultiScale の引数の意味と使いかた。
1 2 3 4 5 6 7 |
void CascadeClassifier::detectMultiScale( const Mat& image, vector<Rect>& objects, double scaleFactor=1.1, int minNeighbors=3, int flags=0, Size minSize=Size()) |
1. image
CV_8U 型の行列.ここに格納されている画像中から物体が検出されます
2. objects
矩形を要素とするベクトル.それぞれの矩形は,検出した物体を含みます
3. scaleFactor
各画像スケールにおける縮小量を表します
設定範囲 | 1.0を超える ( > 1.0 ) |
scaleFactorは縮小量の「ステップ」。したがってscaleFactorが大きくなるほど飛び飛びの計算になる。結果として全体としての計算が速くなる(計算時間が短くなる)。
ステップを細かく刻むこと(限りなく1.0に近い値)が良い訳ではないが、かといってステップが大きいと検出『見逃し』が発生する。
4. minNeighbors
物体候補となる矩形は,最低でもこの数だけの近傍矩形を含む必要があります
0のとき | 検出にマッチする数が多くなる。見逃しは少ないが誤検出が増える |
大きいとき | 検出にマッチする数は少なくなる。見逃しは多いが誤検出は少ない |
5. flags
このパラメータは,新しいカスケードでは利用されません.古いカスケードに対しては,
6. cvHaarDetectObjects
関数の場合と同じ意味を持ちます
7. minSize
物体が取り得る最小サイズ.これよりも小さい物体は無視されます
ROI : Range Of Interest
画像の一部に注目する(対象にする)キーワード