ES2855123T3 - Visualización de deformación de imágenes sincronizada - Google Patents

Visualización de deformación de imágenes sincronizada Download PDF

Info

Publication number
ES2855123T3
ES2855123T3 ES17835892T ES17835892T ES2855123T3 ES 2855123 T3 ES2855123 T3 ES 2855123T3 ES 17835892 T ES17835892 T ES 17835892T ES 17835892 T ES17835892 T ES 17835892T ES 2855123 T3 ES2855123 T3 ES 2855123T3
Authority
ES
Spain
Prior art keywords
display device
wearable display
image
rendered image
screen
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
ES17835892T
Other languages
English (en)
Inventor
Moinul Khan
Nhon Quach
Martin Renschler
Ramesh Chandrasekhar
Assaf Menachem
Ning Bi
Maurice Ribble
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Application granted granted Critical
Publication of ES2855123T3 publication Critical patent/ES2855123T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • G06T19/006Mixed reality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/011Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/011Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
    • G06F3/012Head tracking input arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/033Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
    • G06F3/0346Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor with detection of the device orientation or free movement in a 3D space, e.g. 3D mice, 6-DOF [six degrees of freedom] pointers using gyroscopes, accelerometers or tilt-sensors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/60Editing figures and text; Combining figures or text
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/18Image warping, e.g. rearranging pixels individually
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Multimedia (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Computer Graphics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Controls And Circuits For Display Device (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

Un procedimiento para hacer funcionar un dispositivo de visualización ponible (120), comprendiendo el procedimiento: determinar (805) una posición del dispositivo de visualización ponible en base a un sensor de movimiento en un primer tiempo; renderizar (810) una imagen en base a la posición determinada; determinar (815) una primera posición actualizada del dispositivo de visualización ponible en base al sensor de movimiento en un segundo tiempo después del primer tiempo; deformar (820) una primera parte de la imagen renderizada en base a la primera posición actualizada y para corregir una distorsión debida a una lente del dispositivo de visualización ponible; visualizar (825) la primera parte deformada de la imagen renderizada en una pantalla del dispositivo de visualización ponible; determinar (830) una segunda posición actualizada del dispositivo de visualización ponible en base al sensor de movimiento en un tercer tiempo después del segundo tiempo; deformar (835) una segunda parte de la imagen renderizada en base a la segunda posición actualizada y para corregir una distorsión debida a la lente del dispositivo de visualización ponible; y visualizar (840) la segunda parte deformada de la imagen renderizada en la pantalla del dispositivo de visualización ponible.

Description

DESCRIPCIÓN
Visualización de deformación de imágenes sincronizada
CAMPO TÉCNICO
[0001] Determinados aspectos de la presente divulgación se refieren en general al procesamiento de imágenes y, más en particular, a técnicas para visualizar la deformación de imágenes sincronizada.
ANTECEDENTES
[0002] El uso de dispositivos de visualización ponibles, tales como los que son para usar en sistemas de realidad virtual (VR), es cada vez más frecuente. Por ejemplo, los usuarios pueden usar los dispositivos de visualización ponibles para sumergirse visualmente en un entorno de VR o de realidad aumentada (AR). Un dispositivo de visualización ponible puede comprender cualquier tipo de dispositivo de visualización alámbrico o inalámbrico que un usuario lleva puesto en el cuerpo. Como ejemplo, el dispositivo de visualización ponible puede comprender una pantalla alámbrica o inalámbrica llevada en la cabeza o una pantalla montada en la cabeza (HMD) alámbrica o inalámbrica que un usuario lleva en la cabeza para colocar una o más pantallas (opacas, transparentes, semitransparentes, etc.) delante de los ojos del usuario.
[0003] Uno o más procesadores (por ejemplo, una unidad de procesamiento de gráficos (GPU), una unidad de procesamiento central (CPU), etc.) pueden estar configuradas para procesar y renderizar los datos multimedia (por ejemplo, imágenes, escenas, vídeos, etc.) visualizados en el dispositivo de visualización ponible. Dichos procesadores pueden estar integrados en el dispositivo de visualización ponible, o pueden estar acoplados al dispositivo de visualización ponible (por ejemplo, usando una conexión inalámbrica o alámbrica).
[0004] Además, el dispositivo de visualización ponible puede incluir uno o más sensores (por ejemplo, uno(s) acelerómetro(s), magnetómetro(s), giroscopios, receptor(es) del sistema de posicionamiento global (GPS) (y/u otro(s) receptor(es) del sistema de posicionamiento por satélite (SPS)), altímetro(s), etc.) para detectar el movimiento y/o la orientación del dispositivo de visualización ponible. El movimiento y/o la orientación del dispositivo de visualización ponible pueden corresponder al movimiento y/o la orientación de un usuario (por ejemplo, la cabeza del usuario) que lleva el dispositivo de visualización ponible. La información de movimiento y/u orientación se puede usar para determinar la imagen que se va a visualizar en el dispositivo de visualización ponible. Por ejemplo, un usuario que lleva puesto el dispositivo de visualización ponible puede estar viendo una escena (por ejemplo, desde una perspectiva de primera persona). La imagen de la escena visualizada ante el usuario puede estar basada en el movimiento y/o la orientación del dispositivo de visualización ponible de modo que la vista de la escena corresponde a la posición del dispositivo de visualización ponible, sumergiendo de ese modo al usuario en la escena.
[0005] El documento de técnica anterior J.M.P. VAN WAVEREN: "The asynchronous time warp for virtual reality on consumer hardware", Actas de la 22.a conferencia de ACM sobre software y tecnología de realidad virtual, 1 de enero de 2016, XP055344703, se refiere al uso de una "deformación de tiempo" para ayudar a crear un verdadero sentido de presencia en una experiencia de realidad virtual. Esta deformación de tiempo no solo corrige la aberración óptica de las lentes usadas en un casco de realidad virtual, sino que también transforma las imágenes estereoscópicas en base a la información de seguimiento de la cabeza más reciente para reducir significativamente el retardo de movimiento a fotón (o la latencia de extremo a extremo). La deformación de tiempo funciona en la más estrecha colaboración posible con la actualización de la pantalla, recupera información actualizada de seguimiento de cabeza y transforma un par de imágenes estereoscópicas desde la representación de una vista en el momento en que se renderiza hasta la representación de la vista correcta en el momento en que se visualiza. Cuando se ejecuta de forma asíncrona con el renderizado estereoscópico, la deformación de tiempo se puede usar para incrementar la velocidad de fotogramas percibida y armonizar las velocidades de fotogramas incongruentes. El funcionamiento asíncrono también puede mejorar la utilización del hardware de gráficos global al no requerir que el renderizado estereoscópico esté sincronizado con el ciclo de actualización de la pantalla. Sin embargo, en el hardware actual para consumidores, implementar una deformación de tiempo de alta calidad que sea rápida, tenga una latencia y un rendimiento predecibles y se ejecute de forma asincrónica representa un desafío. El presente documento analiza los diversos desafíos y las diferentes soluciones que se deben tomar en consideración al implementar una deformación de tiempo asíncrona en el hardware para consumidores.
BREVE EXPLICACIÓN
[0006] La invención se define mediante las reivindicaciones independientes.
[0007] Determinados aspectos de la presente divulgación proporcionan un procedimiento para hacer funcionar un dispositivo de visualización ponible. El procedimiento incluye determinar una posición del dispositivo de visualización ponible en base a un sensor de movimiento. El procedimiento incluye renderizar una imagen en base a la posición determinada. El procedimiento incluye determinar una primera posición actualizada del dispositivo de visualización ponible en base al sensor de movimiento. El procedimiento incluye deformar una primera parte de la imagen renderizada en base a la primera posición actualizada y corregir la distorsión debida a una lente del dispositivo de visualización ponible. El procedimiento incluye visualizar la primera parte deformada de la imagen renderizada en una pantalla del dispositivo de visualización ponible. El procedimiento incluye determinar una segunda posición actualizada del dispositivo de visualización ponible en base al sensor de movimiento. El procedimiento incluye deformar una segunda parte de la imagen renderizada en base a la segunda posición actualizada y corregir la distorsión debida a la lente del dispositivo de visualización ponible. El procedimiento incluye visualizar la segunda parte deformada de la imagen renderizada en la pantalla del dispositivo de visualización ponible.
[0008] Determinados aspectos de la presente divulgación proporcionan un procedimiento para hacer funcionar un dispositivo de visualización ponible. El procedimiento incluye determinar una posición del dispositivo de visualización ponible en base a un sensor de movimiento. El procedimiento incluye renderizar, mediante una unidad de procesamiento de gráficos, una imagen en base a la posición determinada. El procedimiento incluye determinar una primera posición actualizada del dispositivo de visualización ponible en base al sensor de movimiento. El procedimiento incluye deformar, mediante un motor de deformación, una primera parte de la imagen renderizada en base a la primera posición actualizada. El procedimiento incluye visualizar la primera parte deformada de la imagen renderizada en una pantalla del dispositivo de visualización ponible.
[0009] Determinados aspectos de la presente divulgación proporcionan un sistema informático para hacer funcionar un dispositivo de visualización ponible. El sistema informático incluye un procesador configurado para determinar una posición del dispositivo de visualización ponible en base a un sensor de movimiento. El procesador está configurado además para determinar una primera posición actualizada del dispositivo de visualización ponible en base al sensor de movimiento. El procesador está configurado además para determinar una segunda posición actualizada del dispositivo de visualización ponible en base al sensor de movimiento. El sistema informático incluye una unidad de procesamiento de gráficos configurada para renderizar una imagen en base a la posición determinada. El sistema informático incluye un motor de deformación, separado de la unidad de procesamiento de gráficos, configurado para deformar una primera parte de la imagen renderizada en base a la primera posición actualizada y para corregir la distorsión debida a una lente del dispositivo de visualización ponible. El motor de deformación está configurado además para deformar una segunda parte de la imagen renderizada en base a la segunda posición actualizada y para corregir la distorsión debida a la lente del dispositivo de visualización ponible. El sistema informático incluye un controlador de pantalla configurado para visualizar la primera parte deformada de la imagen renderizada en una pantalla del dispositivo de visualización ponible. El controlador de pantalla está configurado además para visualizar la segunda parte deformada de la imagen renderizada en la pantalla del dispositivo de visualización ponible.
[0010] Determinados aspectos de la presente divulgación proporcionan un sistema informático para hacer funcionar un dispositivo de visualización ponible. El sistema informático incluye medios para determinar una posición del dispositivo de visualización ponible en base a un sensor de movimiento. El sistema informático incluye medios para renderizar una imagen en base a la posición determinada. El sistema informático incluye medios para determinar una primera posición actualizada del dispositivo de visualización ponible en base al sensor de movimiento. El sistema informático incluye medios para deformar una primera parte de la imagen renderizada en base a la primera posición actualizada y para corregir la distorsión debida a una lente del dispositivo de visualización ponible. El sistema informático incluye medios para visualizar la primera parte deformada de la imagen renderizada en una pantalla del dispositivo de visualización ponible. El sistema informático incluye medios para determinar una segunda posición actualizada del dispositivo de visualización ponible en base al sensor de movimiento. El sistema informático incluye medios para deformar una segunda parte de la imagen renderizada en base a la segunda posición actualizada y para corregir la distorsión debida a la lente del dispositivo de visualización ponible. El sistema informático incluye medios para visualizar la segunda parte deformada de la imagen renderizada en la pantalla del dispositivo de visualización ponible.
[0011] Determinados aspectos de la presente divulgación proporcionan un medio no transitorio legible por ordenador que tiene instrucciones almacenadas en el mismo para hacer funcionar un dispositivo de visualización ponible. La ejecución de las instrucciones por un sistema informático hace que el sistema informático lleve a cabo la etapa de determinar una posición del dispositivo de visualización ponible en base a un sensor de movimiento. La ejecución de las instrucciones por el sistema informático hace que el sistema informático lleve a cabo la etapa de renderizar una imagen en base a la posición determinada. La ejecución de las instrucciones por el sistema informático hace que el sistema informático lleve a cabo la etapa de determinar una primera posición actualizada del dispositivo de visualización ponible en base al sensor de movimiento. La ejecución de las instrucciones mediante el sistema informático hace que el sistema informático lleve a cabo la etapa de deformar una primera parte de la imagen renderizada en base a la primera posición actualizada y corrija la distorsión debida a una lente del dispositivo de visualización ponible. La ejecución de las instrucciones por el sistema informático hace que el sistema informático lleve a cabo la etapa de visualizar la primera parte deformada de la imagen renderizada en una pantalla del dispositivo de visualización ponible. La ejecución de las instrucciones por el sistema informático hace que el sistema informático lleve a cabo la etapa de determinar una segunda posición actualizada del dispositivo de visualización ponible en base al sensor de movimiento. La ejecución de las instrucciones por el sistema informático hace que el sistema informático lleve a cabo la etapa de deformar una segunda parte de la imagen renderizada en base a la segunda posición actualizada y corrija la distorsión debida a la lente del dispositivo de visualización ponible. La ejecución de las instrucciones por el sistema informático hace que el sistema informático lleve a cabo la etapa de visualizar la segunda parte deformada de la imagen renderizada en la pantalla del dispositivo de visualización ponible.
BREVE DESCRIPCIÓN DE LOS DIBUJOS
[0012] Para que las características de la presente divulgación mencionadas anteriormente se puedan entender en detalle, se puede ofrecer una descripción más particular, resumida anteriormente de forma breve, con referencia a los aspectos, algunos de los cuales se ilustran en los dibujos adjuntos. Sin embargo, cabe destacar que los dibujos adjuntos ilustran solo determinados aspectos típicos de la presente divulgación y, por lo tanto, no se han de considerar limitantes de su alcance, ya que la descripción puede admitir otros aspectos igualmente eficaces.
La FIG. 1 es una ilustración simplificada de un ejemplo de dispositivo de visualización ponible que un usuario lleva puesto en la cabeza, de acuerdo con determinados aspectos de la presente divulgación.
La FIG. 2 ilustra un modo de realización de un sistema informático, que se puede incorporar en, y/o acoplar comunicativamente con, el dispositivo de visualización ponible de la FIG. 1, de acuerdo con determinados aspectos de la presente divulgación.
La FIG. 3 ilustra un flujo de datos de ejemplo para renderizar una imagen en la pantalla del dispositivo de visualización ponible de la FIG. 1 usando el sistema informático de la FIG. 2, de acuerdo con determinados aspectos de la presente divulgación.
La FIG. 4 ilustra un modo de realización de un sistema informático, que se puede incorporar en, y/o acoplar comunicativamente con, el dispositivo de visualización ponible de la FIG. 1, de acuerdo con determinados aspectos de la presente divulgación.
La FIG. 5 ilustra operaciones de ejemplo para realizar deformación justo a tiempo, de acuerdo con determinados aspectos de la presente divulgación.
La FIG. 6 ilustra un ejemplo de diferentes campos de visión para una imagen, de acuerdo con determinados aspectos de la presente divulgación.
La FIG. 7 es un diagrama de bloques de un motor de deformación de ejemplo de la FIG. 4, de acuerdo con determinados aspectos de la presente divulgación.
La FIG. 8 ilustra operaciones de ejemplo para realizar deformación justo a tiempo, de acuerdo con determinados aspectos de la presente divulgación.
DESCRIPCIÓN DETALLADA
[0013] A continuación en el presente documento, se describen con más detalle diversos aspectos de la divulgación con referencia a los dibujos adjuntos. Sin embargo, la presente divulgación se puede realizar de muchas formas diferentes y no se debería interpretar que está limitada a ninguna estructura o función específica presentada a lo largo de esta divulgación. En su lugar, estos aspectos se proporcionan de modo que la presente divulgación sea exhaustiva y completa, y transmita plenamente el alcance de la divulgación a los expertos en la técnica. En base a las enseñanzas del presente documento, un experto en la técnica debería apreciar que el alcance de la divulgación pretende abarcar cualquier aspecto de la divulgación divulgada en el presente documento, ya sea implementado independientemente de, o combinado con, cualquier otro aspecto de la divulgación. Por ejemplo, un aparato se puede implementar, o un procedimiento se puede llevar a la práctica, usando un número cualquiera de los aspectos expuestos en el presente documento. Además, el alcance de la divulgación pretende abarcar un aparato o procedimiento que se lleva a la práctica usando otra estructura, funcionalidad, o estructura y funcionalidad, además de, o aparte de, los diversos aspectos de la divulgación expuestos en el presente documento. Se debería entender que cualquier aspecto de la divulgación divulgado en el presente documento se puede realizar mediante uno o más elementos de una reivindicación.
[0014] El término "ejemplar" se usa en el presente documento en el sentido de "que sirve de ejemplo, caso o ilustración". Cualquier aspecto descrito en el presente documento como "ejemplar" no se ha de interpretar necesariamente como preferente o ventajoso con respecto a otros aspectos.
[0015] La FIG. 1 es una ilustración simplificada de un ejemplo de dispositivo de visualización ponible 120 que un usuario lleva puesto en la cabeza 110 que se puede usar con, o que puede implementar, uno o más de los aspectos descritos en el presente documento. El dispositivo de visualización ponible 120 incluye un cuerpo o una montura, similar al de un par de gafas, que puede apoyarse sobre la nariz y las orejas de un usuario. Unas partes de la pantalla del dispositivo de visualización ponible 120 se pueden colocar delante de los ojos de un usuario como las lentes de un par de gafas. En algunos aspectos, la pantalla es opaca (por ejemplo, para VR). En algunos aspectos, al menos una parte de la pantalla puede ser transparente (por ejemplo, para Ar), de modo que dentro del campo de visión del usuario el usuario 110 puede ver tanto el entorno del usuario como las imágenes (por ejemplo, los elementos de datos) que se muestran con la pantalla. El nivel de transparencia de las imágenes mostradas en la pantalla puede variar, dependiendo de la funcionalidad deseada de la pantalla, los ajustes de una interfaz gráfica de usuario (GUI) mostrada con la pantalla y/o una aplicación de software ejecutada por el dispositivo de visualización ponible 120 (por ejemplo, un vídeo, un mapa, un navegador de Internet, etc.).
[0016] Además, el dispositivo de visualización ponible 120 puede incluir interfaces tales como altavoces (y/o auriculares), un panel táctil, botones y similares para interactuar con el usuario 110. En otro aspecto, el dispositivo de visualización ponible 120 puede incluir una interfaz inalámbrica para conectarse con Internet, una red inalámbrica local u otro dispositivo informático. El dispositivo de visualización ponible 120 también puede ser operativo para recibir entradas de audio y/o gestuales de un usuario. Dichas entradas gestuales o de audio pueden ser mandatos de voz o un gesto de usuario reconocido, que al ser reconocidos por un dispositivo informático pueden hacer que ese dispositivo ejecute un mandato correspondiente. Se pueden recibir gestos desde uno o más sensores de movimiento y/o cámaras integradas en, y/o acopladas comunicativamente con, el dispositivo de visualización ponible 120 para permitir que el dispositivo de visualización ponible siga uno o más objetos, tales como la(s) mano(s) de un usuario, y determinar si el (los) objeto(s) ha(n) hecho un gesto. Además, en determinados aspectos, el dispositivo de visualización ponible 120 puede incluir una(s) cámara(s) y/u otros sensores para determinar la mirada de un usuario (es decir, dónde está mirando un usuario). Esta funcionalidad de seguimiento ocular se puede incorporar en gestos y/u otras entradas del usuario, o se puede usar para deformar imágenes, incluyendo el renderizado foveal, como se describe en el presente documento.
[0017] Además, el dispositivo de visualización ponible 120 puede incluir y/o estar acoplado comunicativamente con sensores de movimiento, tales como uno o más acelerómetros, magnetómetros, giroscopios, receptores del sistema de posicionamiento global (GPS) (y/u otro(s) receptor(es) del sistema de posicionamiento por satélite (SPS)), altímetros, cámaras, sensores de infrarrojos, etc., para detectar la posición (por ejemplo, el movimiento y/u la orientación) del usuario 110 y/o la cabeza del usuario. Una determinación del campo de visión del usuario, con el propósito de visualizar imágenes como se describe en el presente documento, puede estar basada en la información del sensor que proporciona, por ejemplo, una orientación/dirección de desplazamiento de la cabeza del usuario detectada. Se puede determinar una dirección de desplazamiento mediante, por ejemplo, una brújula (por ejemplo, un magnetómetro) y/o una pluralidad de mediciones de colocación (por ejemplo, mediciones de localización de SPS). Se pueden usar datos de elevación y/o contexto para determinar si un usuario está mirando hacia abajo o hacia arriba porque una trayectoria está inclinada. Por ejemplo, unos datos de giroscopio se pueden comparar con datos de elevación para determinar si la cabeza está inclinada en una dirección en la que una trayectoria en la que está localizado el usuario está inclinada.
[0018] Un sistema informático, tal como el sistema informático 200 de la FIG. 2 puede estar integrado en, y/o acoplado comunicativamente (alámbrica o inalámbricamente) con, el dispositivo de visualización ponible 120. En consecuencia, el dispositivo de visualización ponible 120 puede ejecutar aplicaciones de software tales como juegos, mapas, vídeos y/u otras aplicaciones descritas en el presente documento que generan imágenes que se visualizan en el dispositivo de visualización ponible 120. De forma adicional o alternativa, en determinados aspectos, el dispositivo de visualización ponible 120 puede visualizar aplicaciones de software ejecutadas por uno o más dispositivos acoplados comunicativamente con el dispositivo de visualización ponible 120 por medio de, por ejemplo, un protocolo inalámbrico de dispositivo a dispositivo (por ejemplo, BLUETOOTH o WI-FI DIRECT) y/o por medio de una red (por ejemplo, una red WIFI). Por ejemplo, el dispositivo de visualización ponible 120 puede estar acoplado comunicativamente con uno o más dispositivos móviles tales como un teléfono móvil, un reproductor de medios personal, un sistema de juegos y/u otro dispositivo, y visualizar información del dispositivo móvil.
[0019] Diferentes dispositivos, tales como un dispositivo de visualización ponible, un teléfono inteligente, una tableta, un ordenador personal u otro dispositivo informático podrían compartir uno o más componentes del sistema informático 200. En algunos modos de realización, el software y otras aplicaciones se podrían ejecutar en un dispositivo separado enlazado comunicativamente con el dispositivo de visualización ponible. En otros modos de realización, un dispositivo de visualización ponible puede tener integrada una parte o todo el sistema informático 200.
[0020] La FIG. 2 proporciona una ilustración esquemática de un modo de realización de un sistema informático 200 que puede realizar los procedimientos proporcionados por otros diversos modos de realización. Cabe destacar que la FIG. 2 está destinada solamente a proporcionar una ilustración generalizada de diversos componentes, donde cualquiera o la totalidad de los mismos se pueden utilizar según sea apropiado. La FIG. 2, por lo tanto, ilustra en términos generales cómo elementos de sistema individuales se pueden implementar de una manera relativamente separada o relativamente más integrada.
[0021] El sistema informático 200 mostrado comprende elementos de hardware que se pueden acoplar eléctricamente por medio de un bus 226 (o que se pueden comunicar de otro modo, según sea apropiado). Los elementos de hardware pueden incluir una CPU 210, que puede incluir, sin limitación, uno o más procesadores de propósito general, uno o más procesadores de propósito especial y/u otros medios de procesamiento, que, como se ha indicado anteriormente, se pueden utilizar para realizar diversas etapas, tales como uno o más de los bloques mostrados en la FIG. 3. El bus 226 puede acoplar dos o más de las CPU 210, o múltiples núcleos de una sola CPU o una pluralidad de CPU. Los elementos de hardware también pueden incluir uno o más dispositivos de entrada/salida 237, que pueden incluir, sin limitación, uno o más receptores de GPS (y/o receptores de cualquier otro sistema de posicionamiento por satélite (SPS)), acelerómetros, giroscopios, magnetómetros (y/u otros sensores de orientación), altímetros, cámaras y/u otros sensores para poder detectar la ubicación, el movimiento, la orientación, la luz, el sonido y similares, que se pueden utilizar como medios para obtener la posición, el movimiento y otros datos. Además, los sensores se pueden utilizar, junto con la CPU 210, como medios para detectar el movimiento de un dispositivo de visualización ponible 120 en la cabeza de un usuario, como se describe en el presente documento. También se pueden incluir otros dispositivos tales como un panel táctil, un teclado, un micrófono y/o similares. También se incluyen uno o más dispositivos adicionales. Estos dispositivos pueden incluir una o más pantallas y/u otros medios de visualización, así como altavoces y/u otros dispositivos.
[0022] El sistema informático 200 puede incluir además una memoria principal 235, que puede comprender, sin limitación, una memoria de acceso aleatorio ("RAM"), tal como una memoria dinámica de acceso aleatorio (DRAM), tal como una DRAM síncrona (SDRAM) de doble velocidad de transferencia de datos (DDR).
[0023] El sistema informático 200 incluye además una GPU 212 que es un procesador de propósito especial para la ejecución del procesamiento de gráficos. El sistema informático 200 incluye además un controlador de pantalla 240 configurado para controlar una pantalla del dispositivo de visualización ponible 120, por ejemplo, controlando el escaneo de partes de la pantalla para visualizar imágenes.
[0024] El sistema informático 200 también puede incluir un subsistema de comunicaciones 230, que puede incluir, sin limitación, un módem, una tarjeta de red (inalámbrica o alámbrica), un dispositivo de comunicación por infrarrojos, un dispositivo de comunicación inalámbrica y/o un conjunto de chips (tal como un dispositivo Bluetooth™, un dispositivo 802.11, un dispositivo WiFi, un dispositivo WiMax, equipos de comunicación celular, etc.) y/o similares. El subsistema de comunicaciones 230 puede incluir una o más interfaces de comunicación de entrada y/o salida para permitir el intercambio de datos con una red, otros sistemas informáticos y/o cualquier otro dispositivo/periférico eléctrico.
[0025] El sistema informático 200 también puede comprender elementos de software, por ejemplo, localizados dentro de la memoria principal 235, que incluyen un sistema operativo, controladores de dispositivo, bibliotecas ejecutables y/u otros códigos, tal como una o más aplicaciones, que pueden comprender programas informáticos proporcionados por diversos modos de realización, y/o que pueden estar diseñados para implementar procedimientos y/o configurar sistemas, proporcionados por otros modos de realización, como se describe en el presente documento. Simplemente a modo de ejemplo, una parte de uno o más procedimientos descritos con respecto al (a los) procedimiento(s) analizado(s) en el presente documento se podría implementar como código y/o instrucciones ejecutables por ordenador (y/o una unidad de procesamiento dentro de un ordenador); entonces, en un aspecto, dicho código y/o instrucciones se pueden usar para configurar y/o adaptar un ordenador de propósito general (u otro dispositivo) para realizar una o más operaciones de acuerdo con los procedimientos descritos.
[0026] Un conjunto de estas instrucciones y/o código se puede almacenar en un medio de almacenamiento no transitorio legible por ordenador. En algunos casos, el medio de almacenamiento puede estar incorporado dentro de un sistema informático, tal como el sistema informático 200. En otros modos de realización, el medio de almacenamiento puede estar separado de un sistema informático (por ejemplo, un medio extraíble, tal como un disco óptico) y/o proporcionarse en un paquete de instalación, de modo que el medio de almacenamiento se puede usar para programar, configurar y/o adaptar un ordenador de propósito general con las instrucciones/el código almacenados en el mismo. Estas instrucciones pueden adoptar la forma de un código ejecutable, que es ejecutable mediante el sistema informático 200, y/o puede adoptar la forma de un código fuente y/o instalable que, tras la compilación y/o instalación en el sistema informático 200 (por ejemplo, usando cualquiera de una variedad de compiladores, programas de instalación, equipos de compresión/descompresión, etc. disponibles en general) adopta la forma de un código ejecutable.
[0027] Resultará evidente para los expertos en la técnica que se pueden realizar variantes sustanciales de acuerdo con requisitos específicos.
[0028] Aunque la FIG. 1 muestra un modo de realización de un dispositivo de visualización ponible 120 con una montura similar a la de un par de gafas y una pantalla (por ejemplo, una pantalla de cristal líquido (LCD), un diodo orgánico emisor de luz (OLED), etc.) para una pantalla, otros modos de realización pueden tener diferentes factores de forma y/o utilizar diferentes tecnologías ópticas (por ejemplo, un proyector de retina u otro sistema óptico) que pueden ofrecer una funcionalidad de visualización similar. Cuando se analiza la visualización de imágenes en el dispositivo de visualización ponible 120, dicha visualización se refiere a la visualización de las imágenes en la pantalla del dispositivo de visualización ponible 120.
[0029] Para dichos dispositivos de visualización ponibles 120, una métrica de rendimiento es el retardo del movimiento a fotón (M2P), que mide el tiempo de retardo desde el movimiento del dispositivo de visualización ponible 120 hasta el tiempo en el que la imagen visualizada en el dispositivo de visualización ponible 120 se actualiza para corresponderse con el movimiento (por ejemplo, la nueva posición) del dispositivo de visualización ponible 120. Por ejemplo, el usuario 110 puede estar mirando en una dirección y el dispositivo de visualización ponible 120 puede visualizar una primera escena. A continuación, el usuario 110 puede mover la cabeza y entonces es necesario visualizar una escena correspondiente a la nueva posición del usuario 110. Tener una latencia baja (por ejemplo, <20 ms) entre el cambio de posición del usuario 110 y la actualización de la pantalla del dispositivo de visualización ponible 120 facilita de forma ventajosa una experiencia más realista y también evita que el usuario tenga mareos por movimiento.
[0030] Otra cuestión con dichos dispositivos de visualización ponibles 120 es la de la adaptación a la demanda de ancho de banda de memoria para leer y escribir imágenes en la memoria. Por ejemplo, la demanda de ancho de banda de memoria puede ser sumamente alta para resoluciones altas (por ejemplo, de 4K y superiores para cada ojo). El impacto del proceso para renderizar una imagen en la pantalla del dispositivo de visualización ponible 120 sobre el retardo de M2P y el ancho de banda de memoria se analiza con más detalle con respecto a la FIG.
3.
[0031] La FIG. 3 ilustra un flujo de datos 300 de ejemplo para renderizar una imagen en la pantalla del dispositivo de visualización ponible 120 usando el sistema informático 200. Como se muestra, en 305, se pueden usar sensores de movimiento para medir datos relacionados con una posición del dispositivo de visualización ponible 120. En 310, la CPU 210 recibe y procesa los datos medidos del sensor de movimiento para determinar una posición (por ejemplo, datos de pose de tres grados de libertad (3DoF), datos de pose de 6DoF, etc.) del dispositivo de visualización ponible 120. En 315, la información de posición se puede almacenar en la memoria principal 235. En 320, la CPU 210 lee la información de posición de la memoria principal 235 y genera un mandato de aplicación para renderizar una imagen en base a la información de posición. Por ejemplo, la CPU 210 genera un mandato para que la GPU 212 renderice una escena, por ejemplo, para una aplicación en ejecución. En 325, el mandato de aplicación se almacena en la memoria principal 235. En 330, la GPU 212 lee el mandato de aplicación de la memoria principal 235 y, en 335, lee una textura (por ejemplo, una imagen) correspondiente al mandato de aplicación (es decir, una textura basada en la información de posición almacenada en 315) de la memoria principal 235. En 340, la GPU 212 renderiza, en base a la textura, una imagen para el ojo derecho y una imagen para el ojo izquierdo del usuario 110 para que se visualice en una pantalla del dispositivo de visualización ponible 120. Las imágenes renderizadas corresponden a la información de posición almacenada en 315. En 345, la GPU 212 almacena las imágenes renderizadas para cada ojo en la memoria principal 235. En 350, la GPU 212 lee las imágenes renderizadas de la memoria principal 235 y deforma las imágenes renderizadas, por ejemplo, aplicando deformación de tiempo, deformación de lente, etc., a las imágenes renderizadas como se describe con más detalle en el presente documento. En 355, la GPU 212 almacena las imágenes deformadas en la memoria principal 235. En 360, el controlador de pantalla 240 lee las imágenes deformadas completas de la memoria principal 235 y activa la pantalla del dispositivo de visualización ponible 120 con las imágenes deformadas.
[0032] La deformación de tiempo de una imagen, como la realizada en 350, se refiere al cambio de la imagen renderizada que se va a visualizar en el dispositivo de visualización ponible 120 debido a una posición cambiada del dispositivo de visualización ponible 120 después de que la imagen ya se haya renderizado, por ejemplo, mediante la GPU 212. Por ejemplo, como se analiza con respecto al flujo de datos 300, la GPU 212 puede renderizar imágenes en base a una posición del dispositivo de visualización ponible 120. Sin embargo, dicha información de posición se determina en algún intervalo de tiempo antes de que la GPU 212 renderice realmente la imagen (por ejemplo, debido a una latencia en el procesamiento de CPU, GPU, etc. y las lecturas y escrituras en la memoria). En consecuencia, la posición del dispositivo de visualización ponible 120 puede cambiar aún más entre el momento de la determinación inicial de la posición (por ejemplo, en 310), el momento del renderizado de la imagen (por ejemplo, en 340) y, además, el momento de la visualización de la imagen renderizada en la pantalla del dispositivo de visualización ponible 120 (por ejemplo, en 360). Por lo tanto, después de que se renderice la imagen y antes de que se visualice en el dispositivo de visualización ponible 120, se puede aplicar deformación de tiempo a la imagen renderizada, con lo cual la imagen renderizada se modifica en base a la información de posición actualizada para el dispositivo de visualización ponible 120. Por ejemplo, en 350, la GPU 212 recibe información de posición actualizada desde la CPU 210 y aplica transformaciones (por ejemplo, usando mapas de profundidad (búferes Z) para desplazar objetos en la imagen para dar paralaje en base a la posición actualizada) a la imagen renderizada, que puede tener una complejidad computacional reducida en comparación con el rerrenderizado de la imagen.
[0033] La deformación de lente de una imagen, tal como la realizada en 350, se refiere al cambio de la imagen renderizada que se va a visualizar en el dispositivo de visualización ponible 120 para corregir la distorsión introducida por las lentes en el dispositivo de visualización ponible 120. Por ejemplo, el dispositivo de visualización ponible 120 puede utilizar lentes además de pantallas para dirigir la imagen a los ojos de un usuario. Tal vez sea necesario transformar la imagen visualizada en la pantalla (por ejemplo, con distorsión de barril, con corrección de aberración cromática, etc.) para corregir la distorsión introducida por las lentes.
[0034] Dado que la GPU 212 necesita renderizar la imagen y además deformar la imagen, se usan ciclos de procesamiento adicionales para realizar la deformación, y el cambio de contexto entre el renderizado y la deformación provoca un perjuicio en el sentido de que hay menos recursos disponibles para el renderizado.
[0035] Además, dado que la deformación se aplica como una etapa separada en la cadena de procesamiento global, el ancho de banda de pico a memoria principal 235 se incrementa a medida que las imágenes renderizadas y las imágenes deformadas se leen de la memoria principal 235 (por ejemplo, en 350 y 360) y se escriben en la memoria principal 235 (por ejemplo, en 345 y 355). Además, para asegurar que la deformación termine a tiempo tanto para el almacenamiento en como para la lectura de la memoria principal 235 para visualizar la imagen en la pantalla del dispositivo de visualización ponible 120 en la siguiente actualización de la pantalla, el proceso de deformación se puede iniciar con anticipación, introduciéndose de ese modo un retardo adicional en el M2P.
[0036] En consecuencia, las técnicas de la presente invención se refieren a sistemas y procedimientos para aplicar deformación, tal como deformación de tiempo y deformación de lente, a imágenes renderizadas por una GPU para su visualización en un dispositivo de visualización ponible, lo que reduce el retardo en M2P y el ancho de banda a memoria. En particular, determinados aspectos del presente documento se refieren a un motor de deformación que está separado de la GPU usada para renderizar imágenes.
[0037] La FIG. 4 es un diagrama de bloques de un sistema informático 400 de ejemplo que incluye un sistema de renderizado de imágenes con un motor de deformación separado de una GPU, de acuerdo con determinados aspectos de la presente divulgación. Como se muestra, el sistema informático 400 incluye los mismos componentes que el sistema informático 200 de la FIG. 2, pero adicionalmente incluye un motor de deformación 480 y una memoria caché 490. Como se muestra, el motor de deformación 480 está acoplado a la memoria principal 435 y la memoria caché 490. El motor de deformación 480 puede ser una unidad de procesamiento, tal como un circuito integrado configurado para realizar determinadas operaciones descritas en el presente documento. En determinados aspectos, el motor de deformación 480 es un componente de hardware separado (por ejemplo, un acelerador de hardware) de la GPU y/u otros componentes del sistema informático 400. La memoria caché 490 puede ser una pequeña cantidad de memoria volátil. En determinados aspectos, la memoria caché 490 es una memoria en chip (por ejemplo, una memoria caché del sistema) que está separada de la memoria principal 435 (por ejemplo, una memoria fuera de chip). Por ejemplo, la memoria caché 490 puede estar en una misma microplaqueta o en un chip empaquetado con la CPU 210 y/o la GPU 212.
[0038] El motor de deformación 480 puede estar configurado para deformar imágenes (por ejemplo, con deformación de tiempo, deformación de lente, etc.) renderizadas por la GPU 212. Al separar los recursos usados para renderizar la imagen, por ejemplo, la GPU 212, de los recursos usados para deformar las imágenes, por ejemplo, el motor de deformación 480, se pueden usar más recursos para renderizar imágenes, reduciendo de este modo la latencia para renderizar las imágenes y el retardo de M2P.
[0039] Además, en algunos aspectos, el motor de deformación 480 puede deformar, de forma asincrónica con respecto al renderizado por la GPU 212, unas partes de deformación de las imágenes renderizadas por la GPU 212. Por ejemplo, el motor de deformación 480 se puede sincronizar con la pantalla (por ejemplo, la frecuencia de actualización, el tiempo de escaneo, etc.) del dispositivo de visualización ponible en lugar de la GPU 212 y las partes de deformación de las imágenes renderizadas (por ejemplo, franja por franja, línea por línea, etc.) "justo a tiempo", ya que la pantalla del dispositivo de visualización ponible 120 en realidad escanea y visualiza esas partes de la imagen en la pantalla. La deformación "justo a tiempo" puede reducir el retardo de M2P ya que hay poco retardo entre la deformación y la visualización en la pantalla.
[0040] Por ejemplo, en algunos aspectos, el motor de deformación 480 puede leer los datos de imágenes renderizadas generados por la GPU 212 de la memoria principal 235. Sin embargo, en lugar de volver a escribir toda la imagen deformada en la memoria principal 235, el motor de deformación 480 puede escribir solo la parte de la imagen deformada (por ejemplo, línea, franja, etc.) que se necesita a la vez en una memoria caché 490 (por ejemplo, una memoria caché de último nivel), y el controlador de pantalla 240 puede leer esa parte de la memoria caché 490 y hacer que la pantalla escanee la parte de la imagen deformada. De forma ventajosa, dichos aspectos pueden tener un ancho de banda reducido para la memoria principal 235, ya que se elimina la escritura y lectura de la imagen deformada en la memoria principal 235.
[0041] En algunos aspectos, la deformación de la parte de la imagen y la escritura de la parte de la imagen en la memoria caché 490 se sincroniza con el controlador de pantalla 240. En particular, la pantalla del dispositivo de visualización ponible 120 puede estar configurada para visualizar una imagen en una pantalla escaneando la pantalla línea por línea para cada actualización de la pantalla. Por ejemplo, la pantalla puede escanear la pantalla parte por parte (por ejemplo, línea por línea o franja por franja) para una primera imagen que se va a visualizar y, a continuación, actualizar la pantalla escaneando la pantalla parte por parte para una segunda imagen que se va a visualizar. En consecuencia, el motor de deformación 480, justo antes (por ejemplo, un tiempo con suficiente antelación para deformar la imagen) de que el controlador de pantalla 240 vaya a escanear una parte de la pantalla, puede recibir información de posición actualizada para el dispositivo de pantalla ponible 120, deformar la parte de la imagen que se va a escanear en la parte de la pantalla, y escribir la parte deformada de la imagen en la memoria caché 490. A continuación, el controlador de pantalla 240 puede escanear la parte deformada de la imagen almacenada en la memoria caché 490 en la pantalla. Además, en algunos aspectos, mientras el controlador de pantalla 240 está escaneando la parte deformada de la imagen almacenada en la memoria caché 490 en la pantalla, el motor de deformación 480 puede deformar aún más una parte siguiente de la imagen que se va a escanear en la siguiente parte de la pantalla. En consecuencia, el motor de deformación 480 puede generar partes deformadas de la imagen para escanear justo a tiempo para que el controlador de pantalla 240 escanee las partes deformadas de la imagen en la pantalla, con un retardo de M2P mínimo. Además, en algunos aspectos, el motor de deformación 480 puede obtener cada vez información de posición actualizada para cada parte de una imagen escaneada en una pantalla, en lugar de la imagen completa cada vez.
[0042] En algunos aspectos, el motor de deformación 480 puede aplicar deformación de lente realizando distorsión de barril y aberración de color en las imágenes renderizadas usando un mapa vectorial correspondiente a una lente del dispositivo de visualización ponible 120. En algunos aspectos, el motor de deformación 480 puede aplicar además una corrección de perspectiva, por ejemplo, debida a la deformación de tiempo, al mapa vectorial.
[0043] La FIG. 5 ilustra unas operaciones 500 de ejemplo para realizar una deformación justo a tiempo, por ejemplo, mediante el sistema informático 400, de acuerdo con determinados aspectos de la presente divulgación.
[0044] En 505, la GPU 212 renderiza las imágenes izquierda y derecha para su visualización en el dispositivo de visualización ponible 120 en base a la información de posición del dispositivo de visualización ponible 120 y almacena las imágenes renderizadas en la memoria principal 235. Por ejemplo, se realizan los bloques 305-345 del flujo de datos 300. En 510, el motor de deformación 480 lee las imágenes renderizadas de la memoria principal 235. En 515, el motor de deformación 480 recibe información de posición actualizada (por ejemplo, desde un sensor, la CPU, etc.) del dispositivo de visualización ponible 120 antes de que se actualice una parte de una pantalla del dispositivo de visualización ponible 120. En 520, el motor de deformación 480 deforma la parte de las imágenes renderizadas correspondiente a la parte de la pantalla que se va a actualizar. Por ejemplo, el motor de deformación 480 puede aplicar deformación de tiempo, deformación de lente u otros tipos de deformación de imágenes como se analiza en el presente documento.
[0045] En 525, el motor de deformación 480 escribe la parte deformada de las imágenes renderizadas en la memoria caché 490. En 530, el controlador de pantalla 240 lee la parte deformada de las imágenes renderizadas de la memoria caché 490 y escanea la parte de las imágenes renderizadas en la pantalla del dispositivo de visualización ponible 120. En 535 (por ejemplo, en paralelo con 530), el motor de deformación 480 determina si hay otra parte de la pantalla por actualizar. Si en 535, se determina que hay otra parte de la pantalla por actualizar, el proceso vuelve a 515 y se ejecutan los bloques 515-525 (por ejemplo, en paralelo con 530). Si en 535, se determina que no hay ninguna otra parte de la pantalla por actualizar, el proceso termina.
[0046] En algunos aspectos, el motor de deformación 480 puede estar configurado para aplicar otros tipos de deformación además de deformación de lente y deformación de tiempo como se analiza en el presente documento. Por ejemplo, en algunos aspectos, el motor de deformación 480 puede estar configurado para realizar otros tipos de deformación en imágenes renderizadas para producir mejores resultados para los sistemas de VR. En algunos aspectos, la GPU 212 puede renderizar múltiples imágenes correspondientes a una imagen que se va a visualizar en el dispositivo de visualización ponible 120, y almacenar las múltiples imágenes renderizadas en la memoria principal 235. El motor de deformación 480 puede estar configurado para leer las múltiples imágenes renderizadas y generar una única salida que se va a escanear en la pantalla del dispositivo de visualización ponible 120 en base a las múltiples imágenes.
[0047] En algunos aspectos, las múltiples imágenes renderizadas pueden ser para la posición determinada del dispositivo de visualización ponible 120, o para múltiples desplazamientos desde la posición determinada del dispositivo de visualización ponible 120. En consecuencia, el motor de deformación 480 puede usar las múltiples imágenes renderizadas para aplicar una deformación de tiempo más precisa usando partes de imágenes renderizadas reales para deformar la imagen, en lugar de una transformación de la imagen como se analiza en el presente documento.
[0048] En algunos aspectos, las múltiples imágenes renderizadas pueden corresponder a perspectivas, niveles de enfoque o campos de visión diferentes de una imagen. Por ejemplo, la FIG. 6 ilustra diferentes campos de visión para una imagen de una escena que incluyen un enfoque amplio de una escena, un enfoque medio de una escena y un enfoque estrecho de una escena. En consecuencia, el motor de deformación 480 puede admitir el renderizado foveal donde se usa un número de píxeles/resolución diferente para renderizar diferentes partes de una imagen (por ejemplo, en base a la posición del ojo de un usuario del dispositivo de visualización ponible 120). Por ejemplo, unas partes de la imagen donde se enfoca el ojo se pueden renderizar con una resolución más alta, mientras que unas partes de la imagen donde no se enfoca el ojo (por ejemplo, la periferia) se renderizan con una resolución más baja. En consecuencia, la GPU 212 puede estar configurada para renderizar una imagen en diferentes campos de visión como se muestra en la FIG. 6. El motor de deformación 480, en base a la entrada del sensor que indica una posición del ojo de un usuario, puede utilizar a continuación diferentes partes de cada una de las imágenes renderizadas y diferentes campos de visión y generar una única imagen deformada para visualizarla en la pantalla. En algunos aspectos, se puede admitir renderizado foveal usando un mapa de plano alfa correspondiente a la posición del ojo del usuario con respecto a la imagen.
[0049] En algunos aspectos, el motor de deformación 480 puede determinar y aplicar la deformación descrita en el presente documento por separado a cada uno de los diferentes canales de color (por ejemplo, rojo, verde y azul) que componen las imágenes renderizadas.
[0050] En algunos aspectos, el motor de deformación 480 puede deformar las imágenes renderizadas, por ejemplo, cambiar un enfoque de las imágenes renderizadas, para adaptarlas a usuarios con deficiencias visuales (por ejemplo, miopía, hipermetropía, etc.).
[0051] La FIG. 7 es un diagrama de bloques de un motor de deformación 480 de ejemplo, de acuerdo con determinados aspectos de la presente divulgación. El motor de deformación 480 incluye una memoria caché 720 para almacenar datos de imagen. Los datos de imagen se pueden almacenar como píxeles. Además, cada píxel se puede dividir en subpíxeles, correspondiendo cada subpíxel a un canal de color (por ejemplo, rojo, verde, azul).
[0052] El motor de deformación 480 incluye además una o más unidades de transformación de perspectiva 705. Como se muestra, el motor de deformación 480 incluye tres unidades de transformación de perspectiva 705, una para cada uno de los canales de color. En algunos aspectos, se pueden incluir más o menos unidades de transformación de perspectiva 705, por ejemplo, para otros canales de color, o cuando una única unidad de transformación de perspectiva 705 corresponde a múltiples canales de color. Las unidades de transformación de perspectiva 705 están configuradas para realizar las técnicas de deformación de tiempo y, opcionalmente, las de deformación de lente descritas en el presente documento. Por ejemplo, como se muestra, cada unidad de transformación de perspectiva 705 recibe los píxeles de imágenes renderizadas (por ejemplo, imágenes renderizadas para diferentes ojos y/o diferentes campos de visión) correspondientes a un canal de color particular y realiza la deformación en las imágenes renderizadas. En particular, cada unidad de transformación de perspectiva 705 recibe información de posición actualizada del dispositivo de visualización ponible 120 y un mapa vectorial correspondiente a la distorsión de barril y la aberración de color para aplicar a los píxeles de imágenes renderizadas correspondientes a un canal de color particular. Las unidades de transformación de perspectiva 705 aplican además una corrección de perspectiva (deformación de tiempo) al mapa vectorial en base a la información de posición actualizada del dispositivo de visualización ponible 120, y aplican el mapa vectorial a los píxeles de las imágenes renderizadas para realizar la deformación de tiempo y la deformación de lente de las imágenes. Los píxeles de las imágenes deformadas se almacenan en la memoria caché 720.
[0053] El motor de deformación 480 incluye además una o más unidades interpoladoras 710. Como se muestra, el motor de deformación 480 incluye tres unidades interpoladoras 710, una para cada uno de los canales de color, por cada imagen renderizada (por ejemplo, cada imagen renderizada correspondiente a un campo de visión diferente) que se deforma. En algunos aspectos, el motor de deformación 480 incluye más o menos unidades interpoladoras 710, de modo similar a las unidades de transformación de perspectiva 705, y además en base a si se está deformando una o más imágenes renderizadas. Las unidades interpoladoras 710 aplican coeficientes de filtro para mejorar la calidad de las imágenes.
[0054] El motor de deformación 480 incluye además una o más unidades de empaquetamiento 715. Como se muestra, el motor de deformación 480 incluye una unidad de empaquetamiento 715 por cada imagen renderizada que se deforma. En algunos aspectos, el motor de deformación 480 incluye más o menos unidades de empaquetamiento 715, de modo similar a las unidades interpoladoras 710. Las unidades de empaquetamiento 715 combinan los píxeles deformados correspondientes a diferentes canales de color en los píxeles globales de la imagen deformada.
[0055] El motor de deformación 480 puede incluir además un combinador 725, por ejemplo cuando el motor de deformación 480 genera múltiples imágenes renderizadas (por ejemplo, que tienen diferentes campos de visión). El combinador 725 puede usar un mapa alfa, como se analiza en el presente documento, para determinar qué partes de las múltiples imágenes renderizadas ha de combinar para generar una imagen deformada que se va a visualizar en una pantalla.
[0056] La FIG. 8 ilustra unas operaciones 800 de ejemplo para realizar una deformación justo a tiempo, por ejemplo, mediante el sistema informático 400, de acuerdo con determinados aspectos de la presente divulgación.
[0057] En 805, el sistema informático determina una posición del dispositivo de visualización ponible en base a un sensor de movimiento. En 810, el sistema informático renderiza una imagen en base a la posición determinada. En 815, el sistema informático determina una primera posición actualizada del dispositivo de visualización ponible en base al sensor de movimiento.
[0058] En 820, el sistema informático deforma una primera parte de la imagen renderizada en base a la primera posición actualizada y para corregir la distorsión debida a una lente del dispositivo de visualización ponible. En 825, el sistema informático visualiza la primera parte deformada de la imagen renderizada en una pantalla del dispositivo de visualización ponible en base a un sensor de movimiento.
[0059] En 830, el sistema informático determina una segunda posición actualizada del dispositivo de visualización ponible en base al sensor de movimiento. En 835, el sistema informático deforma una segunda parte de la imagen renderizada en base a la segunda posición actualizada y para corregir la distorsión debida a la lente del dispositivo de visualización ponible. En 840, el sistema informático visualiza la segunda parte deformada de la imagen renderizada en la pantalla del dispositivo de visualización ponible.
[0060] Las diversas operaciones de los procedimientos descritos anteriormente se pueden realizar mediante cualquier medio adecuado que pueda realizar las funciones correspondientes. Los medios pueden incluir un(os) componente(s) y/o módulo(s) de hardware y/o software diverso(s) que incluye(n), pero sin limitarse a, un circuito, un circuito integrado específico de la aplicación (ASIC) o un procesador. En general, cuando en las figuras hay operaciones ilustradas, esas operaciones pueden tener unos correspondientes componentes de medios más función homólogos con una numeración similar. Por ejemplo, con referencia al sistema informático 400, la CPU 210 puede incluir un componente o unos componentes de determinación de posición para proporcionar los medios para determinar una posición, una primera posición actualizada y una segunda posición actualizada del dispositivo de visualización ponible 120 en base a un sensor de movimiento. La GPU 212 puede incluir un componente o unos componentes de renderizado de imágenes para proporcionar los medios para renderizar imágenes en base a la posición determinada. El motor de deformación 480 puede incluir un componente o unos componentes de deformación de partes para proporcionar los medios para deformar una primera parte de la imagen renderizada en base a la primera posición de actualización para corregir la distorsión debida a una lente del dispositivo de visualización ponible 120 y para deformar una segunda parte de la imagen renderizada en base a la segunda posición actualizada y para corregir la distorsión debida a la lente del dispositivo de visualización ponible 120. El controlador de pantalla 240 puede incluir un componente o unos componentes de visualización para proporcionar los medios para visualizar una primera parte de una imagen renderizada y una segunda parte de una imagen renderizada en una pantalla del dispositivo de visualización ponible 120.
[0061] Como se usa en el presente documento, el término "determinar" engloba una amplia variedad de acciones. Por ejemplo, "determinar" puede incluir calcular, computar, procesar, obtener, investigar, consultar (por ejemplo, consultar una tabla, una base de datos u otra estructura de datos), averiguar y similares. Asimismo, "determinar" puede incluir recibir (por ejemplo, recibir información), acceder (por ejemplo, acceder a datos de una memoria) y similares. Asimismo, "determinar" puede incluir resolver, seleccionar, elegir, establecer y similares.
[0062] Como se usa en el presente documento, una frase que se refiere a "al menos uno de" una lista de elementos se refiere a cualquier combinación de esos elementos, incluyendo elementos individuales. Como ejemplo, "al menos uno de: a, b, o c" pretende abarcar a, b, c, a-b, a-c, b-c, y a-b-c, así como cualquier combinación con múltiplos del mismo elemento (por ejemplo, a-a, a-a-a, a-a-b, a-a-c, a-b-b, a-c-c, b-b, b-b-b, b-b-c, c-c, y c-c-c o cualquier otro ordenamiento de a, b, y c).
[0063] Los diversos bloques, módulos y circuitos lógicos ilustrativos descritos en relación con la presente divulgación se pueden implementar o realizar con un procesador de propósito general, un procesador de señales digitales (DSP), un ASIC, una matriz de puertas programables in situ (FPGA) u otro dispositivo de lógica programable (PLD), lógica de puertas o de transistores discretos, componentes de hardware discretos o cualquier combinación de los mismos diseñada para realizar las funciones descritas en el presente documento. Un procesador de propósito general puede ser un microprocesador pero, de forma alternativa, el procesador puede ser cualquier procesador, controlador, microcontrolador o máquina de estados disponible comercialmente. Un procesador también se puede implementar como una combinación de dispositivos informáticos, por ejemplo, una combinación de un DSP y un microprocesador, una pluralidad de microprocesadores, uno o más microprocesadores junto con un núcleo de DSP o cualquier otra configuración de este tipo.
[0064] Los procedimientos divulgados en el presente documento comprenden una o más etapas o acciones para lograr el procedimiento descrito. Las etapas y/o acciones de procedimiento se pueden intercambiar entre sí sin apartarse del alcance de las reivindicaciones. En otras palabras, a menos que se especifique un orden específico de etapas o acciones, el orden y/o el uso de etapas y/o acciones específicas se puede modificar sin apartarse del alcance de las reivindicaciones.
[0065] Las funciones descritas se pueden implementar en hardware, software, firmware o en cualquier combinación de los mismos. Si se implementan en hardware, una configuración de hardware de ejemplo puede comprender un sistema de procesamiento en un nodo inalámbrico. El sistema de procesamiento se puede implementar con una arquitectura de bus. El bus puede incluir un número cualquiera de buses y puentes de interconexión, dependiendo de la aplicación específica del sistema de procesamiento y de las restricciones de diseño globales. El bus puede enlazar conjuntamente diversos circuitos que incluyen un procesador, medios legibles por máquina y una interfaz de bus. La interfaz de bus se puede usar para conectar un adaptador de red, entre otras cosas, al sistema de procesamiento por medio del bus. El adaptador de red se puede usar para implementar las funciones de procesamiento de señales de la capa física (PHY). En el caso de un terminal de usuario, también se puede conectar al bus una interfaz de usuario (por ejemplo, un teclado, una pantalla, un ratón, una palanca de mando, etc.). El bus también puede enlazar otros circuitos diversos, tales como fuentes de temporización, periféricos, reguladores de tensión, circuitos de gestión de potencia y similares, que son bien conocidos en la técnica y que, por lo tanto, no se describirán en mayor detalle.
[0066] El sistema de procesamiento puede estar configurado como un sistema de procesamiento de propósito general con uno o más microprocesadores que proporcionan la funcionalidad de procesador y una memoria externa que proporciona al menos una parte de los medios legibles por máquina, enlazados todos ellos junto con otros circuitos de apoyo a través de una arquitectura de bus externa. De forma alternativa, el sistema de procesamiento se puede implementar con un ASIC con el procesador, la interfaz de bus, la interfaz de usuario (en el caso de un terminal de acceso), unos circuitos de apoyo y al menos una parte de los medios legibles por máquina integrados en un único chip, o con una o más f Pg A, PLD, controladores, máquinas de estados, lógica de puertas, componentes de hardware discretos u otros circuitos adecuados cualesquiera, o cualquier combinación de circuitos que pueda realizar la diversa funcionalidad descrita a lo largo de esta divulgación. Los expertos en la técnica reconocerán el mejor modo de implementar la funcionalidad descrita para el sistema de procesamiento, dependiendo de la aplicación particular y de las restricciones de diseño globales impuestas al sistema global.
[0067] Se ha de entender que las reivindicaciones no están limitadas a la configuración y los componentes precisos ilustrados anteriormente. El alcance de la invención se expone en las reivindicaciones adjuntas.

Claims (12)

REIVINDICACIONES
1. Un procedimiento para hacer funcionar un dispositivo de visualización ponible (120), comprendiendo el procedimiento:
determinar (805) una posición del dispositivo de visualización ponible en base a un sensor de movimiento en un primer tiempo;
renderizar (810) una imagen en base a la posición determinada;
determinar (815) una primera posición actualizada del dispositivo de visualización ponible en base al sensor de movimiento en un segundo tiempo después del primer tiempo;
deformar (820) una primera parte de la imagen renderizada en base a la primera posición actualizada y para corregir una distorsión debida a una lente del dispositivo de visualización ponible; visualizar (825) la primera parte deformada de la imagen renderizada en una pantalla del dispositivo de visualización ponible;
determinar (830) una segunda posición actualizada del dispositivo de visualización ponible en base al sensor de movimiento en un tercer tiempo después del segundo tiempo;
deformar (835) una segunda parte de la imagen renderizada en base a la segunda posición actualizada y para corregir una distorsión debida a la lente del dispositivo de visualización ponible; y visualizar (840) la segunda parte deformada de la imagen renderizada en la pantalla del dispositivo de visualización ponible.
2. El procedimiento de la reivindicación 1, en el que renderizar se realiza usando una unidad de procesamiento de gráficos, y deformar se realiza usando un motor de deformación separado de la unidad de procesamiento de gráficos.
3. El procedimiento de la reivindicación 1, en el que deformar la primera parte y deformar la segunda parte está sincronizado con actualizar la pantalla del dispositivo de visualización ponible.
4. El procedimiento de la reivindicación 3, en el que deformar la primera parte está sincronizado con visualizar la primera parte.
5. El procedimiento de la reivindicación 3, en el que deformar la primera parte y deformar la segunda parte son asíncronas con renderizar la imagen.
6. El procedimiento de la reivindicación 1, que comprende además:
almacenar la imagen renderizada en una memoria;
leer la imagen renderizada de la memoria;
almacenar la primera parte deformada de la imagen renderizada en una memoria caché que es diferente de la memoria; y
leer la primera parte deformada de la imagen renderizada de la memoria caché.
7. El procedimiento de la reivindicación 6, en el que la memoria caché comprende una memoria en chip.
8. El procedimiento de la reivindicación 1, que comprende además:
renderizar una pluralidad de imágenes, correspondiendo cada una de la pluralidad de imágenes a un campo de visión diferente de la imagen; y
combinar partes de cada una de la pluralidad de imágenes para generar la primera parte deformada de la imagen renderizada.
9. El procedimiento de la reivindicación 1, que comprende además deformar la primera parte de la imagen renderizada para cambiar un enfoque de la primera parte de la imagen renderizada en base a una visión de un usuario del dispositivo de visualización ponible.
10. El procedimiento de la reivindicación 1, en el que visualizar la primera parte deformada y deformar la segunda parte se realizan en paralelo.
11. Un medio no transitorio, legible por ordenador que tiene instrucciones almacenadas en el mismo para hacer funcionar un dispositivo de visualización ponible (120), en el que una ejecución de las instrucciones por un sistema informático hace que el sistema informático lleve a cabo las etapas de cualquiera de las reivindicaciones 1 -10.
12. Un sistema informático para hacer funcionar un dispositivo de visualización ponible (120), comprendiendo el sistema informático:
medios para determinar (805) una posición del dispositivo de visualización ponible en base a un sensor de movimiento en un primer tiempo;
medios para renderizar (810) una imagen en base a la posición determinada;
medios para determinar (815) una primera posición actualizada del dispositivo de visualización ponible en base al sensor de movimiento en un segundo tiempo después del primer tiempo;
medios para deformar (820) una primera parte de la imagen renderizada en base a la primera posición actualizada y para corregir una distorsión debida a una lente del dispositivo de visualización ponible; medios para visualizar (825) la primera parte deformada de la imagen renderizada en una pantalla del dispositivo de visualización ponible;
medios para determinar (830) una segunda posición actualizada del dispositivo de visualización ponible en base al sensor de movimiento en un tercer tiempo después del segundo tiempo;
medios para deformar (835) una segunda parte de la imagen renderizada en base a la segunda posición actualizada y para corregir una distorsión debida a la lente del dispositivo de visualización ponible; y medios para visualizar (840) la segunda parte deformada de la imagen renderizada en la pantalla del dispositivo de visualización ponible.
ES17835892T 2016-12-09 2017-12-07 Visualización de deformación de imágenes sincronizada Active ES2855123T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/374,165 US10043318B2 (en) 2016-12-09 2016-12-09 Display synchronized image warping
PCT/US2017/065077 WO2018106898A1 (en) 2016-12-09 2017-12-07 Display synchronized image warping

Publications (1)

Publication Number Publication Date
ES2855123T3 true ES2855123T3 (es) 2021-09-23

Family

ID=61054476

Family Applications (1)

Application Number Title Priority Date Filing Date
ES17835892T Active ES2855123T3 (es) 2016-12-09 2017-12-07 Visualización de deformación de imágenes sincronizada

Country Status (8)

Country Link
US (1) US10043318B2 (es)
EP (1) EP3552081B1 (es)
CN (1) CN110050250B (es)
BR (1) BR112019010815A2 (es)
ES (1) ES2855123T3 (es)
HU (1) HUE052188T2 (es)
TW (1) TWI659391B (es)
WO (1) WO2018106898A1 (es)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10839321B2 (en) 1997-01-06 2020-11-17 Jeffrey Eder Automated data storage system
KR20180082033A (ko) * 2017-01-09 2018-07-18 삼성전자주식회사 음성을 인식하는 전자 장치
CN110573929A (zh) * 2017-05-01 2019-12-13 无限增强现实以色列有限公司 增强或混合现实环境的光学引擎时间扭曲
AU2018285543B2 (en) * 2017-06-14 2023-10-05 Hadal, Inc. Systems and methods for virtual reality motion sickness prevention
US10169843B1 (en) * 2017-11-20 2019-01-01 Advanced Micro Devices, Inc. Temporal foveated rendering using motion estimation
KR102473840B1 (ko) * 2017-11-21 2022-12-05 삼성전자주식회사 디스플레이 드라이버 및 모바일 전자 기기
KR102604738B1 (ko) * 2017-12-22 2023-11-22 삼성전자주식회사 와핑 처리를 수행하는 그래픽 프로세서, 이를 포함하는 렌더링 시스템 및 그래픽 프로세서 동작방법
US10551914B2 (en) * 2018-02-09 2020-02-04 Microsoft Technology Licensing, Llc Efficient MEMs-based eye tracking system with a silicon photomultiplier sensor
US10627899B2 (en) 2018-02-09 2020-04-21 Microsoft Technology Licensing, Llc Eye tracking system for use in a visible light display device
US10853911B2 (en) * 2018-04-17 2020-12-01 Google Llc Dynamic adaptation of images for projection, and/or of projection parameters, based on user(s) in environment
CN109739356B (zh) * 2018-12-29 2020-09-11 歌尔股份有限公司 Vr系统中图像显示的控制方法、装置及vr头戴设备
US10802287B2 (en) * 2019-01-14 2020-10-13 Valve Corporation Dynamic render time targeting based on eye tracking
US11660535B2 (en) * 2019-10-11 2023-05-30 Nvidia Corporation Hardware acceleration and event decisions for late latch and warp in interactive computer products
US20220201271A1 (en) * 2020-12-23 2022-06-23 Facebook Technologies, Llc Temporal foveated rendering
US11822713B2 (en) 2021-06-11 2023-11-21 Rockwell Collins, Inc. Pose augmentation of head worn display video for latency reduction
CN114125301B (zh) * 2021-11-29 2023-09-19 卡莱特云科技股份有限公司 一种虚拟现实技术拍摄延迟处理方法及装置
US11586286B1 (en) 2022-05-18 2023-02-21 Bank Of America Corporation System and method for navigating on an augmented reality display
US11720380B1 (en) 2022-05-18 2023-08-08 Bank Of America Corporation System and method for updating augmented reality navigation instructions based on a detected error

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3745117B2 (ja) * 1998-05-08 2006-02-15 キヤノン株式会社 画像処理装置及び画像処理方法
WO2011046633A1 (en) * 2009-10-14 2011-04-21 Zoran Corporation Method and apparatus for image stabilization
TWI454663B (zh) * 2011-11-22 2014-10-01 Core Wireless Licensing Sarl 用於決定位置偏移資訊之方法、設備和電腦可讀儲存媒體
US9740007B2 (en) * 2012-03-22 2017-08-22 Sony Corporation Display device, image processing device and image processing method, and computer program
WO2013151883A1 (en) 2012-04-02 2013-10-10 Intel Corporation Systems, methods, and computer program products for runtime adjustment of image warping parameters in a multi-camera system
US9232139B2 (en) * 2012-07-24 2016-01-05 Apple Inc. Image stabilization using striped output transformation unit
US9576397B2 (en) 2012-09-10 2017-02-21 Blackberry Limited Reducing latency in an augmented-reality display
WO2015044716A1 (en) * 2013-09-27 2015-04-02 Freescale Semiconductor, Inc. Head-up display warping controller
US9551916B2 (en) * 2014-09-25 2017-01-24 Intel Corporation Integrated and adjustable image projection with auto-image correction in electronic devices using an in-facing or world-facing image projector
US20160260246A1 (en) 2015-03-02 2016-09-08 Advanced Micro Devices, Inc. Providing asynchronous display shader functionality on a shared shader core
US9874932B2 (en) * 2015-04-09 2018-01-23 Microsoft Technology Licensing, Llc Avoidance of color breakup in late-stage re-projection
US9704217B2 (en) 2015-04-20 2017-07-11 Intel Corporation Apparatus and method for non-uniform frame buffer rasterization
US9240069B1 (en) * 2015-06-30 2016-01-19 Ariadne's Thread (Usa), Inc. Low-latency virtual reality display system
CN105847785A (zh) * 2016-05-09 2016-08-10 上海乐相科技有限公司 一种图像处理方法、设备和系统

Also Published As

Publication number Publication date
EP3552081A1 (en) 2019-10-16
TWI659391B (zh) 2019-05-11
BR112019010815A2 (pt) 2019-10-01
US10043318B2 (en) 2018-08-07
CN110050250A (zh) 2019-07-23
WO2018106898A1 (en) 2018-06-14
TW201830339A (zh) 2018-08-16
US20180165878A1 (en) 2018-06-14
HUE052188T2 (hu) 2021-04-28
EP3552081B1 (en) 2020-11-18
CN110050250B (zh) 2020-11-03

Similar Documents

Publication Publication Date Title
ES2855123T3 (es) Visualización de deformación de imágenes sincronizada
US10360832B2 (en) Post-rendering image transformation using parallel image transformation pipelines
US10591731B2 (en) Ocular video stabilization
ES2938535T3 (es) Representación foveada distribuida basada en la mirada del usuario
US8970495B1 (en) Image stabilization for color-sequential displays
CN110249317B (zh) 用于实时图像变换的无未命中高速缓存结构
US20150379772A1 (en) Tracking accelerator for virtual and augmented reality displays
US20150213778A1 (en) Environmental interrupt in a head-mounted display and utilization of non field of view real estate
US11301969B1 (en) Context aware dynamic distortion correction
US11308685B2 (en) Rendering computer-generated reality text
WO2020150188A1 (en) Counterrotation of display panels and/or virtual cameras in a hmd
KR102551131B1 (ko) 표시 장치 및 표시 장치를 포함하는 헤드 마운트 장치
US11698530B2 (en) Switch leakage compensation for global illumination
US10976817B2 (en) Method and device for eye tracking with content-embedded glints
EP4198873A1 (en) Sparse rgb filter hardware accelerator
US11880920B2 (en) Perspective correct vector graphics with foveated rendering
US11836872B1 (en) Method and device for masked late-stage shift
US11727892B1 (en) Eye-tracking based foveation control of displays
US20240185787A1 (en) Digital driving displays
WO2024123838A1 (en) Digital driving displays
NZ791444A (en) Virtual, augmented, and mixed reality systems and methods