ES2698515T3 - Predictor para la intra-codificación de mapas de profundidad - Google Patents

Predictor para la intra-codificación de mapas de profundidad Download PDF

Info

Publication number
ES2698515T3
ES2698515T3 ES13877735T ES13877735T ES2698515T3 ES 2698515 T3 ES2698515 T3 ES 2698515T3 ES 13877735 T ES13877735 T ES 13877735T ES 13877735 T ES13877735 T ES 13877735T ES 2698515 T3 ES2698515 T3 ES 2698515T3
Authority
ES
Spain
Prior art keywords
partition
block
value
predicted
depth
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
ES13877735T
Other languages
English (en)
Inventor
Xin Zhao
Li Zhang
Ying Chen
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Application granted granted Critical
Publication of ES2698515T3 publication Critical patent/ES2698515T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/11Selection of coding mode or of prediction mode among a plurality of spatial predictive coding modes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/182Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a pixel
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/597Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding specially adapted for multi-view video sequence encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

Un procedimiento de intra-codificación o intra-decodificación de datos de vídeo usando predicción de DC, los datos de vídeo que comprenden datos de profundidad, el procedimiento que comprende: determinar (440) un patrón de partición para un bloque de valores de profundidad que comprende asignar una o más muestras del bloque a una primera partición y asignar una o más muestras diferentes del bloque a una segunda partición; comparar una primera muestra de profundidad de la fila superior del bloque con una muestra de profundidad N-1 de la fila superior del bloque, donde la fila superior tiene N muestras de profundidad, para determinar si se incluye una primera frontera de partición en la fila superior del bloque; comparar una primera muestra de profundidad de la columna izquierda del bloque con una muestra de profundidad N-1 de la columna izquierda del bloque, donde la columna izquierda tiene N muestras de profundidad, para determinar si se incluye una segunda frontera de partición en la columna izquierda del bloque; determinar (442) un primer valor de DC predicho para la primera partición y un segundo valor de DC predicho para la segunda partición, basándose en si la primera frontera de partición está incluida en la fila superior y si la segunda frontera de partición está incluida en la columna izquierda del bloque, en donde la determinación de dichos valores predichos de DC comprende seleccionar una o más muestras vecinas de referencia que lindan con la partición respectiva, y en donde las una o más muestras vecinas de referencia se seleccionan para evitar las fronteras de partición; y codificar o decodificar al menos una entre la primera partición y la segunda partición, basándose, respectivamente, en el primer o el segundo valor predicho.

Description

DESCRIPCIÓN
Predictor para la intra-codificación de mapas de profundidad
CAMPO TÉCNICO
[0001] Esta divulgación se refiere a la codificación de vídeo.
ANTECEDENTES
[0002] Las capacidades de vídeo digital pueden incorporarse en una amplia gama de dispositivos, incluyendo televisores digitales, sistemas de difusión directa digital, sistemas de difusión inalámbrica, asistentes digitales personales (PDA), ordenadores portátiles o de escritorio, ordenadores de tableta, lectores de libros electrónicos, cámaras digitales, dispositivos de grabación digital, reproductores de medios digitales, dispositivos de videojuegos, consolas de videojuegos, teléfonos celulares o de radio por satélite, los denominados "teléfonos inteligentes", dispositivos de videoconferencia, dispositivos de transmisión continua de vídeo y similares. Los dispositivos de vídeo digitales implementan técnicas de compresión de vídeo, tales como las descritas en las normas definidas por MPEG-2, Mp Eg -4, ITU-T H.263, ITU-T H.264/MPEG-4, Parte 10, Codificación Avanzada de Vídeo (AVC), la norma de Codificación de Vídeo de Alta Eficacia (HEVC) actualmente en desarrollo y las ampliaciones de dichas normas. Los dispositivos de vídeo pueden transmitir, recibir, codificar, decodificar y/o almacenar información de vídeo digital más eficazmente implementando dichas técnicas de compresión de vídeo.
[0003] Las técnicas de compresión de vídeo realizan la predicción espacial (intra-imagen) y/o la predicción temporal (entre imágenes) para reducir o eliminar la redundancia intrínseca en las secuencias de vídeo. Para la codificación de vídeo basada en bloques, un fragmento de vídeo (por ejemplo, una imagen o una parte de una imagen) puede ser dividida en bloques de vídeo, que también pueden ser denominados bloques arbolados, unidades de codificación (CU) y/o nodos de codificación. Los bloques de vídeo en un fragmento intra-codificado (I) de una imagen se codifican mediante predicción espacial con respecto a muestras de referencia en bloques vecinos en la misma imagen. Los bloques de vídeo en un fragmento inter-codificado (P o B) de una imagen pueden usar la predicción espacial con respecto a muestras de referencia en bloques vecinos en la misma imagen o la predicción temporal con respecto a muestras de referencia en otras imágenes de referencia.
[0004] La predicción espacial o temporal da como resultado un bloque predictivo para un bloque a codificar. Los datos residuales representan diferencias de píxeles entre el bloque original que se vaya a codificar y el bloque predictivo. Un bloque inter-codificado se codifica de acuerdo a un vector de movimiento que apunta a un bloque de muestras de referencia que forman el bloque predictivo, y los datos residuales que indican la diferencia entre el bloque codificado y el bloque predictivo. Un bloque intra-codificado se codifica de acuerdo a una modalidad de intra-codificación y los datos residuales. Para una mayor compresión, los datos residuales pueden transformarse desde el dominio espacial a un dominio de transformación, dando como resultado unos coeficientes de transformación residuales, que posteriormente se pueden cuantizar. Los coeficientes de transformación cuantizados, dispuestos inicialmente en una formación bidimensional, pueden explorarse con el fin de generar un vector unidimensional de coeficientes de transformación, y puede aplicarse la codificación por entropía para lograr aún más compresión.
SUMARIO
[0005] Las técnicas de esta divulgación generalmente se refieren a la intra-codificación de datos de profundidad en la codificación de vídeo. Por ejemplo, la intra-codificación de datos de profundidad puede incluir la determinación de un valor de profundidad predicho para un bloque que se está codificando actualmente, basándose en las muestras de profundidad que lindan con el bloque. En algunos casos, el bloque que se está codificando actualmente se puede dividir en más de una parte. En tales casos, todas las muestras de referencia que lindan con el bloque se pueden usar para determinar un valor predicho para cada partición del bloque. Los aspectos de esta divulgación se refieren a la determinación de un valor predicho para las particiones del bloque, basándose en menos muestras de referencia, lo que puede reducir la complejidad y aumentar la precisión.
[0006] En un ejemplo, aspectos de esta divulgación se refieren a un procedimiento de codificación de datos de vídeo que incluye determinar un patrón de partición para un bloque de valores de profundidad que comprende asignar una o más muestras del bloque a una primera partición y asignar una o más muestras del bloque a una segunda partición, determinar un valor predicho para al menos una entre la primera partición y la segunda partición, basándose en el patrón de partición determinado, y codificar la al menos una entre la primera partición y la segunda partición basándose en el valor predicho.
[0007] En otro ejemplo, aspectos de esta divulgación se refieren a un aparato para codificar datos de vídeo que incluye uno o más procesadores configurados para determinar un patrón de partición para un bloque de valores de profundidad, que comprende asignar una o más muestras del bloque a una primera partición y asignar una o más muestras del bloque a una segunda partición, determine un valor predicho para al menos una entre la primera partición y la segunda partición, basándose en el patrón de partición determinado, y codificar la al menos una entre la primera partición y la segunda partición basándose en el valor predicho.
[0008] En otro ejemplo, aspectos de esta divulgación se refieren a un aparato para codificar datos de vídeo que incluye medios para determinar un patrón de partición para un bloque de valores de profundidad, que comprende asignar una o más muestras del bloque a una primera partición y asignar una o más muestras del bloque a una segunda partición, medios para determinar un valor predicho para al menos una entre la primera partición y la segunda partición, basándose en el patrón de partición determinado, y medios para codificar la al menos una entre la primera partición y la segunda partición basándose en el valor predicho.
[0009] En otro ejemplo, aspectos de esta divulgación se refieren a un medio no transitorio legible por ordenador que comprende instrucciones almacenadas sobre el mismo que, cuando se ejecutan, hacen que uno o más procesadores determinen un patrón de partición para un bloque de valores de profundidad, que comprende asignar una o más muestras del bloque a una primera partición y la asignación de una o más muestras del bloque a una segunda partición, determinar un valor predicho para al menos una entre la primera partición y la segunda partición, basándose en el patrón de partición determinado, y codificar la al menos una entre la primera partición y la segunda partición, basándose en el valor predicho.
[0010] Los detalles de uno o más ejemplos de la divulgación se exponen en los dibujos adjuntos y la descripción siguiente. Otras características, objetivos y ventajas resultarán evidentes a partir de la descripción y de los dibujos, y a partir de las reivindicaciones.
BREVE DESCRIPCIÓN DE LOS DIBUJOS
[0011]
La figura 1 es un diagrama de bloques que ilustra un sistema ejemplar de codificación y decodificación de vídeo 10 que puede utilizar las técnicas de esta divulgación para la codificación de profundidad.
La figura 2 es un diagrama de bloques que ilustra un ejemplo de un codificador de vídeo que puede implementar técnicas para la codificación de profundidad.
La figura 3 es un diagrama de bloques que ilustra un ejemplo de un decodificador de vídeo que puede implementar técnicas para la codificación de profundidad.
La figura 4 generalmente ilustra las direcciones de predicción asociadas a modalidades de intra-predicción direccionales.
Las figuras 5A y 5B son diagramas conceptuales que ilustran ejemplos de modalidades de modelado de profundidad (DMM).
La figura 6 es un diagrama conceptual que ilustra una modalidad de codificación en cadena de fronteras regionales.
La figura 7 es un diagrama de bloques que ilustra la información de profundidad de intra-codificación utilizando codificación de profundidad simplificada (SDC).
La figura 8 es un diagrama de bloques que ilustra un bloque de datos de profundidad y muestras vecinas, que pueden usarse para determinar un valor de profundidad predicho para una o más particiones del bloque. La figura 9A es un diagrama de bloques que ilustra los valores de profundidad de un bloque que tiene una primera partición y una segunda partición, y valores de muestras vecinas.
La figura 9B es un diagrama de bloques que ilustra valores de profundidad predichos para la primera partición y la segunda partición del bloque mostrado en la figura 9A.
La figura 10 es un diagrama de bloques que ilustra un bloque de datos de profundidad y muestras vecinas, que pueden usarse para determinar un valor de profundidad predicho para una o más particiones del bloque, de acuerdo a aspectos de esta divulgación.
Las figuras 11A a 11H son diagramas de bloques que ilustran patrones ejemplares de partición de un bloque de datos de profundidad y muestras vecinas, a partir de los cuales determinar un valor de profundidad predicho, de acuerdo a aspectos de esta divulgación.
La figura 12 es un diagrama de flujo que ilustra un proceso ejemplar para determinar valores predichos para una o más particiones de un bloque de datos de profundidad, de acuerdo a aspectos de esta divulgación.
La figura 13 es un diagrama de flujo que ilustra un proceso ejemplar para codificar particiones de un bloque de datos de profundidad, de acuerdo a aspectos de esta divulgación.
DESCRIPCIÓN DETALLADA
[0012] En general, las técnicas de esta divulgación se refieren a la codificación de vídeo tridimensional (3D). Es decir, los datos de vídeo codificados usando estas técnicas pueden representarse y mostrarse para producir un efecto tridimensional. Por ejemplo, dos imágenes de diferentes vistas (es decir, correspondientes a dos perspectivas de cámara que tienen posiciones horizontales ligeramente diferentes) pueden mostrarse de manera esencialmente simultánea, de modo que una imagen sea vista por el ojo izquierdo de un espectador, y la otra imagen sea vista por el ojo derecho del espectador.
[0013] Este efecto tridimensional se puede lograr usando, por ejemplo, pantallas estereoscópicas o pantallas auto-estereoscópicas. Las pantallas estereoscópicas pueden usarse junto con gafas que filtran las dos imágenes debidamente. Por ejemplo, las gafas pasivas pueden filtrar las imágenes utilizando lentes polarizadas o lentes de diferentes colores para garantizar que el ojo adecuado vea la imagen adecuada. Las gafas activas, como otro ejemplo, pueden obturar rápidamente lentes alternas en coordinación con la pantalla estereoscópica, que puede alternar entre mostrar la imagen del ojo izquierdo y la del ojo derecho. Las pantallas auto-estereoscópicas muestran las dos imágenes de tal manera que no se necesiten gafas. Por ejemplo, las pantallas auto-estereoscópicas pueden incluir espejos o prismas que están configurados para hacer que cada imagen se proyecte en los ojos adecuados de un espectador.
[0014] Las técnicas de la presente divulgación se refieren a la codificación de datos de vídeo tridimensional mediante la codificación de datos de textura y profundidad. En general, el término "textura" se usa para describir valores de luminancia (es decir, brillo o "luma") de una imagen y valores de crominancia (es decir, color o "croma") de la imagen. En algunos ejemplos, una imagen de textura puede incluir un conjunto de datos de luminancia y dos conjuntos de datos de crominancia, para matices azules (Cb) y matices rojos (Cr). En ciertos formatos de croma, tales como 4:2:2 o 4:2:0, los datos de croma se someten a muestreo de frecuencia reducida con respecto a los datos de luma. Es decir, la resolución espacial de los píxeles de crominancia puede ser menor que la resolución espacial de los píxeles de luminancia correspondientes, por ejemplo, la mitad o un cuarto de la resolución de luminancia.
[0015] Los datos de profundidad generalmente describen valores de profundidad para los datos de textura correspondientes. Por ejemplo, una imagen de profundidad puede incluir un conjunto de píxeles de profundidad, cada uno de los cuales describe la profundidad para los datos de textura correspondientes. Los datos de profundidad pueden usarse para determinar la disparidad horizontal para los datos de textura correspondientes. Por lo tanto, un dispositivo que recibe los datos de textura y profundidad puede exhibir una primera imagen de textura para una vista (por ejemplo, una vista de ojo izquierdo) y usar los datos de profundidad para modificar la primera imagen de textura, para generar una segunda imagen de textura para la otra vista (por ejemplo, una vista de ojo derecho), desplazando valores de píxeles de la primera imagen en los valores de disparidad horizontal, determinados basándose en los valores de profundidad. En general, la disparidad horizontal (o simplemente "disparidad") describe el desplazamiento espacial horizontal de un píxel en una primera vista para un píxel correspondiente de la vista derecha, donde los dos píxeles corresponden a la misma parte del mismo objeto según se representa en las dos vistas.
[0016] En otros ejemplos adicionales, pueden definirse datos de profundidad para los píxeles en una dimensión z perpendicular al plano de imagen, de tal manera que una profundidad asociada a un píxel dado se define en relación con un plano de disparidad cero, definido para la imagen. Dicha profundidad puede usarse para crear disparidad horizontal para exhibir el píxel, de manera que el píxel se exhiba de manera diferente para los ojos izquierdo y derecho, en función del valor de profundidad de la dimensión z del píxel con respecto al plano de disparidad cero. El plano de disparidad cero puede cambiar para diferentes partes de una secuencia de vídeo, y la magnitud de la profundidad relativa al plano de disparidad cero también puede cambiar. Los píxeles situados en el plano de disparidad cero pueden definirse de forma similar para los ojos izquierdo y derecho. Los píxeles situados delante del plano de disparidad cero pueden mostrarse en diferentes ubicaciones para el ojo izquierdo y el derecho (por ejemplo, con disparidad horizontal) a fin de crear una percepción de que el píxel parece salir de la imagen en la dirección z perpendicular al plano de imagen. Los píxeles situados detrás el plano de disparidad nula pueden mostrarse con una leve difuminación, para una leve percepción de profundidad, o pueden mostrarse en ubicaciones diferentes para el ojo izquierdo y el derecho (por ejemplo, con disparidad horizontal que es opuesta a la de los píxeles situados delante del plano de disparidad cero). También pueden usarse muchas otras técnicas para expresar o definir datos de profundidad para una imagen.
[0017] Los datos de vídeo bidimensional generalmente se codifican como una secuencia de imágenes discretas, cada una de las cuales corresponde a una instancia temporal particular. Es decir, cada imagen tiene un tiempo de reproducción asociado con respecto a los tiempos de reproducción de otras imágenes en la secuencia. Estas imágenes pueden ser consideradas ilustraciones de textura o imágenes de textura. En la codificación de vídeo tridimensional basada en la profundidad, cada imagen de textura en una secuencia también puede corresponder a un mapa de profundidad. Es decir, un mapa de profundidad correspondiente a una imagen de textura describe datos de profundidad para la imagen de textura correspondiente. Los datos de vídeo de múltiples vistas pueden incluir datos para varias vistas diferentes, donde cada vista puede incluir una secuencia respectiva de imágenes de textura e imágenes de profundidad correspondientes.
[0018] Como se ha señalado anteriormente, las imágenes pueden corresponder a una instancia temporal particular. Los datos de vídeo pueden representarse usando una secuencia de unidades de acceso, donde cada unidad de acceso incluye todos los datos correspondientes a una instancia temporal particular. Así, por ejemplo, para datos de vídeo de vistas múltiples, más la profundidad, las imágenes de textura de cada vista para una instancia temporal común, más los mapas de profundidad para cada una de las imágenes de textura, pueden incluirse todos dentro de una unidad de acceso particular. Una unidad de acceso puede incluir datos para un componente de textura, correspondiente a una imagen de textura, y un componente de profundidad, correspondiente a un mapa de profundidad.
[0019] De esta manera, los datos de vídeo tridimensional pueden representarse utilizando un formato de vídeo de vistas múltiples más profundidad, en el cual las vistas capturadas o generadas (textura) están asociadas a los mapas de profundidad correspondientes. Además, en la codificación de vídeo tridimensional, las texturas y los mapas de profundidad se pueden codificar y multiplexar en un flujo de bits de vídeo tridimensional. Los mapas de profundidad se pueden codificar como imágenes en escala de grises, donde las muestras de "luma" (es decir, píxeles) de los mapas de profundidad representan valores de profundidad. En general, un bloque de datos de profundidad (un bloque de muestras de un mapa de profundidad) se puede denominar bloque de profundidad. Un valor de profundidad puede referirse a un valor de luminancia asociado a una muestra de profundidad. En cualquier caso, los procedimientos convencionales de intra-codificación e inter-codificación pueden aplicarse para la codificación de mapas de profundidad.
[0020] Los mapas de profundidad habitualmente incluyen bordes nítidos y áreas constantes, y los bordes en los mapas de profundidad usualmente presentan fuertes correlaciones con los datos de textura correspondientes. Debido a las diferentes estadísticas y correlaciones entre la textura y la profundidad correspondiente, diferentes esquemas de codificación han sido, y continúan siendo, diseñados para mapas de profundidad basándose en un códec de vídeo bidimensional.
[0021] Las técnicas de esta divulgación generalmente se refieren a la codificación de datos de profundidad, y pueden ser aplicables a la norma de Codificación de Vídeo de Alta Eficacia (HEVC). Por ejemplo, el Equipo Conjunto de Vídeo (JVT) desarrolló recientemente una versión base (bidimensional) de la HEVC que proporciona una mayor eficacia que las normas de codificación de vídeo desarrolladas previamente. Un equipo conjunto de colaboración en codificación de vídeo tridimensional (JCT-3V) está llevando a cabo actualmente el estudio de dos soluciones de vídeo tridimensional (3DV) como extensiones de la HEVC. Un ejemplo incluye una extensión de múltiples vistas de la HEVC que se conoce como MV-HEVC. Otro ejemplo incluye una extensión de vídeo tridimensional mejorada en profundidad (3D-HEVC). El más reciente software de referencia 3D-HTM, versión 5.1, para la 3D-HEVC está disponible públicamente en https://hevc.hhi.fraunhofer.de/svn/svn_3DVCSoftware/tags/HTM-5.1/. La más reciente descripción del software (número de documento: B1005) está disponible en http://phenix.itsudparis.eu/jct2/doc_end_user/documents/2_Shanghai/wg11/JCT3V-B1005-v1.zip.
[0022] En la 3D-HEVC, cada unidad de acceso contiene múltiples componentes de vista, cada uno contiene una identificación de vista única, o un índice de orden de vista, o una identificación de capa. Un componente de vista contiene un componente de vista de textura, así como un componente de vista de profundidad. Un componente de vista de textura se puede codificar como uno o más segmentos de textura, mientras que un componente de vista de profundidad se puede codificar como uno o más segmentos de profundidad.
[0023] En algunos casos, los datos de profundidad pueden estar intra-codificados, lo que se basa en la predicción espacial para reducir o eliminar la redundancia espacial dentro de una imagen dada. Por ejemplo, en la 3D-HEVC, un codificador de vídeo (por ejemplo, un codificador de vídeo o un decodificador de vídeo) puede usar modalidades de intra-predicción a partir de la norma base de HEVC (bidimensional) para codificar una unidad de intra-predicción de un segmento de profundidad. A continuación se describen intra-modalidades de la norma HEVC en mayor detalle con respecto a la figura 4.
[0024] En otro ejemplo, el codificador de vídeo puede usar modalidades de modelado de profundidad (DMM) para codificar una unidad de intra-predicción de un segmento de profundidad. Las DMM de 3D-HEVC se describen con mayor detalle a continuación con respecto a las figuras 5A y 5B. Con una DMM, el codificador de vídeo puede dividir un bloque de datos de profundidad (generalmente llamado bloque de profundidad) en regiones de predicción. Por ejemplo, el codificador de vídeo puede dividir un bloque de datos de profundidad usando un patrón Wedgelet, definido por una línea arbitraria trazada a través del bloque de datos de profundidad, o un patrón Contour, que divide el bloque de profundidad en dos regiones de forma irregular.
[0025] En otro ejemplo, el codificador de vídeo puede usar la codificación en cadena de fronteras regionales para codificar una unidad de intra-predicción de un segmento de profundidad. La codificación en cadena de fronteras regionales (denominada simplemente "codificación en cadena") se describe con mayor detalle a continuación con respecto a la figura 6. En general, el codificador de vídeo puede usar codificación en cadena para dividir un bloque de datos de profundidad en regiones de forma irregular, que luego pueden ser intra-codificadas.
[0026] En otro ejemplo más, el codificador de vídeo puede usar una modalidad de codificación de profundidad simplificada (SDC) para codificar una unidad de intra-predicción de un segmento de profundidad. La SDC se describe con más detalle a continuación con respecto a la figura 7. En algunos casos, como se describe en mayor detalle a continuación, la SDC puede implementarse junto con una DMM. A diferencia de los esquemas de codificación de intra-modalidad, descritos anteriormente, sin embargo, cuando se usa una modalidad de SDC, el codificador de vídeo no transforma o cuantiza los valores de profundidad residuales. Más bien, en algunos ejemplos, el codificador de vídeo puede codificar directamente los valores de profundidad residuales.
[0027] Como se ha señalado anteriormente, algunos esquemas de codificación que son particulares para la codificación de mapas de profundidad incluyen bloques de partición de un mapa de profundidad en varias regiones de predicción. Por ejemplo, los bloques de un mapa de profundidad pueden dividirse utilizando patrones de Wedgelet, patrones de Contour o patrones codificados en cadena. En general, el codificador de vídeo puede generar un valor predicho para cada partición del bloque de profundidad cuando se codifica el bloque de profundidad. En algunos casos, el codificador de vídeo puede determinar un valor predicho de profundidad de DC.
[0028] Un valor predicho de profundidad de DC es un único valor predicho que se aplica para predecir una partición completa. Por ejemplo, un "valor de DC" generalmente se refiere a un valor que sesga componentes de un bloque o partición de la misma manera. En un ejemplo con fines de ilustración, un valor de DC predicho puede determinarse habitualmente basándose en un promedio de muestras de profundidad vecinas situadas encima y a la izquierda del bloque que se está codificando, que luego se aplica para predecir todos los valores de profundidad del bloque. Sin embargo, como se describe en mayor detalle a continuación, un valor de DC predicho puede referirse en general a la aplicación de un único valor predicho a una partición, sin implicar necesariamente que se realice un promedio. Por ejemplo, en algunos casos, un valor de DC predicho puede estar basado en un único valor (sin promediar). En cualquier caso, un valor de DC predicho puede ser útil para bloques que no incluyen una amplia variación de valores, lo que puede hacer que los valores de DC predichos sean particularmente bien adecuados para valores de profundidad constantes.
[0029] El valor de DC predicho para cada partición se puede usar para codificar los datos de profundidad. Por ejemplo, un codificador de vídeo puede determinar un residuo para un bloque de profundidad que incluye una diferencia entre los valores de profundidad reales de cada partición y los respectivos valores de DC predichos de cada partición. El codificador de vídeo puede incluir el residuo en un flujo de bits codificado. Un decodificador de vídeo puede analizar el residuo del flujo de bits codificado, determinar los valores de DC predichos para cada partición y combinar el residuo para cada partición con los respectivos valores de DC predichos para cada partición, para determinar los valores reales de profundidad para el bloque.
[0030] En cualquier caso, como se ha indicado anteriormente, el valor predicho de una partición se puede determinar en base a las muestras de profundidad que lindan con el bloque de datos de profundidad que se está codificando actualmente. Por ejemplo, un codificador de vídeo puede determinar los valores predichos para cada partición de un bloque de profundidad en función de una fila de muestras vecinas que se sitúa encima del bloque de profundidad y una columna de muestras vecinas que se sitúa a la izquierda del bloque de profundidad.
[0031] En este ejemplo, después de dividir el bloque, el codificador de vídeo puede designar muestras vecinas que lindan con una primera partición como contribución a un predictor para la primera partición. Por ejemplo, el codificador de vídeo puede promediar todas las muestras que lindan con la fila superior o la columna izquierda del bloque de profundidad, que son vecinas de la primera partición, para generar un predictor para la primera partición. Del mismo modo, el codificador de vídeo puede designar muestras vecinas que lindan con una segunda partición como contribución a un predictor de la segunda partición. Por ejemplo, el codificador de vídeo puede promediar todas las muestras que lindan con la fila superior o la columna izquierda del bloque de profundidad, que son vecinas de la segunda partición, para generar un predictor para la segunda partición.
[0032] En el ejemplo descrito anteriormente, hay una serie de operaciones matemáticas asociadas a la generación de un valor de DC predicho. Por ejemplo, cada muestra adyacente contribuyente debe agregarse para determinar el valor promedio. Además, cada muestra adyacente contribuyente debe contarse para determinar el valor promedio. Además, se necesita una operación de división para determinar el valor promedio.
[0033] Además, el número de operaciones a realizar puede aumentar cuando aumenta el tamaño del bloque de profundidad. Como se describe con mayor detalle a continuación, en algunos ejemplos, la HEVC admite bloques de 32x32 de tamaño. En estos ejemplos, para un bloque de 32x32, hay 64 adiciones para calcular la suma de muestras de referencia que pertenecen a cada partición. También hay 64 adiciones para contar el número de muestras de referencia que pertenecen a cada partición. Tales operaciones pueden aumentar la complejidad de cálculo asociada a la determinación de un valor de DC predicho.
[0034] Además, las muestras de referencia (muestras adyacentes) pueden dividirse de forma incorrecta en el ejemplo descrito anteriormente. Por ejemplo, una muestra de referencia y un valor de profundidad vecino pueden tener valores esencialmente diferentes cerca de un borde de una partición. En este ejemplo, la muestra de referencia puede distorsionar el valor predicho de la partición, lo que puede crear ineficacias de codificación.
[0035] El siguiente documento:
SHUJIE LIU ET AL: "New Depth Coding Techniques With Utilization of Corresponding Video" ["Nuevas técnicas de codificación de profundidad con utilización del vídeo correspondiente"], TRANSACCIONES DEL IEEE SOBRE DIFUSIÓN, CENTRO DE SERVICIOS DEL IEEE, PISCATAWAY, NJ, EE UU, vol. 57, n22, junio de 2011, páginas 551 a 561, ISSN: 0018-9316, DOI: 10,1109/TBC.2011.2120750
divulga una técnica de intra-predicción e inter-predicción de mapas de profundidad, en la que se evita la predicción a través de las fronteras de división del bloque de profundidad.
[0036] Los aspectos de esta divulgación generalmente se refieren a técnicas para determinar un valor de profundidad predicho cuando se intra-codifica un mapa de profundidad. Por ejemplo, de acuerdo a aspectos de esta divulgación, un codificador de vídeo puede determinar inicialmente un patrón de partición para un bloque de valores de profundidad. El patrón de partición puede indicar si la fila superior de valores de profundidad del bloque incluye valores de profundidad asignados solamente a una primera partición, valores de profundidad asignados solamente a una segunda partición, o valores de profundidad asignados tanto a la primera partición como a la segunda partición. El patrón de partición también puede indicar si la columna izquierda de los valores de profundidad del bloque incluye valores de profundidad asignados solamente a la primera partición, valores de profundidad asignados solamente a la segunda partición o valores de profundidad asignados tanto a la primera como a la segunda partición.
[0037] Basándose en el patrón de partición, el codificador de vídeo puede determinar muestras vecinas a partir de las cuales determinar los valores de profundidad predichos para la primera partición y / o la segunda partición. Por ejemplo, el codificador de vídeo puede seleccionar una o más muestras vecinas predeterminadas basándose en el patrón de partición. El codificador de vídeo puede usar los valores seleccionados para determinar un valor de DC predicho para una partición, o ambas.
[0038] En un ejemplo con fines de ilustración, si la fila superior de valores de profundidad solo incluye valores de profundidad asignados a la primera partición, el codificador de vídeo puede seleccionar una única muestra de referencia vecina en una fila encima del bloque de profundidad como un valor de profundidad predicho para la primera partición. Este ejemplo aprovecha la característica típica de los datos de profundidad para incluir grandes áreas constantes. Por ejemplo, dado que todos los valores de profundidad de la fila superior del bloque se incluyen en la misma partición, se supone que cualquier valor de profundidad lindante tendrá el mismo valor, o un valor similar al de la partición. En consecuencia, en lugar de promediar todas las muestras vecinas (como se ha descrito anteriormente), el codificador de vídeo puede seleccionar una o más muestras representativas como un valor de DC predicho para la partición.
[0039] De esta forma, las técnicas pueden reducir el coste de cálculo asociado a la determinación de un valor de profundidad predicho para las particiones. Por ejemplo, con respecto al ejemplo descrito anteriormente, en el que se consideran todas las muestras vecinas, las técnicas pueden reducir o eliminar el número de operaciones de suma y división que se realizan. Además, las técnicas pueden aumentar la precisión del valor de profundidad predicho. Por ejemplo, como se describe con mayor detalle a continuación, el codificador de vídeo puede reducir la introducción de errores de partición (que pueden producir un predictor inexacto) cerca de las fronteras de partición, seleccionando una o más muestras vecinas representativas ubicadas lejos de las fronteras de partición.
[0040] La figura 1 es un diagrama de bloques que ilustra un sistema ejemplar de codificación y decodificación de vídeo 10 que puede utilizar las técnicas de esta divulgación para la codificación de profundidad. Como se muestra en la figura 1, el sistema 10 incluye un dispositivo de origen 12 que proporciona datos de vídeo codificados, a ser decodificados en un momento posterior por un dispositivo de destino 14. En particular, el dispositivo de origen 12 proporciona los datos de vídeo al dispositivo de destino 14 mediante un medio legible por ordenador 16. El dispositivo de origen 12 y el dispositivo de destino 14 pueden comprender cualquiera entre una amplia gama de dispositivos, incluyendo ordenadores de sobremesa, ordenadores plegables (es decir, portátiles), ordenadores de tableta, decodificadores, equipos telefónicos de mano tales como los denominados teléfonos “inteligentes”, los denominados paneles “inteligentes”, televisores, cámaras, dispositivos de visualización, reproductores de medios digitales, consolas de videojuegos, un dispositivo de transmisión continua de vídeo o similares. En algunos casos, el dispositivo de origen 12 y el dispositivo de destino 14 pueden estar equipados para la comunicación inalámbrica.
[0041] El dispositivo de destino 14 puede recibir los datos de vídeo codificados, a decodificar mediante el medio legible por ordenador 16. El medio legible por ordenador 16 puede comprender cualquier tipo de medio o dispositivo capaz de desplazar los datos de vídeo codificados desde el dispositivo de origen 12 al dispositivo de destino 14. En un ejemplo, el medio legible por ordenador 16 puede comprender un medio de comunicación que habilita el dispositivo de origen 12 para transmitir datos de vídeo codificados directamente al dispositivo de destino 14 en tiempo real.
[0042] Los datos de vídeo codificados pueden modularse de acuerdo a una norma de comunicación, tal como un protocolo de comunicación inalámbrica, y transmitirse al dispositivo de destino 14. El medio de comunicación puede comprender cualquier medio de comunicación inalámbrica o cableada, tal como un espectro de radiofrecuencia (RF) o una o más líneas de transmisión física. El medio de comunicación puede formar parte de una red basada en paquetes, tal como una red de área local, una red de área amplia o una red global tal como Internet. El medio de comunicación puede incluir encaminadores, conmutadores, estaciones base o cualquier otro equipo que pueda ser útil para facilitar la comunicación desde el dispositivo de origen 12 al dispositivo de destino 14.
[0043] En algunos ejemplos, pueden emitirse datos codificados desde la interfaz de salida 22 hasta un dispositivo de almacenamiento. De forma similar, se puede acceder a los datos codificados del dispositivo de almacenamiento mediante una interfaz de entrada. El dispositivo de almacenamiento puede incluir cualquiera entre una diversidad de medios de almacenamiento de datos, de acceso distribuido o local, tales como una unidad de disco duro, discos Blu-ray, discos DVD, discos CD-ROM, memoria flash, memoria volátil o no volátil u otros medios adecuados cualesquiera de almacenamiento digital para almacenar datos de vídeo codificados. En un ejemplo adicional, el dispositivo de almacenamiento puede corresponder a un servidor de ficheros o a otro dispositivo de almacenamiento intermedio que pueda almacenar los datos de vídeo codificados generados por el dispositivo de origen 12.
[0044] El dispositivo de destino 14 puede acceder a datos de vídeo almacenados del dispositivo de almacenamiento mediante transmisión continua o descarga. El servidor de ficheros puede ser cualquier tipo de servidor capaz de almacenar datos de vídeo codificados y transmitir esos datos de vídeo codificados al dispositivo de destino 14. Los ejemplos de servidores de ficheros incluyen un servidor de la Red (por ejemplo, para una sede de la Red), un servidor del FTP, dispositivos de almacenamiento conectados en red (NAS) o una unidad de disco local. El dispositivo de destino 14 puede acceder a los datos de vídeo codificados mediante cualquier conexión de datos estándar, incluyendo una conexión a Internet. Esto puede incluir un canal inalámbrico (por ejemplo, una conexión de Wi-Fi), una conexión cableada (por ejemplo, DSL, módem de cable, etc.), o una combinación de ambos que sea adecuada para acceder a datos de vídeo codificados, almacenados en un servidor de ficheros. La transmisión de datos de vídeo codificados desde el dispositivo de almacenamiento puede ser una transmisión continua, una transmisión de descarga o una combinación de ambas.
[0045] Las técnicas de esta divulgación no están limitadas necesariamente a aplicaciones o configuraciones inalámbricas. Las técnicas pueden aplicarse a la codificación de vídeo como soporte de cualquiera entre una diversidad de aplicaciones de multimedios, tales como difusiones de televisión por el aire, transmisiones de televisión por cable, transmisiones de televisión por satélite, transmisiones continuas de vídeo por Internet, tales como el flujo de transmisión adaptativo dinámico sobre HTTP (DASH), el vídeo digital que se codifica en un medio de almacenamiento de datos, la decodificación de vídeo digital almacenado en un medio de almacenamiento de datos, u otras aplicaciones. En algunos ejemplos, el sistema 10 puede configurarse para prestar soporte a la transmisión de vídeo unidireccional o bidireccional, para dar soporte a aplicaciones tales como la transmisión continua de vídeo, la reproducción de vídeo, la difusión de vídeo y/o la videotelefonía.
[0046] En el ejemplo de la figura 1, el dispositivo de origen 12 incluye un origen de vídeo 18, un codificador de vídeo 20 y una interfaz de salida 22. El dispositivo de destino 14 incluye una interfaz de entrada 28, un decodificador de vídeo 30 y un dispositivo de visualización 32. De acuerdo a esta divulgación, el codificador de vídeo 20 del dispositivo de origen 12 puede estar configurado para aplicar las técnicas de predicción de vectores de movimiento en la codificación de vistas múltiples. En otros ejemplos, un dispositivo de origen y un dispositivo de destino pueden incluir otros componentes o disposiciones. Por ejemplo, el dispositivo de origen 12 puede recibir datos de vídeo desde un origen de vídeo externo 18, tal como una cámara externa. Asimismo, el dispositivo de destino 14 puede interactuar con un dispositivo de visualización externo, en lugar de incluir un dispositivo de visualización integrado.
[0047] El sistema ilustrado 10 de la figura 1 es simplemente un ejemplo. Las técnicas para la codificación de profundidad pueden realizarse mediante cualquier dispositivo de codificación y/o decodificación de vídeo digital. Aunque, en general, las técnicas de esta divulgación se llevan a cabo mediante un dispositivo de codificación de vídeo, las técnicas también pueden llevarse a cabo mediante un codificador/decodificador de vídeo, denominado habitualmente "CÓDEC". Además, las técnicas de esta divulgación también pueden llevarse a cabo mediante un pre-procesador de vídeo. El dispositivo de origen 12 y el dispositivo de destino 14 son simplemente ejemplos de dichos dispositivos de codificación en los que el dispositivo de origen 12 genera datos de vídeo codificados para su transmisión al dispositivo de destino 14. En algunos ejemplos, los dispositivos 12, 14 pueden funcionar de manera esencialmente simétrica, de modo que cada uno de los dispositivos 12, 14 incluya componentes de codificación y de decodificación de vídeo. Por tanto, el sistema 10 puede prestar soporte a la transmisión de vídeo unidireccional o bidireccional entre los dispositivos de vídeo 12, 14, por ejemplo para el flujo de vídeo, la reproducción de vídeo, la difusión de vídeo o la videotelefonía.
[0048] El origen de vídeo 18 del dispositivo de origen 12 puede incluir un dispositivo de captura de vídeo, tal como una cámara de vídeo, un archivo de vídeo que contiene vídeo capturado previamente y/o una interfaz de alimentación de vídeo para recibir vídeo desde un proveedor de contenidos de vídeo. Como alternativa adicional, el origen de vídeo 18 puede generar datos, basados en gráficos por ordenador, como el vídeo de origen, o una combinación de vídeo en directo, vídeo archivado y vídeo generado por ordenador. En algunos casos, si el origen de vídeo 18 es una videocámara, el dispositivo de origen 12 y el dispositivo de destino 14 pueden formar los denominados teléfonos con cámara o videoteléfonos. Sin embargo, como se ha mencionado anteriormente, las técnicas descritas en esta divulgación pueden ser aplicables a la codificación de vídeo en general, y pueden aplicarse a aplicaciones inalámbricas y/o cableadas. En cada caso, el vídeo capturado, pre-capturado o generado por ordenador puede codificarse mediante el codificador de vídeo 20. La información de vídeo codificada puede entonces emitirse mediante la interfaz de salida 22 hacia un medio legible por ordenador 16.
[0049] El medio legible por ordenador 16 puede incluir medios transitorios, tales como una difusión inalámbrica o una transmisión de red cableada, o medios de almacenamiento (es decir, medios de almacenamiento no transitorio), tales como un disco duro, una unidad de memoria flash, un disco compacto, un disco de vídeo digital, un disco Blu-ray u otros medios legibles por ordenador. En algunos ejemplos, un servidor de red (no mostrado) puede recibir datos de vídeo codificados desde el dispositivo de origen 12 y proporcionar los datos de vídeo codificados al dispositivo de destino 14, por ejemplo, mediante transmisión por red. De manera similar, un dispositivo informático de una utilidad de producción de un medio, tal como una utilidad de grabación de discos, puede recibir datos de vídeo codificados desde el dispositivo de origen 12 y producir un disco que contiene los datos de vídeo codificados. Por lo tanto, puede entenderse que el medio legible por ordenador 16 incluye uno o más medios legibles por ordenador de diversas formas, en varios ejemplos.
[0050] Esta divulgación puede referirse en general al codificador de vídeo 20 que "señaliza" cierta información a otro dispositivo, tal como el decodificador de vídeo 30. Sin embargo, debería entenderse que el codificador de vídeo 20 puede señalizar información asociando ciertos elementos sintácticos con varias partes codificadas de datos de vídeo. Es decir, el codificador de vídeo 20 puede "señalizar" datos almacenando ciertos elementos sintácticos en encabezados de varias partes codificadas de datos de vídeo. En algunos casos, dichos elementos sintácticos pueden ser codificados y almacenados (por ejemplo, almacenados en el medio legible por ordenador 16) antes de ser recibidos y decodificados por el decodificador de vídeo 30. Por tanto, el término "señalización" puede referirse en general a la comunicación de datos sintácticos u otros, usados para decodificar datos de vídeo comprimidos, ya sea que dicha comunicación se produzca en tiempo real o casi real o en un intervalo de tiempo, tal como podría ocurrir cuando se almacenan elementos sintácticos en un medio en el momento de la codificación, que entonces pueden ser recuperados por un dispositivo de decodificación en cualquier momento después de ser almacenados en este medio.
[0051] La interfaz de entrada 28 del dispositivo de destino 14 recibe información desde el medio legible por ordenador 16. La información del medio legible por ordenador 16 puede incluir información sintáctica definida por el codificador de vídeo 20, que también usa el decodificador de vídeo 30, que incluye elementos sintácticos que describen características y/o procesamiento de bloques y otras unidades codificadas, por ejemplo, grupos de imágenes (GOP). El dispositivo de visualización 32 muestra los datos de vídeo decodificados a un usuario, y puede comprender cualquiera entre diversos dispositivos de visualización, tales como un tubo de rayos catódicos (CRT), una pantalla de cristal líquido (LCD), una pantalla de plasma, una pantalla de diodos orgánicos emisores de luz (OLED) u otro tipo de dispositivo de visualización.
[0052] Aunque no se muestra en la figura 1, en algunos aspectos, el codificador de vídeo 20 y el decodificador de vídeo 30 pueden estar integrados, cada uno de ellos, en un codificador y decodificador de audio, y pueden incluir unidades MUX-DEMUX adecuadas, u otro tipo de hardware y software, para gestionar la codificación tanto de audio como de vídeo en un flujo de datos común o en flujos de datos diferentes. Si procede, las unidades MUX-DEMUX pueden ajustarse al protocolo de multiplexación ITU H.223 o a otros protocolos, tales como el protocolo de datagramas de usuario (UDP).
[0053] Cada uno entre el codificador de vídeo 20 y el decodificador de vídeo 30 puede implementarse como cualquiera entre una amplia variedad de circuitos codificadores o decodificadores adecuados, según corresponda, tales como uno o más microprocesadores, procesadores de señales digitales (DSP), circuitos integrados específicos de la aplicación (ASIC), formaciones de compuertas programables en el terreno (FPGA), circuitos de lógica discreta, software, hardware, firmware o cualquier combinación de los mismos. Cada uno entre el codificador de vídeo 20 y el decodificador de vídeo 30 puede estar incluido en uno o más codificadores o decodificadores, cada uno de los cuales puede estar integrado como parte de un codificador/decodificador (CÓDEC) de vídeo combinado. Un dispositivo que incluye el codificador de vídeo 20 y/o el decodificador de vídeo 30 puede comprender un circuito integrado, un microprocesador y/o un dispositivo de comunicación inalámbrica, tal como un teléfono celular.
[0054] El codificador de vídeo 20 y el decodificador de vídeo 30 pueden funcionar de acuerdo a una norma de codificación de vídeo, tal como la norma ITU-T H.264/MPEG-4 (AVC), que fue formulada por el Grupo de Expertos en Codificación de Vídeo de ITU-T (VCEG), junto con el Grupo de Expertos en Imágenes en Movimiento (MPEG) de ISO/IEC, como el producto de una colaboración colectiva conocida como Equipo Mixto de Vídeo (JVT, por sus siglas en inglés). Otra norma de codificación de vídeo incluye la norma H.264, que incluye sus extensiones de Codificación de Vídeo Ajustable a Escala (SVC) y de Codificación de Vídeo de Vistas Múltiples (MVC). La norma H.264 se describe en la Recomendación H.264 de la ITU-T, Codificación Avanzada de Vídeo, para servicios audiovisuales genéricos, por el Grupo de Estudio de la ITU-T. El Equipo Mixto de vídeo (JVT) continúa trabajando en ampliaciones de la H.264/MPEG-4 AVC. El último borrador conjunto de MVC se describe en "Advanced video coding for generic audiovisual services" ["Codificación de vídeo avanzada para servicios audiovisuales genéricos"], Recomendación H.264 de la ITU-T, marzo de 2010.
[0055] Como alternativa, el codificador de vídeo 20 y el decodificador de vídeo 30 pueden funcionar de acuerdo a una norma de Codificación de Vídeo de Alta Eficacia (HEVC), y pueden ajustarse al Modelo de Prueba de la HEVC (HM). La HEVC fue desarrollada por el JCT-VC del VCEG de la ITU-T y el MPEG de la ISO / IEC. Un borrador reciente de la HEVC está disponible en http://phenix.intevry.fr/jct/doc_end_user/documents/12_Geneva/wg11/JCTVC-L1003-v14.zip. Los esfuerzos de normalización de la HEVC se basaron en un modelo en evolución de un dispositivo de codificación de vídeo denominado modelo de prueba de la HEVC (HM). El HM supone varias capacidades adicionales de los dispositivos de codificación de vídeo respecto a dispositivos existentes, de acuerdo a, por ejemplo, la norma ITU-T H.264/AVC. Por ejemplo, mientras que la norma H.264 proporciona nueve modalidades de codificación de intra-predicción, e1HM puede proporcionar hasta treinta y cinco modalidades de codificación de intra-predicción.
[0056] En general, el modelo de funcionamiento del HM describe que una imagen (o "trama") de vídeo puede dividirse en una secuencia de bloques arbolados o unidades de codificación de máximo tamaño (LCU), que incluyen muestras tanto de luma como de croma. Los datos sintácticos dentro de un flujo de bits pueden definir un tamaño para la LCU, que es la máxima unidad de codificación en lo que respecta al número de píxeles. Un fragmento incluye un cierto número de bloques arbolados consecutivos en orden de codificación. Una trama o imagen de vídeo puede dividirse en uno o más fragmentos. Cada bloque arbolado puede dividirse en unidades de codificación (CU) de acuerdo a un árbol cuádruple. En general, una estructura de datos de árbol cuádruple incluye un nodo por CU, con un nodo raíz correspondiente al bloque arbolado. Si una CU se divide en cuatro sub-CU, el nodo correspondiente a la CU incluye cuatro nodos hoja, cada uno de los cuales corresponde a una de las sub­ CU.
[0057] Cada nodo de la estructura de datos en árbol cuádruple puede proporcionar datos sintácticos para la CU correspondiente. Por ejemplo, un nodo en el árbol cuádruple puede incluir un indicador de división, que indica si la CU correspondiente al nodo está dividida en varias sub-CU. Los elementos sintácticos para una CU pueden definirse de manera recursiva y pueden depender de si la CU está dividida en varias sub-CU. Si una CU no está dividida adicionalmente, se denomina CU hoja. En esta divulgación, cuatro sub-CU de una CU hoja también se denominarán CU hojas incluso aunque no haya ninguna división explícita de la CU hoja original. Por ejemplo, si una CU con un tamaño de 16x16 no se divide adicionalmente, las cuatro sub-CU de tamaño 8x8 también se denominarán CU hojas aunque la CU de tamaño 16x16 no se haya dividido nunca.
[0058] Una CU tiene un propósito similar a un macrobloque de la norma H.264, excepto porque una CU no tiene una distinción de tamaño. Por ejemplo, un bloque arbolado puede dividirse en cuatro nodos secundarios (también denominados sub-CU) y cada nodo secundario puede a su vez ser un nodo principal y dividirse en otros cuatro nodos secundarios. Un nodo secundario final, no dividido, denominado un nodo hoja del árbol cuádruple, comprende un nodo de codificación, también denominado CU hoja. Los datos sintácticos asociados a un flujo de bits codificado pueden definir un número máximo de veces en que puede dividirse un bloque arbolado, denominado profundidad de CU máxima, y también pueden definir un tamaño mínimo de los nodos de codificación. Por consiguiente, un flujo de bits también puede definir una unidad de codificación de tamaño mínimo (SCU). Esta divulgación utiliza el término "bloque" para referirse a cualquiera entre una CU, PU o TU, en el contexto de la HEVC, o a estructuras de datos similares en el contexto de otras normas (por ejemplo, macrobloques y sub-bloques de los mismos en la norma H.264/AVC).
[0059] Una CU incluye un nodo de codificación y unidades de predicción (PU) y unidades de transformación (TU) asociadas al nodo de codificación. Un tamaño de la CU corresponde a un tamaño del nodo de codificación y debe ser de forma cuadrada. El tamaño de la CU puede variar desde 8x8 píxeles hasta el tamaño del bloque arbolado, con un máximo de 64x64 píxeles o más. Cada CU puede contener una o más PU y una o más TU. Los datos sintácticos asociados a una CU pueden describir, por ejemplo, la división de la Cu en una o más PU. Las modalidades de división pueden diferir entre si la CU está codificada en modalidad de salto o directa, codificada en modalidad de intra-predicción o codificada en modalidad de inter-predicción. Las PU pueden dividirse para tener forma no cuadrada. Los datos sintácticos asociados a una CU también pueden describir, por ejemplo, la división de la CU en una o más TU de acuerdo a un árbol cuádruple. Una TU puede tener forma cuadrada o no cuadrada (por ejemplo, rectangular).
[0060] La norma HEVC admite transformaciones de acuerdo a las TU, que pueden ser diferentes para diferentes CU. El tamaño de las TU típicamente se basa en el tamaño de las PU de una CU dada, definida para una LCU dividida, aunque puede que no siempre sea así. Las TU son habitualmente del mismo tamaño o de un tamaño más pequeño que las PU. En algunos ejemplos, las muestras residuales correspondientes a una CU pueden subdividirse en unidades más pequeñas utilizando una estructura de árbol cuádruple conocida como "árbol cuádruple residual" (RQT). Los nodos hoja del RQT pueden denominarse unidades de transformación (TU). Los valores de diferencias de píxeles, asociados a las TU, pueden transformarse para generar coeficientes de transformación, que pueden cuantizarse.
[0061] Una CU hoja puede incluir una o más unidades de predicción (PU). En general, una PU representa una zona espacial correspondiente a la totalidad, o a una parte, de la CU correspondiente, y puede incluir datos para recuperar una muestra de referencia para la PU. Además, una PU incluye datos relacionados con la predicción. Por ejemplo, cuando la PU está codificada en intra-modalidad, pueden incluirse datos para la PU en un árbol cuádruple residual (RQT), que pueden incluir datos que describen una modalidad de intra-predicción para una TU correspondiente a la PU. Como otro ejemplo, cuando la PU está codificada en inter-modalidad, la PU puede incluir datos que definen uno o más vectores de movimiento para la PU. Los datos que definen el vector de movimiento para una PU pueden describir, por ejemplo, un componente horizontal del vector de movimiento, un componente vertical del vector de movimiento, una resolución para el vector de movimiento (por ejemplo, precisión de un cuarto de píxel o precisión de un octavo de píxel), una imagen de referencia a la que apunta el vector de movimiento y/o una lista de imágenes de referencia (por ejemplo, la Lista 0, la Lista 1 o la Lista C) para el vector de movimiento.
[0062] Una CU hoja que tiene una o más PU también puede incluir una o más unidades de transformación (TU). Las unidades de transformación pueden especificarse usando un RQT (también denominado estructura de árbol cuádruple de TU), como se ha analizado anteriormente. Por ejemplo, un indicador de división puede indicar si una CU hoja está dividida en cuatro unidades de transformación. A continuación, cada unidad de transformación puede dividirse adicionalmente en sub-TU adicionales. Cuando una TU no se divide adicionalmente, puede denominarse una TU hoja. En general, en lo que respecta a la intra-codificación, todas las TU hoja que pertenecen a una CU hoja comparten la misma modalidad de intra-predicción. Es decir, la misma modalidad de intra-predicción se aplica en general para calcular valores predichos para todas las TU de una CU hoja. En lo que respecta a la intracodificación, un codificador de vídeo 20 puede calcular un valor residual para cada TU hoja usando la modalidad de intra-predicción, como una diferencia entre la parte de la CU correspondiente a la TU y el bloque original. Una TU no está necesariamente limitada al tamaño de una PU. De este modo, las TU pueden ser mayores o menores que una PU. En lo que respecta a la intra-codificación, una PU puede estar co-localizada con una TU hoja correspondiente para la misma CU. En algunos ejemplos, el tamaño máximo de una TU hoja puede corresponder al tamaño de la Cu hoja correspondiente.
[0063] Además, las TU de las CU hojas también pueden asociarse a respectivas estructuras de datos de árbol cuádruple, denominadas árboles cuádruples residuales (RQT). Es decir, una CU hoja puede incluir un árbol cuádruple que indica cómo la CU hoja está dividida en las TU. El nodo raíz de un árbol cuádruple de TU corresponde en general a una CU hoja, mientras que el nodo raíz de un árbol cuádruple de CU corresponde en general a un bloque arbolado (o LCU). Las TU del RQT que no están divididas se denominan TU hojas. En general, esta divulgación usa los términos CU y TU para hacer referencia a una CU hoja y a una TU hoja, respectivamente, a no ser que se indique lo contrario.
[0064] Una secuencia de vídeo incluye habitualmente una serie de imágenes. Según lo descrito en el presente documento, los términos "imagen" y "trama" pueden usarse de forma intercambiable. Es decir, la imagen que contiene datos de vídeo puede denominarse trama de vídeo o simplemente "trama". Un grupo de imágenes (GOP) comprende, en general, una serie de una o más de las imágenes de vídeo. Un GOP puede incluir datos sintácticos en una cabecera del GOP, en una cabecera de una o más de las imágenes o en otras ubicaciones, que describen un cierto número de imágenes incluidas en el GOP. Cada fragmento de una imagen puede incluir datos sintácticos de fragmento que describen una modalidad de codificación para el fragmento respectivo. Un codificador de vídeo 20 actúa típicamente sobre bloques de vídeo dentro de fragmentos de vídeo individuales con el fin de codificar los datos de vídeo. Un bloque de vídeo puede corresponder a un nodo de codificación dentro de una CU. Los bloques de vídeo pueden presentar tamaños fijos o variables y pueden diferir en tamaño de acuerdo a una norma de codificación especificada.
[0065] En un ejemplo, el HM presta soporte a la predicción en diversos tamaños de PU. Suponiendo que el tamaño de una CU particular es 2Nx2N, el HM da soporte a la intra-predicción en tamaños de PU de 2Nx2N o NxN, y a la inter-predicción en tamaños de PU simétricas de 2Nx2N, 2NxN, Nx2N o NxN. E1HM también da soporte a la división asimétrica para la inter-predicción en tamaños de PU de 2NxnU, 2NxnD, nLx2N y nRx2N. En la división asimétrica, una dirección de una CU no está dividida, mientras que la otra dirección está dividida entre el 25% y el 75%. La parte de la CU correspondiente a la división del 25% está indicada por una “n” seguida de una indicación de “arriba”, “abajo”, “izquierda” o “derecha”. Así pues, por ejemplo, “2NxnU” se refiere a una CU de tamaño 2Nx2N que está dividida horizontalmente con una PU de tamaño 2Nx0,5N por encima y una PU de tamaño 2Nx1,5N por debajo.
[0066] En esta divulgación, "NxN" y "N por N" pueden usarse indistintamente para hacer referencia a las dimensiones de píxeles de un bloque de vídeo en términos de dimensiones verticales y horizontales, por ejemplo, 16x16 píxeles o 16 por 16 píxeles. En general, un bloque de tamaño 16x16 tendrá 16 píxeles en la dirección vertical (y = 16) y 16 píxeles en la dirección horizontal (x = 16). Asimismo, un bloque de tamaño NxN presenta, en general, N píxeles en una dirección vertical y N píxeles en una dirección horizontal, donde N representa un valor entero no negativo. Los píxeles en un bloque pueden disponerse en filas y columnas. Además, no es necesario que los bloques presenten necesariamente el mismo número de píxeles en la dirección horizontal y en la dirección vertical. Por ejemplo, los bloques pueden comprender NxM píxeles, donde M no es necesariamente igual a N.
[0067] Tras la codificación intra-predictiva o inter-predictiva utilizando las PU de una CU, el codificador de vídeo 20 puede calcular datos residuales para las TU de la CU. Las PU pueden comprender datos sintácticos que describen un procedimiento o modalidad de generación de datos de píxeles predictivos en el dominio espacial (también denominado el dominio de píxeles) y las TU pueden comprender coeficientes en el dominio de transformación, tras la aplicación de una transformación, por ejemplo, una transformación de coseno discreta (DCT), una transformación entera, una transformación de ondículas o una transformación conceptualmente similar, a los datos de vídeo residuales. Los datos residuales pueden corresponder a diferencias de píxeles entre píxeles de la imagen no codificada y los valores de predicción correspondientes a las PU. El codificador de vídeo 20 puede formar las TU incluyendo los datos residuales para la CU y, a continuación, transformar las TU para generar coeficientes de transformación para la CU.
[0068] Tras cualquier transformación para generar coeficientes de transformación, el codificador de vídeo 20 puede realizar la cuantización de los coeficientes de transformación. La cuantización se refiere, en general, a un proceso en el que los coeficientes de transformación se cuantizan para reducir posiblemente la cantidad de datos usados para representar los coeficientes, proporcionando compresión adicional. El proceso de cuantización puede reducir la profundidad de bits asociada a algunos, o a la totalidad, de los coeficientes. Por ejemplo, un valor de n bits puede redondearse a la baja hasta un valor de m bits durante la cuantización, donde n es mayor que m.
[0069] Después de la cuantización, el codificador de vídeo 20 puede recorrer los coeficientes de transformación, produciendo un vector unidimensional a partir de la matriz bidimensional que incluye los coeficientes de transformación cuantizados. El recorrido puede estar diseñado para colocar los coeficientes de energía más alta (y por lo tanto de menor frecuencia) en la parte frontal de la matriz y para colocar los coeficientes de energía más baja (y por lo tanto de mayor frecuencia) en la parte posterior de la matriz.
[0070] En algunos ejemplos, el codificador de vídeo 20 puede usar un orden de recorrido predefinido para recorrer los coeficientes de transformación cuantizados, para producir un vector serializado que se pueda codificar por entropía. En otros ejemplos, el codificador de vídeo 20 puede realizar un recorrido adaptativo. Después de recorrer los coeficientes de transformación cuantizados para formar un vector unidimensional, el codificador de vídeo 20 puede realizar la codificación por entropía del vector unidimensional, por ejemplo, de acuerdo a la codificación de longitud variable adaptable al contexto (CAVLC), la codificación aritmética binaria adaptable al contexto (CABAC), la codificación aritmética binaria adaptable al contexto basada en la sintaxis (SBAC), la codificación por entropía por división de intervalos de probabilidad (PIPE) o con otra metodología de codificación por entropía. El codificador de vídeo 20 también puede realizar la codificación por entropía de los elementos sintácticos asociados a los datos de vídeo codificados, para su uso por el decodificador de vídeo 30 en la decodificación de los datos de vídeo.
[0071] Además, el codificador de vídeo 20 puede enviar datos sintácticos, tales como datos sintácticos basados en bloques, datos sintácticos basados en imágenes y datos sintácticos basados en GOP, al decodificador de vídeo 30, por ejemplo, en un encabezado de imagen, un encabezado de bloque, un encabezado de fragmento o un encabezado de GOP. Los datos sintácticos del GOP pueden describir un cierto número de imágenes en el GOP respectivo, y los datos sintácticos de imagen pueden indicar una modalidad de codificación/predicción usada para codificar la imagen correspondiente.
[0072] En algunos casos, el codificador de vídeo 20 y / o el decodificador de vídeo 30 pueden intra-codificar datos de profundidad. Por ejemplo, en la 3D-HEVC, el codificador de vídeo 20 y / o el decodificador de vídeo 30 pueden usar modalidades de intra-predicción a partir de la norma HEVC base (bidimensional) para codificar una unidad de intra-predicción de un fragmento de profundidad. En otro ejemplo, el codificador de vídeo 20 y / o el decodificador de vídeo 30 pueden usar modalidades de modelado de profundidad (DMM) para codificar una unidad de intra-predicción de un fragmento de profundidad. En otro ejemplo, el codificador de vídeo 20 y / o el decodificador de vídeo 30 pueden usar la codificación en cadena de fronteras regionales para codificar una unidad de intrapredicción de un fragmento de profundidad. En otro ejemplo más, el codificador de vídeo 20 y / o el decodificador de vídeo 30 pueden usar una modalidad de codificación de profundidad simplificada (SDC) para codificar una unidad de intra-predicción de un fragmento de profundidad.
[0073] Una o más de las modalidades de intra-codificación anteriores pueden incluir la generación de un valor de DC predicho para un bloque de profundidad. Por ejemplo, como se ha indicado anteriormente, un valor de DC predicho puede ser un único valor predicho aplicado a una partición completa que se basa en valores de muestras vecinas. En ejemplos en los que el codificador de vídeo 20 y / o el decodificador de vídeo 30 dividen un bloque de profundidad en más de una región (por ejemplo, usando un patrón Wedgelet de DMM, un patrón Contour de DMM, codificación en cadena, modalidad 2 de SDC o similar), el codificador de vídeo 20 y / o el decodificador de vídeo 30 pueden determinar un valor de DC predicho para cada partición de un bloque de profundidad.
[0074] Habitualmente, el codificador de vídeo 20 y / o el decodificador de vídeo 30 pueden determinar un valor de DC predicho basándose en un promedio de todas las muestras vecinas (mencionadas como muestras de referencia) situadas en la fila encima del bloque de profundidad que está siendo codificado, así como la columna a la izquierda del bloque de profundidad que está siendo codificado. Sin embargo, tal enfoque requiere que el codificador de vídeo 20 y / o el codificador de vídeo 30 realicen un número relativamente grande de operaciones matemáticas. Por ejemplo, el codificador de vídeo 20 y / o el codificador de vídeo 30 deben agregar y contar cada muestra de referencia que contribuya al valor promedio para cada partición. Además, el codificador de vídeo 20 y / o el codificador de vídeo 30 deben realizar una operación de división para cada partición, para determinar el valor promedio para cada partición, lo que puede agregar complejidad para los componentes de hardware del codificador de vídeo 20 y / o del codificador de vídeo 30.
[0075] Los costes de cálculo asociados a la generación de un valor de DC predicho, descrito anteriormente, pueden aumentar a medida que aumenta el tamaño del bloque de profundidad que está siendo codificado. Por ejemplo, como se ha indicado anteriormente, la norma HEVC admite bloques de 32x32 de tamaño. En consecuencia, para un bloque de 32x32, el codificador de vídeo 20 y / o el codificador de vídeo 30 realizan 64 sumas para calcular la suma de muestras de referencia para cada partición y 64 sumas para contar el número de muestras de referencia para cada partición.
[0076] Además, cuando se usan todas las muestras de referencia vecinas para generar un valor de DC predicho, el codificador de vídeo 20 y / o el decodificador de vídeo 30 pueden introducir errores de predicción cerca de los bordes de una partición. Por ejemplo, una muestra de referencia y un valor de profundidad vecino pueden tener valores esencialmente diferentes cerca de un borde de una partición. Por consiguiente, como se describe con mayor detalle con respecto a las figuras 9A y 9B a continuación, las muestras de referencia cerca del borde de una partición pueden distorsionar un valor de DC predicho para la partición, lo que puede crear ineficacias de codificación (por ejemplo, grandes valores residuales para la codificación).
[0077] Los aspectos de esta divulgación generalmente se refieren a técnicas que determinan un valor de profundidad de DC predicho al intra-codificar un mapa de profundidad. Por ejemplo, aspectos de esta divulgación se refieren a técnicas para determinar un único valor predicho para una partición de datos de profundidad sin realizar las operaciones de promedio en todas las muestras de referencia, como se ha descrito anteriormente. Los aspectos de esta divulgación pueden referirse generalmente a un valor predicho de "DC", ya que el valor predicho se puede generar utilizando una intra-modalidad de DC, asociada a una de las intra-modalidades descritas anteriormente (por ejemplo, intra-modalidades de HEVC, las DMM, modalidades de codificación en cadena, modalidades de SDC o similares). Sin embargo, las referencias a un valor de DC predicho no implican necesariamente que se realice un promedio.
[0078] De acuerdo a aspectos de esta divulgación, el codificador de vídeo 20 y / o el decodificador de vídeo 30 pueden determinar un patrón de partición para un bloque de valores de profundidad que incluye asignar una o más muestras del bloque a una primera partición y asignar otras una o más muestras del bloque a una segunda partición. El codificador de vídeo 20 y / o el decodificador de vídeo 30 pueden determinar un valor predicho para al menos una entre la primera partición y la segunda partición, basándose en el patrón de partición determinado, y codificar la al menos una entre la primera partición y la segunda partición, basándose en el valor predicho.
[0079] Por ejemplo, cuando se determina un patrón de partición, el codificador de vídeo 20 y / o el decodificador de vídeo 30 pueden realizar uno de los procesos de partición descritos a continuación (por ejemplo, división en DMM, codificación en cadena, SDC o similares) para asignar valores de profundidad a particiones del bloque. El codificador de vídeo 20 y / o el decodificador de vídeo 30 pueden determinar entonces un patrón de partición que indique si la fila superior de valores de profundidad incluye valores de profundidad asignados solo a una primera partición, valores de profundidad asignados solo a una segunda partición o valores de profundidad asignados tanto a la primera partición como a la segunda partición. El patrón de partición también puede indicar si la columna izquierda de los valores de profundidad incluye valores de profundidad asignados solo a la primera partición, valores de profundidad asignados solo a la segunda partición o valores de profundidad asignados tanto a la primera como a la segunda partición.
[0080] En algunos ejemplos, el codificador de vídeo 20 y / o el decodificador de vídeo 30 pueden determinar el patrón de partición analizando cada asignación de partición de la fila superior y la columna izquierda de los valores de profundidad. Es decir, el codificador de vídeo 20 y / o el decodificador de vídeo 30 pueden identificar una transición entre una primera partición y una segunda partición (si se produce dicha transición) determinando la asignación de partición de cada valor de profundidad de la fila superior y la columna izquierda del bloque. En otros ejemplos, el codificador de vídeo 20 y / o el decodificador de vídeo 30 pueden determinar el patrón de partición analizando un subconjunto de valores de profundidad desde la fila superior y la columna izquierda. Es decir, el codificador de vídeo 20 y / o el decodificador de vídeo 30 pueden identificar una transición entre una primera partición y una segunda partición (si se produce dicha transición) determinando la asignación de partición de los valores de profundidad en ubicaciones predeterminadas del bloque de profundidad (por ejemplo, esquina superior izquierda, esquina superior derecha y esquina inferior izquierda).
[0081] El codificador de vídeo 20 y / o el decodificador de vídeo 30 pueden entonces determinar un valor predicho para al menos una entre la primera partición y la segunda partición, basándose en el patrón de partición determinado. Por ejemplo, el codificador de vídeo 20 y / o el decodificador de vídeo 30 pueden identificar muestras de referencia vecinas representativas, a partir de las cuales determinar valores de profundidad predichos para la primera partición y / o la segunda partición. Las muestras de referencia vecinas que se identifican pueden depender del patrón de partición.
[0082] Por ejemplo, el codificador de vídeo 20 y / o el decodificador de vídeo 30 pueden usar diferentes muestras de referencia para determinar un valor predicho cuando un bloque incluye una transición entre una primera partición y una segunda partición en la fila superior de valores de profundidad, que cuando un bloque no incluye una transición entre una primera partición y una segunda partición. El codificador de vídeo 20 y / o el decodificador de vídeo 30 pueden seleccionar muestras de referencia representativas que no están situadas cerca de fronteras de partición, lo que puede reducir los errores de predicción introducidos por las fronteras de partición. Los patrones ejemplares de partición y las muestras de referencia vecinas representativas se describen con mayor detalle con respecto a las figuras 11A a 11H a continuación.
[0083] El codificador de vídeo 20 y / o el decodificador de vídeo 30 pueden entonces codificar la al menos una entre la primera partición y la segunda partición, basándose en el valor predicho. Por ejemplo, el codificador de vídeo 20 puede generar valores residuales de profundidad que incluyen una diferencia entre los valores reales de profundidad del bloque y el valor de profundidad predicho de cada partición, y pueden incluir los valores de profundidad residuales en un flujo de bits codificado. El decodificador de vídeo 30 puede analizar valores residuales de un flujo de bits codificado, generar un valor de profundidad predicho para cada partición y combinar los valores de profundidad residuales con el valor de profundidad predicho para determinar los valores de profundidad reales.
[0084] De esta manera, las técnicas de esta divulgación pueden permitir que el codificador de vídeo 20 y / o el decodificador de vídeo 30 generen un valor de DC predicho para las particiones de profundidad de manera más eficaz y más precisa. Por ejemplo, las técnicas pueden reducir o eliminar el número de operaciones de suma y división que se realizan para generar un valor de DC predicho. Además, las técnicas pueden reducir la introducción de errores de partición cerca de las fronteras de partición, que pueden conducir a predictores inexactos.
[0085] La figura 2 es un diagrama de bloques que ilustra un ejemplo del codificador de vídeo 20 que puede implementar técnicas para la codificación de profundidad. El codificador de vídeo 20 puede realizar la intracodificación y la inter-codificación de bloques de vídeo dentro de fragmentos de vídeo. La intra-codificación se basa en la predicción espacial para reducir o eliminar la redundancia espacial en el vídeo dentro de una trama o imagen de vídeo dada. La inter-codificación se basa en la predicción temporal para reducir o eliminar la redundancia temporal en el vídeo dentro de tramas o imágenes adyacentes de una secuencia de vídeo. La intramodalidad (modalidad I) puede referirse a cualquiera de varias modalidades de codificación de base espacial. Las inter-modalidades, tales como la predicción unidireccional (modalidad P) o la bi-predicción (modalidad B), pueden referirse a cualquiera de varias modalidades de codificación de base temporal.
[0086] Como se ha indicado anteriormente, el decodificador de vídeo 20 puede adaptarse para realizar una codificación de vídeo de vistas múltiples. En algunos casos, el codificador de vídeo 20 puede configurarse para codificar la HEVC de múltiples vistas, de modo que cada vista en una instancia temporal pueda ser procesada por un decodificador, tal como el decodificador de vídeo 30. Para la HEVC-3D, además de codificar mapas de textura (es decir, valores de luma y croma) para cada vista, el codificador de vídeo 20 puede codificar adicionalmente un mapa de profundidad para cada vista.
[0087] En cualquier caso, como se muestra en la figura 2, el codificador de vídeo 20 recibe un bloque de vídeo actual dentro de una trama de vídeo que a codificar. En el ejemplo de la figura 2, el codificador de vídeo 20 incluye una unidad de selección de modalidad 40, una memoria de tramas de referencia 64, un sumador 50, una unidad de procesamiento de transformación 52, una unidad de cuantización 54 y una unidad de codificación por entropía 56. A su vez, la unidad de selección de modalidad 40 incluye una unidad de compensación de movimiento 44, una unidad de estimación de movimiento 42, una unidad de intra-predicción 46 y una unidad de división 48. Para la reconstrucción de bloques de vídeo, el codificador de vídeo 20 incluye además la unidad de cuantización inversa 58, la unidad de transformación inversa 60 y el sumador 62. También puede incluirse un filtro de eliminación de bloques (no mostrado en la figura 2) para filtrar fronteras de bloques, a fin de eliminar distorsiones de efecto pixelado del vídeo reconstruido. Si se desea, el filtro de eliminación de bloques filtrará habitualmente la salida del sumador 62. También pueden usarse filtros adicionales (en bucle o bucle posterior), además del filtro de eliminación de bloques. Dichos filtros no se muestran por razones de brevedad pero, si se desea, pueden filtrar la salida del sumador 50 (tal como un filtro en bucle).
[0088] Durante el proceso de codificación, el codificador de vídeo 20 recibe una trama o un fragmento de vídeo a codificar. La trama o el fragmento pueden dividirse en múltiples bloques de vídeo. La unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 llevan a cabo la codificación inter-predictiva del bloque de vídeo recibido con respecto a uno o más bloques en una o más tramas de referencia, para proporcionar la predicción temporal. La unidad de intra-predicción 46, como alternativa, puede llevar a cabo la codificación intrapredictiva del bloque de vídeo recibido, con respecto a uno o más bloques contiguos en la misma trama o fragmento que el bloque a codificar, para proporcionar predicción espacial. El codificador de vídeo 20 puede llevar a cabo múltiples pases de codificación, por ejemplo, para seleccionar una modalidad de codificación adecuada para cada bloque de datos de vídeo.
[0089] Además, la unidad de división 48 puede dividir bloques de datos de vídeo en sub-bloques, basándose en la evaluación de los anteriores esquemas de división en los anteriores pases de codificación. Por ejemplo, la unidad de división 48 puede dividir inicialmente una trama o un fragmento en varias LCU, y dividir cada una de las LCU en varias sub-CU, basándose en un análisis de velocidad-distorsión (por ejemplo, optimización de velocidaddistorsión). La unidad de selección de modalidad 40 puede producir además una estructura de datos de árbol cuádruple, indicativa de la división de una LCU en varias sub-CU. Las CU de nodos de hojas del árbol cuadrático pueden incluir una o más PU y una o más TU.
[0090] La unidad de selección de modalidad 40 puede seleccionar una de las modalidades de codificación (intra o inter), por ejemplo, en función de los resultados erróneos, y proporcionar el bloque intra-codificado o inter­ codificado resultante al sumador 50 para generar datos de bloques residuales, y al sumador 62 para reconstruir el bloque codificado, para su uso como una trama de referencia. La unidad de selección de modalidad 40 también puede proporcionar elementos sintácticos, tales como vectores de movimiento, indicadores de intra-modalidad, información de división y otra información sintáctica de este tipo, a la unidad de codificación por entropía 56.
[0091] La unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 pueden estar sumamente integradas, pero se ilustran por separado con fines conceptuales. La estimación de movimiento, realizada por la unidad de estimación de movimiento 42, es el proceso de generación de vectores de movimiento, que estiman el movimiento de los bloques de vídeo. Un vector de movimiento, por ejemplo, puede indicar el desplazamiento de una PU de un bloque de vídeo dentro de una trama o imagen de vídeo actual, con respecto a un bloque predictivo dentro de una trama de referencia (u otra unidad codificada), con respecto al bloque actual que se está codificando dentro de la trama actual (u otra unidad codificada). Un bloque predictivo es un bloque que se revela como estrechamente coincidente con el bloque a codificar en lo que respecta a la diferencia de píxeles, lo cual puede determinarse mediante la suma de una diferencia absoluta (SAD), una suma de diferencia de cuadrados (SSD) u otras métricas de diferencia. En algunos ejemplos, el codificador de vídeo 20 puede calcular valores para posiciones fraccionarias de píxeles de imágenes de referencia almacenadas en la memoria de tramas de referencia 64. Por ejemplo, el codificador de vídeo 20 puede interpolar valores de posiciones de un cuarto de píxel, posiciones de un octavo de píxel u otras posiciones de fracciones de píxel de la imagen de referencia. Por lo tanto, la unidad de estimación de movimiento 42 puede realizar una búsqueda de movimiento en relación con las posiciones de píxeles completas y las posiciones de píxeles fraccionarias, y generar un vector de movimiento con una precisión de píxel fraccionaria.
[0092] La unidad de estimación de movimiento 42 calcula un vector de movimiento para una PU de un bloque de vídeo en un fragmento inter-codificado, comparando la posición de la PU con la posición de un bloque predictivo de una imagen de referencia. La imagen de referencia puede seleccionarse a partir de una primera lista de imágenes de referencia (Lista 0) o una segunda lista de imágenes de referencia (Lista 1), cada una de las cuales identifica una o más imágenes de referencia almacenadas en la memoria de tramas de referencia 64. La unidad de estimación de movimiento 42 envía el vector de movimiento calculado a la unidad de codificación por entropía 56 y a la unidad de compensación de movimiento 44.
[0093] La compensación de movimiento, llevada a cabo por la unidad de compensación de movimiento 44, puede implicar capturar o generar el bloque predictivo basándose en el vector de movimiento determinado por la unidad de estimación de movimiento 42. De nuevo, la unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 pueden integrarse funcionalmente, en algunos ejemplos. Tras recibir el vector de movimiento para la PU del bloque de vídeo actual, la unidad de compensación de movimiento 44 puede localizar el bloque predictivo al que apunta el vector de movimiento en una de las listas de imágenes de referencia. El sumador 50 forma un bloque de vídeo residual restando los valores de píxel del bloque predictivo a los valores de píxel del bloque de vídeo actual que se está codificando, generando valores de diferencia de píxel, como se analiza posteriormente. En general, la unidad de estimación de movimiento 42 lleva a cabo la estimación de movimiento con respecto a los componentes de luma, y la unidad de compensación de movimiento 44 utiliza los vectores de movimiento calculados basándose en los componentes de luma, tanto para los componentes de croma como para los componentes de luma. La unidad de selección de modalidad 40 también puede generar elementos sintácticos asociados a los bloques de vídeo y el fragmento de vídeo para su uso por el decodificador de vídeo 30 al decodificar los bloques de vídeo del fragmento de vídeo.
[0094] La unidad de intra-predicción 46 puede realizar la intra-predicción de un bloque actual, como alternativa a la inter-predicción llevada a cabo por la unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44, como se ha descrito anteriormente. En particular, la unidad de intra-predicción 46 puede determinar una modalidad de intra-predicción a utilizar para codificar un bloque actual. En algunos ejemplos, la unidad de intra-predicción 46 puede codificar un bloque actual usando varias modalidades de intra-predicción, por ejemplo, durante diferentes pases de codificación, y la unidad de intra-predicción 46 (o la unidad de selección de modalidad 40, en algunos ejemplos) puede seleccionar una modalidad de intra-predicción adecuada a utilizar a partir de las modalidades probadas.
[0095] Por ejemplo, la unidad de intra-predicción 46 puede calcular valores de velocidad-distorsión usando un análisis de velocidad-distorsión para las diversas modalidades de intra-predicción probadas, y seleccionar la modalidad de intra-predicción que tenga las mejores características de velocidad-distorsión entre las modalidades probadas. El análisis de velocidad-distorsión determina en general una magnitud de distorsión (o de errores) entre un bloque codificado y un bloque original, no codificado, que se codificó para generar el bloque codificado, así como una velocidad binaria (es decir, un número de bits) usada para generar el bloque codificado. La unidad de intra-predicción 46 puede calcular razones a partir de las distorsiones y velocidades para los diversos bloques codificados, para determinar qué modalidad de intra-predicción presenta el mejor valor de velocidad-distorsión para el bloque.
[0096] Además, la unidad de intra-predicción 46 puede configurarse para codificar bloques de profundidad de un mapa de profundidad. Por ejemplo, la unidad de intra-predicción 46 usa modalidades de intra-predicción de la norma HEVC base (bidimensional) (como se describe, por ejemplo, con respecto a la figura 4 a continuación), modalidades de modelado de profundidad (DMM) (como se describe, por ejemplo, con respecto a las figuras 5A y 5B a continuación), codificación en cadena de fronteras regionales (como se describe, por ejemplo, con respecto a la figura 6 a continuación), codificación de profundidad simplificada (SDC) (como se describe, por ejemplo, con respecto a la figura 7 a continuación), para codificar una PU intra-predicha de un fragmento de profundidad.
[0097] En algunos ejemplos, la unidad de intra-predicción 46 puede dividir una PU de profundidad en más de una región, y puede predecir cada región por separado. Los ejemplos incluyen las DMM, la codificación en cadena, la modalidad dos de SDC o similares. En dichos ejemplos, la unidad de intra-predicción 46 puede generar un único valor de DC predicho para cada partición. El valor de DC predicho puede basarse en valores de muestras vecinas.
[0098] De acuerdo a aspectos de esta divulgación, la unidad de intra-predicción 46 puede determinar un único valor predicho para cada partición de una PU de profundidad basándose en un patrón de división de la PU. Como se ha indicado anteriormente, las técnicas pueden permitir que la unidad de intra-predicción 46 determine un valor de DC predicho sin realizar operaciones de cálculo de promedios, habitualmente asociadas a la generación de un valor de DC predicho.
[0099] Por ejemplo, de acuerdo a aspectos de esta divulgación, la unidad de intra-predicción 46 puede realizar partición para asignar muestras de dos regiones de una PU de profundidad (por ejemplo, una primera partición y una segunda partición). La unidad de intra-predicción 46 puede entonces determinar un patrón de partición que indica si una fila superior de la PU incluye muestras asignadas solo a una primera partición, muestras asignadas solo a una segunda partición o muestras asignadas tanto a la primera partición como a la segunda partición. La unidad de intra-predicción 46 también puede determinar si una columna izquierda de la PU incluye muestras asignadas solo a la primera partición, muestras asignadas solo a la segunda partición o muestras asignadas tanto a la primera como a la segunda partición.
[0100] En algunos ejemplos, la unidad de intra-predicción 46 puede determinar el patrón de partición analizando cada asignación de partición de muestras de la fila superior y la columna izquierda de la PU. Es decir, la unidad de intra-predicción 46 puede identificar una transición entre una primera partición y una segunda partición (si se produce dicha transición) determinando la asignación de partición de cada muestra de la fila superior y la columna izquierda de la PU. En otros ejemplos, la unidad de intra-predicción 46 puede determinar el patrón de partición analizando un subconjunto de muestras de la fila superior y la columna izquierda de la PU. Es decir, la unidad de intra-predicción 46 puede identificar una transición entre una primera partición y una segunda partición (si se produce dicha transición) determinando la asignación de partición de las muestras en ubicaciones predeterminadas de la PU (por ejemplo, esquina superior izquierda, esquina superior derecha y esquina inferior izquierda).
[0101] La unidad de intra-predicción 46 puede entonces determinar un valor de DC predicho para las particiones de la PU basándose en el patrón de partición determinado. Por ejemplo, la unidad de intra-predicción 46 puede identificar muestras de referencia representativas de una o más PU vecinas a partir de las cuales se determinan los valores de DC predichos para las particiones. Las muestras de referencia vecinas que se identifican pueden depender del patrón de partición.
[0102] En general, la unidad de intra-predicción 46 puede seleccionar muestras de referencia que no están situadas cerca de las fronteras de partición, lo que puede reducir los errores de predicción introducidos por las fronteras de partición. La unidad de intra-predicción 46 puede determinar un valor de DC predicho basándose en el valor de una única muestra de referencia o basándose en una combinación de más de una muestra de referencia. En otro ejemplo, la unidad de intra-predicción 46 puede determinar un valor de DC predicho de acuerdo a un valor de DC predicho por omisión, como se describe en mayor detalle a continuación.
[0103] En cualquier caso, el codificador de vídeo 20 forma un bloque de vídeo residual restando los datos de predicción de la unidad de selección de modalidad 40 al bloque de vídeo original que está codificándose. El sumador 50 representa el componente o los componentes que realizan esta operación de resta. La unidad de procesamiento de transformaciones 52 aplica una transformación, tal como una transformación discreta de coseno (DCT) o una transformación conceptualmente similar, al bloque residual, generando un bloque de vídeo que comprende valores residuales de coeficientes de transformación. La unidad de procesamiento de transformaciones 52 puede llevar a cabo otras transformaciones que son conceptualmente similares a la DCT. También podrían usarse transformaciones de ondículas, transformaciones enteras, transformaciones de sub-bandas u otros tipos de transformaciones.
[0104] En cualquier caso, la unidad de procesamiento de transformaciones 52 aplica la transformación al bloque residual, generando un bloque de coeficientes de transformación residuales. La transformación puede convertir la información residual, desde un dominio de valores de píxel a un dominio de transformaciones, tal como un dominio de frecuencia. La unidad de procesamiento de transformaciones 52 puede enviar los coeficientes de transformación resultantes a la unidad de cuantización 54. La unidad de cuantización 54 cuantiza los coeficientes de transformación para reducir adicionalmente la velocidad de transmisión de bits. El proceso de cuantización puede reducir la profundidad de bits asociada a algunos, o a la totalidad, de los coeficientes. El grado de cuantización puede modificarse ajustando un parámetro de cuantización. En algunos ejemplos, la unidad de cuantización 54 puede realizar, a continuación, un recorrido de la matriz que incluye los coeficientes de transformación cuantizados. De forma alternativa, la unidad de codificación por entropía 56 puede llevar a cabo el recorrido.
[0105] Tras la cuantización, la unidad de codificación por entropía 56 realiza la codificación por entropía de los coeficientes de transformación cuantizados. Por ejemplo, la unidad de codificación por entropía 56 puede llevar a cabo la codificación de longitud variable adaptable al contexto (CAVLC), la codificación aritmética binaria adaptable al contexto (CABAC), la codificación aritmética binaria adaptable al contexto y basada en sintaxis (SBAC), la codificación por entropía mediante la división en intervalos de probabilidades (PIPE) u otra técnica de codificación por entropía. En el caso de la codificación por entropía basada en el contexto, el contexto puede basarse en bloques contiguos. Tras la codificación por entropía realizada por la unidad de codificación por entropía 56, el flujo de bits codificado puede transmitirse a otro dispositivo (por ejemplo, el decodificador de vídeo 30) o archivarse para su posterior transmisión o recuperación.
[0106] La unidad de cuantización inversa 58 y la unidad de transformación inversa 60 aplican la cuantización inversa y la transformación inversa, respectivamente, para reconstruir el bloque residual en el dominio de píxeles, por ejemplo, para su uso posterior como un bloque de referencia. La unidad de compensación de movimiento 44 puede calcular un bloque de referencia añadiendo el bloque residual a un bloque predictivo de una de las tramas de la memoria de tramas de referencia 64. La unidad de compensación de movimiento 44 también puede aplicar uno o más filtros de interpolación al bloque residual reconstruido para calcular valores de píxeles fraccionarios para su uso en la estimación de movimiento. El sumador 62 añade el bloque residual reconstruido al bloque de predicción compensado por movimiento, generado por la unidad de compensación de movimiento 44, para generar un bloque de vídeo reconstruido para su almacenamiento en la memoria de tramas de referencia 64. El bloque de vídeo reconstruido puede ser utilizado por la unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44, como un bloque de referencia para inter-codificar un bloque en una trama de vídeo posterior.
[0107] La figura 3 es un diagrama de bloques que ilustra un ejemplo de decodificador de vídeo 30 que puede implementar técnicas para la codificación de profundidad. En el ejemplo de la figura 3, el decodificador de vídeo 30 incluye una unidad de decodificación por entropía 70, una unidad de compensación de movimiento 72, una unidad de intra-predicción 74, una unidad de cuantización inversa 76, una unidad de transformación inversa 78, una memoria de imágenes de referencia 82 y un sumador 80. En algunos ejemplos, el decodificador de vídeo 30 puede llevar a cabo un pase de decodificación generalmente recíproco al pase de codificación descrito con respecto al codificador de vídeo 20 (figura 2). La unidad de compensación de movimiento 72 puede generar datos de predicción basándose en vectores de movimiento recibidos desde la unidad de decodificación por entropía 70, mientras que la unidad de intra-predicción 74 puede generar datos de predicción basándose en indicadores de modalidad de intra-predicción recibidos de la unidad de decodificación por entropía 70.
[0108] Durante el proceso de decodificación, el decodificador de vídeo 30 recibe un flujo de bits de vídeo codificado que representa bloques de vídeo de un fragmento de vídeo codificado y elementos sintácticos asociados, desde el codificador de vídeo 20. La unidad de decodificación por entropía 70 del decodificador de vídeo 30 decodifica por entropía el flujo de bits para generar coeficientes cuantizados, vectores de movimiento o indicadores de modalidad de intra-predicción y otros elementos sintácticos. La unidad de decodificación por entropía 70 remite los vectores de movimiento y otros elementos sintácticos a la unidad de compensación de movimiento 72. El decodificador de vídeo 30 puede recibir los elementos sintácticos en el nivel del fragmento de vídeo y/o el nivel del bloque de vídeo.
[0109] Como se ha indicado anteriormente, el decodificador de vídeo 30 puede adaptarse para realizar una codificación de vídeo de vistas múltiples. En algunos casos, el decodificador 30 de vídeo puede configurarse para decodificar la HEVC de vistas múltiples. Para la HEVC-3D, además de decodificar mapas de textura (es decir, valores de luma y croma) para cada vista, el decodificador de vídeo 30 puede decodificar adicionalmente un mapa de profundidad para cada vista.
[0110] En cualquier caso, cuando el fragmento de vídeo se codifica como un fragmento intra-codificado (I), la unidad de intra-predicción 74 puede generar datos de predicción para un bloque de vídeo del fragmento de vídeo actual, basándose en una modalidad de intra-predicción señalizada y datos de bloques previamente decodificados de la trama o imagen actual.
[0111] La unidad de intra-predicción 74 también puede intra-codificar datos de profundidad. Por ejemplo, la unidad de intra-predicción 74 usa modalidades de intra-predicción a partir de la norma HEVC base (bidimensional) (como se describe, por ejemplo, con respecto a la figura 4 a continuación), modalidades de modelado de profundidad (DMM) (como se describe, por ejemplo, con respecto a las figuras 5A y 5B a continuación), codificación en cadena de fronteras regionales (como se describe, por ejemplo, con respecto a la figura 6 a continuación), codificación de profundidad simplificada (SDC) (como se describe, por ejemplo, con respecto a la figura 7 a continuación), para codificar una PU intra-predicha de un fragmento de profundidad.
[0112] En algunos ejemplos, la unidad de intra-predicción 74 puede dividir una PU de profundidad en más de una región, y puede intra-predecir cada región por separado. Los ejemplos incluyen las DMM, la codificación en cadena, la modalidad dos de SDC o similares. En dichos ejemplos, la unidad de intra-predicción 74 puede generar un único valor de DC predicho para cada partición. El valor de DC predicho puede basarse en valores de muestras vecinas.
[0113] De acuerdo a aspectos de esta divulgación, la unidad de intra-predicción 74 puede determinar un único valor predicho para cada partición de una PU de profundidad, basándose en un patrón de partición de la PU. Como se ha indicado anteriormente, las técnicas pueden permitir que la unidad de intra-predicción 74 determine un valor de DC predicho sin realizar operaciones de cálculo de promedios, habitualmente asociadas a la generación de un valor de DC predicho.
[0114] Por ejemplo, de acuerdo a aspectos de esta divulgación, la unidad de intra-predicción 74 puede realizar particiones para asignar muestras de dos regiones de una PU de profundidad (por ejemplo, una primera partición y una segunda partición). La unidad de intra-predicción 74 puede entonces determinar un patrón de partición que indica si una fila superior de la PU incluye muestras asignadas solo a una primera partición, muestras asignadas solo a una segunda partición o muestras asignadas tanto a la primera partición como a la segunda partición. La unidad de intra-predicción 74 también puede determinar si una columna izquierda de la PU incluye muestras asignadas solo a la primera partición, muestras asignadas solo a la segunda partición o muestras asignadas tanto a la primera como a la segunda partición.
[0115] En algunos ejemplos, la unidad de intra-predicción 74 puede determinar el patrón de partición analizando cada asignación de partición de muestras de la fila superior y la columna izquierda de la PU. Es decir, la unidad de intra-predicción 74 puede identificar una transición entre una primera partición y una segunda partición (si se produce dicha transición) determinando la asignación de partición de cada muestra de la fila superior y la columna izquierda de la PU. En otros ejemplos, la unidad de intra-predicción 74 puede determinar el patrón de partición analizando un subconjunto de muestras de la fila superior y la columna izquierda de la PU. Es decir, la unidad de intra-predicción 74 puede identificar una transición entre una primera partición y una segunda partición (si se produce dicha transición) determinando la asignación de partición de muestras en ubicaciones predeterminadas de la PU (por ejemplo, esquina superior izquierda, esquina superior derecha y esquina inferior izquierda).
[0116] La unidad de intra-predicción 74 puede entonces determinar un valor de DC predicho para las particiones de la PU basándose en el patrón de partición determinado. Por ejemplo, la unidad de intra-predicción 74 puede identificar muestras de referencia representativas de una o más PU vecinas a partir de las cuales se determinan los valores de DC predichos para las particiones. Las muestras de referencia vecinas que se identifican pueden depender del patrón de partición.
[0117] En general, la unidad de intra-predicción 74 puede seleccionar muestras de referencia que no están situadas cerca de fronteras de partición, lo que puede reducir los errores de predicción introducidos por las fronteras de partición. La unidad de intra-predicción 74 puede determinar un valor de DC predicho basándose en el valor de una única muestra de referencia o basándose en una combinación de más de una muestra de referencia. En otro ejemplo, la unidad de intra-predicción 74 puede determinar un valor de DC predicho de acuerdo a un valor de DC predicho por omisión, como se describe en mayor detalle a continuación.
[0118] Cuando la trama de vídeo se codifica como un fragmento inter-codificado (es decir, B (predicho bidireccionalmente), P (predicho a partir de una trama anterior) o GPB (fragmento P o B generalizado)), la unidad de compensación de movimiento 72 genera bloques predictivos para un bloque de vídeo del fragmento de vídeo actual basándose en los vectores de movimiento y en otros elementos sintácticos recibidos desde la unidad de descodificación por entropía 70. Los bloques predictivos pueden generarse a partir de una de las imágenes de referencia dentro de una de las listas de imágenes de referencia. El decodificador de vídeo 30 puede construir las listas de tramas de referencia, la Lista 0 y la Lista 1, usando técnicas de construcción por omisión, basándose en las imágenes de referencia almacenadas en la memoria de imágenes de referencia 92.
[0119] La unidad de compensación de movimiento 72 determina la información de predicción para un bloque de vídeo del fragmento de vídeo actual, analizando los vectores de movimiento y otros elementos sintácticos, y usa la información de predicción para generar los bloques predictivos del bloque de vídeo actual que se está decodificando. Por ejemplo, la unidad de compensación de movimiento 72 usa algunos de los elementos sintácticos recibidos para determinar una modalidad de predicción (por ejemplo, intra-predicción o inter-predicción) usada para codificar los bloques de vídeo del fragmento de vídeo, un tipo de fragmento de inter-predicción (por ejemplo, fragmento B, fragmento P o fragmento GPB), información de construcción para una o más de las listas de imágenes de referencia del fragmento, vectores de movimiento para cada bloque de vídeo inter-codificado del fragmento, el estado de inter-predicción para cada bloque de vídeo inter-codificado del fragmento y otra información para decodificar los bloques de vídeo en el fragmento de vídeo actual.
[0120] La unidad de compensación de movimiento 72 también puede realizar la interpolación basándose en filtros de interpolación. La unidad de compensación de movimiento 72 puede usar filtros de interpolación como los usados por el codificador de vídeo 20 durante la codificación de los bloques de vídeo, para calcular valores interpolados para píxeles fraccionarios de bloques de referencia. En este caso, la unidad de compensación de movimiento 72 puede determinar los filtros de interpolación utilizados por el codificador de vídeo 20 a partir de los elementos sintácticos recibidos y utilizar los filtros de interpolación para generar bloques predictivos.
[0121] La unidad de cuantización inversa 76 cuantiza de manera inversa, es decir, descuantiza, los coeficientes de transformación cuantizados, proporcionados en el flujo de bits y decodificados por la unidad de decodificación por entropía 80. El proceso de cuantización inversa puede incluir el uso de un parámetro de cuantización QPy, calculado por el decodificador de vídeo 30 para cada bloque de vídeo en el fragmento de vídeo, para determinar un grado de cuantización y, asimismo, un grado de cuantización inversa que debería aplicarse.
[0122] La unidad de transformación inversa 78 aplica una transformación inversa, por ejemplo, una DCT inversa, una transformación inversa entera o un proceso de transformación inversa conceptualmente similar, a los coeficientes de transformación, a fin de producir bloques residuales en el dominio de píxeles.
[0123] Después de que la unidad de compensación de movimiento 82, o la unidad de intra-predicción 74, genera el bloque predictivo para el bloque de vídeo actual (por ejemplo, un bloque de textura o un bloque de profundidad) basándose en los vectores de movimiento u otros elementos sintácticos, el decodificador de vídeo 30 forma un bloque de vídeo decodificado sumando los bloques residuales de la unidad de transformación inversa 78 y los correspondientes bloques predictivos generados por la unidad de compensación de movimiento 82, o la unidad de intra-predicción 74. El sumador 90 representa el componente o los componentes que llevan a cabo esta operación de suma.
[0124] Si se desea, también puede aplicarse un filtro de desbloqueo para filtrar los bloques descodificados con el fin de eliminar distorsiones de efecto pixelado. También pueden utilizarse otros filtros de bucle (ya sea en el bucle de codificación o después del bucle de codificación) para allanar las transiciones de píxeles o mejorar de otro modo la calidad del vídeo. Los bloques de vídeo decodificados en una trama o imagen dada son almacenados a continuación en la memoria de imágenes de referencia 92, que almacena imágenes de referencia usadas para la posterior compensación de movimiento. La memoria de tramas de referencia 82 almacena también vídeo decodificado para su presentación posterior en un dispositivo de visualización, tal como el dispositivo de visualización 32 de la figura 1.
[0125] La figura 4 generalmente ilustra las direcciones de predicción asociadas a modalidades de intra-predicción direccionales. Por ejemplo, como se ha indicado anteriormente, la norma HEVC puede incluir treinta y cinco modalidades de intra-predicción, incluyendo una modalidad plana (modalidad 0), una modalidad de DC (modalidad 1) y 33 modalidades de predicción direccional (modalidades 2 a 34). Con la modalidad plana, la predicción se realiza utilizando la llamada función "plana". Con la modalidad de DC (por ejemplo, para producir un valor de DC predicho), la predicción se puede realizar basándose en un promedio de valores de píxel dentro del bloque. Con una modalidad de predicción direccional, la predicción se realiza en función de los píxeles reconstruidos de un bloque vecino a lo largo de una dirección particular (según lo indicado por la modalidad). En general, el extremo de cola de las flechas mostradas en la figura 4 representa un píxel relativo de los píxeles vecinos desde los cuales se recupera un valor, mientras que la cabeza de las flechas representa la dirección en la que el valor recuperado se propaga para formar un bloque predictivo.
[0126] Las intra-modalidades que se muestran en la figura 4 pueden usarse para predecir valores de profundidad. Por ejemplo, cada una de las modalidades de intra-predicción angular mostradas en la figura 4 puede estar asociada a un conjunto de patrones de Wedgelet, como se describe con mayor detalle a continuación con respecto a las figuras 5A y 5B.
[0127] Las figuras 5A y 5B son diagramas conceptuales que ilustran ejemplos de modalidades de modelado de profundidad (DMM). La figura 5A, por ejemplo, ilustra el bloque de profundidad 110 que está dividido usando la partición de Wedgelet, y la figura 5b , como otro ejemplo, ilustra el bloque de profundidad 130 que está dividido usando la partición de Contour. La norma 3D-HEVC incluye técnicas para modalidades de modelado de profundidad (DMM) para dividir bloques, junto con las modalidades de intra-predicción para codificar una unidad de intra-predicción de un segmento de profundidad. La versión 3.1 de HTM aplica un procedimiento DMM para la intra-codificación de mapas de profundidad que, en algunos casos, puede representar mejor bordes más nítidos en mapas de profundidad.
[0128] Por ejemplo, la norma 3D-HEVC proporciona cuatro modalidades DMM: Modalidad 1 (señalización explícita de Wedgelet), Modalidad 2 (partición de Wedgelet intra-predicha), Modalidad 3 (partición de Wedgelet entre componentes) y Modalidad 4 (partición de Contour entre componentes). En las cuatro modalidades, un codificador de vídeo, tal como el codificador de vídeo 20 o el decodificador de vídeo 30, puede dividir un bloque de profundidad en dos regiones especificadas por un patrón de DMM, donde cada región está representada por un valor constante. El patrón de DMM puede ser explícitamente señalizado (modalidad 1), predicho por bloques espacialmente vecinos (modalidad 2), o predicho usando un bloque de textura cosituado (modalidad 3 y modalidad 4).
[0129] Hay dos modelos de particiones definidos en las DMM, incluidas la partición de Wedgelet y la partición de Contour. De nuevo, la figura 5a ilustra un ejemplo de partición de Wedgelet, y la figura 5B ilustra un ejemplo de partición de Contour. Cada cuadrado individual dentro de los bloques de profundidad 110 y 130 representa un respectivo píxel individual de los bloques de profundidad 110 y 130, respectivamente. Los valores numéricos dentro de los cuadrados representan si el píxel correspondiente pertenece a la región 112 (valor "0" en el ejemplo de la figura 5A) o a la región 114 (valor "1" en el ejemplo de la figura 5A). El sombreado también se usa en la figura 5A para indicar si un píxel pertenece a la región 112 (cuadrados blancos) o a la región 114 (cuadrados grises sombreados).
[0130] Cada patrón (es decir, tanto Wedgelet como Contour) se puede definir mediante una formación de tamaño ub X vb, etiquetado de dígitos binarios de si la muestra correspondiente (es decir, el píxel) pertenece a la región P1 o P2 (donde P1 corresponde a la región 112 en la figura 5A y a la región 132 en la figura 5B, y P2 corresponde a la región 114 en la figura 5A y la región 134A, 134B en la figura 5B), donde ub y vb representan el tamaño horizontal y vertical de la PU actual, respectivamente. En los ejemplos de la figura 5A y la figura 5B, la PU corresponde a los bloques 110 y 130, respectivamente. Los codificadores de vídeo, tales como el codificador de vídeo 20 y el decodificador de vídeo 30, pueden inicializar patrones de Wedgelet al comienzo de la codificación, por ejemplo, el comienzo de la codificación o el comienzo de la decodificación.
[0131] Como se muestra en el ejemplo de la figura 5A, para una partición de Wedgelet, el bloque de profundidad 110 está dividido en dos regiones, región 112 y región 114, por la línea recta 116, con punto de inicio 118 ubicado en (Xs, Ys) y punto final 120 ubicado en (Xe, Ye). En el ejemplo de la figura 5A, el punto de inicio 118 puede definirse como el punto (8, 0) y el punto final 120 puede definirse como el punto (0, 8).
[0132] Como se muestra en el ejemplo de la figura 5B, para la partición de Contour, un bloque de profundidad, tal como el bloque de profundidad 130, se puede dividir en dos regiones de forma irregular. En el ejemplo de la figura 5B, el bloque de profundidad 130 está dividido en la región 132 y la región 134A, 134B. Aunque los píxeles en la región 134A no están inmediatamente adyacentes a los píxeles en la región 134B, las regiones 134A y 134B se definen para formar una única región, con el fin de predecir una PU del bloque de profundidad 130. La partición de Contour es más flexible que la partición de Wedgelet, pero puede ser relativamente más difícil de señalizar. En la modalidad 4 de las DMM, en el caso de la norma 3D-HEVC, el patrón de partición de Contour se obtiene implícitamente utilizando muestras de luma reconstruidas del bloque de textura cosituado.
[0133] De esta manera, un codificador de vídeo, tal como el codificador de vídeo 20 y el decodificador de vídeo 30, puede usar la línea 116, definida por el punto inicial 118 y el punto final 120, para determinar si un pixel del bloque de profundidad 110 pertenece a la región 112 (que también puede mencionarse como región "P1") o a la región 114 (que también se puede denominar como región "P2"). Del mismo modo, un codificador de vídeo puede usar las líneas 136, 138 de la figura 5B para determinar si un píxel del bloque de profundidad 130 pertenece a la región 132 (que también se puede denominar región "P1") o a la región 134 (que también se puede denominar región "P2"). Las regiones "P1" y "P2" son convenciones de denominación predeterminada para diferentes regiones divididas de acuerdo a las DMM y, por lo tanto, la región P1 del bloque de profundidad 110 no debería considerarse la misma región que la región P1 del bloque de profundidad 130.
[0134] Como se ha señalado anteriormente, cada una de las DMM puede definirse según que la DMM use partición de Wedgelet o de Contour, y según que el patrón esté explícitamente señalizado o implícitamente determinado. El proceso de las DMM puede integrarse como una alternativa a las modalidades de intra-predicción especificadas en la HEVC (mostrado en la figura 4). Se puede señalizar un indicador de un bit para cada PU, para especificar si se aplica la DMM o la intra-predicción convencional.
[0135] Los aspectos de esta divulgación generalmente se refieren a técnicas para determinar un valor de DC predicho para una o más particiones de un bloque de profundidad. Por ejemplo, según aspectos de esta divulgación, un codificador de vídeo, tal como el codificador de vídeo 20 o el decodificador de vídeo 30, puede determinar un valor de DC predicho, basándose en un patrón de partición, tal como el patrón de partición definido por la línea 116 (figura 5A) o las líneas 136, 138 (figura 5B). Como se describe con mayor detalle a continuación, la posición de la línea 118 puede determinar las muestras vecinas desde las cuales se obtiene un valor de DC predicho para la región 112 y / o la región 114 (figura 5A). Asimismo, la posición de las líneas 136, 138 puede determinar las muestras vecinas a partir de las cuales se obtiene un valor de DC predicho para la región 132 y / o la región 134 (figura 5B).
[0136] La figura 6 es un diagrama conceptual que ilustra una modalidad de codificación en cadena de fronteras regionales. Por ejemplo, la norma 3D-HEVC incluye una modalidad de codificación en cadena de fronteras regionales que permite la señalización explícita de las fronteras de partición (por ejemplo, en lugar de la partición basada en la textura cosituada, como se ha descrito anteriormente con respecto a las DMM). Esta divulgación puede referirse a la "modalidad de codificación en cadena de fronteras regionales" como "codificación en cadena".
[0137] En general, una cadena es una conexión entre una muestra y una de sus ocho muestras de conectividad. Según lo mostrado por el bloque 160 de la figura 6, hay ocho tipos diferentes de dirección de cadena, cada uno asignado con un índice de dirección que va de 0 a 7. Los tipos de dirección de cadena pueden ayudar a un codificador de vídeo en la determinación de particiones de un bloque de profundidad.
[0138] Por ejemplo, el ejemplo de la figura 6 incluye una primera partición 162 y una segunda partición 164 separadas por una cadena 166 que indica la estructura de partición. Un codificador de vídeo (como el codificador de vídeo 20) puede determinar y señalizar la cadena 166 para una PU en un flujo de bits codificado, mientras que un decodificador de vídeo (tal como el decodificador de vídeo 30) puede analizar datos que representan la cadena 166 proveniente de un flujo de bits codificado.
[0139] En general, la cadena 166 incluye una posición de inicio, una indicación de una serie de enlaces en la cadena (por ejemplo, un número de códigos de cadena) y, para cada código de cadena, un índice de dirección. También podrían usarse otros tipos de señalización para la cadena 166. En un ejemplo, para señalizar el patrón de partición arbitrario que se muestra en el ejemplo de la figura 6, el codificador de vídeo 20 puede codificar un bit (por ejemplo, 0) para indicar que la cadena 166 comienza desde la frontera superior. El codificador de vídeo 20 puede codificar tres bits (por ejemplo, 011) para indicar que la cadena 166 comienza después de la tercera muestra de profundidad de la frontera superior. El codificador de vídeo 20 puede codificar cuatro bits (por ejemplo, 0110) para indicar que hay 7 enlaces totales en la cadena 166. El codificador de vídeo 20 también puede codificar una serie de índices de cadenas conectadas (por ejemplo, 3, 3, 3, 7, 1, 1, 1) para indicar la dirección de cada enlace de cadena (por ejemplo, de acuerdo al bloque 160). En algunos ejemplos, el codificador de vídeo 20 puede convertir cada índice en una palabra de código usando una tabla de consulta. Un decodificador de vídeo, tal como el decodificador de vídeo 30, puede analizar la señalización descrita anteriormente para determinar el patrón de partición de un bloque. El decodificador de vídeo 30 puede decodificar los valores de profundidad para cada partición.
[0140] Los aspectos de esta divulgación generalmente se refieren a técnicas para determinar un valor de DC predicho para una o más particiones de un bloque de profundidad. Por ejemplo, de acuerdo a aspectos de esta divulgación, un codificador de vídeo, tal como el codificador de vídeo 20 o el decodificador de vídeo 30, puede determinar un valor de DC predicho basándose en un patrón de partición, tal como el patrón de partición definido por la cadena 166. Como se describe en mayor detalle a continuación, la posición de la cadena 166 puede determinar las muestras vecinas a partir de las cuales se obtiene un valor de DC predicho para la partición 162 y / o la partición 164.
[0141] La figura 7 es un diagrama de bloques que ilustra la información de profundidad de intra-codificación utilizando codificación de profundidad simplificada (SDC). En el ejemplo de la figura 7, un codificador de vídeo (tal como el codificador de vídeo 20 o el decodificador de vídeo 30) puede usar cualquiera de las modalidades de intrapredicción descritas anteriormente (modalidades de HEVC, DMM, codificación en cadena) para intra-predecir información de profundidad usando la rama izquierda 180. En dichos ejemplos, el codificador de vídeo puede realizar una partición (por ejemplo, Wedgelet, Contour, en cadena o similar) 182, determinar una modalidad de predicción 184 (por ejemplo, intra-modalidades de HEVC, DMM o similares) y realizar una codificación residual 186.
[0142] Alternativamente, un elemento sintáctico de SDC (por ejemplo, un sdc_enable_flag) puede indicar la codificación de SDC de acuerdo a la rama derecha 190. Por ejemplo, cuando se implementa la SDC, el codificador de vídeo puede determinar una sub-modalidad de SDC 192 y codificar directamente los valores residuales 194 (por ejemplo, sin transformación y cuantización).
[0143] En algunos casos, la SDC solo se puede aplicar para un tamaño 2Nx2N de partición de PU. Como se ha indicado anteriormente, en lugar de los coeficientes de transformación cuantizados codificados, las modalidades de SDC representan un bloque de profundidad basado en un tipo de partición del bloque de profundidad actual (por ejemplo, DC (1 partición), modalidad DMM 1 (2 particiones), modalidad DMM 2 (2 particiones) o plana (1 partición)). Además, como se ha indicado anteriormente, se proporciona un valor residual en el dominio de píxeles para cada partición.
[0144] Por consiguiente, se pueden definir cuatro sub-modalidades en la SDC, incluyendo la modalidad SDC 1, la modalidad SDC 2, la modalidad SDC 3 y la modalidad SDC 4, que corresponden, respectivamente, al tipo de partición de DC, modalidad DMM 1, modalidad DMM 2 y plana. En algunos casos, los valores de profundidad se pueden correlacionar optativamente con índices, usando una Tabla de Consulta de Profundidad (DLT), que puede construirse analizando las tramas dentro del primer intra-período antes de codificar la secuencia completa. Si se utiliza la DLT, todo la DLT se transmite al decodificador en el conjunto de parámetros de secuencia, y los valores de índice decodificados se vuelven a correlacionar con valores de profundidad basándose en la DLT.
[0145] En cualquier caso, los aspectos de esta divulgación generalmente se refieren a técnicas para determinar un valor de DC predicho para una o más particiones de un bloque de profundidad. Por ejemplo, de acuerdo a aspectos de esta divulgación, un codificador de vídeo, tal como el codificador de vídeo 20 o el decodificador de vídeo 30, puede determinar un valor de DC predicho, basándose en un patrón de partición, tal como el patrón de partición definido de acuerdo a la modalidad de SDC 2 (por ejemplo, la modalidad DMM 1 que tiene dos particiones). Como se describe en mayor detalle a continuación, la estructura de partición utilizada en la modalidad de SDC 2 puede determinar las muestras vecinas a partir de las cuales se obtiene un valor de DC predicho para cada partición.
[0146] La figura 8 es un diagrama de bloques que ilustra un bloque de datos de profundidad y muestras vecinas, que pueden usarse para determinar un valor de profundidad predicho para una o más particiones del bloque. Por ejemplo, como se ha descrito anteriormente, con DMM, codificación en cadena, modalidad de SDC 2 o similar, un codificador de vídeo (tal como el codificador de vídeo 20 o el decodificador de vídeo 30) puede dividir una PU de profundidad en regiones basándose en un patrón de partición específico. Además, el codificador de vídeo puede predecir cada partición usando un solo valor, por ejemplo, un valor de DC predicho, que puede obtenerse a partir de una o más muestras de referencia vecinas.
[0147] En el ejemplo de la figura 8, un bloque de profundidad de tamaño 8x8200 con muestras ci,j, donde i, j = 0, 1, ..., 7 (C0,0 a C7,7) está bordeado por una fila superior de muestras vecinas 202 (P0, -1 a P7, -1) y una columna izquierda de muestras vecinas 204 (P-1,0 a P-1,7) (es decir, pi,j, donde i = -1, j = -1..7 e i = 0..7, j = -1), a partir de las cuales el codificador de vídeo puede obtener un valor de profundidad de DC predicho. El codificador de vídeo, habitualmente, puede promediar todas las muestras vecinas 202 y 204 al determinar un valor de DC predicho.
[0148] En un ejemplo con fines de ilustración, supongamos que un valor de profundidad se representa con una representación de B bits. Por ejemplo, cuando B es 8, un valor de profundidad puede variar de 0 a 255. Además, supongamos que el bloque de profundidad 200 (por ejemplo, un bloque de tamaño NxN compuesto por valores binarios) ha sido dividido según un patrón de partición dado, es decir, bPatternxy, donde x = 0..N - 1, y = 0 .. N -1. Para las hipótesis proporcionadas anteriormente, el codificador de vídeo puede ejecutar habitualmente las siguientes etapas para obtener un valor de DC predicho para cada partición del patrón de partición dado, es decir, DC0 y DC1:
1. Fijar DC0 y DC1 como 2B -1, fijar las variables S0, S1, N0 y N1 iguales a cero.
2. Para i = 0.. N-1, vale lo siguiente:
i. Si bPatterni , 0 es igual a 0, fijar S0 como S0 pi, -1 y fijar N0 como N0+1;
ii. De lo contrario, fijar S1 como S1 pi, -1 y fijar N1 como N1+1;
3. Para i = 0.. N-1, vale lo siguiente:
i. Si bPatternü, i es igual a 0, fijar S0 como S0 p-1, i y fijar N0 como N0+1;
ii. De lo contrario, fijar S1 como S1 p-1, i y fijar N1 como N1+1;
So. Sj
4. Si No no es cero, fijar DCo como wo’ s¡ Ni no es cero, fijar DC1 como^a
[0149] Por consiguiente, en este ejemplo, después de determinar el patrón de partición y de que los valores de DC predichos se obtengan, el codificador de vídeo puede generar un bloque de predicción fijando las muestras ubicadas en la partición 0 y la partición 1 del bloque como DC0 y DC1, respectivamente.
[0150] En el ejemplo anterior, el codificador de vídeo fija inicialmente ambos valores de DC predichos en un valor predeterminado por omisión, e inicializa un conjunto de variables para la obtención del valor predicho. Luego, para cada muestra de la fila superior del bloque de profundidad 200 (C0,0 a C7,0), el codificador de vídeo determina si la muestra pertenece a la primera partición (0) o a la segunda partición.
[0151] Si una muestra del bloque de profundidad 200 pertenece a la primera partición, el codificador de vídeo agrega la muestra de referencia vecina (por ejemplo, (P0, -1) para la primera muestra) a la primera suma de partición (S0) y aumenta un recuento de contribuidores a la primera partición (N0). De lo contrario, si una muestra del bloque de profundidad 200 pertenece a la segunda partición, el codificador de vídeo añade la muestra de referencia vecina (por ejemplo, (P0, -1) para la primera muestra) a la segunda suma de partición (S1) y aumenta un recuento de contribuidores a la segunda partición (N1). El codificador de vídeo repite este proceso para cada muestra de la columna izquierda del bloque de profundidad 200 (C0,0 a C0,7).
[0152] Si cada partición tiene al menos un valor contribuyente procedente de las muestras de referencia vecinas, el codificador de vídeo puede determinar el valor predicho de DC promediando las muestras vecinas contribuyentes (por ejemplo, S0 dividido entre N0 y S1 dividido entre N1). Si no hay ningún contribuyente a una partición, el valor predicho de DC puede permanecer como el valor predeterminado inicial.
[0153] El codificador de vídeo puede generar entonces un bloque de predicción fijando muestras del bloque de predicción ubicado en la partición 0 y la partición 1 del bloque de predicción como DC0 y DC1, respectivamente. Es decir, el codificador de vídeo puede fijar todas las muestras de una primera partición del bloque de predicción en el valor de DC predicho DC0 y todas las muestras de la segunda partición del bloque de predicción en el valor de DC predicho DC1. El codificador de vídeo puede usar el bloque de predicción para generar muestras residuales del bloque de profundidad 200, como se ha descrito anteriormente.
[0154] En el ejemplo descrito anteriormente, hay una serie de operaciones matemáticas asociadas a la generación de un valor de DC predicho. Por ejemplo, cada muestra adyacente contribuyente debe agregarse para determinar el valor promedio. Además, cada muestra adyacente contribuyente debe contarse para determinar el valor promedio. Además, se necesita una operación de división para determinar el valor promedio. Además, hay una operación de división asociada a la determinación de un valor promedio, que es complejo tanto para un codificador de vídeo como para un decodificador.
[0155] Además, el número de operaciones a llevar a cabo aumenta con el tamaño del bloque de profundidad. Por ejemplo, un codificador de vídeo ejecuta 64 sumas para calcular la suma de muestras de referencia que pertenecen a cada partición para un bloque de tamaño 32x32. El codificador de vídeo también ejecuta 64 sumas para contar el número de muestras de referencia que pertenecen a cada partición.
[0156] Como se describe en mayor detalle en la presente, los aspectos de esta divulgación se refieren a técnicas que determinan un valor de DC predicho basándose en un patrón de partición, que puede reducir el número de operaciones realizadas por el codificador de vídeo cuando se determina el valor de DC predicho. Por ejemplo, en lugar de determinar los valores de DC predichos para las particiones de acuerdo al proceso de cálculo de promedios descrito anteriormente con respecto a la figura 8, un codificador de vídeo (tal como el codificador de vídeo 20 o el decodificador de vídeo 30) puede determinar un valor predicho de DC identificando muestras vecinas representativas, basándose en un patrón de predicción determinado.
[0157] Las figuras 9A y 9B generalmente ilustran técnicas que determinan un bloque de predicción de valores de DC predichos para codificar un bloque de valores de profundidad basándose en un promedio de muestras vecinas. El ejemplo de las figuras 9A y 9B ilustra cómo las muestras vecinas cerca de una frontera de partición pueden distorsionar los valores del bloque de predicción.
[0158] Por ejemplo, la figura 9A es un diagrama de bloques que ilustra un bloque de profundidad 220 que tiene una primera partición 222 (valores de profundidad 58, gris sombreado) y una segunda partición 224 (valores de profundidad 121). La figura 9A también incluye una fila superior de muestras vecinas 226 y una columna izquierda de muestras vecinas 228.
[0159] Como se muestra en la figura 9A, los valores de muestra vecinos cerca de la frontera entre la primera partición 222 y la segunda partición 224 no coinciden con los valores de profundidad del bloque 220. Por ejemplo, la muestra vecina 230 de las muestras 226 (valor de profundidad 58) no coincide con el valor de profundidad correspondiente del bloque 220 (valor de profundidad 121). Asimismo, la muestra vecina 232 de las muestras 228 (valor de profundidad 58) no coincide con el valor de profundidad correspondiente del bloque 220 (valor de profundidad 121).
[0160] En este ejemplo, el uso del proceso de cálculo de promedios descrito anteriormente con respecto a la figura 8 para determinar un valor de Dc predicho puede introducir un error de predicción. Por ejemplo, porque la muestra en la fila superior del bloque 220 adyacente a la muestra 230 está incluida en la segunda partición 224, el codificador de vídeo cuenta la muestra 230 hacia el valor promedio para la segunda partición 224 (a pesar de que el valor de la muestra 232 se alinea con la primera partición 222). Asimismo, porque la muestra en la columna izquierda del bloque 220 adyacente a la muestra 232 se incluye en la segunda partición 224, el codificador de vídeo también cuenta la muestra 232 hacia el valor promedio para la segunda partición 224 (a pesar de que el valor de la muestra 232 se alinea con la primera partición 222).
[0161] La figura 9B es un diagrama de bloques que ilustra un bloque de predicción 240 que tiene un primer valor de DC predicho 242 y un segundo valor de DC predicho 244 que corresponden a la primera partición 222 y a la segunda partición 224, respectivamente, del bloque de profundidad 220 mostrado en la figura 9A. Como se muestra en la figura 9B, las muestras 230 y 232 cerca de la frontera de partición introducen un error de predicción relativamente grande. Por ejemplo, las muestras 230 y 232 se dividen de forma inexacta, lo que da como resultado valores DC0 y DC1 de 58 y 89 (en lugar de 58 y 121). Tal error de predicción puede afectar la eficacia de la codificación.
[0162] De nuevo, aspectos de esta divulgación se refieren a técnicas para determinar un valor de DC predicho basándose en un patrón de partición, que puede reducir la introducción de errores de partición. Por ejemplo, en lugar de determinar los valores de DC predichos para las particiones de acuerdo al proceso de cálculo de promedios descrito anteriormente con respecto a la figura 8, un codificador de vídeo (tal como el codificador de vídeo 20 o el decodificador de vídeo 30) puede determinar un valor predicho de DC identificando muestras vecinas representativas, basándose en un patrón de predicción determinado. El codificador de vídeo puede reducir la introducción de errores de partición cerca de las fronteras del borde, seleccionando una o más muestras vecinas representativas ubicadas lejos de las fronteras de la partición.
[0163] La figura 10 es un diagrama de bloques que ilustra un bloque de datos de profundidad y muestras vecinas, que pueden usarse para determinar un valor de profundidad predicho para una o más particiones del bloque, de acuerdo a aspectos de esta divulgación. Por ejemplo, como se ha descrito anteriormente, con DMM, codificación en cadena, modalidad de SDC 2 o similar, un codificador de vídeo (tal como el codificador de vídeo 20 o el decodificador de vídeo 30) puede dividir una PU de profundidad en dos regiones basándose en un patrón de partición específico. Además, el codificador de vídeo puede predecir cada partición usando un solo valor, por ejemplo, un valor de DC predicho, que puede obtenerse a partir de una o más muestras de referencia vecinas.
[0164] En el ejemplo de la figura 10, un bloque de profundidad de tamaño 8x8260 con muestras c¡,j, donde i, j = 0,1, ..., 7 (C0,0 a C7,7) está bordeado por una fila superior de muestras vecinas 262 (pT0 a pT7) y una columna izquierda de muestras vecinas 264 (pL0 a pL7), a partir de lo cual el codificador de vídeo puede obtener un valor de profundidad de DC predicho. El bloque de profundidad 260 puede corresponder a una unidad de predicción PU de tamaño NxN en una imagen de profundidad codificada que tiene un patrón de partición P que divide la PU en dos regiones predichas por separado (por ejemplo, teniendo cada región un predictor por separado).
[0165] De acuerdo a aspectos de esta divulgación, en lugar de usar todas las muestras de la fila superior 262 y la columna izquierda 264 (es decir, pLi y pTj, respectivamente, con i que incluye 0..N-1 y j que incluye 0..N-1), como se describe con respecto a la figura 8, un codificador de vídeo, tal como el codificador de vídeo 20 o el decodificador de vídeo 30, puede seleccionar varias muestras de referencia vecinas desde la fila superior 262 y la columna izquierda 264 para calcular los valores de DC para las particiones de la PU.
[0166] En algunos casos, el codificador de vídeo solo puede seleccionar muestras de referencia que incluyen las muestras de inicio y finalización de la fila superior 262 y / o la columna izquierda 264 para determinar un valor de DC predicho. Por ejemplo, con respecto a la fila superior 262, el codificador de vídeo puede seleccionar muestras de referencia pTü y pTN-1 (por ejemplo, pT0 y pT7 en el ejemplo de la figura 10) para determinar un valor de DC predicho. Con respecto a la columna izquierda 264, el codificador de vídeo puede seleccionar muestras de referencia pL0 y PLn- 1 (por ejemplo, pL0 y pL7 en el ejemplo de la figura 10) para determinar un valor de DC predicho.
[0167] En algunos casos, el codificador de vídeo selecciona, adicionalmente o alternativamente, hasta dos muestras de referencia vecinas (inclusive) hacia el centro relativo de la fila superior 262 y / o la columna izquierda 264 para determinar un valor de DC predicho. Por ejemplo, el codificador de vídeo puede seleccionar muestras de referencia pTx o pLx, con x igual a (N-1) >> 1, o x igual a N >> 1, para determinar un valor de DC predicho.
[0168] El codificador de vídeo puede seleccionar las muestras de referencia vecinas y adecuadas para determinar un valor de DC predicho, basándose en el patrón de partición P. En un ejemplo con fines de ilustración, si una partición no contiene ninguna muestra en la fila superior del bloque 260 (ninguna entre C0,0 y C7,0 está asignada a la partición) y no contiene ninguna muestra en la columna izquierda del bloque 260 (ninguna entre C0,0 y C0,7 está asignada a la partición), por ejemplo, descrito aquí como el patrón 0, como se muestra en la figura 11A a continuación, el codificador de vídeo puede no seleccionar ninguna muestra de referencia de la fila superior 262 0 la columna izquierda 264 para determinar un valor de DC predicho para la partición. En cambio, el codificador de vídeo puede asignar a la partición un predictor predeterminado, por ejemplo, 2B-1, con B igual al número de bits utilizados para representar los valores de profundidad del bloque 260. Por ejemplo, para una representación típica de 8 bits, el codificador de vídeo puede asignar un valor predeterminado de 128 a la partición.
[0169] En otro ejemplo con fines de ilustración, si una partición contiene todas las muestras de la fila superior del bloque 260 (todas entre C0,0 y C7,0 están asignadas a la partición) y una o más de las muestras de la columna izquierda del bloque 260 (una o más entre C0,0 y C0,7 están asignadas a la partición), por ejemplo, descrito en este documento como el patrón 1, como se muestra en la figura 11C a continuación, el codificador de vídeo puede seleccionar una muestra de referencia del centro relativo de la fila de muestras vecinas 262 como un valor representativo para la partición. Por ejemplo, el codificador de vídeo puede seleccionar la muestra pTx con x igual a (N-1) >> 1, o x igual a N >> 1, como la muestra representativa.
[0170] En este ejemplo, el codificador de vídeo puede fijar el valor de DC predicho para la partición igual a la muestra representativa seleccionada. Debido a que todas las muestras están asignadas a la misma partición y tienen, por lo tanto, el mismo valor o un valor similar, la mayoría de las muestras de referencia vecinas también deberían tener el mismo valor de profundidad, o uno similar (por ejemplo, debido a las características habitualmente asociadas a los mapas de profundidad, tales como áreas de valores de profundidad constante, como se ha descrito anteriormente). Al suponer que las muestras de referencia vecinas tienen el mismo valor (o un valor similar), el codificador de vídeo no necesita realizar ninguna operación adicional de cálculo de promedios, como se ha descrito con respecto a la figura 8. En cambio, el codificador de vídeo puede determinar el valor de DC predicho usando una única muestra de referencia vecina.
[0171] Además, seleccionar una única muestra de referencia vecina (o un número relativamente pequeño de muestras de referencia vecinas, como se describe a continuación) puede proporcionar un valor predicho de DC más preciso que el proceso de cálculo de promedios descrito anteriormente. Por ejemplo, en el ejemplo del patrón 1 descrito anteriormente, el codificador de vídeo puede seleccionar una muestra de referencia contigua central a partir de la cual obtener el valor de DC predicho, para evitar las fronteras de partición. El uso de una única muestra de referencia vecina elimina la posibilidad de incluir una muestra de referencia vecina dividida de manera inexacta, como se ha descrito anteriormente con respecto a las figuras 9A y 9B.
[0172] Se muestran patrones de partición adicionales y las respectivas muestras vecinas representativas para determinar un valor de DC predicho en las figuras 11A a 11G a continuación. Después de determinar el valor de DC predicho para cada partición, el codificador de vídeo puede codificar el bloque 260 usando los valores de DC predichos. Por ejemplo, en un codificador (tal como el codificador de vídeo 20), se puede determinar un residuo basándose en una diferencia entre los valores de muestra reales del bloque 260 y los valores de DC predichos para las particiones respectivas. En un decodificador (tal como el decodificador de vídeo 30) se puede combinar un residuo con los valores predichos de DC para las particiones respectivas, para reconstruir los valores reales para el bloque 260.
[0173] Los ejemplos descritos anteriormente incluyen generalmente un proceso de comprobación de una asignación de partición de cada muestra de la fila superior del bloque 260 y cada muestra de la columna izquierda del bloque 260, para identificar las transiciones entre una primera partición (por ejemplo, la partición 0) y una segunda partición (por ejemplo, la partición 1). De acuerdo a otros aspectos de esta divulgación, el codificador de vídeo puede verificar un subconjunto de asignaciones de partición para identificar una transición entre las particiones en la fila superior del bloque 260 y la columna izquierda del bloque 260. Por ejemplo, de acuerdo a aspectos de esta divulgación, el codificador de vídeo puede determinar un patrón de partición basado en tres muestras del bloque 260. En este ejemplo, el codificador de vídeo puede identificar la asignación de partición de la muestra superior izquierda del bloque 260 (C0,0), la asignación de partición de la muestra superior derecha del bloque 260 (C7,0) y la asignación de partición de la muestra inferior izquierda del bloque 260 (C0,7). En otros ejemplos, el codificador de vídeo puede identificar asignaciones de partición de otras muestras del bloque 260.
[0174] En el ejemplo descrito anteriormente, si la muestra superior izquierda del bloque 260 (C0,0) está asignada a una partición diferente a la de la muestra superior derecha del bloque 260 (C7,0), el codificador de vídeo puede identificar una transición de partición en la fila superior de las muestras de profundidad. Es decir, el codificador de vídeo puede identificar que al menos una muestra de la fila superior del bloque 260 está asignada a una primera partición y al menos una muestra de la fila superior del bloque 260 está asignada a una segunda partición. Del mismo modo, si la muestra superior izquierda del bloque 260 (C0,0) se asigna a una partición diferente a la de la muestra inferior izquierda del bloque 260 (C0,7), el codificador de vídeo puede identificar una transición de partición a lo largo de la fila superior de muestras de profundidad. Es decir, el codificador de vídeo puede identificar que al menos una muestra de la columna izquierda del bloque 260 se asigna a una primera partición y al menos una muestra de la fila superior del bloque 260 se asigna a una segunda partición.
[0175] El codificador de vídeo puede usar la información anterior para determinar un patrón de partición para el bloque 260. Sin embargo, no es necesario determinar la ubicación precisa en la que se produce una transición de partición (por ejemplo, la ubicación de una frontera de partición). En cambio, como se ha indicado anteriormente, la ubicación de las muestras vecinas representativas se selecciona para evitar las fronteras de partición. En consecuencia, el codificador de vídeo puede determinar un patrón de partición e identificar muestras vecinas representativas para los valores predichos de DC sin determinar la ubicación precisa de una transición de partición.
[0176] Las técnicas descritas anteriormente se pueden realizar para cualquier bloque de profundidad que se divida de acuerdo a un esquema de partición. Por ejemplo, las técnicas se pueden usar junto con modalidades DMM, codificación en cadena, modalidad de SDC 2 o similares.
[0177] En algunos ejemplos, el codificador de vídeo puede determinar el número de muestras de referencia vecinas que se seleccionan para determinar el valor de DC predicho de una partición en función de la partición del bloque. Por ejemplo, como se describe a continuación con respecto a las figuras 11A a 11G, para un patrón de partición, el codificador de vídeo puede identificar una única muestra de referencia vecina representativa a partir de la cual determinar el valor predicho de DC. Para otro patrón de partición, el codificador de vídeo puede identificar más de una muestra de referencia vecina representativa, a partir de la cual determinar el valor de DC predicho.
[0178] En consecuencia, el número de muestras de referencia vecinas a partir de las cuales determinar un valor predicho de DC puede ser variable. Por ejemplo, el codificador de vídeo puede seleccionar 2L (donde L es mayor que 0) muestras de referencia vecinas cuando se determina un valor de DC predicho (por ejemplo, 1,2, 4 o similar). El número y las posiciones de las muestras de referencia vecinas seleccionadas para los cálculos de DC pueden, en algunos ejemplos, depender del tamaño de PU o de otras características del bloque 260.
[0179] Las figuras 11A a 11H son diagramas de bloques que ilustran patrones de partición ejemplares para bloques de datos de profundidad y muestras de referencia vecinas a partir de las cuales se determina un valor de profundidad predicho, de acuerdo a aspectos de esta divulgación. En general, las figuras 11A a 11H se describen desde la perspectiva de una segunda partición (como se muestra con bloques sombreados "1") para determinar un patrón de partición y generar un valor de DC predicho. Debería entenderse que se pueden aplicar las mismas técnicas para determinar un patrón de partición y generar un valor predicho de DC, desde la perspectiva de una primera partición (como se muestra con bloques "0" sin sombreado).
[0180] La figura 11A generalmente ilustra un bloque de profundidad 280 que tiene una primera partición 282 y una segunda partición 284. El patrón de partición mostrado en la figura 11A generalmente puede denominarse patrón 0. En este ejemplo, la segunda partición 284 (la partición para la cual se está generando un valor de DC predicho) no incluye ninguna muestra en una fila superior 286 o una columna izquierda 288 del bloque 280. Es decir, la muestra inferior derecha del bloque 280 se asigna a una partición diferente (segunda partición 284) a la de una partición que contiene las muestras superior izquierda, superior derecha e inferior izquierda (primera partición 282).
[0181] Al identificar el patrón 0, un codificador de vídeo (tal como el codificador de vídeo 20 o el decodificador de vídeo 30) puede determinar un valor de DC predicho para la segunda partición 284, basándose en un valor predeterminado por omisión. Por ejemplo, debido a que ninguna de las muestras de referencia vecinas limita con la segunda partición 284, el codificador de vídeo puede determinar un valor de DC predicho para la segunda partición 284, que no depende de las muestras de referencia vecinas. En algunos ejemplos, el codificador de vídeo puede establecer un valor predicho de DC predeterminado igual a 2B-1, con B igual al número de bits usados para representar los valores de profundidad en el bloque 280. En otros ejemplos, el codificador de vídeo puede establecer un valor diferente predeterminado de DC predicho.
[0182] La figura 11B generalmente ilustra un bloque de profundidad 290 que tiene una primera partición 292 y una segunda partición 294. El patrón de partición mostrado en la figura 11B generalmente puede denominarse patrón 1. En este ejemplo, la segunda partición 294 (la partición para la cual se está generando un valor predicho de DC) incluye al menos una muestra de la fila superior 296 y todas las muestras de la columna izquierda 298 del bloque 290. La muestra superior izquierda y la muestra inferior izquierda del bloque 280 se asignan a una partición diferente (segunda partición 284) a una partición que contiene la muestra superior derecha (primera partición 292).
[0183] Al identificar el patrón 1, un codificador de vídeo (tal como el codificador de vídeo 20 o el decodificador de vídeo 30) puede determinar un valor de DC predicho para la segunda partición 294, basándose en una muestra vecina representativa 300 situada cerca del centro de la columna izquierda 298. Por ejemplo, como se ha indicado anteriormente con respecto a la figura 10, el codificador de vídeo puede seleccionar una muestra central pLX con x igual a (N-1) >> 1, o x igual a N >> 1, donde N es el número de muestras de la columna izquierda 298. La selección de una muestra central de la columna izquierda 298 puede ayudar a garantizar que la muestra representativa no se sitúe cerca de una frontera de partición, lo que puede aumentar la precisión de la predicción, como se ha descrito anteriormente. Después de seleccionar la muestra vecina 300, el codificador de vídeo puede fijar el valor de DC predicho para la segunda partición 294 en el valor de la muestra vecina 300.
[0184] La figura 11C generalmente ilustra un bloque de profundidad 310 que tiene una primera partición 312 y una segunda partición 314. El patrón de partición mostrado en la figura 11C es un segundo ejemplo del patrón 1. En este ejemplo, la segunda partición 314 (la partición para la cual se está generando un valor de DC predicho) incluye todas las muestras de la fila superior 316 y al menos una muestra de la columna izquierda 318 del bloque 310. La muestra superior izquierda y la muestra superior derecha del bloque 310 se asignan a una partición diferente (segunda partición 314) a una partición que contiene la muestra inferior izquierda (primera partición 312).
[0185] Al identificar el patrón 1, un codificador de vídeo (tal como el codificador de vídeo 20 o el decodificador de vídeo 30) puede determinar un valor de DC predicho para la segunda partición 314, basándose en una muestra vecina representativa 320 situada cerca del centro de la fila superior 316. Por ejemplo, como se ha indicado anteriormente con respecto a la figura 10, el codificador de vídeo puede seleccionar una muestra central pTX, con x igual a (N-1) >> 1, o x igual a N >> 1, donde N es el número de muestras de la fila superior 316. La selección de una muestra central de la fila superior 316 puede ayudar a garantizar que la muestra representativa no se sitúe cerca de una frontera de partición, lo que puede aumentar la precisión de predicción, como se ha descrito anteriormente. Después de seleccionar la muestra vecina 320, el codificador de vídeo puede fijar el valor de DC predicho para la segunda partición 314 en el valor de la muestra vecina 320.
[0186] La figura 11D generalmente ilustra un bloque de profundidad 340 que tiene una primera partición 342 y una segunda partición 344. El patrón de partición mostrado en la figura 11D, en general, se puede denominar patrón 2. En este ejemplo, la segunda partición 344 (la partición para la cual se está generando un valor de DC predicho) no incluye ninguna muestra de la fila superior 346 e incluye al menos una muestra de la columna izquierda 348 del bloque 340. La muestra superior izquierda y la muestra superior derecha del bloque 340 se asignan a una partición diferente (primera partición 342) a una partición que contiene la muestra inferior izquierda (segunda partición 344).
[0187] Tras identificar el patrón 2, un codificador de vídeo (como el codificador de vídeo 20 o el decodificador de vídeo 30) puede determinar un valor de DC predicho para la segunda partición 344, basándose en una muestra adyacente representativa 350 situada en la parte inferior de la columna izquierda 348 (es decir, adyacente a la muestra de la esquina inferior izquierda del bloque 340). Es decir, el codificador de vídeo puede seleccionar la muestra final en la columna izquierda 348 como la muestra vecina representativa para la segunda partición 344. La selección de la muestra final de la columna izquierda 348 puede ayudar a asegurar que la muestra representativa no se sitúe cerca de la transición entre la primera partición 342 y la segunda partición 344 a lo largo de la columna izquierda 348. Como se ha señalado anteriormente, la selección de muestras que están situadas lejos de las fronteras de partición puede aumentar la precisión de predicción. Después de seleccionar la muestra vecina 350, el codificador de vídeo puede fijar el valor de DC predicho para la segunda partición 344 en el valor de la muestra vecina 350.
[0188] La figura 11E ilustra generalmente un bloque de profundidad 360 que tiene una primera partición 362 y una segunda partición 364. El patrón de partición mostrado en la figura 11E es otro ejemplo del patrón 2. En este ejemplo, la segunda partición 364 (la partición para la cual se está generando un valor predicho de DC) incluye al menos una muestra de la fila superior 366 pero no incluye ninguna muestra de la columna izquierda 368 del bloque 360. La muestra superior izquierda y la muestra inferior izquierda del bloque 360 se asignan a una partición diferente (primera partición 362) a una partición que contiene la muestra superior derecha (segunda partición 364).
[0189] Al identificar el patrón 2, un codificador de vídeo (tal como el codificador de vídeo 20 o el decodificador de vídeo 30) puede determinar un valor de DC predicho para la segunda partición 364, basándose en una muestra representativa vecina 370 situada en el extremo de la fila superior 366 (es decir, adyacente a la muestra de la esquina superior derecha del bloque 360). Es decir, el codificador de vídeo puede seleccionar la muestra final en la fila superior 366 como la muestra vecina representativa para la segunda partición 364. La selección de la muestra final de la fila superior 366 puede ayudar a garantizar que la muestra representativa no esté situada cerca de la transición entre la primera partición 362 y la segunda partición 364 a lo largo de la fila superior 366. Como se ha señalado anteriormente, la selección de muestras que están situadas lejos de las fronteras de partición puede aumentar la precisión de predicción. Después de seleccionar la muestra vecina 370, el codificador de vídeo puede fijar el valor de DC predicho para la segunda partición 364 en el valor de la muestra vecina 370.
[0190] La figura 11F generalmente ilustra un bloque de profundidad 380 que tiene una primera partición 382 y una segunda partición 384. El patrón de partición mostrado en la figura 11F generalmente puede mencionarse como patrón 3. En este ejemplo, la segunda partición 384 (la partición para la cual se está generando un valor predicho de DC) incluye al menos una muestra de la fila superior 386 y al menos una muestra de la columna izquierda 388 del bloque 380. La muestra superior izquierda del bloque 380 se asigna a una partición diferente (segunda partición 384) a una partición que contiene la muestra superior derecha y la muestra inferior izquierda (primera partición 382).
[0191] Al identificar el patrón 3, un codificador de vídeo (tal como el codificador de vídeo 20 o el decodificador de vídeo 30) puede determinar un valor de DC predicho para la segunda partición 384, basándose en una primera muestra vecina representativa 390 situada encima de la muestra de la esquina superior izquierda del bloque 380 y en una segunda muestra representativa vecina 392 situada a la izquierda de la muestra de la esquina superior izquierda del bloque 380 (por ejemplo, las muestras pLü y pTü, como se muestra en la figura 10). En este ejemplo, el codificador de vídeo puede combinar la primera muestra 390 y la segunda muestra 392 y realizar una operación de desplazamiento a derecha para determinar el valor promedio de las muestras (sin realizar una operación de división). La selección de las muestras en la esquina suprema del bloque 380 puede ayudar a asegurar que las muestras representativas no estén situadas cerca de la transición entre la primera partición 382 y la segunda partición 384 a lo largo de la fila superior 386 o la columna izquierda 388. En algunos ejemplos, en lugar de seleccionar tanto la muestra 390 como la muestra 392 para determinar el valor de DC predicho, el codificador de vídeo puede seleccionar una entre la muestra 390 y la muestra 392.
[0192] La figura 11G ilustra generalmente un bloque de profundidad 400 que tiene una primera partición 402 y una segunda partición 404. El patrón de partición mostrado en la figura 11G es otro ejemplo del patrón 3. En este ejemplo, la segunda partición 404 (la partición para la cual se está generando un valor predicho de DC) incluye al menos una muestra de la fila superior 406 y al menos una muestra de la columna izquierda 408 del bloque 400. La muestra superior izquierda del bloque 380 se asigna a una partición diferente (primera partición 402) a una partición que contiene la muestra superior derecha y la muestra inferior izquierda (segunda partición 404).
[0193] Al identificar el patrón 3, un codificador de vídeo (tal como el codificador de vídeo 20 o el decodificador de vídeo 30) puede determinar un valor de DC predicho para la segunda partición 404, basándose en una primera muestra vecina representativa 410 situada encima de la muestra de la esquina superior derecha del bloque 400 y una segunda muestra vecina representativa 412 situada a la izquierda de la muestra de la esquina inferior izquierda del bloque 400 (por ejemplo, las muestras pLN-1 y pTN-1, como se muestra en la figura 10). En este ejemplo, el codificador de vídeo puede combinar la primera muestra 410 y la segunda muestra 412 y realizar una operación de desplazamiento a la derecha para determinar el valor promedio de las muestras (sin realizar una operación de división). La selección de las muestras en las esquinas opuestas del bloque 400 puede ayudar a asegurar que las muestras representativas no estén situadas cerca de la transición entre la primera partición 402 y la segunda partición 404 a lo largo de la fila superior 406 o la columna izquierda 408. En algunos ejemplos, en lugar de seleccionar tanto la muestra 410 como la muestra 412 para determinar el valor de DC predicho, el codificador de vídeo puede seleccionar una entre la muestra 410 y la muestra 412.
[0194] La figura 11H generalmente ilustra un bloque de profundidad 420 que tiene una primera partición 422 y una segunda partición 424. El patrón de partición mostrado en la figura 11H generalmente se puede denominar patrón 4. En este ejemplo, la segunda partición 424 (la partición para la cual se está generando un valor de DC predicho) incluye todas las muestras de la fila superior 426, así como también todas las muestras de la columna izquierda 428 del bloque 420. La muestra superior izquierda, la muestra superior derecha y la muestra inferior izquierda del bloque 420 están todas asignadas a la misma partición (segunda partición 424).
[0195] Al identificar el patrón 4, un codificador de vídeo (tal como el codificador de vídeo 20 o el decodificador de vídeo 30) puede determinar un valor de DC predicho para la segunda partición 424, basándose en una primera muestra vecina representativa 430 situada encima de la muestra de la esquina superior izquierda del bloque 420 y en una segunda muestra vecina representativa 432 situada a la izquierda de la muestra de esquina superior izquierda del bloque 420 (por ejemplo, muestras pLü y pTü, como se muestra en la figura 10). En este ejemplo, el codificador de vídeo puede combinar la primera muestra 430 y la segunda muestra 432 y realizar una operación de desplazamiento a la derecha para determinar el valor promedio de las muestras (sin realizar una operación de división). En algunos ejemplos, en lugar de seleccionar tanto la muestra 430 como la muestra 432 para determinar el valor de DC predicho, el codificador de vídeo puede seleccionar una entre la muestra 430 y la muestra 432.
[0196] Debería entenderse que los ejemplos proporcionados con respecto a las figuras 11A a 11H se proporcionan solo con fines de ilustración. Es decir, las técnicas descritas anteriormente pueden aplicarse a bloques de valores de profundidad que tienen otros tamaños y que tienen una disposición diferente de muestras de profundidad (ciertas muestras de profundidad asignadas a diferentes particiones). Además, las muestras de referencia vecinas, a partir de las cuales se determina un valor de DC predicho, también pueden ser diferentes sin apartarse de las técnicas descritas anteriormente. Por ejemplo, mientras que los ejemplos de las figuras 11A a 11H describen la selección de una o dos muestras de referencia representativas vecinas, en otros ejemplos el codificador de vídeo puede seleccionar más o menos muestras de referencia.
[0197] La figura 12 es un diagrama de flujo que ilustra un proceso ejemplar para determinar valores predichos para una o más particiones de un bloque de datos de profundidad, de acuerdo a aspectos de esta divulgación. Mientras que el proceso que se muestra en la figura 12 generalmente se describe como llevado a cabo por un codificador de vídeo, debería entenderse que las técnicas pueden ser realizadas por el codificador de vídeo 20, el decodificador de vídeo 30 o una variedad de otros procesadores.
[0198] En el ejemplo de la figura 12, el codificador de vídeo puede realizar partición de bloques de profundidad (430). Por ejemplo, el codificador de vídeo puede dividir inicialmente un bloque de profundidad en regiones usando modalidades DMM, modalidades de codificación en cadena, modalidad de SDC 2 o similares. Al realizar la partición, el codificador de vídeo asigna muestras del bloque a una primera partición o a una segunda partición, como se ha descrito anteriormente. En un ejemplo con fines de ilustración, supongamos que el codificador de vídeo divide un bloque de tamaño NxN de valores de profundidad en un bloque de valores binarios, es decir, bPattern x y , que representa la partición, donde x = 0..N-1 , y = 0..N-1 , y tiene muestras de referencia vecinas de una matriz px,y, donde x = -1, y = -1. N -1 y x = 0..N -1, y = -1.
[0199] El codificador de vídeo luego determina un patrón de partición para el bloque de profundidad (432). Continuando con el ejemplo descrito anteriormente, el codificador de vídeo puede determinar un patrón de partición basado en las siguientes etapas:
1. Fijar las variables bL y bT en el valor lógico 'falso' y las variables V0 y V1 en 0;
2. Para x = 0 .. N-2, bT se fija en el valor lógico 'verdadero' cuando bPattern x, 0 no es igual a bPattern x + 1,0, y bL se fija en el valor lógico 'verdadero' cuando bPattern 0,x no es igual a bPattern 0, x 1 ;
En este ejemplo, el codificador de vídeo identifica una frontera de partición a lo largo de la fila superior del bloque y a lo largo de la columna izquierda del bloque al verificar cada muestra de la fila superior y columna izquierda para identificar una transición desde un valor de partición binario de 0 a valor de partición binaria de 1 (o viceversa). Con esta información, el codificador de vídeo determina un patrón de partición, tal como uno de los patrones ejemplares de partición que se muestran en las figuras 11A a 11H en lo que antecede.
[0200] En otro ejemplo, el codificador de vídeo puede determinar un patrón de partición basado en un subconjunto de valores de profundidad. Por ejemplo, como se ha indicado anteriormente, puede que no sea necesario determinar la ubicación precisa de una frontera de partición para determinar un patrón de partición. En un ejemplo, la etapa 2 anterior puede ser reemplazada por la siguiente etapa:
2. Fijar bT como verdadero cuando bPattern o,o no es igual a bPattern N-1,0 y bL como verdadero
cuando bPattern 0,0 no es igual a bPattern 0 ,N -i .
En este ejemplo, el codificador de vídeo determina el patrón de partición en base a las muestras más externas del bloque de profundidad, como se ha descrito anteriormente.
[0201] En base al patrón de partición determinado, el codificador de vídeo puede identificar una o más muestras de referencia vecinas como muestras representativas para un valor de DC predicho (434). Por ejemplo, el codificador de vídeo puede identificar una muestra de referencia vecina que esté situada para evitar las fronteras de partición. Continuando con el ejemplo descrito anteriormente, el codificador de vídeo puede identificar muestras de referencia vecinas basándose en las siguientes etapas:
3. Para bL y bT:
i. Si bL es igual a bT:
a. Fijar V1 como (p-1,0 p0, -1) >> 1;
b. Si bL es verdadero, fijar V0 como (p-1, n-1 pn-1, -1) >> 1; de lo contrario, fijar V0 como 1<< (fí-1);
ii. en caso contrario:
a. Si bL es verdadero, fijar V0 como p-1, n-1 y fijar V1 como p(N-1) >> 1,-1;
b. De lo contrario, fijar V0 como pN-1,-1 y fijar V1 como p-1, (n-1) >> 1;
[0202] En el ejemplo anterior, si las variables de transición bL y bT son iguales (no hay ninguna frontera de partición en la fila superior o la columna izquierda, o hay una frontera de partición tanto en la fila superior como en la columna izquierda) el codificador de vídeo fija una variable de partición V1 en una combinación desplazada a la derecha de una muestra de referencia vecina que está situada encima de la muestra de la esquina superior izquierda del bloque y una muestra de referencia vecina que está situada a la izquierda de la muestra de la esquina superior izquierda del bloque. Además, si la variable de transición para la columna izquierda bL es verdadera (hay una frontera de partición en la columna izquierda) el codificador de vídeo fija una variable de partición V0 en una combinación desplazada a la derecha de un valor de referencia vecino al final de la fila superior de muestras de profundidad y de un valor de referencia vecino al final de la columna izquierda de las muestras de profundidad.
[0203] Si las variables de transición bL y bT no son iguales (solo hay una frontera de partición en la fila superior o la columna izquierda) y bL es verdadero (la frontera de partición está a lo largo de la columna izquierda de las muestras), el codificador de vídeo fija una variable de partición V0 en la muestra de referencia vecina que se sitúa al final (abajo) de la columna izquierda del bloque. El codificador de vídeo también fija la otra variable de partición V1 en la muestra de referencia vecina que se sitúe al final (más a la derecha) de la fila superior del bloque.
[0204] Si las variables de transición bL y bT no son iguales (solo hay una frontera de partición en la fila superior o la columna izquierda) y bL no es verdadero (la frontera de la partición está a lo largo de la fila superior de muestras), el codificador de vídeo fija una variable de partición V0 en la muestra de referencia vecina que esté situada al final (más a la derecha) de la fila superior del bloque. El codificador de vídeo también fija la otra variable de partición V1 en la muestra de referencia vecina que esté situada al final (abajo) de la columna izquierda del bloque.
[0205] El codificador de vídeo luego fija los valores de DC predichos para cada partición basándose en las muestras de referencia vecinas identificadas (436). Continuando con el ejemplo anterior, el codificador de vídeo puede realizar la siguiente etapa:
4. Si bPattern 0,0 es igual a 1, fijar DC0 como V0 y fijar DC1 como V1; de lo contrario, fijar DC0 como V1 y fijar DC1 como V0.
En este ejemplo, si la muestra de la esquina izquierda superior del bloque pertenece a una segunda partición (partición 1), el codificador de vídeo fija un primer valor de DC predicho, DC0, como la variable V0 y un segundo valor de DC predicho, DC1, como la variable V1. Si la muestra de la esquina izquierda superior del bloque pertenece a una primera partición (partición 0), el codificador de vídeo fija un primer valor de DC predicho, DC0, como la variable V1 y un segundo valor de DC predicho, DC1, como la variable V0.
[0206] En un ejemplo, las modificaciones al borrador actual de la norma 3D-HEVC, para un proceso que identifica una frontera de partición basándose en todas las muestras de una fila superior y una columna izquierda (como se describe con respecto a la primera etapa 2 anterior) se muestran a continuación. Las modificaciones se muestran usando para indicar eliminaciones y negrita y cursiva para indicar adiciones:
G.8.4.4.2.12 Proceso de obtención y asignación de valores de partición de profundidad
[0207] Las entradas para este proceso son:
- muestras vecinas p[x][y], con x, y = -1..2 * nT-1,
- una formación binaria de partitionPattern[x][y], con x, y = 0..nT-1, lo que especifica una partición del bloque de predicción en una partición 0 y una partición 1.
- una variable nT que especifica el tamaño de la transformación,
- un indicador dcOffsetAvailFlag, que especifica si los valores de desplazamiento de DC están disponibles - las variables quantDcOffsetP0 y quantCcOffsetP1, que especifican los desplazamientos de DC para las particiones de bloque
[0208] La salida de este proceso es:
- muestras predichas predSamples[x][y], con x, y = 0..nT-1.
[0209] Los valores de las muestras de predicción predSamples[x][y] se obtienen como se especifica en las siguientes etapas ordenadas:
1. Las variables bL y bT se fijan como falsas y vale lo siguiente.
- Para x = 0..nT - 1, vale lo siguiente.
- Cuando partitionPattern[x][0] no es igual a X partitionPattern[x 1] [0], vale lo siguiente:
bT = verdadero (G-59)
- Para y = 0..nT - 1, vale lo siguiente.
- Cuando partitionPattern[0, y] no es igual a X partitionPattern[0] [y 1], vale lo siguiente:
bL = verdadero (G-60)
2. Las variables predDcVa10 y predDcVal1, que especifican los valores de partición constante predichos para la partición 0 y 1, respectivamente, se obtienen de la siguiente manera.
- Si bL es igual a bT, vale lo siguiente. :
dcValO = bL ? (p[-1][nT-1] p[nT-1][-1])>>1 : 1 <<
(Bitüepthy -1 ) (G-61)
dcVal1 = (p[-1][0] p[0][-1])>>1 (G-62)
- üe lo contrario, vale lo siguiente::
dcValO = bL ? p[-1][nT-1]: p[nT-1][-1] (G-63)
dcVal1 = bL ? p[(nT-1 ) >> 1][-1]: p[-1][(nT -1 ) >> 1] (G-64)
predücValO = partitionPattern[0][0] ? dcValO : dcVal1
predücVal1 = partitionPattern[0][0] ? dcVal1: dcVal0
Para X reemplazado por 0 y 1, vale lo siguiente.
1. La variable deQuantDcOffset, que especifica el desplazamiento de DC descuantizado, se obtiene de la siguiente manera.
- Si dcOffsetAvailFlag es igual a 1, vale lo siguiente: :
dcOffset = quantDcOffsetPX * Clip3(1 ,(1 << BitDepthY) - 1, Round(2(QP710>-2 ) ) (G-64)
- De lo contrario (dcOffsetAvailFlag es igual a 0), deQuantDcOffset se fija igual a 0.
2. Los valores predichos de muestra predSamples se obtienen de la siguiente manera para x = 0..nT-1 y para y = 0..nT-1.
- Cuando partitionPattern[x][y] es igual a X, vale lo siguiente. predSamples[x][y] = predDcValX dcOffset (G-65)
[0210] En otro ejemplo, se muestran más adelante modificaciones al borrador actual de la norma 3D-HEVC para un proceso que identifica una frontera de partición basándose en un subconjunto de muestras de una fila superior y una columna izquierda (como se describe con respecto a la segunda etapa 2 anterior). Las modificaciones se muestran usando para indicar eliminaciones y negrita y cursiva para indicar adiciones:
G.8.4.4.2.12 Proceso de obtención y asignación de valores de partición de profundidad
[0211] Las entradas para este proceso son:
- muestras vecinas p[x][y], con x, y = -1..2 * nT-1,
- una formación binaria de partitionPattern[x][y], con x, y = 0..nT-1, lo que especifica una partición del bloque de predicción en una partición 0 y una partición 1.
- una variable nT que especifica el tamaño de la transformación,
- un indicador dcOffsetAvailFlag, que especifica si los valores de desplazamiento de DC están disponibles - las variables quantDcOffsetP0 y quantCcOffsetP1, que especifican los desplazamientos de DC para las particiones de bloque
La salida de este proceso es:
- muestras predichas predSamples[x][y], con x, y = 0..nT-1.
[0212] Los valores de las muestras de predicción predSamples[x][y] se obtienen como se especifica en las siguientes etapas ordenadas:
1. Vale lo siguiente:
bT = (partitionPattern[0][0]! = partitionPattern[nT-1][0]) ? Verdadero : falso (G-59)
bL = (partitionPattern[0][0]! = partitionPattern[0][nT-1]) ? Verdadero : falso (G-60) 2. Las variables predDcVal0 y predDcVal1 , que especifican los valores de partición constante predichos para la partición 0 y 1, respectivamente, se obtienen de la siguiente manera.
- Si bL es igual a bT, vale lo siguiente.:
dcVal0 = bL ? (p[-1][nT-1] p[nT-1][-1])>>1 : 1 <<
(BitDepthY-1) (G-61)
dcVal1 = (p[-1][0] p[0][-1])>>1 (G-62)
- De lo contrario, vale lo siguiente::
dcVal0 = bL ? p[-1][nT-1]: p[nT-1][-1] (G-63)
dcVal1 = bL ? p[(nT-1) >> 1][-1]: p[-1][(nT-1) >> 1] (G-64)
predDcVal0 = partitionPattern[0][0] ? dcVal0 : dcVal1
predDcVal1 = partitionPattern[0][0] ? dcVal1: dcVal0
Para X reemplazado por 0 y 1, vale lo siguiente.
1. La variable deQuantDcOffset, que especifica el desplazamiento de DC descuantizado, se obtiene de la siguiente manera.
- Si dcOffsetAvailFlag es igual a 1, vale lo siguiente: :
dcOffset = quantDcOffsetPX * Clip3(1, (1 << BitDepthy) - 1, Round(2(QP710)-2 )) (G-64)
- De lo contrario (dcOffsetAvailFlag es igual a 0), deQuantDcOffset se fija igual a 0.
2. Los valores predichos de muestra predSamples se obtienen de la siguiente manera para x = 0..nT-1 y para y = 0..nT-1.
- Cuando partitionPattern[x][y] es igual a X, vale lo siguiente. predSamples[x][y] = predDcValX dcOffset (G-65)
[0213] Debería entenderse que las etapas mostradas en la figura 12 se proporcionan solo como un ejemplo. Es decir, las etapas que se muestran en la figura 12 no necesariamente se deben realizar en el orden mostrado, y se pueden realizar menos etapas, etapas adicionales o alternativas.
[0214] La figura 13 es un diagrama de flujo que ilustra un proceso ejemplar para codificar particiones de un bloque de datos de profundidad, de acuerdo a aspectos de esta divulgación. Mientras que el proceso que se muestra en la figura 13 se describe generalmente como llevado a cabo por un codificador de vídeo, se debería entender que las técnicas se pueden realizar mediante el codificador de vídeo 20, el decodificador de vídeo 30 o varios otros procesadores.
[0215] En el ejemplo de la figura 13, el codificador de vídeo determina un patrón de partición (440). Como se ha indicado anteriormente, el codificador de vídeo puede determinar un patrón de partición basado en todas las muestras de una fila superior y una columna izquierda de un bloque de profundidad. En otro ejemplo, el codificador de vídeo puede determinar un patrón de partición basado en un subconjunto de muestras de una fila superior y una columna izquierda de un bloque de profundidad. En cualquier caso, el codificador de vídeo puede determinar un patrón de partición basándose en la ubicación de las fronteras de la partición a lo largo de la fila superior y / o la columna izquierda de las muestras de un bloque de profundidad, como se ha descrito anteriormente.
[0216] El codificador de vídeo puede entonces determinar un valor predicho para al menos una partición del bloque en función del patrón de partición (442). Por ejemplo, el codificador de vídeo puede determinar un valor predeterminado por omisión, o puede determinar un valor basado en una o más muestras de referencia vecinas. Como se ha descrito anteriormente, el codificador de vídeo puede seleccionar muestras de referencia vecinas representativas basándose en el patrón de partición (por ejemplo, la ubicación de las fronteras de la partición).
[0217] El codificador de vídeo puede entonces codificar la al menos una partición en función del valor predicho. Por ejemplo, un codificador de vídeo (como el codificador de vídeo 20) puede generar valores residuales basados en una diferencia entre los valores de profundidad reales de una partición y el valor predicho de la partición, y puede incluir datos que representan los valores residuales en un flujo de bits codificado. Un decodificador de vídeo puede analizar datos que representan valores residuales de un flujo de bits codificado, generar un valor predicho de una partición y combinar los valores residuales con el valor predicho para determinar los valores de profundidad reales para la partición.
[0218] Debería entenderse que las etapas mostradas en la figura 13 se proporcionan solo como un ejemplo. Es decir, las etapas mostradas en la figura 13 no necesariamente se deben realizar en el orden mostrado, y se pueden realizar menos etapas, etapas adicionales o alternativas.
[0219] Las técnicas descritas anteriormente pueden realizarse mediante el codificador de vídeo 20 (figuras 1 y 2) y / o el decodificador de vídeo 30 (figuras 1 y 3), de los cuales ambos pueden denominarse generalmente codificadores de vídeo. Además, la codificación de vídeo puede referirse en general a la codificación de vídeo o a la decodificación de vídeo, según corresponda.
[0220] Si bien las técnicas de esta divulgación se describen generalmente con respecto a la norma 3D-HEVC, las técnicas no están limitadas de esta manera. Las técnicas descritas anteriormente también pueden ser aplicables a otras normas actuales o normas futuras aún no desarrolladas. Por ejemplo, las técnicas para la codificación de profundidad también pueden ser aplicables a una extensión de múltiples vistas de la HEVC (por ejemplo, la llamada MV-HEVC), una extensión ajustable a escala de la HEVC u otras normas actuales o futuras que tengan un componente de profundidad.
[0221] Debería entenderse que, según el ejemplo, ciertos actos o sucesos de cualquiera de los procedimientos descritos en el presente documento pueden realizarse en una secuencia distinta, pueden añadirse, fundirse u omitirse por completo (por ejemplo, no todos los actos o sucesos descritos son necesarios para la puesta en práctica del procedimiento). Además, en ciertos ejemplos, los actos o sucesos pueden realizarse simultáneamente, por ejemplo, mediante el procesamiento de múltiples hilos, el procesamiento de interrupciones o múltiples procesadores, en lugar de secuencialmente. Además, aunque ciertos aspectos de esta divulgación se describen como realizados por un único módulo o unidad, con fines de claridad, se debería entender que las técnicas de esta divulgación pueden ser realizadas por una combinación de unidades o módulos asociados a un codificador de vídeo.
[0222] Si bien se describen anteriormente combinaciones particulares de diversos aspectos de las técnicas, estas combinaciones se proporcionan meramente para ilustrar ejemplos de las técnicas descritas en esta divulgación. En consecuencia, las técnicas de esta divulgación no deberían limitarse a estas combinaciones ejemplares y pueden abarcar cualquier combinación concebible de los diversos aspectos de las técnicas descritas en esta divulgación.
[0223] En uno o más ejemplos, las funciones descritas pueden implementarse en hardware, software, firmware o cualquier combinación de los mismos. Si se implementan en software, las funciones, como una o más instrucciones o código, pueden almacenarse en, y transmitirse por, un medio legible por ordenador, y ejecutarse mediante una unidad de procesamiento basada en hardware. Los medios legibles por ordenador pueden incluir medios de almacenamiento legibles por ordenador, que correspondan a un medio tangible tal como unos medios de almacenamiento de datos o unos medios de comunicación que incluyan cualquier medio que facilite la transferencia de un programa informático desde un lugar a otro, por ejemplo, de acuerdo a un protocolo de comunicación.
[0224] De esta manera, los medios legibles por ordenador pueden corresponder en general a (1) medios de almacenamiento tangibles legibles por ordenador que sean no transitorios o (2) un medio de comunicación tal como una señal o una onda portadora. Los medios de almacenamiento de datos pueden ser cualquier medio disponible al que se pueda acceder desde uno o más ordenadores o uno o más procesadores para recuperar instrucciones, código y/o estructuras de datos para la implementación de las técnicas descritas en esta divulgación. Un producto de programa informático puede incluir un medio de almacenamiento legible por ordenador y materiales de embalaje.
[0225] A modo de ejemplo, y no de manera limitativa, tales medios de almacenamiento legibles por ordenador pueden comprender RAM, ROM, EEPROM, CD-ROM u otro almacenamiento de disco óptico, almacenamiento de disco magnético u otros dispositivos de almacenamiento magnético, memoria flash o cualquier otro medio que pueda usarse para almacenar código de programa deseado en forma de instrucciones o estructuras de datos y al que pueda accederse mediante un ordenador. Además, cualquier conexión recibe debidamente la denominación de medio legible por ordenador. Por ejemplo, si las instrucciones se transmiten desde una sede de la Red, un servidor u otro origen remoto usando un cable coaxial, un cable de fibra óptica, un par trenzado, una línea de abonado digital (DSL) o tecnologías inalámbricas tales como infrarrojos, radio y microondas, entonces el cable coaxial, el cable de fibra óptica, el par trenzado, la DSL o las tecnologías inalámbricas tales como infrarrojos, radio y microondas se incluyen en la definición de medio.
[0226] Sin embargo, debería entenderse que los medios de almacenamiento legibles por ordenador y los medios de almacenamiento de datos no incluyen conexiones, ondas portadoras, señales u otros medios transitorios, sino que, en cambio, se orientan a medios de almacenamiento tangibles no transitorios. Los discos, como se usan en el presente documento, incluyen el disco compacto (CD), el disco láser, el disco óptico, el disco versátil digital (DVD), el disco flexible y el disco Blu-ray, donde algunos discos reproducen usualmente los datos magnéticamente, mientras que otros discos reproducen los datos ópticamente con láseres. Las combinaciones de lo anterior también deberían incluirse dentro del alcance de los medios legibles por ordenador.
[0227] Las instrucciones pueden ser ejecutadas por uno o más procesadores, tales como uno o más procesadores de señales digitales (DSP), microprocesadores de propósito general, circuitos integrados específicos de la aplicación (ASIC), formaciones de compuertas programables in situ (FPGA) u otros circuitos lógicos integrados o discretos equivalentes. En consecuencia, el término «procesador», como se usa en el presente documento, puede referirse a cualquiera de las estructuras anteriores o a cualquier otra estructura adecuada para la implementación de las técnicas descritas en el presente documento. Además, en algunos aspectos, la funcionalidad descrita en el presente documento puede proporcionarse dentro de módulos de hardware y/o software dedicados, configurados para la codificación y la decodificación, o incorporados en un códec combinado. Asimismo, las técnicas podrían implementarse por completo en uno o más circuitos o elementos lógicos.
[0228] Las técnicas de la presente divulgación se pueden implementar en una amplia variedad de dispositivos o aparatos, incluidos un equipo manual inalámbrico, un circuito integrado (IC) o un conjunto de IC (por ejemplo, un conjunto de chips). Diversos componentes, módulos o unidades se describen en esta divulgación para enfatizar aspectos funcionales de dispositivos configurados para realizar las técnicas divulgadas, pero no requieren necesariamente su realización mediante diferentes unidades de hardware. En cambio, como se ha descrito anteriormente, diversas unidades pueden combinarse en una unidad de hardware de códec o proporcionarse por medio de un grupo de unidades de hardware interoperativas, incluyendo uno o más procesadores como se ha descrito anteriormente, conjuntamente con software y/o firmware adecuados.

Claims (12)

  1. REIVINDICACIONES
    i . Un procedimiento de intra-codificación o intra-decodificación de datos de vídeo usando predicción de DC, los datos de vídeo que comprenden datos de profundidad, el procedimiento que comprende:
    determinar (440) un patrón de partición para un bloque de valores de profundidad que comprende asignar una o más muestras del bloque a una primera partición y asignar una o más muestras diferentes del bloque a una segunda partición;
    comparar una primera muestra de profundidad de la fila superior del bloque con una muestra de profundidad N-1 de la fila superior del bloque, donde la fila superior tiene N muestras de profundidad, para determinar si se incluye una primera frontera de partición en la fila superior del bloque;
    comparar una primera muestra de profundidad de la columna izquierda del bloque con una muestra de profundidad N-1 de la columna izquierda del bloque, donde la columna izquierda tiene N muestras de profundidad, para determinar si se incluye una segunda frontera de partición en la columna izquierda del bloque;
    determinar (442) un primer valor de DC predicho para la primera partición y un segundo valor de DC predicho para la segunda partición, basándose en si la primera frontera de partición está incluida en la fila superior y si la segunda frontera de partición está incluida en la columna izquierda del bloque, en donde la determinación de dichos valores predichos de DC comprende seleccionar una o más muestras vecinas de referencia que lindan con la partición respectiva, y en donde las una o más muestras vecinas de referencia se seleccionan para evitar las fronteras de partición; y
    codificar o decodificar al menos una entre la primera partición y la segunda partición, basándose, respectivamente, en el primer o el segundo valor predicho.
  2. 2. El procedimiento de la reivindicación 1, en el que determinar el valor de DC predicho para la primera partición comprende además identificar exactamente una muestra de referencia que linda con la primera partición y fijar el valor de DC predicho para la primera partición en un valor de la exactamente una muestra de referencia; o
    en el que la determinación del valor predicho de DC para la primera partición comprende además identificar exactamente dos muestras de referencia que lindan con la primera partición y fijar el valor predicho de DC para la primera partición en un valor promedio de las exactamente dos muestras de referencia.
  3. 3. El procedimiento de la reivindicación 1,
    en el que la determinación del valor predicho de DC para la primera partición comprende además identificar una muestra de referencia que linda con la primera partición y fijar el valor predicho de DC para la primera partición en un valor de la muestra de referencia, y
    en el que la determinación del valor predicho de DC para la segunda partición comprende además determinar un valor por omisión y fijar el valor predicho de DC para la segunda partición en el valor por omisión.
  4. 4. El procedimiento de la reivindicación 1,
    en el que comparar muestras de la fila superior del bloque comprende comparar todas las muestras de la fila superior del bloque, y
    en el que comparar muestras de la columna izquierda del bloque comprende comparar todas las muestras de la columna izquierda del bloque.
  5. 5. El procedimiento de la reivindicación 1, en el que, cuando el bloque incluye tanto la primera frontera de partición como la segunda frontera de partición y una muestra de la esquina superior izquierda del bloque se asigna a la primera partición, determinar el primer valor de DC predicho y el segundo valor de DC predicho comprende: fijar el primer valor de DC predicho en una combinación de una muestra de referencia vecina ubicada encima de una muestra N-1 de la fila superior y una muestra de referencia vecina ubicada a la izquierda de una muestra N-1 de la columna izquierda, donde la fila superior y la columna izquierda tienen N muestras, y
    fijar el segundo valor de DC predicho en una combinación de una muestra de referencia vecina ubicada encima de una primera muestra de la fila superior y una muestra de referencia vecina ubicada a la izquierda de una primera muestra de la columna izquierda.
  6. 6. El procedimiento de la reivindicación 1, en el que, cuando el bloque no incluye la primera frontera de partición y no incluye la segunda frontera de partición y una muestra de la esquina superior izquierda del bloque se asigna a la primera partición, determinar el primer valor de DC predicho y el segundo valor de DC predicho comprende:
    fijar el primer valor predicho de DC en un valor predeterminado por omisión, y
    fijar el segundo valor de DC predicho en una combinación de una muestra de referencia vecina ubicada encima de una primera muestra de la fila superior y una muestra de referencia vecina ubicada a la izquierda de una primera muestra de la columna izquierda.
  7. 7. El procedimiento de la reivindicación 1, en el que, cuando el bloque incluye la primer frontera de partición y no incluye la segunda frontera de partición, y una muestra de la esquina superior izquierda del bloque se asigna a la primera partición, determinar el primer valor de DC predicho y el segundo valor predicho de DC comprende:
    fijar el primer valor de DC predicho en una muestra de referencia vecina ubicada encima de una muestra N-1 de la fila superior, donde la fila superior tiene N muestras, y
    fijar el segundo valor de DC predicho en una muestra de referencia vecina ubicada a la izquierda de una muestra N-1 de la columna izquierda, donde la columna izquierda tiene N muestras.
  8. 8. El procedimiento de la reivindicación 1, en el que, cuando el bloque no incluye la primera frontera de partición e incluye la segunda frontera de partición, y una muestra de la esquina superior izquierda del bloque se asigna a la primera partición, determinar el primer valor de DC predicho y el segundo valor predicho de DC comprende:
    fijar el primer valor de DC predicho a una muestra de referencia vecina ubicada a la izquierda de una muestra N-1 de la columna izquierda, donde la columna izquierda tiene N muestras, y
    fijar el segundo valor de DC predicho en una muestra de referencia vecina ubicada sobre una muestra N-1 de la fila superior, donde la fila superior tiene N muestras.
  9. 9. El procedimiento de la reivindicación 1, que comprende decodificar la al menos una entre la primera partición y la segunda partición, en el que la decodificación comprende:
    analizar sintácticamente uno o más valores residuales de un flujo de bits codificado, y
    combinar los uno o más valores residuales con el valor de DC predicho determinado para al menos una entre la primera partición y la segunda partición, para reconstruir los valores de profundidad del bloque.
  10. 10. El procedimiento de la reivindicación 1, que comprende codificar la al menos una entre la primera partición y la segunda partición, y en el que la codificación comprende:
    determinar uno o más valores residuales basados en una diferencia entre los valores de profundidad del bloque y el valor de DC predicho determinado para al menos una entre la primera partición y la segunda partición, y
    codificar datos que representan los uno o más valores residuales para formar un flujo de bits codificado.
  11. 11. Un aparato para intra-codificar o intra-decodificar datos de vídeo usando predicción de DC, los datos de vídeo que comprenden datos de profundidad, el aparato que comprende:
    medios para determinar un patrón de partición para un bloque de valores de profundidad que comprende asignar una o más muestras del bloque a una primera partición y asignar una o más muestras diferentes del bloque a una segunda partición;
    medios para comparar una primera muestra de la fila superior del bloque con una muestra N-1 de la fila superior del bloque, donde la fila superior tiene N muestras, para determinar si se incluye una primera frontera de partición en la fila superior del bloque;
    medios para comparar una primera muestra de la columna izquierda del bloque con una muestra N-1 de la columna izquierda del bloque, donde la columna izquierda tiene N muestras, para determinar si se incluye una segunda frontera de partición en la columna izquierda del bloque;
    medios para determinar un primer valor de DC predicho para la primera partición y un segundo valor de DC predicho para la segunda partición, basándose en si la primera frontera de partición está incluida en la fila superior y si la segunda frontera de partición está incluida en la columna izquierda del bloque, en donde la determinación de dichos valores predichos de DC comprende seleccionar una o más muestras vecinas de referencia que lindan con la partición respectiva, y en donde las una o más muestras vecinas de referencia se seleccionan para evitar las fronteras de partición; y
    medios para codificar o decodificar al menos una entre la primera partición y la segunda partición en función del valor predicho.
  12. 12. Un medio no transitorio legible por ordenador que comprende instrucciones almacenadas en el mismo que, al ejecutarse, hacen que uno o más procesadores realicen el procedimiento de cualquiera de las reivindicaciones 1 a 10.
ES13877735T 2013-03-15 2013-03-15 Predictor para la intra-codificación de mapas de profundidad Active ES2698515T3 (es)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2013/000287 WO2014139049A1 (en) 2013-03-15 2013-03-15 Predictor for depth map intra coding

Publications (1)

Publication Number Publication Date
ES2698515T3 true ES2698515T3 (es) 2019-02-05

Family

ID=51535759

Family Applications (1)

Application Number Title Priority Date Filing Date
ES13877735T Active ES2698515T3 (es) 2013-03-15 2013-03-15 Predictor para la intra-codificación de mapas de profundidad

Country Status (8)

Country Link
US (1) US10375411B2 (es)
EP (1) EP2974316B1 (es)
JP (1) JP6262260B2 (es)
KR (1) KR102136913B1 (es)
CN (1) CN105308956B (es)
ES (1) ES2698515T3 (es)
HU (1) HUE040137T2 (es)
WO (1) WO2014139049A1 (es)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104079941B (zh) * 2013-03-27 2017-08-25 中兴通讯股份有限公司 一种深度信息编解码方法、装置及视频处理播放设备
CN105594214B (zh) * 2013-04-12 2019-11-26 联发科技股份有限公司 在三维编码系统中深度区块的帧内编码方法及装置
WO2014166116A1 (en) 2013-04-12 2014-10-16 Mediatek Inc. Direct simplified depth coding
WO2015000168A1 (en) * 2013-07-05 2015-01-08 Mediatek Singapore Pte. Ltd. A simplified dc prediction method in intra prediction
KR102135997B1 (ko) * 2013-09-27 2020-07-20 퀄컴 인코포레이티드 심도 인트라 예측 모드들에 대한 잔차 코딩
US10129542B2 (en) * 2013-10-17 2018-11-13 Futurewei Technologies, Inc. Reference pixel selection and filtering for intra coding of depth map
AU2015327521B2 (en) * 2014-09-30 2018-07-26 Hfi Innovation Inc. Method of lookup table size reduction for depth modelling mode in depth coding
KR20170082528A (ko) 2014-11-05 2017-07-14 삼성전자주식회사 블록과 관련하여 결정된 적어도 하나의 샘플값 및 적어도 하나의 패턴에 기초한 인트라 예측을 수행하는 영상 부호화 방법 및 장치또는 영상 복호화 방법 및 장치
EP3453172B1 (en) * 2016-05-28 2023-08-09 HFI Innovation Inc. Methods and apparatuses of video data processing with conditionally quantization parameter information signaling
CN106791768B (zh) * 2016-12-16 2019-01-04 浙江大学 一种基于图割优化的深度图帧率提升方法
CN115118994B (zh) * 2017-08-22 2024-02-06 松下电器(美国)知识产权公司 图像编码器、图像解码器、和比特流生成设备
WO2019059107A1 (ja) * 2017-09-20 2019-03-28 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 符号化装置、復号装置、符号化方法及び復号方法
WO2019229683A1 (en) 2018-05-31 2019-12-05 Beijing Bytedance Network Technology Co., Ltd. Concept of interweaved prediction
KR20230031976A (ko) 2018-07-12 2023-03-07 후아웨이 테크놀러지 컴퍼니 리미티드 비디오 코딩에서의 경계 블록 파티셔닝
CN110868594B (zh) 2018-08-28 2023-04-07 北京字节跳动网络技术有限公司 分割方法的冗余移除
US11039139B2 (en) * 2018-09-14 2021-06-15 Tencent America LLC Method and apparatus for identity transform in multiple transform selection
CN113597760A (zh) 2019-01-02 2021-11-02 北京字节跳动网络技术有限公司 视频处理的方法
WO2020183849A1 (ja) * 2019-03-08 2020-09-17 ソニー株式会社 情報処理装置、情報処理方法及びプログラム

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9571856B2 (en) * 2008-08-25 2017-02-14 Microsoft Technology Licensing, Llc Conversion operations in scalable video encoding and decoding
KR101807886B1 (ko) * 2009-10-14 2017-12-11 돌비 인터네셔널 에이비 깊이 맵 처리를 위한 방법 및 디바이스
KR101495724B1 (ko) 2010-02-02 2015-02-25 삼성전자주식회사 계층적 데이터 단위의 스캔 순서에 기반한 비디오 부호화 방법과 그 장치, 및 비디오 복호화 방법과 그 장치
US20110249734A1 (en) * 2010-04-09 2011-10-13 Segall Christopher A Methods and Systems for Intra Prediction
US20120147961A1 (en) * 2010-12-09 2012-06-14 Qualcomm Incorporated Use of motion vectors in evaluating geometric partitioning modes
EP2744201A4 (en) * 2011-08-09 2016-03-23 Samsung Electronics Co Ltd METHOD AND DEVICE FOR CODING A DEPTH CARD OF VIDEO DATA WITH MULTIPLE VIEWPOINTS AND METHOD AND DEVICE FOR DECODING THE CODED DEPTH CARD
CN103765474B (zh) 2011-08-26 2017-10-24 汤姆逊许可公司 深度编码
JP5711636B2 (ja) * 2011-09-26 2015-05-07 日本電信電話株式会社 画像符号化方法、画像復号方法、画像符号化装置、画像復号装置、画像符号化プログラム、画像復号プログラム
EP3328081B1 (en) 2011-11-11 2019-10-16 GE Video Compression, LLC Effective prediction using partition coding
WO2013102293A1 (en) * 2012-01-04 2013-07-11 Mediatek Singapore Pte. Ltd. Improvements of luma-based chroma intra prediction
JP2015523030A (ja) * 2012-07-13 2015-08-06 華為技術有限公司Huawei Technologies Co.,Ltd. 3次元ビデオを表すビットストリームを符号化する装置

Also Published As

Publication number Publication date
US20160029038A1 (en) 2016-01-28
EP2974316A4 (en) 2016-11-16
KR102136913B1 (ko) 2020-07-22
EP2974316B1 (en) 2018-08-22
HUE040137T2 (hu) 2019-02-28
JP2016514431A (ja) 2016-05-19
EP2974316A1 (en) 2016-01-20
CN105308956A (zh) 2016-02-03
JP6262260B2 (ja) 2018-01-17
CN105308956B (zh) 2019-04-16
US10375411B2 (en) 2019-08-06
WO2014139049A1 (en) 2014-09-18
KR20150132308A (ko) 2015-11-25

Similar Documents

Publication Publication Date Title
ES2698515T3 (es) Predictor para la intra-codificación de mapas de profundidad
ES2745282T3 (es) Extensión del patrón de minicuñas para la intracodificación de profundidad
ES2702950T3 (es) Transformación inversa de color-espacio para vídeo codificado con pérdidas y sin pérdidas
ES2633150T3 (es) Predicción de vectores de movimiento en codificación de vídeo
ES2732013T3 (es) Predicción de vector de movimiento temporal basada en subunidad de predicción (PU) en la HEVC y diseño de sub-PU en la 3d-hevc
US9756359B2 (en) Large blocks and depth modeling modes (DMM&#39;S) in 3D video coding
ES2686936T3 (es) Códec 3DVC basado en MVC que soporta el modo de predicción de movimiento de visualización interna (IVMP)
ES2753958T3 (es) Predicción de vector de movimiento temporal basada en subunidad de predicción (PU) en la HEVC y diseño de sub-PU en la 3D-HEVC
ES2755573T3 (es) Predicción de vector de movimiento temporal avanzada basada en unidades de subpredicción
ES2736280T3 (es) Simplificaciones en la obtención de vectores de disparidad y la predicción de vectores de movimiento en codificación de vídeo 3D
ES2734574T3 (es) Modo avanzado de fusión/salto y modo avanzado de predicción de vector de movimiento (AMVP) para vídeo 3D
KR102092433B1 (ko) 뷰들 내에서의 그리고 뷰들에 걸친 심도 룩업 테이블들의 예측 코딩
ES2841986T3 (es) Identificación de bloques usando vector de disparidad en la codificación de vídeo
ES2742026T3 (es) Determinación de vector de movimiento para codificación de vídeo
ES2669399T3 (es) Vector de movimiento predicho entre visualizaciones para vídeo 3D
ES2636967T3 (es) Vectores de disparidad derivados en codificación de vídeo 3D
ES2704885T3 (es) Derivación del vector de disparidad de bloque vecino en codificación de vídeo 3D
ES2730876T3 (es) Capas de salida de destino en la codificación de vídeo
JP2015525988A (ja) 3dビデオコーディングのための深度マップのイントラコーディング
WO2014146219A1 (en) Depth modeling modes for depth map intra coding