comparison transformations/PoivreSel.py @ 88:ab57cd2b252c

Maintenant, il y a 25% de proba d'effectuer le bruitage. De plus, comme cette option demande un nouveau parametre, maintenant le module retourne ses parametres normalement. Plus desoin des 2 fonctions /determined_by_complexity/
author SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
date Thu, 11 Feb 2010 08:55:41 -0500
parents 42e3e2f67626
children 67e655fc1d0b
comparison
equal deleted inserted replaced
87:4775b4195b4b 88:ab57cd2b252c
5 Ajout de bruit poivre et sel dans les donnees. Le bruit est distribue de facon 5 Ajout de bruit poivre et sel dans les donnees. Le bruit est distribue de facon
6 aleatoire tire d'une uniforme tout comme la clarte des bites changees. 6 aleatoire tire d'une uniforme tout comme la clarte des bites changees.
7 7
8 La proportion de bites aleatoires est definit par complexity/5. 8 La proportion de bites aleatoires est definit par complexity/5.
9 Lorsque cette valeur est a 1 ==> Plus reconnaissable et 0 ==> Rien ne se passe 9 Lorsque cette valeur est a 1 ==> Plus reconnaissable et 0 ==> Rien ne se passe
10
11 On a maintenant 25% de chance d'effectuer un bruitage.
10 12
11 Ce fichier prend pour acquis que les images sont donnees une a la fois 13 Ce fichier prend pour acquis que les images sont donnees une a la fois
12 sous forme de numpy.array de 1024 (32 x 32) valeurs entre 0 et 1. 14 sous forme de numpy.array de 1024 (32 x 32) valeurs entre 0 et 1.
13 15
14 Sylvain Pannetier Lebeuf dans le cadre de IFT6266, hiver 2010 16 Sylvain Pannetier Lebeuf dans le cadre de IFT6266, hiver 2010
21 class PoivreSel(): 23 class PoivreSel():
22 24
23 def __init__(self): 25 def __init__(self):
24 self.proportion_bruit=0.1 #Le pourcentage des pixels qui seront bruites 26 self.proportion_bruit=0.1 #Le pourcentage des pixels qui seront bruites
25 self.nb_chng=10 #Le nombre de pixels changes. Seulement pour fin de calcul 27 self.nb_chng=10 #Le nombre de pixels changes. Seulement pour fin de calcul
28 self.effectuer=1 #Vaut 1 si on effectue et 0 sinon.
26 29
27 def get_settings_names(self): 30 def get_settings_names(self):
28 return [] 31 return ['proportion_bruit','effectuer']
29 32
30 def get_settings_name_determined_by_complexity(self): 33 ## def get_settings_name_determined_by_complexity(self):
31 return ['proportion_bruit'] 34 ## return ['proportion_bruit']
32 35
33 def regenerate_parameters(self, complexity): 36 def regenerate_parameters(self, complexity):
34 self.proportion_bruit = float(complexity)/5 37 self.proportion_bruit = float(complexity)/5
35 self.nb_chng=int(1024*self.proportion_bruit) 38 self.nb_chng=int(1024*self.proportion_bruit)
36 self.changements=random.sample(xrange(1024),self.nb_chng) #Les pixels qui seront changes 39 self.changements=random.sample(xrange(1024),self.nb_chng) #Les pixels qui seront changes
40 self.effectuer =numpy.random.binomial(1,0.25) ##### On a 25% de faire un bruit #####
37 return self._get_current_parameters() 41 return self._get_current_parameters()
38 42
39 def _get_current_parameters(self): 43 def _get_current_parameters(self):
40 return [] 44 return [self.proportion_bruit,self.effectuer]
41 45
42 def get_parameters_determined_by_complexity(self, complexity): 46 ## def get_parameters_determined_by_complexity(self, complexity):
43 return [self.proportion_bruit] 47 ## return [self.proportion_bruit]
44 48
45 def transform_image(self, image): 49 def transform_image(self, image):
50 if self.effectuer == 0:
51 return image
52
46 image=image.reshape(1024,1) 53 image=image.reshape(1024,1)
47 for j in xrange(0,self.nb_chng): 54 for j in xrange(0,self.nb_chng):
48 image[self.changements[j]]=numpy.random.random() #On determine les nouvelles valeurs des pixels changes 55 image[self.changements[j]]=numpy.random.random() #On determine les nouvelles valeurs des pixels changes
49 return image.reshape(32,32) 56 return image.reshape(32,32)
50 57