彩色图像峰值信噪比程序
%Matlab计算峰值信噪比,程序如下function psnr=SNR(I,In)
% 计算信号峰值噪声比函数
% I :原始图像
% In:加入水印的图像
%PSNR=10*log10((2^n-1)^2/MSE)
%%它是原图像与处理图像之间均方误差相对于(2^n-1)^2的对数值
%(信号最大值的平方,n是每个采样值的比特数),它的单位是dB。
% psnr=10*log10(sigma2(I2)/sigma2(I2-I1))
[row,col,nchannel]=size(I);
I=double(I);In=double(In);
psnr=0;
if nchannel==3 %彩色图像
for i=1:3
Ps=(row*col*max(max(I(:,:,i).^2))) ;%信号功率
%Ps=sum(sum((I(:,:,i)-mean(mean(I(:,:,i)))).^2));%signal power
Pn=sum(sum((I(:,:,i)-In(:,:,i)).^2));%noise power
psnr=psnr+10*log10(Ps/Pn);
end
psnr=psnr/3;
end