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
对应于模板的左上角。它不在中间。可以通过添加模板大小的一半来移动它们,使其在图像中居中。