# HG changeset patch # User SylvainPL # Date 1265896863 18000 # Node ID cc641ee75d3b16793bed3d4f6fef41000e63383a # Parent ab57cd2b252c938741849e2f424caafa518ac340 Il y a maintenant 25% de proba d'effectuer le bruitage diff -r ab57cd2b252c -r cc641ee75d3b transformations/BruitGauss.py --- a/transformations/BruitGauss.py Thu Feb 11 08:55:41 2010 -0500 +++ b/transformations/BruitGauss.py Thu Feb 11 09:01:03 2010 -0500 @@ -12,6 +12,8 @@ La grandeur de la gaussienne ainsi que son ecart type sont definit par complexity et par une composante aleatoire normale. +On a 25 % de chances d'effectuer le bruitage + Ce fichier prend pour acquis que les images sont donnees une a la fois sous forme de numpy.array de 1024 (32 x 32) valeurs entre 0 et 1. @@ -31,17 +33,21 @@ self.nb_chng=10 #Le nombre de pixels changes. Seulement pour fin de calcul self.sigma_gauss=3.0 #L'ecart type du noyau gaussien self.grandeur=7 #Largeur de la fenetre gaussienne + self.effectuer=1 #1=effectuer et 0=rien faire def get_settings_names(self): - return ['proportion_bruit','sigma_gauss','grandeur'] + return ['proportion_bruit','sigma_gauss','grandeur','effectuer'] def regenerate_parameters(self, complexity): self.proportion_bruit = float(complexity)/25 self.nb_chng=int(1024*self.proportion_bruit) + if float(complexity) > 0: self.sigma_gauss=max(0,numpy.random.normal(complexity*5,complexity)) self.grandeur=int(min(31,max(1,8*complexity*numpy.random.normal(1,float(complexity)/2)))) + self.effectuer =numpy.random.binomial(1,0.25) ##### On a 25% de faire un bruit ##### else: + self.effectuer = 0 self.sigma_gauss = 0 self.grandeur=1 #Un peu de paranoia ici, mais on ne sait jamais @@ -51,10 +57,12 @@ return self._get_current_parameters() def _get_current_parameters(self): - return [self.proportion_bruit,self.sigma_gauss,self.grandeur] + return [self.proportion_bruit,self.sigma_gauss,self.grandeur,self.effectuer] def transform_image(self, image): + if self.effectuer == 0: + return image image=image.reshape((32,32)) #creation du noyau gaussien @@ -73,7 +81,7 @@ for i in xrange(0,self.nb_chng): x_bruit=int(numpy.random.randint(0,32)) y_bruit=int(numpy.random.randint(0,32)) - + #l'overlap n'est pas dramatique. Pas besoin de mecanisme pour s'en proteger image[x_bruit,y_bruit]=max(0,min(1,numpy.random.normal(0.4,self.proportion_bruit*20))) bord = int((self.grandeur-1)/2)