形态图像处理

news/2024/7/21 3:57:20 标签: 图像处理, 人工智能, 计算机视觉

形态图像处理

预备知识

  • 反射、平移
  • 结构元

腐蚀和膨胀

  • 腐蚀
    • 将 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.niftyadmin.cn/n/5015711.html

相关文章

Unity 从0开始编写一个技能编辑器_01_分析需求

入职以来一直很想实现一个技能编辑器,在积累了一些经验以后,决定利用ScriptableObject开发一个,在此记录 1.简单的需求分析 在游戏开发中,技能系统是一个至关重要的组成部分。技能决定了游戏角色可以执行的各种动作,例…

csp-j模拟赛1总结

文章目录 T1T2T3结语 尾声 快csp考试了得多刷题啊… 题海战术,启动(玩OI玩的) 咳咳,进入正题. T1 T1 水题,小学数学即可搞定,话不多说,上代码: #include <iostream> using namespace std; int main(){int n,t;cin>>n>>t;bool y0;unsigned long long int nu…

【LeetCode: 210. 课程表 II:拓扑排序+图】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

外传-Midjourney的局部重绘功能

今天在抄袭。。。啊不&#xff0c;借鉴 midjourney 官网教程的时候&#xff0c;发现多了一个 局部重绘的功能&#xff0c;意外发觉还不错&#xff0c;分享一下用法。 先给大家说一下&#xff0c;我这段时间都在学习 SD&#xff0c;局部重绘是基操&#xff0c;而 MJ 一直是次次…

【ccf-csp题解】第3次csp认证-第三题-集合竞价-枚举

题目描述 思路讲解 本题数据量较小&#xff0c;所以只需要让时间复杂度控制在O&#xff08;n^2&#xff09;就可以满分通过&#xff0c;难度较低 可以用结构体数组事先存下每一个记录的信息&#xff0c;结构体如下&#xff1a; 其中bool值del可以表示这份记录是否已经被删 如…

怎样吃透一个java项目?

前言 对于刚开始看视频敲代码&#xff0c;最忌讳的便是一上来就完全照着视频做&#xff0c;这么做就算完完全全的跟着视频做出来一个项目&#xff0c;始终都无法将里面具体的知识化为己有&#xff0c;单纯来说只是简单的复刻&#xff0c;视频的作者本身是不会对他在做该项目过…

代码随想录训练营第47天休息日|210.课程表II

代码随想录训练营第47天休息日|210.课程表II 210.课程表II思路代码 总结 210.课程表II 思路 拓扑排序 将入度为0的节点放入队列&#xff0c;将队列中点的入度置为-1&#xff0c;当前访问点的后继入度减1&#xff0c; 迭代直至没有入度为0的节点 仍存在入度大于0的节点&#x…

使用React18+Ts创建项目

1. 创建项目 首先&#xff0c;使用create-react-app工具创建一个新的React项目&#xff1a; npx create-react-app 项目名 --template typescript2. 安装依赖项 使用脚手架创建项目后&#xff0c;自带react-dom等依赖项&#xff0c;但react中的所用的路由方法是react-router…