选型这件事,听起来是“选个镜头”,实际上是在定整个视觉系统的成像下限。我做机器视觉项目实施这么多年,最深的感受是:算法工程师再厉害,也救不了一颗配错镜头的相机。分辨率不够、畸变大、景深不足、靶面不匹配,这些在项目调试阶段会变成一个个非常具体又非常磨人的坑。这篇文章就以工业相机镜头选型为主题,把我自己踩过的坑、用过的公式、验证过的方法整理出来,重点放在从实际需求倒推选型参数,以及镜头装上去之后如何验证效果。
这个内容适合正在做视觉项目选型的人,也适合那些手里已经有一套相机镜头但图像质量始终不理想、想搞清楚问题出在哪的工程师。内容不绕弯子,直接讲怎么算、怎么选、怎么验。
1. 选型前先别急着翻目录:先把你的真实需求量化
很多人拿到选型需求第一反应是打开镜头品牌手册,看焦距列表,然后凭感觉挑一个差不多的。这个流程其实反了。镜头选型的起点根本不是镜头,而是检测目标本身。你的产品长什么样、缺陷最小多大、相机装在哪、和被拍物体之间有多远,这些确定了之后,镜头的焦段、靶面、接口、光圈自然就收敛了。
1.1 三个关键参数:工作距离、视野范围、检测精度
选镜头本质上是在解一道光学成像的几何题。这道题里最核心的三个输入参数是工作距离(Working Distance,简称WD)、视野范围(Field of View,简称FOV)、检测精度(即每个像素代表的实际物理尺寸)。
工作距离指的是镜头前端到被测物体表面的距离。这个距离不是随便定的,它受限于现场安装空间。有的产线上方有防护罩,有的要隔着玻璃窗拍摄,有的机械结构只给你留了50毫米的空间,这些都会直接影响镜头选型。我建议在选型之前,先用卷尺或者激光测距仪把安装位置实际量一遍,千万不要拍脑袋估。
视野范围就是相机能拍到的区域大小。这个参数取决于你要检测的物体大小和需要留出的余量。比如你的产品尺寸是20mm×15mm,视野通常不会刚好卡在20mm×15mm,因为物体在传送带上会有位置波动,一般要留出20%到30%的余量,实际视野做到30mm×25mm左右才比较稳妥。需要注意,视野越大,同样分辨率下每个像素对应的物理尺寸就越大,检测精度越低。所以视野不是越大越好,够用就行。
检测精度是选型中最容易被误解的参数。很多需求文档会写“检测精度0.05mm”,但等到做方案的时候才意识到,精度的定义方式直接影响相机的选型。通常我们说的检测精度指的是像素精度,即每个像素代表的物理尺寸。比如视野宽度30mm,相机分辨率水平方向2448像素,那像素精度就是30÷2448约等于0.012mm。如果你要稳定检测0.05mm的缺陷,像素精度至少要做到缺陷尺寸的四分之一到五分之一,也就是0.01mm到0.0125mm左右,否则缺陷在图像上只占一个像素,边缘模糊,放大算法也很难稳定提取特征。
1.2 从检测目标反推选型需求
我习惯把选型需求整理成一张简单的表格,把已知信息和待求信息分开,这样思路就清晰了。假设我们要检测一个手机中框的表面划伤,中框长度大约150mm,宽度大约70mm,安装空间限制在400mm以内。现场要求缺陷检测最小0.1mm,那么按照四分之一原则,像素精度要达到0.025mm。
现在已知条件有视野(假定长度方向留30%余量,视野做到200mm左右)、工作距离(目标400mm以内)、像素精度(0.025mm)。可以开始算相机分辨率了。水平方向需要的像素数等于视野宽度除以像素精度,也就是200÷0.025等于8000像素。这个分辨率已经超出常规面阵相机的范围了,常见500万像素相机的水平分辨率是2448,不够。8000像素的水平需求对应的大概是6500万甚至更高分辨率的相机,价格会非常昂贵。
这说明什么?说明单纯靠一个相机加一个镜头去拍150mm长的产品、同时要求0.1mm的缺陷检测,在性价比上是不合理的。这时候方案就要变,要么把视野缩小,分段拍摄,要么用线扫相机。我在做方案的时候发现,很多研发同事在选型初期没有意识到这个约束关系,等相机买回来一算才发现视野和精度根本没法同时满足,于是方案的架构就得推翻重来。
正确的思路是:先用精度需求算出分辨率,再结合视野和结构空间选相机和镜头。如果结果超出合理范围,就要回到项目方案层面去调整拍摄方式,而不是强行凑参数。
2. 镜头核心参数拆解:焦距、光圈、景深与畸变
需求参数理清了,下一步才是看镜头本身。镜头的核心光学参数就那么几个,但每一个背后都有对应的成像效果,我依次拆开讲。
2.1 焦距计算公式与靶面尺寸的关系
焦距是镜头最基础的参数,它决定了成像的视野大小。工业镜头的焦距和视野之间存在一个非常经典的计算关系:
焦距f = 工作距离WD × 靶面尺寸 / 视野FOV
这个公式里的靶面尺寸指的是相机传感器的物理尺寸,单位是毫米。常见的有1/1.8英寸(约7.2mm×5.4mm)、2/3英寸(约8.8mm×6.6mm)、1英寸(约12.8mm×9.6mm)。注意,英寸标注是历史遗留的命名方式,和实际尺寸之间不是简单的25.4倍关系,千万不能拿标称英寸直接做计算。
举个例子:如果相机靶面是2/3英寸,长边8.8mm,工作距离定在300mm,视野长边要达到100mm,那么焦距f等于8.8×300÷100等于26.4mm。市面上没有26.4mm这个规格,那就就近选择25mm或35mm定焦镜头。选25mm的话视野会稍微大于100mm,选35mm视野会小于100mm。具体怎么取舍,取决于精度和视野余量的优先级。
我个人的建议是,在视野和精度可以满足的情况下,优先选稍长焦段的镜头,因为长焦镜头的透视变形一般更小,边缘畸变也通常控制得更好。但也不要为了追求更长焦距而牺牲视野,视野不够导致产品拍不全,后面补拍或者拼接都是给自己找麻烦。
靶面尺寸的匹配问题尤其要注意。镜头的成像圆必须要覆盖相机靶面的对角线,否则图像四周就是黑的,也就是所谓暗角。一个适配1/1.8英寸靶面的镜头,装在2/3英寸靶面相机的机身上,画面四周一定会出现严重的暗角。品牌镜头规格表里一般都会写最大支持靶面,选的时候要让镜头的最大支持靶面大于等于相机的靶面尺寸,绝不能小于。
2.2 光圈和景深怎么权衡
光圈影响进光量,也影响景深。景深就是成像清晰的前后范围。工业检测的很多场景中,物体表面是凹凸不平的,或者产品在传送带上有轻微跳动,如果景深太小,稍微偏移一点就对不上焦,图像就模糊了。
光圈开到最大时进光量足、曝光时间可以缩短,但景深很浅。对于静止的、平整的物体,这个影响不大。但对于随运动机构移动的物料,往往需要适当缩小光圈来换取更大的清晰范围。常见做法是先计算景深需求,再决定光圈值。
中心对焦的景深近似公式可以简化理解:景深约等于2×光圈值×容许弥散圆直径×工作距离的平方除以焦距的平方。这个公式计算比较复杂,实际选型中更常用的方法是直接查景深表,或者用镜头厂商提供的景深计算器。操作上我一般这样处理:先把光圈放在中间档位(比如F5.6或F8),拍一张测试图,看物体的前后移动范围是否都在清晰范围内。如果景深不够,就缩小光圈,同时相应增加光源亮度或延长曝光时间来做补偿。
有一点需要提醒,光圈缩得太小会因为衍射效应导致分辨率下降,图像反而变软。工业镜头通常最佳光圈在F4到F8之间,超过F11之后画质普遍开始下降。所以不要为了景深无限缩小光圈,光源不够就加光源,曝光时间不够就考虑提高光源功率,这才是正路。
2.3 畸变对测量类项目的影响
畸变是镜头成像的固有特性,表现为画面边缘的直线变弯。畸变分为桶形畸变和枕形畸变。普通的工业定焦镜头畸变一般在0.5%以下,但远心镜头或者高精度测量镜头可以做到0.1%以内。
对于只看有无、不做尺寸测量的检测项目,比如表面划痕检测、SMT元件缺失检测,畸变的影响通常可以忽略。但如果你要做尺寸测量,比如测量产品边缘间距、计算孔位坐标,畸变就必须认真对待。举个例子,一个视野100mm的画面,如果镜头畸变是0.5%,边缘位置的测量误差就可能有0.5mm,这对于亚像素级别的测量需求来说是灾难性的。
处理畸变有两种路径。一种是在算法层面做标定校正,用标定板拍多张图,计算畸变系数然后对图像做重映射。这个方法能校准大部分镜头畸变,但要求现场的光圈、对焦距离、工作距离和标定时保持完全一致,稍有变动就得重新标定。另一种是从硬件层面选畸变更小的镜头,比如远心镜头,它的特点是平行光路设计,在一定工作距离范围内放大倍率恒定,畸变极小,测量精度高。远心镜头的缺点是贵,视场也相对较小,通常用于高精度测量场景。
对于一般项目,我的建议是先用普通工业镜头加算法标定来处理畸变,如果精度验证不通过,再考虑上远心镜头。一上来就上远心镜头,预算压力很大,而且不一定有必要。
3. 一个完整的选型实例:3C小零件外观检测项目
理论讲完,拿一个完整的项目来做演示。这个项目是某3C配件产线上的SIM卡托外观缺陷检测,卡托的尺寸大约为12mm×10mm,需要检测表面的划痕、污渍、毛刺以及轻微的变形。这个案例我做过完整验证,步骤和计算过程可以直接参考。
3.1 项目需求整理
当时现场的情况是这样的:卡托经过CNC加工后落在传送带上,由挡板定位后静止拍照。安装空间是在线体上方有一块防护板,镜头前端到产品表面的最大距离不能超过150mm。要求检测的最小缺陷尺寸是0.05mm的划痕和0.1mm的毛刺,节拍要求是2秒以内完成一次检测。
根据这个需求来做参数整理。视野方面,卡托本体12mm×10mm,考虑到定位误差,视野要做到20mm×16mm比较合适。工作距离定为130mm,这是给镜头前端的保护镜片和光源留出余量后的值。检测精度按最小缺陷0.05mm的四分之一来算,即像素精度0.0125mm。
3.2 计算过程和初选方案
先计算相机分辨率。水平方向需要的像素数等于视野宽度20mm除以像素精度0.0125mm等于1600像素,垂直方向16mm除以0.0125mm等于1280像素。选择市面上常见的500万像素工业相机,分辨率2448×2048,水平方向像素精度是20÷2448等于0.0082mm,垂直方向是16÷2048等于0.0078mm,都优于0.0125mm的要求,余量充足。
相机靶面选1/1.8英寸,长边7.2mm。镜头焦距计算公式f等于靶面长边7.2mm乘以工作距离130mm除以视野长边20mm,算出来是46.8mm。市面上没有这个规格,就近选择50mm焦距的定焦镜头。选定之后核算一下实际视野:用50mm镜头,实际视野等于靶面长边7.2mm乘以工作距离130mm除以焦距50mm,结果是18.72mm。这个视野刚好覆盖卡托的长边12mm加上定位余量,够用。垂直方向视野是5.4mm乘以130除以50等于14.04mm,也覆盖了10mm的卡托宽度。
镜头选型结果是一个500万像素、1/1.8英寸靶面、50mm焦距的C接口工业定焦镜头。光圈范围F2.8到F16,畸变控制标称在0.3%以下。
光源选型上,由于要检测表面划痕,用同轴光或者低角度环形光更容易让划痕产生明显的对比度。这个项目里因为卡托表面是金属拉丝纹理,低角度打光容易把拉丝纹理和划痕混在一起,最后选用同轴光加高角度环形光的组合,划痕在图像上呈现为暗色线条,背景均匀,效果比较理想。
3.3 现场验证与调整
镜头和相机装上去之后,第一步就是对焦。工业镜头的对焦环通常没有刻度指示,需要边看软件实时图像边手动调节。我的实际操作方法是:先用一个表面纹理明显的标定板放在工作距离130mm处,然后松开对焦环锁紧螺丝,慢慢旋转对焦环,同时观察图像清晰度,找到最清晰的位置后锁紧螺丝。
这里面有个细节,对焦时要反复进行“微调-观察-再微调”的循环,因为人眼对图像清晰度的判断存在滞后,一次调节容易过冲。我通常会在最清晰点附近左右各试一点,然后回到中间位置,这样能保证对焦准确。真正严谨的做法是用清晰度评价函数,比如计算图像梯度或者拉普拉斯响应值,数值最大对应的就是对焦点。现在的工业相机软件很多都自带对焦辅助功能,比如Basler的pylon Viewer和海康的MVS都提供了图像清晰度统计功能,可以借助这个来做定量判断。
光圈设定方面,因为卡托在定位后有轻微的高度差,我把光圈从最大F2.8缩到F8,景深范围变大,虽然进光量减少了,但通过提高光源亮度和延长曝光时间到800微秒来补偿,最终图像亮度能够满足算法处理的需求。
实际测试下来,检测效果是满意的。0.05mm的划痕在图像上大约占6个像素宽度,特征清晰。毛刺的边缘对比度虽然不如划痕明显,但通过灰度形态学的处理,也可以稳定检出。整个验证过程从装机到算法稳定,反复迭代了两天,最后项目的漏判率和误判率都控制在了客户要求范围内。
4. 实操阶段经常踩的几个坑
选型做对了只成功了一半,现场调试的时候还有很多意想不到的问题。这些都是我在项目一线遇到过的真实情况,单独整理出来分享。
4.1 分辨率足够不代表图像清晰
很多人有一个误区,认为相机分辨率越高,图像就一定越清晰。实际不是这样。分辨率高只是像素点多,如果光学系统有问题,像素再多图像也是糊的。
最常见的情况是工作距离没有严格固定。镜头的对焦面是固定的,一旦产品高度发生变化,超出了景深范围,图像就会模糊。这种情况下再高的分辨率也救不回来。所以项目安装阶段,一定要把相机支架锁死,并且定期检查是否有松动。产线的振动是很大的,一个看似锁紧的支架用不了多久就可能出现微小的位移,导致图像逐渐变模糊。我见过一个项目,调试阶段图像一切正常,运行两周后客户反馈检测率下降,后来排查发现是相机支架的螺丝松了半圈,工作距离变化了大概5mm,图像就明显发虚了。
还有一类模糊来自镜头本身的质量问题。一些价格很低的手动镜头,中心清晰度尚可,但边缘画质崩溃得厉害。如果你的检测区域覆盖了整个视野,镜头解析力不足带来的边缘模糊会直接影响边缘定位的精度。这种问题很难通过后期算法补偿,只能换镜头。
4.2 相机丢帧和网速异常的排查思路
热词里提到“大华工业相机丢帧”“工业相机插上网速不对怎么解决”,这类问题在GigE接口的工业相机上尤其常见。丢帧的表象是软件预览或者采集过程中画面卡顿、帧率不稳定、数据时续时断,但实际原因往往在传输链路。
GigE相机走的是标准以太网协议,但和普通摄像头不同,它对网络的稳定性和带宽有严格要求。我遇到过的丢帧原因大概有几类:网卡问题、网线问题、交换机问题和驱动配置问题。
网卡方面,普通电脑自带的板载网卡不一定能稳定处理千兆工业相机的数据流,特别是USB转网卡、低端Realtek网卡,在跑满带宽时经常出问题。建议使用Intel芯片的千兆网卡,有条件的话直接用独立PCIe网卡,稳定性和兼容性都好很多。
网线方面,工业相机必须用高质量的超五类或六类屏蔽网线,长度最好控制在20米以内。不要用那种扁平的、细芯的、或者经过转接头的普通网线。我之前排查过一个现场,换了好几张网卡都没解决丢帧问题,最后发现是施工方用了一段大约5米长的普通扁平网线连接相机,换成工业级屏蔽网线后问题彻底消失。
驱动和配置方面,GigE相机的网卡巨型帧(Jumbo Frame)通常需要开启,默认的1500字节MTU值会严重影响大图传输效率。以Basler相机为例,在网卡高级设置里把Jumbo Packet设置为9KB或更大,同时在pylon Viewer中确认带宽限制和传输模式配置正确。海康的MVS软件也有类似的传输层配置选项。
还有一个很容易被忽略的问题是IP地址冲突。工业现场很多设备都在同一个网段,如果相机和PLC或者其他设备分配了同一个IP,就会出现时断时续的“像掉线又不是掉线”的症状。排查方法很简单,先断开所有其他设备,只保留相机和电脑,然后再逐步加回其他设备,观察哪个设备加入后丢帧开始出现。
4.3 触发信号未接收的典型原因
热词中有“海康工业相机未收到触发信号”,这个问题在产线项目中经常遇到。触发信号是用来同步相机拍摄和产线动作的关键机制,一般由PLC输出脉冲信号,相机收到信号后执行曝光采集。
未收到触发信号的排查有一个比较标准的顺序。第一步看信号线连接是否牢固,触发信号线和地线是否都接上了,有的触发模式需要同时接信号线和地线,缺一根都不行。第二步看PLC输出的电平和相机触发电平的匹配关系。工业相机常见的触发输入包括光耦隔离输入,一般要求输入电压在5V到24V之间,但不同品牌不同型号的高电平和低电平有效定义不同。有些PLC输出的是NPN型信号,有些是PNP型信号,接错类型相机就无法正确识别。
第三步是看相机软件中的触发参数配置。海康相机在MVS里有触发模式、触发源、触发边沿等设置,Basler相机对应的是Trigger Mode、Trigger Source、Trigger Activation等。常见的错误是触发模式设置为Off,或者触发源选成了Software Internal,导致外部信号无法触发。还有一种情况是触发边沿设置错误,比如PLC输出的是上升沿信号,相机里却配置成了下降沿触发。
如果在软件里手动触发能正常采图,外部信号怎么打都不采图,那问题基本就出在触发信号链路或者触发参数配置上,和相机本身关系不大。顺着这个思路排查,一般都能找到原因。
4.4 镜头兼容性和品牌选择
镜头和相机的接口匹配是一个看似简单但容易忽略的环节。工业相机常见接口有C接口、CS接口、F接口和M12接口等。C接口和CS接口的后截距不同,C接口镜头的后截距是17.526mm,CS接口是12.526mm。如果CS接口相机装C接口镜头,需要加一个5mm的转接环,否则成像面位置不对,近处物体无法对焦。
品牌选择方面,进口镜头里Computar、Kowa、RICOH、Schneider等是常见选项,国产镜头这几年进步也很大,像OPT、普密斯、灿锐等在高性价比方案中应用很广。我的个人感受是,常规工业检测场景里同一规格的国产镜头和进口镜头,成像中心的差距已经很小了,差距主要体现在边缘解析力和畸变控制上。如果你的检测区域主要在画面中心,国产镜头完全够用。如果边缘也需要精确定位,预算充裕的话可以优先考虑进口镜头。
远心镜头是另一个层次的产品。远心镜头的最大特点是放大倍率恒定,物体在一定深度范围内前后移动,图像大小不会发生变化。这是普通镜头做不到的。在需要高精度尺寸测量的场景,比如锂电极片测量、精密零件尺寸检测,远心镜头几乎是标配。它有物方远心、像方远心和双侧远心之分,物方远心最常用,因为它的测量精度可以做到微米级。但远心镜头的视场通常较小,工作距离和物体尺寸有严格的匹配关系,选型的时候要做精确计算。
还有一点我想特别提一下,就是光源和镜头的配合。同一个镜头在不同光源条件下呈现的成像质量差异非常大。镜头的解析力再好,如果光源角度不对、光照不均匀,拍出来的图像一样没法用。在选型的时候,光源和镜头一定要放在一起考虑,有条件的话把镜头装到样机上实测不同光源方案的成像效果再定。
5. 选型验证的完整流程和经验清单
最后分享一套我自己在用的选型验证流程,可以把踩坑的概率降到最低。这套流程不需要特殊的设备,只需要视觉控制器、相机镜头样品和一张标定板。
第一步,把相机和镜头安装在模拟现场工作距离的位置上,先不要急着调光源。第二步,用标定板放在视野范围内,调整对焦环直到图像清晰度最佳,记录此时的光圈值和对焦位置。第三步,加上现场同类型的光源,调整光源角度和亮度,观察目标特征在图像中的对比度,特别是背景纹理干扰是否严重。第四步,实际拍摄产品样品,检查整个视野内图像的均匀性,如果边缘发暗,要考虑光源覆盖范围或镜头暗角的问题。第五步,连续拍摄上百张图,确认传输无丢帧、图像亮度无波动、触发响应稳定。第六步,用实际缺陷样品验证检测算法的稳定性,看看检测余量够不够。
这个流程走完,选型方案基本就是可靠的。里面每一环节都有对应的验证数据,后面项目验收也更好解释。
另外一个经验是选型文档要留档。镜头型号、工作距离、光圈值、光源型号和角度、曝光时间、增益值,这些参数记录下来,后续现场维护或者产线复制会省太多事。曾经有个客户复制产线,直接照着第一套参数做,装完几乎没有调试就能跑,速度比别人快很多。
在工业视觉这个行当,很多时候项目做不好不是因为算法不够聪明,而是成像端从一开始就没打好底子。镜头选型作为成像设计的第一步,值得多花时间和精力去做好。每一次项目做完,把选型过程中的计算、验证数据、踩坑记录都沉淀下来,后面再做类似项目就会越来越有把握。