ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

远心镜头原理与选型:消除视差,提升机器视觉测量精度

远心镜头原理与选型:消除视差,提升机器视觉测量精度 做机器视觉测量这些年我换过不少镜头但真正让我意识到“普通镜头在测量面前有多无能为力”的是一次PCB连接器针脚高度测量的项目。被测针脚只有3mm高当它在料盘里因为定位公差前后浮动1mm时同一颗针脚在画面里的实测长度能差出40多个像素换算成实际尺寸误差接近0.2mm——这个精度在3C行业根本没法交付。那之后我才系统地研究了远心镜头原理也踩了不少坑。这篇就把我对远心镜头从原理到选型再到现场集成的全部理解写出来希望能帮到正在被类似问题折磨的朋友。1. 普通镜头在测量场景中的“致命缺陷”视差与被测物高度变化1.1 一个让我换掉整批镜头的实测案例去年接了一个连接器插针检测项目。针脚顶部到焊点平面有一定距离视觉系统要先定位焊盘位置再测量针脚偏摆和高度。最初方案用的是500万像素相机加普通35mm定焦工业镜头标定做完精度看起来没问题测标准块也能到0.05mm以内。可一上产线就出问题料盘里的连接器因为来料批次不同高度存在±1mm的波动。结果同一型号的合格品上午测出来合格下午却报NG。找来找去问题不在算法而在镜头本身。关键现象是连接器平面靠近镜头时画面里的针脚长度明显变长远离时变短。这不是被测物真的变了而是普通镜头存在视角针脚顶部和底部在像面上的投影位置发生了相对位移也就是视差。我当时用偏差最大的样本算了一下1mm的高度变化对应画面里约20个像素的长度变化换成远心镜头后同一工况下这个数值降到了1个像素以内。1.2 视差误差的计算逻辑与量化普通镜头观察一个高度为h的物体时物体底部在光轴附近、顶部偏离光轴x距离顶部在像面上的投影位置实际上包含了高度带来的横向偏移。近似关系是偏移量约等于h乘以tanθ其中θ是物体点到镜头入瞳的连线与光轴的夹角。被测物离画面边缘越远θ越大误差越明显物体越高误差也越大。这里给个直观数字假设工作距离200mm被测件高5mm放置在视场边缘距离光轴30mm的位置θ大约是arctan(30/200)也就是8.5度那么由高度引起的横向视差误差就是5mm乘以tan8.5度约0.75mm。注意这个误差不是随机噪声而是系统误差它会随物体在视场中的位置变化而变化软件很难用一个固定系数补偿干净。这也解释了为什么很多项目在实验室用标准块标定后精度很好一到现场就崩。因为标准块是平的、薄的高度为0视差误差没有被激发换成有厚度的真实工件后误差立刻显现。凡是涉及高度方向有尺寸的物体的二维测量都必须严肃考虑视差问题。1.3 边缘位置漂移对测量结果的影响我见过不少工程师试图通过算法修正视差先建立高度-视差模型再根据被测物已知高度做差值补偿。理论上可行现实很残酷。首先被测物高度不是恒定值不同批次、不同工位来料高度本身就在波动你得为每一颗料实时测高这就变成“用测量去修正测量”误差会迭代累积。其次连接器针脚这类物体表面还有倒角、圆弧过渡在斜视角下边缘的灰度梯度方向是倾斜的亚像素边缘检测本身就会产生系统性偏移偏移方向和大小随视角变化固定补偿模型很难覆盖。远心镜头解决的就是这件事它让进入镜头的主光线在物方全部平行于光轴相当于把入瞳推到无穷远。这样一来物体即使有高度顶部和底部在像面上的投影位置不再因为视角差异而错开放大倍率对物距变化不敏感。用远心镜头重新测刚才那批连接器针脚长度读数的稳定性从±0.2mm直接提升到±0.02mm以内。这段经历给我的教训是测量类项目的镜头选型优先级应该从“分辨率优先”改成“光学结构优先”。先确认被测对象有没有高度、有没有可能在视场内发生Z向波动再决定用普通镜头还是远心镜头。这个判断做对了后续的算法压力会小很多。2. 远心镜头的核心光学原理把主光线变成平行光2.1 孔径光阑位置才是关键理解远心镜头不要从“镜片多了几片”这个表象入手而要抓住一个核心孔径光阑的位置。普通镜头的孔径光阑通常位于镜组中间或靠近前方决定进入镜头的是一束有一定夹角的光锥。远心镜头则把孔径光阑放在前组透镜的焦平面上这个位置的变化彻底改变了主光线的走向。要理解这一点先分清两种光线主光线是经过视场中心也就是孔径光阑中心的那条光线它代表了这个视场点光束的“中心轴”边缘光线则是经过孔径光阑边缘的光线。普通镜头中来自物方不同高度点的主光线以不同角度进入镜头相互之间是发散的远心镜头把孔径光阑放在前组透镜的像方焦平面上经过光阑中心的主光线在前组透镜的折射下进入物方后变成了平行于光轴的平行光。用一句话概括普通镜头“看”物体时是有角度的远心镜头“看”物体时是平视的而且视场里的每个点都是平视的。前面算过普通镜头在视场边缘的视角可能达到8度甚至更大而物方远心镜头的远心度可以做到0.1度以下两者差了接近两个数量级。2.2 物方远心入瞳位于无穷远从光学设计的角度讲物方远心镜头把入射光瞳放在了无穷远。入瞳是孔径光阑被前方透镜组所成的像可以理解为从物方看过去镜头“收光”的窗口在哪里。普通镜头这个窗口就在镜头前表面上离物体很近物方远心镜头这个窗口在无穷远意味着无论物体在视场中哪个位置、离镜头多远进入镜头的中心光束都保持平行于光轴。为什么入瞳在无穷远能消除视差因为视差的本质是观察角度随物体空间位置发生变化。入瞳在有限距离时物体在X-Y平面内移动物点到入瞳的连线角度会改变入瞳在无穷远时这个角度恒定为0物体的横向位置不再影响观察角度。于是放大倍率只取决于镜头焦距和像距与物距无关当然这是指在镜头设计的工作物距范围内。这里有个容易混淆的点物方远心并不是对任何物距都严格成立它只在设计的工作距离附近成立。离开设计点太远主光线依然会有微小的不平行度这个残余角度就是远心度指标。2.3 为什么“平行主光线”能消除视差我之前给团队里刚入行的同事讲这个原理用了一个类比你用手机拍远处一栋楼无论你往左走还是往右走楼在画面中的位置基本不变因为楼很远你的位移相对距离可以忽略但如果你拍桌上的一支笔头往左偏笔在视野里的位置就明显往右偏因为笔离你近视角变化显著。远心镜头就是通过光学设计让“被拍摄物体的距离”在光学上表现为无穷远——虽然它物理上可能只离镜头100mm。再回到测量场景。被测物体有高度相当于一个物体的顶部和底部在空间上分处两个不同的“物距”。普通镜头下顶部和底部因为物距不同、横向视角不同成像位置发生相对错动远心镜头下物距变化不再引起主光线角度变化顶部和底部的像面位置关系只由物体本身的几何关系决定不再掺入观察角度的干扰。这就是远心镜头测有厚度物体依然稳定的根本原因。理解到这一层再看远心镜头参数表里的“远心度”就不会把它当成营销词汇了。远心度是实际镜头主光线与光轴的最大残余夹角常见商用镜头做到0.1度以内高端能做到0.02度以下。它直接决定了镜头消除视差的能力上限——远心度0.1度意味着10mm高的物体顶部和底部还能产生约10乘以tan0.1度也就是约0.017mm的残余视差误差对微米级测量来说依然不能忽略。3. 物方远心、像方远心、双远心三种构型的本质差异与选择3.1 三种构型的光路特征远心镜头听起来是一个词实际按孔径光阑位置可以分为三种物方远心、像方远心、双远心。它们的光路特征和用途差异很明显。物方远心孔径光阑位于前组透镜的像方焦平面入瞳在物方无穷远。主光线在物方平行在像方则不平行。这是工业测量中最常用的一种解决的是“物方视差”问题也就是被测物沿光轴方向移动导致的放大倍率变化。大多数2D在线测量项目用物方远心就够了。像方远心孔径光阑位于后组透镜的物方焦平面出瞳在像方无穷远。主光线在像方平行作用是让像面上各个视场点的主光线都以垂直角度照射到传感器上。这在某些带微透镜阵列的CMOS传感器上有意义因为微透镜对入射角度有要求斜射过大会导致边缘亮度衰减。不过现在传感器工艺进步了不少像方远心的需求不如物方远心普遍。双远心孔径光阑在前后镜组之间的共同焦平面上物方和像方主光线都平行。它同时具备物方和像方远心的所有优点放大倍率对物距变化完全不敏感像面照度也更均匀畸变控制更好。代价是结构更复杂、体积更大、成本明显更高。需要连续测量厚度、或者尺寸测量精度进入亚微米级的场景才会认真考虑双远心镜头。3.2 双远心到底贵在哪里不少工程师第一次看双远心镜头的报价都会觉得“离谱”——一支镜头比一台工业相机还贵两三倍。但了解它的设计难度后就能理解。双远心镜头要在保持物方远心的同时再把像方主光线也做成平行这要求孔径光阑两侧的光学组都经过精确设计同时还要在视场范围内把畸变控制在极小范围很多标称畸变低于0.05%。普通工业镜头畸变做到1%都算不错远心镜头直接要求低两个数量级这个设计制造难度直接反映在价格上。这里插一句选型建议如果只是常规的2D尺寸测量物方远心已经能覆盖大部分需求没必要为用不上的像方远心买单。只有当相机传感器本身有严重的角度响应问题、或者测量精度要求已经进入亚微米量级时才值得考虑双远心。预算有限的情况下物方远心加一块高质量的远心光源往往比盲目上双远心更有效。3.3 选型对照表我把三种构型的核心差异整理成一张表方便选型时快速对照类型孔径光阑位置主光线特征主要优势典型成本常见场景物方远心前组透镜的像方焦平面物方主光线平行消除物方视差、放大倍率不随物距变化中等2D尺寸测量、定位像方远心后组透镜的物方焦平面像方主光线平行边缘光垂直入射传感器、照度均匀中等特殊传感器/微透镜匹配双远心前后组共同焦平面物方与像方主光线均平行视差与照度问题同时消除高高精度测量、科研注意这张表只是说明构型差异实际选型还得结合视场大小、工作距离、放大倍率、接口等参数一起看。有些供应商的“双远心”镜头在物方和像方远心上做得并不均衡只看构型名称不看实测远心度依然会掉进参数陷阱。4. 读懂远心镜头参数表放大倍率、景深、远心度与分辨率的真实含义4.1 放大倍率与视场的匹配逻辑远心镜头的核心参数是光学放大倍率它直接决定了视场大小。视场等于相机传感器靶面尺寸除以放大倍率。举个例子相机是2/3英寸传感器靶面约8.8mm乘6.6mm选0.5倍的远心镜头视场就是17.6mm乘13.2mm。这个匹配逻辑和普通镜头用焦距选型完全不同远心镜头通常不看焦距因为它的等效焦距是隐含的直接报放大倍率就够了。选放大倍率时我习惯先算两个约束一是视场必须覆盖被测物的最大轮廓并留出至少10%余量方便产品在产线上有定位公差时依然不跑出画面二是像素分辨率必须满足测量公差要求。像素分辨率约等于相机像元尺寸除以放大倍率。假设像元尺寸3.45μm、放大倍率0.5倍一个像素对应物方6.9μm。如果测量公差是±0.01mm至少需要3个像素来表征一个测量特征这个配置就偏紧了应该考虑更高放大倍率或者更小像元的相机。这里有个常见错误认为放大倍率越大越好。实际上放大倍率越大景深越小对工件放置平面的平整度要求越苛刻。多放大了0.1倍可能就损失几毫米景深工件轻微翘曲就可能超出清晰范围。选型要在视场、分辨率、景深三者之间找平衡点不要单点放大一个指标。4.2 景深公式中的“坑”远心镜头的景深计算有一个工程估算公式景深约等于2乘以允许弥散圆直径乘以工作F数再除以放大倍率的平方。公式里分母是放大倍率的平方这意味着倍率从0.5倍提到1倍景深直接缩到原来的四分之一。很多人只盯着分辨率提升没注意到景深在急剧恶化。实际项目中我会先用这个公式做粗算再结合现场工况决定要不要接受。比如允许弥散圆按2个像元算约7μm工作F数取8放大倍率1倍景深约2乘7μm乘8除以1也就是112μm相当于0.112mm。如果产品靠定位夹具压实平面度能控在±0.05mm以内那还能用如果工件是自由放置在输送带上的平面波动±0.5mm这个景深就完全不够只能降低倍率、缩小光圈或者换景深更大的镜头设计。另外远心镜头的景深范围和普通镜头一样不是对称分布的而是近端浅、远端深一些具体分布和镜头设计有关。调试时不要简单地以焦点为中心正负均匀对半分最好用实际工件在不同Z高度下拍一组图确认清晰范围真正落在哪一段。我习惯在装配时把焦平面稍微往后调一点让景深范围覆盖工件底部到顶部的所有关键特征面。4.3 远心度与畸变两个容易被混淆的指标远心度和畸变是远心镜头参数表里最容易被混为一谈的两个指标但它们的物理意义完全不一样。远心度描述主光线与光轴的夹角衡量的是镜头“消除视差”的能力畸变描述的是像的几何变形程度衡量的是“物像相似性”。一支镜头可以远心度很好但畸变一般也可以畸变很小但远心度一般两者不必然相关。对测量来说畸变可以通过标定补偿掉现在各家的相机标定算法对畸变的处理已经相当成熟多项式模型、样条插值都能把事情做好。但远心度带来的视差误差很难通过标定补偿因为它跟被测物的高度、位置、形状都耦合在一起本质上是一种三维效应。所以我选镜头时对远心度的要求比对畸变更严格如果是0.05mm级测量远心度最好在0.1度以内要做到0.01mm级远心度至少得0.03度以下否则高度稍有不一致测量就会漂。说句实在话国产厂商这几年远心度指标已经追得不错了部分管线的出厂实测值并不比进口差但样本一致性有时不如进口。条件允许的话收到镜头后自己做一次远心度抽检方法在第6节展开。5. 远心镜头选型与集成中的实际问题5.1 口径、体积与成本的权衡远心镜头有一个让初次接触的人不适应的特点体积大、重量大、价格高。原因在于物方远心要求入瞳在无穷远为了让一定视场范围内的主光线全部平行进入镜头前组透镜的口径至少要和视场尺寸同级甚至更大。视场30mm的镜头前端口径通常要做到60mm以上视场100mm的镜头前端口径可能超过150mm整个镜头又粗又长。这意味着选远心镜头不能像选普通镜头那样把成本放在最后考虑。先算清楚被测物最大尺寸是多少所需视场是多少这个视场对应的镜头级别直接决定预算量级。100mm以上大视场的远心镜头价格经常是30mm视场镜头的3到5倍。如果产品尺寸确实大又对测量精度有硬要求这笔钱省不了但如果只是定位、引导这类对绝对精度要求不高的任务完全可以用普通镜头加适当标定解决没必要为了“上远心”而上远心。另外提醒安装空间。远心镜头工作距离通常比普通镜头更挑剔加上镜体本身长很多设备原来的机架高度不够不得不加高龙门架或者侧装。我遇到过项目推进到一半才发现安装位和镜头干涉的情况损失不小。建议项目立项时就把镜头选型和机械结构同步设计别等电气图纸都出了再回头换镜头。5.2 光源配合远心镜头不是接上就能用远心镜头对光源的要求比普通镜头严格。普通镜头配合常规环形光源、条形光源就能出不错的图但远心镜头因为只接收平行主光线光源必须能提供足够平行的光否则边缘照明不均匀测量会受影响。最稳妥的方案是远心平行光源。这种光源出射的光本身是准直的以垂直方向照射工件配合远心镜头使用工件边缘非常锐利特别适合测量外轮廓尺寸。如果因为成本或结构限制用不了远心光源也可以用同轴光源或者大尺寸背光源但要控制光源的工作距离和均匀性。我的体会是远心镜头加普通环形光源这种组合经常会在工件边缘出现一圈不均匀的亮带边缘提取的重复性会明显变差得不偿失。背光测量外轮廓时容易遇到一个现象工件边缘在图像里出现一道亮边或暗边这是因为部分边缘光线的入射角度刚好落在镜头远心度允许范围的边缘。遇到这种情况先不要急着改算法尝试稍微旋转光源角度或者调整光源与工件的距离往往就能消除。这个经验在看毛刺、测圆角半径时特别有用。5.3 现场调试的注意事项远心镜头安装时最容易被忽视的问题是光轴与工件的垂直度。远心镜头虽然能消除视差但不能消除“镜头不垂直于被测面”带来的畸变。如果镜头光轴和被测平面存在0.5度的夹角视场内的放大倍率会呈梯形分布测量结果在X方向和Y方向出现系统性偏差。这里分享一个简单验证方法在视场内放一个标准量块分别沿X方向和Y方向移动观察量块长度读数是否变化。如果读数随位置变化优先怀疑光轴不垂直再考虑标定问题。另一个现场常见问题是震动。远心镜头体积大、重心靠前安装在普通铝型材支架上时如果产线附近有电机、气缸等震源画面会出现高频微颤亚像素算法会因此产生假边缘。我的做法是在镜头支架和相机之间增加一块减震垫并且把支架的悬臂长度尽量缩短。测量类项目里机械稳定性对重复精度的影响往往比镜头本身的指标还大这一点容易被只在实验室里做验证的人忽略。最后是标定板的建议。远心镜头的物方主光线平行用普通平面标定板标定时标定板自身的平面度误差会被真实地反映到标定结果里。所以高精度测量项目一定要选择陶瓷或者光学玻璃基底的标定板并确认其平面度指标。亚克力标定板在温度变化环境下会热胀冷缩变形用来标定远心镜头会引入额外误差。6. 我的实测经验哪些场景必须上远心哪些场景可以不用6.1 必须用远心的三类场景结合这些年做过的项目我总结出三类必须优先考虑远心镜头的场景。第一类是有高度特征的2D测量。比如连接器针脚、电子元器件引脚、螺丝螺纹外径这类被测物本体在光轴方向有显著厚度用普通镜头测量顶部和底部特征之间的相对尺寸必然受视差影响。这时候远心镜头不是“可选项”而是“必选项”。第二类是三维位移对测量结果敏感的定位场景。有些项目虽然测的是平面尺寸但来料在Z向存在波动。比如工件放在输送带上输送带本身有起伏普通镜头拍出来的尺寸会跟着一起“呼吸”换远心镜头后就稳定了。这种场景即使被测物本身是平的也需要远心镜头来隔绝Z向干扰。第三类是需要跨视场保持测量一致性的大幅面测量。普通镜头在视场中心和边缘的放大倍率有细微差异虽然可以标定但标定残差依然存在。远心镜头的放大倍率在整个视场内几乎一致批量测量时不同位置测同一个标准件的读数会非常接近对重复性要求高的产线很有价值。6.2 明知道有视差但依然能用普通镜头的场景不是所有测量项目都值得为远心镜头买单我在实际中也会主动劝客户不要乱花钱。如果被测物高度很小比如1mm以内视场相对位置固定Z向波动可控普通镜头加完善的标定完全可以胜任。另外如果任务只是引导机械手抓取、粗定位、二维码识别这类对绝对精度不敏感的应用普通镜头配合畸变标定就够了上远心纯属浪费预算。还有一种情况可以用普通镜头加软件补偿被测物是标准平面高度固定而且只需要测量以某个固定特征为基准的相对尺寸。此时视差误差是一个固定偏移在标定时可以通过基准特征一并补偿掉。但要注意一旦产品换型、高度变化就得重新标定灵活性很差。这个方案只适合单一产品长期稳定的产线不适合柔性生产。6.3 远心度现场抽检一支镜头到手先做这三步最后分享一个我自己常用的远心度抽检流程买回来的镜头建议先做一遍再上产线避免把不达标的镜头装进去以后返工。第一步准备一块精度足够的刻线玻璃标定板放在镜头设计的工作距离处调整光源让图像清晰且亮度均匀拍下此刻标定板上两段距离较远刻线之间的像素距离。第二步用微调机构把标定板沿光轴方向向前移动2mm再拍一张记录新的像素距离再向后移动2mm拍第三张。第三步比较三次读数。如果整个视场放大倍率变化控制在0.1%以内也就是1000像素的刻线读数变化不超过1个像素说明远心度表现基本合格如果超过3个像素那这支镜头的远心度很可能已经明显偏离标称值该找供应商问清楚了。这个方法的原理不复杂如果远心度理想物距变化不应该引起放大倍率变化像素距离保持不变如果远心度不够物距略变读数就会漂。它不需要专门的光学仪器只要有标定板和位移台就能做非常适合现场验货。我这些年每批镜头到货都会抽测两三支确实发现过远心度指标与标称不符的情况而且是某家海外供应商的货所以千万不要迷信品牌。远心镜头说复杂也复杂说简单也简单本质就是把孔径光阑放到焦平面上让主光线在物方变成平行光从而把普通镜头的“视角误差”从源头掐掉。理解到这个层面再看参数表、再选型号心里都会踏实很多。这些年我在测量项目上踩过最大的坑就是早期重算法而轻光学总觉得误差都能靠软件补结果在视差这种物理问题上撞了墙。现在我把这个顺序反过来了先确定光学结构能不能从源头规避误差再谈算法优化。这个思路希望对正在做机器视觉测量的朋友有参考价值。
返回列表