前两天有位做非标设备的同行在群里抛了个典型问题:他要检测一个巴掌大的零件表面细划痕,开口就问Basler 500万像素够不够。我反问他:“划痕最小多宽?视场准备留多少?节拍几秒一件?光源打算怎么打?”他一下子沉默了。
这个场景我见过太多次。工业相机选型这件事,难点从来不是看不懂分辨率、帧率、像元尺寸、接口这些参数表,而是不知道怎么把真实的产线工况翻译成一张参数需求表。很多人把选工业相机当成选手机摄像头,以为像素越高越好、接口越新越好,结果预算花了不少,装到产线上才发现要么视场不够大、要么数据带宽不够用、要么暗场噪点大到无法处理。
这篇文章不打算再给你贴一遍厂商选型手册,而是想从一个干过多年项目交付的角度,把这四个核心参数的底层逻辑拆开讲清楚,并且给出能直接套用的计算方法和选型思路。文章会围绕分辨率、帧率、像元尺寸与接口这几个关键词展开,也会回应一些大家在选型时经常踩的坑。
1. 选型之前先逼自己回答三个工况问题,别急着翻参数表
1.1 你真正要测量的物理量,是多少毫米、多少像素
很多选型失败的项目,根子在于需求本身没有量化。你说“我要检划痕”,那划痕是0.05mm宽还是0.5mm宽?这决定了完全不同的两个方案。你说“我要测圆孔直径”,那公差是±0.01mm还是±0.1mm?这决定你要不要上远心镜头、要不要考虑亚像素算法。
我一般会建议项目负责人先填一张需求清单,写清楚这些内容:
- 被测物最大外形尺寸,以及相机视野要覆盖多大区域
- 必须检出的最小特征尺寸,是点缺陷、线缺陷还是面缺陷
- 这个特征是“只要检出有/无”还是“需要精确测量”
- 节拍要求,以及视觉工位实际可占用的时间窗口
- 被测物在拍照瞬间是否运动,运动速度多少
- 现场环境光类型,以及计划使用什么光源
- 安装空间是否有限,相机到被测物的大致距离大概多少
- 后续是否需要连PLC、机器人或者MES系统
这些内容看起来细碎,但每一项都会落到后面要算的参数上。比如“最小特征尺寸”直接决定分辨率,“运动速度”直接决定曝光时间和帧率,“现场环境光”直接决定像元尺寸和镜头光圈怎么选。
1.2 节拍是多少,留给视觉的时间预算又是多少
产线节拍3秒一件,并不代表视觉系统就有3秒的时间可用。实际项目里视觉工位往往被机械手、气缸、传送带夹在中间,真正能给到相机的窗口可能只有0.6秒。
这0.6秒里要做的事情非常密集:收到触发信号后相机要曝光、读出图像、通过接口传到工控机,SDK回调拿到图像后要做预处理、定位、测量或分类,最后还要把结果通过IO或TCP发给PLC。任何一个环节超时,都会变成整个节拍里的短板。
我自己做方案时习惯做一张简单的时间预算表:触发抖动、曝光时间、图像传输时间、算法处理时间、结果输出时间全部列出来,加在一起看是否落在节拍窗口内。很多人在这一步会发现,算法时间占了300ms,相机传输占了100ms,那选再高帧率的相机也救不了整体节拍,瓶颈根本不在相机上。
1.3 光源能打多亮,决定了分辨率能不能真正发挥出来
相机只是成像链路里的最后一环。你看着是相机在“拍照”,实际上最终图像质量由光源、镜头、被测物表面特性和传感器共同决定。
举个我常说的例子:同样一颗500万像素相机,在强同轴光照明下拍高反光金属表面的划痕,画面细节清清楚楚;换到漫射暗场只能给一点点环境光的时候,哪怕把曝光时间拉长,放大图像也是一片噪声加模糊。这时你换成1200万像素也不会有本质改善,因为物理层面的对比度就不够。
所以在谈分辨率之前,先确认光源方案能不能产出足够的对比度。如果对比度不够,优先优化光源角度、波长、亮度,而不是直接加预算升级相机。
2. 分辨率不是选最大值,而是用视场和最小特征反推像素当量
2.1 先把“像素当量”算清楚
分辨率指标看着很简单,就是水平像素数乘以垂直像素数,但真正有用的参数是“像素当量”,单位是mm/pixel。意思是图像里一个像素对应被测物体上的多大物理尺寸。
像素当量 = 视场宽度 ÷ 相机水平像素数
比如视野要覆盖100mm宽的区域,相机水平方向有2448个像素,那么每个像素对应差不多0.04mm。如果最小划痕宽度是0.1mm,除以0.04mm/pixel,划痕宽度方向大概能覆盖2.5个像素,理论上能看见,但稳定性会很差。
这里有一条工程经验:检出类项目,最小特征在图像里至少要覆盖3~5个像素,才能有稳定的灰度变化和边缘过渡。覆盖太少,特征可能只表现为一个半亮不亮的点,不同产品、不同光照下很容易时有时无。
有了这个规则,可以反推需要多少像素:
所需水平像素数 ≈(视场宽度 ÷ 最小特征尺寸)× 每个特征需要覆盖的像素数
假设视场宽度200mm,要稳定检出0.05mm的细小缺陷,希望缺陷覆盖3个像素,那水平方向就需要大约200÷0.05×3=12000像素。这个数字已经超过绝大多数面阵相机的水平分辨率,常规做法是改成线扫相机,或者把视野分段拍照。
很多人选型时看到2000万、5000万像素觉得“够大”,实际一算像素当量才发现根本不匹配。像素数不是为了好看,是为了让缺陷在图像里达到足够的物理采样密度。
2.2 测量项目可以靠亚像素,检出项目不行
测量类项目里经常提到亚像素精度,比如通过边缘灰度插值将定位精度做到0.1像素甚至0.02像素。这个技术是有效的,但它有个前提:被测特征的边缘必须覆盖足够多的像素,灰度过渡要平缓且有规律。
换句话说,你至少要让特征在图像里占有一个像素以上,边缘处还要有几个像素的灰度过渡带,亚像素算法才有发挥空间。如果你的目标特征本身连一个像素都占不满,画面上只是一个亮点甚至根本显示不出来,那任何亚像素算法都救不了你。
顺带提醒一句,这几年超分辨率重建相关的算法模型很火,但我不建议把这类后处理当成工业检测的精度来源。工业项目需要的是可重复、可追溯、可以通过验证的测量结果,而不是把模糊图像“猜”成清晰图像。物理分辨率先满足需求,算法增强可以作为锦上添花,但绝不能作为达标依据。
2.3 镜头分辨率衬不上传感器,像素再高也白搭
还有一个容易被忽略的问题:镜头本身也有分辨率极限。传感器像素越做越小,很多老镜头的解析力已经跟不上,尤其画面边缘会出现肉、晕、紫边等情况。你换了高分辨率相机,但镜头没换,图像依然不会变清晰。
我自己调试时会用星点靶或者黑白刀口做一次快速检查:把镜头对准刀口边缘,在软件里观察边缘从黑到白跨越了多少像素。如果一条明暗分界线过渡带占了七八个像素甚至更宽,说明当前系统的调制传递已经到顶了,这时加相机像素没有意义,要先换镜头或者改善对焦、减少震动。
选高分辨率相机时,镜头档位要同步升级。普通百万像素镜头、500万像素镜头、1200万像素镜头,根本就是不同设计档位的产品。别在千万像素相机前面装一颗只标称支持2/3"靶面的老镜头。
2.4 高分辨率不等于可以随意做大视场
有人觉得,既然要求0.05mm精度,那我直接上一台1.2亿像素相机,把整个大工件一次性拍完不就行了?理论上是这样,但工程上你会立刻撞上几堵墙:高分辨率相机通常单帧数据量巨大,帧率会掉得很厉害;大视场对布光均匀性要求极高,现场很难把一个半平方米范围内打光打得非常均匀;镜头的畸变和视场边缘解析力也会成为瓶颈。
所以更务实的思路是先计算“当前视场下最小特征需要多少像素”,然后选择合适的分辨率,不够就拆分视场,或者用线扫相机解决大幅面高精度场景,而不是盲目追求一颗镜头和一个相机解决所有问题。
3. 帧率的真相:标称值之外,有曝光、带宽、传输和节拍四道闸门
3.1 相机标称帧率多半是传感器最高读出能力,不是实际能跑到的节拍
厂商给的帧率,通常是在最理想条件下测出来的:最高接口带宽、很短的曝光时间、可能还开了较小的ROI区域。你把相机接到电脑上开全幅、再设置一个10ms的曝光时间,帧率立刻掉到理论极限以下。
这里有个简单公式值得记下来:
单片耗时 ≈ 曝光时间 + 传感器读出时间 + 图像传输时间
如果曝光时间是10ms,传感器读出5ms,那么单片耗时至少15ms,对应最高大约67fps,不管你相机标称120fps还是200fps都突破不了这个上限。
暗场项目尤其受曝光时间限制。有些低照度场景曝光得拉到30ms甚至50ms,帧率自然就低。这时候想提高节拍,有两条路:加强光源把曝光压下来,或者换大像元、高灵敏度的相机。
3.2 带宽瓶颈必须亲手算一遍
帧率和分辨率会共同压向一个参数:接口带宽。很多人选型时只盯着相机