te2.m

来自「基于二维直方图的图像模糊聚类分割方法」· M 代码 · 共 67 行

M
67
字号
%FCM法进行分割
I=imread('blwhite.jpg');
I2=imnoise(I,'gaussian',0,400/(255*255));
I3=nlfilter(I2,[3 3],@fdd);%对图象进行平滑
subplot(2,3,1);
imshow(I2);
subplot(2,3,2);
imshow(I3,[]);
[m n]=size(I2);
L=zeros(256,256);%建一个256×256的矩阵
for i=1:m
   for j=1:n
       l=double(I2(i,j))+1;
       f=round(I3(i,j))+1;
       L(l,f)=L(l,f)+1;
   end
end
L=L/(m*n);
x=0:255;
y=0:255;
z=double(L(x+1,y+1));
subplot(2,3,3)
mesh(x,y,z);
axis([0 255 0 255 0 0.002])
view(30,10);
%以上实现画二维直方图
subplot(2,3,4);imhist(I2);
%u=0.5;
X=ones(m*n,2);
for i=1:m
    for j=1:n
            X((i-1)*n+j,1)=I2(i,j);
            X((i-1)*n+j,2)=round(I3(i,j));
        end
 end
%将像素矩阵转化为一维
c=2;
[CENTER, U, OBJ_FCN] = FCM(X, c);
Y=X;
if CENTER(1,1)<CENTER(2,1)
    for k=1:count
        if U(2,k)>=0.5
            Y(k,2)=255;
        else
            Y(k,2)=0;
        end
    end
else
    for k=1:count
        if U(2,k)<0.5
            Y(k,2)=255;
        else
            Y(k,2)=0;
        end
    end
end
for i=1:m
    for j=1:n
        if i==1
            I4(i,j)=Y(i,2);
        else 
            I4(i,j)=Y((i-1)*m+j,2);
        end
    end
end
subplot(2,3,5)
imshow(I4,[]);

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?