Posturevision

Survol:
Reproduction photoréaliste 3D d'un utilisateur vers un autre distant.

Origines:
Posture est une plateforme de téléprésence immersive qui permet aux utilisateurs d’explorer des mondes virtuels et de socialiser. Immergés par le son et l’image dans un territoire virtuel s’étendant dans toutes les directions, les utilisateurs sont captés par un anneau de cameras 3D disposées à l’horizon et leur représentation vidéo en 360° est transmise en temps réel aux autres participants se trouvant virtuellement à proximité. Ce projet a pour objectif d’inviter le corps dans le cyberspace en restaurant notamment la communication non-verbale et les règles d’interaction sociales comme celles énoncées par Edward T. Hall dans La dimension cachée (1966).

Innovation:
Composition de plusieurs nuages de points issus de caméras

Resultats:
Posturevision 0.4

Chercheurs: Bruno Roy, Emmanuel Durand, Nicolas Bouillot, Alexandre Quessy,

Auteurs: Bruno Roy, Emmanuel Durand, Nicolas Bouillot, Alexandre Quessy, Ludovic Schreiber.

Licence: GPL

Calibrage des caméras:

Le pilote des caméras peut renvoyer une valeure de focale éronée. Il devient donc nécéssaire de les recalibrer sois-même.
Pour cela, vous pouvez utiliser la bibliothèque OpenCV que vous récupérez sur https://github.com/Itseez/opencv/releases
Dans votre répertoire de travail, entrez les comandes suivantes:

git clone https://github.com/Itseez/opencv
cd opencv
git checkout 2.4.11
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=RELEASE -DBUILD_EXAMPLES=ON..
make && sudo make install
cd bin
sudo cp cpp-example-calibration /usr/local/bin/camera_calibration
cd ../..

Une fois OpenCV instalé, on peut passer au calibrage à proprement parler:

Imprimez l'image pattern.png présente dans le répertoire doc de la bibliothèque OpenCV. Attachez la à une surface plane.

Récuperez des images dans le mode de capture de votre caméra qui vous intéresse. En changeant la position de l'image ou de la caméra entre chaque capture (prévoyez en une dizaine).

Redimentionnez les images si besoin.

Il faut ensuite créer la liste d'images dans un fichier .xml (nous le nomerons imagelist.xml pour l'exemple).
Mettez dans ce fichier la structure suivante:


<opencv_storage>
<images>
"noms des images à utiliser pour le calibrage"
</images>
</opencv_storage>

Il suffit ensuite de faire tourner la calibration d'OpenCV avec la commande :
camera_calibration -w 9 -h 6 -o camera.yml imagelist.xml

cette commande va vous renvoyer dans le terminal l'erreur de calibration en pixel.

Dans le fichier camera.yml, qui à été créé par la comande précédente, les valeures qui nous intéresse sont dans la première colonne de le première matrice: il s'agit des valeurs des focales selon x et y.
Normalement, ces 2 valeurs sont proches et vous pouvez prendre comme focale la moyenne des 2.

Résultat du calibrage
Dans le cadre des tests pour ce projet, nous avons mesurés les focales pour les 2 types de caméras que nous utilisons.
Caméra Primesense : 145 px
Caméra Asus : 295 px