comparison transformations/DistorsionGauss.py @ 90:e352a98fcc0a

Il y a maintenant une proba de 0.3 d'effectuer le bruitage. De plus, comme cette nouvelle fonctionnalite demande un parametre non-deterministe, les deux fonctions 'determined_by_complexity' ont ete enlevees. Le module se comporte comme un module conventionnel
author SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
date Thu, 11 Feb 2010 09:08:16 -0500
parents aee278ebc827
children 901ab3329064
comparison
equal deleted inserted replaced
89:cc641ee75d3b 90:e352a98fcc0a
2 # coding: utf-8 2 # coding: utf-8
3 3
4 ''' 4 '''
5 Ajout d'une composante aleatoire dans chaque pixel de l'image. 5 Ajout d'une composante aleatoire dans chaque pixel de l'image.
6 C'est une distorsion gaussienne de moyenne 0 et d'écart type complexity/10 6 C'est une distorsion gaussienne de moyenne 0 et d'écart type complexity/10
7
8 Il y a 30% d'effectuer le bruitage
7 9
8 Sylvain Pannetier Lebeuf dans le cadre de IFT6266, hiver 2010 10 Sylvain Pannetier Lebeuf dans le cadre de IFT6266, hiver 2010
9 11
10 ''' 12 '''
11 13
14 16
15 class DistorsionGauss(): 17 class DistorsionGauss():
16 18
17 def __init__(self): 19 def __init__(self):
18 self.ecart_type=0.1 #L'ecart type de la gaussienne 20 self.ecart_type=0.1 #L'ecart type de la gaussienne
21 self.effectuer=1 #1=on effectue et 0=rien faire
19 22
20 def get_settings_names(self): 23 def get_settings_names(self):
21 return [] 24 return ['ecart_type','effectuer']
22 25
23 def get_settings_name_determined_by_complexity(self): 26 ## def get_settings_name_determined_by_complexity(self):
24 return ['ecart_type'] 27 ## return ['ecart_type']
25 28
26 def regenerate_parameters(self, complexity): 29 def regenerate_parameters(self, complexity):
27 self.ecart_type=float(complexity)/10 30 self.ecart_type=float(complexity)/10
31 self.effectuer =numpy.random.binomial(1,0.3) ##### On a 30% de faire un bruit #####
28 return self._get_current_parameters() 32 return self._get_current_parameters()
29 33
30 def _get_current_parameters(self): 34 def _get_current_parameters(self):
31 return [] 35 return [self.ecart_type,self.effectuer]
32 36
33 def get_parameters_determined_by_complexity(self, complexity): 37 ## def get_parameters_determined_by_complexity(self, complexity):
34 return [float(complexity)/10] 38 ## return [float(complexity)/10]
35 39
36 def transform_image(self, image): 40 def transform_image(self, image):
41 if self.effectuer == 0:
42 return image
43
37 image=image.reshape(1024,1) 44 image=image.reshape(1024,1)
38 aleatoire=numpy.zeros((1024,1)).astype('float32') 45 aleatoire=numpy.zeros((1024,1)).astype('float32')
39 for i in xrange(0,1024): 46 for i in xrange(0,1024):
40 aleatoire[i]=float(random.gauss(0,self.ecart_type)) 47 aleatoire[i]=float(random.gauss(0,self.ecart_type))
41 image=image+aleatoire 48 image=image+aleatoire