[Computer Vision]图像分割技术
一、技术介绍
1.1 GrabCut 算法
1.1.1 算法原理
GrabCut 算法是一种交互式的图像分割方法,整体流程围绕着用户提供的少量先验信息(如用矩形框大致框选前景区域等),通过构建图模型、拟合高斯混合模型,利用图割算法不断迭代优化,实现了一种有效的交互式图像分割,最终将图像划分为前景和背景两部分。
1.1.2 技术路线
1.初始化阶段
用户实现交互式输入,用户可以通过简单的方式提供初始信息,常见的是在图像上绘制一个矩形框,框选大致包含前景物体的区域,除此以外,用户还可以使用画笔工具标记确定的前景和背景的信息,辅助算法进行更精确的初始化分。
2.构建图模型阶段
将图像中的每一个像素都看作是图中的一个节点,同时额外添加两个特殊的节点,即源节点(Source Node,常用来代表前景)和汇节点(Sink Node,常用来代表背景)。例如,对于一幅M*N像素大小的图像,构建的图中总共会有M*N+2个节点。
为每个像素节点与源节点、汇节点分别建立连接边,这些边的权重反映了对应像素属于前景或背景的可能性大小,而这个可能性的量化是通过前面初始化好的前景和背景 GMM 来计算。相邻的像素之间也会构建边,这类边的权重体现了相邻像素在特征上的相似性程度,通常基于像素的颜色差值以及空间距离等因素来确定。
3.迭代优化阶段
利用图论中的图割算法对构建好的图进行处理,找到一个最小割,将图划分为两部分,这两部分分别对应着前景和背景区域,从而确定每个像素在当前迭代下属于前景还是背景。
根据上一步图割算法得到的新的像素分类结果,重新收集前景和背景像素的数据,再重新拟合前景和背景的 GMM,因为像素分类发生了变化,所以需要更新模型参数来更好地反映当前前景和背景像素的实际特征分布情况,使得后续的边权重计算能够更加准确。
不断重复上述基于图割算法调整像素分类以及更新 GMM 的步骤,每次迭代都会使分割结果朝着更优的方向发展。在迭代过程中,会设置一些收敛条件来判断是否停止迭代。
4.输出分割结果
当满足收敛条件后,根据最终确定的像素分类情况,将图像中的像素划分为前景和背景两部分,生成最终的图像分割结果。
1.2 K-means 算法
1.2.1 算法原理
K-means 算法是一种经典的聚类算法,旨在通过不断迭代优化,将给定的数据集划分成事先指定数量的簇,即将数据集中的样本按照相似性划分为不同的簇(类别),使得同一簇内的数据样本尽可能相似,而不同簇之间的数据样本差异尽可能大。
1.2.2 技术路线
![]() |
1.图像数据预处理
构建数据集合,把图像中的每一个像素点看作是一个待聚类的数据点,对于彩色图像,其特征向量就是该像素对应的 RGB 值(或者经过预处理后的对应值);对于灰度图像,特征向量就是其灰度值这一个维度的数据。
2.确定聚类簇数
预先设定要将图像分割成的区域数量,从图像所有像素对应的特征向量(即像素值向量)中随机选取K个作为初始的聚类中心。
3.迭代聚类过程
计算图像中每个像素(数据点)与K个聚类中心的距离,通常采用的距离度量方式有欧几里得距离(对于彩色图像像素的 RGB 值向量,按照欧几里得距离公式计算其在三维特征空间中的距离;灰度图像则是在一维特征空间计算距离)等。然后将每个像素分配到距离它最近的聚类中心所对应的簇中,这就相当于将图像中的像素初步划分到了K个不同的类别中,从图像分割角度来看,就是把图像先粗略地划分成了K个区域。
不断重复上述分配像素和更新聚类中心这两个步骤,每一次迭代都会使像素的分类以及聚类中心的位置更优化,让属于同一簇(即同一分割区域)的像素在特征空间上更加聚集,不同簇之间的差异更加明显,从而逐步细化图像分割的效果。
4.收敛判断
迭代过程直到满足收敛条件为止。常见的收敛条件如下:(1) 聚类中心不再发生明显变化,意味着聚类中