资讯动态

机器视觉明场与暗场成像:照明选型与缺陷检测调试指南

发布时间:2026/10/30 3:29:45 来源:尧图企业网站定制
1. 明场与暗场为什么值得单独拎出来讲前阵子接到一个检测需求金属拉丝面板上的细微划痕宽度大概 3 到 5 微米深度不到 2 微米。第一版方案用的是同轴光源加远心镜头典型的明场打法图像干净漂亮表面纹理、丝印、倒角全都清清楚楚唯独划痕几乎看不见——只有在特定角度下才能隐约瞄到一条比周围稍亮的线换个工件就没了。折腾了两天才想明白问题不在相机也不在算法在于明场根本就不是为这类缺陷设计的镜面反射把整片表面照得一样亮划痕带来的那点散射光淹没在背景里对比度压到了 1% 以下。换成低角度环形光做暗场照明之后情况直接反转——背景暗下去划痕像被人用刀刻出来一样亮着同一台相机、同一个镜头对比度从个位数跳到 60% 以上阈值分割一次就干净了。这就是机器视觉里明场与暗场的分野。它俩不是“两种灯”的区别而是两条完全不同的物理路径明场收的是镜面反射和漫反射暗场收的是散射。搞不清这一点选型就全靠试试十次中一次剩下九次都在怀疑相机、怀疑镜头、怀疑算法。这篇文章我把这几年在光学成像上踩过的坑梳理一遍从照明几何、参数计算、光型选型一直讲到现场排查适合刚入行做视觉方案的朋友也适合已经能出图但总在某些缺陷上卡住的同行对照着看。文中所有参数和案例都来自通用工程实践具体项目各不相同公式和思路可以直接拿去套。1.1 一句话说清反射光到底进没进镜头判断一个照明方案属于明场还是暗场标准只有一条——照明光经工件表面反射后主反射方向有没有落进镜头的入瞳。落进去了就是明场镜头看到的是一片被照亮的表面灰度差异来自各区域反射率的不同印刷字符、颜色分区、镀层边界都属于这一类。没落进去就是暗场镜头视野里的背景是黑的只有那些把光“打散”的微观结构——划痕边缘、毛刺、颗粒、裂纹、表面凸起——才会把光散射进镜头形成亮信号。这个划分跟用什么灯没有必然关系。同样是环形光装在镜头正下方几十毫米处向下直打是明场放到工件侧面几乎贴着台面斜射就变成了暗场。同样一个同轴光源配普通镜头是明场配带环形反射镜的暗场模块出来的又是暗场。灯是工具几何关系才是本质。我见过太多方案文档把“环形光暗场”“同轴光明场”当成公式写进去结果换一个工件高度整个方案就崩了。提示判断明暗场时别去看光源型号拿张白纸放在工件位置从镜头方向看过去——能看到光源的直接反射像就是明场看到的是一片暗只有边缘发亮就是暗场。这个土办法比任何手册都快。1.2 显微语境和工业视觉语境说的不是一回事这两个词在光学显微镜里已经用了一百多年含义相对固定明场是透射或反射照明光从聚光镜均匀照到样品上样品吸收或反射差异形成对比暗场则是用特殊聚光镜把光变成一束中空的锥形光从样品外围斜射过来只有被样品散射的光才进入物镜。显微暗场的标志性特征是背景全黑、边缘发光看未染色的透明标本、看细菌鞭毛全靠这一手。工业机器视觉借用这两个词的时候语义被放宽了。工业现场的“暗场”往往只是指低角度斜射照明产生的低背景效果并不追求显微暗场那种严格的锥形照明和数值孔径匹配工业现场的“明场”也常常混着漫射罩、穹顶光这类无影照明跟显微明场的均匀透射完全是两个路数。这个语义漂移带来一个实际问题跟供应商沟通时你说“要暗场”对方可能给你一个低角度环也可能给你一个真正的暗场环两者的入射角、工作距离、光通量差好几倍价格也差好几倍。我的做法是沟通时不说名词直接说角度和距离光要以多大角度入射、离工件多高、工件尺寸多大、镜头工作距离多少。把几何参数讲清楚误会就少了大半。1.3 为什么先定明暗场再定其他一套视觉方案里光源、镜头、相机、算法的耦合关系是自上而下的。明暗场的决定实际上决定了三件事信噪比的上限、镜头数值孔径的选择方向、曝光时间的量级。明场下表面亮度高曝光可以压到几十微秒飞拍没问题暗场下只有散射光光通量可能只有明场的百分之几曝光要拉到几百微秒甚至几毫秒这时候运动模糊和振动就成了主要矛盾得反过来要求机构刚性、要求相机灵敏度、要求光源功率。先把这条路定下来后面的选型才有依据。反过来说如果先买了相机再想光怎么打很容易出现“相机分辨率很高但图像全是噪声”或者“光源功率拉满还是一片黑”的尴尬局面。2. 明场成像最熟悉也最容易做坏2.1 明场的照明几何与三个成立条件明场要成立需要三个条件同时满足。第一主反射方向对准入瞳。对于平面工件配同轴光这一点天然成立对于曲面、斜面、拉丝面主反射方向随位置变化就得靠大面积的漫射光源去“包住”这些方向穹顶光、圆顶无影光就是为这个存在的。第二表面反射率差异要足够大。明场靠反射率差异成像如果缺陷和目标区域的反射率接近再怎么调曝光也分不开这时候必须换模式而不是换参数。第三照明均匀性要压得住。明场图像里照度不均会直接变成灰度梯度后面做阈值、做模板匹配都会被这个梯度带偏。均匀性这件事被低估得很厉害。我用过的方案里为了省钱用两颗条形光对打中间亮两边暗中心到边缘的灰度差能到 30 个灰阶做平整表面检测时几乎没法用固定阈值。后来换成积分球式的穹顶光均匀性能压到 ±3% 以内同样的算法直接跑通。光源的钱花在均匀性上回报率比花在功率上高得多。2.2 光源与镜头的匹配计算明场选型里最常用到的几个量我列在这里实际调机时基本靠它们估算起点。镜头半孔径角 α 决定了镜头“能收多大范围的光”α arctan(D / (2 × WD))其中 D 是镜头入瞳直径WD 是工作距离。举个例子某 50 mm 焦距镜头入瞳直径约 25 mm工作距离 200 mm那么 α arctan(25 / 400) ≈ 3.6°。这个角度很小说明镜头只收非常接近光轴的光同轴照明正好对上。视场和像素当量FOV 靶面尺寸 / 放大倍率 M像素当量 像元尺寸 / M假设用 2/3 英寸靶面约 8.8 mm × 6.6 mm、500 万像素、像元 3.45 μm 的相机配 0.5 倍远心镜头则视场约 17.6 mm × 13.2 mm像素当量 6.9 μm。要检测 3 μm 宽的划痕像素当量 6.9 μm 明显不够——这也是前面那个案例里即使换成暗场也得同时提高放大倍率的原因。衍射极限用来判断“加了倍率还能不能看清”d 0.61 × λ / NA取 λ 500 nmNA 0.1则 d ≈ 3.05 μm。也就是说NA 只有 0.1 的普通工业镜头理论分辨率就在 3 μm 量级再往上堆像素是白费。想看清 1 μm 级的细节NA 至少要 0.3 以上工作距离会被压得很短光源的安装空间也跟着变窄这些都得提前算。景深估算DOF ≈ λ / (2 × NA²) 像素当量 / (M × NA)第一项是衍射贡献第二项是几何贡献。NA 0.1、M 0.5、像素当量 6.9 μm 的情况下第一项约 25 μm第二项约 138 μm加起来 160 μm 上下。这个数字很关键——如果工件高度波动超过景深图像会整体发虚明场的对比度会断崖式下降很多人误以为是对焦问题其实是景深不够。2.3 明场做不好的四种典型表现第一种整片发白缺陷发灰。多见于抛光金属、镜面、玻璃这类高反表面。原因是对面有杂散光或者光源功率过曝。处理办法是收小光圈提高对比度、加偏振片压掉镜面成分、把光源调暗。偏振这招在金属件上特别好用起偏片装在光源前、检偏片装在镜头前旋转检偏片到最暗位置镜面反射被压掉一大截表面纹理和浅凹坑反而浮出来。第二种中间亮四周暗。典型的光源覆盖不足或者距离太近。环形光的有效照射区域跟安装高度强相关高度不够时中心过曝、边缘欠曝。经验值是安装高度不小于工件对角线长度的 0.6 倍具体还得看光源的发光角。第三种反光斑随工件移动。曲面件、冲压件上常见。这是明场的固有问题靠调参解决不了只能换漫射照明或者改成暗场。第四种图像很干净但没法测量边缘。这是把明场当背光用的典型错误。做尺寸测量、轮廓提取应该用背光透射明场让工件变成剪影边缘锐利、无内部干扰用反射明场去测边缘边缘两侧都有亮度过渡亚像素精度上不去。3. 暗场成像把散射变成信号3.1 让背景黑下去的三个工程条件暗场要成立条件比明场苛刻。第一照明光的镜面反射方向必须避开入瞳。对于水平放置的平面工件光以与光轴夹角 θ 入射反射光与光轴夹角也是 θ只要 θ 大于镜头的半孔径角 α镜面反射就进不去。实际工程里考虑到工件翘曲、镜头杂散光、表面粗糙度的随机性通常取 θ ≥ 3α 甚至更大常见做法是把光源压到 10° 到 20° 的低仰角让光几乎贴着表面掠射。第二要有足够强的散射体。暗场图像的亮度完全来自缺陷的散射如果缺陷太小、太浅、折射率差异太小散射光弱到淹没在噪声里。这就是为什么暗场对光源功率和相机灵敏度的要求比明场高一个档次。第三环境杂光必须压住。暗场背景本来就只有几个灰阶环境里一点点顶灯、窗户、指示灯的漏光就能把背景抬到几十灰阶对比度全丢。加遮光罩、关掉工位照明、镜头加遮光筒这些都是必须做的基础动作不是可选项。3.2 三条实现路径各有各的适用面低角度环形光是最常见的做法。光源由多圈 LED 组成安装在镜头下方紧贴工件的高度以很小的仰角向外斜射。优点是结构简单、成本低、视场内亮度比较均匀缺点是对工件高度敏感工件上下浮动几毫米入射角就变了暗场效果跟着变。适合平面度好、高度稳定的工件。**暗场环锥形暗场**把 LED 做成一个锥面光线以固定角度汇聚到工件上一点。角度可控性好工作距离有一个明确的最佳值串扰小缺点是对大视场不太友好视场边缘的角度会偏。适合小视场、高倍率、缺陷微小的场合。同轴暗场用环形反射镜把光从侧面引入、经抛物面反射成中空的锥形光束从物镜外围斜射下去。这是显微暗场的工业版入射角由反射镜决定不受工件高度影响稳定性最好代价是结构复杂、价格高、工作距离受限。三条路径没有优劣只有匹配。我在一个透明薄膜检测项目里试过前两种低角度环在小视场里够用但视场放大到 60 mm 宽之后边缘的入射角明显偏小缺陷亮度从中心到边缘掉了 40%最后只能用两侧对称的条形光加弧形反光板自己搭了一套。这类“买不到就自己搭”的情况在暗场里比明场多得多。3.3 暗场调试的参数敏感度暗场调起来比明场费劲因为它的有效信号对参数极其敏感。我一般按这个顺序动先定入射角。从侧上方开始让光源以一个明确的角度斜射一边转一边看图像找到背景最暗、缺陷最亮的那个角度区间。这个区间通常只有几度宽转过去一点背景就亮起来了。再定高度。低角度环的高度决定了光线打到工件上的实际仰角也决定了照明的覆盖范围。高度越低暗场效果越强但覆盖范围越小。工件尺寸大的时候这是一个必须做的取舍。最后定功率和曝光。暗场下我习惯把光源功率开到 70% 以上靠曝光时间调节亮度这样光源的驱动电流稳定色温和输出波动小。曝光时间不要吝啬暗场曝光比明场长五到十倍是常态。但这里有个硬约束曝光时间乘以运动速度不能超过一个像素当量否则运动模糊直接把散射亮点拉成一条线。飞拍场景下暗场要么提高光源功率要么降速没有第三条路。白平衡也要单独说一下。暗场图像整体偏暗自动白平衡基本失效容易偏色。我的做法是先用明场或者标准白板做一次白平衡锁定参数之后再切暗场这样不同批次之间的灰度一致性会好很多。4. 从缺陷特征反推光型选型决策4.1 按几何特征分类的选型对照光型选型不该从“我有什么灯”出发应该从“缺陷长什么样”出发。下面这张表是我自己常用的决策依据按缺陷的几何特征归类比按行业归类靠谱得多。缺陷/目标特征几何本质首选光型备选说明印刷字符、条码、颜色分区反射率差异明场同轴光/穹顶光环形光直打靠反射率差明场效率最高高反表面上的浅划痕微米级散射暗场低角度环暗场环、偏振明场明场下几乎不可见透明件内部裂纹、气泡折射率突变暗场背光偏振散射信号强暗场首选尺寸、轮廓、孔径遮挡背光透射明场同轴光远心剪影边缘锐利亚像素精度高平面度、翘曲反射方向变化明场结构化光栅暗场靠反射条纹形变判断毛刺、翻边、凸起边缘散射遮挡暗场低角度侧光明场侧光侧光造阴影暗场抓边缘深孔内壁、螺纹内部反射同轴光/内窥式多角度环光需要光能进得去表面粗糙度、喷砂均匀性散射强度暗场大角度明场漫射粗糙度直接调制散射强度4.2 组合光型与分时曝光单一光型搞不定的情况太常见了。最典型的是“表面有纹理又要有缺陷”——纹理是镜面反射缺陷是散射一个明场一个暗场物理上就是两条通道。这时候有两条路一是空间上分开用两种光源从不同方向打颜色不同、波长不同用彩色相机分开通道二是时间上分开两种光型分时曝光各出一张图算法融合。时间分开对光源控制器的同步要求高但图像质量可控。我做过一版方案明场曝光 300 μs、暗场曝光 2 ms两张图相差 6 倍曝光用两路触发分别控制各自独立调参出来的两张图分别做不同的检测比强行用一张图兼顾要稳得多。代价是节拍降了一半得跟产线确认能不能接受。空间分开的话用不同波长是个巧办法。红色低角度环做暗场、蓝色同轴做明场彩色相机一拍两得单次曝光同时拿到两个通道。缺点是像素带了彩色滤镜分辨率和灵敏度都要打折扣暗场信号本来就弱再被滤掉一大半很容易不够用。4.3 一套可复现的调试流程我把调试过程固定成六步每次新项目都按这个走能省掉大量来回。估算像素当量先算出能不能看清目标特征像素当量至少要做到特征尺寸的三分之一能做到五分之一更好。确定景深把工件高度公差代进景深公式判断需不需要远心或者自动对焦。明场初打先用同轴光或穹顶光把表面整体照清楚确认视场、对焦、均匀性没问题这是基准图。切暗场试探保持相机参数不变换上低角度环从 30° 开始往下压每 5° 拍一张找背景最暗的那张。双图对比定方案把明场图和暗场图放在一起看缺陷在哪张图上更清楚就说明它的物理属性属于哪一类方案方向就定了。参数固化把光源型号、安装角度、安装高度、工作距离、镜头光圈、曝光时间、增益、白平衡全部记录成表附在方案文档里。第六步最容易被忽略也最要命。同一个方案换个人来调光源高度差 10 mm、光圈差一档出来的图可能就完全不同。我见过一个项目因为调试参数没记录产线换了工装之后复现不出来最后重新调了两个星期。5. 现场问题排查实录5.1 明场问题的速查与处置现象可能原因处置图像整体发灰、对比度低杂散光、镜头脏、光源过曝加遮光筒、清洁镜头、降功率或缩光圈中心亮边缘暗光源覆盖不足、安装太低抬高光源、换大面积穹顶光反光斑随工件移动曲面镜面反射改漫射照明或加偏振图像有彩色条纹光源频闪与相机曝光不同步用恒流驱动或加大曝光避开频闪明场下看不到缺陷缺陷属于散射型换暗场不要硬调参数灰度随批次漂移白平衡未锁定、光源老化锁定白平衡、换新光源、加参考白板明场里我最常处理的是“杂散光”。产线上一个明显的例子机台旁边有一扇窗下午阳光角度变化图像灰度跟着慢慢变算法阈值失效。加了一圈黑色遮光板之后问题消失。这件事不难解决但没人愿意承认问题出在环境光上都在算法里加自适应阈值越加越复杂。5.2 暗场问题的速查与处置现象可能原因处置背景不黑整体发灰环境漏光、光源角度不够遮光、降低入射角更贴近表面缺陷亮度不均中心亮边缘暗视场边缘入射角偏小换大尺寸暗场环、加辅助侧光图像噪声大、颗粒感重曝光不足、增益开太高加曝光、降增益、提高光源功率灰尘、指纹成了主要信号暗场对散射体极度敏感提高清洁度、吹气除尘、增加预处理缺陷随工件浮动时隐时现工件高度变化改变了入射角稳定定心、改同轴暗场同一缺陷忽明忽暗光源频闪或驱动不稳恒流驱动、加大曝光暗场最让人头疼的不是调不出来是太灵敏。有一次在半自动工位上做玻璃边缘微裂纹检测暗场一出图好家伙整个视野里全是亮点——灰尘、擦痕、水渍、工人指纹全在发光裂纹反而找不着了。最后做三件事工位加装吹气嘴检测前吹一次镜头加深遮光筒隔绝斜向杂光算法上加一层形态学过滤把小于 5 个像素的孤立点先剔掉。三招下来信噪比才够用。这件事之后我形成了一个习惯做暗场方案清洁度要当成设计输入不能当成现场条件。5.3 几条踩过坑才愿意相信的经验第一条别指望先定相机再定光。光的物理限定是硬的相机的参数是软的。一个只能靠散射成像的缺陷用再好的相机配明场也拍不出来反过来暗场下背景干净了哪怕用一台普通工业相机信噪比也够。顺序应该是缺陷物理属性 → 光型 → 镜头 → 相机。第二条暗场的曝光余量要留够。明场下曝光调低一点还能靠增益补暗场增益一开高噪声立刻上来图像看着亮其实是噪点。我一般要求暗场方案在正常曝光下目标区域的灰度能达到相机满量程的 40% 以上留出足够的余量应对光源老化。达不到就换更强的光或者更大的靶面别在增益上找补。第三条光源的角度比功率重要十倍。同样一个 10 W 的环形光角度调对和调错出来的暗场对比度能差十几倍。调机的时候宁可多花半小时转角度也别急着上更大功率的灯。第四条把明场图存成基准。每换一次工装、每调一次光先拍一张明场基准图存着。后面暗场出问题的时候拿基准图一比就能快速判断是光源的事还是工件的事。这个习惯帮我省过好几次排查时间。第五条小心“看起来很好”的图。暗场调得好图像会非常漂亮缺陷亮得刺眼很容易让人忽略它其实不稳定。判断一套暗场方案行不行得连续拍一百张看缺陷灰度的波动范围。波动超过 20% 就得回头查光源驱动和机构稳定性别被第一张图骗了。最后分享一个小技巧调暗场入射角的时候我会在工件位置放一张白纸从侧面用肉眼观察光源在白纸上的投射形状——如果能看到一条锐利的亮带贴着纸面掠过去说明角度压到位了如果看到的是一片模糊的亮斑那就是入射角还太大。这个动作比反复拍图快得多尤其是现场没有实时直方图工具的时候肉眼看一眼就能定个大概方向后面再微调。光学成像这件事说到底是在跟光的传播方向较劲明场管的是反射方向暗场管的是散射方向把这套几何关系在脑子里立起来选型、调试、排查就有了一条共同的主线剩下的就是耐心在现场一遍遍地试。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑