重建图像的PSNR和MSE的MATLAB实现

时间:2023-02-13 16:59:39

今天做了图像压缩,想看看压缩后的图像质量,找到了一篇不错的博文,博文代码是MATLAB实现的。重建图像的PSNR和MSE的MATLAB实现可省事了,不用自己编了

参考博文链接:http://www.cnblogs.com/tiandsp/archive/2012/11/14/2770462.html

内容也贴在下面给大家看:

PSNR,峰值信噪比,通常用来评价一幅图像压缩后和原图像相比质量的好坏,当然,压缩后图像一定会比原图像质量差的,所以就用这样一个评价指标来规定标准了。PSNR越高,压缩后失真越小。这里主要定义了两个值,一个是均方差MSE,另一个是峰值信噪比PSNR,公式如下:

重建图像的PSNR和MSE的MATLAB实现

重建图像的PSNR和MSE的MATLAB实现

这里的MAX通常是图像的灰度级,一般就是255了。

这里就不用什么压缩算法了,就是将图像缩小再放大比较一下,下面是代码:

close all;
clear all;
clc;


img=imread('lena.jpg');
[h w]=size(img);
imgn=imresize(img,[floor(h/2) floor(w/2)]);
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));           %峰值信噪比

程序我试过了,不错重建图像的PSNR和MSE的MATLAB实现

下面是效果图

重建图像的PSNR和MSE的MATLAB实现原图

重建图像的PSNR和MSE的MATLAB实现缩放1/2又放大回来的图片,PSNR=30.2dB


再次感谢参考文的博主Dsp Tian