LU100596B1 - METHOD AND DEVICE FOR LOW-LATENCY DISPLAY AND HIGH-REFRESH RATE FOR HIGH-DEFINITION MIXED REALITY DISPLAYS - Google Patents

METHOD AND DEVICE FOR LOW-LATENCY DISPLAY AND HIGH-REFRESH RATE FOR HIGH-DEFINITION MIXED REALITY DISPLAYS Download PDF

Info

Publication number
LU100596B1
LU100596B1 LU100596A LU100596A LU100596B1 LU 100596 B1 LU100596 B1 LU 100596B1 LU 100596 A LU100596 A LU 100596A LU 100596 A LU100596 A LU 100596A LU 100596 B1 LU100596 B1 LU 100596B1
Authority
LU
Luxembourg
Prior art keywords
image
logic circuit
computer
fragment
fragments
Prior art date
Application number
LU100596A
Other languages
French (fr)
Inventor
Théophile Zeze
Original Assignee
Starbreeze Ip Lux Ii S A R L
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Starbreeze Ip Lux Ii S A R L filed Critical Starbreeze Ip Lux Ii S A R L
Priority to LU100596A priority Critical patent/LU100596B1/en
Priority to PCT/EP2018/083991 priority patent/WO2019129475A1/en
Application granted granted Critical
Publication of LU100596B1 publication Critical patent/LU100596B1/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N13/00Stereoscopic video systems; Multi-view video systems; Details thereof
    • H04N13/30Image reproducers
    • H04N13/332Displays for viewing with the aid of special glasses or head-mounted displays [HMD]
    • H04N13/344Displays for viewing with the aid of special glasses or head-mounted displays [HMD] with head-mounted left-right displays
    • GPHYSICS
    • G02OPTICS
    • G02BOPTICAL ELEMENTS, SYSTEMS OR APPARATUS
    • G02B27/00Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
    • G02B27/01Head-up displays
    • G02B27/017Head mounted
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N13/00Stereoscopic video systems; Multi-view video systems; Details thereof
    • H04N13/10Processing, recording or transmission of stereoscopic or multi-view image signals
    • H04N13/106Processing image signals
    • H04N13/156Mixing image signals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N13/00Stereoscopic video systems; Multi-view video systems; Details thereof
    • H04N13/20Image signal generators
    • H04N13/204Image signal generators using stereoscopic image cameras
    • H04N13/239Image signal generators using stereoscopic image cameras using two 2D image sensors having a relative position equal to or related to the interocular distance
    • GPHYSICS
    • G02OPTICS
    • G02BOPTICAL ELEMENTS, SYSTEMS OR APPARATUS
    • G02B27/00Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
    • G02B27/01Head-up displays
    • G02B27/0101Head-up displays characterised by optical features
    • G02B2027/0138Head-up displays characterised by optical features comprising image capture systems, e.g. camera
    • GPHYSICS
    • G02OPTICS
    • G02BOPTICAL ELEMENTS, SYSTEMS OR APPARATUS
    • G02B27/00Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
    • G02B27/01Head-up displays
    • G02B27/0101Head-up displays characterised by optical features
    • G02B2027/014Head-up displays characterised by optical features comprising information/image processing systems

Abstract

L'invention a notamment pour objet un dispositif de traitement d'images pour afficheur (220) comprenant un calculateur (230) et un circuit logique (235), distincts et connectés l'un à l'autre par un bus de communication, le calculateur étant configuré our transmettre, par fragments, une image de synthèse au circuit logique et pour déclencher la transmission successive de fragments d'images depuis une source d'images externe vers le circuit logique, le circuit logique étant configuré pour combiner un fragment d'une image de synthèse reçu du calculateur et un fragment d'une image reçu de la source d'images externe pour créer un fragment d'une image mixte, le circuit logique étant en outre configuré pour transmettre le fragment créé d'une image mixte audit au moins un calculateur.The subject of the invention is in particular a display image processing device (220) comprising a separate computer (230) and a logic circuit (235) connected to each other by a communication bus. computer being configured to fragmentably transmit a synthesis image to the logic circuit and to trigger the successive transmission of image fragments from an external image source to the logic circuit, the logic circuit being configured to combine a fragment of a computer image received from the computer and a fragment of an image received from the external image source to create a fragment of a mixed image, the logic circuit being further configured to transmit the created fragment of a mixed image to said image at least one calculator.

Description

PROCEDE ET DISPOSITIF D’AFFICHAGE A FAIBLE LATENCE ET HAUT TAUX DE RAFRAICHISSEMENT POUR AFFICHEURS DE REALITE MIXTE A HAUTE DEFINITIONMETHOD AND DEVICE FOR LOW-LATENCY DISPLAY AND HIGH-REFRESH RATE FOR HIGH-DEFINITION MIXED REALITY DISPLAYS

La présente invention concerne le traitement et l’affichage d’images et plus particulièrement un procédé et un dispositif d’affichage à faible latence et haut taux de rafraîchissement pour afficheurs de réalité mixte à haute définition, par exemple pour casques de réalité augmentée.The present invention relates to the processing and display of images and more particularly to a method and a display device with low latency and high refresh rate for high definition mixed reality displays, for example for augmented reality headphones.

En raison des nombreux avantages qu’ils procurent, notamment en termes d’ergonomie et d’immersion, les visiocasques utilisés pour des applications de réalité virtuelle ou de réalité augmentée, aussi appelés casques de réalité augmentée (pour des applications de réalité augmentée), casques immersifs et HMD (sigle de head-mounted display en terminologie anglo-saxonne), connaissent un développement particulièrement important depuis quelques années.Because of the many advantages they provide, especially in terms of ergonomics and immersion, the headphones used for virtual reality or augmented reality applications, also called augmented reality headsets (for augmented reality applications), immersive helmets and HMD (abbreviation of head-mounted display in English terminology), have experienced a particularly important development in recent years.

Les applications de réalité augmentée ont pour objet d’ajouter des éléments virtuels à des images réelles, produisant des images augmentées. Ces dernières peuvent résulter de l’ajout d’éléments virtuels sur une vue d’une scène réelle, un tel procédé est connu sous le nom de optical see-through en terminologie anglo-saxonne, ou d’une combinaison de plusieurs flux d’images, typiquement d’un flux d’images issu d’une ou plusieurs caméras et d’un flux d’images de synthèse, ce procédé étant connu sous le nom de video see-through en terminologie anglo-saxonne.Augmented reality applications are intended to add virtual elements to real images, producing augmented images. These can result from the addition of virtual elements on a view of a real scene, such a process is known as optical see-through in English terminology, or a combination of several streams of images, typically a stream of images from one or more cameras and a stream of synthetic images, this process being known as video see-through in English terminology.

Du fait des mouvements généralement autorisés par le port d’un visiocasque, il est nécessaire, en pratique, de calculer en temps réel le flux d’images de synthèse selon la position de l’utilisateur et la direction observée (ou axe de visée). Le volume de calcul est d’autant plus important que la résolution des écrans d’affichage et le taux de rafraîchissement sont élevés. Il existe par exemple des casques de réalité augmentée dont les écrans d’affichage ont une résolution de 2 240 x 2 160 pixels, pour chaque œil, avec une fréquence de rafraîchissement de 90 Hz.Because of the movements generally authorized by wearing a headset, it is necessary, in practice, to calculate in real time the flow of computer images according to the position of the user and the observed direction (or line of sight) . The calculation volume is all the more important as the resolution of the display screens and the refresh rate are high. There are, for example, augmented reality headsets whose display screens have a resolution of 2240 x 2160 pixels, for each eye, with a refresh rate of 90 Hz.

Par ailleurs, le temps de latence entre les mouvements de l’utilisateur et l’affichage des images correspondantes (c’est-à-dire des images corrigées selon le changement de pose et de direction de l’axe de visée) doit être très faible pour une meilleure immersion et pour éviter de perturber l’oreille interne de l’utilisateur (rendant l’utilisation du visiocasque très inconfortable, voire impossible après une période de temps relativement courte).Moreover, the latency time between the user's movements and the display of the corresponding images (ie corrected images according to the change of pose and direction of the line of sight) must be very low for better immersion and to avoid disturbing the inner ear of the user (making the use of the headset very uncomfortable or impossible after a relatively short period of time).

Pour répondre à ces besoins de performances de calcul, certaines solutions utilisent une ou plusieurs unités de traitement graphique (appelées GPU, sigle de graphies processing unit en terminologie anglo-saxonne) permettant de paralléliser certaines tâches élémentaires de façon optimale.To meet these computational performance requirements, some solutions use one or more graphic processing units (called GPUs, acronym for graphs processing unit in English terminology) to parallelize certain elementary tasks optimally.

La figure 1 illustre un exemple d’un système de réalité augmentée mixant un flux d’images représentant une scène réelle à un flux d’images de synthèse, notamment d’un casque de réalité augmentée vu de dessus de façon schématique.FIG. 1 illustrates an example of an augmented reality system mixing a stream of images representing a real scene with a flow of synthetic images, in particular an augmented reality helmet viewed from above schematically.

Comme illustré, le casque de réalité augmentée 100 est ici relié à un ordinateur 105 via un câble de communication 110 autorisant la transmission d’un volume de données élevé.As illustrated, the augmented reality headset 100 is here connected to a computer 105 via a communication cable 110 allowing the transmission of a high volume of data.

Le casque de réalité augmentée 100 comprend ici deux caméras vidéo 115-1 et 115-2, l’une associée à l’œil droit et l’autre à l’œil gauche, deux écrans 120-1 et 120-2 également associés à l’œil droit et à l’œil gauche, respectivement, ainsi que deux haut-parleurs 125-1 et 125-2 situés à proximité des oreilles de l’utilisateur lorsqu’il porte le casque de réalité augmentée (la tête de l’utilisateur est ici schématiquement représentée avec une forme ovale en traits pointillés). Les écrans 120-1 et 120-2 sont par exemple des écrans de type LCD (sigle de liquid crystal display en terminologie anglo-saxonne) ou OLED (acronyme de organic light-emitting diode en terminologie anglo-saxonne) ayant une résolution de 2 240 x 2 160 pixels.The augmented reality headset 100 here comprises two video cameras 115-1 and 115-2, one associated with the right eye and the other with the left eye, two screens 120-1 and 120-2 also associated with right eye and left eye, respectively, as well as two 125-1 and 125-2 loudspeakers located near the user's ears when wearing the augmented reality headset (the head of the user is here schematically represented with an oval shape in dashed lines). The screens 120-1 and 120-2 are for example LCD type screens (liquid crystal display acronym in English terminology) or OLED (acronym for organic light-emitting diode in English terminology) having a resolution of 2 240 x 2160 pixels.

Le casque de réalité augmentée 100 comprend en outre un capteur 130, par exemple un capteur à 6 degrés de liberté permettant l’obtention d’une position (abscisse, ordonnée et hauteur) dans un espace à 3 dimensions et d’une orientation (roulis, tangage, lacet) dans ce même espace à 3 dimensions.The augmented reality headset 100 further comprises a sensor 130, for example a sensor with 6 degrees of freedom for obtaining a position (abscissa, ordinate and height) in a 3-dimensional space and an orientation (roll , pitch, yaw) in this same 3-dimensional space.

Les données issues du capteur 130 ainsi que chacun des flux d’images issus des caméras 115-1 et 115-2 sont transmis à l’ordinateur 105. Ces données permettent de générer deux flux d’images virtuelles (un pour chaque œil) liés à la position de l’utilisateur et à l’axe de visée. Les flux d’images issus des caméras 115-1 et 115-2 sont alors combinés avec les flux d’images virtuelles générés et retransmis au casque de réalité augmentée 100 pour être affichés sur les écrans 120-1 et 120-2. L’ordinateur 105 peut comprendre un ou plusieurs GPU pour combiner les flux d’images en temps réel, par exemple selon une technique d’incrustation aussi connue sous le nom de chromakey.The data from the sensor 130 as well as each of the image streams from the cameras 115-1 and 115-2 are transmitted to the computer 105. These data make it possible to generate two streams of virtual images (one for each eye) linked at the user's position and the line of sight. The image streams from the cameras 115-1 and 115-2 are then combined with the virtual image streams generated and retransmitted to the augmented reality headset 100 to be displayed on the screens 120-1 and 120-2. The computer 105 may comprise one or more GPUs for combining the real-time image streams, for example by a keying technique also known as chromakey.

Cependant, malgré la puissance des GPU récents, la résolution croissante des écrans utilisés dans les visiocasques augmente la latence. En outre, la puissance de calcul requise ne permet généralement pas l’utilisation d’un ordinateur miniaturisé, ce qui nécessite, du fait de la quantité de données échangées entre le visiocasque et l’ordinateur, l’utilisation d’un câble de communication. Ce dernier est particulièrement inconfortable pour l’utilisateur.However, despite the power of recent GPUs, the increasing resolution of screens used in head-mounted displays increases latency. In addition, the computing power required does not generally allow the use of a miniaturized computer, which requires, because of the amount of data exchanged between the head and the computer, the use of a communication cable . The latter is particularly uncomfortable for the user.

Il existe donc un besoin pour améliorer le traitement et l’affichage des images dans les casques de réalité augmentée et plus généralement pour les afficheurs de réalité mixte. L’invention permet de résoudre au moins un des problèmes exposés précédemment. L’invention a ainsi pour objet un dispositif de traitement d’images pour afficheur, le dispositif comprenant au moins un calculateur et au moins un circuit logique, distincts et connectés l’un à l’autre par un bus de communication, ledit au moins un calculateur étant configuré pour transmettre, par fragments, au moins une image de synthèse audit au moins un circuit logique et pour déclencher la transmission successive de fragments d’images depuis au moins une source d’images externe vers ledit au moins un circuit logique, ledit au moins un circuit logique étant configuré pour combiner au moins un fragment d’une image de synthèse reçu dudit au moins un calculateur et au moins un fragment d’une image reçu de ladite au moins une source d’images externe pour créer au moins un fragment d’une image mixte, ledit au moins un circuit logique étant en outre configuré pour transmettre ledit au moins un fragment créé d’une image mixte audit au moins un calculateur.There is therefore a need to improve the processing and display of images in augmented reality headsets and more generally for mixed reality displays. The invention solves at least one of the problems discussed above. The invention thus relates to an image processing device for display, the device comprising at least one computer and at least one logic circuit, separate and connected to each other by a communication bus, said at least one a calculator being configured to fragmentably transmit at least one synthesis image to said at least one logic circuit and to trigger the successive transmission of image fragments from at least one external image source to said at least one logic circuit, said at least one logic circuit being configured to combine at least one fragment of a synthetic image received from said at least one computer and at least one fragment of an image received from said at least one external image source to create at least one a fragment of a mixed image, said at least one logic circuit being further configured to transmit said at least one created fragment of a mixed image to said at least one calculator tor.

Le dispositif selon l’invention permet ainsi l’affichage d’images mixtes de haute résolution avec un haut taux de rafraîchissement et un faible temps de latence. L’invention peut en outre être mise en œuvre avec des éléments standard.The device according to the invention thus makes it possible to display mixed images of high resolution with a high refresh rate and a low latency time. The invention may further be implemented with standard elements.

Selon un mode de réalisation particulier, ledit au moins un circuit logique comprend au moins deux mémoires tampons distinctes de type premier-entré / premier-sorti, une desdites au moins deux mémoires tampons étant configurée pour mémoriser des fragments d’images reçus dudit au moins un calculateur et l’autre desdites au moins deux mémoires tampons étant configurée pour mémoriser des fragments d’images reçus de ladite au moins une source d’images externe.According to a particular embodiment, said at least one logic circuit comprises at least two distinct buffers of first-in / first-out type, one of said at least two buffers being configured to store image fragments received from said at least one a computer and the other of said at least two buffers being configured to store image fragments received from said at least one external image source.

Toujours selon un mode de réalisation particulier, ledit au moins un calculateur est configuré pour recevoir des données de position et/ou d’orientation associées à des images de ladite au moins une source d’images externe et pour générer des fragments d’image de synthèse en fonction de données reçues de position et/ou d’orientation.Still according to a particular embodiment, said at least one computer is configured to receive position and / or orientation data associated with images of said at least one external image source and to generate image fragments of synthesis according to received position and / or orientation data.

Toujours selon un mode de réalisation particulier, ledit au moins un calculateur comprend au moins un microprocesseur et au moins un coprocesseur graphique, ledit au moins un coprocesseur graphique étant configuré pour générer des fragments d’images de synthèse.Still according to a particular embodiment, said at least one computer comprises at least one microprocessor and at least one graphic coprocessor, said at least one graphic coprocessor being configured to generate fragments of synthesis images.

Toujours selon un mode de réalisation particulier, ledit au moins un microprocesseur est un microprocesseur multi-cœurs, au moins un cœur étant associé à une fonction de réception de données de position et/ou d’orientation.Still according to a particular embodiment, said at least one microprocessor is a multi-core microprocessor, at least one core being associated with a function for receiving position and / or orientation data.

Toujours selon un mode de réalisation particulier, le dispositif comprend ladite au moins une source d’images externe, ladite au moins une source d’images externe comprenant au moins un capteur vidéo et au moins un circuit logique élémentaire, le circuit logique élémentaire étant configuré pour transmettre, par fragments successifs, au moins une image issue dudit au moins un capteur vidéo sur réception d’un événement prédéterminé.Still according to a particular embodiment, the device comprises said at least one external image source, said at least one external image source comprising at least one video sensor and at least one elementary logic circuit, the elementary logic circuit being configured for transmitting, in successive fragments, at least one image from said at least one video sensor upon receipt of a predetermined event.

Toujours selon un mode de réalisation particulier, le dispositif comprend en outre une interface de communication mettant en oeuvre un protocole de communication de type SDI et permettant un transfert de données entre ladite au moins une source d’images externe et ledit au moins un calculateur.Still according to a particular embodiment, the device further comprises a communication interface implementing a SDI type communication protocol and allowing a data transfer between said at least one external image source and said at least one computer.

Toujours selon un mode de réalisation particulier, le bus de communication est de type PCI Express.Still according to a particular embodiment, the communication bus is PCI Express type.

Toujours selon un mode de réalisation particulier, le dispositif comprend au moins deux calculateurs et au moins deux circuits logiques, formant au moins deux paires comprenant chacune au moins un calculateur et au moins un circuit logique, chaque paire étant associée à au moins une source d’images externe et à au moins un écran pour effectuer un traitement d’images associé à ladite au moins une source d’images externe et audit au moins un écran associé.Still according to a particular embodiment, the device comprises at least two computers and at least two logic circuits forming at least two pairs each comprising at least one computer and at least one logic circuit, each pair being associated with at least one computer source. external images and at least one screen for performing image processing associated with said at least one external image source and auditing at least one associated screen.

Toujours selon un mode de réalisation particulier, lesdits au moins deux circuits logiques sont formés dans un même composant de type FPGA. L’invention a également pour objet un procédé de traitement d’images pour un dispositif pour afficheur, le dispositif comprenant au moins un calculateur et au moins un circuit logique, distincts et connectés l’un à l’autre par un bus de communication, ledit procédé étant exécuté par ledit au moins un calculateur et comprenant les étapes suivantes : - génération d’un événement de traitement d’une nouvelle image et transmission dudit événement à au moins une source d’images externe pour déclencher la transmission de fragments d’image depuis ladite au moins une source d’images externe vers ledit au moins un circuit logique ; - suite à la génération dudit événement, - génération d’au moins un fragment d’au moins une image de synthèse ; - transmission dudit au moins un fragment généré audit circuit logique ; et - réception dudit circuit logique d’au moins un fragment d’une image mixte, ledit au moins fragment reçu résultant d’une combinaison dudit au moins un fragment généré transmis et d’au moins un fragment d’image transmis depuis ladite au moins une source d’images externe vers ledit au moins un circuit logique.Still according to a particular embodiment, said at least two logic circuits are formed in the same component of the FPGA type. The invention also relates to an image processing method for a display device, the device comprising at least one computer and at least one logic circuit, separate and connected to each other by a communication bus, said method being executed by said at least one computer and comprising the following steps: - generating a new image processing event and transmitting said event to at least one external image source to trigger transmission of fragments of image from said at least one external image source to said at least one logic circuit; following the generation of said event, generating at least one fragment of at least one synthesis image; transmitting said at least one fragment generated to said logic circuit; and - receiving said logic circuit of at least one fragment of a mixed image, said at least received fragment resulting from a combination of said at least one transmitted generated fragment and at least one image fragment transmitted from said at least one an external image source to said at least one logic circuit.

Selon un mode de réalisation particulier, le procédé comprend en outre une étape de réception d’au moins une donnée de position et/ou d’orientation, ledit au moins un fragment généré d’au moins une image de synthèse étant généré en fonction de ladite au moins une donnée de position et/ou d’orientation reçue.According to a particular embodiment, the method further comprises a step of receiving at least one position and / or orientation data, said at least one generated fragment of at least one synthesis image being generated as a function of said at least one position and / or orientation data received.

Le procédé selon l’invention permet ainsi l’affichage d’images mixtes de haute résolution avec un haut taux de rafraîchissement et un faible temps de latence. L’invention peut en outre être mise en œuvre avec des éléments standard. L’invention a également pour objet un programme d’ordinateur comprenant des instructions adaptées à la mise en œuvre de chacune des étapes du procédé décrit précédemment lorsque ledit programme est exécuté sur un calculateur ainsi qu’un moyen de stockage d'informations, amovible ou non, partiellement ou totalement lisible par un ordinateur ou un microprocesseur comportant des instructions de code d'un programme d'ordinateur pour l'exécution de chacune des étapes du procédé décrit précédemment. D’autres avantages, buts et caractéristiques de la présente invention ressortent de la description détaillée qui suit, faite à titre d’exemple non limitatif, au regard des dessins annexés dans lesquels : - la figure 1 illustre un exemple d’un système de réalité augmentée mixant un flux d’images représentant une scène réelle à un flux d’images de synthèse, notamment d’un casque de réalité augmentée vu de dessus de façon schématique ; - la figure 2 illustre schématiquement un exemple d’architecture d’un système selon l’invention pour traiter et afficher des images à haute définition dans un casque de réalité augmentée, avec une faible latence et un haut taux de rafraîchissement ; - la figure 3 illustre certaines phases d’un exemple de mise en œuvre de l’invention ; - la figure 4 illustre schématiquement un mécanisme de gestion d’une mémoire utilisée pour stocker temporairement des fragments générés d’une image de synthèse et des fragments d’une image mixte ; - la figure 5 illustre schématiquement l’architecture d’une partie du système illustré sur la figure 2, permettant de traiter et afficher des images à haute définition dans un casque de réalité augmentée, pour un œil, avec une faible latence et un haut taux de rafraîchissement ; - les figures 6a, 6b, 6c et 6d illustrent un exemple de contenu de mémoires tampons d’un calculateur et d’un circuit logique programmable associé lors d'un traitement en vue de l’affichage d’une nouvelle image mixte ; - la figure 7 illustre un exemple d’étapes mises en œuvre dans le calculateur 230-i ; - la figure 8 illustre un exemple d’étapes mises en œuvre dans le circuit logique programmable élémentaire 505-i de la caméra vidéo 215-i ; et - la figure 9 illustre un exemple d’étapes mises en œuvre dans le circuit logique programmable 235-i.The method according to the invention thus makes it possible to display mixed images of high resolution with a high refresh rate and a low latency time. The invention may further be implemented with standard elements. The invention also relates to a computer program comprising instructions adapted to the implementation of each of the steps of the method described above when said program is executed on a computer and a means for storing information, removable or no, partially or completely readable by a computer or a microprocessor comprising code instructions of a computer program for the execution of each of the steps of the method described above. Other advantages, aims and features of the present invention will become apparent from the detailed description which follows, given by way of non-limiting example, with reference to the appended drawings in which: FIG. 1 illustrates an example of a reality system augmented mixing a stream of images representing a real scene to a flow of synthetic images, including an augmented reality helmet seen from above schematically; FIG. 2 schematically illustrates an exemplary architecture of a system according to the invention for processing and displaying high definition images in an augmented reality headset, with low latency and a high refresh rate; FIG. 3 illustrates certain phases of an exemplary implementation of the invention; FIG. 4 schematically illustrates a memory management mechanism used for temporarily storing generated fragments of a synthetic image and fragments of a mixed image; FIG. 5 schematically illustrates the architecture of a portion of the system illustrated in FIG. 2, making it possible to process and display high definition images in an augmented reality headset, for an eye, with low latency and a high rate refreshment; FIGS. 6a, 6b, 6c and 6d illustrate an exemplary content of buffers of a computer and of an associated programmable logic circuit during processing for the purpose of displaying a new mixed image; FIG. 7 illustrates an example of steps implemented in the computer 230-i; FIG. 8 illustrates an example of steps implemented in the elementary programmable logic circuit 505-i of the video camera 215-i; and FIG. 9 illustrates an example of steps implemented in the programmable logic circuit 235-i.

Selon des modes de réalisation de l’invention, le dispositif de traitement et d’affichage d’images est basé sur une architecture modulaire permettant de traiter de façon distincte ou quasi distincte des images à destination de plusieurs écrans, par exemple à destination de deux écrans correspondant à chacun des yeux. Il est de préférence basé sur des éléments standard programmables. Ces éléments peuvent notamment comprendre des calculateurs, par exemple des calculateurs miniatures intégrant des microprocesseurs multi-cœurs, et des circuits logiques programmables. A titre d’illustration, les calculateurs peuvent être au format carte de crédit pour être intégrés dans le casque de réalité augmentée ou être disposés à proximité, par exemple dans un sac, typiquement un sac à dos, comprenant une partie de l’électronique nécessaire au fonctionnement du casque de réalité augmentée et des sources électriques, par exemple une ou plusieurs batteries. La proximité des différents éléments utilisés permet notamment d’augmenter le débit des données échangées tout en réduisant la latence.According to embodiments of the invention, the image processing and display device is based on a modular architecture making it possible to process, in a distinct or almost distinct manner, images intended for several screens, for example for two screens corresponding to each of the eyes. It is preferably based on programmable standard elements. These elements may in particular include computers, for example miniature computers incorporating multi-core microprocessors, and programmable logic circuits. As an illustration, the calculators can be in credit card format to be integrated into the augmented reality headset or be placed nearby, for example in a bag, typically a backpack, including a part of the necessary electronics the operation of augmented reality headphones and electrical sources, for example one or more batteries. The proximity of the various elements used in particular makes it possible to increase the bit rate of the data exchanged while reducing the latency.

Il est observé ici que l’invention peut être mise en oeuvre pour traiter différents types de flux d’images, notamment pour des applications de réalité augmentée selon lesquelles des éléments virtuels sont ajoutés à des représentations de scènes réelles, des applications de virtualité augmentée selon lesquelles des éléments réels sont ajoutés à des représentations de scènes virtuelles ou encore des applications de réalité virtuelle selon lesquelles des éléments virtuels sont ajoutés à des représentations de scènes virtuelles. Ces différentes applications combinant le monde réel et le monde virtuel ou différents mondes virtuels sont, par la suite, appelées applications mixtes, les images correspondantes étant appelées images mixtes. L’invention a ainsi pour objet de mixer en temps réel un premier flux d’images issu d’une source externe, par exemple un capteur vidéo ou un générateur d’images de synthèse, avec un second flux d’images généré en temps réel selon des caractéristiques du premier flux d’images telles que le point de vue.It is observed here that the invention can be implemented for processing different types of image streams, in particular for augmented reality applications in which virtual elements are added to representations of real scenes, applications of augmented virtuality according to which real elements are added to virtual scene representations or virtual reality applications according to which virtual elements are added to virtual scene representations. These different applications combining the real world and the virtual world or different virtual worlds are subsequently called mixed applications, the corresponding images being called mixed images. The object of the invention is therefore to mix in real time a first image stream coming from an external source, for example a video sensor or a synthesis image generator, with a second stream of images generated in real time. according to characteristics of the first stream of images such as the point of view.

La figure 2 illustre schématiquement un exemple d’architecture d’un système selon l’invention pour traiter et afficher des images à haute définition dans un casque de réalité augmentée, avec une faible latence et un haut taux de rafraîchissement.FIG. 2 schematically illustrates an exemplary architecture of a system according to the invention for processing and displaying high definition images in an augmented reality headset, with low latency and a high refresh rate.

Le système de réalité augmentée 200 comprend un casque de réalité augmentée 205 et un dispositif de calcul 210 pouvant être distinct du casque de réalité augmentée 205 ou intégré dans celui-ci.The augmented reality system 200 includes an augmented reality headset 205 and a computing device 210 that may be distinct from or integrated with the augmented reality headset 205.

Le casque de réalité augmentée 205 comprend notamment deux caméras vidéo 215-1 et 215-2, deux écrans 220-2 et 220-2 ainsi qu’un capteur de position et/ou orientation 225. Il est observé que les caméras vidéo 215-1 et 215-2 peuvent être distantes du casque de réalité augmentée 205. Dans ce cas, elles peuvent être asservies en mouvement au casque de réalité augmentée 205 (pour viser vers un point « observé » par l’utilisateur) ou les images affichées peuvent être déterminées par la position et/ou l’orientation des caméras vidéo 215-1 et 215-2.The augmented reality headset 205 includes in particular two video cameras 215-1 and 215-2, two screens 220-2 and 220-2 and a position and / or orientation sensor 225. It is observed that the video cameras 215- 1 and 215-2 may be distant from the augmented reality headset 205. In this case, they may be moving slaved to the augmented reality headset 205 (to aim towards a point "observed" by the user) or the displayed images may be be determined by the position and / or orientation of the video cameras 215-1 and 215-2.

Chacune des caméras vidéo 215-1 et 215-2 comprend un capteur vidéo, par exemple un capteur du type CMOS (acronyme de complementary metal oxide semiconductor en terminologie anglo-saxonne) dont la résolution peut être, à titre d’illustration, de 3 840 x 2 160 pixels (appelée résolution 4K), ainsi qu’un circuit de prétraitement de données permettant le transfert de données issues des capteurs vidéo via une interface de communication, par exemple une interface de communication mettant en œuvre un protocole de communication de type SDI (sigle de serial digital interface en terminologie anglo-saxonne).Each of the video cameras 215-1 and 215-2 comprises a video sensor, for example a sensor of the CMOS type (acronym for complementary metal oxide semiconductor in English terminology) whose resolution can be, by way of illustration, 3 840 x 2160 pixels (called 4K resolution), as well as a data preprocessing circuit for transferring data from the video sensors via a communication interface, for example a communication interface implementing a communication protocol of the type SDI (acronym for serial digital interface in English terminology).

Selon des modes de réalisation, les caméras vidéo 215-1 et 215-2 sont utilisées dans un mode appelé esclave selon lequel la caméra transmet (ou rend disponible) une image, typiquement élément par élément, par exemple ligne par ligne, suite à la réception d’un événement prédéterminé, par exemple la réception d’un événement nommé frame_event.According to embodiments, the video cameras 215-1 and 215-2 are used in a mode called slave in which the camera transmits (or makes available) an image, typically element by element, for example line by line, following the receiving a predetermined event, for example receiving an event named frame_event.

Les écrans 220-1 et 220-2 sont des écrans standard, typiquement des écrans de type OLED pour casque de réalité augmentée, par exemple des écrans ayant une résolution de 3 840 x 2 160 pixels et une fréquence de rafraîchissement d’au moins 90 Hz. Il est observé ici que les images acquises étant traitées pour être affichées, la résolution de ces écrans peut être différente de celle des capteurs vidéo utilisés.The screens 220-1 and 220-2 are standard screens, typically OLED type screens for augmented reality headphones, for example screens with a resolution of 3840 x 2160 pixels and a refresh rate of at least 90 Hz. It is observed here that the images acquired being processed to be displayed, the resolution of these screens may be different from that of the video sensors used.

Selon des modes de réalisation, le capteur de position et/ou orientation 225 est un capteur à 6 degrés de liberté permettant l’obtention d’une position (abscisse, ordonnée et hauteur) dans un espace à 3 dimensions et d’une orientation (roulis, tangage, lacet) dans ce même espace à 3 dimensions.According to embodiments, the position and / or orientation sensor 225 is a sensor with 6 degrees of freedom for obtaining a position (abscissa, ordinate and height) in a 3-dimensional space and an orientation ( roll, pitch, yaw) in this same 3-dimensional space.

Comme illustré sur la figure 2, le dispositif de calcul 210 comprend notamment deux calculateurs 230-1 et 230-2 intégrant chacun, en particulier, un microprocesseur ou CPU (sigle de central processing unit en terminologie anglo-saxonne), par exemple un microprocesseur multi-cœurs. Ces calculateurs peuvent être intégrés dans un même composant ou dans des composants distincts. Le dispositif de calcul 210 comprend en outre deux circuits logiques programmables 235-1 et 235-2, pouvant également être intégrés dans un même composant ou dans des composants distincts. A titre d’illustration, les circuits logiques programmables 235-1 et 235-2 peuvent être du type FPGA (sigle de field-programmable gate array en terminologie anglo-saxonne), PLD (sigle de programmable logic device en terminologie anglo-saxonne), EPLD (sigle de erasable programmable logic device en terminologie anglo-saxonne), CPLD (sigle de complex programmable logic device en terminologie anglo-saxonne), PAL (sigle de programmable array logic en terminologie anglo-saxonne) ou PLA (sigle de programmable logic array en terminologie anglo-saxonne). A des fins d’illustration, il est ici considéré que les circuits logiques programmables 235-1 et 235-2 sont de type FPGA. Ces circuits logiques programmables peuvent également être de type ASIC (acronyme de application specific integrated circuit en terminologie anglo-saxonne), c’est-à-dire des composants spécifiques préprogrammés.As illustrated in FIG. 2, the computing device 210 comprises in particular two computers 230-1 and 230-2 each integrating, in particular, a microprocessor or CPU (acronym for central processing unit in English terminology), for example a microprocessor. multicore. These calculators can be integrated in the same component or in separate components. The computing device 210 further comprises two programmable logic circuits 235-1 and 235-2, which can also be integrated in the same component or in separate components. By way of illustration, the programmable logic circuits 235-1 and 235-2 may be of the FPGA (field-programmable gate array in English terminology), PLD (logic programmable logic in English terminology) , EPLD (acronym of erasable programmable logic device in English terminology), CPLD (acronym of complex programmable logic device in English terminology), PAL (acronym of programmable array logic in English terminology) or PLA (programmable acronym logic array in English terminology). For purposes of illustration, it is here considered that the programmable logic circuits 235-1 and 235-2 are FPGA type. These programmable logic circuits can also be ASIC (acronym for application specific integrated circuit in English terminology), that is to say specific components preprogrammed.

Comme illustré, les flux d’images issus des caméras vidéo 215-1 et 215-2 sont transmis vers les circuits logiques programmables 235-1 et 235-2, respectivement, via des bus de communication autorisant un débit suffisant pour minimiser la latence. Dans des modes de réalisation selon lesquels la fréquence de rafraîchissement des écrans du casque de réalité augmentée est de 90 Hz et leur résolution est de 3 840 x 2 160, le débit de ce bus est avantageusement d’environ 2,24 GigaBtyes/s. Comme décrit précédemment, l’interface de communication peut être du type SDI.As illustrated, the image streams from the video cameras 215-1 and 215-2 are transmitted to the programmable logic circuits 235-1 and 235-2, respectively, via communication buses allowing a rate sufficient to minimize latency. In embodiments according to which the refresh rate of the screens of the augmented reality headset is 90 Hz and their resolution is 3840 x 2160, the rate of this bus is preferably about 2.24 GigaBytes / s. As previously described, the communication interface may be of the SDI type.

Les calculateurs 230-1 et 230-2 et les circuits logiques programmables 235-1 et 235-2 sont ici connectés les uns aux autres par un bus à haut débit, permettant notamment le transfert de flux d’images de scènes réelles et de flux d’images mixtes ainsi que l’échange de données de contrôle, par exemple un bus de type PCI Express (PCI étant le sigle de peripheral component interconnect en terminologie anglo-saxonne), permettant par exemple des débits de 16 GigaBytes/s.The computers 230-1 and 230-2 and the programmable logic circuits 235-1 and 235-2 are here connected to each other by a high-speed bus, notably allowing the transfer of image streams of real scenes and streams. mixed images as well as the exchange of control data, for example a bus type PCI Express (PCI being the acronym for peripheral component interconnect in English terminology), allowing for example data rates of 16 GigaBytes / s.

Les calculateurs 230-1 et 230-2 peuvent être connectés aux écrans 220-1 et 220-2 à l’aide de connexions vidéo standard, par exemple des câbles conformes au standard HDMI 2.0 ou Display Port 1.2, afin de transmettre les images mixtes et permettre leur affichage.The 230-1 and 230-2 computers can be connected to the 220-1 and 220-2 screens using standard video connections, such as HDMI 2.0 or Display Port 1.2 compliant cables, to transmit mixed images. and allow their display.

La figure 3 illustre certaines phases d’un exemple de mise en œuvre de l’invention. Selon cet exemple, les images sont traitées par fragments, chaque fragment pouvant notamment correspondre à une portion d’une ligne ou d’une colonne de l’image traitée, une ligne ou une colonne de l’image traitée ou une pluralité de lignes ou de colonnes de l’image traitée. A des fins d’illustration, il est considéré ici que chaque image est traitée par ligne.Figure 3 illustrates certain phases of an exemplary implementation of the invention. According to this example, the images are processed in fragments, each fragment can notably correspond to a portion of a line or a column of the processed image, a line or a column of the processed image or a plurality of lines or columns of the processed image. For purposes of illustration, it is considered here that each image is treated by line.

Un événement appelé frame_event est généré par l’un des calculateurs ou, de façon synchrone, par chacun des deux calculateurs. Cet événement, référencé 300 sur la figure 3, indique le début de génération d’une nouvelle image de synthèse dans les calculateurs. Selon un mode de réalisation particulier, cet événement est transmis via le bus reliant les calculateurs et les circuits logiques programmables et est relayé par ces derniers vers les caméras vidéo.An event called frame_event is generated by one of the computers or, synchronously, by each of the two computers. This event, referenced 300 in FIG. 3, indicates the beginning of generation of a new computer image in the computers. According to a particular embodiment, this event is transmitted via the bus connecting the computers and the programmable logic circuits and is relayed by them to the video cameras.

Il est observé ici que le mécanisme décrit en référence à la figure 3 est reproduit au moins deux fois dans un dispositif tel que celui décrit en référence à la figure 2, une fois pour traiter les images devant être affichées devant l’œil gauche et une fois pour traiter les images devant être affichées devant l’œil droit.It is observed here that the mechanism described with reference to FIG. 3 is reproduced at least twice in a device such as that described with reference to FIG. 2, once to process the images to be displayed in front of the left eye and a times to process the images to be displayed in front of the right eye.

La réception de l’événement frame_event par chaque caméra vidéo déclenche la transmission successive de fragments d’une image acquise vers une mémoire tampon du circuit logique programmable associé. La mémoire tampon est, de préférence, une mémoire de type premier-entré / premier-sorti ou FIFO (acronyme de first-in first-out en terminologie anglo-saxonne), organisée par fragments. Le transfert d’une image d’une caméra vidéo vers le circuit logique programmable associé, fragment par fragment (par exemple ligne par ligne), est effectué durant la période 305 suivant l’événement 300.The reception of the frame_event event by each video camera triggers the successive transmission of fragments of an acquired image to a buffer of the associated programmable logic circuit. The buffer memory is preferably a first-in / first-out memory or FIFO (acronym for first-in first-out in English terminology), organized in fragments. The transfer of an image from a video camera to the associated programmable logic circuit, fragment by fragment (for example line by line), is performed during the period 305 following the event 300.

Suite à l’événement frame_event, l’image de synthèse dont une partie doit être intégrée dans une image d’une scène réelle est générée, par fragments, par exemple par lignes. Chaque fragment est ainsi généré par un calculateur, typiquement par un coprocesseur graphique de ce dernier, l’un après l’autre, durant les périodes 310-1, 310-2, 310-3, etc. La fréquence à laquelle ces fragments sont générés est déterminée selon le nombre de fragments à générer et le temps de traitement de chaque fragment.Following the frame_event event, the summary image part of which must be integrated into an image of a real scene is generated, in fragments, for example by lines. Each fragment is thus generated by a computer, typically by a graphic coprocessor of the latter, one after the other, during the periods 310-1, 310-2, 310-3, etc. The frequency with which these fragments are generated is determined according to the number of fragments to be generated and the processing time of each fragment.

Après qu’un fragment ait été généré, il est transmis du calculateur l’ayant généré vers le circuit logique programmable associé à celui-ci, comme illustré avec les références 315-1, 315-2 et 315-3. Il est par exemple mémorisé dans une mémoire tampon de type FIFO, organisée par fragments (par exemple par lignes).After a fragment has been generated, it is transmitted from the computer that generated it to the programmable logic circuit associated therewith, as illustrated with references 315-1, 315-2 and 315-3. It is for example stored in a FIFO buffer, organized by fragments (for example by lines).

Un fragment généré et reçu par le circuit logique programmable est alors traité par ce dernier avec le fragment correspondant de l’image de la scène réelle reçu du capteur, comme illustré avec les références 320-1, 320-2, 320-3, etc., pour créer un fragment d’une image mixte II est observé que les fragments utilisés à ces fins étant ici mémorisés dans des mémoires de type FIFO, les fragments de l’image de synthèse générés par le calculateur sont synchronisés, lors de leur accès par le circuit logique programmable avec ceux de l’image de la scène réelle. Le traitement effectué par le circuit logique programmable consiste par exemple à l’insertion d’éléments d’un fragment généré dans un fragment d’image d’une scène réelle, par exemple selon une méthode de chromakey.A fragment generated and received by the programmable logic circuit is then processed by the latter with the corresponding fragment of the image of the real scene received from the sensor, as illustrated with references 320-1, 320-2, 320-3, etc. to create a fragment of a mixed image It is observed that the fragments used for these purposes are here stored in FIFO type memories, the computer generated image fragments are synchronized, when they are accessed. by the programmable logic circuit with those of the image of the real scene. The processing performed by the programmable logic circuit consists, for example, in the insertion of elements of a generated fragment into an image fragment of a real scene, for example according to a chromakey method.

Il est observé ici que les circuits logiques programmables peuvent être configurés pour générer un fragment d’image mixte avec des nombres différents de fragments d’une image réelle et d’une image de synthèse.It is observed here that the programmable logic circuits can be configured to generate a mixed image fragment with different numbers of fragments of a real image and an image of synthesis.

Après obtention, le fragment résultant du traitement (ou de la combinaison) d’un fragment généré avec un fragment de l’image d’une scène réelle est transmis par le circuit logique programmable au calculateur associé, comme illustré avec les références 325-1,325-2 et 325-3. L’image reconstituée dans le calculateur, typiquement dans une mémoire tampon de celui-ci, est ensuite transmise à l’écran associé pour être affichée (référence 330).After obtaining, the fragment resulting from the processing (or combination) of a fragment generated with a fragment of the image of a real scene is transmitted by the programmable logic circuit to the associated computer, as illustrated with the references 325-1,325 -2 and 325-3. The image reconstituted in the computer, typically in a buffer memory thereof, is then transmitted to the associated screen to be displayed (reference 330).

Il est observé ici que la mémoire tampon utilisée pour stocker des fragments d’une image de synthèse peut être la même que celle utilisée pour mémoriser l’image mixte (résultant de la combinaison d’une image de synthèse et d’une image d’une scène réelle) du fait du traitement par fragments. En effet, après avoir été transmis, un fragment généré de l’image de synthèse peut être remplacé par un fragment de l’image mixte.It is observed here that the buffer memory used to store fragments of a synthesis image may be the same as that used to store the mixed image (resulting from the combination of a synthetic image and an image of a synthesis image. a real scene) because of fragment processing. Indeed, after being transmitted, a generated fragment of the synthesis image can be replaced by a fragment of the mixed image.

La figure 4 illustre un tel mécanisme de gestion de mémoire, selon lequel un fragment généré de l’image de synthèse est transmis vers le circuit logique programmable, par exemple de type FPGA, pour être combiné avec le fragment correspondant d’une image d’une scène réelle, le résultat de cette combinaison, c’est-à-dire un fragment de l’image mixte, étant ensuite mémorisé à la place du fragment généré précédemment transmis. La flèche sur la représentation de l’image en mémoire indique l’ordre de traitement des fragments (par exemple des lignes).FIG. 4 illustrates such a memory management mechanism, according to which a generated fragment of the synthesis image is transmitted to the programmable logic circuit, for example of the FPGA type, to be combined with the corresponding fragment of an image of a real scene, the result of this combination, that is to say a fragment of the mixed image, then being stored in place of the previously generated generated fragment. The arrow on the representation of the image in memory indicates the order of processing of the fragments (for example lines).

La figure 5 illustre schématiquement l’architecture d’une partie du système illustré sur la figure 2, permettant de traiter et afficher des images à haute définition dans un casque de réalité augmentée, pour un œil, avec une faible latence et un haut taux de rafraîchissement.FIG. 5 schematically illustrates the architecture of a part of the system illustrated in FIG. 2, making it possible to process and display high definition images in an augmented reality headset, for an eye, with a low latency and a high rate of refreshment.

Il est observé ici que l’architecture illustrée sur la figure 5 permettant de traiter des images pour un affichage sur un écran peut être utilisée sans être dupliquée si le système de réalité mixte ne fait appel qu’à un seul écran. De même, il peut être répliqué autant de fois que le système de réalité mixte comprend d’écrans.It is observed here that the architecture illustrated in FIG. 5 making it possible to process images for a display on a screen can be used without being duplicated if the mixed reality system uses only one screen. Likewise, it can be replicated as many times as the mixed reality system includes screens.

Les éléments permettant de traiter et afficher des images à haute définition dans un casque de réalité augmentée, pour un œil, sont notamment ici la caméra vidéo 215-i (l’index i étant ici et par la suite égal à 1 ou 2 selon que le système concerne l’œil gauche ou l’œil droit), le capteur de position et/ou orientation 225, le circuit logique programmable 235-i et le calculateur 230-i.The elements making it possible to process and display high definition images in augmented reality headphones, for one eye, are here in particular the video camera 215-i (the index i being here and thereafter equal to 1 or 2 depending on whether the system concerns the left eye or the right eye), the position and / or orientation sensor 225, the programmable logic circuit 235-i and the computer 230-i.

Il est observé ici que la caméra vidéo 215-i pourrait être remplacée par une autre source de flux d’images dont chaque image pourrait être obtenue sur requêtes (par exemple une interruption ou sur réception d’un événement de type frame_event), par exemple une source d’images de synthèse ou un dispositif de stockage stockant un ou plusieurs flux d’images. Selon des modes de réalisation, des informations de position et/ou d’orientation peuvent être associées à chacune de ces images (ou à des groupes d’images) pour permettre la génération d’un flux d’images correspondant dans le calculateur 230-i.It is observed here that the video camera 215-i could be replaced by another source of image flow from which each image could be obtained on requests (for example an interruption or upon reception of an event of the frame_event type), for example a source of computer graphics or a storage device storing one or more image streams. According to embodiments, position and / or orientation information can be associated with each of these images (or groups of images) to enable the generation of a corresponding image stream in the computer 230. i.

Comme illustré, la caméra vidéo 215-i comprend un capteur vidéo 500-i à haute définition ainsi qu’un circuit logique programmable élémentaire 505-i, par exemple de type FPGA, permettant de transmettre des données issues du capteur vidéo 500-i à un dispositif distant selon un format prédéterminé. Comme décrit précédemment, la caméra vidéo 215-i est, selon des modes de réalisation, utilisée selon un mode esclave selon lequel les données issues du capteur vidéo 500-i sont transmises via une interface de communication suite à la réception d’un événement particulier, par exemple l’événement nommé frame_event.As illustrated, the video camera 215-i comprises a high definition video sensor 500-i and an elementary programmable logic circuit 505-i, for example of the FPGA type, making it possible to transmit data from the video sensor 500-i to a remote device according to a predetermined format. As described above, the video camera 215-i is, according to embodiments, used in a slave mode in which the data from the video sensor 500-i is transmitted via a communication interface following the reception of a particular event , for example the event named frame_event.

Selon l’exemple illustré, les données issues du capteur vidéo 500-i sont transmises à une première mémoire tampon 510-i du circuit logique programmable 235-i, par exemple via une interface de communication mettant en oeuvre un protocole de communication de type SDI. L’interface de communication utilisée est une interface haut-débit.According to the illustrated example, the data coming from the video sensor 500-i is transmitted to a first buffer memory 510-i of the programmable logic circuit 235-i, for example via a communication interface implementing a communication protocol of SDI type. . The communication interface used is a high-speed interface.

Le capteur de position et/ou d’orientation 225, de préférence assujetti mécaniquement à la caméra vidéo 215-i ou à un support de celle-ci, transmet des données de position et/ou d’orientation au calculateur 230-i, de préférence selon 6 degrés de liberté comme décrit précédemment. Ces informations de position et/ou d’orientation peuvent, par exemple, permettre à ce dernier de générer des images de synthèse selon un point de vue ajusté en temps réel.The position and / or orientation sensor 225, preferably mechanically secured to the video camera 215-i or a carrier thereof, transmits position and / or orientation data to the computer 230-i, preferably according to 6 degrees of freedom as previously described. This position and / or orientation information may, for example, enable the latter to generate computer images according to a point of view adjusted in real time.

Comme illustré, outre la première mémoire tampon 510-i configurée pour recevoir des fragments d’images de la caméra vidéo 215-i, le circuit logique programmable 235-i comprend une seconde mémoire tampon 515-i configurée pour recevoir des fragments d’images de synthèse générées par le calculateur 230-i.As illustrated, in addition to the first buffer 510-i configured to receive image fragments of the video camera 215-i, the programmable logic circuit 235-i includes a second buffer memory 515-i configured to receive image fragments. synthesis generated by the computer 230-i.

Les mémoires tampons 510-i et 515-i sont de préférence similaires. Il s’agit par exemple de mémoire de type FIFO dont les entrées et les sorties sont des fragments d’images, par exemple des lignes d’images. Par conséquent, un même emplacement dans ces mémoires correspond à un même emplacement dans les images dont des fragments sont mémorisés (en considérant des images de mêmes dimensions). Dans un mode de réalisation particulier, chacune des mémoires tampons 510-i et 515-i permet de stocker quelques fragments d’images (i.e. quelques fragments d’une image de synthèse ou d’une image reçue de la caméra vidéo 215-i, par exemple entre 2 et 10 lignes d’une image.Buffers 510-i and 515-i are preferably similar. This is for example FIFO-type memory whose inputs and outputs are fragments of images, for example lines of images. Therefore, the same location in these memories corresponds to the same location in the images whose fragments are stored (by considering images of the same dimensions). In a particular embodiment, each of the buffers 510-i and 515-i makes it possible to store a few image fragments (ie a few fragments of a synthesis image or of an image received from the video camera 215-i, for example between 2 and 10 lines of an image.

Le circuit logique programmable 235-i comprend en outre un module de calcul 520-i permettant de combiner des fragments d’images appartenant à au moins deux images différentes en fragments d’une seule image. Selon des modes de réalisation particuliers, le module de calcul 520-i est configuré pour permettre différents modes de combinaison de fragments, le choix du mode étant par exemple paramétré par le calculateur 230-i. Un de ces modes peut correspondre au chromakey. Il existe d’autres modes de combinaison d’images, par exemple la fusion (ou blending en terminologie anglo-saxonne). Comme décrit précédemment, le nombre de fragments obtenus de la mémoire tampon 510-i et le nombre de fragments obtenus de la mémoire tampon 515-i pour produire un ou plusieurs fragments d’une image mixte peuvent être différents. Ces nombres sont typiquement gérés par le module de calcul 520-i selon le mode de combinaison utilisé.The programmable logic circuit 235-i further comprises a calculation module 520-i for combining image fragments belonging to at least two different images into fragments of a single image. According to particular embodiments, the calculation module 520-i is configured to allow different modes of combining fragments, the choice of mode being for example parameterized by the computer 230-i. One of these modes may be chromakey. There are other modes of combination of images, for example the fusion (or blending in English terminology). As previously described, the number of fragments obtained from the buffer 510-i and the number of fragments obtained from the buffer memory 515-i to produce one or more fragments of a mixed image may be different. These numbers are typically managed by the calculation module 520-i according to the combination mode used.

Par ailleurs, le circuit logique programmable 235-i comprend un module de communication 525-i, par exemple de type PCI Express, pour échanger des données avec, notamment, le calculateur 230-i. Le module de communication 525-i permet, en particulier, de transférer des données reçues du calculateur 230-i dans la mémoire tampon 515-i et de transférer vers le calculateur 230-i des données résultant d’un traitement effectué dans le module de calcul 520-i.Moreover, the programmable logic circuit 235-i comprises a communication module 525-i, for example of the PCI Express type, for exchanging data with, in particular, the computer 230-i. The communication module 525-i makes it possible, in particular, to transfer data received from the computer 230-i into the buffer memory 515-i and to transfer to the computer 230-i data resulting from a processing carried out in the data module. calculation 520-i.

Il est observé ici que pour traiter des données relatives aux deux yeux d’un utilisateur, des données peuvent être échangées entre les calculateurs 230-1 et 230-2 et/ou les circuits logiques programmables 235-1 et 235-2, par exemple pour prendre en compte les données communes entre les images visualisées par chaque œil ou entre les images utilisées pour générer ces dernières. Dans un souci de clarté, ces connexions ne sont pas représentées sur la figure 5.It is observed here that to process data relating to the two eyes of a user, data can be exchanged between the computers 230-1 and 230-2 and / or the programmable logic circuits 235-1 and 235-2, for example to take into account the common data between the images viewed by each eye or between the images used to generate them. For the sake of clarity, these connections are not shown in FIG.

Comme le circuit logique programmable 235-i, le calculateur 230-i comprend un module de communication 530-i, par exemple de type PCI Express. Il est similaire ou compatible avec celui du circuit logique programmable 235-i pour permettre un échange de données entre ces entités.Like the programmable logic circuit 235-i, the computer 230-i comprises a communication module 530-i, for example PCI Express type. It is similar or compatible with that of the programmable logic circuit 235-i to allow data exchange between these entities.

Le calculateur 230-i comprend en outre au moins une mémoire tampon 535-i pour stocker des fragments d’images de synthèse générés par le calculateur 230-i en fonction de données de position et/ou d’orientation reçues du capteur 225 et pour stocker des fragments d’images mixtes reçus du circuit logique programmable 235-i. La transmission de fragments d’images stockés dans cette mémoire tampon vers l’écran d’affichage 220-i peut être effectuée, par exemple, par le contrôleur vidéo de sortie 540-i. A titre d’illustration, la mémoire tampon 535-i peut stocker des fragments d’images tels que ceux décrits en référence à la figure 4.The computer 230-i further comprises at least one buffer memory 535-i for storing synthesis image fragments generated by the computer 230-i as a function of position and / or orientation data received from the sensor 225 and for storing mixed image fragments received from the programmable logic circuit 235-i. Transmission of image fragments stored in this buffer to the display screen 220-i may be performed, for example, by the output video controller 540-i. By way of illustration, the buffer memory 535-i can store image fragments such as those described with reference to FIG. 4.

Le calculateur 230-i comprend un ou plusieurs microprocesseurs 545-i, par exemple un ou plusieurs microprocesseurs multi-cœurs, dans lesquels sont exécutés un ou plusieurs systèmes d’exploitation ou OS (sigle de operating system en terminologie anglo-saxonne) avec leur noyau 550-i et des pilotes 555-i (couramment appelés drivers) prenant en charge les transferts de données vers d’autres modules, permettant l’exécution d’applications 560-i.The computer 230-i comprises one or more microprocessors 545-i, for example one or more multi-core microprocessors, in which are run one or more operating systems or OS (acronym for operating system in English terminology) with their 550-i kernel and 555-i drivers (commonly known as drivers) that support data transfers to other modules, allowing the execution of 560-i applications.

Une ou plusieurs applications sont notamment exécutées par au moins un cœur pour contrôler la génération d’images de synthèse, au moins une partie des calculs nécessaires à la génération de ces images étant avantageusement effectuée dans un ou plusieurs coprocesseurs graphiques 565-i comme illustré sur la figure 5 par le lien entre le ou les microprocesseurs 545-i et le ou les coprocesseurs graphiques 565-i.One or more applications are notably executed by at least one core to control the generation of computer images, at least part of the calculations necessary for the generation of these images being advantageously carried out in one or more graphic coprocessors 565-i as illustrated on FIG. 5 is the link between the microprocessor (s) 545-i and the graphic coprocessor (s) 565-i.

Le calculateur 230-i peut également comprendre un contrôleur vidéo d’entrée 570-i pour recevoir des fragments d’images, par exemple des fragments d’images de synthèse générés par une autre source. Ces fragments peuvent venir en complément ou à la place de ceux générés par le calculateur 230-i. Ils peuvent être stockés dans la mémoire tampon 535-i afin d’être traités de la même façon que les fragments générés par le calculateur 230-i.The computer 230-i may also comprise an input video controller 570-i for receiving image fragments, for example fragments of computer generated images generated by another source. These fragments may come in addition to or in place of those generated by the computer 230-i. They can be stored in the buffer 535-i in order to be treated in the same way as the fragments generated by the computer 230-i.

Selon des modes de réalisation particuliers, des processus particuliers sont assignés à un ou plusieurs cœurs du ou des microprocesseurs du calculateur 230-i afin que ces processus ne soient pas perturbés par des interruptions visant d’autres fonctions. De tels processus sont, par exemple, liés à la réception de données de position et/ou d’orientation, afin que cette réception ne soit pas perturbée par d’autres processus, notamment la génération d’images de synthèse, et que des données de position et/ou orientation récentes puissent être utilisées.According to particular embodiments, particular processes are assigned to one or more cores of the microprocessor (s) of the computer 230-i so that these processes are not disturbed by interrupts for other functions. Such processes are, for example, related to the reception of position and / or orientation data, so that this reception is not disturbed by other processes, in particular the generation of computer-generated images, and that data recent position and / or orientation can be used.

Toujours selon des modes de réalisation particuliers, les processus de traitement et d’affichage d’images mixtes sont initiés par les calculateurs, c’est-à-dire par un calculateur pour un œil et par un autre calculateur pour l’autre œil, ces processeurs étant synchronisés et exécutant les mêmes processus en parallèle.Still according to particular embodiments, the processes for processing and displaying mixed images are initiated by the computers, that is to say by a computer for one eye and by another computer for the other eye, these processors are synchronized and running the same processes in parallel.

Comme décrit en référence à la figure 3, lorsqu’une image doit être traitée et affichée, le calculateur 230-i génère un événement de type frame_event qui est transmis au circuit logique programmable 235-i, ce dernier le relayant, par exemple sous forme d’une interruption, à la caméra vidéo 215-i, comme représenté avec les références ® et ©'.As described with reference to FIG. 3, when an image has to be processed and displayed, the computer 230-i generates an event of the frame_event type which is transmitted to the programmable logic circuit 235-i, the latter relaying it, for example in the form of an interruption, to the video camera 215-i, as shown with the references ® and © '.

Suite à cet événement, le calculateur 230-i génère des fragments d’une image de synthèse, par exemple des lignes d’image qui sont stockées dans la mémoire tampon 535-i (référence ®). Parallèlement, l’événement frame_event déclenche, dans la caméra vidéo 215-i, la transmission de fragments d’une image obtenue par le capteur vidéo 500-i vers la mémoire tampon 510-i du circuit logique programmable 235-i (référence ®’).Following this event, the computer 230-i generates fragments of a synthetic image, for example image lines that are stored in the buffer memory 535-i (reference ®). Meanwhile, the event frame_event triggers, in the video camera 215-i, the transmission of fragments of an image obtained by the video sensor 500-i to the buffer 510-i of the programmable logic circuit 235-i (reference ® ' ).

Un tel transfert peut avantageusement être effectué selon un mode de transfert de données connu sous le nom de DMA (sigle de direct memory access en terminologie anglo-saxonne), permettant un transfert rapide des données. Selon ce mode de transmission, les données sont transférées directement par un contrôleur de mémoire vers une mémoire cible, sans intervention d’un microprocesseur.Such a transfer can advantageously be performed according to a data transfer mode known as the DMA (acronym for direct memory access), allowing a fast transfer of data. According to this transmission mode, the data is transferred directly by a memory controller to a target memory, without the intervention of a microprocessor.

Lorsqu’au moins un fragment d’image de synthèse est stocké dans la mémoire tampon 535-i du calculateur 230-i, un fragment d’image est transmis depuis cette mémoire tampon vers la mémoire tampon 515-i du circuit logique programmable 235-i, comme représenté avec la référence ©. A nouveau, ce transfert utilise avantageusement le mode DMA.When at least one fragment of the synthesis image is stored in the buffer memory 535-i of the computer 230-i, an image fragment is transmitted from this buffer memory to the buffer memory 515-i of the programmable logic circuit 235. i, as shown with the reference ©. Again, this transfer advantageously uses the DMA mode.

Lorsque des fragments d’images sont disponibles dans les mémoires tampons 510-i et 515-i, au moins un fragment d’image de chacune de ces mémoires tampons est transmis au module de calcul 520-i pour générer au moins un fragment d’image mixte (référence ®). Comme décrit précédemment, le nombre de fragments d’image obtenus des mémoires tampons 510-i et 515-i pour générer un ou plusieurs fragments d’image mixte dépend du traitement effectué. A nouveau, l’utilisation de mémoires tampons de type FIFO, pour les mémoires tampons 510-i et 515-i permet d’assurer très simplement une synchronisation entre les fragments d’image.When image fragments are available in the buffers 510-i and 515-i, at least one image fragment of each of these buffers is transmitted to the calculation module 520-i to generate at least one fragment of mixed image (reference ®). As previously described, the number of image fragments obtained from the buffers 510-i and 515-i for generating one or more mixed image fragments depends on the processing performed. Again, the use of FIFO buffers for buffers 510-i and 515-i makes it very easy to synchronize image fragments.

Le ou les fragments d’image mixte obtenus dans le module de calcul 520-i sont ensuite transmis vers la mémoire tampon 535-i du calculateur 230-i (référence ©), par exemple à l’emplacement du fragment d’image de synthèse générée utilisé pour l’obtention du fragment d’image mixte à mémoriser, comme décrit en référence à la figure 4. A nouveau, un mode de transfert de données de type DMA est, de préférence, utilisé.The one or more mixed image fragments obtained in the calculation module 520-i are then transmitted to the buffer memory 535-i of the computer 230-i (reference)), for example at the location of the synthetic image fragment. generated, used to obtain the mixed image fragment to be stored, as described with reference to Figure 4. Again, a DMA data transfer mode is preferably used.

Lorsque tous les fragments de l’image de synthèse générés dans le calculateur 230-i ont été traités (i.e. transmis au circuit logique programmable 235-i) et que tous les fragments d’image mixte ont été reçus par le calculateur 230-i, l’image mixte peut être affichée (référence ©). Selon un mode de réalisation particulier, l’affichage sur l’écran 220-i peut être géré, de façon classique, par le contrôleur vidéo de sortie 540-i.When all the fragments of the synthesis image generated in the computer 230-i have been processed (ie transmitted to the programmable logic circuit 235-i) and all the mixed image fragments have been received by the computer 230-i, the mixed image can be displayed (reference ©). According to a particular embodiment, the display on the screen 220-i can be managed, conventionally, by the output video controller 540-i.

Comme décrit précédemment, l’architecture illustrée sur la figure 5 peut être dupliquée pour traiter et afficher les images de l’œil gauche et de l’œil droit ou peut être répliquée autant de fois que le système comprend d’écrans.As previously described, the architecture illustrated in FIG. 5 may be duplicated to process and display left eye and right eye images or may be replicated as many times as the system comprises screens.

Les figures 6a, 6b, 6c et 6d illustrent un exemple de contenu de mémoires tampons d’un calculateur et d’un circuit logique programmable associé lors d’un traitement en vue de l’affichage d’une nouvelle image mixte. A titre d’illustration, la mémoire tampon 535-i du calculateur 230-i et les mémoires tampons 510-i et 515-i du circuit logique programmable 235-i sont ici considérées.FIGS. 6a, 6b, 6c and 6d illustrate an exemplary content of buffers of a computer and of an associated programmable logic circuit during processing for the purpose of displaying a new mixed image. By way of illustration, the buffer memory 535-i of the computer 230-i and the buffers 510-i and 515-i of the programmable logic circuit 235-i are here considered.

Les figures 6a, 6b, 6c et 6d correspondent à quatre instants successifs. Ainsi, par exemple, la figure 6a représente le contenu des mémoires tampons à un instant t, la figure 6b représente le contenu de ces mémoires tampons à un instant t+1, la figure 6c représente le contenu de ces mémoires tampons à un instant t+2 et la figure 6d représente le contenu de ces mémoires tampons à un instant t+3.Figures 6a, 6b, 6c and 6d correspond to four successive instants. Thus, for example, FIG. 6a represents the contents of the buffers at a time t, FIG. 6b represents the contents of these buffers at a time t + 1, FIG. 6c represents the contents of these buffers at a time t +2 and FIG. 6d represents the contents of these buffers at a time t + 3.

Dans un souci de clarté, il est considéré ici que les images sont traitées par lignes.For the sake of clarity, it is considered here that the images are processed by lines.

Selon cet exemple, la mémoire tampon 535-i peut stocker au moins une image complète (i.e. une image virtuelle ou une image mixte) tandis que les mémoires tampons 510-i et 515-i ne peuvent stocker que quelques lignes d’images.According to this example, the buffer memory 535-i can store at least one complete image (i.e. a virtual image or a mixed image) while the buffers 510-i and 515-i can store only a few lines of images.

Comme illustré sur la figure 6a, après qu’un événement de type frame_event ait été généré, des lignes d’une image de synthèse sont générées et stockées dans la mémoire tampon 535-i du calculateur 230-i. Trois lignes générées pour l'image de synthèse référencée imag_S(k), numérotées 1 à 3, sont ici mémorisées.As illustrated in FIG. 6a, after an event of the frame_event type has been generated, lines of a synthesis image are generated and stored in the buffer memory 535-i of the computer 230-i. Three lines generated for the synthetic image referenced imag_S (k), numbered 1 to 3, are here stored.

En parallèle, des lignes d’une image réelle, obtenue d’une caméra et correspondant à l’image de synthèse générée (partageant ici le même index k), sont transférées vers la mémoire tampon 510-i du circuit logique programmable 235-i. Dans l’exemple illustré, deux lignes numérotées 1 et 2 de l’image réelle référencée imag_R(k) sont mémorisées dans la mémoire tampon 510-i. A cet instant, aucune ligne correspondant à l’image de synthèse imag_S(k) n’a encore été transférée vers la mémoire tampon 515-i du circuit logique programmable 235-i. La mémoire tampon 515-i est donc vide. A un instant suivant, comme illustré sur la figure 6b, une quatrième ligne de l’image de synthèse imag_S(k) a été générée et stockée dans la mémoire tampon 535-i du calculateur 230-i qui stocke alors quatre lignes de l’image de synthèse imag_S(k).In parallel, lines of a real image, obtained from a camera and corresponding to the generated synthesis image (sharing here the same index k), are transferred to the buffer memory 510-i of the programmable logic circuit 235-i . In the illustrated example, two lines numbered 1 and 2 of the real image referenced imag_R (k) are stored in the buffer memory 510-i. At this time, no line corresponding to the synthetic image imag_S (k) has yet been transferred to the buffer memory 515-i of the programmable logic circuit 235-i. The buffer memory 515-i is therefore empty. At a next instant, as illustrated in FIG. 6b, a fourth line of the synthetic image imag_S (k) has been generated and stored in the buffer memory 535-i of the computer 230-i which then stores four lines of the synthetic image imag_S (k).

De même, deux nouvelles lignes de l’image réelle imag_R(k) ont été transférées depuis la caméra vidéo vers la mémoire tampon 510-i qui contient alors quatre lignes de l’image réelle imag_R(k).Similarly, two new lines of the real image imag_R (k) have been transferred from the video camera to the buffer 510-i which then contains four lines of the real image imag_R (k).

Par ailleurs, la première ligne de l’image de synthèse imag_S(k) a été transférée depuis la mémoire tampon 535-i du calculateur 230-i vers la mémoire tampon 515-i du circuit logique programmable 235-i.Moreover, the first line of the synthesis image imag_S (k) was transferred from the buffer memory 535-i of the computer 230-i to the buffer memory 515-i of the programmable logic circuit 235-i.

Les mémoires tampons 510-i et 515-i contenant des lignes équivalentes de l’image réelle et de l’image de synthèse (i.e. la ligne 1), ces lignes peuvent être traitées pour créer une ligne d’une image mixte.Since the buffers 510-i and 515-i contain equivalent lines of the real image and the synthesis image (i.e., line 1), these lines can be processed to create a line of a mixed image.

Comme illustré sur la figure 6c, la ligne créée de l’image mixte, référencée imag_M(k), est mémorisée dans la mémoire tampon 535-i du calculateur 230-i, à la place de la ligne de l’image de synthèse qui a été utilisée à ces fins (i.e. la ligne 1).As illustrated in FIG. 6c, the created line of the mixed image, referenced imag_M (k), is stored in the buffer memory 535-i of the computer 230-i, instead of the line of the synthesis image which was used for these purposes (ie line 1).

Les lignes de l’image de synthèse et de l’image réelle utilisées pour créer cette ligne de l’image mixte ont disparu des mémoires tampons 510-i et 515-i (selon le principe des mémoires de type FIFO). Par ailleurs, de nouvelles lignes de l’image de synthèse et de l’image réelle ont été transférées vers les mémoires tampons 510-i et 515-i, respectivement.The lines of the synthesis image and the real image used to create this line of the mixed image have disappeared from the buffers 510-i and 515-i (according to the principle of FIFO memories). In addition, new lines of the synthesis image and the real image have been transferred to the buffers 510-i and 515-i, respectively.

Dans cet exemple, aucune nouvelle ligne de l’image de synthèse n’a été mémorisée dans la mémoire tampon 535-i du calculateur 230-i. A nouveau, les mémoires tampons 510-i et 515-i contenant des lignes équivalentes de l’image réelle et de l’image de synthèse, respectivement, ces lignes peuvent être traitées pour créer une ou plusieurs lignes d’une image mixte.In this example, no new row of the synthesis image has been stored in the buffer 535-i of the computer 230-i. Again, the buffers 510-i and 515-i containing equivalent lines of the real image and the synthesis image, respectively, these lines can be processed to create one or more lines of a mixed image.

Ainsi, comme illustré sur la figure 6d, la seconde ligne créée de l’image mixte est mémorisée dans la mémoire tampon 535-i du calculateur 230-i, à la place de la ligne de l’image de synthèse qui a été utilisée à ces fins. Les lignes de l’image de synthèse et de l’image réelle utilisées pour créer cette ligne de l’image mixte disparaissent des mémoires tampons 510-i et 515-i et de nouvelles lignes de l’image de synthèse et de l’image réelle ont été transférées vers les mémoires tampons 510-i et 515-i, respectivement.Thus, as illustrated in FIG. 6d, the second created line of the mixed image is stored in the buffer memory 535-i of the computer 230-i, in place of the line of the synthesis image that has been used in FIG. these purposes. The lines of the synthesis image and the actual image used to create this line of the mixed image disappear from the buffers 510-i and 515-i and new lines of the synthesis image and the image actual were transferred to buffers 510-i and 515-i, respectively.

Dans cet exemple, une nouvelle ligne de l’image de synthèse a été mémorisée dans la mémoire tampon 535-i du calculateur 230-i.In this example, a new line of the synthesis image has been stored in the buffer memory 535-i of the computer 230-i.

Le processus se poursuit ainsi jusqu’à ce que toutes les lignes de l’image mixte aient été créées.The process continues until all the lines of the mixed image have been created.

La figure 7 illustre un exemple d’étapes mises en œuvre dans le calculateur 230-i.FIG. 7 illustrates an example of steps implemented in the computer 230-i.

Comme illustré, une première étape (étape 700) a pour objet d’initialiser les variables r et n à la valeur de la variable k qui représente l’index de la dernière image de synthèse générée. La variable n représente un index d’images de synthèse dont des fragments doivent être transmis au circuit logique programmable et la variable r représente un index d’images mixtes dont des fragments doivent être mémorisés dans le calculateur.As illustrated, a first step (step 700) is intended to initialize the variables r and n to the value of the variable k which represents the index of the last generated synthesis image. The variable n represents an index of synthesis images whose fragments must be transmitted to the programmable logic circuit and the variable r represents a composite image index of which fragments must be stored in the computer.

Lorsqu’un événement de type frame_event est détecté (étape 705), la variable I est initialisée à la valeur un et la variable k est incrémentée de un (étape 710). La variable I représente un index de fragments dans l’image de synthèse qui est générée.When an event of type frame_event is detected (step 705), the variable I is initialized to the value one and the variable k is incremented by one (step 710). The variable I represents an index of fragments in the synthesis image that is generated.

Le fragment / de l’image de synthèse imag_S(k) est alors généré (étape 715) puis stocké dans la mémoire tampon 535-i du calculateur 230-i (étape 720). Dans une étape suivante, un test est effectué pour déterminer si l’index / a atteint sa valeur maximale (maxL), c’est-à-dire pour déterminer si l’index / correspond au dernier fragment de l’image de synthèse qui est générée (étape 725).The fragment / of the synthetic image imag_S (k) is then generated (step 715) then stored in the buffer memory 535-i of the computer 230-i (step 720). In a next step, a test is performed to determine if the index / has reached its maximum value (maxL), that is to say to determine if the index / corresponds to the last fragment of the computer image that is generated (step 725).

Si l’index / n’a pas atteint sa valeur maximale (maxL), l’index / est incrémenté de un (étape 730) et les étapes 715 et 720 sont répétées pour générer et stocker un nouveau fragment d’image de synthèse.If the index / has not reached its maximum value (maxL), the index / is incremented by one (step 730) and steps 715 and 720 are repeated to generate and store a new synthesis image fragment.

Dans le cas contraire, si l’index / a atteint sa valeur maximale (maxL), un test est effectué pour déterminer si la mémoire tampon 535-i du calculateur 230-i contient un espace libre (étape 735) permettant de générer et stocker de nouveaux fragments d’images de synthèse.In the opposite case, if the index / has reached its maximum value (maxL), a test is performed to determine whether the buffer 535-i of the computer 230-i contains a free space (step 735) for generating and storing new fragments of computer-generated images.

Parallèlement, lorsqu’au moins un fragment d’une image de synthèse a été généré et stocké (étapes 715 et 720), la variable m est initialisée à la valeur un et la variable n est incrémentée de un (étape 740). La variable m représente un index de fragments dans l’image de synthèse générée qui est transmise au circuit logique programmable 235-i.In parallel, when at least one fragment of a synthesis image has been generated and stored (steps 715 and 720), the variable m is initialized to the value one and the variable n is incremented by one (step 740). The variable m represents a fragment index in the generated synthesis image that is transmitted to the programmable logic circuit 235-i.

Dans une étape suivante, le fragment m de l’image imag_S(n) est transmis au circuit logique programmable 235-i (étape 745) pour être stocké dans la mémoire tampon 515-i.In a next step, the fragment m of the image imag_S (n) is transmitted to the programmable logic circuit 235-i (step 745) to be stored in the buffer memory 515-i.

Un test est ensuite effectué pour déterminer si l’index m a atteint sa valeur maximale (maxL), c’est-à-dire pour déterminer si l’index m correspond au dernier fragment de l’image de synthèse à transmettre (étape 750).A test is then performed to determine if the index ma reaches its maximum value (maxL), that is to say to determine if the index m corresponds to the last fragment of the summary image to be transmitted (step 750) .

Si l’index m n’a pas atteint sa valeur maximale (maxL), l’index m est incrémenté de un (étape 755) et l’étape 745 est répétée pour transmettre le fragment suivant.If the index m has not reached its maximum value (maxL), the index m is incremented by one (step 755) and step 745 is repeated to transmit the next fragment.

Si, au contraire, l’index m a atteint sa valeur maximale (maxL), un test est effectué pour déterminer s’il existe des fragments d’une image de synthèse suivante à transmettre (étape 760). S’il existe des fragments d’une image de synthèse suivante à transmettre, les étapes 740 à 755 sont répétées.If, on the contrary, the index m has reached its maximum value (maxL), a test is performed to determine whether there are fragments of a next synthesis image to be transmitted (step 760). If there are fragments of a next synthetic image to be transmitted, steps 740 to 755 are repeated.

Parallèlement encore, si au moins un fragment d’une image de synthèse a été transféré à la mémoire tampon 515-i du circuit logique 235-i, la variable q est initialisée à la valeur un et la variable r est incrémentée de un (étape 765). La variable q représente un index de fragments dans une image mixte qui doit être reçue du circuit logique programmable 235-i.At the same time, if at least one fragment of a synthesis image has been transferred to the buffer memory 515-i of the logic circuit 235-i, the variable q is initialized to the value one and the variable r is incremented by one (step 765). The variable q represents a fragment index in a mixed image to be received from the programmable logic circuit 235-i.

Dans une étape suivante, lorsque le fragment q de l’image mixte imag_M(r) est reçu du circuit logique programmable 235-i, il est stocké dans la mémoire tampon 535-i du calculateur 230-i à l’emplacement défini par les variables q et r (étape 770).In a next step, when the fragment q of the mixed image imag_M (r) is received from the programmable logic circuit 235-i, it is stored in the buffer memory 535-i of the computer 230-i at the location defined by the q and r variables (step 770).

Un test est ensuite effectué pour déterminer si l’index q a atteint sa valeur maximale (maxL), c’est-à-dire pour déterminer si l’index q correspond au dernier fragment de l’image mixte à recevoir (étape 775).A test is then performed to determine if the index q has reached its maximum value (maxL), that is to say to determine if the index q corresponds to the last fragment of the mixed image to receive (step 775).

Si l’index q n’a pas atteint sa valeur maximale (maxL), l’index q est incrémenté de un (étape 780) et l’étape 770 est répétée pour recevoir le fragment suivant.If the index q has not reached its maximum value (maxL), the index q is incremented by one (step 780) and step 770 is repeated to receive the next fragment.

Si, au contraire, l’index q a atteint sa valeur maximale (maxL), un événement est généré pour afficher l’image mixte reçue (étape 785) et un test est effectué pour déterminer s’il existe des fragments d’une image mixte suivante à recevoir (étape 790). S’il existe des fragments d’une image mixte suivante à recevoir, les étapes 765 à 785 sont répétées.If, on the contrary, the index qa reaches its maximum value (maxL), an event is generated to display the received mixed image (step 785) and a test is performed to determine if there are fragments of a mixed image next to receive (step 790). If there are fragments of a next mixed image to receive, steps 765 to 785 are repeated.

La figure 8 illustre un exemple d’étapes mises en œuvre dans le circuit logique programmable élémentaire 505-i de la caméra vidéo 215-i.FIG. 8 illustrates an example of steps implemented in the elementary programmable logic circuit 505-i of the video camera 215-i.

Lorsqu’un événement de type frame_event est détecté (étape 800), les fragments de la dernière image acquise par le capteur vidéo 500-1, représentant une scène réelle, sont transmis, de façon successive, au circuit logique programmable 235-i pour être mémorisés dans la mémoire tampon 510-i (étape 805).When a frame_event event is detected (step 800), the fragments of the last image acquired by the video sensor 500-1, representing a real scene, are successively transmitted to the programmable logic circuit 235-i to be stored in the buffer 510-i (step 805).

La figure 9 illustre un exemple d’étapes mises en œuvre dans le circuit logique programmable 235-i.FIG. 9 illustrates an example of steps implemented in the programmable logic circuit 235-i.

Comme illustré, dès qu’il est déterminé qu’un fragment d’une image de synthèse est mémorisé dans la mémoire tampon 515-i et qu’un fragment d’une image réelle est mémorisé dans la mémoire tampon 510-i (étape 900), au moins un fragment de chacune de ces images, correspondant l’un à l’autre, est utilisé par un module de calcul pour les combiner et créer un fragment d’une image mixte (étape 905). Ce fragment d’image mixte est ensuite transmis au calculateur 230-i comme décrit précédemment (étape 910).As illustrated, as soon as it is determined that a fragment of a synthesis image is stored in the buffer memory 515-i and that a fragment of a real image is stored in the buffer memory 510-i (step 900 ), at least one fragment of each of these images, corresponding to each other, is used by a calculation module to combine them and create a fragment of a mixed image (step 905). This mixed image fragment is then transmitted to the computer 230-i as previously described (step 910).

Naturellement, pour satisfaire des besoins spécifiques, une personne compétente dans le domaine de l’invention pourra appliquer des modifications dans la description précédente. La présente invention ne se limite pas aux formes de réalisation décrites, d'autres variantes et combinaisons de caractéristiques sont possibles.Naturally, to meet specific needs, a person skilled in the field of the invention may apply modifications in the foregoing description. The present invention is not limited to the described embodiments, other variations and combinations of features are possible.

En particulier, alors que l’invention a été décrite en référence à l’utilisation d’un calculateur et d’un circuit logique programmable associé, d’autres configurations équivalentes peuvent être mises en œuvre.In particular, while the invention has been described with reference to the use of a computer and an associated programmable logic circuit, other equivalent configurations can be implemented.

La présente invention a été décrite et illustrée dans la présente description détaillée en référence aux figures jointes. Toutefois, la présente invention ne se limite pas aux formes de réalisation présentées. D'autres variantes et modes de réalisation peuvent être déduits et mis en œuvre par la personne compétente dans le domaine de l’invention à la lecture de la présente description et des figures annexées.The present invention has been described and illustrated in the present detailed description with reference to the accompanying figures. However, the present invention is not limited to the embodiments presented. Other variants and embodiments can be deduced and implemented by the person skilled in the field of the invention upon reading this description and the accompanying figures.

Dans les revendications, le terme « comporter » n'exclut pas d'autres éléments ou d'autres étapes. L'article indéfini « un » n’exclut pas le pluriel. Un seul processeur ou plusieurs autres unités peuvent être utilisés pour mettre en œuvre l'invention. Les différentes caractéristiques présentées et/ou revendiquées peuvent être avantageusement combinées. Leur présence dans la description ou dans des revendications dépendantes différentes n'exclut pas, en effet, la possibilité de les combiner. Les signes de référence ne sauraient être compris comme limitant la portée de l'invention.In the claims, the term "include" does not exclude other elements or other steps. The indefinite article "one" does not exclude the plural. A single processor or several other units may be used to implement the invention. The various features presented and / or claimed can be advantageously combined. Their presence in the description or in different dependent claims does not exclude the possibility of combining them. The reference signs can not be understood as limiting the scope of the invention.

Claims (12)

1. Dispositif de traitement d’images pour afficheur (220), le dispositif comprenant au moins un calculateur (230) et au moins un circuit logique (235), distincts et connectés l’un à l’autre par un bus de communication, ledit au moins un calculateur étant configuré pour transmettre, par fragments, au moins une image de synthèse audit au moins un circuit logique et pour déclencher la transmission successive de fragments d’images depuis au moins une source d’images externe vers ledit au moins un circuit logique, ledit au moins un circuit logique étant configuré pour combiner au moins un fragment d’une image de synthèse reçu dudit au moins un calculateur et au moins un fragment d’une image reçu de ladite au moins une source d’images externe pour créer au moins un fragment d’une image mixte, ledit au moins un circuit logique étant en outre configuré pour transmettre ledit au moins un fragment créé d’une image mixte audit au moins un calculateur.An image processing device for a display (220), the device comprising at least one computer (230) and at least one logic circuit (235), separate and connected to each other by a communication bus, said at least one computer being configured to fragmentably transmit at least one synthesis image to said at least one logic circuit and to trigger successive transmission of image fragments from at least one external image source to said at least one logic circuit, said at least one logic circuit being configured to combine at least one fragment of a synthetic image received from said at least one computer and at least one fragment of an image received from said at least one external image source for creating at least one fragment of a mixed image, said at least one logic circuit being further configured to transmit said at least one created fragment of a mixed image to said at least one computer. 2. Dispositif selon la revendication 1 selon lequel ledit au moins un circuit logique comprend au moins deux mémoires tampons distinctes de type premier-entré / premier-sorti, une desdites au moins deux mémoires tampons étant configurée pour mémoriser des fragments d’images reçus dudit au moins un calculateur et l’autre desdites au moins deux mémoires tampons étant configurée pour mémoriser des fragments d’images reçus de ladite au moins une source d’images externe.2. Device according to claim 1 wherein said at least one logic circuit comprises at least two distinct buffers of first-in / first-out type, one of said at least two buffers being configured to store image fragments received from said at least one computer and the other of said at least two buffers being configured to store image fragments received from said at least one external image source. 3. Dispositif selon la revendication 1 ou la revendication 2 selon lequel ledit au moins un calculateur est configuré pour recevoir des données de position et/ou d’orientation associées à des images de ladite au moins une source d’images externe et pour générer des fragments d’image de synthèse en fonction de données reçues de position et/ou d’orientation.Apparatus according to claim 1 or claim 2 wherein said at least one computer is configured to receive position and / or orientation data associated with images of said at least one external image source and to generate synthetic image fragments according to received position and / or orientation data. 4. Dispositif selon l’une quelconque des revendications 1 à 3 selon lequel ledit au moins un calculateur comprend au moins un microprocesseur et au moins un coprocesseur graphique, ledit au moins un coprocesseur graphique étant configuré pour générer des fragments d’images de synthèse.4. Device according to any one of claims 1 to 3 wherein said at least one computer comprises at least one microprocessor and at least one graphics coprocessor, said at least one graphics coprocessor being configured to generate synthesis image fragments. 5. Dispositif selon la revendication 4 dépendante de la revendication 3 selon lequel ledit au moins un microprocesseur est un microprocesseur multi-cœurs, au moins un cœur étant associé à une fonction de réception de données de position et/ou d’orientation.5. Device according to claim 4 dependent on claim 3 wherein said at least one microprocessor is a multi-core microprocessor, at least one heart being associated with a function of receiving position data and / or orientation. 6. Dispositif selon l’une quelconque des revendications 1 à 5 comprenant ladite au moins une source d’images externe, ladite au moins une source d’images externe comprenant au moins un capteur vidéo (500) et au moins un circuit logique élémentaire (505), le circuit logique élémentaire étant configuré pour transmettre, par fragments successifs, au moins une image issue dudit au moins un capteur vidéo sur réception d’un événement prédéterminé.6. Device according to any one of claims 1 to 5 comprising said at least one external image source, said at least one external image source comprising at least one video sensor (500) and at least one elementary logic circuit ( 505), the elementary logic circuit being configured to transmit, in successive fragments, at least one image from said at least one video sensor upon receipt of a predetermined event. 7. Dispositif selon la revendication 6 comprenant en outre une interface de communication mettant un œuvre un protocole de communication de type SDI et permettant un transfert de données entre ladite au moins une source d’images externe et ledit au moins un calculateur.7. Device according to claim 6 further comprising a communication interface implementing a SDI type communication protocol and allowing a data transfer between said at least one external image source and said at least one computer. 8. Dispositif selon l’une quelconque des revendications 1 à 7 selon lequel le bus de communication est de type PCI Express.8. Device according to any one of claims 1 to 7 according to which the communication bus is PCI Express type. 9. Dispositif selon l’une quelconque des revendications 1 à 8 comprenant au moins deux calculateurs (230-1, 230-2) et au moins deux circuits logiques (235-1, 235-2), formant au moins deux paires comprenant chacune au moins un calculateur et au moins un circuit logique, chaque paire étant associée à au moins une source d’images externe et à au moins un écran pour effectuer un traitement d’images associé à ladite au moins une source d’images externe et audit au moins un écran associés.9. Device according to any one of claims 1 to 8 comprising at least two computers (230-1, 230-2) and at least two logic circuits (235-1, 235-2), forming at least two pairs each comprising at least one computer and at least one logic circuit, each pair being associated with at least one external image source and at least one screen for performing image processing associated with said at least one external image source and auditing at least one associated screen. 10. Dispositif selon la revendication 9 selon lequel lesdits au moins deux circuits logiques sont formés dans un même composant de type FPGA.10. Device according to claim 9 wherein said at least two logic circuits are formed in the same component type FPGA. 11. Procédé de traitement d’images pour un dispositif pour afficheur (220), le dispositif comprenant au moins un calculateur (230) et au moins un circuit logique (235), distincts et connectés l’un à l’autre par un bus de communication, ledit procédé étant exécuté par ledit au moins un calculateur et comprenant les étapes suivantes : - génération d’un événement de traitement d’une nouvelle image et transmission dudit événement à au moins une source d’images externe pour déclencher la transmission de fragments d’image depuis ladite au moins une source d’images externe vers ledit au moins un circuit logique ; - suite à la génération dudit événement, - génération d’au moins un fragment d’au moins une image de synthèse ; - transmission dudit au moins un fragment généré audit circuit logique ; et - réception dudit circuit logique d’au moins un fragment d’une image mixte, ledit au moins fragment reçu résultant d’une combinaison dudit au moins un fragment généré transmis et d’au moins un fragment d’image transmis depuis ladite au moins une source d’images externe vers ledit au moins un circuit logique.11. An image processing method for a display device (220), the device comprising at least one computer (230) and at least one logic circuit (235), separate and connected to each other by a bus communication method, said method being executed by said at least one computer and comprising the following steps: generating a new image processing event and transmitting said event to at least one external image source to trigger the transmission of image fragments from said at least one external image source to said at least one logic circuit; following the generation of said event, generating at least one fragment of at least one synthesis image; transmitting said at least one fragment generated to said logic circuit; and - receiving said logic circuit of at least one fragment of a mixed image, said at least received fragment resulting from a combination of said at least one transmitted generated fragment and at least one image fragment transmitted from said at least one an external image source to said at least one logic circuit. 12. Procédé selon la revendication 11, le procédé comprenant en outre une étape de réception d’au moins une donnée de position et/ou d’orientation, ledit au moins un fragment généré d’au moins une image de synthèse étant généré en fonction de ladite au moins une donnée de position et/ou d’orientation reçue.The method of claim 11, the method further comprising a step of receiving at least one position and / or orientation data, said at least one generated fragment of at least one synthesis image being generated based on of said at least one position and / or orientation data received.
LU100596A 2017-12-27 2017-12-27 METHOD AND DEVICE FOR LOW-LATENCY DISPLAY AND HIGH-REFRESH RATE FOR HIGH-DEFINITION MIXED REALITY DISPLAYS LU100596B1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
LU100596A LU100596B1 (en) 2017-12-27 2017-12-27 METHOD AND DEVICE FOR LOW-LATENCY DISPLAY AND HIGH-REFRESH RATE FOR HIGH-DEFINITION MIXED REALITY DISPLAYS
PCT/EP2018/083991 WO2019129475A1 (en) 2017-12-27 2018-12-07 Low-latency and high-refresh-rate display method and device for high-definition mixed-reality displays

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
LU100596A LU100596B1 (en) 2017-12-27 2017-12-27 METHOD AND DEVICE FOR LOW-LATENCY DISPLAY AND HIGH-REFRESH RATE FOR HIGH-DEFINITION MIXED REALITY DISPLAYS

Publications (1)

Publication Number Publication Date
LU100596B1 true LU100596B1 (en) 2019-06-28

Family

ID=61157257

Family Applications (1)

Application Number Title Priority Date Filing Date
LU100596A LU100596B1 (en) 2017-12-27 2017-12-27 METHOD AND DEVICE FOR LOW-LATENCY DISPLAY AND HIGH-REFRESH RATE FOR HIGH-DEFINITION MIXED REALITY DISPLAYS

Country Status (2)

Country Link
LU (1) LU100596B1 (en)
WO (1) WO2019129475A1 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
NL2025869B1 (en) * 2020-06-19 2022-02-17 Microsoft Technology Licensing Llc Video pass-through computing system

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070188522A1 (en) * 2006-02-15 2007-08-16 Canon Kabushiki Kaisha Mixed reality display system
US20170148206A1 (en) * 2015-11-20 2017-05-25 Google Inc. Electronic display stabilization using pixel velocities

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070188522A1 (en) * 2006-02-15 2007-08-16 Canon Kabushiki Kaisha Mixed reality display system
US20170148206A1 (en) * 2015-11-20 2017-05-25 Google Inc. Electronic display stabilization using pixel velocities

Also Published As

Publication number Publication date
WO2019129475A1 (en) 2019-07-04

Similar Documents

Publication Publication Date Title
Olson et al. A design for a smartphone-based head mounted display
US10321109B1 (en) Large volume video data transfer over limited capacity bus
US10176635B2 (en) Saving augmented realities
EP3337158A1 (en) Method and device for determining points of interest in an immersive content
WO2013089769A1 (en) Collaborative cross-platform video capture
CA2927046A1 (en) Method and system for 360 degree head-mounted display monitoring between software program modules using video or image texture sharing
CN113873264A (en) Method and device for displaying image, electronic equipment and storage medium
EP3808078A1 (en) Method and system for displaying sequence of three-dimensional images
WO2019196589A1 (en) Image processing method, device and apparatus, image fitting method and device, display method and apparatus, and computer readable medium
LU100596B1 (en) METHOD AND DEVICE FOR LOW-LATENCY DISPLAY AND HIGH-REFRESH RATE FOR HIGH-DEFINITION MIXED REALITY DISPLAYS
US8368743B2 (en) Interface and circuit arrangement, in particular for holographic encoding units or holographic reproduction devices
WO2023207379A1 (en) Image processing method and apparatus, device and storage medium
EP2022009A2 (en) Method of coding and system for displaying on a screen a numerical mock-up of an object in the form of a synthesis image
US10482570B2 (en) Memory allocation for seamless media content presentation
JP7448677B2 (en) Methods and devices and computer programs for streaming immersive media
US11570227B2 (en) Set up and distribution of immersive media to heterogenous client end-points
WO2014170482A1 (en) Method for generating an output video stream from a wide-field video stream
EP2713625A1 (en) Method and system for providing multimedia content, corresponding virtual machine, servers, communication terminal and computer program
US11954786B2 (en) Reprojection for high field rate displays
CN114185829B (en) Shared resources for multiple communication services
US20230216999A1 (en) Systems and methods for image reprojection
WO2021146978A1 (en) Display system, graphics processing unit (gpu), display controller, and display method
CN117745981A (en) Image generation method, device, electronic equipment and storage medium
US20210354035A1 (en) Interaction in a multi-user environment
EP2400385A1 (en) Interface between a plurality of graphical applications

Legal Events

Date Code Title Description
FG Patent granted

Effective date: 20190628