]> AND Private Git Repository - these_gilles.git/blob - PSNR_RGB/PSNR.m
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
final
[these_gilles.git] / PSNR_RGB / PSNR.m
1 function y=PSNR(noisyImage,restoredImage)\r
2  \r
3 % Compute the PSNR of two gray scale image\r
4 % Traditional progarmming using loops \r
5 % Class input : [0,1] \r
6 % july, 25 , 2012\r
7 % KHMOU Youssef\r
8  \r
9 N=size(noisyImage);\r
10 if length(N)> 2\r
11     error('Input must be grayscale image');\r
12 end\r
13 if size(noisyImage)~=size(restoredImage)\r
14     error('The images must have the same size');\r
15 end\r
16  \r
17 %if ~isa(noisyImage,'double') \r
18 %   noisyImage=double(noisyImage)./255.00;\r
19 %end\r
20 %if  ~isa(restoredImage,'double')\r
21 %    restoredImage=double(restoredImage)./255.00;\r
22 %end\r
23  \r
24 % begin\r
25  \r
26 d1=max(noisyImage(:));\r
27 d2=max(restoredImage(:));\r
28 d=max(d1,d2);\r
29 \r
30 MSE=0;\r
31 for i=1:N(1)\r
32     for j=1:N(2)\r
33         if isnan(noisyImage(i,j)) || isinf(restoredImage(i,j))...\r
34                 || isnan(restoredImage(i,j)) || isinf(noisyImage(i,j))\r
35             continue;\r
36         end\r
37         MSE=MSE+((abs(noisyImage(i,j)-restoredImage(i,j))).^2);\r
38     end\r
39 end\r
40  \r
41 MSE=MSE./(N(1)*N(2));\r
42  \r
43 y=10*log10((d.^2) /MSE)\r