机器视觉的项目里,镜头这个东西是最容易被低估的。很多人选相机时盯着分辨率、帧率、芯片型号反复对比,轮到镜头就随手挑一个“能装上、视野够”的完事,结果项目一上产线,要么边缘模糊,要么测量精度忽高忽低,要么换了光源之后整个图像质感全变。回头查原因,一大半问题都出在镜头上。
这一篇是机器视觉系列的第五篇,专门讲镜头。我会把镜头拆开揉碎了讲清楚:像素精度是怎么被镜头影响的、选型时那些参数到底是什么意思、不同应用场景下镜头思路有什么不同,以及实际项目中踩过的坑和排查方法。无论你是刚入门还在看机器视觉学习路线的新手,还是已经有几个项目经验的工程师,这篇都值得认真读一遍。
1. 像素精度与镜头的关系:为什么一动镜头,精度就变了
1.1 像素精度的本质是“一个像素代表物理世界多大”
大家挂在嘴边的像素精度,本质上就是一个像素对应到被测物体上的实际尺寸,计算公式非常简单:
像素精度 = 视野宽度 ÷ 传感器水平方向像素数
举个例子,如果你的相机是500万像素,传感器水平分辨率是2448,视野宽度是50mm,那像素精度就是50÷2448≈0.0204mm/像素。检测一个直径10mm的圆,如果算法要求测量精度达到±0.05mm,那么这个像素精度理论上是够用的,因为0.0204mm小于0.05mm,通常按5倍经验值来校核也合格。
但问题在于,像素精度只是“理论分辨率”,实际能不能发挥出来,镜头说了算。镜头畸变、色差、场曲、分辨率不足,都会让实际“有效像素精度”远低于理论值。这也是为什么热搜词里会有人问“机器视觉动了什么会导致像素精度变化”,很多时候不是你动了相机,而是镜头的光圈被碰了、焦距被拧了、或者紧固螺丝松了导致镜片位置偏移。镜头头一歪,整个标定关系就变了,像素精度自然飘。
1.2 镜头的哪些参数直接影响像素精度
镜头影响像素精度主要有四个方面:焦距、光圈、畸变、分辨率。
焦距决定视野大小。同一款相机,焦距越长视野越窄,单个像素对应的物理尺寸越小,理论上精度越高。但代价是工作距离变长,或者视野变小。所以焦距不是越长越好,而是要看你的视野需求和工作距离限制。
光圈影响的是清晰度和景深。光圈全开(F值小)时进光量大,但边缘像差明显,图像四周容易发虚;收到F8-F11附近,镜头光学性能通常最好,但进光量下降,可能需要补光。对视觉系统来说,光圈不是“越大越亮就行”,而是要平衡亮度、景深、清晰度三个方面。
畸变直接破坏标定关系。普通FA镜头在画面边缘会有1%-3%的畸变,如果是测量项目还不做畸变校正,那边缘像素精度会严重失真。可能你中心区域像素精度是0.02mm,到了边缘实际偏差已经到了0.1mm以上。
分辨率这个参数很多人忽略。镜头的分辨率要和相机传感器匹配,不要用一个200万像素的镜头去配500万像素的相机,那样拍出来的图并不会更清晰,只是把镜头的模糊能力放大罢了。
1.3 计算示例:从精度反推镜头选型
假设一个项目要求:检测物体尺寸,公差±0.05mm,视野50mm×40mm,工作距离大约200mm。
第一步,按公差除以5到10的经验值确定像素精度。如果按5倍经验,像素精度需要0.01mm/像素;如果按更常规的10倍,则0.005mm/像素。取0.01mm/像素,那么相机水平分辨率至少需要50÷0.01=5000像素,大概需要800万-1000万像素的相机。
第二步,计算所需焦距。已知视野50mm,传感器水平尺寸约11mm(2/3英寸芯片约8.8mm,1英寸约13.1mm),工作距离200mm,焦距f满足:
f = 工作距离 × 传感器尺寸 ÷ 视野宽度
如果选2/3英寸相机(水平8.8mm),f = 200×8.8÷50 = 35.2mm,那就选35mm或接近的镜头;如果选1/1.8英寸相机(水平约7.2mm),f = 28.8mm,选30mm左右的镜头。
第三步,校核景深。光圈放到F8左右,近摄到200mm时景深通常只有几毫米,对于平面检测够用,但如果被测物体有高度差,就要重新核算或改用小光圈。
这套流程走下来,你会发现三个变量在互相制约:精度决定相机分辨率,工作距离和视野决定焦距,然后镜头参数又反过来影响精度。所以选型一定是从需求到相机到镜头一条线算下来,而不是先定相机再随便配个镜头。
2. 镜头选型核心参数详解:看懂这几个参数,不被销售忽悠
2.1 焦距与视野:先定工作距离,再算焦距
焦距是镜头最基础的参数,决定成像视角。视野 = 传感器尺寸 × 工作距离 ÷ 焦距,这个公式可以变形成很多用法。实际选型时,你面临的选择本质上是:工作距离能不能自由调?如果能,那就根据想要的视野选焦距;如果不能,只能通过换镜头来匹配视野,或者改变相机靶面。
有个工程经验分享给你:选型时预留20%的视野余量。比如计算视野需要50mm,实际选型时控制在60mm左右。因为现场安装总有偏差,工件定位也有波动,视野太卡边界,调试时非常痛苦,稍微偏一点就出视线。但是这个余量不能太大,否则像素精度会下降,又要重新核算。所以余量是平衡出来的,没有固定值,我一般控制在10%-20%之间。
2.2 靶面与接口:镜头要做到“像场覆盖芯片”
靶面是镜头可以清晰成像的圆直径。选型时要保证镜头的靶面大于等于相机的传感器对角线尺寸。如果你用2/3英寸相机,却配了一个1/2英寸的镜头,画面四周会发黑变暗,这就是像场不够,俗称“黑角”。
接口方面,工业相机主要是C接口和CS接口。C接口法兰距17.526mm,CS接口法兰距12.526mm,两者差5mm。CS接口相机装C接口镜头时需要一个5mm接圈,反过来C接口相机装CS接口镜头则装不上。这个小细节经常坑新手,上电后发现怎么都对不上焦,其实多半是接口法兰距不对。
另外,现在很多小型设备用M12接口镜头,也就是那种“拇指相机sensor镜头选型”里常出现的类型。M12镜头体积小、成本低,特别适合嵌入式视觉、内窥镜、微型模组。但它的像质、畸变控制和MTF普遍不如C接口工业镜头,而且M12镜头的CRA(主光线角)必须严格匹配sensor,否则边缘偏色非常明显。
2.3 光圈、景深与进光量:永远是三难选择
光圈这东西,对视觉工程师来说是个“不可能三角”:要亮度就得开大光圈,要景深就得收小光圈,要边缘清晰度最好收两档光圈,三个需求经常打架。
实际操作中我的经验是,尽量通过灯光解决亮度问题,而不是靠开光圈。理由很简单:光源亮度和角度是可控的,光圈影响的是光学系统的整体表现,开大光圈后边缘像质下降,这个损失很难通过后期补偿。所以一般静态拍摄场景把光圈收到F5.6-F8,动态抓拍或者光源不够亮时再适当开大。
景深公式可以估算,但不建议手算,实际调试时更实用的方法是用相机实时画面配合对焦环:先把光圈开到最大,对焦清晰后再把光圈收到目标值,这时如果图像变模糊,说明景深不够,需要收光圈或增加工作距离,或者换用景深更大的镜头。这套“先大光圈对焦、再收光圈验证”的流程,比任何公式都直观。
2.4 畸变、MTF与分辨率匹配:衡量镜头光学质量的标尺
畸变分桶形畸变和枕形畸变,普通FA镜头畸变在1%-3%,远心镜头可以做到0.01%-0.1%。测量项目对畸变的容忍度很低,要么选低畸变镜头,要么做畸变标定补偿。这里要提醒一句:标定补偿是标定板法,精度受标定板本身精度限制,如果镜头畸变太大(比如广角镜头),标定模型也会吃力。所以做精密测量时,直接选低畸变镜头是最省事的路。
MTF(调制传递函数)是评价镜头分辨率的曲线,横轴是空间频率(lp/mm),纵轴是对比度。选型时看MTF曲线,关键看两个点:一是中心视场在传感器极限分辨率处的对比度,二是边缘视场的衰减程度。说人话就是,让镜头分辨率大于相机sensor的极限分辨率,最好是1.5倍以上,这样传感器的像素潜力才能被完整发挥出来。
2.5 CRA主光线角:边缘偏色和亮度不均的隐形元凶
CRA(Chief Ray Angle)这个词在选型时最容易被忽略,但实际项目里出了问题却很要命。每个CMOS芯片的感光元件上其实有一层微透镜阵列,光线只有以某个角度入射,才能最高效率地进入感光单元。这个最佳入射角就是sensor的CRA。如果镜头的CRA和sensor的CRA不一致,就会导致整个画面的边缘进光量偏少,表现出来就是四周偏暗,甚至偏色。
对于引脚相机、拇指相机这类小型化sensor,CRA匹配尤为重要。芯片本身尺寸小、像素小、微透镜更陡,对入射角更敏感。选型时有两个路子:一是选择专门匹配该sensor设计的镜头,厂商一般会标注CRA兼容范围;二是用软件匀光补偿,但这是个治标不治本的办法。所以当你发现图像边缘偏暗怎么打光都救不回来时,优先怀疑CRA不匹配。
3. 不同应用场景下的镜头选型思路:一种镜头打不了天下
3.1 高精度尺寸测量:优先远心镜头
远心镜头最大的特点是在一定景深范围内,放大倍率恒定,几乎没有透视误差。意思是物体在镜头前后移动一点,成像大小不变,这就是远心效果的巨大优势。普通FA镜头在物距变化0.5mm时,图像尺寸就会跟着变,对公差严格的测量项目来说直接致命。
所以当检测精度要求高、被测物体有高度方向的波动、或者需要稳定的尺寸测量时,我的建议是优先考虑远心镜头,不要先想着用普通镜头加算法补偿。远心镜头的缺点是体积大、价格贵,但和选错镜头导致项目反复调试、无法验收比起来,这点成本不算什么。
3.2 缺陷检测场景:镜头与打光方案的配合是关键
很多缺陷在原始图里对比度很低,比如金属表面的细微划痕,只靠普通环形光照射,划痕方向不同,有时拍得出来有时拍不出来。这里镜头能做的事情有两件:一是选择带偏振功能的镜头或加偏振片,压制反光;二是根据光源角度选配合适的镜头工作距离和视角,让有效反射光更多地进入镜头。
举一个最常见的搭配:低角度环形光配合同轴光,镜头垂直安装,用来检测表面划痕和污点。低角度光把划痕变成高亮线条,同轴光补平整体亮度。如果镜头视角太陡或者工作距离太近,会把环境反光也收进来,反而降低对比度。所以打光方案不是只调光源,镜头的位置、高度、角度要一起参与设计。
3.3 3D视觉项目对镜头的特殊要求
3D项目的镜头选型和2D有很大区别。激光三角法要求镜头与激光平面有一定的夹角,对镜头的畸变控制和景深要求更高,因为测量范围在Z方向有深度,景深不够会造成部分测量区域失焦。结构光3D相机对镜头的CRA、色差控制要求也更高,因为投影图案和成像镜头必须准确对位。
做3D入门时最容易犯的错是拿普通2D镜头硬套,结果重建出来的点云边缘扭曲严重。建议在做3D方案时,直接咨询镜头厂商是否有专门用于激光三角或者结构光场景的型号,这些镜头通常在近红外波段的透过率、景深表现和畸变控制上做了优化。
3.4 大视野、运动抓拍与线扫应用
大视野静态检测一般选FA镜头或CCTV镜头,成本可控,视野可以做到几百毫米。但如果是大视野还要求高精度,就要考虑拼接多相机或者用更高分辨率的相机和更高解像力的镜头。
运动抓拍场景则要关注镜头的通光量和快门配合,运动物体曝光时间短,光线不足时要么加大光源功率,要么开大光圈,但开大光圈后景深变浅,运动物体轻微跳动就可能脱焦。这时一个常见做法是提高光源亮度和频闪,用相机外触发抓拍,让镜头光圈保持中等,兼顾景深和亮度。
线扫相机的镜头选择是完全另一套规则,因为线扫芯片是一个长条状,普通面阵镜头在边缘可能覆盖不了线扫芯片的整个长度,需要专门的大像面、高解析度镜头。
4. 一遍完整的镜头选型实操:从需求到上线的全过程
4.1 需求确认与约束盘点
我这里拿一个真实做过的小项目来当例子。客户要检测一个金属连接件的长度,规格要求80mm±0.1mm。现场安装空间限制,相机离工件大概300mm高度,工件在流水线上会被机械手转过来转过去,但检测时是静止状态。产线节拍要求每秒检测一个,所以相机帧率不能太低。
先把约束整理成清单:
- 检测内容:长度尺寸
- 公差:±0.1mm
- 视野:至少100mm uper per side,为了看全整个零件加浮动余量
- 工作距离:约300mm
- 精度要求:按公差1/5,像素精度需要达到0.02mm/像素
- 环境光:现场有环境灯,需要加偏振或遮光
4.2 相机与镜头参数反向推导
按像素精度0.02mm/像素、视野100mm计算,水平方向需要的像素数=100÷0.02=5000像素。按这个数去选,500万像素相机水平分辨率是2448,显然不够;1200万像素相机水平约4096,勉强但余量不足;2000万像素相机水平约5472,比较稳妥。
于是选了2000万像素、2/3英寸的相机,传感器水平尺寸约11mm(以具体型号为准)。焦距计算:
f = 300mm × 11mm ÷ 100mm = 33mm
所以选35mm焦距的FA镜头比较合适。同时考虑像场,2/3英寸相机需要镜头靶面≥11mm,市面上多数FA镜头都是按1英寸或2/3英寸设计,选2/3英寸及以上的型号即满足。
4.3 镜头型号确认与备选方案
在这个焦距和靶面的约束下,市场上可选的范围已经很小了,基本上在几家主流品牌之间对比。对比时我重点看三个指标:MTF在sensor极限分辨率处的表现、畸变量、最近工作距离。
这台2000万像素相机sensor的极限分辨率大概是:水平5472像素分布在11mm宽度上,约497lp/mm对应的奈奎斯特频率。实际镜头不需要完全跑到这个值,但至少要能在该频率下保持一定对比度。我选了某型号8mm定焦产品线里的35mm版本,官方标注支持2000万像素,MTF在中心视场可用。
备选方案是换1.1英寸靶面的相机配50mm镜头,但视野和工作距离的关系要重新算,成本也会上升。如果现场的300mm是硬约束,那这条备选就直接排除。
4.4 现场安装调试关键步骤
镜头到场后,第一件事不是直接锁死,先做一套快速对焦流程。把光圈开到最大,用对焦环找到最清晰位置;然后收光圈到F8,观察图像是否依然清晰;如果变模糊,则微调对焦环,找到一个在F8下最清晰的平衡点;最后锁死调焦环和光圈环。
这一步很多人做反了,先用小光圈对焦再开大光圈用,结果一开大光圈图像就虚。因为小光圈景深大,掩盖了对焦不准的问题;光圈一开大,焦点不准马上暴露。所以先大光圈对焦、后收光圈验证,才是正确顺序。
然后要检查画面四角的亮度均匀性。用一个均匀白色物体当拍摄目标,看四角和中块的灰度差。如果四角明显偏暗,先检查镜头靶面是否够大、接口是否装到底,再排查CRA匹配问题。如果四角偏色,则需要怀疑镜头和sensor的CRA不匹配,或者光源本身的色温均匀性差。
5. 现场常见问题与排查技巧实录
5.1 图像模糊:先别急着换镜头
模糊类问题我是按这个顺序排查的:先看是否对焦不准,用清晰度评价工具或肉眼放大看边缘;再检查光圈是不是被碰了,光圈环有没有误动;接着看镜头前镜片有没有脏污或起雾;最后才怀疑镜头本身质量问题。
有几次项目“莫名其妙”变模糊,最后发现都是设备维护人员清洁时手滑拧了光圈环。所以机台上的镜头,我习惯在调好后点一滴螺纹胶或者做记号,防止别人误操作后你看不出来。
5.2 测量精度漂移:多半是机械位置变了
精度漂移比模糊更隐蔽,因为图像看起来很正常,但测量值和实际值对不上。最常见的两个原因:一是镜头锁紧螺丝松动,镜头稍微倾斜,画面边缘畸变等效值就会变;二是相机支架热胀冷缩或受到振动移位。处理方法也很粗暴有效:做一次标定验证,用标准量块拍照测量,如果数值偏了,检查镜头、相机、光源的机械固定。
我建议测量类项目至少每周做一次标准件复核,出现问题马上能定位到是光学还是机械的问题。
5.3 边缘偏暗偏色:CRA一票否决
边缘偏暗不一定都是CRA的锅,先排除靶面不足、遮光筒遮挡、光源角度问题。如果这些都没问题,那基本可以断定镜头和sensor的CRA不匹配。之前我做一款拇指相机模组,镜头换了两家供应商都偏色,最后看到sensor datasheet里CRA是22度,而镜头规格书标注CRA是28度,才找到真正原因。所以选型之前一定要拿到sensor的CRA值,再和镜头规格书对比,不匹配就直接放弃,别指望后期软件能完全修复。
5.4 品牌选择与预算取舍的实话
很多人在选镜头时会搜索品牌排名之类的信息,实际上工业镜头选型不是选“最好”的品牌,而是选“最匹配”的型号。高端品牌在MTF、畸变、一致性和使用寿命上确实更稳,但价格可能是国产镜头的数倍。如果项目是研发样机或者小批量,国产头部品牌的FA镜头完全够用;如果是大批量出货或者高精度测量场景,建议选进口一线品牌或者国产高端线,减少批间一致性带来的麻烦。
另外提醒一点,购买镜头时尽量要求供应商提供同批次样机测试,别只看型号规格。同一型号不同批次的镜头在实拍MTF上可能有细微差异,测量项目里这可能会直接决定验收是否通过。
写在最后的一个小经验
做了这么多年视觉项目,我最大的感受是:镜头选型这件事,一旦选错,后面花十倍的时间都补不回来。它不像软件算法可以通过迭代来修复,光学器件装上去之后,物理缺陷就定死了。所以我的习惯是项目方案阶段就把镜头参数一项一项过完,从靶面、接口、焦距、光圈到CRA、畸变、MTF,每一条都有结论之后才下单。
如果你现在正准备给新项目选镜头,不妨按这篇文章的思路先做一次完整推导,把数值都写下来,再有针对性地去和供应商确认。这套流程看起来很繁琐,但能帮你少走很多弯路。真正踩过几次“镜头坑”之后,你会明白:镜头选得好,项目调试就成功了一半。