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

news2024/9/24 13:24:21

一、说明

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

二、什么是图像分割?

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

图片: 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.coloradmin.cn/o/1397599.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PostgreSQL 的对象层次

所有的数据库离开数据量来谈性能都是耍流氓。 就你那几万条的数据库,用啥都行,典型的就是怎么方便怎么来。 不过 PostgreSQL 上手确实比 MySQL 概念更多。 PostgreSQL 比 MySQL 多了一层。 PostgreSQL 是从PostgreSQL 是从 Database,到 S…

RK3568平台 LT9211转接芯片调试笔记

一.简介 龙讯LT9211是一个高性能转换器,支持MIPI LVDS TTL两两之间转换。 使用此款芯片大部分为MIPI与LVDS进行互相转换。 下图为LT9211的典型应用图: 二.LT9211原理图 三.车载显示器和摄像头系统 四.调试LT9211输出 MIPI数据 (1&#xf…

【Linux install】Ubuntu和win双系统安装及可能遇到的所有问题

文章目录 1.前期准备1.1关闭快速启动和安全启动1.1.1 shell命令行进入BIOS1.1.2 windows设置中高级启动1.1.3 在开机时狂按某个键进入BIOS1.1.4 关闭Fast boot和Secure boot 1.2 制作启动盘1.3 划分磁盘空间1.3.1 查看目前的虚拟内存大小 2.开始安装2.1 使用启动盘启动2.1.1 法…

洛谷NOIP2002 普及组 选数 +NOIP1999普及组 回文数

两道日常的练习题&#xff0c;废话不多说&#xff0c;直接上题上代码&#xff1a; 这道题目的难点在于怎样去根据一个不同的k值&#xff0c;通过代码来实现将所有符合题目要求的数字相加并且不重复的功能。下面请看代码&#xff0c;会有详细的讲解&#xff1a; #include<io…

又聊代码重构

今天有幸和一位朋友聊了一下代码的重构。回来之后感觉不够尽兴&#xff0c;所以决定再来输出一篇。 代码来至于今天下午的提交。 重构是对代码的觉知和业务的逻辑的进一步归纳总结 只有开发者对代码的不断觉察和理解&#xff0c;才会产生重构代码的念头。因此&#xff0c;驱动…

GO 中如何防止 goroutine 泄露

文章目录 概述如何监控泄露一个简单的例子泄露情况分类chanel 引起的泄露发送不接收接收不发送nil channel真实的场景 传统同步机制MutexWaitGroup 总结参考资料 今天来简单谈谈&#xff0c;Go 如何防止 goroutine 泄露。 概述 Go 的并发模型与其他语言不同&#xff0c;虽说它…

小白水平理解面试经典题目LeetCode 121 Best Time to Buy and Sell Stock

121 Best Time to Buy and Sell Stock (买卖股票的最佳时机) 你好&#xff0c;2024年的第一个月&#xff0c;又是秋风萧瑟天气凉&#xff0c;草木摇落露为霜。.。。在这个特殊的时代&#xff0c;作为我们普通的一个打工人&#xff0c;我们用这道题&#xff0c;开启对这个不符合…

菜鸟关于做前、后端的整理(html、js),以及疑问

涉及到后端的接口py&#xff0c;前端html和js 这三部分就按照如下格式放到server项目主路径下&#xff0c;这样后端机可以作为一个前端server main.pystaticmain.jsmain.htmlhtml 首先是html要设定网页的显示 <!DOCTYPE html> <html> <head><title>…

小米,我请你不要将卖手机那套话术带进汽车圈

文 | AUTO芯球 ​作者 | 雷歌 当你们用卖手机时那一套营销话术玩汽车&#xff0c;整个汽车圈都被你们逗乐了。 这不&#xff0c;在被用户问到“贵公司汽车有哪些驾驶模式”时&#xff0c;你们声称自己有16.8亿种驾驶模式。 你小米说这话的逻辑&#xff0c;不就是将加速、转…

网络安全最大的威胁:洞察数字时代的风险之巅

在数字化时代&#xff0c;网络安全问题越发突显&#xff0c;企业和个人都面临着来自多方面的威胁。究竟网络安全领域的最大威胁是什么&#xff1f;本文将深入探讨这一问题&#xff0c;揭示数字空间中最为严重的威胁。 1. 恶意软件的肆虐&#xff1a; 恶意软件一直是网络安全的…

29、WEB攻防——通用漏洞SQL注入增删改查盲注延迟布尔报错

文章目录 盲注增删改查 盲注 概念&#xff1a;在注入过程中&#xff0c;获取的数据不能回显至前端页面&#xff0c;此时我们需要利用一些方法进行判断或尝试&#xff0c;这个过程被称为盲注。 解决&#xff1a;常规的联合查询注入不行的情况。 分类&#xff1a; 基于布尔的SQ…

Leetcode2957. 消除相邻近似相等字符

Every day a Leetcode 题目来源&#xff1a;2957. 消除相邻近似相等字符 解法1&#xff1a;遍历 分类讨论 遍历字符串 word&#xff0c;比较相邻的 3 个元素 word[i - 1]、word[i] 和 word[i 1]&#xff0c;记 left_distance abs(mid - left)&#xff0c;right_distance…

739.每日温度 496.下一个更大元素 I

739.每日温度 496.下一个更大元素 I 739.每日温度 力扣题目链接(opens new window) 请根据每日 气温 列表&#xff0c;重新生成一个列表。对应位置的输出为&#xff1a;要想观测到更高的气温&#xff0c;至少需要等待的天数。如果气温在这之后都不会升高&#xff0c;请在该位…

(初研) Sentence-embedding fine-tune notebook

由于工作需要&#xff0c;需要对embedding模型进行微调&#xff0c;我调用了几种方案&#xff0c;都比较繁琐。先记录一个相对简单的方案。以下内容并不一定正确&#xff0c;请刷到的大佬给予指正&#xff0c;不胜感激&#xff01;&#xff01;&#xff01; 一.对BGE模型&…

OpenHarmonyOS-gn与Ninja

GN语法及在鸿蒙的使用 [gnninja学习 0x01]gn和ninja是什么 ohos_sdk/doc/subsys-build-gn-coding-style-and-best-practice.md GN 语言与操作 一、gn简介 gn是generate ninja的缩写&#xff0c;它是一个元编译系统&#xff08;meta-build system&#xff09;,是ninja的前端&am…

Python入门到精通(三)——Python循环语句

Python循环语句 一、while 循环 1、基础语法 2、嵌套应用 二、for 循环 1、基础语法 2、嵌套应用 三、循环中断&#xff1a;break 和 continue 1、break 2、continue 四、综合案例 一、while 循环 1、基础语法 while的条件需得到布尔类型&#xff0c;True表示继续循环…

linux C语言socket函数send

在Linux中&#xff0c;使用C语言进行网络编程时&#xff0c;send函数是用于发送数据到已连接的套接字的重要函数之一。它通常用于TCP连接&#xff0c;但也可以用于UDP&#xff08;尽管对于UDP&#xff0c;通常更推荐使用sendto&#xff0c;因为它允许你指定目标地址和端口&…

定时关机应用V2.1

# 在ShutDown_2.0的基础上&#xff0c;作了如下改进&#xff1a; # 1) 修正了默认模式无法选择其他时间的bug&#xff0c;还增加了2.5小时和3小时两个选项&#xff1b; # 2&#xff09;自定义模式将计时单位从“秒”改为“分钟”&#xff0c;倒计时显示也优化为“小时:分钟:秒”…

小白水平理解面试经典题目LeetCode 125 Valid Palindrome(验证回文串)

125 验证回文串 说到公司面试&#xff0c;那就是得考出高度&#xff0c;考出水平&#xff0c;什么兼顾这两者呢&#xff0c;那就得看这道 原题描述&#xff1a; 给定一个字符串&#xff0c;判断它是否是回文串。回文串是指正读和反读都一样的字符串。 输入: “A man, a pla…