comparison transformations/PermutPixel.py @ 91:6696391273ab

Il y a maintenant une proba 0.2 d'effectuer des permutations. Cette nouvelle fonctionnalite demande un parametre non deterministe, ce qui fait que maintenant, les fonctions 'determined_by_complexity' ont ete abandonees. Le module se comporte comme un module normal
author SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
date Thu, 11 Feb 2010 09:15:42 -0500
parents 9936c4886299
children ae9152581b09
comparison
equal deleted inserted replaced
90:e352a98fcc0a 91:6696391273ab
4 ''' 4 '''
5 Un echange de pixels est effectue entre certain pixels choisit aleatoirement 5 Un echange de pixels est effectue entre certain pixels choisit aleatoirement
6 et un de ses 4 voisins, tout aussi choisi aleatoirement. 6 et un de ses 4 voisins, tout aussi choisi aleatoirement.
7 7
8 Le nombre de pixels permutes est definit pas complexity*1024 8 Le nombre de pixels permutes est definit pas complexity*1024
9
10 Il y a proba 20% d'effectuer le bruitage
9 11
10 Sylvain Pannetier Lebeuf dans le cadre de IFT6266, hiver 2010 12 Sylvain Pannetier Lebeuf dans le cadre de IFT6266, hiver 2010
11 13
12 ''' 14 '''
13 15
17 class PermutPixel(): 19 class PermutPixel():
18 20
19 def __init__(self): 21 def __init__(self):
20 self.nombre=10 #Le nombre de pixels a permuter 22 self.nombre=10 #Le nombre de pixels a permuter
21 self.proportion=0.3 23 self.proportion=0.3
24 self.effectuer=1 #1=on effectue, 0=rien faire
22 25
23 def get_settings_names(self): 26 def get_settings_names(self):
24 return [] 27 return ['nombre','effectuer']
25 28
26 def get_settings_name_determined_by_complexity(self): 29 ## def get_settings_name_determined_by_complexity(self):
27 return ['nombre'] 30 ## return ['nombre']
28 31
29 def regenerate_parameters(self, complexity): 32 def regenerate_parameters(self, complexity):
30 self.proportion=float(complexity)/3 33 self.proportion=float(complexity)/3
31 self.nombre=int(256*self.proportion)*4 #Par multiple de 4 (256=1024/4) 34 self.nombre=int(256*self.proportion)*4 #Par multiple de 4 (256=1024/4)
32 self.echantillon=random.sample(xrange(0,1024),self.nombre) #Les pixels qui seront permutes 35 self.echantillon=random.sample(xrange(0,1024),self.nombre) #Les pixels qui seront permutes
36 self.effectuer =numpy.random.binomial(1,0.2) ##### On a 20% de faire un bruit #####
33 return self._get_current_parameters() 37 return self._get_current_parameters()
34 38
35 def _get_current_parameters(self): 39 def _get_current_parameters(self):
36 return [] 40 return [self.nombre,self.effectuer]
37 41
38 def get_parameters_determined_by_complexity(self, complexity): 42 ## def get_parameters_determined_by_complexity(self, complexity):
39 return [int(complexity*256)*4] 43 ## return [int(complexity*256)*4]
40 44
41 def transform_image(self, image): 45 def transform_image(self, image):
46 if self.effectuer==0:
47 return image
48
42 image=image.reshape(1024,1) 49 image=image.reshape(1024,1)
43 temp=0 #variable temporaire 50 temp=0 #variable temporaire
44 51
45 for i in xrange(0,self.nombre,4): #Par bonds de 4 52 for i in xrange(0,self.nombre,4): #Par bonds de 4
46 #gauche 53 #gauche
92 99
93 if __name__ == '__main__': 100 if __name__ == '__main__':
94 from pylearn.io import filetensor as ft 101 from pylearn.io import filetensor as ft
95 import pylab 102 import pylab
96 for i in xrange(0,5): 103 for i in xrange(0,5):
97 _test(0) 104 _test(0.5)
98 105
99 106