Light Speed Labelling : un nouvel algorithme d`¶etiquetage en
Transcription
Light Speed Labelling : un nouvel algorithme d`¶etiquetage en
Light Speed Labelling : un nouvel algorithme d'¶ etiquetage en composantes connexes. Lionel Lacassagne1;2 , Maurice Milgram1, Jean Devars1 1Laboratoire des Instruments et Systµ emes Universit¶e Pierre et Marie Curie BC 252 4 place Jussieu, 75252 Paris - FRANCE [email protected] [email protected] 2 IMASYS Le quadral 23 bis rue E. Nieuport 92150 Suresnes - FRANCE [email protected] I. Etiquetage classique, ¶ etiquetage bas¶ e sur le codage RLC C B 2 X B A 2 X D 4 1 A 1 II. 3 R¶ esum¶ e - Cet article pr¶esente un nouvel algorithme d'¶ etiquetage en composantes connexe. son temps d'ex¶ ecution est quasi ind¶ ependant des donn¶ ees pour une taille d'image donn¶ ee. De plus sa structure plus adapt¶ee aux architectures complexes des processeurs et des DSP d'aujourd'hui, rend la version 8-connexe aussi rapide que la version 4-connexe. En¯n cet algorithme est optimum en ce qui concerne le nombre d'¶ etiquettes cr¶ ees et il peut ^ etre facilement et e±cacement parall¶ elis¶e. Mots cl¶ es - ad¶ equation algorithme - architecture, nouvel ¶ etiquetage connexe, RISC, DSP, temps r¶eel. Figure 1 { ¶etiquetage 4-connexe et 8-connexe Les algorithmes standards utilisent soit l'approche pixel (Fig 1: comparaison de l'¶etiquette courante avec les ¶etiquettes du voisinages)s) soit une approche bas¶e sur le codage RLC (Run Length Coding, recherche de segments adjacents pour d¶eterminer la connectivit¶e des segments). Ces deux approches utilisent un grand nombre de tests, ce qui se traduit au niveau du processeur par un blocage du pipeline (et donc d'une perte de temps) car, bien s^ u r, le r¶esultat d'un test est impr¶edictible. En¯n et ce n'est pas le moindre de ses d¶efaut, l'approche pixel produit beaucoup d'¶etiquettes inutiles. Introduction L'¶etiquetage en composantes connexes est la base de presque toutes cha^ines algorithmiques en traitement d'image dµes qu' il s'agit d'analyser des r¶egions dans une scµene. Plus g¶en¶eralement il est pr¶esent lorsqu'il faut regrouper des pixels connexes. On le retrouve donc aussi pour ¶etiqueter des segments[3], en d¶etection de contours, ou pour trouver les caractµeres en OCR. Si Rosenfeld [4] a r¶evolutionn¶e le domaine en proposant un algorithme ne comprenant que 2 passes sur l'image, nous proposons un algorithme en 3 passes, qui compte tenu de l'architecture des processeurs RISC actuels[1] ainsi que des DSP, est plus rapide que la version \classique" en 2 passes. III. L'architecture des processeurs actuels Les processeurs actuels RISC et DSP int¶egrent des m¶ecanismes de plus en plus complexes pour acc¶el¶erer l'ex¶ecution du code et le traitement des donn¶ees : architectures superscalaires, su1 perpipelines, VLIW, pr¶ediction de branchement, ex¶ecution dans le d¶esordre, m¶emoires caches [5]. Les algorithmes classiques d'¶etiquetage ne sont plus du tout adapt¶es µa l'architecture des processeurs. Leur structure les emp^eche d'^etre optimis¶es statiquement par les compilateurs et dynamiquement par les processeurs, et ce pour deux raisons principales : L i-1 Li Figure 2 { Lignes Li, Li¡1 ² adressage dispers¶e des pixels menant µa des d¶efauts de lecture de la m¶emoire cache. ER ² pr¶esence de tests emp¶echant le pipeline logiciel et la vectorisation des calculs. Une pr¶ediction de branchement erron¶ee est d'autant plus p¶enalisante que le pipeline comporte d'¶etages, l'erreur ¶etant d¶etect¶ee plus tardivement. j 0 1 2 3 4 5 6 7 8 9 i 1 1 1 2 3 3 4 4 5 6 0 0 1 1 1 1 1 1 1 1 i-1 ER Figure 3 { table E R un num¶ero impair) et de chaque non-segment, c'est µa dire le fond (avec un num¶ero pair). Ce calcul peut ^etre fait rapidement et sans aucun test, car l'¶etiquette e r est en fait un compteur de transition (front montant, front descendant) et que ces transitions sont facilement d¶etect¶ees par un ou exclusif (XOR). Une optimisation architecturale ¶etant impossible, nous avons optimis¶e l'algorithme lui m^eme, en tenant compte et en tirant parti de l'architecture des processeurs (instructions pipelinables/vectorisables, accµes r¶egulier aux caches). IV. 0 1 2 3 4 5 6 7 8 9 j L'algorithme LSL L'id¶ee principale de l'algorithme LSL (Light Speed Labelling) est de remplacer tous ces tests (comparaison d'¶etiquette, tri par fusion pour les intersections de segments) par un ensemble d'instructions plus simples et surtout sans test. La vitesse du LSL est bas¶ee sur les 3 points suivants : RLC i-1 RLC i 0 2 4 5 8 8 2 9 Figure 4 { table RLC La table RLCi contient les index de d¶ebut et de ¯n de chaque segment [a::b]. Le j ¡ iµeme segment d'¶etiquette relative er = 2j + 1 aura comme bornes a = RLC i[2j], b = RLCi [2j + 1]. Le segment courant aura une intersection avec les segments num¶erot¶es er 0 = ERi¡ 1[a] er1 = E Ri¡1 [b]. A¯n de ne pas pointer vers le fond, les ¶etiquettes er0 / er1 seront ¶eventuellement ajust¶ees pour pointer vers le pr¶ec¶edent segment, ou le suivant. Pour r¶ealiser un ¶etiquetage 8-connexe, ce qui est ¶equivalent µa tester les ¶etiquettes en diagonales (NO, NE), il su±t d'incr¶ementer a de 1 et de d¶ecr¶ementer b de 1, juste avant de regarder dans la LUT E Ri¡1 . Cela rend la version 8-connexe aussi rapide que la version 4-connexe. ² utilisation intensive du co dage RLC ² introduction d'un ¶etiquetage \relatif" et \absolu" permettant un accµes direct (LUT) µa l'¶etiquette associ¶ee aux segments intersect¶es ² une impl¶ementation cyclique de la relation d'¶equivalence entre ¶etiquettes, plut^o t que l'habituelle repr¶esentation µa \plat", par tableau. Voici les di®¶erentes ¶etapes de l'algorithme. Les explications seront illustr¶ees par l'exemple suivant (Fig 2). 1. Calcul des tables E Ri et RLCi La table ERi contient, pour chaque ligne Li, l'¶etiquette relative er de chaque segment (objet avec 2. 2 Calcul de la table of ERAi La table ERAi associe les ¶etiquettes relatives 4. Calcul de la ligne E Ai Les ¶etiquettes absolues de la ligne Li sont simplement obtenues par la lecture de la LUT E RAi: : E Ai = ERAi (E Ri) étiquettes absolues étiquettes relatives 1 1 0 Li 2 3 2 3 5 4 1 1 1 1 1 L i-1 5. Etiquetage ¯nal Lorsque l'image a ¶et¶e entiµerement balay¶ee, la r¶esolution complµete des classes d'¶equivalences a lieu, les ¶etiquettes absolues sont renum¶erot¶ees (a¯n d'avoir une num¶erotation continue). E Q est donc \r¶eduite" pour donner A. L'image est alors entiµerement r¶e-¶etiquet¶ee : E Ai = A(EAi ) Figure 5 { ¶etiquettes relatives et absolues 1 1 2 3 2 1+2+3 A. 3 Figure 6 { cycle d'¶equivalence aux ¶etiquettes absolues de chaque ligne. La table est calcul¶ee durant la propagation vers le bas des ¶etiquettes. L'¶etiquettes relative est associ¶ee µa l'¶etiquette absolue du premier segment intersect¶e : e½r = 1 ½ a = RLCi [0] = 2 ) a = 1 er 0 = 1 b = RLCi[1] = 9 ) b = 9 er 1 = 6 ) er1 = 5 ea = ERAi¡1 (e r0 ) = 1 , ERAi(er ) = ea 3. Calcul de la table cyclique EQ R¶esoudre les problµemes d'¶equivalence est complexe (a jouter un item µa une classe, ou plus g¶en¶eralement, fusionner deux classes d'¶equivalence, voir calculer la fermeture transitive d'un graphe qui est un problµeme NP-complet). L'impl¶ementation habituelle des classes d'¶equivalence sous forme de tableau, donc \µa plat" a ¶et¶e remplac¶ee par une impl¶ementation sous forme de graphe cyclique. Durant la fusion, ea ,doit ^etre associ¶e avec les ¶etiquettes absolues e ak , elles m^eme associ¶ees aux ¶etiquettes relatives : er k 2 [er 0 + 2::er1 ] , e ak = ERAi¡1 [erk ] f usion(ea ; eak ) En reprenant l'exemple de la section pr¶ec¶edente : er k 2 [er 0 + 2::er1 ] er k 2 f3; 5g , e ak 2 f2; 3g La r¶esolution des ¶equivalence entre ces trois ¶etiquettes sera trait¶ee comme sch¶ematis¶e par la ¯gure 6. Analyse des performances de l'algorithme LSL Nous avons compar¶e notre algorithme µa celui utilisant l'approche pixel. La version \classique" de l'algorithme pixel utilisant une repr¶esentation µa plat des classes d'¶equivalences, nous l'avons modi¯¶e en lui adjoingnant notre repr¶esentation \cyclique". Ces algorithmes utilisent des ¶etiquettes cod¶ees sur 16 bits car l'approche pixel d¶epasse trµes souvent la limitations µa 256 ¶etiquettes de la version 8 bits. Ces algorithmes ont ¶et¶e impl¶ement¶es en 4 et 8connexe. Nous avons d¶ecider de r¶ealiser les tests sur quatre types d'images : petites/grandes r¶egions, peu/beaucoup de caractµeres. Nous donnons les r¶esultats mesur¶es en millisecondes sur un Pentium II 400 MHz, pour des images de taille 512 £ 512. boulons logo casse 72 casse 28 pixel pixel+cycle LSL 16bit LSL 8bit gain LSL/pixel 3 boulons 4C 8C 32 64 20 24 21 21 12 12 2.7 5.3 logo 4C 8C 26 50 68 42 20 20 11 11 2.4 3.7 casse 72 casse 28 4C 8C 4C 8C pixel 20 30 20 30 pixel+cycle 24 20 19 23 LSL 16bit 20 20 23 23 LSL 8bit 12 12 gain LSL/pixel 1.7 2.5 0.9 1.4 Notre algorithme est de 2.4 µa 5.3 fois plus rapide pour les images de type \blob". M^eme pour les images d' OCR, LSL est plus rapide. Ces r¶esultats montrent qu'un algorithme faisant trois passes sur l'image peut ^etre plus rapide que les 2 passes habituelles depuis 1960, et que plus que tout, ce n'est pas le nombre d'accµes pixel qui compte, mais la maniµere de les faire et l'alimentation du processeur. V. niveau (et pas les fronts entre niveau bas et niveau haut). La transition t est obtenu par t = (x i XOR xi¡1 )AN D 1. Le niveau du segment est calcul¶e, sans faire de test, avec un ou inclusif (OR) entre le niveau de tous les pixels du segment. La propagation de ces niveaux ne se faisant qu'µa la ¯n, lors de la r¶esolution des ¶equivalences, il n'in°ue guµere sur les temps de calculs. VI. Conclusion Dans cet article, nous avons propos¶e un algorithme trµes rapide d'¶etiquetage en composantes connexes. Cet algorithme en utilisant un ¶etiquetage relatif µa chaque ligne bas¶e sur le codage RLC, et par ailleurs, une repr¶esentation cyclique des classes d'¶equivalences permet d'obtenir un fonctionnement plus r¶egulier du processeur amenant un gain de performances important. Cet algorithme, dont le temps de traitement sur Pentium II 400 est largement inf¶erieur aux 40 ms de la cadence vid¶eo, nous permet de compl¶eter notre chaine de d¶etection de contours en temps r¶eel sur RISC et DSP[2] pour des images 512 £ 512. Une seconde application : le seuillage par hyst¶ er¶ e sis Si l'utilisation premiµere de cet algorithme est l'¶etiquetage de r¶egion, il peut aussi ^etre utilis¶e pour r¶ealiser un seuillage par hyst¶er¶esis. Pour cela, il suf¯t, aprµes un seuillage bi-niveau (seuil bas - seuil haut) de d¶eterminer le niveau (bas ou haut) de chaque segment. Soit l'exemple de la ¯gure 7: References [1] J.L. Hennessy D.A. Patterson \Architecture des ordinateurs" traduit par D. Etiemble, Thomson Publishing [2] L. Lacassagne, F. Lohier, P. Garda \Real time execution of optimal edge detectors on RISC and DSP processors", ICASSP '98 0 2 3 3 2 0 2 4 5 3 X [3] J.F. Quesne, D. Demigny, J. Devars J.P. Cocquerez \Architecture temps r¶eel pour la d¶etection des contours et l'¶etiquetage des r¶egions", 8µeme Congrµes RFIA, pp65-80, Lyon (1991) Figure 7 { pro¯l d'une ligne en niveaux de gris En seuillant aux niveaux 2 et 4, avec comme codes de niveau 1 et 3, nous obtenons (¯g 8) : Les co des 1 et 3 ont ¶et¶e choisis a¯n de ne d¶etecter que les fronts entre le niveau z¶ero et un autre [4] A. Rosenfeld, J.L. Platz \Sequential operator in digital picture processing", Journal of ACM vol 13 n ± 4 471-494 (1966) [5] A. Seznec, T. Lafage \Evolution des gammes de processeurs MIPS, DEC Alpha, Power PC, SPARC, x86 et PA-RISC", Publication interne Irisa, n ± 1110, (1997) niveau haut niveau bas niveau zéro niveau 0 1 1 1 1 0 0 3 3 1 Figure 8 { seuillage bi-niveaux 4