图像分割

图像分割

计算机视觉领域,图像分割(Segmentation)指的是将数字图像细分为多个图像子区域(像素的集合)(也被称作超像素)的过程。图像分割的目的是简化或改变图像的表示形式,使得图像更容易理解和分析。[1]图像分割通常用于定位图像中的物体和边界线曲线等)。更精确的,图像分割是对图像中的每个像素标签的一个过程,这一过程使得具有相同标签的像素具有某种共同视觉特性。

图像分割的结果是图像上子区域的集合(这些子区域的全体覆盖了整个图像),或是从图像中提取的轮廓线的集合(例如边缘检测)。一个子区域中的每个像素在某种特性的度量下或是由计算得出的特性都是相似的,例如颜色亮度纹理邻接区域在某种特性的度量下有很大的不同

以上是维基百科的解释,理解起来就是图像分割是将一张图像分割为多个子区域的过程,作用便是可以定位物体的边界,本质是对于每个像素的分类,结果便是同类的像素被划分到同一个子区域。

image_segementation_1

具体分类方向

在具体的目标上,图像的分割有着不同的任务,根据实现的目标不同可以分为图像语义分割和图像实例分割。

语义分割

语义分割,是将同一个类别的物体在图像中的区域识别为同一个子区域。以类别为单位分割。

image_segementation_2

实例分割

实例分割,是语义分割的更进一步,将仅仅将物体在图像中的区域识别为一个子区域,不同物体为不同子区域,以物体个体为单位划分。

image_segementation_1

想了解更多的图像分割的分类方向,可以参考图像分类、物体检测、语义分割与实例分割

图像分割的应用

医学图像

  • 肿瘤和其他病理的定位
  • 组织体积的测量
  • 计算机引导的手术
  • 诊断
  • 治疗方案的定制
  • 解剖学结构的研究

卫星图像

在卫星图像中识别物体,道路森林等。

人脸识别

人脸识别首先要解决的问题便是人脸检测,人脸检测就需要图像分割出人脸。

指纹识别

指纹识别上的应用暂时不了解(待更)

交通控制系统

(待更)

机器视觉

机器视觉于计算机视觉一样,是比图像分割更大的范畴,这里指的应是在工业检测中的图像分割的应用。

Brake light detection

刹车灯的检测,这个属于比较具体的应用。

图像分割的方法

图像分割的方法有很多,现已有许多各种用途的图像分割算法。对于图像分割问题没有统一的解决方法,这一技术通常要与相关领域的知识结合起来,这样才能更有效的解决该领域中的图像分割问题。

这些方法可以分为传统方法和深度学习的方法两大类。

传统方法

聚类法

K-均值算法是一种将图像分割成K个聚类的迭代技术。基本算法如下:

  1. 首先从n个数据对象任意选择 k 个对象作为初始聚类中心;
  2. 对于所剩下其它对象,则根据它们与这些聚类中心的相似度(距离),分别将它们分配给与其最相似的(聚类中心所代表的)聚类;
  3. 然后再计算每个所获新聚类的聚类中心(该聚类中所有对象的均值);
  4. 重复第2和3步骤,直至收敛(聚类不再发生变化)。

这里,距离指像素与聚类中心之间绝对偏差或偏差的平方。偏差通常用像素颜色、亮度、纹理、位置,或它们的加权组合。K值可以手动选取、随机选取、或其它方式得到。此算法保证收敛,但它可能不会返回最佳的解决方案。该解决方案的质量取决于最初的一组集群和K值。

image_segementation3

阈值分割(直方图法)

相对于其他的图像分割算法来说,基于直方图的方法是一种效率非常高的方法,因为通常来说,该方法只需要对整幅图片扫描一遍即可。该方法对于整幅图像建立一张直方图,并通过图中的峰和谷来进行分类。颜色与灰度是通常进行直方图统计的特征。

基于直方图,阈值分割方法可以分为以下几种

  • 固定阈值分割:

    • 固定某像素值为分割点。
  • 直方图双峰法

    • Prewitt 等人于六十年代中期提出的直方图双峰法(也称 mode 法) 是典型的全局单阈值分割方法。该方法的基本思想是:假设图像中有明显的目标和背景,则其灰度直方图呈双峰分布,当灰度级直方图具有双峰特性时,选取两峰之间的谷对应的灰度级作为阈值。如果背景的灰度值在整个图像中可以合理地看作为恒定,而且所有物体与背景都具有几乎相同的对比度,那么,选择一个正确的、固定的全局阈值会有较好的效果.算法实现:找到第一个峰值和第二个峰值,再找到第一和第二个峰值之间的谷值,谷值就是那个阀值了。
  • 迭代阈值图像分割:

    • 1.统计图像灰度直方图,求出图象的最大灰度值和最小灰度值,分别记为ZMAX和ZMIN,令初始阈值T0=(ZMAX+ZMIN)/2;
    • 2. 根据阈值TK将图象分割为前景和背景,计算小于TO所有灰度的均值ZO,和大于TO的所有灰度的均值ZB。
    • 3. 求出新阈值TK+1=(ZO+ZB)/2;
    • 4. 若TK==TK+1,则所得即为阈值;否则转2,迭代计算。
  • 自适应阈值图像分割: 有时候物体和背景的对比度在图像中不是处处一样的,普通阈值分割难以起作用。这时候可以根据图像的局部特征分别采用不同的阈值进行分割。只要我们将图像分为几个区域,分别选择阈值,或动态地根据一定邻域范围选择每点处的阈值,从而进行图像分割。

    • 大津法 OTSU (最大类间方差法)

      • 日本学者大津在1979年提出的自适应阈值确定方法。 按照图像的灰度特性,将图像分为背景和目标两部分。背景和目标之间的类间方差越大,说明构成图像的2部分的差别越大,当部分目标错分为背景或部分背景错分为目标都会导致2部分差别变小。因此,使类间方差最大的分割意味着错分概率最小。
    • 均值法:

      • 把图像分成m*n块子图,求取每一块子图的灰度均值就是所有像素灰度值之和除以像素点的数量,这个均值就是阈值了。这种方法明显不比大津法好,因为均值法和大津法都是从图像整体来考虑阈值的,但是大津法找了一个类间方差最大值来求出最佳阈值的;这两种方法子图越多应该分割效果会好一点,但效率可能会变慢
  • 最佳阈值:

    • 阈值选择需要根据具体问题来确定,一般通过实验来确定。如对某类图片,可以分析其直方图等。

边缘检测

边缘检测主要是图像的灰度变化的度量、监测和定位,其实质就是提取图像中不连续部分的特征。边缘检测在图像处理中比较重要,边缘检测的结果是图像分割技术所依赖的重要特征,因此边缘检测是图像分割领域的一部分。边缘检测常用于计算机视觉、武器的跟踪控制及自控制式的车船运动研究等领域。

首先介绍图像边缘检测,具体就梯度算子、kirsch算子、laplacian-gauss算子、canny算子、log滤波算子、sobel算子、Robert算子、prewitt算子边缘检测方法介绍检测原理并通过编程实现,比较各种方法的处理结果。

区域生长

区域生长的基本思想是将具有相似性质的像素集合起来构成区域。具体先对每个需要分割的区域找一个种子像素作为生长的起点,然后将种子像素周围邻域中与种子像素具有相同或相似性质的像素(根据某种事先确定的生长或相似准则来判定)合并到种子像素所在的区域中。将这些新像素当做新的种子像素继续进行上面的过程,直到再没有满足条件的像素可被包括进来,这样,一个区域就长成了。

水平集方法

水平集方法最初由Osher和Sethian提出,目的是用于界面追踪。在90年代末期被广泛应用在各种图像领域。这一方法能够在隐式有效的应对曲线/曲面演化问题。基本思想是用一个符号函数表示演化中的轮廓(曲线或曲面),其中符号函数的零水平面对应于实际的轮廓。这样对应于轮廓运动方程,可以容易的导出隐式曲线/曲面的相似曲线流,当应用在零水平面上将会反映轮廓自身的演化。水平集方法具有许多优点:它是隐式的,参数自由的,提供了一种估计演化中的几何性质的直接方法,能够改变拓扑结构并且是本质的。

深度学习方法

fcn语义分割

fcn全卷积网络是深度学习在图像分割的开山之作,该方法通过修改原有的cnn网络,将最后的全连接层修改为全卷积层,故称为全卷积网络。

maskrcnn实例分割

maskrcnn则是何凯明大神在faster-rcnn的基础之上修改,通过增加一个分类部分,完成对图像的实例分割。

参考

参考维基百科-图像分割

参考知乎-图像分割 传统方法 整理

-------------本文结束感谢您的阅读-------------