Dans le présent document, nous allons détecter le contour d'une clé USB photographiée en vue d'oiseau. L'intérêt ? Proposer un exemple concret d'utilisation des filtres matriciels ou logiques utilisés en traitement d'image.
Nous prendrons l'image suivante qui n'est clairement pas parfaite. En effet, la prise de vue fait apparaître un fond dégradé qui empiette sur le domaine de couleur de l'objet.
En améliorant la prise de vue, on faciliterait clairement l'analyse automatique de l'image. On garde malgré tout cet exemple, car il n'est pas totalement dégénéré.
Avec une photographie en clair-obscur, on peut avoir un objet assez noir sur un fond assez blanc...
L'analyse de l'histogramme de l'image montre qu'il est intéressant de travailler sur la couche de rouge. Pourquoi ? Parce qu'il y a beaucoup de rouge sombre et ça va renforcer notre objet. En isolant la couche verte ou bleue, on pourrait encore voir la puce électronique dans la clé ou la transparence du capuchon, bref des couleurs trop proches de notre arrière-plan.
Pour chaque pixel de l'image, nous allons recopier le rouge dans le vert et le bleu. C'est un artifice logiciel qui permet de rendre compte à l'utilisateur que notre image est désormais considérée comme n'étant qu'une image de 256 couleurs de gris.
Il faut maintenant mettre l'image en noir (la clé USB) et blanc (le fond).
Pour cela, on binarise violemment : toute valeur de gris inférieure à un seuil devient noire, ou blanche si supérieure.
L'analyse des contours de l'objet montre qu'un seuil de 135 serait pertinent.
On voit qu'il y a des petits points blancs en plein milieu de zones noires. Ce n'est pas forcément génant, mais il existe deux techniques pour les effacer :
Utiliser un filtre passe-bas : le pixel devient la moyenne des couleurs qui l'environnent. On perd le noir et le blanc en faveur du gris, mais on peut rebinariser juste derrière avec un seuil de 128. Cette méthode permet de conserver le texte d'origine de la clé USB (marque et capacité).
Effectuer une fermeture : on erode le blanc pour le dilater ensuite. C'est une technique connue et standard, mais le choix de l'outil de balayage est important.
Nous exploiterons la fermeture, car la marque n'est pas un élément déterminant pour la forme de la clé USB. De plus, cela nous permet de conserver un bon aspect de la partie qui rentre dans la prise.
Le contour se détecte normalement avec des opérateurs dédiés, mais il s'avère dans notre cas qu'on peut avoir un très bon résultat avec un filtre laplacien. A la base, le filtre laplacien sert à créer du flou et ainsi limiter le bruit de l'image (les couleurs abérrantes qui altèrent la qualité de l'image). De plus, ce flou permet à d'autres filtres d'être mieux calculés.
En choisissant un rayon de 2 pixels et un σ=0.5, il nous est possible de détecter les contours. Tout se joue sur la valeur de sigma.
C1 | C2 | C3 | C4 | C5 |
---|---|---|---|---|
0 | 0 | 0,0002 | 0 | 0 |
0 | 0,0117 | 0,0862 | 0,0117 | 0 |
0,0002 | 0,0862 | 0,6366 | 0,0862 | 0,0002 |
0 | 0,0117 | 0,0862 | 0,0117 | 0 |
0 | 0 | 0,0002 | 0 | 0 |
L'image obtenue est en noir avec des contours blancs.
Pour avoir les bonnes couleurs, il suffit d'inverser les couleurs et d'appliquer un seuil pour effacer les gris résultants du filtre gaussien.
En appliquant un pot de peinture noir puis blanc dans les coins, on efface une partie des traits qui ne nous intéressent pas.
Si vous avez des images déjà en noir et blanc, vous pouvez ressortir les contours comme ci-précédemment. Ca marche bien avec des partitions, comme par exemple :
Dernière modification le 31 janvier 2011 à 21:36