annotate transformations/Occlusion.py @ 63:7949f46b03e0

Bug a propos de complexity=0 corrige
author SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
date Tue, 09 Feb 2010 11:43:09 -0500
parents 27bf31dca87d
children f3e4328e3514
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
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
11 Il faut s'assurer d'avoir le fichier echantillon_occlusion.ft (voir "files" sur assembla)
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
12 dans le repertoire ou est effectuee l'execution de Occlusion.py. Sinon,
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
13 simplement changer le "path" sur la ligne 46
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
14
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
15 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
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
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 import numpy
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 scipy
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
22 import pylab
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
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
27 def __init__(self):
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
55
27bf31dca87d Correction petite erreur de path pour la banque
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 54
diff changeset
47 f3 = open('/data/lisa/data/ift6266h10/echantillon_occlusion.ft') #Doit etre sur le reseau DIRO.
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
48 #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
49 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
50 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
51
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
52 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
53 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
54
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
55
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
56 def get_settings_names(self):
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
57 return ['haut','bas','gauche','droite','x_arrivee','y_arrivee','endroit','rajout']
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
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
59 def regenerate_parameters(self, complexity):
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
60 self.haut=min(15,int(numpy.abs(numpy.random.normal(int(7*complexity),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
61 self.bas=min(15,int(numpy.abs(numpy.random.normal(int(7*complexity),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
62 self.gauche=min(15,int(numpy.abs(numpy.random.normal(int(7*complexity),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
63 self.droite=min(15,int(numpy.abs(numpy.random.normal(int(7*complexity),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
64 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
65 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
66 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
67 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
68 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
69
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
70 #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
71 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
72 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
73
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
74 self.rajout=numpy.random.randint(0,self.longueur) #les bouts de quelle lettre
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
75
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.endroit=numpy.random.randint(-1,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
77 #####Revoir si ces trois dernieres variables sont determinees ici !
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 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
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 def _get_current_parameters(self):
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 return [self.haut,self.bas,self.gauche,self.droite,self.x_arrivee,self.y_arrivee,self.endroit,self.rajout]
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
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
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
84 def transform_image(self, 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
85 #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
86 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
87
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
88 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
89 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
90 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
91 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
92 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
93 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
94 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
95
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 if self.endroit==-1: #a gauche
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 image[(16+self.y_arrivee-self.haut):(16+self.y_arrivee+self.bas+1),(self.x_arrivee):(self.x_arrivee+self.gauche+self.droite+1)]=image[(16+self.y_arrivee-self.haut):(16+self.y_arrivee+self.bas+1),(self.x_arrivee):(self.x_arrivee+self.gauche+self.droite+1)]+bruit
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
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
99 elif self.endroit==1: #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
100 image[(16+self.y_arrivee-self.haut):(16+self.y_arrivee+self.bas+1),(31-self.x_arrivee-self.gauche-self.droite):(31-self.x_arrivee+1)]=image[(16+self.y_arrivee-self.haut):(16+self.y_arrivee+self.bas+1),(31-self.x_arrivee-self.gauche-self.droite):(31-self.x_arrivee+1)]+bruit
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
101
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 elif self.endroit==0: #au milieu
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 image[(16-self.haut):(16+self.bas+1),(16-self.gauche):(16+self.droite+1)]=image[(16-self.haut):(16+self.bas+1),(16-self.gauche):(16+self.droite+1)]+(bruit*self.opacite)
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 #renormaliser le tout. Toutes les entrees doivent etre entre 0 et 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
106 for ii in xrange(0,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
107 for jj in xrange(0,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
108 image[ii,jj]=min(1,image[ii,jj])
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
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 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
111
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 #---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
113
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
114 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
115 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
116 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
117 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
118 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
119
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
120 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
121
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
122 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
123 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
124 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
125 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
126 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
127 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
128 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
129
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
130 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
131
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
132 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
133 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
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
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 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
137 import pylab
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 _test(0.5)