很多搞机械设计的兄弟把视觉测量想得太玄乎,或者又太不拿它当回事。架个摄像头,连上电脑,出个数字,总觉得和玩玩具差不多。真这么简单我倒省心了。实际上,我从第一次调试视觉测量系统到现在,差不多踩了五年多的坑,才敢说摸清了些门道。今天这篇,就把最关键的几个环节拎出来聊聊——镜头相机、光源、标定、算法。每个环节坑都深着。
先聊聊镜头和相机:你的像素当量真的对吗?
选相机和镜头之前,先明确一个概念:像素当量。说白了就是每个像素代表真实物理尺寸多大。计算公式很简单:分辨率在某一方向上的像素数除以对应视场大小。比如你用500万像素的相机,传感器长边2448像素,要拍50mm的视场,那长边当量就是50/2448≈0.0204mm/像素。听起来简单吧?但很多人栽在视场计算上——你忘了留余量。机构的抖动、上料的位置偏差,都会让工件跑出视场。千万别卡着工件尺寸设计,至少留出20%的余量。
另外一个容易忽略的是镜头畸变。普通工业镜头在边缘畸变轻轻松松到0.5%以上,别看我,没具体测过也听说过吧——测量用的镜头,最好用远心镜头。远心镜头光线平行入射,畸变极小,但对工作距离和景深有要求。景深不够,工件一翘边图像就虚了。你说你加工件表面不平?那就得老老实实算景深,或者加个压平机构。

相机的选择,别只看像素数。靶面大小、像元尺寸、帧率,都得跟镜头匹配。像元小了感光度差,暗场就抓瞎。一般测量用,像元尺寸别小于2.2μm,不然噪声让你怀疑人生。选型手册里也提过类似建议,但实际选型还是得靠经验。
再啰嗦一句:镜头接口和法兰距别搞错。C接口的差一点就拧不上,以前就有同事用CS接口的镜头硬往C口相机上装,结果拧了一圈半卡死,几百块的转接环白买。这个真得长眼。
光源设计——打光比算法更重要
说句大实话,一个视觉测量项目,光源的设计至少占了一半的重要性。不是开玩笑。我见过有人花大几万买高端相机,结果用个破LED灯,图像灰蒙蒙一片,边缘根本提不出来。测量嘛,你要的是清晰锐利的边缘。打光方式五花八门:环形光、背光、同轴光、条光……实测下来,不同场合效果天差地别。
比如测外径,一般用背光最好,工件变成黑色剪影,轮廓清清楚楚。但你要是测反光表面,背光就反白一片,这时得考虑用低角度环形光,让边缘与背景产生灰度差。我记得以前做一个活塞销直径测量,怎么打光都有反光噪点,最后换了偏振片,把反射光滤了,才稳住。对,就是加偏振片。

光源颜色也有讲究。红色光波长长,衍射弱,对表面划痕不敏感;蓝光和绿光波长短,表面细节更清楚,但环境光干扰也大。我们常用的就是红色背光和蓝色前光组合,参考厂家推荐,再自己拿实物试。记住,光源不是越亮越好,亮度过高会过曝,导致边缘膨胀,测量值会偏大。这个膨胀量随光照变化,所以光源驱动也要恒流,避免温漂。
另外,光源频闪也是个坑。用脉冲频闪可以延长寿命,但如果触发频率和相机曝光没对好,测出来的尺寸一跳一跳的,跟心电图似的。当时排查了很久,差点把光学平台拆了,结果就是一个续流二极管坏了。
标定——精度到底从哪里来?

硬件齐了,还得标定。这一步直接关系你输出的数据可不可信。标定目的不只是确定像素当量,还要修正镜头畸变、光轴偏斜等系统误差。日常做法就是拍标定板,棋盘格或者圆形点阵。注意标定板得是高精度的,玻璃基底最好,陶瓷的也行。有些人用打印纸随便打一个,那测出来误差能到0.1mm,你还不如拿卡尺。
标定时要采集多张不同位姿的图像,用算法解算内参和畸变系数。具体原理我就不多说了,但最好遵循ISO 10360-7的测试方法:在测量范围内放一系列标准件,然后比较系统输出值和参考值,给出误差报告。我们公司现在验收视觉测量仪都是这么干的。
另外,现场环境温度对设备影响很大。温度变了,机架热胀冷缩,像素当量也跟着变。你要是想上高精度,就得用温度补偿。至少,把设备放在恒温车间,并且定期重新标定。记住,标定不是一次性的事,是周期性维护。我说的是真的。
软件算法和几个隐藏坑

算法部分,一般也就是边缘提取、亚像素处理、几何拟合。常见的坑是边缘提取阈值设置不当。固定阈值对光照变化太敏感了,最好用自适应阈值。还有,滤波窗口别开太大,本来锐利的边缘会被圆角化,直径就测小了。
还有一个我印象很深的案例:测量某个直径为10mm的轴,用了最小二乘拟合圆,结果总是比千分尺小0.03mm。后来发现是因为轴的圆柱度不好,有个位置凹陷,最小二乘圆被平均下去了。后来改用了最大内接圆或者最小外接圆,才和实际装配配合得上。所以,你要根据工件的功能和公差带选择拟合算法,不能一味最小二乘。
亚像素边缘技术,常见有插值法、拟合法。如果要求重复性在微米级,那么光靠插值不够,还得结合边缘扩散函数建模。这里我推荐用PSF拟合,但计算量大,对处理器要求高。哎,又是成本权衡。
最后,别指望视觉测量是装上就能跑。它和机械设计一样,需要反复调试、验证、标定。把每个环节的误差预算控制好,系统整体精度才靠谱。如果你正打算上,建议先拿几个样件试跑,别急着连产线。等稳定了再说。祝你们少踩我这些坑。