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