边缘检测和分割

5
我正在尝试从纸币图像中提取一个对象。 我对原始图像应用了Sobel边缘检测。这是图片: enter image description here 我的问题是,在下面的裁剪图像中,我只想显示数字100,而不要其他干扰。请问如何做到这一点? enter image description here 我到目前为止使用的代码是:
close All;
clear All;
Note1 = imread('0001.jpg');
Note2 = imread('0007.jpg');
figure(1), imshow(Note1);
figure(2), imshow(Note2);

Note1=rgb2gray(Note1);
Note2=rgb2gray(Note2);
Edge1=edge(Note1,'sobel');
Edge2=edge(Note2,'sobel');
figure(5), imshow(Edge1),title('Edge sobel1');
figure(6), imshow(Edge2),title('Edge sobel2');

rect_Note1 = [20 425 150 70];
rect_Note2 = [20 425 150 70];
sub_Note1 = imcrop(Edge1,rect_Note1);
sub_Note2 = imcrop(Edge2,rect_Note2);
figure(7), imshow(sub_Note1);
figure(8), imshow(sub_Note2);

为了完整起见,这是原始图片:


(注:本段内容无需翻译,仅为说明用途)

你需要识别的是100比尔纸币还是任意面额的比尔纸币?搜索范围仅限于比尔还是应该适用于任何使用阿拉伯数字的货币纸币? - Rody Oldenhuis
请问您能同时发布原始图片吗? - kkuilla
@Rody 我打算识别所有的比尔纸币。我想要在裁剪后的图像中仅计算100个对象中白色像素的数量。作为识别技术,我将使用各种面额纸币中白色像素的数量,即1、5、10、50和100元纸币。除此之外,我将裁剪每张纸币上的一些重要特征,通过应用我之前提到的相同技术来判断它是真实还是假冒货币。我在mat-lab方面非常新手,但发现这种技术还是可以掌握的。 - user3472037
@kkuilla 这是原始图片链接:http://imgur.com/um808ai&0EIkmP0&Pvob7Ku#1 - user3472037
2
你尝试过笔画宽度变换(SWT)吗? - Shai
1个回答

3

在应用边缘检测器之前,使用高斯滤波器清除噪声:

% Create the gaussian filter with hsize = [5 5] and sigma = 3.5
G = fspecial('gaussian',[7 7], 3.5);
Note1f = imfilter(Note1,G,'same');
Edge1f=edge(Note1f,'sobel');
sub_Note1f = imcrop(Edge1f,rect_Note1);
figure(6), imshow(sub_Note1f);

这将产生一个更清晰的100张图片。 enter image description here

你也可以使用Canny边缘检测器来代替Sobel变换。

Edge1c = edge(Note1,'canny', [0.2, 0.4] , 3.5);
sub_Note1c = imcrop(Edge1c,rect_Note1);
figure(7), imshow(sub_Note1c);

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接