如何使用卷积找到图像的相同部分
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度旋转。
我有一个功能,旨在通过使用 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度旋转。