我正在使用模板匹配在MATLAB中给定的输入图像中查找模板图像。因此,通常它会在给定输入图像中找到模板图像的区域上形成一个矩形。
但是,如果我的输入图像不包含模板图像,它将在某个随机区域上形成矩形。
我想要的是裁剪由于模板匹配而找到的图像(即在矩形中找到的图像),以便以后我可以将其与模板图像进行比较,并检查它们的相似程度。
这是我使用的代码:
IReal1 = imread('Real_4.jpg');
check1 = imread('check.jpg') ;
IReal = rgb2gray(IReal1) ;
check = rgb2gray(check1) ;
[Ir Ic] = size(IReal) ;
[Tr Tc] = size(check) ;
R = normxcorr2(check , IReal);
R = imcrop(R , [Tc Tr Ic Ir]);
[r c v] = find(R == (max(max(R)))) ;
RGB = insertShape(IReal, 'rectangle', [c r Tc Tr], 'Linewidth', 3);
imshow(RGB) ;
答案 0 :(得分:1)
您需要为R
使用最小阈值。例如,这样的事情(抱歉,我没有时间确切地写出来):idx = find( R > 0.5 ); [r,c] = ind2sub( size(R), idx );
问题是R
总是有最大值,但是匹配可能是错误的发现。显然,您必须为您的应用程序调整0.5
(值越小表示漏检但误报率越高;值越大则表示相反)。