]> AND Private Git Repository - canny.git/blob - stc/exp/raphus/test_wpsnr.py
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
f735467fe09057e3193601e04f9e72344c469558
[canny.git] / stc / exp / raphus / test_wpsnr.py
1 import Image as im
2 import numpy as np
3 from Image import ImageStat as imst
4 from numpy import linalg as LA
5
6 from math import *
7
8
9
10 def sig2(mat):
11     (h,l) = mat.shape
12     L= 1
13     avx = np.empty((h,l))
14     for i in xrange(h):
15         for j in xrange(l):
16             avx[i,j] = np.average([mat[ip,jp] 
17                                    for ip in xrange(max(0,i-L),min(h,i+L))
18                                    for jp in xrange(max(0,j-L),min(h,j+L))])
19             
20     s2 = np.empty((h,l))
21     for i in xrange(h):
22         for j in xrange(l):
23             s2[i,j] = np.average([(mat[ip,jp]- avx[ip,jp])**2
24                                   for ip in xrange(max(0,i-L),min(h,i+L))
25                                   for jp in xrange(max(0,j-L),min(h,j+L))])
26     return s2
27
28 def nvf(mat):
29     D = 75
30     (h,l) = mat.shape
31     N = np.empty((h,l))
32     
33     s2 = sig2(mat)
34     sigmax = np.amax(s2)
35
36     for i in xrange(h):
37         for j in xrange(l):        
38             N[i,j] = float(1)/(1+sigmax(i,j)**2)
39     
40
41 def wpsnr(mati,mato):
42     return 10 * log10( (float(np.amax(mati))/(LA.norm(nvf(mato-mati))))**2)