Mercurial > ift6266
annotate data_generation/transformations/Occlusion.py @ 184:81f8466dc121
Transient exception handling in captchas (ie. lorsque le NFS est temporairement inaccessible)
author | boulanni <nicolas_boulanger@hotmail.com> |
---|---|
date | Sat, 27 Feb 2010 19:26:26 -0500 |
parents | 1f5937e9e530 |
children |
rev | line source |
---|---|
44
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
1 #!/usr/bin/python |
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
2 # coding: utf-8 |
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
3 |
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
4 ''' |
53
60b093f963d8
Ajout de chargement d'un fichier d'image afin d'avoir une plus grande variete de fragments possible. Ce fichier est sur Assembla dans <files>.
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
44
diff
changeset
|
5 Ajout de bruit d'occlusion dans l'image originale. |
44
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
6 |
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
7 Le bruit provient d'un echantillon pris dans la seconde image puis rajoutee a |
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
8 gauche ou a droite de l'image originale. De plus, il se peut aussi que le |
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
9 bruit soit rajoute sur l'image originale, mais en plus pâle. |
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
10 |
74
f3e4328e3514
Contraste entre image et bruit renforce et proba 0.2 d'effectuer l'occlusion
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
55
diff
changeset
|
11 Le fichier /data/lisa/data/ift6266h10/echantillon_occlusion.ft |
f3e4328e3514
Contraste entre image et bruit renforce et proba 0.2 d'effectuer l'occlusion
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
55
diff
changeset
|
12 (sur le reseau DIRO) est necessaire. |
f3e4328e3514
Contraste entre image et bruit renforce et proba 0.2 d'effectuer l'occlusion
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
55
diff
changeset
|
13 |
123
999bf84ddec6
Maintenant, plus grande probablite d'effectuer une occlusion. Proba= 0.3 maintenant
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
122
diff
changeset
|
14 Il y a 30% de chance d'avoir une occlusion quelconque. |
53
60b093f963d8
Ajout de chargement d'un fichier d'image afin d'avoir une plus grande variete de fragments possible. Ce fichier est sur Assembla dans <files>.
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
44
diff
changeset
|
15 |
44
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
16 Sylvain Pannetier Lebeuf dans le cadre de IFT6266, hiver 2010 |
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
17 |
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
18 ''' |
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
19 |
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
20 |
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
21 import numpy |
74
f3e4328e3514
Contraste entre image et bruit renforce et proba 0.2 d'effectuer l'occlusion
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
55
diff
changeset
|
22 |
54
12bc019acd4e
Banque de 20000 images pour y prendre des fragments. De plus, cette banque est sur le reseau du DIRO. Rouler ce script avec accès au réseau DIRO
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
53
diff
changeset
|
23 from pylearn.io import filetensor as ft |
44
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
24 |
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
25 class Occlusion(): |
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
26 |
148
72a2d431d047
Rajout d'un seed random et d'une fonction get_seed
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
129
diff
changeset
|
27 def __init__(self,seed=9854): |
44
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
28 #Ces 4 variables representent la taille du "crop" sur l'image2 |
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
29 #Ce "crop" est pris a partie de image1[15,15], le milieu de l'image1 |
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
30 self.haut=2 |
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
31 self.bas=2 |
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
32 self.gauche=2 |
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
33 self.droite=2 |
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
34 |
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
35 #Ces deux variables representent le deplacement en x et y par rapport |
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
36 #au milieu du bord gauche ou droit |
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
37 self.x_arrivee=0 |
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
38 self.y_arrivee=0 |
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
39 |
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
40 #Cette variable =1 si l'image est mise a gauche et -1 si a droite |
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
41 #et =0 si au centre, mais plus pale |
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
42 self.endroit=-1 |
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
43 |
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
44 #Cette variable determine l'opacite de l'ajout dans le cas ou on est au milieu |
54
12bc019acd4e
Banque de 20000 images pour y prendre des fragments. De plus, cette banque est sur le reseau du DIRO. Rouler ce script avec accès au réseau DIRO
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
53
diff
changeset
|
45 self.opacite=0.5 #C'est completement arbitraire. Possible de le changer si voulu |
44
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
46 |
74
f3e4328e3514
Contraste entre image et bruit renforce et proba 0.2 d'effectuer l'occlusion
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
55
diff
changeset
|
47 #Sert a dire si on fait quelque chose. 0=faire rien, 1 on fait quelque chose |
f3e4328e3514
Contraste entre image et bruit renforce et proba 0.2 d'effectuer l'occlusion
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
55
diff
changeset
|
48 self.appliquer=1 |
f3e4328e3514
Contraste entre image et bruit renforce et proba 0.2 d'effectuer l'occlusion
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
55
diff
changeset
|
49 |
148
72a2d431d047
Rajout d'un seed random et d'une fonction get_seed
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
129
diff
changeset
|
50 self.seed=seed |
155
7640cb31cf1f
Enlevé les re-seed constants, interfère avec les autres modules
boulanni <nicolas_boulanger@hotmail.com>
parents:
148
diff
changeset
|
51 #numpy.random.seed(self.seed) |
148
72a2d431d047
Rajout d'un seed random et d'une fonction get_seed
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
129
diff
changeset
|
52 |
55
27bf31dca87d
Correction petite erreur de path pour la banque
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
54
diff
changeset
|
53 f3 = open('/data/lisa/data/ift6266h10/echantillon_occlusion.ft') #Doit etre sur le reseau DIRO. |
74
f3e4328e3514
Contraste entre image et bruit renforce et proba 0.2 d'effectuer l'occlusion
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
55
diff
changeset
|
54 #f3 = open('/home/sylvain/Dropbox/Msc/IFT6266/donnees/echantillon_occlusion.ft') |
54
12bc019acd4e
Banque de 20000 images pour y prendre des fragments. De plus, cette banque est sur le reseau du DIRO. Rouler ce script avec accès au réseau DIRO
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
53
diff
changeset
|
55 #Il faut arranger le path sinon |
53
60b093f963d8
Ajout de chargement d'un fichier d'image afin d'avoir une plus grande variete de fragments possible. Ce fichier est sur Assembla dans <files>.
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
44
diff
changeset
|
56 w=ft.read(f3) |
60b093f963d8
Ajout de chargement d'un fichier d'image afin d'avoir une plus grande variete de fragments possible. Ce fichier est sur Assembla dans <files>.
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
44
diff
changeset
|
57 f3.close() |
44
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
58 |
53
60b093f963d8
Ajout de chargement d'un fichier d'image afin d'avoir une plus grande variete de fragments possible. Ce fichier est sur Assembla dans <files>.
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
44
diff
changeset
|
59 self.longueur=len(w) |
54
12bc019acd4e
Banque de 20000 images pour y prendre des fragments. De plus, cette banque est sur le reseau du DIRO. Rouler ce script avec accès au réseau DIRO
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
53
diff
changeset
|
60 self.d=(w.astype('float'))/255 |
44
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
61 |
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
62 |
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
63 def get_settings_names(self): |
74
f3e4328e3514
Contraste entre image et bruit renforce et proba 0.2 d'effectuer l'occlusion
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
55
diff
changeset
|
64 return ['haut','bas','gauche','droite','x_arrivee','y_arrivee','endroit','rajout','appliquer'] |
148
72a2d431d047
Rajout d'un seed random et d'une fonction get_seed
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
129
diff
changeset
|
65 |
72a2d431d047
Rajout d'un seed random et d'une fonction get_seed
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
129
diff
changeset
|
66 def get_seed(self): |
72a2d431d047
Rajout d'un seed random et d'une fonction get_seed
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
129
diff
changeset
|
67 return self.seed |
44
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
68 |
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
69 def regenerate_parameters(self, complexity): |
125
5d3a7a4e30e9
little changes in Rature and occlusion to fit with visualisation
Xavier Glorot <glorotxa@iro.umontreal.ca>
parents:
123
diff
changeset
|
70 self.haut=min(15,int(numpy.abs(numpy.random.normal(int(8*complexity),2)))) |
5d3a7a4e30e9
little changes in Rature and occlusion to fit with visualisation
Xavier Glorot <glorotxa@iro.umontreal.ca>
parents:
123
diff
changeset
|
71 self.bas=min(15,int(numpy.abs(numpy.random.normal(int(8*complexity),2)))) |
5d3a7a4e30e9
little changes in Rature and occlusion to fit with visualisation
Xavier Glorot <glorotxa@iro.umontreal.ca>
parents:
123
diff
changeset
|
72 self.gauche=min(15,int(numpy.abs(numpy.random.normal(int(8*complexity),2)))) |
5d3a7a4e30e9
little changes in Rature and occlusion to fit with visualisation
Xavier Glorot <glorotxa@iro.umontreal.ca>
parents:
123
diff
changeset
|
73 self.droite=min(15,int(numpy.abs(numpy.random.normal(int(8*complexity),2)))) |
44
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
74 if self.haut+self.bas+self.gauche+self.droite==0: #Tres improbable |
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
75 self.haut=1 |
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
76 self.bas=1 |
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
77 self.gauche=1 |
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
78 self.droite=1 |
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
79 |
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
80 #Ces deux valeurs seront controlees afin d'etre certain de ne pas depasser |
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
81 self.x_arrivee=int(numpy.abs(numpy.random.normal(0,2))) #Complexity n'entre pas en jeu, pas besoin |
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
82 self.y_arrivee=int(numpy.random.normal(0,3)) |
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
83 |
122
5d22498c73d1
Correction d'un petit bug (random.randint a des bornes inclusives, ce qui pouvait creer un petit bug)
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
74
diff
changeset
|
84 self.rajout=numpy.random.randint(0,self.longueur-1) #les bouts de quelle lettre |
129
a507adba0ce3
Changes to fit with visualisation
Xavier Glorot <glorotxa@iro.umontreal.ca>
parents:
125
diff
changeset
|
85 self.appliquer=numpy.random.binomial(1,0.4) ##### 40 % du temps, on met une occlusion ##### |
74
f3e4328e3514
Contraste entre image et bruit renforce et proba 0.2 d'effectuer l'occlusion
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
55
diff
changeset
|
86 |
f3e4328e3514
Contraste entre image et bruit renforce et proba 0.2 d'effectuer l'occlusion
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
55
diff
changeset
|
87 if complexity == 0: #On ne fait rien dans ce cas |
f3e4328e3514
Contraste entre image et bruit renforce et proba 0.2 d'effectuer l'occlusion
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
55
diff
changeset
|
88 self.applique=0 |
44
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
89 |
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
90 self.endroit=numpy.random.randint(-1,2) |
74
f3e4328e3514
Contraste entre image et bruit renforce et proba 0.2 d'effectuer l'occlusion
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
55
diff
changeset
|
91 |
44
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
92 return self._get_current_parameters() |
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
93 |
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
94 def _get_current_parameters(self): |
74
f3e4328e3514
Contraste entre image et bruit renforce et proba 0.2 d'effectuer l'occlusion
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
55
diff
changeset
|
95 return [self.haut,self.bas,self.gauche,self.droite,self.x_arrivee,self.y_arrivee,self.endroit,self.rajout,self.appliquer] |
44
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
96 |
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
97 |
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
98 def transform_image(self, image): |
74
f3e4328e3514
Contraste entre image et bruit renforce et proba 0.2 d'effectuer l'occlusion
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
55
diff
changeset
|
99 if self.appliquer == 0: #Si on fait rien, on retourne tout de suite l'image |
f3e4328e3514
Contraste entre image et bruit renforce et proba 0.2 d'effectuer l'occlusion
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
55
diff
changeset
|
100 return image |
f3e4328e3514
Contraste entre image et bruit renforce et proba 0.2 d'effectuer l'occlusion
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
55
diff
changeset
|
101 |
44
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
102 #Attrapper le bruit d'occlusion |
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
103 bruit=self.d[self.rajout].reshape((32,32))[15-self.haut:15+self.bas+1,15-self.gauche:15+self.droite+1] |
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
104 |
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
105 if self.x_arrivee+self.gauche+self.droite>32: |
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
106 self.endroit*=-1 #On change de bord et on colle sur le cote |
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
107 self.x_arrivee=0 |
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
108 if self.y_arrivee-self.haut <-16: |
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
109 self.y_arrivee=self.haut-16#On colle le morceau en haut |
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
110 if self.y_arrivee+self.bas > 15: |
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
111 self.y_arrivee=15-self.bas #On colle le morceau en bas |
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
112 |
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
113 if self.endroit==-1: #a gauche |
74
f3e4328e3514
Contraste entre image et bruit renforce et proba 0.2 d'effectuer l'occlusion
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
55
diff
changeset
|
114 for i in xrange(-self.haut,self.bas+1): |
f3e4328e3514
Contraste entre image et bruit renforce et proba 0.2 d'effectuer l'occlusion
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
55
diff
changeset
|
115 for j in xrange(0,self.gauche+self.droite+1): |
f3e4328e3514
Contraste entre image et bruit renforce et proba 0.2 d'effectuer l'occlusion
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
55
diff
changeset
|
116 image[16+self.y_arrivee+i,self.x_arrivee+j]=\ |
f3e4328e3514
Contraste entre image et bruit renforce et proba 0.2 d'effectuer l'occlusion
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
55
diff
changeset
|
117 max(image[16+self.y_arrivee+i,self.x_arrivee+j],bruit[i+self.haut,j]) |
f3e4328e3514
Contraste entre image et bruit renforce et proba 0.2 d'effectuer l'occlusion
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
55
diff
changeset
|
118 |
44
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
119 elif self.endroit==1: #a droite |
74
f3e4328e3514
Contraste entre image et bruit renforce et proba 0.2 d'effectuer l'occlusion
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
55
diff
changeset
|
120 for i in xrange(-self.haut,self.bas+1): |
f3e4328e3514
Contraste entre image et bruit renforce et proba 0.2 d'effectuer l'occlusion
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
55
diff
changeset
|
121 for j in xrange(-self.gauche-self.droite,1): |
f3e4328e3514
Contraste entre image et bruit renforce et proba 0.2 d'effectuer l'occlusion
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
55
diff
changeset
|
122 image[16+self.y_arrivee+i,31-self.x_arrivee+j]=\ |
f3e4328e3514
Contraste entre image et bruit renforce et proba 0.2 d'effectuer l'occlusion
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
55
diff
changeset
|
123 max(image[16+self.y_arrivee+i,31-self.x_arrivee+j],bruit[i+self.haut,j+self.gauche+self.droite]) |
f3e4328e3514
Contraste entre image et bruit renforce et proba 0.2 d'effectuer l'occlusion
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
55
diff
changeset
|
124 |
44
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
125 elif self.endroit==0: #au milieu |
74
f3e4328e3514
Contraste entre image et bruit renforce et proba 0.2 d'effectuer l'occlusion
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
55
diff
changeset
|
126 for i in xrange(-self.haut,self.bas+1): |
f3e4328e3514
Contraste entre image et bruit renforce et proba 0.2 d'effectuer l'occlusion
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
55
diff
changeset
|
127 for j in xrange(-self.gauche,self.droite+1): |
f3e4328e3514
Contraste entre image et bruit renforce et proba 0.2 d'effectuer l'occlusion
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
55
diff
changeset
|
128 image[16+i,16+j]=max(image[16+i,16+j],bruit[i+self.haut,j+self.gauche]*self.opacite) |
f3e4328e3514
Contraste entre image et bruit renforce et proba 0.2 d'effectuer l'occlusion
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
55
diff
changeset
|
129 |
44
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
130 |
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
131 return image |
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
132 |
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
133 #---TESTS--- |
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
134 |
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
135 def _load_image(): |
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
136 f = open('/home/sylvain/Dropbox/Msc/IFT6266/donnees/lower_test_data.ft') #Le jeu de donnees est en local. |
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
137 d = ft.read(f) |
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
138 w=numpy.asarray(d[numpy.random.randint(0,50)]) |
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
139 return (w/255.0).astype('float') |
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
140 |
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
141 def _test(complexite): |
53
60b093f963d8
Ajout de chargement d'un fichier d'image afin d'avoir une plus grande variete de fragments possible. Ce fichier est sur Assembla dans <files>.
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
44
diff
changeset
|
142 |
44
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
143 transfo = Occlusion() |
53
60b093f963d8
Ajout de chargement d'un fichier d'image afin d'avoir une plus grande variete de fragments possible. Ce fichier est sur Assembla dans <files>.
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
44
diff
changeset
|
144 for i in xrange(0,20): |
60b093f963d8
Ajout de chargement d'un fichier d'image afin d'avoir une plus grande variete de fragments possible. Ce fichier est sur Assembla dans <files>.
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
44
diff
changeset
|
145 img = _load_image() |
60b093f963d8
Ajout de chargement d'un fichier d'image afin d'avoir une plus grande variete de fragments possible. Ce fichier est sur Assembla dans <files>.
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
44
diff
changeset
|
146 pylab.imshow(img.reshape((32,32))) |
60b093f963d8
Ajout de chargement d'un fichier d'image afin d'avoir une plus grande variete de fragments possible. Ce fichier est sur Assembla dans <files>.
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
44
diff
changeset
|
147 pylab.show() |
60b093f963d8
Ajout de chargement d'un fichier d'image afin d'avoir une plus grande variete de fragments possible. Ce fichier est sur Assembla dans <files>.
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
44
diff
changeset
|
148 print transfo.get_settings_names() |
60b093f963d8
Ajout de chargement d'un fichier d'image afin d'avoir une plus grande variete de fragments possible. Ce fichier est sur Assembla dans <files>.
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
44
diff
changeset
|
149 print transfo.regenerate_parameters(complexite) |
60b093f963d8
Ajout de chargement d'un fichier d'image afin d'avoir une plus grande variete de fragments possible. Ce fichier est sur Assembla dans <files>.
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
44
diff
changeset
|
150 |
60b093f963d8
Ajout de chargement d'un fichier d'image afin d'avoir une plus grande variete de fragments possible. Ce fichier est sur Assembla dans <files>.
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
44
diff
changeset
|
151 img_trans=transfo.transform_image(img.reshape((32,32))) |
60b093f963d8
Ajout de chargement d'un fichier d'image afin d'avoir une plus grande variete de fragments possible. Ce fichier est sur Assembla dans <files>.
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
44
diff
changeset
|
152 |
148
72a2d431d047
Rajout d'un seed random et d'une fonction get_seed
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
129
diff
changeset
|
153 print transfo.get_seed() |
53
60b093f963d8
Ajout de chargement d'un fichier d'image afin d'avoir une plus grande variete de fragments possible. Ce fichier est sur Assembla dans <files>.
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
44
diff
changeset
|
154 pylab.imshow(img_trans.reshape((32,32))) |
60b093f963d8
Ajout de chargement d'un fichier d'image afin d'avoir une plus grande variete de fragments possible. Ce fichier est sur Assembla dans <files>.
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
44
diff
changeset
|
155 pylab.show() |
44
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
156 |
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
157 |
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
158 if __name__ == '__main__': |
5deccb161307
Ajout de fragment de lettre a droite, a gauche ou en pale par dessus la lettre principale
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff
changeset
|
159 import pylab |
74
f3e4328e3514
Contraste entre image et bruit renforce et proba 0.2 d'effectuer l'occlusion
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
55
diff
changeset
|
160 import scipy |
122
5d22498c73d1
Correction d'un petit bug (random.randint a des bornes inclusives, ce qui pouvait creer un petit bug)
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
74
diff
changeset
|
161 _test(0.5) |