matlab - 裁剪模板匹配期间发现的图像
问题描述
我正在使用模板匹配在 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) ;
解决方案
您需要为R
. 例如,像这样的事情(对不起,我没有时间准确地写出来):idx = find( R > 0.5 ); [r,c] = ind2sub( size(R), idx );
问题R
总是有一个最大值,但正如您所发现的那样,匹配可能是错误的。显然,您必须0.5
针对您的应用程序进行调整(较低的值意味着更少的未命中但更多的误报;较高的值则相反)。
推荐阅读
- javascript - 我需要将值从单选按钮写入控制台(JS const)
- python - Pandas - 基于多列的组合从第二个数据帧中获取值
- r - 使用以列值为条件的概率创建随机二元结果
- html - 从 CSS 中引用 CSS 属性的值
- vb.net - 升级 VB6 方法以将随机访问文件读取到 VB.net,无法读取超出流末尾的最后一条记录异常
- python - List slices:为什么这两个相似的代码片段的输出不同?
- c# - 向 SMTP 客户端添加过滤器
- javascript-automation - 在 JXA (AppleScript JS) 中加载脚本库
- javascript - 我如何在蚂蚁设计上切换单选按钮颜色 - 反应?
- sql - 如何有效地确定 informatica 中大十进制数的精度长度