(MATLAB)K均值聚类算法用于图像的分割

本文介绍使用MATLAB的K均值聚类算法进行图像分割的方法,通过调整聚类中心数量K,观察不同K值下图像分割效果的变化,对比不同图像的分割结果。

目的

实现将K均值聚类算法用于图像的分割(以下采用一张比较常见的图片,这张图片即为下面使用的test1.png,当然,也可采用别的图片,用小黄人做实验只是因为效果比较OK)
在这里插入图片描述
k均值聚类结果受到所选聚类中心的个数K和其初始位置以及模式样本的几何性质及读入次序等的影响。实际应用中需要试探不同的K值和选择不同的聚类中心起始值。

道理是这样,但是我们是直接用MATLAB里面的kmeans函数(用 help(‘kmeans’) 可以直接查看kmeans的相关信息),聚类起始点我们并不需要考虑。代码中我们重点关照一下K,最好把不同的K得出的效果放在同一个figure中,这样对比起来效果比较明显。此外,比较有可能影响结果的应该就是模式样本的几何性质了,也就是图片的前景背景的占比,RGB占比等等。(所以建议多试试几张图看看对比)

代码

close all;
clear all;
clc;

k=2;

org = imread('test1.png');        %读入图像
figure;
subplot(2,2,1);
imshow(org),title('原始图像');    %显示原图像

% 接下来需要知道图片的尺寸(长和宽),如若直接对RGB图像进行操作,如下
% [m,n,p]=size(org)                     %m,n为所求,p=3为通道数

% 或者用下面的这种方法,转化为灰度图再求
gray=rgb2gray(org);
[m,n]=size(gray);

% 将图像进行RGB——3通道分解
% org(:, :, 1)......分别代表rgb通道
A = reshape(org(:, :, 1), m*n, 1);   
B = reshape(org(:, :, 2), m*n, 1);
C = reshape(o
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值