news 2026/4/29 0:29:39

图像质量评价指标全解析:PSNR、SSIM、NIQE、LPIPS 从原理到代码一网打尽

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
图像质量评价指标全解析:PSNR、SSIM、NIQE、LPIPS 从原理到代码一网打尽

一、前言:为啥我们需要图像质量评价指标?

不管是图像生成、超分、去模糊、去噪、修复……
只要你改了图,就必须回答一个问题:
改得好不好?画质有没有下降?有没有失真?

靠人眼?太慢、不准、不客观。
靠网络?没法落地。

所以业界搞出了一堆图像质量评价 IQA 指标

  • PSNR
  • SSIM
  • NIQE
  • LPIPS

今天咱们一次性吃透:原理、公式、代码、区别、用法、坑点


二、第一类:全参考评价指标(有GT图)

2.1 PSNR(峰值信噪比)

最经典、最常用、最简单。

公式

先算 MSE:
MSE=1HWC∑i,j,k(I(i,j,k)−K(i,j,k))2MSE=\frac{1}{HWC}\sum_{i,j,k}(I(i,j,k)-K(i,j,k))^2MSE=HWC1i,j,k(I(i,j,k)K(i,j,k))2

再算 PSNR:
PSNR=10⋅log10(MAXI2MSE)PSNR=10\cdot log_{10}(\frac{MAX_I^2}{MSE})PSNR=10log10(MSEMAXI2)

符号解释:

  • H,W,CH,W,CH,W,C:高、宽、通道
  • III:预测图
  • KKK:真值图
  • MAXIMAX_IMAXI:像素最大值(一般255)

通俗解释
算两张图“像素差的平方和”,再转成分贝。
数值越大越好

优点

  • 简单
  • 可导

缺点

完全不贴合人眼感知
有时候图糊得一批,PSNR 还很高。

核心代码

importtorchimporttorch.nn.functionalasFdefpsnr(img1,img2,data_range=1.0):mse=torch.mean((img1-img2)**2)ifmse==0:returntorch.tensor(100.0)return10*torch.log10((data_range**2)/mse)

2.2 SSIM(结构相似性)

专门解决 PSNR “不感知”问题。

公式

SSIM(x,y)=(2μxμy+C1)(2σxy+C2)(μx2+μy2+C1)(σx2+σy2+C2)SSIM(x,y)=\frac{(2\mu_x\mu_y+C_1)(2\sigma_{xy}+C_2)}{(\mu_x^2+\mu_y^2+C_1)(\sigma_x^2+\sigma_y^2+C_2)}SSIM(x,y)=(μx2+μy2+C1)(σx2+σy2+C2)(2μxμy+C1)(2σxy+C2)

符号解释:

  • μx\mu_xμx:均值
  • σx\sigma_xσx:方差
  • σxy\sigma_{xy}σxy:协方差
  • C1,C2C_1,C_2C1,C2:常数,防止除0

通俗解释
对比两张图的亮度、对比度、结构三项相似度。
输出-1 ~ 1越大越好

优点

  • 比 PSNR 更像人眼
  • 超分、去噪标配

缺点

仍然是手工设计,不够完美。

核心代码

defssim(img1,img2,window_size=11,data_range=1.0):C1=(0.01*data_range)**2C2=(0.03*data_range)**2mu1=F.avg_pool2d(img1,window_size)mu2=F.avg_pool2d(img2,window_size)sigma1=F.avg_pool2d(img1**2,window_size)-mu1**2sigma2=F.avg_pool2d(img2**2,window_size)-mu2**2sigma12=F.avg_pool2d(img1*img2,window_size)-mu1*mu2 numerator=(2*mu1*mu2+C1)*(2*sigma12+C2)denominator=(mu1**2+mu2**2+C1)*(sigma1+sigma2+C2)returnnumerator/denominator

三、第二类:无参考评价指标(没有GT图)

3.1 NIQE(无参考自然图像质量评价)

完全不需要真值图,只靠统计特征判断画质。

核心思想

自然清晰的图,某些统计量分布是固定的;
模糊、噪声、伪影会让分布偏移。

自然场景统计模型 + 多元高斯计算距离。

通俗解释
给图像算一套“自然度特征”,
偏离自然统计越远 → 质量越差 →分数越低越好

优点

  • 无参考
  • 生成模型、修复、超分神器

缺点

计算慢,对某些场景不友好。

核心代码(调用现成库)

fromskimageimportio,colorfromskimage.metricsimportnormalized_root_mseimportnumpyasnpdefniqe(image):# 输入必须是灰度图 [0,1]iflen(image.shape)==3:image=color.rgb2gray(image)# 调用 skimage 实现returnniqe_score(image)

四、第三类:深度感知评价指标

4.1 LPIPS(深度感知图像相似度)

训练好的CNN(如AlexNet/VGG)提取特征,计算特征距离。

公式

LPIPS=1C∑∣∣ϕ(I)−ϕ(K)∣∣22H,WLPIPS=\frac{1}{C}\sum\frac{||\phi(I)-\phi(K)||_2^2}{H,W}LPIPS=C1H,W∣∣ϕ(I)ϕ(K)22

符号解释:

  • ϕ\phiϕ:预训练网络提取的特征
  • 逐通道计算L2距离

通俗解释
让神经网络帮你看“像不像”,
比人眼还准,比SSIM强一大截。
越小越好

优点

  • 目前最贴合感知
  • 生成类任务必用
  • 超分、修复、GAN 标配

缺点

需要GPU,速度不快。

核心代码

importlpips# 加载模型loss_fn=lpips.LPIPS(net='alex')# 计算defcalculate_lpips(img1,img2):# img1, img2: [-1,1]returnloss_fn(img1,img2)

五、四大指标终极对比

表格1:四大指标对比

指标类型是否需要GT分值趋势速度感知友好
PSNR全参考越大越好极快
SSIM全参考越大越好
NIQE无参考越小越好
LPIPS深度全参考越小越好极强

表格2:任务选型推荐

任务推荐指标
超分辨率PSNR + SSIM + LPIPS
图像去噪PSNR + SSIM
图像修复LPIPS + NIQE
图像生成FID + LPIPS + NIQE
压缩/增强PSNR + SSIM

六、全文总结(最精炼)

  1. PSNR:最快,但最不准,只管像素差。
  2. SSIM:比PSNR像人眼,传统任务标配。
  3. NIQE:无参考神器,没有GT也能打分。
  4. LPIPS:目前最感知、最靠谱,深度模型必用。

一句话记住:
传统任务看PSNR/SSIM,
生成任务看LPIPS/NIQE。


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/29 0:29:34

CTF-MISC工具箱盘点:Steghide、010 Editor、Python脚本...这些工具如何帮你拿下‘神奇的压缩包’和‘李华的身份证’?

CTF-MISC实战工具箱:从隐写到爆破的自动化艺术 在CTF竞赛的MISC(杂项)领域,工具链的熟练程度往往决定了解题速度的上限。当面对一个看似无解的压缩包、一张隐藏关键信息的图片,或是一串意义不明的加密字符串时&#xf…

作者头像 李华
网站建设 2026/4/29 0:27:06

云原生入门系列|第24集:新手必避坑,K8s安全防护+故障排查实操

前言 各位云原生入门的小伙伴,大家好!上一集我们掌握了K8s日志收集和集群监控,能快速定位故障、实时掌握集群状态,进一步完善了运维能力。很多新手反馈,在实际落地过程中,除了故障定位,还经常遇到两个关键问题:一是集群安全防护不到位,容易出现权限泄露、Pod越权等风…

作者头像 李华
网站建设 2026/4/29 0:20:38

Python生成器协程与yield from语法

Python生成器协程与yield from语法:优雅的异步编程利器 在Python中,生成器不仅是惰性计算的工具,更是实现轻量级协程的关键。通过yield和yield from语法,开发者能以同步的方式编写异步代码,大幅简化复杂任务的处理逻辑…

作者头像 李华
网站建设 2026/4/29 0:20:31

【企业级远程开发环境标准】:基于 VS Code Dev Containers 的CI/CD就绪型配置(含GitOps集成与安全审计清单)

更多请点击: https://intelliparadigm.com 第一章:企业级远程开发环境标准概览 核心设计原则 企业级远程开发环境需兼顾安全性、一致性、可审计性与开发者体验。不同于个人开发场景,其架构必须支持多租户隔离、细粒度权限控制、全链路日志追…

作者头像 李华
网站建设 2026/4/29 0:13:56

HPH的构造拆解与核心组成

HPH身为一种至关重要的关键设备,其内部所具备的构造直接对它的性能以及寿命起着决定性作用。深入理解它的结构组成,这不仅仅是进行维修维护工作的基础所在,更是在选型以及优化设计方面的前提条件。下面我会从实际应用的角度出发,将…

作者头像 李华