Obligement - L'Amiga au maximum

Mercredi 22 novembre 2017 - 23:10  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

 · Accueil
 · A Propos
 · Articles
 · Galeries
 · Glossaire
 · Hit Parade
 · Liens
 · Liste jeux Amiga
 · Quizz
 · Téléchargements
 · Trucs et astuces


Articles

 · Actualité (récente)
 · Actualité (archive)
 · Comparatifs
 · Dossiers
 · Entrevues
 · Matériel (tests)
 · Matériel (bidouilles)
 · Points de vue
 · En pratique
 · Programmation
 · Reportages
 · Tests de jeux
 · Tests de logiciels
 · Tests de compilations
 · Articles divers

 · Articles in english
 · Articles in other languages


Twitter

Suivez-nous sur Twitter




Liens

 · Sites de téléchargements
 · Associations
 · Pages Personnelles
 · Moteurs de recherche
 · Pages de liens
 · Constructeurs matériels
 · Matériel
 · Autres sites de matériel
 · Réparateurs
 · Revendeurs
 · Presse et médias
 · Programmation
 · Développeurs logiciels
 · Logiciels
 · Développeurs de jeux
 · Jeux
 · Autres sites de jeux
 · Scène démo
 · Divers
 · Informatique générale


Jeux Amiga

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Trucs et astuces

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Glossaire

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Partenaires

Annuaire Amiga

Amedia Computer

Relec

Hit Parade


Contact

David Brunet

Courriel

 


Dossier : Le traitement d'images numériques - des bords aux contours des objets
(Article écrit par Barrou Diallo et extrait d'Amiga News - novembre 1996)


Les images n'ont pas fini de nous renseigner sur la complexité des phénomènes qui nous entourent. Voir, comprendre et interpréter, tels sont les buts non exclusifs que se fixent les spécialistes de l'imagerie, du traitement du signal 2D ou 3D ou même des informaticiens purs qui souhaitent donner une représentation plus convaincante à leurs théories. Une image peut être le reflet d'une réalité perceptible tout comme une convention de présentation de paramètres issus de calculs plus ou moins savants. Rappelons-nous que nous avions défini une image comme une fonction z=f(x,y). Cette vision qui, à chaque point du plan (x,y), associe une valeur z est intrinsèquement extensible à celle qui lie deux variables indépendantes plus générales (u,v) à une ou plusieurs lois dont le résultat dépend de ces valeurs.

Cet article se décompose en plusieurs parties : dans un premier temps, nous exposerons une autre méthode de réhaussement de contraste, étape primordiale dans la recherche de contours d'objets, dans un second temps nous discuterons du rapport signal/bruit, ensuite, viendra la quantification d'un bon détecteur de bord, suivi d'un algorithme de codage des contours.

Un rehaussement statistique

Afin de définir ce nouvel algorithme de rehaussement, il nous faut calculer des statistiques sur une fenêtre mouvante dans l'image. Ces statistiques, en fait, se résumeront simplement à des moyennes et des variances. Rien de grave donc. Pourquoi tant de théorie ? Tout simplement parce que la capacité de notre système visuel de détecter un objet de son fond (si le fond est homogène) dépend essentiellement de la taille de l'objet en question et du ratio "s" suivant :

s = EC / MOY

avec EC : l'écart-type et MOY la moyenne.

Ce ratio est appelé le ratio de contraste. Ces valeurs de moyenne et d'écart-type sont calculées sur les niveaux de gris de tous les pixels autour du pixel courant qui définissent une fenêtre de taille 5x5 ou 11x11 par exemple dans l'image de départ. Ce qui nous intéresse n'est pas exactement ce fameux ratio de contraste, mais son inverse :

IC(m,n)  = MOY(m,n) / EC(m,n)

Pour tout pixel (m,n) de l'image, on calcule autour de celui-ci la moyenne et l'écart-type et on les divise afin d'obtenir une image résultat qui contient IC. Attention, IC est une valeur décimale et donc, l'image finale doit être rééchelonnée entre 0 et 255 pour pouvoir être visualisée. Nous pouvons appliquer un cas spécial de ce réhaussement statistique et calculer IC non pas en divisant la moyenne par l'écart-type, mais en divisant la valeur originale de l'image par cet écart-type :

IC2 = VAL(m,n) / EC(m,n)

Cette dernière transformation appelée rééchelonnement statistique génère une image de variance unité.

Le rapport signal/bruit

Définir et quantifier l'effet de tel ou tel algorithme ou filtre peut s'effectuer visuellement ou en présentant les résultats à des experts. Souvent, les spécialistes parlent de rapport signal sur bruit (RSB) et quantifient par là même le gain des filtres qu'ils utilisent. Il existe donc des méthodes quantitatives qui permettent d'estimer ce fameux RSB et parmi celles-ci, une famille : celle des moindres carrés. Prenons par exemple deux images de taille MxN, l'une originale u(m,n) et l'autre v(m,n) filtrée par un filtre médian et calculons les deux critères LS et AMS suivants :

LS = 1/MN * SUM       SUM ( SQR[(u(m,n) - v(m,n) )] )
                m=1..M    n=1..N

SQR calcule le carré de son argument.

Ce critère consiste à calculer les carrés des valeurs de différences des pixels des deux images, de les sommer, et enfin, de les diviser par le nombre de pixels total.

Le second critère ressemble à celui-ci sauf qu'il calcule en plus l'espérance mathématique E de l'image :

AMS = 1/MN * SUM       SUM ( E ( SQR[(u(m,n) - v(m,n) )] ) )
                 m=1..M    n=1..N

Ces deux critères contribuent dans l'expression du rapport signal sur bruit par :

RSB = 10.log10 ( VAR(ima) / LS)

ou :

RSB = 10log10 (VAR(ima) /AMS)

VAR(ima) est la variance totale de l'image originale. Le calcul du RSB consiste donc à extraire le logarithme décimal du rapport entre la variance de l'image et les critères LS ou AMS. Le rapport signal sur bruit s'exprime en décibels (dB). Nous pouvons maintenant quantifier sérieusement l'apport des différents filtres d'images grâce au RSB.

Comparaison des détecteurs

Nous avons vu qu'il existait plusieurs façons de détecter des bords. Seulement, comment les comparer ? Évidemment, l'oeil effectue automatiquement une détection des bords d'une image et à première vue, on est capable de savoir si le résultat d'un algorithme est celui qu'on attend ou non.

Les détecteurs de bords donnent malheureusement souvent des résultats visuellement satisfaisants mais incomparables en terme de qualité. Les différences entre algorithmes s'agrandissent d'autant plus que le bruit contenu dans l'image originale est important. Un critère mathématique a été proposé en vu de comparer les opérateurs de détection :

C = 1/  Max(Ni, Nd) * SUM ( 1/ (1+a*SQR(di) ) )
                      i= 1 a Nd

SQR élève au carré son argument et MAX prend le maximum de ses arguments.

Traitement images
Figure 4 : image originale

Ni est le nombre de pixels idéal et Nd est le nombre de pixels de bords détectés. di est la distance entre un pixel déclaré comme étant un bord et le pixel de bord idéal le plus proche.

Ce critère permet, entre autres, de classifier les opérateurs et de déclarer les opérateurs de Sobel et de Prewitt comme étant les plus performants parmi les plus rapides. Pour compléter cet exposé voici quatre détecteurs qui permettent de détecter des lignes. En effet, les images sont en grande partie constituées d'amoncellements de traits plus ou moins fins et orientés dans toutes les directions. Les masques qui suivent sont adaptés à ces images composées de traits et s'appliquent indépendamment en fonction de la direction des lignes que l'on veut privilégier (E=Est, O=Ouest, N= Nord, S= Sud) :

           ( -1  -1  -1 )            ( -1  -1   2 )
    E-O =  (  2   2   2 )   NE-SO =  ( -1   2  -1 )
           ( -1  -1  -1 )            (  2  -1  -1 )

           ( -1   2  -1 )            (  2  -1  -1 )
    N-S =  ( -1   2  -1 )   NO-SE =  ( -1   2  -1 )
           ( -1   2  -1 )            ( -1  -1   2 )

Ces masques 3x3 sont des masques centrés, c'est-à-dire que le pixel courant dans l'image se trouve au centre du masque. N'oublions pas que ce n'est pas sans raisons que le choix d'un détecteur de bord est primordial. Appliqués sur une image brute sans prétraitements, les détecteurs de bords donnent seulement une idée des hautes fréquences contenues dans l'image. La figure 5 est le résultat d'un passage du masque Nord/Sud et la figure 6 est le résultat d'une détection en Nord/Est Sud/Ouest. Si le but est d'extraire tous les bords, alors il faut appliquer les masques de toutes les directions et les combiner en additionnant les images résultats par exemple. Comme nous l'avions mentionné le mois dernier, ces fameux bords détectés constituent souvent la base d'une analyse de scène. Maintenant que les objets sont identifiés, passons à leur codage !

Traitement images
Figure 5

Traitement images
Figure 6

Le codage des bords détectés

Nous avons besoin ici de définir la notion de connectivité. En effet, il faut maintenant envisager la description d'un objet par un ensemble de points "reliés" entre eux. On dit qu'un pixel est un bord en 4-connexités ou 8-connexités si et seulement s'il a les mêmes propriétés que l'un de ses quatre ou respectivement huit voisins. La figure 1 représente les deux schémas de connexité possibles.

Traitement images
Figure 1

Le codage en chaînes

Dans ce type de codage, le vecteur direction entre chaque pixel de bords est encodé dans une convention comme celle de Freeman. Lorsque l'algorithme doit, par exemple, monter pour suivre un bord, il stocke la valeur 2, s'il doit ensuite se diriger vers la droite, il stocke la valeur 0 et ainsi de suite pour tous les pixels des bords. Concrètement, on passe de coordonnées exprimées sous forme de couples (x,y) en "codes" de direction. Sur la figure 3, en trait gras est représenté la vision des contours par le codage de Freeman. Ce contour extrait d'une image dont les bords ont été détectés peut ainsi être écrit :

    Contour   =   (07664355432206)

Ou encore :

(000 111 110 110 100 011 101 101 100 011 010 010 000 110)

Traitement images
Figure 2

Traitement images
Figure 3

Ce codage ouvre la porte à beaucoup de manipulations géométriques applicables directement sur les codes. Évidemment, il faut associer à chaque code un nom qui permet de lui spécifier le point de départ car tous les autres lui sont relatifs. Un codage de Freeman d'un contour objet est donc constitué d'un identifiant + une chaîne de bits.

Algorithme

1. Pour tous les bords de l'image.
2. Commencer à n'importe quel point A de la frontière.

4. En cas d'égalité, prendre la plus grande valeur de code (ou la plus petite).
5. Coder son orientation.
6. Continuer tant qu'il reste des pixels de bords.

Cet algorithme nécessite un paramètre qui est la taille du vecteur orientation, celui-ci définit la finesse du contour que l'on veut coder. D'autre part, il est souvent utile d'opérer quelques prétraitements avant de coder les contours car s'ils sont issus de détecteurs de bords, ils sont souvent sujets au bruit et l'algorithme peut détecter deux contours distincts comme étant un seul et unique objet. Les plus simples sont les opérateurs morphologiques comme l'ouverture ou la fermeture (combinaisons successives d'érosions et de dilations). Mais, simplicité rime souvent avec mauvaise qualité dans ce domaine et les traitements de bases ne suffisent pas à définir un objet correctement.

Conclusion

Après avoir montré l'importance de la quantification des filtres de prétraitements et la façon de comparer les détecteurs de bords, nous avons exposé une méthode classique de codage de contours et des détecteurs directionnels employés en visionique. Nous nous engagerons, et cela dès le mois prochain, dans des descriptions géométriques des images afin de les faire tourner, zoomer et déformer dans tous les sens !

Sur ce, n'hésitez pas à m'envoyer vos remarques (et encouragements) par courrier électronique, je réponds à tous les courriers !


[Retour en haut] / [Retour aux articles] [Article précédent] / [Article suivant]