前语

一般都是由人眼来片面判别图画的质量高低,能否经过数学衡量对断定图画的质量呢?比方经过图片的像素/亮度/边际数量来判别图画是明晰仍是模糊。

看似简略,但实际上很困难,图画是信息的载体,载体的质量高,并不意味着信息内容的质量高,比方拍照者是为了突出物体虚化的背景,或许拍照者是为了拍照景色,虚化的人物。从数据上很难客观的评判图片中的内容是否高质量。

咱们能够经过数学模型,给出原图与待评图之间的差异量,再辅以人眼挑选,归纳判别图片的质量。

图画质量点评体系(IGA)

图画质量点评算法是对任意的图画进行质量评分,将图画全体作为输入,将图画的质量得分作为输出,图画质量点评分为三种:

  1. 全原图质量点评:在这种办法中,咱们具有一个非失真的图画,以丈量待评图画的质量。在咱们能够具有原始图画及其压缩图画的情况下,此办法可用于待评图画压缩算法的质量。
  2. 降低参阅的图画质量点评:在这种办法中没有能够用来参阅的图画,可是具有参阅信息的图画(例如,带有水印的图画)能够比较和丈量待评图画的质量。
  3. 无原图质量点评:算法取得的仅有输入是要丈量其质量的图画,彻底没有能够用来参阅的图画,因而被称为无参阅“No-Reference”

草案

本计划的意图是判别原图片经过裁剪/烘托后的图片质量变化的程度。

环境变量上,咱们能够取得原图和待评图,而且样图是能够固定的,所以能够运用全参阅模式来制定计划。

咱们需要找几种常见类型的样图,如人像,景色照等

运用不同的方法去修改烘托,再核算评分。

比方:

  1. 运用【方法1】烘托的图A,与原图比较差异。核算取得评分X
  2. 运用【方法2】烘托的图B,与原图比较差异。核算取得评分Y

比较 X 与 Y 的评分,再辅以人眼挑选,确定差异值。咱们将初次评分的成果作为基准值。

后续每次烘托方法的变更时,都将进行样图的重评。

如此咱们便可知道当前烘托的图片质量是提升了仍是在裂化。

干流点评计划

根据图画像素统计

核算待评图和原图对应像素点值的差异,从统计视点衡量图画质量好坏。

待评图为F,原图为R,巨细都为M*N。

方差 MSE(Mean Squared Error)

是反映原图与待评图之间差异程度的一种衡量。思路是对两张尺度彻底相同的图片一个个像素进行比照,比照的数值就是图画的色值。

该计划不考虑人眼的局部视觉因素,因而无法用于判别图画的局部质量。

参阅定论: 取值规模为[0,+∞),当预测值与真实值彻底吻合时等于0,即完美模型;该值越大,差异越大。该值越小,差异性越小,图片质量越高

核算公式:

定量分析图像渲染质量

def mse(origin, target):
    # the 'Mean Squared Error' between 
    # the two images is the sum of the squared difference between the two images
    mse_error = np.sum((origin.astype("float") - target.astype("float"))**2)
    mse_error /= float(origin.shape[0] * origin.shape[1])
    # return the MSE. The lower the error, the more "similar" the two images are.
    return mse_error

即峰值信噪比 PSNR(Peak Signal to Noise Ratio)

最为广泛运用的一种图画点评,一般用来比较待评图与原图的质量差异。

其原理是比较最大值信号与背景噪音之间的差异。

PSNR也具有局限性,人眼的视觉对差错的敏感度不是肯定的,其产量成果可能会受到亮度或比照度的影响。可能出现PSNR值较高的图画,可是肉眼判别为不明晰的情况。

OpenCV官方文档说这也是逐帧比较视频差异的最常用方法,毕竟它简略,运行速度快。但其出现的差异有时候与人的片面感触不一致,所以OpenCV还提供了结构类似性算法SSIM做出改善。

参阅定论:取值规模为(0,∞),值越高,表明是待评图与原图的差异越小,即质量越高

**核算公式:**也是在MSE根底上的进一步扩展,这里MAX表明图画色彩最大值,8bit图画取值为255

定量分析图像渲染质量

def PSNR(original, target):
    mse = np.mean((original - target)**2)
    if (mse == 0):
        return 100
    max_pixel = 255.0
    psnr = 20 * log10(max_pixel / sqrt(mse))
    return psnr

根据结构信息根底

提出者认为图画的结构失真的衡量应是图画感知质量的最好近似。在此根底上提出了结构类似性衡量。

结构类似度 SSIM(Structural Similarity Index)

结构类似性,是一种衡量两幅图画类似度的目标。该目标首先由德州大学奥斯丁分校的图画和视频工程实验室(Laboratory for Image and Video Engineering)提出。

天然图画具备高度结构性,接近的像素间存在强相关性,而这样的联络性承载了场景中物体的结构信息。人类视觉体系在观看图画时现已很习惯抽取这样的结构性信息。因而,在规划图画质量衡量目标用以衡量图画有损程度时,结构性有损的衡量是很重要的一环。

SSIM考虑了人眼的生物特征,是根据感知的核算模型,人类视觉体系就是从可视区域内获取结构信息,所以咱们也能够检测结构信息的差异来比照图片,这和MSE或许PSNR经过线性变换来分化信号有本质上的不同。

参阅定论:取值规模为(0, 1],数值越大,表明差异性越小,1代表两幅图画彻底相同。

**核算公式:**SSIM的丈量体系由三个模块组成: 亮度,比照度和结构。其中 l(x, y)是亮度比较,c(x, y)是比照度比较,s(x, y)是结构比较。

定量分析图像渲染质量

定量分析图像渲染质量

定量分析图像渲染质量

定量分析图像渲染质量

from skimage.metrics import structural_similarity as ssim
ssim(origin, target)

根据信息论根底

根据信息论中的信息熵根底

视觉信息保真度 VIF(Visual Information Fidelity)

VIF是Sheikh等结合天然图画统计模型、图画失真模型和人眼视觉体系模型提出的图画质量点评目标. 与峰值信噪比(Peak Signal-to-Noise Ratio, PSNR)、结构类似性(Structural Similarity, SSIM)等目标相比,VIF与片面视觉有更高的一致性。其值越大,表明图画质量越好。

信息保真度准则 IFC(Information Fidelity Criterion)

经过核算待评图画和原图之间的互信息来衡量图画的质量好坏。扩展了图画与人眼之间的联络。

缺点:对图画的结构信息没有反应。

演示案例

定量分析图像渲染质量

从样图能够得出定论,当MSE值小,PSNR大,SSIM值接近 1 时,图片的质量是最高的。

定量评分计划

技术目标

选用MSE、PSNR、SSIM归纳剖析原图与导出图的质量差异。

全图导出

比较原图与App导出后的图片以得出全图导出功用的评分。

样图原图尺度: 3264  2448

AAA BBB CCC
File Size 1.9 MB 3.2 MB 2.4 MB
Pixel 3240  2430 3264  2448 3264  2448
MSE 24.580809200833205 22.164186650967576 2.5357344530949635
PSNR 42.30787129372325 49.05336805988961 44.094927024491255
SSIM 0.9837596127093489 0.9970888021806221 0.9892957811791622

数据上差异并不是很明显,AAA对像素进行了一定的裁剪,产出图片的体积更小,质量较高。

MSE的差异来自于CCC右下角没有水印,AAA 与 BBB都有水印

图片修改

修改功用会对原图内容进行修改,无法直接和原图进行比较,咱们需要先对现有功用的导出图进行采样,确定基准值。

  1. 经过质量最大化的烘托计划A,取得一张肉眼判别为高质量的修改后图片,作为原图。
  2. 选用兼顾性能与质量的烘托计划B,经过相同的修改参数处理图片,作为待评图。
  3. 使用MSE、PSNR、SSIM对两张图进行差异化剖析,取得评分X。
  4. 评分X即可作为基准值,后续有新的计划,则重复1-3的步骤,取得新的评分。与基准值X做比较,来判别新计划的优化起伏。

参阅资料

图画质量点评:BRISQUE

谈谈图画质量量化点评规范

图画质量点评

用Python+OpenCV比照图画质量

根据结构类似度的五颜六色图画质量点评算法