%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)
ImageA=double(ImageA);
ImageB=double(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
评论1