养生 装修 购物 美食 感冒 便秘 营销 加盟 小吃 火锅 管理 创业 搭配 减肥 培训 旅游

视觉图像:模板匹配二

时间:2024-10-09 16:29:45

绪:模板匹配是在一幅图像中寻找与另一幅模板图像最匹配(相似)部分的技术;最常见的模板匹配方法:(1)平方差匹配法method=TM_SQDIFF(2)归一化平方差匹配法method=TM_SQDIFF_NORMED(3)相关匹配法method=TM_CCORR(4)归一化相关匹配法method=TM_CCORR_NORMED(5)系数匹配法method=TM_CCOEFF(6)归一化相关系数匹配法method=TM_CCOEFF_NORMED本经验以归一化相关系数匹配方法为例,进行编写程序;

视觉图像:模板匹配二

方法/步骤

1、相似性度量:归一化相关系数匹配法:其公式如下所示:进行变换得;其中,I为待匹配图像;M为匹配图像;m和n分别为匹配图像的宽度和长度;N=m×n;r的值域范围在[-1,1],值为1.0表示待匹配图像和匹配图像完全匹配

视觉图像:模板匹配二

2、代码编写:先把公式中各分量的计算公式写成函数,总共有5个;//∑∑M(i,j)doubleMFun(Mat_mask_img){int_width=_mask_img.cols;int_height=_mask_img.rows;doublem_sum=0.f;unsignedchar*p_data=(unsignedchar*)_mask_img.data;for(intj=0;j<_width;j++)//lie{for(inti=0;i<_height;i++)//hang{m_sum=p_data[i*_width+j];}}returnm_sum;}

视觉图像:模板匹配二

3、//∑∑M(i,j)^2doubleM2Fun(Mat_mask_img){int_width=_mask_img.cols;int_height=_mask_img.rows;doublem_sum=0.f;unsignedchar*p_data=(unsignedchar*)_mask_img.data;for(intj=0;j<_width;j++){for(inti=0;i<_height;i++){doublep_data_1=p_data[i*_width+j];m_sum=p_data_1*p_data_1;}}returnm_sum;}

视觉图像:模板匹配二

4、//∑∑I(i,j)doubleIFun(Mat_raw_img,Mat_mask_img,int_u,int_v){doublem_sum;unsignedchar*p_data=(unsignedchar*)_raw_img.data;int_height=_mask_img.rows;int_width=_mask_img.cols;for(intj=0;j<_width;j++){for(inti=0;i<_height;i++){m_sum=p_data[(_u+i)*_width+(j+_v)];}}returnm_sum;}

视觉图像:模板匹配二

5、//∑∑I(i,j)^2doubleI2Fun(Mat_raw_img,Mat_mask_img,int_u,int_v){doublem_sum;unsignedchar*p_data=(unsignedchar*)_raw_img.data;int_height=_mask_img.rows;int_width=_mask_img.cols;for(intj=0;j<_width;j++){for(inti=0;i<_height;i++){doubletemp_data=p_data[(i+_u)*_width+(j+_v)];m_sum=temp_data*temp_data;}}returnm_sum;}

视觉图像:模板匹配二

6、//∑∑IMdoubleIMFun(Mat_raw_img,Mat_mask_img,in隋茚粟胫t_u,int_v){double罪焐芡拂m_sum;unsignedchar*p_data_1=(unsignedchar*)_raw_img.data;unsignedchar*p_data_2=(unsignedchar*)_mask_img.data;int_height=_mask_img.rows;int_width=_mask_img.cols;for(intj=0;j<_width;j++){for(inti=0;i<_height;i++){m_sum=p_data_1[(i+_u)*_width+(j+_v)]*p_data_2[i*_width+j];}}returnm_sum;}

视觉图像:模板匹配二

7、匹配结果值进行保存,程序如下:MatMaskMatchFun(Mat_raw_i葡矩酉缸mg,Mat_mask_img){i荏鱿胫协ntmask_width=_mask_img.cols;intmask_height=_mask_img.rows;intmask_big=mask_width*mask_height;//m*nintraw_width=_raw_img.cols;intraw_height=_raw_img.rows;intreal_height=raw_height-mask_height+1;//l-m+1intreal_width=raw_width-mask_height+1;doubleM_Value=MFun(_mask_img);//mdoubleM2_Value=M2Fun(_mask_img);//m^2Matdist_img(real_height,real_width,CV_32FC1);float*p_data=(float*)dist_img.data;for(intj=0;j<real_width;j++){for(inti=0;i<real_height;i++){doubletemp1=IMFun(_raw_img,_mask_img,i,j);doubletemp2=IFun(_raw_img,_mask_img,i,j);doublefenzi=mask_big*temp1-temp2*M_Value;doubletemp3=I2Fun(_raw_img,_mask_img,i,j);doubletemp4=(mask_big*temp3-temp2*temp2)*(mask_big*M2_Value-M_Value*M_Value);doublefenmu=sqrt(temp4);p_data[i*real_width+j]=fenzi/fenmu;}}returndist_img;}

视觉图像:模板匹配二

© 一点知识