• Aucun résultat trouvé

Parallélisation de la stéréoscopie par corrélation

2.4 Conclusion

3.1.7 Parallélisation de la stéréoscopie par corrélation

Et le critère ZNCC simplié couleur:

cx,y(d) =  i,j,cI1(x + i, y + j, c)I2(x + d + i, y + j, c)  i,jI2(x + d + i, y + j, c)2 (3.18) L'algorithme optimisé est, lui aussi, sensiblement le même: il sut de faire la convolution sur tous les plans de l'image en même temps.

Résultats

Les résultats comparés de la stéréoscopie par corrélation sur une paire d'images de scène d'extérieur de luminance et sur la même paire en cou- leurs ne montrent que peu de diérences tant au niveau du nombre de faux- appariements que de la précision. En eet, il existe peu de cas dans lesquels la couleur permettra de lever une ambiguïté, principalement à cause de la forte corrélation existant entre les canaux de chrominance et de luminance. La couleur est donc sans doute plus utile pour des tâches d'interprétation d'une scène que pour une tâche de bas-niveau comme la stéréoscopie par corrélation.

Par contre, dans un système utilisant de la lumière structurée ou de l'illumination active pour favoriser la mise en correspondance [KRS96], par exemple en projetant une image de texture aléatoire sur la scène, on peut faire en sorte que les trois canaux R, G, B, de la texture projetée soient tous décorrélés, et l'image en couleur apportera donc beaucoup plus d'information que la même image en luminance seulement (théoriquement, jusqu'à trois fois plus). Dans ce cas précis, donc, la stéréoscopie couleur devrait donner de bien meilleurs résultats que la stéréoscopie N&B. Des expériences sont en cours pour déterminer une((bonne))texture couleur à utiliser pour la stéréoscopie.

3.1.7 Parallélisation de la stéréoscopie par corrélation

La simplicité de la stéréoscopie par corrélation permet de réaliser très simplement sa parallélisation, voire même son implantation matérielle sur

3.1. MÉTHODE CLASSIQUE 53

Fig.3.3: Une paire d'images en couleurs (sur support noir et blanc, seule la luminance est visible).

Fig. 3.4: la carte de disparité (g) et la carte de score (d) obtenues à partir des images de luminance seules avec le critère ZNCC (les meilleurs scores sont en noir).

Fig. 3.5: la carte de disparité (g) et la carte de score (d) obtenues à partir des images en couleurs avec le critère ZNCC (les meilleurs scores sont en noir).

une carte dédiée [Mat93, FHM+93, KR95]. Pour l'implémentation présentée ici, nous avons choisi d'utiliser un système portable, permettant d'exécuter le même code sur une machine massivement parallèle, une machine multi- processeur, ou un groupe de machines de type stations de travail ou PCs en réseau local: PVM5 (Parallel Virtual Machine). La parallélisation de l'algo-

rithme de corrélation a été réalisée selon un modèle maître-esclaves:

 le maître se charge de créer les esclaves, de rectier les images origi- nales par bandes, d'envoyer les bandes d'images rectiées à chacun des esclaves, et de collecter les résultats;

 chaque esclave reste en attente jusqu'à recevoir des bandes d'images à corréler, eectue la corrélation, renvoie au maître la carte de disparité, et se remet en attente.

L'algorithme s'adapte de lui-même à la vitesse de chacune des tâches esclaves: une tâche esclave tournant sur un processeur plus lent aura moins de bandes à traîter, et une tâche rapide pourra traîter plusieurs bandes pendant qu'une tâche lente n'en fait qu'une. De plus, pour être moins dépendant de l'engorgement des bus ou du réseau, tous les passages de messages sont asynchrones.

Pour mieux comprendre ce système, il est nécessaire d'examiner en détail le schéma d'exécution de chacune des tâches, maître et esclaves. Un unique programme sert à la fois pour les tâches maître et esclaves, et lors de l'exé- cution, il sait s'il est maître ou esclave selon la valeur du paramètreinumen

sortie desteCorPVMInit(ŸE.3.1): 0 pour les esclaves et le nombre d'esclaves

pour le maître.

3.1. MÉTHODE CLASSIQUE 55 Le seul paramètre supplémentaire que l'utilisateur doit fournir par rap- port à la corrélation monoprocesseur est en combien de bandes la carte de disparité doît être divisée pour son calcul. Ce nombre est en général au moins égal au nombre d'esclaves, et peut être même beaucoup plus grand, chaque esclave pouvant traîter un nombre indéni de bandes.

Si les bandes de la carte de disparité sont disjointes, il est cependant nécessaire qu'il y ait un recouvrement entre deux bandes d'images rectiées consécutives, de la hauteur de la fenêtre de corrélation. Ces fractions d'images communes seront donc envoyées plusieurs fois à des esclaves diérents. Pour une hauteur de bande très petite, on risque alors d'envoyer un grand nombre de fois chaque ligne des images rectiées, et par là-même d'engorger le réseau ou le bus. Pour éviter ce problème, il sut de prendre une hauteur de bande plus grande (au moins 2 fois) que la hauteur de fenêtre de corrélation.

Tâche maître

Le rôle de la tâche maître est de rectier les images originales, par ban- des horizontales, d'envoyer les bandes d'images rectiées aux esclaves, et de récupérer les bandes de cartes de disparité qu'ils ont déjà calculées. Plutôt que de rectier toute l'image puis de la découper, par souci d'économie de place mémoire et pour pouvoir démarrer plus tôt la corrélation, on rectie progressivement les deux images.

Les étapes d'exécution de la tâche maître (fonction steCorPVMMaster(),

ŸE.3.2) sont:

M.1 calculer les dimensions maximum des bandes d'images à envoyer aux esclaves, en divisant la hauteur des images par le nombrende bandes

souhaitées;

M.2 envoyer ces dimensions et les autres paramètres constants (intervalle de disparité, critère de corrélation...) aux pesclaves;

M.3 si on n'a pas encore envoyénbandes, rectier les images pour la bande

suivante à envoyer;

M.4 si les p esclaves sont occupés ou qu'on n'a plus de bande à envoyer,

attendre une bande de disparité (un esclave au moins est alors libre); M.5 si on n'a pas encore envoyénbandes, envoyer les images rectiées à un

esclave libre;

M.6 si on n'a pas encore reçunbandes, aller en M.3.

Tâches esclaves

Le rôle de chaque tâche esclave est de se mettre en attente de données à corréler (des bandes d'images rectiées), à envoyer le résultat dès qu'il est

prêt, puis à se remettre en attente. Les tâches esclaves sont donc beaucoup plus simples que la tâche maître.

Les étapes de chaque tâche esclave (fonctionsteCorPVMSlave(), ŸE.3.3)

sont:

E.1 attendre la réception des paramètres de corrélation (étape M.2 de la tâche maître);

E.2 attendre la réception d'images (étape M.5) ou un ordre de n; E.3 si c'est un ordre de n, terminer l'exécution de la fonction; E.4 calculer la bande de carte de disparité par corrélation; E.5 envoyer cette bande de disparité;

E.6 aller en E.2.

Exemple d'exécution

Les gures 3.6 et 3.7 montrent respectivement un graphe de tâches et un graphe d'utilisation de la machine virtuelle PVM. Ces graphes ont été obtenus grâce au programme de surveillance xpvm, qui permet de visualiser l'exécution des tâches PVM et les passages de messages.

istar (IPX) ondo (SS20) seoul (Ultra1) istar (IPX) etna (SS10) digne (IPX) cork (SS10)

Computing Overhead Waiting Message

Time machine (model) Master Slaves Start Rectification Correlation End

Fig.3.6: Exemple d'exécution de la stéréoscopie par corrélation sous PVM: graphe des tâches commenté.