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

Présentations similaires


Présentation au sujet: "Projet de session – SCG-67210"— Transcription de la présentation:

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

2 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 Contexte Objectifs Manipulation d’images Canny Morphologie Hough Redressement Analyse Échéancier Conclusion

3 Contexte Objectifs Manipulation d’images Canny Morphologie Hough Redressement Analyse Échéancier Conclusion 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)

4 Traitements sur l’image
Extraction de contours (Canny) Détection de lignes (Hough) Morphologie mathématique Redressement d’image Contexte Objectifs Manipulation d’images Canny Morphologie Hough Redressement Analyse Échéancier 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 Contexte Objectifs Manipulation d’images Canny Morphologie Hough Redressement Analyse Échéancier Conclusion

6 MouseEventHandler sur la PictureBox, sur l'évènement MouseDown
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 Contexte Objectifs Manipulation d’images Canny Morphologie Hough Redressement Analyse Échéancier 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 Contexte Objectifs Manipulation d’images Canny Morphologie Hough Redressement Analyse Échéancier Conclusion

8 Objet Graphics crée sur la PictureBox Au MouseDown on stocke le point
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é Contexte Objectifs Manipulation d’images Canny Morphologie Hough Redressement Analyse Échéancier 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 Contexte Objectifs Manipulation d’images Canny Morphologie Hough Redressement Analyse Échéancier Conclusion

10 Le contenu de ce Rectangle est affiché sur la PictureBox de la 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 Contexte Objectifs Manipulation d’images Canny Morphologie Hough Redressement Analyse Échéancier 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é Contexte Objectifs Manipulation d’images Canny Morphologie Hough Redressement Analyse Échéancier Conclusion

12 Utilisation de la méthode RotateFlip de l'objet Bitmap Contexte
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 Contexte Objectifs Manipulation d’images Canny Morphologie Hough Redressement Analyse Échéancier Conclusion

13 Extraction de contour (Canny)
Principe : extraire les fortes variations de luminosité dans l'image (gradients d'intensité) Algorithme en plusieurs étapes Contexte Objectifs Manipulation d’images Canny Morphologie Hough Redressement Analyse Échéancier 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 * 0.11 Contexte Objectifs Manipulation d’images Canny Morphologie Hough Redressement Analyse Échéancier 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 σ Contexte Objectifs Manipulation d’images Canny Morphologie Hough Redressement Analyse Échéancier 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 Contexte Objectifs Manipulation d’images Canny Morphologie Hough Redressement Analyse Échéancier 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 Contexte Objectifs Manipulation d’images Canny Morphologie Hough Redressement Analyse Échéancier 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é Contexte Objectifs Manipulation d’images Canny Morphologie Hough Redressement Analyse Échéancier Conclusion

19 Une classe Canny est créée
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 Contexte Objectifs Manipulation d’images Canny Morphologie Hough Redressement Analyse Échéancier 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 Contexte Objectifs Manipulation d’images Canny Morphologie Hough Redressement Analyse Échéancier Conclusion

21 On transforme l'image en niveaux de gris Contexte Objectifs
Seuillage On transforme l'image en niveaux de gris Contexte Objectifs Manipulation d’images Canny Morphologie Hough Redressement Analyse Échéancier Conclusion

22 Manipulation d’images
Seuillage Toutes les intensité au dessus du seuil sont blanches, les autres sont noires Contexte Objectifs Manipulation d’images Canny Morphologie Hough Redressement Analyse Échéancier Conclusion

23 Manipulation d’images
Dilatation Dilate le noir (noyau de convolution 3x3, le pixel central prend la valeur minimale des 9 pixels) Contexte Objectifs Manipulation d’images Canny Morphologie Hough Redressement Analyse Échéancier Conclusion

24 Manipulation d’images
Érosion Erode le noir (noyau de convolution 3x3, le pixel central prend la valeur maximale des 9 pixels) Contexte Objectifs Manipulation d’images Canny Morphologie Hough Redressement Analyse Échéancier Conclusion

25 Idem que Canny (pointeurs) Classe Morphologie
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 Contexte Objectifs Manipulation d’images Canny Morphologie Hough Redressement Analyse Échéancier 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 Contexte Objectifs Manipulation d’images Canny Morphologie Hough Redressement Analyse Échéancier Conclusion Y R Ligne commune R1 R2 θ2 θ1 X θ

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) Contexte Objectifs Manipulation d’images Canny Morphologie Hough Redressement Analyse Échéancier Conclusion R θ

28 Utilisation de pointeurs pour manipuler les Bitmap Classe Hough
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, θ) Contexte Objectifs Manipulation d’images Canny Morphologie Hough Redressement Analyse Échéancier Conclusion

29 Projection centrale d'un plan
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 Contexte Objectifs Manipulation d’images Canny Morphologie Hough Redressement Analyse Échéancier Conclusion

30 Utilisation des moindres carrés si l'on clique + de 4 points
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 Contexte Objectifs Manipulation d’images Canny Morphologie Hough Redressement Analyse Échéancier Conclusion

31 Image brute Image redressée
Mise en place Sens de la transformation Contexte Objectifs Manipulation d’images Canny Morphologie Hough Redressement Analyse Échéancier Conclusion Image brute Image redressée

32 Image brute Image redressée
Mise en place Sens de la transformation Contexte Objectifs Manipulation d’images Canny Morphologie Hough Redressement Analyse Échéancier Conclusion Image brute Image redressée

33 Image brute Image redressée
Mise en place Sens de la transformation Avantage : remplissage des trous directement Contexte Objectifs Manipulation d’images Canny Morphologie Hough Redressement Analyse Échéancier Conclusion Image brute Image redressée

34 Constructeur Redressement (Point[] img, PointF[] obj)
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 Contexte Objectifs Manipulation d’images Canny Morphologie Hough Redressement Analyse Échéancier Conclusion

35 Documentation des algorithmes à partir d'internet (Wikipédia)
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 Contexte Objectifs Manipulation d’images Canny Morphologie Hough Redressement Analyse Échéancier Conclusion

36 Manipulation d’images
Échéancier Contexte Objectifs Manipulation d’images Canny Morphologie Hough Redressement Analyse Échéancier Conclusion Tâche Septembre Octobre Novembre Dé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 Programme boite à outil
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 Contexte Objectifs Manipulation d’images Canny Morphologie Hough Redressement Analyse Échéancier Conclusion

38 Merci de votre attention !
Questions?


Télécharger ppt "Projet de session – SCG-67210"

Présentations similaires


Annonces Google