annotate transformations/Rature.py @ 59:8b9fca879543

La proportion de bruit a ete divisee par 5, ca donne une transformation beaucoup moins aggressive
author SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
date Mon, 08 Feb 2010 14:09:11 -0500
parents fd02fd7e6557
children 7949f46b03e0
rev   line source
37
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
1 #!/usr/bin/python
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
2 # coding: utf-8
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
3
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
4 '''
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
5 Ajout de rature sur le caractère. La rature peut etre horizontale, verticale
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
6 (dans ces deux cas, l'amplacement de la bande est aleatoire) ou sur la diagonale
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
7 (et anti-diagonale).
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
8
58
fd02fd7e6557 Contraste de rature plus prononce, il y a maintenant rature avec proba=complexity, la clarte et la largeur de la bande ont maintenant une composante aleatoire
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 37
diff changeset
9 La largeur de la bande ainsi que sa clarté sont definies a l'aide de complexity
fd02fd7e6557 Contraste de rature plus prononce, il y a maintenant rature avec proba=complexity, la clarte et la largeur de la bande ont maintenant une composante aleatoire
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 37
diff changeset
10 et d'une composante aleatoire.
37
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
11 clarte: 0=blanc et 1=noir
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
12
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
13 Ce fichier prend pour acquis que les images sont donnees une a la fois
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
14 sous forme de numpy.array de 1024 (32 x 32) valeurs entre 0 et 1.
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
15
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
16 Sylvain Pannetier Lebeuf dans le cadre de IFT6266, hiver 2010
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
17
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
18 '''
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
19
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
20 import numpy
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
21 import random
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
22
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
23 class Rature():
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
24
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
25 def __init__(self):
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
26 self.largeur=2 #Largeur de la bande
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
27 self.deplacement=0 #Deplacement par rapport au milieu
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
28 self.orientation=0 #0=horizontal, 1=vertical, 2=oblique
58
fd02fd7e6557 Contraste de rature plus prononce, il y a maintenant rature avec proba=complexity, la clarte et la largeur de la bande ont maintenant une composante aleatoire
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 37
diff changeset
29 self.clarte=0.5 #Clarte de la ligne appliquee
fd02fd7e6557 Contraste de rature plus prononce, il y a maintenant rature avec proba=complexity, la clarte et la largeur de la bande ont maintenant une composante aleatoire
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 37
diff changeset
30 self.faire=1 #Si ==1, on applique une rature
37
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
31
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
32 def get_settings_names(self):
58
fd02fd7e6557 Contraste de rature plus prononce, il y a maintenant rature avec proba=complexity, la clarte et la largeur de la bande ont maintenant une composante aleatoire
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 37
diff changeset
33 return ['orientation','deplacement','clarte','faire']
37
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
34
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
35 def regenerate_parameters(self, complexity):
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
36 #Il faut choisir parmis vertical, horizontal et diagonal.
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
37 #La methode n'est pas exacte, mais un peu plus rapide que generer un int.
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
38 #Complexity n'a rien a voir avec ce choix
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
39
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
40 choix=numpy.random.random()
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
41
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
42 if choix <0.34:
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
43 self.orientation=0
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
44 elif choix <0.67:
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
45 self.orientation=1
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
46 else:
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
47 self.orientation=2
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
48
58
fd02fd7e6557 Contraste de rature plus prononce, il y a maintenant rature avec proba=complexity, la clarte et la largeur de la bande ont maintenant une composante aleatoire
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 37
diff changeset
49 self.largeur=min(32,max(1,int(numpy.ceil(complexity*5)*numpy.random.normal(1,float(complexity)/2))))
fd02fd7e6557 Contraste de rature plus prononce, il y a maintenant rature avec proba=complexity, la clarte et la largeur de la bande ont maintenant une composante aleatoire
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 37
diff changeset
50 self.clarte=min(1,max(0,complexity*numpy.random.normal(1,float(complexity)/2)))
fd02fd7e6557 Contraste de rature plus prononce, il y a maintenant rature avec proba=complexity, la clarte et la largeur de la bande ont maintenant une composante aleatoire
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 37
diff changeset
51 self.faire=numpy.random.binomial(1,float(complexity))
37
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
52
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
53 return self._get_current_parameters()
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
54
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
55 def _get_current_parameters(self):
58
fd02fd7e6557 Contraste de rature plus prononce, il y a maintenant rature avec proba=complexity, la clarte et la largeur de la bande ont maintenant une composante aleatoire
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 37
diff changeset
56 return [self.orientation,self.largeur,self.clarte,self.faire]
37
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
57
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
58 def transform_image(self, image):
58
fd02fd7e6557 Contraste de rature plus prononce, il y a maintenant rature avec proba=complexity, la clarte et la largeur de la bande ont maintenant une composante aleatoire
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 37
diff changeset
59 if self.faire == 0:
fd02fd7e6557 Contraste de rature plus prononce, il y a maintenant rature avec proba=complexity, la clarte et la largeur de la bande ont maintenant une composante aleatoire
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 37
diff changeset
60 return image
fd02fd7e6557 Contraste de rature plus prononce, il y a maintenant rature avec proba=complexity, la clarte et la largeur de la bande ont maintenant une composante aleatoire
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 37
diff changeset
61
37
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
62 if self.orientation == 0:
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
63 return self._horizontal(image)
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
64 elif self.orientation == 1:
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
65 return self._vertical(image)
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
66 else:
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
67 return self._oblique(image)
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
68
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
69 def _horizontal(self,image):
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
70 self.deplacement=numpy.random.normal(0,5)
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
71 #On s'assure de rester dans l'image
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
72 if self.deplacement < -16: #Si on recule trop
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
73 self.deplacement = -16
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
74 if self.deplacement+self.largeur > 16: #Si on avance trop
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
75 self.deplacement=16-self.largeur
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
76 for i in xrange(0,self.largeur):
58
fd02fd7e6557 Contraste de rature plus prononce, il y a maintenant rature avec proba=complexity, la clarte et la largeur de la bande ont maintenant une composante aleatoire
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 37
diff changeset
77 for j in xrange(0,32):
fd02fd7e6557 Contraste de rature plus prononce, il y a maintenant rature avec proba=complexity, la clarte et la largeur de la bande ont maintenant une composante aleatoire
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 37
diff changeset
78 image[i+15+self.deplacement,j]=min(1,max(image[i+15+self.deplacement,j],self.clarte))
37
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
79 return image
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
80
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
81 def _vertical(self,image):
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
82 self.deplacement=numpy.random.normal(0,5)
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
83 #On s'assure de rester dans l'image
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
84 if self.deplacement < -16: #Si on recule trop
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
85 self.deplacement = -16
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
86 if self.deplacement+self.largeur > 16: #Si on avance trop
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
87 self.deplacement=16-self.largeur
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
88 for i in xrange(0,self.largeur):
58
fd02fd7e6557 Contraste de rature plus prononce, il y a maintenant rature avec proba=complexity, la clarte et la largeur de la bande ont maintenant une composante aleatoire
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 37
diff changeset
89 for j in xrange(0,32):
fd02fd7e6557 Contraste de rature plus prononce, il y a maintenant rature avec proba=complexity, la clarte et la largeur de la bande ont maintenant une composante aleatoire
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 37
diff changeset
90 image[j,i+15+self.deplacement]=min(1,max(image[j,i+15+self.deplacement],self.clarte))
37
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
91 return image
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
92
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
93 def _oblique(self,image):
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
94 decision=numpy.random.random()
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
95 D=numpy.zeros((32,32)) #La matrice qui sera additionnee
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
96 for i in xrange(int(-numpy.floor(self.largeur/2)),int(numpy.ceil((self.largeur+1)/2))):
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
97 D+=numpy.eye(32,32,i)
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
98 if decision<0.5: #On met tout sur l'anti-diagonale
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
99 D = D[:,::-1]
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
100 D*=self.clarte
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
101 for i in xrange(0,32):
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
102 for j in xrange(0,32):
58
fd02fd7e6557 Contraste de rature plus prononce, il y a maintenant rature avec proba=complexity, la clarte et la largeur de la bande ont maintenant une composante aleatoire
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 37
diff changeset
103 image[i,j]=min(1,max(image[i,j],D[i,j]))
37
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
104 return image
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
105
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
106
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
107 #---TESTS---
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
108
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
109 def _load_image():
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
110 f = open('/home/sylvain/Dropbox/Msc/IFT6266/donnees/lower_test_data.ft') #Le jeu de donnees est en local.
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
111 d = ft.read(f)
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
112 w=numpy.asarray(d[1])
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
113 return (w/255.0).astype('float')
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
114
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
115 def _test(complexite):
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
116 img=_load_image()
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
117 transfo = Rature()
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
118 pylab.imshow(img.reshape((32,32)))
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
119 pylab.show()
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
120 print transfo.get_settings_names()
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
121 print transfo.regenerate_parameters(complexite)
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
122 img=img.reshape((32,32))
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
123
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
124 img_trans=transfo.transform_image(img)
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
125
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
126 pylab.imshow(img_trans.reshape((32,32)))
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
127 pylab.show()
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
128
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
129
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
130 if __name__ == '__main__':
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
131 from pylearn.io import filetensor as ft
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
132 import pylab
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
133 _test(0.8)
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
134
5848e88f7a7a Ajout de rature verticale, horizontale ou blique sur l'image. Compatible avec testmod.py
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
135