对比度、信噪比与动态范围:图像质量的三把尺子

上篇末尾说过,对比度、信噪比和动态范围这三把尺子,现场到底哪个先卡脖子。前两天聊的是镜头和像元能不能把细特征解析出来;解析够了,算法还是抖,多半就落到这三样上。

我碰到过不少案子:边缘看着清楚,灰度差也明明有,阈值一改就误检、一晚上下限就得重调。客户说"相机不够好",其实相机像素早够了,是噪声把可用灰阶咬掉了,或者亮暗两端同时要看,动态范围顶不住。这篇把三把尺子怎么量、现场怎么用说清楚。

对比度有了,不等于算法稳

先说对比度。外观检测里大家最常盯的就是特征跟背景差多少灰阶。亮处灰度 ImaxI_{max}Imax、暗处 IminI_{min}Imin,调制对比度还是那公式:

C=Imax−IminImax+Imin C = \frac{I_{max} - I_{min}}{I_{max} + I_{min}} C=Imax+IminImax−Imin

比如缺陷区平均 60,背景平均 140,差值 80,C=80/200=0.4C = 80/200 = 0.4C=80/200=0.4。肉眼一看很清楚,阈值夹在中间好像也没问题。可一跑产线,同样的件,阈值一会儿偏高一会儿偏低,漏检误检交替出现。

坑就在这儿:对比度是"信号有多大",没告诉你噪声有多大。 平均差 80 看起来很香,如果每帧同一位置的灰度自己就在 ±15 里晃,那这 80 里有一大截是抖出来的,算法边界当然不稳。对比度解决的是"能不能看见",信噪比解决的是"看见的东西靠不靠谱"。

现场我习惯两件事一起看:在特征区和背景各圈一块均匀区域,算均值差,再看各自的标准差。均值差大、标准差也大,别急着高兴,先把光、曝光、增益压一压,把噪声降下来,再谈阈值。

信噪比:用分贝把"信号扛噪声"算明白

工业相机规格书上的 SNR,多数是按线性灰度(或者电子数)用幅度比来算的:

SNRdB=20log⁡10SN \mathrm{SNR_{dB}} = 20\log_{10}\frac{S}{N} SNRdB=20log10NS

SSS 是信号幅度(比如均匀面的平均灰度),NNN 是噪声幅度(同一区域的标准差)。注意是 20·log10,不是功率那套 10·log10。datasheet 里写 40 dB、45 dB,基本都按这个约定。

拿个数算一遍。一块平坦金属面,曝光调好以后平均灰度 S=180S = 180S=180,同一 ROI 里灰度标准差 N=3N = 3N=3:

SNRdB=20log⁡101803=20log⁡1060≈35.6 dB \mathrm{SNR_{dB}} = 20\log_{10}\frac{180}{3} = 20\log_{10}60 \approx 35.6\ \mathrm{dB} SNRdB=20log103180=20log1060≈35.6 dB

35.6 dB 大概什么水平?粗算一下,S/N=60S/N = 60S/N=60,意思是信号大约是噪声的六十倍。阈值如果放在特征和背景正中间,两边各留十来个灰阶的余量,一般还扛得住。要是噪声涨到 N=10N = 10N=10,SNR 掉到 20log⁡10(18)≈25.120\log_{10}(18) \approx 25.120log10(18)≈25.1 dB,同样那条阈值晚上可能就得重调。

再换个说法。想要 SNR 到 40 dB,需要 S/N=1040/20=100S/N = 10^{40/20} = 100S/N=1040/20=100。灰度均值 180 的时候,噪声标准差不能超过 1.8。现场靠加增益硬拉亮度,信号和噪声一起放大,SNR 往往不怎么涨,有时还往下掉------因为读出噪声、量化噪声那部分并不跟光子一起按比例走。能加光就加光,能加曝光就加曝光,比拧增益靠谱。

经验上我自己用的门槛大概是:外观阈值类,均匀区 SNR 能到 30 dB 以上 比较踏实;要做亚像素、细小灰度差的缺陷,我会往 35~40 dB 靠。这些不是国标,是我调机时候的手感,样件对比度低的还得再严一点。

动态范围跟位深不是一回事

第三个尺子是动态范围。相机规格常写 Dynamic Range,近似可以按满阱容量和读出噪声来估:

DRdB≈20log⁡10NfullNread \mathrm{DR_{dB}} \approx 20\log_{10}\frac{N_{full}}{N_{read}} DRdB≈20log10NreadNfull

举例:满阱 Nfull=10000 e−N_{full} = 10000\ \mathrm{e^-}Nfull=10000 e−,读出噪声 Nread=5 e−N_{read} = 5\ \mathrm{e^-}Nread=5 e−:

DR=20log⁡10100005=20log⁡102000≈66.0 dB \mathrm{DR} = 20\log_{10}\frac{10000}{5} = 20\log_{10}2000 \approx 66.0\ \mathrm{dB} DR=20log10510000=20log102000≈66.0 dB

位深呢?8 bit 是 256 级,10 bit 是 1024 级,12 bit 是 4096 级。很多人直接把位深当成动态范围:这俩不是一回事。 位深是把模拟信号切成多少格,动态范围是从最暗可用信号到饱和之间,真实信噪比还撑不撑得住。

极端情况:12 bit 相机,最低几位全是读出噪声在晃,那最低有效位其实已经废了。假如噪声相当于 4 个 LSB,可用灰阶大约只剩 4096/4=10244096/4 = 10244096/4=1024,跟 10 bit 差不多。规格书写 12 bit,你现场当 12 bit 用,暗部一拉就全是雪花,就是这个原因。

反过来,8 bit 理论上限大约 20log⁡10255≈48.120\log_{10}255 \approx 48.120log10255≈48.1 dB,如果传感器本身 DR 有 60 dB 以上,输出却压成 8 bit,等于把可用范围砍了一截。亮处要看反光、暗处要看凹坑的场合,8 bit 往往先顶满,暗部还在噪声里。这时候换 10/12 bit、或者打两套光分别拍,比继续拧 8 bit 的伽马有用。

现场到底哪把尺子先卡脖子

三把尺子怎么排优先级,我自己的经验是看失败模式,别按说明书顺序背。

阈值飘、同样的件今天过明天不过------先查 SNR。对比度看着有,噪声大,边界就会在阈值两侧来回蹭。加光、降增益、适当加曝光、关掉不必要的锐化,通常比换更高像素的相机管用。

亮处已经发白、暗处特征还埋在灰里------先查 动态范围。金属反光 + 黑胶、玻璃边缘 + 内部缺陷,都是典型。光路能分光就分光,一次拍不住就分两次曝光,别指望靠拉伸曲线把两端同时救活。

特征本身就跟背景糊成一片------那是 对比度 的问题,回到打光和镜头解析,SNR 再高也变不出没有的信号。前面几天讲的 MTF、奈奎斯特,管的就是这一头。

还有个容易混的:增益拉高以后直方图拉开了,看着对比度"变好了",其实 SNR 可能在掉。我现场会固定一块均匀区,增益每加一档就记一次均值和标准差,算一算 20log⁡10(S/N)20\log_{10}(S/N)20log10(S/N) 是升是降。升了再继续加,降了就停,回去加光。

说白了,解析力决定你能不能看见细的,对比度决定特征和背景分不分得开,信噪比决定分开以后稳不稳,动态范围决定亮暗两端能不能同框。产线上最折磨人的,往往不是解析不够,而是 SNR 不够稳、或者 DR 两端都要。


下篇聊图像为什么会糊:离焦、运动模糊、衍射,现场怎么一眼分开,各自又该怎么下手。

相关推荐
段一凡-华北理工大学2 天前
高炉炼铁机器视觉与智能识别十八讲~系列文章09:AI 算法基础:从传统图像处理到深度学习的视觉“大脑“
图像处理·人工智能·算法·机器视觉·工业智能化·高炉炼铁智能化·高炉智能识别
段一凡-华北理工大学3 天前
高炉炼铁机器视觉与智能识别十八讲~系列文章05:炉顶料面识别:装料分布判读与布料制度优化
大数据·人工智能·机器视觉·工业智能化·高炉炼铁智能化·高炉炉顶料面识别
朗锐智科_机器视觉4 天前
3C结构件视觉检测实战:尺寸量测与外观缺陷的完整方案设计
机器视觉·工业相机·硬件选型·图像采集卡·朗锐智科
张人玉5 天前
机器视觉VsionPro高级用法——如何使用脚本工具显示CogPMAlignTool工具的X坐标、Y坐标、角度
机器视觉·vsionpro·cogtoolblock工具·conpmaligntool
天赐范式6 天前
天赐范式第185天:让漂变开始定量——扫N看选择主导边界
python·信噪比·数字生命·天赐范式·动态运行时·种群大小·遗传漂变
朗锐智科_机器视觉6 天前
锂电极片缺陷检测实战:从相机选型到系统集成的完整方案设计
机器视觉·工业相机·硬件选型·图像采集卡·朗锐智科·锂电检测
段一凡-华北理工大学7 天前
高炉炼铁机器视觉与智能识别十八讲~系列文章01:机器视觉如何重塑炼铁智能化
大数据·人工智能·机器视觉·工业智能化·高炉炼铁智能化·工业智能识别
朗锐智科_机器视觉8 天前
A3 多相机 + 采集卡:同步、触发与缓存的工程落地
机器视觉·工业相机·多相机同步·硬件选型·图像采集卡
高升说22 天前
机器人上岗之后:视觉系统从 demo 到产线的四道坎
机器人·机器视觉·工业自动化