psnr.m
来自「基于dct的数字图像水印技术的matlab源代码。大家共享」· M 代码 · 共 44 行
M
44 行
%Name: Chris Shoemaker
%Course: EER-280 - Digital Watermarking
%Project: Calculates the PSNR (Peak Signal to Noise Ratio)
% of images A and A', both of size MxN
%function [A] = psnr(image,image_prime,M,N)
% convert to doubles
% image=double(image);
% image_prime=double(image_prime);
% avoid divide by zero nastiness
%if ((sum(sum(image-image_prime))) == 0)
% error('Input vectors must not be identical')
%else
% psnr_num=M*N*max(max(image.^2)); % calculate numerator
% psnr_den=sum(sum((image-image_prime).^2)); % calculate denominator
% A=psnr_num/psnr_den; % calculate PSNR
%end
%return
function dPSNR = psnr(ImageA,ImageB)
if (size(ImageA,1) ~= size(ImageB,1)) or (size(ImageA,2) ~= size(ImageB,2))
error('ImageA <> ImageB');
dPSNR = 0;
return ;
end
M = size(ImageA,1);
N = size(ImageA,2);
d = 0 ;
for i = 1:M
for j = 1:N
d = d + (ImageA(i,j) - ImageB(i,j)).^2 ;
end
end
dPSNR = -10*log10(d/(255*255*M*N)) ;
return
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?