图像分割 - 水平集算法

article/2024/12/26 20:11:40

水平集介绍

水平集分为三种:

1 . 基于图像边缘灰度梯度信息 ,适用于边缘强的图像分割

2 . 基于区域特征 ,利用区域信息引导曲线慢慢靠近 ,比如分割曲线区域的内外灰度均值,分割曲线内部区域面积(例如 Chan-Vase)

3 . 混合型

水平集关键 :曲线的演变

首先设置一个初始轮廓,也就是初始轮廓,通过将这个初始轮廓演变成图像中需要分割出来的形状,那具体是如何演变的呢 ?我用自己的理解来解释一下:

既然曲线在演变,那曲线的每一个点一定有一个演化的方向,如何确定演化方向?

用最优方向,也就是梯度方向的法线方向,因为曲线沿这个方向变化最快 .

既然曲线在演变,每一个点不但有了方向也应该有一个速度,如何控制曲线演变速度呢?

梯度信息,也就是图像的灰度分别对坐标轴两方向求偏导,靠近边缘变化慢,远离边缘变化快 .

Chan-Vese(CV) 算法

要用水平集实现图像分割 , Chan-Vese算法是一个非常重要的算法,CV模型使用图像的像素灰度信息作为能量,构造能量函数,通过控制曲线内外图像的灰度值来实现曲线的演变,公式如下:

Ec = \iint_{}^{} \left | I(x,y)-c1 \right |^2dxdy + \iint_{}^{} \left | I(x,y)-c2 \right |^2dxdy

其中 I(x,y) 表示原图像在 (x,y) 坐标下的灰度值 ,c1 c2 分别为曲线内外图像灰度值的均值 .

当曲线演变至目标轮廓时,Ec 取极小值,内外能量守恒 .

\iint_{}^{} \left | I(x,y)-c1 \right |^2dxdy \approx 0

\iint_{}^{} \left | I(x,y)-c2 \right |^2dxdy\approx 0

再在Ec 上加上一些正则项 ,得出一个能量泛函:

E = \mu Length(C)+\nu Area(C) +Ec

引入水平集函数 :  \o \varnothing (x,y) 

先来说一下我对这个函数  \varnothing (x,y) 的理解 ,我把它理解成一个描绘等高线的函数,他不是一个曲线函数,我们可以把它理解成一个面函数,从初始曲线映射的面函数,假设引入时间变量 t ,随着时间 t 在变 曲线也就在演变,而面也就一层一层的向下演变,这个在之后的变分方程(E-L公式的介绍里会详细的说明)当演化到一定程度,再通过绘制等高线的方法,来实现图像最终的分割.

刚才既然说到水平集函数是一个面函数,那么如何表示曲线呢?这里就要引入Heaviside Fucntion(阶跃函数)  公式如下:

\large H(z)=\left\{\begin{matrix} 1, &if &z>0 \\ 0,& if& z<0 \end{matrix}\right.

这里阶跃函数的参数 \large z 就是水平集函数  \o (x,y)

一般一个初始的轮廓设置时,变量是一个和原图相同大小的矩阵,轮廓内的值\o (x,y)为 1,而轮廓外的值\o (x,y)为  -1,通过慢慢演变,\o (x,y)

中的 -1逐渐增大变为正数,迭代到一定程度是 ,将轮廓曲线分割完成,而 H(z) 阶跃函数的意义就是 如果z,也就是 \o (x,y)的值 >0了,说明该点已经被认为是演化出来的新的轮廓了.

 能量泛函的定义

上面已经提到过,能量泛函为:

E = \mu Length(C)+\nu Area(C) +Ec

 其中:

Length(\o =0)=\iint_{}^{} \left | \bigtriangledown H(\o (x,y) \right |dxdy

Length(\o \geqslant 0)=\iint_{}^{} H(\o (x,y)dxdy

Ec = \iint_{}^{} \left | I(x,y)-c1 \right |^2H(\o )dxdy + \iint_{}^{} \left | I(x,y)-c2 \right |^2(1-H(\o ))dxdy

并且每一个前面都需要有一个权重参数,所以总能量泛函就可以是:

E=\mu \iint_{}^{} \left | \bigtriangledown H(\o (x,y) \right |dxdy+\nu \iint_{}^{} H(\o (x,y)dxdy+ \lambda 1\iint_{}^{} \left | I(x,y)-c1 \right |^2H(\o )dxdy + \lambda 2\iint_{}^{} \left | I(x,y)-c2 \right |^2(1-H(\o ))dxdy

其中:

c1 = \frac{\iint_{}^{}I(x,y)H(\o (x,y)dxdy}{\iint_{}^{}H(\o (x,y)dxdy}

c2= \frac{\iint_{}^{}I(x,y)(1-H(\o (x,y))dxdy}{\iint_{}^{}1-H(\o (x,y)dxdy}

在理论上来讲,Heaviside Fucntion(阶跃函数)是不存在的,所以我们选择了一个替代函数(\epsilon为常数):

H(z) = \frac{1}{2}(1+\frac{2}{\pi }arctan\frac{z}{\epsilon })

 为什么选择这个函数呢?因为后面变分法梯度下降的时候,会涉及到 H(z) 求导,而数学好的已经发现了H(z) 求导是一个跟 \epsilon 有关的常数 .

\delta (z) =\frac{1}{\pi }*\frac{\epsilon }{\epsilon ^{2}+\pi ^{2}}

当ϵ 的取值越小,替代函数也就越接近理想中的的阶跃函数。

求解能量泛函极值

我们使用变分法(欧拉 - 拉格朗日)和梯度下降来求泛函 E 的最优解,公式如下:

\frac{\partial \o }{\partial t} =\delta (\phi )[ \mu div(\frac{\bigtriangledown u}{\left | \bigtriangledown u \right |})-\upsilon - \lambda1(I-c1) ^{2}+\lambda 2(I-c2)^{2}]

代码实现中,我们也是通过这个公式来实现迭代并更新水平集函数 \o (x,y)


http://chatgpt.dhexx.cn/article/CNmZLasy.shtml

相关文章

IBGP水平分割

IBGP水平分割规则 IBGP水平分割用于在IBGP对等体之间进行路由传递时&#xff0c;无法像EBGP对等体那样一来AS-Path属性进行防止环路的问题&#xff0c;因为AS-Path属性在AS内进行传递时是不会发生改变的。 下图便是极有可能出现IBGP对等体环路的场景&#xff1a; R1将10.1.1.…

垂直分割和水平分割

2019独角兽企业重金招聘Python工程师标准>>> 1&#xff0c;水平分割&#xff1a; 例&#xff1a;QQ的登录表。假设QQ的用户有100亿&#xff0c;如果只有一张表&#xff0c;每个用户登录的时候数据库都要从这100亿中查找&#xff0c;会很慢很慢。如果将这一张表分成1…

RIP的水平分割及触发更新(超详细,小白基础实验)

RIP的水平分割及触发更新 希望有需要的小伙伴可以参考参考&#xff0c;写的不好&#xff0c;请多包涵&#xff01; 基本概念&#xff1a; 1&#xff1a;水平分割&#xff08;Split Horizon&#xff09;指的是RIP从某个接口接收到的路由信息&#xff0c;不会从该接口再发给邻居…

分库分表的垂直分割与水平分割

1、垂直分库 根据业务耦合性&#xff0c;将关联度低的不同表存储在不同的数据库。做法与大系统拆分为多个小系统类似&#xff0c;按业务分类进行独立划分。与“微服务治理”的做法相似&#xff0c;每个微服务使用单独的一个系统。如图&#xff1a; 2、垂直分表 基于数据表中的…

一起聊聊 dB、dB、dBm、dBi 吧!

点击上方“小麦大叔”&#xff0c;选择“置顶/星标公众号” 福利干货&#xff0c;第一时间送达 dB应该是无线通信中最基本、最习以为常的一个概念了。我们常说“传播损耗是xx dB”、“发射功率是xx dBm”、“天线增益是xx dBi”……有时候&#xff0c;这些长得很像的dBx们可能被…

单位意义:dB、dBm与dBw、dBμ与dBV、dBi与dBd、dBFS

dB单位概念一直是以前比较模糊的地方&#xff0c;机缘下&#xff0c;就整体的把一些相关的dB单位的文献统一看了一些&#xff0c;下面就简单的解释一下这些基本单位的意义和基本换算。 dB 简单解释下dB产生的由来&#xff0c;dB是decibel的缩写,意即十分之一贝尔(bel)&#xf…

分贝dB、dBm、dBw

文章目录 【1. 物理意义】1.1 功率增益1.2 幅值增益 【2. 3dB】【3. dBm、dBw】 【1. 物理意义】 分贝&#xff08;decibel&#xff0c;/dɛsɪ.bɛl/&#xff09;是量度两个相同单位之数量比例的计量单位&#xff0c;常用dB表示。 1.1 功率增益 A ( P ) ( d B ) 10 l g ( P…

一分钟读懂dB、dBm、dBw的区别

dB应该是无线通信中最基本、最习以为常的一个概念了。我们常说“传播损耗是xx dB”、“发射功率是xx dBm”、“天线增益是xx dBi”…… 有时&#xff0c;这些长得很像的dBx们可能被弄混&#xff0c;甚至造成计算失误。它们究竟有什么区别呢&#xff1f; 这事不得不先从dB说起。…

EMC常见术语-dB、dBm、dBw以及如何计算

1. 手把手教&#xff1a;如何计算dB、dBm、dBw…… dB应该是无线通信中最基本、最习以为常的一个概念了。我们常说“传播损耗是xx dB”、“发射功率是xx dBm”、“天线增益是xx dBi”…… 有时&#xff0c;这些长得很像的dBx们可能被弄混&#xff0c;甚至造成计算失误。它们究…

dB dBm dBW 的关系与换算

前言 这些都叫“分贝数”&#xff0c;表示“相对”的思想。 “dB” 字段可看作 “相对于”&#xff1a; dBdBm (dBmW)&#xff1a;相对于 1 mW 是多少dBW&#xff1a;相对于 1 W 是多少 文中采用方括号 [ ] 表示采用基本功率定义的分贝数 一、定义 1. dB 定义&#xff1a…

dBm和dB(纯计数单位)

分贝毫瓦&#xff08;dBm&#xff09; 分贝毫瓦(dBm&#xff0c;全写为“decibel relative to one milliwatt”)为一个指代功率的绝对值&#xff0c;而不同于dB只是一个相对值。 任意功率P(mW)与xdBm换算的公式如下&#xff1a; 以及 例如&#xff0c;1毫瓦(1 mW)换算成分贝毫…

DDL语言(添加、修改、删除)

数据库意义&#xff1a;数据存储&#xff0c;数据管理 DML语言&#xff1a;数据操作语言&#xff08;insert、update、delete&#xff09; 添加&#xff08;insert&#xff09; 语法&#xff1a; insert into 表名(字段1,字段2,字段3,...) values(值1),(值2),(值3),(...) 例&a…

使用数据库DDL语言创建数据库和基本表?(SQL Server 2014)

摘要&#xff1a;微信搜索【三桥君】 检索&#xff1a;《数据库系统原理》课程实验报告——实验一 建立数据库和基本表结构 说明&#xff1a;本实验是在SQL Server 2014版本数据库下操作完成的。 本实验通过举例创建一个数据库、一张有定义的表、以及添加数据到该表的实验过程&…

实验1 SQL的DDL语言和单表查询

第1关&#xff1a;创建供应商表S(SNO,SNAME,STATUS,CITY) 任务描述 创建供应商表S(SNO,SNAME,STATUS,CITY) 相关知识 供应商表S由供应商代码&#xff08;SNO&#xff09;、供应商姓名&#xff08;SNAME&#xff09;、供应商状态&#xff08;STATUS&#xff09;、供应商所在城市…

DML语言和DDL语言(数据库)

数据库DML,DDL语言&#xff1a;使用平台&#xff0c; DDL语言 1.create table 2.Create index 3.Alter table 4.Alter index 5.Drop index 1.展示数据库 2.使用某个数据库 3.展示表 4.查询表&#xff08;首先你要确定&#xff0c;你这个数据库有表&#xff09; 5.创建数…

mysql数据库-DDL语言

目录 1.DDL是什么&#xff1f; 2.有哪些常用的操作 1.查看数据库 2.创建数据库 2.删除数据库 3.添加查看表 4.删除表 5.修改表 &#xff08;1&#xff09;修改表类型 (2)增加表字段 &#xff08;3&#xff09;删除表字段 &#xff08;4&#xff09;修改字段名 &#x…

SQL语句之DDL语言

说明&#xff1a;DDL&#xff08;Data Definition Language&#xff0c;数据定义语言&#xff09;&#xff0c;用来定义数据库对象(数据库、表)&#xff0c;包括了数据库和表的创建、查询、使用和删除操作。 一、数据库操作 新安装的数据库&#xff0c;默认有以下四个数据库&…

DDL语言

其语句包括动词CREATE,ALTER和DROP。在数据库中创建新表或修改、删除表&#xff08;CREATE TABLE 或 DROP TABLE&#xff09;&#xff1b;为表加入索引等。 mysql是一个关系型数据库&#xff0c;库里面包含若干个表&#xff0c;而每一张表都是由行和列组成。 打开Navicat 1.0…

数据库:DML语言和DDL语言

文章目录 一、DML语言(数据操作语言)1.插入语句(1)方式一(2)方式二(3)两种方式比较 2.修改语句(1)修改单表的记录(2)修改多表的记录&#xff08;补充&#xff09; 3.删除语句(1)方式一(2)方式二(3)方式一与方式二区别(⭐) 二、DDL语言1.库的管理2.表的管理(1)表的创建A.语法B.常…

ddl是什么意思网络语_DDL(数据定义语言)

DDL,是对数据库内部的对象进行创建,删除,修改等的操作语言。它和DML语言最大的区别是DML只是对表内部数据的操作,而不涉及到表的定义,结构的修改,更不会涉及到其它对象。 1.连接数据库: 注:1.mysql代表客户端命令,-u后面跟连接的数据库用户,-p表示需要输入密码。 2.命令…