去除噪音:Matlab

时间:2015-06-01 12:08:07

标签: matlab image-processing

我试图在细化图像时从我的图像中删除一些不需要的数字。在某种程度上它起作用了。但仍然有一些,由于在最后阶段,需求输出形成一个不同的形状。我尝试了不同的图像,但没有一个正常工作。可以任意告诉我哪里出错了

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

输入    enter image description here

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

enter image description here

我们可以看到有类似于输入的模式,但由于这些线之间存在噪声,当我执行下一行时,它会扭曲整个模式

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

0 个答案:

没有答案