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 :