Mercurial > ift6266
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 |