基于超像素领域经典算法SLIC的图片像素化风格生成器
超像素是 2003 年 Xiaofeng Ren 提出和发展起来的图像分割技术,是指具有相似纹理、颜色、亮度等特征的相邻像素构成的有一定视觉意义的不规则像素块
Ren, Malik. Learning a classification model for segmentation[C]. international conference on computer vision, 2003: 10-17.
它利用像素之间特征的相似性将像素分组,用少量的超像素代替大量的像素来表达图片特征,很大程度上降低了图像后处理的复杂度,所以通常作为分割算法的预处理步骤
超像素点分割的方法包括了提取轮廓、聚类、梯度上升等多种
SLIC是基于K-means聚类的超像素分割算法,具有简单灵活、效果好、处理速度快等优势
Achanta R, Shaji A, Smith K, et al. SLIC superpixels compared to state-of-the-art superpixel methods[J]. IEEE transactions on pattern analysis and machine intelligence, 2012, 34(11): 2274-2282
将图像从 RGB 颜色空间转换到 CIE-Lab 颜色空间,Lab 颜色空间更符合人类对颜色的视觉感知。这个空间里的距离能反映人感觉到的颜色差别,相关计算更为准确
根据参数确定超像素的数目,也就是需要划分为多少个区域
聚类中心的邻域内选择梯度最小的像素点作为新的聚类中心
把图像看成二维离散函数,梯度也就是这个函数的求导,当相邻像素值有变化就会存在梯度,而在边缘上的像素点的梯度最大。将聚类中心挪到梯度最小的地方可以避免其落到边缘轮廓上,影响聚类效果
离散梯度的梯度计算考虑到计算量,一般会简化为用绝对值来近似平方和平方根的操作
在聚类中心距离S的区域内的邻域内计算像素点与每个聚类中心的距离
使用的是欧式距离,总距离由颜色距离与空间距离两部分组成
并进行归一化,除以最大值即超像素点的初始宽度,将值映射到[0,1]
而颜色空间距离也会由一个固定的值m来调节颜色距离与空间距离的影响权重,m取值范围为[1,40]
当m越大,颜色空间除以m后的值越小,即空间距离的权重越大,生成的像素会更为形状规则,当m越小,颜色距离权重更大,超像素会在边缘更为紧凑,而形状大小较为不规则
SLIC基于K-means,主要做了两点优化:
- 调整了搜索范围,由全局缩小
- 调整了距离定义,选用CIE-Lab色域,并引入了超参数以调节色彩距离与空间距离的权重
标记每个像素点的类别为距离其最小的聚类中心的类别
计算属于同一个聚类的所有像素点的平均向量值,重新得到聚类中心
直到旧聚类中心与新聚类中心的距离小于一定阈值或者达到一定迭代次数,一般来说,当迭代次数到达10,算法能够达到收敛
迭代到最后,可能会出现与聚类中心不属于同一连通域的孤立像素点
在SLIC论文中,作者将其视为需要进行强制连通的去空洞任务,可以使用到连通算法将其分配到最近的聚类标签
在本文中,由于应用场景是图片像素化,会对像素进行下取样,并不会细化到每个像素,因此不做聚类优化处理
在对图片进行SLIC分割后,我们已经获得每个像素对应的超像素标记,设定一定步长stride
,每隔stride
个像素,将像素赋值为其聚类中心的颜色,即得到最终的像素化结果
点击该处即可体验,相关参数如下:
- 迭代次数
iters
;iters
越大,分割结果更精准,计算时间越长 - 超像素点大小
blocksize
;blocksize
越小,超像素点分割越细腻 - 取像素点步长
stride
;stride
越小,生成的像素图越接近超像素点,也就越细腻 - 颜色空间权重
weight
;weight
越大,颜色对于分割结果的影响越大