ES2656494T3 - Filtro intra-suavizante para codificación de vídeo - Google Patents
Filtro intra-suavizante para codificación de vídeo Download PDFInfo
- Publication number
- ES2656494T3 ES2656494T3 ES11767583.5T ES11767583T ES2656494T3 ES 2656494 T3 ES2656494 T3 ES 2656494T3 ES 11767583 T ES11767583 T ES 11767583T ES 2656494 T3 ES2656494 T3 ES 2656494T3
- Authority
- ES
- Spain
- Prior art keywords
- mode
- coding
- intra
- block
- block size
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/85—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/103—Selection of coding mode or of prediction mode
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/103—Selection of coding mode or of prediction mode
- H04N19/11—Selection of coding mode or of prediction mode among a plurality of spatial predictive coding modes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/117—Filters, e.g. for pre-processing or post-processing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/12—Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
- H04N19/122—Selection of transform size, e.g. 8x8 or 2x4x8 DCT; Selection of sub-band transforms of varying structure or type
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/146—Data rate or code amount at the encoder output
- H04N19/147—Data rate or code amount at the encoder output according to rate distortion criteria
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/157—Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/17—Methods 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/176—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/46—Embedding additional information in the video signal during the compression process
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/59—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial sub-sampling or interpolation, e.g. alteration of picture size or resolution
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/593—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/80—Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
- H04N19/82—Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- Discrete Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
Un procedimiento de codificación de datos de vídeo, comprendiendo el procedimiento: determinar (606, 802) un tamaño de bloque asociado con un bloque actual de datos de vídeo, determinándose el tamaño de bloque a partir de una pluralidad de tamaños de bloque incluyendo un tamaño de bloque de 4x4, un tamaño de bloque de 8x8, un tamaño de bloque de 16x16 y un tamaño de bloque de 32x32; determinar (802) un modo de codificación de intra-predicción asociado con el bloque actual, determinándose el modo de codificación de intra-predicción a partir de una pluralidad de modos de codificación de intra-predicción que incluyen un modo horizontal, un modo vertical, un modo planar, un modo DC y una pluralidad de modos diagonales incluyendo un modo diagonal superior izquierdo, un modo diagonal superior derecho, un modo diagonal inferior izquierdo y una pluralidad de modos diagonales que son directamente adyacentes al modo horizontal o al modo vertical; determinar, basándose en el tamaño de bloque y el modo de codificación en combinación, una decisión de filtro para si aplicar un filtro a las muestras de predicción usadas para predecir el bloque actual, comprendiendo la determinación: si el tamaño de bloque es el tamaño de bloque de 4x4, determinar la decisión de filtro para que no se aplique ningún filtrado a las muestras de predicción usadas para predecir el bloque actual para cualquiera de la pluralidad de modos de codificación de intra-predicción, si el tamaño de bloque es el tamaño de bloque 8x8, determinar la decisión de filtro para que las muestras de predicción utilizadas para predecir el bloque actual se filtren solo si el modo de codificación es el modo planar, el modo diagonal superior izquierdo, el modo diagonal superior derecho o el modo diagonal inferior izquierdo, si el tamaño del bloque es el tamaño de bloque 16x16, determinar la decisión del filtro para que las muestras de predicción utilizadas para predecir el bloque actual se filtren si el modo de codificación es el modo planar, o si el modo de codificación es cualquier otro de la pluralidad de modos de codificación, excepto el modo horizontal, el modo vertical, el modo DC y los modos directamente adyacentes al modo horizontal o el modo vertical, y no filtrados si el modo de codificación es el modo horizontal, el modo vertical, el modo DC o un modo directamente adyacente al modo horizontal o al modo vertical, y si el tamaño de bloque es el tamaño de bloque de 32x32, determinar la decisión de filtro para que las muestras de predicción utilizadas para predecir el bloque actual se filtren si el modo de codificación es el modo planar o si el modo de codificación es cualquier otro de la pluralidad de modos de codificación excepto el modo horizontal, el modo vertical y el modo de DC, y no se filtren si el modo de codificación es el modo horizontal, el modo vertical o el modo DC; y codificación intra-predictiva (612, 806) del bloque actual usando la decisión de filtro determinada para filtrar o no filtrar las muestras de predicción usadas para predecir el bloque actual.
Description
5
10
15
20
25
30
35
40
45
50
55
60
65
DESCRIPCION
Filtro intra-suavizante para codificación de vídeo CAMPO TÉCNICO
[1] Esta divulgación se refiere a la codificación de vídeo y, más particularmente, a la codificación de vídeo de intra-predicción.
ANTECEDENTES
[2] Las capacidades de vídeo digital pueden incorporarse a una amplia gama de dispositivos, incluidos televisores digitales, sistemas de radiodifusión directa digital, sistemas de radiodifusión inalámbrica, asistentes digitales personales (PDA), ordenadores portátiles o de escritorio, cámaras digitales, dispositivos de grabación digitales, reproductores de medios digitales, dispositivos de videojuegos, consolas de videojuegos, teléfonos celulares o de radio por satélite, dispositivos de videoconferencia 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, mPeG-4, ITU-T H.263 o ITU-T H.264/MPEG-4, parte 10, Codificación de Vídeo Avanzada (AVC) y ampliaciones de dichas normas, para transmitir y recibir información de vídeo digital de manera más eficaz. El "Equipo de Colaboración Conjunta en Codificación de Vídeo" (JCTVC), que es una colaboración entre MPEG e ITU-T, está desarrollando nuevas normas de vídeo, tales como la norma de Codificación de Vídeo de Alta Eficiencia (HEVC), que siguen surgiendo y evolucionando. Esta nueva norma HEVC también se denomina a veces H.265.
[3] Las técnicas de compresión de vídeo llevan a cabo una predicción espacial y/o una predicción temporal para reducir o eliminar la redundancia inherente a las secuencias de vídeo. Para la codificación de vídeo basada en bloques, una trama o un fragmento de vídeo puede dividirse en bloques denominados unidad de codificación (CU). En general, una CU tiene un propósito similar a un macrobloque de la norma H.264, excepto en que una CU no tiene una distinción de tamaño- Las CU en una trama o fragmento intra-codificado (I) se codifican usando la predicción espacial con respecto a CU contiguas en la misma trama o fragmento. Las CU en una trama o fragmento inter-codificado (P o B) pueden utilizar predicción espacial con respecto a las CU contiguas en la misma trama o fragmento, o predicción temporal con respecto a otras tramas de referencia.
[4] En el documento JCTVC-B205 (borrador000) de la reunión de JCTVC celebrada del 21 al 28 de julio de 2010 en Ginebra, se describe un modelo de prueba sugerido destinado a proporcionar una eficacia de codificación cercana a las propuestas de mejor rendimiento en la prueba subjetiva de convocatoria de presentaciones de trabajos y proporcionar un punto de complejidad cercano al de las presentaciones de menor complejidad que se ha demostrado que proporciona una mejora sustancial de la eficacia de la codificación. Como parte del proceso de descodificación, se menciona un proceso de derivación para el IntraPredMode para un tamaño de la unidad de predicción> 8x8 y un proceso de derivación para el IntraPredMode para un tamaño de la unidad de predicción == 8x8. También se menciona el filtrado de muestras contiguas utilizando un filtro (1, 2, 1) si el IntraPredMode no es igual a uno de los valores de 0 a 3.
[5] El documento US 2004/0136458 describe el uso de píxeles de borde de bloques de imágenes contiguos predichos previamente para la predicción direccional de un bloque de imágenes, donde los píxeles usados para la predicción se filtran previamente a lo largo de un borde para suprimir artefactos de predicción.
RESUMEN
[6] En general, esta divulgación describe técnicas para aplicar un filtro suavizante a los píxeles que rodean a las muestras de predicción en la codificación de intra-predicción de datos de vídeo. Particularmente, las técnicas proporcionan un procedimiento para determinar y aplicar un filtro suavizante a las muestras de predicción utilizadas en la codificación intra-predictiva. En algunos ejemplos, las técnicas pueden incluir seleccionar el filtro suavizante para aplicar a los píxeles que rodean a las muestras de predicción basándose en una combinación de tamaño de bloque y modo de intra-predicción asociado con el bloque actual.
[7] En el intra-suavizado dependiente de modo fijo, un codificador de vídeo puede determinar el tipo de filtro suavizante aplicado a las muestras de predicción basándose en la combinación de modo de intra-predicción y tamaño de bloque asociada con el bloque actual. La combinación de modo de intra-predicción y tamaño de bloque se puede usar para buscar un filtro en una tabla de filtros. En este caso, puede que no se envíe sobrecarga al descodificador para indicar el tipo de filtro utilizado para suavizar, ya que la tabla de filtros estaría disponible en el lado del descodificador y la combinación de modo de intra-predicción y tamaño de bloque se puede usar de manera similar en el lado del descodificador.
[8] En el intra-suavizado dependiente del modo adaptativo, el codificador de vídeo puede seleccionar el filtro suavizante de dos opciones de filtro, una de una primera tabla de filtros y otra de una segunda tabla de filtros, aplicar ambos filtros y determinar cuál produce los mejores resultados. En este caso, la sintaxis indicativa
5
10
15
20
25
30
35
40
45
50
55
60
65
del filtro seleccionado puede codificarse con el vídeo y enviarse al descodificador para indicar el tipo de filtro seleccionado. En un ejemplo, si el filtro de la segunda tabla de filtros produce mejores resultados, el codificador de vídeo codifica una indicación de filtrado. Cuando se usa un filtro de la primera tabla de filtros, no se codifica ninguna indicación de filtrado.
[9] Estas técnicas pueden reducir la cantidad de datos adicionales codificados con un bloque codificado utilizando codificación intra-predictiva y, por lo tanto, la cantidad de datos transmitidos a un descodificador. Un descodificador de vídeo que recibe bloques codificados intra-predictivos puede aplicar un filtro suavizante durante la descodificación usando la primera tabla de filtros, a menos que una indicación de filtrado esté codificada con el bloque. Si la indicación de filtrado está codificada con el bloque, entonces el descodificador de vídeo puede aplicar un filtro suavizante durante la descodificación usando el filtro que se indica mediante la indicación de filtrado.
[10] En un ejemplo, la divulgación se dirige a un procedimiento que comprende determinar un tamaño de bloque asociado con un bloque actual de datos de vídeo, determinar un modo de codificación de intra-predicción asociado con el bloque actual, seleccionar un filtro de una tabla de filtros para aplicar al bloque actual basándose en el tamaño de bloque y el modo de codificación, y la codificación intra-predictiva del bloque actual utilizando el filtro seleccionado.
[11] En otro ejemplo, la divulgación se dirige a un aparato para codificar datos de vídeo, comprendiendo el aparato un procesador configurado para determinar un tamaño de bloque asociado con un bloque actual de datos de vídeo, determinar un modo de codificación de intra-predicción asociado con el bloque actual, seleccionar un filtro de una tabla de filtros para aplicar al bloque actual basándose en el tamaño del bloque y el modo de codificación, y codificación intra-predictiva del bloque actual que usa el filtro seleccionado.
[12] En otro ejemplo, la divulgación se dirige a un aparato para codificar datos de vídeo, comprendiendo el aparato medios para determinar un tamaño de bloque asociado con un bloque de datos de vídeo actual, medios para determinar un modo de codificación de intra-predicción asociado con el bloque actual, medios para seleccionar un filtro de una tabla de filtros para aplicar al bloque actual basándose en el tamaño de bloque y el modo de codificación, y medios para la codificación intra-predictiva del bloque actual usando el filtro seleccionado.
[13] En un ejemplo adicional, la divulgación se dirige a un medio de almacenamiento legible por ordenador que comprende instrucciones para codificar datos de vídeo que, tras la ejecución en un procesador, hacen que el procesador determine un tamaño de bloque asociado con un bloque actual de datos de vídeo, determinar un modo de codificación de intra-predicción asociado con el bloque actual, seleccionar un filtro de una tabla de filtros para aplicar al bloque actual basándose en el tamaño del bloque y el modo de codificación, y codificación intra- predictiva del bloque actual utilizando el filtro seleccionado.
BREVE DESCRIPCIÓN DE LOS DIBUJOS
[14]
La FIG. 1 es un diagrama de bloques que ilustra un sistema de codificación y descodificación de vídeo de ejemplo que puede utilizar las técnicas de esta divulgación para soportar el intra-suavizado.
La FIG. 2A es un diagrama conceptual que ilustra un gráfico que representa un conjunto de ejemplos de direcciones de predicción asociadas con varios modos de intra-predicción.
La FIG. 2B es un diagrama conceptual que ilustra otro gráfico que representa un conjunto de ejemplos de direcciones de predicción asociadas con varios modos de intra-predicción.
La FIG. 3 es un diagrama conceptual que ilustra un ejemplo de conjunto de direcciones de predicción asociadas con varios modos de intra-predicción.
La FIG. 4 es un diagrama de bloques que ilustra un ejemplo de un codificador de vídeo que puede implementar técnicas para soportar intra-suavizado.
La FIG. 5 es un diagrama de bloques que ilustra un ejemplo de un descodificador de vídeo, que descodifica una secuencia de vídeo codificado.
La FIG. 6 es un diagrama de flujo que ilustra un ejemplo de procedimiento para la codificación de datos de vídeo de acuerdo con las técnicas de esta divulgación.
La FIG. 7 es un diagrama de flujo que ilustra un ejemplo de procedimiento para la descodificación de datos de vídeo de acuerdo con las técnicas de esta divulgación.
5
10
15
20
25
30
35
40
45
50
55
60
65
La FIG. 8 es un diagrama de flujo que ilustra otro ejemplo de procedimiento para la codificación de datos de vídeo de acuerdo con las técnicas de esta divulgación.
La FIG. 9 es un diagrama de flujo que ilustra otro ejemplo de procedimiento para la descodificación de datos de vídeo de acuerdo con las técnicas de esta divulgación.
DESCRIPCIÓN DETALLADA
[15] En general, esta divulgación describe técnicas para determinar y aplicar un filtro suavizante a píxeles que rodean las muestras de predicción usadas en la codificación de intra-predicción de datos de vídeo. Las técnicas pueden incluir determinar si aplicar un filtro suavizante a un bloque actual de datos de vídeo que se está codificando. Por ejemplo, una determinación de si aplicar el filtro suavizante puede basarse en el tamaño del bloque actual que se está codificando y el modo de codificación asociado con el bloque actual. El modo de codificación del bloque actual puede basarse en la dirección asociada con la codificación de intra-predicción del bloque actual o la dirección del bloque actual con respecto al bloque desde el cual se predice el bloque actual. Las tablas de decisión de filtrado se pueden generar y usar para tomar decisiones con respecto a si se debe aplicar filtrado intra-suavizante a un bloque actual y/o el tipo de filtrado intra-suavizante a aplicar a un bloque actual. Por lo tanto, la decisión de filtrado puede ser una función del tamaño del bloque y el modo de intra- predicción asociado con un bloque actual.
[16] En la codificación de vídeo, la predicción se puede utilizar para aumentar la eficiencia y reducir la cantidad de datos de vídeo codificados, y por lo tanto, la cantidad de datos de vídeo transmitidos o almacenados para su posterior recuperación y visualización. En los sistemas modernos de codificación de vídeo se usan frecuentemente dos tipos de predicción, inter-predicción e intra-predicción. En la inter-predicción, un bloque de vídeo actual se predice desde un bloque de vídeo en otra trama en la secuencia de vídeo. En intra-predicción, el bloque de vídeo actual se predice desde un bloque de vídeo dentro de la misma trama.
[17] Como se indicó anteriormente, la codificación de intra-predicción implica la codificación de los píxeles de un bloque actual de una trama con respecto a los píxeles de los bloques codificados previamente de la misma trama mediante la extrapolación direccional de los píxeles que rodean el bloque actual. De esta manera, los píxeles circundantes se utilizan como muestras de predicción para formar píxeles para el bloque actual. En general, los píxeles se utilizan para formar el bloque actual a lo largo de una dirección específica. A medida que aumenta el tamaño del bloque actual, la precisión de predicción de los píxeles del bloque actual que están más alejados de las muestras de predicción puede degradarse. Para superar la degradación en la codificación de intra-predicción, se aplica suavizado a las muestras de predicción circundantes.
[18] El proceso de codificación de vídeo puede aplicar un filtro suavizante a los píxeles de predicción, realizar y comparar la predicción utilizando píxeles filtrados y no filtrados, y determinar e indicar si se usarán los píxeles filtrados o no filtrados basándose en el resultado de la comparación. El uso de este procedimiento, que puede denominarse intra-suavizado adaptativo (AIS), da como resultado el aumento de la complejidad del codificador, ya que requiere aplicar el filtro suavizante a cada bloque y comparar el resultado con el bloque no filtrado. Además, la utilización de este procedimiento, que indica explícitamente si se debe aplicar o no un filtro suavizante particular, se añade a la información de sobrecarga asociada con cada unidad de codificación. Además, la codificación y descodificación por entropía de los datos de AIS (por ejemplo, la señal, el filtro suavizante y similares) añade complejidad al proceso de codificación y descodificación.
[19] Otra forma de realizar AIS es hacer uso de una tabla de indicadores de filtro en el codificador y el descodificador, donde el valor del indicador depende del tamaño del bloque y el modo de intra-predicción, que indica la dirección de predicción. La tabla puede generarse durante una etapa de diseño, evitando así el aumento de la complejidad computacional del codificador porque la decisión sobre si se filtran o no los píxeles no se realiza durante el proceso de codificación. Sin embargo, ciertos cambios en el codificador / descodificador de vídeo pueden requerir la generación de una nueva tabla para reemplazar una tabla actual.
[20] Las técnicas de esta divulgación proponen un esquema de AIS simplificado o intra-suavizado dependiente del modo (MDIS) que se basa en reglas, donde las reglas sobre si aplicar o no un filtro suavizante se basan en el tamaño del bloque actual y el modo o la dirección de predicción. El MDIS puede ordenar los modos de predicción en una jerarquía, que puede asignarse a los diferentes tamaños de bloque, donde para tamaños de bloque crecientes, se filtran más modos de acuerdo con la jerarquía. En algunos ejemplos, la determinación de si aplicar o no un filtro suavizante se puede distinguir además entre bloques más grandes y bloques más pequeños, donde la metodología para determinar si se aplica o no un filtro suavizante puede variar basándose en el tamaño del bloque. Además, para algunas secuencias de vídeo, por ejemplo, aquellas con textura direccional, la aplicación de un filtro suavizante puede proporcionar poco o ningún beneficio. Las técnicas de esta divulgación también pueden realizar las determinaciones de filtro suavizante para abordar estos problemas. La información de filtro de intra-predicción y suavizante puede codificarse en las cabeceras de los
5
10
15
20
25
30
35
40
45
50
55
60
65
bloques correspondientes y descodificarse mediante un descodificador de vídeo para aplicar el filtro suavizante apropiado durante la descodificación.
[21] La FIG. 1 es un diagrama de bloques que ilustra un sistema de codificación y descodificación de vídeo 10 de ejemplo que puede utilizar las técnicas de esta divulgación para la aplicación de un filtro suavizante durante la codificación de intra-predicción. Como se muestra en la FIG. 1, el sistema 10 incluye un dispositivo de origen 12 que transmite vídeo codificado a un dispositivo de destino 14 a través de un canal de comunicación 16. El dispositivo de origen 12 y el dispositivo de destino 14 pueden comprender cualquiera de una amplia gama de dispositivos. En algunos ejemplos, el dispositivo de origen 12 y el dispositivo de destino 14 pueden comprender dispositivos de comunicación inalámbrica, tales como microteléfonos inalámbricos, los denominados radioteléfonos celulares o vía satélite, o cualquier dispositivo inalámbrico que pueda comunicar información de vídeo a través de un canal de comunicación 16, en cuyo caso el canal de comunicación 16 es inalámbrico.
[22] Sin embargo, las técnicas de esta divulgación, que en general son técnicas para codificación de intra- predicción, no están necesariamente limitadas a aplicaciones o configuraciones inalámbricas. Por ejemplo, estas técnicas también pueden ser útiles en una amplia gama de otras configuraciones y dispositivos, incluidos dispositivos que se comunican a través de cables físicos, fibras ópticas u otros medios físicos o inalámbricos, pueden aplicarse a radiodifusiones de televisión por aire, transmisiones de televisión por cable, transmisiones de televisión por satélite, transmisiones de vídeo por Internet, vídeo digital codificado que está codificado en un medio de almacenamiento u otros escenarios. Por ejemplo, el vídeo codificado puede almacenarse en un dispositivo de almacenamiento para su posterior recuperación, descodificación y visualización mediante el dispositivo de destino 14. Además, las técnicas de codificación o descodificación también pueden aplicarse en un dispositivo autónomo que no necesariamente se comunica con otro dispositivo. Por consiguiente, el canal de comunicación 16 puede comprender cualquier combinación de medios inalámbricos o cableados adecuados para la transmisión de datos de vídeo codificados u otros medios de almacenamiento, y los dispositivos 12, 14 pueden comprender cualquiera de una variedad de dispositivos de medios inalámbricos o cableados tales como teléfonos móviles, teléfonos inteligentes, reproductores multimedia digitales, descodificadores, televisores, pantallas, ordenadores de escritorio, ordenadores portátiles, tabletas, consolas de videojuegos, dispositivos de videojuegos portátiles o similares.
[23] En el ejemplo de la FIG. 1, el dispositivo de origen 12 incluye una fuente de vídeo 18, un codificador de vídeo 20, un modulador / desmodulador (módem) 22 y un transmisor 24. El dispositivo de destino 14 incluye un receptor 26, un módem 28, un descodificador de vídeo 30 y un dispositivo de visualización 32. 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 una fuente de vídeo externa 18, tal como una cámara externa, un archivo de almacenamiento de vídeo, una fuente de gráficos informáticos, o similar. Asimismo, el dispositivo de destino 14 puede mantener interfaces con un dispositivo de visualización externo, en lugar de incluir un dispositivo de visualización integrado.
[24] El sistema ilustrado 10 de la FIG. 1 es simplemente un ejemplo. Las técnicas para la aplicación de un filtro suavizante en codificación de intra-predicción pueden realizarse mediante cualquier dispositivo de codificación y/o descodificació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/descodificador de vídeo, denominado típicamente "CÓDEC". Además, las técnicas de esta divulgación también pueden llevarse a cabo mediante un preprocesador de vídeo. El dispositivo de origen 12 y el dispositivo de destino 14 son simplemente ejemplos de tales dispositivos de codificación, donde 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 descodificación de vídeo. Por lo tanto, el sistema 10 puede dar soporte a una transmisión de vídeo unidireccional o bidireccional entre los dispositivos de vídeo 12, 14, por ejemplo, para la transmisión por flujo de vídeo, reproducción de vídeo, radiodifusión de vídeo o videotelefonía.
[25] La fuente 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 grabado previamente y/o vídeo procedente de un proveedor de contenido de vídeo. Como una alternativa adicional, el origen de vídeo 18 puede generar datos, basados en gráficos de 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 ser codificado por el codificador de vídeo 20. La información de vídeo codificado puede modularse después por el módem 22, de acuerdo con una norma de comunicación, y transmitirse al dispositivo de destino 14 a través del transmisor 24. El módem 22 puede incluir varios mezcladores, filtros, amplificadores u otros componentes diseñados para la
5
10
15
20
25
30
35
40
45
50
55
60
65
modulación de señales. El transmisor 24 puede incluir circuitos diseñados para transmitir datos, incluidos amplificadores, filtros y una o más antenas.
[26] El receptor 26 del dispositivo de destino 14 recibe información a través del canal 16, y el módem 28 desmodula la información. De nuevo, el proceso de codificación de vídeo puede implementar una o más de las técnicas descritas en el presente documento para aplicar un filtro suavizante durante la codificación de intra- predicción de un bloque actual. La información comunicada a través del canal 16 puede incluir información sintáctica definida por el codificador de vídeo 20, que también es usada por el descodificador de vídeo 30, que incluye elementos sintácticos que describen características y/o procesamiento de unidades de predicción (PU), unidades de codificación (CU) u otras unidades de vídeo codificado, por ejemplo, fragmentos de vídeo, tramas de vídeo y secuencias de vídeo o grupos de imágenes (GOP). El dispositivo de visualización 32 muestra los datos de vídeo descodificados a un usuario y puede comprender cualquiera entre una variedad de 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.
[27] En el ejemplo de la FIG. 1, el canal de comunicación 16 puede comprender cualquier medio de comunicación inalámbrico o cableado, tal como un espectro de radiofrecuencia (RF) o una o más líneas de transmisión física, o cualquier combinación de medios inalámbricos y cableados. El canal de comunicación 16 puede formar parte de una red basada en paquetes, tal como una red de área local, una red de área extensa o una red global tal como Internet. El canal de comunicación 16 representa en general cualquier medio de comunicación adecuado, o un conjunto de diferentes medios de comunicación, para transmitir datos de vídeo desde el dispositivo de origen 12 hasta el dispositivo de destino 14, incluyendo cualquier combinación adecuada de medios cableados o inalámbricos. El canal de comunicación 16 puede incluir routers, 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.
[28] El codificador de vídeo 20 y el descodificador de vídeo 30 pueden funcionar de acuerdo con una norma de compresión de vídeo, tal como la norma de Codificación de Vídeo de Alta Eficiencia (HVEC) o la norma ITU-T H.264, de forma alternativa denominada MPEG-4, Parte 10, Codificación de Vídeo Avanzada (AVC). Sin embargo, las técnicas de esta divulgación no están limitadas a ninguna norma de codificación particular. Otros ejemplos incluyen MPEG-2 e ITU-T H.263. Aunque no se muestra en la FIG. 1, en algunos aspectos, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden estar integrados, cada uno de ellos, con un codificador y un descodificador 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 de MUX-DEMUX pueden ajustarse al protocolo de multiplexado ITU H.223 o a otros protocolos, tales como el protocolo de datagramas de usuario (UDP).
[29] La norma ITU-T H.264 / MPEG-4 (AVC) fue formulada por el Grupo de Expertos en Codificación de Vídeo de ITU-T (VCEG), junto al Grupo de Expertos en Imágenes en Movimiento de iSo / IEC (MPEG), como el producto de una asociación colectiva conocida como el Equipo de Vídeo Conjunto (JVT). En algunos aspectos, las técnicas descritas en esta divulgación pueden ser aplicadas a dispositivos que se ajustan en general a la norma H.264. La norma H.264 se describe en la Recomendación ITU-T H.264, Codificación de Vídeo Avanzada, para los servicios audiovisuales genéricos, por el Grupo de Estudio de la ITU-T, y con fecha de marzo de 2005, y que se puede denominar en el presente documento norma H.264 o memoria descriptiva H.264, o la norma o memoria descriptiva H.264/AVC.
[30] El Equipo de Vídeo Conjunto (JVT) continúa trabajando en las ampliaciones de H.264/AVC, y desarrollando nuevas normas, por ejemplo, para HEVC. Los trabajos de normalización HEVC se basan en un modelo de dispositivo de codificación de vídeo denominado modelo de prueba HEVC (HM). El HM supone varias capacidades adicionales de los dispositivos de codificación de vídeo respecto a dispositivos existentes de acuerdo con, por ejemplo, la norma ITU-T H.264/AVC. Por ejemplo, mientras que la norma H.264 proporciona nueve modos de codificación de intra-predicción, el HM proporciona hasta treinta y cinco modos de codificación de intra-predicción.
[31] El HM hace referencia a un bloque de datos de vídeo con el término unidad de codificación (CU). Los datos sintácticos de un flujo de bits pueden definir la unidad de codificación más grande (LCU), que es la unidad de codificación de mayor tamaño en lo que respecta al número de píxeles. En general, una CU tiene un propósito similar a un macrobloque de la norma H.264, excepto en que una CU no tiene una distinción de tamaño- Por lo tanto, una CU puede dividirse en varias sub-CU. En general, las referencias de esta divulgación a una CU pueden referirse a la unidad de codificación más grande de una imagen o a una sub-CU de una LCU. Una LCU puede dividirse en varias sub-CU y cada sub-CU puede dividirse adicionalmente en varias sub-CU. Los datos sintácticos para un flujo de bits pueden definir un número máximo de veces en que puede dividirse una LCU, que se denomina profundidad de CU. Por consiguiente, un flujo de bits también puede definir una unidad de codificación mínima (SCU). Esta divulgación también usa el término "bloque" para referirse a una CU, una PU o una TU. Además, cuando esta divulgación se refiere a ejemplos que implican una unidad de codificación o CU,
5
10
15
20
25
30
35
40
45
50
55
60
65
debe entenderse que pueden proporcionarse otros ejemplos con respecto a macrobloques sustituidos por unidades de codificación.
[32] Una LCU puede asociarse a una estructura de datos en árbol cuaternario. En general, una estructura de datos en árbol cuaternario incluye un nodo por cada CU, donde un nodo raíz corresponde a la LCU. 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. Cada nodo de la estructura de datos de árbol cuádruple puede proporcionar datos sintácticos para la CU correspondiente. Por ejemplo, un nodo en el árbol cuaternario puede incluir un indicador de división, que indica si la CU correspondiente al nodo está dividida o no 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 o no en varias sub-CU.
[33] Una CU que no está dividida (por ejemplo, que corresponde a un nodo hoja en la estructura de datos de árbol cuádruple) puede incluir una o más unidades de predicción (PU). En general, una PU representa la totalidad o una parte de la CU correspondiente, e incluye datos para recuperar una muestra de referencia para la PU. Por ejemplo, cuando la PU está codificada en modo intra, la PU puede incluir datos que describen un modo de intra-predicción para la PU. Los datos que describen el modo de intra-predicción pueden definir, por ejemplo, la dirección asociada con el modo de intra-predicción para la PU (componentes de luma y croma) y el tamaño de bloque asociado con la PU. Como otro ejemplo, cuando la PU está codificada en el modo inter, la PU puede incluir datos que definen un vector de movimiento para la PU. Los datos que definen el vector de movimiento 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, con una precisión de un cuarto de píxel o una precisión de un octavo de píxel), una trama de referencia a la que apunta el vector de movimiento y/o una lista de tramas referencia (por ejemplo, lista 0 o lista 1) para el vector de movimiento, y el índice predictor de vector de movimiento. Los datos para la CU que definen la(s) PU también pueden describir, por ejemplo, una división de la CU en una o más PU. Los modos de división pueden diferir basándose en si la Cu está sin codificar, codificada en el modo de intra-predicción o codificada en el modo de inter-predicción.
[34] Una CU que presenta una o más PU también puede incluir una o más unidades de transformación (TU). Tras la predicción usando una PU, un codificador de vídeo puede calcular un valor residual para la parte de la CU correspondiente a la PU. El valor residual corresponde a valores de diferencias de píxeles que se pueden transformar en coeficientes de transformación, cuantificar y escanear para producir coeficientes de transformación en serie para la codificación por entropía. Un tamaño de la TU no está necesariamente limitado al tamaño de una PU. En particular, las TU pueden tener el mismo tamaño o ser más pequeñas que las PU correspondientes para una CU. En algunos ejemplos, el tamaño máximo de una TU puede ser el tamaño de la CU correspondiente. En general, las TU pueden comprender las estructuras de datos que incluyen los coeficientes de transformación residuales asociados con una CU dada.
[35] El codificador de vídeo 20 y el descodificador de vídeo 30 pueden implementarse como cualquiera entre una variedad de circuitos de codificadores adecuados, tales como uno o más microprocesadores, procesadores de señales digitales (DSP), circuitos integrados específicos de la aplicación (ASIC), matrices de puertas programables in situ (FPGA), lógica discreta, software, hardware, firmware o cualquier combinación de los mismos. El codificador de vídeo 20 y el descodificador de vídeo 30 pueden incluirse en uno o más codificadores o descodificadores, donde cualquiera de los mismos puede estar integrado como parte de un codificador / descodificador combinado (códec) en una cámara respectiva, ordenador, dispositivo móvil, dispositivo de abonado, dispositivo de radiodifusión, codificador, servidor o similar.
[36] Una secuencia de vídeo incluye típicamente una serie de tramas de vídeo. Un grupo de imágenes (GOP) comprende en general una serie de una o más tramas de vídeo. Un GOP puede incluir datos sintácticos en una cabecera del GOP, una cabecera de una o más tramas del GOP o en otras ubicaciones, que indican el número de tramas incluidas en el GOP. Cada trama puede incluir datos sintácticos de trama que describen un modo de codificación para la respectiva trama. Un codificador de vídeo 20 actúa típicamente sobre bloques de vídeo de tramas de vídeo individuales con el fin de codificar los datos de vídeo. Un bloque de vídeo puede corresponder a una unidad de codificación (CU) o una unidad de división (PU) de la CU. Los bloques de vídeo pueden presentar tamaños fijos o variables y pueden diferir en tamaño de acuerdo con una norma de codificación especificada. Cada trama de vídeo puede incluir una pluralidad de fragmentos. Cada fragmento puede incluir una pluralidad de CU, que pueden incluir una o más PU.
[37] En un ejemplo, el modelo de prueba HEVC (HM) soporta predicción en diversos tamaños de CU. El tamaño de una LCU puede definirse mediante información de sintaxis. Suponiendo que el tamaño de una CU particular sea 2Nx2N, el HM soporta la intra-predicción en tamaños de 2Nx2N o NxN y la inter-predicción en tamaños simétricos de 2Nx2N, 2NxN, Nx2N o NxN. El HM también soporta la división asimétrica para la interpredicción 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 en 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”.
5
10
15
20
25
30
35
40
45
50
55
60
65
Así, por ejemplo, “2NxnU” se refiere a una CU de tamaño 2Nx2N que está dividida horizontalmente con una PU de tamaño 2Nx0,5N encima y una PU de tamaño 2Nx1,5N debajo.
[38] 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 (por ejemplo, CU, PU o TU) 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 estar ordenados 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.
[39] Como se indicó anteriormente, las CU pueden codificarse usando codificación inter-predictiva o codificación intra-predictiva. En la intra-predicción, un bloque actual puede predecirse en relación con un bloque en la misma trama que ya se ha codificado. Típicamente, los bloques de una trama se codifican de izquierda a derecha y de arriba a abajo, o en algunos ejemplos en un orden de escaneado z. Por lo tanto, puede predecirse un bloque actual en relación con bloques en cualquier lugar por encima o a la izquierda del bloque actual. Los tamaños de bloque en la codificación de inter-predicción pueden variar desde un tamaño relativamente pequeño, por ejemplo, 2x2, a un tamaño relativamente grande, por ejemplo, 128x128. La dirección de predicción o la dirección desde un bloque ya codificado al bloque actual puede determinar el modo de intra-predicción. El HM permite hasta 34 modos, que incluyen 33 modos direccionales de intra-predicción diferentes, que corresponden a una dirección de extrapolación y un modo DC. Cada uno de los 33 modos direccionales de intra-predicción corresponde a un ángulo entre 0 y 180 (o entre 45 y -135 grados desde la horizontal, yendo en el sentido de las agujas del reloj, en el ejemplo de la FIG. 2A), con una resolución de ángulo cercana a 5,625 ° indicativa de la dirección de extrapolación de los píxeles del bloque utilizado para predecir los píxeles del bloque actual. El modo no direccional (designado con el modo 2) corresponde a DC, donde se usa un muestreo de los píxeles contiguos para predecir los píxeles del bloque actual. En algunos ejemplos, el HM puede permitir un 35° modo (modo 34) correspondiente a un modo planar, donde los valores de los píxeles se pueden ajustar usando una función de gradiente, que se analiza con más detalle a continuación.
[40] Durante la codificación intra-predictiva, la calidad de la precisión de la predicción puede verse afectada y degradada. Por ejemplo, a medida que aumenta el tamaño de la PU, la precisión de predicción de los píxeles más alejados de los píxeles del predictor puede degradarse. La degradación de la precisión de predicción puede dar como resultado más datos residuales, lo cual puede dar como resultado más datos que es necesario codificar, transmitir o almacenar. Se puede aplicar un filtro suavizante a los píxeles del predictor utilizados para predecir un bloque para mejorar la precisión de la predicción. Sin embargo, en algunos casos, se obtienen mejores resultados sin utilizar un filtro suavizante. Como se indicó anteriormente, las normas actuales utilizan técnicas de intra-suavizado adaptativo (AIS).
[41] Las técnicas de esta divulgación proponen un esquema de AIS simplificado que se basa en reglas, donde las reglas sobre si aplicar o no un filtro suavizante se basan principalmente en el tamaño del bloque actual y el modo o dirección de predicción. En HM, los tamaños de bloque varían desde un tamaño pequeño, por ejemplo, 2x2, hasta 128x128, por ejemplo. Los modos de intra-predicción disponibles para cada bloque pueden variar basándose en el tamaño, como se explicará con más detalle a continuación. Para cada tamaño de bloque, puede ser necesario un filtro suavizante cuando la predicción se aplica en algunas direcciones, pero no en otras direcciones, donde las direcciones corresponden a diferentes modos de intra-predicción. En un ejemplo, las combinaciones de tamaños y modos de intra-predicción para los cuales se aplica un filtro suavizante se pueden predefinir en una tabla de consulta (LUT). Por lo tanto, determinar si se aplica un filtro suavizante puede ser genérico y permanecer igual independientemente de los cambios en el codificador y/o descodificador, y tal vez no sea necesario indicar la determinación de filtrado. Además, determinar si se aplica o no un filtro suavizante no implica una complejidad significativa del codificador.
[42] En algunos ejemplos, la determinación de si aplicar o no un filtro suavizante se puede distinguir además entre bloques más grandes y bloques más pequeños, donde la metodología para determinar si se aplica o no un filtro suavizante puede variar basándose en el tamaño del bloque. Por ejemplo, para algunos tamaños de bloque, el codificador puede realizar predicciones utilizando píxeles filtrados y no filtrados, y comparar los resultados para determinar si se usa o no un filtro suavizante. El codificador puede entonces indicar el modo de filtrado, es decir, si se usa o no un filtro suavizante para codificar el bloque. En un ejemplo, puede indicarse el modo de filtrado si es diferente de la decisión que se obtendría basándose en la LUT, es decir, la decisión de filtrado predeterminada.
[43] En un ejemplo, se pueden definir uno o más filtros suavizantes (por ejemplo, candidatos de filtro). Para cada combinación de modo de intra-predicción y tamaño de bloque, una tabla puede definir el filtro apropiado para usar. Para combinaciones para las cuales no se usa filtro suavizante, el filtro definido puede ser un filtro de todo paso. Una tabla principal puede incluir el filtro suavizante más probable para cada combinación
5
10
15
20
25
30
35
40
45
50
55
60
65
correspondiente de tamaño de bloque y modo de intra-predicción. En algunos ejemplos, se puede definir una tabla secundaria (o varias tablas adicionales) para incluir el segundo filtro suavizante más probable (o varios filtros suavizantes posibles en el caso de varias tablas adicionales) para cada combinación correspondiente de tamaño de bloque y modo de intra-predicción . En un ejemplo, se puede utilizar la información de filtro suavizante más probable, a menos que se indique lo contrario. La información asociada con la codificación intra-predictiva (por ejemplo, tamaño de bloque y modo de intra-predicción) y la información de filtrado suavizante (por ejemplo, modo de filtrado y tabla(s) de filtro(s) suavizante(s) probable(s)) pueden codificarse en cabeceras (u otras estructuras de datos, como pies de página) de los bloques correspondientes y descodificados por un descodificador de vídeo para aplicar el filtro suavizante apropiado durante la descodificación.
[44] Después de la codificación intra-predictiva o inter-predictiva para producir datos predictivos (por ejemplo, una PU para una CU), el codificador de vídeo 20 puede calcular datos residuales para producir una o más unidades de transformación (TU) para la CU. Las PU de una CU pueden comprender datos de píxeles en el dominio espacial (también denominado dominio de píxeles), mientras que las TU de la CU pueden comprender coeficientes en el dominio de las transformaciones, por ejemplo tras la aplicación de una transformación tal como una transformación de coseno discreta (DCT), una transformación de enteros, una transformación de ondículas o una transformación similar desde un punto de vista conceptual 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 valores de predicción de una PU o una CU. El codificador de vídeo 20 puede formar una o más TU incluyendo los datos residuales para la CU. El codificador de vídeo 20 puede transformar las TU.
[45] Después de cualquier transformación para producir coeficientes de transformación, se puede realizar la cuantificación de los coeficientes de transformación. La cuantificación se refiere en general a un proceso en el que los coeficientes de transformación se cuantifican para reducir posiblemente la cantidad de datos utilizados para representar los coeficientes. El proceso de cuantificació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 cuantificación, donde n es mayor que m.
[46] En algunos ejemplos, el codificador de vídeo 20 puede usar un orden de escaneado predefinido para escanear los coeficientes de transformación cuantificados, para producir un vector en serie que pueda ser codificado por entropía. En otros ejemplos, el codificador de vídeo 20 puede realizar un escaneado adaptativo. Después de escanear los coeficientes de transformación cuantificados 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 con la codificación de longitud variable adaptativa al contexto (CAVLC), la codificación aritmética binaria adaptativa al contexto (CABAC), la codificación aritmética binaria adaptativa al contexto basada en la sintaxis (SBAC) u otra metodología de codificación por entropía.
[47] Una unidad de procesamiento configurada para la codificación por entropía, u otra unidad de procesamiento, puede realizar otras funciones de procesamiento, tales como la codificación de longitud de ejecución cero de coeficientes cuantificados y/o la generación de información de sintaxis, tal como valores de patrón de bloque codificado (CBP), tipo macrobloque, modo de codificación, tamaño de LCU o similares.
[48] El descodificador de vídeo 30 del dispositivo de destino 14 puede configurarse para realizar técnicas similares, y en general simétricas, a cualquiera o a todas las técnicas del codificador de vídeo 20 de esta divulgación. Por ejemplo, el descodificador de vídeo 30 puede recibir CUs codificadas por entropía de una trama de vídeo. Estos datos recibidos pueden incluir elementos sintácticos que indican si se utilizó codificación intra- predictiva para codificar la CU en el codificador de vídeo 20. De acuerdo con las técnicas de esta divulgación, los elementos sintácticos asociados con la codificación intra-predictiva pueden incluir información tal como, por ejemplo, el modo de intra-predicción o la dirección de predicción, el tamaño de bloque y otra información asociada con el filtro suavizante, cuando sea aplicable. Por ejemplo, el descodificador de vídeo 30 puede determinar que una CU se codifica usando codificación intra-predictiva y elementos sintácticos de descodificación incluidos con la CU codificada para determinar el modo de intra-predicción de la CU. El codificador de vídeo 30 también puede determinar el tamaño del bloque utilizado en la codificación intra- predictiva, y usando el tamaño de bloque y la información del modo de intra-predicción, el descodificador de vídeo 30 puede determinar si aplicar o no un filtro suavizante a los píxeles del predictor al predecir un bloque.
[49] En un ejemplo, el descodificador de vídeo 30 puede determinar si aplicar o no un filtro suavizante basándose en la combinación de tamaño de bloque y modo de intra-predicción usado para codificar el bloque. Si no se indica lo contrario, el descodificador de vídeo 30 puede utilizar el filtro suavizante más probable asociado con la combinación del tamaño de bloque y el modo de intra-predicción. Si el filtro suavizante utilizado para la combinación del tamaño de bloque y el modo de intra-predicción es diferente del filtro suavizante más probable para esa combinación, el descodificador de vídeo 30 puede descodificar una indicación a partir de los elementos sintácticos asociados con el bloque, y un filtro suavizante de un segundo (o más) filtro suavizante más probable para esa combinación es seleccionado y utilizado por el descodificador de vídeo 30.
5
10
15
20
25
30
35
40
45
50
[50] De esta manera, la cantidad de información codificada para indicar si se aplica o no un filtro suavizante en la codificación intra-predictiva se minimiza, y en algunos casos se elimina. Por ejemplo, cuando la decisión de la aplicación de filtro suavizante es la más probable para una combinación de tamaño de bloque y modo de intra- predicción, no se codifica ninguna indicación con respecto al filtro suavizante, y el descodificador de vídeo 30 puede tomar la determinación sin requerir información adicional distinta al tamaño de bloque y el modo de intra- predicción.
[51] El codificador de vídeo 20 y el descodificador de vídeo 30 pueden implementarse, cada uno, como cualquiera entre una amplia variedad de circuitos codificadores o descodificadores 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), matrices de puertas 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 descodificador de vídeo 30 puede estar incluido en uno o más codificadores o descodificadores, cada uno de los cuales puede estar integrado como parte de un codificador/descodificador (CÓDEC) de vídeo combinado. Un aparato que incluye un codificador de vídeo 20 y/o un descodificador 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.
[52] La FIG. 2A es un diagrama conceptual que ilustra un gráfico que representa un conjunto de ejemplos de direcciones de predicción asociadas con varios modos de intra-predicción. Como se indicó anteriormente, el HM proporciona hasta treinta y tres modos de codificación direccional de intra-predicción. Un codificador HM (por ejemplo, un codificador de vídeo 20) puede configurarse de manera que el conjunto disponible de modos de intra-predicción para un bloque pueda depender del tamaño del bloque o PU. Es decir, el tamaño de un bloque puede determinar el número de modos de intra-predicción disponibles para el bloque, a partir de los cuales el codificador puede seleccionar un modo de intra-predicción para predecir el bloque. La TABLA 1 siguiente ilustra un ejemplo de correspondencia entre los tamaños de bloque y los modos de intra-predicción disponibles para bloques de ese tamaño. Las direcciones asociadas con los modos de intra-predicción se ilustran en la FIG. 3. El modo 2, no mostrado en la FIG. 3, corresponde al modo DC, donde se usa un muestreo de los píxeles contiguos para predecir los píxeles del bloque actual.
TABLA 1
- Tamaño de PU o bloque
- Modos de intra- predicción
- 2X2
- 0~3
- 4X4
- 0 ~ 16
- 8X8
- 0 ~ 33
- 16X16
- 0 ~ 33
- 32X32
- 0 ~ 33
- 64X64
- 0 ~ 5
- 128X128
- 0 ~ 5
[53] En el ejemplo de la FIG. 2A, el bloque 106 (indicado con el contorno punteado) puede predecirse a partir de los píxeles contiguos 100A-100AG (píxeles contiguos 100) dependiendo de un modo de intra-predicción seleccionado. Las flechas 102A-102AG (flechas 102) representan direcciones o ángulos asociados con varios modos de intra-predicción. El ejemplo de la FIG. 2A es representativo de los modos de intra-predicción proporcionados por el HM. Sin embargo, en otros ejemplos, se pueden proporcionar más o menos modos de intra-predicción. Aunque el ejemplo del bloque 106 es un bloque de 8x8 píxeles, en general, un bloque puede tener cualquier cantidad de píxeles, por ejemplo, 4x4, 8x8, 16x16, 32x32, 64x64, 128x128, etc. Aunque el ejemplo del bloque 106 es cuadrado, las técnicas de esta divulgación también pueden aplicarse a otros tamaños de bloque, por ejemplo, bloques NxM, donde N no es necesariamente igual a M.
[54] Un modo de intra-predicción se puede definir de acuerdo con un ángulo de la dirección de predicción con relación, por ejemplo, a un eje horizontal que es perpendicular a los lados verticales del bloque 106. Por lo tanto, cada una de las flechas 102 puede representar un ángulo particular de una dirección de predicción de un modo de intra-predicción correspondiente. En algunos ejemplos, un modo de dirección de intra-predicción se puede definir mediante un par entero (dx, dy), que puede representar la dirección que utiliza el modo de intra- predicción correspondiente para la extrapolación de píxeles de contexto. Es decir, el ángulo del modo de intra- predicción se puede calcular como dy / dx. En otras palabras, el ángulo puede representarse de acuerdo con el desplazamiento horizontal dx y el desplazamiento vertical dy. El valor de un píxel en la ubicación (x, y) en el bloque 106 puede determinarse a partir del uno o más píxeles contiguos 100 a través de los cuales pasa una línea que también pasa a través de la ubicación (x, y) con un ángulo de dy / dx.
5
10
15
20
25
30
35
40
45
50
55
[55] La FIG. 2B es un diagrama conceptual que ilustra un gráfico que representa otro conjunto de ejemplos de direcciones de predicción asociadas con varios modos de intra-predicción. En el ejemplo de la FIG. 2B, se muestran treinta y tres modos de codificación direccional de intra-predicción, similares a los mostrados en la FIG. 2A. En este ejemplo, además de los 33 modos direccionales, hay dos modos adicionales; el modo 2 correspondiente al modo DC y el modo 34 correspondiente al modo planar.
[56] En el ejemplo de la FIG. 2B, el codificador y/o descodificador se puede configurar de modo que el conjunto disponible de modos de intra-predicción para un bloque pueda depender del tamaño del bloque, por ejemplo, PU, CU o TU. Es decir, el tamaño de un bloque puede determinar el número de modos de intra- predicción disponibles para el bloque, a partir de los cuales el codificador puede seleccionar un modo de intra- predicción para predecir el bloque. La TABLA 2 siguiente ilustra otro ejemplo de correspondencia entre los tamaños de bloque y los modos de intra-predicción disponibles para bloques de ese tamaño.
TABLA 2
- Tamaño de PU o bloque
- Modos de intra- predicción
- 4X4
- 0 ~ 16,34
- 8X8
- 0 ~ 34
- 16X16
- 0 ~ 34
- 32X32
- 0 ~ 34
- 64X64
- 0 ~ 2,34
[57] La FIG. 3 es un diagrama conceptual que ilustra un ejemplo de conjunto de direcciones de predicción asociadas con varios modos de intra-predicción. Cada uno de los 33 modos direccionales de intra-predicción proporcionados por el HM corresponde a una dirección con un ángulo especificado. Por ejemplo, el modo 1 corresponde a una dirección de extrapolación horizontal o a un ángulo de 0 ° con respecto a la horizontal, donde un bloque codificado usando el modo 1 se predice a partir de píxeles dirigidos a su izquierda. Como otro ejemplo, el modo 0 corresponde a una dirección de extrapolación vertical o a un ángulo de 90 ° con respecto a la horizontal, donde un bloque codificado usando el modo 0 se predice a partir de píxeles directamente encima del mismo. Como otro ejemplo, los modos 3, 6 y 9 corresponden a una dirección de extrapolación diagonal con una resolución de ángulo de 45 °. Los modos 0, 1 y 3-33 corresponden a las direcciones de predicción que abarcan 180 ° (entre los modos 6 y 9), con una resolución de ángulo cercana a 5,625 °. El modo 2, en el ejemplo del HM, corresponde al modo DC, donde se utiliza un muestreo de los ocho píxeles contiguos para predecir los píxeles del bloque actual. El modo 34 corresponde al modo planar, donde se puede incluir una función de plano lineal que se ajusta al bloque de propósitos de predicción. El modo planar puede funcionar bien en áreas de luminancia que varía suavemente. El modo planar puede ser efectivo para predecir bloques más grandes, pero puede ser menos eficiente cuando se usa para predecir bloques más pequeños. Los círculos de la FIG. 3 representan la resolución de ángulo de los modos direccionales de intra-predicción asociados con cada círculo. Por ejemplo, para el círculo 0, la resolución entre los modos dentro del círculo (modos 0 y 1) es de 90 grados, la resolución entre los modos dentro del círculo 1 (modos 3, 6 y 9) es de 45 grados, la resolución entre los modos dentro del círculo 2 (modos 4, 5, 7 y 8) es de 22.5 grados, y así sucesivamente.
[58] La FIG. 4 es un diagrama de bloques que ilustra un ejemplo de codificador de vídeo 20 que puede implementar técnicas para la aplicación de un filtro suavizante a los píxeles que rodean a las muestras de predicción utilizadas en codificación de intra-predicción de datos de vídeo. El codificador de vídeo 20 puede realizar intra e inter-predicción de bloques de vídeo dentro de tramas de vídeo, incluyendo LCU, CU y PU, y calcular valores residuales que pueden codificarse como TU. La intra-codificación se basa en la predicción espacial para reducir o eliminar la redundancia espacial en el vídeo de una trama de vídeo dada. La intercodificación se basa en la predicción temporal para reducir o eliminar la redundancia temporal en el vídeo dentro de tramas adyacentes de una secuencia de vídeo. El modo intra (modo I) puede referirse a cualquiera de varios modos de compresión espacial. Los modos inter, tales como la predicción unidireccional (modo P), la predicción bidireccional (modo B) o la predicción P/B generalizada (modo GPB) pueden referirse a cualquiera de varios modos de compresión temporal. La unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 pueden realizar la codificación de inter-predicción, mientras que la unidad de intra-predicción 46 puede realizar la codificación de intra-predicción.
[59] Como se muestra en la FIG. 4, el codificador de vídeo 20 recibe un bloque de vídeo actual dentro de una trama o un fragmento de vídeo a codificar. En el ejemplo de la FIG. 4, el codificador de vídeo 20 incluye una unidad de selección de modo 40, una unidad de predicción 41, un almacenamiento de tramas de referencia 64, un sumador 50, una unidad de transformación 52, una unidad de cuantificación 54 y una unidad de codificación por entropía 56. La unidad de predicción 41 incluye una unidad de estimación de movimiento 42, una unidad de compensación de movimiento 44 y una unidad de intra-predicción 46. Para la reconstrucción de bloques de vídeo, el codificador de vídeo 20 incluye además la unidad de cuantificación inversa 58, la unidad de transformación inversa 60 y el sumador 62. También puede incluirse un filtro de desbloqueo (no se muestra en la
5
10
15
20
25
30
35
40
45
50
55
60
65
FIG. 4) para filtrar límites de bloque, para eliminar distorsiones de efecto pixelado del vídeo reconstruido. Si se desea, el filtro de desbloqueo filtrará típicamente la salida del sumador 62.
[60] Durante el proceso de codificación, el codificador de vídeo 20 recibe una trama o un fragmento de vídeo que va a codificarse. La trama o el fragmento puede dividirse en múltiples bloques de vídeo o CU. La unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 llevan a cabo una codificación de inter-predictiva del bloque de vídeo recibido con respecto a uno o más bloques de uno o más tramas de referencia para proporcionar una compresión temporal. La unidad de intra-predicción 46 puede llevar a cabo una codificación intra-predictiva del bloque de vídeo recibido con respecto a uno o más bloques contiguos de la misma trama o fragmento que el bloque que va a codificarse para proporcionar compresión espacial.
[61] La unidad de selección de modo 40 puede seleccionar uno de los modos de codificación, intra o inter, por ejemplo, basándose en los resultados de error, y proporciona la selección del modo de codificación a la unidad de predicción 41. A continuación, la unidad de predicción 41 produce un bloque intra- o inter-codificado y proporciona el bloque codificado al sumador 50 para generar datos de bloques residuales, y al sumador 62 para reconstruir el bloque codificado para su uso como trama de referencia. Cuando la unidad de selección de modo 40 selecciona la codificación intra-predictiva para un bloque, la unidad de intra-predicción 46 puede seleccionar un modo de intra-predicción para el bloque. Por ejemplo, el modo de intra-predicción seleccionado puede ser uno de los 35 modos proporcionados por el HM. El número de modos de intra-predicción a partir del cual se selecciona un modo de intra-predicción para un bloque dado puede depender del tamaño del bloque como se muestra en el ejemplo de la TABLA 1 anterior.
[62] En un ejemplo, cuando la unidad de selección de modo 40 selecciona la codificación inter-predictiva, la unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 pueden realizar el procesamiento asociado con la codificación inter-predictiva para generar un bloque inter-codificado. 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 un bloque predictivo o una PU en una trama de referencia predictiva (u otra unidad codificada) con respecto al bloque actual que está codificándose en la trama actual (u otra unidad codificada). Un bloque predictivo es un bloque que se revela como muy coincidente con el bloque de vídeo o PU a codificar en lo que respecta a la diferencia de píxeles, que puede determinarse mediante la suma de una diferencia absoluta (SAD), la suma de una diferencia de cuadrados (SSD) u otras métricas de diferencia.
[63] Un vector de movimiento también puede indicar el desplazamiento de una división de un macrobloque. La compensación de movimiento puede implicar extraer o generar el bloque predictivo basándose en el vector de movimiento determinado por la estimación de movimiento. En algunos ejemplos, el codificador de vídeo 20 puede calcular valores para posiciones fraccionarias de píxeles de tramas de referencia almacenadas en el almacén de tramas de referencia 64. Por ejemplo, el codificador de vídeo 20 puede calcular 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 trama 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 emitir un vector de movimiento con una precisión de píxel fraccionaria.
[64] La unidad de estimación de movimiento 42 calcula un vector de movimiento para un bloque de vídeo o PU de una trama inter-codificada mediante la comparación de la PU con los bloques de una trama de referencia en el almacén de tramas de referencia 64. La unidad de compensación de movimiento 44 también puede interpolar píxeles subenteros de la trama de referencia, por ejemplo, una trama I o una trama P. El HM, por ejemplo, describe dos listas: la lista 0, que incluye las tramas de referencia que tienen un orden de visualización anterior a la trama actual que se está codificando, y la lista 1, que incluye las tramas de referencia que tienen un orden de visualización posterior a la trama actual que se está codificando. Por lo tanto, los datos almacenados en el almacén de tramas de referencia 64 pueden organizarse de acuerdo con estas listas. En algunos casos, la unidad de estimación de movimiento 42 puede calcular además un valor de diferencia de vector de movimiento (MVD) para el vector de movimiento y pasar el valor MVD, en lugar del propio vector de movimiento, a la unidad de codificación por entropía 56.
[65] En un ejemplo, cuando la unidad de selección de modo 40 selecciona la codificación intra-predictiva, la unidad de intra-predicción 46 puede realizar el procesamiento asociado con la codificación intra-predictiva para generar un bloque intra-codificado. Como se indicó anteriormente, basándose en el tamaño del bloque, se puede determinar el número de modos de intra-predicción-disponibles para el bloque. Un ejemplo de una correspondencia entre el tamaño del bloque y el número de modos de intra-predicción disponibles para los bloques de ese tamaño se muestra en la TABLA 1 y en la TABLA 2 anteriores. La unidad de intra-predicción 46 puede codificar de forma intra-predictiva el bloque de vídeo actual en relación con bloques contiguos, previamente codificados, por ejemplo, bloques arriba, arriba y a la derecha, arriba y a la izquierda, o a la izquierda del bloque actual, suponiendo un orden de codificación de izquierda a derecha y de arriba a abajo para
5
10
15
20
25
30
35
40
45
los bloques. La unidad de intra-predicción 46 puede utilizar un bloque contiguo basándose en un modo de intra- predicción seleccionado para el bloque actual.
[66] La unidad de intra-predicción 46 puede determinar el modo de intra-predicción apropiado para el bloque, seleccionando uno de los modos de intra-predicción disponibles. La unidad de intra-predicción 46 puede seleccionar un modo de intra-predicción, por ejemplo, calculando valores de error para las diversos modos de intra-predicción asociados con el tamaño del bloque y seleccionando un modo que produzca el valor de error más bajo. Los modos de predicción direccional pueden incluir funciones para la combinación de valores de los píxeles espacialmente contiguos y la aplicación de los valores combinados a una o más posiciones de píxel en una unidad de predicción (PU). Una vez que se han calculado los valores para todas las posiciones de píxel en la PU, la unidad de intra-predicción 46 puede calcular un valor de error para el modo de predicción basándose en diferencias de píxeles entre la PU y el bloque actual a codificar. La unidad de intra-predicción 46 puede seguir probando los modos de intra-predicción asociados con el tamaño de bloque del bloque actual hasta que se descubra un modo de intra-predicción que produzca un valor de error aceptable. El modo de intra-predicción que da como resultado el valor de error más bajo se puede usar a continuación para generar la PU para el bloque actual. La unidad de intra-predicción 46 puede indicar el modo de intra-predicción seleccionado de modo que esté codificado con los elementos sintácticos asociados con el bloque codificado.
[67] De acuerdo con esta divulgación, el codificador de vídeo 20 puede determinar si se aplica o no un filtro suavizante a los píxeles alrededor de las muestras de predicción de un bloque actual que está codificado usando codificación intra-predictiva. La determinación puede basarse en el tamaño del bloque y el modo de intra- predicción utilizado en la codificación del bloque actual. En un ejemplo de acuerdo con las técnicas de esta divulgación, el filtro suavizante no se aplica cuando se usan los modos 0, 1 o 2, que corresponden a los modos vertical, horizontal y DC, respectivamente, porque cada uno de estos modos proporciona unos resultados de predicción relativamente precisos sin aplicar suavizado. Por lo tanto, cuando la dirección de predicción es perfectamente horizontal, vertical, o el modo de intra-predicción es el modo DC, el filtro suavizante no se aplica. Determinar si se aplica o no un filtro suavizante para otros modos (es decir, los modos diagonales), depende del tamaño de la unidad de predicción y el modo de intra-predicción. La TABLA 3 siguiente muestra una relación de ejemplo de combinaciones de tamaño de bloque y modo de intra-predicción para los cuales se aplica un filtro suavizante. Las combinaciones de tamaño de bloque y modo de intra-predicción para las que se puede aplicar el filtrado pueden basarse en el entrenamiento fuera de línea y en los resultados estadísticos. La TABLA 3 no representa el único tipo de relación que podría definirse, sino que simplemente proporciona un ejemplo consistente con esta divulgación.
TABLA 3
- Tamaño de bloque
- Modos que están filtrados Mostrado en la FIG. 3
- 2x2
- sin filtrado para todos los modos no disponible
- 4x4
- modo 3, 6 y 9. modos entre el círculo 0 y el círculo 1
- 8x8
- modos 3, 4, 5, 6, 7, 8 y 9 modos entre el círculo 0 y el círculo 2
- 16x16
- modos 3 a 17 modos entre el círculo 0 y el círculo 3
- 32x32
- modos 3 a 33 modos entre el círculo 0 y el círculo 4
- 64x64
- modos 3 a 4 modos entre el círculo 0 y el círculo 4
- 128x128
- modos 3 a 4 modos entre el círculo 0 y el círculo 4
[68] Como ilustra la TABLA 3, la determinación de si aplicar un filtro suavizante es genérica y sigue siendo la misma basándose en el tamaño del bloque y el modo de intra-predicción utilizado para codificar el bloque. En un ejemplo, las combinaciones de tamaños y modos de intra-predicción que se muestran arriba en la TABLA 3, y para las cuales se aplica un filtro suavizante, se pueden predefinir en una tabla de búsqueda (LUT). La LUT puede estar disponible tanto en el codificador como en el descodificador, o el codificador puede enviarlo al descodificador. Por lo tanto, determinar si se aplica un filtro suavizante puede ser genérico y permanecer igual independientemente de los cambios en el codificador y/o descodificador, y tal vez no sea necesario indicar la determinación de filtrado. Además, determinar si se aplica o no un filtro suavizante no implica una complejidad significativa del codificador.
[69] En un ejemplo, durante la codificación intra-predictiva de un bloque, el codificador puede determinar si aplica o no un filtro suavizante a las muestras predictivas basándose en la combinación del tamaño del bloque y el modo intra-predictivo utilizado, y de acuerdo con las combinaciones definidas en una LUT. Estas
5
10
15
20
25
30
35
40
45
combinaciones pueden asociarse con una opción de filtrado más probable como se indica en una tabla de filtros más probables. Por ejemplo, se puede crear una tabla de filtros más probables para indicar para cada combinación de tamaño de bloque y modo de intra-predicción, qué opción de filtro utilizar. En un ejemplo, se puede seleccionar un filtro suavizante a partir de una lista de filtros candidatos para cada combinación de tamaño de bloque y modo de intra-predicción. La opción de no filtrado se puede generalizar en un filtro suavizante que sea un filtro de todo paso. En algunos ejemplos, se pueden usar uno o más filtros suavizantes, donde por ejemplo un filtro suavizante puede funcionar mejor para algunas combinaciones de tamaños de bloque y modos de intra-predicción y un segundo filtro suavizante puede funcionar mejor para otras combinaciones de tamaños de bloque y modos de intra- predicción El número de filtros en el conjunto candidato de filtros suavizantes puede variar de un sistema a otro. En un ejemplo, las opciones de filtro para una combinación de tamaño de bloque y modo de intra-predicción pueden basarse en el entrenamiento fuera de línea con diferentes datos de vídeo de entrenamiento. Para simplificar, la cantidad de filtros puede ser 3, filtro 0, filtro 1 y filtro 2, donde el filtro 0 indica un filtrado de todo paso (es decir, sin filtrado). Usando los filtros candidatos, se puede generar una tabla de filtros más probables de acuerdo con la siguiente tabla, que se representa en pseudocódigo:
// tabla de filtros más probables
{0, o, o, o, o, o, o, o, o, o, o, o, o, o, o, o, o, o, o, o, o, o, o, o,
0, 0, 0, 0, 0, 0},//2x2
{0, 0, 0, 1, 0, 0, 1, 0, 0,1, o, o, o, o, o, o, o, o, o, o, o, o, o, o,
0, 0, 0, 0, 0, 0},//4x4
{0, 0, 0, 1, 1, 2, 2, 2, 1,1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0},//8x8
{0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0},//16xl6 {0, 0, 0, 2, 2, 2, 2, 2, 2 0, 0, 0, 0, 0, 0},//32x32 {0, 0, 0, 2, 2, 0, 0, 0, C 0, 0, 0, 0, 0, 0},//64x64 {0, 0, 0, 2, 2, 0, 0, 0, C 0,0, 0,0, 0,0} //128xl28
222222222222222
Z-, Z-, Z-, Z-, Z-, Z-, Z-, Z-, Z-, Z-, Z-, Z-, Z-, Z-, Z-,
0, 0, 0, o, o, o, o, o, o, o, o, o, o, o, o,
o, o, o, o, o, o, o, o, o, o, o, o, o, o, o,
o, o, o, o, o, o, o, o, o, o,
o, o, o, o, o, o, o, o, o, o,
o, o, o, o, o, o, o, o, o, o,
o, o, o, o, o, o, o, o, o, o,
2222222222
z-, z-, z-, z-, z-, z-, z-, z-, z-,
0, o, o, o, o, o, o, o, o, o,
o, o, o, o, o, o, o, o, o, o,
[70] En el ejemplo anterior, el filtro suavizante más probable se puede definir para cada tamaño de bloque y modo de intra-predicción. El índice de tabla de un filtro suavizante para una combinación específica puede definirse como [S, M] correspondiente al tamaño y al modo. El tamaño del bloque puede variar de 1 a 7, lo que corresponde a tamaños de bloque 2x2, 4x4, 8x8, 16x16, 32x32, 64x64 y 128x128, por ejemplo. El modo de intra- predicción puede variar de 1 a 40, por ejemplo. Sin embargo, en el ejemplo de esta divulgación, solo se definen 35 modos, y por lo tanto, el resto de los modos se completan con 0, lo que indica filtro 0 o filtro de todo paso. El ejemplo de la tabla anterior muestra para cada entrada en la tabla un filtro suavizante del conjunto de filtros de ejemplo (0, 1, 2). Los modos de intra-predicción para los que se aplica un filtro suavizante 1 o 2 corresponden a las combinaciones definidas en la TABLA 3 anterior.
[71] En un ejemplo, durante la codificación, el codificador de vídeo 20 puede implementar codificación intra- predictiva dependiente del modo fijo, donde el codificador de vídeo 20 selecciona el filtro suavizante más probable para cada combinación de tamaño de bloque y modo de intra-predicción como se define en la tabla anterior. En este ejemplo, el codificador de vídeo 20 puede indicar la codificación intra-predictiva dependiente de modo fijo, sin tener que codificar qué filtro suavizante se usa para un bloque. Durante la descodificación, si se indica codificación intra-predictiva dependiente del modo fijo, el descodificador (por ejemplo, descodificador de vídeo 30) puede determinar qué filtro suavizante aplicar usando información de la tabla anterior basándose en el tamaño de bloque y la información de modo de intra-predicción usada como un índice para la tabla. Por ejemplo, un bloque 8x8 codificado usando el modo 6 de intra-predicción puede corresponder a Filter1 ([3,6]) que es el filtro suavizante 2. Filter1 puede indicar que la información se obtiene de la tabla correspondiente a la tabla de filtros más probables.
[72] En algunos casos, el uso de la codificación intra-predictiva dependiente del modo fijo puede no dar los mejores resultados para algunos de los tamaños de bloque más grandes, por ejemplo, 64x64 y 128x128. En un ejemplo, durante la codificación intra-predictiva de un bloque, el codificador de vídeo 20 puede determinar si se aplica o no un filtro suavizante a muestras predictivas usando codificación intra-predictiva dependiente del modo adaptativo. Para bloques más pequeños que un tamaño de umbral, por ejemplo, 64x64, el codificador de vídeo
5
10
15
20
25
30
35
40
45
20 puede utilizar la tabla de filtros más probables mostrada anteriormente. Para bloques mayores o iguales al umbral, por ejemplo, bloques de 64x64 y más grandes, el codificador de vídeo 20 puede evaluar los resultados para aplicar diferentes filtros suavizantes sin incluir ningún filtro a las muestras predictivas, y determinar qué produce mejores resultados. Los resultados pueden determinarse basándose en una métrica de calidad o una métrica de distorsión de velocidad. La parte de velocidad de la métrica puede ser indicativa de la velocidad de codificación del bloque actual, y la parte de distorsión de la métrica puede ser indicativa de la cantidad de distorsión en el bloque actual. La métrica de distorsión de velocidad puede basarse en la velocidad, la distorsión o una combinación de ambos.
[73] En un ejemplo, la evaluación de la aplicación de diferentes filtros suavizantes puede basarse en la velocidad de codificación asociada con la aplicación de cada uno de los filtros al bloque actual. La velocidad de codificación puede ser proporcional a la cantidad de datos residuales correspondiente al bloque actual cuando se utiliza un filtro suavizante. Cuanto mayor sea la cantidad de datos residuales, mayor será la velocidad de codificación para el bloque actual. El filtro suavizante que da como resultado una menor cantidad de datos residuales y, por lo tanto, una mejor velocidad de codificación, se puede considerar el filtro que ofrece mejores resultados.
[74] En otro ejemplo, la evaluación de la aplicación de diferentes filtros suavizantes puede basarse en la cantidad de distorsión asociada con la aplicación de cada uno de los filtros al bloque actual. En un ejemplo, la cantidad de distorsión puede determinarse basándose en un valor de error cuadrático medio entre el bloque de predicción y el bloque original. El bloque de predicción puede ser el resultado del uso de muestras de predicción obtenidas al aplicar un filtro suavizante seleccionado. El filtro suavizante que da como resultado un valor de error cuadrático medio menor y, por lo tanto, menos distorsión, se puede considerar el filtro que ofrece mejores resultados.
[75] En un ejemplo, el codificador de vídeo 20 puede comparar los resultados de la aplicación del filtro especificado por la tabla de filtros más probables mostrada anteriormente con filtros especificados por una tabla de segundos filtros más probables, que se muestra a continuación, que se representa en pseudocódigo:
// tabla de segundos filtros más probables
[76] En algunos ejemplos, se pueden usar más tablas para especificar otros filtros. En el ejemplo simple de usar una tabla de filtros más probables y una tabla de segundos filtros más probables, las entradas correspondientes a filtros distintos de cero, por ejemplo, los filtros 1 y 2, en la primera tabla pueden reemplazarse con el filtro 0 en la segunda tabla, y viceversa. De esta manera, la comparación entre el filtro más probable y el segundo filtro más probable es entre filtrado y no filtrado. Si la opción de filtrado que produce el mejor resultado es la especificada en la tabla de filtros más probables, entonces tal vez no sea necesario que el codificador de vídeo 20 indique nada, ya que el descodificador supone que se usa el filtro más probable si no se especifica lo contrario. Si la opción de filtrado que produce el mejor resultado es la especificada en la tabla de segundos filtros más probables, el codificador de vídeo 20 puede indicar un modo de filtrado para indicar que se debe aplicar un filtro distinto del filtro más probable durante la descodificación. Las tablas de filtros pueden almacenarse en una unidad de memoria (no mostrada) asociada con el codificador de vídeo 20, y accederse a ellas mediante la unidad de inter-predicción 46 durante la codificación.
5
10
15
20
25
30
35
40
45
50
55
[77] La indicación del modo de filtrado se puede hacer de varias maneras. En un ejemplo, el codificador de vídeo 20 puede usar un indicador de modo de filtrado para indicar si se usa un filtrado distinto de lo que se especifica en la tabla de filtros más probables para un cierto bloque. En ejemplos donde se utilizan más de dos tablas de filtros, por ejemplo, hay una tabla de terceros (o más) filtros más probables, el codificador de vídeo 20 puede indicar cuál de las tablas de segundos o terceros (o más) filtros más probables se usa para una cierto bloque. En otro ejemplo más, la indicación puede basarse en una combinación de información contextual, tal como, el tamaño de bloque del bloque actual, el modo de predicción y el modo de filtrado de bloques contiguos. La información contextual se puede usar para crear una tabla VLC o una tabla CABAC que codifique por entropía una señal en cuanto a si se utilizó el filtrado para un bloque actual. De esta manera, el descodificador puede determinar, basándose en la información contextual, si el filtrado debe o no usarse con un bloque, y usar la tabla VLC o la información CABAC para determinar el modo de filtrado.
[78] En otros ejemplos, se pueden utilizar otras técnicas para determinar si se aplica un filtro suavizante. Las técnicas de filtrado suavizante de esta divulgación pueden proporcionar una decisión de modo de filtrado intra- suavizante (ya sea para filtrar o no) basándose en estadísticas de una métrica de distorsión de velocidad de bits como una función de la combinación de modo de intra-predicción y tamaño de bloque.
[79] Con referencia de nuevo a la FIG. 2B, ilustra los modos de intra-predicción y las combinaciones de tamaño de PU, que son candidatas para el filtrado intra-suavizante basándose en una comparación entre las estadísticas de los modos intra-suavizantes filtrados y no filtrados. Por ejemplo, las estadísticas indican que las direcciones de predicción verticales (modo 0) y horizontales (modo 1) son candidatas para el filtrado intra- suavizante para el tamaño de PU 32x32 y las direcciones de intra-predicción diagonal principal (modos 3, 6, 9) son candidatas para filtrado intra-suavizante para tamaños de PU 32x32, 16x16, 8x8 y 4x4. Las estadísticas también pueden indicar que las direcciones de intra-predicción entre las direcciones de intra-predicción horizontales o verticales y las direcciones diagonales principales son candidatas para el filtrado intra-suavizante en tamaños de PU progresivamente más pequeños. Para el modo DC, las estadísticas pueden indicar que el modo 2, el modo DC, no es candidato para el filtrado intra-suavizante, mientras que el modo planar (modo 34) es un candidato para el filtrado intra-suavizante en ciertos tamaños de PU, por ejemplo, 8x8, 16x16 y 32x32.
[80] Aunque las estadísticas pueden indicar qué modos de intra-predicción y qué tamaños de PU son candidatos para el filtrado intra-suavizante, los experimentos de eficiencia de codificación pueden demostrar que la asignación del candidato de filtrado intra-suavizante mostrado en la FIG. 2B puede no ser óptima en un sentido de distorsión de velocidad. Por lo tanto, los candidatos intra-suavizantes de la FIG. 2B pueden ser un "patrón de plantilla" para obtener "patrones de subconjuntos" con mayor eficiencia de codificación. En un ejemplo, un "patrón de subconjunto" se define seleccionando candidatos para el filtrado intra-suavizante del "patrón de plantilla" por modo de intra-predicción y por tamaño de PU, o de forma alternativa sin filtrado intra-suavizante para cualquier tamaño de PU correspondiente a un determinado modo de intra-predicción . Las TABLAS 4-7 a continuación proporcionan algunos ejemplos de patrones de subconjuntos. Las TABLAS 4-7 pueden denominarse en general tablas de decisión de filtrado.
[81] En cada una de las TABLAS 4-7, "1" puede indicar que el filtrado intra-suavizante se aplica al modo de intra-predicción y tamaño de bloque correspondiente. Por lo tanto, "1" en una posición particular de columna y fila indica que se aplica intra-suavizado en el caso de un modo de intra-predicción y un tamaño de bloque que se asignan a esas posiciones de columna y fila, respectivamente. En un ejemplo, la TABLA 4 puede corresponder al "patrón de plantilla", y cada una de las TABLAS 5-7 puede corresponder a un "patrón de subconjunto" diferente. En otro ejemplo, la TABLA 7 puede corresponder al "patrón de plantilla", y cada una de las TABLAS 4-6 puede corresponder a un "patrón de subconjunto" diferente. El "patrón de plantilla" puede corresponder a la FIG. 2B, y se ilustra mediante la TABLA 4, por ejemplo, que también muestra un tamaño de PU de 64x64 para la generalización. Las TABLAS 5-7 pueden representar "patrones de subconjuntos". En un ejemplo de esta divulgación, la TABLA 7 puede representar el "patrón de subconjuntos" que es adecuado para secuencias de vídeo generales basándose en experimentos de eficiencia de codificación.
- Modo PU
- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
- 4x4
- 1 1 1 1 1 1 1
- 8x8
- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 16x16
- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 32x32
- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 64x64
- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
TABLA 4
5
10
15
20
25
30
35
40
- Modo PU
- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
- 4x4
- 8x8
- 1 1 1 1 1 1 1 1 1 1 1 1
- 16x16
- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 32x32
- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 64x64
TABLA 5
- Modo PU
- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
- 4x4
- 8x8
- 1 1 1 1 1 1 1 1
- 16x16
- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 32x32
- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 64x64
TABLA 6
- Modo PU
- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
- 4x4
- 8x8
- 1 1 1 1
- 16x16
- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 32x32
- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 64x64
TABLA 7
[82] Después de que la unidad de predicción 41 genere el bloque predictivo o PU para el bloque de vídeo actual (inter- o intra-codificado), el codificador de vídeo 20 forma un bloque de vídeo residual restando el bloque predictivo del bloque de vídeo actual. El sumador 50 representa el componente o los componentes que realizan esta operación de resta. La unidad de transformación 52 puede formar una o más unidades de transformación (TU) a partir del bloque residual. La unidad de transformación 52 aplica una transformación, tal como una transformación discreta del coseno (DCT) o una transformación conceptualmente similar, a la TU, produciendo un bloque de vídeo que comprende coeficientes de transformación residuales. La transformación puede convertir el bloque residual, desde un dominio de píxeles a un dominio de transformaciones, tal como un dominio de frecuencias.
[83] La unidad de transformación 52 puede llevar a cabo otras transformaciones, tales como las definidas por el HM, que son conceptualmente similares a la DCT. También podrían usarse transformaciones de ondículas, transformaciones de enteros, transformaciones de sub-bandas u otros tipos de transformaciones. En cualquier caso, la unidad de transformación 52 aplica la transformación al bloque residual, produciendo 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.
[84] La unidad de transformación 52 puede enviar los coeficientes de transformación resultantes a la unidad de cuantificación 54. La unidad de cuantificación 54 cuantifica los coeficientes de transformación para reducir adicionalmente la velocidad de bits. El proceso de cuantificación puede reducir la profundidad de bits asociada a algunos o a la totalidad de los coeficientes. El grado de cuantificación puede modificarse ajustando un parámetro de cuantificación. En algunos ejemplos, la unidad de cuantificación 54 puede realizar, a continuación, un escaneado de la matriz que incluye los coeficientes de transformación cuantificados. De forma alternativa, la unidad de codificación por entropía 56 puede llevar a cabo el escaneado.
[85] Tras la cuantificación, la unidad de codificación por entropía 56 realiza la codificación por entropía de los coeficientes de transformación cuantificados. Por ejemplo, la unidad de codificación por entropía 56 puede realizar codificación de longitud variable adaptativa al contexto (CAVLC), codificación aritmética binaria adaptativa al contexto (CABAC) u otra técnica de codificación por entropía. Tras la codificación por entropía realizada por la unidad de codificación por entropía 56, el vídeo codificado puede transmitirse a otro dispositivo (por ejemplo, el descodificador de vídeo 30) o archivarse para su posterior transmisión o recuperación.
[86] En algunos casos, la unidad de codificación por entropía 56 u otra unidad de codificador de vídeo 20 puede estar configurada para realizar otras funciones de codificación, además de la codificación por entropía.
5
10
15
20
25
30
35
40
45
50
55
60
65
Por ejemplo, la unidad de codificación por entropía 56 puede estar configurada para determinar los valores CBP para los macrobloques y divisiones. Además, en algunos casos, la unidad de codificación por entropía 56 puede realizar una codificación de longitud de ejecución de los coeficientes en un macrobloque o división del mismo. En particular, la unidad de codificación por entropía 56 puede aplicar un escaneado en zigzag u otro patrón de escaneado para escanear los coeficientes de transformación en un macrobloque o división y codificar secuencias de ceros para una mayor compresión. La unidad de codificación por entropía 56 también puede construir la información de cabecera que incluye los elementos sintácticos adecuados para la transmisión en el flujo de bits de vídeo codificado. Para codificar por entropía los elementos sintácticos, la unidad de codificación por entropía 56 puede realizar CABAC y binarizar los elementos sintácticos en uno o más bits binarios basándose en un modelo de contexto. La unidad de codificación por entropía también puede realizar CAVLC y codificar los elementos sintácticos como palabras de código de acuerdo con las probabilidades basándose en el contexto.
[87] De acuerdo con las técnicas de esta divulgación, la unidad de codificación por entropía 56 puede configurarse para codificar una indicación de que se aplica un filtro suavizante distinto del filtro más probable a las muestras de predicción durante la codificación intra-predictiva. Cuando la decisión de filtrado para un bloque es la misma que la especificada en la tabla de filtros más probables, el codificador de vídeo 20 tal vez no envíe una indicación al descodificador, y por lo tanto, tal vez no sea necesario codificar información adicional. Cuando se necesita una indicación, por ejemplo, cuando la decisión de filtrado para un bloque se especifica en la tabla de segundos (o más) filtros más probables, el codificador de vídeo 20 puede codificar una indicación con respecto al filtrado. Adicionalmente, el codificador de vídeo 20 puede codificar el modo de intra-predicción usado en la codificación del bloque. La unidad de codificación por entropía 56 puede codificar la indicación (por ejemplo, el modo de intra-predicción y la decisión de filtrado, cuando corresponda) usando CABAC. Además, la unidad de codificación por entropía 56 puede usar información de contexto para realizar CABAC para codificar la indicación que indica el modo de intra-predicción para un bloque y la información de filtrado cuando el segundo (o más) filtro más probable se aplica a las muestras de predicción.
[88] La unidad de cuantificación inversa 58 y la unidad de transformación inversa 60 aplican una cuantificación inversa y una transformación inversa, respectivamente, para reconstruir el bloque residual en el dominio de píxel, para su posterior uso como un bloque de referencia de una trama 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 del almacén 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 y usarlos en la estimación de movimiento. El sumador 62 añade el bloque residual reconstruido al bloque de predicción compensado por movimiento producido por la unidad de compensación de movimiento 44 para producir un bloque de vídeo reconstruido para su almacenamiento en el almacén de tramas de referencia 64. El bloque de vídeo reconstruido puede ser usado 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-predecir un bloque en una trama de vídeo posterior.
[89] La FIG. 5 es un diagrama de bloques que ilustra un ejemplo del descodificador de vídeo 30, que descodifica una secuencia de vídeo codificada. En el ejemplo de la FIG. 5, el descodificador de vídeo 30 incluye una unidad de descodificación por entropía 70, una unidad de predicción 71, una unidad de cuantificación inversa 76, una unidad de transformación inversa 78, un almacén de tramas de referencia 82 y un sumador 80. La unidad de predicción 71 incluye la unidad de compensación de movimiento 72 y una unidad de intra-predicción 74. En algunos ejemplos, el descodificador de vídeo 30 puede llevar a cabo una pasada de descodificación en general recíproca a la pasada de codificación descrita con respecto al codificador de vídeo 20 (FIG. 4). La unidad de predicción 71 puede generar datos de predicción basándose en información recibida desde la unidad de descodificación por entropía 70. Cuando se indica codificación inter-predictiva, 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 descodificación por entropía 70. Cuando se indica codificación intra-predictiva, la unidad de intra- predicción 74 puede generar datos de predicción para un bloque actual de una trama actual basándose en un modo de intra-predicción indicado y datos de bloques previamente descodificados de la trama actual.
[90] El descodificador de vídeo 30 puede recibir un flujo de bits de vídeo codificado, por ejemplo, a través de una red, radiodifusión o desde un medio físico. El flujo de bits codificado puede incluir datos de vídeo codificados por entropía. La unidad de descodificación por entropía 70 del descodificador de vídeo 30 realiza la descodificación por entropía del flujo de bits para generar coeficientes cuantificados, vectores de movimiento y datos de predicción. La unidad de descodificación por entropía 70 remite los vectores de movimiento y datos de predicción a la unidad de predicción 71.
[91] De acuerdo con las técnicas de esta divulgación, los datos de vídeo codificados por entropía pueden incluir una indicación codificada por entropía del modo de intra-predicción usado para codificar el bloque actual. Los datos de vídeo codificados por entropía también pueden incluir una indicación de filtrado codificada por entropía, que indica una decisión de filtro suavizante. En un ejemplo, la indicación de filtrado puede usarse para indicar que la tabla de filtros más probables no se usó para seleccionar el filtro suavizante durante la codificación intra-predictiva del bloque actual. Cuando los datos de vídeo codificados por entropía no incluyen una indicación
5
10
15
20
25
30
35
40
45
50
55
60
65
de filtrado, la no indicación implica que la tabla de filtros más probables se usó para seleccionar el filtro suavizante durante la codificación intra-predictiva del bloque actual. Los datos de vídeo codificados por entropía también pueden incluir información de tamaño de bloque, que la unidad de descodificación por entropía 70 puede usar junto con el modo de intra-predicción como información de contexto cuando se descodifica por entropía la indicación de filtrado para el bloque codificado intra-predictivo. De esta manera, la unidad de descodificación por entropía 70 puede descodificar la indicación de filtrado (por ejemplo, si se aplica o no un filtro suavizante) y enviar la indicación a la unidad de intra-predicción 74.
[92] La unidad de compensación de movimiento 72 puede usar vectores de movimiento recibidos en el flujo de bits para identificar un bloque de predicción en tramas de referencia del almacén de tramas de referencia 82. La unidad de intra-predicción 74 puede usar modos de intra-predicción recibidos en el flujo de bits para formar un bloque de predicción a partir de bloques espacialmente adyacentes. La unidad de cuantificación inversa 76 cuantifica de manera inversa, es decir, descuantifica, los coeficientes de bloque cuantificados proporcionados en el flujo de bits y descodificados por la unidad de descodificación por entropía 70. El proceso de cuantificación inversa puede incluir un proceso convencional, por ejemplo, como el definido por la norma de descodificación H.264. El proceso de cuantificación inversa también puede incluir el uso de un parámetro de cuantificación QPY calculado por un codificador de vídeo 20 para cada bloque de vídeo o CU con el fin de determinar un grado de cuantificación y, asimismo, un grado de cuantificación inversa que debería aplicarse. 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, con el fin de producir bloques residuales en el dominio de píxeles.
[93] 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 del bloque de vídeo para calcular valores interpolados para fracciones de píxeles de un bloque de referencia. 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 producir bloques predictivos.
[94] La unidad de compensación de movimiento 72 usa parte de la información sintáctica para determinar tamaños de LCU y CU usados para codificar trama(s) y/o fragmento(s) de la secuencia de vídeo codificada, información de división que describe cómo cada macrobloque de una trama de la secuencia de vídeo codificada está dividida, modos que indican cómo cada división está codificada, una o más tramas de referencia (y listas de tramas de referencia) para cada CU inter-codificada y otra información para descodificar la secuencia de vídeo codificada.
[95] La unidad de intra-predicción 74 también puede determinar si aplicar o no un filtro suavizante a las muestras de predicción cuando se realiza un bloque de predicción. La unidad de intra-predicción 74 puede realizar la determinación de si aplicar o no el filtro suavizante basándose en el tamaño del bloque y el modo de intra-predicción correspondiente. Si no se indica ninguna indicación de filtrado, la unidad de intra-predicción 74 puede determinar el filtrado basándose en lo que se especifica en la tabla de filtros más probables (mostrada anteriormente) para la combinación de modo de intra-predicción y tamaño de bloque. Si se indica una indicación de filtrado, la unidad de intra-predicción 74 puede determinar que la decisión de filtrado no se basa en la tabla de filtros más probables y puede determinar el filtrado basándose en lo especificado en la tabla de segundos filtros más probables (mostrada anteriormente) para la combinación de modo de intra-predicción y tamaño de bloque. En un ejemplo, se pueden proporcionar más de una tabla de filtros adicional, por ejemplo, la segunda, tercera o más tablas de filtros más probables. En este ejemplo, la indicación de filtrado también puede indicar cuál de las tablas se debe usar para determinar qué filtro suavizante aplicar. Las tablas de filtros pueden almacenarse en una unidad de memoria (no mostrada) en el descodificador de vídeo 30. La unidad de intra-predicción 74 puede acceder a las tablas de filtros desde la memoria durante la descodificación.
[96] El sumador 80 suma los bloques residuales a los bloques de predicción correspondientes generados por la unidad de compensación de movimiento 72 o por la unidad de intra-predicción 74 para formar bloques descodificados. 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. A continuación, los bloques de vídeo descodificados se almacenan en el almacén de tramas de referencia 82, que proporciona bloques de referencia para la compensación de movimiento posterior y también produce vídeo descodificado para su presentación en un dispositivo de visualización (como el dispositivo de visualización 32 de la FIG. 1).
[97] La FIG. 6 es un diagrama de flujo que ilustra un ejemplo de procedimiento para la codificación de datos de vídeo de acuerdo con las técnicas de esta divulgación. Aunque se describen con respecto al codificador de vídeo 20 (FIGs. 1 y 4) como ejemplo, se debe entender que las técnicas de la FIG. 6 pueden ser realizadas por cualquier unidad de codificación de vídeo. Además, los pasos ilustrados en la FIG. 6 se puede realizar en un orden diferente, se pueden omitir ciertos pasos, y se pueden agregar pasos adicionales, sin apartarse de las técnicas de esta divulgación.
5
10
15
20
25
30
35
40
45
50
55
60
65
[98] El codificador de vídeo 20 puede recibir un bloque (por ejemplo, una CU) de datos de vídeo a codificar. Cuando el bloque actual se designa como un bloque a codificar usando codificación intra-predictiva, el codificador de vídeo 20 puede determinar si aplicar o no un filtro suavizante a las muestras de predicción y determinar el filtro suavizante si se va a aplicar uno. En algunos casos, se puede aplicar un filtro suavizante a las muestras de predicción, o los predictores, que se usan para predecir un bloque en el misma trama en la codificación intra-predictiva. La aplicación del filtro suavizante en algunos casos proporciona una predicción más precisa y minimiza el bloqueo en la trama predicha reconstruida.
[99] El codificador de vídeo 20 puede determinar si se opera en codificación intra-predictiva dependiente de modo fijo o codificación intra-predictiva dependiente de modo adaptativo (602). En un ejemplo, la determinación puede realizarse a nivel de secuencia o imagen basándose en el contenido, o basándose en el tamaño del bloque. Por ejemplo, para bloques grandes, se puede usar la codificación intra-predictiva dependiente del modo adaptativo, y para los bloques pequeños, se puede usar la codificación intra-predictiva dependiente del modo fijo. Como resultado, cuando se utilizan bloques grandes, hay menos bloques para codificar dentro de una imagen, por lo tanto, una cantidad menor de información de sobrecarga, que cuando se usan bloques pequeños. Sin embargo, la codificación intra-predictiva dependiente de modo fijo agrega poca o ninguna información de sobrecarga adicional, mientras que la codificación intra-predictiva dependiente de modo adaptativo requiere información adicional de sobrecarga. De esta manera, el modo seleccionado puede proporcionar una compensación entre la información de sobrecarga y el rendimiento.
[100] Si el codificador de vídeo 20 va a funcionar en codificación intra-predictiva dependiente de modo fijo, el codificador de vídeo 20 puede determinar si aplicar un filtro suavizante basándose en un filtro especificado en una tabla de filtros, por ejemplo, la tabla de filtros más probables, seleccionada basándose en la combinación de modo de intra-predicción y tamaño de bloque y aplicar el filtro especificado (604).
[101] En un ejemplo, para cada uno de los modos de intra-predicción disponibles, por ejemplo, los 35 modos definidos por el HM, si se aplica o no un filtro suavizante depende del tamaño del bloque. La TABLA 3 anterior muestra las combinaciones de modo de intra-predicción y tamaño de bloque para las que se aplica un filtro suavizante. Se puede generar una tabla de filtros más probables (mostrada arriba) basándose en las combinaciones de modo de intra-predicción y tamaño de bloque. Cada una de las entradas de la tabla puede indicar un filtro que se debe aplicar para el índice correspondiente, donde el índice está asociado con un tamaño de bloque y un modo de intra-predicción. Cada uno de los filtros especificados en la tabla puede ser de un conjunto de filtros, donde el conjunto de filtros puede variar de un flujo a otro, un grupo de tramas a otro, una trama o un fragmento a otro, y así sucesivamente. Para simplificar, se puede identificar un filtro de todo paso para las entradas donde no se necesita aplicar un filtro suavizante.
[102] Si el codificador de vídeo 20 va a funcionar en una codificación intra-predictiva dependiente del modo adaptativo, el codificador de vídeo 20 puede determinar si el tamaño del bloque es igual o superior a un tamaño de bloque umbral, por ejemplo, 64x64 (606). Si el tamaño de bloque es menor que el tamaño de bloque de umbral, entonces el codificador de vídeo 20 puede aplicar el filtro especificado por la tabla de filtros más probables y determinar si aplica o no un filtro suavizante basándose en el tamaño de bloque y el modo de intra- predicción (604). Si el tamaño del bloque es igual o mayor que el tamaño del bloque umbral, el codificador de vídeo 20 puede determinar si aplicar un filtro de acuerdo con la tabla de filtros más probables produce mejores resultados que aplicar un filtro de acuerdo con una tabla de segundos filtros más probables (608). Por lo tanto, el codificador de vídeo 20 puede aplicar el filtro correspondiente de la primera tabla al bloque, aplicar el filtro correspondiente de la segunda tabla al bloque y evaluar los resultados de aplicar los dos filtros comparándolos entre sí para determinar cuál produce mejores resultados .
[103] En un ejemplo, para cada combinación de modo de intra-predicción y tamaño de bloque, aplicar un filtro de acuerdo con una de las tablas puede ser lo mismo que no aplicar ningún filtro en absoluto, o en este ejemplo, aplicar un filtro de todo paso. Por lo tanto, en realidad, la comparación de aplicar un filtro de acuerdo con la tabla de filtros más probables y aplicar un filtro de acuerdo con la tabla de segundos filtros más probables puede ser lo mismo que comparar los resultados de aplicar un filtro o no aplicar un filtro.
[104] Si aplicar el filtro de acuerdo con la tabla de filtros más probables produce los mejores resultados, el codificador de vídeo 20 puede determinar y aplicar el filtro especificado por la tabla de filtros más probables basándose en el tamaño de bloque y la combinación de modo de intra-predicción y tamaño de bloque asociada con el bloque actual (604 ) Si aplicar el filtro de acuerdo con la tabla de segundos filtros más probables produce los mejores resultados, el codificador de vídeo 20 puede determinar y aplicar el filtro especificado por la tabla de segundos filtros más probables basándose en la combinación de modo de intra-predicción y tamaño de bloque asociada con el bloque actual (610). En algunos ejemplos, cuando hay más de 2 tablas de filtros más probables, por ejemplo, una tercera o más, se puede comparar la comparación entre los resultados de aplicar todos los filtros posibles para determinar qué tabla de filtros usar para seleccionar un filtro suavizante para aplicar a las muestras de predicción. En algunos ejemplos, puede usarse una pluralidad de tablas de decisión de filtrado, por ejemplo, las TABLAS 4-7 anteriores, donde una tabla puede considerarse el "patrón de plantilla" y las tablas
5
10
15
20
25
30
35
40
45
50
55
60
65
restantes pueden considerarse tablas alternativas o "patrones de subconjuntos" que proporcionan una opción de filtrado alternativa, como se describe anteriormente.
[105] A continuación, el codificador de vídeo 20 puede codificar el bloque actual aplicando el filtro suavizante seleccionado a las muestras de predicción y realizando la codificación intra-predictiva de acuerdo con el modo de intra-predicción asociado con el bloque actual (612). El codificador de vídeo 20 también puede codificar elementos sintácticos asociados con la codificación intra-predictiva con el bloque actual (614), por ejemplo, uno o más elementos sintácticos que identifican el modo de intra-predicción. Otros ejemplos de elementos sintácticos asociados con la codificación intra-predictiva que pueden codificarse con un bloque pueden ser el tipo de división asociado con el bloque, tamaño de PU, tamaño de TU, CBP y coeficientes cuantificados. Si la decisión del filtro suavizante aplicado no se basó en la tabla de filtros más probables o el "patrón de plantilla", por ejemplo, la decisión de filtrado se hizo usando la tabla de segundos filtros más probables u otros "patrones de subconjunto", el codificador de vídeo 20 también puede codificar elementos sintácticos que indican que la tabla de filtros más probables no se usó para indicar que el bloque no estaba codificado usando codificación intra-predictiva dependiente de modo fijo. Por ejemplo, si la TABLA 7 anterior es el "patrón de plantilla" y las TABLAS 4-6 son los "patrones de subconjunto", el codificador de vídeo puede codificar elementos sintácticos indicativos de la tabla "patrón de subconjunto" utilizada, cuando se usa uno en lugar de la tabla "patrón de plantilla". A continuación, el codificador de vídeo 20 puede transmitir el bloque de vídeo codificado, dentro de una trama de vídeo codificada, y con los elementos sintácticos a un descodificador de vídeo (616).
[106] La FIG. 7 es un diagrama de flujo que ilustra un ejemplo de procedimiento de descodificación de datos de vídeo de acuerdo con las técnicas de esta divulgación. Aunque se describen con respecto al descodificador de vídeo 30 (FIGs. 1 y 5) como ejemplo, se debe entender que las técnicas de la FIG. 7 pueden ser realizadas por cualquier unidad de codificación de vídeo. Además, los pasos ilustrados en la FIG. 7 se puede realizar en un orden diferente, se pueden omitir ciertos pasos, y se pueden agregar pasos adicionales, sin apartarse de las técnicas de esta divulgación.
[107] El descodificador de vídeo 30 puede recibir un bloque codificado (por ejemplo, una CU) de datos de vídeo a descodificar (702). El descodificador de vídeo 30 puede descodificar el bloque de vídeo codificado y los elementos sintácticos para determinar que el bloque se codifica usando codificación intra-predictiva (704). Basándose en los elementos sintácticos, el descodificador de vídeo 30 también puede determinar el modo de intra-predicción del bloque (706). El descodificador de vídeo 30 puede determinar si los elementos sintácticos incluyen una indicación de filtrado (708).
[108] Si no hay indicación de filtrado, el descodificador de vídeo 30 puede a continuación descodificar el bloque usando codificación intra-predictiva, y aplicar una opción de filtro suavizante como se especifica mediante la tabla de filtros más probables (710). Si hay una indicación de filtrado, el descodificador de vídeo 30 puede a continuación descodificar el bloque usando codificación intra-predictiva, y aplicando una opción de filtro suavizante como se especifica mediante la tabla de segundos filtros más probables (712). En cualquier caso, ya sea usando la tabla de filtros más probables o la tabla de segundos filtros más probables, el descodificador de vídeo 30 puede determinar el filtro basándose en la combinación de modo de intra-predicción y tamaño de bloque asociada con el bloque actual. En algunos ejemplos, múltiples tablas pueden definir segundos (o más) filtros probables o puede haber múltiples filtros de "patrones de subconjuntos", y la indicación de filtrado puede indicar la tabla de "patrones de subconjuntos" usada de forma alternativa a la tabla de filtros más probables o la tabla "patrón de plantilla".
[109] De esta manera, el descodificador de vídeo 30 tal vez no necesite hacer ninguna determinación con respecto a qué opciones de filtrado proporcionan los mejores resultados. Si el codificador no indica ninguna indicación, entonces el descodificador de vídeo 30 supone que se utilizó la tabla de filtros más probables o la tabla "patrón de plantilla"; de lo contrario, cualquier tipo de indicación indica que se utilizó la tabla de segundos filtros más probables. En algunos ejemplos, donde se usan más de dos tablas de filtros, por ejemplo, la tabla de terceros (o más) filtros más probables o "patrones de subconjuntos" , la indicación de filtrado puede identificar cuál de las tablas adicionales se utilizó para seleccionar un filtro suavizante.
[110] Como se analizó anteriormente, el filtrado intra-suavizante puede utilizarse para tamaños de PU grandes como se ilustra en la FIG. 2B y la TABLA 4, por ejemplo. El filtrado intra-suavizante también puede utilizarse para la mayoría de los tamaños de PU para modos de intra-predicción correspondientes a direcciones diagonales verdaderas (es decir, +/- 45 y +/- 135 grados) o modos 3, 6, 9, mientras que el filtrado intra- suavizante no puede utilizarse para tamaños de PU más pequeños en el caso de las direcciones vertical (modo 0) y horizontal (modo 1). Para las direcciones de intra-predicción entre las direcciones diagonales y respectivamente las direcciones horizontales o verticales, el filtrado intra-predictivo puede utilizarse con menos probabilidad para tamaños de PU pequeños cuando la dirección está cerca de las direcciones horizontales o verticales, mientras que es más probable que se utilice para tamaños de PU pequeños cuando la dirección está cerca de las direcciones diagonales, como se ilustra en la FIG. 2B y la TABLA 4. En un ejemplo, un codificador y un descodificador de acuerdo con las técnicas de esta divulgación pueden aplicar un filtrado intra-suavizante de acuerdo con los "patrones de subconjuntos" especificados por la TABLA 7, mostrada anteriormente. En un
5
10
15
20
25
30
35
40
45
50
55
60
ejemplo, para el modo DC (modo 2), el filtrado intra-suavizante no se puede utilizar para ningún tamaño de PU. Además, para el modo planar (modo 34), se puede utilizar el filtrado intra-suavizante con tamaños de PU más grandes.
[111] El codificador y el descodificador pueden aplicar un filtrado intra-suavizante de acuerdo con un "patrón de subconjunto" obtenido a partir del "patrón de plantilla" (TABLA 4), que especifica para cada combinación de modo de intra-predicción y tamaño de PU si se realiza o no un filtrado intra-suavizante. Puede obtenerse un "patrón de subconjunto" seleccionando candidatos para el filtrado intra-suavizante a partir del "patrón de plantilla" por modo de intra-predicción y por tamaño de Pu, o de forma alternativa sin filtrado intra-suavizante para cualquier tamaño de PU correspondiente a ese modo de intra-predicción. Un "patrón de subconjunto" obtenido a partir del "patrón de plantilla" puede tener ciertas características tales como, por ejemplo, que para cada modo de intra-predicción, no se aplica el filtrado intra-suavizante al menos para uno de los tamaños de PU, por lo que el codificador tiene la opción de realizar intra-predicción sin intra-suavizado. El "patrón de subconjunto" también puede tener ciertas características tales como, por ejemplo, para cada modo de intra-predicción, si el filtrado intra-suavizante no se aplica a cierto tamaño de Pu, el filtrado intra-suavizante no se puede aplicar a tamaños de PU más pequeños para ese modo de intra-predicción
[112] El cálculo de las muestras de predicción para cada combinación de modo de intra-predicción y tamaño de PU puede estar sujeto a reglas de redondeo, como redondeo hacia abajo, redondeo hacia arriba o redondeo al entero más cercano. Las reglas de redondeo pueden modificarse en el codificador y descodificador basándose en la ubicación de la muestra de predicción de una manera determinística, por ejemplo, basándose en el modo de intra-predicción y el tamaño de PU, tales como muestras de predicción intercaladas con diferentes reglas de redondeo para aumentar la eficacia de codificación. En el ejemplo del filtrado intra-suavizante de las muestras de referencia para la intra-predicción, el filtrado intra-suavizante puede omitirse para determinadas ubicaciones de muestra de referencia, por ejemplo, la muestra de referencia de la esquina superior izquierda u otras ubicaciones de muestra de referencia de una manera determinista (por ejemplo, basándose en el modo de intra-predicción y tamaño de PU) para aumentar la eficiencia de codificación.
[113] En un ejemplo, el codificador y/o descodificador puede almacenar un "patrón de subconjunto" como tabla de consulta (LUT) y acceder a esta LUT para determinar si aplicar o no filtrado intra-suavizante para una combinación de modo de intra-predicción y tamaño de PU asociada con el bloque actual. En otro ejemplo, el codificador y/o descodificador puede representar un "patrón de subconjunto" mediante un conjunto de condiciones usadas para determinar si se aplica un filtrado intra-suavizante para las entradas: Tamaño de PU y modo de intra-predicción. En otro ejemplo, el codificador y/o descodificador puede representar un "patrón de subconjunto" mediante una o más ecuaciones matemáticas, que calculan si aplicar filtrado intra-suavizante para las entradas: Tamaño de PU y modo de intra-predicción. En otro ejemplo, el codificador y/o descodificador puede representar un "patrón de subconjunto" mediante una combinación de LUT, conjunto de condiciones y/o conjunto de ecuaciones matemáticas.
[114] En un ejemplo, el "patrón de plantilla" (por ejemplo, TABLA 4) o "patrones de subconjuntos" (por ejemplo, TABLAS 5-7) se puede expandir para incluir múltiples tipos de filtros intra-suavizantes que se pueden usar para cada combinación de modo de intra-predicción y tamaño de PU. Por ejemplo, para cada combinación donde se aplica el filtrado intra-suavizante, el número en la tabla puede indicar el tipo de filtro que se utilizará. En un ejemplo, dos filtros intra-suavizantes pueden definirse y representarse mediante "1" y "2". Una entrada en una tabla correspondiente a una determinada posición de fila / columna puede no tener entrada, es decir, no se aplica ningún filtro, o un "1" o un "2" para indicar que se aplica filtrado intra-suavizante y se usa el filtro intra-suavizante, es decir, el filtro "1" o el filtro "2".
[115] En algunos ejemplos, HEVC puede soportar PU de intra-predicción a corta distancia (SDIP), que pueden tener varios tamaños rectangulares por unidad de codificación (CU). En un ejemplo, las técnicas de esta divulgación pueden ser aplicables a PU cuadradas y rectangulares tales como las usadas en intra-predicción a corta distancia (SDIP). La TABLA 8 a continuación ilustra ejemplos de tamaños de PU rectangulares (en píxeles) por tamaño de CU de SDIP.
TABLA 8
- Tamaño de CU
- Tamaño de PU posible
- CU 32X32
- 8X32, 32X8
- CU 16X16
- 4X16, 16X4, 1 X16,16X1
- CU 8X8
- 2X8, 8X2
[116] Además de las técnicas analizadas anteriormente, las técnicas de esta divulgación pueden incluir técnicas para mejorar la aplicación de MDIS a divisiones SDIP rectangulares. Por ejemplo, la aplicación de filtrado intra-suavizante puede depender de la anchura y/o altura de las divisiones SDIP rectangulares. Se pueden emplear técnicas para determinar las dimensiones de la división SDIP, o reglas de determinación de
5
10
15
20
25
30
35
40
45
50
55
60
65
dimensión, para determinar una dimensión o las dimensiones de la división. Por ejemplo, tales técnicas para determinar una dimensión de la división SDIP pueden incluir determinar una dimensión mínima o máxima de la división, ecuaciones matemáticas que calculan las dimensiones de la división basándose en otras variables conocidas asociadas con la división, o comprobaciones condicionales que pueden aplicarse a la anchura y altura de la división SDIP para determinar las dimensiones de la división. En un ejemplo, la dimensión determinada resultante de la división se puede usar para determinar si se aplica o no el filtrado intra-suavizante, por ejemplo, usando una de las tablas de decisión de filtrado descritas anteriormente. Por ejemplo, las técnicas pueden utilizar la dimensión para determinar si filtrar o no. Si en un ejemplo ilustrativo, la dimensión mínima es de 8 píxeles, la decisión de filtrado puede determinarse basándose en la entrada de la tabla asociada con los bloques de 32x32 y el modo de intra-predicción apropiado asociado con la división que se está procesando actualmente.
[117] En un ejemplo, aplicar el filtrado intra-suavizante puede basarse en la dirección de intra-predicción asociada con la división SDIP y/o la anchura y/o altura de la división SDIP. Por ejemplo, cuando se elige una dirección de predicción vertical, la altura de la división puede usarse en una de las tablas de decisión de filtrado descritas anteriormente, y en el caso de una dirección horizontal, la anchura puede usarse en una de las tablas de decisión de filtrado descritas anteriormente . En otro ejemplo, las direcciones horizontal, vertical y diagonal se pueden considerar por separado para determinar la dimensión a utilizar.
[118] En un ejemplo, cuando se utiliza el modo planar para divisiones SDIP, se pueden utilizar técnicas de determinación de dimensión, como se describió anteriormente, para determinar una dimensión de una división SDIP. La dimensión determinada se puede usar para determinar si se aplica o no un filtrado intra-suavizante, por ejemplo, accediendo a una de las tablas de decisión de filtrado descritas anteriormente.
[119] La FIG. 8 es un diagrama de flujo que ilustra otro ejemplo de procedimiento para la codificación de datos de vídeo de acuerdo con las técnicas de esta divulgación. Aunque se describen con respecto al codificador de vídeo 20 como ejemplo, debe entenderse que las técnicas de la FIG. 8 pueden ser realizadas por cualquier unidad de codificación de vídeo. Además, los pasos ilustrados en la FIG. 8 se puede realizar en un orden diferente, se pueden omitir ciertos pasos, y se pueden agregar pasos adicionales, sin apartarse de las técnicas de esta divulgación.
[120] El codificador de vídeo 20 puede recibir un bloque (por ejemplo, una CU) de datos de vídeo a codificar. Cuando el bloque actual se designa como un bloque actual a codificar usando codificación intra-predictiva, el codificador de vídeo 20 puede determinar el tamaño de bloque actual y el modo de intra-predicción usado para codificar el bloque actual (802). A continuación, el codificador de vídeo puede determinar y aplicar un filtro suavizante usando una tabla de filtros, por ejemplo, la TABLA 7 anterior, basándose en el tamaño del bloque y el modo de intra-predicción (804), como se analizó anteriormente.
[121] A continuación, el codificador de vídeo 20 puede codificar el bloque actual aplicando el filtro suavizante seleccionado a las muestras de predicción y realizando la codificación intra-predictiva de acuerdo con el modo de intra-predicción asociado con el bloque actual (612). El codificador de vídeo 20 también puede codificar elementos sintácticos asociados con la codificación intra-predictiva con el bloque actual (614), por ejemplo, uno o más elementos sintácticos que identifican el modo de intra-predicción. Otros ejemplos de elementos sintácticos asociados con la codificación intra-predictiva que pueden codificarse con un bloque pueden ser el tipo de división asociado con el bloque, tamaño de PU, tamaño de TU, CBP y coeficientes cuantificados. A continuación, el codificador de vídeo 20 puede transmitir el bloque de vídeo codificado, dentro de una trama de vídeo codificada, y con los elementos sintácticos a un descodificador de vídeo (616).
[122] La FIG. 9 es un diagrama de flujo que ilustra otro ejemplo de procedimiento para la descodificación de datos de vídeo de acuerdo con las técnicas de esta divulgación. Aunque se describen con respecto al descodificador de vídeo 30 como ejemplo, debe entenderse que las técnicas de la FIG. 9 pueden ser realizadas por cualquier unidad de codificación de vídeo. Además, los pasos ilustrados en la FIG. 9 se puede realizar en un orden diferente, se pueden omitir ciertos pasos, y se pueden agregar pasos adicionales, sin apartarse de las técnicas de esta divulgación.
[123] El descodificador de vídeo 30 puede recibir un bloque codificado (por ejemplo, una CU) de datos de vídeo a descodificar (902). El descodificador de vídeo 30 puede descodificar el bloque de vídeo codificado y los elementos sintácticos para determinar que el bloque se codifica usando codificación intra-predictiva (904). Basándose en los elementos sintácticos, el descodificador de vídeo 30 también puede determinar el modo de intra-predicción del bloque (906). A continuación el descodificador de vídeo 30 puede descodificar el bloque usando codificación intra-predictiva y aplicar un filtro suavizante seleccionado de la misma tabla de filtrado, por ejemplo, la TABLA 7, usada durante la codificación, basándose en el tamaño de bloque y el modo de intra- predicción (908). De esta manera, el descodificador de vídeo 30 tal vez no necesite hacer ninguna determinación con respecto a las opciones de filtrado aparte de seleccionar un filtro de la tabla de filtros.
[124] En uno o más ejemplos, las funciones descritas pueden implementarse en hardware, software, firmware o cualquier combinación de estos. Si se implementan en software, las funciones, como una o más instrucciones o
5
10
15
20
25
30
35
40
45
50
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 corresponden a un medio tangible tal como unos medios de almacenamiento de datos o unos medios de comunicación que incluyen cualquier medio que facilite la transferencia de un programa informático desde un lugar a otro, por ejemplo, de acuerdo con un protocolo de comunicación. De esta manera, los medios legibles por ordenador pueden corresponder en general a (1) unos medios de almacenamiento tangibles legibles por ordenador que son 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 medios disponibles cualesquiera a los que se puede 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 legible por ordenador.
[125] 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 adecuadamente 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. 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 de láser, el disco óptico, el disco versátil digital (DVD), el disco flexible y el disco Blu-ray, donde algunos discos normalmente reproducen datos de manera magnética, mientras que otros discos reproducen los datos de manera óptica con láser. Las combinaciones de lo anterior deberían incluirse también dentro del alcance de los medios legibles por ordenador.
[126] 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), matrices lógicas programables sobre el terreno (FPGA) u otros circuitos lógicos integrados o discretos equivalentes. Por consiguiente, 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 descodificación, o incorporarse en un códec combinado. Además, las técnicas podrían implementarse completamente en uno o más circuitos o elementos lógicos.
[127] Las técnicas de la presente divulgación se pueden implementar en una amplia variedad de dispositivos o aparatos, que incluyen un teléfono 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, que incluyen uno o más procesadores como los descritos anteriormente, conjuntamente con software y/o firmware adecuados.
Claims (3)
- 5101520253035404550556065REIVINDICACIONESUn procedimiento de codificación de datos de vídeo, comprendiendo el procedimiento:determinar (606, 802) un tamaño de bloque asociado con un bloque actual de datos de vídeo, determinándose el tamaño de bloque a partir de una pluralidad de tamaños de bloque incluyendo un tamaño de bloque de 4x4, un tamaño de bloque de 8x8, un tamaño de bloque de 16x16 y un tamaño de bloque de 32x32;determinar (802) un modo de codificación de intra-predicción asociado con el bloque actual, determinándose el modo de codificación de intra-predicción a partir de una pluralidad de modos de codificación de intra-predicción que incluyen un modo horizontal, un modo vertical, un modo planar, un modo DC y una pluralidad de modos diagonales incluyendo un modo diagonal superior izquierdo, un modo diagonal superior derecho, un modo diagonal inferior izquierdo y una pluralidad de modos diagonales que son directamente adyacentes al modo horizontal o al modo vertical;determinar, basándose en el tamaño de bloque y el modo de codificación en combinación, una decisión de filtro para si aplicar un filtro a las muestras de predicción usadas para predecir el bloque actual, comprendiendo la determinación:si el tamaño de bloque es el tamaño de bloque de 4x4, determinar la decisión de filtro para que no se aplique ningún filtrado a las muestras de predicción usadas para predecir el bloque actual para cualquiera de la pluralidad de modos de codificación de intra-predicción,si el tamaño de bloque es el tamaño de bloque 8x8, determinar la decisión de filtro para que las muestras de predicción utilizadas para predecir el bloque actual se filtren solo si el modo de codificación es el modo planar, el modo diagonal superior izquierdo, el modo diagonal superior derecho o el modo diagonal inferior izquierdo,si el tamaño del bloque es el tamaño de bloque 16x16, determinar la decisión del filtro para que las muestras de predicción utilizadas para predecir el bloque actual se filtren si el modo de codificación es el modo planar, o si el modo de codificación es cualquier otro de la pluralidad de modos de codificación, excepto el modo horizontal, el modo vertical, el modo DC y los modos directamente adyacentes al modo horizontal o el modo vertical, y no filtrados si el modo de codificación es el modo horizontal, el modo vertical, el modo DC o un modo directamente adyacente al modo horizontal o al modo vertical, ysi el tamaño de bloque es el tamaño de bloque de 32x32, determinar la decisión de filtro para que las muestras de predicción utilizadas para predecir el bloque actual se filtren si el modo de codificación es el modo planar o si el modo de codificación es cualquier otro de la pluralidad de modos de codificación excepto el modo horizontal, el modo vertical y el modo de DC, y no se filtren si el modo de codificación es el modo horizontal, el modo vertical o el modo DC; ycodificación intra-predictiva (612, 806) del bloque actual usando la decisión de filtro determinada para filtrar o no filtrar las muestras de predicción usadas para predecir el bloque actual.Un procedimiento de descodificación de datos de vídeo, comprendiendo el procedimiento:determinar un tamaño de bloque asociado con un bloque actual de datos de vídeo, determinándose el tamaño de bloque a partir de una pluralidad de tamaños de bloque incluyendo un tamaño de bloque de 4x4, un tamaño de bloque de 8x8, un tamaño de bloque de 16x16 y un tamaño de bloque de 32x32;determinar (706, 906) un modo de codificación de intra-predicción asociado con el bloque actual, determinándose el modo de codificación de intra-predicción a partir de una pluralidad de modos de codificación de intra-predicción incluyendo un modo horizontal, un modo vertical, un modo planar, un modo DC, y una pluralidad de modos diagonales incluyendo un modo diagonal superior izquierdo, un modo diagonal superior derecho, un modo diagonal inferior izquierdo y una pluralidad de modos diagonales que son directamente adyacentes al modo horizontal o al modo vertical;determinar, basándose en el tamaño de bloque y el modo de codificación en combinación, una decisión de filtro para si aplicar un filtro a las muestras de predicción usadas para predecir el bloque actual, comprendiendo la determinación:si el tamaño de bloque es el tamaño de bloque de 4x4, determinar la decisión de filtro para que no se aplique ningún filtrado a las muestras de predicción usadas para predecir el bloque actual para cualquiera de la pluralidad de modos de codificación de intra-predicción,5101520253035404550556065si el tamaño de bloque es el tamaño de bloque 8x8, determinar la decisión de filtro para que las muestras de predicción utilizadas para predecir el bloque actual se filtren solo si el modo de codificación es el modo planar, el modo diagonal superior izquierdo, el modo diagonal superior derecho o el modo diagonal inferior izquierdo,si el tamaño del bloque es el tamaño de bloque 16x16, determinar la decisión del filtro para que las muestras de predicción utilizadas para predecir el bloque actual se filtren si el modo de codificación es el modo planar, o si el modo de codificación es cualquier otro de la pluralidad de modos de codificación excepto el modo horizontal, el modo vertical, el modo DC y los modos directamente adyacentes al modo horizontal o el modo vertical, y no se filtren si el modo de codificación es el modo horizontal, el modo vertical o el modo DC o un modo directamente adyacente al modo horizontal o modo vertical, ysi el tamaño de bloque es el tamaño de bloque de 32x32, determinar la decisión de filtro para que las muestras de predicción utilizadas para predecir el bloque actual se filtren si el modo de codificación es el modo planar o si el modo de codificación es cualquier otro de la pluralidad de modos de codificación excepto el modo horizontal, el modo vertical y el modo de DC, y no se filtren si el modo de codificación es el modo horizontal, el modo vertical o el modo DC; ydescodificación intra-predictiva (710, 712, 908) del bloque actual usando la decisión de filtro determinada para filtrar o no las muestras de predicción usadas para predecir el bloque actual.El procedimiento según la reivindicación 1 o la reivindicación 2, en el que la determinación de la decisión de filtro comprende seleccionar de una primera tabla de filtros un filtro basado en el tamaño de bloque y el modo de codificación.El procedimiento según la reivindicación 1 o la reivindicación 2, en el que el no filtrado comprende aplicar un filtro de todo paso..El procedimiento según la reivindicación 1 o la reivindicación 2, en el que el bloque actual comprende una unidad de predicción codificada de acuerdo con Intra-Predicción a Corta Distancia (SDIP) y en el que el procedimiento comprende preferentemente los pasos adicionales de:determinar una dimensión asociada con el bloque actual; ydeterminar el tamaño de bloque basándose en la dimensión utilizando un conjunto de reglas de determinación de dimensión.Un aparato para codificar datos de vídeo (20), comprendiendo el aparato:medios para determinar (606, 802) un tamaño de bloque asociado con un bloque actual de datos de vídeo, determinándose el tamaño de bloque a partir de una pluralidad de tamaños de bloque incluyendo un tamaño de bloque de 4x4, un tamaño de bloque de 8x8, un tamaño de bloque de 16x16 y un tamaño de bloque de 32x32;medios para determinar (802) un modo de codificación de intra-predicción asociado con el bloque actual, determinándose el modo de codificación de intra-predicción a partir de una pluralidad de modos de codificación de intra-predicción que incluyen un modo horizontal, un modo vertical, un modo planar, un modo DC, y una pluralidad de modos diagonales incluyendo un modo diagonal superior izquierdo, un modo diagonal superior derecho, un modo diagonal inferior izquierdo y una pluralidad de modos diagonales que son directamente adyacentes al modo horizontal o al modo vertical;medios para determinar, basándose en el tamaño de bloque y el modo de codificación en combinación, una decisión de filtro para si aplicar un filtro a las muestras de predicción usadas para predecir el bloque actual, comprendiendo la determinación:si el tamaño de bloque es el tamaño de bloque de 4x4, determinar la decisión de filtro para que no se aplique ningún filtrado a las muestras de predicción usadas para predecir el bloque actual para cualquiera de la pluralidad de modos de codificación de intra-predicción,si el tamaño de bloque es el tamaño de bloque 8x8, determinar la decisión de filtro para que las muestras de predicción utilizadas para predecir el bloque actual se filtren solo si el modo de codificación es el modo planar, el modo diagonal superior izquierdo, el modo diagonal superior derecho o el modo diagonal inferior izquierdo,5101520253035404550556065si el tamaño del bloque es el tamaño de bloque 16x16, determinar la decisión del filtro para que las muestras de predicción utilizadas para predecir el bloque actual se filtren si el modo de codificación es el modo planar, o si el modo de codificación es cualquier otro de la pluralidad de modos de codificación excepto el modo horizontal, el modo vertical, el modo DC y los modos directamente adyacentes al modo horizontal o el modo vertical, y no se filtren si el modo de codificación es el modo horizontal, el modo vertical o el modo DC o un modo directamente adyacente al modo horizontal o modo vertical, ysi el tamaño de bloque es el tamaño de bloque de 32x32, determinar la decisión de filtro para que las muestras de predicción utilizadas para predecir el bloque actual se filtren si el modo de codificación es el modo planar o si el modo de codificación es cualquier otro de la pluralidad de modos de codificación excepto el modo horizontal, el modo vertical y el modo de DC, y no se filtren si el modo de codificación es el modo horizontal, el modo vertical o el modo DC; ymedios para la descodificación intra-predictiva (612, 806) del bloque actual usando la decisión de filtro determinada para filtrar o no filtrar las muestras de predicción usadas para predecir el bloque actual.El aparato de la reivindicación 8 que comprende medios para llevar a cabo un procedimiento de acuerdo con cualquiera de las reivindicaciones 3 a 5.Un aparato para descodificar datos de vídeo (30), comprendiendo el aparato:medios para determinar un tamaño de bloque asociado con un bloque actual de datos de vídeo, determinándose el tamaño de bloque a partir de una pluralidad de tamaños de bloque que incluyen un tamaño de bloque de 4x4, un tamaño de bloque de 8x8, un tamaño de bloque de 16x16 y un tamaño de bloque de 32x32;medios para determinar (706, 906) un modo de codificación de intra-predicción asociado con el bloque actual, determinándose el modo de codificación de intra-predicción a partir de una pluralidad de modos de codificación de intra-predicción que incluyen un modo horizontal, un modo vertical, un modo planar, un modo DC, y una pluralidad de modos diagonales que incluyen un modo diagonal superior izquierdo, un modo diagonal superior derecho, un modo diagonal inferior izquierdo y una pluralidad de modos diagonales que son directamente adyacentes al modo horizontal o al modo vertical;medios para determinar, basándose en el tamaño de bloque y el modo de codificación en combinación, una decisión de filtro para si aplicar un filtro a las muestras de predicción usadas para predecir el bloque actual, comprendiendo la determinación:si el tamaño de bloque es el tamaño de bloque de 4x4, determinar la decisión de filtro para que no se aplique ningún filtrado a las muestras de predicción usadas para predecir el bloque actual para cualquiera de la pluralidad de modos de codificación de intra-predicción,si el tamaño de bloque es el tamaño de bloque 8x8, determinar la decisión de filtro para que las muestras de predicción utilizadas para predecir el bloque actual se filtren solo si el modo de codificación es el modo planar, el modo diagonal superior izquierdo, el modo diagonal superior derecho o el modo diagonal inferior izquierdo,si el tamaño del bloque es el tamaño de bloque 16x16, determinar la decisión del filtro para que las muestras de predicción utilizadas para predecir el bloque actual se filtren si el modo de codificación es el modo planar, o si el modo de codificación es cualquier otro de la pluralidad de modos de codificación excepto el modo horizontal, el modo vertical, el modo DC y los modos directamente adyacentes al modo horizontal o el modo vertical, y no se filtren si el modo de codificación es el modo horizontal, el modo vertical o el modo DC o un modo directamente adyacente al modo horizontal o modo vertical, ysi el tamaño de bloque es el tamaño de bloque de 32x32, determinar la decisión de filtro para que las muestras de predicción utilizadas para predecir el bloque actual se filtren si el modo de codificación es el modo planar o si el modo de codificación es cualquier otro de la pluralidad de modos de codificación excepto el modo horizontal, el modo vertical y el modo de DC, y no se filtren si el modo de codificación es el modo horizontal, el modo vertical o el modo DC; ymedios para la codificación intra-predictiva (710, 712, 908) del bloque actual usando la decisión de filtro determinada para filtrar o no filtrar las muestras de predicción usadas para predecir el bloque actual.
- 9. El aparato de la reivindicación 10 que comprende medios para llevar a cabo un procedimiento de acuerdo con cualquiera de las reivindicaciones 3 a 5.
- 10. Un medio de almacenamiento legible por ordenador que comprende instrucciones para codificar datos de vídeo que, cuando se ejecutan en un procesador, hacen que el procesador realice un procedimiento de acuerdo con cualquiera de las reivindicaciones 1 a 5.
Applications Claiming Priority (17)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US389173P | 2002-06-17 | ||
US38917310P | 2010-10-01 | 2010-10-01 | |
US40604610P | 2010-10-22 | 2010-10-22 | |
US406046P | 2010-10-22 | ||
US201061426388P | 2010-12-22 | 2010-12-22 | |
US201061426388P | 2010-12-22 | ||
US201061426964P | 2010-12-23 | 2010-12-23 | |
US201061426964P | 2010-12-23 | ||
US201161492335P | 2011-06-01 | 2011-06-01 | |
US201161492335P | 2011-06-01 | ||
US201161499579P | 2011-06-21 | 2011-06-21 | |
US201161499579P | 2011-06-21 | ||
US201161500095P | 2011-06-22 | 2011-06-22 | |
US201161500095P | 2011-06-22 | ||
US201113248968 | 2011-09-29 | ||
US13/248,968 US9008175B2 (en) | 2010-10-01 | 2011-09-29 | Intra smoothing filter for video coding |
PCT/US2011/054130 WO2012044886A1 (en) | 2010-10-01 | 2011-09-30 | Intra smoothing filter for video coding |
Publications (1)
Publication Number | Publication Date |
---|---|
ES2656494T3 true ES2656494T3 (es) | 2018-02-27 |
Family
ID=45889817
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
ES11767583.5T Active ES2656494T3 (es) | 2010-10-01 | 2011-09-30 | Filtro intra-suavizante para codificación de vídeo |
Country Status (19)
Country | Link |
---|---|
US (1) | US9008175B2 (es) |
EP (1) | EP2622858B1 (es) |
JP (1) | JP5587508B2 (es) |
KR (2) | KR101626734B1 (es) |
CN (1) | CN103141100B (es) |
AU (1) | AU2011308653B2 (es) |
BR (1) | BR112013007563B1 (es) |
CA (1) | CA2812307C (es) |
DK (1) | DK2622858T3 (es) |
ES (1) | ES2656494T3 (es) |
HK (1) | HK1182249A1 (es) |
HU (1) | HUE035458T2 (es) |
IL (1) | IL225331A (es) |
PL (1) | PL2622858T3 (es) |
PT (1) | PT2622858T (es) |
RU (1) | RU2543552C2 (es) |
SG (1) | SG189036A1 (es) |
SI (1) | SI2622858T1 (es) |
WO (1) | WO2012044886A1 (es) |
Families Citing this family (71)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5544996B2 (ja) * | 2010-04-09 | 2014-07-09 | ソニー株式会社 | 画像処理装置および方法 |
KR20110113561A (ko) * | 2010-04-09 | 2011-10-17 | 한국전자통신연구원 | 적응적인 필터를 이용한 인트라 예측 부호화/복호화 방법 및 그 장치 |
KR20110123651A (ko) | 2010-05-07 | 2011-11-15 | 한국전자통신연구원 | 생략 부호화를 이용한 영상 부호화 및 복호화 장치 및 그 방법 |
KR101663764B1 (ko) * | 2010-08-26 | 2016-10-07 | 에스케이 텔레콤주식회사 | 인트라 예측을 이용한 부호화 및 복호화 장치와 방법 |
KR102427824B1 (ko) * | 2010-12-08 | 2022-08-02 | 엘지전자 주식회사 | 인트라 예측 방법과 이를 이용한 부호화 장치 및 복호화 장치 |
US10142630B2 (en) * | 2010-12-10 | 2018-11-27 | Texas Instruments Incorporated | Mode adaptive intra prediction smoothing in video coding |
KR101824241B1 (ko) * | 2011-01-11 | 2018-03-14 | 에스케이 텔레콤주식회사 | 인트라 부가정보 부호화/복호화 장치 및 방법 |
WO2012121575A2 (ko) | 2011-03-10 | 2012-09-13 | 한국전자통신연구원 | 인트라 예측 방법 및 그 장치 |
US20130336398A1 (en) | 2011-03-10 | 2013-12-19 | Electronics And Telecommunications Research Institute | Method and device for intra-prediction |
US9008180B2 (en) | 2011-04-21 | 2015-04-14 | Intellectual Discovery Co., Ltd. | Method and apparatus for encoding/decoding images using a prediction method adopting in-loop filtering |
KR20130000334A (ko) * | 2011-06-15 | 2013-01-02 | 광운대학교 산학협력단 | 스케일러블 비디오 코딩 및 디코딩 방법과 이를 이용한 장치 |
US9602839B2 (en) * | 2011-06-15 | 2017-03-21 | Futurewei Technologies, Inc. | Mode dependent intra smoothing filter table mapping methods for non-square prediction units |
KR20120140181A (ko) * | 2011-06-20 | 2012-12-28 | 한국전자통신연구원 | 화면내 예측 블록 경계 필터링을 이용한 부호화/복호화 방법 및 그 장치 |
US10499063B2 (en) * | 2011-09-16 | 2019-12-03 | Hfi Innovation Inc. | Method and apparatus for prediction mode and partition mode syntax coding for coding units in HEVC |
US20130083840A1 (en) * | 2011-09-30 | 2013-04-04 | Broadcom Corporation | Advance encode processing based on raw video data |
EP2582134A1 (en) * | 2011-10-12 | 2013-04-17 | Thomson Licensing | Saliency value determination of predictively encoded video streams |
WO2013058583A1 (ko) * | 2011-10-18 | 2013-04-25 | 주식회사 케이티 | 영상 부호화 방법, 영상 복호화 방법, 영상 부호화기 및 영상 복호화기 |
US10645398B2 (en) | 2011-10-25 | 2020-05-05 | Texas Instruments Incorporated | Sample-based angular intra-prediction in video coding |
EP2774360B1 (en) * | 2011-11-04 | 2017-08-02 | Huawei Technologies Co., Ltd. | Differential pulse code modulation intra prediction for high efficiency video coding |
CN110225354A (zh) * | 2012-01-17 | 2019-09-10 | 华为技术有限公司 | 用于高性能视频编码中的无损编码模式的环内滤波的装置 |
WO2013109867A1 (en) * | 2012-01-19 | 2013-07-25 | Futurewei Technologies, Inc. | Simplification of mode dependent intra smoothing |
US9924169B2 (en) * | 2012-03-06 | 2018-03-20 | Lg Electronics Inc. | Method and apparatus for selecting a filter based on a variance of depth data |
US9544612B2 (en) * | 2012-10-04 | 2017-01-10 | Intel Corporation | Prediction parameter inheritance for 3D video coding |
US10440377B2 (en) * | 2012-10-11 | 2019-10-08 | Intel Corporation | Motion estimation for video processing |
JP2014131162A (ja) * | 2012-12-28 | 2014-07-10 | Nippon Telegr & Teleph Corp <Ntt> | イントラ予測符号化方法、イントラ予測復号方法、イントラ予測符号化装置、イントラ予測復号装置、それらのプログラム並びにプログラムを記録した記録媒体 |
US20140192862A1 (en) * | 2013-01-07 | 2014-07-10 | Research In Motion Limited | Methods and systems for prediction filtering in video coding |
US9426473B2 (en) * | 2013-02-01 | 2016-08-23 | Qualcomm Incorporated | Mode decision simplification for intra prediction |
KR101468078B1 (ko) * | 2013-02-06 | 2014-12-08 | 성균관대학교산학협력단 | 화면 내 예측 방법 및 장치 |
US9615086B2 (en) | 2013-02-06 | 2017-04-04 | Research & Business Foundation Sungkyunkwan University | Method and apparatus for intra prediction |
US9491460B2 (en) * | 2013-03-29 | 2016-11-08 | Qualcomm Incorporated | Bandwidth reduction for video coding prediction |
BR112015025623B1 (pt) | 2013-04-08 | 2023-02-07 | Dolby International Ab | Método e codificador para codificar uma tabela de busca de cor tridimensional associada a octantes de uma octree, e método e decodificador para decodificar uma tabela de busca de cor tridimensional de octantes |
EP3078194B1 (en) * | 2014-01-02 | 2019-09-11 | HFI Innovation Inc. | Method and apparatus for intra prediction coding with boundary filtering control |
JP6528765B2 (ja) * | 2014-03-28 | 2019-06-12 | ソニー株式会社 | 画像復号装置および方法 |
KR101844698B1 (ko) | 2014-05-23 | 2018-04-02 | 후아웨이 테크놀러지 컴퍼니 리미티드 | 블록-예측 기법들에 사용하기 위한 사전-예측 필터링을 위한 방법 및 장치 |
US20160105685A1 (en) * | 2014-10-08 | 2016-04-14 | Qualcomm Incorporated | Boundary filtering and cross-component prediction in video coding |
US10148953B2 (en) * | 2014-11-10 | 2018-12-04 | Samsung Electronics Co., Ltd. | System and method for intra prediction in video coding |
US10841593B2 (en) | 2015-06-18 | 2020-11-17 | Qualcomm Incorporated | Intra prediction and intra mode coding |
US11463689B2 (en) * | 2015-06-18 | 2022-10-04 | Qualcomm Incorporated | Intra prediction and intra mode coding |
KR102160667B1 (ko) * | 2015-09-10 | 2020-09-28 | 엘지전자 주식회사 | 비디오 코딩 시스템에서 인트라 예측 방법 및 장치 |
US10136131B2 (en) * | 2015-09-11 | 2018-11-20 | Beamr Imaging Ltd. | Video coding apparatus and method |
CA3113488A1 (en) | 2015-11-17 | 2017-05-26 | Huawei Technologies Co., Ltd. | Method and apparatus for video coding |
WO2017146526A1 (ko) * | 2016-02-25 | 2017-08-31 | 주식회사 케이티 | 비디오 신호 처리 방법 및 장치 |
US10652575B2 (en) * | 2016-09-15 | 2020-05-12 | Qualcomm Incorporated | Linear model chroma intra prediction for video coding |
JP2019534629A (ja) * | 2016-09-30 | 2019-11-28 | エルジー エレクトロニクス インコーポレイティド | 画像処理方法及びこのための装置 |
CN110063059B (zh) | 2016-12-15 | 2022-05-13 | 华为技术有限公司 | 视频编解码方法、相关编解码器和计算机可读存储介质 |
EP3545680A1 (en) | 2016-12-15 | 2019-10-02 | Huawei Technologies Co., Ltd. | Intra sharpening and/or de-ringing filter for video coding |
WO2018174657A1 (ko) * | 2017-03-23 | 2018-09-27 | 엘지전자 주식회사 | 영상 코딩 시스템에서 인트라 예측에 따른 영상 디코딩 방법 및 장치 |
US10992939B2 (en) * | 2017-10-23 | 2021-04-27 | Google Llc | Directional intra-prediction coding |
US10225578B2 (en) | 2017-05-09 | 2019-03-05 | Google Llc | Intra-prediction edge filtering |
EP3410722A1 (en) | 2017-05-31 | 2018-12-05 | Thomson Licensing | Method and apparatus for low-complexity bi-directional intra prediction in video encoding and decoding |
JP6904156B2 (ja) * | 2017-08-10 | 2021-07-14 | 富士通株式会社 | 動画像符号化装置、動画像符号化方法、及び動画像符号化プログラム |
EP3454556A1 (en) * | 2017-09-08 | 2019-03-13 | Thomson Licensing | Method and apparatus for video encoding and decoding using pattern-based block filtering |
EP3496401A1 (en) * | 2017-12-05 | 2019-06-12 | Thomson Licensing | Method and apparatus for video encoding and decoding based on block shape |
US11277644B2 (en) * | 2018-07-02 | 2022-03-15 | Qualcomm Incorporated | Combining mode dependent intra smoothing (MDIS) with intra interpolation filter switching |
US10567752B2 (en) * | 2018-07-02 | 2020-02-18 | Tencent America LLC | Method and apparatus for intra prediction for non-square blocks in video compression |
KR20210016601A (ko) | 2018-07-11 | 2021-02-16 | 후아웨이 테크놀러지 컴퍼니 리미티드 | 인트라 예측을 위한 종횡비 의존적 필터링을 위한 방법 및 장치 |
US10630979B2 (en) * | 2018-07-16 | 2020-04-21 | Tencent America LLC | Reference sample padding and filtering for intra prediction in video compression |
US10834393B2 (en) * | 2018-09-10 | 2020-11-10 | Tencent America LLC | Intra interpolation filter for multi-line intra prediction |
EP3850840A1 (en) * | 2018-09-13 | 2021-07-21 | FRAUNHOFER-GESELLSCHAFT zur Förderung der angewandten Forschung e.V. | Affine linear weighted intra predictions |
US11303885B2 (en) * | 2018-10-25 | 2022-04-12 | Qualcomm Incorporated | Wide-angle intra prediction smoothing and interpolation |
WO2020085955A1 (en) * | 2018-10-26 | 2020-04-30 | Huawei Technologies Co., Ltd. | Method and apparatus for reference sample filtering |
CN113261281A (zh) * | 2019-01-02 | 2021-08-13 | 北京字节跳动网络技术有限公司 | 交织预测的使用 |
CN117915081A (zh) | 2019-01-02 | 2024-04-19 | 北京字节跳动网络技术有限公司 | 视频处理的方法 |
US10778972B1 (en) | 2019-02-27 | 2020-09-15 | Google Llc | Adaptive filter intra prediction modes in image/video compression |
CN115955561A (zh) | 2019-05-02 | 2023-04-11 | 北京字节跳动网络技术有限公司 | 使用多个参考滤波器的帧内视频编解码 |
US11445174B2 (en) * | 2019-05-06 | 2022-09-13 | Tencent America LLC | Method and apparatus for video coding |
CN113812152B (zh) * | 2019-05-14 | 2023-10-03 | 北京字节跳动网络技术有限公司 | 帧内视频编解码的滤波器选择 |
EP4014503A1 (en) * | 2019-08-16 | 2022-06-22 | Apple Inc. | Adaptive bilateral filtering using look-up tables |
US11297316B2 (en) * | 2019-12-24 | 2022-04-05 | Tencent America LLC | Method and system for adaptive cross-component filtering |
CN113766246A (zh) * | 2020-06-05 | 2021-12-07 | Oppo广东移动通信有限公司 | 图像编码方法、图像解码方法及相关装置 |
CN113965764B (zh) * | 2020-07-21 | 2023-04-07 | Oppo广东移动通信有限公司 | 图像编码方法、图像解码方法及相关装置 |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE10158658A1 (de) * | 2001-11-30 | 2003-06-12 | Bosch Gmbh Robert | Verfahren zur gerichteten Prädiktion eines Bildblockes |
JP4120301B2 (ja) | 2002-04-25 | 2008-07-16 | ソニー株式会社 | 画像処理装置およびその方法 |
AU2003246987A1 (en) | 2002-07-09 | 2004-01-23 | Nokia Corporation | Method and system for selecting interpolation filter type in video coding |
US6795584B2 (en) * | 2002-10-03 | 2004-09-21 | Nokia Corporation | Context-based adaptive variable length coding for adaptive block transforms |
US7227901B2 (en) * | 2002-11-21 | 2007-06-05 | Ub Video Inc. | Low-complexity deblocking filter |
CN100584024C (zh) | 2003-01-10 | 2010-01-20 | 汤姆森特许公司 | 为编码图像中的错误掩蔽定义内插滤波器 |
JP2006157481A (ja) | 2004-11-30 | 2006-06-15 | Canon Inc | 画像符号化装置及びその方法 |
KR100657919B1 (ko) | 2004-12-13 | 2006-12-14 | 삼성전자주식회사 | 화상 데이터의 공간상 예측 장치 및 방법과 그를 이용한부호화 장치 및 방법, 화상 데이터의 공간상 예측 보상장치 및 방법과 그를 이용한 복호화 장치 및 방법 |
JP2006229411A (ja) | 2005-02-16 | 2006-08-31 | Matsushita Electric Ind Co Ltd | 画像復号化装置及び画像復号化方法 |
US7876833B2 (en) * | 2005-04-11 | 2011-01-25 | Sharp Laboratories Of America, Inc. | Method and apparatus for adaptive up-scaling for spatially scalable coding |
US8548064B2 (en) * | 2006-01-05 | 2013-10-01 | Nippon Telegraph And Telephone Corporation | Video encoding method and decoding method by using selected parallax for parallax compensation, apparatuses therefor, programs therefor, and storage media for storing the programs |
WO2009001793A1 (ja) * | 2007-06-26 | 2008-12-31 | Kabushiki Kaisha Toshiba | 画像符号化と画像復号化の方法及び装置 |
KR101568708B1 (ko) | 2007-09-02 | 2015-11-12 | 엘지전자 주식회사 | 비디오 신호처리 방법 및 장치 |
JP2010081368A (ja) | 2008-09-26 | 2010-04-08 | Toshiba Corp | 画像処理装置、動画像復号装置、動画像符号化装置、画像処理方法、動画像復号方法、及び、動画像符号化方法 |
KR101590500B1 (ko) * | 2008-10-23 | 2016-02-01 | 에스케이텔레콤 주식회사 | 동영상 부호화/복호화 장치, 이를 위한 인트라 예측 방향에기반한 디블록킹 필터링 장치 및 필터링 방법, 및 기록 매체 |
KR101510108B1 (ko) * | 2009-08-17 | 2015-04-10 | 삼성전자주식회사 | 영상의 부호화 방법 및 장치, 그 복호화 방법 및 장치 |
EP2559239A2 (en) | 2010-04-13 | 2013-02-20 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Apparatus for intra predicting a block, apparatus for reconstructing a block of a picture, apparatus for reconstructing a block of a picture by intra prediction |
EP2584781A4 (en) | 2010-06-17 | 2016-03-09 | Sharp Kk | IMAGE FILTER DEVICE, DECODING APPARATUS, ENCODING APPARATUS, AND DATA STRUCTURE |
ES2748100T3 (es) | 2010-07-14 | 2020-03-13 | Ntt Docomo Inc | Intra-predicción de baja complejidad para codificación de vídeo |
KR20120012385A (ko) | 2010-07-31 | 2012-02-09 | 오수미 | 인트라 예측 부호화 장치 |
ES2670325T3 (es) | 2010-08-17 | 2018-05-30 | M&K Holdings Inc. | Procedimiento de codificación de un modo de intra predicción |
CN108737843B (zh) * | 2010-09-27 | 2022-12-27 | Lg 电子株式会社 | 用于分割块的方法和解码设备 |
JP2012138884A (ja) | 2010-12-10 | 2012-07-19 | Sony Corp | 符号化装置および符号化方法、並びに復号装置および復号方法 |
KR101604959B1 (ko) | 2011-01-12 | 2016-03-18 | 미쓰비시덴키 가부시키가이샤 | 화상 부호화 장치, 화상 복호 장치, 화상 부호화 방법 및 화상 복호 방법 |
-
2011
- 2011-09-29 US US13/248,968 patent/US9008175B2/en active Active
- 2011-09-30 DK DK11767583.5T patent/DK2622858T3/en active
- 2011-09-30 HU HUE11767583A patent/HUE035458T2/en unknown
- 2011-09-30 RU RU2013120332/08A patent/RU2543552C2/ru active
- 2011-09-30 EP EP11767583.5A patent/EP2622858B1/en active Active
- 2011-09-30 SI SI201131392T patent/SI2622858T1/en unknown
- 2011-09-30 PL PL11767583T patent/PL2622858T3/pl unknown
- 2011-09-30 KR KR1020157000979A patent/KR101626734B1/ko active IP Right Grant
- 2011-09-30 JP JP2013531897A patent/JP5587508B2/ja active Active
- 2011-09-30 WO PCT/US2011/054130 patent/WO2012044886A1/en active Application Filing
- 2011-09-30 BR BR112013007563-5A patent/BR112013007563B1/pt active IP Right Grant
- 2011-09-30 PT PT117675835T patent/PT2622858T/pt unknown
- 2011-09-30 AU AU2011308653A patent/AU2011308653B2/en active Active
- 2011-09-30 CN CN201180047756.6A patent/CN103141100B/zh active Active
- 2011-09-30 CA CA2812307A patent/CA2812307C/en active Active
- 2011-09-30 SG SG2013020904A patent/SG189036A1/en unknown
- 2011-09-30 KR KR1020137011347A patent/KR20130063030A/ko active Application Filing
- 2011-09-30 ES ES11767583.5T patent/ES2656494T3/es active Active
-
2013
- 2013-03-19 IL IL225331A patent/IL225331A/en active IP Right Grant
- 2013-08-15 HK HK13109524.1A patent/HK1182249A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
EP2622858B1 (en) | 2017-11-01 |
JP2013543315A (ja) | 2013-11-28 |
CN103141100A (zh) | 2013-06-05 |
SG189036A1 (en) | 2013-05-31 |
RU2013120332A (ru) | 2014-11-20 |
WO2012044886A1 (en) | 2012-04-05 |
BR112013007563A2 (pt) | 2016-08-02 |
US9008175B2 (en) | 2015-04-14 |
PL2622858T3 (pl) | 2018-05-30 |
CA2812307C (en) | 2016-06-28 |
KR101626734B1 (ko) | 2016-06-01 |
KR20130063030A (ko) | 2013-06-13 |
CN103141100B (zh) | 2016-08-24 |
BR112013007563B1 (pt) | 2022-03-03 |
IL225331A0 (en) | 2013-06-27 |
IL225331A (en) | 2017-01-31 |
SI2622858T1 (en) | 2018-02-28 |
EP2622858A1 (en) | 2013-08-07 |
DK2622858T3 (en) | 2018-01-15 |
HUE035458T2 (en) | 2018-05-02 |
US20120082224A1 (en) | 2012-04-05 |
KR20150021113A (ko) | 2015-02-27 |
AU2011308653A1 (en) | 2013-05-02 |
AU2011308653B2 (en) | 2015-11-19 |
JP5587508B2 (ja) | 2014-09-10 |
PT2622858T (pt) | 2018-02-05 |
CA2812307A1 (en) | 2012-04-05 |
HK1182249A1 (zh) | 2013-11-22 |
RU2543552C2 (ru) | 2015-03-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
ES2656494T3 (es) | Filtro intra-suavizante para codificación de vídeo | |
ES2884375T3 (es) | Intra predicción de croma de modelo lineal para codificación de vídeo | |
ES2779461T3 (es) | Intrapredicción de vídeo mejorada que usa una combinación de predicción dependiente de la posición para codificación de vídeo | |
ES2657546T3 (es) | Indicación de modo de intra-predicción mejorada para codificación de vídeo utilizando el modo contiguo | |
ES2702950T3 (es) | Transformación inversa de color-espacio para vídeo codificado con pérdidas y sin pérdidas | |
ES2938068T3 (es) | Codificador de video, decodificador de video y métodos de codificación y decodificación correspondientes | |
ES2611349T3 (es) | Codificación de Indicador de bloque codificado (CBF) para el formato de muestra 4:2:2 en codificación de vídeo | |
ES2625821T3 (es) | Simplificación de decisión de modo para predicción intra | |
ES2700296T3 (es) | Indicación de selección de modo de intrapredicción para codificación de vídeo | |
ES2767103T3 (es) | Determinación de valores de parámetros de cuantificación (QP) y de valores QP delta para bloques codificados por paleta en la codificación de vídeo | |
KR101525370B1 (ko) | 사이즈 및 인트라 모드에 기초한 또는 에지 검출에 기초한 인트라 블록들 코딩을 위한 적응적 주파수 변환들 | |
ES2546678T3 (es) | Codificación de vídeo usando resolución adaptativa de vectores de movimiento | |
ES2688359T3 (es) | Filtro de desplazamiento de banda central adaptativo para codificación de vídeo | |
ES2673069T3 (es) | Procesamiento paralelo de frente de onda para codificación de vídeo | |
ES2761301T3 (es) | Coeficientes de codificación por entropía usando un modelo de contexto conjunto | |
ES2952256T3 (es) | Modelado de contexto eficiente de memoria | |
ES2715838T3 (es) | Matrices de cuantización de señalización para la codificación de vídeo | |
ES2649532T3 (es) | Predicción ponderada explícita de alta precisión para la codificación de vídeo | |
US20130163664A1 (en) | Unified partition mode table for intra-mode coding | |
ES2736308T3 (es) | Predicción de texturas entre capas para codificación de vídeo | |
ES2526053T3 (es) | Adaptación del conjunto de posibles transformaciones de frecuencia en base al tamaño del bloque y al modo intra |