超像素概念是2003年Xiaofeng Ren[1]提出和发展起来的图像分割技术,是指具有相似纹理、颜色、亮度等特征的相邻像素构成的有一定视觉意义的不规则像素块。它利用像素之间特征的相似性将像素分组,用少量的超像素代替大量的像素来表达图片特征,很大程度上降低了图像后处理的复杂度,所以通常作为分割算法的预处理步骤。已经广泛用于图像分割、姿势估计、目标跟踪、目标识别等计算机视觉应用[2],而目前,OpenCV关于超像素生成,没有发现网上有相关代码,但其实在opencv_contrib目录下面的未稳定功能模块有SLIC,SEEDS,LSC算法相关实现,如果想要使用这个目录的功能,需要自己重新进行OpenCV的编译[8],有关编译和配置方法可参考[8 ,9]。一些常用的超像素分割算法和性能对比如下表[3]:
本文介绍SLIC(simple lineariterativeclustering)超像素分割算法,即简单的线性迭代聚类,该算法是目前执行速度最快的超像素分割方法[3],2015年实现并行执行速度达250FPS [4,5]。SLIC算法是2010年Achanta[6]提出的一种思想简单、实现方便的算法,将彩色图像转化为CIELAB颜色空间和XY坐标下的5维特征向量,然后对5维特征向量构造距离度量标准,对图像像素进行局部聚类的过程[2],算法基本思路与Kmeans聚类算法类似。算法具体实现过程如下[6,2]:
1. 初始化种子点(聚类中心):按照设定的超像素个数,在图像内均匀的分配种子点。假设图片总共有 N 个像素点,预分割为 K 个相同尺寸的超像素,那么每个