projet de session – scg-67210 outil de manipulation d’images 17 décembre 2008 – matthieu bach...

38
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 Hubert

Upload: thiodore-laurent

Post on 04-Apr-2015

112 views

Category:

Documents


7 download

TRANSCRIPT

Page 1: 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

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

Page 2: 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

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

Page 3: 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

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

Page 4: 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

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

Page 5: 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

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

Page 6: 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

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

Page 7: 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

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

Page 8: 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

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

Page 9: 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

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

Page 10: 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

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

Page 11: 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

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

Page 12: 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

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

Page 13: 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

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

Page 14: 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

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

Page 15: 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

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

Page 16: 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

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

Page 17: 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

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

Page 18: 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

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

Page 19: 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

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

Page 20: 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

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

Page 21: 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

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

Page 22: 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

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

Page 23: 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

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

Page 24: 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

É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

Page 25: 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

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

Page 26: 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

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

Page 27: 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

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

Page 28: 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

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

Page 29: 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

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

Page 30: 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

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

Page 31: 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

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

Page 32: 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

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

Page 33: 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

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

Page 34: 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

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

Page 35: 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

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

Page 36: 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

É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

Page 37: 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

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

Page 38: 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

Merci de votre attention !

Questions?