主动轮廓——计算机视觉中的图像分割方法

一、说明

   简单来说,计算机视觉就是为计算机提供类似人类的视觉。作为人类,我们很容易识别任何物体。我们可以很容易地识别山丘、树木、土地、动物等,但计算机没有眼睛,也没有大脑,因此它很难识别任何图像。计算机只能理解命令和数学。因此,有很多技术可以让计算机识别各种物体。图像分割是目标检测的方法之一。

二、什么是图像分割?

   图像分割是指通过对图像的像素值进行聚类来划分输入图像。它主要用于从图像中识别各种表面或生物或非生物物体。例如,如果您有以下图像作为输入,那么您可以将老虎、绿草、蓝色的水和陆地作为输出图像中的各种表面。

图片: Alt

   有各种图像分割技术,例如活动轮廓、分割和合并、分水岭、区域分割、区域合并、基于图的分割、均值平移和模型查找以及归一化剪切。

   本文介绍了一种最有用的图像分割技术,称为“主动轮廓”。

2.1 什么是主动轮廓?

   主动轮廓是一种分割方法,它使用能量力和约束将感兴趣的像素从图片中分离出来,以进行进一步的处理和分析。

   活动轮廓被定义为分割过程的活动模型。轮廓是定义图像中感兴趣区域的边界。轮廓是已插值的点的集合。插值过程可能是线性、样条或多项式,具体取决于图像中曲线的描述方式。

2.2 为什么需要主动轮廓?

   活动轮廓在图像处理中的主要用途是定义图像中的平滑形状并构建区域的闭合轮廓。主要用于识别图像中不均匀的形状。

   活动轮廓用于各种医学图像分割应用。各种形式的活动轮廓模型被用于各种医学应用中,特别是用于从各种医学图像中分离所需区域。例如,使用主动轮廓模型检查大脑 CT 扫描的切片以进行分割。

2.3 主动轮廓如何工作?

   活动轮廓是一种在图像中获取具有分割约束和力的可变形模型或结构的技术。轮廓模型定义对象边界或其他图片特征以生成参数曲线或轮廓。

   模型的曲率是使用多种利用外力和内力的轮廓技术来确定的。能量函数总是与图像的曲线相关。外部能量被描述为由专门用于控制轮廓在图像上的位置的图片引起的力和用于控制变形变化的内部能量的总和。

   对某一图像的轮廓分割约束是根据需要确定的。通过定义能量函数可以获得所需的形状。定位轮廓的点的集合用于描述轮廓变形。该形状对应于所需的图像轮廓,其是通过最小化能量函数来定义的。

三、主动轮廓分割模型

3.1.蛇模型

   蛇模型是一种能够解决广泛的分割问题的技术。该模型的主要功能是识别和勾勒出目标对象以进行分割。它需要对目标物体的形状有一些先验知识,尤其是对于复杂的物体。主动蛇模型(通常称为蛇)通常通过使用专注于最小化能量的样条线进行配置,然后使用控制图像的各种力。

3.2 方程

   简单的蛇模型可以由一组n个点 v i表示, i=0,….n-1, 内部弹性能量项 E Internal 和基于外部边缘的能量项 E external。 内部能量项的目的是调节蛇的变形,而外部能量项的功能是控制轮廓与图像的拟合。外部能量通常是由图片E image引起的力和由用户E con施加的约束力的组合。

   蛇的能量函数是其外部能量和内部能量的总和,可以写成如下:
公式1

3.3 优势

   主动蛇模型的应用正在迅速扩展,特别是在许多成像领域。在医学成像领域,蛇模型用于分割图像中与图片的其他区域相比具有独特特征的部分。医学成像中的传统蛇模型应用包括用于识别青光眼的视盘和视杯分割、细胞图像分割、血管区域分割以及用于诊断和研究疾病或异常的其他几个区域分割。

3.4 坏处

   传统的主动蛇模型方法存在各种低效问题,例如高复杂性对象中的噪声敏感性和错误的轮廓检测,这些问题在先进的轮廓方法中得到了解决。

四、.梯度矢量流模型

   梯度矢量流模型是蛇形或活动轮廓模型的更发达且定义明确的版本。传统的蛇模型有两个局限性:凹边界的轮廓收敛不充分以及蛇曲线流在距离最小值很远的地方开始。作为扩展,梯度矢量流模型利用梯度矢量流场作为能量约束来确定等高线流。

4.1 方程

   在 2D 中,GVF 矢量场 F G V F F_{GVF} FGVF最小化能量泛函
在这里插入图片描述

其中“μ”是可控平滑项。

4.2 优势

   梯度矢量流模型是蛇模型的高级版本,用于各种图像处理应用,特别是医学图像处理。医学成像中具有特定参数的区域的分割是在主动轮廓模型的帮助下完成的。由于这些模型在目标对象周围创建轮廓,因此它与图像分离。

4.3 坏处

   利用 GVF 的主要困难是平滑项“μ”导致轮廓的边缘变圆。减小“μ”的值可最大限度地减少舍入,但会增加平滑量。

五、气球模型

   蛇模型不会被吸引到远处的边缘。如果没有显着的图像力应用于蛇模型,其内侧将会收缩。大于最小值轮廓的蛇最终会收缩到其中,而小于最小值轮廓的蛇将不会发现最小值,而是会继续收缩。为了解决蛇模型的约束,开发了气球模型,其中将膨胀因子纳入作用在蛇上的力中。通货膨胀的力量可以压倒来自弱边缘的力量,加剧第一猜测本地化的问题。

5.1 方程

   气球模型中引入了作用在蛇上的力的膨胀项。
在这里插入图片描述

   其中 n(s) 是 v(s) 处曲线的法向酉向量,k 1是力的大小。

5.2 优势

   气球概念用于分割各种医学图片。该应用程序的主要目的是提出一种用于分割 2D 图像和重建 3D 网格的新技术,以确保网格的无懈可击。

5.3 坏处

   气球模型的最大问题是处理速度慢,这使得管理锐利边缘变得困难,并且需要仔细放置对象。气球模型常用于分析图片轮廓提取。

六、几何或测地线活动轮廓模型

   几何活动轮廓 (GAC) 是轮廓模型的一种形式,它通过垂直移动曲线的点来调整欧几里得平面中建立的平滑曲线。这些点以与图像区域的曲率成比例的速率移动。曲线的几何流动和图像中物品的识别被用来表征轮廓。几何流包括感兴趣区域的内部和外部几何测量。在检测图像中的项目的过程中,利用了蛇的几何替代。这些轮廓模型很大程度上依赖于指定图像的独特区域进行分割的水平集函数。

6.1 方程

   例如GAC的梯度下降曲线演化方程为
在这里插入图片描述

   其中 g(I) 是停止函数,c是拉格朗日乘子,K 是曲率,矢量 N 是单位向内法线。这种特殊形式的曲线演化方程仅依赖于法线方向的速度。因此,通过将水平集函数 φ 插入其中,可以将其等效地重写为欧拉形式,如下所示

在这里插入图片描述

6.2 优势

   几何活动轮廓主要用于医学图像计算,特别是基于图像的分割。在这种情况下,任何成像方式的图片都会被检查以进行分割,以便研究、处理和分析感兴趣的区域。这些区域包括在人体内部区域或器官中形成的任何畸变,例如血栓、创伤、病变、细胞异常、代谢中断、生物分子破坏等。

6.3 坏处

   大多数情况下,它没有这样的低效率,但它们很难实施,因为它们本质上很复杂。

七、使用活动轮廓实现蛇模型

Python代码:

import numpy as np
import matplotlib.pyplot as plt
from skimage.color import rgb2gray
from skimage import data
from skimage.filters import gaussian
from skimage.segmentation import active_contour
image = data.astronaut()
image = rgb2gray(image)
s = np.linspace(0, 2*np.pi, 400)
r = 100 + 100*np.sin(s)
c = 220 + 100*np.cos(s)
init = np.array([r, c]).T
snake = active_contour(gaussian(image, 3, preserve_range=False),
init, alpha=0.015, beta=10, gamma=0.001)
fig, ax = plt.subplots(figsize=(7, 7))
ax.imshow(image, cmap=plt.cm.gray)
ax.plot(init[:, 1], init[:, 0], '--r', lw=3)
ax.plot(snake[:, 1], snake[:, 0], '-b', lw=3)
ax.set_xticks([]), ax.set_yticks([])
ax.axis([0, image.shape[1], image.shape[0], 0])
plt.show()`

   实验结果显示:
在这里插入图片描述

八、经常问的问题

8.1 Q1. 什么是主动轮廓分割?

   答:主动轮廓分割,也称为“蛇”或“snake”,是一种用于图像中对象边界检测的计算机视觉技术。它涉及在对象边界附近创建初始轮廓,并迭代调整其位置以准确地贴合对象的边缘。轮廓根据图像梯度、内部能量和外部约束产生的力而演变。主动轮廓分割在阈值处理或边缘检测等传统方法可能失败的情况下特别有用,因为它可以通过根据对象边缘自适应调整轮廓形状来处理复杂的对象形状和部分遮挡。

8.2 Q2。主动轮廓分割可以用来做什么?

   答. 主动轮廓分割可用于各种计算机视觉应用,例如医学图像分析(例如 MRI 扫描中的器官分割)、视频中的对象跟踪、图像编辑(例如用于照片处理的精确对象隔离)和工业自动化(例如,对制造品进行缺陷检测)。在需要精确描绘具有复杂形状和变化对比度的对象的边界的情况下,它表现出色。

  • 31
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
### 回答1: 在MATLAB主动轮廓图像分割是一种基于能量最小化的分割方法,也被称为"snake"(蛇)算法。它主要用于对图像的目标对象进行分割主动轮廓图像分割的基本原理是,在图像选择一个初始的轮廓(通常是一个闭合的曲线),然后通过迭代的方式逐步调整该轮廓,使其尽可能地紧贴目标对象边界。这个过程通过最小化能量函数来实现,能量函数包括平滑项和边缘项。 平滑项用于确保轮廓的平滑性,它惩罚曲线的曲率,使其保持光滑。边缘项用于使曲线尽可能地紧贴目标边界,它根据图像的梯度信息来计算轮廓的外部和内部能量。 在MATLAB,可以使用"imsegfmm"函数来实现主动轮廓图像分割。该函数利用快速迭代最小化方法(fast marching method,FMM)来优化能量函数,从而得到分割结果。你需要提供一个初始轮廓作为输入,并选择适当的能量权重参数。经过多次迭代,最终得到分割后的图像。 除了"imsegfmm"函数,MATLAB还提供了其他几种主动轮廓图像分割方法,如"regionseg"函数和"activecontour"函数。你可以根据具体的应用需求选择适合的方法。 总而言之,主动轮廓图像分割是一种基于能量最小化的方法,它通过调整初始轮廓来实现目标对象的分割。在MATLAB,可以使用"imsegfmm"函数来实现主动轮廓图像分割,并选择适当的参数来优化能量函数,从而得到准确的分割结果。 ### 回答2: 主动轮廓图像分割是一种基于能量最小化的图像分割方法,它通过对图像的对象进行轮廓提取和分割。在MATLAB,我们可以使用以下步骤来实现主动轮廓图像分割。 首先,加载图像并进行预处理。可以使用imread函数加载图像,并使用imresize函数调整图像大小。此外,还可以使用灰度化、滤波等方法进行图像增强和去噪。 然后,初始化轮廓。可以手动绘制初始轮廓,也可以使用自动初始化方法如GrabCut等。在MATLAB,可以使用drawfreehand函数手动绘制轮廓,或使用GrabCut函数进行自动初始化。 接下来,定义能量函数。能量函数是用于描述轮廓的形状和图像信息的度量。常用的能量函数包括边缘能量和区域能量。在MATLAB,可以使用一些内置的能量函数,如边缘能量函数gradient、区域能量函数regionprops等。 然后,使用迭代优化算法进行轮廓演化。常用的优化算法有Level Set、Active Contour等。在MATLAB,可以使用activecontour函数进行轮廓演化。activecontour函数接受能量函数、轮廓初始化和演化步数等参数。 最后,可视化和评估分割结果。使用imshow函数可视化分割结果,并使用评估指标如Jaccard系数、Dice系数等对分割结果进行评估。 总结来说,MATLAB主动轮廓图像分割可以通过加载图像、预处理、轮廓初始化、定义能量函数、轮廓演化和结果评估等步骤来实现。这是一种强大的图像分割方法,可以在图像分析和计算机视觉应用得到广泛应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无水先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值