裁剪出在模板匹配期间找到的图像

时间:2019-02-12 12:37:50

标签: matlab image-processing template-matching

我正在使用模板匹配在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) ;

1 个答案:

答案 0 :(得分:1)

您需要为R使用最小阈值。例如,这样的事情(抱歉,我没有时间确切地写出来):idx = find( R > 0.5 ); [r,c] = ind2sub( size(R), idx );问题是R总是有最大值,但是匹配可能是错误的发现。显然,您必须为您的应用程序调整0.5(值越小表示漏检但误报率越高;值越大则表示相反)。