MATLAB 如何去除图像中孤立点

来源:百度知道 编辑:UC知道 时间:2024/06/26 01:16:49
如何去除图像中孤立点,就是在一张图片上,有一道裂缝,周围有孤立点,要求用MATLAB程序处理掉,不要PS,手动什么的!!!急,望高手指点!!!
就是图上一条弯曲的白线,其他的都不要,只要这条白线!把其他点去掉,我调节阈值可以提取出他,但是周围有好多白点,请大虾指点!
能有更详细的步骤吗?可以追加

编写个扫描程序,设定当像素为1的点周围一个矩形面积内的点像素不为一时设此点像素为0,或者有个自编的程序直接就把想去掉的点擦掉,类似photoshop的仿制图章。

去掉白点应该用非常小的结构元素(比如2×2)做开运算,这样可以减小对图像其他部分的影响。
如果原图是不是二值图像的话可以先试试中值滤波一下看看效果。
如果想处理问题中的二值图像,可以试试连通区域检测算法,统计各个连通区域的面积,然后将面积很小的白色连通区域填充为黑色。

  1. 这可以用图像处理的方式解决

  2. 可用中值滤波的方法去除

  3. 中值滤波用这个函数,I是你调整阈值后带白点的图像
    f = medfilt2(I);

你是要用图像处理的方法来解决吧

如果只是有白点,可用中值滤波的方法去除白点

中值滤波用这个函数,I是你调整阈值后带白点的图像
f = medfilt2(I);

clear;A=ones(8,8);
A(3,:)=0;
A(:,3)=0;
A(5,:)=0;
A(:,5)=0;
A(8,:)=0;
A(:,1)=0;
N=8;

删除邻接矩阵的孤立点,
K=0;
for i=1:8
if (sum(abs(A(i,:)))+sum(abs(A(:,i))))==0
K=[K,i]
end
end
m=length(K);
A(K(2:m),:)=[];
A(:,K(2:m))=[];
% K=[0,3,5]
删除全零行,
K=0;
for i=1:8
if sum(abs(A(i,:)))==0
K=[K,i]
end
end
m=length(K);
A(K(2:m),:)=[];<