首页 > 解决方案 > 裁剪模板匹配期间发现的图像

问题描述

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

标签: matlabimage-processingtemplate-matching

解决方案


您需要为R. 例如,像这样的事情(对不起,我没有时间准确地写出来):idx = find( R > 0.5 ); [r,c] = ind2sub( size(R), idx ); 问题R总是有一个最大值,但正如您所发现的那样,匹配可能是错误的。显然,您必须0.5针对您的应用程序进行调整(较低的值意味着更少的未命中但更多的误报;较高的值则相反)。


推荐阅读