projet de session – scg-67210 outil de manipulation d’images 17 décembre 2008 – matthieu bach...
TRANSCRIPT
Projet de session – SCG-67210Outil de manipulation d’images
17 décembre 2008 – Matthieu BACH
Projet présenté aux professeurs Thierry Badard & Frédéric Hubert
1. Contexte
2. Objectifs
3. Manipulatio
n d’images
4. Canny
5. Morphologi
e
6. Hough
7. Redresseme
nt
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
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. Manipulatio
n d’images
4. Canny
5. Morphologi
e
6. Hough
7. Redresseme
nt
8. Analyse
9. Échéancier
10.Conclusion
Traitements sur l’image
• Extraction de contours (Canny)
• Détection de lignes (Hough)
• Morphologie mathématique
• Redressement d’image
1. Contexte
2. Objectifs
3. Manipulatio
n d’images
4. Canny
5. Morphologi
e
6. Hough
7. Redresseme
nt
8. Analyse
9. Échéancier
10.Conclusion
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. Redresseme
nt
8. Analyse
9. Échéancier
10.Conclusion
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. Redresseme
nt
8. Analyse
9. Échéancier
10.Conclusion
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. Redresseme
nt
8. Analyse
9. Échéancier
10.Conclusion
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. Redresseme
nt
8. Analyse
9. Échéancier
10.Conclusion
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. Redresseme
nt
8. Analyse
9. Échéancier
10.Conclusion
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. Redresseme
nt
8. Analyse
9. Échéancier
10.Conclusion
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. Redresseme
nt
8. Analyse
9. Échéancier
10.Conclusion
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. Redresseme
nt
8. Analyse
9. Échéancier
10.Conclusion
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. Redresseme
nt
8. Analyse
9. Échéancier
10.Conclusion
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 * 0.3 + Vert * 0.59 + Bleu * 0.11
1. Contexte
2. Objectifs
3. Manipulation
d’images
4. Canny
5. Morphologie
6. Hough
7. Redresseme
nt
8. Analyse
9. Échéancier
10.Conclusion
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. Redresseme
nt
8. Analyse
9. Échéancier
10.Conclusion
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. Redresseme
nt
8. Analyse
9. Échéancier
10.Conclusion
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. Redresseme
nt
8. Analyse
9. Échéancier
10.Conclusion
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. Redresseme
nt
8. Analyse
9. Échéancier
10.Conclusion
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. Redresseme
nt
8. Analyse
9. Échéancier
10.Conclusion
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. Manipulatio
n d’images
4. Canny
5. Morphologie
6. Hough
7. Redresseme
nt
8. Analyse
9. Échéancier
10.Conclusion
Seuillage
• On transforme l'image en niveaux de gris1. Contexte
2. Objectifs
3. Manipulatio
n d’images
4. Canny
5. Morphologie
6. Hough
7. Redresseme
nt
8. Analyse
9. Échéancier
10.Conclusion
Seuillage
• Toutes les intensité au dessus du seuil sont
blanches, les autres sont noires
1. Contexte
2. Objectifs
3. Manipulatio
n d’images
4. Canny
5. Morphologie
6. Hough
7. Redresseme
nt
8. Analyse
9. Échéancier
10.Conclusion
Dilatation
• Dilate le noir (noyau de convolution 3x3, le pixel
central prend la valeur minimale des 9 pixels)
1. Contexte
2. Objectifs
3. Manipulatio
n d’images
4. Canny
5. Morphologie
6. Hough
7. Redresseme
nt
8. Analyse
9. Échéancier
10.Conclusion
Érosion
• Erode le noir (noyau de convolution 3x3, le pixel
central prend la valeur maximale des 9 pixels)
1. Contexte
2. Objectifs
3. Manipulatio
n d’images
4. Canny
5. Morphologie
6. Hough
7. Redresseme
nt
8. Analyse
9. Échéancier
10.Conclusion
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. Manipulatio
n d’images
4. Canny
5. Morphologie
6. Hough
7. Redresseme
nt
8. Analyse
9. Échéancier
10.Conclusion
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. Manipulatio
n d’images
4. Canny
5. Morphologi
e
6. Hough
7. Redresseme
nt
8. Analyse
9. Échéancier
10.Conclusion
θ1
θ2
R1
R2
X
Y
θ
R
Ligne commune
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. Manipulatio
n d’images
4. Canny
5. Morphologi
e
6. Hough
7. Redresseme
nt
8. Analyse
9. Échéancier
10.Conclusionθ
R
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. Manipulatio
n d’images
4. Canny
5. Morphologi
e
6. Hough
7. Redresseme
nt
8. Analyse
9. Échéancier
10.Conclusion
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. Manipulatio
n d’images
4. Canny
5. Morphologi
e
6. Hough7. Redressement
8. Analyse
9. Échéancier
10.Conclusion
1''
'',1''
''
hygx
feydxY
hygx
cbyaxX
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. Manipulatio
n d’images
4. Canny
5. Morphologi
e
6. Hough7. Redressement
8. Analyse
9. Échéancier
10.Conclusion
Mise en place
• Sens de la transformation1. Contexte
2. Objectifs
3. Manipulatio
n d’images
4. Canny
5. Morphologi
e
6. Hough7. Redressement
8. Analyse
9. Échéancier
10.Conclusion
Image brute Image redressée
Mise en place
• Sens de la transformation1. Contexte
2. Objectifs
3. Manipulatio
n d’images
4. Canny
5. Morphologi
e
6. Hough7. Redressement
8. Analyse
9. Échéancier
10.Conclusion
Image brute Image redressée
Mise en place
• Sens de la transformation
• Avantage : remplissage des trous directement
1. Contexte
2. Objectifs
3. Manipulatio
n d’images
4. Canny
5. Morphologi
e
6. Hough7. Redressement
8. Analyse
9. Échéancier
10.Conclusion
Image brute Image redressée
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. Manipulatio
n d’images
4. Canny
5. Morphologi
e
6. Hough7. Redressement
8. Analyse
9. Échéancier
10.Conclusion
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. Manipulatio
n d’images
4. Canny
5. Morphologi
e
6. Hough
7. Redresseme
nt
8. Analyse
9. Échéancier
10.Conclusion
Échéancier
1. Contexte
2. Objectifs
3. Manipulatio
n d’images
4. Canny
5. Morphologi
e
6. Hough
7. Redresseme
nt
8. Analyse
9. Échéancier
10.Conclusion
Tâche Septembre Octobre Novembre Décembre
Manipulation d'imagesOuverture et affichageZoom + et -Zoom moletteZoom boxZoom généralLoupeDéplacement d'imagesRotation
TraitementsExtraction de contours (Canny)Vectorisation des contours (Hough)Morphologie mathématiqueRedressement d'image
1. Contexte
2. Objectifs
3. Manipulatio
n d’images
4. Canny
5. Morphologi
e
6. Hough
7. Redresseme
nt
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
Merci de votre attention !
Questions?