空灵学院

 找回密码
 立即注册

扫一扫,访问微社区

搜索
查看: 2094|回复: 0

基于Matlab计算峰值信噪比PSNR及均方根误差MSE

[复制链接]

1137

主题

1761

帖子

7558

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
7558
发表于 2014-1-19 18:45:58 | 显示全部楼层 |阅读模式
以下内容摘自好友lyqmath新浪博客,在此借花献佛。

前言
PSNR 是最普遍,最广泛使用的评鉴画质的客观量测法,不过许多实验结果都显示,PSNR 的分数无法和人眼看到的视觉品质完全一致,有可能 PSNR 较高者看起来反而比PSNR 较低者差。
这是因为人眼的视觉对于误差的敏感度并不是绝对的,其感知结果会受到许多因素的影响而产生变化(例如:人眼对空间频率较低的对比差异敏感度较高,人眼对亮度对比差异的敏感度较色度高,人眼对一个区域的感知结果会受到其周围邻近区域的影响)。
(参考百度百科)


计算公式:

\[MSE=\sqrt{\frac{x_1^2+\cdots+x_n^2}{n}}=\sqrt{\frac{\sum_{i=1}^n x_i^2}{n}}\]
\[PSNR=10\times\log(\frac{255^2}{MSE})\]
代码
  1. % By lyqmath
  2. % DLUT School of Mathematical Sciences 2008
  3. % BLOG:http://blog.sina.com.cn/lyqmath
  4. function [PSNR, MSE] = psnr(X, Y)
  5. % 计算峰值信噪比PSNR、均方根误差MSE
  6. % 如果输入Y为空,则视为X与其本身来计算PSNR、MSE
  7. if nargin<2
  8.     D = X;
  9. else
  10.     if any(size(X)~=size(Y))
  11.         error('The input size is not equal to each other!');
  12.     end
  13.     D = X-Y;
  14. end
  15. MSE = sum(D(:).*D(:))/prod(size(X));
  16. PSNR = 10*log10(255^2/MSE);
复制代码
实例
  1. % By lyqmath
  2. % DLUT School of Mathematical Sciences 2008
  3. % BLOG:http://blog.sina.com.cn/lyqmath
  4. function main()
  5. clc; close all;
  6. I = imread('rice.png');
  7. I1 = imnoise(I, 'salt & pepper');
  8. figure;
  9. subplot(1, 2, 1); imshow(I); title('原图像');
  10. subplot(1, 2, 2); imshow(I1); title('加噪声图像');
  11. [PSNR, MSE] = psnr(I, I1)
  12. % 图像峰值信噪比PSNR、均方根误差MSE
  13. function [PSNR, MSE] = psnr(X, Y)
  14. % 计算峰值信噪比PSNR、均方根误差MSE
  15. % 如果输入Y为空,则视为X与其本身来计算PSNR、MSE
  16. if nargin<2
  17.     D = X;
  18. else
  19.     if any(size(X)~=size(Y))
  20.         error('The input size is not equal to each other!');
  21.     end
  22.     D = X-Y;
  23. end
  24. MSE = sum(D(:).*D(:))/prod(size(X));
  25. PSNR = 10*log10(255^2/MSE);
复制代码

结果




总结
有一些方法中采用了分块计算PSNR等参数,用来得到更为有效地信息。也有的方法提出一些新的计算公式,当然这都是为了统计处图像处理前后的差异信息。
类似的,对于相近的公式,也可以如上做编码。











回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|空灵学院 ( 11033542 )

GMT+8, 2024-5-7 04:03 , Processed in 0.024204 second(s), 24 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表