本文基于相关性分析来实现图像匹配
第一步:读取图像。
分别读取以下两幅相似的图片,显示效果如下:
第二步:选择一副图像的子区域。
用户可以通过鼠标选择需要截取的图像部分,用于匹配。
随机选取图片的一块区域,如下图:
第三步:使用相关性分析两幅图像
采用协方差的方式计算相关系数,分析图片的相似性。
1.协方差与相关系数的概念
对于二维随机变量(,)X Y ,除了关心它的各个分量的数学期望和方差外,还需要知道这两个分量之间的相互关系,这种关系无法从各个分量的期望和方差来说明,这就需要引进描述这两个分量之间相互关系的数字特征——协方差及相关系数。
若X Y 与相互独立,则()(
)0
Y E X EX Y EY σ--⎡⎤⎣⎦
=≠;若()()0E X EX Y EY --≠⎡⎤⎣⎦,则表
示X 与Y 不独立,X 与Y 之间存在着一定的关系 设 (,)X Y 是二维随机变量, 则称()()E X EX Y EY --⎡⎤⎣⎦为X 与Y 的协方差(Covariance ),记为 ()cov ,X Y 或XY σ,即
()()()cov ,XY X Y E X EX Y EY σ==--⎡⎤⎣⎦
若
0X σ≠
且0Y σ=≠,则称
XY XY X Y σρσσ== 为X 与Y 的相关系数(Correlation Coefficient )。
()c o v
,X Y 是 有量纲的量,而XY ρ则是无量纲的量.协方差常用下列公式计算
()()
=-⋅
cov,X Y E XY EX EY
2.用全搜索和协方差计算截取图片与另外一幅图片的各点的相似度。
c=normxcorr2(sub_I1(:,:,1),I2(:,:,1));
第四步:找到整幅图像的偏移。
[max_c,imax]=max(abs(c(:)));
[ypeak,xpeak]=ind2sub(size(c),imax(1));
[m,n]=size(sub_I1);
xbegin=xpeak-n+1;
ybegin=ypeak-m+1;
xend=xpeak;
yend=ypeak;
从原图像提取匹配到的图像
extracted_I1=I2(ybegin:yend,xbegin:xend,:);
第五步:显示匹配结果。
相关性匹配图:
找出峰值即最相似区域的中心
第六步:计算差值。
for i=1:m
for j=1:n
T(i,j)=extracted_I1(i,j)-sub_I1(i,j);
end
end
结果全为0,即高度相关。
第七步.显示结果
figure,imshow(extracted_I1);。