Tribulations codalistiques d'un fennec au pays de la 3D
Archives
- juillet 2008
- juin 2008
- mai 2008
- avril 2008
- mars 2008
- février 2008
- décembre 2007
- novembre 2007
- septembre 2007
- août 2007
- mai 2007
- mars 2007
- février 2007
- janvier 2007
- décembre 2006
- novembre 2006
- août 2006
- juillet 2006
- juin 2006
- mai 2006
- avril 2006
- mars 2006
- février 2006
- janvier 2006
- décembre 2005
- novembre 2005
- octobre 2005
- septembre 2005
- août 2005
- juillet 2005
- mai 2005
- avril 2005
- mars 2005
- février 2005
- janvier 2005
- décembre 2004
Avril 2008
Écran multitouch : détection de doigts
Dimanche 27 avril 2008 à 20 h 33
Les choses bougent raisonnablement du coté de la réalisation de l'écran FTIR (épisode précédent). J'ai placé toutes les LEDs (40 !) sur le bas de l'écran, et il s'avère que ça crache tellement d'infrarouges que je ne vais probablement pas avoir besoin de placer de nouvelles LEDs sur la partie haute de l'écran. A voir à terme, mais je pense qu'une bande réfléchissante serait suffisante, dans le pire des cas.
J'ai eu l'occasion de trouver un peu de temps pour me pencher sur l'algo de détection des blobs. L'idée est d'arriver à détecter les "impacts" infrarouges laissés par les doigts en contact avec la plaque, pour déterminer combien de doigts (ou n'importe quelle autre extrémité composée de peau, bien sûr) sont posés sur la plaque de plexi, ainsi que la position, pression, et la vélocité de chaque doigt.
En environ une semaine (1h/jour ?), je suis arrivé à un truc pas trop mal. Étant en déplacement, je bossais avec une vidéo pré-enregistrée d'une minute, sur laquelle j'arrivais à un taux de réussite de 100%. L'algo offre des événements (OnTouch, OnUntouch, OnMove) très simples à utiliser ensuite. Hier soir, à l'aide de RyLe, nous sommes passés à un test grandeur nature, en temps réel. Nous avons massacré un volant Wii (les trucs à 10 euros vendus pour Mario-Kart [jeu de merde, soit dit en passant]) pour en extraire le filtre infrarouge que nous avons ensuite collé sur l'objectif de la webcam. Malgré de multiples essais (voir articles précédents), je n'ai jamais eu un résultant aussi probant : le filtre est excellent, et ne laisse quasi rien passer de la lumière visible ! En revanche, l'aglo a montré ses limites, étant très dépendant de l'éclairage ambiant et des réglages de la webcam (fps, taille de l'image, réglages de contraste, balance des blancs et autres).
La journée d'aujourd'hui a été l'occasion de pousser tout ça plus en avant, avec une belle découverte : la webcam (Philips SPC900NC) dispose d'un capteur d'excellente qualité qui, si on balance les bons réglages au driver (le non moins excellent "pwc" de Luc Saillard), fait ressortir différemment l'infrarouge "naturel" (soleil et la majorité des lumières artificielles, y compris halogènes) de l'infrarouge des LED (longueur d'onde différente, probablement), ces dernières générant à l'écran une teinte bleutée ! (à la différence du reste des IR, en gris). J'ai ainsi eu l'occasion de ré-écrire l'algo en tenant compte de cette nouvelle donne, et le résultat est maintenant excellent, même en pleine lumière.
Voilà, sous forme d'une toute petite vidéo très sombre (faizez péter le gamma !), ce que ça donne :
Sympa, non ? :)
Il reste un tas de choses à faire, mais c'est plutôt une belle avancée. Suite : trouver un vidéo-projecteur, et surtout une surface qui permette de projeter sur la plaque sans perturber le passage des IR.
J'ai eu l'occasion de trouver un peu de temps pour me pencher sur l'algo de détection des blobs. L'idée est d'arriver à détecter les "impacts" infrarouges laissés par les doigts en contact avec la plaque, pour déterminer combien de doigts (ou n'importe quelle autre extrémité composée de peau, bien sûr) sont posés sur la plaque de plexi, ainsi que la position, pression, et la vélocité de chaque doigt.
En environ une semaine (1h/jour ?), je suis arrivé à un truc pas trop mal. Étant en déplacement, je bossais avec une vidéo pré-enregistrée d'une minute, sur laquelle j'arrivais à un taux de réussite de 100%. L'algo offre des événements (OnTouch, OnUntouch, OnMove) très simples à utiliser ensuite. Hier soir, à l'aide de RyLe, nous sommes passés à un test grandeur nature, en temps réel. Nous avons massacré un volant Wii (les trucs à 10 euros vendus pour Mario-Kart [jeu de merde, soit dit en passant]) pour en extraire le filtre infrarouge que nous avons ensuite collé sur l'objectif de la webcam. Malgré de multiples essais (voir articles précédents), je n'ai jamais eu un résultant aussi probant : le filtre est excellent, et ne laisse quasi rien passer de la lumière visible ! En revanche, l'aglo a montré ses limites, étant très dépendant de l'éclairage ambiant et des réglages de la webcam (fps, taille de l'image, réglages de contraste, balance des blancs et autres).
La journée d'aujourd'hui a été l'occasion de pousser tout ça plus en avant, avec une belle découverte : la webcam (Philips SPC900NC) dispose d'un capteur d'excellente qualité qui, si on balance les bons réglages au driver (le non moins excellent "pwc" de Luc Saillard), fait ressortir différemment l'infrarouge "naturel" (soleil et la majorité des lumières artificielles, y compris halogènes) de l'infrarouge des LED (longueur d'onde différente, probablement), ces dernières générant à l'écran une teinte bleutée ! (à la différence du reste des IR, en gris). J'ai ainsi eu l'occasion de ré-écrire l'algo en tenant compte de cette nouvelle donne, et le résultat est maintenant excellent, même en pleine lumière.
Voilà, sous forme d'une toute petite vidéo très sombre (faizez péter le gamma !), ce que ça donne :
Sympa, non ? :)
Il reste un tas de choses à faire, mais c'est plutôt une belle avancée. Suite : trouver un vidéo-projecteur, et surtout une surface qui permette de projeter sur la plaque sans perturber le passage des IR.
6 commentaires, dernier de .