一种新的无参考图像质量指标 NIQE
making a completely blind image quality analyzer
介绍
新的模型称之为NIQE(Natural Image Quality Evaluator),这个模型的设计思路是基于构建一系列的用于衡量图像质量的特征,并且将这些特征用于拟合一个多元的高斯模型,这些特征是从一些简单并且高度规则的自然景观中提取;这个模型实际上是衡量一张待测图像在多元分布上的差异,这个分布是有一系列的正常的自然图像中提取的这些特征所构建的。
构建模型
-
空间域上的特征,称之为Spatial Domain NSS
按照如下的方式进行计算,首先是提取图像中的一个个patch,然后做下面这样的一个归一化
I ^ ( i , j ) = I ( i , j ) − μ ( i , j ) σ ( i , j ) + 1 \hat{I}(i,j) = \frac{I(i,j) - \mu(i,j)}{\sigma(i,j)+1} I^(i,j)=σ(i,j)+1I(i,j)−μ(i,j)
其中各项如下所示
μ ( i , j ) = ∑ k = − K K ∑ l = − L L w k , l I ( i + k , j + l ) \mu(i,j) = \sum_{k=-K}^{K}\sum_{l=-L}^{L}w_{k,l}I(i+k,j+l) μ(i,j)=k=−K∑Kl=−L∑Lwk,lI(i+k,j+l)
σ ( i , j ) = ∑ k = − K K ∑ l = − L L w k , l [ I ( i + k , j + l ) − μ ( i , j ) ] 2 \sigma(i,j) = \sqrt{\sum_{k=-K}^{K}\sum_{l=-L}^{L}w_{k,l}[I(i+k,j+l) - \mu(i,j)]^2 } σ(i,j)=k=−K∑Kl=−L∑Lwk,l[I(i+k,j+l)−μ(i,j)]2
这里的 μ \mu μ就是高斯权重,在最初的设计中这里的高斯权重是一个3x3的模板;看到上面的公式,这里就很明确了,上述实际上一个基于高斯平均值以及高斯标准差的一个归一化计算,相对于其他的一些指标,NIQE仅仅是计算正常的自然图像中的这个指标,毫无疑问的是不正常的图像多多少少会在这个指标上同正常图像的计算值会有一个歧离,从这个意义上讲,理论上NSS 可以适用于各种图像退化种类,基于这种思想设计的IQA可以权衡各种图像退化,而不是像某些指标那样仅仅是在某些退化种类上有很好的的表现。 -
patch的选择
如果需要计算上述的NSS指标,毫无疑问的是会造成图像被分裂为一个一个的patch,在NIQE的算法设计中,只有一部分patch是有用的,这就涉及到一个patch的选择问题;这里实际上有一个启发,比如我们关注一个分辨率退化图像时,我们会挑选那些原本应该是sharp的局部边缘进行观察,判断其分辨率是否受损,而不会整个图像的所有patch都观察一遍;这里定义了一种局部形变系数
δ ( b ) = ∑ ∑ ( i , j ) ∈ p a t c h b σ ( i , j ) \delta(b) = \sum\sum_{(i,j)\in patchb}\sigma(i,j) δ(b)=∑(i,j)∈patchb∑σ(i,j)
这里的形变系数设置了一个阈值,在作者的实验中,这个阈值设置的是0.75,大于0.75的patch 可以选入进行下一步计算;这一步的操作是很好理解的,因为毕竟往往是形变系数越大的patch说明里面的内容越复杂,换而言之说明这里的内容所包含的信息更多。这里的 σ \sigma σ就是上面步骤所述的 σ \sigma σ计算 -
描述patch
之前的内容已经说明了patch的空间域特征以及如何选择patch,现在的问题在于如何设计指标来刻画我们选择的patch,这种刻画按照设计是一种借鉴高斯分布思想的指标,首先定义高斯分布类型的指标GGD
f ( x ; α , β ) = α 2 β Γ ( 1 / α ) e x p ( − ( ∣ x ∣ β ) α ) f(x;\alpha,\beta)=\frac{\alpha}{2\beta\Gamma(1/\alpha)}exp(-(\frac{|x|}{\beta})^\alpha) f(x;α,β)=2βΓ(1/α)αexp(−(β∣x∣)α)
这里的 Γ \Gamma Γ是一个gamma 函数
Γ ( a ) = ∫ 0 ∞ t a − 1 e ( − t ) d t \Gamma(a) = \int_{0}^{\infty}t^{a-1}e^(-t)dt Γ(a)=∫0∞ta−1e(−t)dt
根据论文的说法,这里的 α \alpha α, β \beta β是可以通过论文[1]的计算方式获得。NIQE指标设计本身在这一步很大程度上借鉴了参考论文的计算;最终定义并计算了如下的特征
f ( x ; γ , β l , β r ) = { γ ( β l + β r ) Γ ( 1 r ) e x p ( − ( − x β l ) r ) , ∀ x ≤ 0 γ ( β l + β r ) Γ ( 1 r ) e x p ( − ( x β l ) r ) , ∀ x ≥ 0 f(x;\gamma,\beta_l,\beta_r) = \begin{cases} \frac{\gamma}{(\beta_l+\beta_r)\Gamma(\frac{1}{r})}exp(-(\frac{-x}{\beta_l})^r), \forall x\leq 0\\ \frac{\gamma}{(\beta_l+\beta_r)\Gamma(\frac{1}{r})}exp(-(\frac{x}{\beta_l})^r), \forall x\geq 0 \end{cases} f(x;γ,βl,βr)={(βl+βr)Γ(r1)γexp(−(βl−x)r),∀x≤0(βl+βr)Γ(r1)γexp(−(βlx)r),∀x≥0
η = ( β r − β l ) Γ ( 2 / r ) Γ ( 1 / r ) \eta = (\beta_r - \beta_l)\frac{\Gamma(2/r)}{\Gamma(1/r)} η=(βr−βl)Γ(1/r)Γ(2/r)
这样的话,我的候选patch可以经过上述的公式计算出的指标来 -
标准的指标获得
根据上面所描述的总体思路,该算法在于从大量自然图像中计算出合理的指标来,然后再计算退化图像相对于这个指标的“距离”,那么就可以分为两步,第一步计算出这个指标来,第二步如何来衡量这个“距离”。
首先第一步,从上面可以看出借助于高斯行分布的特征设计具有一定的合理性(当然这里的合理性我估计是由参考文献给出的),在这里我就可以定义出一组高斯型分布的密度函数
f X ( x 1 , x 2 , . . . x k ) = 1 ( 2 π ) k / 2 ∣ ∑ ∣ 1 / 2 e x p ( − 1 2 ( x − υ ) T ∑ − 1 ( x − υ ) ) f_X(x1,x2,...x_k) = \frac{1}{(2\pi)^{k/2}|\sum|^{1/2}}exp(-\frac{1}{2}(x-\upsilon)^T\sum^{-1}(x-\upsilon)) fX(x1,x2,...xk)=(2π)k/2∣∑∣1/21exp(−21(x−υ)T∑−1(x−υ))
首先定义这样的一种分布,这代表论文作者认为自然正常图像的特征就应该以高斯分布类型存在;这里的 ( x 1 , x 2 , . . . x k ) (x_1,x_2,...x_k) (x1,x2,...xk)就是上面所述的 η \eta η计算值, υ \upsilon υ和 ∑ \sum ∑就是上述高斯分布的均值和协方差矩阵。作者通过定义了这样的分布,然后在标准的自然正常图像上进行计算,可以刻画出这样的一个正常图像所代表的分布,并且可以根据这些自然图像的分布数据,可以估计出上述的 υ \upsilon υ以及 ∑ \sum ∑这个过程就像一般高斯分布中估计出均值和方差一样。到这里就可以得到正常图像的刻画指标。
其次,定义了不正常图像与正常图像指标间的“距离”
D ( I 1 , I s t a n d ) = ( υ s t a n d − υ 1 ) T ( ∑ 1 + ∑ s t a n d 2 ) − 1 ( υ s t a n d − υ 1 ) D(I_1,I_{stand}) = \sqrt{(\upsilon_{stand}-\upsilon_1)^T(\frac{\sum_1+\sum_{stand}}{2})^{-1}(\upsilon_{stand}-\upsilon_1)} D(I1,Istand)=(υstand−υ1)T(2∑1+∑stand)−1(υstand−υ1)
这里 υ 1 \upsilon_1 υ1和 υ s t a n d \upsilon_{stand} υstand分别代表退化图像和正常图像的 υ \upsilon υ, ∑ \sum ∑含义类似
个人观点
采用高斯分布来处理这些特征有一个基本前提是假设这里所涉及的特征在真实的图像中所反映的也是服从高斯分布的;关于这一点这里没有证明而是假定这是一个事实。
仅仅采用空间域的特征,可能在某些场合并不十分合适,比如严格按照patch的分割方式获得一系列patch,如果我将不同patch在空间上的位置进行对调,这样每一个patch都还能符合该算法的要求,但是很显然那是个马赛克状的退化图像
该方法显然不能很好地像SSIM那样方便拓展到图像局部的判断,它这里只是一个全局的判断。
代码下载
https://github.com/guptapraful/niqe
matlab的代码已经集成到niqe函数中可以直接进行调用
参考文献
[1] K. Sharifi and A. Leon-Garcia, “Estimation of shape parameter for generalized Gaussian distributions in subband decompositions of video,” IEEE Trans. Circ. Syst. Video Technol., vol. 5, no. 1, pp. 52–56, 1995.