图像是人类感知和机器模式识别的重要信息源,其质量对所获取信息的充分性和准确性起着决定性的作用。然而,图像在获取、压缩、处理、传输、显示等过程中难免会出现一定程度的失真。然而要解决这个问题我们需要建立有效的图像质量评价体制。
由此我们就有了图像质量评估指标 :结构相似性SSIM / 峰值信噪比PSNR / 均方根误差MSE
PSNR和MSE:
PSNR是最普遍和使用最为广泛的一种图像客观评价指标,然而它是基于对应像素点间的误差。即峰值信号的能量与噪声的平均能量之比。
MSE表示当前图像X和参考图像Y的均方误差(MeanSquare Error),H、W分别为图像的高度和宽度;n为每像素的比特数,一般取8,即像素灰阶数为256. PSNR的单位是dB,数值越大表示失真越小。表达式为:
公式中R( m, n) 代表参考图像在空间位置( m, n) 的 灰度值, I( m, n) 代表失真图像在空间位置的( m,n) 的灰度值; L 为峰值信号,对于 8 位的灰度图像来说,L=255.
代码:
# -*- coding: utf-8 -*-
import cv2
import numpy as np
import math
import os
def psnr(img1, img2):
mse = np.mean((img1/1.0 - img2/1.0) ** 2 )
if mse < 1.0e-10:
return 100
psnr = 10 * math.log10(255.0**2/mse)
return psnr
def _main():
img1 = cv2.imread('1.jpg')
img2 = cv2.imread('2.jpg')
print psnr
if __name__ == '__main__':
_main()
虽然 MSE 和 PSNR 计算形式上非常简单但本质上没有考虑将人类视觉 系统( 人眼对空间频率较低的对比差异敏感度较高,人眼对亮度对比差异的敏感度较色度高,人眼对一个 区域的感知结果会受到其周围邻近区域的影响等,HSV) 特性引入到图像 质量评价当中来,只是单纯从数学角度来分析差异,与图像的感知质量之间没有必然联系,评价结果不太理想。
SSIM:
由于 HVS 具有可以抓取图像的结构特征的特点,因此设计 Structural Similarity 进行评价,即 SSIM 。该方法认为光照对于物体结构是独立的,而光照改变主要来源于亮度和对比度;所以它将亮度和对比度从图像的结构信息中分离出来,并结合结构信息对图像质量进行评价。
代码研究中(太难了!)