Mercurial > ift6266
annotate transformations/Rature.py @ 62:bab98bb47616
Correction majeure. Auparavant, le lissage gaussien etait global avec une seule gaussienne. Maintenant, le lissage gaussien est local. Un bruit correle est rajoute sur l'image
author | SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca> |
---|---|
date | Tue, 09 Feb 2010 11:41:17 -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 |