OpenCv.js のテンプレートマッチングには6つのアルゴリズムがありますが、それぞれどの程度処理時間の差があるのか気になったので、各アルゴリズムの処理時間を測ってみました。
以下が計測に使った入力画像です。解像度は 1080 × 1920 です。
以下がテンプレート画像です。解像度は 97 × 104 です。
これらの画像を cv.matchTemplate() に入力して、30回分の処理時間の平均を取りました。
マスクなし | マスクあり | |
---|---|---|
TM_SQDIFF | 564 ms | 1248 ms |
TM_SQDIFF_NORMED | 566 ms | 使用不可 |
TM_CCORR | 545 ms | 使用不可 |
TM_CCORR_NORMED | 573 ms | 1258 ms |
TM_CCOEFF | 556 ms | 使用不可 |
TM_CCOEFF_NORMED | 578 ms | 使用不可 |
TM_SQDIFF が高速になると予想していたのですが、結果としてはどれもほとんど差はありませんでした。マスクを入力した場合はかなり処理時間が遅くなりました。TM_SQDIFF は誤判定が多いので、速度差がないなら TM_CCOEFF などを使った方が良さそうですね。