Mercurial > ift6266
annotate data_generation/transformations/Occlusion.py @ 266:1e4e60ddadb1
Merge. Ah, et dans le dernier commit, j'avais oublié de mentionner que j'ai ajouté du code pour gérer l'isolation de différents clones pour rouler des expériences et modifier le code en même temps.
author | fsavard |
---|---|
date | Fri, 19 Mar 2010 10:56:16 -0400 |
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) |