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