图像质量评分-综述(BRISQUE、NIMA、RankIQA)

背景

(一搜一大把,不详细介绍)
图像在获取、压缩、处理、传输、显示等过程中难免会出现一定程度的失真,怎样衡量图像的质量、评定图像是否满足某种特定应用要求,这就需要建立有效的图像质量评价体制。
图像质量评价方法可分为主观评价方法和客观评价方法,主观方法就是凭借人的主观感知来评价对象的质量;客观方法则是依据模型给出的量化指标,模拟人的视觉系统感知机制来衡量图像质量。
主观评价方法有很多,国际电信联盟( ITU) 也提出了很多种主观的评价方法和标准,最常用有三种,即双刺激损伤分级法、 双刺激连续质量分级法和单刺激连续质量分级法。双刺激损伤分级法,就是给你两组图像,一组是原始的未失真的图像,一组是有一定失真的图像,实验测评人员根据对比两组图像,再依据图像主观质量5级评分表进行评分。双刺激连续质量分级法,也是同样给定两组图像,但是测评人员并不知道哪个是原始图像,哪个是失真图像。在这个前提下根据评分表分别进行评分。单刺激连续质量分级法是在一定连续时间内,只观察待测图像。观察者根据评分表连续对待测图像评分,根据评分和评分时间得到待测图像的质量评价。
在这里插入图片描述
对应地,客观评价方法也有三类,全参考: 需要和参考图像上的像素点做一一对应的比较;半参考: 只需要和参考图像上的部分统计特征做比较;无参考: 不需要具体的参考图像。
以下为三篇无参考质量评价算法。

经典算法 BRISQUE

论文下载
开源matlab/c++源码
代码需要林智仁教授的libsvm支持
A.Mittal, A. K. Moorthy and A. C. Bovik, “No-Reference Image Quality Assessment in the Spatial Domain,” in IEEE Transactions on Image Processing, vol. 21, no. 12, pp. 4695-4708, Dec. 2012.
算法的大致流程就是:将一张图像(各种失真和程度)表示成一个由人工设计的特征向量,然后使用支持向量机SVM进行分类。
在这里插入图片描述

第1步:提取自然场景统计(NSS)

作者提出,自然图像具有某些规则的统计特性,在归一化像素强度并计算这些归一化强度上的分布的时候,自然图像的像素强度是遵循高斯分布的,而右边人工合成的图像并没有遵循高斯分布,作者的算法也就是基于这个原理设计的。
在这里插入图片描述
首先就是从图像中提取MSCN系数,计算方法就是用原图减去均值再除以方差就可以的大局部归一化的亮度图像矩阵。这样还不行,未失真图像与失真图像的区别并不仅仅是像素上的强度分布,还包括像素与其相邻像素之间的关系。所以,作者采用MSCN矩阵在不同方向的相邻系数值的乘积(水平,垂直,左对角线,右对角线)。
在这里插入图片描述
在这里插入图片描述

第2步:计算特征向量

在上一步,已经从原始图像中获得了5个参数 - 1个MSCN参数和4个相邻元素乘积参数,现在就要用这5个参数来计算尺寸为36×1的特征向量,最终需要得到18个特征向量元素,前两个元素是通过将MSCN参数拟合到广义高斯分布(GGD)来得到的,一个用于形状,一个用于方差。接下来,就是用非对称广义高斯分布(AGGD)分别去拟合之前计算得到的4个相邻元素乘积参数,而非对称广义高斯分布有四个参数:形状,均值,左方差和右方差,所以最后计算可到16个特征向量,一共是18个。还没完,还要将图像缩小到原始尺寸的一半,并重复相同的过程,最终我们得到的特征向量是36个。
在这里插入图片描述

第3步:预测图像质量得分

将训练集中的所有图像的特征向量和输出(质量得分)放入支持向量机(SVM)中进行训练。经过训练模型预测,就得到了每种失真的最终质量得分。
测试结果:
在这里插入图片描述

NIMA: Neural Image Assessment

论文
GitHub非官方复现代码
代码2
H.Talebi and P. Milanfar, “NIMA: Neural Image Assessment,” in IEEE Transactions on Image Processing, vol. 27, no. 8, pp. 3998-4011, Aug. 2018.
NIMA算法是对任意图像都生成评分直方图–即对图像进行1-10分的打分,并直接比较同一主题的图像, 这种设计跟人的评分系统产生的直方图在形式上吻合,且评估效果更接近人类评估的结果。而且这篇论文侧重的是从美学角度进行评分。
在这里插入图片描述
作者是基于CNN进行训练的,就是将CNN的最后一层替换为具有10个神经元的全连接层,然后进行softmax激活,在训练的时候,将输入图像缩放为256×256,然后随机提取大小为224×224的裁剪块。训练的目标是预测给定图像的评级分布。这就是预测结果的直方图和真实直方图的比较。
在这里插入图片描述
可以看出,NIMA接近真实的预测了真实平均分数的分布。右边是标准差的直方图,预测的就不太好了,这也是这篇论文值得改进的地方。这是预测的平均分和真实分数的对比,还是比较好的了。
在这里插入图片描述
这篇论文至此还没有结束,作者还提出了一种想法,就是根据预测得出的直方图来进行图像增强,这是作者进行的简单测试,就是通过尝试不同参数下的得分来选出合适的参数值。
在这里插入图片描述
RankIQA: Learning from Rankings for No-Reference Image Quality Assessment
论文
代码
X. Liu, J. Van De Weijer and A. D. Bagdanov, “RankIQA: Learning from Rankings for No-Reference Image Quality Assessment,” 2017 IEEE International Conference on Computer Vision (ICCV), Venice, 2017, pp. 1040-1049.

这篇论文的主要贡献有两个,一个就是:因为要用深度学习进行质量评分,就需要大量的训练数据,但是已有的数据是远远不够,为了解决数据问题,一般做法就是将图像进行裁剪来增加数据量,但是作者不是这样,虽然要获得一张图片的评分比较难,但是要区分两张图片的质量相对来说是要更简单的,所以作者提出从图片质量的相对比较中进行学习,具体来说也就是将原始图片用不同的失真方法结合不同的失真强度进行失真,这样得到大量不同程度失真的图片。然后利用孪生网络进行训练,孪生网络就是两个网络完全一样,并且共享权值,其实也就是一支当成两支来用。这样它学到的就是不同图片之间的差异,没有精确的标签,最后再用原始数据集进行参数优化就行了。
在这里插入图片描述
第二个贡献就是提出一种更有效的反向传播方法。孪生网络的缺点就是计算量大。在传统方法中,如果有一张原始图像,再加上n张失真图片,那就需要传递n^2-1张图片,作者提出每张图片只传输一次,而且只在损失函数层中考虑所有可能的数据对,这将使需要传输的图片减少为n个。

小结

**研究方向1:**图像质量评分是一个很宽泛的问题,因为导致图像失真的原因很多,这也就导致没有什么算法能够面面俱到,而现有的算法(无论是传统算法,还是深度学习)几乎都是分别针对某一类型的噪声进行训练、处理,但是实际中的噪声可能会很复杂,而且导致图像失真的不全是噪声,还有色调、饱和度等很多因素,对更加符合实际的图形进行处理分析也不失为一个很好的研究方向。 **研究方向2:**目前已有的数据集tid2013、live等,图片数都算不上很多(主要原因是评分难以获取),这对用神经网络进行训练是很不友好的,而目前主流的处理训练方法大多是基于CNN的,那能否另辟蹊径,用只需较少数据就能得到很好训练结果的神经网络进行研究呢? **研究方向3:**训练以后的实际场景应用不足。可以考虑具体问题具体分析,将图片质量评分与实际生活中的问题结合。