形态图像处理

news2024/12/26 11:05:28

形态图像处理

预备知识

  • 反射、平移
  • 结构元

腐蚀和膨胀

  • 腐蚀
    • 将 B 平移,当其原点位于 z 时,其包含在 A 中,则 z 为一个有效的位置,所有有效的z构成了腐蚀之后的结果
    • 腐蚀缩小或细化了二值图像中的物体
    • 可以将腐蚀看作形态学滤波操作,这种操作把比结构元小的图像细节从图像中滤除
  • 膨胀
    • 将 B 关于原点映像之后,再平移,当其原点平移到 z 时,如果其与 A 有重叠元素,则 z 为一个有效的位置,所有有效的 z 构成了膨胀之后的结果
    • 腐蚀是一种收缩或细化操作,而膨胀则会“增长”或“粗化”二值图像中的物体
    • 膨胀、腐蚀都是非线性操作
  • 对偶性
    • B B B A A A 的腐蚀是 B ^ \hat{B} B^ A c A^c Ac 的膨胀的补集,反之亦然
    • 当结构元关于其原点对称时有 B ^ = B \hat{B}=B B^=B,此时可以用相同
      的结构元简单地使用 B B B 膨胀图像的背景,对该结果求补即可得到 B B B 对该幅图像的腐蚀

开操作与闭操作

  • 开操作一般会平滑物体的轮廓、断开较窄的狭颈并消除较细的突出物

  • 闭操作同样也会平滑轮廓的一部分,但与开操作相反,它通常会弥合较窄的间断和细长的沟壑,消除较小的孔洞,填补轮廓线中的断裂

  • B 对 A 的开操作就是 B 对 A 的腐蚀,紧接着用 B 对结果进行膨胀

  • B 对集合 A 的闭操作就是用 B 对 A 膨胀,再用 B 对结果腐蚀

  • 几何解释

    • 假设我们把结构元 B 视为一个“转球”
    • B 对 A 的开操作的边界由 B 中的点建立:当 B 在 A 的边界内侧滚动时,B 所能到达的 A 的边界的最远点
    Image
    • 开操作与闭操作彼此对偶,所以闭操作在边界外侧滚动球体是意料之中的事情,B 在 A 的边界外侧外切滚动一圈, 所有 ( B ) z (B)_z (B)z 的并集构成的内包络为边界
    Image
    • 类似于膨胀和腐蚀,开操作和闭操作彼此关于集合求补和反射也是对偶的
    • 注意:算子应用一次后,一个集合的多次开操作或闭操作没有影响

击中或击不中变换

Image
  • 使用与物体有关的结构元 B 1 B_1 B1 和与背景有关的结构元 B 2 B_2 B2 的原因,基于一个假设的定义——仅当两个或多个物体形成相脱离的集合时,这些物体才是可分的
  • 击中-击不中运算常用于二值图像,它用于基于结构元素的配置,从图像中寻找具有某种像素排列特征的目标,如单个像素、颗粒中交叉或纵向的特征、直角边缘或其他用户自定义的特征等。计算时,只有当结构元素与其覆盖的图像区域完全相同时,中心像素的值才会被置为1,否则为0

基本的形态学算法

  • 边界提取
    • 表示为 β ( A ) \beta (A) β(A) 的集合 A 的边界可以通过先用 B 对 A 腐蚀,而后执行 A 和腐蚀的结果之间的差集得到
  • 孔洞填充
    • 孔洞定义:由前景像素相连接的边界所包围的背景区域
    • 令 A 表示一个集合,其元素是 8 连通的边界,每个边界包围一个背景区域。当给定每个孔洞中的一个点后,目的就是用 1 填充所有的 孔洞
    • 给定每个孔洞中对应于 X 0 X_0 X0 中的位置点(这一点已经置为 1 ),我们从形成一个由 0 组成的阵列 X 0 X_0 X0 开始。然后,如下过程将用 1 填充所有孔洞L : X k = ( X k − 1 ⊕ B ) ∩ A c X_k=(X_{k-1}\oplus B)\cap A^c Xk=(Xk1B)Ac
    • 如果 X k = X k − 1 X_k = X_{k-1} Xk=Xk1 ,则算法在迭代的第 k 步结束。然后,集合 X k X_k Xk 包含所有被填充的孔洞。 X k X_k Xk 和 A 的并集包含所有填充的孔洞及这些孔洞的边界
    • 如果左边不加限制,那么膨胀将填充整个区域。然而,每一步中 与 A c A^c Ac 的交集操作将把结果限制到感兴趣区域内,称为条件膨胀
  • 连通分量的提取
    • 令 A 是包含一个或多个连通分量的集合,并形成一个阵列 X 0 X_0 X0 除了在对应于 A 中每个连通分量的一个点的每个已知位置处我们已置为 1 外,该阵列的所有其他元素均为 0 。如下迭代过程可完成这一目 的: X k = ( X k − 1 ⊕ B ) ∩ A X_k=(X_{k-1}\oplus B)\cap A Xk=(Xk1B)A
  • 凸壳
    • 如果在集合 A 内连接任意两个点的直线段都在 A 的内部,则称集合 A 是凸形的。任意集合 S 的凸壳 H 是包含 S 的最小凸集。差集 H-S 称为 S 的凸缺
    • X k i = ( X k − 1 ⊛ B i ) ∪ A X^i_k=(X_{k-1}\circledast B^i)\cup A Xki=(Xk1Bi)A,当该过程收敛时,我们令 D i = X k i D^i=X^i_k Di=Xki,则 A 的凸壳为: C ( A ) = ⋃ i = 1 4 D i C(A)=\bigcup^4_{i=1}D^i C(A)=i=14Di
  • 细化
    • A ⊗ B = A − ( A ⊛ B ) A\otimes B=A-(A\circledast B) AB=A(AB)
    • 我们仅对与结构元的模式匹配感兴趣,所以在击中或击不中变换中没有背景运算
  • 粗化
    • 粗化是细化的形态学对偶: A ⋅ B = A ∪ ( A ⊛ B ) A\cdot B=A\cup (A\circledast B) AB=A(AB)
    • 然而,针对粗化的分离算法在实际中很少用到,取而代之的过程 是先对问题中集合的背景进行细化,而后对结果求补集。由于依赖于 A 的性质,这个过程可能会产生某些断点。因此,通过这种方法的粗化处理通常会跟随一个消除断点的后处理
  • 骨架
    • A 的骨架可以用腐蚀和开操作来表达,即骨架可以表示为 S ( A ) = ⋃ k = 0 K S k ( A ) S(A)=\bigcup^K_{k=0}S_k(A) S(A)=k=0KSk(A) 其中, S ( A ) = ( A ⊖ k B ) − ( A ⊖ k B ) ∘ B S(A)=(A\ominus kB)-(A\ominus kB)\circ B S(A)=(AkB)(AkB)B K K K 是 A 被腐蚀成空集前的最后一次迭代步骤
    • 使用下式可由这些子集来重建 A : A = ⋃ k = 0 K ( S k ( A ) ⊕ k B ) A=\bigcup^K_{k=0}(S_k(A)\oplus kB) A=k=0K(Sk(A)kB)
  • 裁剪
    • 裁剪方法本质上是对细化和骨架算法的补充,因
    • 为这些过程会保留某些寄生成分,因而需要用后处理来清除这些寄生成分
  • 形态学重建
    • 形态学重建涉及两幅图像和一个结构元,一幅图像是标记,它包含变换的起始点,另一幅图像是模板,它用来约束该变换。结构元用来定义连续性
    • 形态学重建的核心是测地膨胀和测地腐蚀
      • 测地膨胀和测地腐蚀关于集合的补集对偶
      • 有限数量图像的测地膨胀和腐蚀经过有限数量的迭代步骤后总会收敛,因为标记图像的扩散或收缩受模版约束
    • 用腐蚀和膨胀的形态学重建:反复执行测地膨胀或腐蚀,直到达到稳定状态
    • 重建开操作:形态学开操作中,腐蚀会删除小的物体,而后续的膨胀会试图恢复遗留物体的形状。然而这种恢复的准确性高度依赖于物体的形状和所用结构元的相似性;而重建开操作可正确地恢复腐蚀后所保留物体的形状
    • 填充孔洞
    • 边界清除

灰度级形态学

  • 腐蚀与膨胀
    • 当 b 的原点位于 (𝑥,𝑦) 处时,用一个平坦的结构元 b 在 (𝑥,𝑦) 处对图像 𝑓 的腐蚀定义为图像 𝑓 中与 b 重合区域的最小值
    • 类似地,当 b 的原点位于位置 (𝑥,𝑦) 处时,平坦结构元 b 在任何位置 (𝑥, 𝑦) 处对图像 𝑓 的膨胀定义为图像 𝑓 中与 b 重合区域的最大值
  • 开操作和闭操作
    • 灰度级图像的开操作和闭操作的表达式,与二值图像的对应操作 具有相同的形式
    • 开操作用于去除较小的明亮细节,而保持整体灰度级和较大的明亮特征相对不变;闭操作抑制暗细节
    • 开操作使得所有亮特征的灰度都降低了,降低的程度取决于这些特征相对于结构元的尺寸
    • 闭操作对于亮细节和背景相对来说未受影响,但削弱了暗特征,削弱的程度取决于 这些特征相对于结构元的尺寸
  • 灰度级形态学算法
    • 形态学平滑:因为开操作抑制比结构元小的亮细节,而闭操作抑制暗细节,所以它们常常以形态滤波的形式结合起来平滑图像和去除噪声
    • 形态学梯度:膨胀粗化一幅图像中的区域,而腐蚀则细化它们。膨胀和腐蚀之差强调区域间的边界。同质区域不受影响,因此相减操作趋于消除同质区域。最终结果是边缘被增强而同质区域的贡献则被抑制的图像,因此产生了“类似于微分”效果
    • 顶帽变换和底帽变换:用一个结构元通过开操作或闭操作从一幅图像中删除物体;然后,差操作得到一幅仅保留已删 除分量的图像。顶帽变换用于暗背景上的亮物体,而底帽变换则用于相反的情 况。由于这一原因,这些变换又称为白顶帽变换和黑底帽变换。顶帽变换的一个重要用途是校正不均匀光照的影响
    • 粒度测定
    • 纹理分割
  • 灰度级形态学重建

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/987731.html

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

相关文章

化繁为简,国内知名期货交易所依托 MogDB 数据库促信创改造项目提速

近年来,国家持续加大力度推动新基建建设,信创产业作为新基建的重要组成部分,在2020年得到全面推广。在这三年间里,我国信创产业逐步进入黄金发展期,国产基础软硬件从“不可用”到“可用”并逐渐向“好用”演进。因此&a…

Carla学习笔记(二)服务器跑carla,本地运行carla-ros-bridge并用rviz显示

一、服务器跑carla 详见Carla学习笔记(一)服务器跑carla本地显示窗口_Zero_979的博客-CSDN博客 只需要启动服务器端就行: ./CarlaUE4.sh -carla-rpc-port2000 -RenderOffScreen -graphicsadaper1 二、本地下载 carla-ros-bridge 官方库&…

手麻系统全套源码 术前、术中、术后全过程管理

手术麻醉临床信息系统源码 手麻系统全套源码 手术麻醉临床信息系统功能符合三级甲等医院评审要求,实现与医院现有信息系统如HIS、LIS、PACS、EMR等系统全面对接,全面覆盖从患者入院,经过术前、术中、术后,直至出院的全过程。通过…

C编程预备计算机专业知识

目录 cpu 内存条 硬盘 显卡 主板 显示器 之间的关系 什么是数据类型 基本数据类型 复合数据类型 什么是变量 变量为什么必须初始化,初始化就是赋值的意思 如何定义变量 什么是进制 常量在C语言中如何表示 常量以什么样的二进制代码存储在计算机中 什么是字节…

Ubuntu安装NVIDIA显卡驱动

目录 0. 引言1. 方法1 - 使用系统自带渠道安装2. 方法2 - 手动安装2.1. 卸载原有显卡驱动2.2. 安装显卡驱动2.3. 补救措施 0. 引言 \qquad 第一次入坑的建议看一下这部分。如果说要问我什么时候应该给Ubuntu装显卡驱动,我建议新系统用户第一件事就是安装显卡驱动&am…

C语言练习题解析:挑战与突破,开启编程新篇章!(3)

💓博客主页:江池俊的博客⏩收录专栏:C语言刷题专栏👉专栏推荐:✅C语言初阶之路 ✅C语言进阶之路💻代码仓库:江池俊的代码仓库🎉欢迎大家点赞👍评论📝收藏⭐ 文…

如何加密Python程序

我们开发了一个项目,历尽艰辛,想发布出去,又怕别人窃取自己的劳动成果。 有效的方法一是可以上传github,分享源代码,其它想使用的朋友可以通过fork来进一步改进它。 对了,最近刚发现一个小技巧&#xff0…

如何使用 MSYS2 编译最新版的 coreutils 源码(目前最新版本为 coreutils-9.4)

文章目录 一、coreutils 源码下载二、MSYS2 安装编译工具1. pacman -Suy 更新软件仓库2. pacman -S msys/gcc 安装gcc3. pacman -S msys/make 安装make工具4. 解压缩 coreutils 压缩包5. 执行 ./configure 命令6. 执行 make 进行编译(cygwin-3.4.8版本的一个bug导致…

1.1 空间直角坐标系

1.空间直角坐标系的建立 三维空间中几何 空间图形形式 ----- 点 线 面 体 ↑ ↓ \uparrow\downarrow ↑↓ (空间直角坐标系作为桥梁帮助我们理解) 代数理论表达 — 坐标,方程(组) 2. 空间直角坐标系的定义 定义: 过…

Jmeter进阶使用指南-分布式测试

当你需要模拟大量并发用户并测试应用程序的性能时,JMeter的分布式测试功能非常有用。分布式测试允许你使用多个JMeter实例来模拟并发用户,从而提供更高的负载。 下面是一个详细的介绍和讲解分布式测试的步骤: 准备主机和从机: 首…

【代码随想录】Day 51 动态规划12 //待做//(买卖股票冷冻期、买卖股票手续费)

买卖股票冷冻期 https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-with-cooldown/ 买卖股票手续费 https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-with-transaction-fee/

【多思路附源码】2023高教社杯 国赛数学建模C题思路 - 蔬菜类商品的自动定价与补货决策

赛题介绍 在生鲜商超中,一般蔬菜类商品的保鲜期都比较短,且品相随销售时间的增加而变差, 大部分品种如当日未售出,隔日就无法再售。因此, 商超通常会根据各商品的历史销售和需 求情况每天进行补货。 由于商超销售的蔬…

LLM - Model、Data、Training、Generate Agruments 超参解析

目录 一.引言 二.常用参数 ◆ ModelArguments ◆ DataArguments ◆ TrainingArguments ◆ GeneratingArguments 三.代码实现 ◆ Python 代码 ◆ Shell 代码 四.总结 一.引言 LLM 相关训练框架都会引入 ModelArguments、DataArguments、TrainingArguments、Generatin…

MySQL 学习笔记

😀😀😀创作不易,各位看官点赞收藏. 文章目录 MySQL 学习笔记1、DQL 查询语句1.1、基本查询1.2、函数查询1.2.1、单行函数1.2.2、聚合函数 1.3、复杂查询1.3.1、连接查询1.3.2、子查询 1.4、SQL 语句 执行顺序 2、DDL 定义语句2.1、…

F. Selling a Menagerie Codeforces Round 895 (Div. 3)

Problem - F - Codeforces 题目大意:有n个动物,每个动物i有一个害怕的动物a[i],现要卖掉所有动物,每个动物都有价值c[i],如果i在a[i]之前卖掉,就会获得2*c[i]的价值,如果在a[i]之后被卖掉就会获…

垃圾回收 - 分代垃圾回收

分代垃圾回收在对象中导入了“年龄”的概念,通过优先回收容易成为垃圾的对象,提高垃圾回收的效率。 1、新生代对象和老年代对象 分代垃圾回收中把对象分类成几代,针对不同的代使用不同的 GC 算法,我们把刚生成的对象称为新生代对…

UI自动化测试详解

前言 随着智能化信息基础设施的推进,软件开发的进程也不断加快。软件测试工作也逐渐由传统的手工测试向软件自动化测试跨越。 对于很多企业来说,做好软件自动化测试工作已经不仅仅是通过测试工具进行“点点点”,要想找出软件测试过程中的缺…

python 小案例72

import requestsdef fetch_data_from_api(url):response requests.get(url)if response.status_code 200:data response.json()return dataelse:print("Failed to fetch data from API")return None# 使用NASA的API获取每日天文图片 url "https://api.nasa.…

【Springcloud】Actuator服务监控

【Springcloud】Actuator服务监控 【一】基本介绍【二】如何使用【三】端点分类【四】整合Admin-Ui【五】客户端配置【六】集成Nacos【七】登录认证【八】实时日志【九】动态日志【十】自定义通知 【一】基本介绍 (1)什么是服务监控 监视当前系统应用状…

情侣头像微信小程序源码 朋友圈背景小程序源码 动态壁纸微信小程序源码

壁纸和情侣头像,朋友圈素材都可以做,带视频教程。 搭建也不难,纯前端无后台。直接开发者工具调试前端,绑定合法域名,流量主功能也是在前端替换。 无需服务器域名直接上手!!!