LaDissertation.com - Dissertations, fiches de lectures, exemples du BAC
Recherche

Rapport du TP de traitement d'images

TD : Rapport du TP de traitement d'images. Recherche parmi 298 000+ dissertations

Par   •  20 Octobre 2016  •  TD  •  2 711 Mots (11 Pages)  •  1 204 Vues

Page 1 sur 11
  1. Introduction

L’objectif de ce TP est de réaliser, à partir de plusieurs images, une reconstruction panoramique. Pour arriver à cela, plusieurs étapes s’imposent. Elles consistent en différents traitement appliqués aux images afin d’obtenir la reconstruction panoramique la plus optimale possible. L’une des approches considère les étapes suivantes:

  • Détection de coins: détection des points d'intérêts.
  • Appariement: l’association des points d'intérêts observés dans une image avec ceux observés dans une autres image.
  • Estimation de l’homographie: estimation des paramètres d’une application matricielle permettant de donné pour chaque point d’une image I1, le point correspondant dans l’image I2.
  • Reconstruction panoramique: reconstruire une seul image à partir de plusieurs images en utilisant la matrice d’homographie.

Ces étapes seront expliquées en détail dans les différents exercices de ce TP.

  1. Exercice 1 : Detecteur FAST

2.1. Concept

Le détecteur FAST est un algorithme de détection de coins qui peut être utilisé afin de déterminer les points d’intérêts dans une image donnée. Ces points d’intérêts représentent une base d’observations pour différentes application dans le domaine du traitement d’images, dans le cadre de ce TP, ils seront utilisés dans le but de réaliser des reconstructions panoramiques. Contrairement à d’autre méthodes de détection de coins comme le détecteur de Harris, FAST est extrêmement rapide car il n’utilise pas d’opérations complexes telles que des convolutions ou des calculs de gradients etc.

L’algorithme fonctionne de la manière suivante :

  1. Pour chaque pixel p de l’image, on observe son intensité I(p).
  2. On considère un cercle de 16 pixels centré en p (cf. l’image). A chaque pixel ci du cercle, une étiquette est attribuée de la manière suivante:
  • B (Brighter), si : I(ci) > I(p) + t
  • D (Darker), si : I(ci) < I(p) - t
  • S (Same), si : I(p) - t < I(ci) < I(p) + t

“t” étant un seuil de tolérance permettant d’être plus large dans l’estimation des pixels ayant la même intensité que les pixels centraux.

  1. e pixel p est considéré comme un coin, s’il existe au moins 9 pixels consécutifs du cercle ayant tous comme étiquette D ou B.
  2. Élimination des faux points d’intérêts en utilisant la méthode de la suppréssion maximale, qui sera détaillé dans les partie suivante.

En OpenCV, il existe déja une fonction permettant cela. Il s’agit de “FAST(InputArray image, vector keypoints, int threshold, bool nonmaxSuppression=true )”.

2.2. Réalisation

Dans cette partie est détaillées la phase de la réalisation de l’algorithme FAST. Or, elle est divisée en 2 étapes importante, dont la première est une détection basique de FAST qui prend en compte que le cercle des 16 voisins. La deuxième étape, la détection avancée, elle consiste à intégrer la méthode suppression non-maximal pour une optimisation des points d’intérêts.

Etiquettes...

2.2.1. Version basique (Sans la “suppression non-maximale”)

Il s’agit d’une version qui s’arrête à l’étape 3 de l’algorithme FAST. La fonction qui réalise cela est fastBasic(), qui prend en paramètres une image ainsi qu’un seuil de tolérance t, et retourne la liste des points d'intérêts. Son fonctionnement est le suivant:

  • Parcours de l’ensemble des pixels de l’image (Les bords de l’image d’une taille de 3 pixels sont ignorés).
  • Observation de l’intensité I, de chaque pixel p.
  • Définition, à partir de I, les valeurs min et max d’intensité entre lesquelles un voisin de p est considéré comme ayant la même intensité que p.
  • Extraction des 16 pixels ci du cercle centré en p et déterminer, pour chaque pixel ci, la classe correspondante, en comparant son intensité I(ci) à celle des valeurs min et max précédemment définies. Comme résultats, nous obtiendront un tableau de 16 valeurs représentant les classes des pixels du cercle centré en p (cf. image).
  • Vérification, à partir du tableau obtenu, si le pixel p est un point d’intérêt (coin). Si oui, le point est ajouté à la liste. Pour faire cette vérification, une fonction supplémentaire a été réalisé, isInterestingPoint().

Fonction isInterestingPoint(): Il s’agit d’une fonction qui prend en paramètre le tableau dont les valeurs sont les classes des pixels formant un cercle autour d’un pixel donné. En retour, la fonction détermine si ce pixel centré est un point d’intérêt ou pas, en se basant sur le calcul du nombre de classes consécutifs exprimé dans l’étape 3 de la partie 2.1.

L’image suivante illustre ma façon de numéroter les pixels et que je vais utiliser pour expliquer certains choix d’implémentation.

Dans le but d’arriver à cette décision, plusieurs vérifications sont réalisées. Elles consistent, dans l’ordre, à vérifier les points suivant:

  1. Dans le but d’exclure rapidement les points ne représentant pas un coin, deux tests simples et rapides sont réalisés:
  1. Le premier consiste à regarder les pixels 1 et 9. S’il sont tous les deux S (même intensité que le pixel central), alors il ne peut exister au moins 9 pixels consécutifs dont l’étiquette est B ou D.
  2. Si le premier test échoue, on sait que les pixels 1 et 9 ne sont égales à S. Donc, le second consiste à examiner les pixels 1, 9, 5 et 13. En effet, si 1 et 9 sont égaux (tous les deux B ou D), on regarde 5 et 13. p est un coin s’il au moins 3 de ces pixels sont tous à B ou D. Sinon, p ne peut être un coin. Exemple:        

  1. Si la première étape échoue, une autre vérification est réalisée. Cette dernière consiste à vérifie les pixels 0 et 15 (les extrémités du tableau). S’il sont égaux et différents de S, On parcourt le tableau dans les deux sens. Premièrement de la droite vers la gauche tant que les nouveaux pixels parcourut sont égaux au 15. On compte en même temps de nombre d'occurrences nR de la classe du pixel 15. Ce parcourt s’arrête un fois qu’on trouve une étiquette différente. La même chose est réalisée pour le pixel 0 par un parcout de la gauche vers la droite en comptant le nombre d’occurrences nL. Si au final on a (nR + nL) > 8, il s’agit donc d’un point d’intérêt. Exemple:

  1. Si les deux tests précédents échouent, la dernière vérification consiste à parcourir les tableau dans les deux sens jusqu’au chevauchement. A chaque itération et pour chaque sens, vérifier les points suivants:
  1. Si la nouvelle classe lu est S, remettre le compteur en question (nR ou nL) à zéro.
  2. Sinon, s’il s’agit de la même classe que la précédente, le compteur est incrémenté.
  3. Sinon (classe différente de la précédente et différente de S), enregistré la nouvelle classe et remettre le compteur a 1.

        Au final, après chevauchement, vérifier que la dernière classe enregistré pour le parcourt gauche->droit correspond à celle du droit->gauche et que la somme des occurrences est au moins égale à 9. Exemple:

2.2.1. Avec la suppression non-maximale

...

Télécharger au format  txt (18.1 Kb)   pdf (101.9 Kb)   docx (15.8 Kb)  
Voir 10 pages de plus »
Uniquement disponible sur LaDissertation.com