形态图像处理

形态图像处理

预备知识

  • 反射、平移
  • 结构元

腐蚀和膨胀

  • 腐蚀
    • 将 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.rhkb.cn/news/127506.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Solidity 小白教程:12. 事件

Solidity 小白教程:12. 事件 这一讲,我们用转账 ERC20 代币为例来介绍solidity中的事件(event)。 事件 Solidity中的事件(event)是EVM上日志的抽象,它具有两个特点: 响应&#x…

探索云计算和大数据分析的崛起:API行业的机遇与挑战【电商大数据与电商API接入】

I. 引言 随着云计算和大数据分析技术的快速发展,企业和个人对数据分析和处理的需求不断增加。在这个信息爆炸的时代,数据已成为企业决策和战略规划的重要基础。云计算提供了强大的计算和存储能力,使得大规模数据的处理和分析变得更加容易和高…

科技成果鉴定测试报告一般包含哪些测试内容?

软件测评报告 一、科技成果评价是需要做第三方软件测评报告,一般是证明技术指标点是否完善,覆盖主要申报内容,应用软件项目科技成果鉴定测试内容: (一)是否完成合同或计划任务书要求的指标; …

List常见面试问题

List的特点有哪些? Java中的List是一种存放有序的、可以重复的数据的集合,它允许重复元素的存在。List中的元素都有对应的一个序列号(索引)记录着元素的位置,因此可以通过这个序列号来访问元素。 ‍ Java中集合有哪些? Java中…

Ubuntu tmux 默认安装 快捷键

安装 sudo apt install tmux 启动tmux tmux 注意下方已显示[0] 0:bash 左右分屏 依次输入两组快捷键:Ctrlb, Shift5 即:% 上下分屏 依次输入两组快捷键:Ctrlb, Shift 即:" 切换窗口(注意:鼠标点击没有切换效果&#x…

【LeetCode算法系列题解】第61~65题

CONTENTS LeetCode 61. 旋转链表(中等)LeetCode 62. 不同路径(中等)LeetCode 63. 不同路径 II(中等)LeetCode 64. 最小路径和(中等)LeetCode 65. 有效数字(困难&#xff…

Neo-reGeorg隧道搭建

目录 Neo-regeorg前言 环境搭建 具体使用 kail安装Neo-reGeorg kail内生成webshell并设置密码 kail与win10连接 windows server内打开服务 kail虚拟机访问windows server以及所在的内网 Neo-regeorg前言 regeorg为reDuh的升级版,主要功能就是把内网服务器的…

IJ中PHP环境的搭建和使用教程

目录 目录 前言 思维导图 1,PHP环境下载 1.下载链接 2.进行安装 3,自定义路径 4.进行相关的一些库的选择下载 2,进行IJ中PHP环境的配置 2.1,下载PHP插件 2.2,下载过程中的注意事项 3,为什么这么做呢? 3.1,原因 3.2,进行代码…

从0开始的ios自动化测试

最近由于工作内容调整,需要开始弄ios自动化了。网上信息有点杂乱,这边我就按我的实际情况,顺便记录下来,看是否能帮到有需要的人。 环境准备 安装tidevice pip3 install -U “tidevice[openssl]”它的作用是,帮你绕…

企业架构LNMP学习笔记28

企业架构LNMP高可用负载均衡服务器之Nginx: 1)能够描述负载均衡的作用;loadbalance LB。 2)能够了解负载均衡常见的实现方式; 3)能够使用nginx实现负载均衡; 4)能够描述nginx的常…

上海控安携汽车网络安全新研产品出席AUTOSEMO“恒以致远,共创共赢”主题研讨会

8月31日,AUTOSEMO“恒以致远,共创共赢”主题研讨会在天津成功召开。本次大会由中国汽车工业协会软件分会中国汽车基础软件生态标委会(简称:AUTOSEMO)与天津市西青区人民政府联合主办。现场汇聚了100余位来自产学研政企…

如何进行SEO优化数据分析?(掌握正确的数据分析方法,让您的网站更上一层楼!)

在互联网时代,SEO优化已经成为了每一个网站运营者必备的技能。而在SEO优化中,数据分析更是至关重要的一环。在本文中,我们将会详细介绍如何正确的进行SEO优化数据分析,让您的网站更上一层楼! 数据分析的重要性 数据分…

网络原理(二)TCP的可靠传输

网络原理(一)目录 网络原理应用层传输层先说UDP(不可靠传输)重点说明TCP(可靠传输)一、确认应答二、超时重传三、链接管理建立连接断开链接 四、滑动窗口五、流量控制&am…

rocky(centos) 安装redis,并设置开机自启动

一、下载并安装 1、官网下载Redis 并安装 Download | RedisRedisYou can download the last Redis source files here. For additional options, see the Redis downloads section below.Stable (7.2)Redis 7.2 …https://redis.io/download/ 2、上传下载好的redis压缩包到 /…

k8s 搭建基于session模式的flink集群

1.flink集群搭建 不废话直接上代码,都是基于官网的,在此记录一下 Kubernetes | Apache Flink flink-configuration-configmap.yaml apiVersion: v1 kind: ConfigMap metadata:name: flink-configlabels:app: flink data:flink-conf.yaml: |jobmanager…

【Vue篇】Vue 项目下载、介绍(详细版)

如何创建一个vue项目?首先要有环境,如下: nodejs vue-cli如果有以上的工具就直接跳过安装教程 【Vue篇】mac上Vue 开发环境搭建、运行Vue项目(保姆级) 创建vue项目 选择一个位置,你要存放项目的路径&…

海保人寿:开源治理保障科技与保险融合,助力保险业务数字化改革创新

海保人寿保险股份有限公司(简称“海保人寿”)是第一家在海南筹建开业的全国性保险机构。从成立之初,便深耕于数字化创新,在自身多业务环节中实现数字化转型,依托优秀的研发体系与数智融合的业务系统,不断推…

RocketMQMessageListener使用错误问题分析与排查

背景 RocketMQ与SpingBoot相结合可以大大降低我们开发的复杂度,但是最近在一个新项目中使用RocketMQMessageListener 监听消息,导致消费者启动失败,提示该消费组已经被创建了,请重新申请一个消费者组。 Caused by: org.apache.r…

【深度学习】 Python 和 NumPy 系列教程(三):Python容器:1、列表List详解(初始化、索引、切片、更新、删除、常用函数、拆包、遍历)

目录 一、前言 二、实验环境 三、Python容器(Containers) 0、容器介绍 1、列表(List) 1. 初始化 a. 创建空列表 b. 使用现有元素初始化列表 c. 使用列表生成式 d. 复制列表 2. 索引和切片 a. 索引 b. 负数索引 c. 切…

龙迅LT86102UX HDMI一进二出,支持分辨率4K60HZ

龙迅LT86102UXE 1. 描述 龙迅LT86102UX HDMI2.0 分路器具有符合 HDMI2.0/1.4 规范的 1:2 分路器、最大 6Gbps 高速数据速率、自适应均衡 RX 输入和预强调的 TX 输出,支持长电缆应用,板载无 XTAL,可节省 BOM 成本。 LT86102UX HDM…