图像分割

什么是图像分割?

图像分割是数字图像处理和分析中的一种常用方法,通常基于图像中像素的特征将一个图像分割成多个部分或区域。图像分割可能涉及将前景与背景分离开来,或基于颜色或形状的相似性对像素区域进行聚类。例如,医学成像中一种图像分割的常见应用是检测和标注表示患者大脑或其他器官的肿瘤的图像像素或三维体的体素。

图像分割的重要性

目前已开发出几种能够使用领域特定知识有效地求解分割问题的图像分割算法和方法。这些应用包括医学成像、自动驾驶、视频监控和机器视觉。

医学成像

分割和分析在临床诊断、治疗计划和医学研究领域具有重要的应用。使用分割来标注和分析器官、肿瘤、细胞、植入物或其他感兴趣的区域。例如,您可以使用影像组学将肿瘤分为恶性或良性,然后在后续扫描中测量肿瘤的生长情况。您也可以在分割的显微镜图像中跟踪细胞的位置和形态,或在药物试验中分析骨密度。还可以使用分割掩膜生成三维解剖模型,应用于 3D 打印和有限元分析等,这对根据患者制定手术计划很有用。

Medical Imaging Toolbox 中的图像分割,以彩色突出显示标记各个分割区域。

使用 Medical Imaging Toolbox™ 的分割示例,包括(按左上顺时针顺序)CT 扫描的肺部、MRI 扫描的脑部、显微镜图像中的细胞和心脏 MRI 显示的左心室。

自动驾驶

为自动驾驶汽车等自动驾驶车辆设计感知功能时,通常会进行语义分割来帮助系统辨识和定位道路上的车辆和其他物体。

图像分割示例:高速公路上一辆汽车的同一张照片并排显示,第二个图像中应用彩色突出显示来标识分割。

使用 Computer Vision Toolbox™ 中的语义分割将图像的每个像素与一个类标签(如汽车、道路、天空、行人或自行车)相关联。(请参阅文档。)

图像分割的工作原理

图像分割的第一步涉及将一个图像转换为由掩膜或标注图像表示的像素区域的集合。通过将图像划分为多个分割区域,您可以只选择并处理图像的重要分割区域,不用处理整个图像。

一种常见方法是寻找像素值中的突然不连续性,这通常表示定义区域的边缘。

两个并排图像显示同一包含几个文本段落的页面。左边的图像有难以辨认的暗黑区域;右边经过处理的图像清晰度已提高。

使用 Image Processing Toolbox 中的 adaptthresh 函数进行自适应图像阈值化。转换为二值图像可以提高图像中文本的易读性。(请参阅 MATLAB 代码。)

另一种常见方法是检测图像区域中的相似性。遵循这种思路的一些方法有区域生长、聚类和阈值化。

三个使用图像分割标识区域的示例,原始图像和分割图像并排进行比较。

使用 Image Processing Toolbox 基于颜色值、形状或纹理分割区域。(请参阅文档。)

使用 MATLAB 进行图像分割

使用 MATLAB®,您可以:

  • 使用 App 以交互方式探索不同分割方法
  • 使用内置图像分割算法简化图像分析工作流
  • 执行深度学习以实现图像分割

使用 App 以交互方式阈值化图像

图像分割器

使用交互式图像分割器,您可以通过迭代方式尝试几种方法来分割图像,以得到理想的结果。例如,您可以使用该 App 分割和进一步细化汽车的图像。

截图:使用 MATLAB 图像分割器标识泊车场照片中的汽车车身。

使用图像分割器以交互方式应用不同分割方法。

色彩分割器

借助色彩分割器,您可以基于不同颜色空间,以交互方式操作图像的颜色对彩色图像应用阈值化。例如,使用色彩分割器,您可以使用点云控件为彩色图像创建二值掩膜

使用色彩分割器应用色彩分割,将前景中的火烈鸟与背景分离开来。

使用各种图像分割方法

使用 MATLAB 和 Image Processing Toolbox™ 中的函数,您可以试验和累积不同图像分割方法的专业知识,包括阈值化、聚类、基于图的分割和区域生长,以及深度学习方法,如分割一切模型

阈值化

要创建二值图像,您可以使用 imbinarize 函数对二维或三维灰度图像执行阈值化。要从 RGB 彩色图像生成二值图像,请使用 rgb2gray 函数先将其转换为灰度图像。

截图:并排比较原始彩色图像和转换后的二值图像。

使用 Image Processing Toolbox 中的 imbinarize 函数将彩色图像转换为二值图像。(请参阅 MATLAB 代码。)

聚类

通过聚类,您可以使用特定聚类算法创建分割的标注图像。使用基于 K 均值聚类的分割,imsegkmeans 将一个图像分割成一个颜色空间内的若干聚类。

截图:并排比较一只浅棕色狗在黑白图块地板上的原始图像与经过处理的突出显示分割区域的图像。

使用 imsegkmeans K 均值聚类方法来分离地板上的图案背景。(请参阅 MATLAB 代码。)

基于图的分割

基于图的分割方法,如 lazy snapping,使您能够将一个图像分割成前景和背景区域。MATLAB 支持您以编程方式 (lazysnapping) 或使用图像分割器以交互方式分割图像。

截图:并排比较置于紫色布料上蔬菜的原始图像和经过处理的去除布料(即背景)后的图像。

使用 Image Processing Toolbox 中的 lazysnapping 函数分离前景和背景区域。(请参阅 MATLAB 代码。)

截图:使用图像分割器从前景中去除某个物体。

使用 Image Processing Toolbox 中的图像分割器以交互方式进行基于图的分割。

区域生长

区域生长是一种简单的基于区域(也可归类为基于像素)的图像分割方法。一个普遍使用的算法是 activecontour。它检查初始种子点的相邻像素,并以迭代方式确定是否应将像素邻点添加到该区域。您也可以使用图像分割器对图像执行该种分割。

使用图像分割器执行区域生长。

深度学习在图像分割中的应用

语义分割是一种深度学习方法,它可使用卷积神经网络 (CNN) 让您将图像的每个像素与类标签相关联。语义分割的应用包括自动驾驶、工业检查、机器人、医学成像和卫星图像分析。请参阅使用深度学习进行语义分割示例,了解更多信息。

图像从左到右遍历网络以执行图像分割的可视化表示。

语义分割方法示意图。

您可以使用一组图像及其对应的标注图像来设计和训练语义分割网络,然后使用经过训练的网络来标注新图像。要标注训练图像,您可以使用图像标注器、视频标注器或真实值标注器。

截图:Image Processing Toolbox 中的图像标注器,已分割图像的每个突出显示分割区域都带标签。

使用图像标注器执行语义分割。

资源

通过文档、示例、视频等拓展您的知识。