第三章 图像质量评价指标:从信息熵到无参考评价
做图像融合也好,做场景自适应算法也好,最终都得回答一个问题:这张图到底好不好?
我刚开始接触这个领域时,总觉得“好”是个主观感受。后来被项目逼着做量化评估,才发现——没有指标,你连算法好坏都说不清。这一章,我就把常用的几个评价指标掰开揉碎了讲清楚。
核心观点:图像质量评价不是选一个指标就完事,而是要根据应用场景组合使用。单一指标往往有盲区。
3.1 信息熵:图像的信息量有多大?
信息熵这个概念,说白了就是衡量图像里“信息丰富程度”的。熵越大,说明图像细节越多,纹理越丰富。
计算公式很简单:
H = - Σ p(i) * log₂(p(i))
其中 p(i) 是灰度值 i 出现的概率。对于 RGB 图像,我一般分别计算三个通道的熵,然后取平均。
我在项目中遇到过一个坑:两张图熵值一样,但一张是清晰的风景,另一张是随机噪声。为什么?因为噪声的灰度分布也很均匀,熵值自然高。所以,信息熵不能单独用,必须配合其他指标。
| 图像类型 | 典型熵值范围 | 说明 |
|---|---|---|
| 纯色图像 | 0 ~ 1 | 几乎没有信息 |
| 自然风景 | 6 ~ 8 | 纹理丰富 |
| 高噪声图像 | 7 ~ 8 | 熵值虚高 |
| 过曝/欠曝 | 2 ~ 4 | 信息丢失严重 |
我的习惯:在曝光融合项目中,我会先看熵值。如果融合后的熵值比原图还低,说明算法把细节抹掉了,得调参数。
3.2 对比度:图像“通透”吗?
对比度衡量的是图像中明暗差异的程度。高对比度的图像看起来“通透”,低对比度的图像则“发灰”。
常用的 RMS 对比度公式:
C = sqrt( (1/N) * Σ (I(i) - μ)² )
其中 μ 是平均灰度,N 是像素总数。
你想想看,一张雾霾天的照片和一张晴天的照片,对比度能差多少?我实测过,雾霾图对比度通常在 30~50,晴天风景能到 80~120。
我曾经在做一个去雾算法时,只盯着对比度调参。结果对比度上去了,图像也出现了严重的过曝区域。后来才明白:对比度提升要有限度,否则会损失高光和阴影的细节。
避坑指南:对比度指标对噪声敏感。椒盐噪声会显著拉高对比度值,让你误以为图像质量很好。所以,评估前最好先做简单的去噪处理。
3.3 饱和度:颜色够“鲜艳”吗?
饱和度描述的是颜色的纯度。在 HSV 色彩空间中,饱和度 S 的取值范围是 [0, 1]。0 表示灰色,1 表示纯色。
计算方式:
S = (max(R,G,B) - min(R,G,B)) / max(R,G,B)
整图的饱和度指标,我通常取所有像素饱和度的平均值。
嗯,这里要注意:饱和度不是越高越好。我在做 HDR 融合时,曾经把饱和度拉得很高,结果天空变成了诡异的紫色。后来我给自己定了个规矩:饱和度提升幅度不超过原始图像的 30%。
| 应用场景 | 建议饱和度范围 | 备注 |
|---|---|---|
| 监控图像 | 0.3 ~ 0.5 | 优先保证细节 |
| 摄影后期 | 0.5 ~ 0.7 | 自然为主 |
| 广告设计 | 0.7 ~ 0.9 | 可以适当夸张 |
3.4 结构相似性 (SSIM):像不像原图?
SSIM 是我个人最常用的全参考指标。它从亮度、对比度、结构三个维度比较两张图像的相似度。
公式长这样:
SSIM(x,y) = [l(x,y)]^α * [c(x,y)]^β * [s(x,y)]^γ
其中 l 是亮度比较,c 是对比度比较,s 是结构比较。默认 α=β=γ=1。
为什么 SSIM 比 PSNR 好用? 我举个例子:一张图稍微调亮了一点,PSNR 可能掉很多,但 SSIM 变化不大,因为结构没变。这才是符合人眼感知的。
经验值:SSIM > 0.9 表示两张图几乎一样;0.8 ~ 0.9 表示有轻微差异;低于 0.7 说明结构已经明显改变了。
我在项目中遇到过一个情况:融合后的图像 SSIM 很高,但人眼看着就是不舒服。后来发现,SSIM 对局部过曝不敏感。所以,我现在的做法是:先看 SSIM,再配合局部区域的对比度检查。
3.5 无参考图像质量评价:没有原图怎么办?
实际项目中,很多时候你拿不到“完美”的原图做对比。这时候就需要无参考评价指标。
常用的方法有:
- BRISQUE:基于自然场景统计,提取空间域特征,用 SVR 回归预测质量分数。
- NIQE:不依赖失真类型,只从图像本身提取特征,与“自然模型”对比。
- PIQE:基于块级处理,对局部失真敏感。
我个人习惯用 BRISQUE,因为它速度快,而且对常见的模糊、噪声、压缩失真都比较敏感。但要注意:BRISQUE 的分数越低越好,这点和 SSIM 相反。
| 指标 | 分数含义 | 适用场景 |
|---|---|---|
| BRISQUE | 越低越好(0~100) | 通用失真检测 |
| NIQE | 越低越好(0~100) | 无参考对比 |
| PIQE | 越低越好(0~100) | 局部失真敏感 |
避坑指南:无参考指标对训练数据集的依赖很大。比如 BRISQUE 是在 LIVE 数据集上训练的,如果你的图像风格和 LIVE 差异很大,分数可能不准。我建议:用多个无参考指标交叉验证。
3.6 知识体系总览
下面这张图,我把本章的核心知识点串起来了。你可以把它当作一个“评价指标选择指南”。
3.7 实战建议:如何组合使用这些指标?
说了这么多,到底怎么用?我分享一个自己在项目中验证过的流程:
- 第一步:用无参考指标做初筛。BRISQUE 跑一遍,分数高于 50 的直接淘汰。
- 第二步:有原图时,用 SSIM 做精细评估。SSIM > 0.85 才算合格。
- 第三步:用信息熵和对比度做辅助判断。确保融合后的图像没有信息丢失。
- 第四步:人工抽检。选 10% 的样本,肉眼过一遍。这一步不能省。
我的习惯:写一个自动评估脚本,把所有指标跑一遍,输出一个综合评分。评分公式我一般用加权平均:0.4 * SSIM + 0.3 * (1 - BRISQUE/100) + 0.2 * 熵归一化 + 0.1 * 对比度归一化。权重根据项目调整。