(学习笔记,不属个人作品)

数学形态学图像处理

概念

数学形态学是一种基于形状的图像处理理论和方法,数学形态学图像处理的基本思想是选择具有一定尺寸和形状的结构元素度量,并提取图像中相关形状结构的图像分量,以达到对图像分析和识别的目的。

集合运算

集合勿的映射构成的集合, 记作 A^\hat{\mathcal{A}} :

A^={pp=q,qA}\hat{\mathcal{A}}=\{p \mid p=-q, q \in \mathcal{A}\}

集合映射

常见集合运算

结构元素

  • 在二值图像形态学中,结构元素是一个由0值和1值组成的矩阵。

  • 每一个结构元素有一个原点,结构元素中的原点指定待处理像素的位置

  • 结构元素中的1值定义了结构元素的邻域,输出图像中对应原点的值建立在输入图像中相应像素及其邻域像素比较的基础上

  • 结构元素是可以任意大小、任意形状。

结构元素

膨胀(*)

  1. 膨胀是在图像中目标边界周围增添像素,结构元素B对集 合A 的膨胀,记作 AB\mathcal{A} \oplus \mathcal{B}

AB={z(B^)zA}\mathcal{A} \oplus \mathcal{B}=\left\{z \mid(\hat{\mathcal{B}})_{z} \cap \mathcal{A} \neq \varnothing\right\}

  1. 具体步骤:

    结构元素对集合膨胀的过程为,将结构元素关于原点的 映射平移z,集合A与结构元素 B\mathcal{B} 的映射平移 (B^)z(\hat{\mathcal{B}})_{z} 的交集不为空集。换句话说,结构元素对集合膨胀生成的集合是 B\mathcal{B} 的映射平移集合与集合 A\mathcal{A} 相交至少有一个非零元素时, B\mathcal{B} 的原点位置的集合

    膨胀

  2. 作用:在图像中目标边界周围增添像素

腐蚀(*)

  1. 腐蚀是移除图像中目标边界的像素,结构元素 B\mathcal{B} 对集合生 的腐蚀,记作 AB\mathcal{A} \ominus \mathcal{B}

    AB={z(B)zA}\mathcal{A} \ominus \mathcal{B}=\left\{z \mid(\mathcal{B})_{z} \subseteq \mathcal{A}\right\}

  2. 具体步骤

    结构元素对集合腐蚀的过程为,将结构元素 B\mathcal{B} 平移z后仍 包含在集合 A\mathcal{A} 中。换句话说,结构元素 B对集合 A\mathcal{A}腐蚀生成的集合B\mathcal{B} 的平移集合完全包含在集合 A\mathcal{A}中时, B\mathcal{B} 的原点位置的集合。
    腐蚀

  3. 作用:在图像中目标边界周围删除像素

膨胀与腐蚀的对偶性

对图像中目标区域的膨胀(腐蚀)运算相当于对图像中背景区域的腐蚀(膨胀)运算,即:结构元素B对集合 A\mathcal{A}腐蚀的 补集 等价于映射B^\hat{\mathcal{B}}对补集 Ac\mathcal{A}^{c} 的膨胀。
腐蚀运算和膨胀运算的对偶性可表示为如下的等式:

(AB)c=(AcB^)(AB)c=(AcB^)\begin{array}{l} (\mathcal{A} \ominus \mathcal{B})^{c}=\left(\mathcal{A}^{c} \oplus \hat{\mathcal{B}}\right) \\ (\mathcal{A} \oplus \mathcal{B})^{c}=\left(\mathcal{A}^{c} \ominus \hat{\mathcal{B}}\right) \end{array}

B^\hat{\mathcal{B}}为B的映射)

开运算

开运算为先腐蚀后膨胀的运算,结构元素 B\mathcal{B} 对集合A的开 运算,记作 AB\mathcal{A} \circ \mathcal{B}

AB=(AB)B\mathcal{A} \circ \mathcal{B}=(\mathcal{A} \ominus \mathcal{B}) \oplus \mathcal{B}

  • 作用

    开运算能消除小尺寸的目标和细小的突出部分,断开细小的桥接部分而分离目标区域、并在不明显改变目标区域面积的条件下平滑较大目标边界的作用。

闭运算

闭运算为先膨胀后腐蚀的运算,结构元素 B\mathcal{B} 对集合A的闭 运算,记作 AB\mathcal{A} \bullet \mathcal{B}

AB=(AB)B\mathcal{A} \bullet \mathcal{B}=(\mathcal{A} \oplus \mathcal{B}) \ominus \mathcal{B}

  • 作用

    闭运算能填补目标区域内部小尺寸的孔洞和细窄的缺口、桥接狭窄的断裂部分而使目标区域连通、并在不明显改变目标区域面积的条件下平滑较大目标边界的作用

开闭运算对偶性

开运算与闭运算也具有对偶性,可表示为如下的等式:

(AB)c=(AcB^)(AB)c=(AcB^)\begin{array}{l} (\mathcal{A} \circ \mathcal{B})^{c}=\left(\mathcal{A}^{c} \bullet \hat{\mathcal{B}}\right) \\ (\mathcal{A} \bullet \mathcal{B})^{c}=\left(\mathcal{A}^{c} \circ \hat{\mathcal{B}}\right) \end{array}

开闭运算

速记:

  • 闭(闭运算\bullet)、先膨胀(\oplus )、大致膨胀的作用
  • 开(开运算\circ)、先腐蚀(\ominus)、大致腐蚀作用

膨胀腐蚀编码实现

  • 输入输出:原始图像X,形态学输出图像Y

  • Y(i,j)的计算

    对于X,取以(i,j)为中心的结构元素B
    根据结构元素B与X包含目标的集合运算,来计算Y(i.j)

  • 操作对象

    • 原始图像X,形态学输出图像Y
    • 黑白二值图像:白与黑,对应像素值1与0
  • 结构元素B, X包含的目标

    • 黑白二值图像的一部分
    • 黑白二值图像的白色部分,对应像素
  1. 膨胀
    WeightWin = Win.* B
    sumW = sum(WeightWin(:))
    if sumW>0
    Y(i,j) = 1
    else
    Y(i,j) = 0
    end

大致思路:计算结构元素B与其平移后占据的窗口位置Win中的元素卷积,计算最终卷积是否大于1,大于就表名有交集,则该原点处Y(i,j) = 1。

  1. 腐蚀

    sumB = sum(B(:))
    WeightWin = Win.* B
    sumW = sum(WeightWin(:))
    if sumW==sumB
    Y(i,j) = 1
    else
    Y(i,j) = 0
    end

大致思路:计算结构元素B的1的个数sumB,然后B与其平移后占据的窗口位置Win中的元素卷积,计算最终卷积结果是否等于sumB,等于就等于B被包含,则该原点处Y(i,j) = 1。

二值图像中图像去噪

在二值图像中,噪声为细小空洞或者目标点。

开运算:消除细小目标和突出部分,达到去噪声
闭运算:填补细小空洞和细窄缺口,达到去噪声

  • 具体方法:先开后闭

A~=(AB)B\tilde{\mathcal{A}}=(\mathcal{A} \circ \mathcal{B}) \bullet \mathcal{B}

二值图像去噪

二值边界提取

结构元素 B\mathcal{B} 对集合 A\mathcal{A} 腐蚀的作用是收缩目标区域,集合A\mathcal{A} 与腐蚀集合 AB\mathcal{A} \ominus \mathcal{B} 的差集也就是腐蚀运算移除的目标边界元素构成 A\mathcal{A} 的边界集合,边界 β(A)\beta(\mathcal{A}) 提取的过程可表示为

β(A)=A(AB)\beta(\mathcal{A})=\mathcal{A}-(\mathcal{A} \ominus \mathcal{B})

二值图像边缘提取

二值空洞填充

孔洞是指由连通的边界包围的背景区域。孔洞填充的形态学算法是以集合的膨胀补集交集的组 合形式定义的。设 A表示边界集合, B表示结构元素, 给定边界内的一个点 p,p^{\ominus}, 孔洞填充的过程可表示为

Xk=(Xk1B)Ac,X0={p},k=1,2,\mathcal{X}_{k}=\left(\mathcal{X}_{k-1} \oplus \mathcal{B}\right) \cap \mathcal{A}^{c}, \mathcal{X}_{0}=\{p\}, \quad k=1,2, \cdots

fill1

fill2

fill3

fill4

二值图像形态学运算

二值图像形态学运算

灰度图像中腐蚀和膨胀

灰度膨胀是计算结构元素邻域对应像素的灰度最大值,灰度腐蚀是计算结构元素邻域对应像素的灰度最小值。

腐虾 (Erosion)
灰度图像的腐蚀运算的数学定义为:

(fb)=max{f(sx,ty)+b(x,y)(sx,ty)Df;(x,y)Db}(f \oplus b)=\max \left\{f(s-x, t-y)+b(x, y) \mid(s-x, t-y) \in D_{f} ;(x, y) \in D_{b}\right\}

即加上权重后取最大值。

膨胀 (Dilation)
数学定义:

(fb)=min{f(sx,ty)b(x,y)(sx,ty)Df;(x,y)Db}(f \otimes b)=\min \left\{f(s-x, t-y)-b(x, y) \mid(s-x, t-y) \in D_{f} ;(x, y) \in D_{b}\right\}

即减去权后取最小值。

在灰度形态学中,一般选择平坦的结构元素。所谓"平坦",就是指结构元素的高度为零, b的值全为0,则上面两个公式可以重写为:

(fb)=max{f(sx,ty)(sx,ty)Df;(x,y)Db}(fb)=min{f(sx,ty)(sx,ty)Df;(x,y)Db}\begin{array}{l} (f \oplus b)=\max \left\{f(s-x, t-y) \mid(s-x, t-y) \in D_{f} ;(x, y) \in D_{b}\right\} \\ (f \otimes b)=\min \left\{f(s-x, t-y) \mid(s-x, t-y) \in D_{f} ;(x, y) \in D_{b}\right\} \end{array}

DfD_{f} 为结构元素在原图中占据的窗口位置。DbD_b 为结构元素范围。

常用matlab函数

s= strel('type',size)%结构元素 常见type 'disk' 'circle' 'square'
imerode(I,s) %腐蚀
imdilate(I,s) %膨胀
imopen(I,s)%开运算
imclose(I,s)%闭运算
e1 =imfill(e,'holes');%空洞填充