2020-12-26

matlab实现k-均值聚类分割图像

我用的是图像矩阵直接运算,处理图像的速度还可以,运行的话,图像基本都是秒出。
注意:
1.这是直接对图像进行处理的k-均值聚类法,输入的图像位深是24位
2.我这里的k设置的是2
代码:

img=imread('D:\03.jpg');
img=rgb2gray(img);
x=double(img);
[m,n]=size(x);
z(:,1)=x(1,1);
z(:,2)=x(1,5);
z1=ones(m,n)*z(:,1);
z2=ones(m,n)*z(:,2);
flag=1;
while flag
    d1=abs(z1-x);
    d2=abs(z2-x);
    d3=d1-d2;
    [x1,y1]=find(d3<0);
    [x2,y2]=find(d3>=0);
    z3=0;
    for i=1:length(x1)
       z3=z3+sum(x(x1(i),y1(i))/length(x1));
    end
    z4=0;
    for j=1:length(x2)
        z4=z4+sum(x(x2(j),y2(j))/length(x2));
    end
    z5=ones(m,n)*z3;
    z6=ones(m,n)*z4;
    if z1==z5
        flag=0;
        xw=zeros(m,n);
        for i=1:length(x1)
            xw(x1(i),y1(i))=img(x1(i),y1(i));
        end
        imshow(xw);
        break;
    else
        z1=z5;
        z2=z6;
    end  
end

效果:
这是输入的原始图像
在这里插入图片描述
这是是输出的图像:
在这里插入图片描述
输入图:
在这里插入图片描述
输出图:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十八闲客yxg

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值