PROCEDE DE SIMPLIFICATION D'IMAGE ET APPLICATION DU DIT ' PROCEDE A LA SEGMENTATION ET AU CODAGE D'IMAGES
La présente invention concerne les procédés de construction d'une représentation simplifiée permettant de représenter une image d'origine, qu'on qualifiera d'image de référence f, constituée par une matrice de pixels à chacun desquels est affectée au moins une valeur radiométrique f (x)
A
(luminance ou chrominance) par une image simplifiée g dont
/s chaque pixel a une valeur radiométrique g(x) .
Il existe déjà de nombreux procédés de simplification d'image. Ils constituent souvent une étape préliminaire avant une étape supplémentaire.
Cette étape supplémentaire peut être constituée par une segmentation de l'image, consistant à isoler, en en définissant le contour, certains objets qui apparaissent dans 1 ' image . Une autre application consiste à comprimer l'image en vue de sa transmission ou de son stockage, par exemple par un algorithme tel que JPEG pour les images fixes ou MPEG pour les séquences d'image. En appliquant l'algorithme de codage à l'image simplifiée g plutôt qu'à l'image f, on peut représenter l'image par moins de données que par codage direct de f. Parmi les procédés de simplification, on peut citer, dans le domaine linéaire, les convolutions (en particulier par des noyaux gaussiens) et, dans le domaine non linéaire, les filtres morphologiques, en particulier les filtres alternés séquentiels.
Ces opérateurs connus ont des inconvénients. Dans certains cas, ils déplacent les contours ou les
rendent flous et/ou ils ne traitent pas de manière symé¬ trique les détails blancs et les détails noirs . Les zones où l'image simplifiée g diffère notablement de f ne constituent pas des plateaux, c'est-à-dire des zones connexes où l'image g présente un caractère de régularité. En conséquence, l'effet de la simplication est limité.
La présente invention vise à fournir un procédé de simplification d'image répondant mieux que ceux antérieure¬ ment connus aux exigences de la pratique, notamment en fournissant une image simplifiée présentant un aspect régulier dans les zones où l'image simplifiée g est notablement différente de f. Elle vise également à fournir un procédé permettant de fournir une image donnant à un algorithme de segmentation ou de codage une efficacité plus grande que lorsque cet algorithme est appliqué à l'image d'origine f.
Dans ce but, l'invention propose notamment un procédé de construction d'une représentation simplifiée g d'une image d'origine, qu'on qualifiera d'image de référence f, par utilisation d'une image marqueur prédéterminée g, les images étant représentées chacune par une matrice de pixels à chacun desquels est affectée au moins une valeur radiomé- trique, suivant lequel on déduit la valeur g(x) de chaque pixel de l'image simplifiée de l'image f : - dans les régions où g est inférieure à une fonction ηf déduite de f et inférieure ou égale à f, par augmentation de g du montant minimum qui permet de constituer un plateau dans toute particule connexe où g<ηf, sauf dans les zones où l'augmentation de g est limitée par la valeur correspondante de ηf , qui est localement inférieure à la valeur du plateau .
- et dans les régions où g est supérieure à une fonction
ζf, déduite de f et supérieure ou égale à f, par diminution de g du montant minimum qui permet de constituer un plateau dans toute particule connexe où g>ζf, sauf dans les zones ou la diminution de g est limitée par la valeur correspondante de ζf, qui est localement supérieure à la valeur du plateau, η et ζ étant des fonctions prédéterminées de f.
Les fonctions η et ζ peuvent être duales ou non. Elles peuvent être constituées par une fonction arithmétique et/ou morphologique. La figure 6 est destinée a donner une indication tangible de résultats obtenus par l'invention dans le cas d'un algorithme de nivellement particulièrement simple, le résultat final étant ainsi représenté.
Sur cette figure, l'image d'origine est représentée par une courbe continue f (par opposition à la représentation quantifiée et discrète des figures 1 et 3) . L'image g est une représentation filtrée de f. L'image simplifiée ou nivellement g est obtenue par un algorithme donnant naissance a des plateaux de niveau constant. Sur toute particule connexe de f : - ou g<f, g est obtenu en augmentant g jusqu'à ce qu'il atteigne le niveau le plus élevé de g dans la particule ou atteigne f ;
- ou g>f, g est obtenu en diminuant g usqu'à ce qu'il atteigne le niveau le plus bas de g dans la particule ou atteigne f.
Plusieurs possibilités de choix d'une image marqueur existent .
Cette image marqueur peut être élaborée manuellement et être alors dessinée sous forme d'une courbe ou d'une surface qui gomme les irrégularités de la courbe ou de la surface représentative d'une image h qui peut être déduite de l'image de référence f.
Plus souvent, l'image marqueur g sera déduite de l'image de référence f par un procédé connu de filtrage, tel que l'un de ceux mentionnés plus haut. Par exemple, l'image marqueur g peut être construite à partir d'une image h, égale ou non à l'image f, en appliquant à h un filtrage, un lissage ou une représentation sous forme d'image mosaïque ; h peut être une image de la scène représentée dans f, mais pris sous un angle différent ; h peut être une image précédant l'image f dans le cas d'une séquence d'images (séquence vidéo ou film) .
Le procédé suivant l'invention permet d'obtenir une représentation simplifiée qu'on peut qualifier de "nivelle-
Λ ment", g ayant un aspect très régulier.
Dans le cas d'une séquence d'images successives présen- tant un degré de corrélation élevé, par exemple dans le cas de la vidéo ou du cinéma, on peut utiliser un masque de segmentation produit à partir de l'image d'ordre n comme image marqueur g pour produire un nivellement de 1 ' image n+1. Pour assurer une meilleure stabilité de l'image lorsqu'on visualise les résultats du traitement de la séquence, on peut avoir avantage à traiter les images successives de la séquence comme autant de coupes d'un volume tri-dimensionnel dont le temps constituerait la troisième dimension. On construit alors des marqueurs et on procède au nivellement associé sur le volume 3D ainsi constitué selon une des méthodes exposées dans la présente demande .
On constitue ainsi un volume 3D par juxtaposition des images successives d'une séquence vidéo le long d'un axe temporel, auquel on applique un nivellement 3D utilisant une image marqueur obtenue dans le volume 3D.
Dans le cas des images couleurs, on obtient des nivelle-
ents aux couleurs plus vives et plus fidèles à l'original si on prend comme images marqueurs les résultats de filtres médians vectoriels, par exemple celui décrit dans l'article de J. Astola, P. Haavisto, Y. Neuvo : "Vector Médian Filters, Proceedings of the IEEE", vol. 78, n° 4, pages 678- 689, avril 1990, auquel on pourra se reporter.
Quel que soit le mode de réalisation adopté, l'image g présente des zones connexes d'aspect très régulier ou "pla-
A teaux" dans toutes les zones où l'image g est notablement différente de f. Les contours des objets présents dans
Λ l'image g sont localises avec la même précision que dans l'image f, ne subissent pas de déplacements et ne sont pas rendus flous, le nivellement traite symétriquement les détails blancs sur fond noir et les détails noirs sur fond blanc, contrairement à ce qui se passe pour les algorithmes classiques. En conséquence, on produit sans dégradation des nivellements pour les images couleur en appliquant le procédé aux différents composants d'une image couleur. Cependant, le résultat dépend sensiblement de l'espace de représentation des couleurs, qu'il soit du type RGB ou HLS ou tout autre espace couleur. Un autre inconvénient est de devoir construire un marqueur et réaliser un nivellement séparément pour chaque canal couleur, ce qui peut constituer un volume de calcul trop important pour certaines applica- tions. Pour cette raison, on peut avoir intérêt à recourir à un nivellement unique à la place de trois nivellements séparés. Pour ce faire, on remplace l'image couleur vectorielle par une image numérique dont la valeur en chaque point est une fonction connue des trois couleurs en ce point, par exemple par un produit scalaire avec un vecteur de référence, produisant ainsi une image à teintes de gris unique. Par la suite, il ne sera fait référence qu'à ce cas particulier peur simplifier la description. Un nivellement unique sera appliqué à cette image scalaire et le résultat
sera projeté dans l'espace couleur initial. Cette procédure peut être appelée nivellement pseudo-scalaire. Elle peut être détaillée comme suit.
Lorsqu' on dispose de plusieurs valeurs radiometπques en chaque pixel, comme c'est le cas d'une image couleur ou de l'image d'un champ de vitesses, on parle d'image vecto¬ rielle. On obtiendra un nivellement de l'image vectorielle en appliquant un nivellement a chaque composante isolement. Cela a deux inconvénients : d'une part une quantité de calcul trop lourde pour certaines applications, et d'autre part un résultat dépendant du repère choisi pour représenter les vecteurs. Une solution consiste a appliquer un nivellement a une image scalaire obtenue par produit scalaire entre 1' image vectorielle de départ et une image vectorielle de référence. Dans le cas d'une image couleur, l'image vectorielle de référence peut par exemple contenir en chaque pixel un vecteur constant choisi sur l'axe allant du noir au blanc. Dans le cas d'un champ de vitesses, on pourra prendre par exemple en chaque pixel le vecteur vitesse moyen. On obtient ainsi une image scalaire a laquelle on peut appliquer ur nivellement ordinaire. Le résultat de ce nivellement est ensuite projeté dans l'espace vectoriel de départ, de manière a retrouver un champ de vecteurs qui présente plus de zones plates que le champ de vecteurs de départ.
L'application d'un algorithme de segmentation a g plutôt qu'a f permet d'obtenir facilement les contours des objets
A présents dans g, ce qui n'aurait pas ete le cas dans f. Un premier avantage est qu'un degré de compression plus eleve peut être obtenu. L'image résultant du codage de compression
A, puis au décodage de l'image g est par ailleurs plus agréable a regarder que l'image provenant du codage et du décodage de l'image f, sur laquelle les blocs de codage par transformée bidi ensionnelle deviennent visibles aux taux de compression élevés Dans les deux cas,
l'image restituée après codage présente des pertes, mais l'effet visuel de la dégradation est plus faible en cas de mise en oeuvre de l'invention, même aux faibles débits.
Plus l'image marqueur g choisie est éloignée de l'image f, plus le nivellement est régulier. Cela permet de construire des familles d'images simplifiées allant du plus proche au plus grossier, parmi lesquelles on peut choisir, par exemple en fonction des disponibilités de stockage ou de transport en cas de compression ultérieure. On peut egale- ment produire des nivellements en cascade, tout nouveau nivellement d'une représentation simplifiée g étant aussi un nivellement de f.
On peut alors choisir dans la famille le nivellement le plus approprie. Dans le cas de la segmentation, ce nivellement optimum sera celui qui contient les objets d'intérêt, mais pas de détails inutiles .
Dans le cas du codage, on choisira celui des nivellements a l'entrée du codeur qui produit le débit le plus proche des disponibilités de ce codeur.
Dans tous les cas, on peut considérer que le procède part d'un couple d'une image f de référence et d'une image marqueur g, qu'on veut transformer le moins possible pour en déduire une image simplifiée g, qu'on peut qualifier de nivellement de f.
Par la suite, on sera amené a utiliser les termes "notablement inférieur" et "notablement supérieur" .
On dira que g(x) est notablement inférieur à f(x) lorsque g(x) < ηf(x), où η désigne une tranformation de voisi- nage rf≤f.
De façon similaire, on dira que g(x) est notablement supérieur a f(x) lorsque g(x)>ζf(x), ζ étant une transformation αe voisinage ζ qui en chaque point de f produit une
valeur ζ f (x) > f ( x) .
Parmi les cas particuliers importants, on peut citer les suivants .
La transformation peut être la transformation identique,
Dans ce cas l'expression "g(x) est notablement inférieure a f (x) " signifie simplement que g(x) est inférieur a f(x) au sens ordinaire.
On peut également adopter ζf=f+λ et ηf=f-λ, λ désignant une valeur constante. Par exemple si λ=5, l'expression "g(x) est notablement inférieur a f(x)" signifie que g(x)<f(x)-5.
Au lieu d'utiliser des fonctions arithmétiques, on peut utiliser des fonctions morphologiques, par exemple ζf≈φf et ηf=γf, Y désignant une ouverture de la fonction f et φ une fermeture de f.
Des fonctions arithmétiques et morphologiques peuvent être combinées, par exemple en adoptant ζf-φf+λ et ηf=γf-λ.
L'obtenticn d'un nivellement s'effectue généralement par une itération qu'on achevé lorsque la représentation présente des plateaux. Cela implique de définir :
- un mécanisme pour changer la valeur de g, étroitement associe a la caracterisation des plateaux vers lesquels doit tendre g,
- l'ordre des pixels selon lequel on va transformer g, - un critère d'arrêt permettant de reconnaître que l'i age obtenue g(x) est bien un nivellement de f.
Plusieurs approches sont possibles. Mais on peut définir un algorithme permettant, de proche en proche, de transfor-
.A mer une image g quelconque en un nivellement g de f, construit a l'aide de deux transformations de voisinage α et β, vérifiant, pour tout pixel x et toute fonction g, αg (x) >g (x) et 3g(x)≤g(x).
De telles transformations seront définies plus loin. Le critère d'arrêt, c'est-à-dire la condition qu'on
Λ estime suffisante pour que l'image obtenue g(x) soit un nivellement de f peut être :
A - en tout pixel où l'image g(x) est notablement înfe-
Λ rieure a l'image f, c'est-à-dire lorsque g(x)<ηf(x), l'image
Λ A Λ Λ g(x) vérifie g(x)= inf (αg(x) , ηf (x) ) =αg (x) Ληf (x) , inf désignant le minimum ;
- en tout pixel où l'image g est notablement supérieure
Λ A a l'image f, c'est-à-dire lorsque g(x)>ζf(x), l'image g vérifie g(x)= sup (β'g (x) , ζf (x) ) =βg (x) Vζf (x)
Le mécanisme pour changer la valeur de g peut être le suivant : si g est une image ne vérifiant pas le critère précédent en un pixel x , on définit une nouvelle valeur g1(x), dont le rôle sera donné plus loin, par un critère qui peut être :
A
1. S g(x,< inf ( g (x) , ηf (x) ) =αg (x) Ληf (x) , on définit une nouvelle valeur g1 (x) égale iinnff ((ααgg ((xx)) ,, nnff ((xx)) )) ==αgg ((xx)) ΛΛηηff ((xx)) .. CCeettttee nouvelle valeur est plus grande que l'ancienne valeur g(x
2. Si g(x;> sup (βg (x) , ζf (x) ) =β (x) Vζf (x) , on définit une nouvelle valeur g1 (x) égale
A Λ ssuupp ((ββgg((xx)) ,, ζζff ((xx)) ))==ββgg((xx)) VVζζff ((xx)) .. CCeettttee nouvelle valeur est plus petite que l'ancienne valeur g(x)
3. Si aucune des conditions précédentes n'est vérifiée, on affecte a g1(x) l'ancienne valeur g(x) . α et β sont deux transformations de voisinage, qui peuvent être αe différents types, comme on le verra plus loin.
Utilisation de transformations auxiliaires :
Il existe un cas particulier qui simplifie les critères 1 et 2 ci-dessus : si ζf=ηf=f, l'algorithme pr cèdent est équivalent au suivant : si g (x) ≠ (f (x) Vβg (x) ) Λ αg(x),, on remplace g(x) par (f(x)Vβg(x)) Λ αg(x).
Dans ce cas (f (x) Vβg (x) ) Λ αg (x) = (f (x) Λ αg (x) ) Vβg (x) ) . On peut caractériser les plateaux de la façon suivante :
Λ dans toute particule connexe de pixels ou g(x)<ηf(x), un plateau est caractérise par le fait que, en tout pixel y de
A Λ ce plateai, on a g(y)=αg(y) . Et dans toute particule connexe de pixels ou g(x)>ζf(x), un plateau est caractérise par le
A fa t que, en tout pixel y de ce plateau, on a g(y)=βg(y) . On peut définir deux transformations auxiliaires, appelées sous-nivellement et sur-nivellement, grâce auxquelles on peut réaliser des nivellements rapides.
(a) Construction des sous-nivellements
On ootiendra un sous-nivellement, également appelé ouverture par reconstruction, en modifiant le mécanisme pour construire la nouvelle valeur de g1 (x) de la façon suivante :
• on garde le critère 1 décrit ci-dessus,
• αans tous les autres cas, on affecte a g1 (x) la valeur de f (x) .
Pour affecter g1 (x) , on utilisera les mêmes stratégies que celles qui sont décrites pour les nivellements, a savoir une des stratégies d' affectation de g1 (x) décrites plus loin. On notera nιv~(f,g) le sous-nivellement obtenu en prenant f comme image de référence et g comme image mar- σueur .
(b) Construction des sur-nivellements
De manière symétrique, on obtiendra un sur-nivellement, également appelé fermeture par reconstruction, en modifiant le mécanisme pour construire la nouvelle valeur de g1 (x) de la façon suivante :
• on garde le critère 2 décrit ci-dessus,
• dans tous les autres cas, on affecte à g1 (x) la valeur de f (x) .
Pour affecter g1 (x) , on utilisera une des stratégies décrites pour les nivellements plus loin. De la même façon, on obtiendra après convergence un sur-nivellement ou fermeture par reconstruction. On notera niv+(f,g) le surnivellement obtenu en prenant f comme image de référence et g comme image marqueur .
(c) Construction des nivellements à l'aide des sous- nivellements et sur-nivellements
Ces transformations sont plus simples à mettre en oeuvre que les nivellements complets, car elles s'appuient sur un critère unique, alors que le nivellement complet en utilise deux. De plus, le résultat ne dépend pas de l'ordre du balayage . On peut cependant obtenir un nivellement complet en mettant en oeuvre un sur-nivellement suivi d'un sous- nivellement : niv1(f,g) = (niv+ (niv~ (f, g) , g) , ce qui signifie que pour le sur-nivellement, on prend l'image niv~(f,g) comme référence et l'image g comme marqueur, ou bien alternativement un sous-nivellement suivi d'un sur-nivellement : niv2(f,g) = (niv" (niv+ (f, g) , g) , ce qui signifie que pour le sous-nivellement, on prend l'image niv+(f,g) comme référence et l'image g comme marqueur.
Dans le cas très fréquent où les fonctions ζ et η sont la fonction "identique", les nivellements niv1 et niv2 sont identiques .
Plusieurs stratégies sont possibles pour affecter g1(x). Deux d'entre elles sont les suivantes :
1. On examine tous les pixels de l'image et on calcule leur nouvelle valeur. On obtient ainsi une nouvelle image g1.
- Si g-(x)=g(x), l'image obtenue est un nivellement de f (x) et on peut arrêter le traitement ;
- si g:(x) *= g(x), on remplace l'image g par l'image g1-
Ce faisant on a effectué la première passe d'un traite¬ ment parallèle. Le résultat ne dépend pas de l'ordre de traitement des pixels si on attend, pour remplacer l'image g par l'image g1, que tous les pixels aient été traités (transformation parallèle) .
2. Dès que la nouvelle valeur gx(x) est connue pour un pixel x, on remplace l'ancienne valeur g(x) par cette nouvelle valeur. Cette nouvelle valeur sert au calcul des nouvelles valeurs des points adjacents. Ce procédé, où 1 ' image g est modifiée après le calcul de tout nouveau pixel, peut être appelé recursif ou séquentiel. Le résultat dépend alors de l'ordre de traitement des pixels. Plusieurs stratégies permettent d'atteindre plus ou moins rapidement la convergence vers le nivellement.
1. On peut effectuer des transformations parallèles successives jusqu'à ce qu'une nouvelle passe d'un traitement parallèle ne modifie plus l'image : on a alors atteint la convergence.
2. On peut effectuer des transformations récursives
successives et le résultat dépendra alors de l'ordre de balayage. On obtiendra une vitesse de convergence plus rapide en alternant les balayages de 1 ' image : un balayage de haut en bas et de gauche à droite, suivi d'un balayage de bas en haut et de droite à gauche. Le traitement des zones sombres et des zones claires sera symétrique si on applique ces transformations récursives, non pas à l'image initiale mais a l'image obtenue après une passe de traitement parallèle : αans ce cas, pour les nivellements les plus courants, l'ordre de balayage n'influera plus sur le résultat .
3. On peut appliquer les transformations récursives, non pas selon l'ordre de balayage de la matrice des pixels, mais en définissant un ordre de traitement selon la valeur des pixels. On traitera les pixels pour lesquels g(x) est notablement inférieur à f (x) dans l'ordre des valeurs décroissantes de g(x) et les pixels pour lesquels l'image g(x) est notablement supérieure à l'image f (x) dans l'ordre des valeurs croissantes de g(x) . On peut également utiliser pour gérer l'ordre de traitement des pixels des files d'attente hiérarchiques.
Comme précédemment, si on tient a ce que le traitement des zones sorαores et des zones claires soit symétrique, on applique ces transformations récursives, non pas à l'image initiale, mais à l'image obtenue après une passe de traitement parallèle.
Les deux transformations de voisinage α et β déjà A mentionnées doivent vérifier, pour tout pixel x, αg(x)>g(x) et
A A βg(x)≤g(x) . On peut en particulier adopter :
1. αg=δg et βg=eg, où δ et e représentent respectivement la dilatation (la valeur du point central est remplacée par
la valeur maximale dans son voisinage) et l'érosion (la valeur du point central est remplacée par la valeur minimale dans son voisinage) élémentaires. Dans ce cas, pour ηf = ζf = f,dans toute particule
A _A connexe sur laquelle g<f l'image g est plate. De même,
A, dans toute particule connexe sur laquelle g>f 1 ' image g est plate. De plus, toute zone plate pour l'image f sera
A encore plate pour l'image g. Par contre si pour deux
A pixels voisins a et b l'image g présente la transition
Λ A g(a)>g(b), alors l'image f présente une transition plus forte qui encadre la transition de g: f (a)>g(a)>g(b)>f (b) Ceci signifie que les contours de tous les objets présents dans g(x) sont localisés avec la même précision que dans l'image de référence f (x) .
2. αg=gV(δg-λ) et βg=gΛ(eg+λ), où λ est un seuil de valeur constante.
Pour ce nivellement, un plateau de l'image g est une zone dans laquelle il existe entre tout couple de pixels
(x,y) un chemin (x=a0, al r a2, .... , an=y) tel que les pixels ai et al1. soient voisins sur la trame et que la valeur absolue de la différence des niveaux radiomé- triques |g (a1-:) -g (a | soit inférieure au seuil λ.
3. α est une dilatation quelconque vérifiant αg(x)>g(x) et β est une érosion quelconque vérifiant βg(x)__g(x) .
4. αg=gVδγg et βg=gΛeφg, où Y est une ouverture et φ une fermeture .
5. αg=gV(δγg-λ) et βg=gΛ (eφg+λ) , où y est une ouverture et φ une fermeture et où λ est une valeur constante.
Le procédé est applicable à une image en couleurs pour laquelle on affecte plusieurs valeurs radiométriques à chaque pixel. On peut obtenir un nivellement d'une image en couleurs en construisant indépendamment un nivellement de chacune de ses composantes. Le procédé est applicable quel que soit le mode de représentation adopté, notamment RGB, YUV et HLS (couleur, niveau et saturation) .
L'invention sera mieux comprise à la lecture de la description qui suit de modes particuliers d'exécution, donnés à titre d'exemples. La description se réfère aux dessins qui l'accompagnent, dans lesquels :
- la figure 1 montre un exemple d'application du procédé de nivellement à une image f limitée à une ligne ;
- la figure 2 montre les étapes successives du nivelle- ment et de segmentation d'une image bidimensionnelle fixe ;
- la figure 3 montre schématiquement les étapes de segmentation d'une image appartenant à une séquence ;
- les figures 4 et 5 montrent des exemples de choix de segmentation avantageusement utilisables après nivellement ; - la figure 6 est un schéma montrant un nivellement effectué sur une image à une seule dimension dans le cas d'un algorithme de nivellement particulièrement simple, le résultat final étant ainsi représenté ;
- les figures 7A et 7B montrent deux étapes d'un
nivellement vectoriel pseudo-scalaire.
Les étapes montrées en figure 1 illustrent 1 ' algorithme de construction pas a pas d'un nivellement simple caracté¬
- ηf=f et ζf≈f αg=δg et βg=eg, où δ et e représentent respectivement la dilatation (la valeur du point central est remplacée par la valeur maximale dans son voisinage) et l'érosion (la valeur du point central est remplacée par la valeur minimale dans son voisinage) élémentaires.
La ligne A montre une ligne d'une image de référence f, en traits gras, et une image marqueur, en traits fins avec sous-graphe hachuré. A chaque pixel (a, b, c.u) est associée une valeur radiométrique allant de 1 à 8. Par exemple la valeur radiométrique de l'image f au pixel d est égale a 6 et celle de l'image g au même pixel d est égale à 4. L'image marqueur g va être transformée en g, nivellement de f.
Dans une première phase, on construit, a partir de l'image g :
- eg, image érodée de g, et
- δg, image dilatée de g.
La valeur radiométrique de l'érode eg (respectivement du dilate δg) en chaque pixel x est égale a la valeur minimale
(respectivement maximale) des valeurs prises par g au pixel x ou en l'un des pixels voisins de x sur la matrice des pixels. Par exemple au pixel k, les deux voisins de k sont les pixels j et 1 ; g prend la valeur 6 aux pixels et k et la valeur 4 au pixel 1. La valeur prise par eg au pixel k
sera la plus petite des 3 valeurs, soit 4 (ligne B) .
Le dilaté δg par contre prendra la plus grande des trois valeurs, soit 6 (ligne C) .
On effectue une première itération de la transformation de f en nivellement g de f. En chaque pixel x, on compare les valeurs radiométriques de f et de g.
- Si g(x)<f(x), on choisit entre les deux valeurs de δg(x) et f (x) celle qui est la plus petite : δg(x)Λf(x) ; - de manière symétrique, si g(x)>f(x), on choisit entre les deux valeurs de eg(x) et f (x) celle qui est la plus grande :eg(x) Vf (x) . Par exemple : g(e)<f(e) : on choisit pour nouvelle valeur de g(e) la plus petite des deux valeurs de δg(e) = 4 et f(e)=β, soit 4. g(i)>f(i) : on choisit pour nouvelle valeur de g(i) la plus grande des deux valeurs de eg(i)=4 et f(i)=2, soit 4. g(g)>f(g) : on choisit pour nouvelle valeur de g (g) la plus grande des deux valeurs de eg(g)=2 et f(g)=3, soit 3. On obtient ainsi la représentation donnée par la ligne D.
A partir de là, on effectue de nouvelles passes pour arriver à la convergence. En appliquant les passes suivantes au résultat de la première passe parallèle, l'ordre et le choix d'un mode parallèle ou séquentiel n'a plus d'influence sur le résultat final.
La ligne E montre le nivellement g de f, obtenu à convergence.
Le résultat dépend à la fois de f et de g . Il présente des zones plates beaucoup plus importantes que f. Cependant les transitions de g suivent fidèlement celles de f.
APPLICATION A LA SEGMENTATION
La segmentation d'une image f consiste à isoler certains objets représentés dans l'image f, en les contourant ou bien en affectant à tous leurs pixels une même valeur d'étiquette . Pour ceci, de nombreux algorithmes de segmentation ont ete publies.
Suivant un des aspects de l'invention, on substitue un nivellement a l'image d'origine avant segmentation, quel que soit l'algorithme de segmentation choisi. La double proprié- te des nivellements (simplifier l'image en générant des plateaux tout en préservant les contours des objets restants) rend cette substitution particulièrement intéressante : il sera plue facile à l'algorithme de segmentation choisi d'extraire les contours des zones d'intérêt dans l'image nivelée que dans l'image initiale.
Les figures 2 et 3 illustrent deux situations typiques de segmentation : la segmentation d'objets dans une image fixe, le suivi d'objets dans une séquence. Dans les deux cas, des valeurs de gris différentes sont schématisées par des modes de hachures différents, pour permettre la reproduction des figures .
Cas d'une image fixe
Les figures 2A-2C illustrent le problème de segmen- tation.
On veut trouver le contour de la tortue avec un algorithme de segmentation donne.
Une image simplifiée de l'image de départ a l'aide d'un filtre alterne séquentiel donne la figure 2B ou les détails ont ete gommes, mais les contours de la tortue n'ont pas ete préserves .
En utilisant cette image simplifiée comme image marqueur pour un nivellement, on obtient l'image de la figure 2C.
Cette image résultante comporte beaucoup moins de détails que l'image de départ, mais ses contours sont parfaitement idèles .
Cas d'une séquence
Cette situation se rencontre fréquemment lorsqu'on veut segmenter une séquence video, dans laquelle on veut suivre une zone ou un objet d'intérêt. Dans les illustrations suivantes, les lignes A et B de la figure 3 représentent la tortue aux t_emps t et t+1, en régime permanent : on a segmente l'image au temps t et obtenu les contours represen- tes a la ligne C. Pour simplifier la segmentation dans l'image t+1, on construit un nivellement de cette image a partir d'une image marqueur g dérivée du masque de segmentation de l'image au temps t.
S'il s'agit de segmenter des objets sombres sur fond clair, par exemple, on peut prendre le masque de segmentation lui-même dans lequel on a mis une valeur sombre représentative des objets a segmenter. C'est ce qui est représente ici. Pour traiter des objets clairs sur fond sombre, on reprend le même traitement après avoir inverse l'échelle des niveaux de gris. L'image de la ligne C a servi
d'image marqueur pour produire un nivellement de l'image au temps t+1, représentée à la ligne B. Le résultat du nivelle¬ ment se trouve à la ligne D.
En présence d'un fond présentant des zones sombres et claires, on peut prendre comme image marqueur g l'image initiale vue à l'intérieur d'une bande de largeur donnée s 'étendant de part et d'autre des contours du masque de segmentation de l'image t et suffisamment large pour contenir les contours qu'on cherche à détecter dans l'image au temps t+1. Le reste de l'image marqueur prend une valeur constante. Le nivellement appliqué a ce marqueur va présenter les contours intéressants dans l'image t+1 vec un grand contraste, et ceux qui en sont plus éloignés vont apparaître peu contrastés.
Exemples de chaîne de segmentation avantageuse
Apres avoir remplacé l'image f qu'on cherche a segmenter par un de ses nivellements g, on peut employer n'importe quel algorithme de segmentation. Mais on peut également tirer parti de la présence de plateaux étendus dans l'image nivelée pour aider la segmentation. Les deux chaînes de segmentation suivantes sont des exemples de telles chaînes. Segmentation par sélection de zones plates et ligne de partage des eaux (figure 4) La ligne A montre le résultat d'un nivellement d'une image (non représentée) à segmenter. La ligne B montre le résultat de la recherche de toutes les zones plates . La ligne C montre la sélection des trois zones plates de surface supérieure à 2 pixels . Les zones plates non sélec- tionnées font alors partie d'une zone d'indétermination, à
l'intérieur αe laquelle on calcule une image gradient a partir de l'image initiale (ligne D) . En utilisant les trois zones plates sélectionnées comme marqueurs, on construit la ligne de partage des eaux associée sur l'image gradient 1 ; on étend ainsi les trois marqueurs pour obtenir la partition finale, constituant le résultat de la segmentation (ligne E) .
Segmentation par détection de zones plates et fusion de région (figure 5) Une deuxième manière de segmenter, complémentaire de la précédente, prend également les plateaux d'un nivellement comme point de départ de la segmentation. La ligne A représente l'image de départ. On détecte tous les plateaux dans cette image. Chaque ligne frontière y a une hauteur égale au contraste moyen entre les plateaux situés de part et d'autre de cette frontière. Ainsi le plateau constitué des pixels
(a,b,c,d) et le plateau constitué par le pixel (e) sont sépares par up_e frontière de hauteur 1. Au-dessus de chaque plateau est indique un chiffre, exprimant l'importance du plateau. Pour cela on peut choisir par exemple la surface du plateau, ou cien une mesure du contraste le long de ses frontières ou bien encore une combinaison de ces deux mesures. C'est ce qui est fait ici, où est affecté à chaque plateau le produit de la surface du plateau par la valeur du plus faible contraste mesuré le long de ses frontières : par exemple le plateau (k,l) a une frontière avec le plateau (j) de hauteur 1 et une frontière avec le plateau (m) de hauteur 2 alors que sa surface est de 2 pixels ; on lui affecte une mesure égale a 2, égale au produit de la surface 2 par la mesure de contraste 1.
La segmentation se fera par fusions successives entre plateaux adjacents. Le plateau de mesure la plus faible est absorbé à chaque étape par un de ses plateaux voisins ; après absorption, on recalcule la mesure du plateau nouvel- lement formé et on procède à une nouvelle fusion. Les étapes de fusion successives sont illustrées sur les lignes C à H. Par exemple le résultat de la fusion 4 a produit 4 régions (ligne F) . Ces régions de plus faible valeur ont une valeur de 4 ; une de ces régions va être absorbée par l'autre région de valeur 4 pour former une nouvelle région de surface 8 bordée par deux frontières de contraste 2 ; la nouvelle région a ainsi une valuation de 8x2=16. Ainsi chaque étape de fusion réduit-elle le nombre de régions de 1.
Extraction des zones plates à partir d'un nivellement
Dans les deux modes de segmentation ci-dessus, le point de départ a été une détection de zones homogènes sur une image de nivellements . Pour détecter ces zones homogènes, on peut notamment utiliser la méthode de détection suivante. On considère que deux pixels p et q appartiennent à la même région homogène d'une image g s'il existe entre les pixels p et q un chemin continu, constitué de pixels adjacents sur la matrice de pixels, tel que, entre tout couple (a,b) de points voisins sur ce chemin, un critère d'homogénéité soit vérifié. Ce critère d'homogénéité peut s'exprimer sous forme d'une relation binaire symétrique. Une liste non limitative de telles relations binaires symétriques est la suivante :
g ( a ) =g (b )
|g(a)-g(b) <μ où ,μ est une valeur constante prédétermi¬ née ψg(a)=g(a) et ψg(b)=g(b) où ψ est une transformation de voisinage. g(a)<φg(b) et g(b)<φg(a) où φ est une fermeture morphologique γg(a)≤g(b) et γg(b)<g(a) où y est une ouverture morphologique Deux critères d'homogénéité peuvent être réunis pour produire un nouveau critère au moyen de conjonctions logiques telles que "et", "ou", "ou exclusif".
Construction d'une image gradient Dans les deux schémas de segmentation proposés on a construit une image gradient. Pour ce faire, on peut utiliser des techniques connues. Il peut être cependant avantageux d'utiliser les deux opérateurs α et β qui ont été utilisés pour construire le nivellement ayant produit l'image αe départ de la segmentation. On construira l'image gradient par soustraction de l'image β de l'image α : α-β.
APPLICATION AU CODAGE
Pour faciliter la transmission ou le stockage d'images et de séquences d'images, il est souvent indispensable de les comprimer en les soumettant à des algorithmes de compression qui sont des algorithmes avec pertes. L'image décodée n'est pas identique à l'image originale ; elle peut même être plus ou moins fortement dégradée selon les taux de compression qui ont été atteints. Le défaut le plus visible
s'appelle effet de blocs : on voit apparaître dans l'image des discontinuités le long des blocs de codage. A débit constant, les défauts sont d'autant plus visibles que 1 ' image de départ était plus riche en détails . Plutôt que de voir se dégrader l'image de manière déplaisante et sans contrôle, l'invention propose de remplacer l'image à encoder par une version simplifiée constituée par un nivellement ou on a "gommé" un certain nombre de détails de manière volontaire tout en préservant le plus possible la qualité perceptuelle αe l'image. Le nivellement réduit le débit nécessaire pour coder l'image mais en même temps préserve les contours αes structures restantes et une bonne qualité visuelle des images .
En utilisant les techniques de segmentation exposées dans la section précédente, on peut construire des images composites dans lesquelles chaque région de la segmentation est remplacée par un nivellement différent : les nivellements les plus forts étant appliques aux zones de faible intérêt, les zones de fort intérêt (telles que les visages) étant remplacées par des nivellements très proches de l'image originale, voire par l'image originale elle-même. On a vu comment produire des familles de nivellements allant du plus tenu au plus grossier. On peut se servir de cette propriété pour réguler le débit d'un codeur de séquences d'images. On choisira pour chaque image le nivellement a l'entrée du codeur produisant le nombre de bits le plus proche de l'cojectif qu'on s'était fixé.
Les codeurs de séquences, notamment MPEG, travaillent en deux modes : le mode mtra et le mode mter. Dans le mode mtra, c'est l'image de départ qui est encodée . Dans le mode
inter, on essaie de prédire l'image courante à partir de la connaissance des images précédentes et on ne codera que l'erreur de prédiction. Dans ce cas, on peut également appliquer des nivellements aux erreurs de prédiction.
CAS DU NIVELLEMENT UNIOUE PSEUDO-SCALAIRE D' IMAGES EN COULEURS
Comme indiqué plus haut, on peut effectuer un nivellement unique e remplaçant l'image en couleurs par un produit scalaire avec un vecteur de référence. On donnera maintenant un exemple d' application du nivellement vectoriel pseudoscalaire à des images en couleurs. L'image vectorielle de référence est une image constante, dont la valeur en tout point est un vecteur constant v. Le procédé est exécuté en quatre étapes, avec les notations des figures 7A et 7B.
Etape 1 : Projection
On prend "le produit scalaire entre l'image vectorielle f de départ et le vecteur fixe v : f = f.v
Etape 2 : Génération de marqueur
A
L' image marqueur g peut être obtenue, soit par produit scalaire entre une image marqueur vectorielle avec l' image vectorielle de référence v, ou bien on peut la construire par un des procédés classiqueô à partir de l'image scalaire
A _ -P_ .
Etape 3 : Nivellement scalaire
Λ A
Les images f et g étant toutes deux des images scalai- res, en peut leur appliquer un nivellement scalaire ordi-
A -* naire : g' = Nivellement (f,g) .
Etape 4 : Projection inverse dans l'espace vectoriel de départ L' image vectorielle résultante g' sera obtenue en
A effectuant la projection inverse de l'image scalaire g' dans l'espace vectoriel de départ. Ceci peut se faire de plusieurs manières. Celle qui va être décrite permet d'obtenir un résultat très semblable quel que soit le choix de l'espace de couleur.
Si représente le vecteur dont l'origine représente la teinte noire et l'extrémité la teinte blanche, on effectue la projection inverse suivante :
A —£_ _^. __»
• si g' > f. alors l'extrémité de g' est prise sur f-w
-*, →* Λ de manière que g.v = g' (figure 7A) ;
• si g' < f, alors l'extrémité de g' est prise sur f de manière à ce que g' .v = g' (figure 7B) .