Académique Documents
Professionnel Documents
Culture Documents
Embarqués :
Traitement des Images, 2014-2015.
Enseignants : S. Le Hégarat & M. Gouiffès.
Ces quatre séances de TP & miniprojet ont pour objet l’illustration et la mise en
œuvre de méthodes de traitement des images vues durant le cours “Traitement des
images : concepts de base” en 4ème année du cycle ingénieur au département Elec-
tronique, Energie, Systèmes. Ils concernent des algorithmes classiques de : filtrage
passe-bas, morphologie mathématique, classification, détection de contours et seg-
mentation. La première scéance est un TP classique, tandis que les trois suivantes
sont consacrées à la réalisation d’un mini-projet.
À la fin du TP comme à la fin de la dernière séance du mini-projet, vous aurez
une semaine pour rendre un rapport écrit, où il vous est demandé de justifier votre
implémentation des algorithmes, d’analyser l’influence de leurs paramètres, et de
commenter les résultats obtenus. Ces derniers commentaires porteront notamment
sur la qualité des solutions implémentées et leur comparaison avec d’autres mé-
thodes ou algorithmes alternatifs au problème considéré. Cette partie d’analyse est
essentielle.
1 Environnement
1.1 Projet Visual
Les codes ont été développés en C++ (Visual 2005) selon l’architecture suivante.
La classe imasites permet de gérer la grille des pixels de l’image. Toutes les autres
classes représentant différents types d’images héritent de cette classe imasites. La
classe imadata est construite à partir d’un patron de classe (template) et permet
de travailler sur des images de données de différents types (T, où T va généralement
représenter des BYTE ou des float). D’autres classes comme imabin, imalabels,
imacontours etc., représentent des images généralement issues d’une interpréta-
tion partielle d’une image de données. Aussi la plupart des constructeurs de ces
classes prennent-ils en argument en entrée une image de données (objet de la classe
imadata). Dans chacune de ces classes il existe d’autres méthodes spécifiques à la
manipulation ou l’interprétation plus avancée du type d’image étudié.
La version des codes C++ est fournie avec un environnement graphique dans
lequel un menu vous permet de sélectionner les commandes et les paramètres asso-
ciés. Vous pourrez avoir à compléter certaines parties de codes pour développer les
fonctions demandées, et/ou à appeler certaines méthodes (commandes du menu)
via l’interface graphique afin de comparer les résultats de différents algorithmes ou
approches.
Concrètement, vous récupérerez tous les fichiers fournis (le répertoire vous sera
indiqué en début de séance) et sous Visual 2005, vous lancerez TDI_GUI.vcproj.
L’annexe de ce document décrit les commandes disponibles sous l’interface gra-
phique. Vous pouvez en ajouter de nouvelles via les deux fichiers params.h (pro-
gramme principal de l’application graphique), et params.cpp (qui contient la des-
cription des commandes et de leurs paramètres).
1
1.2 Format des images
Une image est un tableau 3D où les deux premières dimensions sont le nombre
de lignes (nblig membre-données de la classe imasite) et le nombre de colonnes
(nbcol membre-données de la classe imasite) et la troisième dimension est le
nombre de canaux (nbcanaux membre-données de la classe imadata : 1 pour les
images à niveaux de gris, 3 pour les images couleurs, etc.). L’accès à une valeur de
l’image se fait à l’aide de l’opérateur ( ) : par exemple (*this)(i,j,k) accède à la
kième composante du vecteur-pixel de coordonnées image (i,j) de l’image (*this),
et (*this)(i,j) accède à la valeur scalaire du pixel de coordonnées image (i,j).
Vous testerez vos programmes à l’aide d’images plus ou moins complexes :
bureau.pgm, wee.pgm (faible nombre de niveaux de gris), boat.pgm (contours fins),
mandrill.pgm (image texturée) etc. Les images fournies sont au format .pgm.
2 TP “filtrage passe-bas”
2.1 Objectif
L’objectif de ce TP est comparer différents filtres passe-bas (linéaire, non li-
néaires) vus dans en cours. Vous étudierez des filtres PB vus tels que :
1. le filtre moyenne arithmétique sur une fenêtre de taille nl×nc,
2. le filtre gaussien de paramètre σ,
3. le filtre médian sur une fenêtre de taille nl×nc,
4. le filtre de Nagao,
5. le filtre Symetrical Nearest Neighbor (SNN),
6. les Filtre Alternés Séquentiels (FAS).
Ces filtres sont implémentés dans la classe imadata dans le fichier imadata.h, sauf
pour le filtre gaussien que vous développerez vous-même.
2
2. Modifiez le niveau de bruit et ajustez (si possible) le(s) paramètre(s) des filtres
en fonction du niveau de bruit, de façon à discuter l’efficacité d’un filtre en
fonction du niveau de bruit.
3 TP “morphologie mathématique”
3.1 Objectif
L’objectif de ce TP est la mise en œuvre de concepts vus dans le cours de
Morphologie Mathématique appliquée aux images binaires. Comme images binaires
vous utiliserez des images binarisées (fonctions bin_Sup ou bin_Inf, avec les seuils :
40 pour objets.pgm, et 0 pour l’image bureau.pgm.
Les méthodes de la morphologie mathématique binaire étudiées dans cette séance
sont : la détection des coins en utilisant une transformation en tout ou rien, et la
reconstruction géodésique.
3
4 TP “Detection de points-clés”
4.1 Objectif
L’objectif de ce TP est la mise en œuvre de concepts vus dans le cours de
Détection de contours. Le détecteur étudié dans cette séance est le détecteur de
Harris.
4
5 Projet : Détection de position de la main.
5.1 Objectif
L’objectif est de détecter de manière automtique la main sur l’image des dispa-
rités acquise par une kinect et de compter le nombre de doigts (par exemple dans
une application de reconnaissance de signes du joueur). Quelques unes des images
à votre disposition sont montrées sur la figure 1.
Pour cela, nous vous conseillons de procéder selon les étapes suivantes :
1. Segmentation de l’image des profondeurs : Détection des objets situés
au premier plan (parmi les quels on suppose la main du joueur). L’idée dans
cette première étape est d’extraire au mieux la main, et seulement celle-ci. Il
vous faudra donc éventuellement filtrer l’image, procéder à un étiquetage en
composantes connexes, etc.
2. Reconnaissance des doigts : Une fois que la main est détecté, il s’agira
de distinguer le nombre d’extremités. L’idée dans cette seconde étape est de
reconnaitre les doigts en tant qu’extremités éventuellement vérifiant certaines
propriétés d’interaction spatiale. Vous pourrez utiliser les méthodes proposées
par la morphologie mathématiques : squelette, etc.
5
6 Annexe : commandes disponibles
6.1 Catégorie 0 : Opérations de base sur les images à niveaux
de gris
+ ou − entre images niveaux de gris : Addition ou soustraction ou valeur
absolue de la différence entre valeurs des pixels de 2 images à niveaux de gris.
+ ou ∗ avec 1 scalaire : Addition ou multiplication des valeurs des pixels par un
scalaire.
Inversion de niveaux de gris : Inversion de l’échelle des niveaux de gris.
Etirement de la dynamique : Création de l’image de dynamique étirée entre 0
et 255.
Egalisation d’histogramme : Création de l’image d’histogramme égalisé avec
ré-étirement de la dynamique.
Application d’un masque : Mise à 0 des pixels de l’image à niv. de gris (1ère
im. en entrée) ayant la valeur 0 sur l’image binaire ‘masque’ (2ème im. en entrée).
Supérieur au seuil : Création d’1 image binaire des valeurs supérieures au seuil.
Inférieur au seuil : Création d’1 image binaire des valeurs inférieures au seuil.
Seuillage à hystérésis : Création d’1 image bin. des valeurs sup. au seuil haut ou
sup. au seuil bas ET dont la composante connexe a au moins 1 pixel de valeur sup.
au seuil haut.
Seuillage entre deux valeurs : Création d’1 image bin. des valeurs comprises
entre le seuil haut et le seuil bas.
Percentile supérieur : Création d’1 image binaire des p% pixels de valeurs les
plus élevées.
Percentile inférieur : Création d’1 image binaire des p% pixels de valeurs les plus
faibles.
Max : Création d’1 image binaire des valeurs maximales d’1 image à niveaux de
gris.
Max Réginaux : Création d’1 image binaire des maxima régionaux d’1 image à
niveaux de gris.
Ajout bruit gaussien : Ajout d’1 bruit gaussien centré sur les valeurs des pixels.
Ajout bruit impulsif : Ajout d’1 bruit impulsif poivre et sel sur les valeurs des
pixels.
6
NOT : Complémentaire des valeurs d’1 image binaire.
Transformée en distance : Création d’une image des niveaux de gris des dis-
tances du fond aux objets.
Erosion binaire : Application de l’opérateur d’érosion morphologique à 1 image
binaire.
Dilatation binaire : Application de l’opérateur de dilatation morphologique à 1
image binaire.
Ouverture binaire : Application de l’opérateur d’ouverture morphologique à 1
image binaire.
Fermeture binaire : Application de l’opérateur de fermeture morphologique à 1
image binaire.
Tophat binaire : Application de l’opérateur dit ‘chapeau haute forme’ de mor-
phologie mathématique à 1 image binaire.
Reconstruction géodésique : Reconstruction géodésique d’1 image binaire (1ère
image en entrée) à partir d’1 image de marqueurs (2nde image en entrée).
Etiquetage en composantes connexes : Etiquetage en composantes connexes
d’1 image binaire.
Décomposition en rectangles : Décomposition en rectangles d’1 image binaire.
Erosion ultime : Création de l’image des érodés ultimes des objets d’1 image bi-
naire.
Détection de coins : Détection des coins carrés UL (Upper left), UR (Upper
right), LL (Lower left) et LR (Lower right) des objets d’1 image binaire.
Enveloppe convexe : Création de l’image des enveloppes convexes des objets
d’une image binaire.
Squelette : Création de l’image des squelettes des objets d’une image binaire.
Elagage/ébardage : Application de la transformation en tout ou rien réalisant
l’élagage ou ébardage notamment de squelettes.
Zones d’influence géodésique : Création de l’image binaire des zones d’influence
géodésique des objets d’1 image binaire.
Elimination objets du bord : Elimination des objets touchant le bord de l’image
binaire.
Bouchage de trous : Bouchage des trous sur l’image binaire.
7
Classification aveugle des c-moyennes : Classification non supervisée avec en
entrée l’image des données, en sortie l’image des labels. Les caractéristiques des
classes sont affichées à la console.
Classification aveugle des c-moyennes sur ROI : En entrée : l’image des
données et l’image binaire des pixels à considérer, en sortie : l’image des labels et
les caractéristiques des classes affichées à la console.
Classification supervisée MRF : Classification basée sur un modèle markovien
de l’image des labels. Le 1er fichier en entrée est l’image à classifier, le 2nd est le
fichier texte des classes.
Classification supervisée MRF avec processus lignes : Classification basée
sur un modèle markovien de l’image des labels. Le 1er fichier en entrée est l’image
à classifier, le 2nd est le fichier texte des classes.
8
6.7 Catégorie 6 : Opérateurs de segmentation
Segmentation à partir d’1 classification : Création de l’image des régions cor-
respondant à l’image des labels en entrée.
Segmentation par croissance de régions : Création de l’image des régions par
croissance de régions à partir de germes (aléatoirement ou déduits de l’histogramme)
et jusqu’à invalidation du critère d’homogénéité.
Segmentation contrainte quadtree : Création de l’image des régions correspon-
dant à une représentation de type quadtree.
Ligne de partage des eaux : Segmentation par l’algorithme de la ligne de partage
des eaux en morphologie mathématique fonctionnelle. Le fichier en entrée est une
image de la norme du gradient.
Segmentation selon graphe : Segmentation par fusion de régions dans un graphe
avec sélection des arêtes de moindre coût par accord mutuel.
Segmentation selon Mumford&Shah : Segmentation selon la résolution hiérar-
chique de Koepfler de la fonctionnelle de Mumford et Shah.