图像分割技术 | 机器如何进行图像分割?

作者:王晶,梁爽

浏览下图,我们能得到什么呢?


我们不到一秒钟就能发现其中有一只猫、一条狗和一个人的腿。但对于机器,这种学习过程很复杂。机器需要解析图像和检测对象等,包括特征提取,特征分类等等。

本文主要讲述机器如何进行图像分割。

什么是图像分割

图像分割技术在各个领域都有着巨大的影响。


以上为一张癌细胞图,我们可以清晰地看到每个癌细胞的形状和细节,尽早地检测出癌细胞可以挽救数百万人的生命。同时,图像分割技术正在改变着许多其他应用行业,像交通控制系统、自驾系统、卫星图像定位等。

以下是几种图像分割技术总结:

算法

描述

优点

缺点

基于区域细分

根据某个阈值将对象分成不同的区域

计算简单、运算速度快、适用于对象和背景具有高对比度的图像

当灰度差异不明显或灰度像素值重叠时,较难使用。

边缘检测分割

利用图像的不连续局部特征来检测边缘,从而定义对象的边界。

适用于物体间具有较好对比度的图像

不适用于图像边缘过多,且对象间对比度小的图像

基于聚类细分

将图像的像素分为均匀的簇

在小数据集上非常有效,且可生成出色聚类。

计算时间较长,不适用于群集非凸群集。

Mask R-CNN

为图像中的每个对象提供三个输出:类,边界框坐标和对象蒙版

简单、灵活

训练时间长

1. 基于区域

如果要将图像分为两个区域(对象和背景),则定义一个阈值,这称为全局阈值。我们通过一个实例来理解这类算法。

首先,我们导入所需的库。


上图一个三通道图像(RGB),首先我们需要将其转换为灰度图像,使其只有一个通道,这样做也能帮助我们更好地了解算法的工作原理。


现在,我们要对该图像应用某个阈值。此阈值应将图像分为两部分-前景和背景。

我们将像素值的平均值用作阈值。如果像素值大于阈值,则可以说它属于对象,若小于阈值,它将被视为背景。


较暗的区域(黑色)代表背景,而较亮的(白色)区域代表前景。我们还可以定义多个阈值以检测多个对象:


通过设置多个阈值,将上图分割为四个不同的部分。

2 . 边缘检测分割

边缘可被视为图像的不连续局部特征,我们可以利用这种不连续性来检测边缘,从而定义对象的边界。这有助于我们检测给定图像中存在的多个对象的形状。现在的问题是如何检测这些边缘?这时我们用到了过滤器和卷积。

工作步骤:

  • 取权重矩阵
  • 将其放在图像上方
  • 执行逐元素乘法并获得输出
  • 根据所选步幅移动权重矩阵
  • 进行卷积直到使用完输入的所有像素

接下来,通过一个实例来理解它。首先,寻找一张具有明显边缘界限的图像,如下图。


然后,在Python中定义此过滤器,并将其卷积在上图中。


接下来,对过滤器进行卷积并打印输出如下。


我们可以明显看到,上述方法已检测到水平和垂直边缘。

3 . 基于聚类的图像分割

k-means是最常用的聚类算法之一 。在此,k表示簇的数量。

工作原理:

  • 首先,随机选择k个初始聚类
  • 将每个数据点随机分配给k个群集中的任何一个
  • 计算这些聚类的中心
  • 计算所有点到每个群集中心的距离
  • 根据此距离,将点重新分配到最近的聚类
  • 计算新形成的集群的中心
  • 最后,重复步骤(4),(5)和(6),直到聚类中心不变或达到设定的迭代次数

下面,我们通过一个例子来具体的了解它。


首先,我们将上图转换为形状为(长*宽,通道)的二维数组,即将(192 * 263,3)转换为(50496,3)。接下来,将k-means算法拟合到此重构数组上并获得聚类。

本文选择了5个集群,让我们将聚类恢复到原始形状(即3维图像)并绘制结果。


4 . Mask R-CNN

该架构可以为图像中的每个对象创建像素级掩模。请看下面的图片,直观了解Mask R-CNN在内部的工作原理。


结语

本文只是简略地介绍了图像分割的技术,更加深刻的图像分割知识还需要读者们继续探寻。

作者:王晶,梁爽
指导老师:沈浩
本文来源: 数艺学苑

最新文章