TP-I.S.N.-Traitement d`images

Transcription

TP-I.S.N.-Traitement d`images
TP-I.S.N.-Traitement d’images-détection des contours
Dans ce TP, on détecte les contours d’une image………….. Dans Processing
Partie 1 : charger une image
On commence par glisser déposer une image dans le sketch…
Celle-ci est automatiquement mise dans le dossier Data associé au sketch…
Les lignes de codes suivantes permettent de charger l’image et de l’afficher dans la fenêtre spécialement
dimensionnée à la taille de l’image..
PImage photo;//déclare la variable photo en tant qu’image
photo = loadImage("paysage3.PNG");//charge l’image au préalablement mise par glisser-déposer dans le sketch
size(photo.width,photo.height);// définit la fenêtre à la taille de l’image
image(photo,0,0) ;//affiche l’image
L’image paysage.png a pour taille 516x 323 soit 166668 pixels. Chacun d’entre eux
contient une couleur, et, ensemble ils forment l’image.
•
•
•
•
On charge les pixels de l’image avec l’instruction : loadPixels() ;
On crée un tableau de type color (matrice) de dimension 516 X 323 : avec l’instruction :
color[][] tableau=new color[width][height];
On crée une image vierge de même taille que photo avec l’instruction :
PImage img=createImage(width,height,RGB);
On modifie les pixels de img par ceux de photo à l’aide d’une boucle :
for(int i=0;i<=pixels.length-1;i++){
img.pixels[i]=pixels[i];
}
Pourquoi : pixels.lendth-1 ?
TP-I.S.N.-Traitement d’images-détection des contours
Pour la suite on utilise deux méthodes propres à Processing : get(x,y) et set(x,y)
Ce tableau représente l’affichage dans une fenêtre. Les cases représentent un pixels et les coordonnées d’un pixels se
lisent donc par le couple (x,y).
x
L’instruction :
L’instruction :
color c=get(x,y) ;
charge dans la variable c
la couleur du pixel de
coordonnées (x,y)
set(x,y,c) ;
y
a1
a2
a3
a4
a5
a6
a7
a8
a9
remplace la couleur du
pixel (x,y) par la couleur c
Dans le tableau ci-dessus, a1 représente la couleur de ce pixel
La case centrale à pour coordonnées (x,y).
Quelles sont, en fonction de x et de y, les coordonnées des 8 autres cases ?
Partie 2 : Détection des contours
Il faut remplacer la couleur du pixel (x,y) par :
−2 × 1 − 2 + 0 × 3 − 4 + 0 × 5 + 6 + 0 × 7 + 8 + 2 × 9
Et ce, pour chaque pixel du tableau en ignorant la première et la dernière ligne ainsi que la première et la dernière
colonne. (Ces pixels n’ont pas 8 voisins !......)
Avec une double boucle sur x et y on charge les couleurs des 9 pixels dans des variables (color) avec get(x,y).
On calcule la nouvelle couleur c.
On la stocke dans notre tableau (tableau[x][y]=c ;).
Puis dans une nouvelle double boucle on change les couleurs des pixels(avec set(x,y,…)) par celles stockées
dans le tableau.
On fait afficher l’image créée au début (img) avec une taille réduite ( par ex : width/3 et height/3 ).
Le résultat final doit donner :