ES2688359T3 - Filtro de desplazamiento de banda central adaptativo para codificación de vídeo - Google Patents

Filtro de desplazamiento de banda central adaptativo para codificación de vídeo Download PDF

Info

Publication number
ES2688359T3
ES2688359T3 ES12795667.0T ES12795667T ES2688359T3 ES 2688359 T3 ES2688359 T3 ES 2688359T3 ES 12795667 T ES12795667 T ES 12795667T ES 2688359 T3 ES2688359 T3 ES 2688359T3
Authority
ES
Spain
Prior art keywords
bands
band
value
video
pixel
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
ES12795667.0T
Other languages
English (en)
Inventor
In Suk Chong
Sanjeev Kumar
Marta Karczewicz
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Application granted granted Critical
Publication of ES2688359T3 publication Critical patent/ES2688359T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • H04N19/86Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving reduction of coding artifacts, e.g. of blockiness
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/117Filters, e.g. for pre-processing or post-processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • H04N19/82Details 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)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

Un procedimiento de codificación de vídeo para señalar, en un flujo de bits codificado, los valores de desplazamiento utilizados en el filtrado de desplazamiento adaptativo de muestras (SAO) basado en bandas, comprendiendo el procedimiento: agrupar bandas de valores de píxeles en dos o más grupos de bandas, en el que cada banda de las bandas de valores de píxeles comprende un intervalo de valores de píxeles, y en el que cada grupo de los dos o más grupos de bandas comprende una o más bandas; determinar valores de desplazamiento para las bandas basándose en los dos o más grupos de bandas; caracterizado por determinar (610) valores centrales para cada uno de una pluralidad de conjuntos de píxeles, en el que para cada conjunto el valor central se basa en los valores reales de los píxeles en el conjunto; y en el que, para cada conjunto de píxeles, la agrupación (620) de las bandas de píxeles en dos o más grupos de bandas se determina dinámicamente basándose en el valor central para el conjunto de manera que la agrupación de bandas en conjuntos de píxeles es adaptativa.

Description

5
10
15
20
25
30
35
40
45
50
55
60
65
DESCRIPCION
Filtro de desplazamiento de banda central adaptativo para codificación de vídeo CAMPO TÉCNICO
[1] Esta divulgación se refiere en general a la codificación de vídeo y más particularmente se refiere al filtrado de desplazamiento adaptativo de muestras (SAO) en un proceso de codificación de vídeo.
ANTECEDENTES
[2] Las capacidades del vídeo digital pueden incorporarse en una amplia gama de dispositivos, incluyendo televisores digitales, sistemas de radiodifusión directa digital, sistemas de radiodifusión inalámbrica, asistentes digitales personales (PDA), ordenadores portátiles o de escritorio, ordenadores de tableta, lectores de libros electrónicos, cámaras digitales, dispositivos de grabación digital, reproductores de medios digitales, dispositivos de videojuegos, consolas de videojuegos, teléfonos celulares o de radio por satélite, los denominados “teléfonos inteligentes", dispositivos de videoconferencia, dispositivos de transmisión continua de vídeo y similares. Los dispositivos de vídeo digitales implementan técnicas de compresión de vídeo, tales como las descritas en las normas definidas por MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Parte 10, Codificación Avanzada de Vídeo (AVC), la norma de Codificación de Vídeo de Alta Eficacia (HEVC) actualmente en desarrollo y las ampliaciones de dichas normas. Los dispositivos de vídeo pueden transmitir, recibir, codificar, descodificar y/o almacenar información de vídeo digital más eficazmente, implementando dichas técnicas de compresión de vídeo.
[3] Las técnicas de compresión de vídeo realizan la predicción espacial (intra-imagen) y/o la predicción temporal (entre imágenes) para reducir o eliminar la redundancia intrínseca en las secuencias de vídeo. Para la codificación de vídeo basada en bloques, un fragmento de vídeo (por ejemplo, una trama de vídeo o una parte de una trama de vídeo) puede dividirse en bloques de vídeo, que también pueden denominarse bloques de árbol, unidades de codificación (CU) y/o nodos de codificación. Los bloques de vídeo en un fragmento intra-codificado (I) de una imagen se codifican mediante predicción espacial con respecto a muestras de referencia en bloques contiguos en la misma imagen. Los bloques de vídeo en un fragmento inter-codificado (P o B) de una imagen pueden usar predicción espacial con respecto a muestras de referencia en bloques contiguos en la misma imagen, o predicción temporal con respecto a muestras de referencia en otras imágenes de referencia. Las imágenes pueden denominarse tramas, y las imágenes de referencia pueden denominarse tramas de referencia.
[4] La predicción espacial o temporal da como resultado un bloque predictivo para un bloque a codificar. Los datos residuales representan diferencias de píxeles entre el bloque original a codificar y el bloque predictivo. Un bloque inter-codificado se codifica de acuerdo con un vector de movimiento que apunta a un bloque de muestras de referencia que forman el bloque predictivo, y los datos residuales que indican la diferencia entre el bloque codificado y el bloque predictivo. Un bloque intra-codificado se codifica de acuerdo con un modo de intra-codificación y los datos residuales. Para una mayor compresión, los datos residuales pueden transformarse desde el dominio de los píxeles al dominio de las transformaciones, dando como resultado unos coeficientes de transformación residuales, que posteriormente se pueden cuantificar. Los coeficientes de transformación cuantificados, dispuestos inicialmente en una matriz bidimensional, pueden escanearse con el fin de generar un vector unidimensional de coeficientes de transformación, y puede aplicarse la codificación por entropía para lograr aún más compresión.
[5] El desplazamiento adaptativo se describe en el artículo "CE8 Subset3: Picture Quadtree Adaptive Offset [Desplazamiento adaptativo de árbol cuádruple de imágenes]", de C-M FU ET AL, 4. REUNIÓN DE JCT-VC; 95. REUNIÓN DE MPEG; 20-1-2011 - 28-1-2011; DAEGU; (EQUIPO DE COLABORACIÓN CONJUNTA SOBRE CODIFICACIÓN DE VÍDEO DE ISO/IEC JTC1/SC29/WG11 E ITU-T SG.16); URL:
HTTP://WFTP3.TTU.INT/AV- ARCH/JCTVC-STTE/" n.° JCTVC -D122, 15 de enero de 2011.
SUMARIO
[6] La invención se define en las reivindicaciones a las que está dirigida ahora la referencia. Esta divulgación en general describe técnicas relacionadas con el filtrado de desplazamiento adaptativo de muestras (SAO) y más particularmente describe técnicas para la señalización, en un flujo de bits codificado, de los coeficientes utilizados para el filtrado SAO basado en bandas. Esta divulgación describe técnicas para determinar de manera adaptativa agrupaciones de bandas basándose en un valor central y usar las agrupaciones determinadas para los valores de desplazamiento de señalización para las bandas.
BREVE DESCRIPCION DE LOS DIBUJOS
[7]
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 filtrado de desplazamiento adaptativo de muestras descritas en esta
5
10
15
20
25
30
35
40
45
50
55
60
65
divulgación.
La FIG. 2 es una ilustración que muestra ejemplos de clasificaciones de desplazamiento de borde para el filtrado de desplazamiento adaptativo de muestras basado en el borde.
Las FIGs. 3A y 3B son ilustraciones que muestran un ejemplo de agrupación de bandas para clasificaciones de desplazamiento de banda para el filtrado de desplazamiento adaptativo de muestras basado en banda.
La FIG. 4 es un diagrama de bloques que ilustra un codificador de vídeo de ejemplo que puede implementar las técnicas de filtrado de desplazamiento adaptativo de muestras descritas en esta divulgación.
La FIG. 5 es un diagrama de bloques que ilustra un descodificador de vídeo de ejemplo que puede implementar las técnicas de filtrado de desplazamiento adaptativo de muestras descritas en esta divulgación.
La FIG. 6 muestra un diagrama de flujo que ilustra las técnicas de filtrado de desplazamiento adaptativo de muestras descritas en esta divulgación.
DESCRIPCIÓN DETALLADA
[8] El filtrado de desplazamiento adaptativo de muestras (SAO) es un tipo de filtrado de bucle utilizado en la codificación de vídeo. En general, la adición de valores de desplazamiento a píxeles en una trama de vídeo (por ejemplo, una imagen reconstruida) puede en algunos casos mejorar la codificación sin aumentar en gran medida la sobrecarga de bits necesaria para almacenar o transmitir datos de vídeo codificados. La mejora en la codificación que potencialmente se obtiene como resultado del filtrado SAO puede ser, por ejemplo, que una imagen descodificada se asemeja más a una imagen original. Como se explicará con mayor detalle a continuación, las técnicas de SAO permiten que diferentes valores de desplazamiento se apliquen a diferentes píxeles (o bloques de píxeles) dependiendo de las métricas de clasificación de píxeles (o bloques), tales como métricas de borde, métricas de banda u otros tipos de métrica.
[9] Como se explicará con mayor detalle a continuación, en algunas configuraciones, una unidad de filtro SAO puede configurarse para realizar dos tipos de filtrado de desplazamiento, en general denominados en esta divulgación filtrado de desplazamiento de banda y filtrado de desplazamiento de borde. Una unidad de filtro SAO también puede a veces no aplicar desplazamiento, lo cual puede considerarse un tercer tipo de filtrado de desplazamiento. El tipo de filtrado de desplazamiento aplicado por un filtro SAO puede señalarse explícita o implícitamente a un descodificador de vídeo. Al aplicar el filtrado de desplazamiento de borde, los píxeles se pueden clasificar basándose en la información de borde de una unidad de codificación, y se puede determinar un desplazamiento para los píxeles basándose en la clasificación de los bordes. Como se explicará con mayor detalle a continuación con referencia a la FIG. 2, típicamente hay cuatro variaciones de SAO basado en el borde, donde el valor de un píxel se compara con dos de sus ocho píxeles vecinos. Los dos píxeles que se utilizan para comparar dependen de la variación del desplazamiento basado en el borde que se utiliza. Basándose en la diferencia de magnitud, se agrega un desplazamiento al valor de píxel.
[10] Al aplicar el filtrado de desplazamiento de banda, los píxeles se pueden clasificar en bandas diferentes basándose en un valor de píxel, como un valor de intensidad, teniendo cada banda un desplazamiento asociado. Una banda incluye un rango de valores de píxeles. Por ejemplo, los valores de píxel que van de 0 a 255 se pueden dividir en 32 bandas iguales (etiquetadas de 0 a 31), de modo que los valores de píxel 0-7 son una primera banda, los valores de píxel 8-15 son una segunda banda, los valores de píxel 16-23 son una tercera banda, y así sucesivamente para las treinta y dos bandas. Las bandas se pueden usar para determinar qué valor de desplazamiento particular aplicar a un píxel o grupo de píxeles. Por ejemplo, si un píxel tiene un valor de 10 (que está dentro de la segunda banda, es decir, valores 8-15, en el ejemplo anterior), entonces se puede agregar un desplazamiento asociado con la segunda banda al valor de píxel.
[11] A los efectos de señalar y generar los desplazamientos para las diversas bandas, las bandas se pueden agrupar en dos o más grupos. Para el filtrado de desplazamiento de banda, los píxeles pueden, por ejemplo, clasificarse en treinta y dos bandas (bandas 0-31) como se describió anteriormente, y las bandas pueden agruparse en dos grupos (por ejemplo, dos grupos de dieciséis bandas, un grupo de cuatro bandas y un grupo de veintiocho bandas, un grupo de ocho bandas y un grupo de veinticuatro bandas u otras agrupaciones similares). Las agrupaciones de bandas se pueden usar para determinar el orden en que los valores de desplazamiento para las bandas se señalan en el flujo de bits de vídeo codificado, y/o se pueden usar para determinar si una banda particular tiene un valor de desplazamiento distinto de cero. Los desplazamientos para las bandas pueden señalarse usando técnicas de codificación diferencial en las que un valor actual se señala como una diferencia entre el valor actual y un valor previo. La cantidad de ahorros de bits conseguida mediante el uso de tales técnicas de codificación puede depender en algunos casos del orden en el que se señalan los valores. Por ejemplo, se puede lograr un mayor ahorro de bits en los casos en que los valores de desplazamiento que están cerca de su valor se señalan consecutivamente. En algunos casos, se puede suponer que todos los valores de desplazamiento para un grupo en particular, como el segundo grupo, son cero.
5
10
15
20
25
30
35
40
45
50
55
60
65
[12] Según algunas técnicas, las agrupaciones de bandas son estáticas. Por ejemplo, de acuerdo con una técnica, las bandas de dieciséis del medio (bandas 8-23) siempre constituyen un grupo de dieciséis bandas, mientras que las ocho bandas más a la izquierda (bandas 0-7) y las ocho bandas más a la derecha (bandas 24-31) constituyen un segundo grupo de dieciséis bandas. Esta divulgación describe técnicas para determinar dinámicamente agrupaciones de bandas. Como se explicará con mayor detalle a continuación, un codificador de vídeo o descodificador de vídeo puede determinar dinámicamente una agrupación de bandas determinando dinámicamente un valor central basándose en los valores de píxel. En algunas configuraciones, puede señalarse una indicación de un valor central en el flujo de bits de vídeo codificado de manera que un descodificador de vídeo no necesita determinar el valor central basándose en los valores de píxel, sino que puede determinar el valor central basándose en la señalización explícita en el flujo de bits. El valor central se puede usar para determinar un primer grupo de bandas, y las bandas restantes pueden constituir un segundo grupo de bandas. Como quedará claro en los ejemplos a continuación, el término valor central como se usa en esta divulgación en general se refiere a cualquier valor que pueda usarse para alinear o alinear aproximadamente el centro de un grupo de bandas con un valor de píxel particular. Por lo tanto, un valor central como se usa en esta divulgación puede ser el valor de píxel particular sobre el que se alinea el centro del grupo de bandas o puede ser algún otro valor, tal como un valor de píxel inicial o final para una banda o grupo de bandas. En algunos casos, en lugar de identificar un valor de píxel, un valor central puede identificar una banda particular como la primera banda de un grupo, la última banda de un grupo o alguna otra identificación sobre la cual se puede alinear el centro de un grupo de bandas a un valor de píxel particular.
[13] La determinación dinámica de agrupaciones de bandas puede, en algunos casos, mejorar la señalización de los coeficientes de desplazamiento para el filtrado SAO y, por lo tanto, puede mejorar la calidad general de la codificación de vídeo. Esta determinación dinámica de agrupaciones de bandas también puede usarse para determinar para qué grupos de bandas el filtrado SAO beneficiará más a la calidad de codificación de vídeo, suponiéndose que otras bandas tienen un valor de desplazamiento de cero.
[14] La FIG. 1 es un diagrama de bloques que ilustra un sistema de codificación y descodificación de vídeo de ejemplo 10 que puede utilizar las técnicas de SAO adaptativas descritas en esta divulgación. Como se muestra en la FIG. 1, el sistema 10 incluye un dispositivo de origen 12 que genera datos de vídeo codificado que un dispositivo de destino 14 va a descodificar en un momento posterior. El dispositivo de origen 12 y el dispositivo de destino 14 pueden comprender cualquiera entre una amplia gama de dispositivos, incluyendo ordenadores de sobremesa, ordenadores plegables (es decir, portátiles), ordenadores de tableta, descodificadores, equipos telefónicos tales como los denominados teléfonos “inteligentes”, los denominados paneles “inteligentes”, televisores, cámaras, dispositivos de visualización, reproductores de medios digitales, consolas de videojuegos, un dispositivo de transmisión continua de vídeo o similares. En algunos casos, el dispositivo de origen 12 y el dispositivo de destino 14 pueden estar equipados para la comunicación inalámbrica.
[15] El dispositivo objetivo 14 puede recibir los datos de vídeo codificados que se van a descodificar, mediante un enlace 16. El enlace 16 puede comprender cualquier tipo de medio o dispositivo capaz de desplazar los datos de vídeo codificados desde el dispositivo de origen 12 al dispositivo de destino 14. En un ejemplo, el enlace 16 puede comprender un medio de comunicación para permitir al dispositivo de origen 12 transmitir los datos de vídeo codificados directamente al dispositivo de destino 14 en tiempo real. Los datos de vídeo codificados pueden modularse de acuerdo con una norma de comunicación, tal como un protocolo de comunicación inalámbrica, y transmitirse al dispositivo de destino 14. El medio de comunicación puede comprender cualquier medio de comunicación inalámbrica o alámbrica, tal como un espectro de radiofrecuencia (RF) o una o más líneas de transmisión física. El medio de comunicación puede formar parte de una red basada en paquetes, tal como una red de área local, una red de área amplia o una red global tal como Internet. El medio de comunicación puede incluir 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.
[16] De forma alternativa, los datos codificados pueden ser emitidos desde la interfaz de salida 22 a un dispositivo de almacenamiento 32. De forma similar, se puede acceder a los datos codificados desde el dispositivo de almacenamiento 32 mediante una interfaz de entrada. El dispositivo de almacenamiento 32 puede incluir cualquiera de una diversidad de medios de almacenamiento de datos, de acceso distribuido o local, tales como una unidad de disco duro, unos discos Blu-ray, discos DVD, discos CD-ROM, una memoria flash, memoria volátil o no volátil o cualquier otro medio de almacenamiento digital adecuado, para almacenar datos de vídeo codificados. En un ejemplo adicional, el dispositivo de almacenamiento 32 puede corresponder a un servidor de archivos o a otro dispositivo de almacenamiento intermedio que pueda retener el vídeo codificado generado por el dispositivo de origen 12. El dispositivo de destino 14 puede acceder a los datos de vídeo almacenados desde el dispositivo de almacenamiento 32 a través de transmisión en continuo o descarga. El servidor de archivos puede ser cualquier tipo de servidor capaz de almacenar datos de vídeo codificados y transmitir esos datos de vídeo codificados al dispositivo de destino 14. Ejemplos de servidores de archivos incluyen un servidor web (por ejemplo, para un sitio web), un servidor FTP, dispositivos de almacenamiento conectado en red (NAS) o una unidad de disco local. El dispositivo de destino 14 puede acceder a los datos de vídeo codificados mediante cualquier conexión de datos estándar, incluyendo una conexión a Internet. Esto puede incluir un canal inalámbrico (por ejemplo, una conexión Wi-Fi), una conexión alámbrica (por ejemplo, DSL, módem de cable, etc.), o una combinación de ambos que sea
5
10
15
20
25
30
35
40
45
50
55
60
65
adecuada para acceder a datos de vídeo codificados almacenados en un servidor de archivos. La transmisión de datos de vídeo codificados desde el dispositivo de almacenamiento 32 puede ser una transmisión en continuo, una transmisión de descarga o una combinación de ambas.
[17] Las técnicas de esta divulgación no están limitadas necesariamente a aplicaciones o configuraciones inalámbricas. Las técnicas pueden aplicarse a la codificación de vídeo, en soporte de cualquiera de una diversidad de aplicaciones de multimedia, tales como difusiones de televisión por el aire, transmisiones de televisión por cable, transmisiones de televisión por satélite, transmisiones de vídeo en continuo, por ejemplo, mediante Internet, codificación de vídeo digital para su almacenamiento en un medio de almacenamiento de datos, descodificación de vídeo digital almacenado en un medio de almacenamiento de datos, u otras aplicaciones. En algunos ejemplos, el sistema 10 puede configurarse para admitir la transmisión de vídeo unidireccional o bidireccional para admitir aplicaciones tales como la transmisión continua de vídeo, la reproducción de vídeo, la radiodifusión de vídeo y/o la videotelefonía.
[18] 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 y una interfaz de salida 22. En algunos casos, la interfaz de salida 22 puede incluir un modulador/desmodulador (módem) y/o un transmisor. En el dispositivo de origen 12, la fuente de vídeo 18 puede incluir una fuente tal como un dispositivo de captura de vídeo, por ejemplo, una videocámara, un archivo de vídeo que contiene vídeo previamente capturado, una interfaz de alimentación de vídeo para recibir vídeo desde un proveedor de contenido de vídeo y/o un sistema de gráficos de ordenador para generar datos de gráficos de ordenador como el vídeo de origen, o una combinación de tales fuentes. Como un ejemplo, si la fuente 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, 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.
[19] El vídeo capturado, pre-capturado o generado por ordenador puede ser codificado por el codificador de vídeo 20. Los datos de vídeo codificados pueden ser transmitidos directamente al dispositivo de destino 14 mediante la interfaz de salida 22 del dispositivo de origen 12. Los datos de vídeo codificados también (o de forma alternativa) pueden almacenarse en el dispositivo de almacenamiento 32 para un acceso posterior por el dispositivo de destino 14 u otros dispositivos, para su descodificación y/o reproducción.
[20] El dispositivo objetivo 14 incluye una interfaz de entrada 28, un descodificador de vídeo 30 y un dispositivo de visualización 32. En algunos casos, la interfaz de entrada 28 puede incluir un receptor y/o un módem. La interfaz de entrada 28 del dispositivo de destino 14 recibe los datos de vídeo codificados por el enlace 16. Los datos de vídeo codificados, comunicados por el enlace 16, o proporcionados en el dispositivo de almacenamiento 32, pueden incluir una diversidad de elementos sintácticos generados por el codificador de vídeo 20, para su uso por un descodificador de vídeo, tal como el descodificador de vídeo 30, en la descodificación de los datos de vídeo. Dichos elementos sintácticos pueden incluirse con los datos de vídeo codificados, transmitidos en un medio de comunicación, almacenados en un medio de almacenamiento o almacenados en un servidor de archivos.
[21] El dispositivo de visualización 32 puede estar integrado con, o ser externo a, el dispositivo objetivo 14. En algunos ejemplos, el dispositivo de destino 14 puede incluir un dispositivo de visualización integrado y también estar configurado para interconectarse con un dispositivo de visualización externo. En otros ejemplos, el dispositivo de destino 14 puede ser un dispositivo de visualización. En general, el dispositivo de visualización 32 visualiza los datos de vídeo descodificados ante un usuario y puede comprender cualquiera de una variedad de dispositivos de visualización, tales como 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.
[22] 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 Eficacia (HEVC), actualmente en fase de elaboración, y pueden conformarse al Modelo de Prueba HEVC (HM). Un borrador reciente de la norma HEVC, denominado “Borrador 8 de trabajo de la HEVC” o “WD8”, se describe en el documento JCTVC-H1003, de Bross et al., titulado "High Efficiency vídeo Coding (HEVC) Text Specification Draft 8" [“Memoria descriptiva textual de la Codificación de Vídeo de Alta Eficacia (HEVC), Borrador 8”], Equipo de Colaboración Conjunta en Codificación de Vídeo (JCT-VC) de ITU-T SG16 WP3 e ISO/IEC JTC1/SC29/WG11, 10.a reunión: Estocolmo, SE, del 11 al 20 de julio de 2012, que, a partir del 2 de octubre de 2012, se puede descargar desde el siguiente enlace:
http://phenix.int- evry.fr/jct/doc_end_user/documents/10_Stockholm/wg11JCTVC-J1003-v8.zip.
[23] De forma alternativa, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden funcionar de acuerdo con otras normas privadas o industriales, tales como la norma ITU-T H.264, de forma alternativa denominada MPEG-4, Parte 10, Codificación Avanzada de Vídeo (AVC), o ampliaciones de dichas normas. Sin embargo, las técnicas de esta divulgación no están limitadas a ninguna norma de codificación particular. Otros ejemplos de normas de compresión de vídeo incluyen MPEG-2 e ITU-T H.263.
[24] 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, en un codificador y descodificador de audio, y pueden incluir
5
10
15
20
25
30
35
40
45
50
55
60
65
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, en algunos ejemplos, las unidades MUX-DEMUX pueden conformarse al protocolo de multiplexado ITU H.223 o a otros protocolos, tales como el protocolo de datagramas de usuario (UDP).
[25] El codificador de vídeo 20 y el descodificador de vídeo 30 pueden implementarse como cualquiera de entre una variedad de circuitos adecuados de codificadores, 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 de campo (FPGA), lógica discreta, software, hardware, firmware o cualquier combinación de los mismos. Cuando las técnicas se implementan parcialmente en software, un dispositivo puede almacenar instrucciones para el software en un medio adecuado no transitorio, legible por ordenador, y ejecutar las instrucciones en hardware mediante uno o más procesadores para realizar las técnicas de esta divulgación. Cada uno del codificador de vídeo 20 y el descodificador de vídeo 30 pueden estar incluidos en uno o más codificadores o descodificadores, cualquiera de los cuales puede estar integrado como parte de un codificador/descodificador (CODEC) combinado en un dispositivo respectivo.
[26] El equipo JCT-VC está trabajando en el desarrollo de la norma HEVC. Los esfuerzos de normalización de HEVC se basan en un modelo en evolución de un dispositivo de codificación de vídeo denominado modelo de prueba de HEVC (HM). El HM supone varias capacidades adicionales de los dispositivos de codificación de vídeo respecto a dispositivos existentes de acuerdo, por ejemplo, a 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 puede proporcionar hasta treinta y tres modos de codificación de intra-predicción.
[27] En general, el modelo de funcionamiento del HM describe que una trama o imagen de vídeo puede dividirse en una secuencia de bloques arbolados o unidades de codificación de máximo tamaño (LCU), que incluyen muestras tanto de luma como de croma. Un bloque de árbol tiene un fin similar al de un macrobloque de la norma H.264. Un fragmento incluye un cierto número de bloques arbolados consecutivos en orden de codificación. Una trama o imagen de vídeo puede dividirse en uno o más fragmentos. Cada bloque arbolado puede dividirse en unidades de codificación (CU) de acuerdo con un árbol cuádruple. Por ejemplo, un bloque de árbol, como un nodo raíz del árbol cuaternario, puede dividirse en cuatro nodos hijo, y cada nodo hijo puede, a su vez, ser un nodo padre y dividirse en otros cuatro nodos hijo. Un nodo hijo final, no dividido, como nodo hoja del árbol cuaternario, comprende un nodo de codificación, es decir, un bloque de vídeo codificado. Los datos sintácticos asociados a un flujo de bits codificado pueden definir un número máximo de veces que puede dividirse un bloque de árbol, y también pueden definir un tamaño mínimo de los nodos de codificación.
[28] Una CU incluye un nodo de codificación y unidades de predicción (PU) y unidades de transformación (TU) asociadas al nodo de codificación. Un tamaño de la CU corresponde a un tamaño del nodo de codificación y debe ser de forma cuadrada. El tamaño de la CU puede variar desde 8x8 píxeles hasta el tamaño del bloque arbolado, con un máximo de 64x64 píxeles o más. Cada CU puede contener una o más PU y una o más TU. Los datos sintácticos asociados a una CU pueden describir, por ejemplo, la división de la CU en una o más PU. Los modos de división pueden diferir basándose en si la CU está codificada en modo de salto o directo, codificada en modo de intra-predicción o codificada en modo de inter-predicción. Las PU pueden dividirse para tener forma no cuadrada. Los datos sintácticos asociados a una CU también pueden describir, por ejemplo, la división de la CU en una o más TU de acuerdo con un árbol cuádruple. Una TU puede tener forma cuadrada o no cuadrada.
[29] La norma HEVC admite transformaciones de acuerdo con las TU, que pueden ser diferentes para diferentes Cu. El tamaño de las TU típicamente se basa en el tamaño de las PU de una CU dada, definida para una LCU dividida, aunque puede que no siempre sea así. Las TU son típicamente del mismo tamaño o de un tamaño más pequeño que las PU. En algunos ejemplos, las muestras residuales correspondientes a una CU pueden subdividirse en unidades más pequeñas mediante una estructura de árbol cuádruple conocida como "árbol cuádruple residual" (RQT). Los nodos hoja del RQT pueden denominarse unidades de transformación (TU). Los valores de diferencias de píxeles, asociados a las TU, pueden transformarse para generar coeficientes de transformación, que pueden cuantificarse.
[30] En general, una PU incluye datos relacionados con el proceso de predicción. Por ejemplo, cuando la PU está codificada de manera intramodal, la PU puede incluir datos que describan un modo de intrapredicción para la PU. Como otro ejemplo, cuando la PU está codificada de modo de inter, la PU puede incluir datos que definen un vector de movimiento para la PU. Los datos que definen el vector de movimiento para una PU pueden describir, por ejemplo, una componente horizontal del vector de movimiento, una componente vertical del vector de movimiento, una resolución para el vector de movimiento (por ejemplo, precisión de un cuarto de píxel o precisión de un octavo de píxel), una imagen de referencia a la que apunta el vector de movimiento y/o una lista de imágenes de referencia (por ejemplo, la Lista 0, la Lista 1 o la Lista C) para el vector de movimiento.
[31] En general, se usa una TU para los procesos de transformación y cuantificación. Una CU dada que presenta una o más PU también puede incluir una o más unidades de transformación (TU). Tras la predicción, el codificador de vídeo 20 puede calcular los valores residuales correspondientes a la PU. Los valores residuales
5
10
15
20
25
30
35
40
45
50
55
60
65
comprenden valores de diferencias de píxeles que se pueden transformar en coeficientes de transformación, cuantificar y escanear mediante las TU, para generar coeficientes de transformación en serie para la codificación por entropía. Esta divulgación usa típicamente el término “bloque de vídeo” para referirse a un nodo de codificación de una CU. En algunos casos específicos, esta divulgación también puede usar el término “bloque de vídeo” para referirse a un bloque de árbol, es decir, una LCU o una CU, que incluye un nodo de codificación y unas PU y TU.
[32] Una secuencia de vídeo incluye típicamente una serie de tramas o imágenes de vídeo. Un grupo de imágenes (GOP) comprende, en general, una serie de una o más de las imágenes de vídeo. Un GOP puede incluir datos sintácticos en una cabecera del GOP, en una cabecera de una o más de las imágenes o en otras ubicaciones, que describen un cierto número de imágenes incluidas en el GOP. Cada fragmento de una imagen puede incluir datos sintácticos de fragmento que describen un modo de codificación para el fragmento respectivo. Un codificador de vídeo 20 actúa típicamente sobre bloques de vídeo dentro de fragmentos de vídeo individuales con el fin de codificar los datos de vídeo. Un bloque de vídeo puede corresponder a un nodo de codificación dentro de una CU. Los bloques de vídeo pueden presentar tamaños fijos o variables y pueden diferir en tamaño de acuerdo con una norma de codificación especificada.
[33] En un ejemplo, el HM admite la predicción en diversos tamaños de PU. Suponiendo que el tamaño de una Cu particular es 2Nx2N, el HM admite intra-predicción en tamaños de PU de 2Nx2N o NxN e inter-predicción en tamaños de PU simétricos de 2Nx2N, 2NxN, Nx2N o NxN. El HM también admite la división asimétrica para la interpredicción en tamaños de PU de 2NxnU, 2NxnD, nLx2N y nRx2N. En la división asimétrica, una dirección de una CU no está dividida, mientras que la otra dirección está dividida 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”. Así pues, por ejemplo, “2NxnU” se refiere a una CU de tamaño 2Nx2N que está dividida horizontalmente con una PU de tamaño 2Nx0,5N encima y una PU de tamaño 2Nx1,5N debajo.
[34] En esta divulgación, "NxN" y "N por N" pueden usarse indistintamente para hacer referencia a las dimensiones de píxeles de un bloque de vídeo en términos de dimensiones verticales y horizontales, por ejemplo, 16x16 píxeles o 16 por 16 píxeles. En general, un bloque de tamaño 16x16 tendrá 16 píxeles en la dirección vertical (y = 16) y 16 píxeles en la dirección horizontal (x = 16). Asimismo, un bloque de tamaño NxN presenta, en general, N píxeles en una dirección vertical y N píxeles en una dirección horizontal, donde N representa un valor entero no negativo. Los píxeles en un bloque pueden disponerse en filas y columnas. Además, no es necesario que los bloques presenten necesariamente el mismo número de píxeles en la dirección horizontal y en la dirección vertical. Por ejemplo, los bloques pueden comprender NxM píxeles, donde M no es necesariamente igual a N.
[35] Tras la codificación de intra-predicción o inter-predicción mediante las PU de una CU, el codificador de vídeo 20 puede calcular datos residuales para las TU de la CU. Las PU pueden comprender datos de píxeles en el dominio espacial (también denominado dominio de píxeles) y las TU pueden comprender coeficientes en el dominio de las transformaciones tras la aplicación de una transformación, por ejemplo, una transformación de coseno discreta (DCT), una transformación de enteros, una transformación de ondícula 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 los valores de predicción correspondientes a las PU. El codificador de vídeo 20 puede formar las TU incluyendo los datos residuales para la CU y, a continuación, transformar las TU para generar coeficientes de transformación para la CU.
[36] Tras cualquier transformación para generar coeficientes de transformación, el codificador de vídeo 20 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 usados para representar los coeficientes, proporcionando compresión adicional. El proceso de cuantificación puede reducir la profundidad de bits asociada con algunos o 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.
[37] En algunos ejemplos, el codificador de vídeo 20 puede usar un orden de escaneo 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 escaneo 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 de acuerdo con el contexto (CAVLC), la codificación aritmética binaria adaptativa según el contexto (CABAC), la codificación aritmética binaria adaptativa según el contexto basada en la sintaxis (SBAC), la codificación por entropía por división de intervalos de probabilidad (PIPE) u otros procedimientos de codificación por entropía. El codificador de vídeo 20 también puede realizar la codificación por entropía de los elementos sintácticos asociados a los datos de vídeo codificados, para su uso mediante el descodificador de vídeo 30 en la descodificación de los datos de vídeo.
[38] Para realizar la CABAC, el codificador de vídeo 20 puede asignar un contexto dentro de un modelo contextual a un símbolo que se va a transmitir. El contexto puede referirse, por ejemplo, a si los valores contiguos del símbolo son distintos de cero o no. Para realizar la CAVLC, el codificador de vídeo 20 puede seleccionar un
5
10
15
20
25
30
35
40
45
50
55
60
65
código de longitud variable para un símbolo que se va a transmitir. Las palabras de código en la VLC pueden construirse de tal manera que los códigos relativamente más cortos correspondan a símbolos más probables, mientras que los códigos más largos correspondan a símbolos menos probables. De esta manera, el uso de la VLC puede lograr un ahorro en bits con respecto, por ejemplo, al uso de palabras de código de igual longitud para cada símbolo que se va a transmitir. La determinación de la probabilidad puede basarse en un contexto asignado al símbolo.
[39] En general, la adición de valores de desplazamiento a píxeles en una trama de vídeo puede mejorar la codificación en algunos casos. Por ejemplo, los valores de desplazamiento pueden aplicarse a los píxeles de un bloque de vídeo reconstruido para compensar los cambios de iluminación, los errores de cuantificación, o más en general, para hacer que los datos de vídeo descodificados se parezcan más a los datos de vídeo originales. Las técnicas de SAO permiten que se apliquen diferentes valores de desplazamiento a diferentes píxeles (o bloques de píxeles) dependiendo de los valores de píxel de un píxel (o bloque). El valor de desplazamiento que se aplicará a un píxel se puede determinar basándose en el valor de un píxel. Por ejemplo, si un píxel tiene un valor que está dentro de una primera banda, entonces se puede aplicar un desplazamiento asociado con la primera banda al píxel. Si el píxel tiene un valor que está dentro de una segunda banda, entonces se puede aplicar un desplazamiento asociado con la segunda banda al píxel, y así sucesivamente para todas las bandas.
[40] En un tipo de implementación de SAO, cada partición (que consiste en un conjunto de LCU) puede tener uno de tres tipos de desplazamiento (también llamados clasificaciones de píxeles). Los tres tipos de desplazamiento no son desplazamiento, tipo de desplazamiento basado en la clasificación de banda 0/1 y tipo basado en la clasificación de bordes 0/1/2/3. Cada tipo de desplazamiento de clasificación de banda tiene 16 valores de desplazamiento posibles, mientras que cada tipo basado en la clasificación de bordes tiene 4 valores de desplazamiento posibles. Si se elige uno de estos tipos de desplazamiento para ser utilizado para la partición, la información que indica el tipo de desplazamiento correspondiente y los valores de desplazamiento se puede señalar en el flujo de bits de vídeo codificado.
[41] La FIG. 2 es un diagrama conceptual que muestra las cuatro posibles clasificaciones de desplazamiento de borde utilizadas en una implementación de filtrado SAO. En el ejemplo de la FIG. 2, el tipo de desplazamiento de borde clasifica cada píxel basándose en la información de borde. Para cada una de las clasificaciones de borde mostradas en la FIG. 2, se calcula un tipo de borde para el píxel actual (es decir, un píxel particular que se está codificando) comparando el valor del píxel actual (C) con los valores de los píxeles vecinos (1 y 2). Para el desplazamiento de borde SAO de la clasificación cero (SAO_EO_0), el píxel actual se compara con los píxeles vecinos izquierdo y derecho. Para el desplazamiento de borde SAO de la clasificación uno (SAO_EO_1), el píxel actual se compara con los píxeles vecinos superior e inferior. Para el desplazamiento de borde SAO de la clasificación dos (SAO_ EO_2), el píxel actual se compara con los píxeles vecinos superior izquierdo e inferior derecho. Para el desplazamiento de borde SAO de la clasificación tres (SAO_EO_3), el píxel actual se compara con los píxeles vecinos inferior izquierdo y superior derecho.
[42] Inicialmente, se supone que el tipo de borde del píxel actual es cero. Si el valor del píxel actual C es igual a los valores de los píxeles vecinos izquierdo y derecho (1 y 2), el tipo de borde permanece en cero. Si el valor del píxel actual C es mayor que el valor del píxel vecino 1, el tipo de borde se incrementa en uno. Si el valor del píxel actual C es menor que el valor del píxel vecino 1, el tipo de borde se reduce en uno. Del mismo modo, si el valor del píxel actual C es menor que el valor del píxel vecino 2, el tipo de borde se incrementa en uno, y si el valor del píxel actual C es menor que el valor del píxel vecino 2, el tipo de borde se reduce en 1.
[43] Como tal, el píxel V actual puede tener un tipo de borde de -2, -1, 0, 1 o 2. El tipo de borde es -2 si el valor del píxel C actual es menor que ambos valores de los píxeles vecinos 1 y 2. El tipo de borde es -1 si el valor del píxel C actual es menor que un píxel vecino, pero igual al otro píxel vecino. El tipo de borde es 0 si el valor del píxel actual C es el mismo que el de ambos píxeles vecinos, o si el valor del píxel actual C es mayor que un píxel vecino, pero menor que el del otro píxel vecino. El tipo de borde es 1 si el valor del píxel actual C es mayor que un píxel vecino, pero igual al otro píxel vecino. El tipo de borde es 2 si el valor del píxel actual C es mayor que ambos valores de los píxeles vecinos 1 y 2. Para cada valor de tipo de borde distinto de cero, se determinan y señalan cuatro valores de desplazamiento en el flujo de bits de vídeo codificado para uso por un descodificador (es decir, eoffset .2, eoffset .1, eoffset 1, eoffset 2).
[44] A la vista de la descripción anterior, para cada clasificación de desplazamiento de borde, los valores de tipo de borde se pueden calcular con el siguiente pseudocódigo:
EdgeType = 0;
if (C > Pixel1) EdgeType = EdgeType + 1;
if (c < Pixel1) EdgeType = EdgeType - 1;
if (c > Pixel2) EdgeType = EdgeType + 1;
if (c < Pixel2) EdgeType = EdgeType - 1
[45] La FIG. 3A es un diagrama conceptual que muestra bandas de ejemplo basadas en valores de intensidad.
5
10
15
20
25
30
35
40
45
50
55
60
65
A modo de ejemplo, suponga que los valores de píxel oscilan entre 0 y 255, aunque también se pueden usar otros rangos. En tal ejemplo, el valor máximo mostrado en la FIG. 3A sería igual a 255, y cada una de las treinta y dos bandas mostradas en la FIG. 3A tendría un rango de 8. La banda más a la izquierda serían los valores de píxel 0-7, la siguiente banda sería para los valores de píxel de 8-15, la siguiente banda sería para los valores de píxel 16-23, y así sucesivamente, hasta la banda más a la derecha que sería para los valores de píxel 248-255. Para el desplazamiento de banda, los píxeles se clasifican en bandas diferentes basándose en la intensidad (es decir, para la clasificación de desplazamiento de banda, los píxeles se clasifican en una de las treinta y dos bandas). Basándose en la banda en la que se encuentra el valor de un píxel, se agrega un desplazamiento al píxel. Por ejemplo, si un píxel tiene un valor de 19, entonces el valor de píxel se encuentra dentro de la tercera banda que varía desde el valor de píxel 16 a 23. Por lo tanto, un desplazamiento asociado con la tercera banda se agregaría al valor de píxel de 19.
[46] Para fines de señalización de los valores de desplazamiento asociados con cada banda, las bandas se pueden agrupar en dos o más grupos. En algunas implementaciones, las dieciséis bandas en el centro (bandas 823) se clasifican en un grupo y las bandas restantes (bandas 0-7 y 24-31) se clasifican en un segundo grupo. Para cada grupo de bandas, se determinan 16 valores de desplazamiento (es decir, boffsetü,..., boffset15) y se señalan en el flujo de bits de vídeo codificado para su uso por un descodificador de vídeo. En algunas implementaciones, se puede suponer que todos los valores de desplazamiento para un grupo, como el segundo grupo, son 0, en cuyo caso no se debe incluir señalización de valores de desplazamiento para ese grupo en el flujo de bits de vídeo codificado.
[47] Como se muestra en la FIG. 3A, las dieciséis bandas medias (bandas 8-23) constituyen el primer grupo de bandas, mientras que las ocho bandas más a la izquierda (banda 0-7) constituyen la primera parte de un segundo grupo de bandas, y las ocho bandas más a la derecha (bandas 24-31) constituyen una segunda parte del segundo grupo de bandas. De acuerdo con las técnicas actuales, esta agrupación de bandas es fija. Esta divulgación describe técnicas para determinar de manera adaptativa las agrupaciones de bandas. Por ejemplo, esta divulgación describe técnicas para determinar un valor central para un conjunto de píxeles basado en valores de píxeles. El valor central puede, por ejemplo, determinarse basándose en un centro determinado para un grupo de bandas, y el centro para el grupo de bandas se puede determinar basándose en un valor medio para el conjunto de píxeles, un valor mediano de un conjunto de píxeles, o determinando el píxel donde se encuentra el pico de un histograma.
[48] Las bandas de valores de píxeles se pueden dividir en grupos basándose en el valor central. Por ejemplo, el valor central puede usarse para determinar un centro para un grupo de bandas. Nuevamente suponiendo treinta y dos bandas (bandas 0-31) y dos grupos, las ocho bandas a la derecha del centro y las ocho bandas a la izquierda del centro pueden ser el primer grupo de bandas. Las dieciséis bandas restantes pueden ser el segundo grupo. Por lo tanto, a diferencia de las técnicas anteriores en las que un grupo siempre consistía en las dieciséis bandas medias, esta divulgación describe técnicas en las que las agrupaciones de bandas pueden ser adaptativas basándose en un valor central que se determina basándose en los valores de píxel reales.
[49] La FIG. 3B muestra una de muchas agrupaciones posibles que pueden usarse de acuerdo con las técnicas de esta divulgación. En el ejemplo de la FIG. 3B, un centro se determina cerca de la banda 18. En consecuencia, el primer grupo de bandas incluye las ocho bandas a la izquierda del centro (bandas 11-18) y las ocho bandas a la derecha del centro (bandas 19-26). El segundo grupo de bandas incluye las bandas restantes, que en este ejemplo son las bandas 0-4 y las bandas 27-31. De nuevo, la FIG. 3B representa uno de los muchos escenarios posibles. El objetivo principal de la FIG. 3B es mostrar que, de acuerdo con las técnicas de esta divulgación, el centro para determinar el primer grupo de bandas puede determinarse de forma adaptativa y no necesita ser fijado en la ubicación mostrada en la FIG. 3A ni fijada en cualquier otra ubicación. Las técnicas para determinar un valor central y determinar de manera adaptativa agrupaciones de bandas se explicarán con mayor detalle a continuación.
[50] La FIG. 4 es un diagrama de bloques que ilustra un codificador de vídeo de ejemplo 20 que puede implementar las técnicas de filtrado SAO descritas en esta divulgación. El codificador de vídeo 20 puede realizar la intra-codificación y la inter-codificación de bloques de vídeo dentro de fragmentos de vídeo. La intra-codificación se basa en la predicción espacial para reducir o eliminar la redundancia espacial en el vídeo dentro de una trama o imagen de vídeo dada. La intercodificación se basa en la predicción temporal para reducir o eliminar la redundancia temporal en el vídeo dentro de tramas o imágenes adyacentes de una secuencia de vídeo. 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) o la bi-predicción (modo B), pueden referirse a cualquiera de varios modos de compresión de base temporal.
[51] En el ejemplo de la FIG. 4, el codificador de vídeo 20 incluye un módulo de partición 35, un módulo de predicción 41, una memoria de imágenes de referencia 64, un sumador 50, un módulo de transformación 52, un módulo de cuantificación 54 y un módulo de codificación por entropía 56. El módulo de predicción 41 incluye un módulo de estimación de movimiento 42, un módulo de compensación de movimiento 44 y un módulo de intra- predicción 46. Para la reconstrucción de bloques de vídeo, el codificador de vídeo 20 incluye además un módulo de cuantificación inversa 58, un módulo de transformación inversa 60 y un sumador 62. El filtro de desbloqueo 72 también se puede incluir para filtrar los límites del bloque para eliminar distorsiones de bloqueo del vídeo
5
10
15
20
25
30
35
40
45
50
55
60
65
reconstruido. Como se muestra en la FIG. 4, el codificador de vídeo 20 también incluye filtros de bucle adicionales, incluyendo el filtro 74 de desplazamiento adaptativo de muestras (SAO) y el filtro de bucle adaptativo (ALF) 76. Aunque el filtro de desbloqueo 72, el filtro SAO 74 y el ALF 76 se muestran como filtros en bucle en la FIG. 4, en algunas configuraciones, el filtro de desbloqueo 72, el filtro SAO 74 y la ALF 76 pueden implementarse como filtros de post-bucle.
[52] Como se representa en la FIG. 4, el codificador de vídeo 20 recibe datos de vídeo, y el módulo de división 35 divide los datos en bloques de vídeo. Esta división también puede incluir la división en fragmentos, elementos u otras unidades mayores, así como la división de bloques de vídeo, por ejemplo, de acuerdo con una estructura de árbol cuaternario de unas LCU y CU. El codificador de vídeo 20 ilustra, en general, los componentes que codifican bloques de vídeo de un fragmento de vídeo que se va a codificar. El fragmento puede dividirse en varios bloques de vídeo (y, posiblemente, en conjuntos de bloques de vídeo denominados elementos). El módulo de predicción 41 puede seleccionar una entre una pluralidad de posibles modos de codificación, tal como una entre una pluralidad de modos de intra-codificación, o una entre una pluralidad de modos de inter-codificación, para el bloque de vídeo actual, basándose en resultados de errores (por ejemplo, la velocidad de codificación y el nivel de distorsión). El módulo de predicción 41 puede proporcionar el bloque intra-codificado o inter-codificado resultante al sumador 50 para generar datos de bloques residuales, y al sumador 62 para reconstruir el bloque codificado para su uso como una imagen de referencia.
[53] El módulo de intra-predicción 46, dentro del módulo de procesamiento de predicción 41, puede realizar la codificación intra-predictiva del bloque de vídeo actual con respecto a uno o más bloques vecinos en la misma trama o fragmento que el bloque que va a codificarse, para proporcionar compresión espacial. El módulo de estimación de movimiento 42 y el módulo de compensación de movimiento 44, dentro del módulo de predicción 41, realizan la codificación inter-predictiva del bloque de vídeo actual con respecto a uno o más bloques predictivos en una o más imágenes de referencia, para proporcionar compresión temporal.
[54] El módulo de estimación de movimiento 42 puede estar configurado para determinar el modo de interpredicción para un fragmento de vídeo de acuerdo con un patrón predeterminado para una secuencia de vídeo. El patrón predeterminado puede designar fragmentos de vídeo en la secuencia como fragmentos predichos (fragmentos P), fragmentos predichos en dos direcciones (sectores B), o fragmentos P/B generalizados (fragmentos GPB). El módulo de estimación de movimiento 42 y el módulo de compensación de movimiento 44 pueden estar altamente integrados, pero se ilustran por separado con fines conceptuales. La estimación de movimiento, realizada mediante el módulo de estimación de movimiento 42, es el proceso de generar vectores de movimiento, que estiman el movimiento para los bloques de vídeo. Un vector de movimiento, por ejemplo, puede indicar el desplazamiento de una PU de un bloque de vídeo de una trama o imagen de vídeo actual con respecto a un bloque predictivo de una imagen de referencia.
[55] Un bloque predictivo es un bloque del que se descubre que se corresponde estrechamente con la PU del bloque de vídeo que se va a codificar en términos de diferencia de píxeles, que puede determinarse mediante la suma de una diferencia absoluta (SAD), suma de diferencia al cuadrado (SSD) u otras métricas de diferencia. En algunos ejemplos, el codificador de vídeo 20 puede calcular valores para posiciones fraccionarias de píxeles de imágenes de referencia almacenadas en la memoria de imágenes de referencia 64. Por ejemplo, el codificador de vídeo 20 puede interpolar valores de posiciones de un cuarto de píxel, posiciones de un octavo de píxel u otras posiciones de píxel fraccionarias de la imagen de referencia. Por lo tanto, el módulo de estimación de movimiento 42 puede realizar una búsqueda de movimiento con respecto a las posiciones de píxeles completos y a las posiciones de fracciones de píxel, y emitir un vector de movimiento con una precisión de fracciones de píxel.
[56] El módulo de estimación de movimiento 42 calcula un vector de movimiento para una PU de un bloque de vídeo en un fragmento inter-codificado, comparando la posición de la PU con la posición de un bloque predictivo de una imagen de referencia. La imagen de referencia puede seleccionarse de una primera lista de imágenes de referencia (Lista 0) o una segunda lista de imágenes de referencia (Lista 1), cada una de las cuales identifica una o más imágenes de referencia almacenadas en la memoria de imágenes de referencia 64. El módulo de estimación de movimiento 42 envía el vector de movimiento calculado al módulo de codificación por entropía 56 y al módulo de compensación de movimiento 44.
[57] La compensación de movimiento, realizada por el módulo de compensación de movimiento 44, puede implicar extraer o generar el bloque predictivo basándose en el vector de movimiento determinado por la estimación de movimiento, realizando posiblemente interpolaciones hasta la precisión de subpíxel. Tras recibir el vector de movimiento para la PU del bloque de vídeo actual, el módulo de compensación de movimiento 44 puede localizar el bloque predictivo al que apunta el vector de movimiento en una de las listas de imágenes de referencia. El codificador de vídeo 20 forma un bloque de vídeo residual restando los valores de píxeles del bloque predictivo a los valores de píxeles del bloque de vídeo actual que se está codificando, generando valores de diferencia de píxel. Los valores de diferencia de píxel forman datos residuales para el bloque, y pueden incluir componentes de diferencia de luminancia y croma. El sumador 50 representa el componente o los componentes que realizan esta operación de resta. El módulo de compensación de movimiento 44 también puede generar elementos sintácticos asociados a los bloques de vídeo y al fragmento de vídeo para su uso mediante el descodificador de vídeo 30 en la descodificación
5
10
15
20
25
30
35
40
45
50
55
60
65
de los bloques de vídeo del fragmento de vídeo.
[58] El módulo de intra-predicción pue46 de realizar la intra-predicción en un bloque actual, como una alternativa a la inter-predicción realizada por el módulo de estimación de movimiento 42 y el módulo de compensación de movimiento 44, como se describió anteriormente. En particular, el módulo de intra-predicción 46 puede determinar un modo de intra-predicción a usar para codificar un bloque actual. En algunos ejemplos, el módulo de intra- predicción 46 puede codificar un bloque actual usando varios modos de intra-predicción, por ejemplo, durante pasadas de codificación independientes, y el módulo de intra-predicción 46 (o el módulo de selección de modo 40, en algunos ejemplos) puede seleccionar un modo adecuado de intra-predicción a usar, entre los modos probados. Por ejemplo, el módulo de intra-predicción 46 puede calcular valores de distorsión de velocidad usando un análisis de distorsión de velocidad para los diversos modos de intra-predicción probados, y seleccionar el modo de intra- predicción que tenga las mejores características de distorsión de velocidad entre los modos probados. El análisis de distorsión de velocidad determina, en general, una magnitud de distorsión (o error) entre un bloque codificado y un bloque original no codificado que se codificó para generar el bloque codificado, así como una velocidad de transmisión de bits (es decir, un número de bits) utilizada para generar el bloque codificado. El módulo de intra- predicción 46 puede calcular razones a partir de las distorsiones y velocidades para los diversos bloques codificados, para determinar qué modo de intra-predicción presenta el mejor valor de distorsión de velocidad para el bloque.
[59] En cualquier caso, tras seleccionar un modo de intra-predicción para un bloque, el módulo de intra- predicción 46 puede proporcionar información que indica el modo de intra-predicción seleccionado para el bloque al módulo de codificación por entropía 56. El módulo de codificación por entropía 56 puede codificar la información que indica el modo de intra-predicción seleccionado de acuerdo con las técnicas de esta divulgación. El codificador de vídeo 20 puede incluir datos de configuración en el flujo de bits transmitido, que pueden incluir una pluralidad de tablas de índices de modos de intra-predicción y una pluralidad de tablas de índices de modos de intra-predicción modificadas (también denominadas tablas de asignación de palabras de código), definiciones de contextos de codificación para varios bloques e indicaciones del modo de intra-predicción más probable, una tabla de índices de modos de intra-predicción y una tabla de índices de modos de intra-predicción modificadas a utilizar para cada uno de los contextos.
[60] Después de que el módulo de predicción 41 genera el bloque predictivo para el bloque de vídeo actual, ya sea mediante la inter-predicción o la intra-predicción, el codificador de vídeo 20 forma un bloque de vídeo residual restando el bloque predictivo al bloque de vídeo actual. Los datos de vídeo residual en el bloque residual pueden ser incluidos en una o más TU y aplicados al módulo de procesamiento de transformación 52. El módulo de transformación 52 transforma los datos de vídeo residual en coeficientes de transformación residual, usando una transformación, tal como una transformación de coseno discreta (DCT) o una transformación conceptualmente similar. El módulo de procesamiento de transformación 52 puede convertir los datos de vídeo residual, desde un dominio de píxeles a un dominio de transformación, tal como un dominio de frecuencia.
[61] El módulo de transformación 52 puede enviar los coeficientes de transformación resultantes al módulo de cuantificación 54. El módulo de cuantificación 54 cuantifica los coeficientes de transformación para reducir adicionalmente la velocidad de transmisión de bits. El proceso de cuantificación puede reducir la profundidad de bits asociada con algunos o la totalidad de los coeficientes. El grado de cuantificación puede modificarse ajustando un parámetro de cuantificación. En algunos ejemplos, el módulo de cuantificación 54 puede realizar, a continuación, un escaneo de la matriz que incluye los coeficientes de transformación cuantificados. De forma alternativa, el módulo de codificación por entropía 56 puede realizar el escaneo.
[62] Tras la cuantificación, el módulo de codificación por entropía 56 codifica por entropía los coeficientes de
transformación cuantificados. Por ejemplo, el módulo de codificación por entropía 56 puede realizar una codificación de longitud variable adaptativa según el contexto (CAVLC), una codificación aritmética binaria adaptativa según el contexto (CABAC), una codificación aritmética binaria adaptativa según el contexto basándose en la sintaxis (SBAC), una codificación por entropía por división de intervalos de probabilidad (PIPE) u otra metodología o técnica de codificación por entropía. Tras la codificación por entropía realizada por el módulo de codificación por entropía 56, el flujo de bits codificado puede transmitirse al descodificador de vídeo 30, o archivarse para su posterior transmisión o recuperación mediante el descodificador de vídeo 30. El módulo de codificación por entropía 56 también puede
realizar la codificación por entropía de los vectores de movimiento y los otros elementos sintácticos para el
fragmento de vídeo actual que se está codificando.
[63] El módulo de cuantificación inversa 58 y el módulo 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íxeles, para su uso posterior como un bloque de referencia de una imagen de referencia. El módulo de compensación de movimiento 44 puede calcular un bloque de referencia sumando el bloque residual a un bloque predictivo de una de las imágenes de referencia de una de las listas de imágenes de referencia. El módulo de compensación de
movimiento 44 también puede aplicar uno o más filtros de interpolación al bloque residual reconstruido para calcular
valores de píxeles fraccionarios para su uso en la estimación de movimiento. El sumador 62 añade el bloque residual reconstruido al bloque predictivo con compensación de movimiento generado por el módulo de compensación de
5
10
15
20
25
30
35
40
45
50
55
60
65
movimiento 44 para generar un bloque de referencia para su almacenamiento en la memoria de imágenes de referencia 64.
[64] Antes del almacenamiento en la memoria 64, el bloque residual reconstruido se puede filtrar mediante uno o más filtros. Si se desea, el filtro 72 de desbloqueo también se puede aplicar para filtrar los bloques residuales reconstruidos con el fin de eliminar las distorsiones de bloqueo. También pueden utilizarse otros filtros de bucle (ya sea en el bucle de codificación o después del bucle de codificación) para suavizar las transiciones de píxeles o mejorar de otro modo la calidad del vídeo. Un ejemplo de estos otros filtros es el filtro SAO 74. El módulo de estimación de movimiento 42 y el módulo de compensación de movimiento 44 pueden usar el bloque de referencia como un bloque de referencia para realizar la inter-predicción de un bloque en una imagen o trama de vídeo subsiguiente.
[65] El filtro SAO 74 puede determinar valores de desplazamiento para el filtrado SAO de una manera que mejora la calidad de la codificación de vídeo. La mejora de la calidad de codificación de vídeo puede, por ejemplo, implicar la determinación de valores de desplazamiento que hacen que una imagen reconstruida se asemeje más a una imagen original. El codificador 20 de vídeo puede, por ejemplo, codificar los datos de vídeo utilizando múltiples pasadas con diferentes valores de desplazamiento y elegir, para su inclusión en un flujo de bits codificado, los valores de desplazamiento que ofrecen la mejor calidad de codificación, determinada basándose en un cálculo de distorsión de velocidad.
[66] En algunas configuraciones, el filtro SAO 74 puede configurarse para aplicar dos tipos de desplazamiento (por ejemplo, desplazamiento de banda y desplazamiento de borde) como se describió anteriormente. El filtro SAO 74 también puede a veces no aplicar desplazamiento, lo cual puede considerarse un tercer tipo de desplazamiento. El tipo de desplazamiento aplicado por el filtro SAO 74 puede señalarse explícita o implícitamente a un descodificador de vídeo. Al aplicar el desplazamiento del borde, los píxeles pueden clasificarse según la información de borde de acuerdo con la FIG. 2 y un filtro se puede determinar basándose en la clasificación de los bordes. Al aplicar el desplazamiento de banda, el filtro SAO 74 puede clasificar píxeles en diferentes bandas basándose en un valor de píxel, tal como un valor de intensidad, teniendo cada banda un desplazamiento asociado.
[67] Con el fin de señalar y generar los desplazamientos para las diversas bandas, el filtro SAO 74 puede agrupar las treinta y dos bandas en dos o más grupos, como se muestra en los ejemplos de las FIGs. 3A y 3B. El filtro SAO 74 puede, por ejemplo, agrupar cada una de las treinta y dos bandas en dos grupos (es decir, dos grupos de dieciséis bandas). Aunque esta divulgación en general describe bandas de agrupación en dos grupos de igual tamaño, también se pueden usar más de dos grupos y grupos de tamaños desiguales. Esta divulgación describe técnicas para determinar cómo se determinan estos grupos.
[68] Cada banda puede abarcar un rango de valores de píxeles. Un valor de píxel puede ser, por ejemplo, un valor de intensidad de píxel y puede describir cualquiera de un valor RGB, un valor de luminancia, un valor de crominancia, o cualquier otro tipo de valor de píxel. Las técnicas descritas en esta divulgación pueden, por ejemplo, aplicarse a las muestras de croma de los datos de vídeo, a las muestras de luma de los datos de vídeo, o a las muestras de croma y luma de los datos de vídeo.
[69] En algunas implementaciones, un primer grupo de bandas puede centrarse en el centro del rango de valores de píxeles posibles (es decir, max/2). Así, por ejemplo, si el rango de valores de píxeles es 0-255, el centro del primer grupo de bandas podría estar entre el valor de píxel 127 y el valor de píxel 128, con el primer grupo abarcando valores de 64-191. Una primera parte del segundo grupo puede abarcar valores de píxeles 0-63 y una segunda parte del segundo grupo puede abarcar valores de píxeles de 192 a 255. El primer grupo incluye dieciséis bandas, y el segundo grupo incluye dieciséis bandas (ocho bandas en la primera parte y ocho bandas en la segunda parte). Este ejemplo de agrupación se muestra en la FIG. 3A. Si bien los ejemplos de esta divulgación en general suponen que cada banda de las treinta y dos bandas tiene el mismo tamaño, en algunas implementaciones, se pueden usar bandas de tamaño desigual.
[70] De acuerdo con las técnicas de esta divulgación, el filtro SAO 74 puede determinar de manera adaptativa el centro del primer grupo en lugar de usar una agrupación estática de bandas. El filtro SAO 74 puede, por ejemplo, determinar el centro del primer grupo basándose en una media o mediana de valores de píxel para los píxeles en una región de una trama. El filtro sAo 74 también puede determinar el centro del primer grupo basándose en el píxel donde se encuentra el pico de un histograma. Una vez que el filtro SAO 74 determina el centro del primer grupo, el filtro SAO 74 puede a continuación determinar el segundo grupo. Nuevamente, suponiendo treinta y dos bandas, el primer grupo puede incluir aproximadamente ocho bandas a la izquierda del centro y aproximadamente ocho bandas a la derecha del centro. Las bandas restantes pueden formar el segundo grupo.
[71] Como ejemplo, supongamos que el valor máximo de píxel es 256, y el filtro SAO 74 determina un centro para un primer grupo de banda, basado en cualquiera de las técnicas descritas anteriormente, en el valor de píxel 90. En tal caso, con relación a la agrupación estática de la FIG. 3A, el primer grupo de bandas puede desplazarse hacia la izquierda, haciendo que la primera parte del segundo grupo sea más pequeña, al mismo tiempo que aumenta la segunda parte del segundo grupo. Sin embargo, si el filtro SAO 74 determina un centro para el primer
5
10
15
20
25
30
35
40
45
50
55
60
65
grupo de bandas en 170, entonces el primer grupo se desplaza hacia la derecha con relación a la agrupación estática de la FIG. 3A, haciendo que la primera parte del segundo grupo sea más grande y la segunda parte del segundo grupo más pequeña. El filtro SAO 74 puede determinar el centro de acuerdo con cualquiera de las técnicas descritas en esta divulgación para determinar una media, mediana o pico de un valor de histograma, o puede determinarse de alguna otra manera.
[72] Después de determinar un centro, el filtro SAO 74 puede determinar un primer grupo de bandas. El filtro SaO 74 puede determinar el primer grupo de bandas identificando las ocho bandas a la izquierda del centro y las ocho bandas a la derecha del centro. En algunos casos, el centro determinado puede encontrarse dentro de una banda. Suponiendo nuevamente 32 bandas iguales (bandas 0-31) y valores de píxel de 0-255, la banda 12 tiene un rango de valores de 96 a 103. Si, por ejemplo, el filtro SAO 74 determina un centro de 99, entonces el centro se encuentra dentro del rango de valores de píxeles cubiertos por la banda 12. En tal caso, el filtro SAO 74 puede configurarse para incluir siempre la banda 12 como una de las ocho bandas a la izquierda del centro o siempre incluir la banda 12 como una de las ocho bandas a la derecha del centro. Si el filtro SAO 74 identifica la banda 12 como una de las ocho bandas a la izquierda del centro, entonces el primer grupo de bandas incluye las bandas 5-20, mientras que el segundo grupo incluye las bandas 0-4 y 21-31. Si el filtro SAO 74 identifica la banda 12 como una de las ocho bandas a la derecha del centro, entonces el primer grupo de bandas incluye las bandas 6-21, mientras que el segundo grupo incluye las bandas 0-5 y las bandas 22-31. El filtro SAO 74 también se puede configurar para determinar si se debe incluir la banda 12 con las bandas a la izquierda del centro o las bandas a la derecha del centro, basándose en dónde se encuentra dentro de la banda. Como 99 está más cerca de 96 que de 103, el filtro SAO 74 puede configurarse para identificar la banda 12 como una de las bandas a la izquierda del centro en respuesta a la determinación de un centro de 99. En respuesta a la determinación de un centro de 101, sin embargo, que está más cerca de 103 que de 96, el filtro SAO 74 puede configurarse para identificar la banda 12 como una de las bandas a la derecha del centro.
[73] Aunque las técnicas de esta divulgación se han descrito en general usando ejemplos con treinta y dos bandas y dos grupos de dieciséis bandas, las técnicas de esta divulgación son en general aplicables a esquemas de SAO que usan más o menos bandas y más o menos grupos. Como uno de muchos ejemplos posibles, las técnicas de esta divulgación se pueden usar para determinar un primer grupo de cuatro bandas y un segundo grupo de veintiocho bandas, suponiéndose que todos los desplazamientos para el segundo grupo tienen un valor de cero. En otro ejemplo, se pueden usar dieciséis bandas, sesenta y cuatro bandas o alguna otra cantidad de bandas.
[74] El filtro SAO 74 puede generar y señalar desplazamientos para las bandas basándose en estas agrupaciones. Para cada grupo de bandas (suponiendo de nuevo grupos de dieciséis bandas), se pueden determinar dieciséis valores de desplazamiento y señalarse en el flujo de bits de vídeo codificado para usarlos en un descodificador de vídeo. En un ejemplo, el número de bits requeridos para enviar un grupo de dieciséis valores de desplazamiento de banda se puede reducir aprovechando las correlaciones entre los valores de desplazamiento de banda dentro del grupo. En otro ejemplo, los valores de desplazamiento de banda de una partición vecina se pueden usar para predecir los valores de desplazamiento de banda para un grupo de una partición actual. La partición vecina puede ser una partición causal para la partición actual (es decir, la partición vecina ya ha sido codificada). Los ejemplos de particiones vecinas incluyen particiones vecinas espacialmente tales como las particiones anteriores o a la izquierda de la partición actual, o particiones temporalmente vecinas tales como particiones en tramas previamente codificadas (por ejemplo, particiones co-ubicadas).
[75] Las técnicas para encontrar un centro se pueden aplicar a cada LCU o a grupos de LCU. Las técnicas pueden, por ejemplo, aplicarse a regiones de una trama que se determinan de manera análoga a la división de árbol cuádruple analizada anteriormente. Una trama puede dividirse en cuatro regiones; cada región puede dividirse en cuatro regiones más pequeñas, y así sucesivamente. El filtro SAO 74 puede determinar valores centrales como se describió anteriormente basándose en todos los valores de píxel dentro de un grupo de LCU u otra región de trama o puede determinar valores centrales submuestreando píxeles de una manera que utiliza menos que todos los valores de píxel disponibles en el LCU o grupo de LCU.
[76] El codificador de vídeo 20 de la FIG. 4 representa un ejemplo de un codificador de vídeo configurado para determinar un valor central para un conjunto de píxeles basado en los valores de; dividir las bandas de valores de píxeles en grupos basándose en el valor central; y, determinar valores de desplazamiento para las bandas basándose en los grupos. El codificador de vídeo 20 puede determinar un centro para un primer conjunto de píxeles determinando un valor medio para el conjunto de píxeles, determinando un valor mediano para el conjunto de píxeles y/o determinando el píxel donde se encuentra el pico de un histograma. El codificador de vídeo 20 puede determinar valores de desplazamiento para las bandas basándose en los grupos generando un valor de desplazamiento de banda para una banda de un primer grupo basándose en un segundo desplazamiento de banda del primer grupo. El codificador de vídeo 20 puede determinar valores de desplazamiento para las bandas basándose en los grupos generando un valor de desplazamiento de banda para una banda de un primer grupo basándose en un desplazamiento de banda determinado para una partición contigua. El codificador de vídeo 20 también puede señalar valores de desplazamiento de banda a un descodificador de vídeo basándose en los grupos. En algunas implementaciones, el codificador de vídeo 20 puede generar un elemento sintáctico para su inclusión en un flujo de bits codificado que indica el valor central determinado. En algunos casos, el elemento sintáctico puede
5
10
15
20
25
30
35
40
45
50
55
60
65
ser una indicación explícita del centro determinado para un grupo de bandas, pero el elemento sintáctico no necesariamente tiene que ser una indicación explícita del centro determinado. Por ejemplo, el valor central puede identificar la primera o la última banda de un grupo particular para permitir que un descodificador de vídeo reconstruya las mismas agrupaciones de bandas determinadas por el codificador de vídeo 20. En tal caso, las agrupaciones de bandas reconstruidas por el descodificador de vídeo se pueden alinear al mismo centro que las agrupaciones determinadas por el codificador de vídeo, aunque el centro no se señale explícitamente en el flujo de bits codificado.
[77] La FIG. 5 es un diagrama de bloques que ilustra un ejemplo de descodificador de vídeo 30 que puede implementar las técnicas descritas en esta divulgación. En el ejemplo de la FIG. 5, el descodificador de vídeo 30 incluye un módulo de descodificación por entropía 80, un módulo de predicción 81, un módulo de cuantificación inversa 86, un módulo de transformación inversa 88, un sumador 90, y memoria de imágenes de referencia 92. El módulo de predicción 81 incluye un módulo de compensación de movimiento 82 y un módulo de intra-predicción 84. En algunos ejemplos, el descodificador de vídeo 30 puede realizar un pase de descodificación que en general es recíproco al pase de codificación descrito con respecto al codificador de vídeo 20 de la FIG. 4.
[78] Durante el proceso de descodificación, el descodificador de vídeo 30 recibe un flujo de bits de vídeo codificado que representa bloques de vídeo de un fragmento de vídeo codificado y elementos sintácticos asociados, desde el codificador de vídeo 20. El módulo de descodificación por entropía 80 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 otros elementos sintácticos. El módulo de descodificación por entropía 80 remite los vectores de movimiento y otros elementos sintácticos al módulo de predicción 81. El descodificador de vídeo 30 puede recibir los elementos sintácticos en el nivel del fragmento de vídeo y/o el nivel del bloque de vídeo.
[79] Cuando el fragmento de vídeo se codifica como un fragmento intracodificado (I), el módulo de predicción intra 84 del módulo de predicción 81 puede generar datos de predicción para un bloque de vídeo del fragmento de vídeo actual, basándose en un modo de predicción intra señalado y datos de bloques descodificados previamente de la trama o imagen actual. Cuando la trama de vídeo es codificada como un fragmento inter-codificado (es decir, B, P o GPB), el módulo de compensación de movimiento 82 del módulo de predicción 81 genera bloques predictivos para un bloque de vídeo del fragmento de vídeo actual, basándose en los vectores de movimiento y otros elementos sintácticos 55 recibidos desde el módulo de descodificación por entropía 80. Los bloques predictivos pueden generarse a partir de una de las imágenes de referencia dentro de una de las listas de imágenes de referencia. El descodificador de vídeo 30 puede construir las listas de tramas de referencia, la Lista 0 y la Lista 1, usando técnicas de construcción predeterminadas basándose en las imágenes de referencia almacenadas en la memoria de imágenes de referencia 92.
[80] El módulo de compensación de movimiento 82 determina la información de predicción para un bloque de vídeo del fragmento de vídeo actual analizando los vectores de movimiento y otros elementos sintácticos, y usa la información de predicción para generar los bloques predictivos para bloque de vídeo actual que se está descodificando. Por ejemplo, el módulo de compensación de movimiento 82 usa algunos de los elementos sintácticos recibidos para determinar un modo de predicción (por ejemplo, intra-predicción o inter-predicción), usada para codificar los bloques de vídeo del fragmento de vídeo, un tipo de fragmento de inter-predicción (por ejemplo, fragmento B, fragmento P o fragmento GPB), información de construcción para una o más de las listas de imágenes de referencia para el fragmento, vectores de movimiento para cada bloque de vídeo inter-codificado del fragmento, estado de inter-predicción para cada bloque de vídeo inter-codificado del fragmento y otra información, para descodificar los bloques de vídeo en el fragmento de vídeo actual.
[81] El módulo de compensación de movimiento 82 también puede realizar la interpolación basándose en filtros de interpolación. El módulo de compensación de movimiento 82 puede usar filtros de interpolación como los usados por el codificador de vídeo 20 durante la codificación de los bloques de vídeo para calcular valores interpolados para píxeles sub-enteros de bloques de referencia. En este caso, el módulo de compensación de movimiento 82 puede determinar los filtros de interpolación usados por el codificador de vídeo 20 a partir de los elementos sintácticos recibidos y usar los filtros de interpolación para generar bloques predictivos.
[82] El módulo de cuantificación inversa 86 cuantifica de manera inversa, es decir, descuantifica, los coeficientes de transformación cuantificados proporcionados en el flujo de bits y descodificados por el módulo de descodificación por entropía 80. El proceso de cuantificación inversa puede incluir el uso de un parámetro de cuantificación calculado por el codificador de vídeo 20 para cada bloque de vídeo en el fragmento de vídeo, para determinar un grado de cuantificación y, asimismo, un grado de cuantificación inversa que debería aplicarse. El módulo de transformación inversa 88 aplica una transformación inversa, por ejemplo, una DCT inversa, una transformación inversa entera o un proceso de transformación inversa conceptualmente similar a los coeficientes de transformación, a fin de producir bloques residuales en el dominio de píxeles.
[83] Después de que el módulo de compensación de movimiento 82 genera el bloque predictivo para el bloque de vídeo actual basándose en los vectores de movimiento y otros elementos sintácticos, el descodificador de vídeo 30 forma un bloque de vídeo descodificado sumando los bloques residuales del módulo de transformación inversa
5
10
15
20
25
30
35
40
45
50
55
60
65
88 y los correspondientes bloques predictivos generados por el módulo de compensación de movimiento 82. El sumador 90 representa el componente o los componentes que llevan a cabo esta operación de suma. Los bloques de vídeo descodificados formados por el sumador 90 pueden a continuación ser filtrados por un filtro de desbloqueo 93, un filtro SAO 94 y un filtro de bucle adaptativo 95. Los bloques de vídeo descodificados en una trama o imagen dada son a continuación almacenados en la memoria de imágenes de referencia 92, que almacena imágenes de referencia usadas para la posterior compensación de movimiento. La memoria de imágenes de referencia 92 almacena también vídeo descodificado para su presentación posterior en un dispositivo de visualización, tal como el dispositivo de visualización 32 de la FIG. 1.
[84] El filtro SAO 94 puede configurarse para aplicar el mismo filtrado (por ejemplo, desplazamiento de borde y desplazamiento de banda) como filtro SAO 74 descrito anteriormente. De esta manera, como parte de la realización del desplazamiento de banda, el filtro SAO 74 puede determinar un valor central para un primer grupo de bandas como se describió anteriormente en referencia a la FIG. 4. El valor central puede, por ejemplo, determinarse basándose en una métrica tal como el valor medio de píxeles, el valor mediano de píxeles, o determinado basándose en un píxel donde el pico de un histograma corresponde a una LCU o un grupo de LCU.
[85] En algunas implementaciones, el filtro SAO 94 puede recibir en el flujo de bits de vídeo una indicación de un centro determinado en un codificador de vídeo. La indicación puede tomar la forma de un valor central real calculado por un codificador de vídeo o puede tomar la forma de una identificación de una primera banda para el primer grupo, una indicación de una última banda de una primera parte de un segundo grupo, un valor medio para el primer grupo, u otro tipo de información que permita que el filtro SAO 94 determine la misma agrupación de bandas utilizada por un codificador de vídeo. Basándose en un primer grupo y un segundo grupo determinados basándose en el valor central, el filtro SAO 94 puede generar valores de desplazamiento basándose en la información recibida en un flujo de bits de vídeo codificado. Para uno de los grupos, como el segundo grupo, se puede suponer que todos los valores de desplazamiento son iguales a cero.
[86] Para un grupo de LCU, el filtro SAO 94 puede determinar un valor central determinando un valor de píxel medio para el grupo de LCU. El filtro SAO 94 puede determinar el valor medio del píxel sumando los valores de píxel de todos o algunos de los píxeles en el grupo de LCU y dividiendo por el número de píxeles cuyos valores forman parte de la suma, siendo el valor resultante el valor medio del píxel para el grupo de LCU. La unidad de filtro SAO 94 puede entonces usar el valor medio de píxel determinado de la manera descrita anteriormente para determinar agrupaciones de bandas.
[87] De forma alternativa, para un grupo de LCU, el filtro SAO 94 puede determinar un valor central determinando un valor medio de píxeles para el grupo de LCU. El filtro SAO 94 puede determinar el valor de píxel mediano identificando el valor en el que la mitad de los valores de píxel del grupo de LCU es mayor que el valor, y la mitad de los valores de píxel para el grupo de LCU es menor que el valor. La unidad de filtro SAO 94 puede usar entonces el valor de píxel medio determinado de la manera descrita anteriormente para determinar agrupaciones de bandas.
[88] De forma alternativa, para un grupo de LCU, el filtro SAO 94 puede determinar un valor central determinando dónde se encuentra el pico de un histograma para una LCU o un grupo de LCU. En general, se puede considerar que un histograma es una representación estadística de la distribución de los valores de píxel para el grupo de LCU. Por lo tanto, el filtro SAO 94 puede determinar el pico del histograma identificando el valor de píxel o los valores de píxel que aparecen con mayor frecuencia en el grupo de LCU. La unidad de filtro SAO 94 puede entonces usar el valor determinado del pico en el histograma de la manera descrita anteriormente para determinar agrupaciones de bandas.
[89] Los tres ejemplos de cómo determinar un valor central (p. ej., media, mediana, pico del histograma) pueden realizarse mediante uno o ambos filtros SAO 74 y SAO 94 y no son las tres únicas técnicas posibles por las que puede determinarse un valor central. Se contempla que las técnicas de esta divulgación, que en general se refieren a determinar dinámicamente las agrupaciones de bandas para señalar valores de desplazamiento de banda, pueden ser compatibles con otras técnicas de este tipo para determinar un valor central.
[90] El descodificador de vídeo 30 de la FIG. 5 representa un ejemplo de un descodificador de vídeo configurado para determinar un valor central para un conjunto de píxeles basándose en los valores de los píxeles, dividir las bandas de valores de píxeles en grupos basándose en el valor central y determinar valores de desplazamiento para las bandas basándose en los grupos. En algunas implementaciones, el descodificador de vídeo 30 puede determinar el valor central al recibir un elemento sintáctico que indica el valor central. Como se describió anteriormente, el elemento sintáctico puede ser o no una indicación explícita del valor central. En algunas implementaciones, el descodificador de vídeo 30 puede determinar el valor central determinando un valor medio para el conjunto de píxeles, determinando un valor medio para el conjunto de píxeles, y/o determinando el píxel donde se encuentra el pico de un histograma. El descodificador de vídeo 30 puede determinar valores de desplazamiento para las bandas basándose en los grupos generando un valor de desplazamiento de banda para una banda de un primer grupo basándose en un segundo desplazamiento de banda del primer grupo. El descodificador de vídeo 30 puede determinar valores de desplazamiento para las bandas basándose en los grupos generando un valor de
5
10
15
20
25
30
35
40
45
50
55
60
65
desplazamiento de banda para una banda de un primer grupo basándose en un desplazamiento de banda determinado para una partición contigua. El descodificador de vídeo 30 también puede reconstruir los valores de desplazamiento de banda señalados desde un codificador de vídeo basándose en los grupos.
[91] De esta manera, el descodificador de vídeo 30 de la FIG. 5 representa un ejemplo de un descodificador de vídeo configurado para determinar un valor central para un conjunto de píxeles basándose en valores de píxeles para el grupo; dividir las bandas de valores de píxeles en grupos basándose en el valor central; y determinar valores de desplazamiento para las bandas basándose en los grupos. El descodificador de vídeo 30 puede determinar el valor central recibiendo un elemento sintáctico que indica el valor central, determinar el valor central determinando un valor medio para el conjunto de píxeles, determinar el valor central determinando un valor mediano para el conjunto de píxeles, o determinar el valor central comprende determinar el píxel donde se encuentra el pico de un histograma. El conjunto de píxeles puede, por ejemplo, incluir un grupo de unidades de codificación (LCU) más grandes. El descodificador de vídeo 30 puede determinar valores de desplazamiento para las bandas basándose en los grupos generando un valor de desplazamiento de banda para una banda de un primer grupo basándose en un segundo desplazamiento de banda del primer grupo. El descodificador de vídeo 30 puede determinar valores de desplazamiento para las bandas basándose en los grupos generando un valor de desplazamiento de banda para una banda de un primer grupo basándose en un desplazamiento de banda determinado para una partición contigua.
[92] La FIG. 6 muestra un diagrama de flujo que ilustra las técnicas de filtrado SAO descritas en esta divulgación. Las técnicas de la FIG. 6 puede realizarse mediante un codificador de vídeo con un módulo de filtrado SAO tal como un codificador de vídeo 20 o un descodificador de vídeo 30. Las técnicas de la FIG. 6 se describirán con referencia al descodificador de vídeo 30, aunque debe entenderse que las técnicas de la FIG. 6 son aplicables a una amplia gama de dispositivos de codificación de vídeo y no están limitadas solo a descodificadores de vídeo.
[93] El descodificador de vídeo 30 determina un valor central para un conjunto de píxeles basándose en valores de píxeles (610). El descodificador de vídeo 30 puede, por ejemplo, determinar el valor central determinando un valor medio para el conjunto de píxeles, determinando un valor medio para el conjunto de píxeles, determinando un píxel donde se encuentra el pico de un histograma. El descodificador de vídeo 30 divide las bandas de valores de píxeles en grupos basándose en el valor central (620). El descodificador de vídeo 30 determina los valores de desplazamiento para las bandas basándose en los grupos (630). El descodificador de vídeo 30 puede determinar valores de desplazamiento para las bandas basándose en los grupos generando un valor de desplazamiento de banda para una banda de un primer grupo basándose en un segundo desplazamiento de banda del primer grupo. El descodificador de vídeo 30 también puede determinar valores de desplazamiento para las bandas basándose en los grupos generando un valor de desplazamiento de banda para una banda de un primer grupo basándose en un desplazamiento de banda determinado para una partición contigua.
[94] 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 pueden almacenarse en o transmitirse a través de, como una o más instrucciones o código, en un medio legible por ordenador o 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.
[95] 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. También, cualquier conexión recibe debidamente la denominación de medio legible por ordenador. Por ejemplo, si las instrucciones se transmiten desde un sitio web, 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. El término disco, tal como se utiliza en el presente documento, incluye un disco compacto (CD), un disco láser, un disco óptico, un disco versátil digital (DVD), un disco flexible y un disco Blu-ray, donde algunos discos habitualmente emiten datos magnéticamente, mientras que otros discos emiten datos ópticamente con láseres. Las combinaciones de lo anterior deberían incluirse también dentro del alcance de los medios legibles por ordenador.
[96] Las instrucciones pueden ser ejecutadas por uno o más procesadores, tales como uno o más procesadores de señales digitales (DSP), microprocesadores de propósito general, circuitos integrados específicos de la aplicación (ASIC), formaciones lógicas programables en el terreno (FPGA) u otros circuitos lógicos integrados o discretos
5 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 codec combinado. Además, las técnicas podrían
10 implementarse completamente en uno o más circuitos o elementos lógicos.
[97] Las técnicas de la presente divulgación se pueden implementar en una amplia variedad de dispositivos o aparatos, incluidos 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
15 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 codec 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.
20
[98] Se han descrito diversos ejemplos. Estos y otros ejemplos están dentro del alcance de las siguientes reivindicaciones.

Claims (12)

10
15
20
2.
25
3.
30
4.
35
40
5.
45 6.
50 7.
55 8.
9.
60
REIVINDICACIONES
Un procedimiento de codificación de vídeo para señalar, en un flujo de bits codificado, los valores de desplazamiento utilizados en el filtrado de desplazamiento adaptativo de muestras (SAO) basado en bandas, comprendiendo el procedimiento:
agrupar bandas de valores de píxeles en dos o más grupos de bandas, en el que cada banda de las bandas de valores de píxeles comprende un intervalo de valores de píxeles, y en el que cada grupo de los dos o más grupos de bandas comprende una o más bandas;
determinar valores de desplazamiento para las bandas basándose en los dos o más grupos de bandas; caracterizado por
determinar (610) valores centrales para cada uno de una pluralidad de conjuntos de píxeles, en el que para cada conjunto el valor central se basa en los valores reales de los píxeles en el conjunto; y
en el que, para cada conjunto de píxeles, la agrupación (620) de las bandas de píxeles en dos o más grupos de bandas se determina dinámicamente basándose en el valor central para el conjunto de manera que la agrupación de bandas en conjuntos de píxeles es adaptativa.
El procedimiento según la reivindicación 1, en el que el procedimiento es realizado por un descodificador de vídeo y para cada conjunto de píxeles, en el que determinar el valor central comprende recibir un elemento sintáctico, y en el que dividir las bandas de valores de píxel en dos o más grupos de bandas comprende determinar los dos o más grupos de bandas basándose en el elemento sintáctico, comprendiendo además el procedimiento la aplicación de un filtro de desplazamiento adaptativo de muestras, SAO, basado en los valores de desplazamiento.
El procedimiento según la reivindicación 1, en el que el procedimiento se realiza mediante un codificador de vídeo, y en el que el procedimiento comprende adicionalmente para cada conjunto de píxeles:
generar un elemento sintáctico para su inclusión en un flujo de bits codificado, en el que el elemento sintáctico indica el valor central.
El procedimiento según la reivindicación 1, en el que la determinación del valor central comprende uno de:
a) determinar un valor medio para el conjunto de píxeles; o
b) determinar un valor mediano para el conjunto de píxeles; o
c) determinar el valor donde se encuentra el pico de un histograma de los valores de píxel del conjunto.
El procedimiento según la reivindicación 1, en el que cada conjunto de píxeles comprende un grupo de unidades de codificación más grandes, LCU.
El procedimiento según la reivindicación 1, en el que la determinación de valores de desplazamiento para las bandas basándose en los dos o más grupos de bandas comprende generar un valor de desplazamiento de banda para una banda de un primer grupo basándose en un segundo desplazamiento de banda del primer grupo.
El procedimiento según la reivindicación 1, en el que determinar valores de desplazamiento para las bandas basándose en los dos o más grupos de bandas comprende generar un valor de desplazamiento de banda para una banda de un primer grupo en el conjunto actual de píxeles basándose en un desplazamiento de banda determinado para otro conjunto de píxeles.
Un medio de almacenamiento legible por ordenador que almacena instrucciones operables para hacer que uno o más procesadores lleven a cabo el procedimiento de cualquiera de las reivindicaciones 1 a 7.
Un aparato de codificación de vídeo (20; 30) para señalar, en un flujo de bits codificado, los valores de desplazamiento utilizados en el filtrado de desplazamiento adaptativo de muestras (SAO) basado en banda, comprendiendo el aparato:
medios (74; 94) para agrupar bandas de valores de píxeles en dos o más grupos de bandas, en el que cada banda de las bandas de valores de píxeles comprende un rango de valores de píxel y en el que cada grupo de los dos o más grupos de bandas comprende una o más bandas;
medios (74; 94) para determinar valores de desplazamiento para las bandas basados en los dos o más
5
10
15
20
25
30
35
40
45
grupos de bandas; caracterizado por:
medios (74; 94) para determinar los valores centrales para cada uno de una pluralidad de conjuntos de píxeles, en el que para cada conjunto el valor central se basa en los valores reales de los píxeles en el conjunto; y
en el que los medios para agrupar bandas de valores de píxel en dos o más grupos de bandas se configuran dinámicamente para determinar la división de las bandas de píxeles en dos o más grupos de bandas basándose en el valor central para el conjunto de manera que la agrupación de bandas en conjuntos de píxeles sea adaptativa.
10. El aparato según la reivindicación 9, en el que el aparato comprende un descodificador de vídeo (30), y en el que los medios para determinar el valor central comprenden medios para recibir un elemento sintáctico y los medios para dividir las bandas de valores de píxel en dos o más grupos de bandas comprenden medios para determinar los dos o más grupos de bandas basándose en el elemento sintáctico; y en el que el aparato comprende además medios para aplicar un filtro de desplazamiento adaptativo de muestras, SAO, basado en los valores de desplazamiento.
11. El aparato de la reivindicación 9, en el que el aparato comprende un codificador de vídeo (20), y en el que el aparato comprende, además:
medios para generar un elemento sintáctico para su inclusión en un flujo de bits codificado, en el que el elemento sintáctico indica el valor central.
12. El aparato de la reivindicación 9, en el que el medio para determinar el valor central comprende uno de:
a) medios para determinar un valor medio para el conjunto de píxeles; o
b) medios para determinar un valor medio para el conjunto de píxeles; o
c) medios para determinar el valor donde se encuentra el pico de un histograma de los valores de píxel del conjunto.
13. El aparato de la reivindicación 9, en el que cada conjunto de píxeles comprende un grupo de unidades de codificación más grandes, LCU.
14. El aparato de la reivindicación 9, en el que los medios para determinar los valores de desplazamiento para las
bandas basados en los dos o más grupos de bandas comprenden medios para generar un valor de
desplazamiento de banda para una banda de un primer grupo basándose en un segundo desplazamiento de banda del primer grupo.
15. El aparato según la reivindicación 9, en el que los medios para determinar los valores de desplazamiento para las bandas basándose en los dos o más grupos de bandas comprenden medios para generar un valor de desplazamiento de banda para una banda de un primer grupo en el conjunto actual de píxeles basándose en un desplazamiento de banda determinado para otro conjunto de píxeles.
ES12795667.0T 2011-11-04 2012-11-02 Filtro de desplazamiento de banda central adaptativo para codificación de vídeo Active ES2688359T3 (es)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201161556085P 2011-11-04 2011-11-04
US201161556085P 2011-11-04
US201213646102 2012-10-05
US13/646,102 US10051289B2 (en) 2011-11-04 2012-10-05 Adaptive center band offset filter for video coding
PCT/US2012/063273 WO2013067318A1 (en) 2011-11-04 2012-11-02 Adaptive center band offset filter for video coding

Publications (1)

Publication Number Publication Date
ES2688359T3 true ES2688359T3 (es) 2018-11-02

Family

ID=47291233

Family Applications (1)

Application Number Title Priority Date Filing Date
ES12795667.0T Active ES2688359T3 (es) 2011-11-04 2012-11-02 Filtro de desplazamiento de banda central adaptativo para codificación de vídeo

Country Status (16)

Country Link
US (1) US10051289B2 (es)
EP (1) EP2774372B1 (es)
JP (1) JP5833249B2 (es)
KR (1) KR101622860B1 (es)
CN (1) CN104012091B (es)
AU (1) AU2012332318B2 (es)
BR (1) BR112014010337B1 (es)
CA (1) CA2853798C (es)
ES (1) ES2688359T3 (es)
HU (1) HUE039957T2 (es)
IL (1) IL232237A (es)
IN (1) IN2014CN03163A (es)
MY (1) MY169625A (es)
SG (1) SG11201401490VA (es)
WO (1) WO2013067318A1 (es)
ZA (1) ZA201404050B (es)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10051289B2 (en) 2011-11-04 2018-08-14 Qualcomm Incorporated Adaptive center band offset filter for video coding
GB201119206D0 (en) 2011-11-07 2011-12-21 Canon Kk Method and device for providing compensation offsets for a set of reconstructed samples of an image
US9277194B2 (en) * 2011-11-08 2016-03-01 Texas Instruments Incorporated Method and apparatus for image and video coding using hierarchical sample adaptive band offset
BR112014011149A2 (pt) 2011-11-08 2017-05-16 Motorola Mobility Llc dispositivos e métodos para codificação e / ou de sinalização de deslocamento adaptativo de amostra
WO2013103892A1 (en) 2012-01-05 2013-07-11 General Instrument Corporation Devices and methods for sample adaptive offset coding and/or selection of edge offset parameters
US9955153B2 (en) 2012-01-05 2018-04-24 Google Technology Holdings LLC Devices and methods for sample adaptive offset coding
US20130188741A1 (en) * 2012-01-21 2013-07-25 General Instrument Corporation Devices and methods for sample adaptive offset coding and/or selection of band offset parameters
US9549176B2 (en) 2012-04-06 2017-01-17 Google Technology Holdings LLC Devices and methods for signaling sample adaptive offset (SAO) parameters
WO2013175736A1 (ja) 2012-05-25 2013-11-28 パナソニック株式会社 動画像符号化方法、動画像符号化装置、動画像復号方法、動画像復号装置、および、動画像符号化復号装置
CA2841107C (en) * 2012-05-25 2023-12-19 Panasonic Corporation Image encoding and decoding using context adaptive binary arithmetic coding with a bypass mode
CN103650511B (zh) 2012-05-25 2017-12-15 太阳专利托管公司 运动图像解码方法及运动图像解码装置
BR112013032418B1 (pt) * 2012-06-04 2023-04-11 Sun Patent Trust Método e aparelho de codificação de imagem em movimento, método e aparelho de decodificação de imagem em movimento, e aparelho de codificação e decodificação de imagem em movimento
US10477208B2 (en) * 2012-09-24 2019-11-12 Intel Corporation Histogram segmentation based local adaptive filter for video encoding and decoding
GB2509563A (en) * 2013-01-04 2014-07-09 Canon Kk Encoding or decoding a scalable video sequence using inferred SAO parameters
JP2015076866A (ja) * 2013-10-11 2015-04-20 日本放送協会 画像符号化装置、画像復号装置、及びプログラム
CN111263149B (zh) * 2013-12-12 2021-10-26 三星电子株式会社 视频编码方法和设备以及视频解码方法和设备
CN110177283B (zh) * 2014-04-04 2021-08-03 北京三星通信技术研究有限公司 对像素标识进行处理的方法和装置
WO2015165030A1 (en) 2014-04-29 2015-11-05 Microsoft Technology Licensing, Llc Encoder-side decisions for sample adaptive offset filtering
CN104506867B (zh) * 2014-12-01 2017-07-21 北京大学 采样点自适应偏移参数估计方法及装置
EP3280141A4 (en) * 2015-05-12 2018-02-28 Samsung Electronics Co., Ltd. Method and apparatus for encoding and decoding image
KR102423880B1 (ko) 2015-10-06 2022-07-21 삼성전자주식회사 인코더의 작동방법과 상기 인코더를 포함하는 시스템 온 칩의 작동 방법
GB2568038B (en) * 2017-10-30 2020-12-02 Imagination Tech Ltd Systems and methods for processing a stream of data values
GB2567881B (en) 2017-10-30 2021-02-10 Imagination Tech Ltd Systems and methods for processing a stream of data values
WO2019135294A1 (ja) * 2018-01-05 2019-07-11 株式会社ソシオネクスト 符号化方法、復号方法、符号化装置、復号装置、符号化プログラム及び復号プログラム

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6678411B1 (en) 1999-06-04 2004-01-13 Look Dynamics, Inc. Apparatus and method for characterizing, encoding, storing, and searching images by shape
US6990637B2 (en) 2003-10-23 2006-01-24 Microsoft Corporation Graphical user interface for 3-dimensional view of a data collection based on an attribute of the data
GB2411331A (en) 2004-02-19 2005-08-24 Trigenix Ltd Rendering user interface using actor attributes
DE102004044111B4 (de) 2004-09-08 2015-05-07 Seereal Technologies Gmbh Verfahren und Vorrichtung zum Kodieren und Rekonstruieren von computergenerierten Videohologrammen
EP2228997B1 (en) 2005-09-20 2017-10-18 Mitsubishi Electric Corporation Image decoding method, Image decoder.
US7668382B2 (en) 2006-02-24 2010-02-23 Microsoft Corporation Block-based fast image compression
KR100846512B1 (ko) 2006-12-28 2008-07-17 삼성전자주식회사 영상의 부호화, 복호화 방법 및 장치
CN103124354B (zh) 2007-09-28 2016-01-20 杜比实验室特许公司 处理视频信息
KR101489785B1 (ko) 2008-07-22 2015-02-06 에스케이 텔레콤주식회사 웨이블렛 변환 계수 부호화를 위한 적응적 필터 탭 결정장치와 방법, 그것을 이용한 웨이블렛 변환 장치와 방법,및 그를 위한 기록 매체
US20110116546A1 (en) 2009-07-06 2011-05-19 Xun Guo Single pass adaptive interpolation filter
US20110116545A1 (en) 2009-11-17 2011-05-19 Jinwen Zan Methods and devices for in-loop video deblocking
WO2011111341A1 (ja) 2010-03-09 2011-09-15 パナソニック株式会社 動画像復号装置、動画像符号化装置、動画像復号回路及び動画像復号方法
CN101790092B (zh) 2010-03-15 2013-02-06 河海大学常州校区 基于图像块编码信息的智能滤波器设计方法
KR101529992B1 (ko) 2010-04-05 2015-06-18 삼성전자주식회사 픽셀 그룹별 픽셀값 보상을 위한 비디오 부호화 방법과 그 장치, 및 픽셀 그룹별 픽셀값 보상을 위한 비디오 복호화 방법과 그 장치
US9055305B2 (en) * 2011-01-09 2015-06-09 Mediatek Inc. Apparatus and method of sample adaptive offset for video coding
US8861617B2 (en) 2010-10-05 2014-10-14 Mediatek Inc Method and apparatus of region-based adaptive loop filtering
US9161041B2 (en) * 2011-01-09 2015-10-13 Mediatek Inc. Apparatus and method of efficient sample adaptive offset
CN102137263B (zh) 2011-05-09 2013-07-03 松日数码发展(深圳)有限公司 基于cnm关键帧分类的分布式视频编码及解码方法
WO2012175195A1 (en) * 2011-06-20 2012-12-27 Panasonic Corporation Simplified pipeline for filtering
US9344743B2 (en) * 2011-08-24 2016-05-17 Texas Instruments Incorporated Flexible region based sample adaptive offset (SAO) and adaptive loop filter (ALF)
US8913656B2 (en) * 2011-10-14 2014-12-16 Mediatek Inc. Method and apparatus for in-loop filtering
US10051289B2 (en) 2011-11-04 2018-08-14 Qualcomm Incorporated Adaptive center band offset filter for video coding

Also Published As

Publication number Publication date
US10051289B2 (en) 2018-08-14
KR101622860B1 (ko) 2016-05-19
US20130114674A1 (en) 2013-05-09
JP2014533048A (ja) 2014-12-08
IN2014CN03163A (es) 2015-08-14
HUE039957T2 (hu) 2019-02-28
EP2774372A1 (en) 2014-09-10
CN104012091B (zh) 2017-05-24
ZA201404050B (en) 2017-08-30
SG11201401490VA (en) 2014-06-27
BR112014010337A2 (pt) 2017-04-18
CA2853798C (en) 2017-03-07
AU2012332318B2 (en) 2015-12-03
IL232237A0 (en) 2014-06-30
BR112014010337B1 (pt) 2022-05-17
JP5833249B2 (ja) 2015-12-16
KR20140088214A (ko) 2014-07-09
RU2014122539A (ru) 2015-12-10
IL232237A (en) 2017-01-31
WO2013067318A1 (en) 2013-05-10
MY169625A (en) 2019-04-23
AU2012332318A1 (en) 2014-05-29
CN104012091A (zh) 2014-08-27
EP2774372B1 (en) 2018-06-27
CA2853798A1 (en) 2013-05-10

Similar Documents

Publication Publication Date Title
ES2688359T3 (es) Filtro de desplazamiento de banda central adaptativo para codificación de vídeo
ES2715555T3 (es) Predicción residual de componentes cruzadas adaptativa
ES2884375T3 (es) Intra predicción de croma de modelo lineal para codificación de vídeo
ES2611349T3 (es) Codificación de Indicador de bloque codificado (CBF) para el formato de muestra 4:2:2 en 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
ES2928248T3 (es) Relleno de segmentos en unidades NAL de la porción codificada
ES2637490T3 (es) Grupos de coeficientes y codificación de coeficientes para barridos de coeficientes
ES2549145T3 (es) Reducción de contexto para codificación aritmética binaria adaptativa según el contexto
ES2705746T3 (es) Inicialización de estados y probabilidades de contexto para codificación de entropía adaptativa al contexto
ES2742026T3 (es) Determinación de vector de movimiento para codificación de vídeo
ES2891175T3 (es) Realizar de manera adaptativa operaciones de suavizado
ES2656494T3 (es) Filtro intra-suavizante para codificación de vídeo
ES2874848T3 (es) Restricción de unidades de predicción en segmentos b a interpredicción unidireccional
ES2677100T3 (es) Filtrado de bucle alrededor de los límites de segmento o de límites de mosaico en la codificación de video
ES2763443T3 (es) Codificación de vídeo en modo intra
ES2608595T3 (es) Mejora del rendimiento para la codificación del nivel de coeficientes de la CABAC
ES2973247T3 (es) Indicación de modo de intra-predicción mejorada para codificación de vídeo utilizando el modo contiguo
ES2613136T3 (es) Señalización condicional de información de temporización de recuento del orden de imágenes para la temporización de vídeo en la codificación de vídeo
ES2750124T3 (es) Elementos sintácticos de señalización para coeficientes de transformada para subconjuntos de una unidad de codificación a nivel de hoja
EP3713233A1 (en) Coding significant coefficient information in transform skip mode
ES2616486T3 (es) Obtención de contexto para la codificación de última posición para la codificación de vídeo
ES2736308T3 (es) Predicción de texturas entre capas para codificación de vídeo
ES2842082T3 (es) Indicación de alineación de tipos de imágenes entre capas en la codificación de vídeo multicapa
ES2856099T3 (es) Señalización mejorada de identificadores de capa para puntos de operación de un codificador de vídeo
RU2575418C2 (ru) Фильтр адаптивного смещения центральной полосы для видеокодирования