Skip to content

形态学图像处理

数学形态学 (1964)

铁矿 岩相定量分析 Hit or miss

基础知识

集合论中的概念

  • 集合 A,B
  • 元素 a,b
  • 集合和元素的关系 aA,bA
  • 集合关系
    • 子集
    • 并集
    • 交集
      • AB=ϕ(互斥 or 不相容)
    • 补集 Ac={w|wA}
    • 差集 AB=ABc
  • 位移 Az=(z1,z2) 位移: (A)z(A)z={y|y=a+z,aA}
  • 映像 A 的映像 A^A^={w|w=a,aA}

结构元

用于探测图像的小集合或子图

  • 原点(可以包括在结构元中,也可以不)
  • 对称且未显示原点,假定在对称中心
  • 对图像操作时要求结构元素是矩阵,添加最少的背景元素实现
python
# 1. 矩形结构元 (MORPH_RECT)
rectse = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))
# 2. 十字/菱形结构元 (MORPH_CROSS)
crose = cv2.getStructuringElement(cv2.MORPH_CROSS, (5, 5))
# 3. 椭圆/圆形结构元 (MORPH_ELLIPSE)
ese = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (5, 5))

膨胀和腐蚀

膨胀 dilate

A 用 B 来膨胀: AB

AB={x|(B^)xAϕ}

腐蚀 erosion

A 用 B 来腐蚀: AB

AB={x|(B)xA}

OpenCV

python
cv2.dilate(src, kernel, anchor=(-1,-1),iterations=1,borderType=cv2.BORDER_CONSTANT) # or erode

开操作和闭操作

开操作 opening

AB=(AB)B

在边界内转动 B 中的点能达到的 A 的边界的最远点

闭操作 close

AB=(AB)B

在边界外转动

open_close

OpenCV

python
cv2.morphologyEx(src, op, kernel, anchor=(-1,-1), iteration=1)

击中或击不中变换

AB=(AB1)(AcB2)

B 目标和目标背景构成的集合

要求: 结构元对象间不相交

python
cv2.morphologyEx(src,cv2.MORPH_HITMISS,kernel,anchor=(-1,-1))
  • kernel: 前景1 背景-1 任意0 (np.int32)

基本的形态学算法

  • 边界提取: β(A)=A(AB)

  • 区域填充: Xk=(Xk1B)Ac     k=1,2,3,

    • 给定区域内一点,采用种子填充

    • 对于多个区域填充时,需要指定初始点

      fill

  • 细化:

    AB=A(AB)=A(AB)cB={B1,B2,B3,,Bn}

    refinement

    • 执行一遍后还要继续细化,直到结果不发生变化
  • 联通区域提取

    Xk=(Xk1B)A,   k=1,2,3where X0=seed pixel p

    connect

    • Xk=Xk1 时迭代结束
  • 凸壳 (Convex Hull)

    • 任意集合 S 的凸壳是包含 S 的最小凸集
    Xki=(Xk1iBi)A,   i=1,2,3,4, k=1,2,3

    convex

    • Xki=Xk1i 时迭代收敛,Di=Xki
    • A 的凸壳 C(A)=i=14Di

灰度级图像扩展

  • 表示
    • 输入图像 f(x,y)
    • 结构元素 b(x,y)
  • 膨胀fb(s,t)=max{f(sx,ty)+b(x,y)|(sx),(ty)Df;(x,y)Db}
  • 腐蚀fb(s,t)=min{f(s+x,t+y)b(x,y)|(sx),(ty)Df;(x,y)Db}
  • 开操作: 球在下侧滚动,去除较小的明亮细节
  • 闭操作: 球在上侧滚动,去除较小的暗细节

基本形态学算法

  • 形态学平滑 g=(fb)b
  • 形态学梯度 g=(fb)(fb)
  • 顶帽变换 (亮背景上的暗物体) That(f)=f(fb)
  • 底帽变换 (亮背景上的暗物体) Bhat(f)=(fb)f
  • 粒度测定
    1. 采用尺寸逐渐增大的结构元素对图像进行开运算;
    2. 计算原始图像与各次开运算结果之间的差值图像;
    3. 对差值图像进行归一化处理,根据归一化结果绘制颗粒尺寸分布。
  • 纹理分割