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

news/2024/12/23 0:28:58/

一、说明

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

二、什么是图像分割?

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

图片: 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 扫描中的器官分割)、视频中的对象跟踪、图像编辑(例如用于照片处理的精确对象隔离)和工业自动化(例如,对制造品进行缺陷检测)。在需要精确描绘具有复杂形状和变化对比度的对象的边界的情况下,它表现出色。


http://www.ppmy.cn/news/1326437.html

相关文章

配置zabbix平台对数据库以及主从状态的监控

引言:明人不说暗话,今天分享下配置zabbix平台对数据库以及主从状态的监控 准备好zabbix监控平台(zabbix-server端)例10.12.153.235 db1客户端(zabbix-agent)例10.12.153.73 1.安装Zabbix存储库 # rpm -Uv…

windows虚拟主机和linux虚拟主机的区别有哪些?

很多个人站长和中小企业在做网站的时候,会选择虚拟主机。虚拟主机用的操作系统多为Windows系统,很多人一提到操作系统立马联想到Windows系统。其实除了Windows系统外,还有很多的操作系统。其中Linux系统是其中的佼佼者。 1、操作系统 window…

Qt之QByteArray内容判断和填充

判断是否为空 可以使用函数isEmpty()来判断字节数组是否为空,即size是否为0。函数isEmpty()的原型声明如下: bool isEmpty(); 如果字节数组的size为0,则返回true,否则返回false下列代…

Flink实时数仓同步:拉链表实战详解

一、背景 在大数据领域,业务数据通常最初存储在关系型数据库,例如MySQL。然而,为了满足日常分析和报表等需求,大数据平台会采用多种不同的存储方式来容纳这些业务数据。这些存储方式包括离线仓库、实时仓库等,根据不同…

代码随想录算法训练营第四十三天| 1049.最后一块石头的重量 II、494.目标和、474.一和零

代码随想录算法训练营第四十三天| 1049.最后一块石头的重量 II、494.目标和、474.一和零 题目 1049.最后一块石头的重量 II 有一堆石头,用整数数组 stones 表示。其中 stones[i] 表示第 i 块石头的重量。 每一回合,从中选出任意两块石头,…

你真的知道如何查看 Elasticsearch 的 Debug 日志吗?!

当我们遇到问题或者需要深入了解 Elasticsearch 的运行机制时,调整日志等级( logging level )到更详细的级别,比如 DEBUG、TRACE ,会是一个有效且必须要掌握的方法。 Elasticsearch 提供了如下的接口来支持动态变更 l…

LeetCode、2336. 无限集中的最小数字(中等,小顶堆)

文章目录 前言LeetCode、2336. 无限集中的最小数字题目链接及类型思路代码题解 前言 博主所有博客文件目录索引:博客目录索引(持续更新) LeetCode、2336. 无限集中的最小数字 题目链接及类型 题目链接:2336. 无限集中的最小数字 类型:数据…

.NET 8 中引入新的 IHostedLifecycleService 接口 实现定时任务

在这篇文章中,我们将了解 .NET 8 中为托管服务引入的一些新生命周期事件。请注意,这篇文章与 .NET 8 相关,在撰写本文时,.NET 8 目前处于预览状态。在 11 月 .NET 8 最终版本发布之前,类型和实现可能会发生变化。要继续…