图像分割技术【逐步实现】

已发表: 2021-02-19

当你看自拍时,你首先看到的是什么? 你的脸,对吧? 您可以发现自己的脸,因为您的大脑能够识别您的脸并将其与图像的其余部分(背景)区分开来。

现在,如果你想让你的电脑在自拍中识别你的脸,它可以做到吗?

是的,只要它可以执行图像分割。

在今天的文章中,我们将讨论图像分割及其所有主要方面,包括您可以使用的各种图像分割技术。 但是,这是一篇很长的文章,因此我们建议您为这篇文章添加书签,以便您稍后再回来阅读。

在我们开始讨论图像处理中的各种分割技术之前,我们首先应该弄清楚,“什么是图像分割?”

目录

什么是图像分割?

图像分割是数字图像处理的一个分支,它侧重于根据图像的特征和属性将图像分割成不同的部分。 图像分割的主要目标是简化图像以便于分析。 在图像分割中,您将图像划分为具有相似属性的各个部分。 分割图像的部分称为图像对象。

这是图像分析的第一步。 如果不执行图像分割,您几乎不可能执行计算机视觉实现。

通过使用图像分割技术,您可以对图像中的特定像素进行划分和分组,为其分配标签并根据这些标签对像素进行分类。 您可以画线、指定边框,并将图像中的特定对象(重要组件)与其余对象(不重要组件)分开。

在机器学习中,您可以使用从图像分割中生成的标签进行有监督和无监督训练。 这将允许您解决许多业务问题。

一个例子会更好地理解图像分割是如何工作的。

看下图。

资源

在这里,您可以看到放置在路中间的椅子。 通过使用图像分割,您可以将椅子与图像分开。 此外,您可以使用多种图像分割技术来获得不同的结果。 例如,如果您想使用具有多把椅子的图像,则必须使用语义分割。

另一方面,如果您想识别图像中存在的每把椅子,如下所示,您必须使用实例分割:

资源

为什么需要图像分割?

图像分割是计算机视觉的一个重要方面,在众多行业中有许多应用。 大量使用图像分割的一些值得注意的领域是:

1.人脸识别

iPhone 中的面部识别技术和高级安全系统使用图像分割来识别您的面部。 它必须能够识别您面部的独特特征,以便任何不受欢迎的人无法访问您的手机或系统。

2. 车牌识别

许多红绿灯和摄像头使用车牌识别来收取罚款并帮助进行搜索。 车牌识别技术允许交通系统识别汽车并获取其所有权相关信息。 它使用图像分割将车牌及其信息与其视觉中存在的其他对象分开。 这项技术大大简化了政府的罚款流程。

3. 基于图像的搜索

谷歌和其他提供基于图像的搜索工具的搜索引擎使用图像分割技术来识别图像中存在的对象,并将他们的发现与他们找到的相关图像进行比较,从而为您提供搜索结果。

4. 医学影像

在医疗领域,我们使用图像分割来定位和识别癌细胞、测量组织体积、运行虚拟手术模拟以及执行手术内导航。 图像分割在医学领域有很多应用。 它有助于识别受影响的区域并计划相同的治疗方法。

除了这些应用之外,图像分割还用于制造、农业、安全和许多其他领域。 随着我们的计算机视觉技术变得更加先进,图像分割技术的使用也将相应增加。

例如,一些制造商已经开始使用图像分割技术来查找有缺陷的产品。 在这里,该算法将仅从对象的图像中捕获必要的组件,并将它们分类为有缺陷的或最佳的。 该系统降低了人为错误的风险,并使组织的测试过程更加高效。

图像分类的常见实现有 Python、C、C++ 和 Matlab。

有哪些不同类型的图像分割?

图像分割是一个非常广泛的主题,并且有不同的方法来处理这个过程。 我们可以根据以下参数对图像分割进行分类:

1. 基于方法的分类

从最基本的意义上说,图像分割就是对象识别。 如果不首先识别对象,算法就无法对不同的组件进行分类。 从简单到复杂的实现,所有的图像分割都基于对象识别。

因此,我们可以根据算法识别对象的方式对图像分割方法进行分类,这意味着收集相似的像素并将它们与不同的像素分开。 有两种方法可以执行此任务:

基于区域的方法(检测相似性)

在这种方法中,您可以根据选定的阈值、区域合并、区域扩展和区域增长来检测图像中的相似像素。 聚类和类似的机器学习算法使用这种方法来检测未知的特征和属性。 分类算法遵循这种方法来检测特征并根据它们分离图像片段。

基于边界的方法(检测不连续性)

基于边界的方法与基于区域的对象识别方法相反。 与基于区域的检测不同,在基于区域的检测中,您会发现具有相似特征的像素,而在基于边界的方法中,您会发现彼此不同的像素。 点检测、边缘检测、线检测和类似的算法都遵循这种方法,它们检测不同像素的边缘并相应地将它们与图像的其余部分分开。

2. 基于技术的分类

这两种方法都有其独特的图像分割技术。 我们根据我们想要处理和分析的图像类型以及我们想要从中获得的结果类型来使用这些技术。

基于这些参数,我们可以将图像分割算法分为以下几类:

结构技术

这些算法要求您拥有正在使用的图像的结构数据。 这包括像素、分布、直方图、像素密度、颜色分布和其他相关信息。 然后,您必须拥有必须与图像分离的区域的结构数据。

您将需要该信息,以便您的算法可以识别该区域。 我们用于这些实现的算法遵循基于区域的方法。

随机技术

这些算法需要有关图像离散像素值的信息,而不是图像所需部分的结构。 因此,它们不需要大量信息来执行图像分割,并且在您必须处理多个图像时很有用。 机器学习算法,如 K-means 聚类和 ANN 算法属于这一类。

混合技术

正如您可以从名称中猜到的那样,这些算法同时使用随机方法和结构方法。 这意味着他们使用所需区域的结构信息和整个图像的离散像素信息来执行图像分割。

有哪些不同类型的图像分割技术?

现在我们知道了图像分割的不同方法和技术种类,我们可以开始讨论细节了。 以下是图像分割技术的主要类型:

  1. 阈值分割
  2. 基于边缘的分割
  3. 基于区域的分割
  4. 流域分割
  5. 基于聚类的分割算法
  6. 用于分割的神经网络

让我们详细讨论这些技术中的每一种,以了解它们的属性、优点和局限性:

1. 阈值分割

图像处理中最简单的分割方法是阈值法。 它通过将像素的强度与指定值(阈值)进行比较来划分图像中的像素。 当所需对象的强度高于背景(不必要的部分)时,它很有用。

您可以将阈值 (T) 视为一个常数,但它仅在图像噪声非常少(不必要的信息和数据)时才有效。 您可以根据需要保持阈值不变或动态。

阈值化方法通过将灰度图像分为两部分(必需和非必需部分)将灰度图像转换为二值图像。

根据阈值的不同,我们可以将阈值分割分为以下几类:

简单阈值

在此方法中,您将图像的像素替换为白色或黑色。 现在,如果特定位置的像素强度小于阈值,则将其替换为黑色。 另一方面,如果它高于阈值,则将其替换为白色。 这是简单的阈值处理,特别适合图像分割的初学者。

大津的二值化

在简单的阈值化中,您选择了一个恒定阈值并使用它来执行图像分割。 但是,您如何确定您选择的值是正确的? 虽然直接的方法是测试不同的值并选择一个,但这并不是最有效的方法。

使用具有两个峰值的直方图拍摄图像,一个用于前景,一个用于背景。 通过使用 Otsu 二值化,您可以将这些峰值中间的近似值作为您的阈值。

在 Otsu 二值化中,如果图像是双峰的,则从图像的直方图计算阈值。

此过程对于扫描文档、识别图案和从文件中删除不必要的颜色非常流行。 但是,它有很多限制。 您不能将它用于非双峰图像(直方图具有多个峰值的图像)。

自适应阈值

拥有一个恒定的阈值可能不是对每张图像都采用的合适方法。 不同的图像具有不同的背景和条件,这会影响它们的属性。

因此,您可以保持阈值可变,而不是使用一个恒定阈值对整个图像进行分割。 在此技术中,您将为图像的不同部分保留不同的阈值。

此方法适用于具有不同照明条件的图像。 您需要使用一种算法将图像分割成更小的部分并计算每个部分的阈值。

2. 基于边缘的分割

基于边缘的分割是图像处理中最流行的分割实现之一。 它专注于识别图像中不同对象的边缘。 这是一个关键步骤,因为它可以帮助您找到图像中存在的各种对象的特征,因为边缘包含很多您可以使用的信息。

边缘检测广受欢迎,因为它可以帮助您从图像中删除不需要和不必要的信息。 它大大减小了图像的大小,使其更易于分析。

基于边缘的分割中使用的算法根据纹理、对比度、灰度、颜色、饱和度和其他属性的差异来识别图像中的边缘。 您可以通过将所有边缘连接到更准确地匹配图像边界的边缘链来提高结果的质量。

有许多基于边缘的分割方法可用。 我们可以将它们分为两类:

基于搜索的边缘检测

基于搜索的边缘检测方法侧重于计算边缘强度的度量,并通过计算边缘的局部方向估计来寻找梯度幅度的局部方向最大值。

基于过零的边缘检测

基于过零的边缘检测方法在从图像检索的导数表达式中寻找过零以找到边缘。

通常,您必须对图像进行预处理以消除不需要的噪声并更容易检测边缘。 Canny、Prewitt、Deriche 和 Roberts cross 是一些最流行的边缘检测算子。 它们使检测不连续性和找到边缘变得更加容易。

在基于边缘的检测中,您的目标是获得部分分割最小值,您可以将所有局部边缘分组为二值图像。 在您新创建的二进制图像中,边缘链必须与相关图像的现有组件匹配。

3. 基于区域的分割

基于区域的分割算法将图像划分为具有相似特征的部分。 这些区域只是一组像素,算法通过首先定位一个种子点来找到这些组,该种子点可能是输入图像的一小部分或大部分。

找到种子点后,基于区域的分割算法会向它们添加更多像素或缩小它们,以便将它们与其他种子点合并。

基于这两种方法,我们可以将基于区域的分割分为以下几类:

区域增长

在此方法中,您从一小组像素开始,然后根据特定的相似性条件开始迭代合并更多像素。 区域增长算法将选择图像中的任意种子像素,将其与相邻像素进行比较,并通过找到与种子点的匹配来开始增加区域。

当特定区域无法进一步增长时,算法将选择另一个可能不属于任何现有区域的种子像素。 一个区域可能有太多属性,导致它占据了大部分图像。 为了避免这样的错误,区域增长算法同时增长多个区域。

您应该对具有大量噪声的图像使用区域增长算法,因为噪声会导致难以找到边缘或使用阈值算法。

区域拆分和合并

顾名思义,区域分割和合并聚焦方法将一起执行两个动作——分割和合并图像的各个部分。

它首先将图像分成具有相似属性的区域,然后将彼此相似的相邻部分合并。 在区域分割中,该算法考虑整个图像,而在区域增长中,该算法将关注特定点。

区域拆分和合并方法遵循分而治之的方法。 它将图像分成不同的部分,然后根据其预定条件进行匹配。 执行此任务的算法的另一个名称是拆分合并算法。

4. 流域分割

在图像处理中,分水岭是对灰度图像的变换。 它是指地质流域或排水分水岭。 分水岭算法将处理图像,就好像它是地形图一样。 它将像素的亮度视为其高度,并找到沿着这些脊顶部延伸的线条。

分水岭有许多技术定义并有多种应用。 除了识别像素的山脊外,它还侧重于定义盆地(与山脊相反)并用标记淹没盆地,直到它们与穿过山脊的分水岭线相遇。

由于盆地有很多标记,而山脊没有,因此根据每个像素的“高度”将图像划分为多个区域。

分水岭方法将每幅图像转换为地形图分水岭分割方法将通过其像素的灰度值反映地形。

现在,一个有山谷和山脊的景观肯定会有三维方面的。 分水岭将考虑图像的三维表示并相应地创建区域,这些区域称为“集水盆地”。

它在医学领域有很多应用,如MRI、医学成像等。分水岭分割是医学图像分割的一个突出部分,所以如果你想进入这个领域,你应该重点学习这种方法,特别是在图像处理中的分割。

5. 基于聚类的分割算法

如果您研究过分类算法,那么您一定遇到过聚类算法。 它们是无监督算法,可帮助您在图像中找到正常视觉可能看不到的隐藏数据。 这些隐藏数据包括簇、结构、阴影等信息。

顾名思义,聚类算法将图像划分为具有相似特征的像素簇(不相交的组)。 它将数据元素分成集群,其中集群中的元素与其他集群中存在的元素相比更相似。

一些流行的聚类算法包括模糊 c 均值 (FCM)、k 均值和改进的 k 均值算法。 在图像分割中,您主要使用 k-means 聚类算法,因为它非常简单且高效。 另一方面,FCM 算法根据像素的不同程度将像素划分为不同的类别。

图像处理中最重要的分割聚类算法有:

K-means 聚类

K-means 是一种简单的无监督机器学习算法。 它通过特定数量的集群对图像进行分类。 它通过将图像空间划分为代表 k 个组质心的 k 个像素来开始该过程。

然后他们根据它们与质心之间的距离将每个对象分配给组。 当算法将所有像素分配给所有簇时,它可以移动和重新分配质心。

模糊 C 均值

使用模糊c-means聚类方法,图像中的像素可以聚集在多个簇中。 这意味着一个像素可以属于多个集群。 但是,每个像素与每个集群都有不同程度的相似性。 模糊 c 均值算法有一个优化功能,它会影响结果的准确性。

聚类算法可以满足您的大部分图像分割需求。 如果您想了解有关它们的更多信息,请查看本指南,了解什么是聚类和不同类型的聚类算法

6. 用于分割的神经网络

也许你不想自己做所有的事情。 也许您想让 AI 完成大部分任务,当然可以使用神经网络进行图像分割。

您将使用 AI 来分析图像并识别其不同的组成部分,例如面部、对象、文本等。卷积神经网络在图像分割方面非常流行,因为它们可以快速有效地识别和处理图像数据。

Facebook AI Research (FAIR) 的专家创建了一个名为 Mask R-CNN 的深度学习架构,它可以为图像中存在的每个对象制作像素级掩码。 它是 Faster R-CNN 对象检测架构的增强版本。 Faster R-CNN 对图像中的每个对象使用两条数据,即边界框坐标和对象的类别。 使用 Mask R-CNN,您可以在此过程中获得额外的部分。 Mask R-CNN 在执行分割后输出对象掩码。

在此过程中,您首先将输入图像传递给生成图像特征图的 ConvNet。 然后系统在特征图上应用区域提议网络(RPN)并生成具有对象性分数的对象提议。

之后,将 Roi 池化层应用于提案以将它们缩小到一个大小。 在最后阶段,系统将建议传递给连接层进行分类,并为每个对象生成带有边界框的输出。

了解有关图像处理中的分割的更多信息

图像处理中的分割无疑是一个广泛的主题,有很多小节。 从各种图像分割技术到算法,这门学科有很多东西需要学习。 有这么多的地面要覆盖,你很容易迷路和困惑。

这就是为什么我们建议参加机器学习和人工智能课程来克服这些问题。 该主题的课程将教您图像分割和相关领域的基础知识和高级概念。 您将了解与图像处理、图像分割和计算机视觉相关的不同机器学习概念。

AI 和 ML 课程将使您更轻松地学习所有相关概念,因为您将获得结构化的课程供您学习。 在 upGrad,我们提供多门机器学习课程。

以下是我们在机器学习和人工智能方面提供的主要课程:

  • 机器学习与人工智能理学硕士
  • 机器学习和人工智能执行研究生课程
  • 机器学习与人工智能理学硕士
  • 机器学习和深度学习 PG 认证
  • 机器学习和 NLP 的 PG 认证

所有这些课程都可以让您向行业专家学习,他们会在现场会议中解决您的疑虑并回答您的问题。 您将在线学习,这意味着您在学习这些课程时不必去任何地方或打扰您的工作。

这些课程让您可以访问 upGrad 的学生成功角,它提供了许多额外的优势,包括个性化的简历反馈、面试准备和职业咨询。 在课程结束时,您将成为一名具备所有必要的软硬技能的 AI/ML 专业人士。

结论

图像分割无疑是一个复杂而高级的话题。 我们在本文中讨论的所有各种图像分割技术都有其特定的优点和局限性。 通过熟悉它们,您将了解应该在哪里使用一个以及在哪里应该避免使用另一个。

借助所有学到的技能,您还可以在其他竞争平台上活跃起来,以测试您的技能并获得更多动手能力。

图像分割有哪些重要应用?

图像分割是计算机视觉的重要组成部分,它被用于许多不同的业务。 您的手机和高级安全系统中的面部识别技术使用图像分割来识别您的面部。 交通系统可以识别汽车并使用车牌识别技术获取有关其所有者的信息。 Google 和其他基于图像的搜索引擎使用图像分割算法来识别您图片中的项目,并将其结论与他们发现的相关照片进行比较,从而为您提供搜索结果。 我们在医学领域采用图像分割来发现和识别癌细胞、量化组织体积、进行虚拟手术模拟以及在手术过程中导航。

图像分割的类型有哪些?

阈值法是最基本的图像处理分割方法。 它通过将每个像素的强度与预定值(阈值)进行比较来分离图片中的像素。 简单地说,阈值化是将图像中的像素替换为黑色或白色的过程。 您可以保持指定的阈值灵活,而不是使用单个固定值对整个图像进行分割。 自适应阈值是此方法的名称。 最常见的图像处理分割类型之一是基于边缘的分割。 它侧重于识别图片中各种事物的边缘。

什么是基于聚类的分割算法?

如果您研究过分类算法,您可能已经遇到过聚类算法。 它们是无监督算法,可帮助您在肉眼不可见的图像中定位隐藏数据。 集群、结构、阴影和其他信息都在隐藏的数据中。 顾名思义,聚类算法将图像分成具有可比属性的像素簇(不相交的组)。 它将数据项分成集群,一个集群中的组件与其他集群中的元素更相似。