我正在尝试从纸币图像中提取对象。在我应用的原始图像上
sobel边缘检测。这是图片:

我的问题是在下面的裁剪图像中,我只希望显示100,而没有其他杂音。我该怎么办?

到目前为止,我使用的代码是:

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);

为了完整起见,原始图像为:

最佳答案

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

% 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图像

您也可以使用Canny边缘检测器代替Sobel变换。
Edge1c = edge(Note1,'canny', [0.2, 0.4] , 3.5);
sub_Note1c = imcrop(Edge1c,rect_Note1);
figure(7), imshow(sub_Note1c);

关于matlab - 边缘检测与分割,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24380973/

10-10 17:14