在第三章中,本文介绍了动态K均值聚类分割算法。动态K均值聚类分割算法是根据直方图波峰,把图像动态的分割成K个聚类,K的值与图像直方图的波峰个数相同。
最后,在第4节,本文介绍一个自行设计的后期滤波算法,配合这个算法,对初步分割结果进行迭代滤波,可以得到较为理想的分割效果。
2 K均值聚类分割算法文献综述
在K均值聚类算法中,我们把图像分割成K个集合,K是预先知道的一个常数。这种方法是基于识别每个K聚类的矩心。因此,不是在所有聚类的所有模式之间成对的计算距离,可以只计算从矩心的距离。那么这种方法根本归结为寻找聚类的最优K矩心集,步骤如下。[3]
步骤1:选择K初始的聚类中心 。
步骤2:分配每个模式 到聚类 ,它的矩心到模式X最近。
步骤3:重算每个聚类 的矩心,这里可以任意增加或者删除模式点(本文将固定模式点不增加也不删除)。
步骤4:转到步骤2,直到达到收敛。
主要问题是初始聚类配置的选择。可以选择第一个k样本作为最初的聚类中心,或者任意从模式池中选择K样本作为聚类中心。但是在K聚类中的粗糙分割可以产生更好地初始聚类中心集。
在我的程序中,K的值定为3,而矩心则暂时用平均灰度值。上文提到过,对于K均值聚类算法,初始样本的选择关系重大,考虑到分割质量的稳定性,本文没有采用随机法来得到初始样本,而是考虑使用直方图来获得初始样本。
2. 1 基于直方图的采样
2.1.1 直方图简介
直方图就是灰度级的函数,他表示图像中具有每种灰度级的像素的个数,反映图像中每种灰度出现的频率。由于频率是浮点数,其与频数之间只是相差一个归一化常数,所以图像编程中直方图就是灰度级出想的频数,是个整数。源:自~优尔·论`文'网·www.youerw.com/
直方图在图像处理中有着广泛的应用,从图像增强中的直方图的均衡化、规定化,到图像分割中基于直方图的阈值选取,到图像检索中的图像相似度测量。从编程的观点看,直方图是一种很有效的数据结构,所占内存空间很少,又能反映出图像中的灰度分布和目标特性等等,且直方图本身就是有序的。基于直方图可以很容易、很高效的得到图像中亮度、对比度、最大亮度、最小亮度及亮度中值。
2.1.2 从直方图中获取样本
考虑到我们采用的矩心是区域平均值,本文使用众数作为初始样本值。虽然说在数理统计中,算术平均值、中位数、众数这三个总体中心估计量之间并没有什么联系,但是在一些情况下,他们还是比较接近的甚至是相等的(例如当分布图像比较对称的时候)。相对使用随机值作为样本而言,使用众数作为样本更加科学,而且得到的结果也更加稳定。