数字音频水印——峰值信噪比PSNR与信噪比SNR的问题。求告之!求代码!

2024-11-25 23:19:41
推荐回答(1个)
回答1:

峰值信噪比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很合得来,可以作为参考参数。

 

下班了,待续...