• Aucun résultat trouvé

Trois m´ethodes d’impl´ementation de la mise en correspondance par bloc en

CHAPITRE 4 ETUDES DE CARTE DE DISPARIT´ ´ E

4.3 Trois m´ethodes d’impl´ementation de la mise en correspondance par bloc en

Nous avons r´ealis´e trois m´ethodes en GPGPU dans les essais d’acc´el´eration. La M´ethode 0

emploie la m´emoire globale pour accumuler les coˆuts. La M´ethode 1 est une r´ealisation en

OpenCL d’une impl´ementation de la mise en correspondance par bloc en GPGPU d’OpenCV

mentionn´ee dans la sous-section 3.8.2, qui emploie la m´emoire partag´ee pour calculer la valeur

minimale et l’indice correspondant parmi un nombre pr´ed´efini de disparit´es potentielles. Pour

faciliter le traitement, cette M´ethode ignore les zones de bordure. La M´ethode 2 est bas´ee

sur la M´ethode 1, mais qui traite aussi les zones de bordure au lieu de les ignorer comme le

cas de la M´ethode 1 afin d’augmenter la pr´ecision pour le cas de la v´erification de consistance

et de rendre la carte de disparit´e plus compl`ete. La v´erification de consistance s’op`ere en

employant une carte de disparit´e calcul´ee de gauche `a droite et une autre carte calcul´ee de

droite `a gauche.

La M´ethode 0 est la base de notre r´ealisation. Nous calculons la somme e des ´ecarts

quadratiques de chaque colonne d’une fenˆetre de comparaison f et nous les sauvegardons

dans la m´emoire globale. Ensuite nous calculons une somme s des ´el´ements e d’un nombre de

colonnes de la fenˆetre de comparaison f . Cette somme s sera la somme des ´ecarts quadratiques

selon la fenˆetre de comparaison des deux images en question.

Cette s´eparation de calcul en deux ´etapes peut contribuer `a diminuer le nombre de calculs

des ´ecarts quadratiques parce qu’une colonne des ´ecarts a ´et´e calcul´ee puis partag´ee entre les

fenˆetres concern´ees. Initialement, le nombre de calculs est : T

2

f

multiplications, plus (T

f

1) × (T

f

+ 1) = 2 × T

f2

− 1 additions (ou soustractions). Une fois r´ealis´ee la s´eparation

en deux ´etapes, le nombre de calculs pour chaque fenˆetre sera : T

f

multiplications, plus

T

f

+ 2 × (T

f

− 1) = 3 × T

f

− 2 additions (ou soustractions). Comme une multiplication

prend plus de temps qu’une addition, l’acc´el´eration est ´evidente. Voir la Figure 3.9 pour

cette m´ethode dans la section 3.9.

Les produits d’´ecart quadratique se recouvrent horizontalement et verticalement parce

que les fenˆetres adjacentes se recouvrent elles-mˆemes de la mˆeme fa¸con. ´Ecart quadratique

est la diff´erence quadratique, qui prend souvent la forme : (Img

ij

− Img

kj

)

2

. Pour illustrer

cette caract´eristique, supposons que nous sommes dans la ligne l, et que nous avons d´ej`a

calcul´e les sommes d’´ecart quadratique de la ligne pr´ec´edente l − 1. Alors, nous calculons les

sommes des colonnes des lignes suivantes en soustrayant les premiers ´el´ements l − h

f

− 1 des

nous avons T

f

multiplications plus 2×T

f

−1 additions (ou soustractions) pour le calcul d’une

colonne, l’ajout et la soustraction seront 2 multiplications plus 4 additions (ou soustractions).

Nous avons illustr´e cette m´ethode dans la Figure 3.10

Le probl`eme de cette m´ethode est la lenteur de l’acc`es `a la m´emoire globale. Mˆeme s’il

n’y a pas eu de conflit d’acc`es pour une mˆeme adresse par diff´erents processus, l’acc`es `a la

m´emoire globale lui-mˆeme et la synchronisation obligatoire avant l’addition des sommes de

colonne entraˆıne une d´et´erioration de performance.

En nous inspirant d’une impl´ementation de la mise en correspondance par bloc en GPGPU

d’OpenCV mentionn´ee dans la sous-section 3.8.2, nous avons r´ealis´e l’impl´ementation

« M´ethode 1 ». Cette m´ethode utilise le principe d’acc´el´eration par partage de r´esultats

interm´ediaires de la M´ethode 0. De plus, elle calcule un indice qui correspond `a la valeur

minimale du coˆut de correspondance parmi un nombre n

d

des disparit´es potentielles pour

chaque pixel `a l’aide de la m´emoire partag´ee. Au cours d’une ´etape de calcul, un nombre n

d

de

disparit´es potentielles sera calcul´e puis le coˆut minimal et la valeur d’indice correspondante

seront retenus pour continuer la comparaison. Cela signifie que la flexibilit´e sera compromise

parce que la disparit´e maximale doit ˆetre une multiplication du nombre n

d

. Afin de simplifier,

les pixels n’ayant pas assez de fiabilit´e de disparit´e seront invalid´es. Si maxDisparit´e d´esigne la

disparit´e maximale, l

i

et h

i

d´esignent la largeur et la hauteur des pairs d’images en question ;

pour un calcul de disparit´e de gauche `a droite, on ne calcule que la zone en largeur et en

hauteur d´efinie par [maxDisparit´e + l

f

, l

i

− l

f

− 1] et [h

f

, h

i

− h

f

− 1]. Les crochets “[” et “]”

signifient que nous pouvons prendre le d´ebut et la fin de la port´ee, les chiffres sont pr´esent´es

selon la convention du langage C, soit le chiffre commence par 0 et se termine par la valeur

maximale moins 1.

En contrepartie, la disparit´e de droite `a gauche ne calculera que la zone en largeur et

en hauteur d´efinie par [w

f

, l

i

− maxDisparit´e − l

f

− 1] et [h

f

, h

i

− h

f

− 1]. Bien sˆur, si nous

employons les cartes de disparit´e en pleine taille pour faire la v´erification de consistance bas´ee

sur la disparit´e de gauche `a droite et de droite `a gauche, cette m´ethode va produire plus de

valeurs invalides dans la zone [l

i

− maxDisparit´e − l

f

, l

i

− l

f

− 1]. Cela peut nuire `a notre but

initial de cr´eer une carte de disparit´e assez proche de la vraie carte.

Durant nos ´etudes, nous calculons les taux d’erreur dans la zone d´efinie

[w

f

, l

i

− maxDisparit´e− l

f

− 1] et [h

f

, h

i

− h

f

− 1] comme ci-dessus pour ne pas ˆetre influenc´es

par les z´eros mis intentionnellement comme valeurs invalides. Donc, il faut garder en m´emoire

cette strat´egie pour ne pas avoir une impression erron´ee en voyant les chiffres.

Puisque la M´ethode 0 produit des disparit´es avec une certaine exactitude en zone consid´er´ee

sans fiabilit´e, nous avons combin´e les M´ethodes 0 et 1 pour produire une M´ethode 2 qui cal-

cule un indice comme valeur interm´ediaire parmi un nombre n

d

des disparit´es potentielles

pour chaque pixel `a l’aide de m´emoire partag´ee. Le coˆut minimal et la valeur de disparit´e

correspondante seront retenus pour continuer la comparaison. Ce point est identique `a celui

de la M´ethode 1 sauf qu’avec la M´ethode 2 nous calculons non seulement la zone qui offre le

plus de fiabilit´e, mais aussi d’autres zones pour cr´eer une carte de disparit´e compl`ete. Bien

sˆur, les disparit´es dans ces derni`eres zones n’ont pas assez de fiabilit´e. La v´erification de

consistance nous aidera `a les pr´eciser.

4.4

Impl´ementation de la mise en correspondance par bloc en CPU comme