我怎么能拒绝一个图像当给定的模板不匹配(取决于任何阈值)?

1视图(30天)
我有一组198个不同的货币不同的国家。我想他们一些模板的基础上。假设印度货币我使用Ashok Stambh模板部分钞票作为印度的注意。但是如果我把一个孟加拉国货币,并检查它在Ashok Stambh模板,模板给我某些地区是礼物,而在现实中不存在的模板。 我想抛弃孟加拉国货币是说,印度货币对某些参数/阈值。 我怎样才能实现呢?
我附上一个印度钞票以及孟加拉国Banlnote和印度Ashok Stambh模板。我也附加代码我试图使用但未能达到目的。我也将我得到的结果。
代码1:
我= rgb2gray (imread (”。/ new3 /印度10₹Front.jpg”));
(红外Ic) = (I)大小;
T = rgb2gray (imread (“India_template.jpg”));
(Tr Tc) = (T)大小;
R = normxcorr2 (T,我);
imshow (R);
人物,冲浪(R),阴影
[x] y =找到(R > = 1 * max (R (:)));
ynew = y -大小(T, 1);
xnew = x -大小(T, 2);
图中,imshow(我);
i = 1:长度(xnew)
imrect (gca, [xnew (i) + 1, ynew (i) + 1,尺寸(T, 2),大小(T, 1)));
持有;
结束
结果与印度钞票:
结果与孟加拉国钞票:
其他的代码我试过,但是相同的结果:
我= rgb2gray (imread (”。/ new3 /孟加拉国20魏Front.jpg));
(红外Ic) = (I)大小;
T = rgb2gray (imread (“India_template.jpg”));
(Tr Tc) = (T)大小;
R = normxcorr2 (T,我);
imshow (R);
人物,冲浪(R),阴影
[x] y =找到(R > = 1 * max (R (:)));
ynew = y -大小(T, 1);
xnew = x -大小(T, 2);
图中,imshow(我);
(R, R = imcrop [Tc Tr Ic红外]);
[r c v] =找到(r = = (max (max (r))));
RGB = insertShape(我“矩形”(c r Tc Tr),“线宽”3);
imshow (RGB);
另一种方法:
%演示使用normxcorr2找到一个模板(白洋葱)
%的大图(堆蔬菜)
clc;%清除命令窗口。
关闭所有;%关闭所有数据(除了imtool。)
imtool关闭所有;%关闭所有imtool数字。
清晰;%擦掉所有现有的变量。
工作空间;%确定工作区面板显示。
格式longg;
格式紧凑的;
字形大小= 20;
rgbImage = imread (”。/ new3 /印度10₹Front.jpg”);
%得到图像的尺寸。numberOfColorBands应该= 3。
[行列numberOfColorBands] =大小(rgbImage);
%显示原始彩色图像。
次要情节(2 2 1);
imshow (rgbImage []);
;
标题(“原始彩色图像”,“字形大小”、字形大小);
%全屏放大图。
集(gcf,“单位”,“归一化”,“outerposition”,(0 0 1 1));
smallSubImage = imread (“India_template.jpg”);
次要情节(2,2,2);
imshow (smallSubImage []);
;
标题(“搜索模板映像”,“字形大小”、字形大小);
%在红色通道搜索匹配。
correlationOutput = normxcorr2 (smallSubImage (:,:, 3), rgbImage (:,:, 3));
次要情节(2、2、3);
imshow (correlationOutput []);
标题(“归一化互相关输出”,“字形大小”、字形大小);
[maxCorrValue, maxIndex] = max (abs (correlationOutput (:)));
[ypeak, xpeak] = ind2sub(大小(correlationOutput) maxIndex (1));
corr_offset = [(xpeak-size (smallSubImage 2)) (ypeak-size (smallSubImage 1)));
次要情节(2、2、4);
imshow (rgbImage);
持有;
矩形(“位置”,(corr_offset (1) corr_offset (2) 85 125),
“edgecolor”,‘g’,“线宽”2);
标题(的模板图像中发现的原始图像,“字形大小”、字形大小);

接受的答案

焉耆刘
焉耆刘 2022年5月23日
是的,先生,可以设置一些打做出接受或拒绝的规则,如
%演示使用normxcorr2找到一个模板(白洋葱)
%的大图(堆蔬菜)
clc;%清除命令窗口。
关闭所有;%关闭所有数据(除了imtool。)
imtool关闭所有;%关闭所有imtool数字。
清晰;%擦掉所有现有的变量。
工作空间;%确定工作区面板显示。
格式longg;
格式紧凑的;
字形大小= 20;
rgbImages {1} = imread (“https://ww2.mathworks.cn/matlabcentral/answers/uploaded_files/1007020/Indian%2010%E2%82%B9%20Front.jpg”);
rgbImages {2} = imread (“https://ww2.mathworks.cn/matlabcentral/answers/uploaded_files/1007015/Bangladesh%2020%20Taka%20Front.jpg”);
smallSubImage = imread (“https://ww2.mathworks.cn/matlabcentral/answers/uploaded_files/1007025/India_template.jpg”);
本土知识= 1:长度(rgbImages)
rgbImage = rgbImages{本土知识};
%得到图像的尺寸。numberOfColorBands应该= 3。
[行列numberOfColorBands] =大小(rgbImage);
图;
%显示原始彩色图像。
次要情节(2 2 1);
imshow (rgbImage []);
;
标题(“原始彩色图像”,“字形大小”、字形大小);
%全屏放大图。
集(gcf,“单位”,“归一化”,“outerposition”,(0 0 1 1));
次要情节(2,2,2);
imshow (smallSubImage []);
;
标题(“搜索模板映像”,“字形大小”、字形大小);
%在红色通道搜索匹配。
correlationOutput = normxcorr2(双(rgb2gray (smallSubImage)),双(rgb2gray (rgbImage)));
次要情节(2、2、3);
imshow (correlationOutput []);
标题(“归一化互相关输出”,“字形大小”、字形大小);
[maxCorrValue, maxIndex] = max (abs (correlationOutput (:)));
如果maxCorrValue > 0.6
[ypeak, xpeak] = ind2sub(大小(correlationOutput) maxIndex (1));
corr_offset = [(xpeak-size (smallSubImage 2)) (ypeak-size (smallSubImage 1)));
结束
次要情节(2、2、4);
imshow (rgbImage);
如果maxCorrValue > 0.6
持有;
矩形(“位置”[corr_offset (1) corr_offset(2)大小(smallSubImage, 2)大小(smallSubImage 1)]、
“edgecolor”,‘g’,“线宽”2);
标题(的模板图像中发现的原始图像,“字形大小”、字形大小);
其他的
标题(“拒绝模板匹配”);
结束
结束

更多的答案(0)

类别

找到更多的在图像处理工具箱帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!