• Aucun résultat trouvé

Extraction des composantes connexes en 3D

3.2 Segmentation par classication

3.2.4 Extraction des composantes connexes en 3D

Pour naliser le processus de segmentation du nuage de points à partir de la classica- tion (manuelle ou automatique), il faut regrouper les points du nuage considérés comme "changés" en fonction de leur proximité relative. Ceci peut s'eectuer par une étape d'ex- traction des "composantes connexes". C'est une technique courante en traitement d'image qui consiste à déterminer des groupes de pixels de valeur égale connectés les uns aux autres (voir gure 3.12). Dans le cas des images, il existe deux manières de considérer que des pixels se touchent : s'ils partagent un bord (auquel cas 4 voisins sont éligibles, on parle de 4-connexité) ou alors si les pixels se touchent même ponctuellement au niveau de leurs coins (ainsi les 8 voisins du pixel sont éligibles et on parle donc de 8-connexité).

Fig. 3.12  Composantes connexes en 8-connexité, détourées sur une image noir et blanc. En 4-connexité, les 4 barres de la forme "0" seraient des composantes connexes indépendantes. Le "point" du point d'interrogation est une composante connexe à lui

tout seul, et ce quelle que soit la connexité.

Dans le cas des nuages de points, il semble plus dicile de considérer que des points se touchent. On peut par contre projeter un nuage dans une grille 3D binaire, en considérant que chaque case de la grille aura la valeur "1" si elle contient au moins un point, et "0" sinon. Cette grille a une structure régulière équivalente à celle des images 2D et elle correspond d'une certaine manière à une approximation de la surface représentée par le nuage (avec une précision toute relative, certes).

On a adapté un algorithme classique d'extraction de composantes connexes 2D au cas des nuages en 3D (en fait, au cas des grilles en 3D si on ignore l'étape de projection des points dans la grille). On considère la grille 3D comme un empilement de tranches 2D. On applique à chaque tranche un algorithme d'extraction des composantes connexes classique, puis on regroupe les diérentes composantes extraites selon la dimension d'empilement. Au passage, on étend donc la notion de connexité à la troisième dimension. On peut désormais en considérer 3 types : la 6-connexité (les centres des faces de la cellule), la 18-connexité (les centres des faces et des arêtes) ou enn la 26-connexité (on rajoute les sommets).

3.2. Segmentation par classification 81 Le marquage des composantes connexes en 2D peut être eectué selon deux mé- thodes. Soit en deux passes [Rosenfeld et Pfaltz 1966] : dans une première on marque les points en fonction de leur connexité directe puis dans une seconde on regroupe les ensembles de points qui se touchent grâce à une table d'équivalence. L'autre méthode [Lumia et al. 1983] se fait en une seule passe en utilisant une table d'équivalence plus complexe et locale (mais en consommant plus de mémoire, bien que ceci ne soit plus un problème aujourd'hui). En théorie n'importe quel algorithme de calcul d'extraction de composantes connexes en 2D peut être utilisé.

Voici en détail le principe de l'algorithme en 3D (qui est équivalent à la généralisation de l'algorithme 2D à la 3D proposée dans [Lumia et al. 1983]) :

 on projette le nuage de points dans une grille 3D régulière et binaire. On pourra aussi utiliser directement la structure octree (voir Chapitre 4) si on en dispose, en la considérant à un niveau donné de subdivision N.

 cette grille peut alors être elle-même considérée comme un empilement de tranches 2D carrées et régulières (de taille 2N dans le cas de l'octree).

 chacune de ces tranches peut être considérée comme une image binaire (de 2N× 2N

pixels dans le cas de l'octree). La valeur d'un pixel correspond simplement à la présence ou non de points dans les cellules correspondantes.

 on applique l'algorithme d'extraction des composantes connexes en 2D à chacune des tranches.

 on fusionne ensuite les composantes connexes de deux tranches successives en fonc- tion de leur connexité mutuelle suivant la direction orthogonale au plan des tranches. Ceci est fait très simplement là encore par le biais d'une table d'équivalence.  ce principe de fusion est propagé à travers toute la grille, en commençant par les

deux premières tranches puis en avançant d'une tranche à chaque fois.  on regroupe les points présents dans les cellules connexes en sous-nuages.

L'algorithme nécessite un paramètre qui est le pas de la grille 3D, et qui va dénir la nesse de la segmentation. Plus le pas est grossier, plus les cellules seront agglomérées, et moins l'algorithme appliquera de "découpages" du nuage initial. Inversement, un pas trop petit peut provoquer une sur-segmentation. Idéalement ce paramètre devrait dépendre de la densité locale du nuage (et l'implémentation de la méthode devrait donc supporter l'utilisation d'un pas adaptatif).

Cette technique d'extraction des composantes connexes est illustrée par la gure 3.13. Elle est rapide et ecace, à condition de bien dénir le pas de la grille 3D. Le résul- tat est un ensemble de sous-nuages de points, qui correspondent à des objets (ou à des portions d'objets, voire encore à des agglomérats d'objets) ayant subi des changements. Le but initial de cette phase de segmentation, évoqué en début de chapitre, est ainsi atteint puisque l'on a ecacement réduit le nombre d'entités géométriques à considérer. On pourra alors appliquer à chaque sous-nuage des traitements spéciques (comme des opérations de reconnaissance de forme par exemple).

A B C

Fig. 3.13  Processus complet de segmentation par classication.

A : calcul des écarts entre un nuage de points et un modèle ; B : classication (points "changés" en rouge) ; C : extraction des composantes connexes.

3D, les objets en déplacement ou les surfaces déformées sont par dénition soit connectées à des objets ou des surfaces qui ne bougent pas, soit ne sont connectées à rien (du moins dans le nuage de points). Le ltrage des points "inchangés" isole dans le premier cas l'objet ou la surface "changeante", et l'extraction des composantes connexes peut ainsi dans les deux cas regrouper les points isolés.