基于宽度约束的二值图像区域标记系统
项目简介
本项目设计并实现了一种针对二值图像的智能区域标记算法。与传统的仅依赖面积或周长进行连通域分析的方法不同,该系统引入了
宽度几何约束机制。系统旨在解决在复杂背景下提取特定粗细目标(如血管、裂缝、特定宽度的纤维或工业零部件)的难题。
程序通过合成测试数据验证算法,能够自动识别图像中的连通分量,利用“骨架-距离变换”融合算法精确估算每个区域的平均宽度,并依据用户设定的阈值区间自动过滤过细的噪声或过粗的块状物,最终输出可视化的标记结果及详细的几何统计数据。
功能特性
- 合成数据生成:自动生成包含极细线条、目标条状物、弯曲路径、大面积块状物及椒盐噪声的400x400测试图像,用于算法验证。
- 高精度宽度估算:采用中轴线(骨架)结合欧氏距离变换的方法,相比单纯的面积/周长比计算,能更准确地反映物体的形态宽度。
- 智能区域筛选:支持设置最小和最大宽度阈值(像素单位),自动保留符合“中等厚度”特征的区域。
- 详细的统计分析:并在控制台输出每个连通域的ID、面积、估算宽度及判定结果(ACCEPT/REJECT)。
- 多维可视化展示:提供包含原始图、距离场、骨架提取、宽度热力图、筛选结果及ID标注的综合结果面板。
系统要求
- MATLAB R2016b 或更高版本
- Image Processing Toolbox(图像处理工具箱)
核心算法与实现逻辑
本项目在 main 函数中实现了完整的处理流程,具体步骤如下:
1. 数据模拟与预处理
程序首先创建一个全黑背景,并在其上绘制五类具有代表性的几何形状:
- 极细线条:宽度约2px,用于测试下限过滤。
- 目标物体A:宽度约15px的矩形条,应被保留。
- 目标物体B:宽度约10px的弯曲路径,测试非直线目标的宽度检测能力,应被保留。
- 超大块状物:宽度大于50px,用于测试上限过滤。
- 随机噪声:模拟椒盐噪声,应被过滤。
- 预处理:生成的图像经过孔洞填充操作,确保连通域的完整性。
2. 下一代宽度估算技术
程序摒弃了简单的形态学腐蚀估算,转而使用更为精确的“距离变换+骨架提取”策略:
- 距离变换:计算前景中每个像素点到最近背景点的欧氏距离。距离图中的峰值通常对应物体的一半宽度。
- 骨架提取:利用形态学操作提取物体的中轴线(Skeleton),并进行去毛刺处理以提高主干提取的稳定性。
- 宽度计算:对于每一个独立的连通域,提取其骨架覆盖路径上的距离变换值。取这些距离值的平均值并乘以2,从而获得该区域的“特征宽度”。针对无骨架的微小噪点,采用区域内最大距离的2倍作为兜底估算。
3. 条件筛选与遍历
- 利用
bwlabel 分离所有连通分量。 - 遍历每个连通域,计算其特征宽度。
- 应用逻辑判断:当 5.0 <= 宽度 <= 25.0 时,判定为有效目标(ACCEPT),否则拒绝(REJECT)。
- 记录符合条件区域的质心(Centroid)坐标以便后续可视化。
4. 结果可视化
程序最终生成一个包含6个子图的窗口,展示算法的中间过程与最终结果:
- 原始二值图像:显示模拟生成的输入数据。
- 欧氏距离变换 (DT):以伪彩色热力图显示像素到背景的距离分布。
- 形态学骨架提取:将提取的绿色骨架叠加在红色原图上,验证中轴线提取的准确性。
- 骨架处宽度估算:仅在骨架路径上显示宽度值的稀疏热力图,直观展示宽度采样点。
- 筛选结果:滤除噪声和不合规物体后,将保留的区域转换为RGB彩色标签图。
- 目标索引统计:在筛选结果上叠加文本标签,显示被保留目标的ID编号及计算出的具体宽度值。
关键函数解析
- bwdist:执行二值图像的距离变换,是宽度计算的数学基础,计算每个像素到最近零值像素的距离。
- bwmorph:主要使用其
'skel' 选项提取无限细化的骨架,以及 'spur' 选项去除骨架分支末端的短毛刺,确保宽度采样集中在物体主干。 - bwlabel:用于标记二值图像中的连通分量,从而实现对每个独立物体的单独分析。
- imfill:通过
'holes' 参数填充二值图像中的孔洞,防止物体内部空洞影响距离变换和拓扑分析。 - regionprops:用于获取连通域的几何属性,本代码中主要用于获取目标区域的质心坐标,用于在结果图中进行文本标注。
- label2rgb:将标记矩阵转换为伪彩色图像,便于人眼区分不同的独立区域。
使用方法
- 确保MATLAB已安装图像处理工具箱。
- 直接运行
main 函数。 - 观察控制台输出的详细统计表格,了解每个区域的分析数据。
- 查看弹出的图形窗口,分析从原始图像到最终筛选结果的全过程。
- 结果摘要弹窗将显示检测到的总区域数及满足条件的区域数。