Comment fonctionne la technologie Kinect ?

La Rubrique du Docteur Sub #2

Signaler
Subby kun14h23 | 13 Octobre 2010 | 32
Divers
par Subby kun
Sélectionné par la rédaction
Annoncée en grande pompe lors de la conférence Microsoft de l'E3 2009, la technologie Kinect propose de jouer avec son corps, renvoyant au placard nos vieilles manettes de jeu. Essayons de comprendre ensemble le fonctionnement de la bête. Le Docteur Sub vous livre sa deuxième enquête exclusive.

Et voici le deuxième article de la rubrique du Docteur Sub, j'espère sincèrement qu'il vous plaira. La vulgarisation a été plus difficile pour moi que pour le premier article. Si des passages ne vous semblent pas clairs, n'hésitez pas à me le dire et je les corrigerai pour une meilleure accessibilité. À très bientôt.

Kinect ? Késako ?

Après avoir disséqué la bête, je peux vous affirmer que Kinect est une évolution très ingénieuse d'une caméra classique. Celui-ci combine et embarque un grand nombre de technologies différentes de façon très originale et intelligente. Attention toutefois, je ne sais pas si la retranscription des mouvements sur l'écran sera efficace, cette partie étant « quasi-exclusivement » dépendante du logiciel de traitement d'images en développement chez Microsoft depuis de nombreuses années.

Ce périphérique de Microsoft est constitué d'une barre horizontale connectée à sa base via un petit moteur. Celui-ci permet à la caméra d'effectuer des petits mouvements vers le haut ou le bas (27° semble-t-il) afin d'adapter la perception de la caméra en fonction de votre position dans la pièce. La barre horizontale constitue l'élément principal de la technologie Kinect. Elle contient une série de multi-microphones, une caméra RGB, et enfin un « 3D depth sensor » permettant d'améliorer l'analyse de mouvement par rapport à une caméra comme l'EyeToy. L'association de ces trois technologies devrait ainsi permettre la reconnaissance vocale et faciale de l'utilisateur, ainsi que la « capture » de l'ensemble de la pièce (et donc du corps) en 3D. Cet article va donc se diviser en 3 parties correspondant à chacun des trois éléments de Kinect.


Figure 1 : Un petit récapitulatif des technologies embarquées dans Kinect. Traduction pour les non anglophones : Multi-array Mic : Multiples Microphones, Motorized tilt : Pied motorisé, 3D depth sensors : Analyseur de distance 3D

« Xbox Explique-moi »

Je vais donc commencer cette autopsie par une courte présentation des microphones. Pourquoi courte ? Tout simplement car la reconnaissance vocale ne sera pas implémentée en français lors du lancement de Kinect. Et pour nous, monolingues français, c'est un scandale ! Non ? Bon... Kinect embarquera vraisemblablement 2 microphones ainsi que 4 détecteurs digitaux externes de sources audio. La combinaison de l'ensemble de ce système audio permet ainsi à Kinect de détecter la localisation spatiale d'une source sonore mais aussi d'éliminer les bruits de fond parasites grâce à un traitement de données efficace.

Un microphone va fonctionner de la même façon qu'une oreille humaine : celui-ci va traduire l'onde sonore, émise par une source, en signal électrique. Lorsque l'onde sonore vient toucher / exciter la membrane (aussi appelé diaphragme) du microphone, l'excitation de cette membrane va se traduire en signal électrique analogique avant d'être convertie en signal numérique. Le diaphragme est l'équivalent du tympan dans notre oreille et son fonctionnement est identique en tout point. Pour convertir un signal analogique en signal numérique, il est obligatoire d'utiliser un convertisseur analogique/numérique. Celui-ci est généralement constitué d'un montage électronique dont la fonction est de traiter une valeur analogique, pour ensuite générer une valeur numérique. Cette valeur numérique sera proportionnelle à la valeur analogique permettant de coder sur plusieurs niveaux (bits). Le plus souvent, les valeurs analogiques sont des signaux électriques (comme dans notre cas décrit ci-dessus).

Je vous avoue que je n'ai pas trouvé quel procédé était utilisé pour la localisation spatiale mais celui-ci devrait vraisemblablement s'appuyer sur la comparaison de la « puissance » des signaux sonores reçus. Si vous êtes placés à droite, alors le micro et les détecteurs externes de droite recevront un signal « plus fort » que ceux de gauche. Mais cela reste une hypothèse personnelle.

La camera RGB (Red Green Blue)

La première des deux caméras embarquées dans la technologie Kinect est une caméra couleur RGB « standard » avec un capteur photographique de type CMOS. Elle se situe au centre de la barre horizontale (cf. figure 1). Pour les férus de détails techniques, elle permet une prise d'image avec une fréquence de 30Hz, en couleur 32bits et en résolution VGA de 640x480 pixels.

Je vais tenter de vous expliquer le fonctionnement des capteurs photographiques intégrant l'ensemble des appareils photos ou caméras numériques actuellement dans le commerce.

Qu'est ce qu'un capteur photographique ? C'est un composant électronique sensible à la lumière qui va convertir un rayonnement (Ultra Violet, Lumière visible ou Infra Rouge) en un signal analogique (une nouvelle fois via un signal électrique). Ce signal est ensuite numérisé par un convertisseur analogique-numérique afin d'obtenir une image numérique. Mais avant d'aller plus loin, il est essentiel de redéfinir les rayonnements et la lumière en quelques termes barbares : les ondes électromagnétiques. Pour faire simple, la lumière est composée de l'ensemble des ondes électromagnétiques visibles par notre œil. Ces ondes possèdent une « longueur d'onde » (une fréquence) propre pour chaque couleur que nous connaissons. Lorsque cette longueur d'onde est comprise entre environ 400 et 800 nanomètres, nous sommes dans la gamme des couleurs et de la « lumière visible ».

Pour des longueurs d'ondes inférieures ou supérieures, nous retrouvons les rayonnements avec les domaines des ultraviolets, des infrarouges, des rayons X ou des ondes radio. (Figure 2)


Figure 2 : Représentation du spectre électromagnétique. Comme vous pouvez le voir, la lumière visible et les couleurs ne représentent qu'une toute petite partie de ces ondes.

La lumière est composée de 3 couleurs primaires qui sont le Rouge, le Vert et le Bleu comme illustrées sur la Figure 3. L'association de ces 3 couleurs permet d'obtenir la lumière blanche. Le noir représente l'absence totale de couleur. Chaque couleur est donc définie selon le système RVB (ou RGB en anglais) c'est-à-dire en fonction de la proportion respective en rouge, vert et bleu. Le mélange de ces trois couleurs compose aussi chacun des pixels de nos écrans LCD, LED...


Contrairement aux couleurs primaires en peinture (cyan, magenta et jaune), les trois couleurs primaires de la lumière sont le rouge, le vert et le bleu.

Pour convertir le signal analogique reçu en image numérique, le capteur photographique va filtrer la lumière selon ces 3 couleurs et sortir trois signaux numériques correspondant à chacune d'elles. Actuellement, deux grandes familles de capteurs sont disponibles : les CCD et les CMOS.

Les CCD sont surtout utilisés dans les appareils compacts mais sont de plus en plus délaissés dans les reflex. Je ne détaillerai pas le principe des photocapteurs CCD (demandant des connaissances en physique-chimie) car le résultat final est le même que pour la technologie CMOS.

Le CMOS est représenté sous la forme d'un petit « écran » de taille variable comme vous pouvez le voir sur la photographie ci-dessous. La partie sensible à la lumière est la partie grisâtre au centre. Certains capteurs CMOS peuvent actuellement atteindre une résolution hallucinante de 25 millions de pixels et la technologie ne cesse de progresser.


Figure 3 : Exemplaire d'un capteur photographique de type CMOS développé par Sony.

Comment le capteur fonctionne ? La lumière (l'image) arrive en face du capteur, celle-ci est d'abord purifiée par un filtre Infra Rouge (bloquant les ondes infrarouges et laissant passer la couleur), puis traverse un « mini filtre » de couleur rouge, vert ou bleu placé en face du capteur lui même. Ainsi les millions de capteurs présents à la surface du CMOS vont émettre un signal électrique relatif à une des 3 couleurs, qui sera ensuite converti numériquement.


Figure 4 : Fonctionnement d'un capteur photographique de type CMOS pour les appareils photos numériques et les cameras couleur.

Les propriétés de votre appareil photo ou de votre caméra vont dépendre majoritairement du capteur CMOS (ou CCD) présent dans votre appareil. Ainsi pour les téléphones portables, des capteurs de plus en plus petits sont fabriqués afin d'économiser le maximum de place, au détriment de la qualité de l'image obtenue.

Maintenant que nous avons vu le principe du capteur CMOS pour la caméra RGB, nous allons pouvoir passer aux choses sérieuses avec le « 3D depth sensor ».


Figure 5 : Exemple de capteur photographique de taille réduite pour les téléphones mobiles.

« 3D depth sensor »

Jusqu'à présent nous avons vu les technologies microphone et caméra RGB « classique » mais c'est véritablement avec sa technologie « 3D depth sensor » (comprenez capteur de profondeur/distance 3D) que Kinect tire son épingle du jeu. Cette technologie a été proposée par la société israélienne PrimeSense. La caméra de droite sur la figure 6 est une caméra infrarouge (pas de couleur) à capteur CMOS, QVGA de résolution 320x240, 16bits (donc possédant 65536 niveaux de sensibilité). L'objectif à gauche de Kinect n'est pas une caméra, comme beaucoup pourraient le penser, mais un émetteur de lumière infrarouge. C'est pourquoi certaines images de Kinect sont représentées avec une lampe lumineuse comme sur la figure 6.


Figure 6 : Ces deux exemples (Kinect et une télécommande Microsoft) illustrent des émissions infrarouges non visible par notre œil.

Comment fonctionne un capteur CMOS infrarouge ? De façon identique à une caméra RGB sauf qu'on laisse passer uniquement les infrarouges (revoir figure 2). La caméra infrarouge permet d'obtenir une image représentant les dégagements thermiques émis par l'objet observé. Ce type d'images furent largement popularisées par le filmPredator et sa mythique vision infrarouge. Cependant, les images obtenues ne sont pas colorées, ce sont les utilisateurs qui décident de rajouter les niveaux de couleurs en fonction de la température mesurée.


Figure 7 : Il n'est pas trop mignon ? Sur cette image, nous pouvons voir que les émissions de chaleurs proviennent essentiellement des yeux et de la bouche.

Je vous vois déjà lever le doigt : « Mais Monsieur, comment peut-on faire un détecteur de distance avec une image thermique ? Les yeux du chien sont bien plus éloignés que le bout de sa truffe ! ». Et bien tout simplement, parce que, Kinect ne s'appuie pas sur la chaleur émise par notre corps. En effet, tout l'intérêt de Kinect provient de son émetteur (lampe) de lumière infrarouge.

La scène contenant les joueurs est bombardée par les rayons infrarouges non visibles à l'œil. Une partie de ces rayonnements va être réfléchie par l'ensemble des surfaces touchées. Plus l'objet sera loin et plus la quantité de rayonnement infrarouge réfléchie (renvoyée vers la caméra) sera faible. A l'inverse, plus l'objet sera proche et plus la quantité de rayonnement infrarouge réfléchie sera importante. Ainsi la caméra infrarouge va mesurer la distance de l'objet en fonction de l'intensité comme illustré sur l'exemple ci-dessous.


Figure 8 : Voici une scène réelle (à gauche) et l'image recueillie par la camera Kinect (à droite) lorsqu'elle est éclairée par les rayons infrarouge. Nous pouvons voir qu'il est ensuite très facile pour la caméra de reconnaître la silhouette du joueur et par un traitement d'image, d'intégrer les différents points de « motion control ».

Le pouf à l'avant est de couleur jaune symbolisant un objet plus proche. S'il était observé par une caméra infrarouge classique, il serait invisible avec le fond du décor car il n'émet aucune chaleur. Grâce à la différence de couleur entre le joueur et le fond, il est facile de distinguer l'ensemble de sa silhouette, mis à part les pieds en contact avec le sol. Ensuite, ce sont les logiciels qui vont effectuer le traitement des images reçues, en intégrant les différentes parties du corps à l'image.


Figure 9 : Ce schéma résume la technologie Kinect : la lampe infrarouge va projeter ses rayons sur la scène, la caméra infrarouge va ensuite filmer cette scène et la puce PS1080 SoC va traiter les données afin d'estimer la distance de chaque objet par rapport à la caméra.

Ainsi, d'après la figure 9 (image de droite), il est possible de cartographier avec précision la distance pour tout objet éloigné de 1,5 à 2 mètres de la caméra jusqu'à environ 4-5 mètres de profondeur. Au delà de 5 mètres, le rayonnement IR réfléchi devient trop faible pour être mesurable avec précision. Pour tout objet dont la distance est inférieure à 2 mètres, le phénomène inverse est observé et le signal devient totalement saturé. La publication récente des distances recommandées confirme cette limitation technique : la distance pour pouvoir jouer à deux joueurs est de 2,4 mètres.

L'avantage de l'utilisation de la lampe IR est de pouvoir jouer dans toutes les conditions de luminosité ! Même si certaines fonctionnalités devraient être affectées comme la reconnaissance faciale ou le scan des objets (utilisant la caméra RGB, dépendante du spectre de lumière visible).

Conclusion

Il est difficile de savoir si Kinect répondra aux attentes du public. Théoriquement, cet outil pourrait libérer le joueur de la manette et lui conférer une liberté totale. En effet, d'un point de vue technique Kinect est un petit bijou de technologies et de bonnes idées. Mais, le développement du logiciel de traitement de données semble représenter une limitation. Ainsi le temps de latence observé jusqu'à présent dépend de l'analyse complexe en « direct » des images filmées. Espérons que « l'amélioration » promise par Microsoft arrive très rapidement, sans quoi cette lacune logicielle pourrait devenir le véritable point noir de Kinect.


Figure 10 : Pour finir en beauté pour tous nos amis geeks, un beau schéma résumant l'ensemble des technologies Kinect décrites dans cet article.

Docteur Sub

COMMENTAIRES
DigitalePourpre
Signaler
DigitalePourpre
13/10/2010, 15:35
Merci encore une fois pour cette article toujours aussi passionant. Il permet de mieux comprendre Kinect et surtout de mieux comprendre pourquoi il y de la latence. D'ailleur si j'ai bien compris la latence ne serai du qu'a un traitement logiciel. Mais qu'en est-il de la puissance de la X-Box pour traiter l'information, ne rame-t-elle pas? Est-elle assez puissante?

Mortipoil
Signaler
Mortipoil
13/10/2010, 16:54
Assez bluffé par la qualité de tes articles.
Tu es juste "geek" ou bien tu as une activité professionnelle en relation avec la technologie?

Néanmoins tu aurais pu être beaucoup plus concis pour répondre à la question "Comment fonctionne la technologie Kinect? Elle fonctionne mal!", fin de l'article :)

Je suis médisant mais il est vrai que Microsoft aurait revu à la baisse les caractéristiques techniques de la caméra, notamment la résolution, et ce pour des raisons de coût. Il en résulte un manque flagrant de précision, de décrochage de la caméra, bref, ce qui était promis ne pourra vraisemblablement pas être proposé. Mais bon, Molyneux faisait partie du projet avec son Milo, alors il y a peut-être un début d'explication :)

Subby kun
Signaler
Subby kun
13/10/2010, 17:04
Merci DigitalePourpre et Mortipoil,
Pour répondre d'abord à Digitale, le temps de latence n'est pas seulement du à logiciel (mais en grande partie). En effet, même si je n'ai pas trouvé l'info, la fréquence d'acquisition de la caméra infrarouge doit être de l'ordre de 30Hz ce qui est suffisant pour ce genre d'application (un petit 60Hz n'aurait pas fait de mal mais bon, pas le même tarif à mon humble avis). Comme le dit Mortipoil, la faible résolution est un plus gros soucis que sa fréquence d'acquisition. Concernant la puissance de la 360, elle est suffisamment puissante pour gérer ce genre te traitement, mais j'avoue que le logiciel doit être difficile à optimiser.

Mortipoil, merci pour tes commentaires. Je suis geek, je suis un thésard en chimie qui soutient sa thèse dans 9 jours et même si je ne travaille pas dans les technologies, j'ai l'habitude de chercher les infos sur Internet et des bases de données scientifiques. J'adore ton résumé de l'article en 2 lignes même si je veux laisser une chance à Kinect avant de juger.

gimlee
Signaler
gimlee
13/10/2010, 21:45
Trés bon article et bonne chance pour ta thèse! :D

Mortipoil
Signaler
Mortipoil
13/10/2010, 22:03
Merci pour ta réponse et bon courage également pour la soutenance de ta thèse ;)

Hadzooks
Signaler
Hadzooks
14/10/2010, 11:01
Bon courage pour ta thèse.

Subby kun
Signaler
Subby kun
14/10/2010, 11:38
Merci à tous pour vos encouragements! Je vais en avoir grand besoin :)

DigitalePourpre
Signaler
DigitalePourpre
14/10/2010, 15:52
Merci pour ta pédagogie et encore une fois bonne chance pour la soutenance de la thèse, courage c'est bientôt fini!

shinn95
Signaler
shinn95
27/10/2010, 18:56
Juste super merci pour toutes ces infos!

Virtuality
Signaler
Virtuality
27/10/2010, 19:00
Tout à fait le genre de dossier qu'il manquait sur ce site :)

Excellent! :ok:

Trazom
Signaler
Trazom
27/10/2010, 19:09
J'ai essayé de faire un dossier du même genre, mais je me suis arrêté au bout de 2 dixièmes de seconde. Désolé :/

Tiris
Signaler
Tiris
27/10/2010, 19:14
Article très sympa ^^.

Jasobe
Signaler
Jasobe
27/10/2010, 19:24
Vraiment très bon, merci beuacoup

Bricius FromJapan
Signaler
Bricius FromJapan
27/10/2010, 19:34
Excellent, travaillant dans la vente de Jeux Vidéo en lisant ce dossier je serais en mesure de bien conseiller mes clients. Encore bravo et merci. Messieurs GameBlog il faut l'engager !!!!!!

ArKoNiTe
Signaler
ArKoNiTe
27/10/2010, 19:36
Excellent article, merci beaucoup ;)

cortec
Signaler
cortec
27/10/2010, 20:17
excellent article ! et bonne chance pour ta thèse !

LiquidHardesign
Signaler
LiquidHardesign
27/10/2010, 20:28
Clair et net. Merci mec, bon papier (ahah)

Gremm
Signaler
Gremm
27/10/2010, 20:49
Le camera 3D de Kinect est une camera à temps de vol, pas une camera thermique.
http://en.wikipedia....f-flight_camera

Le principe est de mesurer le temps de vol de la lumière du flash infrarouge emis par la camera. En gros chaque pixel de camera se comporte comme un télémètre laser à temps de vol, avec une prevision de l'ordre de quelques centimetres dans la mesure de distance


Bukaki
Signaler
Bukaki
27/10/2010, 20:57
"Comment fonctionne la technologie Kinect"

[troll]C'est simple, elle fonctionne pas[/troll]

Bel article :)

Subby kun
Signaler
Subby kun
27/10/2010, 21:35
Bonjour à tous, je reviens tout juste du PGW et j'ai eu quelques soucis de panne de courant en rentrant. Chose surprenante, j'en parlais ce matin avec JulienC et en rentrant, je vois l'arrticle sur le site, je suis super content.
Merci à tous pour l'ensemble de vos commentaires et vos encouragements.
Gremm: je suis d'accord avec toi que la caméra est à temps de vol mais pas thermique mais j'ai essayé de vulgariser pour l'ensemble des gens du site et je précise bien dans l'article que la caméra ne mesure donc pas la chaleur émise, peut être que cette partie n'était pas assez clair et je reverrai la formulation du paragraphe.
Merci et je suis là pour répondre aux questions. A très bientôt.

PS: ma soutenance s'est très bien passé, merci à vous pour votre soutien.
Docteur Sub

Redwark
Signaler
Redwark
28/10/2010, 00:17
Bonsoir, en ce qui concerne les réseaux de micros, c'est plutôt le retard entre les signaux qui est mesuré. Un son qui vient de la gauche arrive en premier sur un micro de gauche, etc...

Shokuboo
Signaler
Shokuboo
28/10/2010, 00:25
Toutes mes félicitations.

Subby kun
Signaler
Subby kun
28/10/2010, 08:13
Merci Redwark, j'avais un doute entre les deux. Je pensais que vu la petite taille de la bête, la différence de retard serait vraiment trop faible pour être mesuré. Si tu prends la vitesse du son à 340m/s dans l'air et la distance entre les deux micros les plus éloignés doit être de 40cm environ, cela faisait un décalage de temps de 0.00117secondes, j'ai donc pensé que ce temps était trop court pour être mesurable. :)

johan26
Signaler
johan26
28/10/2010, 11:57
Félicitation pour l'article ^^ J'ai tout compris ! Mais je pense que ça ne serait pas très gênant d'avoir à moins vulgariser les explications et nous mètre un peu plus dans le bain , les lecteurs qui lisent ces articles ne sont pas casuals alors tu peux te lâcher ^^ ( S'il te plait!)

1 2
VOIR AUSSI
Groupes : 
Kinect
EN SAVOIR PLUS
Gameblog Premium

Etude-NetObserver

La Game CAM !
En direct de la rédac' ! Cliquez pour ouvrir un popup.