PSNR峰值信噪比matlab实现
2017-08-01 17:30
232 查看
PSNR,峰值信噪比,通常用来评价一幅图像压缩后和原图像相比质量的好坏,当然,压缩后图像一定会比原图像质量差的,所以就用这样一个评价指标来规定标准了。PSNR越高,压缩后失真越小。这里主要定义了两个值,一个是均方差MSE,另一个是峰值信噪比PSNR,公式如下:
这里的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)); %峰值信噪比原图
图像宽高分别缩小1/2再放大到原图,PSNR=30.2dB
图像宽高分别缩小1/5再放大到原图,PSNR=24.5dB
当PSNR值大于30dB的时候,可以认为去噪或压缩后的图像质量较好,低于20dB表示图像质量不可接受
转自http://www.cnblogs.com/tiandsp/archive/2012/11/14/2770462.html
这里的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)); %峰值信噪比原图
图像宽高分别缩小1/2再放大到原图,PSNR=30.2dB
图像宽高分别缩小1/5再放大到原图,PSNR=24.5dB
当PSNR值大于30dB的时候,可以认为去噪或压缩后的图像质量较好,低于20dB表示图像质量不可接受
转自http://www.cnblogs.com/tiandsp/archive/2012/11/14/2770462.html
相关文章推荐
- 图像质量评价之PSNR 和SSIM(附Matlab实现代码)
- matlab 计算图像的峰值信噪比PSNR以及均方根误差MSE
- 重建图像的PSNR和MSE的MATLAB实现
- 图像处理PSNR及其计算(OpenCV和matlab实现)
- matlab 实现图像PSNR的小程序
- Bag-of-Visual-Words SIFT 实现(matlab版本)
- 图像Ostu二值化原理及matlab实现代码
- 支持向量机SVM 原理、推导与Matlab实现
- Matlab VC 联合编程 控制台以及MFC中实现(三)
- 车牌识别系统Matlab算法实现
- 吉布斯采样——原理及matlab实现
- 直方图规定化——Matlab实现及其原理
- MATLAB实现频数表——hist的使用
- 卡尔曼滤波模型及其Matlab实现
- matlab GUI如何实现参数传递
- C语言实现MATLAB 6.5中M文件的方法
- matlab实现dijkstra、floyd、kruskal
- non-dominated sorting算法的matlab实现
- Matlab模板匹配实现图像运动估计(频域实现)
- MatLab实现FFT与功率谱