Image 如何利用卷积法寻找图像的相同部分
我有一个函数,它的目的是通过使用Image 如何利用卷积法寻找图像的相同部分,image,matlab,image-processing,crop,Image,Matlab,Image Processing,Crop,我有一个函数,它的目的是通过使用conv2来裁剪图像的一部分,并找到主图片中被裁剪的部分。据我所知,在对两个矩阵进行卷积时,结果矩阵中最大值的坐标显示出矩阵的相似部分。 我的问题是,x,y没有显示真正的点 function [ ] = cropImage( fileIn) im=imread(fileIn); [r c]=size(im); crop=imcrop(im); figure(1) subplot(2,2,1) imshow(im)
conv2
来裁剪图像的一部分,并找到主图片中被裁剪的部分。据我所知,在对两个矩阵进行卷积时,结果矩阵中最大值的坐标显示出矩阵的相似部分。
我的问题是,x,y没有显示真正的点
function [ ] = cropImage( fileIn)
im=imread(fileIn);
[r c]=size(im);
crop=imcrop(im);
figure(1)
subplot(2,2,1)
imshow(im)
subplot(2,2,2)
imshow(crop)
d=conv2(double(im),double(crop);
m=max(d);
m=max(m);
[x y]=find(d==m);
subplot(2,2,4)
imshow(d)
text(x,y,'+','color','r');
subplot(2,2,1)
text(x,y,'+','color','r');
end
卷积不会给出具有最大相似性的点,相关(或互相关)是您要寻找的运算符。更具体地说,matlab已经为2d图像实现了:
>>> c = normxcorr2(template, image);
>>> [ypeak, xpeak] = find(c==max(c(:)));
相关性是卷积运算符的180度旋转。我想指出,
ypeak
和xpeak
是模板相对于边界框左上角匹配的位置,而不是我们直觉上希望的中心。@rayryeng编辑以解决这个问题,谢谢!在我的脑海中是相当清楚的,用语言表达不是很好:PNo问题:)你已经有我的投票了。我用我的代码替换了这些代码,但没有起作用:d=normxcorr2(crop,im);[ypeak,xpeak]=find(c==max(c(:));子图(2,2,1)文本(xpeak、ypeak、“+”、“color”、“r”)
@NewUser在find
中用d
替换c
。此外,正如@rayryeng所提到的ypeak
和xpeak
对应于模板的左上角。它不在中间。可以通过添加模板大小的一半来移动它们,使其在图像中居中。