峰值信噪比PSNR
(1)PSNR (Peak signal-to-noise ratio)
常用于图像压缩等领域中,压缩前与压缩后,图像劣化程度的客观评价。
评价结果以dB(对比分贝)为单位来表示。2个图像间,PSNR值越大,趋于无劣化,劣化程度较大时,PSNR值趋于0dB。
不知道你是灰度图像水印还是彩色图像水印,还是音频转成的二维矩阵,我就简单的用灰度水印图像介绍一下;
PSNR的公式是:
、
如上图MSE是原始和编码后图像的之间的均方误差,n表示每个像素的比特数,公式的具体解释和证明去自己找资料吧。
看你代码的形式,应该是matlab
其中n表示的比特数为8比特
function [PSNR, MSE] = psnr(X, Y)
% 计算峰值信噪比PSNR、均方根误差MSE
% 如果输入Y为空,则视为X与其本身来计算PSNR、MSE
if nargin<2
D = X;
else
if any(size(X)~=size(Y))
error('The input size is not equal to each other!');
end
D = X-Y;
end
MSE = sum(D(:).*D(:))/prod(size(X));
PSNR = 10*log10(255^2/MSE);
以下个人观点:我做实验的时候不太喜欢用PSNR,实验结果显示,PSNR 的分数无法和人眼看到的视觉品质完全一致,有可能 PSNR 较高者看起来反而比PSNR 较低者差,语音水印的品质也很成问题,不建议用PSNR,除非你的算法和PSNR很合得来,可以作为参考参数。
下班了,待续...