我试图在细化图像时从我的图像中删除一些不需要的数字。在某种程度上它起作用了。但仍然有一些,由于在最后阶段,需求输出形成一个不同的形状。我尝试了不同的图像,但没有一个正常工作。可以任意告诉我哪里出错了
I = imread('img.jpg');
I = rgb2gray(I);
I = uint8(255*mat2gray(I));
I = medfilt2(I,[5 5]);
I = histeq(I,256);
myfilter = fspecial('gaussian',[3 3], 0.5);
myfilteredimage = imfilter(I, myfilter, 'replicate');
I=imresize(I,[128 128]);
figure,imshow(I);
输入
I1=edge(I,'canny',0.375);
I2=edge(I,'canny',0.1);
I = imsubtract(I2,I1);
si = imdilate(I,strel('line',3,0));
se = imerode(I,strel('line',3,0));
I = imsubtract(si,se);
figure,imshow(I)
si = imdilate(I,strel('disk',1));
se = imerode(I,strel('disk',2));
I = imsubtract(si,se);
figure,imshow(I);
我们可以看到有类似于输入的模式,但由于这些线之间存在噪声,当我执行下一行时,它会扭曲整个模式
I = imfill(I,'holes');
[L num]=bwlabel(I); %%number of connected objects found in binary%%%
A=[];
for i=1:num
a=find(L==i);
A(i)=size(a,1);
end
[b indxA]=max(A);
L2(128,128)=0;
for i=1:num
if A(i)>=0.9*b
L2(find(L==i))=1;
end
end
figure,imshow(L2);