3. 主观图像质量评估:ITU-R BT.500标准、MOS评分、双刺激法
图像质量好不好,谁说了算?
客观指标能测出信噪比、解析力,但最终看监控画面的还是人眼。我见过不少项目,实验室数据漂漂亮亮,一到现场就被客户吐槽「这画面看着不舒服」。说白了,客观数据是骨架,主观评价才是血肉。
这一章,我们就聊聊怎么用标准化的方法,让「人眼说了算」这件事变得靠谱、可重复。
3.1 为什么需要主观评价?
客观指标有它的局限性。举个例子,一个算法把噪声抹得干干净净,PSNR 可能很高,但画面像塑料一样,细节全丢了。这种「塑料感」,客观指标很难量化。
主观评价的核心价值在于:
- 捕捉真实体验:人眼对纹理、肤色、运动拖尾的敏感度,是客观指标无法完全模拟的。
- 发现「隐藏」问题:比如闪烁、色彩跳变、边缘振铃,这些在单帧指标里看不出来。
- 验证调优方向:算法改了一版,客观指标涨了 0.5 dB,但人眼看是不是真的变好了?主观评价说了算。
3.2 ITU-R BT.500 标准:主观评价的「宪法」
ITU-R BT.500 是国际电信联盟制定的主观图像质量评估标准。它不是什么高深理论,而是一套操作手册——告诉你测试环境怎么搭、人员怎么选、流程怎么走、数据怎么处理。
这套标准的核心要素包括:
| 要素 | 要求 | 说明 |
|---|---|---|
| 观察环境 | 暗室或半暗室 | 背景亮度、显示器色温、观看距离都有明确规定 |
| 观察者 | 至少 15 人 | 包含专家和非专家,视力或矫正视力正常 |
| 测试序列 | 时长 10-30 秒 | 覆盖典型场景,包含参考序列和测试序列 |
| 评分尺度 | 5 级或 11 级 | 5 级最常用:5-优秀,4-良好,3-一般,2-较差,1-很差 |
| 数据处理 | 剔除异常值 | 用 95% 置信区间或标准差筛选无效评分 |
你可能会问:「为什么环境要求这么严格?」
我举个例子。你在办公室日光灯下看屏幕,和在家暖色台灯下看,对同一张图的色彩感受完全不同。如果不控制环境,不同实验室的结果就没法对比。标准的意义就在于此——让主观评价变得可重复、可比较。
3.3 MOS 评分:把感觉变成数字
MOS(Mean Opinion Score,平均意见分)是主观评价最常用的量化指标。简单说,就是让一群人打分,然后取平均。
但这里有个坑:直接平均是不行的。
正确的做法是:
- 收集原始评分:每个观察者对每个测试序列给出 1-5 分。
- 计算每个观察者的均值与标准差:了解每个人的打分习惯。
- 剔除异常观察者:如果某人的评分与群体均值偏差过大(比如超过 2 个标准差),剔除他的数据。
- 计算 MOS 值:对剩余评分取平均。
- 计算置信区间:通常报告 95% 置信区间,表示结果的可靠性。
下面是一个典型的 MOS 数据处理流程:
# 伪代码示例:MOS 计算与异常值剔除
scores = load_all_scores() # 形状: [观察者数, 测试序列数]
# 1. 计算每个观察者的均值
observer_means = mean(scores, axis=1)
# 2. 计算群体均值和标准差
global_mean = mean(observer_means)
global_std = std(observer_means)
# 3. 剔除异常观察者(偏差 > 2σ)
valid_observers = []
for i, m in enumerate(observer_means):
if abs(m - global_mean) <= 2 * global_std:
valid_observers.append(i)
# 4. 计算 MOS 和 95% 置信区间
valid_scores = scores[valid_observers, :]
MOS = mean(valid_scores, axis=0)
CI = 1.96 * std(valid_scores, axis=0) / sqrt(len(valid_observers))
3.4 双刺激法:让对比更公平
双刺激法(Double Stimulus)是 ITU-R BT.500 中最常用的方法之一。它的核心思想是:让观察者同时或先后看到参考序列和测试序列,然后对比打分。
为什么需要双刺激?
因为人眼的「记忆」很不靠谱。你单独看一张图,觉得还行;但如果你先看一张原图,再看一张处理过的图,差距一下子就出来了。双刺激法就是利用这种对比,让评分更敏感、更准确。
常见的双刺激法有两种:
| 方法 | 流程 | 适用场景 |
|---|---|---|
| DSIS(双刺激损伤尺度) | 先看参考序列,再看测试序列,然后给测试序列打分 | 评估处理后的图像相对于原图的损伤程度 |
| DSCQS(双刺激连续质量尺度) | 参考和测试序列随机交替播放,观察者对两者分别打分 | 比较两种处理算法的优劣,或评估整体质量差异 |
我个人更常用 DSCQS。为什么?因为随机交替播放能有效消除「顺序效应」——观察者不会因为先看了哪个序列而产生偏见。
3.5 主观评价的完整流程
把上面这些串起来,一个完整的主观评价实验应该这样走:
- 准备阶段:搭建标准环境(暗室、校准显示器)、准备测试序列(包含参考和测试)、招募观察者(至少 15 人)。
- 培训阶段:给观察者讲解评分尺度,播放几个示例序列让他们熟悉流程。注意,不要透露哪个是参考、哪个是测试。
- 正式测试:按双刺激法播放序列,观察者打分。每 20-30 分钟休息一次,避免视觉疲劳。
- 数据处理:剔除异常值,计算 MOS 和置信区间。
- 结果分析:对比不同算法的 MOS 值,结合置信区间判断差异是否显著。
下面这张图展示了整个流程的结构:
3.6 实战中的常见问题
理论说完了,聊聊我在项目中踩过的坑。
- 观察者疲劳:一次测试超过 30 分钟,评分质量就会明显下降。我现在的做法是:每 20 分钟强制休息 5 分钟,并且准备一些轻松的背景音乐。
- 「天花板效应」:如果所有测试序列质量都很高,观察者会倾向于打 4-5 分,导致区分度不够。解决办法是加入一些「锚点」序列——质量明显较差或较好的序列,拉宽评分范围。
- 序列长度选择:太短(< 5 秒)观察者来不及形成印象;太长(> 30 秒)容易疲劳。我一般用 10-15 秒的片段,刚好能覆盖一个完整的场景变化。
- 显示器校准:这个经常被忽略。不同显示器的亮度、色温、伽马值差异很大。我建议每次测试前用校色仪校准,至少保证白平衡和亮度一致。
3.7 小结
主观图像质量评估,说白了就是「让一群人用标准化的方法看画面,然后打分」。ITU-R BT.500 给了我们操作框架,MOS 把感觉变成数字,双刺激法让对比更公平。
但别忘了,工具只是手段。真正重要的是:你知不知道自己要评估什么?是噪声、色彩、清晰度,还是整体观感?目标不同,测试设计也不同。