%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Function: my_psnr function [psnr] = my_psnr(Original_image, Compressed_image) Original_image=double(Original_image); Original_image=rgb2ycbcr(Original_image);% PSNR measured in Y, Cr,Cb color space Compressed_image=double(Compressed_image); Compressed_image=rgb2ycbcr(Compressed_image); O_image_size=size(Original_image); C_image_size=size(Original_image); MSE=zeros(1,O_image_size(3)); if O_image_size ~= C_image_size disp('ERROR: The size of the images has to be the same'); return end for component_i=1:O_image_size(3) for row_i=1:O_image_size(1) for column_j=1:O_image_size(2) MSE(component_i)=... MSE(component_i)+(Original_image(row_i,column_j,component_i)-Compressed_image(row_i,column_j,component_i))^2; end end end MSE=MSE/(O_image_size(1)*O_image_size(2)); psnr=10*log10(255^2./MSE);