2026 工业视觉“最后一米”白皮书:准确率 99% 的检测系统,5% 过检率一年白扔 1,337 万!
2026-11-03 11:19:00
#CEO#CIO#设备动力总监#自动化研发总工#CISO (首席安全官)
序章:一条每年白扔 1,337 万的产线,和一套“准确率 99%”的系统
工业视觉是制造业里人工智能落地最普遍的场景,也是最容易被讲成算法故事的场景。行业报告的通行写法是三个数:市场规模多大,渗透率多少,检出率从 95% 提到 99%。
这套写法的问题在于,它把一件物理问题讲成了软件问题。而在真实的产线上,决定检出上限的那一环,恰恰不发生在软件里。
一条产线的账本
先算一笔账。一条中等规模的自动化产线,日产一万件,单件制造成本算到检测这道工序为止,是十五美元。
这条产线的检测工位上装了一套视觉系统,供应商的验收报告写得很体面:准确率 99%,检出率 99% 以上,误杀率低于 2%。
一年之后,质量部的月报上,废品率没有下降,返工区反而多了一个人。系统没有报故障,日志里也没有异常,因为每一次判废都执行了“正确的流程”。
问题出在过检。良品被判成不良品,进了废品箱或者返修台,这一路上没有任何一个环节会把它标记为“检测系统的错误”。
把数字摊开:日产一万件,过检率 5%,每天五百件良品被判废或返工。按单件十五美元计,每天七千五百美元。按二百五十个工作日计,一年一百八十七点五万美元。
按 1 美元兑 7.13 元人民币折算,一年 1,337 万元人民币。这个数字的来源不复杂,复杂的是它从来不出现在检测系统的成本表里。
对照一下量级:一条中等规模自动化产线的设备投资,行业通行量级是一千万元。也就是说,5% 的过检率,一年吃掉 1.34 条产线。
这笔钱在财务报表上进入了三个科目:废品损失、返工工时、制造费用。它没有一个科目叫“检测系统误差”,所以它永远不会被归因到检测系统。
三个被归错因的现场问题
第一个问题:检出率上不去。现场的说法是“算法不行”,于是加算力、换模型、补数据,一轮一轮往下走,模型换到第四代,检出率只挪动了一个百分点。
第二个问题:过检率下不来。现场的说法是“模型不够准”,于是调阈值,把过检换成漏检。账面上的误报率好看了,成本从可见的返工变成了不可见的流出。
第三个问题:换型、换料、换供应商时系统崩掉。现场的说法是“人工智能不稳定”,实际情况是光照条件变了,而系统从来没有为光照变化做过设计。
这三个问题有一个共同点:它们的根因都在同一段物理距离上,而所有的处置动作都发生在另一段距离上。
最后一米:从物体表面到传感器像素
所谓“最后一米”,指的就是从物体表面到传感器像素这最后一段物理距离。这一段走不通,后面所有的神经网络都是在烂图上做无用功。
本篇的核心判断只有一句:在工业视觉里,决定检出上限的是光学,不是算法。算法只能在光学已经给出的信息里做判断,它无法创造信息。
这句话听起来像常识,但把它落到预算表、验收条款、项目立项书上的时候,绝大多数工厂的做法与它相反。
放到云质变这一组白皮书里看,本篇的位置很清楚:046 讲的是“算力喂不饱”,047 讲的是“算力没东西可吃”。两者是同一件事的两端,一个卡在搬运,一个卡在采集。
| 篇号 | 主题 | 解决的问题 |
|---|---|---|
| 041 | 空间智能 | 工厂怎么被重建出来 |
| 043 | 软件定义电机 | 控制律怎么被软件重写 |
| 044 | 模内智能 | 传感器怎么塞进工艺过程 |
| 045 | 一体压铸 | 工艺窗口怎么被硬件约束 |
| 046 | 存储墙 | 算力怎么被带宽卡死 |
| 047 | 最后一米 | 信息怎么被光学卡死 |
本篇不打算写成一本光学教程,也不打算写成一篇唱衰人工智能的文章。它要回答的是一个责任划分问题:哪一段必须由硬件决定,哪一段软件才有发挥空间,交界处应该怎么设计。
第一章 钱花错了地方:相机占 30%,光源占 10%,而决定检出率的是后者
上一章留下了一个问题:为什么明知光学重要,预算却总是流向相机。这一章把成本表拆开看,答案不在工程师的认知里,而在采购流程的激励结构里。
先给结论:工业视觉的预算分配,和决定检出率的因素,是系统性错位的。错位不是失误,是被制度稳定生产出来的结果。
一台检测机的成本清单
一套典型的中国产视觉检测系统,硬件成本结构大致如下。数据口径为系统硬件,不含集成服务与软件订阅。
| 部件 | 占系统成本 | 价格区间 | 对检出率的作用 |
|---|---|---|---|
| 工业相机(含图像传感器) | 25% 至 35% | 200 万像素 GigE 国产 800 至 2,500 元;500 万全局快门 3,000 至 8,000 元;1,200 万科研级 2 万至 5 万元 | 决定采样密度与帧率 |
| 光学镜头 | 10% 至 20% | 标准 C 口定焦 200 元起;高精度远心 3,000 至 15,000 元;高端双远心 2 万元以上 | 决定对比度能传过来多少 |
| 光源 | 5% 至 15% | LED 环形、条形、背光、同轴,加频闪控制器 | 决定缺陷有没有对比度 |
| 图像采集卡 | 8% 至 15% | 单卡 2,000 元至 3 万元以上 | 决定带宽,不决定信息 |
| 其他(线缆、触发、机械、软件许可) | 15% 至 30% | 无统一口径 | 间接 |
相机是最大单项,占系统成本 25% 至 35%。再往下拆一层,图像传感器又占相机物料成本的 40% 至 55%,所以整机里最贵的那颗芯片,是传感器。
光源只占 5% 至 15%。在多数项目里,光源是最后一项被讨论、第一个被压价的部件。
把这两行放在一起看:相机占 30%,光源占 10%,而决定“缺陷能不能在图像里显影”的,是光源的几何、波长和强度;决定“显影后能不能分辨”的,是镜头的调制传递函数。
这不是一个比喻。缺陷在图像里的灰度差,正比于它在那个波长、那个入射角下的反射率差;相机只负责把这个灰度差切成离散的采样点。前者决定有没有,后者决定切成几份。
所以成本表和技术贡献表是两张完全不同的表。成本表上相机最高,贡献表上光源最高。
为什么预算会这样流,看一张采购视角的表就清楚了。
| 器件 | 有无标准参数表 | 能否横向比价 | 能否写进验收条款 | 结果 |
|---|---|---|---|---|
| 工业相机 | 有,分辨率、帧率、接口、靶面 | 能 | 能 | 预算向高端集中 |
| 光学镜头 | 部分有,MTF 需指定条件 | 部分能 | 部分能 | 按倍率与口径比价 |
| 光源 | 无统一口径 | 不能 | 不能 | 按套压价 |
| 采集卡 | 有,接口与带宽 | 能 | 能 | 按接口选型 |
相机有明确的参数表:分辨率、帧率、接口、靶面尺寸,每一项都能写成数字,能横向比价,能招标,能写进合同验收条款。
光源没有标准参数。同样是“环形光”,内径、外径、角度、波长、均匀性、频闪能力、散热衰减曲线全都不同。采购拿着两份报价单,除了价格和外形尺寸,找不到第三个可比项。
于是一个完全理性的采购行为出现了:把可比的买到最好,把不可比的压到最低价。这个行为在单个采购员的考核里是最优的,在整条产线的检出率上是最差的。
结果就是那句话:系统里最贵的那颗器件,是唯一不能被追责的那颗;最便宜的那颗,决定了全部上限。
采购流程怎样制造错位
错位不是一次决策造成的,是三个流程环节叠加出来的。
第一环是立项。立项书要求填设备清单与预算,清单按“相机、镜头、光源、工控机、机架”分项。这一栏的颗粒度,已经决定了光源只能填一个总价。
第二环是招标。招标需要技术规格书,规格书需要可验证的参数。光源的“对比度交付”没法在招标文件里写成一句话,所以被简化成“亮度满足现场要求”。
第三环是验收。验收标准写的是“系统准确率不低于 99%”,而不是“在某波长某角度下,某类缺陷的灰度差达到多少”。前者可以在一批良品上轻松跑出来,后者需要设计实验。
三环走完,预算结构就被锁死了。下一次项目照着上一份清单复制,错位被固化成模板。
更麻烦的是,这套模板在验收时是“通过”的。因为准确率这个指标在良品占绝大多数的数据集上,天然容易达标。
一个 2% 不良率的数据集,把所有样本判成良品,准确率就有 98%。这就是准确率指标的结构性缺陷,第二章会把它算到底。
把成本占比和贡献权重画在一张图上,落差会非常直观。左侧是钱,右侧是能力,中间的缺口就是本篇要讨论的全部空间。

图 1 预算错配
图里那句注脚值得单独记住:最贵的那颗器件是唯一不能被追责的那颗,最便宜的那颗决定全部上限。这不是讽刺,是采购制度在信息不对称下的必然产物。
错位的三个后果
后果一,检出率上不去,被归因为算法不行。于是继续加算力、换模型、加数据,进入死循环。每一轮都花钱,每一轮都不解决信息缺失。
后果二,过检率下不来,被归因为模型不够准。于是调阈值,把过检换成漏检。成本从可见的返工变成不可见的流出,账面上反而好看了。
后果三,换型、换料、换供应商时系统崩掉,被归因为人工智能不稳定。实际是光照条件变了,同一个缺陷在新材料上的反射率差掉了一个数量级。
三个后果的共同结构是:硬件造成的问题,用软件的动作去修补,修补的成本被记在软件账上,硬件账始终干净。
这个结构一旦形成,就会自我强化。软件账越花越多,硬件账越看越省,下一轮预算继续向软件倾斜。
软件在这条链上的位置
说清楚一件事:本篇不是要否定软件。检测环节的分类、定位、分级,判定环节的阈值与代价函数,调度环节的多光照融合,这些都是软件的主场,硬件做不了。
要区分的是两类工作。一类是在已有信息上做判断,软件效率极高,而且越做越好;另一类是创造本来不存在的信息,软件做不到,做多少次都是拟合噪声。
判断一个视觉项目该往哪边投钱,有一个很朴素的检验方法:把同一张图给两个人看,一个资深检验员,一个刚入职的检验员,如果两个人都说“看不出来”,那这个问题不该交给算法。
反过来,如果资深检验员能看出来而新人看不出来,那是经验问题,是数据与模型能解决的。这条线划得很粗,但足够挡住大部分错误投资。
本章的软硬分界可以压成一句话:成像环节硬件说了算,软件在这里没有领地;检测与判定环节软件说了算,但它的输入质量由硬件决定。
把预算表倒过来看
如果按“对检出率的贡献”重排预算,顺序会变成:光源、镜头、相机、采集卡、其他。这个顺序与成本表几乎相反。
这不意味着要把光源买到最贵。它意味着光源必须从“辅材采购”变成“系统设计输入”,在立项阶段就锁定几何、波长、频闪与安装基准。
一个可操作的换算:光源预算从占系统成本 10% 提到 20%,在一条千万元级产线上是几十万元级别的增量。而 5% 过检率对应的年损失是 1,337 万元。
这个对比不是让每个项目都去加光源预算,而是说明一件事:在光源上省下的钱,和它在过检上造成的损失,不在一个数量级上。
下一章要把“两类错误”的成本算清楚。因为只有把 FA 与 FR 的钱分开记,才能解释为什么“准确率 99%”这个看起来很好的数字,会把系统推向错误的方向。
第二章 两个错误,两种命运:FA 与 FR 的成本差 200 万倍
第一章讲的是钱怎么花错了。这一章讲更基础的一件事:检测系统会犯两类错误,而这两类错误的代价差了两个数量级以上,所以它们本来就不该被同一个指标平均。
先把两类错误分开命名,因为现场最常见的混乱,就来自把两者混成一个“准确率”。
两类错误,两种承担者
FA 是误接受,也叫逃逸:不良品被判成良品,流到客户手里。它的分母是不良品总数,承担者是客户端。
FR 是误拒绝,也叫过检、误杀、overkill:良品被判成不良品,进了废品箱或返修台。它的分母是良品总数,承担者是制造方。
两个指标的分母不同,这件事决定了一切。当不良率很低时,即使逃逸率很高,对总数的影响也很小;而当良品基数很大时,即使过检率很低,绝对数量也很大。
| 维度 | FA(误接受,逃逸) | FR(误拒绝,过检) |
|---|---|---|
| 定义 | 不良品被判为良品 | 良品被判为不良品 |
| 分母 | 不良品总数 | 良品总数 |
| 承担者 | 客户端与终端用户 | 制造方 |
| 目标 | 关键安全件 0%;外观件不超过 0.1% 至 1% | 传统规则式系统 5% 至 15% |
| 单次成本 | 一次汽车召回直接执行成本约 3,000 万美元 | 单件制造成本约 15 美元 |
| 可见性 | 高,会变成投诉、索赔与召回 | 低,混在废品与返工里 |
表里最后一行是关键。FA 会变成一封客户投诉邮件,会变成一次召回公告,会有一个明确的负责人。FR 不会,它只会让这个月的废品率略微上升。
目标值也说明了这个不对称:关键结构件与安全件的 FA 目标写的是 0%,而 FR 在传统规则式系统上是 5% 至 15%,复杂件更高。
一个目标是零,一个目标是十几个百分点。这不是行业懈怠,是两类错误的成本结构不同导致的必然结果。
一次逃逸值多少钱
把 FA 的成本落到一个具体数字上:一次汽车召回的直接执行成本,量级是数千万美元。取中值 3,000 万美元。
再把 FR 的成本落到一个具体数字上:单件制造成本算到该工序为止,约 15 美元。
两个数字放在一起,比值是 3,000 万美元除以 15 美元,等于 200 万倍。
这个 200 万倍不是精确的财务结论,它是一个量级判断:两类错误的代价不在同一个数量级上,差了六个数量级。
六个数量级意味着什么?意味着任何把两者简单平均的指标,都会被低成本的那一类完全支配。
一个系统如果把 10,000 件里的 500 件良品判废,同时一件不良品都没漏,它的“准确率”仍然是 95%。这个数字看起来只是“略低于 99%”。
但它的真实经济后果是每天 7,500 美元的废品,而它避免的逃逸成本可能是零,因为那一批里本来就没有不良品。

图 2 FA与FR成本差
算例 B:200 万倍是怎么算出来的
倍数只是第一步,真正能用的是期望成本。把两类错误放进同一个式子里算。
设不良率为 p,逃逸率为 a,过检率为 r,批量为 N,单次逃逸成本为 C_FA,单件过检成本为 C_FR。
期望成本 E 等于 N 乘 p 乘 a 乘 C_FA,加上 N 乘 (1 减 p) 乘 r 乘 C_FR。第一项是漏出去的钱,第二项是白扔掉的钱。
代入一组典型参数:N 等于每天 10,000 件,p 等于 2%,a 等于 0.1%,C_FA 等于 3,000 万美元。
FA 项等于 10,000 乘 2% 乘 0.1% 乘 3,000 万,等于 6,000 美元每天。注意这里 2% 乘 0.1% 之后只剩万分之零点二,把 3,000 万压到了六千。
再代入 FR 一侧:r 等于 5%,C_FR 等于 15 美元。FR 项等于 10,000 乘 98% 乘 5% 乘 15,等于 7,350 美元每天。
| 项目 | 计算过程 | 结果 |
|---|---|---|
| FA 项 | 10,000 乘 2% 乘 0.1% 乘 3,000 万 | 6,000 美元每天 |
| FR 项 | 10,000 乘 98% 乘 5% 乘 15 | 7,350 美元每天 |
| 合计 | 两项相加 | 13,350 美元每天 |
结论很直接:在这组参数下,FR 项 7,350 美元每天,已经超过 FA 项 6,000 美元每天。
也就是说,“为了压低漏检而收紧阈值”这个常规做法,在这组参数下会让总成本上升。因为每多抓一个真缺陷,要多误杀几十个良品。
这不是说阈值应该放松。它说的是阈值必须算,而不能凭感觉调,更不能用一个叫准确率的数来代表。
期望成本公式与它的边界
公式的价值在于它逼你把四个参数写出来:p、a、r、C_FA。这四个数在多数工厂里都没有现成的。
p 可以从历史不良率拿到,a 需要出货后的客户端反馈,r 可以从返修台统计,C_FA 最难,通常只能给一个量级估计。
参数不全的时候,公式仍然有用。它的用处不是算出一个精确的钱数,而是暴露哪个参数最不确定、哪个参数最值钱去测。
边界条件必须说清楚:当 p 上升到 10%,也就是高风险工艺时,FA 项会放大五倍;当 C_FA 上升到安全责任级别,比如电池热失控,FA 项会反超 FR 项。
在那两种情形下,收紧阈值是正确的,甚至应该收紧到接近零逃逸。所以阈值不是固定的,必须按 p 和 C_FA 实时计算。
这条边界也解释了为什么同一条产线上的不同工位,应该用不同阈值。安全件工位和外观件工位,用同一套参数是不合理的。
准确率为什么是有害指标
到这里可以正面回答“准确率 99% 为什么有害”。
准确率把两类错误放在同一个分子里:判对的样本数除以总样本数。这个定义隐含了一个假设,两类错误等价。
真实成本函数差六个数量级。所以这个假设不是“简化”,是错误。基于一个错误假设去优化,优化的方向必然偏。
云质变判断
准确率 99% 是一个有害指标,因为它把两件成本差 200 万倍的事,当成同等权重来平均。
在 2% 不良率的数据集上,全判良品的系统准确率是 98%。一个辛苦调优的模型做到 99%,看起来进步了一个百分点,实际上它的价值全在把那 2% 里的东西抓出来。
用准确率做验收指标,最直接的后果是:供应商有动机把系统调向“少报警”。少报警能让准确率好看,而少报警的代价是漏检。
本篇的立场很明确:验收指标必须是双指标,FR 与 FA 分开写,各自带口径,各自带目标值。单指标验收在这个成本结构下必然失真。
下一章把 FR 这一侧单独拿出来算。因为 FR 是唯一一个“每年都在发生、但从来没人把它归因到检测系统”的成本项。
第三章 5% 的过检率,一年吃掉一条产线
第二章给了公式,这一章给一个能直接拿去开会用的数。5% 的过检率到底值多少钱,算一遍就清楚了。
之所以要单独算这一项,是因为它是视觉项目里最大的一笔隐性支出,也是唯一一笔在报表上没有名字的支出。
算例 A:从 500 件到 1,337 万
第一步,算被判废或返工的件数。日产 10,000 件,过检率 5%,10,000 乘 5% 等于 500 件每天。
第二步,算日损失。单件制造成本算到该工序为 15 美元,500 乘 15 等于 7,500 美元每天。
第三步,算年损失。按 250 个工作日计,7,500 乘 250 等于 1,875,000 美元,也就是 187.5 万美元。
第四步,折人民币。按 1 美元兑 7.13 元,187.5 乘 7.13 等于 1,336.9 万元,约 1,337 万元。
| 步骤 | 计算 | 结果 |
|---|---|---|
| 日误杀件数 | 10,000 乘 5% | 500 件每天 |
| 日损失 | 500 乘 15 美元 | 7,500 美元每天 |
| 年损失 | 7,500 乘 250 | 187.5 万美元 |
| 折人民币 | 187.5 乘 7.13 | 约 1,337 万元 |
对照量级:一条中等规模自动化产线的设备投资约 1,000 万元。1,337 万元约等于 1.34 条产线。
这个对照之所以有冲击力,是因为它把一笔分散在十二个月、分散在几十个批次、分散在几百个工单里的钱,压缩成了一个能被决策层看见的数字。
现场很少这样算。现场算的是“这个月废品率 1.8%,比上个月 1.6% 高了”,然后去找工艺原因。

图 3 过检成本曲线
同样一条产线,如果过检率从 5% 降到 1%,能省多少。
新的日误杀件数是 10,000 乘 1% 等于 100 件。新的日损失是 100 乘 15 等于 1,500 美元。
新的年损失是 1,500 乘 250 等于 375,000 美元,也就是 37.5 万美元。
节省额是 187.5 减 37.5,等于 150 万美元。折人民币 150 乘 7.13,等于 1,069.5 万元,约 1,070 万元。
这 1,070 万元,就是光学改造这笔投资的天花板。任何一项改造,只要成本低于这个数,且能把 FR 从 5% 压到 1%,在财务上就是成立的。
一个专用光源加频闪控制器约 10 万元。一次打光方案重构加验证,量级是几十万元。两者相加,仍然在 1,070 万元的一个零头以内。
这就是本篇反复强调的那句话的经济含义:不是光学重要,是光学的投入产出比在这个数量级上高得反常。
过检为什么查不到根因
过检损失在财务报表里不叫“检测系统错误”,它叫“废品”和“返工”,所以永远查不到根因。
这句话值得展开。一件良品被判废,会计处理是计入废品损失;一件良品被判返修,会计处理是计入返工工时。两个科目都不指向检测设备。
于是每个月质量分析会上,讨论的是“为什么这个月废品多了”,而不是“为什么检测系统多判了”。前者会导向工艺排查,后者才会导向光学排查。
更细一层:即使有人怀疑检测系统,也没有数据支撑。因为多数系统只记录“判定结果”,不记录“判定依据”,更不记录“当时的光照条件”。
一个可操作的补救:在返修台加一道覆写登记。操作员每否决一次系统判定,记录缺陷类别、工位号、当班光照状态。连续记四周,过检的分布就出来了。
现场统计给出的过检真实原因排序是:光照第一,检测区域第二,定位与夹具第三,缺少良品样本第四,阈值第五。
这个排序和多数人的直觉相反。大家习惯先调阈值,而阈值排在最后一位。
也就是说,前四位的原因都不在算法里。这是本篇最想让人记住的一个排序。
AIAG 三档判据与现场现实
行业里有一套现成的判据,来自 AIAG 的测量系统分析手册:误报率低于 5% 可接受,5% 到 10% 是边缘,高于 10% 不可接受。
| 误报率区间 | 判据 | 现场含义 |
|---|---|---|
| 低于 5% | 可接受 | 多数外观件项目的设计目标 |
| 5% 到 10% | 边缘 | 需要额外复检人力兜底 |
| 高于 10% | 不可接受 | 系统实际上被人工接管 |
这条判据的问题在于,它只说“可接受”,没说“可接受的成本是多少”。5% 在判据里是及格线,在账本上是一年 1,337 万元。
所以判据要用,但不能只用判据。判据回答“系统合不合格”,账本回答“这个项目值不值得做”。
还有一个参照系:人工目检的准确率约 80%,也就是大约五分之一的不良品会被漏掉。Sandia 的研究更狠,受过训练的检验员把良品判成不良的比例达到 35%。
把这两个数放在一起看,会发现人工的问题主要在过检一侧,而机器的优势恰恰在这里。像素级分割的 AI 相比人工,逃逸率可以低到九分之一。
这也是为什么 AI 检测在复杂件上能站住脚:不是因为它比人更懂缺陷,是因为它比人更稳定,不会在第八个小时开始放松标准。
一个可核对的现场案例
重庆有一家汽车电子制造基地,在复杂电路板组件检测上做过一次完整改造,数据是公开的。
改造前,传统自动光学检测在这类复杂板件上的平均误判率约 5%。这个数字和本篇算例的假设一致。
部署 AI 三维自动光学检测之后,误判率降到 0.1% 以下,产品直通率提升到 99.9%。
换线编程时间缩短 50%,新产品切换压缩到 30 分钟以内。每条产线的复检岗位从 3 人减到 1 人。
支撑这次改造的训练数据是数十万张不同角度、不同光照的图片。注意这句话里的两个“不同”:角度和光照是数据多样性的来源。
这个案例说明的不是“AI 很强”,而是“把光照维度打开之后,AI 才有东西可学”。数十万张里最有价值的那部分,是不同光照条件下的同一类缺陷。
边界条件:返修、回流与交期
算例 A 有一个强假设:被误判的件全部报废,无法返修。这个假设在多数场景下偏保守。
如果可返修,损失应按返修成本计,而不是全成本。返修通常占全成本的 20% 至 40%,量级会下降,但仍然显著。
如果良品可以回流产线,损失主要是产能占用与交期延误。这种情况下钱不直接体现在废品科目,而体现在交付履约上。
还有一层常被忽略:反复返修会带来二次损伤。外观件每多一次拆装、清洗、复检,划伤概率就上升一次。
所以 1,337 万元应该被理解为一个上限估计,而不是一个精确值。它的用途是量级判断与优先级排序,不是财务入账。
这一章把“过检值多少钱”算完了。下一章要回答更前置的问题:为什么会有过检。答案不在阈值里,在对比度里。
第四章 对比度是物理,不是算法:0.03 毫米划痕的 1,000 倍差
上一章说,过检的第一位原因是光照。这一章解释为什么。因为光照决定的不是图像的“好看程度”,而是缺陷在图像里到底存不存在。
先立一句判据:相机检测的是对比度,不是缺陷。这句话不是修辞,是物理事实。
云质变判断
相机检测的是对比度,不是缺陷。这句话不是修辞,是物理事实。
相机看的是亮度差
一个像素记录的是一个数:在曝光时间内进入这个像素的光子数转换成的灰度值。
缺陷要能被检出,它在图像上对应的像素,灰度必须和周围背景像素有明显差异。这个差异叫对比度。
对比度的物理来源是反射率差。缺陷与背景在某个波长、某个入射角下,把光反射进镜头的比例不同,于是亮度不同。
这个链条上没有任何一环涉及“缺陷是什么”。相机不知道那是划痕、是凹坑还是油污,它只知道这个位置比旁边暗一点或者亮一点。
所以当工程师说“这个缺陷检不出来”,准确的表述应该是“这个缺陷在我当前的光照几何下,没有产生足够的亮度差”。
这两句话的处置方式完全不同。前者会去换模型,后者会去换打光。
算例 C:0.26 个灰阶
取一个具体工况:0.03 毫米宽的划痕,位于抛光铝表面。
明场照明,光从相机同侧以高角度正面入射。抛光表面把大部分光镜面反射回镜头,画面整体明亮。划痕是一条细窄的斜面,它散射出去的光,只有不到 0.1% 进入镜头。
把这个比例写成相对亮度:明场下划痕的相对亮度约等于 0.001。
换暗场,光以低角度掠射。平整区域把光反射到镜头之外,画面背景接近全黑。划痕的斜面正好把散射光送进镜头,接近 100% 进入。
暗场下划痕的相对亮度约等于 1.0。两者相除,1.0 除以 0.001,等于 1,000 倍。
把这个倍数换成 8 位图像的灰度。满量程 255,背景灰度设为 200。
明场下划痕的灰度是 200 加上 255 乘 0.001,约等于 200.26。它与背景的差是 0.26 个灰阶。
暗场下划痕的灰度是 0 加上 255 乘 1.0,等于 255。它与背景的差是 255 个灰阶。
| 条件 | 散射进镜头的比例 | 相对亮度 | 8 位灰度 | 与背景差 |
|---|---|---|---|---|
| 明场(正面高角度) | 不到 0.1% | 约 0.001 | 200.26 | 0.26 灰阶 |
| 暗场(低角度掠射) | 接近 100% | 约 1.0 | 255 | 255 灰阶 |
0.26 个灰阶是什么概念。典型工业相机的噪声底是 1 到 3 个灰阶。也就是说,这条划痕的信号比噪声还小一个量级。
这不是算法问题,是信息不存在。任何模型在这张图上都做不出稳定检出,因为它拿到的输入里,缺陷与背景的差异低于随机波动。
同一条划痕,在暗场下有 255 个灰阶的差。这个差异大到不需要算法,一个阈值判断就能检出来。
1,000 倍的差距,全部来自光的入射角。这个角度在采购单上是一个词,在现场是一套支架的安装位置。

图 4 明场暗场对比
明场、暗场与它们的失效场景
打光方式不是风格选择,每一种都有明确的适用与失效边界。把边界列清楚,比记名字有用。
| 方式 | 几何特征 | 适合 | 不适合 |
|---|---|---|---|
| 明场 | 正面高角度,通常大于 45 度 | 平面、哑光、轻纹理 | 抛光件、镜面件,会产生眩光 |
| 暗场 | 低角度掠射,通常小于 15 度到 45 度 | 划痕、毛刺、颗粒等凸起与凹坑 | 曲面件、位置跳动大的工件 |
| 背光 | 透射,工件在光源与相机之间 | 轮廓剪影、尺寸测量、透明件内部缺陷 | 不透明件的表面缺陷 |
| 同轴 | 经半透半反镜,光与镜头同轴 | 镜面、抛光金属、硅片、玻璃 | 大面积曲面、深腔 |
| 穹顶或无影 | 半球漫射,多方向均匀入射 | 曲面、高反光工件的整体外观 | 需要方向性对比的细微缺陷 |
| 偏振 | 光源与镜头前各置一片正交偏振片 | 压制镜面反光,看表层下纹理 | 非双折射材料效果有限 |
| 条形或环形 | 大面积、方向性对比 | 中小视野的通用场景 | 极高对比要求的微缺陷 |
| 结构光 | 投射条纹或编码图案 | 三维形貌 | 高反光、透明、运动件 |
表里最值得看的是“不适合”这一列。它比“适合”更能决定项目成败,因为多数失败案例不是选错了适合项,是撞上了不适合项。
暗场的失效很典型。它对平面度极敏感,曲面件的不同位置入射角不同,画面会出现大片亮度不均。
暗场还会放大表面粗糙度。一个正常加工的纹理面,在暗场下可能呈现大量亮点,被算法判成密集缺陷。
这就是为什么“换个暗场试试”这句话在现场经常无效。暗场不是万能钥匙,它必须与工件几何匹配。
明场的失效同样明确。抛光铝、不锈钢镜面板、镀铬件,在正面高角度下会产生镜面眩光,整个视场被一片高亮覆盖。
这类工件要用同轴或者穹顶,用漫射把方向性打散。但漫射会同时压低对比度,所以同轴之后往往还要靠波长再拉一次差异。
分辨率的正交性
分辨率和对度比是两个正交维度。买相机买的是前者,检出率取决于后者。
正交的意思是:提升一个不会自动提升另一个。把相机从 500 万像素换到 5,000 万像素,采样密度提高十倍,同一块面积上的像素数变多。
但每个像素看到的仍然是“这个位置的反射光强”。如果缺陷与背景在那个光照条件下没有亮度差,多切十份还是零。
云质变判断
分辨率是对比度的正交维度。买相机买的是采样密度,检出率取决于对比度。
反过来也成立。对比度很好而分辨率不足,缺陷会糊成一团,尺寸测不准、分类分不清。这时该加的是像素。
所以选型要问两个独立的问题:这个缺陷在我这个光照下有没有对比度;它在我这个像素密度下占几个像素。
第一个问题决定能不能看见,第二个问题决定看见了能不能分清。两个问题都不能用另一个的答案代替。
云质变判断
明场下那条 0.03 毫米的划痕,只散射了不到千分之一的入射光。你换再好的镜头,它传过来的仍然是千分之一的千分之一。
这句引用值得停一下。它说的不是“镜头不好”,是“镜头的工作是传递,不是创造”。
反方:买更贵的相机和镜头能不能解决
这个观点在现场很有市场,值得公正对待。
成立的部分:高质量镜头的调制传递函数更高,畸变更小,远心镜头能消除透视误差,对测量精度的提升是实打实的。在精密测量场景,镜头升级往往是最直接的改善手段。
不成立的部分:镜头只能保留对比度,不能创造对比度。明场下 0.03 毫米划痕的散射光不到 0.1%,再好的镜头也只能把这 0.1% 更完整地传到传感器,它传过来的仍然是 0.1%。
本篇立场:镜头决定“传得多完整”,光源决定“有没有得传”。顺序不能颠倒。
这个顺序为什么不能颠倒,用一个比喻说清楚:镜头是一条管道,光源是水源。管道可以从漏水的换成密封的,但水源没水的时候,密封得再好也是空的。
实践上的含义是:先做对比度测算,再做镜头选型。顺序反了,会出现“买了双远心镜头,缺陷还是看不见”的典型浪费。
下一章讲镜头这一侧的天花板。因为一旦对比度有了,第二个约束立刻出现:这个对比度能不能被完整地传到传感器。
第五章 MTF 天花板:为什么 5,000 万像素救不回一颗烂镜头
第四章解决了“有没有对比度”。这一章解决“对
解锁后续 88% 内容