La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Projet de session – SCG-67210 Outil de manipulation d’images 17 décembre 2008 – Matthieu BACH Projet présenté aux professeurs Thierry Badard & Frédéric.

Présentations similaires


Présentation au sujet: "Projet de session – SCG-67210 Outil de manipulation d’images 17 décembre 2008 – Matthieu BACH Projet présenté aux professeurs Thierry Badard & Frédéric."— Transcription de la présentation:

1 Projet de session – SCG Outil de manipulation d’images 17 décembre 2008 – Matthieu BACH Projet présenté aux professeurs Thierry Badard & Frédéric Hubert

2 1.Contexte 2.Objectifs 3.Manipulation d’images 4.Canny 5.Morphologie 6.Hough 7.Redressement 8.Analyse 9.Échéancier 10.Conclusion  Projet de maîtrise basé sur l’acquisition et le traitement de photographies  Il serait intéressant de développer un module permettant d’effectuer des manipulations de base sur une image Ouverture, affichage Zoom Rotation Déplacement  Ajouté à cela quelques algorithmes de traitement d’images pouvant servir dans le projet de maitrise  Programmé en C#, car déjà utilisé, permet donc d’aller plus loin dans le développement d’outils

3  Manipulation d’images Ouverture, affichage Zoom avant/arrière Zoom molette, l’agrandissement se fait sous le curseur Zoom-box Zoom général Outil loupe, agrandissement local, sans perdre la vue générale Déplacement d’image Rotation de l’image Sous forme d’un module réutilisable (composant) 1.Contexte 2.Objectifs 3.Manipulation d’images 4.Canny 5.Morphologie 6.Hough 7.Redressement 8.Analyse 9.Échéancier 10.Conclusion

4  Traitements sur l’image Extraction de contours (Canny) Détection de lignes (Hough) Morphologie mathématique Redressement d’image 1.Contexte 2.Objectifs 3.Manipulation d’images 4.Canny 5.Morphologie 6.Hough 7.Redressement 8.Analyse 9.Échéancier 10.Conclusion

5  Ouverture et affichage Une PictureBox Objet Bitmap de l’image courante On affiche l’image dans la PictureBox, qui s'adapte à l'image et non l'inverse Les coordonnées images sont fonction de la PictureBox 1.Contexte 2.Objectifs 3.Manipulation d’images 4.Canny 5.Morphologie 6.Hough 7.Redressement 8.Analyse 9.Échéancier 10.Conclusion

6  Zoom + et zoom - MouseEventHandler sur la PictureBox, sur l'évènement MouseDown Un Rectangle de taille variable représente la vue courante Le Rectangle se positionne sur le Bitmap original et c'est seulement la portion dans le Rectangle qui est affichée à l'écran Un zoom avant divise le Rectangle par 2 Un zoom arrière multiplie le Rectangle par 2 1.Contexte 2.Objectifs 3.Manipulation d’images 4.Canny 5.Morphologie 6.Hough 7.Redressement 8.Analyse 9.Échéancier 10.Conclusion

7  Zoom à l'aide de la molette MouseEventHandler sur la PictureBox, sur l'évènement MouseWheel Propriété delta du MouseEventArgs nous donne le sens de rotation de la molette Appel des fonctions précédentes 1.Contexte 2.Objectifs 3.Manipulation d’images 4.Canny 5.Morphologie 6.Hough 7.Redressement 8.Analyse 9.Échéancier 10.Conclusion

8  Zoom-Box Objet Graphics crée sur la PictureBox Au MouseDown on stocke le point Au MouseMove on dessine un rectangle sur l'écran entre le point initial et le curseur Au MouseUp on récupère le deuxième point On transforme les coordonnées-écrans en coordonnée- images On dimensionne le Rectangle de vue courante en fonction du rectangle dessiné 1.Contexte 2.Objectifs 3.Manipulation d’images 4.Canny 5.Morphologie 6.Hough 7.Redressement 8.Analyse 9.Échéancier 10.Conclusion

9  Zoom général On dimensionne le Rectangle de vue courante pour englober toute l'image, et l'on affiche le contenu du Rectangle 1.Contexte 2.Objectifs 3.Manipulation d’images 4.Canny 5.Morphologie 6.Hough 7.Redressement 8.Analyse 9.Échéancier 10.Conclusion

10  Loupe Une deuxième PictureBox plus petite est visible lors d'un MouseDown sur la PictureBox principale A la manière du Rectangle de vue courante, un Rectangle de loupe est positionné sur l'image, centré sur l'endroit du clic Le contenu de ce Rectangle est affiché sur la PictureBox de la loupe L'intensité de la loupe est configurable dans un menu ou à l'aide la molette 1.Contexte 2.Objectifs 3.Manipulation d’images 4.Canny 5.Morphologie 6.Hough 7.Redressement 8.Analyse 9.Échéancier 10.Conclusion

11  Déplacement de l'image (pan) Au MouseDown on stocke la position du clic Au MouseMove on calcule le vecteur entre le point initial et le curseur en coordonnées-images On translate le Rectangle de vue courante du vecteur opposé 1.Contexte 2.Objectifs 3.Manipulation d’images 4.Canny 5.Morphologie 6.Hough 7.Redressement 8.Analyse 9.Échéancier 10.Conclusion

12  Rotation de l'image Selon un angle de 90°, 180°, 270° Le calcul des vraies coordonnées-images est adapté en fonction de l'orientation de l'image par le biais de coefficients Utilisation de la méthode RotateFlip de l'objet Bitmap 1.Contexte 2.Objectifs 3.Manipulation d’images 4.Canny 5.Morphologie 6.Hough 7.Redressement 8.Analyse 9.Échéancier 10.Conclusion

13  Extraction de contour (Canny) Principe : extraire les fortes variations de luminosité dans l'image (gradients d'intensité) Algorithme en plusieurs étapes 1.Contexte 2.Objectifs 3.Manipulation d’images 4.Canny 5.Morphologie 6.Hough 7.Redressement 8.Analyse 9.Échéancier 10.Conclusion

14  Passage l'image en niveaux de gris Le niveau de gris d'un pixel composé des trois couleurs Rouge, Vert, Bleu est sa luminance L = Rouge * Vert * Bleu * Contexte 2.Objectifs 3.Manipulation d’images 4.Canny 5.Morphologie 6.Hough 7.Redressement 8.Analyse 9.Échéancier 10.Conclusion

15  Application d'un noyau gaussien 2D Permet de lisser l'image et éliminer le bruit Le noyau de convolution est calculé en fonction de l'écart- type σ 1.Contexte 2.Objectifs 3.Manipulation d’images 4.Canny 5.Morphologie 6.Hough 7.Redressement 8.Analyse 9.Échéancier 10.Conclusion

16  Application d'un opérateur de gradient Calcule la variation d'intensité de la luminance et l'orientation d'un pixel par rapport à ses voisins Utilisation de l'opérateur de Sobel 1.Contexte 2.Objectifs 3.Manipulation d’images 4.Canny 5.Morphologie 6.Hough 7.Redressement 8.Analyse 9.Échéancier 10.Conclusion

17  Suppression des non maxima locaux A pour but de réduire les contours à un pixel de large Si les voisins d'un pixel dans la direction perpendiculaire à ce pixel sont d'intensité plus faible, alors le pixel est un maximal local 1.Contexte 2.Objectifs 3.Manipulation d’images 4.Canny 5.Morphologie 6.Hough 7.Redressement 8.Analyse 9.Échéancier 10.Conclusion

18  Seuillage par hystérésis (2 seuils) Élimine les bord de faible intensité Si l'intensité d'un pixel est au dessus du seuil haut alors il est conservé, sous le seuil bas il est supprimé, entre les deux il est conservé s'il est connecté à un pixel conservé 1.Contexte 2.Objectifs 3.Manipulation d’images 4.Canny 5.Morphologie 6.Hough 7.Redressement 8.Analyse 9.Échéancier 10.Conclusion

19  Mise en place Utilisation des pointeurs pour manipuler les images, accès direct à la mémoire, plus rapide pour traiter beaucoup de pixels que la méthode GetPixel Une classe Canny est créée Constructeur Canny(float sigma, byte tlow, byte thigh) Méthode Process(Bitmap bmp) renvoie un Bitmap Le seuillage par hystérésis utilise la récursivité pour chercher les intensité entre les deux seuils. On part d'un pixel validé et on cherche dans toutes les directions un pixel en ballotage 1.Contexte 2.Objectifs 3.Manipulation d’images 4.Canny 5.Morphologie 6.Hough 7.Redressement 8.Analyse 9.Échéancier 10.Conclusion

20  Opérateurs de morphologie mathématique Se fait sur une image binaire (2 possibilités noir ou blanc) Un seuillage est fait d'abord sur l'image en niveaux de gris Erosion : érode le noir (compresse) Dilatation : dilate le noir Ouverture : érosion puis dilatation Fermeture : dilatation puis érosion Peut servir à éliminer le bruit 1.Contexte 2.Objectifs 3.Manipulation d’images 4.Canny 5.Morphologie 6.Hough 7.Redressement 8.Analyse 9.Échéancier 10.Conclusion

21  Seuillage On transforme l'image en niveaux de gris 1.Contexte 2.Objectifs 3.Manipulation d’images 4.Canny 5.Morphologie 6.Hough 7.Redressement 8.Analyse 9.Échéancier 10.Conclusion

22  Seuillage Toutes les intensité au dessus du seuil sont blanches, les autres sont noires 1.Contexte 2.Objectifs 3.Manipulation d’images 4.Canny 5.Morphologie 6.Hough 7.Redressement 8.Analyse 9.Échéancier 10.Conclusion

23  Dilatation Dilate le noir (noyau de convolution 3x3, le pixel central prend la valeur minimale des 9 pixels) 1.Contexte 2.Objectifs 3.Manipulation d’images 4.Canny 5.Morphologie 6.Hough 7.Redressement 8.Analyse 9.Échéancier 10.Conclusion

24  Érosion Erode le noir (noyau de convolution 3x3, le pixel central prend la valeur maximale des 9 pixels) 1.Contexte 2.Objectifs 3.Manipulation d’images 4.Canny 5.Morphologie 6.Hough 7.Redressement 8.Analyse 9.Échéancier 10.Conclusion

25  Mise en place Idem que Canny (pointeurs) Classe Morphologie Méthode Seuillage(Bitmap bmp) renvoie un Bitmap Méthode Erosion(Bitmap bmp) renvoie un Bitmap Méthode Dilatation(Bitmap bmp) renvoie un Bitmap Méthode Ouverture(Bitmap bmp) renvoie un Bitmap Méthode Fermeture(Bitmap bmp) renvoie un Bitmap 1.Contexte 2.Objectifs 3.Manipulation d’images 4.Canny 5.Morphologie 6.Hough 7.Redressement 8.Analyse 9.Échéancier 10.Conclusion

26  Détection de lignes (Hough) Changement de système de coordonnées (x, y) vers (R, θ) Infinité de ligne passant par le point 1.Contexte 2.Objectifs 3.Manipulation d’images 4.Canny 5.Morphologie 6.Hough 7.Redressement 8.Analyse 9.Échéancier 10.Conclusion θ1θ1 θ2θ2 R1R1 R2R2 X Y θ R Ligne commune

27  Détection de lignes (Hough) Exemple sur une image binaire (contours extraits) On récupère les coordonnées (R, θ) des intersections, on a donc les coordonnées des lignes de l’image (vectoriel) 1.Contexte 2.Objectifs 3.Manipulation d’images 4.Canny 5.Morphologie 6.Hough 7.Redressement 8.Analyse 9.Échéancier 10.Conclusion θ R

28  Mise en place Utilisation de pointeurs pour manipuler les Bitmap Classe Hough Méthode renderTransform (Bitmap bmp) renvoie le graphique de la transformée de hough Méthode process (Bitmap bmp, byte seuil) renvoie la transformée inverse (dessin des lignes de plus de "seuil" pixels) Pour le dessin de la transformée, le niveau de gris de chaque pixel sur une sinusoïde est incrémenté de 1, un pixel de valeur 39 signifie que 39 points partagent cette ligne de coordonnées (R, θ) 1.Contexte 2.Objectifs 3.Manipulation d’images 4.Canny 5.Morphologie 6.Hough 7.Redressement 8.Analyse 9.Échéancier 10.Conclusion

29  Redressement d'image Simuler une prise de vue normale à un objet plan à partir d'une vue inclinée Projection centrale d'un plan Minimum 4 points en coordonnées-objets et images 1.Contexte 2.Objectifs 3.Manipulation d’images 4.Canny 5.Morphologie 6.Hough 7.Redressement 8.Analyse 9.Échéancier 10.Conclusion

30  Mise en place Utilisation d'une classe Matrice trouvée sur un site de développeurs pour calculer les coefficients de la transformation Utilisation des moindres carrés si l'on clique + de 4 points Utilisation de pointeurs pour manipuler les images 1.Contexte 2.Objectifs 3.Manipulation d’images 4.Canny 5.Morphologie 6.Hough 7.Redressement 8.Analyse 9.Échéancier 10.Conclusion

31  Mise en place Sens de la transformation 1.Contexte 2.Objectifs 3.Manipulation d’images 4.Canny 5.Morphologie 6.Hough 7.Redressement 8.Analyse 9.Échéancier 10.Conclusion Image brute Image redressée

32  Mise en place Sens de la transformation 1.Contexte 2.Objectifs 3.Manipulation d’images 4.Canny 5.Morphologie 6.Hough 7.Redressement 8.Analyse 9.Échéancier 10.Conclusion Image brute Image redressée

33  Mise en place Sens de la transformation Avantage : remplissage des trous directement 1.Contexte 2.Objectifs 3.Manipulation d’images 4.Canny 5.Morphologie 6.Hough 7.Redressement 8.Analyse 9.Échéancier 10.Conclusion Image brute Image redressée

34  Mise en place Classe Redressement Constructeur Redressement (Point[] img, PointF[] obj) Méthode process (Bitmap bmp) renvoie l'image redressée de taille fixée au départ 1.Contexte 2.Objectifs 3.Manipulation d’images 4.Canny 5.Morphologie 6.Hough 7.Redressement 8.Analyse 9.Échéancier 10.Conclusion

35  Analyse Documentation des algorithmes à partir d'internet (Wikipédia) Une classe créée pour chaque traitement d'image Réutilisable partout Les manipulations d'images sont par contre intégrées à la Form principale Non réutilisables Les pointeurs réduisent considérablement le temps de traitement des images Utilisation non protégée Comparaison avec des algorithmes existants (Matlab…) Tests par un utilisateur expérimentateur 1.Contexte 2.Objectifs 3.Manipulation d’images 4.Canny 5.Morphologie 6.Hough 7.Redressement 8.Analyse 9.Échéancier 10.Conclusion

36  Échéancier 1.Contexte 2.Objectifs 3.Manipulation d’images 4.Canny 5.Morphologie 6.Hough 7.Redressement 8.Analyse 9.Échéancier 10.Conclusion Tâche SeptembreOctobreNovembreDécembre Manipulation d'images Ouverture et affichage Zoom + et - Zoom molette Zoom box Zoom général Loupe Déplacement d'images Rotation Traitements Extraction de contours (Canny) Vectorisation des contours (Hough) Morphologie mathématique Redressement d'image

37 1.Contexte 2.Objectifs 3.Manipulation d’images 4.Canny 5.Morphologie 6.Hough 7.Redressement 8.Analyse 9.Échéancier 10.Conclusion  Conclusion Programme boite à outil Approche d'algorithmes célèbres et utiles en traitement d'images Familiarisation avec les pointeurs Renforcement du concept d'orienté-objet  Perspectives Vraie gestion multi-image Canny : segmenter selon les intensités des contours Hough : meilleur détection des intersections sur le graphe Hough : vraie vectorisation (segments et non lignes) Redressement : à partir de mesures de distances, et non de coordonnées

38 Merci de votre attention ! Questions?


Télécharger ppt "Projet de session – SCG-67210 Outil de manipulation d’images 17 décembre 2008 – Matthieu BACH Projet présenté aux professeurs Thierry Badard & Frédéric."

Présentations similaires


Annonces Google