3. 图像质量评价体系
图像质量评价,说白了就是给相机“打分”。但怎么打才公平?怎么打才能指导调优?这背后有一套完整的体系。我个人习惯把评价体系拆成三块:客观指标、主观评价、自动化流程。今天咱们就把它聊透。
3.1 客观指标:用数据说话
客观指标是硬通货。你调没调好,数据一跑就知道。我见过不少工程师凭感觉调参,结果量产翻车——嗯,数据不会骗人。
3.1.1 SNR(信噪比)
SNR 衡量的是信号和噪声的比值。值越高,画面越干净。
- 定义:SNR = 20 * log10(信号均值 / 噪声标准差)
- 典型场景:暗光下 SNR 会骤降,这时候降噪算法就得介入
- 我的经验:曾经有个项目,SNR 在低照度下只有 28dB,画面全是噪点。后来通过调整模拟增益和数字增益的分配,硬是拉到了 35dB。关键是要找到 sensor 的本底噪声拐点。
SNR 参考阈值
| 场景 | 目标 SNR | 说明 |
|---|---|---|
| 白天户外 | ≥ 45 dB | 画面干净,细节丰富 |
| 室内灯光 | ≥ 38 dB | 可接受,轻微噪点 |
| 暗光(10 lux) | ≥ 30 dB | 需要降噪处理 |
| 极限暗光(1 lux) | ≥ 25 dB | 保留主体即可 |
3.1.2 MTF(调制传递函数)
MTF 衡量的是镜头+ sensor 对细节的还原能力。说白了就是“锐不锐”。
- 测试方法:用 ISO 12233 测试卡,拍斜边,算 SFR
- 关键频率:Nyquist 频率的一半(比如 sensor 是 12MP,关注 0.5 奈奎斯特处的 MTF)
- 避坑指南:我曾经遇到过 MTF 数据很好看,但实拍画面很“塑料感”。后来发现是锐化过度了。MTF 高不代表画质好,要结合人眼感知来看。
小技巧:调优时建议同时看 MTF50 和 MTF10。MTF50 反映细节锐度,MTF10 反映边缘过渡。两者差距太大,说明锐化不自然。
3.1.3 Color Accuracy(色彩准确度)
色彩准确度用 ΔE 来衡量。ΔE 越小,颜色越准。
- ΔE < 3:人眼几乎看不出差异
- ΔE 3~6:轻微差异,可接受
- ΔE > 6:偏色明显,需要重新标定
我习惯用 24 色卡做标定。记得有一次,某个红色通道的 ΔE 一直偏高,查了半天发现是 IR cut filter 的透过率曲线在红色波段有异常。嗯,硬件问题有时候会伪装成算法问题。
3.1.4 Shading(亮度均匀性)
Shading 指的是画面从中心到边缘的亮度衰减。理想情况是四角跟中心一样亮,但现实是——镜头天然会带来衰减。
- 指标:通常用“中心亮度 / 四角亮度”的比值,单位是 %
- 目标:> 80% 算及格,> 90% 算优秀
- 调优手段:LSC(镜头阴影校正)查表补偿
注意:LSC 补偿太猛会放大噪声。我曾经在某个项目里把四角补偿到 95%,结果暗光下四角全是噪点。后来改成 85%,噪声和均匀性之间找到了平衡。
3.2 主观评价:人眼才是最终裁判
客观指标再漂亮,最终还是要给人看。主观评价就是让“人”来打分。
3.2.1 ISO 12233 标准
ISO 12233 是图像质量评价的“宪法”。它定义了测试卡、拍摄条件、分析方法。
- 测试卡:包含斜边、死点、灰阶、色彩块等
- 分析项:SFR(空间频率响应)、噪声、畸变、色差
- 我的习惯:每次调优前先跑一遍 ISO 12233 全流程,拿到 baseline。调完再跑一遍,对比 delta。
3.2.2 CPIQ(相机手机图像质量)
CPIQ 是 IEEE 的标准,专门针对移动设备。它把主观感受量化成可测量的指标。
| CPIQ 维度 | 对应客观指标 | 主观感受 |
|---|---|---|
| 纹理锐度 | MTF50 | 画面是否清晰 |
| 噪声 | SNR、视觉噪声 | 画面是否干净 |
| 色彩保真度 | ΔE | 颜色是否自然 |
| 亮度均匀性 | Shading % | 四角是否发暗 |
| 畸变 | TV 畸变 % | 直线是否弯曲 |
CPIQ 的好处是——它告诉你“用户觉得怎么样”。比如 MTF50 很高,但 CPIQ 纹理锐度得分低,说明锐化不自然。这时候就要回头调 sharpening 参数。
3.2.3 用户感知
用户感知是最玄学但也最重要的部分。我总结了几条经验:
- 第一眼印象:用户看照片的前 0.5 秒决定了好坏。曝光、色彩、清晰度是核心
- 放大癖好:用户喜欢放大看细节。边缘的伪像、振铃、色差都会被放大检视
- 肤色优先:人脸肤色偏一点,用户就会觉得“这相机不行”。我专门做过肤色标定,ΔE 控制在 2 以内
用户感知 vs 客观指标对照
| 用户抱怨 | 可能原因 | 对应指标 |
|---|---|---|
| “照片模糊” | MTF 低 / 对焦不准 | MTF50 < 0.3 |
| “噪点多” | SNR 低 / 降噪不足 | SNR < 30 dB |
| “颜色怪” | 白平衡偏 / 色彩标定不准 | ΔE > 5 |
| “四角暗” | Shading 补偿不足 | Shading < 70% |
3.3 自动化测试流程
手动测一遍要半天,自动化测一遍只要 10 分钟。你想想看,哪个更划算?
3.3.1 流程设计
- 准备阶段:固定光源(D65、D50、A 光源)、固定距离、固定测试卡
- 采集阶段:自动切换场景(白天、室内、暗光),每场景拍 5 张取平均
- 分析阶段:跑 SNR、MTF、ΔE、Shading 脚本,生成报告
- 对比阶段:跟 baseline 对比,标红超标项
- 输出阶段:生成 HTML 报告,包含图表和趋势
3.3.2 代码示例(Python 伪代码)
# 自动化测试主流程
def run_iq_auto_test(scene_list):
results = {}
for scene in scene_list:
# 采集
raw = capture_raw(scene.light, scene.target)
# 分析
snr = calc_snr(raw)
mtf = calc_mtf(raw, scene.slanted_edge)
delta_e = calc_color_accuracy(raw, scene.color_checker)
shading = calc_shading(raw)
# 记录
results[scene.name] = {
'snr': snr,
'mtf50': mtf['mtf50'],
'delta_e': delta_e,
'shading': shading
}
# 对比 baseline
report = compare_with_baseline(results, BASELINE)
generate_html_report(report)
return report
自动化避坑:我曾经遇到过自动化脚本跑了一夜,结果发现光源没预热,色温漂移了。建议每次测试前加一个“光源稳定检测”步骤,色温稳定在 ±50K 内再开始采集。
3.4 知识体系总览
下面这张图把本章的核心逻辑串起来了。你一看就明白:客观指标是骨架,主观评价是血肉,自动化流程是神经系统。
3.5 本章小结
图像质量评价不是单点作战。SNR、MTF、ΔE、Shading 是四个核心客观指标,ISO 12233、CPIQ、用户感知是三个主观评价维度,自动化流程把这一切串起来。我个人建议:先跑客观指标拿到 baseline,再用主观评价验证,最后用自动化流程固化。这样调出来的画质,既经得起数据检验,也经得起用户挑剔。
最后提醒一句:不要迷信单一指标。MTF 再高,SNR 低了也是废片;ΔE 再准,Shading 差了也是残次品。平衡,才是调优的真谛。