您好,欢迎来到华佗健康网。
搜索
您的当前位置:首页图像聚类

图像聚类

来源:华佗健康网
实验四 图像聚类分割法

一、实验题目:

基于聚类的图像分割方法

二、实验目的:

采用聚类算法提取出图像中的真实目标,以便后续图像理解需要。

三、实验内容:

给定一幅灰度图像的图片,采用均值聚类算法将图像中的目标提取出来,以便后续目标识别和图像理解的需要。

四、预备知识:

图像处理概论、均值聚类算法原理。

五、实验原理:

图像分割的本质是将图像分割成相互不相交的区域,有的区域表示图像目标信息,有的区域表示图像背景信息。图像分割方法众多,在实际应用中得到广泛应用的是阈值法和聚类分割法。本实验采用均值聚类算法实现图像分割,其聚类算法如下:

C-均值聚类算法: 1.条件及约定

设待分类的模式特征矢量集为x1,x2,,xN,类的数目c是事先确定的。 2.基本思路

设方法取定c类和选取c个初始聚类中心,按最小距离原则将各模式分配到

c类中的某一类,之后不断地计算类心和调整个模式的类别,最终使各模式到其判属类别中心的距离平方之和最小。

3.算法步骤

(0)(0)(0)(1)任选c个模式特征矢量作为初始聚类中心:z1,令k0。 ,z2,,zc(2)将待分类的模式特征矢量集{xi}(i1,2,,N)中的模式逐个按最小距离原则分划给c类中的某一类,即

(k)(k),i1,2,,N,存在一个l1,2,,c。 mindij 如果 dilj 则判定 xil(k1)。

(k)式中dij表示xi和(jk)的中心z(jk)的距离,上角标表示迭代次数。于是产生新的

聚类(jk1)(j1,2,,c)。

(3)计算重新分类后的各类中心 z(jk1)1ni(k1)xi(jk1)jx,j1,2,,c

式中n(jk1)为(jk1)类中所含模式的个数。

因为这一步采取平均的方法计算调整后各类的中心,且定为c类,故称为C-均值法。

(4)如果z(jk1)z(jk)(j1,2,,c),则结束;否则,kk1,转至(2)。 应用C-均值聚类算法实现图像分割:

这里假设图像分割成c个区域,其图像大小为MN的灰度图像,任意位置

(x,y)处的灰度值为g(x,y)(0g(x,y)255)。因此,灰度图像可采用集合方式描述

为Gg(x,y)|x1,2,,M,y1,2,,N。假设灰度图像中最小灰度值为0,最大灰度值为255,其中任意灰度级出现的总个数记为h(i)(i0,1,,255)且满足

h(i)MN,这里MN表示给定灰度图像中所有灰度总个数。采用C-均值

i0255聚类算法分割图像的算法过程如下:

这里强调的该分割算法仅考虑图像任意位置灰度值的大小,而没有考虑任意像素与其周围邻域像素之间的关系。

步骤1:从0至255中任意选取c个不同大小的值作为图像分割成c类的中

(0)(0)(0)心值,即采用0至255的整数初始化z1的值,令k0。 ,z2,,zc步骤2:将图像中所有不同位置像素的灰度值

g(x,y)(x1,2,,M,y1,2,,N)逐个按最小距离原则分划给c类中的某一类,

k)k)d((x,2,,M,y1,2,,N,存在一个 如果 d((x,y)lmin,y)j,x1jl1,2,,c。

则判定 g(x,y)l(k1)。

k)(k)2(k)(k)式中d((x表示和的中心g(x,y)(g(x,y)z)z,y)jjjj的距离,上角标表示迭

代次数。于是产生新的聚类(jk1)(j1,2,,c)。

步骤3:计算重新分类后的各类中心 z(jk1)1n(k1)g(x,y)(jk1)jg(x,y),j1,2,,c

式中n(jk1)为(jk1)类中所含模式的个数。

因为这一步采取平均的方法计算调整后各类的中心,且定为c类,故称为C-均值法。

(4)如果z(jk1)z(jk)(j1,2,,c),则结束;否则,kk1,转至步骤2。

六、实验步骤:

(1) 选取一幅将需要加密的图片; (2) 读取图片内容像素值并存储于矩阵; (3) 采用C-均值聚类算法实现图像2类分割;

(4) 将输出中图像中1类区域像素置为0且代表黑色,另一区域像素置为255

且代表白色; (5) 显示分割结果。

七、思考题目:

(1) 考虑像素与其邻域像素存在紧密的图像分割问题; (2) 考虑彩色图像如何分割的问题。

八、实验程序代码:

(1)分割图像为两个区域的聚类分割程序:

clear all

data=imread('e:\\imagebase\\rice.tif'); data=double(data); figure(1) subplot(2,2,1) imshow(uint8(data)); title('原图像');

subplot(2,2,2); imhist(uint8(data)); title('1D直方图'); [M N]=size(data);

[count,x]=imhist(uint8(data)); mima=find(count~=0); V1=zeros(2); V2=zeros(2);

U1=zeros(length(mima),2);

V1(1)=mima(round(rand(1)*(length(mima)/4))+1);

V1(2)=mima(round(length(mima)/2+rand(1)*(length(mima)/4))+1); k=0; while k==0

for j=1:length(mima)

if abs(mima(j)-V1(2))U1(j,1)=1.0; U1(j,2)=0.0; end end tp1=0.0; tp2=0.0; tp3=0.0; tp4=0.0;

for j=1:length(mima)

tp1=tp1+count(mima(j))*(mima(j)-1)*U1(j,1); tp2=tp2+count(mima(j))*U1(j,1);

tp3=tp3+count(mima(j))*(mima(j)-1)*U1(j,2); tp4=tp4+count(mima(j))*U1(j,2); end

V2(1)=tp1/tp2;

V2(2)=tp3/tp4;

if (abs(V2(1)-V1(1))+abs(V2(2)-V1(2)))>0.0001 V1(1)=V2(1); V1(2)=V2(2); else k=1; end end

subplot(2,2,3)

img1=250.*ones(size(data)); for i=1:M for j=1:N tp=data(i,j); for l=1:length(mima) if tp==mima(l) k=l; end end

if U1(k,1)>=U1(k,2) img1(i,j)=0; end end end

imshow(uint8(img1)); tt1='聚类分割图像结果'; title(tt1);

九、实验输出结果:

图2.4.1 蹈米图片采用聚类分割获得的结果

图2.4.2 摄影师图片采用聚类分割获得的结果

图2.4.3 细菌图片采用聚类分割获得的结果

图2.4.4 著名Lena图片采用聚类分割获得的结果

(2)分割图像为背景、目标1和目标2三个区域的分割程序: clear all

data=imread('e:\\imagebase\\shot1.tif');

data=double(data); figure(1) subplot(2,2,1) imshow(uint8(data)); title('原图像'); subplot(2,2,2); imhist(uint8(data)); title('1D直方图'); [M N]=size(data);

[count,x]=imhist(uint8(data)); mima=find(count~=0); V1=zeros(3); V2=zeros(3);

U1=zeros(length(mima),3);

V1(1)=mima(round(rand(1)*(length(mima)/6))+1);

V1(2)=mima(round(length(mima)/2+rand(1)*(length(mima)/6))+1); V1(3)=mima(round(length(mima)*2/3+2*rand(1)*(length(mima)/6))+1); k=0; while k==0

for j=1:length(mima)

if abs(mima(j)-V1(2))if abs(mima(j)-V1(1))U1(j,3)=0.0; else

if abs(mima(j)-V1(3))U1(j,3)=1.0; end end end end tp1=0.0; tp2=0.0; tp3=0.0; tp4=0.0; tp5=0.0; tp6=0.0;

for j=1:length(mima)

tp1=tp1+count(mima(j))*(mima(j)-1)*U1(j,1); tp2=tp2+count(mima(j))*U1(j,1);

tp3=tp3+count(mima(j))*(mima(j)-1)*U1(j,2); tp4=tp4+count(mima(j))*U1(j,2);

tp5=tp5+count(mima(j))*(mima(j)-1)*U1(j,3); tp6=tp6+count(mima(j))*U1(j,3); end

V2(1)=tp1/tp2; V2(2)=tp3/tp4; V2(3)=tp5/tp6; if

(abs(V2(1)-V1(1))+abs(V2(2)-V1(2))+abs(V2(3)-V1(3)))>0.0001

V1(1)=V2(1); V1(2)=V2(2); V1(3)=V2(3); else k=1; end end

subplot(2,2,3)

img1=255*ones(size(data)); for i=1:M for j=1:N tp=data(i,j); for l=1:length(mima) if tp==mima(l) k=l; end end

if U1(k,1)>U1(k,2) & U1(k,1)>U1(k,3) img1(i,j)=0; else

if U1(k,2)>U1(k,1) & U1(k,2)>U1(k,3) img1(i,j)=125; else

if U1(k,3)>U1(k,2) & U1(k,3)>U1(k,1) img1(i,j)=255; end end end end end

imshow(uint8(img1)); tt1='聚类分割图像结果'; title(tt1); 输出实验结果:

图2.4.5 斑点图片的3区域聚类分割结果

图2.4.6 怀表图片的3区域聚类分割结果

图2.4.7 光照不均匀图片的3区域聚类分割结果

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo0.com 版权所有 湘ICP备2023021991号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务