IQA (图像质量评价)

原文可见本人博客:IQA (图像质量评价)

全称:Image Quality Assessment

百度百科 IQA:https://baike.baidu.com/item/IQA/19453034?fr=aladdin

主观评价

主观评价方法主要可分为两种:绝对评价和相对评价。

但是实现起来都有困难,这里先不考虑。

客观评价

全参考
基于图像像素统计基础
  • 峰值信噪比(PSNR):PSNR值越大,表明待评图像与参考图像之间的失真较小,图像质量较好
  • 均方误差(MSE):MSE的值越小,表明图像质量越好
代码示例
import cv2 as cv
import numpy as np
import math
​
​
# 均方误差(MSE):MSE的值越小,表明图像质量越好
def get_mse(img1, img2):
    return np.mean((img1 / 255. - img2 / 255.) ** 2)
​
​
# 峰值信噪比(PSNR):PSNR值越大,表明待评图像与参考图像之间的失真较小,图像质量较好
# 基准为30dB,小于30为劣质
def get_psnr(img1, img2):
    mse = get_mse(img1, img2)
    if mse < 1.0e-10:
        return 100
    pixel_max = 1
    return 20 * math.log10(pixel_max / math.sqrt(mse))
​
​
if __name__ == '__main__':
    origin_img = cv.imread('img.png', 1)
    new_img = cv.imread('denoised_img_noise.png', 1)
    print('MSE:', get_mse(origin_img, new_img))
    print('PSNR:', get_psnr(origin_img, new_img))
结果

MSE: 0.0004777804926332579

PSNR: 33.20771586094474

从结果可以看出,上面测试使用的降噪后的图片质量还是可以的

基于信息论基础

基于信息论中信息熵基础,互信息被广泛用来评价图像质量。近些年,Sheikh和Bovik等人提出来了信息保真度准则(Information Fidelity Criterion,IFC)和视觉信息保真度(Visual Information Fidelity,VIF)两种算法。它们通过计算待评图像与参考图像之间的互信息来衡量待评图像的质量优劣。这两种方法具有一定的理论支撑,在信息保真度上拓展了图像与人眼之间的联系,但是这类方法对于图像的结构信息没有反应。

关于信息保真度准则(Information Fidelity Criterion,IFC)和视觉信息保真度(Visual Information Fidelity,VIF)这两种算法网上很难搜到合适的资料,即便能找到个别也都是matlab的,IFC方法到现在还没办法实现,下面是VIF方法。

代码示例
import numpy
import scipy.signal
import scipy.ndimage
​
__all__ = ['compare_vifp']
​
​
def compare_vifp(ref, dist):
    sigma_nsq = 2
    eps = 1e-10
​
    num = 0.0
    den = 0.0
    for scale in range(1, 5):
​
        N = 2 ** (4 - scale + 1) + 1
        sd = N / 5.0if scale > 1:
            ref = scipy.ndimage.gaussian_filter(ref, sd)
            dist = scipy.ndimage.gaussian_filter(dist, sd)
            ref = ref[::2, ::2]
            dist = dist[::2, ::2]
​
        mu1 = scipy.ndimage.gaussian_filter(ref, sd)
        mu2 = scipy.ndimage.gaussian_filter(dist, sd)
        mu1_sq = mu1 * mu1
        mu2_sq = mu2 * mu2
        mu1_mu2 = mu1 * mu2
        sigma1_sq = scipy.ndimage.gaussian_filter(ref * ref, sd) - mu1_sq
        sigma2_sq = scipy.ndimage.gaussian_filter(dist * dist, sd) - mu2_sq
        sigma12 = scipy.ndimage.gaussian_filter(ref * dist, sd) - mu1_mu2
​
        sigma1_sq[sigma1_sq < 0] = 0
        sigma2_sq[sigma2_sq < 0] = 0
​
        g = sigma12 / (sigma1_sq + eps)
        sv_sq = sigma2_sq - g * sigma12
​
        g[sigma1_sq < eps] = 0
        sv_sq[sigma1_sq < eps] = sigma2_sq[sigma1_sq < eps]
        sigma1_sq[sigma1_sq < eps] = 0
​
        g[sigma2_sq < eps] = 0
        sv_sq[sigma2_sq < eps] = 0
​
        sv_sq[g < 0] = sigma2_sq[g < 0]
        g[g < 0] = 0
        sv_sq[sv_sq <= eps] = eps
​
        num += numpy.sum(numpy.log10(1 + g * g * sigma1_sq / (sv_sq + sigma_nsq)))
        den += numpy.sum(numpy.log10(1 + sigma1_sq / sigma_nsq))
​
    vifp = num / den
​
    if numpy.isnan(vifp):
        return 1.0
    else:
        return vifp
结果

运用相同的测试图片,可以得到结果:

VIF: 0.9758460769325894

基于结构信息基础
  • SSIM:根据图像像素间的相关性构造出参考图像与待评图像之间的结构相似性,SSIM值越大,图像质量越好

PS:至此,找到更合理的代码方法

代码示例
import cv2 as cv
import numpy as np
import math
from skimage.metrics import mean_squared_error
from skimage.metrics import peak_signal_noise_ratio
from skimage.metrics import structural_similarity
​
​
# 均方误差(MSE):MSE的值越小,表明图像质量越好
def get_mse(img1, img2):
    return np.mean((img1 / 255. - img2 / 255.) ** 2)
​
​
if __name__ == '__main__':
    origin_img = cv.imread('img.png', 1)
    new_img = cv.imread('denoised_img_noise.png', 1)# 均方误差(MSE):MSE的值越小,表明图像质量越好
    mse = get_mse(origin_img, new_img)
    # 峰值信噪比(PSNR):PSNR值越大,表明待评图像与参考图像之间的失真较小,图像质量较好
    # 基准为30dB,小于30为劣质
    psnr = peak_signal_noise_ratio(origin_img, new_img)
    # 结构相似度(Structural Similarity,SSIM),SSIM值越大,图像质量越好
    ssim = structural_similarity(origin_img, new_img, multichannel=True)print('MSE:', mse)
    print('PSNR:', psnr)
    print('SSIM:', ssim)
结果

MSE: 0.0004777804926332579

PSNR: 33.20771586094474

SSIM: 0.9570612590498769

存在的问题

我的代码中有这样的一行:from skimage.metrics import mean_squared_error

但是,在下方却没有用到mean_squared_error这一函数,这是因为在测试时,使用mean_squared_error函数得到的结果(30+)与自己写的get_mse函数的结果(0+)大相径庭,而网上的资源大多使用类似于get_mse的方法,而对mean_squared_error方法所提甚少,且从结果看,MSE算法的值也是应该越小越好,所以我暂时不使用mean_squared_error函数

部分参考

部分参考也成为半参考,它是以理想图像的部分特征信息作为参考,对待评图像进行比较分析,从而得到图像质量评价结果。由于所参考的信息是从图像中提取出来的特征,所以它必须要先提取待评图像和理想图像的部分特征信息,通过比较提取出的部分信息对待评图像进行质量评估。部分参考方法可分为基于原始图像特征方法、基于数字水印方法和基于Wavelet域统计模型的方法等。因为部分参考质量评价依赖于图像的部分特征,与图像整体相比而言,数据量下降了很多,目前应用比较集中在图像传输系统中。

这部分内容暂时也没有头绪,先放过

无参考

无参考方法也称为首评价方法,因为一般的理想图像很难获得,所以这种完全脱离了对理想参考图像依赖的质量评价方法应用较为广泛。无参考方法一般都是基于图像统计特性。

  • 均值
  • 标准差
  • 平均梯度
  • 。。。。。。
我的理解

所谓无参考方法,就是只对现有的经过处理的图片进行分析,而不与原图比较。评判方法其实就是是否符合理想图像的特征(与寻找噪声的方式相似:符合噪声特征的像素点就会被判定为噪声)。

个人认为,这样的方法较为适用于无法得到原图,或者原图存在不可忽略的噪声的情况。

  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
目 录 第一章 引言 1 1.1 图像质量评价的定义 1 1.2 研究对象 1 1.3 方法分类 2 1.4 研究意义 3 第二章 历史发展和研究现状 4 2.1 基于手工特征提取的图像质量评价 4 2.1.1 基于可视误差的“自底向上”模型 4 2.1.1.1 Daly模型 4 2.1.1.2 Watson’s DCT模型 5 2.1.1.3 存在的问题 5 2.1.2 基于HVS的“自顶向下”模型 5 2.1.2.1 结构相似性方法 6 2.1.2.2 信息论方法 8 2.1.2.3 存在的问题 9 2.2 基于深度学习的图像质量评价 10 2.2.1 CNN模型 10 2.2.2 多任务CNN模型 12 2.2.3 研究重点 15 第三章 图像质量评价数据集和性能指标 16 3.1 图像质量评价数据集简介 16 3.2 图像质量评价模型性能指标 17 第四章 总结与展望 19 4.1 归纳总结 19 4.2 未来展望 19 参考文献 21 第一章 引言 随着现代科技的发展,诸如智能手机,平板电脑和数码相机之类的消费电子产品快速普及,已经产生了大量的数字图像。作为一种更自然的交流方式,图像中的信息相较于文本更加丰富。信息化时代的到来使图像实现了无障碍传输,图像在现代社会工商业的应用越来越广泛和深入,是人们生活中最基本的信息传播手段,也是机器学习的重要信息源。 图像质量图像系统的核心价值,此外,它也是图像系统技术水平的最高层次。但是,对图像的有损压缩、采集和传输等过程会很容易导致图像质量下降的问题。例如:在拍摄图像过程中,机械系统的抖动、光学系统的聚焦模糊以及电子系统的热噪声等都会造成图像不够清晰;在图像存储和传输过程中,由于庞大的数据量和有限通讯带宽的矛盾,图像需要进行有损压缩编码,这也会导致振铃效应、模糊效应和块效应等图像退化现象的出现。所以,可以说图像降质在图像系统的各个层面都会很频繁地出现,对图像质量作出相应的客观评价是十分重要且有意义的。为了满足用户在各种应用中对图像质量的要求,也便于开发者们维持、控制和强化图像质量图像质量评价Image Quality Assessment,IQA)是一种对图像所受到的质量退化进行辨识和量化的

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Clerk.Max(well)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值