如果只是按“500万像素”去选工业相机,你在现场大概率要被折腾一轮。分辨率只是相机的包装参数,真正决定成像效果和使用体验的,是分辨率、帧率、像元尺寸、接口带宽这四个参数之间的耦合关系。做过几个项目之后你会发现,选型其实是一道小学算术题加一堆工程约束,不是把单个参数拉满就万事大吉。
这篇文章打算把工业相机选型最核心的几个参数串起来,讲清楚它们分别影响什么、怎么互相制约,以及拿到现场需求之后应该按什么顺序做计算。不管你是第一次做视觉项目的新手,还是已经在调机路上踩过坑的工程师,这篇文章应该能帮你把选型逻辑捋顺,至少下单之前不会再被标称帧率“骗”到。
1. 分辨率选型:先算“一个像素对应多大物理尺寸”,而不是像素总数
1.1 检测精度、视野宽度与像素数量的换算逻辑
我见过太多客户开口就是“我要1200万像素的相机”,问他检测精度要求多少、视野覆盖多大,全都不清楚。这种时候我会直接反问一句:你要的是在多大的视野里看到多小的特征?如果答不上来,那选出来的相机大概率不是贵了就是废了。
分辨率选型的真正起点,是把“检测精度”换算成“单像素对应的物理尺寸”。最朴素的计算公式是:
单像素物理尺寸 = 视野宽度 ÷ 相机水平方向像素数
举个例子,如果视野宽度是60mm,相机的水平分辨率是2448像素,那么一个像素对应的物理尺寸就是:
60mm ÷ 2448 ≈ 0.0245mm/pixel
这个数值意味着,图像上能够分辨的最小粒度大概在0.0245mm这个量级。但注意,这里说的只是“一个像素对应的物理尺寸”,它并不等于你的检测精度。因为实际项目里,一个缺陷特征最少应该覆盖3到5个像素,算法才能稳定地判断它是什么。如果某个缺陷恰好只有一个像素大小,在噪声、镜头模糊、光源波动的影响下,这个像素很可能就消失了,最后给你留下漏检的隐患。
所以在工业项目里,我常用的经验判断是:最小缺陷尺寸至少要是单像素物理尺寸的3到5倍。如果需求上写着“要稳定检出0.1mm的缺陷”,那单像素物理尺寸最好控制在0.02mm到0.033mm之间。把实际视野往里一代,分辨率需求就出来了。
1.2 只冲高分辨率没用,传感器靶面尺寸同样决定清晰度
很多人会陷入一个误区:分辨率越高一定越清晰。这话在消费电子领域或许基本成立,但在工业相机里并不完全适用。
同样标称500万像素的相机,传感器可能是1/1.8英寸,也可能是2/3英寸,甚至可能是1英寸以上。靶面越大,单个像元的物理面积通常也越大,相应的灵敏度、信噪比都会好一些。反过来,如果在小靶面上硬塞了很多像素,每个像素的感光面积就被压缩得很小,暗光环境下的噪声会更明显,对镜头的解析力要求也更高。
我在评估项目时会习惯性把分辨率、靶面尺寸放在一起看。如果一块光照条件不理想,又要求小体积镜头的场景,我不会为了“像素数好看”而选高分辨率小靶面的相机。分辨率不是免费送的,高像素背后要么用靶面换,要么用像元尺寸换,最后都得在成像质量上还回来。
万一客户已经在项目里应用了“图像超分辨率重建”这类后处理算法,希望靠修复手段弥补硬件分辨率不足,我建议还是别抱太大期望。工业缺陷检测里,算法需要的是稳定、真实、可重复的图像边缘,超分重建容易把真实缺陷的边缘“脑补”得似是而非,反而干扰检测结果。硬件该有的分辨率没给够,最后靠软件硬凑,基本都是吃力不讨好。
1.3 一个典型算例:把视野需求换算成相机像素数
用我刚才说的逻辑走一遍,就很好理解。假设我要测一个30mm长的零件外形尺寸,为了留出容差和安装余量,视野取40mm宽,要求稳定分辨0.02mm的细小特征。按特征占5个像素来算,单像素物理尺寸不能超过:
0.02mm ÷ 5 = 0.004mm/pixel
那么这个40mm宽视野需要多少像素呢?
40mm ÷ 0.004mm/pixel = 10000像素
这就很尴尬了,常规的面阵相机很难做到单方向10000像素。一个非常常见的情形是,需求方只报出一个数字“0.02mm精度”,以为随便一台500万像素相机就能搞定,但实际换算过来远不是一个普通面阵相机能覆盖的。要么改用更高放大倍率把视野缩小,要么用拼接或多相机方案,要么直接换线阵相机。这就是为什么我一直强调必须把视野和精度放在一起算,否则一定会在设备做出来之后发现视野不够或精度不够。
反过来,如果这是一个30mm视野、只要求测量公差±0.02mm轮廓的场景,我用大约1600×1200像素的200万级别相机就能有不错的余量,不需要盲目上500万。这一点在后面的整机选型部分还会详细算一遍。
2. 帧率不是相机标称决定的,真正卡你的是带宽和曝光
2.1 一帧图像有多大,先算清楚再定帧率
很多相机的Datasheet上都写着“最高75fps”“最高120fps”。乍一听很猛,但这只是传感器在特定条件下能输出的最高帧率。等你把它接入实际接口和主机,才发现满幅分辨率下根本跑不到那个数字,问题往往出在带宽上。
图像数据量估算很简单:分辨率乘以像素位数。以最常见的500万像素相机为例,2448×2048约等于500万像素,如果输出的是8bit黑白图像,一帧就是大约5MB。哪怕不计算任何协议开销,帧率30fps时需要的带宽就是:
5MB × 30 = 150MB/s
而千兆网口的理论速率是125MB/s,实际传输图像数据还要扣掉协议头、校验、丢包重传等开销,有效带宽通常只有80到110MB/s。换句话说,一个标准的GigE接口千兆相机,几乎不可能满幅500万像素跑到30fps。你要是拿着标称75fps的GigE相机,却要求在500万全分辨率下满速跑,完全就是在为难硬件。
所以我在每个项目的架构阶段都会先做“铁三角”计算:分辨率决定单帧大小,单帧大小乘以需要的帧率,得到目标带宽,再反过来选择合适的接口和采集方案。分不清这个逻辑的人,经常会在现场发现帧率上不去,最后只能靠裁剪ROI、降低像素深度或者降低帧率来妥协。
2.2 曝光时间会限制实际帧率,运动模糊还会毁掉清晰度
帧率上不去的另一个常见原因是曝光时间太长。相机输出一帧的周期,理论上不能小于曝光时间加上传感器读出时间。如果曝光时间需要10ms,那无论相机标称多高,大约也就100fps左右封顶了。
真正在现场折磨人的不是这个,而是运动模糊。当一个工件在视野内以速度v移动时,如果你曝光时间是t,那成像期间物体在画面里移动了:
位移量 = v × t
这个位移如果超过一个像素,图像边缘就会产生拖影。拖影不是说“稍微糊一点点”那么简单,它会让尺寸测量边界偏移,让缺陷轮廓变得不可靠。
我做过一个输送带上的飞拍项目,带速500mm/s,选型时希望单像素物理尺寸做到0.025mm/pixel。那么允许曝光时间的极限是:
0.025mm ÷ 500mm/s = 0.00005s = 50微秒
50微