annotate transformations/BruitGauss.py @ 89:cc641ee75d3b

Il y a maintenant 25% de proba d'effectuer le bruitage
author SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
date Thu, 11 Feb 2010 09:01:03 -0500
parents bab98bb47616
children 17fabd74dd2b
rev   line source
38
349d8dc9504c Ajout de bruit poivre et sel, puis filtre gaussien. Parametres deterministes par rapport a complexity. Compatible testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
1 #!/usr/bin/python
349d8dc9504c Ajout de bruit poivre et sel, puis filtre gaussien. Parametres deterministes par rapport a complexity. Compatible testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
2 # coding: utf-8
349d8dc9504c Ajout de bruit poivre et sel, puis filtre gaussien. Parametres deterministes par rapport a complexity. Compatible testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
3
349d8dc9504c Ajout de bruit poivre et sel, puis filtre gaussien. Parametres deterministes par rapport a complexity. Compatible testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
4 '''
62
bab98bb47616 Correction majeure. Auparavant, le lissage gaussien etait global avec une seule gaussienne. Maintenant, le lissage gaussien est local. Un bruit correle est rajoute sur l'image
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 38
diff changeset
5 Ajout de bruit gaussien dans les donnees. A chaque iteration, un bruit poivre
bab98bb47616 Correction majeure. Auparavant, le lissage gaussien etait global avec une seule gaussienne. Maintenant, le lissage gaussien est local. Un bruit correle est rajoute sur l'image
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 38
diff changeset
6 et sel est ajoute, puis un lissage gaussien autour de ce point est ajoute.
bab98bb47616 Correction majeure. Auparavant, le lissage gaussien etait global avec une seule gaussienne. Maintenant, le lissage gaussien est local. Un bruit correle est rajoute sur l'image
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 38
diff changeset
7 On fait un nombre d'iteration = 1024*complexity/25 ce qui equivaud
bab98bb47616 Correction majeure. Auparavant, le lissage gaussien etait global avec une seule gaussienne. Maintenant, le lissage gaussien est local. Un bruit correle est rajoute sur l'image
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 38
diff changeset
8 a complexity/25 des points qui recoivent le centre du noyau gaussien.
bab98bb47616 Correction majeure. Auparavant, le lissage gaussien etait global avec une seule gaussienne. Maintenant, le lissage gaussien est local. Un bruit correle est rajoute sur l'image
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 38
diff changeset
9 Il y en a beaucoup moins que le bruit poivre et sel, car la transformation
bab98bb47616 Correction majeure. Auparavant, le lissage gaussien etait global avec une seule gaussienne. Maintenant, le lissage gaussien est local. Un bruit correle est rajoute sur l'image
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 38
diff changeset
10 est plutôt aggressive et touche beaucoup de pixels autour du centre
38
349d8dc9504c Ajout de bruit poivre et sel, puis filtre gaussien. Parametres deterministes par rapport a complexity. Compatible testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
11
62
bab98bb47616 Correction majeure. Auparavant, le lissage gaussien etait global avec une seule gaussienne. Maintenant, le lissage gaussien est local. Un bruit correle est rajoute sur l'image
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 38
diff changeset
12 La grandeur de la gaussienne ainsi que son ecart type sont definit par complexity
bab98bb47616 Correction majeure. Auparavant, le lissage gaussien etait global avec une seule gaussienne. Maintenant, le lissage gaussien est local. Un bruit correle est rajoute sur l'image
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 38
diff changeset
13 et par une composante aleatoire normale.
38
349d8dc9504c Ajout de bruit poivre et sel, puis filtre gaussien. Parametres deterministes par rapport a complexity. Compatible testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
14
89
cc641ee75d3b Il y a maintenant 25% de proba d'effectuer le bruitage
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 62
diff changeset
15 On a 25 % de chances d'effectuer le bruitage
cc641ee75d3b Il y a maintenant 25% de proba d'effectuer le bruitage
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 62
diff changeset
16
38
349d8dc9504c Ajout de bruit poivre et sel, puis filtre gaussien. Parametres deterministes par rapport a complexity. Compatible testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
17 Ce fichier prend pour acquis que les images sont donnees une a la fois
349d8dc9504c Ajout de bruit poivre et sel, puis filtre gaussien. Parametres deterministes par rapport a complexity. Compatible testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
18 sous forme de numpy.array de 1024 (32 x 32) valeurs entre 0 et 1.
349d8dc9504c Ajout de bruit poivre et sel, puis filtre gaussien. Parametres deterministes par rapport a complexity. Compatible testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
19
349d8dc9504c Ajout de bruit poivre et sel, puis filtre gaussien. Parametres deterministes par rapport a complexity. Compatible testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
20 Sylvain Pannetier Lebeuf dans le cadre de IFT6266, hiver 2010
349d8dc9504c Ajout de bruit poivre et sel, puis filtre gaussien. Parametres deterministes par rapport a complexity. Compatible testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
21
349d8dc9504c Ajout de bruit poivre et sel, puis filtre gaussien. Parametres deterministes par rapport a complexity. Compatible testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
22 '''
349d8dc9504c Ajout de bruit poivre et sel, puis filtre gaussien. Parametres deterministes par rapport a complexity. Compatible testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
23
349d8dc9504c Ajout de bruit poivre et sel, puis filtre gaussien. Parametres deterministes par rapport a complexity. Compatible testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
24 import numpy
349d8dc9504c Ajout de bruit poivre et sel, puis filtre gaussien. Parametres deterministes par rapport a complexity. Compatible testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
25 import random
349d8dc9504c Ajout de bruit poivre et sel, puis filtre gaussien. Parametres deterministes par rapport a complexity. Compatible testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
26 import scipy
349d8dc9504c Ajout de bruit poivre et sel, puis filtre gaussien. Parametres deterministes par rapport a complexity. Compatible testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
27 from scipy import ndimage
349d8dc9504c Ajout de bruit poivre et sel, puis filtre gaussien. Parametres deterministes par rapport a complexity. Compatible testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
28
349d8dc9504c Ajout de bruit poivre et sel, puis filtre gaussien. Parametres deterministes par rapport a complexity. Compatible testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
29 class BruitGauss():
349d8dc9504c Ajout de bruit poivre et sel, puis filtre gaussien. Parametres deterministes par rapport a complexity. Compatible testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
30
349d8dc9504c Ajout de bruit poivre et sel, puis filtre gaussien. Parametres deterministes par rapport a complexity. Compatible testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
31 def __init__(self):
349d8dc9504c Ajout de bruit poivre et sel, puis filtre gaussien. Parametres deterministes par rapport a complexity. Compatible testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
32 self.proportion_bruit=0.1 #Le pourcentage des pixels qui seront bruites
349d8dc9504c Ajout de bruit poivre et sel, puis filtre gaussien. Parametres deterministes par rapport a complexity. Compatible testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
33 self.nb_chng=10 #Le nombre de pixels changes. Seulement pour fin de calcul
62
bab98bb47616 Correction majeure. Auparavant, le lissage gaussien etait global avec une seule gaussienne. Maintenant, le lissage gaussien est local. Un bruit correle est rajoute sur l'image
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 38
diff changeset
34 self.sigma_gauss=3.0 #L'ecart type du noyau gaussien
bab98bb47616 Correction majeure. Auparavant, le lissage gaussien etait global avec une seule gaussienne. Maintenant, le lissage gaussien est local. Un bruit correle est rajoute sur l'image
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 38
diff changeset
35 self.grandeur=7 #Largeur de la fenetre gaussienne
89
cc641ee75d3b Il y a maintenant 25% de proba d'effectuer le bruitage
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 62
diff changeset
36 self.effectuer=1 #1=effectuer et 0=rien faire
38
349d8dc9504c Ajout de bruit poivre et sel, puis filtre gaussien. Parametres deterministes par rapport a complexity. Compatible testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
37
349d8dc9504c Ajout de bruit poivre et sel, puis filtre gaussien. Parametres deterministes par rapport a complexity. Compatible testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
38 def get_settings_names(self):
89
cc641ee75d3b Il y a maintenant 25% de proba d'effectuer le bruitage
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 62
diff changeset
39 return ['proportion_bruit','sigma_gauss','grandeur','effectuer']
38
349d8dc9504c Ajout de bruit poivre et sel, puis filtre gaussien. Parametres deterministes par rapport a complexity. Compatible testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
40
349d8dc9504c Ajout de bruit poivre et sel, puis filtre gaussien. Parametres deterministes par rapport a complexity. Compatible testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
41 def regenerate_parameters(self, complexity):
62
bab98bb47616 Correction majeure. Auparavant, le lissage gaussien etait global avec une seule gaussienne. Maintenant, le lissage gaussien est local. Un bruit correle est rajoute sur l'image
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 38
diff changeset
42 self.proportion_bruit = float(complexity)/25
38
349d8dc9504c Ajout de bruit poivre et sel, puis filtre gaussien. Parametres deterministes par rapport a complexity. Compatible testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
43 self.nb_chng=int(1024*self.proportion_bruit)
89
cc641ee75d3b Il y a maintenant 25% de proba d'effectuer le bruitage
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 62
diff changeset
44
62
bab98bb47616 Correction majeure. Auparavant, le lissage gaussien etait global avec une seule gaussienne. Maintenant, le lissage gaussien est local. Un bruit correle est rajoute sur l'image
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 38
diff changeset
45 if float(complexity) > 0:
bab98bb47616 Correction majeure. Auparavant, le lissage gaussien etait global avec une seule gaussienne. Maintenant, le lissage gaussien est local. Un bruit correle est rajoute sur l'image
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 38
diff changeset
46 self.sigma_gauss=max(0,numpy.random.normal(complexity*5,complexity))
bab98bb47616 Correction majeure. Auparavant, le lissage gaussien etait global avec une seule gaussienne. Maintenant, le lissage gaussien est local. Un bruit correle est rajoute sur l'image
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 38
diff changeset
47 self.grandeur=int(min(31,max(1,8*complexity*numpy.random.normal(1,float(complexity)/2))))
89
cc641ee75d3b Il y a maintenant 25% de proba d'effectuer le bruitage
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 62
diff changeset
48 self.effectuer =numpy.random.binomial(1,0.25) ##### On a 25% de faire un bruit #####
62
bab98bb47616 Correction majeure. Auparavant, le lissage gaussien etait global avec une seule gaussienne. Maintenant, le lissage gaussien est local. Un bruit correle est rajoute sur l'image
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 38
diff changeset
49 else:
89
cc641ee75d3b Il y a maintenant 25% de proba d'effectuer le bruitage
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 62
diff changeset
50 self.effectuer = 0
62
bab98bb47616 Correction majeure. Auparavant, le lissage gaussien etait global avec une seule gaussienne. Maintenant, le lissage gaussien est local. Un bruit correle est rajoute sur l'image
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 38
diff changeset
51 self.sigma_gauss = 0
bab98bb47616 Correction majeure. Auparavant, le lissage gaussien etait global avec une seule gaussienne. Maintenant, le lissage gaussien est local. Un bruit correle est rajoute sur l'image
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 38
diff changeset
52 self.grandeur=1
bab98bb47616 Correction majeure. Auparavant, le lissage gaussien etait global avec une seule gaussienne. Maintenant, le lissage gaussien est local. Un bruit correle est rajoute sur l'image
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 38
diff changeset
53 #Un peu de paranoia ici, mais on ne sait jamais
bab98bb47616 Correction majeure. Auparavant, le lissage gaussien etait global avec une seule gaussienne. Maintenant, le lissage gaussien est local. Un bruit correle est rajoute sur l'image
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 38
diff changeset
54
bab98bb47616 Correction majeure. Auparavant, le lissage gaussien etait global avec une seule gaussienne. Maintenant, le lissage gaussien est local. Un bruit correle est rajoute sur l'image
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 38
diff changeset
55 if self.grandeur%2 == 0:
bab98bb47616 Correction majeure. Auparavant, le lissage gaussien etait global avec une seule gaussienne. Maintenant, le lissage gaussien est local. Un bruit correle est rajoute sur l'image
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 38
diff changeset
56 self.grandeur+=1 #Toujours un nombre impair, plus simple plus tard
38
349d8dc9504c Ajout de bruit poivre et sel, puis filtre gaussien. Parametres deterministes par rapport a complexity. Compatible testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
57 return self._get_current_parameters()
349d8dc9504c Ajout de bruit poivre et sel, puis filtre gaussien. Parametres deterministes par rapport a complexity. Compatible testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
58
349d8dc9504c Ajout de bruit poivre et sel, puis filtre gaussien. Parametres deterministes par rapport a complexity. Compatible testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
59 def _get_current_parameters(self):
89
cc641ee75d3b Il y a maintenant 25% de proba d'effectuer le bruitage
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 62
diff changeset
60 return [self.proportion_bruit,self.sigma_gauss,self.grandeur,self.effectuer]
38
349d8dc9504c Ajout de bruit poivre et sel, puis filtre gaussien. Parametres deterministes par rapport a complexity. Compatible testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
61
349d8dc9504c Ajout de bruit poivre et sel, puis filtre gaussien. Parametres deterministes par rapport a complexity. Compatible testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
62
349d8dc9504c Ajout de bruit poivre et sel, puis filtre gaussien. Parametres deterministes par rapport a complexity. Compatible testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
63 def transform_image(self, image):
89
cc641ee75d3b Il y a maintenant 25% de proba d'effectuer le bruitage
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 62
diff changeset
64 if self.effectuer == 0:
cc641ee75d3b Il y a maintenant 25% de proba d'effectuer le bruitage
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 62
diff changeset
65 return image
62
bab98bb47616 Correction majeure. Auparavant, le lissage gaussien etait global avec une seule gaussienne. Maintenant, le lissage gaussien est local. Un bruit correle est rajoute sur l'image
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 38
diff changeset
66 image=image.reshape((32,32))
bab98bb47616 Correction majeure. Auparavant, le lissage gaussien etait global avec une seule gaussienne. Maintenant, le lissage gaussien est local. Un bruit correle est rajoute sur l'image
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 38
diff changeset
67
bab98bb47616 Correction majeure. Auparavant, le lissage gaussien etait global avec une seule gaussienne. Maintenant, le lissage gaussien est local. Un bruit correle est rajoute sur l'image
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 38
diff changeset
68 #creation du noyau gaussien
bab98bb47616 Correction majeure. Auparavant, le lissage gaussien etait global avec une seule gaussienne. Maintenant, le lissage gaussien est local. Un bruit correle est rajoute sur l'image
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 38
diff changeset
69 gauss=numpy.zeros((self.grandeur,self.grandeur))
bab98bb47616 Correction majeure. Auparavant, le lissage gaussien etait global avec une seule gaussienne. Maintenant, le lissage gaussien est local. Un bruit correle est rajoute sur l'image
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 38
diff changeset
70 x0 = y0 = self.grandeur/2
bab98bb47616 Correction majeure. Auparavant, le lissage gaussien etait global avec une seule gaussienne. Maintenant, le lissage gaussien est local. Un bruit correle est rajoute sur l'image
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 38
diff changeset
71 for i in xrange(0,self.grandeur):
bab98bb47616 Correction majeure. Auparavant, le lissage gaussien etait global avec une seule gaussienne. Maintenant, le lissage gaussien est local. Un bruit correle est rajoute sur l'image
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 38
diff changeset
72 for j in xrange(0,self.grandeur):
bab98bb47616 Correction majeure. Auparavant, le lissage gaussien etait global avec une seule gaussienne. Maintenant, le lissage gaussien est local. Un bruit correle est rajoute sur l'image
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 38
diff changeset
73 gauss[i,j]=numpy.exp(-4*numpy.log(2) * ((i-x0)**2 + (j-y0)**2) / self.sigma_gauss**2)
bab98bb47616 Correction majeure. Auparavant, le lissage gaussien etait global avec une seule gaussienne. Maintenant, le lissage gaussien est local. Un bruit correle est rajoute sur l'image
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 38
diff changeset
74 #pylab.contour(gauss)
bab98bb47616 Correction majeure. Auparavant, le lissage gaussien etait global avec une seule gaussienne. Maintenant, le lissage gaussien est local. Un bruit correle est rajoute sur l'image
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 38
diff changeset
75 #pylab.show() #Pour voir si la gaussienne est bien comme desiree
bab98bb47616 Correction majeure. Auparavant, le lissage gaussien etait global avec une seule gaussienne. Maintenant, le lissage gaussien est local. Un bruit correle est rajoute sur l'image
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 38
diff changeset
76
bab98bb47616 Correction majeure. Auparavant, le lissage gaussien etait global avec une seule gaussienne. Maintenant, le lissage gaussien est local. Un bruit correle est rajoute sur l'image
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 38
diff changeset
77 #Chaque tour dans la boucle ajoute un pointpoivre et sel, puis
bab98bb47616 Correction majeure. Auparavant, le lissage gaussien etait global avec une seule gaussienne. Maintenant, le lissage gaussien est local. Un bruit correle est rajoute sur l'image
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 38
diff changeset
78 #y ajoute un bruit gaussien autour afin d'avoir de la correlation dans
bab98bb47616 Correction majeure. Auparavant, le lissage gaussien etait global avec une seule gaussienne. Maintenant, le lissage gaussien est local. Un bruit correle est rajoute sur l'image
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 38
diff changeset
79 #les points
bab98bb47616 Correction majeure. Auparavant, le lissage gaussien etait global avec une seule gaussienne. Maintenant, le lissage gaussien est local. Un bruit correle est rajoute sur l'image
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 38
diff changeset
80
bab98bb47616 Correction majeure. Auparavant, le lissage gaussien etait global avec une seule gaussienne. Maintenant, le lissage gaussien est local. Un bruit correle est rajoute sur l'image
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 38
diff changeset
81 for i in xrange(0,self.nb_chng):
bab98bb47616 Correction majeure. Auparavant, le lissage gaussien etait global avec une seule gaussienne. Maintenant, le lissage gaussien est local. Un bruit correle est rajoute sur l'image
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 38
diff changeset
82 x_bruit=int(numpy.random.randint(0,32))
bab98bb47616 Correction majeure. Auparavant, le lissage gaussien etait global avec une seule gaussienne. Maintenant, le lissage gaussien est local. Un bruit correle est rajoute sur l'image
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 38
diff changeset
83 y_bruit=int(numpy.random.randint(0,32))
89
cc641ee75d3b Il y a maintenant 25% de proba d'effectuer le bruitage
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 62
diff changeset
84 #l'overlap n'est pas dramatique. Pas besoin de mecanisme pour s'en proteger
62
bab98bb47616 Correction majeure. Auparavant, le lissage gaussien etait global avec une seule gaussienne. Maintenant, le lissage gaussien est local. Un bruit correle est rajoute sur l'image
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 38
diff changeset
85 image[x_bruit,y_bruit]=max(0,min(1,numpy.random.normal(0.4,self.proportion_bruit*20)))
bab98bb47616 Correction majeure. Auparavant, le lissage gaussien etait global avec une seule gaussienne. Maintenant, le lissage gaussien est local. Un bruit correle est rajoute sur l'image
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 38
diff changeset
86
bab98bb47616 Correction majeure. Auparavant, le lissage gaussien etait global avec une seule gaussienne. Maintenant, le lissage gaussien est local. Un bruit correle est rajoute sur l'image
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 38
diff changeset
87 bord = int((self.grandeur-1)/2)
bab98bb47616 Correction majeure. Auparavant, le lissage gaussien etait global avec une seule gaussienne. Maintenant, le lissage gaussien est local. Un bruit correle est rajoute sur l'image
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 38
diff changeset
88 #Faire le "smooting"
bab98bb47616 Correction majeure. Auparavant, le lissage gaussien etait global avec une seule gaussienne. Maintenant, le lissage gaussien est local. Un bruit correle est rajoute sur l'image
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 38
diff changeset
89 for x in xrange(0,self.grandeur):
bab98bb47616 Correction majeure. Auparavant, le lissage gaussien etait global avec une seule gaussienne. Maintenant, le lissage gaussien est local. Un bruit correle est rajoute sur l'image
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 38
diff changeset
90 for y in xrange(0,self.grandeur):
bab98bb47616 Correction majeure. Auparavant, le lissage gaussien etait global avec une seule gaussienne. Maintenant, le lissage gaussien est local. Un bruit correle est rajoute sur l'image
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 38
diff changeset
91 #pour etre certain de ne pas changer le vide
bab98bb47616 Correction majeure. Auparavant, le lissage gaussien etait global avec une seule gaussienne. Maintenant, le lissage gaussien est local. Un bruit correle est rajoute sur l'image
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 38
diff changeset
92 if x_bruit-bord+x < 0:
bab98bb47616 Correction majeure. Auparavant, le lissage gaussien etait global avec une seule gaussienne. Maintenant, le lissage gaussien est local. Un bruit correle est rajoute sur l'image
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 38
diff changeset
93 continue
bab98bb47616 Correction majeure. Auparavant, le lissage gaussien etait global avec une seule gaussienne. Maintenant, le lissage gaussien est local. Un bruit correle est rajoute sur l'image
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 38
diff changeset
94 if y_bruit-bord+y < 0:
bab98bb47616 Correction majeure. Auparavant, le lissage gaussien etait global avec une seule gaussienne. Maintenant, le lissage gaussien est local. Un bruit correle est rajoute sur l'image
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 38
diff changeset
95 continue
bab98bb47616 Correction majeure. Auparavant, le lissage gaussien etait global avec une seule gaussienne. Maintenant, le lissage gaussien est local. Un bruit correle est rajoute sur l'image
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 38
diff changeset
96 if x_bruit-bord+x > 31:
bab98bb47616 Correction majeure. Auparavant, le lissage gaussien etait global avec une seule gaussienne. Maintenant, le lissage gaussien est local. Un bruit correle est rajoute sur l'image
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 38
diff changeset
97 continue
bab98bb47616 Correction majeure. Auparavant, le lissage gaussien etait global avec une seule gaussienne. Maintenant, le lissage gaussien est local. Un bruit correle est rajoute sur l'image
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 38
diff changeset
98 if y_bruit-bord+y > 31:
bab98bb47616 Correction majeure. Auparavant, le lissage gaussien etait global avec une seule gaussienne. Maintenant, le lissage gaussien est local. Un bruit correle est rajoute sur l'image
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 38
diff changeset
99 continue
bab98bb47616 Correction majeure. Auparavant, le lissage gaussien etait global avec une seule gaussienne. Maintenant, le lissage gaussien est local. Un bruit correle est rajoute sur l'image
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 38
diff changeset
100 image[x_bruit-bord+x,y_bruit-bord+y]=max(image[x_bruit-bord+x,y_bruit-bord+y],gauss[x,y]*image[x_bruit,y_bruit])
bab98bb47616 Correction majeure. Auparavant, le lissage gaussien etait global avec une seule gaussienne. Maintenant, le lissage gaussien est local. Un bruit correle est rajoute sur l'image
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 38
diff changeset
101 #image[x_bruit-bord+x,y_bruit-bord+y]=min(1,image[x_bruit-bord+x,y_bruit-bord+y]*(1+gauss[x,y]))
bab98bb47616 Correction majeure. Auparavant, le lissage gaussien etait global avec une seule gaussienne. Maintenant, le lissage gaussien est local. Un bruit correle est rajoute sur l'image
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 38
diff changeset
102 #Cette derniere ligne n'est pas très interessante. Elle ajoute le bruit
bab98bb47616 Correction majeure. Auparavant, le lissage gaussien etait global avec une seule gaussienne. Maintenant, le lissage gaussien est local. Un bruit correle est rajoute sur l'image
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 38
diff changeset
103 #plutot que de prendre le max entre la valeur presente et le bruit. Ca rend l'image un peu
bab98bb47616 Correction majeure. Auparavant, le lissage gaussien etait global avec une seule gaussienne. Maintenant, le lissage gaussien est local. Un bruit correle est rajoute sur l'image
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 38
diff changeset
104 #chaostique, pas une bonne idee
bab98bb47616 Correction majeure. Auparavant, le lissage gaussien etait global avec une seule gaussienne. Maintenant, le lissage gaussien est local. Un bruit correle est rajoute sur l'image
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 38
diff changeset
105
38
349d8dc9504c Ajout de bruit poivre et sel, puis filtre gaussien. Parametres deterministes par rapport a complexity. Compatible testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
106 return image
349d8dc9504c Ajout de bruit poivre et sel, puis filtre gaussien. Parametres deterministes par rapport a complexity. Compatible testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
107
349d8dc9504c Ajout de bruit poivre et sel, puis filtre gaussien. Parametres deterministes par rapport a complexity. Compatible testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
108 #---TESTS---
349d8dc9504c Ajout de bruit poivre et sel, puis filtre gaussien. Parametres deterministes par rapport a complexity. Compatible testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
109
349d8dc9504c Ajout de bruit poivre et sel, puis filtre gaussien. Parametres deterministes par rapport a complexity. Compatible testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
110 def _load_image():
349d8dc9504c Ajout de bruit poivre et sel, puis filtre gaussien. Parametres deterministes par rapport a complexity. Compatible testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
111 f = open('/home/sylvain/Dropbox/Msc/IFT6266/donnees/lower_test_data.ft') #Le jeu de donnees est en local.
349d8dc9504c Ajout de bruit poivre et sel, puis filtre gaussien. Parametres deterministes par rapport a complexity. Compatible testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
112 d = ft.read(f)
349d8dc9504c Ajout de bruit poivre et sel, puis filtre gaussien. Parametres deterministes par rapport a complexity. Compatible testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
113 w=numpy.asarray(d[0])
349d8dc9504c Ajout de bruit poivre et sel, puis filtre gaussien. Parametres deterministes par rapport a complexity. Compatible testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
114 return (w/255.0).astype('float')
349d8dc9504c Ajout de bruit poivre et sel, puis filtre gaussien. Parametres deterministes par rapport a complexity. Compatible testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
115
349d8dc9504c Ajout de bruit poivre et sel, puis filtre gaussien. Parametres deterministes par rapport a complexity. Compatible testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
116 def _test(complexite):
349d8dc9504c Ajout de bruit poivre et sel, puis filtre gaussien. Parametres deterministes par rapport a complexity. Compatible testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
117 img=_load_image()
349d8dc9504c Ajout de bruit poivre et sel, puis filtre gaussien. Parametres deterministes par rapport a complexity. Compatible testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
118 transfo = BruitGauss()
349d8dc9504c Ajout de bruit poivre et sel, puis filtre gaussien. Parametres deterministes par rapport a complexity. Compatible testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
119 pylab.imshow(img.reshape((32,32)))
349d8dc9504c Ajout de bruit poivre et sel, puis filtre gaussien. Parametres deterministes par rapport a complexity. Compatible testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
120 pylab.show()
349d8dc9504c Ajout de bruit poivre et sel, puis filtre gaussien. Parametres deterministes par rapport a complexity. Compatible testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
121 print transfo.get_settings_names()
349d8dc9504c Ajout de bruit poivre et sel, puis filtre gaussien. Parametres deterministes par rapport a complexity. Compatible testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
122 print transfo.regenerate_parameters(complexite)
349d8dc9504c Ajout de bruit poivre et sel, puis filtre gaussien. Parametres deterministes par rapport a complexity. Compatible testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
123
349d8dc9504c Ajout de bruit poivre et sel, puis filtre gaussien. Parametres deterministes par rapport a complexity. Compatible testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
124 img_trans=transfo.transform_image(img)
349d8dc9504c Ajout de bruit poivre et sel, puis filtre gaussien. Parametres deterministes par rapport a complexity. Compatible testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
125
349d8dc9504c Ajout de bruit poivre et sel, puis filtre gaussien. Parametres deterministes par rapport a complexity. Compatible testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
126 pylab.imshow(img_trans.reshape((32,32)))
349d8dc9504c Ajout de bruit poivre et sel, puis filtre gaussien. Parametres deterministes par rapport a complexity. Compatible testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
127 pylab.show()
349d8dc9504c Ajout de bruit poivre et sel, puis filtre gaussien. Parametres deterministes par rapport a complexity. Compatible testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
128
349d8dc9504c Ajout de bruit poivre et sel, puis filtre gaussien. Parametres deterministes par rapport a complexity. Compatible testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
129
349d8dc9504c Ajout de bruit poivre et sel, puis filtre gaussien. Parametres deterministes par rapport a complexity. Compatible testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
130 if __name__ == '__main__':
349d8dc9504c Ajout de bruit poivre et sel, puis filtre gaussien. Parametres deterministes par rapport a complexity. Compatible testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
131 from pylearn.io import filetensor as ft
349d8dc9504c Ajout de bruit poivre et sel, puis filtre gaussien. Parametres deterministes par rapport a complexity. Compatible testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
132 import pylab
349d8dc9504c Ajout de bruit poivre et sel, puis filtre gaussien. Parametres deterministes par rapport a complexity. Compatible testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
133 _test(0.5)
349d8dc9504c Ajout de bruit poivre et sel, puis filtre gaussien. Parametres deterministes par rapport a complexity. Compatible testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
134
349d8dc9504c Ajout de bruit poivre et sel, puis filtre gaussien. Parametres deterministes par rapport a complexity. Compatible testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
135