ES2864222T3 - Un aparato, un método y un programa informático para la codificación de vídeo 3D - Google Patents
Un aparato, un método y un programa informático para la codificación de vídeo 3D Download PDFInfo
- Publication number
- ES2864222T3 ES2864222T3 ES13817171T ES13817171T ES2864222T3 ES 2864222 T3 ES2864222 T3 ES 2864222T3 ES 13817171 T ES13817171 T ES 13817171T ES 13817171 T ES13817171 T ES 13817171T ES 2864222 T3 ES2864222 T3 ES 2864222T3
- Authority
- ES
- Spain
- Prior art keywords
- block
- image
- view
- information
- texture
- 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
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/597—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding specially adapted for multi-view video sequence encoding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N13/00—Stereoscopic video systems; Multi-view video systems; Details thereof
- H04N13/10—Processing, recording or transmission of stereoscopic or multi-view image signals
- H04N13/106—Processing image signals
- H04N13/161—Encoding, multiplexing or demultiplexing different image signal components
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
Un método que comprende: obtener una primera imagen de profundidad codificada que representa una primera vista; reconstruir una primera imagen de profundidad decodificada en base a la primera imagen de profundidad codificada; obtener un primer bloque de textura de una primera imagen de textura que representa la primera vista; obtener, a partir de la primera imagen de profundidad decodificada, información de rango asociada con el primer bloque de textura, en donde obtener información de rango comprende al menos uno de los siguientes: reconstruir o decodificar la primera imagen de profundidad decodificada que representa la primera vista y obtener dicha información rango a partir de la primera imagen de profundidad decodificada; obtener dicha información de rango a partir de imágenes de profundidad que preceden a la primera imagen de textura en orden de codificación; u obtener dicha información de rango de los bloques de textura que preceden al primer bloque de textura en orden de codificación; derivar información de disparidad por bloques con referencia a una imagen de referencia en una segunda vista sobre la base de la información de rango; obtener una ubicación de un bloque de referencia de la segunda vista usando la información de disparidad por bloques como coordenadas espaciales desplazadas desde una ubicación del primer bloque de textura; obtener el bloque de referencia, utilizando la predicción de síntesis de vista, que comprende muestras de referencia para realizar en al menos uno de los siguientes: codificar el primer bloque de textura; o decodificar el primer bloque de textura; usar la información de disparidad para ubicar las muestras de referencia en la imagen de referencia; obtener valores de muestra de referencia para el bloque de referencia sobre la base de las muestras de referencia ubicadas; filtrar los valores de la muestra de referencia; y filtrar los valores de la muestra de referencia utilizando uno o más parámetros de predicción ponderados.
Description
DESCRIPCIÓN
Un aparato, un método y un programa informático para la codificación de vídeo 3D
CAMPO TÉCNICO
La presente invención se refiere a un aparato, un método y un programa informático para la codificación y decodificación de vídeo.
INFORMACIÓN SOBRE ANTECEDENTES
Esta sección está destinada a proporcionar contexto o antecedentes de la invención que se enumera en las reivindicaciones. La descripción en la presente puede incluir conceptos que podrían perseguirse, pero no son necesariamente los que se han concebido o perseguido previamente. Por lo tanto, a menos que en la presente se indique lo contrario, lo descrito en esta sección no es la técnica anterior a la descripción y reivindicaciones en esta solicitud, y no se admite como técnica anterior mediante su inclusión en esta sección.
Un sistema de codificación de video puede comprender un codificador que transforma un video de entrada en una representación comprimida adecuada para almacenamiento/transmisión y un decodificador que puede descomprimir la representación de vídeo comprimida de nuevo en una forma visible. El codificador puede descartar alguna información en la secuencia de video original para representar el video en una forma más compacta, por ejemplo, para permitir el almacenamiento/transmisión de la información de vídeo a una tasa de bits inferior a la que podría necesitarse.
La codificación de video escalable se refiere a una estructura de codificación en la que un flujo de bits puede contener múltiples representaciones del contenido a diferentes tasas de bits, resoluciones, tasas de tramas y/u otros tipos de escalabilidad. Un flujo de bits escalable puede consistir en una capa base que proporciona el video de menor calidad disponible y una o más capas de mejora que mejoran la calidad del video cuando se recibe y se decodifica junto con las capas inferiores. Para mejorar la eficacia de la codificación de las capas de mejora, la representación codificada de esa capa puede depender de las capas inferiores. Cada capa junto con todas sus capas dependientes es una representación de la señal de video en una determinada resolución espacial, resolución temporal, nivel de calidad y/o punto de operación de otros tipos de escalabilidad.
Actualmente se están investigando y desarrollando diversas tecnologías para proporcionar contenido de video tridimensional (3D). En especial, los estudios intensos se han centrado en varias aplicaciones de multivista en donde un espectador puede ver solo un par de video estéreo desde un punto de vista específico y otro par de video estéreo desde un punto de vista diferente. Uno de los enfoques más factibles para tales aplicaciones de multivista ha resultado ser aquel en donde solo un número limitado de vistas de entrada, por ejemplo, un video mono o estéreo más algunos datos complementarios, se proporciona a un lado del descodificador y luego todas las vistas requeridas son renderizadas (es decir, sintetizadas) localmente por el descodificador para mostrarse en una pantalla.
En la codificación de contenido de video 3D, se pueden utilizar sistemas de compresión de video, como el estándar de codificación de video avanzada H.264/AVC o la extensión MVC de codificación de video de multivista de H.264/AVC. El documento de estandarización "Title Test Model for AVC-based 3D video coding: editor's update" (MPEG M24889) divulga herramientas de codificación en los borradores de trabajo de "MVC extension forinclusion of depth maps" (MPEG N12544) y "AVC compatible video with depth information" (MPEG N12545) relevantes para la presente invención.
SUMARIO
Algunas realizaciones proporcionan un mecanismo para realizar una predicción de síntesis de vista hacia atrás donde se forma un bloque de predicción de síntesis de vista para el bloque de textura actual de una vista sobre la base del bloque de profundidad/disparidad coubicado para la misma vista. Algunas realizaciones especifican un conjunto de operaciones de codificación y decodificación, así como operaciones para realizar síntesis de vista que permitirían una implementación de baja complejidad basada en bloques para la predicción de síntesis de vista en bucle. En algunas realizaciones, se selecciona un bloque actual de una trama de una primera vista para la codificación, y se selecciona un bloque actual de una trama de una primera vista para la codificación. Se obtiene la información de rango asociada con un bloque de textura del bloque actual. La información de disparidad con referencia a una trama de referencia en una segunda vista deriva sobre la base de la información de rango, y un área de referencia deriva sobre la base de la información de disparidad. Se realiza una predicción de síntesis de vista utilizando el área de referencia para obtener una predicción del bloque actual.
Según un primer aspecto de la invención, se proporciona un método como se define en la reivindicación 1.
Según un segundo aspecto de la invención, se proporciona un aparato como se define en la reivindicación 6.
La invención se expone en el conjunto de reivindicaciones adjuntas y los ejemplos adicionales denominados realizaciones en la descripción son ejemplos ilustrativos.
DESCRIPCIÓN DE LAS FIGURAS
Para comprender mejor la presente invención, ahora se hará referencia a modo de ejemplo a los dibujos adjuntos en los que:
La figura 1 muestra un modelo 2D simplificado de una configuración de cámara estereoscópica;
La figura 2 muestra un modelo simplificado de una configuración de cámara de multivista;
La figura 3 muestra un modelo simplificado de una pantalla autoestereoscópica de multivista (ASD); La figura 4 muestra un modelo simplificado de un sistema 3DV basado en DIBR;
La figura 5 ilustra un ejemplo de video más datos de profundidad;
La figura 6 ilustra una visualización de la correspondencia horizontal-vertical y de disparidad entre imágenes de textura y profundidad en una primera y una segunda vista codificada;
La figura 7a muestra la vecindad espacial del bloque codificado actualmente que sirve como candidatos para la intrapredicción; la figura 7b muestra la vecindad temporal del bloque codificado actualmente que sirve como candidatos para la interpredicción; la figura 8 muestra un ejemplo de un codificador de vídeo de vista múltiple habilitado para síntesis de vista como un diagrama de bloques simplificado;
La figura 9 muestra un ejemplo de un descodificador de vídeo de vista múltiple habilitado para síntesis de vista como un diagrama de bloques simplificado; la figura 10 muestra esquemáticamente un dispositivo electrónico adecuado para emplear algunas realizaciones de la invención; la figura 11 muestra esquemáticamente un equipo de usuario adecuado para emplear algunas realizaciones de la invención;
La figura 12 muestra además dispositivos electrónicos esquemáticamente que emplean realizaciones de la invención conectados usando conexiones de red inalámbricas y cableadas;
La figura 13 muestra un método de codificación según una realización de ejemplo como diagrama de flujo; y La figura 14 muestra un método de decodificación según una realización de ejemplo como diagrama de flujo.
DESCRIPCIÓN DETALLADA DE ALGUNAS REALIZACIONES DE EJEMPLO
Para comprender los diversos aspectos de la invención y las realizaciones relacionadas con la misma, a continuación se describen brevemente algunos aspectos estrechamente relacionados sobre codificación de vídeo.
Algunas definiciones clave, flujo de bits y estructuras de codificación y conceptos de H.264/AVC se describen en esta sección como un ejemplo de un codificador de video, decodificador, método de codificación, método de decodificación y una estructura de flujo de bits, en donde se pueden implementar algunas realizaciones. Los aspectos de la invención no se limitan a H.264/AVC, sino que la descripción se da para una posible base sobre la que la invención puede realizarse parcial o totalmente.
El estándar H.264 / AVC fue desarrollado por el equipo conjunto de video (JVT) del grupo de Expertos en Codificación de Video (VCEG) del Sector de Estandarización de Telecomunicaciones de la Unión Internacional de Telecomunicaciones (UIT-T) y el Grupo de Expertos en Imágenes en Movimiento (MPEG) de la Organización Internacional de Estandarización (ISO) / Comisión Electrotécnica Internacional (IEC). El estándar H.264/AVC es publicado por ambas organizaciones de estandarización principales y se conoce como la recomendación ITU-T H.264 y el estándar internacional ISO/IEC 14496-10, también conocido como codificación de video avanzada (AVC) MPEG-4 Parte 10. Ha habido múltiples versiones del estándar H.264/AVC, cada una integrando nuevas extensiones o características a la especificación. Estas extensiones incluyen codificación de video escalable (SVC) y codificación de video de multivista (MVC).
De manera similar a muchos estándares de codificación de video anteriores, la sintaxis y la semántica del flujo de bits, así como el proceso de decodificación para flujos de bits sin errores, se especifican en H.264/AVC. No se especifica el proceso de codificación, pero los codificadores deben generar flujos de bits conformes. La conformidad del flujo de bits y el decodificador se puede verificar con el decodificador de referencia hipotético (HRD), que se especifica en el anexo C de H.264/AVC. El estándar contiene herramientas de codificación que ayudan a hacer frente a los errores y pérdidas de transmisión, pero el uso de las herramientas en la codificación es opcional y no se ha especificado ningún proceso de decodificación para flujos de bits erróneos.
La unidad elemental para la entrada a un codificador H.264/AVC y la salida de un decodificador H.264/AVC es una imagen. Una imagen puede ser una trama o un campo. Una trama normalmente comprende una matriz de muestras de luminancia y las correspondientes muestras de crominancia. Un campo es un conjunto de filas de muestra alternativas de una trama y se puede utilizar como entrada del codificador, cuando la señal fuente está entrelazada. Un macrobloque (MB) es un bloque de 16x16 de muestras de luminancia y los correspondientes bloques de muestras de crominancia. Un bloque tiene muestras de límites, que consisten en las muestras en las filas de muestras superior e inferior y en las columnas de muestras a la izquierda y a la derecha. Las muestras de límites adyacentes a otro
bloque que está codificado o decodificado pueden usarse, por ejemplo, en intrapredicción. Las imágenes croma pueden tener submuestreo en comparación con las imágenes luma. Por ejemplo, en el patrón de muestreo 4:2:0, la resolución espacial de las imágenes croma es la mitad de la de la imagen luma a lo largo de ambos ejes de coordenadas y, en consecuencia, un macrobloque contiene un bloque de muestras cromáticas de 8x8 por cada componente cromático. Una imagen se divide en uno o más grupos de corte, y un grupo de cortes contiene uno o más cortes. Un corte consiste en un número entero de macrobloques ordenados consecutivamente en el barrido de trama dentro de un grupo de corte particular.
La unidad elemental para la salida de un codificador H.264/AVC y la entrada de un decodificador H.264/AVC es una unidad de capa de abstracción de red (NAL). La decodificación de unidades de NAL parcialmente perdidas o dañadas suele ser difícil. Para el transporte a través de redes orientadas a paquetes o el almacenamiento en archivos estructurados, las unidades de NAL generalmente se encapsulan en paquetes o estructuras similares. Se ha especificado un formato de flujo de bytes en H.264/AVC para entornos de transmisión o almacenamiento que no proporcionan estructuras de trama. El formato de flujo de bytes separa las unidades de NAL entre sí al unir un código de inicio delante de cada unidad de NAL. Para evitar la detección falsa de los límites de la unidad de NAL, los codificadores ejecutan un algoritmo de prevención de emulación de código de inicio orientado a bytes, que agrega un byte de prevención de emulación a la carga útil de la unidad de NAL si, de lo contrario, se hubiera producido un código de inicio. Para permitir un funcionamiento sencillo de la puerta de enlace entre sistemas orientados a paquetes y a flujo, la prevención de emulación del código de inicio se realiza siempre independientemente de si el formato de flujo de bytes está o no en uso.
H.264/AVC, como muchos otros estándares de codificación de video, permite dividir una imagen codificada en cortes. La predicción en imagen está deshabilitada en los límites de los cortes. Por lo tanto, los cortes se pueden considerar como una forma de dividir una imagen codificada en partes decodificables de forma independiente y, por lo tanto, los cortes son unidades elementales para la transmisión.
Algunos perfiles de H.264/AVC permiten el uso de hasta ocho grupos de cortes por imagen codificada. Cuando se usa más de un grupo de cortes, la imagen se divide en unidades de mapa de grupos de corte, que son iguales a dos macrobloques consecutivos verticalmente cuando se usa la codificación de campo de trama adaptable de macrobloque (MBAFF) y, en caso contrario, son iguales a un macrobloque. El conjunto de parámetros de la imagen contiene datos en base a los cuales cada unidad de mapa de grupo de cortes de una imagen se asocia a un grupo de cortes particular. Un grupo de cortes puede contener cualquier unidad de mapa de grupo de cortes, incluidas las unidades de mapa no adyacentes. Cuando se especifica más de un grupo de cortes para una imagen, se usa la característica de ordenación flexible de macrobloques (FMO) del estándar.
En H.264/AVC, un corte consta de uno o más macrobloques consecutivos (o pares de macrobloques, cuando se utiliza MBAFF) dentro de un grupo de corte particular en el orden de exploración de trama. Si solo se utiliza un grupo de cortes, los cortes H.264/AVC contienen macrobloques consecutivos en el orden de exploración de trama y, por lo tanto, son similares a los cortes de muchos estándares de codificación previos. En algunos perfiles de H.264/AVC, los cortes de una imagen codificada pueden aparecer en cualquier orden relativo entre sí en el flujo de bits, lo que se denomina característica de ordenación arbitraria de cortes (ASO). De lo contrario, los cortes deben estar en orden de exploración de trama en el flujo de bits.
Las unidades de NAL constan de un encabezado y una carga útil. El encabezado de la unidad de NAL indica el tipo de unidad de NAL y si un corte codificado contenido en la unidad de NAL es parte de una imagen de referencia o una imagen que no es de referencia. El encabezado de las unidades de SVC y de NAL de MVC contiene además varias indicaciones relacionadas con la escalabilidad y la jerarquía de multivista.
Las unidades de NAL de H.264/AVC se pueden clasificar en unidades de NAL de capa de codificación de video (VCL) y unidades de NAL que no son VCL. Las unidades de NAL de VCL son unidades de NAL de corte codificado, unidades de NAL de partición de datos de corte codificado o unidades de NAL de prefijo de VCL. Las unidades de NAL de corte codificado contienen elementos de sintaxis que representan uno o más macrobloques codificados, cada uno de los cuales corresponde a un bloque de muestras en la imagen sin comprimir. Existen cuatro tipos de unidades de NAL de corte codificado: corte codificado en una imagen de actualización de decodificación instantánea (IDR), corte codificado en una imagen que no es IDR, corte codificado de una imagen codificada auxiliar (como un plano alfa) y extensión de corte codificado (para cortes de SVC que no están en la capa base o cortes de MVC que no están en la vista base). Un conjunto de tres unidades de NAL de partición de datos de corte codificado contiene los mismos elementos de sintaxis que un corte codificado. La partición de datos de corte codificado A comprende encabezados de macrobloque y vectores de movimiento de un corte, mientras que la partición de datos de corte codificado B y C incluyen los datos residuales codificados para intra macrobloques e inter macrobloques, respectivamente. Cabe señalar que el soporte para particiones de datos de corte solo se incluye en algunos perfiles de H.264/AVC. Una unidad de NAL de prefijo de VCL precede a un corte codificado de la capa base en flujos de bits de SVC y MVC y contiene indicaciones de la jerarquía de escalabilidad del corte codificado asociado.
Una unidad de NAL no VCL de H.264/AVC puede ser de uno de los siguientes tipos: un conjunto de parámetros de secuencia, un conjunto de parámetros de imagen, una unidad de NAL de información de mejora suplementaria (SEI), un delimitador de unidad de acceso, una unidad de NAL de fin de secuencia, una unidad de NAL de fin de flujo o una unidad de NAL de datos de relleno. Los conjuntos de parámetros son esenciales para la reconstrucción de imágenes decodificadas, mientras que las otras unidades de NAL no VCL no son necesarias para la reconstrucción de valores de muestra decodificados y sirven para otros fines que se presentan a continuación.
Muchos parámetros que permanecen sin cambios a través de una secuencia de video codificada se incluyen en un conjunto de parámetros de secuencia. Además de los parámetros que son esenciales para el proceso de decodificación, el conjunto de parámetros de secuencia puede contener opcionalmente información de usabilidad de video (VUI), que incluye parámetros que son importantes para el almacenamiento en búfer, el tiempo de salida de la imagen, la reproducción y la reserva de recursos. Un conjunto de parámetros de imagen contiene dichos parámetros que probablemente no se modifiquen en varias imágenes codificadas. No hay encabezado de imagen presente en los flujos de bits H.264/AVC, pero los datos de nivel de imagen que cambian con frecuencia se repiten en cada encabezado de corte y los conjuntos de parámetros de imagen llevan los parámetros de nivel de imagen restantes. La sintaxis H.264/AVC permite muchas instancias de conjuntos de parámetros de secuencia e imagen, y cada instancia se identifica con un identificador único. Cada encabezado de corte incluye el identificador del conjunto de parámetros de imagen que está activo para la decodificación de la imagen que contiene el corte, y cada conjunto de parámetros de imagen contiene el identificador del conjunto de parámetros de secuencia activa. En consecuencia, la transmisión de conjuntos de parámetros de imagen y secuencia no tiene que sincronizarse con precisión con la transmisión de cortes. En cambio, es suficiente que la secuencia activa y los conjuntos de parámetros de imagen se reciban en cualquier momento antes de que sean referenciados, lo que permite la transmisión de conjuntos de parámetros utilizando un mecanismo de transmisión más fiable en comparación con los protocolos utilizados para los datos de corte. Por ejemplo, los conjuntos de parámetros se pueden incluir como un parámetro en la descripción de la sesión para las sesiones del Protocolo de transporte en tiempo real (RTP) H.264/AVC. Si los conjuntos de parámetros se transmiten en banda, pueden repetirse para mejorar la solidez de los errores.
Una unidad de NAL de SEI de H.264/AVC contiene uno o más mensajes de SEI, que no son necesarios para la decodificación de imágenes de salida, pero ayudan en procesos relacionados, como el tiempo de salida de imágenes, la reproducción, la detección de errores, el ocultamiento de errores y la reserva de recursos. Varios mensajes de SEI se especifican en H.264/AVC, y los mensajes de SEI de datos de usuario permiten a las organizaciones y empresas especificar mensajes de SEI para su propio uso. H.264/AVC contiene la sintaxis y la semántica de los mensajes de SEI especificados, pero no se define ningún proceso para manejar los mensajes en el destinatario. En consecuencia, los codificadores deben seguir el estándar H.264/AVC cuando crean mensajes de SEI, y los decodificadores que cumplen con el estándar H.264/AVC no están obligados a procesar mensajes de SEI para cumplir con el orden de salida. Una de las razones para incluir la sintaxis y la semántica de los mensajes de SEI en H.264/AVC es permitir que diferentes especificaciones del sistema interpreten la información suplementaria de forma idéntica y, por lo tanto, interoperen. Se pretende que las especificaciones del sistema puedan requerir el uso de mensajes de SEI particulares tanto en el extremo de codificación como en el extremo de decodificación, y además se pueda especificar el proceso para manejar mensajes de SEI particulares en el destinatario.
Una imagen codificada en H.264/AVC consta de las unidades de NAL de VCL requeridas para la decodificación de la imagen. Una imagen codificada puede ser una imagen codificada primaria o una imagen codificada redundante. Una imagen codificada primaria se utiliza en el proceso de decodificación de flujos de bits válidos, mientras que una imagen codificada redundante es una representación redundante que solo debe decodificarse cuando la imagen codificada primaria no se puede decodificar correctamente.
En H.264/AVC, una unidad de acceso consta de una imagen codificada primaria y las unidades de NAL que están asociadas a ella. El orden de aparición de las unidades de NAL dentro de una unidad de acceso está restringido de la siguiente manera. Una unidad de NAL delimitadora de unidad de acceso opcional puede indicar el inicio de una unidad de acceso. Le siguen cero o más unidades de NAL de SEI. Los cortes codificados o las particiones de datos de corte de la imagen codificada primaria aparecen a continuación, seguidos de los cortes codificados para cero o más imágenes codificadas redundantes.
Una unidad de acceso en MVC se define como un conjunto de unidades de NAL que son consecutivas en el orden de decodificación y contienen exactamente una imagen codificada primaria que consta de uno o más componentes de vista. Además de la imagen codificada primaria, una unidad de acceso también puede contener una o más imágenes codificadas redundantes, una imagen codificada auxiliar u otras unidades de NAL que no contengan cortes o particiones de datos de corte de una imagen codificada. La decodificación de una unidad de acceso siempre da como resultado una imagen decodificada que consta de uno o más componentes de vista decodificados. En otras palabras, una unidad de acceso en MVC contiene los componentes de vista de las vistas para una instancia de tiempo de salida.
Un componente de vista en MVC se denomina representación codificada de una vista en una única unidad de acceso.
La predicción intervista puede usarse en MVC y se refiere a la predicción de un componente de vista a partir de muestras decodificadas de diferentes componentes de vista de la misma unidad de acceso. En MVC, la predicción intervista se realiza de forma similar a la interpredicción. Por ejemplo, las imágenes de referencia de intervista se colocan en la misma lista o listas de imágenes de referencia que las imágenes de referencia para la interpredicción, y un índice de referencia así como un vector de movimiento se codifican o infieren de manera similar para las imágenes de intervista e inter-referencia.
Una imagen de anclaje en MVC es una imagen codificada en la que todos los cortes pueden hacer referencia solo a los cortes dentro de la misma unidad de acceso, es decir, se puede usar la predicción de intervista, pero no se usa la interpredicción, y todas las siguientes imágenes codificadas en el orden de salida no usan la interpredicción de cualquier imagen antes de la imagen codificada en el orden de decodificación. La predicción intervista puede usarse para componentes de vista de IDR que son parte de una vista no base. Una vista base en MVC es una vista que tiene el valor mínimo de índice de orden de vista en una secuencia de video codificada. La vista base se puede decodificar independientemente de otras vistas y no utiliza la predicción intervista. La vista base se puede decodificar mediante decodificadores H.264/AVC que solo admiten los perfiles de vista única, como el perfil de línea de base o el perfil alto de H.264/AVC.
En el estándar de MVC, muchos de los subprocesos del proceso de decodificación de MVC utilizan los subprocesos respectivos del estándar H.264/AVC reemplazando el término "imagen", "trama" y "campo" en la especificación del subproceso del estándar H.264/AVC por "componente de vista", "componente de vista de trama" y "componente de vista de campo", respectivamente. Asimismo, los términos "imagen", "trama" y "campo" se utilizan a menudo a continuación y significan "componente de vista", "componente de vista de trama" y "componente de vista de campo", respectivamente.
Una secuencia de vídeo codificada se define como una secuencia de unidades de acceso consecutivas en orden de decodificación desde una unidad de acceso de IDR, inclusiva, a la siguiente unidad de acceso de IDR, exclusiva, o al final del flujo de bits, lo que aparezca antes.
Un grupo de imágenes (GOP) y sus características se pueden definir de la siguiente manera. Un GOP se puede decodificar independientemente de si se decodificaron imágenes anteriores. Un GOP abierto es un grupo de imágenes en el que las imágenes que preceden a la intraimagen inicial en el orden de salida pueden no ser correctamente decodificables cuando la decodificación comienza desde la intraimagen inicial del GOP abierto. En otras palabras, las imágenes de un GOP abierto pueden referirse (en la interpredicción) a imágenes que pertenecen a un GOP anterior. Un decodificador H.264/AVC puede reconocer una intraimagen que inicia un GOP abierto desde el mensaje de SEI del punto de recuperación en un flujo de bits H.264/AVC. Un GOP cerrado es un grupo de imágenes en el que todas las imágenes se pueden decodificar correctamente cuando la decodificación comienza desde la intraimagen inicial del GOP cerrado. En otras palabras, ninguna imagen en un GOP cerrado se refiere a ninguna imagen en GOP anteriores. En H.264/AVC, un GOP cerrado comienza desde una unidad de acceso de IDR. Como resultado, la estructura de GOP cerrado tiene más potencial de resistencia a errores en comparación con la estructura GOP abierto, aunque a costa de una posible reducción en la eficiencia de compresión. La estructura de codificación de GOP abierto es potencialmente más eficiente en la compresión, debido a una mayor flexibilidad en la selección de imágenes de referencia.
La sintaxis de flujo de bits de H.264/AVC indica si una imagen en particular es una imagen de referencia para la interpredicción de cualquier otra imagen. Las imágenes de cualquier tipo de codificación (I, P, B, SP) pueden ser imágenes de referencia o imágenes no de referencia en H.264/AVC. El encabezado de la unidad de NAL indica el tipo de unidad de NAL y si un corte codificado contenido en la unidad de NAL es parte de una imagen de referencia o una imagen que no es de referencia.
Existe un proyecto de estandarización de codificación de video en curso para especificar un estándar de codificación de video de alta eficiencia (HEVC). Muchas de las definiciones clave, flujo de bits, estructuras de codificación y conceptos de HEVC son iguales o similares a los de H.264/AVC. Algunas definiciones clave, flujo de bits y estructuras de codificación y conceptos de HEVC se describen en esta sección como un ejemplo de un codificador de video, decodificador, método de codificación, método de decodificación y una estructura de flujo de bits, en donde se pueden implementar algunas realizaciones. Los aspectos de la invención no se limitan a HEVC, sino que la descripción se da para una posible base sobre la que la invención puede realizarse parcial o totalmente.
De manera similar a H.264/AVC, un flujo de bits de HEVC consta de varias unidades de acceso, cada una de las cuales incluye datos codificados asociados con una imagen. Cada unidad de acceso se divide en unidades de NAL, que incluyen una o más unidades de NAL de VCL (es decir, unidades de NAL de corte codificado) y cero o más unidades de NAL que no son VCL, por ejemplo, unidades de NAL de conjuntos de parámetros o unidades de NAL de información de mejora suplementaria (SEI). Cada unidad de NAL incluye un encabezado de unidad de NAL y una carga útil de unidad de n Al . En un borrador del estándar de HEVC, se utiliza un encabezado de unidad de nAl de dos bytes para todos los tipos de unidades de NAL especificadas. El primer byte del encabezado de la unidad de NAL contiene un bit reservado, una indicación de un bit nal_ref_idc que indica principalmente si la imagen transportada en esta unidad de acceso es una imagen de referencia o una imagen no de referencia, y una indicación de tipo de unidad de NAL de seis bits. El segundo byte del encabezado de la unidad de NAL incluye una indicación temporal_id de tres
bits para el nivel temporal y un campo reservado de cinco bits (denominado reserved_one_5bits) requerido para tener un valor igual a 1 en un borrador del estándar de HEVC. Se espera que el campo reservado de cinco bits sea utilizado por extensiones como una futura extensión de vídeo escalable y 3D. Se espera que estos cinco bits lleven información sobre la jerarquía de escalabilidad, como quality_id o similar, dependency_id o similar, cualquier otro tipo de identificador de capa, índice de orden de vista o similar, identificador de vista, un identificador similar a priority_id de SVC que indica un extracción de subflujo de bits válida si todas las unidades de NAL mayores que un valor de identificador específico se eliminan del flujo de bits. Sin perder la generalidad, en algunas realizaciones de ejemplo, una variable LayerId deriva del valor ofreserved_one_5bits, por ejemplo, de la siguiente manera: LayerId = reserved_one_5bits - 1.
En un borrador del estándar de HEVC, algunas definiciones y conceptos clave para la división de imágenes se definen de la siguiente manera. Una partición se define como la división de un conjunto en subconjuntos, de manera que cada elemento del conjunto se encuentre exactamente en uno de los subconjuntos.
Las imágenes de video se pueden dividir en unidades de codificación (CU) que cubren el área de la imagen. Una unidad de codificación consta de una o más unidades de predicción (PU) que definen el proceso de predicción para las muestras dentro de la unidad de codificación y una o más unidades de transformación (TU) que definen el proceso de codificación del error de predicción para las muestras en la unidad de codificación. Una unidad de codificación puede consistir en un bloque cuadrado de muestras con un tamaño seleccionable de un conjunto predefinido de posibles tamaños de unidades de codificación. Una unidad de codificación con el tamaño máximo permitido puede denominarse unidad de codificación más grande (LCU) y la imagen de vídeo puede dividirse en unidades de codificación más grandes que no se superponen. La unidad de codificación más grande se puede dividir además en una combinación de unidades de codificación más pequeñas, por ejemplo, dividiendo recursivamente la unidad de codificación más grande y las unidades de codificación resultantes. Cada unidad de codificación resultante puede tener asociada al menos una unidad de predicción y al menos una unidad de transformación. Cada unidad de predicción y unidad de transformación se puede dividir en unidades de predicción y unidades de transformación más pequeñas para aumentar la granularidad de los procesos de predicción y codificación de errores de predicción, respectivamente. Cada unidad de predicción tiene asociada información de predicción que define qué tipo de predicción se aplicará a los píxeles dentro de esa unidad de predicción (por ejemplo, información de vector de movimiento para unidades de predicción interpredichas e información de direccionalidad intrapredichas para unidades de predicción intrapredichas). De manera similar, cada unidad de transformación está asociada con información que describe el proceso de decodificación del error de predicción para las muestras dentro de la unidad de transformación (incluyendo, por ejemplo, información del coeficiente de DCT). Puede señalizarse en el nivel de unidad de codificación si se aplica o no codificación de error de predicción para cada unidad de codificación. En el caso de que no exista un error de predicción residual asociado con la unidad de codificación, se puede considerar que no existen unidades de transformación para la unidad de codificación. La división de la imagen en unidades de codificación y la división de las unidades de codificación en unidades de predicción y unidades de transformación se pueden señalar en un flujo de bits que permite al decodificador reproducir la estructura deseada de estas unidades.
Muchos códecs de video híbridos, incluidos H.264/AVC y HEVC, codifican información de video en dos fases. En la primera fase, se predicen los valores de los píxeles o de la muestra en una determinada área de imagen o "bloque". Esos píxeles o valores de muestra pueden predecirse, por ejemplo, mediante mecanismos de compensación de movimiento, que implican hallar e indicar un área en uno de los fotogramas de vídeo codificados previamente que se corresponda estrechamente con el bloque que se está codificando. Además, los valores de píxeles o muestras pueden predecirse mediante mecanismos espaciales que implican hallar e indicar una relación de región espacial.
Los enfoques de predicción que utilizan información de imagen de una imagen previamente codificada también pueden denominarse métodos de interpredicción, que también pueden denominarse predicción temporal y compensación de movimiento. Los enfoques de predicción que usan información de imagen dentro de la misma imagen también pueden denominarse métodos de intrapredicción.
La segunda fase consiste en codificar el error entre el bloque predicho de píxeles o muestras y el bloque original de píxeles o muestras. Esto se puede lograr transformando la diferencia en píxeles o valores de muestra usando una transformación especificada. Esta transformación puede ser una transformación de coseno discreta (DCT) o una variante de la misma. Después de transformar la diferencia, la diferencia transformada se cuantifica y se codifica por entropía.
Al variar la fidelidad del proceso de cuantificación, el codificador puede controlar el equilibrio entre la precisión del píxel o la representación de la muestra (es decir, la calidad visual de la imagen) y el tamaño de la representación de vídeo codificado resultante (por ejemplo, el tamaño del archivo o la velocidad del bit de transmisión).
El decodificador reconstruye el vídeo de salida aplicando un mecanismo de predicción similar al utilizado por el codificador para formar una representación predicha del píxel o bloques de muestra (utilizando el movimiento o la información espacial creada por el codificador y almacenada en la representación comprimida de la imagen) y
decodificación de error de predicción (la operación inversa de la codificación de error de predicción para recuperar la señal de error de predicción cuantificada en el dominio espacial).
Después de aplicar los procesos de decodificación de errores y predicción de píxeles o muestras, el decodificador combina la predicción y las señales de error de predicción (los valores de píxeles o de muestra) para formar el fotograma de vídeo de salida.
El decodificador (y codificador) también puede aplicar procesos de filtrado adicionales para mejorar la calidad del video de salida antes de pasarlo para su visualización y/o almacenamiento como referencia de predicción para las próximas imágenes en la secuencia de video.
En muchos códecs de video, incluidos H.264/AVC y HEVC, la información de movimiento se indica con vectores de movimiento asociados con cada bloque de imagen con compensación de movimiento. Cada uno de estos vectores de movimiento representa el desplazamiento del bloque de imagen en la imagen a codificar (en el lado del codificador) o decodificar (en el lado del decodificador) y el bloque de fuente de predicción en una de las imágenes previamente codificadas o decodificadas. H.264/AVC y HEVC, como muchos otros estándares de compresión de video, dividen una imagen en una malla de rectángulos, para cada uno de los cuales se indica un bloque similar en una de las imágenes de referencia para la interpredicción. La ubicación del bloque de predicción se codifica como un vector de movimiento que indica la posición del bloque de predicción en comparación con el bloque que se está codificando. Para representar eficazmente los vectores de movimiento, estos pueden codificarse diferencialmente con respecto a los vectores de movimiento predichos específicos del bloque. En muchos códecs de video, los vectores de movimiento predichos se crean de una manera predefinida, por ejemplo, calculando la mediana de los vectores de movimiento codificados o decodificados de los bloques adyacentes. Otra forma de crear predicciones de vector de movimiento es generar una lista de predicciones candidatas a partir de bloques adyacentes y/o bloques coubicados en imágenes de referencia temporal y señalizar al candidato elegido como predictor de vector de movimiento. Además de predecir los valores del vector de movimiento, se puede predecir el índice de referencia de la imagen previamente codificada/decodificada. El índice de referencia puede predecirse a partir de bloques adyacentes y/o de bloques coubicados en una imagen de referencia temporal. Además, muchos códecs de video de alta eficiencia emplean un mecanismo de codificación/decodificación de información de movimiento adicional, a menudo denominado modo de mezcla/fusión, donde toda la información del campo de movimiento, que incluye el vector de movimiento y el índice de imagen de referencia correspondiente para cada lista de imágenes de referencia disponible, se predice y se usa sin ninguna modificación/corrección. De manera similar, la predicción de la información del campo de movimiento se lleva a cabo utilizando la información del campo de movimiento de los bloques adyacentes y/o los bloques coubicados en imágenes de referencia temporal y la información del campo de movimiento usada se señala entre una lista de la lista de candidatos de campo de movimiento completada con información del campo de movimiento de los bloques adyacentes/coubicados disponibles.
El proceso de interpredicción se puede caracterizar utilizando uno o más de los siguientes factores.
La precisión de la representación del vector de movimiento. Por ejemplo, los vectores de movimiento pueden tener una precisión de un cuarto de píxel y los valores de muestra en posiciones de píxeles fraccionarios pueden obtenerse usando un filtro de respuesta de impulso finito (FIR).
Partición de bloques para interpredicción. Muchos estándares de codificación, incluidos H.264/AVC y HEVC, permiten seleccionar el tamaño y la forma del bloque para el que se aplica un vector de movimiento para compensar el movimiento en el codificador, e indicar el tamaño y la forma seleccionados en el flujo de bits para que los decodificadores puedan reproducir la predicción con compensación de movimiento realizada en el codificador.
Número de imágenes de referencia para interpredicción. Las fuentes de interpredicción son imágenes previamente decodificadas. Muchos estándares de codificación, incluidos H.264/AVC y HEVC, permiten el almacenamiento de múltiples imágenes de referencia para la interpredicción y selección de la imagen de referencia utilizada en base a bloques. Por ejemplo, las imágenes de referencia pueden seleccionarse sobre la base de macrobloque o partición de macrobloque en H.264/AVC y sobre la base de PU o CU en HEVC. Muchos estándares de codificación, como H.264/AVC y HEVC, incluyen estructuras de sintaxis en el flujo de bits que permiten a los decodificadores crear una o más listas de imágenes de referencia. Puede usarse un índice de imágenes de referencia para una lista de imágenes de referencia para indicar cuál de las múltiples imágenes de referencia se usa para la interpredicción para un bloque particular. Un índice de imagen de referencia puede ser codificado por un codificador en el flujo de bits en algunos modos de intercodificación o puede derivarse (por un codificador y un descodificador), por ejemplo, utilizando bloques vecinos en algunos otros modos de intercodificación.
Predicción de vectores de movimiento. Para representar eficazmente vectores de movimiento en flujos de bits, los vectores de movimiento pueden codificarse diferencialmente con respecto a un vector de movimiento predicho específico del bloque. En muchos códecs de video, los vectores de movimiento predichos se crean de una manera predefinida, por ejemplo, calculando la mediana de los vectores de movimiento codificados o decodificados de los bloques adyacentes. Otra forma de crear predicciones de vector de movimiento es generar una lista de predicciones
candidatas a partir de bloques adyacentes y/o bloques coubicados en imágenes de referencia temporal y señalizar al candidato elegido como predictor de vector de movimiento. Además de predecir los valores del vector de movimiento, se puede predecir el índice de referencia de la imagen previamente codificada/decodificada. El índice de referencia normalmente se predice partir de bloques adyacentes y/o de bloques coubicados en una imagen de referencia temporal. La codificación diferencial de los vectores de movimiento se inhabilita normalmente a través de los límites de los cortes.
Predicción compensada por movimiento de múltiples hipótesis. H.264/AVC y HEVC permiten el uso de un solo bloque de predicción en los cortes P (en la presente denominados cortes unipredictivos) o una combinación lineal de dos bloques de predicción compensados por movimiento para cortes bipredictivos, que también se denominan cortes B. Los bloques individuales en los cortes B pueden ser bipredichos, unipredichos o intrapredichos, y los bloques individuales en P o los cortes pueden ser unipredichos o intrapredichos. Las imágenes de referencia para una imagen bipredictiva no se limitan a ser la imagen siguiente y la imagen anterior en el orden de salida, sino que se pueden utilizar todas las imágenes de referencia.
En muchos estándares de codificación, como H.264/AVC y HEVC, se construye una lista de imágenes de referencia, denominada lista de imágenes de referencia 0, para los cortes P y SP, y se construyen dos listas de imágenes de referencia, la lista 0 y la lista 1 para los cortes B. Para los cortes B, cuando la predicción en la dirección de avance puede referirse a la predicción a partir de una imagen de referencia en la lista de imágenes de referencia 0, y la predicción en la dirección hacia atrás puede referirse a la predicción a partir de una imagen de referencia en la lista de imágenes de referencia 1, aunque las imágenes de referencia para la predicción pueden tienen alguna relación de orden de decodificación o salida entre sí o con la imagen actual. En algunas realizaciones, las imágenes de referencia que son anteriores a una imagen actual en reproducción u orden de salida se colocan en la lista 0 según el orden decreciente, y las imágenes de referencia que son posteriores a la imagen actual se colocan en la lista 1 según el orden creciente. Las imágenes de referencia se pueden clasificar según la distancia entre la imagen de referencia y la imagen actual.
Dado que el vídeo multivista proporciona a los códecs la posibilidad de utilizar redundancia de entrevista, las tramas de entrevista decodificadas también pueden incluirse en la memoria intermedia de imágenes de referencia. Predicción ponderada. Muchos estándares de codificación utilizan un peso de predicción de 1 para bloques de predicción de interimágenes (P) y de 0,5 para cada bloque de predicción de una imagen B (lo que da como resultado un promedio). H.264/AVC permite la predicción ponderada para los cortes P y B. En la predicción ponderada implícita, los pesos son proporcionales a los recuentos del orden de las imágenes, mientras que en la predicción ponderada explícita, los pesos de predicción se indican explícitamente.
En muchos códecs de video, el residuo de predicción después de la compensación de movimiento se transforma primero con un núcleo de transformación (como DCT) y luego se codifica. El motivo es que a menudo todavía existe alguna correlación entre el residuo y la transformación que en muchos casos puede ayudar a reducir esta correlación y proporcionar una codificación más eficiente.
En un borrador de HEVC, cada PU tiene información de predicción asociada que define qué tipo de predicción se va a aplicar para los píxeles dentro de esa PU (por ejemplo, información de vector de movimiento para PU interpredichas e información de direccionalidad intrapredichas para PU intrapredichas). De manera similar, cada TU está asociada con información que describe el proceso de decodificación del error de predicción para las muestras dentro de dicha TU (incluyendo, por ejemplo, información del coeficiente de DCT). Por lo general, se indica en el nivel de CU si se aplica o no la codificación del error de predicción para cada CU. En el caso de que no exista un error de predicción residual asociado con la CU, se puede considerar que no existen TU para dicha Cu.
Muchos elementos de sintaxis en los estándares de codificación de video, como H.264/AVC y HEVC, están codificados por entropía en el codificador y decodificados por entropía en el decodificador. La codificación por entropía puede realizarse, por ejemplo, utilizando codificación aritmética binaria adaptativa al contexto (CABAC), codificación de longitud variable basada en el contexto, codificación de Huffman o cualquier codificación por entropía similar.
Muchos codificadores de vídeo utilizan la función de coste de Lagrange para encontrar modos de codificación óptimos de distorsión de velocidad, por ejemplo, el modo de macrobloque deseado y los vectores de movimiento asociados. Este tipo de función de costo utiliza un factor de ponderación o □ para unir la distorsión de imagen exacta o estimada debido a métodos de codificación con pérdida y la cantidad exacta o estimada de información requerida para representar los valores de píxeles/muestra en un área de imagen. La función de coste de Lagrange se puede representar mediante la ecuación:
C=D+XR
donde C es el coste de Lagrange a minimizar, D es la distorsión de la imagen (por ejemplo, el error cuadrático de la media entre los valores de píxel/muestra en el bloque de imagen original y en el bloque de imagen codificada) con el modo y los vectores de movimiento considerados actualmente, □ es un coeficiente de Lagrange y R es el número de bits necesarios para representar los datos necesarios para reconstruir el bloque de imagen en el decodificador (incluida la cantidad de datos para representar los vectores de movimiento candidatos).
En algunos formatos de codificación y códecs, se hace una distinción entre las llamadas imágenes de referencia a corto y largo plazo. Esta distinción puede afectar a algunos procesos de decodificación, como el escalado del vector de movimiento en el modo temporal directo o la predicción ponderada implícita. Si las dos imágenes de referencia utilizadas para el modo temporal directo son imágenes de referencia a corto plazo, el vector de movimiento utilizado en la predicción se puede escalar de acuerdo con la diferencia de POC entre la imagen actual y cada una de las imágenes de referencia. Sin embargo, si al menos una imagen de referencia para el modo temporal directo es una imagen de referencia a largo plazo, se usa la escala predeterminada del vector de movimiento, por ejemplo, se puede usar la escala del movimiento a la mitad. De manera similar, si se usa una imagen de referencia a corto plazo para la predicción ponderada implícita, la ponderación de la predicción se puede escalar de acuerdo con la diferencia de POC entre el POC de la imagen actual y el POC de la imagen de referencia. Sin embargo, si se utiliza una imagen de referencia a largo plazo para la predicción ponderada implícita, se puede utilizar una ponderación de predicción por defecto, como 0,5 en la predicción ponderada implícita para bloques de bipredicción.
Algunos formatos de codificación de video, como H.264/AVC, incluyen el elemento de sintaxis frame_num, que se utiliza para varios procesos de decodificación relacionados con múltiples imágenes de referencia. En H.264/AVC, el valor del número de trama para imágenes de IDR es 0. El valor de frame _num para imágenes que no son IDR es igual al número de trama de la imagen de referencia anterior en el orden de decodificación incrementado en 1 (en módulo aritmético, es decir, el valor de frame _num pasa a 0 después de un valor máximo del número de trama).
H.264/AVC y HEVC incluyen un concepto de recuento de orden de imágenes (POC). Se deriva un valor de POC para cada imagen y no disminuye al aumentar la posición de la imagen en el orden de salida. Por tanto, el POC indica el orden de salida de las imágenes. El POC puede usarse en el proceso de decodificación, por ejemplo, para el escalado implícito de vectores de movimiento en el modo temporal directo de cortes bipredictivos, para pesos derivados implícitamente en la predicción ponderada y para la inicialización de la lista de imágenes de referencia. Además, el p Oc se puede utilizar en la verificación de la conformidad del orden de salida. En H.264/AVC, el POC se especifica en relación con la imagen de IDR anterior o una imagen que contiene una operación de control de gestión de memoria que marca todas las imágenes como "no utilizadas para referencia".
H.264/AVC especifica el proceso para el marcado de la imagen de referencia decodificada para controlar el consumo de memoria en el decodificador. El número máximo de imágenes de referencia utilizadas para la interpredicción, denominado M, se determina en el conjunto de parámetros de secuencia. Cuando se decodifica una imagen de referencia, se marca como "utilizada como referencia". Si la decodificación de la imagen de referencia provocó más que imágenes M marcadas como "utilizadas para referencia", al menos una imagen se marcará como "no utilizada para referencia". Existen dos tipos de operación para el marcado de imágenes de referencia decodificadas: control de memoria adaptativa y ventana deslizante. El modo de funcionamiento para el marcado de imágenes de referencia decodificadas se selecciona en base a las imágenes. El control de memoria adaptativa permite señalizar explícitamente qué imágenes están marcadas como "no utilizadas para referencia" y también puede asignar índices a largo plazo a imágenes de referencia a corto plazo. El control de memoria adaptativa requiere la presencia de parámetros de operación de control de gestión de memoria (MMCO) en el flujo de bits. Si el modo de operación de la ventana deslizante está en uso y hay imágenes M marcadas como "utilizadas para referencia", la imagen de referencia a corto plazo que fue la primera imagen decodificada entre aquellas imágenes de referencia a corto plazo que están marcadas como "utilizadas para referencia" está marcada como "no utilizada para referencia". En otras palabras, el modo de operación de la ventana deslizante da como resultado una operación de almacenamiento en búfer del tipo «primero en entrar, primero en salir» entre imágenes de referencia a corto plazo.
Una de las operaciones de control de gestión de la memoria en H.264/AVC hace que todas las imágenes de referencia, excepto la imagen actual, se marquen como "no utilizadas para referencia". Una imagen de actualización de decodificación instantánea (IDR) contiene solo cortes intracodificados y provoca una "actualización" similar de imágenes de referencia.
En un borrador del estándar de HEVC, las estructuras de sintaxis de marcado de imágenes de referencia y los procesos de decodificación relacionados no se utilizan, sino que se utilizan una estructura de sintaxis del conjunto de imágenes de referencia (RPS) y un proceso de decodificación para un propósito similar. Un conjunto de imágenes de referencia válido o activo para una imagen incluye todas las imágenes de referencia utilizadas como referencia para la imagen y todas las imágenes de referencia que se mantienen marcadas como "utilizadas para referencia" para cualquier imagen posterior en el orden de decodificación. Existen seis subconjuntos del conjunto de imágenes de referencia, que se denominan RefPicSetStCurr0, RefPicSetStCurr1, RefPicSetStFoll0, RefPicSetStFoll1, RefPicSetLtCurr y RefPicSetLtFoll. La notación de los seis subconjuntos es la siguiente. "Curr" se refiere a las imágenes de referencia que están incluidas en las listas de imágenes de referencia de la imagen actual y, por lo tanto,
pueden usarse como referencia de interpredicción para la imagen actual. "Foil" se refiere a imágenes de referencia que no están incluidas en las listas de imágenes de referencia de la imagen actual, pero que pueden usarse en imágenes posteriores en orden de decodificación como imágenes de referencia. "St" se refiere a imágenes de referencia a corto plazo, que generalmente se pueden identificar mediante un cierto número de bits menos significativos de su valor de POC. "Lt" se refiere a imágenes de referencia a largo plazo, que se identifican específicamente y por lo general tienen una mayor diferencia de valores de POC con respecto a la imagen actual que lo que puede representarse mediante el determinado número mencionado de bits menos significativos. "0" se refiere a aquellas imágenes de referencia que tienen un valor de POC menor que el de la imagen actual. "1" se refiere a aquellas imágenes de referencia que tienen un valor de POC mayor que el de la imagen actual. RefPicSetStCurr0, RefPicSetStCurr1, RefPicSetStFollO y RefPicSetStFoll1 se denominan colectivamente el subconjunto a corto plazo del conjunto de imágenes de referencia. RefPicSetLtCurr y RefPicSetLtFoll se denominan colectivamente el subconjunto a largo plazo del conjunto de imágenes de referencia.
En HEVC, un conjunto de imágenes de referencia puede especificarse en un conjunto de parámetros de secuencia y ponerse en uso en el encabezado del corte a través de un índice del conjunto de imágenes de referencia. También se puede especificar un conjunto de imágenes de referencia en un encabezado de corte. Un subconjunto a largo plazo de un conjunto de imágenes de referencia generalmente se especifica solo en un encabezado de corte, mientras que los subconjuntos a corto plazo del mismo conjunto de imágenes de referencia se pueden especificar en el conjunto de parámetros de imagen o encabezado de corte. Un conjunto de imágenes de referencia puede codificarse de forma independiente o puede predecirse a partir de otro conjunto de imágenes de referencia (conocido como interpredicción de RPS). Cuando un conjunto de imágenes de referencia se codifica de forma independiente, la estructura de sintaxis incluye hasta tres bucles que iteran sobre diferentes tipos de imágenes de referencia; imágenes de referencia a corto plazo con un valor de POC más bajo que la imagen actual, imágenes de referencia a corto plazo con un valor de POC más alto que la imagen actual e imágenes de referencia a largo plazo. Cada entrada de bucle especifica una imagen que se marcará como "utilizada para referencia". En general, la imagen se especifica con un valor de POC diferencial. La interpredicción de RPS aprovecha que el conjunto de imágenes de referencia de la imagen actual puede predecirse a partir del conjunto de imágenes de referencia de una imagen previamente decodificada. Esto se debe a que todas las imágenes de referencia de la imagen actual son imágenes de referencia de la imagen anterior o la propia imagen decodificada previamente. Solo es necesario indicar cuáles de estas imágenes deben ser imágenes de referencia y usarse para la predicción de la imagen actual. En ambos tipos de codificación de conjuntos de imágenes de referencia, se envía además un indicador (used_by_curr_pic_X_flag) para cada imagen de referencia que indica si la imagen de referencia se usa para referencia en la imagen actual (incluida en una lista *Curr) o no (incluida en una lista *Foll). Las imágenes que se incluyen en el conjunto de imágenes de referencia utilizadas por el corte actual se marcan como "utilizadas para referencia" y las imágenes que no están en el conjunto de imágenes de referencia utilizadas por el corte actual se marcan como "no utilizadas para referencia". Si la imagen actual es una imagen de IDR, RefPicSetStCurr0, RefPicSetStCurr1, RefPicSetStFoll0, RefPicSetStFoll1, RefPicSetLtCurr y RefPicSetLtFoll están todos configurados como vacíos.
Se puede utilizar memoria intermedia de imagen decodificada (DPB) en el codificador y/o en el decodificador. Existen dos razones para almacenar en la memoria intermedia imágenes decodificadas, para referencias en interpredicción y para reordenar imágenes decodificadas en orden de salida. Dado que H.264/AVC y HEVC proporcionan una gran flexibilidad tanto para el marcado de la imagen de referencia como para el reordenamiento de salida, los búferes separados para el almacenamiento de la imagen de referencia y el almacenamiento de la imagen de salida pueden desperdiciar recursos de memoria. Por lo tanto, la DPB puede incluir un proceso unificado de almacenamiento de imágenes decodificadas para imágenes de referencia y reordenamiento de salida. Una imagen decodificada puede eliminarse de la DPB cuando ya no se utilice como referencia y sea necesaria para la salida.
En muchos modos de codificación de H.264/AVC y HEVC, la imagen de referencia para la interpredicción se indica con un índice a una lista de imágenes de referencia. El índice se puede codificar con una codificación de longitud variable, lo que generalmente hace que un índice más pequeño tenga un valor más corto para el elemento de sintaxis correspondiente. En H.264/AVC y HEVC, se generan dos listas de imágenes de referencia (lista de imágenes de referencia 0 y lista de imágenes de referencia 1) para cada corte bipredictivo (B), y se forma una lista de imágenes de referencia (lista de imágenes de referencia 0) para cada corte intercodificado (P). Además, para un corte B en HEVC, se construye una lista combinada (Lista C), también denominada lista de fusión, después de que se hayan construido las listas de imágenes de referencia finales (Lista 0 y Lista 1). La lista combinada se puede utilizar para la unipredicción (también conocida como predicción unidireccional) dentro de los cortes B.
Una lista de imágenes de referencia, como la lista de imágenes de referencia 0 y la lista de imágenes de referencia 1, se construye normalmente en dos pasos: Primero, se genera una lista de imágenes de referencia inicial. La lista de imágenes de referencia inicial puede generarse, por ejemplo, sobre la base de frame_num, POC, temporaljd, o información sobre la jerarquía de predicción tal como la estructura de GOP, o cualquier combinación de los mismos. En segundo lugar, la lista de imágenes de referencia inicial puede reordenarse mediante comandos de reordenamiento de la lista de imágenes de referencia (RPLR), también conocidos como estructura de sintaxis de modificación de la lista de imágenes de referencia, que pueden estar contenidos en encabezados de corte. Los comandos de RPLR indican las imágenes que están ordenadas al comienzo de la respectiva lista de imágenes de referencia. Este segundo
paso también puede denominarse proceso de modificación de la lista de imágenes de referencia, y los comandos de RPLR pueden incluirse en una estructura de sintaxis de modificación de la lista de imágenes de referencia. Si se utilizan conjuntos de imágenes de referencia, la lista de imágenes de referencia 0 puede inicializarse para contener RefPicSetStCurr0 primero, seguido de RefPicSetStCurr1, seguido de RefPicSetLtCurr. La lista de imágenes de referencia 1 puede inicializarse para contener RefPicSetStCurr1 primero, seguido de RefPicSetStCurr0. Las listas de imágenes de referencia iniciales pueden modificarse mediante la estructura de sintaxis de modificación de la lista de imágenes de referencia, donde las imágenes de las listas de imágenes de referencia iniciales pueden identificarse mediante un índice de entrada a la lista.
Dado que el vídeo de multivista proporciona a los codificadores y decodificadores la posibilidad de utilizar redundancia intervista, las tramas de intervista decodificadas también pueden incluirse en la lista o listas de imágenes de referencia.
La lista combinada en HEVC se puede construir de la siguiente manera. Si el indicador de modificación de la lista combinada es cero, la lista combinada se construye mediante un mecanismo implícito; de lo contrario, se construye mediante comandos de combinación de imágenes de referencia incluidos en el flujo de bits. En el mecanismo implícito, las imágenes de referencia de la Lista C se mapean con las imágenes de referencia de la Lista 0 y la Lista 1 de forma intercalada comenzando por la primera entrada de la Lista 0, seguida de la primera entrada de la Lista 1 y así sucesivamente. Cualquier imagen de referencia que ya se haya mapeado en la Lista C no se mapea de nuevo. En el mecanismo explícito, se señala el número de entradas en la Lista C, seguido del mapeo de una entrada en la Lista 0 o Lista 1 a cada entrada de la Lista C. Además, cuando la Lista 0 y la Lista 1 son idénticas, el codificador tiene la opción de establecer ref_pic_list_combination_flag en 0 para indicar que no se mapea ninguna imagen de referencia de la Lista 1, y que la Lista C es equivalente a la Lista 0.
Los códecs de video típicos de alta eficiencia, como un borrador de un códec HEVC, emplean un mecanismo de codificación/decodificación de información de movimiento adicional, a menudo llamado modo/proceso/mecanismo de mezcla/fusión, donde toda la información de movimiento de un bloque/PU se predice y usa sin ninguna modificación/corrección. La información de movimiento antes mencionada para una PU comprende 1) La información de si 'la PU se predice unidireccionalmente usando solo la listaO de imágenes de referencia' o 'la PU se predice unidireccionalmente usando solo la lista1 de imágenes de referencia' o 'la PU se predice bidireccionalmente usando tanto la listaO y la listal de la imagen de referencia' 2) Valor del vector de movimiento correspondiente a la lista0 de imágenes de referencia 3) Índice de imágenes de referencia en la lista0 de imágenes de referencia 4) Valor del vector de movimiento correspondiente a la lista1 de imágenes de referencia 5) Índice de imágenes de referencia en la lista1 de imágenes de referencia. De manera similar, la predicción de la información de movimiento se lleva a cabo utilizando la información de movimiento de bloques adyacentes y/o bloques coubicados en imágenes de referencia temporal. Por lo general, una lista, a menudo denominada lista de fusión, se construye al incluir candidatos de predicción de movimiento asociados con bloques adyacentes/coubicados disponibles y se señala el índice del candidato de predicción de movimiento seleccionado en la lista. Luego, la información de movimiento del candidato seleccionado se copia a la información de movimiento de la PU actual. Cuando se emplea el mecanismo de fusión para una CU completa y la señal de predicción para la CU se usa como señal de reconstrucción, es decir, el residuo de predicción no se procesa, este tipo de codificación/decodificación de la CU se denomina normalmente modo de omisión o modo de omisión basado en la fusión. Además del modo de omisión, el mecanismo de fusión también se emplea para PU individuales (no necesariamente la CU completa como en el modo de omisión) y, en ese caso, el residuo de predicción puede utilizarse para mejorar la calidad de la predicción. Este tipo de modo de predicción se suele denominar modo de interfusión.
Puede existir una estructura de sintaxis para el marcado de imágenes de referencia en un sistema de codificación de vídeo. Por ejemplo, cuando se haya completado la decodificación de la imagen, la estructura de sintaxis de marcado de imagen de referencia decodificada, si está presente, puede usarse para marcar de forma adaptativa imágenes como "no utilizadas para referencia" o "utilizadas para referencia a largo plazo". Si la estructura de sintaxis de marcado de imagen de referencia decodificada no está presente y el número de imágenes marcadas como "utilizadas para referencia" ya no puede aumentar, se puede usar un marcado de imagen de referencia de ventana deslizante, que básicamente marca la imagen referencia decodificada más temprana (en orden de decodificación) como no utilizada para referencia.
La predicción del vector de movimiento (MV) que se especifica en H.264/AVC y su extensión MVC utiliza la correlación que puede estar presente en bloques vecinos de la misma imagen (correlación espacial) o en la imagen previamente codificada (correlación temporal). La figura 7a muestra la vecindad espacial del bloque codificado actualmente (cb) y la figura 7b muestra la vecindad temporal del bloque codificado actualmente que sirve como candidato para una predicción de vector de movimiento en H.264/AVC.
Los vectores de movimiento del bloque actual cb pueden estimarse a través del proceso de estimación de movimiento y compensación de movimiento y pueden codificarse con modulación de código de pulso diferencial (DPCM) y transmitirse en forma de residuo entre la predicción del vector de movimiento (MVp) y el vector de movimiento real MV como MVd(x, y) = MV(x, y) -MVp(x, y).
Se puede calcular un valor de la media de los vectores de movimiento de las particiones o subparticiones del macrobloque inmediatamente arriba (bloque B), diagonalmente arriba y hacia la derecha (bloque C) e inmediatamente a la izquierda (bloque A) de la partición o subpartición actual.
En algunas realizaciones, la estimación de MVp de predicción del vector de movimiento puede especificarse de la siguiente manera:
Cuando solo uno de los bloques espaciales vecinos (A, B, C) tiene un índice de referencia idéntico al del bloque actual, entonces
MVp = mvLXN (1)
Cuando más de uno o ningún bloque vecino (A, B, C) tienen un índice de referencia idéntico al del bloque actual, entonces
MVp =median{mvLXA,mvLXB,mvLXC}, (2)
donde mvLXA, mvLXB, mvLXC son vectores de movimiento (sin id de trama de referencia) de los bloques espacialmente vecinos.
En algunas situaciones, se puede utilizar un modo P_SKIP o un modo B_SKIP. En el modo P_SKIP, un índice de trama de referencia del bloque actual es siempre 0 y la lista que se utiliza es la primera lista 0 (refldxLO = 0). Los vectores de movimiento se estiman utilizando solo los bloques inmediatamente a la izquierda (bloque A) e inmediatamente arriba (bloque B) del bloque actual. Si el bloque inmediatamente a la izquierda e inmediatamente arriba no existen, se selecciona una predicción de vector de movimiento MVp de valor cero. Dado que no MV=MVp en el modo P_SKIP, no se transmite ninguna diferencia de vector de movimiento dMV.
En el modo B_SKIP se pueden utilizar dos procesos de estimación de predicción de vector de movimiento: un modo directo espacial en el que la predicción de vector de movimiento se calcula a partir de bloques espaciales vecinos como se ilustra en la figura 7a; o un modo temporal directo en el que la predicción del vector de movimiento se calcula a partir de bloques vecinos temporales como se ilustra en la figura 7b.
El proceso de predicción del vector de movimiento incluye la estimación de los siguientes valores:
a. índices de referencia refldxL0, refldxLl
b. vectores de movimiento mvL0 y mvL1.
En el modo directo espacial, el proceso de predicción del índice de referencia y la predicción del vector de movimiento se ejecuta independientemente para ambas listas de imágenes de referencia (Lista 0 de imágenes de referencia, Lista 1 de imágenes de referencia). El índice de referencia positivo mínimo se selecciona en cada una de las listas y se aplica un proceso de predicción de vector de movimiento para cada lista de imágenes de referencia para producir mvpL0 y mvpL1.
Cada componente de la predicción del vector de movimiento mvpLX se otorga por la mediana de los componentes vectoriales correspondientes del vector de movimiento mvLXA, mvLXB y mvLXC:
mvpLX[ 0 ] = Median( mvLXA[ 0 ], mvLXB[ 0 ], mvLXC[ 0 ] )
mvpLX[ 1 ] = Median( mvLXA[ 1 ], mvLXB[ 1 ], mvLXC[ 1 ] ).
En el modo temporal directo, los vectores de movimiento del bloque actual a la lista 0 y la lista 1 pueden calcularse mediante la interpolación temporal de los vectores de movimiento de los bloques vecinos (en dirección temporal). La distancia del recuento de orden de imágenes (POC) desde la trama actual a la trama de referencia puede utilizarse como factor de interpolación.
MVO = MVc *(TDb/TDd)
MV1 = MVc * (TDb-TDD)/TDd,
donde TDb es la distancia de recuento de orden de la imagen entre la trama actual y la trama de referencia en la lista0; TDd es la distancia de recuento de orden de las imágenes entre la trama de referencia en la lista0 y lista1; y MVc es el vector de movimiento del bloque coubicado de la lista0 de imágenes de referencia.
A continuación, para comprender mejor las realizaciones de la invención, se describen brevemente algunos aspectos de las aplicaciones de multivista tridimensionales (3D) y los conceptos de información de profundidad y disparidad estrechamente relacionados con las mismas.
El contenido de video estereoscópico consta de pares de imágenes desplazadas que se muestran por separado al ojo izquierdo y derecho del espectador. Estas imágenes desplazadas se capturan con una configuración de cámara estereoscópica específica y asume una distancia de línea de base estéreo particular entre cámaras.
La figura 1 muestra un modelo 2D simplificado de dicha configuración de cámara estereoscópica; En la figura 1, C1 y C2 se refieren a las cámaras de la configuración de la cámara estereoscópica, más particularmente a las ubicaciones centrales de las cámaras, b es la distancia entre los centros de las dos cámaras (es decir, la línea de base estéreo), f es la distancia focal de las cámaras y X es un objeto en la escena 3D real que se está capturando. El objeto X del mundo real se proyecta a diferentes ubicaciones en imágenes capturadas por las cámaras C1 y C2, estas ubicaciones son x1 y x2 respectivamente. La distancia horizontal entre x1 y x2 en coordenadas absolutas de la imagen se llama disparidad. Las imágenes capturadas por la configuración de la cámara se denominan imágenes estereoscópicas y la disparidad que se presenta en estas imágenes crea o mejora la ilusión de profundidad. Para permitir que las imágenes se muestren por separado al ojo izquierdo y derecho del espectador, es posible que el espectador deba utilizar gafas 3D específicas. La adaptación de la disparidad es una característica clave para ajustar el contenido de video estereoscópico para que se pueda ver cómodamente en varias pantallas.
Sin embargo, la adaptación de la disparidad no es un proceso sencillo. Requiere tener vistas de cámara adicionales con diferentes distancias de línea de base (es decir, b es variable) o renderizar vistas de cámaras virtuales que no estaban disponibles en el mundo real. La figura 2 muestra un modelo simplificado de dicha configuración de cámara multivista que se adapta a esta solución. Esta configuración puede proporcionar contenido de video estereoscópico capturado con varios valores discretos para la línea de base estereoscópica y, por lo tanto, permite que la visualización estereoscópica seleccione un par de cámaras que se adapte a las condiciones de visualización.
Un enfoque más avanzado para la visión 3D es tener una pantalla autoestereoscópica multivista (ASD) 300 que no requiere gafas. La ASD emite más de una vista a la vez, pero la emisión está localizada en el espacio de tal manera que un espectador ve solo un par estéreo desde un punto de vista específico, como se ilustra en la figura 3, en donde la casa se ve en el medio de la vista cuando se mira en el punto de vista más a la derecha. Además, el espectador puede ver otro par estéreo desde un punto de vista diferente, por ejemplo, en la figura 3, la casa se ve en el borde derecho de la vista cuando se mira en el punto de vista más a la izquierda. Por lo tanto, se admite la visualización de paralaje de movimiento si las vistas consecutivas son pares estéreo y están organizadas correctamente. Las tecnologías de ASD pueden ser capaces de mostrar, por ejemplo, 52 o más imágenes diferentes al mismo tiempo, de las cuales solo un par estéreo es visible desde un punto de vista específico. Esto es compatible con la visión 3D multiusuario sin gafas, por ejemplo, en el entorno de una sala de estar.
Las aplicaciones estereoscópicas y ASD descritas anteriormente requieren que el video multivista esté disponible en la pantalla. La extensión de MVC del estándar de codificación de video H.264/AVC permite la funcionalidad de multivista en el lado del decodificador. La vista base de los flujos de bits de MVC se puede decodificar con cualquier decodificador H.264/AVC, lo que facilita la introducción de contenido estereoscópico y de multivista en los servicios existentes. MVC permite la predicción intervista, lo que puede resultar en un ahorro de velocidad de bits significativo en comparación con la codificación independiente de todas las vistas, dependiendo de qué tan correlacionadas estén las vistas adyacentes. Sin embargo, la velocidad de bits del video codificado de MVC suele ser proporcional al número de vistas. Teniendo en cuenta que ASD puede requerir 52 vistas, por ejemplo, como entrada, la velocidad de bits total para tal número de vistas desafiará las limitaciones del ancho de banda disponible.
En consecuencia, se ha descubierto que una solución más factible para tal aplicación de multivista es tener un número limitado de vistas de entrada, por ejemplo, una vista mono o estéreo más algunos datos suplementarios, y para renderizar (es decir, sintetizar) todas las vistas requeridas localmente en el lado del decodificador. A partir de varias tecnologías disponibles para el renderizado de vistas, el renderizado basado en imágenes en profundidad (DIBR) ha demostrado ser una alternativa competitiva.
En la figura 4 se muestra un modelo simplificado de un sistema 3DV basado en DIBR. La entrada de un códec de vídeo 3D comprende un vídeo estereoscópico y la información de profundidad correspondiente con la línea de base estereoscópica b0. Luego, el códec de video 3D sintetiza un número de vistas virtuales entre dos vistas de entrada con línea de base (bi < b0). Los algoritmos de DIBR también pueden permitir la extrapolación de vistas que están fuera de las dos vistas de entrada y no entre las mismas. De manera similar, los algoritmos de DIBR pueden permitir la síntesis de vistas desde una vista única de la textura y la vista de profundidad respectiva. Sin embargo, para habilitar el renderizado multivista basado en DIBR, los datos de textura deben estar disponibles en el lado del decodificador junto con los datos de profundidad correspondientes.
En tal sistema 3DV, la información de profundidad se produce en el lado del codificador en forma de imágenes de profundidad (también conocidas como mapas de profundidad) para cada trama de video. Un mapa de profundidad es
una imagen con información de profundidad por píxel. Cada muestra en un mapa de profundidad representa la distancia de la muestra de textura respectiva desde el plano en el que se encuentra la cámara. En otras palabras, si el eje z está a lo largo del eje de disparo de las cámaras (y por lo tanto es ortogonal al plano en el que se encuentran las cámaras), una muestra en un mapa de profundidad representa el valor en el eje z.
La información de profundidad se puede obtener por varios medios. Por ejemplo, la profundidad de la escena 3D puede calcularse a partir de la disparidad registrada por las cámaras de captura. Un algoritmo de estimación de profundidad toma una vista estereoscópica como entrada y calcula las disparidades locales entre las dos imágenes desplazadas de la vista. Cada imagen se procesa píxel a píxel en bloques superpuestos, y para cada bloque de píxeles se realiza una búsqueda localizada horizontalmente de un bloque coincidente en la imagen desplazada. Una vez que se calcula una disparidad de píxeles, el valor z de profundidad correspondiente se calcula mediante la ecuación (3):
donde f es la distancia focal de la cámara y b es la distancia de línea de base entre cámaras, como se muestra en la figura 1. Además, d se refiere a la disparidad observada entre las dos cámaras, y el desplazamiento de la cámara Ad refleja una posible desviación horizontal de los centros ópticos de las dos cámaras.
Alternativamente, o además de la estimación de profundidad de vista estéreo descrita anteriormente, el valor de profundidad se puede obtener usando el principio de tiempo de vuelo (TOF), por ejemplo, usando una cámara que está provista de una fuente de luz, por ejemplo un emisor de infrarrojos, para iluminar la escena. Un iluminador de este tipo puede disponerse para producir una emisión electromagnética de intensidad modulada para una frecuencia entre, por ejemplo, 10-100 MHz, lo que puede requerir el uso de LED o diodos láser. La luz infrarroja se usa normalmente para hacer que la iluminación sea discreta. La luz reflejada por los objetos en la escena es detectada por un sensor de imagen, que se modula sincrónicamente con la misma frecuencia que el iluminador. El sensor de imagen se proporciona con óptica; una lente que recoge la luz reflejada y un filtro óptico de paso de banda para pasar solo la luz con la misma longitud de onda que el iluminador, lo que ayuda a suprimir la luz de fondo. El sensor de imagen mide para cada píxel el tiempo que ha tardado la luz en viajar desde el iluminador hasta el objeto y viceversa. La distancia al objeto se representa como un cambio de fase en la modulación de la iluminación, que se puede determinar a partir de los datos muestreados simultáneamente para cada píxel de la escena.
En el caso de la codificación de multivista mejorada en profundidad, la síntesis de vista se puede utilizar en un bucle de codificación del codificador y en el bucle de decodificación del decodificador, proporcionando así una predicción de síntesis de vista (VSP). Una imagen de síntesis de vista (un componente de referencia) puede sintetizarse a partir de vistas de textura codificadas y vistas de profundidad y puede contener muestras que pueden usarse para la predicción de síntesis de vista. Para permitir la predicción de síntesis de vista para la codificación de la vista actual, los componentes de la vista en profundidad y textura previamente codificados de la misma unidad de acceso pueden usarse para la síntesis de vista. Dicha síntesis de vista que utiliza la textura codificada previamente y los componentes de vista en profundidad de la misma unidad de acceso puede denominarse síntesis de vista hacia adelante o síntesis de vista proyectada hacia adelante, y de manera similar, la predicción de síntesis de vista que usa dicha síntesis de vista puede denominarse predicción de síntesis de vista hacia delante o predicción de síntesis de vista proyectada hacia adelante.
Una imagen de síntesis de vista también puede denominarse componente de referencia sintética, que puede definirse para contener muestras que pueden usarse para la predicción de síntesis de vista. Se puede usar un componente de referencia sintético como imagen de referencia para la predicción de síntesis de vista, pero normalmente no se emite ni se muestra. Una imagen de síntesis de vista se genera normalmente para la misma ubicación de cámara asumiendo los mismos parámetros de cámara que para la imagen que se codifica o decodifica. En la figura 8 se muestra un ejemplo del bucle de codificación.
Una realización del algoritmo de síntesis de vista de la predicción de síntesis de vista puede usar el mapa de profundidad (d) para conversión de disparidad (D) con los siguientes píxeles de mapeo de la imagen de origen s(x,y) en una nueva ubicación de píxel en la imagen de destino sintetizada t(x+D,y).
En el caso de la proyección de una imagen de textura, s(x,y) es una muestra de una imagen de textura, y d(s(x,y)) es el valor de mapeo de profundidad asociado con s(x,y). Si una trama de referencia utilizada para la síntesis utiliza un muestreo 4:2:0 (es decir, las imágenes del componente cromático tienen una resolución espacial de la mitad de la imagen del componente luma a lo largo de ambos ejes de coordenadas), los componentes cromáticos se pueden muestrear de manera ascendente a 4:4:4 repitiendo el valor de muestra:
donde s’chroma(•, ) es el valor de muestra de croma en resolución completa, y schrom a(,) es el valor de muestra de croma en resolución media.
En el caso de la proyección de los valores del mapa de profundidad, s(x,y)=d(x,y) y esta muestra se proyecta utilizando su propio valor d(s(x,y)) = d(x,y).
La predicción de síntesis de vista puede incluir deformaciones en la precisión de subpíxeles, para lo cual se puede realizar un muestreo ascendente en la trama de referencia antes de deformar y la trama sintetizada se puede muestrear de nuevo de manera descendente hasta la resolución original.
El proceso de síntesis de la vista puede constar de dos pasos conceptuales: deformación hacia adelante y relleno de agujeros. En la deformación hacia adelante, cada píxel de la imagen de referencia se mapea con una imagen sintetizada, por ejemplo, utilizando la ecuación anterior. Cuando se mapean múltiples píxeles de la trama de referencia a la misma ubicación de muestra en la vista sintetizada, el píxel asociado con un valor de profundidad mayor (más cercano a la cámara) puede seleccionarse para representar esa ubicación de muestra. Después de deformar todos los píxeles, es posible que queden algunos píxeles de agujero sin valores de muestra mapeados desde la trama de referencia, y estos píxeles de agujero pueden rellenarse, por ejemplo, con un relleno de agujero direccional basado en líneas, en el que un "agujero" se define como píxeles de agujeros consecutivos en una línea horizontal entre dos píxeles que no son de agujeros. Los píxeles de agujero en un agujero pueden rellenarse con uno de los dos píxeles adyacentes que no son agujeros, lo cual tiene un valor de muestra de profundidad menor (más lejos de la cámara).
La deformación y el llenado de agujeros se pueden realizar en un solo circuito de procesamiento, por ejemplo, de la siguiente manera. Cada fila de píxeles de la imagen de referencia de entrada se atraviesa, por ejemplo, de izquierda a derecha, y cada píxel de la imagen de referencia de entrada se procesa de la siguiente manera:
El píxel actual se mapea con la imagen de síntesis de destino según con la ecuación de mapeo/deformación de profundidad a disparidad anterior. Los píxeles alrededor de los límites de profundidad pueden usar salpicaduras, en donde un píxel se mapea con dos ubicaciones vecinas. Se puede realizar una detección de límites cada píxeles N en cada línea de la imagen de referencia. Un píxel puede considerarse un píxel de límite de profundidad si la diferencia entre el valor de muestra de profundidad del píxel y aquel de un vecino en la misma línea (que es píxel N a la derecha del píxel) excede un umbral (correspondiente a una diferencia de disparidad de píxeles M en la precisión de deformación de enteros con respecto a la imagen sintetizada). El píxel de límite de profundidad y los píxeles K vecinos a la derecha del píxel de límite de profundidad pueden utilizar salpicaduras. Más específicamente, N = 43UpRefs, M = 4, K = 163UpRefs-1, donde UpRefs es la relación de muestreo ascendente de la imagen de referencia antes de la deformación.
Cuando el píxel actual gana el almacenamiento en z, es decir, cuando el píxel actual se deforma a una ubicación sin un píxel deformado previamente o con un píxel deformado previamente que tiene un valor de muestra de profundidad menor, la iteración se define como efectiva y se pueden llevar a cabo los siguientes pasos. De lo contrario, la iteración es ineficaz y el procesamiento continúa desde el siguiente píxel en la imagen de referencia de entrada.
Si hay una brecha entre las ubicaciones mapeadas de esta iteración y la iteración efectiva anterior, se puede identificar un agujero.
Si se identificó un agujero y la ubicación mapeada actual está a la derecha de la anterior, el agujero se puede rellenar.
Si se identificó un agujero y la iteración actual mapeó el píxel a la izquierda de la ubicación mapeada de la iteración efectiva anterior, los píxeles consecutivos inmediatamente a la izquierda de esta ubicación mapeada pueden actualizarse si fueran agujeros.
Para generar una imagen sintetizada de vista a partir de una vista de referencia izquierda, la imagen de referencia se puede voltear primero y luego se puede usar el proceso anterior de deformación y relleno de agujeros para generar una imagen intermedia sintetizada. La imagen intermedia sintetizada se puede voltear para obtener la imagen sintetizada. Alternativamente, el proceso anterior puede modificarse para realizar un mapeo de profundidad a disparidad, salpicaduras con reconocimiento de límites y otros procesos para la predicción de síntesis de vistas básicamente con suposiciones inversas sobre direcciones y orden horizontales.
En otra realización de ejemplo, la predicción de síntesis de vista puede incluir lo siguiente. Las entradas de este proceso de ejemplo para derivar una imagen de síntesis de vista son un componente de luma decodificado del componente de vista de textura srcPicY, dos componentes de croma srcPicCb y srcPicCr con muestreo ascendente a la resolución de srcPicY, y una imagen de profundidad DisPic.
La salida de un proceso de ejemplo para derivar una imagen de síntesis de vista es una matriz de muestra de un componente de referencia sintético vspPic que se produce mediante deformación basada en disparidad, que se puede ilustrar con el siguiente pseudocódigo:
para (j = 0; j < PicHeigh; j++) {
para(i = 0; i < PicWidth; i++) {
dX = Disparity(DisPic(j,i));
outputPicY[i+dX, j] = srcTexturePicY[i, j];
si(chroma_format_idc = = 1) {
outputPicCb[i+dX, j] = normTexturePicCb[i, j]
outputPicCr[i+dX, j] = normTexturePicCr[i, j]
}}}
donde la función "DisparítyQ" convierte un valor de mapa de profundidad en una ubicación espacial i,j en un valor de disparidad dX, PicHeigh es la altura de la imagen, PicWidth es el ancho de la imagen, srcTexturePicY es la textura de la imagen de origen, outputPicY es el componente Y de la imagen de salida, outputPicCb es el componente Cb de la imagen de salida y outputPicCr es el componente Cr de la imagen de salida.
La disparidad se calcula teniendo en cuenta la configuración de la cámara, como el traslado entre dos vistas b, la distancia focal f de la cámara y los parámetros de representación del mapa de profundidad (Znear, Zfar) como se muestra a continuación.
La imagen vspPic resultante del proceso descrito anteriormente puede presentar varios artefactos de deformación, como orificios y/u oclusiones, y para suprimir esos artefactos, se pueden aplicar varias operaciones de posprocesamiento, como el llenado de orificios.
Sin embargo, estas operaciones pueden evitarse para reducir la complejidad computacional, ya que una imagen de síntesis de vista vspPic se utiliza como imágenes de referencia para la predicción y puede que no se envíe a una pantalla.
La imagen sintetizada {outputPicY, outputPicCb , outputPicCr} puede introducirse en la lista de imágenes de referencia de manera similar a como se hace con las imágenes de referencia intervista. La señalización y las operaciones con la lista de imágenes de referencia en el caso de la predicción de síntesis de vistas pueden seguir siendo idénticas o similares a las especificadas en H.264/AVC o HEVC.
De manera similar, los procesos de derivación de información de movimiento y sus aplicaciones en la predicción de síntesis de vista pueden seguir siendo idénticos o similares a los procesos especificados para la predicción inter e intervista de H.264/AVC o HEVC.
La introducción de la predicción de síntesis de vista en los procesos de codificación/decodificación de video 3D puede no afectar operaciones de bajo nivel como la señalización y decodificación de información de movimiento, por lo que cualquiera puede permitir preservar la compatibilidad de bajo nivel con el estándar de codificación existente H.264/AVC o HEVC.
Además o de manera alternativa, los modos de codificación específicos para la predicción de síntesis de vista pueden estar especificados y señalados por el codificador en el flujo de bits. Por ejemplo, en un modo de omisión/directo de VSP, también se pueden omitir la (de)codificación de diferencia de vector de movimiento y la (de)codificación del error de predicción residual, por ejemplo, con el uso de codificación basada en transformación. Por ejemplo, si se indica un macrobloque dentro del flujo de bits para codificar utilizando un modo de omisión/directo, se puede indicar además dentro del flujo de bits si se utiliza una trama de VSP como referencia.
El codificador según algunas realizaciones de ejemplo de la presente invención puede incluir una o más de las siguientes operaciones. Cabe señalar en la presente que también pueden aplicarse principios similares en el lado del decodificador para la decodificación.
La codificación/decodificación de un bloque Cb en una textura/video en la vista #N se realiza con el uso de datos de textura/video de referencia de la vista #¡ (donde i □ N), también conocida como Ti, que funciona como una imagen fuente de VSP y proporciona muestras de imágenes para el proceso de síntesis de vista.
A continuación, se resumen algunos aspectos característicos de algunas realizaciones. Disponibilidad de información de profundidad/disparidad d(Cb)
La codificación/decodificación de un bloque Cb en una vista #N de textura/video, puede realizarse con información de profundidad, información de mapa de profundidad, información de disparidad o cualquier otra información de rango d(Cb) que esté asociada con esa información de textura Cb y el rango información y está disponible antes de la codificación/decodificación del bloque de textura.
Área de referencia R(Cb) para VSP
En algunas realizaciones, la predicción de síntesis de vista para un bloque de textura Cb da como resultado la producción o el cálculo de valores de píxeles o muestras de referencia en un área de referencia R(Cb) en una imagen de VSP de referencia de la vista #M, donde M!=N. En algunas realizaciones, las muestras del área de referencia R(Cb) pueden ser el bloque de predicción para el bloque de textura Cb, mientras que en algunas otras realizaciones se pueden usar muestras del área de referencia R(Cb) para derivar muestras del bloque de predicción para el bloque de textura Cb, por ejemplo, mediante predicción compensada por movimiento y/o interpolación de valores de subpíxeles dentro del área de referencia R(Cb) o mediante un procesamiento conjunto de múltiples áreas de referencia R(Cb) obtenidas de diferentes vistas.
Proyección hacia atrás
En algunas realizaciones, el proceso de predicción de la síntesis de vista se realiza con un enfoque de proyección hacia atrás y puede utilizar los siguientes pasos:
La información de rango dN(Cb) asociada con el bloque codificado Cb en la vista #N se convierte en una información de disparidad Di(Cb) que especifica el desplazamiento de coordenadas espaciales entre las muestras de la vista actual #N y la vista de referencia #i.
La conversión a la información de disparidad Di(Cb) puede realizarse en un enfoque por píxeles, donde para cada muestra de la información de disparidad Di(Cb) de la vista actual #N la información de disparidad independiente Di(Cb) se calcula o estima. Alternativamente, la conversión a disparidad se puede realizar en bloques, de manera que se obtenga un valor de información de rango derivado dN(Cb'), por ejemplo, promediando los valores de información de rango dN(Cb), aplicando un filtro mediano a los valores de información de rango dN(Cb), o aplicando cualquier otra función o filtro sobre todas las muestras en los valores de información de rango dN(Cb). Entonces, el valor de información de rango derivado dN(Cb') se puede convertir al valor de disparidad respectivo Di(Cb') usando, por ejemplo, un mapeo de profundidad a disparidad. Alternativamente, la conversión a disparidad se puede realizar en bloques, de manera que la información de disparidad Di(Cb) se procese, por ejemplo, promediando los valores de la información de disparidad Di(Cb), aplicando un filtro mediano a los valores de la información de disparidad Di(Cb), o aplicando cualquier otra función o filtro sobre todas las muestras en la información de disparidad Di(Cb) para producir un valor de disparidad respectivo Di(Cb").
La información de disparidad Di(Cb) o respectivamente Di(Cb') o Di(Cb") se puede utilizar para ubicar valores de muestra en la textura de la vista #i de referencia y asociarlos con estas muestras de textura e información de rango di(Cb), por ejemplo, muestras de la imagen del mapa de profundidad en la vista #i de referencia. Si la información de disparidad Di(Cb) es un bloque de valores de disparidad, entonces los valores de muestra de la vista #i de referencia de textura pueden ubicarse en píxeles. Si la información de disparidad Di(Cb) representa un único valor de disparidad para un bloque de píxeles, entonces los valores de muestra de la vista #i de referencia de textura pueden ubicarse en bloques. Las muestras localizadas se pueden utilizar para formar R(Cb). La localización y/o copia también puede referirse a proyectar, mapear, filtrar o deformar.
La producción del área de referencia R(Cb) puede incluir varios procesamientos de píxeles de la vista #i de referencia (es decir, Ti), por ejemplo, filtrado espacial o temporal, filtrado usando parámetros de predicción ponderados para compensar cambios de luminancia, o procesamiento no lineal para manejar oclusiones o agujeros, u otros. Dicho procesamiento puede realizarse antes o después de proyectar los píxeles en el área de referencia R(Cb).
Una consecuencia de la proyección hacia atrás en la predicción de síntesis de vista es que el orden de derivación del área de referencia R(Cb) puede ser arbitrario. En otras palabras, los valores de píxel del área de referencia R(Cb) en
la imagen de VSP pueden producirse independientemente para cada bloque Cb, y no se supone ninguna dependencia del orden de Cb(s) procesados. Por lo tanto, se pueden producir valores de píxeles idénticos del área de referencia R(Cb) mediante un proceso de síntesis de vista para un solo Cb, o mediante un proceso de síntesis de vista completo a nivel de trama. Esta propiedad permite implementar la predicción de síntesis de vista hacia atrás como un nivel de trama o nivel de corte que puede no requerir cambios en la codificación/decodificación a nivel de bloque en comparación con los métodos de codificación existentes, como H.264/MVC. Sin embargo, la propiedad también puede habilitar la implementación a nivel de bloque, lo que puede consumir una cantidad menor de memoria.
A continuación, se resumen algunos aspectos característicos complementarios de algunas realizaciones. Uno o más de estos aspectos se pueden utilizar adicionalmente con los aspectos enumerados anteriormente.
Predicción de múltiples hipótesis basadas en bloques de más de una trama de referencia de VSP
La bipredicción o cualquier otro tipo de predicción de múltiples hipótesis pueden utilizar dos o más tramas de VSP de referencia como referencia. La bipredicción puede ponderarse, por ejemplo, para compensar las diferencias de iluminación entre vistas.
Derivación de R(Cb) basada en muestras a partir de múltiples imágenes fuente de VSP
Si hay múltiples imágenes de fuente de VSP disponibles para el cálculo del valor de muestra de R(Cb), se pueden aplicar varios procesamientos para producir una muestra de textura real para R(Cb). Este procesamiento puede incluir, entre otros, la selección condicional (por ejemplo, se puede seleccionar una muestra de textura con un valor de profundidad más cercano, o se puede seleccionar un valor de profundidad menor) o agregar múltiples candidatos en muestras.
Derivación de R(Cb) basada en profundidad/disparidad
Los valores de muestra correspondientes de di(Cb) y dN(Cb) se pueden comparar utilizando diferentes métricas de similitud o diferencia, como una suma de diferencias absolutas (SAD). Se puede derivar una métrica de diferencia para un bloque di(Cb) o muestras individuales de di(Cb). Si una diferencia pertenece a un cierto rango, las muestras de textura de la vista #i de referencia que están especificadas por la disparidad Di(Cb) pueden utilizarse para producir valores de muestra del área de referencia R(Cb).
A continuación, se describen algunas realizaciones con mayor detalle.
La figura 8 muestra un diagrama de flujo de una realización de ejemplo de una estimación de movimiento/cadena de predicción de movimiento compensado de codificación de textura con el uso de la predicción de síntesis de vista según algunas realizaciones de ejemplo. La predicción de síntesis de vista no produce necesariamente una trama de VSP completa, sino que solo puede producir un área de referencia R(Cb) a petición de la cadena de estimación de movimiento/predicción compensada por movimiento.
La figura 5 ilustra un ejemplo de video más datos de profundidad. En la figura 5, el bloque 152 ilustra el bloque Cb codificado actualmente de textura 150 y el bloque 156 está asociado con esta información de rango de textura d(Cb),por ejemplo, un mapa de profundidad 151. Los otros bloques 153, 154, 155 de la textura 150 representan el bloque S vecino en el lado izquierdo del bloque cb actual, el bloque T vecino en la esquina superior derecha del bloque cb actual y un bloque U no vecino en la textura 150. Los bloques 157, 158, 159 ilustran la información de rango d(S), d(T), d(U) de los bloques S, T, U de textura, respectivamente.
A continuación se asume que la multivista codificada más los datos de codificación de video en profundidad (MVD) contienen componentes de textura y mapa de profundidad que representan múltiples videos posiblemente capturados con una cámara paralela configurada y estas vistas capturadas son rectificadas.
Los términos Ti y di representan componentes de textura y mapa de profundidad de la vista #i, respectivamente. Los componentes de textura y mapa de profundidad de los datos de MVD pueden codificarse en un orden de codificación diferente, por ejemplo, T0d0T1d1 o d0d1 T0T1. En algunas realizaciones se supone que el componente di del mapa de profundidad está disponible (decodificado) antes que el componente Ti de textura y el componente di del mapa de profundidad se usen en la codificación/decodificación del componente Ti de textura.
A continuación, se ilustra con más detalle una primera realización, que se basa en una predicción de síntesis de vídeo hacia atrás basada en píxeles para el bloque Cb actual. Por ejemplo, pueden utilizarse los siguientes supuestos: el orden de codificación es T0d0d1T1, el componente T1 de textura codificado con la predicción de síntesis de vídeo y el bloque Cb1 codificado actualmente tiene una partición 16x16. El bloque Cb1 codificado actualmente está asociado con los datos del mapa de profundidad d(Cb1) y los datos del mapa de profundidad consisten en el bloque del mismo
tamaño 16x16. En algunas realizaciones, el vídeo de multivista más la codificación de profundidad se puede implementar con los siguientes pasos.
Conversión de profundidad a disparidad
El bloque de datos del mapa de profundidad d(Cb1) se convierte en un bloque D(Cb1) de muestras de disparidad. El proceso de conversión se puede realizar con las siguientes ecuaciones o con sus implementaciones aritméticas enteras:
donde d0 es un valor de mapa de profundidad de una vista #0, Z es el valor de profundidad real y D es una disparidad con respecto a una vista en particular.
Los parámetros f, b, Z_near y Z_far pueden derivar de la configuración de la cámara; es decir, la distancia focal utilizada (f), la separación de la cámara (b) entre la vista #0 y la vista #i y el rango de profundidad (Z_near,Z_far) representan parámetros de la conversión del mapa de profundidad. El valor D de disparidad resultante se aplica como un desplazamiento de coordenadas horizontales (dX) que se aplica para convertir las coordenadas espaciales en la vista # 1 en una coordenada espacial en una vista #i.
En general, se supone que la ecuación (5) implementa la aritmética de coma flotante. Sin embargo, debido a la naturaleza finita de una cuadrícula de muestreo, el valor de disparidad se puede redondear al número entero más cercano (en este caso se logra la correspondencia píxel a píxel), o hasta cierta precisión de subpíxeles (en este caso, la imagen Ti de referencia debe muestrearse de manera ascendente hasta la precisión requerida). En este principio, el valor de disparidad calculado usando la ecuación (5) no es diferente del componente de vector de movimiento mv_x representado con precisión de subpíxeles.
Proyección de píxeles de textura a R(Cb)
La disparidad D1(i,j) se calcula para cada valor de mapa de profundidad d 1 (i,j), y se aplica para encontrar la ubicación de los píxeles de textura asociados en la vista #0. Al aplicarse entre la vista #1 actualmente codificada a una vista #i, los valores de disparidad proporcionan una ubicación de los píxeles de textura Ti en la vista #i, asociados con el objeto actual. Al ser extraídos de ubicaciones con puntos, los píxeles se utilizan para producir píxeles en el bloque de referencia R(Cb), que puede tener un tamaño igual al tamaño del bloque actual Cb.
para (j=0;j<16;j++) {
para (i=0;i<16;i++) {
dX = Disparity(d(Cb1(I,j)));
R(CB)[j,i] = Ti[j, i+dX];
}}
En algunas implementaciones, el bloque de referencia R(Cb) puede tener un tamaño mayor que el bloque actual Cb, por ejemplo, para permitir el refinamiento del desplazamiento entre Cb y R(Cb) a través de la codificación de vectores de movimiento o similar. Dicho R(Cb) mayor puede generarse, por ejemplo, salpicando píxeles mapeados en un área más grande que una única ubicación de muestra en R(Cb) y/o usando un bloque de profundidad/disparidad mayor que Cb para la derivación de R(Cb).
En el caso de la utilización de información de disparidad con precisión de subpíxeles, el valor DX de disparidad se puede reescalar para reflejar la diferencia en la resolución de la imagen de fuente de VSP y la imagen codificada actualmente y los píxeles de R(Cb) pueden producirse mediante un proceso de interpolación, donde se pueden utilizar las N muestras más cercanas de Ti para producir una muestra, por ejemplo, de la siguiente manera.
para (j = 0;j < 16 ;j++) {
para
(i=0;i<16;i++) {
DX = Disparity(d(Cb1(I,j)));
R(CB)[j, i] = interpolate(Ti[j, i+DX -N/2: i+DX N/2-1],);
}
donde el término de índice "A:B" especifica todos los índices que pertenecen al rango entre A y B. En este ejemplo particular, esto significa que la función de interpolación toma en consideración todos los píxeles Ti que se ubican en el rango entre i+DX -N/2 e i+DX N/2-1.
Otros ejemplos de interpolación pueden incluir, pero no se limitan a, interpolaciones en bucle utilizadas en H.264/AVC y HEVC.
En algunas realizaciones, los píxeles de la fuente de predicción de síntesis de vídeo marcados para la producción deR(Cb) pueden someterse a un análisis adicional de la información de rango asociada, o vecinos de muestra con el siguiente procesamiento:
para-(j = 0;j < 16 ; j ) {
para ( i =■ 0; i < 16; i++ ) {
DX - Disparity{d(Cbl(Jj))};
i] = fUndion( Tí[j, i+DX -N/2; i+DX N/2-]]!, di[ j, i+DX -N/2; i+DX
+N/2-1 ], d I [ j. i+DX -N/2: i < DX N/2-1 ]);
}
}
Donde di es información de rango de la vista #i, d i información del mapa de profundidad para la vista #1 y la función es la función de procesamiento.
En algunas realizaciones, una multitud de imágenes de fuente de predicción de síntesis de vídeo pueden estar disponibles para la producción de R(Cb). Una fuente de predicción de síntesis de video particular utilizada para R(Cb) se puede señalar al decodificador dentro de un flujo de bits o derivarse en el decodificador a través del proceso de derivación.
El codificador puede realizar la selección de la imagen de fuente de predicción de síntesis de video a través de una optimización de la distorsión de velocidad (RDO), o mediante la optimización de alguna otra métrica de costos. En tales realizaciones, la imagen de fuente de predicción de síntesis de vídeo seleccionada se utiliza para la codificación basada en predicción de síntesis de vídeo del bloque de textura actual y la identificación de la imagen fuente de predicción de síntesis de vídeo seleccionada se señala al lado del decodificador.
Ejemplos no limitativos de señalización para la imagen de fuente de predicción de síntesis de video utilizada pueden incluir la señalización de un índice de trama de referencia asociada con componentes de vector de movimiento a nivel de partición de bloque, señalización a través de una información de partición específica (por ejemplo, modos de codificación) a nivel de macrobloque o inferior, señalización a nivel de corte (imagen de fuente de predicción de síntesis de video identificada que se utilizará en la predicción de síntesis de video para todos los bloques de textura codificados de predicción de síntesis de video del corte actual) o señalización a través de un conjunto de parámetros de secuencia o inferior (todas las texturas codificadas de predicción de síntesis de vídeo de las secuencias actuales se codifican con la imagen fuente de predicción de síntesis de vídeo identificada utilizada en la predicción de síntesis de vídeo).
En otra realización adicional, un conjunto de candidatos de fuente de predicción de síntesis de vídeo puede especificarse previamente y/o comunicarse de antemano con el decodificador. En tales realizaciones, el codificador señala un índice a un candidato específico, o señala un índice sobre cómo derivar una identificación de la imagen de fuente de predicción de síntesis de video a partir de la información disponible en el lado del decodificador, por ejemplo, extraer un índice de la información ya codificada.
El codificador y el decodificador pueden realizar la derivación de la imagen fuente de predicción de síntesis de vídeo para R(Cb) o muestras individuales de R(Cb) a través de un proceso de derivación especificado que es idéntico en el lado del codificador y del decodificador. Ejemplos no limitativos de tales procesos de derivación pueden incluir:
selección dependiente de profundidad (por ejemplo, se selecciona la fuente de predicción de síntesis de video con los valores de profundidad más cercanos a d(Cb), o la fuente de predicción de síntesis de video con un valor de profundidad menor (que representa un objeto de la escena 3D más cercana a la cámara), o derivación de una fuente de predicción de síntesis de video óptima a partir de bloques previamente codificados o bloques vecinos. El proceso de derivación puede ser por muestreo o por bloques. Si el proceso de derivación es por bloques, la derivación puede incluir filtrado, tal como el promedio de d(Cb) y los respectivos bloques candidatos R(Cb).
En algunas realizaciones, el codificador y el decodificador pueden utilizar un conjunto predefinido de procesos de derivación. Un índice del proceso utilizado se puede señalar al decodificador en el nivel de macrobloque o inferior, en el nivel de corte o inferior, en el conjunto de parámetros de secuencia o inferior o puede estar especificado por el perfil de codificación utilizado.
Predicción de Cb a partir de R(Cb)
El bloque actual Cb puede predecirse a partir de R(Cb) de una manera convencional para la predicción compensada por movimiento, el índice de referencia apunta a una imagen de VSP de referencia particular, y los componentes del vector de movimiento mv_x y mv_y hacen referencia a una ubicación espacial particular en esta trama de referencia.
Los componentes del índice de referencia y del vector de movimiento pueden codificarse de manera convencional y pueden transmitirse al decodificador.
En algunas realizaciones, Cb puede predecirse a partir de R(Cb) con el uso de vectores de movimiento pel fraccional, por lo tanto, el área de referencia R(Cb) tiene un tamaño de bloque mayor que el bloque Cb actual.
En algunas realizaciones, la predicción de síntesis de vídeo para el bloque Cb actual se puede producir a partir de R(Cb) con el uso de vectores de movimiento cero (Mv_x=mv_y=0). En tales realizaciones, el área de referencia R(Cb) puede tener el tamaño de bloque idéntico al bloque actual Cb.
En algunas realizaciones, la información de vector de movimiento residual puede considerarse conocida a priori o puede derivar en el lado del decodificador y los vectores de movimiento residual no se transmiten al decodificador. La derivación del vector de movimiento en el lado del decodificador puede basarse, por ejemplo, en minimizar la diferencia de profundidad/disparidad utilizando una métrica de similitud/diferencia particular, como la suma de diferencias absolutas, dentro de un cierto rango de búsqueda o entre vectores de movimiento candidatos, que pueden seleccionarse, por ejemplo, de bloques espaciales adyacentes o ciertos bloques temporales o de intervista, por ejemplo, con cierta ubicación espacial con respecto al actual bloque Cb.
En algunas realizaciones, el índice de referencia para una imagen de predicción de síntesis de video de referencia se considera conocido a priori o puede derivar en el lado del decodificador, es decir, el índice de referencia para una imagen de predicción de síntesis de video de referencia no se transmite al decodificador.
En algunas realizaciones, el uso de la imagen de predicción de síntesis de video para codificar/decodificar el bloque actual Cb puede no transmitirse en forma de índice de referencia como parte de la señalización de información de movimiento, sino utilizando formas alternativas de señalización. Ejemplos no limitativos de dicha señalización pueden incluir: el uso de un indicador específico que especifica el uso de predicción de síntesis de video para el bloque Cb actual. Dicho indicador puede señalizarse a nivel de macrobloque o en niveles de particiones de bloque en un códec basado en H.264/AVC, en el nivel de unidad de codificación (CU) o inferior en un códec basado en HEVC, o puede señalizarse a través de un índice de candidatos de predicción conocidos a priori en el lado del decodificador, como en un códec HEVC. Un indicador puede estar codificado en CABAC o codificado con algún otro códec aritmético o similar y, por lo tanto, no está necesariamente representado por un bit en el flujo de bits.
A continuación, se ilustra con más detalle una segunda realización, que se basa en el procesamiento de información de rango en la predicción de síntesis de vista. La segunda realización difiere de la primera realización como se muestra a continuación.
Antes de la conversión a la disparidad, como se muestra en la ecuación (5), el componente de profundidad de la multivista más la codificación de video en profundidad pueden someterse a algún procesamiento, por ejemplo, como se ilustra a continuación.
El mapa de profundidad puede someterse a varios filtros, que pueden incluir filtrado lineal y/o no lineal, filtrado medio o mediano.
En el caso del filtrado medio, se calcula un promedio de los valores de disparidad d(Cb) y se utiliza en la Ecuación (5) para producir un único valor de disparidad promedio D(Cb) para todo el bloque Cb:
Av_d =mean(d(Cb)).
Alternativamente, se puede utilizar el filtrado mediano en lugar del filtrado medio.
median d =median (d(Cb)).
Alternativamente, los valores mínimos o máximos de los datos del mapa de profundidad se pueden utilizar en la Ecuación (5):
m i n d =min(d(Cb)).
m a x d =max(d(Cb)).
En algunas realizaciones, la disparidad de píxeles se puede producir a partir de los valores de disparidad d(Cb), como se especifica en la Ecuación (5), y después de este paso, se puede producir un único valor de disparidad que representa el bloque Cb actual a través de operaciones en el dominio de disparidad. El único valor de disparidad puede producirse mediante procesamiento lineal o no lineal, cuyos ejemplos no limitantes incluyen operaciones de media, mediana o mínima/máxima.
En algunas realizaciones, la operación de submuestreo de los valores de disparidad d(Cb) aplicados a los valores de disparidad d(Cb) se puede utilizar para proporcionar una representación de mapa de profundidad para el bloque Cb actual en la Ecuación (5).
En otra realización adicional, la representación del mapa de profundidad para el bloque Cb actual puede derivarse de componentes (vistas) del mapa de profundidad codificados previamente o de bloques de textura codificados previamente.
En otra realización adicional, los candidatos del mapa de profundidad para la representación del bloque Cb actual pueden estar disponibles en el codificador y decodificador antes de la codificación/decodificación del bloque Cb actual. Un índice de un valor de profundidad específico utilizado para codificar/decodificar el bloque actual Cb puede señalizarse en el flujo de bits o puede derivarse en los lados del codificador y del decodificador.
Las otras etapas de la primera realización pueden realizarse entonces de la misma manera que se muestra anteriormente en relación con la primera realización.
A continuación, se ilustra con más detalle una tercera realización, que se basa en la predicción de síntesis de vista multidireccional con RDO.
En el caso de la codificación de vídeo 3D de múltiples vistas, se puede generar una trama de VSP a partir de la síntesis de vistas de múltiples vistas de referencia. Por ejemplo, suponiendo una codificación de 3 vistas, la multivista más los componentes de video en profundidad pueden codificarse con el orden T0-d0-d1-d2-T1-T2. Con este orden, la vista de textura T1 puede utilizar la predicción de síntesis de vista y la trama de VSP correspondiente puede proyectarse desde la vista #0. La vista de textura T2, por el contrario, puede utilizar la trama de VSP que se produce a partir de la vista #0 y la vista #1. Por lo tanto, puede utilizar múltiples tramas de VSP para codificar/decodificar, o pueden fusionarse tramas de VSP competidoras para mejorar la calidad de la predicción de síntesis de vista.
La producción y el manejo de múltiples tramas de VSP de referencia en el lado del decodificador puede requerir un decodificador en términos de complejidad computacional y asignación de memoria. Sin embargo, dado que el esquema propuesto en algunas realizaciones se realiza a nivel de bloque, solo se produce el área de referencia R(Cb), no necesariamente tramas completas.
Las operaciones de decodificación para la tercera realización con respecto a la conversión de profundidad a disparidad son diferentes de la primera y la segunda realización. Un decodificador lee del flujo de bits o extrae de la información disponible en el decodificador un indicador que especifica la vista (id de vista) desde la cual se debe realizar la predicción de síntesis de vista. Un id de vista diferente (dirección de VSP) tendría una entrada diferente a la conversión de profundidad a disparidad, como el parámetro de traslado b o la distancia focal y puede resultar en diferentes valores de disparidad. Después de eso, el decodificador puede realizar los otros pasos de la primera realización o la segunda realización sin cambios.
Por el contrario, el codificador realizaría la primera y la segunda realización completamente para todas las vistas disponibles, lo que puede dar como resultado múltiples copias de Cb codificado. El id de vista que proporciona un costo mínimo en alguna optimización de distorsión de velocidad puede seleccionarse para codificación y puede indicarse al lado del decodificador.
Alternativamente, el codificador puede extraer información en la dirección de predicción de síntesis de vista a partir de la información disponible y realizar la codificación del bloque Cb actual sin señalización. En tales realizaciones, el decodificador realizaría la extracción del view_id en el lado del decodificador en un procedimiento correspondiente. Por ejemplo, el codificador y el decodificador pueden seleccionar la trama fuente de VSP que esté físicamente más cerca de la vista actual en términos de traslado de la cámara. Si hay dos (o más) vistas igualmente cercanas a la vista actual en términos de traslado de la cámara, el codificador y el decodificador pueden elegir entre las vistas según una regla determinista, como elegir la vista con un índice de orden de vista más pequeño.
A continuación, se ilustra con más detalle una cuarta realización, que se basa en una predicción de síntesis de vista multidireccional con selección consciente de profundidad.
Alternativamente o además de la tercera realización, la dirección de predicción de síntesis de vista puede seleccionarse en el lado del codificador y del decodificador basándose en la información de profundidad disponible en los lados del codificador/descodificador antes de codificar/decodificar el bloque Cb actual.
Dado que la información de profundidad d(Cb) dentro de la vista #2, correspondiente a la predicción de síntesis de vista D0 de la vista #0 y la predicción de síntesis de vista D1 de la vista #1 están disponibles en los lados del codificador y descodificador antes de la codificación del bloque Cb actual, se puede utilizar para la toma de decisiones sobre la dirección de predicción de síntesis de vista preferible para el bloque Cb actual. Por ejemplo, la dirección que proporciona una distancia euclidiana mínima entre d(Cb) y VSP_D podría seleccionarse para la predicción.
Costl = min(average(d(Cb)) - average(VSP Dl)
Cost2 = min(average(d(Cb)) - average(VSP_D2)
Si (Cost1 < Cost2) Vsp_id = 1 De lo contrario Vsp_id = 2,
Cabe señalar que se pueden utilizar diferentes métricas de distorsión en la cuarta realización.
A continuación, se ilustra con más detalle una quinta realización, que se basa en un VSP bidireccional.
Alternativamente o además de la tercera y cuarta realización, el bloque Cb actual en la vista #2 puede predecirse con una predicción de síntesis de vista bidireccional. En tales realizaciones, las áreas de referencia R0(Cb) y R1(Cb) se crearían a partir de las vistas de referencia #0 y #1 y se utilizarían para la predicción del bloque actual Cb en la vista #2 en forma de predicción ponderada.
A continuación, se ilustra con más detalle una sexta realización, que se basa en la ponderación de la predicción de síntesis de vista unidireccional, multidireccional o bidireccional de la realización o realizaciones anterior(es).
En algunas realizaciones, no hay disponible ninguna trama de VSP completa ni en el lado del decodificador ni en el lado del codificador, por lo tanto, la estimación de pesos para la predicción ponderada de una trama completa de una manera convencional sería costosa en términos de cálculos requeridos, uso de memoria y ancho de banda de acceso a la memoria. Además, utilizar el cálculo de los parámetros ponderados basado en el recuento del orden de la imagen (POC) tampoco sería óptimo, ya que el recuento del orden de la imagen no tendría ningún reflejo en la calidad de la imagen resultante de la predicción de síntesis de vista.
Sin embargo, dado que la predicción de síntesis de vista asume la proyección de valores de píxeles reales desde una vista particular (dirección de predicción de síntesis de vista), los parámetros de ponderación para esos píxeles pueden heredarse de las vistas correspondientes, por ejemplo, reutilizar los parámetros wp1 que se utilizan para la vista #2 de predicción intervista desde la vista #0, y los parámetros wp2 que se utilizan para la vista #2 de predicción intervista desde la vista #1.
En la primera a la cuarta realización, los datos de píxeles R(Cb) proyectados desde una vista particular se pueden reescalar (normalizar) con un parámetro de ponderación correspondiente. En la quinta realización, los datos de píxeles R(Cb) se calcularían como un promedio ponderado de los datos de píxeles proyectados desde la vista #0 y la vista #1.
Alternativamente, o además, los parámetros de predicción ponderados se pueden estimar basándose en la información de profundidad disponible en el lado del codificador o decodificador.
wpt= runction(a(UD), v b r j J i ;
Wp2= function(d(Cb), VSP D2)
Alternativamente, se puede definir una función para devolver tanto Wp1 como Wp2, es decir, [Wp1, Wp2] = function(d(Cb), VSP_D1, VSP D2). Por ejemplo, la función se puede especificar de la siguiente manera:
Costl = sad(d(Cb), VSP_D1)
Cost2 = sad(d(Cb), YSP_D2)
donde sad(d(Cb), VDP Dx) devuelve la suma de las diferencias absolutas entre cada par de muestras en d(Cb) y la muestra correspondiente en VSP_Dx. Luego, Total_Cost se especifica como Cost1 Cost2. Por último, Wp1 se especifica como Cost2 / Total_Cost y Wp2 se especifica como Cost1 / Total_Cost (con el supuesto de que las ponderaciones para la predicción ponderada suman 1).
Un ejemplo del codificador 800 se representa en la figura 8 como un diagrama de bloques simplificado y el funcionamiento del codificador según una realización de ejemplo se representa como un diagrama de flujo en la figura 13. El codificador 800 recibe 802 un bloque de una trama actual de una vista de textura para la codificación. El bloque también se puede denominar bloque actual Cb. El bloque actual se proporciona a un primer combinador 804, tal como un elemento sustractor, y al estimador de movimiento 806. El estimador de movimiento 806 tiene acceso un búfer de trama 812 que almacena trama(s) previamente codificada(s) o el estimador de movimiento 806 puede proporcionarse por otros medios uno o más bloques de una o más tramas previamente codificadas. El estimador de movimiento 806 examina cuál del único o más bloques codificados previamente podría proporcionar una buena base para usar el bloque como referencia de predicción para el bloque actual. Si se ha encontrado una referencia de predicción adecuada, el estimador de movimiento 806 calcula un vector de movimiento que indica dónde está ubicado el bloque seleccionado en la trama de referencia con respecto a la ubicación del bloque actual en la trama actual. La información del vector de movimiento puede estar codificada por un primer codificador de entropía 814. La información de la referencia de predicción también se proporciona al predictor de movimiento 810 que calcula el bloque predicho.
El primer combinador 804 determina la diferencia entre el bloque actual y el bloque 808 predicho. La diferencia se puede determinar, por ejemplo, calculando la diferencia entre los valores de píxeles del bloque actual y los valores de píxeles correspondientes del bloque predicho. Esta diferencia se puede denominar error de predicción. El error de predicción es transformado por un elemento de transformación 816 en un dominio de transformación. La transformación puede ser, por ejemplo, una transformación de coseno discreta (DCT). Los valores transformados se cuantifican mediante un cuantificador 818. Los valores cuantificados pueden estar codificados por el segundo codificador de entropía 820. Los valores cuantificados también se pueden proporcionar a un cuantificador inverso 822 que reconstruye los valores transformados. Los valores transformados reconstruidos se transforman entonces de forma inversa mediante un elemento de transformación inversa 824 para obtener valores de error de predicción reconstruidos. Los valores de error de predicción reconstruidos se combinan mediante un segundo combinador 826 con el bloque predicho para obtener valores de bloque reconstruidos del bloque actual. Los valores de bloque reconstruidos se ordenan en un orden correcto mediante un elemento de ordenado 828 y se almacenan en búfer de tramas 812.
En algunas realizaciones, el codificador 800 también comprende un predictor de síntesis de vista 830 que puede usar tramas de vista de textura de una o más vistas 832 e información de profundidad 834 (por ejemplo, el mapa de profundidad) para sintetizar otras vistas 836 basándose, por ejemplo, en un mapa de profundidad del bloque de coubicación en otra vista distinta del bloque actual como se ha ilustrado anteriormente con varias realizaciones. Las otras tramas de vista de textura 832 y/o las vistas sintetizadas 836 también pueden almacenarse en el búfer de tramas 812 para que el estimador de movimiento 806 pueda usar las otras vistas y/o vistas sintetizadas para seleccionar una referencia de predicción para el bloque actual.
Los componentes del vector de movimiento utilizados para la predicción basada en la síntesis de vistas, la predicción intervista y la predicción intercapa pueden estar restringidos en su rango de aplicabilidad, que define un conjunto de elementos de sintaxis y un conjunto de operaciones de decodificación. Por ejemplo, el rango de valores y/o la precisión de los componentes del vector de movimiento o las diferencias de los componentes del vector de movimiento con respecto a los valores de predicción pueden estar restringidos. Además, en algunas realizaciones, los componentes del vector de movimiento diferencial utilizados para la predicción basada en síntesis de vista, predicción intervista y/o predicción intercapa pueden tener un contexto inicial diferente en comparación con los componentes del vector de movimiento diferencial utilizados para la predicción compensada por movimiento inter o temporal. Además, en algunas realizaciones, los componentes del vector de movimiento diferencial utilizados para la predicción basada en la síntesis de vista, predicción intervista y/o predicción intercapa se pueden binarizar de manera diferente para la codificación y decodificación aritmética basada en el contexto en comparación con la binarización de los componentes del vector de movimiento diferencial de predicción compensada por movimiento inter o temporal.
Cuando el codificador codifica información de textura de un bloque de una trama o una imagen, el codificador puede determinar 102 si la información de rango para el bloque actual está disponible. Esta determinación puede incluir examinar si existe en la memoria un bloque de profundidad/disparidad coubicado para la misma vista que la vista del
bloque actual o si está disponible para la predicción de síntesis de vista. El bloque a codificar se ha introducido en el codificador que se ilustra con el bloque 100 en la figura 13. Si la determinación indica que el bloque de profundidad/disparidad coubicado para la misma vista que la vista del bloque actual está disponible para la predicción de síntesis de vista, la predicción de síntesis de vista para el bloque de textura del bloque actual se realiza para obtener el área de referencia R(Cb). Si la determinación indica que el bloque de profundidad/disparidad coubicado para la misma vista que la vista del bloque actual no está disponible para la predicción de síntesis de vista, se puede aplicar una predicción de movimiento convencional 114. En la realización representada en la figura 13, la predicción de síntesis de vista comprende convertir 104 la información de rango en información de disparidad que especifica coordenadas espaciales desplazadas entre muestras de la vista actual #N y la vista de referencia #i. La información de disparidad se usa para ubicar 106 valores de muestra en la textura de la vista de referencia #i. Los valores de muestra ubicados en la textura de la vista de referencia #i pueden copiarse 108 en el área de referencia R(Cb). La predicción de síntesis de vista para el bloque de textura del bloque actual también puede comprender el procesamiento 110 de muestras de la vista de referencia #i. El procesamiento 110 puede realizarse antes o después de la copia 108. Si el procesamiento 110 se realiza antes de la copia, los valores procesados o parte de ellos se copian en muestras del área de referencia R(Cb).
Cuando se ha construido el área de referencia R(Cb), el bloque actual Cb puede predecirse 112 sobre la base de la información del área de referencia R(Cb).
A continuación, se describirá el funcionamiento de una realización de ejemplo de un decodificador 900 con referencia a la figura 9 y al diagrama de flujo de la figura 14. El decodificador 900 recibe 200, 902 un flujo de bits o una parte de un flujo de bits que contiene información de vídeo codificada. La información de video codificada puede contener valores de error de predicción, vectores de movimiento, índices de referencia, etc. Cabe señalar en la presente que no es necesario incluir toda esta información en el mismo flujo de bits, pero parte de la información puede transmitirse en diferentes flujos de bits utilizando diferentes tipos de elementos de sintaxis.
A continuación se describe principalmente la decodificación relacionada con el procesamiento del vector de movimiento y se omite en esta especificación la descripción de otras operaciones de decodificación 904, como la reconstrucción de bloques.
El decodificador 900 puede comprender un decodificador de entropía 906 que decodifica la información recibida y codificada en entropía. La información decodificada se puede proporcionar a un decodificador de vector de movimiento 908. El decodificador de vector de movimiento 908 puede comprender un elemento de examen de tipo de referencia 910 que puede examinar la información decodificada para determinar si un índice de referencia u otro tipo de indicación de referencia del tipo de referencia para el bloque actual se ha incluido en el flujo de bits recibido. Si se ha recibido la indicación de referencia, el elemento de examen del tipo de referencia 910 puede determinar 202 el tipo de referencia basándose en la indicación de referencia. Si no se ha recibido la indicación de referencia, el elemento de examen del tipo de referencia 910 puede utilizar otros datos para determinar el tipo de referencia.
El decodificador del vector de movimiento 908 puede comprender además un elemento de reconstrucción del vector de movimiento 912 que puede reconstruir los componentes del vector de movimiento para el bloque actual.
Si la indicación de referencia indica que el bloque actual se ha predicho usando una intrapredicción convencional, el bloque actual puede reconstruirse 220 usando la información de error de predicción recibida y la información de bloques decodificados previamente dentro de la misma trama que la trama actual. Si la indicación indica que el bloque actual se ha predicho utilizando una interpredicción convencional, la información del vector de movimiento y la información del error de predicción se decodifican y se utilizan junto con la referencia de predicción, es decir, el bloque de otra trama decodificada previamente que el codificador 800 ha utilizado al construir 220 la referencia de predicción para la trama actual.
Si la indicación de referencia indica que el bloque actual se ha predicho usando la predicción de síntesis de vista 204, el decodificador 900 puede realizar las siguientes operaciones en algunas realizaciones. El decodificador 900 puede derivar 206 o puede recibir del codificador 800 información de imagen o imágenes usada(s) como fuente para la predicción de síntesis de vista y usar 208 las imágenes de fuente para producir los bloques de VSP usando procedimientos correspondientes al lado del codificador.
Si la indicación de referencia indica que el bloque actual no se ha predicho usando la predicción de síntesis de vista 204, pueden usarse otros métodos de predicción 210 para decodificar el bloque actual.
En realizaciones de ejemplo, se pueden usar notación común para operadores aritméticos, operadores lógicos, operadores relacionales, operadores por bit, operadores de asignación y notación de rango, por ejemplo, como se especifica en H.264/AVC o en un borrador de HEVC. Además, se pueden usar funciones matemáticas comunes, por ejemplo, como se especifica en H.264/AVC o un borrador HEVC, y se puede usar un orden común de precedencia y orden de ejecución (de izquierda a derecha o de derecha a izquierda) de los operadores, por ejemplo, como se especifica en H.264/AVC o en un borrador de HEVC.
En realizaciones de ejemplo, los siguientes descriptores pueden usarse para especificar el proceso de análisis sintáctico de cada elemento de sintaxis.
- ae(v): elemento de sintaxis codificado en entropía aritmética adaptable al contexto (CABAC)
- b(8): byte que tiene cualquier patrón de cadena de bits (8 bits).
- se(v): elemento de sintaxis codificado por Exp-Golomb de entero con signo con el bit de la izquierda primero.
- u(n): entero sin signo que utiliza n bits. Cuando n es "v" en la tabla de sintaxis, el número de bits varía de una manera que depende del valor de otros elementos de sintaxis. El proceso de análisis sintáctico para este descriptor se especifica mediante n bits a partir del flujo de bits interpretado como una representación binaria de un entero sin signo con el bit más significativo escrito primero.
- ue(v): elemento de sintaxis codificado por Exp-Golomb de entero sin signo con el bit de la izquierda primero.
Una cadena de bits Exp-Golomb se puede convertir en un número de código (codeNum), por ejemplo, utilizando la siguiente tabla:
Un número de código correspondiente a una cadena de bits Exp-Golomb se puede convertir a se(v), por ejemplo, utilizando la siguiente tabla:
Si bien se han descrito realizaciones de la invención utilizando estándares de codificación particulares y sus extensiones como base, la invención puede aplicarse también a otros códecs, formatos de flujo de bits y estructuras de codificación.
Se proporcionan los siguientes elementos que se pueden combinar en una única solución, como se describirá a continuación, o se pueden utilizar por separado. Como se explicó anteriormente, tanto un codificador de video como un decodificador de video normalmente aplican un mecanismo de predicción, por lo tanto, los siguientes elementos pueden aplicarse de manera similar tanto a un codificador de video como a un decodificador de video.
En varias realizaciones presentadas anteriormente, se seleccionan los bloques vecinos al bloque actual que se codifica/descodifica cb. Ejemplos de selección de bloques vecinos incluyen vecinos espaciales (por ejemplo, como se indica en la figura 7a). Otros ejemplos incluyen temporal en tramas anteriores y/o posteriores de la misma vista (por ejemplo, como se indica en la figura 7b), vecinos espaciales en vistas adyacentes, vecinos espaciales en diferentes capas y vecinos espaciales en vistas sintetizadas. Los aspectos de la invención no se limitan a los métodos mencionados de selección de bloques vecinos, sino que la descripción se da para una posible base sobre la que pueden realizarse parcial o totalmente otras realizaciones de la invención.
Aunque muchas de las realizaciones se describen para la predicción de luma, debe entenderse que en muchas disposiciones de codificación la información de predicción de crominancia puede derivarse de la información de predicción de luma utilizando relaciones predeterminadas. Por ejemplo, se puede suponer que se utilizan las mismas muestras de referencia para los componentes cromáticos que para luma.
A continuación, se describe con más detalle el aparato adecuado y los posibles mecanismos para implementar las realizaciones de la invención. En este sentido, se hace referencia en primer lugar a la figura 10, que muestra un diagrama de bloques esquemático de un aparato o dispositivo electrónico 50 de ejemplo, que puede incorporar un códec según una realización de la invención.
El dispositivo electrónico 50 puede ser, por ejemplo, un terminal móvil o un equipo de usuario de un sistema de comunicación inalámbrica. Sin embargo, se apreciará que las realizaciones de la invención se pueden implementar dentro de cualquier dispositivo o aparato electrónico que pueda requerir codificación y decodificación o codificación o decodificación de imágenes de video.
El aparato 50 puede comprender una carcasa 30 para incorporar y proteger el dispositivo. El aparato 50 puede comprender además una pantalla 32 en forma de pantalla de cristal líquido. En otras realizaciones de la invención, la pantalla puede ser cualquier tecnología de pantalla adecuada para mostrar una imagen o un vídeo. El aparato 50 puede comprender además un teclado 34. En otras realizaciones de la invención se puede emplear cualquier mecanismo de interfaz de usuario o datos adecuado. Por ejemplo, la interfaz de usuario puede implementarse como un teclado virtual o un sistema de entrada de datos como parte de una pantalla sensible al tacto. El aparato puede comprender un micrófono 36 o cualquier entrada de audio adecuada que puede ser una entrada de señal digital o analógica. El aparato 50 puede comprender además un dispositivo de salida de audio que en las realizaciones de la invención puede ser cualquiera de: un auricular 38, altavoz o una conexión de salida de audio analógica o de audio digital. El aparato 50 también puede comprender una batería 40 (o en otras realizaciones de la invención, el dispositivo puede ser alimentado por cualquier dispositivo de energía móvil adecuado, tal como una celda solar, una celda de combustible o un generador de reloj). El aparato puede comprender además un puerto de infrarrojos 42 para comunicación con línea de visión de corto alcance con otros dispositivos. En otras realizaciones, el aparato 50 puede comprender además cualquier solución de comunicación de corto alcance adecuada como, por ejemplo, una conexión inalámbrica Bluetooth o una conexión por cable USB/firewire.
El aparato 50 puede comprender un controlador 56 o procesador para controlar el aparato 50. El controlador 56 puede estar conectado a la memoria 58 que, en realizaciones de la invención, puede almacenar tanto datos en forma de imagen como datos de audio y/o también puede almacenar instrucciones para implementación en el controlador 56. El controlador 56 puede además estar conectado a un circuito de códec 54 adecuado para llevar a cabo la codificación y decodificación de datos de audio y/o video o ayudar en la codificación y decodificación llevada a cabo por el controlador 56.
El aparato 50 puede comprender además un lector de tarjetas 48 y una tarjeta inteligente 46, por ejemplo un lector UICC y UICC para proporcionar información de usuario y es adecuado para proporcionar información de autenticación para la autenticación y autorización del usuario en una red.
El aparato 50 puede comprender un circuito de interfaz de radio 52 conectado al controlador y adecuado para generar señales de comunicación inalámbrica, por ejemplo, para la comunicación con una red de comunicación celular, un sistema de comunicación inalámbrica o una red de área local inalámbrica. El aparato 50 puede comprender además una antena 44 conectada al circuito de interfaz de radio 52 para transmitir señales de radiofrecuencia generadas en el circuito de interfaz de radio 52 a otro(s) aparato(s) y para recibir señales de radiofrecuencia de otro(s) aparato(s).
En algunas realizaciones de la invención, el aparato 50 comprende una cámara capaz de grabar o detectar tramas individuales que luego se pasan al códec 54 o controlador para su procesamiento. En otras realizaciones de la invención, el aparato puede recibir los datos de imagen de vídeo para su procesamiento desde otro dispositivo antes
de la transmisión y/o el almacenamiento. En otras realizaciones de la invención, el aparato 50 puede recibir de forma inalámbrica o mediante una conexión por cable la imagen para codificar/decodificar.
Con respecto a la figura 12, se muestra un ejemplo de un sistema dentro del cual se pueden utilizar realizaciones de la presente invención. El sistema 10 comprende múltiples dispositivos de comunicación que pueden comunicarse a través de una o más redes. El sistema 10 puede comprender cualquier combinación de redes cableadas o inalámbricas que incluyen, entre otras, una red de telefonía celular inalámbrica (como una red GSM, UMTS, CDMA, etc.), una red de área local inalámbrica (WLAN) como la definida por cualquiera de los estándares IEEE 802.x, una red de área personal Bluetooth, una red de área local Ethernet, una red de área local token ring, una red de área amplia e Internet.
El sistema 10 puede incluir dispositivos o aparatos 50 de comunicación por cable e inalámbricos adecuados para implementar realizaciones de la invención.
Por ejemplo, el sistema que se muestra en la figura 12 muestra una red de telefonía móvil 11 y una representación de Internet 28. La conectividad a Internet 28 puede incluir, entre otras, conexiones inalámbricas de largo alcance, conexiones inalámbricas de corto alcance y varias conexiones por cable que incluyen, entre otras, líneas telefónicas, líneas de cable, líneas eléctricas y vías de comunicación similares.
Los dispositivos de comunicación de ejemplo mostrados en el sistema 10 pueden incluir, entre otros, un dispositivo o aparato 50 electrónico, una combinación de un asistente digital personal (PDA) y un teléfono móvil 14, un p Da 16, un dispositivo de mensajería integrado (IMD) 18, una computadora de escritorio 20, una computadora portátil 22. El aparato 50 puede ser fijo o móvil cuando lo lleva un individuo que está en movimiento. El aparato 50 también puede estar ubicado en un modo de transporte que incluye, entre otros, un automóvil, un camión, un taxi, un autobús, un tren, un bote, un avión, una bicicleta, una motocicleta o cualquier modo de transporte adecuado similar.
Algunos o más aparatos pueden enviar y recibir llamadas y mensajes y comunicarse con los proveedores de servicios a través de una conexión inalámbrica 25 a una estación base 24. La estación base 24 puede estar conectada a un servidor de red 26 que permite la comunicación entre la red de telefonía móvil 11 e Internet 28. El sistema puede incluir dispositivos de comunicación adicionales y dispositivos de comunicación de varios tipos.
Los dispositivos de comunicación pueden comunicarse utilizando diversas tecnologías de transmisión que incluyen, entre otras, acceso múltiple por división de código (CDMA), sistemas globales para comunicaciones móviles (GSM), sistema universal de telecomunicaciones móviles (UMTS), acceso múltiple por división de tiempo (TDMA), acceso múltiple por división de frecuencia (FDMA), protocolo de control de transmisión-protocolo de Internet (TCP-IP), servicio de mensajería corta (SMS), servicio de mensajería multimedia (MMS), correo electrónico, servicio de mensajería instantánea (IMS), Bluetooth, IEEE 802.11 y cualquier tecnología de comunicación inalámbrica similar. Un dispositivo de comunicaciones involucrado en la implementación de diversas realizaciones de la presente invención puede comunicarse usando varios medios que incluyen, entre otros, radio, infrarrojos, láser, conexiones por cable y cualquier conexión adecuada.
Aunque los ejemplos anteriores describen realizaciones de la invención que operan dentro de un códec dentro de un dispositivo electrónico, se apreciará que la invención, como se describe a continuación, puede implementarse como parte de cualquier códec de vídeo. Por lo tanto, por ejemplo, las realizaciones de la invención pueden implementarse en un códec de video que puede implementar la codificación de video sobre rutas de comunicación fijas o cableadas.
Por lo tanto, el equipo de usuario puede comprender un códec de vídeo como los descritos anteriormente en las realizaciones de la invención. Se apreciará que el término equipo de usuario está destinado a cubrir cualquier tipo adecuado de equipo de usuario inalámbrico, como teléfonos móviles, dispositivos portátiles de procesamiento de datos o navegadores web portátiles.
Además, los elementos de una red móvil pública terrestre (PLMN) también pueden comprender códecs de vídeo como se describió anteriormente.
En general, las diversas realizaciones de la invención pueden implementarse en hardware o circuitos con fines especiales, software, lógica o cualquier combinación de los mismos. Por ejemplo, algunos aspectos pueden implementarse en hardware, mientras que otros aspectos pueden implementarse en firmware o software que pueden ser ejecutados por un controlador, microprocesador u otro dispositivo informático, aunque la invención no se limita a los mismos. Si bien varios aspectos de la invención pueden ilustrarse y describirse como diagramas esquemáticos, diagramas de flujo o usando alguna otra representación pictórica, se entiende que estos bloques, aparatos, sistemas, técnicas o métodos descritos en la presente pueden implementarse como ejemplos no restrictivos en hardware, software, firmware, circuitos o lógica con fines especiales, hardware o controlador con fines generales u otros dispositivos informáticos, o alguna combinación de los mismos.
Las realizaciones de esta invención pueden implementarse mediante software por ordenador ejecutable por un procesador de datos del dispositivo móvil, tal como en la entidad procesadora, o por hardware, o por una combinación
de software y hardware. Además, en este sentido, debe tenerse en cuenta que cualquier bloque del flujo lógico, como en las figuras, puede representar pasos del programa, o circuitos lógicos interconectados, bloques y funciones, o una combinación de pasos del programa y circuitos lógicos, bloques y funciones. El software puede almacenarse en medios físicos como chips de memoria o bloques de memoria implementados dentro del procesador, medios magnéticos como discos duros o disquetes y medios ópticos como, por ejemplo, DVD y sus variantes de datos, CD.
La memoria puede ser de cualquier tipo adecuado para el entorno técnico local y pueden implementarse utilizando cualquier tecnología de almacenamiento de datos adecuada, como dispositivos de memoria basados en semiconductores, dispositivos y sistemas de memoria magnética, dispositivos y sistemas de memoria óptica, memoria fija y memoria extraíble. Los procesadores de datos pueden ser de cualquier tipo adecuado para el entorno técnico local, y pueden incluir uno o más ordenadores de uso general, ordenadores con fines especiales, microprocesadores, procesadores de señales digitales (DSP) y procesadores basados en arquitectura de procesador de múltiples núcleos, como ejemplos no restrictivos.
Las realizaciones de las invenciones se pueden llevar a la práctica en varios componentes, tales como módulos de circuitos integrados. El diseño de circuitos integrados es, en general, un proceso altamente automatizado. Hay disponibles herramientas de software complejas y poderosas para convertir un diseño de nivel lógico en un diseño de circuito semiconductor listo para ser grabado y formado en un sustrato semiconductor.
Los programas, como los proporcionados por Synopsys, Inc. de Mountain View, California y Cadence Design, de San José, California, enrutan automáticamente los conductores y ubican los componentes en un chip semiconductor utilizando reglas de diseño bien establecidas, así como bibliotecas de módulos de diseño prealmacenados. Una vez que se ha completado el diseño de un circuito semiconductor, el diseño resultante, en un formato electrónico estandarizado (por ejemplo, Opus, GDSII o similar) puede transmitirse a una instalación de fabricación de semiconductores o "fab" para su fabricación.
La descripción anterior ha proporcionado, a modo de ejemplos ilustrativos y no limitativos, una descripción completa e informativa de la realización de ejemplo de esta invención. Sin embargo, varias modificaciones y adaptaciones pueden resultar evidentes para los expertos en las técnicas relevantes en virtud de la descripción anterior, cuando se lee junto con los dibujos adjuntos y las reivindicaciones adjuntas. Sin embargo, todas estas modificaciones y similares de las enseñanzas de esta invención estarán dentro del alcance de esta invención.
Claims (8)
1. Un método que comprende:
obtener una primera imagen de profundidad codificada que representa una primera vista; reconstruir una primera imagen de profundidad decodificada en base a la primera imagen de profundidad codificada; obtener un primer bloque de textura de una primera imagen de textura que representa la primera vista;
obtener, a partir de la primera imagen de profundidad decodificada, información de rango asociada con el primer bloque de textura, en donde obtener información de rango comprende al menos uno de los siguientes:
reconstruir o decodificar la primera imagen de profundidad decodificada que representa la primera vista y obtener dicha información rango a partir de la primera imagen de profundidad decodificada; obtener dicha información de rango a partir de imágenes de profundidad que preceden a la primera imagen de textura en orden de codificación; u obtener dicha información de rango de los bloques de textura que preceden al primer bloque de textura en orden de codificación;
derivar información de disparidad por bloques con referencia a una imagen de referencia en una segunda vista sobre la base de la información de rango;
obtener una ubicación de un bloque de referencia de la segunda vista usando la información de disparidad por bloques como coordenadas espaciales desplazadas desde una ubicación del primer bloque de textura;
obtener el bloque de referencia, utilizando la predicción de síntesis de vista, que comprende muestras de referencia para realizar en al menos uno de los siguientes: codificar el primer bloque de textura; o decodificar el primer bloque de textura; usar la información de disparidad para ubicar las muestras de referencia en la imagen de referencia;
obtener valores de muestra de referencia para el bloque de referencia sobre la base de las muestras de referencia ubicadas; filtrar los valores de la muestra de referencia; y
filtrar los valores de la muestra de referencia utilizando uno o más parámetros de predicción ponderados.
2. El método según la reivindicación 1 que comprende además
derivar información de disparidad por bloques con referencia a una segunda imagen de referencia en una tercera vista sobre la base de la información de rango;
obtener una ubicación de un bloque de referencia de la tercera vista usando la información de disparidad por bloques como coordenadas espaciales desplazadas desde una ubicación del primer bloque de textura; y
usar el bloque de referencia de la segunda vista y el bloque de referencia de la tercera vista para obtener el bloque de referencia.
3. El método según la reivindicación 1, que comprende además derivar información de disparidad para especificar coordenadas espaciales desplazadas entre muestras del primer bloque de textura y las muestras de referencia.
4. El método según la reivindicación 1, que comprende además proporcionar al menos una primera lista de imágenes de referencia indicativa de imágenes utilizadas como imágenes de referencia a partir de las cuales se selecciona el bloque de referencia.
5. El método según la reivindicación 1, que comprende además el procesamiento de la información de rango o la información de disparidad en al menos una de las siguientes formas:
filtrar la información de rango o la información de disparidad;
submuestrear la información de rango o la información de disparidad; y
derivar un valor de disparidad a partir de la información de rango o la información de disparidad.
6. Un aparato configurado para:
obtener una primera imagen de profundidad codificada que representa una primera vista; reconstruir una primera imagen de profundidad decodificada en base a la primera imagen de profundidad codificada; obtener un primer bloque de textura de una primera imagen de textura que representa la primera vista;
obtener, a partir de la primera imagen de profundidad decodificada, información de rango asociada con el primer bloque de textura, en donde obtener información de rango comprende al menos uno de los siguientes:
reconstruir o decodificar la primera imagen de profundidad decodificada que representa la primera vista y obtener dicha información rango a partir de la primera imagen de profundidad decodificada; obtener dicha información de distancia a partir de imágenes de profundidad que preceden a la primera imagen de textura en orden de codificación; u
obtener dicha información de rango de los bloques de textura que preceden al primer bloque de textura en orden de codificación;
derivar información de disparidad por bloques con referencia a una imagen de referencia en una segunda vista sobre la base de la información de rango;
obtener una ubicación de un bloque de referencia de la segunda vista usando la información de disparidad por bloques como coordenadas espaciales desplazadas desde una ubicación del primer bloque de textura;
obtener el bloque de referencia, usando predicción de síntesis de vista, que comprende muestras de referencia para realizar al menos uno de los siguientes: codificar el primer bloque de textura; o decodificar el primer bloque de textura;
usar la información de disparidad para ubicar las muestras de referencia en la imagen de referencia; filtrar los valores de la muestra de referencia; y
filtrar los valores de la muestra de referencia utilizando uno o más parámetros de predicción ponderados.
7. El aparato según la reivindicación 6, en donde el aparato está configurado además para realizar el método según cualquiera de las reivindicaciones 2 a 5.
8. Un producto de programa informático que comprende instrucciones de programa que, cuando son ejecutadas por un aparato, hacen que el aparato lleve a cabo el método según cualquiera de las reivindicaciones 1 a 5.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201261662076P | 2012-06-20 | 2012-06-20 | |
PCT/FI2013/050662 WO2014009598A1 (en) | 2012-06-20 | 2013-06-17 | An apparatus, a method and a computer program for 3d video coding |
Publications (1)
Publication Number | Publication Date |
---|---|
ES2864222T3 true ES2864222T3 (es) | 2021-10-13 |
Family
ID=49774112
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
ES13817171T Active ES2864222T3 (es) | 2012-06-20 | 2013-06-17 | Un aparato, un método y un programa informático para la codificación de vídeo 3D |
Country Status (10)
Country | Link |
---|---|
US (1) | US9998726B2 (es) |
EP (1) | EP2865184B1 (es) |
KR (1) | KR101662963B1 (es) |
CN (1) | CN104521238B (es) |
CA (1) | CA2876344C (es) |
ES (1) | ES2864222T3 (es) |
PL (1) | PL2865184T3 (es) |
RU (1) | RU2611240C2 (es) |
WO (1) | WO2014009598A1 (es) |
ZA (1) | ZA201500317B (es) |
Families Citing this family (50)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7983835B2 (en) | 2004-11-03 | 2011-07-19 | Lagassey Paul J | Modular intelligent transportation system |
JP5747559B2 (ja) * | 2011-03-01 | 2015-07-15 | 富士通株式会社 | 動画像復号方法、動画像符号化方法、動画像復号装置、及び動画像復号プログラム |
US9609341B1 (en) * | 2012-04-23 | 2017-03-28 | Google Inc. | Video data encoding and decoding using reference picture lists |
US20140002595A1 (en) * | 2012-06-29 | 2014-01-02 | Hong Kong Applied Science And Technology Research Institute Co., Ltd. | Apparatus, system and method for foreground biased depth map refinement method for dibr view synthesis |
EP3579562B1 (en) * | 2012-09-28 | 2021-09-08 | Sony Group Corporation | Image processing device and method |
US20140092978A1 (en) * | 2012-10-01 | 2014-04-03 | Nokia Corporation | Method and apparatus for video coding |
US9699450B2 (en) * | 2012-10-04 | 2017-07-04 | Qualcomm Incorporated | Inter-view predicted motion vector for 3D video |
US9154785B2 (en) * | 2012-10-08 | 2015-10-06 | Qualcomm Incorporated | Sub-bitstream applicability to nested SEI messages in video coding |
JP2014082541A (ja) * | 2012-10-12 | 2014-05-08 | National Institute Of Information & Communication Technology | 互いに類似した情報を含む複数画像のデータサイズを低減する方法、プログラムおよび装置 |
EP3490259B1 (en) * | 2013-04-02 | 2021-10-13 | InterDigital Madison Patent Holdings, SAS | Enhanced temporal motion vector prediction for scalable video coding |
US10158876B2 (en) * | 2013-04-10 | 2018-12-18 | Qualcomm Incorporated | Backward view synthesis prediction |
US10477230B2 (en) * | 2013-04-10 | 2019-11-12 | Mediatek Inc. | Method and apparatus of disparity vector derivation for three-dimensional and multi-view video coding |
US10080036B2 (en) * | 2013-05-16 | 2018-09-18 | City University Of Hong Kong | Method and apparatus for depth video coding using endurable view synthesis distortion |
JP6128987B2 (ja) * | 2013-06-25 | 2017-05-17 | オリンパス株式会社 | 画像処理装置、画像処理方法及び画像処理プログラム |
US10045048B2 (en) * | 2013-10-18 | 2018-08-07 | Lg Electronics Inc. | Method and apparatus for decoding multi-view video |
US9699462B2 (en) * | 2014-01-03 | 2017-07-04 | Futurewei Technologies, Inc. | System and method for estimating view synthesis distortion |
US10341685B2 (en) | 2014-01-03 | 2019-07-02 | Arris Enterprises Llc | Conditionally parsed extension syntax for HEVC extension processing |
US10244223B2 (en) * | 2014-01-10 | 2019-03-26 | Ostendo Technologies, Inc. | Methods for full parallax compressed light field 3D imaging systems |
US10187657B2 (en) * | 2014-03-14 | 2019-01-22 | Samsung Electronics Co., Ltd. | Method and device for configuring merge candidate list for decoding and encoding of interlayer video |
CA2943121C (en) | 2014-03-18 | 2020-09-08 | Arris Enterprises Llc | Scalable video coding using reference and scaled reference layer offsets |
WO2015139203A1 (en) | 2014-03-18 | 2015-09-24 | Mediatek Singapore Pte. Ltd. | Dlt signaling in 3d video coding |
US9716884B2 (en) * | 2014-03-20 | 2017-07-25 | Hfi Innovation Inc. | Method of signaling for mode selection in 3D and multi-view video coding |
WO2015168581A1 (en) * | 2014-05-01 | 2015-11-05 | Arris Enterprises, Inc. | Reference layer and scaled reference layer offsets for scalable video coding |
US9939253B2 (en) * | 2014-05-22 | 2018-04-10 | Brain Corporation | Apparatus and methods for distance estimation using multiple image sensors |
WO2015184470A1 (en) | 2014-05-30 | 2015-12-03 | Arris Enterprises, Inc. | Reference layer offset parameters for inter-layer prediction in scalable video coding |
US9514525B2 (en) * | 2014-07-31 | 2016-12-06 | Apple Inc. | Temporal filtering for image data using spatial filtering and noise history |
WO2016123774A1 (zh) * | 2015-02-05 | 2016-08-11 | 华为技术有限公司 | 编解码方法和编解码器 |
US10958927B2 (en) | 2015-03-27 | 2021-03-23 | Qualcomm Incorporated | Motion information derivation mode determination in video coding |
KR20170139560A (ko) | 2015-04-23 | 2017-12-19 | 오스텐도 테크놀로지스 인코포레이티드 | 완전 시차 광 필드 디스플레이 시스템들을 위한 방법들 및 장치들 |
EP3286737A1 (en) | 2015-04-23 | 2018-02-28 | Ostendo Technologies, Inc. | Methods for full parallax compressed light field synthesis utilizing depth information |
WO2016185079A1 (en) * | 2015-05-18 | 2016-11-24 | Nokia Technologies Oy | Filtering depth map image |
US10448030B2 (en) * | 2015-11-16 | 2019-10-15 | Ostendo Technologies, Inc. | Content adaptive light field compression |
CN109155847A (zh) * | 2016-03-24 | 2019-01-04 | 英迪股份有限公司 | 用于编码/解码视频信号的方法和装置 |
US10453431B2 (en) | 2016-04-28 | 2019-10-22 | Ostendo Technologies, Inc. | Integrated near-far light field display systems |
EP3466079B1 (en) * | 2016-05-24 | 2023-07-12 | Nokia Technologies Oy | Method and an apparatus and a computer program for encoding media content |
KR102550931B1 (ko) | 2016-11-29 | 2023-07-04 | 삼성전자주식회사 | 스테레오 매칭 방법 및 장치 |
US11087292B2 (en) * | 2017-09-01 | 2021-08-10 | Allstate Insurance Company | Analyzing images and videos of damaged vehicles to determine damaged vehicle parts and vehicle asymmetries |
US10645417B2 (en) * | 2017-10-09 | 2020-05-05 | Google Llc | Video coding using parameterized motion model |
GB2568253B (en) | 2017-11-08 | 2022-08-31 | Displaylink Uk Ltd | Stereoscopic image data compression |
US11252431B2 (en) | 2019-01-02 | 2022-02-15 | Telefonaktiebolaget Lm Ericsson (Publ) | Side motion refinement in video encoding/decoding systems |
CN118317115A (zh) * | 2019-01-23 | 2024-07-09 | 上海天荷电子信息有限公司 | 等比特精度预测、映射和分段编码的数据解码方法和装置 |
JP7384939B2 (ja) * | 2019-06-24 | 2023-11-21 | ホアウェイ・テクノロジーズ・カンパニー・リミテッド | 双予測のオプティカルフロー計算および双予測補正におけるブロックレベル境界サンプル勾配計算のための整数グリッド参照サンプルの位置を計算するための方法 |
US11805236B2 (en) | 2020-05-11 | 2023-10-31 | Niantic, Inc. | Generating stereo image data from monocular images |
CN111724422B (zh) * | 2020-06-29 | 2024-01-09 | 深圳市慧鲤科技有限公司 | 图像处理方法及装置、电子设备及存储介质 |
CN111953985B (zh) * | 2020-08-14 | 2024-04-05 | 上海数迹智能科技有限公司 | 一种基于tof深度相机的图像处理方法及可存储介质 |
CN115176459B (zh) * | 2021-01-25 | 2024-09-17 | 京东方科技集团股份有限公司 | 虚拟视点合成方法、电子设备和计算机可读介质 |
WO2023028965A1 (en) * | 2021-09-02 | 2023-03-09 | Nvidia Corporation | Hardware codec accelerators for high-performance video encoding |
US12062214B2 (en) * | 2021-12-27 | 2024-08-13 | Advanced Micro Devices, Inc. | Systems and method for generating Morton code |
CN116708739A (zh) * | 2022-02-28 | 2023-09-05 | 逐点半导体(上海)有限公司 | 用于3d图形中运动矢量的方法和系统 |
CN117381773A (zh) * | 2023-10-14 | 2024-01-12 | 广州市西克传感器有限公司 | 一种基于视觉的白车身定位系统 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5021739B2 (ja) | 2006-07-12 | 2012-09-12 | エルジー エレクトロニクス インコーポレイティド | 信号処理方法及び装置 |
JP5249242B2 (ja) | 2007-01-24 | 2013-07-31 | エルジー エレクトロニクス インコーポレイティド | ビデオ信号処理方法及び装置 |
BRPI0924045A2 (pt) * | 2009-01-07 | 2017-07-11 | Thomson Licensing | Estimação de profundidade conjunta |
RU2421933C2 (ru) * | 2009-03-24 | 2011-06-20 | Корпорация "САМСУНГ ЭЛЕКТРОНИКС Ко., Лтд." | Система и способ формирования и воспроизведения трехмерного видеоизображения |
WO2011005624A1 (en) * | 2009-07-04 | 2011-01-13 | Dolby Laboratories Licensing Corporation | Encoding and decoding architectures for format compatible 3d video delivery |
US20130176390A1 (en) * | 2012-01-06 | 2013-07-11 | Qualcomm Incorporated | Multi-hypothesis disparity vector construction in 3d video coding with depth |
-
2013
- 2013-06-13 US US13/916,977 patent/US9998726B2/en active Active
- 2013-06-17 ES ES13817171T patent/ES2864222T3/es active Active
- 2013-06-17 KR KR1020157001333A patent/KR101662963B1/ko active IP Right Grant
- 2013-06-17 EP EP13817171.5A patent/EP2865184B1/en active Active
- 2013-06-17 CN CN201380042551.8A patent/CN104521238B/zh active Active
- 2013-06-17 CA CA2876344A patent/CA2876344C/en active Active
- 2013-06-17 WO PCT/FI2013/050662 patent/WO2014009598A1/en active Application Filing
- 2013-06-17 RU RU2014153261A patent/RU2611240C2/ru active
- 2013-06-17 PL PL13817171T patent/PL2865184T3/pl unknown
-
2015
- 2015-01-16 ZA ZA2015/00317A patent/ZA201500317B/en unknown
Also Published As
Publication number | Publication date |
---|---|
EP2865184A1 (en) | 2015-04-29 |
EP2865184A4 (en) | 2016-01-27 |
RU2611240C2 (ru) | 2017-02-21 |
CN104521238B (zh) | 2018-07-20 |
RU2014153261A (ru) | 2016-08-10 |
PL2865184T3 (pl) | 2021-06-28 |
US20130342644A1 (en) | 2013-12-26 |
CA2876344A1 (en) | 2014-01-16 |
KR20150032714A (ko) | 2015-03-27 |
EP2865184B1 (en) | 2021-02-17 |
WO2014009598A1 (en) | 2014-01-16 |
ZA201500317B (en) | 2016-12-21 |
KR101662963B1 (ko) | 2016-10-05 |
CA2876344C (en) | 2017-05-16 |
US9998726B2 (en) | 2018-06-12 |
CN104521238A (zh) | 2015-04-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
ES2864222T3 (es) | Un aparato, un método y un programa informático para la codificación de vídeo 3D | |
EP2839660B1 (en) | An apparatus, a method and a computer program for video coding and decoding | |
JP6559337B2 (ja) | 360度パノラマビデオの符号化方法、符号化装置、及びコンピュータプログラム | |
US9930363B2 (en) | Harmonized inter-view and view synthesis prediction for 3D video coding | |
US9191646B2 (en) | Apparatus, a method and a computer program for video coding and decoding | |
JP6787667B2 (ja) | ビデオコーディングのための方法と装置 | |
RU2583040C2 (ru) | Устройство, способ и компьютерная программа для кодирования и декодирования видеосигналов | |
US20140009574A1 (en) | Apparatus, a method and a computer program for video coding and decoding | |
US20140218473A1 (en) | Method and apparatus for video coding and decoding | |
US20140098883A1 (en) | Method and apparatus for video coding | |
US20150245063A1 (en) | Method and apparatus for video coding | |
US20140003505A1 (en) | Method and apparatus for video coding | |
WO2013159330A1 (en) | An apparatus, a method and a computer program for video coding and decoding | |
WO2013113134A1 (en) | An apparatus, a method and a computer program for video coding and decoding | |
WO2013159300A1 (en) | An apparatus, a method and a computer program for video coding and decoding |