CVRSSP
工业视觉系统
一套十相机视觉系统:识别钢板,以毫米为单位测量它,并绘制出它的轮廓。
- C++
- OpenCV
- MFC
- 图像处理

- 时间
- 2026
- 角色
- 设计、实现与测试
- 背景
- 武汉大学 · 程序设计实践
- 平台
- Windows · C++ · MFC · OpenCV 4.10
背景
钢板的几何尺寸贯穿轧制、剪切、仓储与质检的每个环节。人工测量需要停机或接触钢板。机器视觉可以非接触地测量——前提是它能应对真实的图像。CVRSSP 仿真了这一在线测量过程:读入生产线上十台相机的图像,识别钢板,以毫米为单位测量它,绘制轮廓,并保存记录。
挑战
真实图像是复杂的。在一张样本上有效的方法,换一张就可能失效。
亮度不一
每台相机的亮度与对比度都不同,没有一个固定阈值能适用全部图像。
遮挡
设备在钢板上形成竖直的黑色缺口,把钢板分割成多个区域。
不完整视野
有的相机完全没有拍到钢板,而钢板的端部可能只占几个像素。
像素不是毫米
十个视角必须统一到同一个物理坐标系,长度才有意义。
方案
一条从原始图像到毫米尺寸的一致流程——每个模块对“哪些相机可信”的判断都保持一致。
01
自适应分割
高斯滤波与 Otsu 阈值让每张图像自行确定阈值;小尺度的开运算与闭运算清理掩膜,同时不会填平真实的缺口。
02
可靠视角筛选
根据前景对比度、有效列比例、厚度与中心稳定性评价每台相机的候选区域,只有可靠的视角才参与拼接、测量与绘制。
03
遮挡修复
逐列检测钢板内部的竖直缺口,并通过插值上、下边缘进行修复——只有全部条件都满足时才修复,真实的板头板尾不会被误修。
04
完整性判断
只在首个可靠相机中判断板头、在末个可靠相机中判断板尾。系统提示当前是否为完整钢板,但不影响其他测量。
05
从像素到毫米
每台相机的 3×3 单应矩阵把像素映射到统一的世界坐标系。长度取钢板中心线的全局跨度;宽度取多行结果的中位数,并由其他相机提供备用测量与交叉验证。
06
轮廓与记录
上、下边缘在相机之间对齐,补齐短缺口、平滑尖峰后绘制成曲线;测量结果保存为 UTF-8 CSV。





技术
C++
核心应用程序——仅主对话框就约 6700 行代码。
MFC
基于对话框的界面:三个图像显示区、控件与消息响应函数。
OpenCV 4.10
阈值分割、形态学处理、轮廓提取与图像拼接。
单应性标定
十个标定文件把每台相机映射到同一个世界坐标系。
我的工作
- 需求分析与总体架构设计
- 完整的图像处理与测量算法流程
- MFC 界面与消息响应函数
- 标定参数加载与异常处理
- 十二项功能测试——覆盖正常、遮挡、不完整与纯背景等情况
- 四轮迭代:从像素测量到标定后的毫米测量
反思
第一个版本用的是固定阈值和最大轮廓,它在少数图像上能运行,在其余图像上都失败了。我由此明白,工业视觉不是去调好一张样本,而是自适应的方法、稳健的统计,以及彼此一致的判断条件。它也让我清楚自己还不能宣称什么:没有已知尺寸的标准钢板,流程可以被验证,精度却无法被证明。那是下一步要做的事。