FR 3155334 A1 20250516 FR 2312492 A 20231115 La présente invention concerne un procédé et un système de traitement de la représentation numérique d’un environnement visuel pour commander une interface haptique constituée par une ceinture lombaire présentant une surface active de NxM actionneurs, N et M étant des nombres entiers supérieurs ou égal à 10 comportant un protocole d’activation des actionneurs consistant à calculer pour chaque acquisition dudit environnement visuel une séquence de P trames d’activation desdits actionneurs ou P est un entier compris 2 à 1000, de préférence entre 5 et 50, chacune des trames correspondant à la représentation de l’environnement dans un plan de profondeur incrémental caractérisé en ce qu'il comporte en outre une étape de traitement consistant à appliquer une fonction correctrice de type contextuelle modifiant le protocole d’activation des pixels haptiques. Figure de l’abrégé : figure 1 Procédé de traitement de la représentation numérique d’un environnement visuel pour commander une interface haptique constituée par une ceinture lombaire Domaine de l’invention La présente invention concerne le domaine de l'aide à l'orientation de personnes souffrant de déficiences visuelles ou de personnes se déplaçant dans des environnements de très faible visibilité, par exemple des pompiers se déplaçant dans un bâtiment enfumé ou des militaires se déplaçant dans l'obscurité. On connaît la solution basée sur la transmission d'information par un mode haptique, par exemple sous la forme d'un bracelet connecté. La technologie haptique utilise le sens du toucher pour faire passer une information. La société WearWorks® propose un bracelet intelligent nommé "Wayband"®, pour guider les aveugles. L'utilisateur commence par télécharger une application sur un téléphone intelligent associé et énonce l'adresse souhaitée. Le bracelet relié à un système GPS guide l'utilisateur à destination. Quand l'utilisateur se trompe d'itinéraire, le bracelet vibre. Il cesse de vibrer une fois sur le droit chemin. Le langage tactile, sensible, plus intuitif et peu intrusif, soulage l'ouïe, sens sur-sollicité chez les malvoyants. Etat de la technique La demanderesse a elle-même breveté par le brevet FR3132208A1 un système d’aide à l'orientation comprenant des moyens d'acquisition d'un environnement visuel réel ou virtuel, des moyens d'interface homme-machine non visuelle et des moyens de traitement de la représentation numérique dudit environnement visuel pour fournir un signal électrique de commande d'une interface haptique, lesdits moyens de traitement de la représentation numérique consistant à extraire périodiquement au moins un motif numérique d'activation impulsionnel d'un sous-ensemble des picots de ladite zone haptique caractérisé en ce que ladite interface haptique est constituée par une ceinture lombaire présentant une surface active de NxM actionneurs, N et M étant des nombres entiers supérieurs ou égal à 10, et en ce que ledit moyen de traitement fourni pour chaque acquisition dudit environnement visuel une séquence de P trames d’activation desdits actionneurs ou P est un entier compris 2 à 1000 et de préférence entre 5 et 50, chacune des trames correspondant à la représentation de l’environnement dans un plan de profondeur incrémental. La demande de brevet WO2018058936A1 propose une ceinture de guidage pour aveugles comprenant un module radar laser disposé sur la ceinture et configuré pour détecter un environnement environnant et pour former des informations de position d'un objet mesuré. Un dispositif de commande reçoit et traite les informations de position de l'objet mesuré détecté par le module radar laser et forme une instruction d'alerte ; et un système d'alerte qui est commandé par l'instruction d'alerte pour délivrer des informations d'alerte concernant une condition d'environnement ambiant. Le porteur porte une ceinture de guidage aveugle, c'est-à-dire que le corps de ceinture de la ceinture de guidage aveugle est porté à la taille, et la direction dans laquelle l'utilisateur avance pendant la marche peut être définie comme l'avant du corps de la taille ceinture, et la direction dans laquelle l'utilisateur utilise le dos est définie comme Sur le dos du corps de ceinture, le deuxième module lidar est disposé à l'avant du corps de ceinture. Dans le processus d'utilisation du personnel, par rapport à d'autres informations de direction, il est plus important d'utiliser les informations de direction du personnel dans le sens de l'avancement. Par conséquent, le deuxième module radar laser peut-être placé à l'avant du corps de la ceinture, et l'avant peut être une plage. Par exemple, le corps de la ceinture est également divisé en une première partie et une seconde partie, la première partie étant la partie avant du corps de ceinture, et la seconde partie étant la partie arrière du corps de ceinture. Le second module radar laser peut être disposé à n'importe quelle position sur l'avant du corps de ceinture. Facultativement, la position centrale de la première partie du corps de ceinture est déterminée à l'avance, et le second module de radar laser est disposé au centre de la première partie du corps de ceinture, de sorte que le second module de radar laser balaye la route condition du cap de l'utilisateur dans une plage plus large. La demande de brevet WO2021/099993 décrit un autre exemple de dispositif d'aide à l'orientation pour des personnes malvoyantes, comprenant une pluralité d'éléments de signalisation vibrants applicables à un élément support, tel qu'une ceinture ou similaire, à porter au niveau de la taille par un utilisateur, au moins l'un desdits éléments de signalisation étant conçu pour être positionné vers le côté droit de l'utilisateur et au moins l'un desdits éléments de signalisation étant adapté pour être positionné vers le côté gauche de l'utilisateur, le dispositif comprenant une unité de localisation munie d'une antenne. Ladite unité de localisation est logée dans un boîtier dédié et séparé des éléments de signalisation et pourvu de moyens de fixation au corps de l'utilisateur et/ou d'un chien-guide dans une position éloignée de l'élément support, les éléments de signalisation étant pourvus d'au moins une unité d'émission-réception pour la connexion avec ladite unité de localisation. Inconvénients de l’art antérieur Ces solutions ne fournissent que des informations très limitées et ne permettent pas à l’utilisateur de se faire une représentation suffisante de l’environnement dans lequel il évolue. En particulier, de percevoir les distances des obstacles, leur étendue et leur hauteur ce qui conduit à un sentiment permanent d’insécurité rendant très pénible tout déplacement. Solution apportée par l’invention Afin de remédier aux inconvénients de l’art antérieur, la présente invention concerne selon son acception la plus générale un procédé d’aide à l'orientation présentant les caractéristiques techniques énoncées dans la revendication 1. L’invention concerne particulièrement un procédé de traitement de la représentation numérique d’un environnement visuel pour commander une interface haptique constituée par une ceinture lombaire présentant une surface active de NxM actionneurs, N et M étant des nombres entiers supérieurs ou égal à 10 comportant un protocole d’activation des actionneurs consistant à calculer pour chaque acquisition dudit environnement visuel une séquence de P trames d’activation desdits actionneurs ou P est un entier compris 2 à 1000, de préférence entre 5 et 50, chacune des trames correspondant à la représentation de l’environnement dans un plan de profondeur incrémental caractérisé en ce qu'il comporte en outre une étape de traitement consistant à appliquer une fonction correctrice de type contextuelle modifiant le protocole d’activation des pixels haptiques. Selon des variantes : - ledit protocole d’activation des actionneurs consiste à activer chaque actionneur A xy correspondant à un voxel V(xyz min , t) une fois par image I(t), sous forme de N séquences S i (t) successives , i étant un nombre entier variant entre 0 et N, chaque séquence consistant à activer les actionneurs A xy , i correspondant aux voxels V(xyz min , V i , t), V i correspondant à la distance D xy (t) du point de l’image P par rapport à la caméra d’acquisition de l’image I(t). - ladite fonction correctrice consiste à modifier la périodicité des images I(t) en fonction de la valeur V i du voxel V(xyz min , V i , t) le plus proche. - ladite fonction correctrice consiste à répéter la séquence S i (t) pendant la durée d’une image I(t). - ladite fonction correctrice consiste à pondérer la valeur V i de chaque voxel V(xyz min , V i , t), par un coefficient K xy , i,t en fonction de la distance dudit voxel V(xyz min , V i , t) par rapport à un point de référence V(X 0 , Y 0 , Z 0 ,t). - ladite fonction correctrice consiste à pondérer la valeur V i de chaque voxel V(xyz min , V i , t), par un coefficient K xy , i,t en fonction de la distance D xy (t) du point de l’image P par rapport à la caméra d’acquisition de l’image I(t). - ladite fonction correctrice consiste à pondérer la valeur V i de chaque voxel V(xyz min , V i , t), par un coefficient K xy , i,t en fonction de données provenant d’une source extérieur distincte de ladite caméra d’acquisition. - ladite fonction correctrice consiste à moduler la valeur V i de chaque voxel V(xyz min , V i , t), pour les valeurs de Y inférieures à une valeur seuil Y 0 , en affectant une valeur V H pour les zones du sol correspondant à un trou ou à une bosse, et une valeur V B sinon. L’invention concerne aussi un système d’aide à l'orientation comprenant des moyens d'acquisition d'un environnement visuel réel ou virtuel, des moyens d'interface homme-machine non visuelle et des moyens de traitement de la représentation numérique dudit environnement visuel pour fournir un signal électrique de commande d'une interface haptique constituée par une ceinture lombaire présentant une surface active de NxM actionneurs, N et M étant des nombres entiers supérieurs ou égal à 10, lesdits moyens de traitement de la représentation numérique consistant à extraire périodiquement au moins un motif numérique d'activation impulsionnel d'un sous-ensemble des picots de ladite zone haptique et à fournir pour chaque acquisition dudit environnement visuel une séquence de P trames d’activation desdits actionneurs ou P est un entier compris 2 à 1000 de préférence entre 5 et 50, chacune des trames correspondant à la représentation de l’environnement dans un plan de profondeur incrémental caractérisé en ce qu’il comporte un microcontrôleur commandant l’activation desdits actionneurs selon un procédé susvisé. Description détaillée d’un exemple non limitatif de réalisation de l’invention La présente invention sera décrite de manière plus détaillée en référence à des exemples non limitatifs de réalisation précisant les avantages et considérations susmentionnés. Une description plus particulière de l'invention brièvement décrite ci-dessous. FIG. 1 la FIG. 1 représente une vue schématique du système selon l’invention FIG. 2 la FIG. 2 représente une vue d’une image visuelle FIG. 3 la FIG. 3 représente une vue d’une image haptique FIG. 4 la FIG. 4 représente une vue d’une séquence de trames haptiques FIG. 5 la FIG. 5 représente une vue schématique d’un tunnel vertical FIG. 6 la FIG. 6 représente une vue schématique du champ de vue en fonction de la vitesse de déplacement FIG. 7 la FIG. 7 représente une vue schématique d’un tunnel horizontal Principe général de l’invention Le principe général de la présente invention consiste à procéder à une acquisition d’images et à un traitement décrit dans le brevet FR3132208A1 de la demanderesse, et d’appliquer une fonction correctrice modulant le protocole d’activation des pixels, chaque image I(t) se traduisant par une séquence de N trames. Une trame correspond à l’activation d’un sous-ensemble de pixels P(x, y, t, i) affectés d’une même valeur V i (t). Cette valeur V i (t) est calculée en fonction du protocole décrit dans le brevet FR3132208A1 de la demanderesse, modifié par une fonction corrective contextuelle calculée en fonction de différentes modalités décrite de manière non limitative ci-après. Rappel du protocole de base L’exemple développé ci-après, à titre non limitatif, comprend un moyen d’acquisition de l’environnement, par exemple une monture de lunettes (10) équipées de caméras (11, 12) servant à acquérir en temps réel des données sur l’environnement pour fournir des images numériques qui commande les actions d’un transducteur haptique. Le transducteur haptique génère des actions sous forme de pressions directement ou indirectement sur la peau par des actionneurs électromagnétiques ou électromécaniques, ou encore sous forme d’impulsions électriques, ou lumineuses). Il est rappelé que le système objet de l’invention peut aussi être utilisé pour des applications de jeux ou d’entraînement en réalité augmentée, avec des images fournies par une source vidéo. Un calculateur se charge de récupérer les images provenant de la partie Capteur, puis de générer une carte de profondeur 3D à partir de ces dernières. Elle transmet cette carte à un équipement haptique, qui comporte par exemple une grille de actionneurs ou picots (petits actionneurs linéaires pouvant se lever ou s’abaisser), intégrée dans une ceinture dorsale (20). Cette ceinture (20) est équipée d’un ensemble de actionneurs disposés sur des supports (21 à 24) pour former une matrice, par exemple de 20 x 40 pixels. Ces actionneurs sont disposés pour former une matrice régulière, avec un pas constant de préférence. Un circuit électronique reçoit les signaux visuels et assure les traitements pour commander les actionneurs afin de produire sur le dos de l’utilisateur des sensations faciles à interpréter après une période d’apprentissage. La ceinture lombaire (20) peut être portée sur un vêtement en tissu léger (chemise, polo, blouse) ou à même la peau. La surface de la matrice active formée par les actionneurs couvre une région lombaire étendue pour bénéficier d’une bonne résolution et d’un confort d’utilisation satisfaisant. La restitution de l’image de l’environnement réel en images haptiques consiste à diviser la carte de profondeur calculée à partir de l’image visuelle en plusieurs calques successifs déterminant des images virtuelles ou haptiques commandant l’activation de l’équipement haptique : ainsi, les objets les plus proches sont d’abord affichés, puis les objets légèrement plus éloignés, et ainsi de suite jusqu’à arriver à la distance de vue maximale choisie (avoisinant généralement les 10 mètres). Ainsi, on dispose en quelque sorte d’un scan de l’environnement qui s’enfonce progressivement et qui affiche à chaque instant ce qu’il rencontre. Ce scan se traduit par une salve d’images virtuelles d’une durée d’environ 100 millisecondes, composée d’une dizaine d’images haptiques correspondant à des plans consécutifs, avant de reprendre avec une nouvelle salve correspondant à l’environnement nouveau, consécutif du déplacement de l’utilisateur ou du changement d’orientation de l’image réelle, du fait d’une modification de la position de la tête ou de l’image vidéo. Traitement de l’image visuelle Les caméras (11, 12) procèdent à l’acquisition d’images permettant de reconstruire une image numérique dotée d’informations de profondeur. Un premier traitement consiste à construire une carte de profondeur (en niveau de gris). Pour chaque pixel de l’image optique (100) est transcrite une image haptique (200) en niveau de gris en fonction de la distance de chaque point par rapport à la caméra. L'information de profondeur peut aussi être déterminée avec une seule caméra avec un traitement d’image approprié. Il est à noter que cette image haptique (200) pourrait également, sans sortir de l’invention, être calculée à partir de l’image numérique fournie par un lidar. Cette image haptique (200) fait ensuite l’objet d’une décomposition en une séquence de trames haptiques (301 à 307) incrémentale, chacune correspondant à un plan de profondeur. La première trame haptique (301) de la séquence correspond aux zones d’obstacle dans le plan le plus proche de l’utilisateur, la seconde première trame haptique (301) de la séquence correspond aux zones d’obstacle dans le plan le plus proche de l’utilisateur, la trame haptique (302) suivante correspondant aux zones d’obstacle dans le plan suivant, décalé du précédent d’un pas, par exemple de 30 centimètres en distance et ainsi de suite. Le niveau de gris des trames haptiques (301 à 307) code le type d’action de l’actionneur correspondant, par exemple la fréquence de la vibration ou la durée de la vibration pendant la durée d’activation de la trame haptique correspondante. Une image haptique (200) est ainsi traduite en un balayage temporel de trames haptiques (301 à 307) qui sont intégrées par l’utilisateur pour percevoir une représentation en profondeur de son environnement. D’autres traitements sont appliqués pour améliorer l’intelligibilité des perceptions tactiles : Redressement de l’image visuelle (100) pour créer une image de synthèse ramenée à une observation selon un axe horizontal descendu au niveau des jambes de l’utilisateur, à quelques dizaines de centimètres du sol Renforcement sur l’image visuelle (100) des pixels correspondant à des obstacles de petites dimensions, afin d’occuper au moins un pixel de l’image haptique (200). Retraitement des trous pour renforcer le niveau de gris de la zone correspondante sur l’image haptique (200) Renforcement du niveau de gris sur l’image haptique (200) de zone d’intérêt déterminée par une reconnaissance automatique par exemple par apprentissage supervisé. Exemples de traitements pour la production de l’image haptique (200). Des exemples de traitement seront décrits ci-après, avec les variables suivantes : M désigne la matrice haptique appliquée à l’utilisateur H désigne la hauteur de cette matrice haptique M (en pixels) W désigne la largeur de cette matrice haptique M (en pixels) p désigne le niveau de précision DM désigne la carte de profondeur récupérée par les capteurs (11, 12) dmH désigne hauteur de la carte de profondeur récupérée (en pixels) = p*H dmW désigne largeur de la carte de profondeur récupérée (en pixels) = p*W FOVv désigne le champ de vision vertical de la caméra utilisée (en degrés) FOVh désigne le champ de vision horizontal de la caméra utilisée (en degrés) hu désigne la hauteur à laquelle est placée la caméra (taille de l’utilisateur prise au niveau des yeux) DISTANCE_MAX désigne la distance de vue maximale réglée par l’utilisateur SPEED désigne la vitesse d’affichage réglée par l’utilisateur PAUSE_TIME désigne le temps de pause entre l’affichage de 2 images (réglé par l’utilisateur) MAT[x, y] correspond à la valeur de la matrice MAT aux coordonnées [x, y]. MAT[x] correspond à la xième colonne de la matrice MAT LIST[x] correspond à la xième valeur de la liste LIST x = f(arguments) signifie que la valeur de x est fonction de 1 ou plusieurs arguments (relation de proportionnalité) // signifie que ce qui est écrit après est un commentaire Etape 1 : Obtention d’une carte de profondeur Cette première étape consiste à calculer une carte de profondeur de profondeur de taille dmW*dmH à partir des deux images acquises par les caméras (11) et (12) ou par un lidar, ou par une source d’images virtuelles binoculaires. Il s’agit de traitements connus, comportant généralement : Une étape d’acquisition de deux images de la même scène au même moment par deux caméras (11, 12) dont l’écartement est connu, ou bien d'images successives provenant du même capteur. Une étape de calibrage consistant à déterminer les paramètres internes et externes du modèle géométrique du capteur stéréoscopique Une étape de mise en correspondance de pixels pour retrouver sur les deux images les paires de pixels qui correspondent à la projection d’un même élément de la scène, Une étape de reconstruction 3D consistant à calculer pour chaque pixel la position dans l’espace du point qui s’est projeté en ce pixel. Le résultat de cette première étape est une image visuelle (100) de taille dmW*dmH où chaque point est constitué par un voxel définit par ses coordonnées dans l’espace dont l’origine est au niveau de la tête de l’utilisateur, et les axes x et y perpendiculaires à la ligne de visée des caméras, et la coordonnées z la distance par rapport à la tête de l’utilisateur. Présentation de fonctions correctrices contextuelles La description qui suit concerne plusieurs exemples de fonctions correctrices contextuelles : Variation de l’affichage suivant la distance de l’objet le plus proche Flou de mouvement Déformation des images Déformation des profondeurs Captation 3D centralisée Affichage au-delà de la vitesse de capture des caméras Affichage de deux canaux d’information Affichage de trou dans le sol ou absence d’information Partie pouvant être des secrets industriels que nous voulons déposer Affichage d’une meilleure résolution que du nombre de pixel Multitâche Simplification des images. Affichage contournant la limitation de vitesse d’activation des actionneurs. Affichage adaptatif Comme exposé ci-dessus, l’invention concerne l’affichage des images par balayage. L’invention porte sur la continuité de l’affichage de la profondeur par balayage. Chaque actionneur s’active une fois par image. On affiche d’abord ce qui est proche puis ce qui est loin. Chaque pixel(x,y) a une valeur associée qui est la distance. A t=0 on affiche les pixels ayant la valeur 0 A t=1 on affiche les pixels ayant la valeur 1 … Et on revient à 0 pour afficher une nouvelle image. Les pseudo codes dans la description des exemples détaillés qui suivent sont des exemples d’implémentation pour expliquer le principe des fonctions correctrices correspondantes. Variation de l’affichage suivant la distance de l’objet le plus proche Selon un premier exemple de réalisation, la fonction corrective contextuelle commande la durée d’une image en fonction de la distance de l’objet le plus proche par un traitement numérique sur les données numériques. A cet effet, le traitement des données fournies par la caméra à un instant t détermine le voxel V(x,y, z, t). En fonction de la distance du voxel V(xyz min , t) le plus proche, la durée séparant deux images consécutives varie entre une valeur minimale, par exemple 1 milliseconde lorsque le voxel V(xyz min , t) est à une distance minimale, par exemple 10 cm et une valeur maximale, par exemple 2 secondes lorsque le voxel V(xyz min , t) est à une distance maximale, par exemple 100m. Les N trames défilent pendant la durée de chaque image, avec une fréquence qui s’accélèrent lorsque l’utilisateur se rapproche d’un obstacle. Le pseudo code est par exemple le suivant : T est la durée d’une image (entre 1ms et 3 secondes) D est la distance que couvre l’image sur T (entre 10cm et 100m) V est la vitesse de l’affichage, pendant X ms, l’affichage couvre f(X) m. (1cm/s à 1km/s) T= VxD dMin =distance du voxel le plus proche. La vitesse d’affichage varie suivant le voxel (x, y, z, t) le plus proche de l’utilisateur. La vitesse d’affichage minimum et maximum est défini. (la vitesse de balayage de l’affichage en km/h varie suivant la distance de l’objet le plus proche) V=f( dMin ) avec un V minimum et un V maximum T est inchangé et donc D est changé La durée d’affichage d’un balayage dépend de la distance du voxel le plus proche. La durée d’affichage a un minimum et un maximum. (la durée d’une image composée plusieurs calques dépend de la distance de l’objet le plus proche) T=f(dMin) avec un T minimum et un T maximum V est inchangé et donc D est impacté Selon une variante, la distance d’affichage maximum dépend de la distance du voxel le plus proche. Plus l’objet le plus proche est loin plus on perçoit sur une grande distance. Par exemple distance max = X fois la distance de l’objet le plus proche. Le pseudo code est par exemple le suivant : D=f( dMin ) avec un D minimum et un T maximum V est inchangé et T est impacté Une autre variante consiste à commander l’omission d’une partie de l’affichage. L’affichage peut commencer au voxel le plus proche et/ou finir au voxel le plus loin. Début de l’affichage = f( dMin ) avec un début d’affichage maximum dMax est le voxel le plus loin Fin de l’affichage = f( dMax ) avec un Fin d’affichage minimum. D=Fin de l’affichage-Début de l’affichage V est inchangé et donc T est impacté Ces variantes peuvent être combinées. Avec le gris c’est si ces modifications ne sont pas combinées si tout est combiné : V=f( dMin ) avec un V minimum et un V maximum T=f( dMin ) avec un T minimum et un T maximum ( D =f( dMin ) avec un D minimum et un T maximum ) ou ( Début de l’affichage = f( dMin ) avec un début d’affichage maximum Fin de l’affichage = f( dMax ) avec un Fin d’affichage minimum. dMax est le voxel le plus loin D=Fin de l’affichage-Début de l’affichage ) Fonction corrective « flou de mouvement Cette variante a pour but de créer un flou de mouvement pour mettre en évidence les objets en mouvement. Plus un objet se déplace vite, plus il sera étiré dans la direction de son déplacement. Le flou de mouvement est provoqué par l’affichage des images plus lent que la vitesse de capture. Ainsi l’image à afficher est mise à jour plusieurs fois pendant l’affichage d’une seule image. A chaque mise à jour de l’image à afficher, chaque voxel est actualisé par la valeur du voxel le plus proche entre l’image à afficher et la nouvelle image. Chaque voxel est affiché une seule fois. Le pseudo code est par exemple le suivant : Matrice à afficher[ x,y ]=Distance du voxel (mise à jour plus fréquemment que l’image affichée) Matrice affichée[ x,y ]=Distance du voxel Actuators déjà activés[ x,y ]=0 //0 pour actuator qui n’a pas été activé, 1 pour actuator ayant déjà été activé Actuators activés[ x,y ]=0 //0 pour actuator non activé, 1 pour actuator devant s’activer Distance actuelle = 0 Distance d’incrémentation = x // distance en cm compris entre 0.1 et 1000 Distance maximum = x // compris entre 2 et 10 000 fois la distance d’incrémentation while ( Distance actuelle for(i=0;i for(j=0;j if( Matrice affichée[ i,j ] i,j ]) Matrice affichée[ i,j ]=Matrice à afficher[ i,j ] if( Matrice affichée[ i,j ] Actuators déjà activés[ i,j ] == 0 ) Actuators activés[ i,j ]=1 Actuators déjà activés[ i,j ]=1 } activation des actuators ( Actuators activés) attendre( x ms)//x entre 0,1 et 1000 Distance actuelle + = Distance d’incrémentation Actuators activés[ x,y ]=0 //remise de toutes les valeurs à 0 Une variante concerne un flou de mouvement artificiel, par rapport à la vitesse de déplacement des objets dans l’environnement créer un flou de mouvement pour mettre plus en évidence les objets en mouvement. Les objets peuvent être représentés jusqu’à 10 fois leurs tailles sans le flou de mouvement. Fonction corrective « Déformation des images » Les pixels au centre de l’affichage sont grossis et plus on va sur les bords des images plus ils sont réduits. La déformation varie aussi suivant l’axe vertical. Un pixel peut être grossi jusqu’à 10 fois et réduit par facteur 10. Cette fonction commande une déformation variable suivant la distance des voxels. Si une déformation peut être réalisée par une seule lentille, il faut imaginer que pour chaque distance de voxel différente s’applique une lentille différente. Plus les pixels sont loin, plus les déformations sont importantes. L’impact des déformations des voxels va de x100 à diviser par 100. Ces déformations vont en complément des éléments rogner suivant les revendications du brevet FR3132208A1. Fonction corrective « Déformation des profondeurs » Cette fonction corrective commande l’affichage des distances de manière non linéaire. La profondeur est actuellement affichée de manière linéaire et il faut la convertir pour compresser les distances éloignées. Par exemple passer a une précision de la perception en % de la distance du pixel et non une précision en m. Donc un calque qui affiche des voxels 10ms plus tard signifie que c’est x% plus loin que le précédent et non x mètre plus loin. Le pseudo code est par exemple le suivant : Valeur affichée pour la distance = f( Distance du Voxel) Fonction corrective « Captation 3D centralisée » La capture d’image 3D se fait actuellement en local et en temps réel ou presque. Pour que les images à afficher soient de bien meilleure qualité, cette fonction corrective commande l’affichage fait d’images de profondeurs collaboratives. Chaque personne qui regarde avec le dispositif collecte des données donc on sait exactement où il est et ce qu’il regarde, il envoie son image de profondeur au serveur qui pourra affiner son modèle et lui reçoit l’image de profondeur calculée par toutes les personnes qui sont déjà passées par là. Et pour la latence, il est facile de prédire ce que la personne va avoir dans son champ de vision dans la prochaine minute et donc de lui envoyer en avance les objets qu’il verra. Fonction corrective « Affichage au-delà de la vitesse de capture des caméras » Cette fonction corrective commande l’affichage des images plus rapidement que les capacités de perception des capteurs donc redondance d’image. Affichage de la dernière image capturée en boucle. Le pseudo code est par exemple le suivant : Matrice à afficher[ x,y ] //contient les valeurs à afficher Matrice affichée[ x,y ] while ( true ) Matrice affichée[ x,y ]=Matrice à afficher[ x,y ] Afficher( Matrice affichée[ x,y ]) Alternativement, cette fonction corrective commande la prédiction des images suivantes par rapport aux images déjà calculées (prédiction donc des erreurs). Le pseudo code est par exemple le suivant : Matrice à afficher[t,x,y] //t correspond au numéro de l’image. Contient les x images. Matrice affichée[x,y] while(true) Matrice affichée[x,y]=prédiction de la prochaine image(Matrice à afficher[t,x,y]) Afficher(Matrice affichée[x,y]) Alternativement, cette fonction corrective commande l’affichage retardé un peu les images affichées pour afficher des transitions entre chaque image (pas de prédiction donc c’est du certain ou presque). Le pseudo code est par exemple le suivant : Matrice à afficher[ t,x ,y ] //t correspond au numéro de l’image. Contient les x dernière images( entre 2 et 10). Matrice affichée[ x,y ] t intermédiaire=0 // pourcentage de la progression de l’affichage entre l’avant dernière image et la dernière while ( true ) Matrice affichée[ x,y ]=prédiction d’image(Matrice à afficher[ t,x,y ],t intermédiaire) Afficher( Matrice affichée[ x,y ]) t intermédiaire+=x //x calculé pour que 100% correspond à l’avant dernier affichage avant d’avoir la nouvelle image à afficher. if( t intermédiaire>1) t intermédiaire = 0 Fonction corrective « Affichage de deux canaux d’information ». Dans l’art antérieur, la distance est affichée comme un écran en noir et blanc qui affiche que la luminosité. Le procédé selon l’invention présente la capacité d’afficher deux canaux à la fois, donc comme un daltonien. Les canaux peuvent afficher : La profondeur, la luminosité, le rouge, le vert, le bleu, le cyan, le magenta, le jaune, la teinte, la vitesse, la taille des objets, les matières. Le pseudo code est par exemple le suivant : Image à afficher[ x,y ]={Canal1,Canal2} Affichage par balayage canal 1 T=x // durée d’une image t =0 // moment actuel while(t for(i=0;i for(j= 0;j y;j ++){ if( Image à afficher[ i,j ].Canal1==t) activerSolenoide ( i,j ) //activation d’une impulsion du actionneur } } attendre (y)//durée à attendre t +=y } Canal 2 Un nombre d'impulsions de l’actionneur au moment de son activation par rapport aux règles d’affichage par balayage. Ce nombre d’impulsion correspond à la valeur à transmettre. Le pseudo code est par exemple le suivant : activerSolenoide ( i,j )//est remplacé par activerSolenoideXImplusion ( i,j ) activerSolenoideXImplusion ( i,j ){//active plusieurs fois chaque actionneur for( k=0;k i,j ].canal2;k++){ activerSolenoide ( i,j ) attendre (x) } } Une fréquence avec un nombre d’impulsion défini suivant la valeur à transmettre au moment du calque. La fréquence donne la valeur transmise. Le pseudo code est par exemple le suivant : activerSolenoide ( i,j )//est remplacé par activerSolenoideXFrequence ( i,j ) activerSolenoideXFrequence ( i,j ){//active plusieurs fois chaque actionneur for (k=0;k x;k ++){//x compris entre 1 et 20 activerSolenoide ( i,j ) attendre( 1/Image à afficher[ i,j ].canal2) } } Un nombre d'impulsions et une fréquence dépendant de la valeur à transmettre au moment du calque. La fréquence et le nombre d'impulsions donnent la valeur transmise. Le pseudo code est par exemple le suivant : activerSolenoide ( i,j )//est remplacé par activerSolenoideXImpulsion&Frequence ( i,j ) activerSolenoideXImpulsion &Frequence ( i,j ){//active plusieurs fois chaque actionneur for( k=0;k i,j ].canal2* x;k ++){//x facteur pour faire une correspondance cohérente entre les fréquence et le nombre d’impulsion activerSolenoide ( i,j ) attendre( 1/Image à afficher[ i,j ].canal2) } } Selon une variante, la variable à transmettre est transmise par le ratio du nombre de fois que l’actionneur s’affiche sur plusieurs images. Par exemple, sur 10 images successives affichées, l’actionneur s’active 5 fois sur le calque prévu donc une image sur deux. L’information transmise est donc 50%. Le pseudo code est par exemple le suivant : T=x // durée d’une image for (k=0;k kMax;k ++){// kMax prenant une valeur entre 1 et 100 t =0 // moment actuel while(t for(i=0;i for(j= 0;j y;j ++){ if( Image à afficher[ i,j ].Canal1==t && k multiple de l'arrondi ( kMax /Image à afficher[ i,j ].Canal2)) activerSolenoide ( i,j ) } } attendre (y)//durée à attendre t +=y } } D’autres variantes consistent à informer des informations transmises par les canaux grâce à des couleurs projetées sur les lunettes ou la rétine. Régulièrement (entre 1 et 120 secondes), la couleur est affichée pour informer que les informations du canal 1 et/ou du canal 2 correspondent à x information. Un filigrane sur les images affichées peut informer des données contenues dans chaque canal. Le filigrane peut informer du type de donné d'un ou des deux canaux. Fonction corrective « Affichage de trou dans le sol ou absence d’information » Selon cette variante, un pourcentage du bas de l’affichage est exploité pour afficher les hauteurs négatives, par exemple une descente de trottoir, un trou dans le sol. Ainsi au lieu d’afficher en permanence le sol, on affiche que quand il n’y plus le sol. Le pseudo code est par exemple le suivant : Matrice à afficher[ x,y ]=z //matrice source Trou[ x,z ]=y // la matrice contient la profondeur estimée de chacun des points du plan correspond à celui sur lequel marche l’utilisateur, la profondeur va de 0 à Variable1% de y. Pour un Variable1% correspondant l’ordonnée consacrée à l’information des trous TrouEnXY [ x,y ]= ConversionDeLaMatrice (Trou[ x,z ]) //Converti la matrice pour qu’elle passe au format x,y = z Matrice affichée[x,y* Variable1% ]=Concaténer( TrouEnXY [ x,y ],Matrice à afficher[ x,y ]) Selon une variante, un pourcentage du bas de l’affichage est exploité pour afficher le relief du sol. Qu’il y ait une bosse ou un trou dans le sol. Le pseudo code est par exemple le suivant : Matrice à afficher[ x,y ]=z //matrice source Trou[ x,z ]=y // la matrice contient la profondeur estimée de chacun des points du plan correspond à celui sur lequel marche l’utilisateur, la profondeur va de 0 à Variable1% de y. Pour un (Variable1+Variable 2)% correspondant l’ordonnée consacrée à l’information du relief du sol TrouEnXY [ x,y ]= ConversionDeLaMatrice (Trou[ x,z ]) //Converti la matrice pour qu’elle passe au format x,y = z Bosse[ x,z ]=y // la matrice contient la hauteur positive estimée de chacun des points du plan correspond à celui sur lequel marche l’utilisateur, la profondeur va de 0 à Variable2% de y. Pour (Variable1+Variable 2)% correspondant l’ordonnée consacrée à l’information du relief du sol BosseEnXY [ x,y ]= ConversionDeLaMatrice (Bosse[ x,z ]) //Converti la matrice pour qu’elle passe au format x,y = z Matrice affichée[ x,y * (Variable1+Variable2)% ] = Concaténer( TrouEnXY [ x,y ], BosseEnXY [ x,y ], Matrice à afficher[ x,y ] ) Affichage d’une meilleure résolution que du nombre de pixel L’utilisation de plusieurs images pour afficher une meilleure résolution lorsque la vitesse d’affichage est très rapide. Chaque pixel affiché correspond un ensemble de pixel à afficher. Pour chaque image affichée, un pixel affiché correspond à un des pixels qu’il doit représenter sélectionné suivant un pattern. L’ensemble des images affichées, couvrent une grande partie si ce n’est tous les pixels qu’il doit représenter. En moyenne les valeurs du pixel correspondent à la valeur moyenne des pixels qui représente ici le pixel vaut une fois 0 et une fois 1 soit 0.5 et il représente les pixels 0 et 1 soit aussi 0.5. Le cerveau rassemble les objets par leur plus grand ensemble. Donc le cerveau va percevoir plus de pixel qu’afficher. Multitâche Le multitâches permettra comme sur un ordinateur d’avoir plusieurs fenêtres de visible en même temps. Notre cerveau étant capable d’analyser qu’une forme/image à la fois. Si l’écran est séparé en plusieurs zones, notre cerveau sera capable avec beaucoup d’apprentissage d’analyser la zone que l’on veut mais la technologie ne sera pas suffisante pour offrir une résolution décente. L’écran ne sera pas séparé en plusieurs zones mais en période d’affichage. Un peu comme un processeur avec un seul cœur qui séquence le traitement de plusieurs tâches pour les traiter « en même temps », ou comme nous le faisons avec notre cerveau. Nos yeux changent brutalement de cible et nous analysons immédiatement ces informations sans les mélanger avec les précédentes. Fonctionnement : Sur une longue période (exemple 1 seconde) pour deux vidéos/images à afficher : Les images alternent à la vitesse d’affichage de l’écran donc par exemple si l’écran affiche à 30 images par seconde, les images impaires sont l’image 1 et les images paires sont l’image 2. Chacune des images seront affichées 15 fois. Par courtes périodes, l’affichage 1 et 2 alterne tous les x ms. Le nombre d’affichage en même temps est compris entre 1 et 5. L’importance des affichages peut être variable, des affichages peuvent être affichés plus que d’autres. L’importance varie entre 1 et 100. 100 signifie que l’affichage apparaît 100 fois plus qu’un affichage d’une importance de 1. Simplification des images Une variante pour la simplification des images consiste à supprimer des pixels au milieu de pixels similaires pour réduire la consommation énergétique et améliorer la perception et à garder les contours inchangés et supprimer des pixels suivant un pattern à l’intérieur de ces formes. Par exemple pour un calque 0011111 0011111 0001111 0001111 0000000 devient 0011111 0010101 0001011 0001111 0000000 Affichage contournant la limitation de vitesse d’activation des actionneurs Les images activent qu’un actionneur sur x (entre 2 et 4). Par exemple pour afficher un actionneur sur deux. Les images paires affichent les actionneurs qui respectent la condition : Si (x est pair et y pair) ou (x est impair et y est impair) Et les autres actionneurs pour les images impaires. Suivant un pattern cherchant à activer le maximum d’actionneur présent sur le contour des formes tout en ayant jamais un actionneur activé plus que tout les x images. Pour un x compris entre 2 et 4. Ainsi l’affichage peut être plus rapide et/ou consommer moins d'énergie Affichage adaptatif Une autre variante consiste à adapter l'affichage à l'environnement pour que dans un environnement calme sans beaucoup de changement, l’affichage soit plus “léger”, consomme moins et use moins les composants. Un environnement calme est un environnement qui n’évolue peu (déplacement d’objet, apparition et disparition d’objet) et dont les capteurs ne se déplacent peu ou lentement. L’adaptation de la vitesse d’affichage permet de réduire jusqu’à 1% de sa vitesse de fonctionnement. Avec la réduction du nombre de pixel actif, chaque image peut avoir jusqu’à 90% des actuateurs inactifs et les actuateurs inactifs changent constamment. ANNEXE Exemple d’algorithme pour le traitement du champ de vision horizontal Exemple d’algorithme pour l’application de l’image haptique Exemple d’algorithme pour l’application de l’image haptique accélérée – Procédé de traitement de la représentation numérique d’un environnement visuel pour commander une interface haptique constituée par une ceinture lombaire présentant une surface active de NxM actionneurs, N et M étant des nombres entiers supérieurs ou égal à 10 comportant un protocole d’activation des actionneurs consistant à calculer, pour chaque acquisition par une caméra dudit environnement visuel, une séquence de P trames d’activation desdits actionneurs ou P est un entier compris 2 à 1000, de préférence entre 5 et 50, chacune des trames correspondant à la représentation de l’environnement dans un plan de profondeur incrémental caractérisé en ce qu'il comporte en outre une étape de traitement consistant à appliquer une fonction correctrice de type contextuelle modifiant le protocole d’activation desdits actionneurs. - Procédé de traitement de la représentation numérique d’un environnement visuel pour commander une interface haptique constituée par une ceinture lombaire selon la revendication 1 caractérisé en ce que ledit protocole d’activation desdits actionneurs consiste à activer chaque actionneur A xy correspondant à un voxel V(xyz min , t) une fois par image I(t), sous forme de N séquences S i (t) successives , i étant un nombre entier variant entre 0 et N, chaque séquence consistant à activer les actionneurs A xy , i correspondant aux voxels V(xyz min , V i , t), V i correspondant à la distance D xy (t) du point de l’image P par rapport à la caméra d’acquisition de l’image I(t). - Procédé de traitement de la représentation numérique d’un environnement visuel pour commander une interface haptique constituée par une ceinture lombaire selon la revendication 1 caractérisé en ce que ladite fonction correctrice consiste à modifier la périodicité des images I(t) en fonction de la valeur V i du voxel V(xyz min , V i , t) le plus proche. - Procédé de traitement de la représentation numérique d’un environnement visuel pour commander une interface haptique constituée par une ceinture lombaire selon la revendication 2 caractérisé en ce que ladite fonction correctrice consiste à répéter la séquence S i (t) pendant la durée d’une image I(t). - Procédé de traitement de la représentation numérique d’un environnement visuel pour commander une interface haptique constituée par une ceinture lombaire selon la revendication 1 caractérisé en ce que ladite fonction correctrice consiste à pondérer la valeur V i de chaque voxel V(xyz min , V i , t), par un coefficient K xy , i,t en fonction de la distance dudit voxel V(xyz min , V i , t) par rapport à un point de référence V(X 0 , Y 0 , Z 0 ,t). - Procédé de traitement de la représentation numérique d’un environnement visuel pour commander une interface haptique constituée par une ceinture lombaire selon la revendication 1 caractérisé en ce que ladite fonction correctrice consiste à pondérer la valeur V i de chaque voxel V(xyz min , V i , t), par un coefficient K xy , i,t en fonction de la distance D xy (t) du point de l’image P par rapport à la caméra d’acquisition de l’image I(t). - Procédé de traitement de la représentation numérique d’un environnement visuel pour commander une interface haptique constituée par une ceinture lombaire selon la revendication 1 caractérisé en ce que ladite fonction correctrice consiste à pondérer la valeur V i de chaque voxel V(xyz min , V i , t), par un coefficient K xy , i,t en fonction de données provenant d’une source extérieur distincte de ladite caméra d’acquisition. - Procédé de traitement de la représentation numérique d’un environnement visuel pour commander une interface haptique constituée par une ceinture lombaire selon la revendication 1 caractérisé en ce que ladite fonction correctrice consiste à moduler la valeur V i de chaque voxel V(xyz min , V i , t), pour les valeurs de Y inférieures à une valeur seuil Y 0 , en affectant une valeur V H pour les zones du sol correspondant à un trou ou à une bosse, et une valeur V B sinon. - Système d’aide à l'orientation comprenant des moyens d'acquisition d'un environnement visuel réel ou virtuel, des moyens d'interface homme-machine non visuelle et des moyens de traitement de la représentation numérique dudit environnement visuel pour fournir un signal électrique de commande d'une interface haptique constituée par une ceinture lombaire présentant une surface active de NxM actionneurs, N et M étant des nombres entiers supérieurs ou égal à 10, lesdits moyens de traitement de la représentation numérique consistant à extraire périodiquement au moins un motif numérique d'activation impulsionnel d'un sous-ensemble d’actionneurs de ladite zone haptique et à fournir pour chaque acquisition dudit environnement visuel une séquence de P trames d’activation desdits actionneurs ou P est un entier compris 2 à 1000 de préférence entre 5 et 50, chacune des trames correspondant à la représentation de l’environnement dans un plan de profondeur incrémental caractérisé en ce qu’il comporte un microcontrôleur commandant l’activation desdits actionneurs selon le procédé conforme aux revendications précédentes.