如何使用卷积找到图像的相同部分

How to use convolution to find same parts of image

我有一个功能,旨在通过使用 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

卷积不会给你最大相似度的点,correlation(或cross-correlation)就是你要找的运算符.更具体地说,matlab 已经为 2d 图像实现了 normalized cross-correlation

>>> c = normxcorr2(template, image);
>>> [ypeak, xpeak] = find(c==max(c(:)));

相关性是卷积算子的180度旋转。