图像基础 PSNR 峰值信噪比

本文介绍了峰值信噪比(PSNR)的概念及其在图像压缩领域的应用。PSNR是一种量化评估图像质量的方法,用于衡量压缩图像与原始图像之间的相似度。文章详细解释了PSNR的计算公式,并给出了一个具体的MATLAB代码示例,演示了如何计算不同分辨率图像间的PSNR值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PSNR全称是Peak signal-to-noise ratio,是一种客观的量化评价视频质量的方法。把原始参考视频与失真视频在每一个对应帧中的每一个对应像素之问进行比较。准确的讲,这种方法得到的并不是真正的视频质量,而是失真视频相对于原始视频的相似程度或保真程度。
在图像和视频传输领域中,压缩是常见的。压缩的过程是去除冗余信息,解压缩的过程是重构冗余信息。在去除与重构过程中,会导致部分信息的丢失或出现错误。峰值信噪比用来衡量对压缩后的图像或视频进行重建的质量,它常简单地通过均方差(MSE)进行定义。两个m×n灰度图I和K,如果一个为另一个的噪声近似(原图的重构),那他们的均方差定义为[1]:

MSE=1mnm1i=0n1j=0||I(i,j)K(i,j)||2

峰值信噪比定义为:

PSNR=10log10(MAX2IMSE)=20log10(MAXIMSE)

其中,MAXI是表示图像点颜色的最大数值,如果每个采样点(像素)用 8 位(1个字节)表示,那一个像素灰度值范围是[0~255],MAXI是255。
对每个点有RGB三个值的彩色图像而言,峰值信噪比的定义基本一致,只是均方差是所有方差之和除以图像尺寸再除以 3。图像压缩中典型的峰值信噪比值在 30 到 40dB 之间,越高越好。

采用DispTian博客中的方法[3],对图像进行resize操作后比较和原图的PSNR,代码如下:

clc;
clear all;
close all;

scale = 5;%缩小几倍
img=imread('lena.jpg');
if ndims(img)>2
    img =rgb2gray(img);
end
[h, w]=size(img);
imgn=imresize(img,[floor(h/scale) floor(w/scale)]);
imgn=imresize(imgn,[h w]);
img=double(img);
imgn=double(imgn);

B=8;                %编码一个像素用多少二进制位
MAX=2^B-1;          %图像有多少灰度级
MES=sum(sum((img-imgn).^2))/(h*w);     %均方差
PSNR=20*log10(MAX/sqrt(MES));           %峰值信噪比

实验结果如下:

缩小2倍:
MSE = 35.390987396240234
PSNR = 32.641876813963584
缩小5倍
MSE = 1.141021347045898e+02
PSNR = 27.557865912809710

参考文献:

  1. https://zh.wikipedia.org/wiki/峰值信噪比
  2. https://zh.wikipedia.org/wiki/信噪比
  3. http://www.cnblogs.com/tiandsp/archive/2012/11/14/2770462.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值