二值图像处理 - Binary Image Processing
总览
在应用阈值运算之后,图象只有两个量化级别(quantisation levels):
0 - 低于阈值。
1 - 高于阈值。
如果二值图像需要被进一步处理,则线性滤波器(LPF, HPF等)的应用效率并不高。二值图像的处理需要其他方法。
二值形态学操作 (Binary Morphology)
二值图像处理基于形态学,而形态学又基于集合论(set theory)。二值图像表示为一组有序坐标对(ordered coordinate pairs)。
基础操作
有一系列基础操作:
- Ac: 图像A的补码 complement (反转 inversion)。
- A ∪ B: 图像A和图像B的并集 (union)。
- A ∩ B: 图像A和图像B的交集 (intersection)。
- A - B = A ∩ B c: 图像A 和 图像B 的差集 (difference)。
如果图像B对应于形态过滤器内核(morphological filter kernel),则基本操作可用于定义二值图像处理算法。
腐蚀 (Erosion)
设B为 3 x 3 的全是1的滤波器。
当滤波器访问的9个像素都为1时,则输出像素为1。(pixel-based AND)
膨胀 (Dilation)
当滤波器访问的9个像素中至少其中一个是1,则输出像素为1。(pixel-based OR)
边界提取 (Boundary Extraction)
边界 = 原图像 - 腐蚀一圈的图像
当具有少量简单对象的图像可以被轻松二值化时,此方法比其他边缘检测方法更加计算高效。
开操作 (Opening)
先腐蚀,后膨胀
开操作可用于消除 在单独对象之间 由于噪声产生的错误连接。
原图片 - 开操作之后的图片:能够展示从原始图像中被删除的内容。结果可以用于制造过程中的自动检查。(检查PCB走线等)
闭操作 (Closing)
先膨胀,再腐蚀
闭操作能够用于消除对象内部的单独噪声样本或者细线。
原图片 - 闭操作之后的图片:能够展示从原始图像中被删除的内容。结果可以用于制造过程中的自动检查。(小裂缝,划痕之类的)
连通分量分析 (Connected Component Analysis)
邻点(Neighbor)
输入量 (input): 像素值代表类别标签(class labels)或者强度值(intensity)的图像。
连接组件 (connected component): 连接的组件由具有相同类别标签的连接像素组成。且每一个连接的组件通常被视为对象 (object)。
连通分量分析: 分别标记单独的“对象”。
连通分量标记(Connected Component Labelling - CCL)
如果可以找到一条路径,图像中的两个点"连接"在一起。对于该路径,图像标记的值在整个路径上都相同。
算法
输入: 一个二值图片(前景 foreground/背景 background像素),在图中的所有像素点都是未标记的 (unlabelled)。
输出: 被标记成组件的所有前景像素。
过程:
方法1:Sequential
- 选择图像中任何未标记的像素并为其分配标签。
- 将相同的标签分配给具有相同图像功能值的任何相邻像素。
- 继续标记邻居,直到没有其他邻居可以分配该标签。
- 选择另一个标签和另一个尚未标记的像素,之后继续。
- 如果没有更多未标记的像素点,则算法结束。
方法2:Recursive
- 扫描图像以找到未标记的前景像素,并为其分配新的标签L。
- 将标签L递归地分配给其所有相同单位值的邻点 。
- 如果没有其他未标记像素,则停止。
- 返回步骤1。
四连通结果(4-connectivity)
八连通结果(8-connectivity)
- 连通组件分析通常遵循基于聚类的分割(cluster-based segmentation)来提取对象。
- 四连通和八连通的选择:
- 可能导致不同的数量的物体或者具有不同形状的物体。
- 取决于你的应用。
- 可以在连通组件分析之后应用大小过滤(size filtering)。