图像分割就是把图像划分成多个互不交叠区域的集合,是图像处理与机器视觉学习基本问题之一,图像分割在实际生活中应用十分广泛:比如分割遥感云图中的不同云系与背景;在医学领域,应用图像分割技术区别大脑MR图像中的脑组织,如灰质、白质、脑脊髓等,与非脑组织;在交通领域,可以将车辆目标从背景区域中分割出来,这就和相当于大家比较熟知的抠图。

图像分割的方法有很多,比较常用的有基于区域的分割方法、区域增长和分裂区域合并法、基于边界的分割方法、特定理论的分割方法等。本文从数学角度出发,介绍特定理论的图像分割方法中比较常用的k-means算法在彩色图像分割中的应用。

对于单色图像来说,明亮度是图像分割依据的信息,而彩色图像不仅有明亮度还包括色调饱和度。在对彩色图像进行分割时需要选择合理的彩色空间,常用的彩色空间主要有三种:RGB彩色空间、GYM彩色空间和YUV彩色空间。 RGB彩色空间中,可以用R(红色)、G(绿色)和B(蓝色)这三个分量表示任意的色光。GYM彩色空间与RGB空间不同的是,其颜色是根据在白光中减去一定成分得到,而RGB彩色空间中的颜色是通过从黑色光中增加某种颜色。在YUV空间中,颜色与亮度Y和两个色度信号U、V是一一对应的。

k-means算法的核心思想是将n个数据对象划分成k个聚类,使每个聚类中的数据与该聚类中心距离的平方和最小,其算法流程如下:

Step1:任意选择k个对象作为初始聚类中心;

Step2:计算剩余各个样本到每一个聚类中心的距离,把该样本归到离它最近的那个聚类中心所在的类;

Step3:重新计算每个类的平均值,更新每个类的聚类中心;

Step4:计算准则函数 ,其中k为聚类类别数,为第i个簇;

Step5:当准则函数不再发生变化收敛时,输出聚类结果,否则重复Step2~Step5。

在一张图片中,每一个像素点对应位置坐标和色彩坐标,用k-means算法对图像聚类不是聚类位置信息,而是对其色彩进行聚类。这里色彩采用RGB模型,那么图片中每个像素点对应的坐标为(x,y,r,g,b),其中(x,y)表示位置信息,(r,g,b)代表的像素的色彩信息。通过算法对每个像素点在RGB这三个维度聚类,以实现同一个颜色的像素在一簇,就可以将图像分割,根据色彩信息提取图像信息,进一步进行图像处理和识别。

以大快的公司logal图片为例,经过k-means算法处理之后,得到的具体结果如下:

     图一原图

当设定k=2,经10次迭代之后,对原图处理之后得到图二

图二

将图一与原图对比可以看出,通过k-means算法将公司的标志与背景区别出来,但是标志的一些细节还没有体现出来。

当设定k=3,经10次迭代之后,得到图三如下:

图三

与原图图一比较,发现聚成三类之后,公司标志一些细节问题有所体现,如sou与小鸟身体颜色都为绿色,经k-means算法都可以聚成一类(蓝色)。

分别设定k=4和5,经10次迭代之后,得到图四和图五如下:

图四

图五

将图四与图五与原图对比,发现图五聚类效果最好,但是随着聚类类别数越来越多,在背景区域也存在一些偏差(噪声),这与本身照片的拍摄光线偏暗也有关系,但是可以看出采用k-means基本可以看出标志大部分的细节问题,如果在海量的公司标志中,根据算法分割出的一些有效信息可以将大快公司的logal挑选识别出来。

综上所述,采用k-means算法应用于图像分割,可以提取到有效信息,为之后的图像进一步处理和识别提供了基础。