3. 扣件图像数据组织与预处理
轨道扣件检测模型的精度,很大程度上在数据进入标注环节之前就已经被决定了。原始采集图像往往存在光照不均、运动模糊、镜头畸变、无关背景占比过大以及重复与废片混杂等问题。如果把这些“毛坯”图像直接交给标注人员,不仅标注效率低,模型还会学到大量噪声特征。本章围绕一条可落地的数据准备链路展开:先设计清晰的目录结构,再完成去噪增强、几何校正、ROI 提取,最后通过数据清洗剔除异常样本,形成可直接用于标注与建模的高质量数据集。
一、数据目录结构设计:让每张图都有唯一归属
扣件数据天然具有层级性:一条线路包含多个区段,一个区段包含多个里程点,每个里程点又可能拍摄左右股钢轨的多颗扣件。目录结构应直接映射这种采集逻辑,而不是按“好图/坏图”随意堆放。推荐采用“线路—区段—里程—股别”四级组织,并在同级保留原始、中间、成品三个处理阶段,避免覆盖原始数据。
dataset/
├── raw/ # 原始图像,只读,永不修改
│ └── L01/S03/20240512/
│ ├── left_0001.jpg
│ └── right_0001.jpg
├── interim/ # 中间结果:去噪、校正后
│ └── L01/S03/20240512/
├── roi/ # ROI 裁剪结果
│ └── L01/S03/20240512/
├── clean/ # 清洗后待标注数据
│ ├── images/
│ └── labels/
└── meta/
├── manifest.csv # 图像清单与状态
└── rejected.csv # 剔除记录及原因
关键约定有三点:一是文件名携带里程与股别信息,例如 L01_S03_K12+350_left_0001.jpg,保证图像可回溯到物理位置;二是 raw 目录设为只读,所有处理结果写入 interim 或 roi,便于复现;三是用 manifest.csv 记录每张图的处理状态(原始、已校正、已裁剪、已清洗、已标注),使数据流转可审计。当后续发现某批图像标注质量差时,可以沿清单快速定位是采集问题还是预处理问题。
二、图像去噪与增强:为扣件“提清晰度”
轨道图像的主要噪声来自两方面:一是夜间补光造成的局部过曝与阴影,二是列车振动引起的运动模糊。去噪与增强的目标不是让图“好看”,而是让扣件边缘、弹条轮廓、螺栓孔等结构更稳定可辨。
工程上常用的组合是:先做轻度高斯滤波或双边滤波抑制传感器噪声,双边滤波能在平滑的同时保留弹条边缘;再用限制对比度自适应直方图均衡(CLAHE)改善局部光照不均,clipLimit 可取 2.0~3.0,tileGridSize 取 8×8,这是示例参数,实际需按采集设备调整;最后用非锐化掩模做适度锐化,增强系数控制在 0.5~1.0,过强会放大噪声并产生光晕。对于运动模糊,若模糊核方向已知,可尝试维纳滤波,但多数情况下更可靠的做法是直接剔除严重模糊样本,而不是强行恢复。
三、几何校正:消除镜头与安装带来的形变
车载相机存在桶形畸变,安装角度也可能使钢轨在图像中倾斜。几何校正分两步:第一步用棋盘格标定得到内参矩阵和畸变系数,通过 cv2.undistort 消除径向与切向畸变;第二步做透视校正,将钢轨走向拉正,使扣件在图像中保持近似水平,便于后续按固定窗口裁剪。
透视校正需要选取钢轨上的四个参考点,通常取轨头两侧边缘在画面上下两端的交点,构造源点与目标矩形之间的单应矩阵。校正后应检查:同一里程左右股的扣件在图像中的高度是否一致、轨距像素宽度是否稳定。若某批图像校正后轨距像素宽度波动超过约 10%,说明标定参数或参考点选取有误,应回退检查而不是继续裁剪。
四、ROI 提取:把注意力集中到扣件本身
一张轨道全景图中,扣件往往只占很小区域,直接整图标注既慢又引入大量负样本。ROI 提取的思路是先定位钢轨,再沿钢轨按固定间距滑窗裁剪扣件区域。
一种可实现的流程是:对校正后图像做灰度化与边缘检测,利用钢轨两条平行亮边的 Hough 变换结果拟合轨头中心线;以中心线为基准,向两侧各扩展一定像素宽度形成扣件带;再沿轨道方向以约 1.2 倍扣件间距为步长滑窗裁剪,窗口尺寸示例可取 256×256 像素。裁剪时保留 10%~15% 的上下文边距,避免扣件被切断。每张 ROI 图像需记录其来源图像、中心里程和股别,写回清单,保证裁剪结果可追溯。
五、数据清洗与异常样本剔除:宁缺毋滥
清洗环节要回答一个问题:这张 ROI 图像是否值得标注。建议从四个维度建立可量化的判断条件,并把阈值写入配置,便于批量执行与复核。
- 清晰度:用拉普拉斯算子方差衡量,示例阈值取 80,低于该值视为模糊。夜间远距离拍摄的扣件容易落入此区间。
- 亮度:统计 ROI 平均灰度,低于 40 视为欠曝、高于 220 视为过曝,两者都会丢失弹条纹理。
- 重复性:对连续帧计算感知哈希,汉明距离小于 5 视为重复,仅保留一帧,避免同一扣件在训练集中被过度采样。
- 完整性:检查 ROI 内是否包含完整扣件区域,若扣件被窗口边缘切断或 ROI 内几乎无结构,直接剔除。
所有被剔除的样本必须写入 rejected.csv,记录文件名、剔除原因和判定值。这一步看似繁琐,实则是排障的关键:如果某区段合格率异常低,回看剔除记录就能判断是采集曝光问题、相机失焦,还是 ROI 定位偏移,从而把问题反馈到采集端,而不是在模型端反复调参。
六、形成可交付的数据集
完成上述步骤后,clean/images 中应是尺寸统一、方向一致、扣件居中的 ROI 图像,clean/labels 与之同名对应,manifest.csv 记录每张图的来源与处理状态,rejected.csv 保留剔除依据。此时再进入标注环节,标注人员面对的是结构清晰、目标明确的图像,标注一致性和效率都会明显提升。数据准备的质量,最终会以模型在真实线路上的漏检率和误检率的形式体现出来。