前语
一般都是由人眼来片面判别图画的质量高低,能否经过数学衡量对断定图画的质量呢?比方经过图片的像素/亮度/边际数量来判别图画是明晰仍是模糊。
看似简略,但实际上很困难,图画是信息的载体,载体的质量高,并不意味着信息内容的质量高,比方拍照者是为了突出物体虚化的背景,或许拍照者是为了拍照景色,虚化的人物。从数据上很难客观的评判图片中的内容是否高质量。
咱们能够经过数学模型,给出原图与待评图之间的差异量,再辅以人眼挑选,归纳判别图片的质量。
图画质量点评体系(IGA)
图画质量点评算法是对任意的图画进行质量评分,将图画全体作为输入,将图画的质量得分作为输出,图画质量点评分为三种:
- 全原图质量点评:在这种办法中,咱们具有一个非失真的图画,以丈量待评图画的质量。在咱们能够具有原始图画及其压缩图画的情况下,此办法可用于待评图画压缩算法的质量。
- 降低参阅的图画质量点评:在这种办法中没有能够用来参阅的图画,可是具有参阅信息的图画(例如,带有水印的图画)能够比较和丈量待评图画的质量。
- 无原图质量点评:算法取得的仅有输入是要丈量其质量的图画,彻底没有能够用来参阅的图画,因而被称为无参阅“No-Reference”
草案
本计划的意图是判别原图片经过裁剪/烘托后的图片质量变化的程度。
环境变量上,咱们能够取得原图和待评图,而且样图是能够固定的,所以能够运用全参阅模式来制定计划。
咱们需要找几种常见类型的样图,如人像,景色照等
运用不同的方法去修改烘托,再核算评分。
比方:
- 运用【方法1】烘托的图A,与原图比较差异。核算取得评分X
- 运用【方法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都有水印
图片修改
修改功用会对原图内容进行修改,无法直接和原图进行比较,咱们需要先对现有功用的导出图进行采样,确定基准值。
- 经过质量最大化的烘托计划A,取得一张肉眼判别为高质量的修改后图片,作为原图。
- 选用兼顾性能与质量的烘托计划B,经过相同的修改参数处理图片,作为待评图。
- 使用MSE、PSNR、SSIM对两张图进行差异化剖析,取得评分X。
- 评分X即可作为基准值,后续有新的计划,则重复1-3的步骤,取得新的评分。与基准值X做比较,来判别新计划的优化起伏。
参阅资料
图画质量点评:BRISQUE
谈谈图画质量量化点评规范
图画质量点评
用Python+OpenCV比照图画质量
根据结构类似度的五颜六色图画质量点评算法