Projet ESINSA 5 TRAITEMENT D IMAGE Active Contours without Edges for Vector-Valued Images Par Nicolas Brossier et Cyril Cassisa Page 1 sur 14
Abstract Pour ce projet, nous implémentons un algorithme de contour actif suivant le modèle de Chan-Vese [1]. Cet algorithme est basé sur les techniques d évolution de courbure, de la fonction Mumford-Shah pour la segmentation et des LevelSets. Ce modèle peut détecter des objets qui n ont pas de bordure et qui ne sont pas forcément définis par le gradient. Notre implémentation s adapte sur des images scalaires en niveau de gris (monospectrales), mais aussi sur des images vectorielles (en couleur RGB ou multispectrales). Nous présenterons nos différents résultats avec des exemples où l on détecte des objets que l on ne peut pas détecter par des représentations scalaires et aussi des objets qui ont des pièces manquantes. Page sur 14
Introduction L intérêt principal des contours actifs est de détecter des objets dans une image en utilisant les techniques d évolution de courbes. L idée est de partir d une courbe initiale, généralement un carré ou un cercle, et de la déformer jusqu à obtenir le contour de l objet. L approche classique implique l utilisation du gradient de l image pour localiser les bords. Une fonction «edge-function», qui est positive à l intérieur de la région et nulle sur les contours, permet d arrêter l évolution de la courbe au moment voulu. Toutefois, cette approche n est valable que pour des images qui ne sont pas fortement bruitées. Dans ce cas, on devrait implémenter un modèle pour supprimer le bruit ou améliorer le lissage de la fonction «edge-function». Cela pouvant être très fastidieux, nous utilisons l approche de Chan-Vese qui n utilise pas la fonction «edge-function» pour arrêter l évolution de la courbe, et donc pas le gradient de l image. Cette approche est basée sur les techniques de segmentation de Mumford- Shah, et nous permet d obtenir un modèle qui présente de nombreux avantages. Ce modèle pourra détecter des objets avec ou sans gradient (soit par exemple des objets avec des contours flous ou discontinus), détecter automatiquement l intérieur des contours, et la courbe initiale pourra être placée n importe où dans l image. Nous présenterons dans un premier temps notre modèle puis nous donnerons et expliquerons nos résultats pour des images scalaires en niveau de gris et pour des images vectorielles. Nous traiterons pour le dernier cas les pièces manquantes et les couleurs RGB. Page 3 sur 14
1. Le modèle Nous avons une image sur laquelle nous allons faire évoluer une courbe C. On définit c1 et c la moyenne intérieure et extérieure de la courbe. Prenons un exemple simple : soit I notre image, uo l intensité d un pixel de l image, C la courbe qui va nous permettre de détecter l objet. Notre image contient un objet et un fond. La courbe coupe l image en régions qui ont pour intensité d un pixel les valeurs uo¹ et uo² ; on a alors uo= uo¹ à l intérieur de la courbe et uo= uo² à l extérieur. C est le principe de la fonction Mumford-Shah utilisée pour la segmentation [4][5]. Cela nous donne une énergide de l image en une somme de l énergie extérieure et de l énergie intérieure de la courbe. avec C une courbe variable Nous pouvons dire que l on est sur les bords de l objet quand En effet, si la courbe est à l intérieur de l objet :, 0 F F F F 0 > 1 > 0, 1 F 0, 1 Si elle est à l extérieur : 0 Si elle est sur le bord : 0 Voici une illustration qui permet de mieux comprendre : F On obtient donc une énergie F en fonction de C, c1 et c telle que : Page 4 sur 14
avec, 1, qui sont des paramètres positifs. On prendra pour nos applications =0 ; length(c) est un paramètre de lissage de la courbe. Nous allons alors utiliser la méthode du LevelSet pour faire évoluer la courbe C [] [3]. Cette méthode permet de propager une courbe qui est représentée par lorsque est égal à O. Pour cela, on crée une nouvelle image de même taille que l image I que l on veut traiter. Dans cette image, on a la courbe C pour =0, on est à l intérieur de la courbe pour >0, et à l extérieur pour <0. On initialise alors indépendamment de I. On calcule alors la distance signée [3], c'est-à-dire en partant d une image dont la valeur est -1 à l extérieur et + 1 à l intérieur et on cherche à avoir une valeur qui tend vers 0 au bord, qui croît vers l intérieur et qui décroît vers l extérieur. La distance signée est donnée par l équation suivante : Pour le cas continu : Pour le cas en discret : ϕ avec n dϕ = t. signe( ϕ)(1 ϕ ) dt + 1( i, j) = ϕn ( i, j) + t( signe( ϕ)(1 ϕ ) ϕ = (0.5 [( ϕ( i + 1, j) ϕ( i 1, j)) + ( ϕ( i, j + 1) ϕ( i, j 1)) ] En revenant à l image I, on a alors une nouvelle fonction [] Page 5 sur 14
On définit alors la fonction Heaviside H : La fonction dirac est définie par : On exprime les termes de l énergie F de la manière suivante : et : L expression de l énergie peut alors s écrire de la forme suivante : En gardant fixé, et en minimisant l énergie F selon c1 et c, on peut facilement exprimer ces constantes c1 et c en fonction de. En gardant alors c1 et c fixés, on minimise l énergie selon pour obtenir l équation de Euler-Lagrange pour : Page 6 sur 14
où est la courbure[3] qui permet de garder une courbe lisse. En discret, l équation d évolution est de la forme : avec ϕ n+ ϕ = t[ K ( (, ) µ ) ( (, ) µ ) 1 λ I x y + 1 λ I x y n + ] et λ µ µ 1 λ y + ( I ( x, y) ) + ( I ( x, ) ) ] est la vitesse d évolution. Pour les images multispectrales, le principe reste le même, il suffit juste de considérer ces images comme plusieurs images monospectrales. On obtient alors pour les moyennes : et on obtient pour l évolution de : Cette approche est très intéressante, nous avons pu tester notre modèle pour différentes images et les résultats sont satisfaisants, que ce soit une image monospectrale ou multispectrale. Intéressons-nous aux résultats que nous avons obtenus avec cette méthode et expliquons d où surviennent certains problèmes qui occurrent. Page 7 sur 14
. Les résultats Nous avons eu des résultats positifs avec le modèle de Chan-Vese que nous avons implémenté sur des images monospectrales (niveau de gris) et multi spectrales (couleur et de dimension ). Les figures 3-8 nous montrent l image et l évolution du contour. On démarre dans tous les cas par une courbe simple et fermée (cercle ou rectangle). Le cercle étant la meilleure courbe de départ car elle a une courbature régulière alors que le rectangle présente des angles droits. Nous avons choisi la fonction LevelSet comme positive à l intérieur de la courbe et négative a l extérieur. On aurait pu faire l inverse car la courbe serait quand même attirée par l objet, et il nous suffirait alors d intervertir les coefficients 1 et. De plus, la position initiale de la courbe n a pas d importance. La courbe évoluera vers l objet mais la vitesse d évolution sera différente. 1) Les images monospectrales Dans la figure 3, le modèle détecte le contour de l objet quelque soit l initialisation de la courbe de contour. On peut remarquer que dans le deuxième cas, le contour n est pas aussi lisse que dans le premier. C est à cause du coefficient lissage (1) qui est plus faible et de la courbe de contour qui est un rectangle et qui introduit aux angles des interférences. figure 3 : détection de contour sur une image en niveau de gris simple la première a un cercle comme courbe de contour initiale, la deuxième un rectangle. Page 8 sur 14
Dans la figure 4, nous montrons que notre modèle permet de détecter le contour d un objet fortement bruité et par conséquent le contour d une image qui n est pas bien défini par son gradient. figure 4 : résultat pour une image très bruitée avec les coefficients suivants : m1 = 0.*55*55, l11 = 1, l1 =,l1=1,l= ; Dans la figure 5, nous validons le fait que le modèle permette de détecter des objets n ayant pas de gradient qui ne sont pas détectables par la méthode «edge function». figure 5 : image sans contour et qui n est pas défini par le gradient avec les coefficients : m1 = 1.5*55*55; l1 = 10, l = 1 Le modèle fonctionne assez bien avec les images monospectrales (niveau de gris). Nous le testons alors avec des images multi spectrales (bi- : pour des objets contenant des parties manquantes et tri- : pour des images en couleur (RGB) par exemple). ) Les images multi spectrales Dans la figure 6, nous avons deux images en niveau de gris, sur lesquelles il manque une partie de l information. Pour la première image, il manque une partie du cercle et une partie de l objet du bas et pour la seconde, une partie du triangle. Le modèle trouve bien le contour des objets avec leurs parties manquantes. L information des objets est quand même plus faible. Il faut donc jouer plus sur les coefficients afin de trouver plus rapidement les objets. On peut remarquer que l on a des perturbations qui apparaissent par rapport à la figure 4. Cela est peut être dû à notre fonction Heaviside qui est discontinue. On ne Page 9 sur 14
contrôle donc pas bien le changement d état. Il faudrait donc utiliser la fonction Heaviside utilisée par Chan-Vese [1] : Voici les deux canaux que nous avons, et observons les résultats que l on obtient. Canal 1 Canal Canal 1 Canal résultat figure 6 : Ici, malgré le fait que le bruit soit présent dans les deux canaux, les formes géométriques sont reconstituées, sans pour autant filtrer le bruit. avec les coefficients : m1 = 0.*55*55, l11 = 1, l1 =,l1=1,l= ; Page 10 sur 14
Dans la figure 7, nous essayons de détecter le contour d un avion pour chacune des images indépendantes. On voit nettement que les données contenues dans chaque canal ne sont pas suffisantes : on va ainsi devoir utiliser deux canaux. figure 7 : résultat de la détection de contour pour chacune des images indépendantes. Dans la figure 8, nous traitons le cas de l avion défini sur deux canaux. Les résultats sont largement meilleurs que ceux obtenus précédemment, mais il nous manque quand même une partie de l aileron et les missiles gauches. Page 11 sur 14
Canal 1 Canal Canal 1 Canal Résultat figure 8 : Alors que le premier canal a peu de bruit, le second par contre en présente beaucoup. A partir de ces deux images, nous essayons de détecter l avion le mieux possible Avec les coefficients : m1 = 0.05*55*55, l11 = 10, l1 = 0, l1=5, l=0.5; Page 1 sur 14
Nous traitons maintenant les images en couleur. Dans la figure 9, nous cherchons le contour d une image couleur simple constituée des 3 couleurs primaires. Le modèle trouve assez rapidement les différents objets. figure 9 : détection de contour sur image couleur simple, avec les coefficients : m1 = 0.001*55*55, l1b=10, lb=10, l1v=10, lv=10, l1r=10,lr=10; Dans la figure 10, nous avons une image couleur, avec de faibles différences d intensité des couleurs. De plus, l image est fortement bruitée. Le modèle trouve beaucoup plus difficilement les contours. figure 10 : image couleur bruitée avec les coefficients : m1 = 0.5*55*55; l1b=10, lb=10, l1v=50, lv=50, l1r=30,lr=30; Nos résultats sont relativement satisfaisants pour tout les cas du modèle Chan- Vese. Page 13 sur 14
Conclusion L approche de Chan-Vese donne d excellents résultats, mais pour des images fortement bruitées, la détection de contours s avère toujours plus délicate. Toutefois, nous sommes persuadés que cette approche reste meilleure que l approche qui utilise la fonction «edge-function.» En effet, nous avons montré que nous obtenons des résultats satisfaisants pour des images en niveaux de gris, en couleurs primaires (Bleu, Rouge, Vert), et pour des images avec des pièces manquantes. Nous avons remarqué que pour la détection de contour, il faut jouer sur les coefficients afin d avoir de meilleurs résultats. Les coefficients sont différents suivant les images, le contraste de l objet dans l image et aussi la position de la courbe dans l image lors de son initialisation. Références 1. Tony F. Chan, B. Yezrielev Sandberg, and Luminita A. Vese : Active Contours without Edges for Vector-Valued Images, Department of Mathematics, University of California, 1999.. Tony F. Chan, B. Yezrielev Sandberg, and Luminita A. Vese : Active Contours without Edges, Department of Mathematics, University of California, 1999. 3. Carolyn L. Phillips : The Level-Set Method 4. Andy Tsai, Anthony Yezzi : Curve Evolution Implementation of the Mumford- Shah Functional for Image Segmentation, Denoising, Interpolation, and Magnification, IEEE, 001 5. Zoltan Kato : Mumford-Shah Energy Functional : http://www.dab.uszeged.hu/~kato/variational/ Page 14 sur 14