Mercurial > ift6266
annotate transformations/BruitGauss.py @ 94:1b8176e9892e
cleaning some *.pyc and *.py~ files in pycapcha
author | Xavier Glorot <glorotxa@iro.umontreal.ca> |
---|---|
date | Thu, 11 Feb 2010 11:55:03 -0500 |
parents | cc641ee75d3b |
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 |