形态学图像处理
形态学图像处理
腐蚀和膨胀
腐蚀和膨胀是以集合运算为基础的,因此是非线性运算;而卷积是乘积求和,是线性运算。
腐蚀
- 数学表达:
设 $ A $ 为输入图像,$ B $ 为结构元素。腐蚀操作可以表示为:
$$A \ominus B = \begin{Bmatrix} z \mid B_z \subseteq A \end{Bmatrix}$$
其中:$B_z$ 表示将结构元素 $ B $ 平移到位置 $ z $ - 原理:
- 腐蚀操作会侵蚀前景对象的边界,使物体变小。
- 它通过一个称为结构元素(Structuring Element)的小矩阵在图像上滑动,检查结构元素覆盖的区域。
- 如果结构元素完全包含在前景区域内,则保留中心像素;否则,移除该中心像素。
膨胀
- 数学表达:
设 $ A $ 为输入图像,$ B $ 为结构元素。膨胀操作可以表示为:
$$A \oplus B = \begin{Bmatrix} z \mid (\hat{B_z} \cap A) \neq \emptyset \end{Bmatrix}$$
其中:$B_z$ 表示将结构元素 $ B $ 平移到位置 $ z $ - 原理:
- 膨胀操作会扩展前景对象,使物体变大。
- 它同样使用结构元素在图像上滑动,但条件更为宽松。
- 只要结构元素与前景区域有交集,就将中心像素设置为前景。
注:膨胀要翻转结构元
对偶性
腐蚀和膨胀相对于补集和反射彼此对偶,即
$$ (A \ominus B)^c = A^c \oplus \hat{B} $$
和
$$ (A \oplus B)^c = A^c \ominus \hat{B} $$
其中:
- $(A)^c$ 表示 $A$ 的补集
- $\hat{B}$ 表示 集合 $B$ 的反射,由集合 $B$ 中所有元素相对于原点的反射元素组成的集合,两者关于原点对称。
式一指出,$B$ 对 $A$ 的腐蚀是 $\hat{B}$ 对 $(A)^c$ 的膨胀的补集,反之亦然。
开运算与闭运算
膨胀扩展集合的组成部分,腐蚀缩小集合的组成部分。开运算通常平滑物体的轮廓、断开狭窄的狭颈、消除细长的突出物;闭运算同样平滑轮廓,但与开运算相反的是,它通常弥合狭窄的断裂和细长的沟壑,消除小孔,填补轮廓中的缝隙。
定义
- 开运算
开运算是指先对图像进行腐蚀操作,然后再进行膨胀操作。数学上可以表示为:
$$ A \circ B = (A \ominus B) \oplus B $$ - 闭运算
闭运算是指先对图像进行膨胀操作,然后再进行腐蚀操作。数学上可以表示为:
$$ A \bullet B = (A \oplus B) \ominus B $$
- 开运算
几何解释
- 开运算:
B 对 A 的开运算是 B 的所有平移的并集,以便 B 完全拟合 A。
由下图可以看出,开运算是由两个不相交的子集组成的集合,因为 B 不能拟合 A 的中心位置的狭型段。
- 闭运算:
除了是在边界的外侧平移 B,闭运算的集合说明类似。于是,闭运算是 B 的所有不与 A 重叠的平移的并集的补集。
- 开运算:
对偶性
如同腐蚀和膨胀,开运算和闭运算相对于补集和反射彼此对偶:
$$ (A \circ B)^c = (A^c \bullet \hat{B}) $$
和
$$ (A \bullet B)^c = (A^c \circ \hat{B}) $$其它性质
- 开操作
- $A \circ B$ 是 A 的一个子集(子图像)
- 如果 C 是 D 的一个子集,则 $C \circ B$ 是 $D \circ B$ 的一个子集
- $(A \circ B) \circ B = A \circ B$
- 闭操作
- A 是 $A \bullet B$ 的一个子集(子图像)
- 如果 C 是 D 的一个子集,则 $C \bullet B$ 是 $D \bullet B$ 的一个子集
- $(A \bullet B) \bullet B = A \bullet B$
| 特性 | 开运算 | 闭运算 |
|---|---|---|
| 操作顺序 | 腐蚀 → 膨胀 | 膨胀 → 腐蚀 |
| 主要作用 | 去除小噪声、分离物体、平滑边界 | 填充小孔、连接物体、平滑边界 |
| 适用场景 | 去除前景中的小噪声点 | 填充前景物体内部的小孔 |
击中—击不中变换
击中-击不中变换(Hit-or-Miss Transform)是一种形态学图像处理操作,用于检测图像中符合特定条件的像素。
原理
击中-击不中变换通过两个结构元素来检测图像中的特定模式。这两个结构元素分别是:- 击中模板:定义了要检测的目标形状。
- 击不中模板:定义了目标形状周围的背景区域。
变换的操作步骤如下:
- 击中操作:使用击中模板对图像进行腐蚀操作,保留与模板匹配的前景像素。
- 击不中操作:对图像的补集使用击不中模板进行腐蚀操作,保留与模板匹配的背景像素。
- 逻辑与操作:将击中操作和击不中操作的结果进行逻辑与操作,得到最终的击中-击不中变换结果。
应用
击中-击不中变换常用于图像中的目标检测和模式匹配任务。通过定义适当的击中模板和击不中模板,可以检测到与目标形状完全匹配的部分,同时排除与背景或其他形状相似但不是目标的区域。这种变换可以应用于字符识别、几何形状检测、纹理分析等各种图像处理应用中。
形态学重建
基本概念
- 标记图像 (F):作为重建的起点。
- 模板图像 (G):用于约束重建过程。
- 结构元素:定义连通性,通常在二维应用中使用8连通性。
测地膨胀与测地腐蚀
测地膨胀
测地膨胀是标记图像相对于模板图像的膨胀过程,但膨胀结果受模板图像的限制。- 标记图像 $ F $ 相对于模板图像 $ G $ 的大小为 1 的测地膨胀定义为:
$$ D^1_G(F) = (F \oplus B) \cap G $$ - 标记图像 $ F $ 相对于模板图像 $ G $ 的大小为 $ n $ 的测地膨胀定义为:
$$ D^n_G(F) = D^{1}_G[D^{n-1}_G(F)] $$
这是一个递归过程,每一步都是膨胀后取交集,确保结果受模板图像的限制。
- 标记图像 $ F $ 相对于模板图像 $ G $ 的大小为 1 的测地膨胀定义为:
测地腐蚀
测地腐蚀是标记图像相对于模板图像的腐蚀过程,但腐蚀结果不能小于模板图像。- 标记图像 $ F $ 相对于模板图像 $ G $ 的大小为 1 的测地腐蚀定义为:
$$ E^1_G(F) = (F \ominus B) \cup G $$ - 标记图像 $ F $ 相对于模板图像 $ G $ 的大小为 $ n $ 的测地腐蚀定义为:
$$ E^n_G(F) = E^{1}_G[E^{n-1}_G(F)] $$
这是一个递归过程,每一步都是腐蚀后取并集,确保结果不小于模板图像。
- 标记图像 $ F $ 相对于模板图像 $ G $ 的大小为 1 的测地腐蚀定义为:
灰度形态学
灰度腐蚀与灰度膨胀
- 灰度腐蚀
灰度腐蚀是一种使图像变暗的操作,通过结构元素与图像进行卷积,将每个像素的灰度值替换为其邻域内的最小灰度值。
$$ (f \ominus b)(x, y) = \min_{(i, j) \in b} { f(x+i, y+j) } $$ - 灰度膨胀
灰度膨胀是一种使图像变亮的操作,通过结构元素与图像进行卷积,将每个像素的灰度值替换为其邻域内的最大灰度值。
$$ (f \oplus b)(x, y) = \max_{(i, j) \in \hat b} { f(x-i, y-j) } $$
上式中 $\hat b(c,d)=b(c,d)$ ,结构元相对于原点反射,因此参数中使用 $(-i,-j)$
灰度开运算与闭运算
| 开闭运算 | 特征 |
|---|---|
| 开运算 | 删除小而明亮的细节,同时保留整体灰度级和大而明亮的特征不变 |
| 闭运算 | 删除小而黑暗的细节,同时保留整体灰度级和大而黑暗的特征不变 |
形态学平滑
因为开操作抑制比结构元小的亮细节,不影响暗细节;闭操作抑制比结构元小的暗细节,不影响亮细节,所以通常组合使用这两种运算进行平滑图像和去除噪声。
形态学梯度
膨胀和腐蚀结合图像相减,可得到灰度图像 f 的形态学梯度 g,定义为:
$$ g = (f \oplus b) - (f \ominus b)$$
膨胀粗化图像中的区域,腐蚀收缩图像中的区域,膨胀和腐蚀的差强调区域之间的边界。同质区域不受影响,因此相减运算会消除同质区域。最终得到一幅边缘增强、同质区域被抑制的图像,进而产生“类导数”(梯度)的效果。
顶帽变换和底帽变换
顶帽变换和底帽变换的主要应用之一是,在开运算或闭运算中用一个结构元从图像中图像中删除目标,而不是拟合将被删除的目标。然后,差运算得到一幅仅保留已删除分量的图像。
顶帽变换
顶帽变换,也称为白顶帽变换,主要用于暗背景上的亮目标。其基本原理是将原始图像减去其开运算后的结果。
$$ T_{hat}(f) = f - (f \circ b) $$
顶帽变换的一个重要用途是校正不均匀光线的影响,还常用于增强图像的局部对比度,以突出微小的细节,例如血管、细胞核等。它在医学图像处理和纹理分析中经常被使用。底帽变换
底帽变换,也称为黑底帽变换,主要用于亮背景上的暗目标。其基本原理是将图像进行闭运算后,再将闭运算的结果减去原始图像。
$$ B_{hat}(f) = (f \cdot b) - f $$
粒度测定
- 定义:粒度测定是指确定图像中颗粒的大小分布。
- 方法:用逐渐增大的结构元对图像进行开运算。
- 原理:某个特殊大小的开运算会对包含类似大小颗粒的输入图像的那些区域产生最大影响。对开运算得到的每幅图像计算像素值之和,称其为表面区域,它会随结构元大小的增大而减小,因为开运算会减小图像的亮特征。为了强调连续开运算的变化,对相邻的元素做差,画出差值图形,曲线中的峰值就会指明图像中主要大小颗粒的分布。
纹理分割
图a中有两个纹理区域:右侧的大斑点和左侧的小斑点。我们的目的是根据纹理内容找到两个区域的边界。
感兴趣目标比背景暗,用一个比小斑点大的结构元对图像进行闭运算可以删除小斑点。图b就是用半径为30的圆盘形结构元对输入图像进行闭运算的结果。(小斑点半径近似为25)
再用尺寸大于斑点间距的结构元对图像进行开运算,最终结果会删除斑点的亮间距,只留下暗斑点。图c是用半径为60的圆盘形结构元得到的结果。
再使用一个元素全为 1 且大小为 $3 \times 3$ 的结构元对图c进行形态学梯度运算,给出两个区域的边界如图d。







