>
模板匹配是一種用於在源影象s中尋找定位給定目標影象t(即模板影象)的技術。其原理很簡單,就是通過一些相似度準則來衡量兩個影象塊之間的相似度similarity(s,t)。
2. 用途
模板匹配方法常用於一些平面影象處理中,例如印刷中的數字、工業零器件等小尺寸目標影象識別分類。
3. 方法
模板匹配中,源影象和模板影象可以是二值影象、灰度影象、彩色影象。
一般而言,模板匹配有兩種使用場景:
1)如果源影象s與模板影象t大小(高和寬)一致,則直接使用相似度計算公式對這兩個影象進行相似度計算。
2)如果源影象s的size大於模板影象t,則在s中匹配t時,需要滑動匹配視窗(即模板影象的大小),計算模板影象與該視窗對應的影象區域之間的相似度。對整張s影象滑動完後,得到多個匹配結果。這裡,有兩種方式獲取匹配結果。一種是返回所有匹配結果中的最佳匹配結果(最小值或最大值,依相似度計算方式而定)。另一種,是設定乙個閾值,大於或小於該閾值的匹配結果都認為是有效的匹配。
例如,如圖1所示,想要在大圖中定位到小圖(小狗的頭部),使用模板匹配時的滑動過程如圖2所示:
滑動完整張大圖後,得到一張包含所有匹配結果的圖,如圖3所示。圖3中的乙個畫素位置代表了一次模板匹配的結果。
4. 模板匹配中常用的相似度計算方法有:
1)square difference matching method (method = cv_tm_sqdiff) 平方差
2)correlation matching methods (method = cv_tm_ccorr) 互相關
3)correlation coefficient matching methods (method = cv_tm_ccoeff) 相關係數
4)上述三種方法的歸一化形式(目的是為了減少光照的影響)
上述方法,opencv中都有實現。另外,除上述opencv實現了的方法外,還有一些相似度衡量方法,包括:
5)sum of absolute difference sad 絕對差值
6)match pixel count mpc 匹配成功點數
5. 模板匹配方法的優缺點:
優點:簡單、直接
缺點:不具有旋轉不變性、不具有尺度不變性
5. opencv中的模板匹配例項**:
[cpp]view plain
copy
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include
using
namespace
std;
using
namespace
cv;
/// 全域性變數
mat img; mat templ; mat result;
char
* image_window =
"source image"
; char
* result_window =
"result window"
; int
match_method;
intmax_trackbar = 5;
/// 函式宣告
void
matchingmethod(
int,
void
* );
intmain(
intargc,
char
** argv )
// 模板匹配
void
matchingmethod(
int,
void
* )
else
// 顯示匹配結果
rectangle( img_display, matchloc, point( matchloc.x + templ.cols , matchloc.y + templ.rows ), scalar::all(0), 2, 8, 0 );
rectangle( result, matchloc, point( matchloc.x + templ.cols , matchloc.y + templ.rows ), scalar::all(0), 2, 8, 0 );
imshow( image_window, img_display );
imshow( result_window, result );
}
OpenCV模板匹配
include include opencv2 opencv.hpp using namespace std using namespace cv int main int argc,char argv load reference image img imread argv 1 always ch...
模板匹配opencv
模板匹配,就是在一幅影象中尋找另一幅模板影象最匹配 也就是最相似 的部分的技術。說的有點抽象,下面給個例子說明就很明白了。在上面這幅全明星照中,我們想找出姚明頭像的位置,並把它標記出來,可以做到嗎?可以,這就是模板匹配的要做的事情。其實模板匹配實現的思想也是很簡單很暴力的,就是拿著模板 姚明頭像 在...
opencv 模板匹配
模板匹配的工作方式 模板匹配的工作方式跟直方圖的反向投影基本一樣,大致過程是這樣的 通過在輸入影象上滑 像塊對實際的影象塊和輸入影象進行匹配。假設我們有一張100x100的輸入影象,有一張10x10的模板影象,查詢的過程是這樣的 1 從輸入影象的左上角 0,0 開始,切割一塊 0,0 至 10,10...