• Aucun résultat trouvé

Principe d’extraction

Dans le document Indexation multi-vues et recherche d'objets 3D (Page 107-112)

5.2 Extraction multi-vues de silhouettes

5.2.2 Principe d’extraction

Après la définition des différents points de vues, il est nécessaire d’extraire chacune des silhouettes qui leur sont associées. Afin de réaliser cette tâche, nous allons utiliser une application permettant de représenter dans un environnement tridimensionnel l’objet 3D étudié. Celle-ci, en plus d’afficher le maillage de chacun des modèles 3D, doit permettre l’extraction efficace des différentes projections introduites dans la section précédente.

v

c

n

Figure 5.4 – Représentation du centre c de la projection, du point de visée v et du nord

n .

Pour faire face à ces contraintes techniques, nous utilisons la librairie graphique 3D

OpenGL1. Celle-ci permet d’afficher un modèle en trois dimensions à partir d’un fichier

contenant faces et sommets avec des options de couleurs, de textures et de rendus. Dans notre cas plusieurs paramètres sont à régler, à savoir : la caméra pour la projection, l’éclai- rage, la couleur et le rendu de l’objet 3D.

Les librairies graphiques, telles que celle utilisée, offrent une grande flexibilité pour traiter des données tridimensionnelles. En effet, en plus de permettre la représentation virtuelle d’un modèle 3D, elles offrent un jeu d’outil pour interagir avec ces données. Il est, par exemple, possible de définir une caméra permettant de se placer à un endroit précis de la scène, ceci afin de regarder l’objet 3D dans une direction précise. Il s’agit en fait d’une projection des données 3D dans une direction particulière, contrôlée par un ensemble de paramètres.

C’est donc naturellement par cette caméra que nous capturons les différentes sil- houettes qui nous intéressent. Pour cela, après avoir affiché l’objet 3D nous plaçons la caméra fictive grâce aux paramètres de points de vues ci, v et −ni définies dans la section précédente. Il reste cependant à choisir le type de projection de cette caméra. Quelle pro- jection choisir ? Perspective ou orthogonale ? Dans notre cas, cette deuxième projection, malgré une représentation plus “plate” du modèle 3D offre des propriétés intéressantes (voir

figure 5.5). En effet, nous pouvons remarquer qu’avec ce type de projection, le contour obtenu par deux caméras situées à l’opposé l’une de l’autre, par rapport au centre du repère, sera le même à un miroir près (voir figure 5.6). Grâce à cette observation, il nous est possible de réduire de moitié le nombre de vues, dans le cas ou seul le contour ou la silhouette de l’objet 3D nous intéresse. En revanche, dans le cas où nous souhaitons capturer une information de profondeur ou d’orientation des surfaces, cette optimisation ne peut pas s’appliquer. Nous utiliserons donc l’intégralité des vues définies dans la section précédente pour notre descripteur à base de cartes de normales. Finalement, les résolutions que nous avons choisies – pour le capteur de la caméra virtuelle – pour chaque projection sont 64 ∗ 64 et 256 ∗ 256 pixels.

(a) Projection perspective (b) Projection orthogonale

Figure 5.5 – Exemple d’un dromadaire affiché dans un environnement tridimensionnel.

(a) représente un rendu en perspective tandis que(b) représente un rendu orthogonal.

Nous venons de présenter la méthode permettant l’extraction des vues, il est mainte- nant nécessaire d’introduire différents paramètres de rendus permettant de projeter uni- quement les informations qui nous intéressent. Les descripteurs que nous allons proposer et utiliser dans la suite de ce manuscrit sont aux nombres de trois et sont basés sur diffé- rentes informations de forme. Afin de capturer ces informations, nous avons dû paramétrer le rendu différemment pour le dernier que pour les deux premiers. En effet, ces derniers utilisent les informations de contour et de surface de la projection tandis que le troisième utilise une notion de variation de l’orientation du maillage dans l’espace. Les paramètres choisis sont les suivants :

– Descripteurs 1 et 2 : Étant basés sur des informations de surface et de contour ils ne nécessitent donc que d’un rendu monochrome tel que sur la figure5.6. Ce type de projection est obtenu en désactivant l’éclairage de l’objet affiché avec une couleur noire et en donnant une couleur blanche au fond. Ainsi, seule la silhouette de l’objet est visible et toute information de profondeur ou de maillage est effacée (voir figure

(a) Silhouette originale (b) Silhouette capturée sur la caméra symé- trique par rapport au centre du repère

Figure 5.6 – Exemple d’un dromadaire capturé avec une projection orthogonale selon un

premier point de vue(a) et son opposé par rapport au centre du repère(b).

5.7).

– Descripteur 3 : Étant donné qu’il utilise des informations d’orientations de la sur- face du modèle 3D, ce descripteur a besoin d’une information plus riche, à savoir la normale du maillage en chaque point. Pour capturer cette nouvelle donnée, outre la nécessité de calculer la normale en chaque sommet, que nous présenterons dans la partie consacrée à cette description, il est nécessaire d’obtenir une valeur pour chaque point du maillage 3D. Pour optimiser ce calcul, nous utilisons l’interpolation offerte par OpenGL pour le traitement de la couleur des faces. Celle-ci permet de calculer la couleur de chaque point d’une face à partir des couleurs de ses sommets. Afin d’utiliser cette accélération matérielle pour le traitement des normales, nous codons les trois composantes x, y et z des normales dans les composantes couleur r,

g et b de l’objet. Associées à l’interpolation des couleurs on obtient alors un rendu

tel que présenté sur la figure5.8où l’information d’orientation est contenue dans la couleur de chaque pixel. On appellera cette image “carte de normales” dans la suite de ce manuscrit.

Finalement, un traitement graphique a été mis en place afin de limiter le nombre de composantes connexes de chaque silhouette. En effet, l’idéal serait, pour pouvoir traiter l’information de forme du contour, de n’avoir pour chaque projection qu’une et une seule composante. Cependant, nous nous sommes rendu compte que le rendu classique OpenGL avait tendance à générer beaucoup de composantes connexes, surtout pour des silhouettes en basses résolutions (64 ∗ 64 pixels par exemple). Ceci vient du fait que le rendu d’une face n’est fait que si celle-ci occupe une surface suffisante dans un pixel. Afin de réduire cet artefact, nous utilisons une technique de double rendu associant les faces pleines et les

Figure 5.7 – Extraction de trois vues du dromadaire précédent. Les silhouettes extraites

sont alignées avec les axes principaux de l’objet 3D.

(a) Objet original (b) Carte de normales sans inter- polation

(c) Carte de normales avec inter- polation

Figure 5.8 – Rendu d’un détail du dromadaire précédent. (a) représente le rendu clas-

sique, (b) le rendu avec la carte de normales sans interpolation et (c) le rendu final avec

interpolation.

arrêtes. Il s’agit en fait de superposer à l’affichage classique de l’objet 3D (faces pleines) chacune des arrêtes qui le compose. Ainsi, comme on peut le voir sur la figure 5.9, le nombre de composantes connexes est réduit laissant place à un meilleur rendu du modèle

3D. Des résultats plus approfondis sont présentés en annexeCde ce manuscrit.

(a) Projection avec un rendu simple

(b) Projection avec un double rendu

Figure 5.9 –(a) montre le rendu d’un objet 3D en mode faces pleines uniquement, avec

une résolution de 64 ∗ 64 pixels. (b) montre le rendu en mode faces pleines et fil de fer.

On voit sur (b) que le nombre de composantes connexes est réduit grâce à cette nouvelle

technique.

5.2.3 Conclusion

Nous avons présenté dans cette partie les moyens techniques permettant la capture efficace des silhouettes d’un objet 3D et le rendu des informations de forme indispensables à l’indexation. La capture a été guidée par l’alignement effectué au chapitre4, mais aussi par les propriétés intéressantes de répartition des sommets des polyèdres de Platon. Le rendu, quant à lui, s’appuie sur la richesse de la librairie graphique OpenGL. Les jeux de silhouettes 2D que nous obtenons après cette étape d’extraction sont aux nombres de :

– 48∗n pour une requête (voir section4.3.4du chapitre4à cause de l’ordonnancement des axes d’alignements).

– n pour les objets 3D de la base de données.

où n correspond au nombre de vues du polyèdre considéré. Il reste finalement à extraire l’information de forme contenue dans chacune de ces représentations 2D afin de décrire le modèle 3D.

Dans le document Indexation multi-vues et recherche d'objets 3D (Page 107-112)