Détection du pouls avec la technologie Intel® RealSense™

Lee Bamber

Vous pouvez commenter ce tutoriel sur le forum : Commentez

- Titre : Détection du pouls avec la technologie Intel® RealSense™

- Auteur : Lee Bamber

- Parution : 31 octobre 2015

- Licence : Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright ® 2015 Lee Bamber. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- I. Introduction

- II. Pourquoi est-ce si important ?

- III. Comment est-ce même possible ?

- IV. Comment la Technologie Intel® RealSense™ détecte votre pouls

- V. Trucs et astuces

- V-A. À faire

- V-B. À éviter

- VI. Résumé

- VII. Autres Ressources:

- VIII. À propos de l'auteur

I - Introduction

Lorsque j'ai entendu parler pour la première fois d'un système qui pourrait déterminer votre rythme cardiaque sans même vous toucher, j'étais tellement sceptique que j'ai rangé cette information quelque part entre l'imposture et la magie vaudou. De nombreux mois plus tard, j'avais une bonne raison de me pencher davantage sur les technologies mises en jeu, et j'ai réalisé que non seulement c'était possible, mais que c'était déjà au point, et même implémenté dans la dernière version du Intel Realsense SDK (que vous pouvez trouver ici).

Ce n'est que lorsque j'ai trouvé et lancé le programme d'exemple approprié depuis le SDK, que j'ai lu la valeur, puis vérifié mon propre pouls en comptant les pulsations de mon cou durant 15 secondes et multiplié le résultat par quatre, que j'ai réalisé que cela fonctionnait vraiment ! Je me suis livré à quelques sauts afin d'élever mon rythme cardiaque, et de façon incroyable, après quelques secondes, l'ordinateur a de nouveau calculé précisément mon rythme cardiaque accéléré. Bien sûr, à partir de ce moment, j'étais tellement sidéré par le résultat, et excité à la perspective d'un ordinateur qui sait vous dire si vous êtes calme ou pas qu'il m'était impossible de faire passer mon rythme cardiaque en dessous de mes habituelles 76 pulsations par minutes pour tester les niveaux plus bas.

II - Pourquoi est-ce si important ?

Dès lors que vous commencez votre voyage dans les mondes frontaliers des systèmes de contrôle sans contact, du scanner tridimensionnel, et de la détection de mouvement, vous finirez par vous demander ce que vous pouvez encore faire d'autre avec la caméra Intel® RealSense™, comme vu ici. Lorsque vous passez de grands systèmes clairement définis aux formes les plus subtiles de détection, vous entrez dans un royaume où les ordinateurs atteignent des capacités jamais vues auparavant.

La détection du pouls, avec les autres fonctionnalités du SDK Intel RealSense SDK, sont des flux d'informations bien plus subtils qui pourraient un jour jouer un rôle aussi important dans votre vie quotidienne que votre clavier ou votre souris. Par exemple, un clavier ou une souris ne vous conviennent pas si vous souffrez de TMS (troubles musculosquelettiques) et l'intelligence de l'interface ne vous sera d'aucune utilité si vous êtes distrait, agité, somnolent ou tout simplement insatisfait. Utiliser la science subtile qui consiste à lire l'état physique d'un utilisateur, ainsi que son contexte émotionnel éventuel, permet à l'ordinateur de réagir en conséquence au bénéfice de l'utilisateur et pour améliorer son expérience. Imaginez par exemple qu'il est neuf heures trente du matin, que l'agenda affiche un jour complet de travail en prévision, et que l'ordinateur détecte que l'utilisateur est somnolent et distrait. En utilisant des méthodes préagréées, l'ordinateur pourrait déclencher votre liste de lecture de musique « réveille-moi avec cinq ballades rythmées », faire clignoter les quatre prochaines heures de votre agenda, et afficher quelques images de café fraîchement passé à l'écran pour vous suggérer gentiment de passer à la vitesse supérieure.

Les questions posées par l'innovation technologique ne sont pas toujours celles de savoir l'utilité de tel bouton, ou la méthode pour rendre les choses plus rapides, faciles, ou intelligentes ; il peut également s'agir d'améliorer la qualité de vie et d'enrichir une expérience. Si votre journée peut être améliorée parce que votre ordinateur parvient à ressentir vos besoins avant de prendre des mesures pour vous aider, ce ne peut qu'être une bonne chose.

En guise d'autre exemple qui n'est pas directement lié à la détection du pouls, imaginez que votre ordinateur soit capable de détecter la température et de relever que lorsque vous avez chaud, votre rythme de travail diminue (c'est-à-dire, une vitesse de frappe diminuée, plus de distraction, etc.) et qu'il enregistre également que lorsque la température était plus fraîche, votre niveau de travail était plus élevé. Maintenant, imaginez qu'il a enregistré des mesures de capteurs quotidiennement sur vous, et que durant un matin particulièrement chaud votre ordinateur vous affiche une remarque selon laquelle deux jours auparavant, vous aviez également chaud, que vous aviez quitté le bureau vingt secondes, et que deux minutes plus tard tout allait bien (et que par conséquent, votre niveau de travail s'était amélioré ce jour). Un tel message pourrait vous rappeler que vous aviez ouvert quelques fenêtres, ou allumé l'air conditionné dans la pièce d'à côté, et vous pouvez alors suivre le conseil et votre journée s'améliore. Autoriser l'ordinateur à collecter ce genre de données et expérimenter les façons par lesquelles ces données peuvent améliorer votre vie finira par mener à des innovations qui amélioreront la vie de tout un chacun.

L'estimation du pouls n'est qu'un moyen par lequel un ordinateur peut extraire des données subtiles du monde environnant, et alors que la technologie évolue, la sophistication de la détection du pouls mènera à des mesures aussi précises que les méthodes traditionnelles.

III - Comment est-ce même possible ?

Mes recherches sur le fonctionnement actuel exact de l'estimation du pouls m'ont emmené dans un petit voyage à travers les techniques qui ont prouvé leur efficacité jusqu'ici, telles que la détection de ce qu'on appelle les micromouvements de la tête.

Vous avez besoin de plus qu'un mètre ruban pour détecter les micro-mouvements de la tête.

Apparemment lorsque votre cœur bat, une grande quantité de sang est pompée vers votre tête pour satisfaire votre cerveau, et cela produit un mouvement minuscule et involontaire qui peut être détecté par une caméra de haute résolution. En comptant ces mouvements, filtrés par un Doppler classique et d'autres mouvements observables, vous pouvez établir le nombre de battements que l'utilisateur est susceptible de produire chaque minute. Bien sûr, de nombreux facteurs peuvent tromper cette technique, tels que des mouvements naturels qui peuvent être pris par erreur pour des micromouvements, ou le tremblement de la capture de prise de vue si vous êtes en déplacement, ou si vous avez froid et que vous frissonnez. Dans des conditions régulées, cette technique a démontré son efficacité en n'utilisant rien de plus qu'une caméra couleur de haute résolution et un logiciel capable d'éliminer le bruit visuel et de détecter les pulsations.

Une autre technique plus proche de la méthode utilisée par le SDK Intel RealSense est la détection des changements de couleur dans un flux en temps réel en utilisant ces changements de couleur pour déterminer si une pulsation a eu lieu. La fréquence d'image ne doit pas forcément être très élevée pour que cette technique fonctionne, et la caméra ne doit pas non plus être parfaitement immobile, mais les conditions d'éclairage doivent être idéales pour obtenir les meilleurs résultats. Cette technique alternative existe sous plusieurs variantes, avec des niveaux de succès différents, dont deux variantes que je vais traiter brièvement ici.

Saviez-vous que vos yeux révèlent la vitesse de battement de votre cœur ?

De toute évidence, la technique fonctionne mieux lorsque vous ne portez pas de lunettes, et avec une capture de haute résolution du globe oculaire, vous avez une probabilité augmentée de détecter les changements subtils des vaisseaux sanguins de votre œil au cours de la phase de détection. Contrairement aux veines situées sous la peau qui sont sujettes à une dispersion sous-cutanée et autres occlusions, l'œil offre une fenêtre relativement claire sur le système vasculaire de la tête. Il reste quelques obstacles à surmonter, comme verrouiller les pixels de l'œil, pour ne travailler qu'avec la zone oculaire et pas avec la peau environnante. Il faut également détecter les clignements et suivre les pupilles pour assurer qu'aucun bruit n'entre dans l'échantillonnage, et enfin vous devez lancer l'échantillonnage suffisamment longtemps pour obtenir un bon aperçu du bruit d'arrière-plan qui doit être éliminé avant de pouvoir exploiter les pixels de couleurs restants pour aider à détecter les pulsations.

Votre résultat final variera selon le temps durant lequel vous devrez faire tourner l'échantillonnage, et trop de bruit nécessitera que vous jetiez l'échantillon, mais même en tournant à un modeste taux de 30 images par seconde, 20 ou 30 échantillons suffiront à trouver une pulsation (en partant du principe que votre sujet ait un rythme cardiaque d'entre 60 et 90 battements par minute).

Si vous trouvez insuffisantes les informations de couleur obtenues à partir des yeux, ce qui peut arriver pour les utilisateurs assis à bonne distance de l'ordinateur, portant des lunettes, ou s'adonnant à la méditation, alors vous aurez besoin d'une autre solution. Une variante de plus de la méthode d'exploitation des changements de la couleur de la peau est l'utilisation du flux infrarouge, qui est nativement fourni par la caméra Intel® RealSense™. Contrairement aux flux de couleur et de profondeur, les flux infrarouges peuvent être envoyés au logiciel à un rythme de 300 captures par seconde, ce qui est plutôt rapide. Comme suggéré ci-dessus, nous n'avons cependant besoin que d'environ 30 captures par secondes d'échantillons de bonne qualité pour trouver notre insaisissable pouls, et l'image infrarouge que vous obtenez à partir de la caméra a un dernier tour à révéler.

Remarquez les veines dans le poignet, rendues très visibles grâce à l'infrarouge

Dans un but de concision, je n'entrerai pas dans une description détaillée des caractéristiques de l'infrarouge et de ses nombreuses applications. Il suffira de préciser que l'infrarouge occupe une partie spécifique du spectre lumineux que l'œil humain ne peut percevoir entièrement. La conséquence est que lorsque nous faisons réfléchir cette lumière spéciale sur les objets, capturons les résultats, et les convertissons en quelque chose que nous pouvons voir, la réaction est un peu différente de celle des couleurs plus hautes dans le spectre.

L'un des effets secondaires lorsque nous envoyons des infrarouges sur un humain est que nous pouvons détecter les veines près de la surface de la peau et d'autres caractéristiques comme détecter la graisse sur un t-shirt qui avait l'air impeccablement propre. Étant donné que le flux sanguin est la mesure précise que nous voulons quantifier, cette approche convient parfaitement à notre recherche de méthode pour détecter le rythme cardiaque. Après une petite recherche, vous trouverez que les infrarouges ont en fait été utilisés afin de scanner le corps humain et de détecter les passages du sang dans le système sanguin, mais seulement dans un cadre strictement médical. L'inconvénient d'utiliser l'infrarouge est que vous limitez les informations que vous recevez de la caméra et que vous devez ignorer la partie visible du spectre renvoyée par le flux d'images couleur classique RVB.

Bien sûr, la solution ultime est de combiner les trois sources d'informations ; observer les micromouvements, le flux sanguin infrarouge, et les changements de couleurs de la peau, pour en faire une série de variables de vérification et de régulation, afin de rejeter les faux positifs et de produire une lecture fiable du pouls.

IV - Comment la Technologie Intel® RealSense™ détecte votre pouls

À présent que vous en savez un peu plus sur la science de la détection du rythme cardiaque sans contact, nous allons explorer la façon d'implémenter cette fonctionnalité dans votre propre logiciel. Vous êtes libre de scanner les données brutes provenant de la caméra et d'implémenter l'une ou l'autre des techniques ci-dessus, ou grâce au SDK Intel RealSense vous pouvez plutôt implémenter votre propre détection du rythme cardiaque avec juste quelques lignes de code.

La première étape n'est pas spécifiquement liée à la fonction de détection du pouls, mais pour plus de clarté nous la traiterons ici afin que vous ayez une appréhension complète des interfaces qui vous seront nécessaires, et de celles que vous pouvez ignorer pour l'instant. Nous devrons d'abord créer une session PXC, un pointeur SenseManager, et un pointeur faceModule puisque nous utiliserons le système d'analyse faciale pour tenter de détecter le rythme cardiaque. Pour une version complète de ce code source, le meilleur exemple à étudier et compiler est l'exemple de Suivi de Visage (Face Tracking), qui contient le code ci-dessous, mais avec des fonctionnalités additionnelles comme la détection de gestes.

1. PXCSession* session = PXCSession_Create();

2. PXCSenseManager* senseManager = session->CreateSenseManager();

3. senseManager->EnableFace();

4. PXCFaceModule* faceModule = senseManager->QueryFace();

Une fois le ménage fait, et dès que vous avez accès à l'essentielle interface faceModule, vous pouvez ajouter les appels aux fonctions spécifiques au pouls, en commençant par la commande qui active le détecteur de pouls.

1. PXCFaceConfiguration* config=faceModule->CreateActiveConfiguration();

2. config->QueryPulse()->Enable();

3. config->ApplyChanges();

L'objet ActiveConfiguration englobe toute la configuration dont vous avez besoin pour le système Facial, mais la ligne spécifiquement relative à l'obtention du rythme cardiaque est la fonction QueryPulse()->Enable(), qui active cette partie du système et déclenche son fonctionnement.

L'ensemble final de commandes mène à la valeur que nous recherchons et, comme vous pouvez le voir ci-dessous, s'appuie sur une analyse de tous les visages qui ont été détectés par le système. Il ne part pas du principe qu'un seul utilisateur est assis devant l'ordinateur - quelqu'un pourrait regarder par-dessus votre épaule ou se tenir en arrière-plan. Votre logiciel doit se livrer à des vérifications supplémentaires, utiliser éventuellement les structures de données de gestes, pour déterminer quelle tête est la principale (peut-être la plus proche) et n'utiliser que le rythme cardiaque du visage de cet utilisateur. Ci-dessous se trouve le code qui ne fait pas ces distinctions, et se déplace simplement entre tous les visages détectés et mesure le rythme cardiaque de chacun, même s'il ne fait rien des valeurs dans cet exemple.

1. PXCFaceData* faceOutput = faceModule->CreateOutput();

2. const int numFaces = faceOutput->QueryNumberOfDetectedFaces();

3. for (int i = 0; i < numFaces; ++i)

4. {

5. PXCFaceData::Face* trackedFace = faceOutput->QueryFaceByIndex(i);

6. const PXCFaceData::PulseData* pulse = trackedFace->QueryPulse();

7. if (pulse != NULL)

8. {

9. pxcF32 hr = pulse->QueryHeartRate();

10. }

11. }

Vous pouvez ignorer la plupart du code, exceptée la partie trackedFace->QueryPulse() qui demande au système de travailler sur le dernier rythme cardiaque dans les données collectées jusqu'alors, et si une donnée est disponible, d'utiliser pulse->QueryHeartRate() pour interroger cette donnée et retourner le rythme cardiaque en battements par minute.

Une expression de surprise alors que l'estimation du pouls était absolument exacte.

En lançant l'exemple de Suivi de Visage (Face Tracking) inclus dans le SDK Intel RealSense et en désélectionnant tout ce qui est à droite hormis la détection et la pulsation, en appuyant sur démarrer, vous obtiendrez votre propre rythme cardiaque après 10 secondes en restant relativement immobile.

Une fois que vous vous serez débarrassé du code qui ne concerne pas le pouls dans l'exemple ci-dessus, vous pouvez l'utiliser comme une bonne base de code pour des expérimentations plus poussées de cette technique. Peut-être dessiner un graphique des données lues à travers le temps, ou ajouter du code pour que l'application tourne en arrière-plan et produise un son audible pour vous faire savoir que vous êtes trop détendu ou excité. Plus sérieusement, vous pouvez surveiller la précision et la résolution des données retournées pour déterminer si elles sont suffisantes pour votre application.

V - Trucs et astuces

V-A - À faire

- Pour de meilleurs résultats, non seulement pour la détection de votre rythme cardiaque, mais aussi pour tous les travaux de capture, utilisez la caméra avec de bonnes conditions d'éclairage (pas d'exposition au soleil) et restez relativement immobile durant la phase d'échantillonnage jusqu'à ce que vous obteniez un résultat précis.

- Comme le SDK actuel ne fournit qu'une seule fonction pour la détection du pouls, la porte est ouverte aux innovateurs pour qu'ils utilisent les données brutes afin d'obtenir des lectures plus précises et instantanées à partir de l'utilisateur. L'estimation actuelle du rythme cardiaque prend plus de dix secondes à calculer, pouvez-vous en écrire une qui réalise la mesure plus rapidement ?

- Si vous souhaitez réaliser une estimation du rythme cardiaque en extérieur, et que vous voulez écrire votre propre algorithme pour réaliser l'analyse, nous vous recommandons d'utiliser uniquement le flux de couleur pour détecter les changements de couleur de la peau.

V-B - À éviter

- N'essayez pas de détecter un rythme cardiaque avec toutes les options FaceTracking activées puisque cela réduira la qualité du résultat ou échouera à renvoyer une valeur. Vous aurez besoin d'une puissance de traitement disponible suffisante pour le module de Visage pour estimer précisément le rythme cardiaque.

- N'utilisez pas de technique de détection infrarouge en extérieur dans la mesure où un rayon de soleil direct, même faible, faussera totalement le signal infrarouge de retour, rendant toute analyse impossible.

VI - Résumé

Comme évoqué au début de cet article, les bénéfices de la détection du rythme cardiaque ne sont pas immédiatement visibles lorsqu'on les compare aux bénéfices des contrôles sans contact et du scan tridimensionnel, mais en combinant cette technique à d'autres informations sensorielles, une aide considérable peut être fournie aux utilisateurs lorsqu'ils en ont le plus besoin. Nous n'en sommes pas encore au stade où les ordinateurs peuvent enregistrer notre rythme cardiaque simplement en passant devant la fenêtre du cabinet du médecin, mais nous en sommes à la moitié du chemin et ce n'est qu'une question de temps et d'innovation future avant de voir ces applications dans notre monde moderne.

D'un point de vue personnel, vivant la vie d'une relique dévoreuse de code de la vieille école et surchargée de travail, ma santé et mon éthique globale de travail sont plus importantes pour moi aujourd'hui que dans ma jeunesse, et je suis toujours heureux d'obtenir de l'aide, quelle qu'en soit l'origine. Si cette aide prend la forme d'un ordinateur me harcelant en me disant : « réveille-toi, bois du café, regarde devant toi, n'oublie pas, ouvre une fenêtre, prends une pause, mange de la nourriture, vas marcher, joue à un jeu, vas voir le médecin tu n'as pas de pouls, écoute Mozart, et vas dormir » — surtout si c'est avec une jolie voix de synthèse — alors qu'il en soit ainsi.

Bien sûr, puisqu'il s'agit d'un ordinateur, si le harcèlement devient un peu trop persistant, vous pouvez toujours l'éteindre. Quelque chose me dit que si nous allons finir par apprécier ces rappels amicaux, sachant que derrière toute la logique froide, les ordinateurs ne font que ce que nous leur demandons de faire, et à la fin de la journée, nous pouvons tous profiter d'un petit coup de pouce, même les reliques dévoreuses de code de la vieille école.

Pour en savoir plus sur Intel RealSense, rendez-vous sur la Zone des Développeurs Intel ou sur la communauté Intel RealSense.

Découvrez également le SDK Intel RealSense et son forum dédié.

VII - Autres Ressources:

Intel RealSense Coding

VIII - À propos de l'auteur

Lorsqu'il n'écrit pas d'articles, Lee Bamber est le PDG de The Game Creators, une entreprise britannique spécialisée dans le développement et la distribution d'outils de création de jeux. Fondées en 1999, l'entreprise et la communauté environnante de créateurs de jeux sont à l'initiative de nombreuses marques populaires comme Dark Basic, The 3D Game Maker, FPS Creator, App Game Kit (AGK) et plus récemment, Game Guru.