美文网首页
形态学算法

形态学算法

作者: 此间不留白 | 来源:发表于2020-05-20 22:58 被阅读0次

上海交通大学 医学图像处理技术

形态学的二值运算

形态学二值运算包括膨胀,腐蚀,开运算和闭运算基本方法,如下图所示,膨胀运算和闭运算的效果总体上对图像而言是一个区域增长的过程,而腐蚀和开运算是一个区域减少的运算。


Hit and Miss

Hit and Miss 算法中文称之为“击中击不中变换”,其数学表达式如下所示:

F \otimes K=(F \ominus K_1) \cap(F^c \ominus K_2)^c
其中 K_1 \cap K_2 = \oslash ,且 K_1 \in K,K_2 \in K

以上计算方式可以认为是对前景进行腐蚀运算,再对背景进行腐蚀运算,最后再求交集,得到Hit and Miss的结果,其运算结果如下所示:


这是一个在前景上fit,背景上Miss的过程,可以用来求取图像上的一些边缘点,顶点或者是一些孤立点,如下图所示,通过Hit and Miss算法能够得到齿轮的顶点。



Hit and Miss算法的实现过程可以分为以下几个步骤:

  • 以原点为中心,将原图像和SE(Structure Element,结构化要素)进行叠加;
  • 比较被SE覆盖的原图像的像素点和SE的像素点进行比较:
    • 如果SE的前景和背景的像素点和被SE覆盖的原图像的前景和背景的像素点match,则将被SE所覆盖的原图的像素点设置为前景颜色;
    • 如果这些像素点之间不match,则将被SE所覆盖的原图像的像素点设置为背景色。

如下图所示,利用四个表示左上角,右上角,左下角和右下角的SE对原图进行Hit and Miss运算,可以实现一个角度检测的功能。


Pattern Spectrum

Pattern Spectrum用来描述粒度尺寸的密度情况,简单来说,也就是表示图像中物体尺寸的分布情况。
对于图像F,利用一系列大小不同的SE(记为r_ik)求取Pattern Spectrum(记为PS_{r_ik}(F))的表达式,如下所示:

PS_{r_ik}(F) = \left\{\begin{matrix} &Card((F \circ r_iK) - (F \circ r_{i+1} K)) \ \ \ if \ \ \ i>0\\ &Card((F \bullet r_{-i}K) - (F \bullet r_{-i-1} K)) \ \ if \ \ \ i<0\\ \end{matrix}\right.

其中Card表示对当前物体尺寸的数量进行计数。

Pattern Spectrum的计算过程可以描述为以下几个步骤:

  • 对原图像以合适的SE大小进行开运算;
  • 将原图像与SE进行开运算的图像进行相减,得到一个尺寸转换距离(Distance Size Transformation,DST);
  • 在二值图像中,计算物体像素的数量,在灰度图像中,将所有的灰度值相加;
  • 将以上求得的数量放在Pattern Spectrum所对应的第n个Spectrum中。(n 从0开始);
  • 将开运算之后得到的图像作为新的原始图像,同时n增加1,重复以上四个步骤。

注意:上述步骤的循环过程中,随着i的增加,结构化元素SE的尺寸也会随之扩展,这意味着图像中尺寸较小的目标将会在初始阶段被过滤,而随着SE的扩张,图像中尺寸越来越大的目标也会逐渐消失。

  • 最后,当图像中的所有尺寸的目标都被抹去时,停止整个计算过程。

Pattern Spectrum的应用实例如下所示,可以看出,对一个包含不同大小目标的图像而言,随着Pattern Sperctrum过程,利用尺寸不断扩展的SE进行开运算,图像中的物体会根据尺寸大小的不同被逐渐抹去。


最后,通过Pattern Spectrum可以得到图像中不同尺寸目标的分布情况,如下图所示:



Pattern Spectrum不仅可以用来分析图像中不同尺寸目标的分布情况,而且还可以用来分析目标的形状,如下图所示,数字“3”和“5”在形状上具有相似性,所以其Pattern Spectrum的波形也具有相似性。


Recursive Dilation

对一副图像进行多次dilatio的过程称之为recursive dilation,其定义如下所示:


将结构化要素定义为Recursive Dilation 的base
Rescursive Dilation会构造一系列形状相同,尺寸不同的SE
如下图所示,用菱形和正方形的SE分别进行Recrusive Dilation会形成形状相同,大小不同的一系列SE,而利用菱形和正方形的SE交替地进行Recursive Dilation 会得到一个近似圆形的SE.

Recursive Erosion

与Recursive Dilation 相对应的一种形态学算法是Recursive Erosion,对一副图像实现递归腐蚀的算法,其数学定义公式如下:

当对图像中的目标实现Recursive Erosion时,目标的尺寸会逐渐减小,直到完全消失。

Recursive可以用来实现图像分割,如下图所示,对一副图像执行Recursive Erosion时,图像的中的目标会逐渐缩小,相连的区域会逐渐分离。


Distance Transform

对一副二值图像Rescursive Erosion,每一次Erosion都会抹去图像中的一些像素点,按照Rescursive Erosion的操作,将每次通过Erosion抹去的像素点标记为Erosion的次数,则可以将二值图像转换为灰度图像,此过程被称之为Distance Transform,具体如下图示例所示:


为了更加直观地理解Distance Transform的过程,整个Distance Transform的过程如下图所示:


Distance Metrics

按照SE的不同,Distance Metrics可以分为以下三类:

  • Euclidean Distance
    D_{Euclid} = \sqrt{(x_2-x_1)^2+(y_2-y_1)^2}
    可以很容易的看出,Euclidean Distance 的公式跟圆有关,所以Euclidean Distance的SE是一个圆形结构。
  • City Block Distance(N_8)
    D_{City} = |x_2-x_1|+|y_2-y_1|

City Block Distance的实现,可以从公式中看出,用到了矩形的SE,也就是一个8领域SE,其实现效果如下:


  • Chessboard Distance(N_4)
    D_{chess} =\max(|x_2-x_1|,|y_2-y_1|)
    也可以看出,Chessboard Distance的SE结构是菱形,是一个4邻域关系,其实现效果如下图所示:

一些DIstance Transform的效果图如下图所示:


Skeleton

通过上述 Distance Transform的效果图可以看出,通过Distance Transform的转换,得到的效果图中,距离图像边缘最远的点,中间会形成一条近似于白色的线,这些白色的线,在形态学中,被定义为Skeleton,如下图所示:


完全拟合前景区域内的双切圆中心的轨迹形成的Skeleton,也可以看作是距离图像边缘最远处的点构成的拓扑
  • Skeleton 是一个不断减去二值图像中前景的过程,此过程保留前景区域拓扑结构(范围和连通性)的同时,丢弃掉大部分原始区域的前景像素。

Skeleton的实现,用数学公式可以描述为一下两个步骤:

  • 根据所选SE的大小,得到一系列Skeleton的子集
    S_i(F)=(F \ominus r_iK)-[(F \ominus r_iK) \circ K] \ \ 其中, i=0,1,2…,n
    其中,r_iK表示一系列尺度不同的SE
  • 对得到的一系列SKeleton子集进行求并集:
    S(F) = \bigcup_{i=0}^{n}S_i(F)

通过Erosion可以得到一副图像的Skeleton,那么,如果知道Skeleton过程中的一系列r_iK和Skeleton子集 S_{i}(F),那么通过与Erosion相反的运算Dilation,可以将Skeleton恢复成原图,这一过程称之为 Skeleton Reconstruction其数学定义如下图所示:
F = \bigcup_{i=0}^{n}S_i(F) \oplus r_iK
为了更形象地理解 Skeleton和Skeleton Reconstruction 的实现过程,有如下示例:

如上图,通过Distance Transform可以得到图像中关于像素的一组局部8领域最大值(局部最大值),只要将这些局部最大值提取出来,就得到了原图的Skeleton

而将Skeleton 恢复成原图的过程,可以用下图表示



如上图,Skeleton Reconstruction的过程与求Distance Transform的过程想反,可以表述为,先对SE的size为3的像素点进行Dilation,再对SE的size为2的像素点进行Dilation,最后对SE的size为1的点进行Dilation,最后实现Skelton Reconsturction

相关文章

  • 灰度形态学算法的实现

    前言 灰度形态学算法中介绍了灰度形态学算法的相关原理,本篇文章将会利用python结合numpy和opencv实现...

  • 形态学算法

    上海交通大学 医学图像处理技术 形态学的二值运算 形态学二值运算包括膨胀,腐蚀,开运算和闭运算基本方法,如下图所示...

  • 膨胀和腐蚀

    膨胀和腐蚀这两种操作是形态学处理的基础,许多形态学算法都是以这两种运算为基础的. ① 膨胀 是以得到B的相对与它自...

  • 博客收集

    1. 图像处理: 图像处理基本算法-形态学OpenCV-Pythonimage fusion 2. 图像数据: I...

  • 二值形态学算法的实现

    前言 在二值形态学的学习过程中,已经学习了二值形态学算法的基本理论知识,本篇文章将会利用Python实现有关二值形...

  • Spark学习(九):分布式矩阵

    十余天没有学习Spark了,不是我在偷懒,而是前段时间一直在研究形态学算法提取波形的问题。现在算法差不多搞定啦,但...

  • 灰度形态学基本运算

    上海交通大学 医学图像处理 与二值形态学相对应另一种形态学运算是灰度形态学。灰度形态学与二值形态学相比,不仅在图像...

  • 腐蚀与膨胀---OpenCV-Python开发指南(18)

    什么是形态学 要了解腐蚀之前,我们需要了解一个概念:形态学。 形态学,又名数学形态学(Mathematical M...

  • 大米个数opencv

    算法思路: 1图片灰度化 2ostu阈值分割 3形态学处理,去除细小噪声 4使用canny轮廓提取,根据面积大小作...

  • 形态学滤波

    形态学滤波基本操作 形态学本来是生物中的一个概念,但是对于图像处理来说,形态学指的是数学方面的形态学滤波,特别是对...

网友评论

      本文标题:形态学算法

      本文链接:https://www.haomeiwen.com/subject/xxcinhtx.html