ES2677100T3 - Filtrado de bucle alrededor de los límites de segmento o de límites de mosaico en la codificación de video - Google Patents
Filtrado de bucle alrededor de los límites de segmento o de límites de mosaico en la codificación de video Download PDFInfo
- Publication number
- ES2677100T3 ES2677100T3 ES12755945.8T ES12755945T ES2677100T3 ES 2677100 T3 ES2677100 T3 ES 2677100T3 ES 12755945 T ES12755945 T ES 12755945T ES 2677100 T3 ES2677100 T3 ES 2677100T3
- Authority
- ES
- Spain
- Prior art keywords
- filter
- video
- partial
- adaptive loop
- block
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000001914 filtration Methods 0.000 title claims abstract description 68
- 238000000034 method Methods 0.000 claims abstract description 99
- 230000036961 partial effect Effects 0.000 claims abstract description 90
- 230000003044 adaptive effect Effects 0.000 claims abstract description 47
- 230000033001 locomotion Effects 0.000 description 66
- 230000000694 effects Effects 0.000 description 26
- 238000010586 diagram Methods 0.000 description 24
- 239000013598 vector Substances 0.000 description 24
- 238000004891 communication Methods 0.000 description 16
- 238000007906 compression Methods 0.000 description 14
- 238000013139 quantization Methods 0.000 description 14
- 230000006835 compression Effects 0.000 description 13
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 description 12
- 239000013074 reference sample Substances 0.000 description 12
- 230000002238 attenuated effect Effects 0.000 description 11
- 230000005540 biological transmission Effects 0.000 description 11
- 238000012545 processing Methods 0.000 description 8
- 239000011159 matrix material Substances 0.000 description 7
- 230000002123 temporal effect Effects 0.000 description 7
- 238000013500 data storage Methods 0.000 description 5
- 238000005192 partition Methods 0.000 description 5
- 238000011002 quantification Methods 0.000 description 5
- 238000006073 displacement reaction Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000001052 transient effect Effects 0.000 description 4
- 239000000523 sample Substances 0.000 description 3
- 230000011664 signaling Effects 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 230000006978 adaptation Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000009795 derivation Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 229910003460 diamond Inorganic materials 0.000 description 1
- 239000010432 diamond Substances 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000009499 grossing Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/80—Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
- H04N19/82—Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/117—Filters, e.g. for pre-processing or post-processing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/167—Position within a video image, e.g. region of interest [ROI]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/182—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a pixel
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/85—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
- H04N19/86—Methods 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
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
Un procedimiento para realizar el filtrado de bucle adaptativo, ALF, en un proceso de codificación de video, comprendiendo el procedimiento: Determinar (820), para un píxel actual, que uno o más píxeles correspondientes a los coeficientes de filtro de una máscara de filtro para un filtro de bucle adaptativo están a través de uno de un límite de segmento o de un límite de mosaico; caracterizado por, basado en la determinación, definir un filtro de bucle adaptativo parcial, en el que la definición del filtro de bucle adaptativo parcial comprende: eliminar (822) los primeros coeficientes de filtro correspondientes al uno o más píxeles a través del límite de segmento o de mosaico desde la máscara de filtro; eliminar (824) segundos coeficientes de filtro correspondientes a píxeles en un interior del límite de segmento y de mosaico desde la máscara de filtro para mantener una máscara de filtro simétrica respecto a los primeros coeficientes de filtro eliminados; y crear (826) una máscara de filtro parcial para el filtro de bucle adaptativo parcial usando los coeficientes de filtro restantes en la máscara de filtro, en el que la máscara de filtro parcial define el filtro de bucle adaptativo parcial; y realizar (830) el filtrado de bucle adaptativo en el píxel actual usando el filtro de bucle adaptativo parcial.
Description
5
10
15
20
25
30
35
40
45
50
55
60
65
DESCRIPCION
Filtrado de bucle alrededor de los limites de segmento o de limites de mosaico en la codificacion de video CAMPO TECNICO
[1] La presente divulgacion se refiere a la codificacion de video y, mas particularmente, a tecnicas para el filtrado de bucle en un proceso de codificacion de video.
ANTECEDENTES
[2] Las capacidades de video digital pueden incorporarse a una amplia gama de dispositivos, que incluya televisores digitales, sistemas de radiodifusion directa digital, sistemas de radiodifusion inalambrica, asistentes digitales personales (PDA), ordenadores portatiles o de sobremesa, camaras digitales, dispositivos de grabacion digitales, reproductores de medios digitales, dispositivos de videojuegos, consolas de videojuegos, telefonos moviles o de radio por satelite, dispositivos de videoconferencia y similares. Los dispositivos de video digital implementan tecnicas de compresion de video, 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, Codificacion Avanzada de Video (AVC) (H.264/AVC), la norma de Codificacion de Video de Alta eficiencia (HEVC), actualmente en desarrollo, y las extensiones de dichas normas, para transmitir, recibir y almacenar informacion de video digital de forma mas eficaz.
[3] Las tecnicas de compresion de video incluyen la prediccion espacial y/o la prediccion temporal para reducir o eliminar la redundancia inherente en las secuencias de video. Para la codificacion de video basada en bloques, una trama o un segmento de video puede dividirse en bloques. Cada bloque se puede particionar adicionalmente. Los bloques en una trama o segmento intracodificado (I) se codifican usando la prediccion espacial con respecto a muestras de referencia en bloques vecinos en la misma trama o segmento. Los bloques en una trama o segmento intercodificado (P o B) pueden usar la prediccion espacial con respecto a muestras de referencia en bloques vecinos en la misma trama o segmento, o la prediccion temporal con respecto a muestras de referencia en otras tramas de referencia. La prediccion espacial o temporal da como resultado un bloque predictivo para un bloque que se va a codificar. Los datos residuales representan diferencias de pfxeles entre el bloque original que se va a codificar y el bloque predictivo.
[4] Un bloque intercodificado se codifica de acuerdo con un vector de movimiento que apunta a un bloque de muestras de referencia que forman el bloque predictivo, y a los datos residuales que indican la diferencia entre el bloque codificado y el bloque predictivo. Un bloque intracodificado se codifica de acuerdo con un modo de intracodificacion y con los datos residuales. Para una mayor compresion, los datos residuales pueden transformarse desde el dominio de los pfxeles al dominio de las transformadas, dando como resultado unos coeficientes de transformada residuales, que luego se pueden cuantificar. Los coeficientes de transformada cuantificados, inicialmente dispuestos en una formacion bidimensional, pueden escanearse en un orden particular con el fin de producir un vector unidimensional de coeficientes de transformada para la codificacion por entropfa.
[5] Se hace referencia a los siguientes artfculos: "Slice Boundary Processing and Picture Layer Raw Byte Sequence Payload" [Procesamiento de lfmite de fragmento y carga util de secuencia de bytes sin procesar de la capa de imagen] por C-Y TSAI ET AL, 4. REUNION DE JCT-VC; 95 REUNION DE MPEG; 20-1-2011 - 28-1-2011; DAEGU; (EQUIPO DE COLABORACION CONJUNTA SOBRE LA CODIFICACION DE VIDEO DE ISO/IEC JTC1/SC29/WG11 E ITU-T SG.16), no. JCTVC-D128, 15 de enero de 2011; y "Sample Adaptive Offset with Padding at LCU, Slice, and Image Boundaries" [Desviacion adaptativa de muestra con relleno en LCU, Fragmento y limites de imagen] por CM FU ET AL, 6. REUNION DE JCT-VC; 97 REUNION DE MPEG; 14-7-2011 - 22-7-2011; TORINO; (EQUIPO DE COLABORACION CONJUNTA SOBRE LA CODIFICACION DE VIDEO DE ISO/IEC JTC/SC29/WG11 E ITU-T SG. 16), n. ° JCTVC-F093, 15 de julio de 2011.
SUMARIO
[6] La invencion se define en las reivindicaciones a las que esta dirigida ahora la referencia.
[7] Los detalles de uno o mas ejemplos se exponen en los dibujos adjuntos y en la siguiente descripcion. Otras caracterfsticas, objetivos y ventajas resultaran evidentes a partir de la descripcion y de los dibujos, y a partir de las reivindicaciones.
BREVE DESCRIPCION DE LOS DIBUJOS
[8]
La FIG. 1 es un diagrama de bloques que ilustra un ejemplo de sistema de codificacion y decodificacion de video.
5
10
15
20
25
30
35
40
45
50
55
60
65
La FIG. 2 es un diagrama conceptual que muestra la clasificacion basada en regiones para un filtro de bucle adaptativo.
La FIG. 3 es un diagrama conceptual que muestra la clasificacion basada en bloques para un filtro de bucle adaptativo.
La FIG. 4 es un diagrama conceptual que muestra mosaicos de una trama.
La FIG. 5 es un diagrama conceptual que muestra segmentos de una trama.
La FIG. 6 es un diagrama conceptual que representa un filtro de bucle en los lfmites de segmento y de mosaico. La FIG. 7 es un diagrama conceptual que representa filtros parciales asimetricos en un lfmite horizontal.
La FIG. 8 es un diagrama conceptual que representa filtros parciales asimetricos en un lfmite vertical.
La FIG. 9 es un diagrama conceptual que representa filtros parciales simetricos en un lfmite horizontal.
La FIG. 10 es un diagrama conceptual que representa filtros parciales simetricos en un lfmite vertical.
La FIG. 11 es un diagrama de bloques que ilustra un ejemplo de codificador de video.
La FIG. 12 es un diagrama de bloques que ilustra un ejemplo de decodificador de video.
La FIG. 13 es un diagrama de flujo que representa un ejemplo de procedimiento de filtrado de bucle de acuerdo con la divulgacion.
DESCRIPCION DETALLADA
[9] En general, esta divulgacion describe tecnicas para codificar datos de video. En particular, esta divulgacion describe tecnicas para el filtrado de bucle en un proceso de codificacion de video.
[10] Los dispositivos de video digital implementan tecnicas de compresion de video para codificar y decodificar informacion de video digital con mas eficacia. La compresion de video puede aplicar tecnicas de prediccion espacial (intratramas) y/o de prediccion temporal (intertramas) para reducir o eliminar la redundancia intrfnseca en las secuencias de video.
[11] Ademas, existe una nueva norma de codificacion de video, concretamente la Codificacion de Video de Alta Eficiencia (HEVC) que se esta desarrollando por el Equipo de Colaboracion Conjunta sobre Codificacion de Video (JCT-VC) del Grupo de Expertos sobre Codificacion de Video (VCEG) de ITU-T y el Grupo de Expertos sobre Imagenes en Movimiento (MPEG) de ISO/IEC. Un borrador reciente de la norma del HEVC, denominado "HEVC Working Draft 6" o "WD6," se describe en el documento JCTVC-H1003, Bross et al., "High efficiency video coding (HEVC) text specification draft 6" [Borrador 6 de memoria descriptiva textual de codificacion de video de alta eficiencia (HEVC) (para FDIS y contenido)], Equipo de Colaboracion Conjunta sobre Codificacion de Video (JCT-VC) de ITU-T SG16 WP3 e ISO/IEC JTC1/SC29/WG11, 8a Reunion: San Jose, California, USA, Febrero de 2012, que, a partir del 1 de junio de 2012, se puede descargar de
http://phenix.int-evry.fr/ict/doc end user/documents/8_San%20Jose/weg11JCTVC-H1003-v22.zip.
http://phenix.int-evry.fr/ict/doc end user/documents/8_San%20Jose/weg11JCTVC-H1003-v22.zip.
[12] Un ultimo WD reciente de HEVC, y denominado HEVC WD7 en lo sucesivo, esta disponible, desde el 2 de agosto de 2012, en
http://phenix.int-evrv.fr/ict/doc usuario final / documents / 9 Geneva / wg11 /JCTVC-I1003-v6.zip.
http://phenix.int-evrv.fr/ict/doc usuario final / documents / 9 Geneva / wg11 /JCTVC-I1003-v6.zip.
[13] Para la codificacion de video de acuerdo con el borrador de trabajo actual del HEVC, como ejemplo, una trama de video puede particionarse en unidades de codificacion. Una unidad de codificacion (CU) se refiere en general a una region de imagen que sirve de unidad basica a la que se aplican diversas herramientas de codificacion para la compresion de video. Una CU tiene usualmente un componente de luminancia, que puede indicarse con Y, y dos componentes de croma, que pueden indicarse con U y V. Dependiendo del formato de muestreo de video, el tamano de los componentes U y V, en terminos de numero de muestras, puede ser el mismo o diferente al tamano del componente Y. Una CU es tfpicamente cuadrada, y puede considerarse similar a un llamado macrobloque, por ejemplo, en virtud de otras normas de codificacion de video, tales como la ITU-T H.264.
[14] Para lograr una mejor eficiencia de codificacion, una unidad de codificacion puede tener tamanos variables dependiendo del contenido de video. Ademas, una unidad de codificacion se puede dividir en bloques mas pequenos para la prediccion o la transformada. En particular, cada unidad de codificacion puede particionarse ademas en unidades de prediccion (PU) y en unidades de transformada (TU). Las unidades de prediccion pueden considerarse similares a las denominadas particiones bajo otras normas de codificacion de video, tales como H.264.
5
10
15
20
25
30
35
40
45
50
55
60
65
Las unidades de transformada (TU) se refieren a bloques de datos residuales a los que se aplica una transformada para producir coeficientes de transformada.
[15] La codificacion, de acuerdo con algunos de los aspectos propuestos actualmente de la norma HEVC en proceso de elaboracion, se describira en esta solicitud con fines ilustrativos. Sin embargo, las tecnicas descritas en esta divulgacion pueden ser utiles para otros procesos de codificacion de video, tales como otros procesos de codificacion de video estandar o patentado.
[16] Los esfuerzos de normalizacion de la HEVC se basan en un modelo de un dispositivo de codificacion de video denominado Modelo de Prueba de HEVC (HM). El HM supone varias capacidades de los dispositivos de codificacion de video respecto a dispositivos de acuerdo con, por ejemplo, la norma ITU-T H.264/AVC. Por ejemplo, mientras que la norma H.264 proporciona nueve modos de codificacion de intraprediccion, el HM proporciona hasta treinta y cinco modos de codificacion de intraprediccion.
[17] De acuerdo con el HM, una CU puede incluir una o mas unidades de prediccion (PU) y/o una o mas unidades de transformada (TU). Los datos sintacticos dentro de un flujo de bits pueden definir una unidad de codificacion maxima (LCU), que es la CU mas grande en terminos del numero de pfxeles. En general, una CU tiene un proposito similar a un macrobloque de la norma H.264, excepto en que una CU no tiene una distincion de tamano. Por tanto, una CU puede dividirse en subCU. En general, las referencias de esta divulgacion a una CU pueden referirse a la unidad de codificacion maxima de una imagen o a una subCU de una LCU. Una LCU puede dividirse en subCU y cada subCU puede dividirse ademas en subCU. Los datos sintacticos para un flujo de bits pueden definir un numero maximo de veces en que puede dividirse una LCU, denominada profundidad de CU. Por consiguiente, un flujo de bits tambien puede definir una unidad de codificacion minima (SCU). Esta divulgacion tambien usa el termino "bloque" o "particion" para referirse a cualquiera de entre una CU, una PU o una TU. En general, "parte" puede referirse a cualquier subconjunto de una trama de video.
[18] Una LCU puede asociarse a una estructura de datos de arbol cuadruple. En general, una estructura de datos de arbol cuadruple incluye un nodo por cada CU, donde un nodo rafz corresponde a la LCU. Si una CU se divide en cuatro subCU, el nodo correspondiente a la CU incluye cuatro nodos hoja, cada uno de los cuales corresponde a una de las subCU. Cada nodo de la estructura de datos de arbol cuadruple puede proporcionar datos sintacticos para la CU correspondiente. Por ejemplo, un nodo en el arbol cuadruple puede incluir un indicador de division, que indique si la CU correspondiente al nodo esta dividida o no en varias subCU. Los elementos sintacticos para una CU pueden definirse de manera recursiva y pueden depender de si la CU esta dividida o no en varias subCU. Si una CU no esta dividida adicionalmente, se denomina CU hoja.
[19] Ademas, las TU de las CU hoja tambien pueden asociarse a respectivas estructuras de datos de arbol cuadruple. Es decir, una CU hoja puede incluir un arbol cuadruple que indique como la CU hoja esta particionada en varias TU. Esta divulgacion hace referencia al arbol cuadruple que indica como una LCU esta particionada como un arbol cuadruple de CU, indicando el arbol cuadruple como una CU hoja esta particionada en varias TU como un arbol cuadruple de TU. El nodo rafz de un arbol cuadruple de TU corresponde en general a una CU hoja, mientras que el nodo rafz de un arbol cuadruple de CU corresponde en general a una LCU. Las TU del arbol cuadruple de TU que no estan divididas se denominan TU hoja.
[20] Una CU hoja puede incluir una o mas unidades de prediccion (PU). En general, una PU representa la totalidad o una parte de la CU correspondiente, y puede incluir datos para recuperar una muestra de referencia para la PU. Por ejemplo, cuando la PU se codifica de forma intermodal, la PU puede incluir datos que definan un vector de movimiento para la PU. Los datos que definan el vector de movimiento pueden describir, por ejemplo, un componente horizontal del vector de movimiento, un componente vertical del vector de movimiento, una resolucion para el vector de movimiento (por ejemplo, con una precision de un cuarto de pixel o con una precision de un octavo de pixel), una trama de referencia a la que apunte el vector de movimiento y/o una lista de referencia (por ejemplo, lista 0 o lista 1) para el vector de movimiento. Los datos de la CU hoja que definan la(s) PU tambien pueden describir, por ejemplo, una particion de la CU en una o mas PU. Los modos de particion pueden diferir dependiendo de si la CU no se codifica de forma predictiva, se codifica en el modo de intraprediccion o se codifica en el modo de interprediccion. Para la intracodificacion, una PU puede tratarse de la misma forma que una unidad de transformada de hoja descrita a continuacion.
[21] Para codificar un bloque (por ejemplo, una unidad de prediccion (PU) de datos de video), se deriva primero un predictor para el bloque. Puede derivarse el predictor ya sea a traves de la intraprediccion (I) (es decir, prediccion espacial) o de la interprediccion (P o B) (es decir, prediccion temporal). Por lo tanto, algunas unidades de prediccion pueden intracodificarse (I) usando la prediccion espacial con respecto a los bloques de referencia vecinos en la misma trama, u otras unidades de prediccion pueden intercodificarse (P o B) con respecto a los bloques de referencia en otras tramas. Los bloques de referencia usados para la prediccion pueden incluir valores reales de pfxeles en las denominadas posiciones de pfxeles enteros como muestras de referencia, o valores de pfxeles sintetizados producidos por interpolacion en posiciones de pfxeles fraccionarios como muestras de referencia.
5
10
15
20
25
30
35
40
45
50
55
60
65
[22] Tras la identificacion de un predictor, se calcula la diferencia entre el bloque de datos de video original y su predictor. Esta diferencia tambien se denomina residual de prediccion y se refiere a las diferencias de pfxeles entre los pfxeles del bloque que va a codificarse y las muestras de referencia correspondientes (que pueden ser pfxeles de precision de enteros o pfxeles de precision fraccional interpolados, como se menciono anteriormente) del bloque de referencia, es decir, predictor. Para lograr una compresion mejor, la prediccion residual (es decir, la matriz de valores de diferencia de pfxeles) se transforma en general a partir del dominio de pfxeles (es decir, espacial) en un dominio de transformada, por ejemplo, usando una transformada de coseno discreta (DCT), una transformada entera, una transformada Karhunen-Loeve (K-L) u otra transformada. El dominio de transformada puede ser, por ejemplo, un dominio de frecuencia.
[23] La codificacion de una PU usando la interprediccion implica calcular un vector de movimiento entre un bloque actual y un bloque en una trama de referencia. Los vectores de movimiento se calculan a traves de un proceso denominado estimacion de movimiento (o busqueda de movimiento). Un vector de movimiento, por ejemplo, puede indicar el desplazamiento de una unidad de prediccion en una trama actual, con respecto a una muestra de referencia de una trama de referencia. Una muestra de referencia puede ser un bloque del que se descubra que se adapta estrechamente con la parte de la CU que incluye la PU que se codifica en terminos de diferencia de pfxeles, que puede determinarse mediante la suma de una diferencia absoluta (SAD), la suma de diferencias al cuadrado (SSD) u otras metricas de diferencia. La muestra de referencia puede producirse en cualquier lugar dentro de una trama de referencia o de un segmento de referencia. En algunos ejemplos, la muestra de referencia puede interpolarse, en su totalidad o en parte, y producirse en una posicion de pixel fraccionaria. Al encontrar una parte de la trama de referencia que mejor se adapta a la parte actual, el codificador determina el vector de movimiento actual para la parte actual como la diferencia en la ubicacion desde la parte actual hasta la parte adaptable en la trama de referencia (por ejemplo, desde el centro de la parte actual hasta el centro de la parte adaptable).
[24] En algunos ejemplos, un codificador puede senalar el vector de movimiento para cada parte en el flujo de bits de video codificado. El vector de movimiento senalado se usa por el decodificador para realizar una compensacion de movimiento para decodificar los datos de video. Sin embargo, la senalizacion del vector de movimiento original puede dar como resultado directamente una codificacion menos eficiente, ya que se necesita tfpicamente una gran cantidad de bits para transmitir la informacion.
[25] Una vez que se realiza la estimacion de movimiento para determinar un vector de movimiento para una parte actual, el codificador compara la parte adaptable en la trama de referencia con la parte actual. Esta comparacion implica tfpicamente restar la parte (que comunmente se denomina "muestra de referencia") en la trama de referencia de la parte actual y da como resultado los denominados datos residuales, como se menciono anteriormente. Los datos residuales indican valores de diferencia de pfxeles entre la parte actual y la muestra de referencia. El codificador transforma luego estos datos residuales desde el dominio espacial en un dominio de transformada, tal como el dominio de frecuencia. Usualmente, el codificador aplica una transformada de coseno discreta (DCT) a los datos residuales para lograr esta transformada. El codificador realiza esta transformada con el fin de facilitar la compresion de los datos residuales porque los coeficientes de transformada resultantes representan diferentes frecuencias, en las que la mayor parte de la energfa normalmente se concentra en unos pocos coeficientes de baja frecuencia.
[26] Tfpicamente, los coeficientes de transformada resultantes se agrupan de una manera que permite la codificacion por entropfa, especialmente si los coeficientes de transformada se cuantifican primero (se redondean). El codificador realiza luego una codificacion estadfstica sin perdida (o denominada "entropfa") para comprimir adicionalmente los coeficientes de transformada cuantificados codificados por longitud de ejecucion. Despues de realizar la codificacion por entropfa sin perdida, el codificador genera un flujo de bits que incluye los datos de video codificados.
[27] El proceso de codificacion de video tambien puede incluir un denominado "bucle de reconstruccion" mediante el que los bloques de video codificados se codifican y almacenan en una memoria intermedia de tramas de referencia para su uso como tramas de referencia para los bloques de video codificados posteriormente. La memoria intermedia de tramas de referencia tambien se denomina memoria intermedia de imagen decodificada o DPB. Los bloques de video reconstruidos se filtran a menudo antes de almacenarse en la memoria intermedia de tramas de referencia. El filtrado se usa comunmente, por ejemplo, para reducir el bloqueo u otros artefactos comunes a la codificacion de video basada en bloques. Los coeficientes de filtro (a veces denominados derivaciones de filtro) pueden definirse o seleccionarse con el fin de promover niveles deseables de filtrado de bloques de video que puedan reducir el bloqueo y/o mejorar la calidad del video de otras maneras. Un conjunto de coeficientes de filtro, por ejemplo, puede definir como se aplica el filtrado a lo largo de los bordes de los bloques de video o de otras ubicaciones dentro de los bloques de video. Diferentes coeficientes de filtro pueden causar diferentes niveles de filtrado con respecto a diferentes pfxeles de los bloques de video. El filtrado, por ejemplo, puede suavizar o agudizar las diferencias en la intensidad de los valores de pfxeles adyacentes con el fin de ayudar a eliminar los artefactos no deseados.
[28] Como ejemplo, se puede usar un filtro de desbloqueo para mejorar la apariencia (por ejemplo, alisar los bordes) entre los bloques de datos de video codificados. Otro ejemplo de filtro es un filtro de desplazamiento
5
10
15
20
25
30
35
40
45
50
55
60
65
adaptativo de muestra (SAO) que se usa para anadir el desplazamiento a los bloques reconstruidos de pfxeles para mejorar la calidad de imagen y la eficiencia de codificacion. Otro tipo de filtro que se usa en el bucle de reconstruccion en una propuesta para la HEVC es el filtro de bucle adaptativo (ALF). El ALF se realiza en general despues de un filtro de desbloqueo. El ALF restaura la fidelidad de los pfxeles degradados por el proceso de compresion de codificacion de video. El ALF intenta minimizar el error cuadratico medio entre los valores de pfxeles originales en la trama de origen y los de la trama reconstruida. Tambien se aplica un ALF en la salida de un decodificador de video de la misma manera que se aplico durante el proceso de codificacion. Colectivamente, cualquier filtro usado en el bucle de reconstruccion se puede denominar "filtro de bucle". Los filtros de bucle pueden incluir uno o mas filtros de desbloqueo, filtros SAO y ALF. Ademas, tambien son posibles otros tipos de filtros para su uso en el bucle de reconstruccion.
[29] Esta divulgacion presenta tecnicas para el filtrado de bucle adaptativo. En particular, esta divulgacion presenta tecnicas para el filtrado de bucle adaptativo alrededor de los lfmites de segmento y de mosaico.
[30] La FIG. 1 es un diagrama de bloques que ilustra un ejemplo de sistema de codificacion y decodificacion de video 10 que se puede configurar para utilizar tecnicas para el filtrado de bucle en un proceso de codificacion de video de acuerdo con ejemplos de esta divulgacion. Como se muestra en la FIG. 1, el sistema 10 incluye un dispositivo de origen 12 que transmite un video codificado a un dispositivo de destino 14 a traves de un canal de comunicacion 16. Los datos de video codificados tambien se pueden almacenar en un medio de almacenamiento 34 o en un servidor de ficheros 36, y se puede acceder a los mismos mediante el dispositivo de destino 14, segun se desee. Cuando se almacene en un medio de almacenamiento o servidor de ficheros, el codificador de video 20 puede proporcionar datos de video codificados a otro dispositivo, tal como una interfaz de red, una grabadora de discos compactos (CD), discos Blu-ray o discos de video digital (DVD) u otros dispositivos, para almacenar los datos de video codificados en el medio de almacenamiento. Asimismo, un dispositivo separado del decodificador de video 30, tal como una interfaz de red, un lector de CD o DVD, o similares, puede recuperar los datos de video codificados desde un medio de almacenamiento y proporcionar los datos recuperados al decodificador de video 30.
[31] El dispositivo de origen 12 y el dispositivo de destino 14 pueden comprender cualquiera de entre una amplia variedad de dispositivos, que incluyan ordenadores de sobremesa, ordenadores plegables (es decir, portatiles), ordenadores de tableta, decodificadores, auriculares telefonicos tales como los denominados telefonos inteligentes, televisores, camaras, dispositivos de visualizacion, reproductores de medios digitales, consolas de videojuegos o similares. En muchos casos, dichos dispositivos pueden estar equipados de comunicacion inalambrica. Por lo tanto, el canal de comunicacion 16 puede comprender un canal inalambrico, un canal cableado o una combinacion de canales inalambricos y cableados, adecuados para la transmision de datos de video codificados. De manera similar, puede accederse al servidor de ficheros 36 mediante el dispositivo de destino 14, a traves de cualquier conexion de datos estandar, incluida una conexion a Internet. Esto puede incluir un canal inalambrico (por ejemplo, una conexion Wi-Fi), una conexion cableada (por ejemplo, DSL, modem de cable, etc.), o una combinacion de ambos que sea adecuada para acceder a datos de video codificados almacenados en un servidor de archivos.
[32] Las tecnicas para el filtrado de bucle adaptativo en un proceso de codificacion de video, de acuerdo con los ejemplos de esta divulgacion, pueden aplicarse a la codificacion de video en soporte de cualquiera de entre una variedad de aplicaciones multimedia, tales como radiodifusiones de television por el aire, transmisiones de television por cable, transmisiones de television por satelite, transmisiones de video en tiempo real, por ejemplo, mediante Internet, codificacion de video digital para su almacenamiento en un medio de almacenamiento de datos, decodificacion de video digital almacenado en un medio de almacenamiento de datos u otras aplicaciones. En algunos ejemplos, el sistema 10 se puede configurar para dar soporte a la transmision de video unidireccional o bidireccional para dar soporte a aplicaciones tales como la transmision de video en tiempo real, la reproduccion de video, la radiodifusion de video y/o la videotelefonfa.
[33] En el ejemplo de la FIG. 1, el dispositivo de origen 12 incluye una fuente de video 18, un codificador de video 20, un modulador/demodulador (modem) 22 y un transmisor 24. En el dispositivo de origen 12, la fuente de video 18 puede incluir una fuente tal como un dispositivo de captura de video, tal como una videocamara, un archivo de video que contenga video previamente capturado, una interfaz de alimentacion de video para recibir video desde un proveedor de contenido de video y/o un sistema de graficos de ordenador para generar datos de graficos de ordenador como el video de origen, o una combinacion de dichas fuentes. Como ejemplo, si la fuente de video 18 es una videocamara, el dispositivo de origen 12 y el dispositivo de destino 14 pueden formar los denominados telefonos con camara o videotelefonos. Sin embargo, las tecnicas descritas en esta divulgacion pueden aplicarse a la codificacion de video en general y pueden aplicarse a aplicaciones inalambricas y/o por cable o a aplicaciones en las que los datos de video codificados se almacenen en un disco local.
[34] El video capturado, precapturado o generado por ordenador puede codificarse por el codificador de video 20. La informacion de video codificada puede modularse mediante un modem 22 de acuerdo con una norma de comunicacion, tal como un protocolo de comunicacion inalambrica, y transmitirse al dispositivo de destino 14 a traves del transmisor 24. El modem 22 puede incluir diversos mezcladores, filtros, amplificadores u otros componentes disenados para la modulacion de senales. El transmisor 24 puede incluir circuitos disenados para transmitir datos, que incluyan amplificadores, filtros y una o mas antenas.
5
10
15
20
25
30
35
40
45
50
55
60
65
[35] El video capturado, precapturado, o generado por ordenador que se codifique mediante el codificador de video 20 tambien puede almacenarse en un medio de almacenamiento de 34 o en un servidor de ficheros 36 para un consumo posterior. Los medios de almacenamiento 34 pueden incluir discos Blu-ray, DVD, CD-ROM, memoria flash o cualquier otro medio de almacenamiento digital adecuado para el almacenamiento de video codificado. Entonces se puede acceder al video codificado almacenado en el medio de almacenamiento 34 mediante el dispositivo de destino 14 para la decodificacion y la reproduccion.
[36] El servidor de archivos 36 puede ser cualquier tipo de servidor capaz de almacenar un video codificado y transmitir ese video codificado al dispositivo de destino 14. Los ejemplos de servidores de archivos incluyen un servidor web (por ejemplo, para una pagina web), un servidor FTP, unos dispositivos de almacenamiento en red (NAS), una unidad de disco local o cualquier otro tipo de dispositivo capaz de almacenar datos de video codificados y transmitirlos a un dispositivo de destino. La transmision de datos de video codificados desde el servidor de archivos puede ser una transmision en tiempo real, una transmision de descarga o una combinacion de ambas. Puede accederse al servidor de ficheros 36 mediante el dispositivo de destino 14 a traves de cualquier conexion de datos estandar, que incluya una conexion a Internet. Esto puede incluir un canal inalambrico (por ejemplo, una conexion Wi-Fi), una conexion cableada (por ejemplo, dSl, modem por cable, Ethernet, USB, etc.), o una combinacion de ambos que sea adecuada para acceder a datos de video codificados almacenados en un servidor de ficheros.
[37] El dispositivo de destino 14, en el ejemplo de la FIG. 1 incluye un receptor 26, un modem 28, un decodificador de video 30 y un dispositivo de visualizacion 32. El receptor 26 del dispositivo de destino 14 recibe informacion a traves del canal 16, y el modem 28 demodula la informacion para producir un flujo de bits demodulado para el decodificador de video 30. La informacion comunicada por el canal 16 puede incluir una variedad de informacion sintactica generada por el codificador de video 20 para su uso por el decodificador de video 30 en la codificacion de los datos de video. Dicha sintaxis tambien puede incluirse con los datos de video codificados, almacenados en los medios de almacenamiento 34 o en el servidor de archivos 36. Cada uno del codificador de video 20 y del decodificador de video 30 pueden formar parte de un respectivo codificador-decodificador (CODEC) que sea capaz de codificar o decodificar datos de video.
[38] El dispositivo de visualizacion 32 puede estar integrado con, o ser externo a, el dispositivo de destino 14. En algunos ejemplos, el dispositivo de destino 14 puede incluir un dispositivo de visualizacion integrado y tambien se puede configurar para interconectarse con un dispositivo de visualizacion externo. En otros ejemplos, el dispositivo de destino 14 puede ser un dispositivo de visualizacion. En general, el dispositivo de visualizacion 32 visualiza los datos de video decodificados ante un usuario y puede comprender cualquiera de entre una variedad de dispositivos de visualizacion tales como una pantalla de cristal lfquido (LCD), una pantalla de plasma, una pantalla de diodos organicos emisores de luz (OLED) u otro tipo de dispositivo de visualizacion.
[39] En el ejemplo de la FIG. 1, el canal de comunicacion 16 puede comprender cualquier medio de comunicacion inalambrico o por cable, tal como un espectro de radiofrecuencia (RF) o una o mas lfneas de transmision ffsica, o cualquier combinacion de medios inalambricos y alambricos. El canal de comunicacion 16 puede formar parte de una red basada en paquetes, tal como una red de area local, una red de area extensa o una red global tal como Internet. El canal de comunicacion 16 representa en general cualquier medio de comunicacion adecuado o un conjunto de diferentes medios de comunicacion, para transmitir datos de video desde el dispositivo de origen 12 al dispositivo de destino 14, incluida cualquier combinacion adecuada de medios por cable o inalambricos. El canal de comunicacion 16 puede incluir routers, conmutadores, estaciones base o cualquier otro equipo que pueda ser util para facilitar la comunicacion desde el dispositivo de origen 12 al dispositivo de destino 14.
[40] El codificador de video 20 y el decodificador de video 30 pueden funcionar de acuerdo con una norma de compresion de video, tal como la norma de Codificacion de Video de Alta Eficacia (HEVC), actualmente en fase de elaboracion, y pueden ajustarse al Modelo de Prueba HEVC (HM). De manera alternativa, el codificador de video 20 y el decodificador de video 30 pueden funcionar de acuerdo con otras normas patentadas o industriales, tales como la norma ITU-T H.264, de manera alternativa denominada MPEG-4, Parte 10, Codificacion de Video Avanzado (AVC), o ampliaciones de dichas normas. Sin embargo, las tecnicas de esta divulgacion no estan limitadas a ninguna norma de codificacion particular. Otros ejemplos incluyen MPEG-2 e ITU-T H.263.
[41] Aunque no se muestra en la FIG. 1, en algunos aspectos, el codificador de video 20 y el decodificador de video 30 pueden estar integrados cada uno de ellos con un codificador y un decodificador de audio, y pueden incluir unidades MUX-DEMUX apropiadas, u otro tipo de hardware y software, para manejar la codificacion tanto de audio como de video en un flujo de datos comun o en flujos de datos separados. Si procede, en algunos ejemplos, las unidades MUX-DEMUX pueden ajustarse al protocolo de multiplexado ITU H.223 o a otros protocolos, tales como el protocolo de datagramas de usuario (UDP).
[42] El codificador de video 20 y el decodificador de video 30 pueden implementarse como cualquiera de entre una variedad de circuitos de codificadores adecuados, tales como uno o mas microprocesadores, procesadores de senales digitales (DSP), circuitos integrados especfficos de la aplicacion (ASIC), matrices de puertas programables
5
10
15
20
25
30
35
40
45
50
55
60
65
por campo (FPGA), logica discreta, software, hardware, firmware o cualquier combinacion de los mismos. Cuando las tecnicas 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 mas procesadores para realizar las tecnicas de esta divulgacion. Cada uno del codificador de video 20 y del decodificador de video 30 pueden estar incluidos en uno o mas codificadores o decodificadores, cualquiera de los cuales puede estar integrado como parte de un codificador/decodificador (CODEC) combinado en un respectivo dispositivo.
[43] El codificador de video 20 puede implementar cualquiera de, o todas, las tecnicas de esta divulgacion para el filtrado de bucle en un proceso de codificacion de video. Del mismo modo, el decodificador de video 30 puede implementar cualquiera de, o todas, estas tecnicas el filtrado de bucle en un proceso de codificacion de video. Un codificador de video, tal como se describe en esta divulgacion, puede referirse a un codificador de video o a un decodificador de video. De manera similar, una unidad de codificacion de video puede referirse a un codificador de video o a un decodificador de video. En este contexto, una unidad de codificacion de video es hardware ffsico y difiere de la estructura de datos CU analizada anteriormente. Asimismo, la codificacion de video puede referirse a la codificacion de video o a la decodificacion de video.
[44] En una propuesta de ALF para la HEVC, se proponen dos modos de adaptacion (es decir, modos de adaptacion de bloques y de regiones). Para el modo adaptativo de region, una trama esta dividida en 16 regiones, y cada region puede tener un conjunto de coeficientes de filtro lineal (una pluralidad de coeficientes CA y un coeficiente cC) y una region puede compartir los mismos coeficientes de filtro con otras regiones. La FIG. 2 es un diagrama conceptual que muestra la clasificacion basada en la region para un filtro de bucle adaptativo. Como se muestra en la FIG. 2, la trama 120 esta dividida en 16 regiones, y cada region puede incluir CU multiples. Cada una de estas 16 regiones esta representada por un numero (0-15) que indica el conjunto particular de coeficientes de filtro lineal usados por esa region. Los numeros (0-15) pueden ser numeros de indice para un conjunto predeterminado de coeficientes de filtro que se almacenan tanto en un codificador de video como en un decodificador de video. En un ejemplo, un codificador de video puede indicar, en el flujo de bits de video codificado, el numero de indice del conjunto de coeficientes de filtro usado por el codificador de video para una region particular. En base al indice senalizado, un decodificador de video puede recuperar el mismo conjunto predeterminado de coeficientes de filtro para usar en el proceso de decodificacion para esa region. En otros ejemplos, los coeficientes del filtro se senalan explfcitamente para cada region.
[45] Para un modo de clasificacion basado en bloques, una trama esta dividida en bloques 4x4, y cada bloque 4x4 deriva una clase calculando una metrica usando la informacion de direccion y de actividad. Para cada clase, se puede usar un conjunto de coeficientes de filtro lineal (una pluralidad de coeficientes CA y un coeficiente CC) y una clase puede compartir los mismos coeficientes de filtro con otras clases. La FIG. 3 es un diagrama conceptual que muestra la clasificacion basada en bloques para un filtro de bucle adaptativo.
[46] El calculo de la direccion y de la actividad, y la metrica resultante en base a la direccion y a la actividad, se muestran a continuacion:
• Direccion
• Ver_act (i, j) = abs (X (i, j) << 1 - X (i, j-1) - X (i, j + 1))
• Hor_act (i, j) = abs (X (i, j) << 1 - X (i-1, j) - X (i + 1, j))
• H b = I i -0.2 I j = 0.2 H (i, j)
• V b = I i = 0.2 I j -0.2 V (i, j)
• Direccion = 0. 1 (H> 2V), 2 (V> 2H)
• Actividad
• Lb - Hb + Vb
• 5 clases (0, 1, 2, 3, 4)
• Metrica
• Actividad + 5 * Direccion
[47] Hor act (i, j) se refiere en general a la actividad horizontal del pixel actual (i, j), y Vert_act (i, j) se refiere en general a la actividad vertical del pixel actual (i, j). X (i, j) se refiere en general a un valor de pixel del pixel (i, j)),
5
10
15
20
25
30
35
40
45
50
55
60
65
donde i y j indican las coordenadas horizontales y verticales del pixel actual. En este contexto, la actividad es en general el gradiente o la varianza entre los pixeles en una ubicacion.
[48] Hb se refiere a la actividad horizontal del bloque 4x4, que en este ejemplo se determina en base a una suma de actividad horizontal para pixeles (0, 0), (0, 2), (2, 0) y (2, 2). Vb se refiere a la actividad vertical del bloque 4x4, que en este ejemplo se determina en base a una suma de actividad vertical para pixeles (0, 0), (0, 2), (2, 0) y (2, 2). "<< 1" representa una operacion de multiplicar por dos. En base a los valores de Hb y Vb, se puede determinar una direccion. Como ejemplo, si el valor de Hb es mas de 2 veces el valor de Vb, luego se puede determinar que la direccion es la direccion 1 (es decir, horizontal), que podrfa corresponder a una actividad mas horizontal que la actividad vertical. Si el valor de Vb es mas de 2 veces el valor de Hb, luego se puede determinar que la direccion es la direccion 2 (es decir, vertical), lo que podrfa corresponder a una actividad mas vertical que la horizontal. De lo contrario, la direccion puede determinarse como direccion 0 (es decir, sin direccion), lo que significa que no domina la actividad horizontal ni la vertical. Las etiquetas para las diversas direcciones y las relaciones usadas para determinar las direcciones constituyen meramente un ejemplo, ya que tambien se pueden usar otras etiquetas y relaciones.
[49] La actividad (Lb) para el bloque 4x4 se puede determinar como una suma de la actividad horizontal y vertical. El valor de Lb se puede clasificar en un rango. Este ejemplo particular muestra cinco rangos, aunque se pueden usar mas o menos rangos de manera similar. En base a la combinacion de actividad y direccion, se puede seleccionar un filtro para el bloque 4x4 de pixeles. Como ejemplo, se puede seleccionar un filtro en base a un mapeo bidimensional de la actividad y de la direccion a los filtros, o la actividad y la direccion se pueden combinar en una unica metrica, y esa unica metrica se puede usar para seleccionar un filtro (por ejemplo, la metrica = Actividad + 5 * Direccion).
[50] Volviendo a la FIG. 3, el bloque 140 representa un bloque 4x4 de pixeles. En este ejemplo, solo cuatro de los dieciseis pixeles se usan para calcular metricas de actividad y de direccion para un ALF basado en bloques. Los cuatro pixeles son el pixel (0, 0) que esta etiquetado como pixel 141, el pixel (2, 0) que esta etiquetado como pixel 142, el pixel (0, 2) que esta etiquetado como pixel 143 y el pixel (2, 2) que esta etiquetado como pixel 144. La actividad Horizontal del pixel 141 (es decir, hor_act (0, 0)), por ejemplo, se determina en base a un pixel vecino izquierdo y a un pixel vecino derecho. El pixel vecino derecho esta etiquetado como pixel 145. El pixel vecino izquierdo esta ubicado en un bloque diferente al bloque 4x4 y no se muestra en la FIG. 3. La actividad vertical del pixel 142 (es decir, ver_act (2, 0)), por ejemplo, se determina en base a un pixel vecino superior y a un pixel vecino inferior. El pixel vecino inferior esta etiquetado como pixel 146 y el pixel vecino superior esta ubicado en un bloque diferente al bloque 4x4 y no se muestra en la FIG. 3. La actividad horizontal y vertical se puede calcular para los pixeles 143 y 144 de una manera similar.
[51] En una propuesta para la norma HEVC, el ALF se realiza junto con otros filtros de bucle (por ejemplo, desbloqueo (DB) y SAO). Se puede decir que los filtros se realizan "en bucle" cuando los filtros se aplican mediante un dispositivo de codificacion de video a los datos de video antes de la salida de los datos de video como datos de pixeles para su visualizacion. De esta manera, los datos de video filtrados en bucle se pueden usar como referencia mediante datos de video codificados posteriormente. Ademas, tanto un codificador de video como un decodificador de video pueden configurarse para realizar sustancialmente el mismo proceso de filtrado. Los filtros de bucle se procesan en el siguiente orden: DB, SAO, ALF. En un WD de HEVC, cada uno de los filtros de bucle esta basado en tramas. Sin embargo, si cualquiera de los filtros de bucle se aplica en el nivel de segmento (que incluye un segmento de entropfa) o en el nivel de mosaico, el manejo de filtros de bucle especial puede ser beneficioso en los lfmites de segmento y de mosaico. Una parte de entropfa se codifica de manera independiente por entropfa, pero usa el procesamiento de pixeles dependiente (por ejemplo, intraprediccion) entre diferentes segmentos.
[52] La FIG. 4 es un diagrama conceptual que muestra ejemplos de mosaico de una trama. La trama 160 se puede dividir en multiples unidades de codificacion maximas (LCU) 161. Dos o mas LCU se pueden agrupar en mosaicos rectangulares. Cuando la codificacion basada en mosaicos esta habilitada, las unidades de codificacion dentro de cada mosaico se codifican (es decir, se codifican o decodifican) juntas antes de codificar los mosaicos posteriores. Como se muestra para la trama 160, los mosaicos 162 y 163 estan orientados de manera horizontal y tienen lfmites tanto horizontales como verticales. Como se muestra para la trama 170, los mosaicos 171 y 173 estan orientados de manera vertical y tienen lfmites horizontales y verticales.
[53] La FIG. 5 es un diagrama conceptual que muestra ejemplos de sectores de una trama. La trama 180 se puede dividir en un segmento que consta de multiples LCU consecutivas (182) en orden de escaneo de trama a traves de la trama. En algunos ejemplos, un segmento puede tener una forma uniforme (por ejemplo, un segmento 181) y abarcar una o mas filas completas de LCU en una trama. En otros ejemplos, un segmento se define como un numero especffico de LCU consecutivas en orden de escaneo de trama y puede exhibir una forma no uniforme. Por ejemplo, la trama 190 se divide en una trama 191 que consta de 10 LCU consecutivas (182) en orden de escaneo de trama. Como la trama 190 tiene solo 8 LCU de ancho, se incluyen dos LCU adicionales en la siguiente fila en el segmento 191.
5
10
15
20
25
30
35
40
45
50
55
60
65
[54] Se deberfa tener en cuenta que, en algunos casos, los limites de segmento y de mosaico pueden ser coincidentes (es decir, se superponen directamente). Las tecnicas de esta divulgacion se aplican en situaciones en las que los limites de segmento y de mosaico son coincidentes, asi como en situaciones donde los limites de segmento y de mosaico no son coincidentes.
[55] La FIG. 6 es un diagrama conceptual que representa un filtro de bucle en los limites de segmento y de mosaico. El lfmite horizontal de segmento y/o de mosaico 201 se representa como una lfnea horizontal y el lfmite vertical de mosaico 202 se representa como una lfnea vertical. Los cfrculos rellenos (es decir, puntos) de la mascara de filtro 200 en la FIG. 6 representan los coeficientes (es decir, las ponderaciones) del filtro, que se aplican a los pfxeles del bloque de video reconstruido en el segmento y/o el mosaico. Es decir, el valor de un coeficiente del filtro puede aplicarse al valor de un pixel correspondiente, de manera que el valor del correspondiente se multiplica por el valor del coeficiente para producir un valor de pixel ponderado. El valor de pixel puede incluir un valor de luminancia y uno o mas valores de crominancia. Suponiendo que el centro del filtro esta posicionado en la posicion de (o muy cerca de) el pixel que se vaya a filtrar, se puede decir que un coeficiente de filtro corresponde a un pixel que esta colocado con la posicion del coeficiente. Los pfxeles correspondientes a los coeficientes de un filtro tambien pueden denominarse "pfxeles de soporte" o, colectivamente, "conjunto de soporte" para el filtro. El valor filtrado de un pixel actual 203 (correspondiente al coeficiente de mascara de pixel central C0) se calcula multiplicando cada coeficiente en la mascara de filtro 200 por el valor de su pixel correspondiente y sumando cada valor resultante.
[56] En esta divulgacion, el termino "filtro" se refiere en general a un conjunto de coeficientes de filtro. Por ejemplo, un filtro 3x3 se puede definir mediante un conjunto de 9 coeficientes de filtro, un filtro 5x5 se puede definir mediante un conjunto de 25 coeficientes de filtro, un filtro 9x5 se puede definir mediante un conjunto de 45 coeficientes de filtro, y asf sucesivamente. La mascara de filtro 200 mostrada en la figura 6 es un filtro 7x5 que tiene 7 coeficientes de filtro en la direccion horizontal y 5 coeficientes de filtro en la direccion vertical (el coeficiente de filtro central para cada direccion); sin embargo, puede aplicarse cualquier coeficiente de filtro para las tecnicas de esta divulgacion. El termino "conjunto de filtros" se refiere en general a un grupo de mas de un filtro. Por ejemplo, un conjunto de dos filtros 3x3 podrfa incluir un primer conjunto de 9 coeficientes de filtro y un segundo conjunto de 9 coeficientes de filtro. El termino "forma", algunas veces llamado "soporte de filtro", se refiere en general al numero de filas de coeficientes de filtro y al numero de columnas de coeficientes de filtro para un filtro particular. Por ejemplo, 9x9 es un ejemplo de una primera forma, 7x5 es un ejemplo de una segunda forma y 5x9 es un ejemplo de una tercera forma. En algunos casos, los filtros pueden adoptar formas no rectangulares que incluyan formas de diamante, formas similares a diamantes, formas circulares, formas similares a cfrculos, formas hexagonales, formas octogonales, formas cruzadas, formas de X, formas de T, otras formas geometricas u otras numerosas formas o configuracion. El ejemplo en la FIG. 6 es una forma de cruz, sin embargo, se puede usar otra forma. En la mayorfa de los casos comunes, independientemente de la forma del filtro, el pixel central en el pixel central en la mascara del filtro es el que se esta filtrando. En otros ejemplos, el pixel de filtro se desplaza desde el centro de la mascara de filtro.
[57] En algunas tecnicas de codificacion de video, el filtrado de bucle (por ejemplo, desbloqueo, ALF y SAO) esta desactivado en los limites de segmento y de mosaico. Esto se debe a que es posible que los pfxeles de los segmentos y/o mosaicos vecinos no se hayan codificado ya y, como tal, no estarfan disponibles para su uso con algunas mascaras de filtro. En estos casos, los datos atenuados se usan para los pfxeles no disponibles (es decir, los pfxeles que estan en el otro lado del lfmite de segmento o de mosaico a partir del segmento o mosaico actual) o no se realiza el filtrado. El uso de datos atenuados puede disminuir la calidad visual de la imagen alrededor de los limites de segmento y/o de mosaico.
[58] En vista del inconveniente, esta divulgacion propone tecnicas para realizar un filtrado de bucle adaptativo a lo largo de los limites de segmento y de mosaico. En general, esta divulgacion propone el uso de filtros parciales alrededor de los limites de segmento y de mosaico. Un filtro parcial es un filtro que no usa uno o mas coeficientes de filtro que se usan tfpicamente para el proceso de filtrado. En un ejemplo, esta divulgacion propone el uso de filtros parciales en los que al menos los coeficientes de filtro correspondientes a los pfxeles en el otro lado del lfmite de segmento y/o de mosaico no se usan. Por lo tanto, en algunos ejemplos, no hay necesidad de proporcionar datos atenuados para los pfxeles en el otro lado de los limites de segmento y/o de mosaico. Por el contrario, un filtro parcial se puede configurar para omitir los pfxeles en el otro lado del lfmite de segmento y/o de mosaico.
[59] En un ejemplo, los filtros parciales asimetricos se usan cerca de los limites de segmento y de mosaico. La FIG. 7 es un diagrama conceptual que representa filtros parciales asimetricos en un lfmite horizontal. La FIG. 8 es un diagrama conceptual que representa filtros parciales asimetricos en un lfmite vertical. En este enfoque, como se muestra en las FIGS. 7 y 8, solo se usan los pfxeles disponibles (es decir, pfxeles dentro del segmento y/o mosaico actuales) que se van a filtrar. Las derivaciones de filtro fuera del lfmite de segmento o de mosaico se omiten. Como tal, no se usan datos de pfxeles atenuados. Los filtros en la FIG. 7 y en la FIG. 8 se denominan asimetricos porque hay mas derivaciones de filtro usadas en un lado (ya sea horizontal o vertical) del centro de la mascara de filtro que en el otro. Como no se usa toda la mascara de filtro, los coeficientes del filtro pueden renormalizarse para producir los resultados deseados. Las tecnicas para la renormalizacion se analizaran con mas detalle a continuacion.
5
10
15
20
25
30
35
40
45
50
55
60
65
[60] En el Caso 1 de la FIG. 7, el centro 221 de la mascara de filtro 220 es una fila de pfxeles de distancia de un limite horizontal de segmentos o mosaicos. Como la mascara de filtro 220 es un filtro 7x5, un coeficiente de filtro en la direccion vertical corresponde a un pixel que esta sobre el limite horizontal. Este coeficiente de filtro se representa en blanco, es decir, como un cfrculo sin llenar. El pixel correspondiente al coeficiente de filtro blanco no esta disponible para su uso en el filtrado, ya que aun no se ha codificado (por ejemplo, codificado o decodificado). Como tal, el coeficiente de filtro correspondiente a ese pixel no se usa. Asimismo, en el Caso 2, el centro 222 de la mascara de filtro 225 esta en una fila de pfxeles adyacente al limite horizontal de segmento y/o de mosaico. En este caso, dos coeficientes de filtro corresponden a pfxeles que estan sobre el limite horizontal. Como tal, ninguno de los dos coeficientes de filtro blanco en la mascara de filtro 225 se usa para el filtrado de bucle. Tanto en el Caso 1 como en el Caso 2, se usan todos los coeficientes de filtro negro (es decir, cfrculo lleno). Deberfa observarse que los valores de pfxeles de filtro de acuerdo con esta divulgacion pueden incluir filtrar componentes de luminancia del valor de pixel, filtrar componentes de crominancia del valor de pixel o filtrar componentes de luminancia y crominancia del valor de pixel.
[61] En el Caso 3 de la FIG. 8, el centro 235 de la mascara de filtro 234 esta a dos columnas de pfxeles de distancia de un limite de mosaico vertical. Como la mascara de filtro 234 es un filtro 7x5, un coeficiente de filtro en la direccion horizontal corresponde a un pixel que esta sobre el limite vertical. De nuevo, este coeficiente de filtro se representa en blanco. El pixel correspondiente al coeficiente de filtro blanco no esta disponible para su uso en el filtrado, ya que aun no se ha codificado (por ejemplo, codificado o decodificado). Como tal, el coeficiente de filtro correspondiente a ese pixel no se usa. De manera similar, en el Caso 4, el centro 233 de la mascara de filtro 232 esta a una columna de pfxeles de distancia de un limite vertical de mosaico. En este caso, dos coeficientes de filtro corresponden a pfxeles que superan el limite vertical. Como tal, ninguno de los dos coeficientes de filtro blanco en la mascara de filtro 232 se usa para el filtrado de bucle. En el Caso 5, el centro 231 de la mascara de filtro 230 esta en una columna de pfxeles adyacente al limite vertical de mosaico. En este caso, tres coeficientes de filtro corresponden a pfxeles que estan sobre el limite vertical. Como tal, ninguno de los tres coeficientes de filtro blanco en las mascaras de filtro 230 se usan para el filtrado de bucle. En todos los Casos 1, 2 o 3, se usan todos los coeficientes de filtro negro.
[62] En otro ejemplo, los filtros parciales simetricos se usan cerca de los lfmites de segmento y de mosaico. La
FlG. 9 es un diagrama conceptual que representa filtros parciales simetricos en un limite horizontal. La FIG. 10 es un
diagrama conceptual que representa filtros parciales simetricos en un limite vertical. Al igual que con los filtros
parciales asimetricos, en este enfoque, solo los pfxeles disponibles se usan para el filtrado. Es decir, las derivaciones de filtro fuera del limite de mosaico o de segmento se omiten. Como tal, no se usan datos de pfxeles atenuados. Asimismo, algunos coeficientes de la mascara de filtro que estan dentro del segmento o mosaico actual tampoco se usan, a fin de retener una mascara de filtro simetrica.
[63] Por ejemplo, en el Caso 6 de la FIG. 9, un coeficiente de filtro en la mascara de filtro 240 esta fuera del
limite horizontal de segmento o de mosaico. Tampoco se usa el coeficiente de filtro correspondiente dentro del limite horizontal en el otro lado de la mascara de filtro. De esta forma, se conserva una disposicion simetrica de coeficientes en la direccion vertical alrededor del coeficiente central 241. En el Caso 7 de la FIG. 9, dos coeficientes de filtro en la mascara de filtro 242 estan a traves del limite horizontal. Tampoco se usan los dos coeficientes de filtro correspondientes en el otro lado del coeficiente de filtro central 243 dentro del limite horizontal. Se muestran ejemplos similares en la FIG. 10 para el limite vertical de mosaico. En el Caso 8, un coeficiente de filtro corresponde a un pixel a traves del limite vertical de mosaico. Este coeficiente no se usa, asf como otro pixel en el lado izquierdo de la parte horizontal de la mascara de filtro 250 para mantener la simetrfa alrededor del coeficiente central 251. Se realizan ajustes de mascara de filtro similares para mascaras de filtro 252 y 254 en el caso en que dos (Caso 9) y cuatro (Caso 10) coeficientes de filtro corresponden a pfxeles a traves del limite vertical. En los Casos 9 y 10, se mantiene la simetrfa alrededor de los coeficientes centrales 253 y 255, respectivamente.
[64] Al igual que los filtros parciales asimetricos mostrados en la FIG. 7 y en la FIG. 8, toda la mascara de filtro no se usa para los filtros parciales simetricos. Por consiguiente, los coeficientes de filtro pueden renormalizarse. Las tecnicas para la renormalizacion se analizaran con mas detalle a continuacion.
[65] Para reiterar, para cada una de las mascaras de filtro mostradas en las FIGS. 6-10, un valor filtrado para el pixel correspondiente al centro de la mascara de filtro se calcula multiplicando un coeficiente de filtro (representado por un cfrculo oscurecido en la mascara) por un valor de pixel asociado, y luego sumando los valores multiplicados.
[66] Que se aplique o no un filtro parcial (por ejemplo, filtro parcial asimetrico o filtro parcial simetrico) puede ser una decision adaptativa. Para el ejemplo mostrado en la FIG. 7 y en la FIG. 9, se puede usar un filtro parcial para el Caso 1 y el Caso 6, pero no para el Caso 2 y el Caso 7. Puede que no sea preferente usar filtros parciales para el Caso 2 y el Caso 7 porque la cantidad de coeficientes de filtro no usados es mayor. En su lugar, se pueden usar otras tecnicas descritas a continuacion (por ejemplo, atenuacion de espejos, filtrado de saltos, etc.) para el Caso 2 y el Caso 7. Asimismo, para los ejemplos mostrados en la FIG. 8 y en la FIG. 10, el uso del filtrado parcial puede ser aplicable para los Casos 3, 4, 8 y 9, pero no para los Casos 5 y 10.
5
10
15
20
25
30
35
40
45
50
55
60
65
[67] La decision tomada por un codificador, es decir, un codificador o decodificador, para usar un filtro parcial tambien puede basarse en otros criterios. Por ejemplo, un filtro parcial puede no usarse cuando el numero de coeficientes cuyos pfxeles correspondientes no esten disponibles sea mayor que algun umbral. No se puede usar un filtro parcial cuando la suma de los valores del coeficiente cuyos pfxeles correspondientes no estan disponibles sea mayor que algun umbral. Como otro ejemplo, un filtro parcial puede no usarse cuando la suma de los valores absolutos de los valores de coeficientes cuyos pfxeles correspondientes no esten disponibles sea mayor que algun umbral.
• Numero de coeficientes cuyos pfxeles correspondientes no estan disponibles > Th1
• Suma (coeficientes cuyos pfxeles correspondientes no estan disponibles) > Th2
• Suma (abs(coeficientes cuyos pfxeles correspondientes no estan disponibles)) > Th3.
[68] Se puede elegir un subconjunto de las condiciones anteriores para decidir si aplicar un filtro parcial para un segmento especffico de los lfmites de mosaico. En las condiciones anteriores, un pixel correspondiente es un pixel con un valor de pixel al que se debe aplicar un coeficiente particular para ponderar el valor de pixel, por ejemplo, como parte de la suma ponderada de valores de pixel para producir el valor de pixel filtrado del pixel actual.
[69] En otro ejemplo de la divulgacion, el filtrado parcial solo se puede habilitar para los lfmites horizontales de segmento y de mosaico En los lfmites verticales, sin embargo, el filtrado de bucle se puede omitir por completo. Mas especfficamente, en un ejemplo, si un codificador de video determina que una mascara de filtro de bucle usara pfxeles en el otro lado de un lfmite vertical de mosaico, el filtrado de bucle se omitira para ese pixel. En otro ejemplo, si un codificador de video determina que una mascara de filtro de bucle usara pfxeles en el otro lado de un lfmite vertical de mosaico para uno o mas pfxeles en una unidad de codificacion, el filtrado de bucle se omitira para toda la unidad de codificacion.
[70] Se pueden aplicar tecnicas adicionales en los lfmites de segmento y de mosaico cuando no se use el filtrado parcial. La tecnica de filtrado de bucle puede usar pfxeles atenuados espejados en el otro lado de un lfmite de segmento o de mosaico, en lugar de usar pfxeles atenuados repetidamente. Los pfxeles espejados reflejan los valores de pixel en el interior del lfmite de segmento o de mosaico. Por ejemplo, si el pixel no disponible esta adyacente al lfmite de mosaico o de segmento, es decir, fuera del lfmite de mosaico o de segmento, tomarfa el valor (es decir, espejo) del pixel en el interior del lfmite de mosaico o de segmento que tambien sea adyacente al lfmite. Del mismo modo, si el pixel no disponible es una fila o columna del lfmite de mosaico o de segmento, tomarfa el valor (es decir, espejo) del pixel en el interior del lfmite de mosaico o de segmento que tambien este en una fila o columna desde el lfmite, y asf sucesivamente.
[71] Los valores filtrados para los pfxeles en el otro lado de un lfmite de mosaico o de segmento pueden calcularse de acuerdo con la siguiente ecuacion: a * filtro de bucle usando los datos atenuados a + b * salida prefiltrada donde a+b=1. Es decir, los pfxeles atenuados (es decir, los pfxeles anadidos al otro lado del lfmite de segmento o de mosaico) se multiplican por el coeficiente del filtro de bucle correspondiente al pixel atenuado y por una constante "a". Este valor se agrega luego a la multiplicacion del valor de pixel atenuado prefiltrado y de una constante "b", donde a+b = 1. Los valores a y b son valores predefinidos en base a la capacitacion, y tfpicamente son 0,5 y 0,5.
[72] La renormalizacion de los coeficientes de filtro para el filtro parcial simetrico y asimetrico se puede lograr de diferentes formas. En general, el proceso de renormalizacion vuelve a calcular el valor de los coeficientes de filtro restantes en una mascara de filtro parcial, de manera que el valor total de los coeficientes de filtro restantes es igual al valor total de los coeficientes de filtro originales. A menudo, este valor total es 1. Considere un ejemplo donde los coeficientes de filtro originales estan etiquetados como C_1, ..., C_N, donde C es el valor de un coeficiente particular. Ahora suponga que los coeficientes C_1, ..., C_M no tienen los pfxeles correspondientes disponibles (es decir, los pfxeles correspondientes se encuentran a lo largo de un lfmite de segmento o de mosaico). Los coeficientes de filtro renormalizados se pueden definir de la siguiente manera:
Ejemplo 1
[73]
Coeff_all = C_1 + C_2 +.. ,+C_N
Coeff_part = Coeff_all - (C_l+...+C_M)
New_coeffs C_i’=C_i * Coeff_all/Coeff_pait, i= M+1,...,N
[74] En el ejemplo 1, Coeff_all representa el valor de todos los coeficientes en una mascara de filtro sumados. Coeff_part representa el valor de todos los coeficientes en una mascara de filtro parcial. Es decir, el valor sumado de los coeficientes correspondientes a los pfxeles no disponibles (C_1 + ... + C_M) se resta de la suma de todos los
5
10
15
20
25
30
35
40
45
50
55
60
65
coeficientes posibles en la mascara de filtro (Coeff_all). New_coeffs_Ci' representa el valor de los coeficientes de filtro en los coeficientes parciales despues de un proceso de renormalizacion. En el Ejemplo 1 anterior, el valor del coeficiente restante en el filtro parcial se multiplica por el valor total de todos los coeficientes posibles en la mascara de filtro (Coeff_all) y se divide por el valor total de todos los coeficientes en la mascara de filtro parcial (Coeff_part).
[75] El Ejemplo 2 siguiente muestra otra tecnica de renormalizacion de coeficientes de filtro en un filtro parcial. Ejemplo 2
[76] Para el subconjunto de C_i, i = M + 1, ..., N, anada C_k, k = 1, ..., M
[77] Por ejemplo,
a. C_ (M+1) '= C_ (M+1) + C_1, C_ (M+2)' = C_ (M+2) + C_3, ... o
b. C_L' = C_L + (C_1 + C_2 + ... + C_M)
En este ejemplo, los coeficientes de filtro se renormalizan anadiendo los coeficientes de derivaciones de filtro omitidas (C_k) a los coeficientes de las derivaciones de filtro no omitidas (C_i).
[78] La FIG. 11 es un diagrama de bloques que ilustra un ejemplo de un codificador de video 20 que puede usar tecnicas para el filtrado de bucle en un proceso de codificacion de video como se describe en esta divulgacion. El codificador de video 20 se describira en el contexto de la codificacion HEVC con fines ilustrativos, pero sin limitacion de esta divulgacion en cuanto a otras normas o procedimientos de codificacion que puedan requerir filtrado de bucle. El codificador de video 20 puede realizar intracodificacion e intercodificacion de las CU dentro de tramas de video. La intracodificacion se basa en la prediccion espacial para reducir o eliminar la redundancia espacial en datos de video dentro de una trama de video dada. La intercodificacion se basa en la prediccion temporal para reducir o eliminar la redundancia temporal entre una trama actual y tramas previamente codificadas de una secuencia de video. Intramodo (modo I) puede referirse a cualquiera de varios modos de compresion de video de base espacial. Intermodos tales como la prediccion unidireccional (modo P) o la prediccion bidireccional (modo B) pueden referirse a cualquiera de varios modos de compresion de video de base temporal.
[79] Como se muestra en la FIG. 11, el codificador de video 20 recibe un bloque de video actual dentro de una trama de video que se va a codificar. En el ejemplo de la FIG. 11, el codificador de video 20 incluye una unidad de compensacion de movimiento 44, una unidad de estimacion de movimiento 42, un modulo de intraprediccion 46, una memoria intermedia de tramas de referencia 64, un sumador 50, un modulo de transformada 52, una unidad de cuantificacion 54 y una unidad de codificacion por entropfa 56. El modulo de transformada 52 que se ilustra en la FIG. 11 es la unidad que aplica la transformada real, o combinaciones de transformadas, a un bloque de datos residuales, y no ha de confundirse con un bloque de coeficientes de transformada, que tambien puede denominarse unidad de transformada (TU) de una CU. Para la reconstruccion de bloques de video, el codificador de video 20 incluye ademas una unidad de cuantificacion inversa 58, un modulo de transformada inversa 60, un sumador 62 y una unidad de filtro de bucle 43. La unidad de filtro de bucle 43 puede comprender una o mas de una unidad de filtro de desbloqueo, una unidad de filtro SAO y una unidad de filtro ALF.
[80] Durante el proceso de codificacion, el codificador de video 20 recibe una trama o un segmento de video que se va a codificar. La trama o el segmento pueden dividirse en multiples bloques de video, por ejemplo, unidades de codificacion maximas (LCU). La unidad de estimacion de movimiento 42 y la unidad de compensacion de movimiento 44 realizan una codificacion interpredictiva del bloque de video recibido con respecto a uno o mas bloques en una o mas tramas de referencia, para proporcionar una compresion temporal. El modulo de intraprediccion 46 puede realizar una codificacion intrapredictiva del bloque de video recibido con respecto a uno o mas bloques vecinos en la misma trama o segmento que el bloque que se vaya a codificar, para proporcionar compresion espacial.
[81] La unidad de seleccion de modo 40 puede seleccionar uno de los modos de codificacion (intra o inter), por ejemplo, en base a los resultados de la distorsion de velocidad para cada modo, y proporciona el bloque intracodificado o intercodificado resultante (por ejemplo, una unidad de prediccion (PU)) al sumador 50 para generar datos de bloque residuales y al sumador 62 para reconstruir el bloque codificado para su uso en una trama de referencia. El sumador 62 combina el bloque predicho con los datos cuantificados inversos y de transformada inversa, desde el modulo de transformada inversa 60 para que el bloque reconstruya el bloque codificado, como se describe con mas detalle a continuacion. Algunas tramas de video pueden designarse como tramas I, donde todos los bloques en una trama I se codifiquen en un modo de intraprediccion. En algunos casos, la unidad de procesamiento de intraprediccion 46 puede realizar la codificacion de intraprediccion de un bloque en una trama P o B, por ejemplo, cuando la busqueda de movimiento realizada por la unidad de estimacion de movimiento 42 no de como resultado una prediccion suficiente del bloque.
5
10
15
20
25
30
35
40
45
50
55
60
65
[82] La unidad de estimacion de movimiento 42 y la unidad de compensacion de movimiento 44 pueden estar altamente integradas, pero se ilustran por separado con fines conceptuales. La estimacion de movimiento (o busqueda de movimiento) es el proceso de generacion de vectores de movimiento, que estiman el movimiento para los bloques de video. Un vector de movimiento, por ejemplo, puede indicar el desplazamiento de una unidad de prediccion en una trama actual con respecto a una muestra de referencia de una trama de referencia. La unidad de estimacion de movimiento 42 calcula un vector de movimiento para una unidad de prediccion de una trama intercodificada mediante la comparacion de la unidad de prediccion con las muestras de referencia de una trama de referencia almacenada en la memoria intermedia de tramas de referencia 64. Una muestra de referencia puede ser un bloque del que se descubra que se adapta estrechamente a la parte de la CU que incluye la PU codificada, en terminos de diferencia de pixeles, que puede determinarse mediante la suma de una diferencia absoluta (SAD), una suma de diferencias al cuadrado (SSD) u otras metricas de diferencia. La muestra de referencia puede producirse en cualquier lugar dentro de una trama de referencia o de un segmento de referencia, y no necesariamente en un limite de bloque (por ejemplo, una unidad de codificacion) del segmento o trama de referencia. En algunos ejemplos, la muestra de referencia puede producirse en una posicion de pixel fraccionaria.
[83] La unidad de estimacion de movimiento 42 envfa el vector de movimiento calculado a la unidad de codificacion por entropfa 56 y a la unidad de compensacion de movimiento 44. La parte de la trama de referencia identificada por un vector de movimiento puede denominarse muestra de referencia. La unidad de compensacion de movimiento 44 puede calcular un valor de prediccion para una unidad de prediccion de una CU actual, por ejemplo, mediante la recuperacion de la muestra de referencia identificada por un vector de movimiento para la PU.
[84] El modulo de intraprediccion 46 puede intrapredecir el bloque recibido, como alternativa a la interprediccion realizada por la unidad de estimacion de movimiento 42 y por la unidad de compensacion de movimiento 44. El modulo de intraprediccion 46 puede predecir el bloque recibido respecto a bloques vecinos, previamente codificados, por ejemplo, bloques arriba, arriba y a la derecha, arriba y a la izquierda, o hacia la izquierda del bloque actual, suponiendo un orden de codificacion de izquierda a derecha y de arriba a abajo para los bloques. El modulo de intraprediccion 46 se puede configurar con una amplia variedad de diferentes modos de intraprediccion. Por ejemplo, el modulo de intraprediccion 46 se puede configurar con cierto numero de modos de prediccion direccional, por ejemplo, treinta y cuatro modos de prediccion direccional, en base al tamano de la CU que se vaya a codificar.
[85] El modulo de intraprediccion 46 puede seleccionar una modalidad de intraprediccion, por ejemplo, calculando valores de error para diversos modos de intraprediccion y seleccionando un modo que produzca el valor de error mas bajo. Los modos de prediccion direccional pueden incluir funciones para combinar valores de los pixeles espacialmente vecinos y la aplicacion de los valores combinados a una o mas posiciones de pixeles en una PU. Una vez que se han calculado los valores para todas las posiciones de pixeles en la PU, el modulo de intraprediccion 46 puede calcular un valor de error para el modo de prediccion en base a diferencias de pixeles entre la PU y el bloque recibido que se vaya a codificar. El modulo de intraprediccion 46 puede seguir probando modos de intraprediccion hasta que se descubra un modo de intraprediccion que produzca un valor de error aceptable. El modulo de intraprediccion 46 puede enviar luego la PU al sumador 50.
[86] El codificador de video 20 forma un bloque residual restando los datos de prediccion calculados por la unidad de compensacion de movimiento 44, o la unidad de intraprediccion 46, del bloque de video original que se esta codificando. El sumador 50 representa el componente o los componentes que realizan esta operacion de resta. El bloque residual puede corresponder a una matriz bidimensional de valores de diferencia de pixeles, donde el numero de valores en el bloque residual es el mismo que el numero de pixeles en la PU correspondiente al bloque residual. Los valores en el bloque residual pueden corresponder a las diferencias, es decir, el error, entre los valores de los pixeles colocados en la PU y en el bloque original que se vaya a codificar. Las diferencias pueden ser diferencias de crominancia o de luminancia dependiendo del tipo de bloque que se codifique.
[87] El modulo de transformada 52 puede formar una o mas unidades de transformada (TU) a partir del bloque residual. El modulo de transformada 52 selecciona una transformada a partir de entre una pluralidad de transformadas. La transformada puede seleccionarse en base a una o mas caracterfsticas de codificacion, tales como el tamano de bloque, el modo de codificacion o similares. El modulo de transformada 52 aplica luego la transformada seleccionada a la TU, produciendo un bloque de video que comprende una matriz bidimensional de coeficientes de transformada. El modulo de transformada 52 puede senalizar la particion de transformada seleccionada en el flujo de bits de video codificado.
[88] El modulo de transformada 52 puede enviar los coeficientes de transformada resultantes a la unidad de cuantificacion 54. La unidad de cuantificacion 54 puede cuantificar luego los coeficientes de transformada. La unidad de codificacion por entropfa 56 puede realizar luego un escaneo de los coeficientes de transformada cuantificados en la matriz de acuerdo con un modo de escaneo. Esta divulgacion describe la unidad de codificacion por entropfa 56 realizando el escaneo. Sin embargo, deberfa entenderse que, en otros ejemplos, otras unidades de procesamiento, tales como la unidad de cuantificacion 54, podrfan realizar el escaneo.
[89] Una vez que los coeficientes de transformada se escanean en la matriz unidimensional, la unidad de codificacion por entropfa 56 puede aplicar una codificacion por entropfa tal como la CABAC, una codificacion
5
10
15
20
25
30
35
40
45
50
55
60
65
aritmetica binaria adaptativa al contexto basada en sintaxis (SBAC) u otra metodologfa de codificacion por entropfa a los coeficientes.
[90] Para realizar la CAVLC, el codificador de video 56 puede seleccionar un codigo de longitud variable para un
simbolo que se vaya a transmitir. Las palabras clave en la VLC pueden construirse de manera que los codigos
relativamente mas cortos correspondan a simbolos mas probables, mientras que los codigos mas largos correspondan a simbolos menos probables. De esta forma, el uso de la VLC puede lograr un ahorro en bits, por ejemplo, en el uso de palabras clave de igual longitud para cada simbolo que se vaya a transmitir.
[91] Para realizar la CABAC, la unidad de codificacion por entropfa 56 puede seleccionar un modelo de contexto
para aplicar a cierto contexto, para codificar los simbolos que se vayan a transmitir. El contexto puede referirse, por
ejemplo, a si los valores vecinos son distintos de cero o no. La unidad de codificacion por entropfa 56 tambien puede codificar por entropfa elementos sintacticos, tales como la senal representativa de la transformada seleccionada. De acuerdo con las tecnicas de esta divulgacion, la unidad de codificacion por entropfa 56 puede seleccionar el modelo de contexto usado para codificar estos elementos sintacticos en base, por ejemplo, a una direccion de intraprediccion para los modos de intraprediccion, a una posicion de escaneo del coeficiente correspondiente a los elementos sintacticos, al tipo de bloque y/o al tipo de transformada, entre otros factores usados para la seleccion del modelo de contexto.
[92] Tras la codificacion por entropfa por la unidad de codificacion por entropfa 56, el video codificado resultante puede transmitirse a otro dispositivo, tal como el decodificador de video 30, o archivarse para su posterior transmision o recuperacion.
[93] En algunos casos, la unidad de codificacion por entropfa 56 u otra unidad del codificador de video 20 puede configurarse para realizar otras funciones de codificacion, ademas de la codificacion por entropfa. Por ejemplo, la unidad de codificacion por entropfa 56 se puede configurar para determinar los valores del patron de bloque codificado (CBP) para las CU y las PU. Asimismo, en algunos casos, la unidad de codificacion por entropfa 56 puede realizar una codificacion de longitud de coeficientes.
[94] La unidad de cuantificacion inversa 58 y la unidad de transformada inversa 60 aplican la cuantificacion inversa y la transformada inversa, respectivamente, para reconstruir el bloque residual en el dominio de pfxeles, por ejemplo, para su uso posterior como un bloque de referencia. La unidad de compensacion de movimiento 44 puede calcular un bloque de referencia anadiendo el bloque residual a un bloque predictivo de una de las tramas de la memoria intermedia de tramas de referencia 64. La unidad de compensacion de movimiento 44 tambien puede aplicar uno o mas filtros de interpolacion al bloque residual reconstruido para calcular valores de fracciones de pixel para su uso en la estimacion de movimiento. El sumador 62 anade el bloque residual reconstruido al bloque predictivo compensado por movimiento producido por la unidad de compensacion de movimiento 44 para producir un bloque de video reconstruido.
[95] La unidad de filtro de bucle 43 puede realizar luego un filtrado de bucle en los bloques reconstruidos de acuerdo con las tecnicas descritas anteriormente. En ejemplos de la divulgacion, la unidad de filtro de bucle 43, sola o junto con otros componentes del codificador de video 20, se puede configurar para realizar un filtrado de bucle en un proceso de codificacion de video. Por ejemplo, la unidad de filtro de bucle 43 se puede configurar para determinar, para un pixel actual de un bloque reconstruido, que uno o mas pfxeles correspondientes a coeficientes de filtro de una mascara de filtro para un filtro de bucle estan a traves de uno de un lfmite de segmento o de un lfmite de mosaico, y para realizar un filtrado de bucle en el pixel actual usando un filtro de bucle parcial (por ejemplo, un filtro de bucle parcial simetrico o asimetrico de acuerdo con los ejemplos de esta divulgacion).
[96] En un ejemplo, la unidad de filtro de bucle 43 se puede configurar ademas para eliminar los coeficientes de filtro correspondientes a uno o mas pfxeles a traves del lfmite de segmento o de mosaico de la mascara de filtro y para crear una mascara de filtro parcial para el filtro de bucle parcial usando el resto coeficientes de filtro en la mascara de filtro. La unidad de filtro de bucle 43 tambien puede renormalizar la mascara de filtro parcial, en la que realizar el filtrado de bucle comprende realizar un filtrado de bucle en el pixel actual usando el filtro de bucle parcial con la mascara de filtro parcial renormalizada.
[97] En otro ejemplo, la unidad de filtro de bucle 43 se puede configurar ademas para eliminar los primeros coeficientes de filtro correspondientes a uno o mas pfxeles a traves del lfmite de segmento o de mosaico de la mascara de filtro, para eliminar los segundos coeficientes de filtro correspondientes a pfxeles en el interior del lfmite de segmento y de mosaico con el fin de mantener una mascara de filtro simetrica respecto a los primeros coeficientes de filtro eliminados, y para crear una mascara de filtro parcial para el filtro de bucle parcial usando los coeficientes de filtro restantes en la mascara de filtro.
[98] Despues de filtrar los pfxeles, usando las tecnicas de filtrado de bucle descritas en esta divulgacion, el bloque de video reconstruido filtrado se almacena luego en la memoria intermedia de tramas de referencia 64. El bloque de video reconstruido puede usarse por la unidad de estimacion de movimiento 42 y por la unidad de compensacion de movimiento 44 como bloque de referencia para intercodificar un bloque en una trama de video
5
10
15
20
25
30
35
40
45
50
55
60
65
posterior. De esta manera, la unidad de filtro de bucle 43 representa un ejemplo de una unidad de filtrado que realiza el filtrado en bucle de los datos de video de acuerdo con las tecnicas de esta divulgacion, por ejemplo, como se describe con respecto a las FIGS. 6-10.
[99] La FIG. 12 es un diagrama de bloques que ilustra un ejemplo de un decodificador de video 30, que decodifica una secuencia de video codificado. En el ejemplo de la FIG. 12, el decodificador de video 30 incluye una unidad de decodificacion por entropfa 70, una unidad de compensacion de movimiento 72, un modulo de intraprediccion 74, una unidad de cuantificacion inversa 76, una unidad de transformada inversa 78, una memoria intermedia de tramas de referencia 82 y un sumador 80. En algunos ejemplos, el decodificador de video 30 puede realizar una pasada de decodificacion, en general recfproca a la pasada de codificacion descrita con respecto al codificador de video 20 (vease la FIG. 11).
[100] La unidad de decodificacion por entropfa 70 realiza un proceso de decodificacion por entropfa en el flujo de bits codificado para recuperar una matriz unidimensional de coeficientes de transformada. El proceso de decodificacion por entropfa usado depende de la codificacion por entropfa usada por el codificador de video 20 (por ejemplo, la CABAC, la CAVLC, etc.). El proceso de codificacion por entropfa usado por el codificador se puede senalizar en el flujo de bits codificado o puede ser un proceso predeterminado.
[101] En algunos ejemplos, la unidad de decodificacion por entropfa 70 (o la unidad de cuantificacion inversa 76) pueden escanear los valores recibidos usando un escaneo que espeje el modo de escaneo usado por la unidad de codificacion por entropfa 56 (o la unidad de cuantificacion 54) del codificador de video 20. Aunque el escaneo de coeficientes se pueda realizar en la unidad de cuantificacion inversa 76, el escaneo se describira, con fines ilustrativos, realizando por la unidad de decodificacion por entropfa 70. Ademas, aunque se muestran como unidades funcionales separadas para facilitar la ilustracion, la estructura y la funcionalidad de la unidad de decodificacion por entropfa 70, la unidad de cuantificacion inversa 76 y otras unidades del decodificador de video 30 pueden estar altamente integradas entre si.
[102] La unidad de cuantificacion inversa 76 cuantifica de manera inversa, es decir, descuantifica, los coeficientes de transformada cuantificados proporcionados en el flujo de bits y decodificados por la unidad de decodificacion por entropfa 70. El proceso de cuantificacion inversa puede incluir un proceso convencional, por ejemplo, similar a los procesos propuestos para la HEVC o definido por la norma de decodificacion H.264. El proceso de cuantificacion inversa tambien puede incluir el uso de un parametro de cuantificacion, QP, calculado por un codificador de video 20 para la CU, para determinar un grado de cuantificacion y, asimismo, el grado de cuantificacion inversa que deberfa aplicarse. La unidad de cuantificacion inversa 76 puede cuantificar de forma inversa los coeficientes de transformada, antes o despues de que los coeficientes se conviertan, desde una matriz unidimensional, en una matriz bidimensional.
[103] El modulo de transformada inversa 78 aplica una transformada inversa a los coeficientes de transformada cuantificada inversa. En algunos ejemplos, la unidad de transformada inversa 78 puede determinar una transformada inversa en base a la senalizacion desde el codificador de video 20, o por inferencia de la transformada desde una o mas caracterfsticas de codificacion tales como el tamano de bloque, el modo de codificacion o similares. En algunos ejemplos, la unidad de transformada inversa 78 puede determinar una transformada que se vaya a aplicar al bloque actual en base a una transformada senalizada en el nodo rafz de un arbol cuadruple para una LCU que incluya el bloque actual. De manera alternativa, la transformada puede senalizarse en la rafz de un arbol cuadruple de TU para una CU de nodo hoja en el arbol cuadruple de LCU. En algunos ejemplos, la unidad de procesamiento de transformada inversa 78 puede aplicar una transformada inversa en cascada, en la que la unidad de procesamiento de transformada inversa 78 aplique dos o mas transformadas inversas a los coeficientes de transformada del bloque actual que se este decodificando.
[104] El modulo de intraprediccion 74 puede generar datos de prediccion para un bloque actual de una trama actual en base a un modo de intraprediccion senalizada, y datos de bloques previamente decodificados de la trama actual.
[105] En base a la direccion de prediccion de movimiento recuperada, el indice de trama de referencia y el vector de movimiento actual calculado, la unidad de compensacion de movimiento produce un bloque de movimiento compensado para la parte actual. Estos bloques compensados de movimiento recrean esencialmente el bloque predictivo usado para producir los datos residuales.
[106] La unidad de compensacion de movimiento 72 puede generar los bloques compensados de movimiento, realizando posiblemente una interpolacion en base a filtros de interpolacion. Los identificadores de los filtros de interpolacion que vayan a usarse para la estimacion de movimiento con una precision de subpfxel pueden incluirse en los elementos sintacticos. La unidad de compensacion de movimiento 72 puede usar filtros de interpolacion como los usados por el codificador de video 20 durante la codificacion del bloque de video para calcular valores interpolados para fracciones de pfxeles de un bloque de referencia. La unidad de compensacion de movimiento 72 puede determinar los filtros de interpolacion usados por el codificador de video 20 de acuerdo con la informacion sintactica recibida y usar los filtros de interpolacion para generar bloques predictivos.
5
10
15
20
25
30
35
40
45
50
55
60
65
[107] Adicionalmente, la unidad de compensacion de movimiento 72 y el modulo de intraprediccion 74, en un ejemplo de la HEVC, pueden usar parte de la informacion sintactica (por ejemplo, proporcionada por un arbol cuadruple) para determinar tamanos de las LCU usadas para codificar trama(s) de la secuencia de video codificado. La unidad de compensacion de movimiento 72 y el modulo de intraprediccion 74 tambien pueden usar la informacion sintactica para determinar la informacion de division que describa como se divide cada CU de una trama de la secuencia de video codificado (y, del mismo modo, como se dividen las subCU). La informacion sintactica tambien puede incluir modalidades que indiquen como se codifica cada division (por ejemplo, intraprediccion o interprediccion, y para el modo de codificacion de intraprediccion e intraprediccion), una o mas tramas de referencia (y/o listas de referencias que contengan identificadores para las tramas de referencia) para cada PU intercodificada, y otra informacion para decodificar la secuencia de video codificado.
[108] El sumador 80 combina los bloques residuales con los bloques de prediccion correspondientes generados por la unidad de compensacion de movimiento 72 o por el modulo de intraprediccion 74 para formar bloques decodificados. La unidad de filtro de bucle 79 realiza luego el filtrado de bucle de acuerdo con las tecnicas descritas anteriormente.
[109] En ejemplos de la divulgacion, la unidad de filtro de bucle 79, sola o junto con otros componentes del decodificador de video 30, se puede configurar para realizar un filtrado de bucle en un proceso de codificacion de video. El filtrado de bucle puede incluir uno o mas de desbloqueo, ALF y filtrado SAO. Por ejemplo, la unidad de filtro de bucle 79 se puede configurar para determinar, para un pixel actual, que uno o mas pfxeles correspondientes a coeficientes de filtro de una mascara de filtro para un filtro de bucle estan a traves de uno de un lfmite de segmento o de un lfmite de mosaico, y para realizar el filtrado de bucle en el pixel actual usando un filtro de bucle parcial.
[110] En un ejemplo, la unidad de filtro de bucle 79 se puede configurar ademas para eliminar los coeficientes de filtro correspondientes a uno o mas pfxeles a traves del lfmite de segmento o de mosaico de la mascara de filtro, y para crear una mascara de filtro parcial para el filtro de bucle parcial usando los coeficientes de filtro restantes en la mascara de filtro. La unidad de filtro de bucle 79 tambien puede renormalizar la mascara de filtro parcial, en la que realizar el filtrado de bucle comprende realizar un filtrado de bucle en el pixel actual usando el filtro de bucle parcial con la mascara de filtro parcial renormalizada.
[111] En otro ejemplo, la unidad de filtro de bucle 79 se puede configurar ademas para eliminar los primeros coeficientes de filtro correspondientes a uno o mas pfxeles a traves del lfmite de segmento o de mosaico de la mascara de filtro, para eliminar los segundos coeficientes de filtro correspondientes a pfxeles en el interior del lfmite de segmento y de mosaico con el fin de mantener una mascara de filtro simetrica respecto a los primeros coeficientes de filtro eliminados, y para crear una mascara de filtro parcial para el filtro de bucle parcial usando los coeficientes de filtro restantes en la mascara de filtro.
[112] Los bloques de video decodificados se almacenan luego en la memoria intermedia de tramas de referencia 82, que proporciona bloques de referencia para la compensacion de movimiento posterior para la codificacion interpredictiva y tambien produce un video decodificado para su presentacion en un dispositivo de visualizacion (tal como el dispositivo de visualizacion 32 de la FIG. 1). De esta manera, la unidad de filtro de bucle 79 representa un ejemplo de una unidad de filtrado que realiza el filtrado en bucle de los datos de video de acuerdo con las tecnicas de esta divulgacion, por ejemplo, como se describe con respecto a las FIGS. 6-10.
[113] La FIG. 13 es un diagrama de flujo que representa un ejemplo de procedimiento de filtrado de bucle de acuerdo con la divulgacion. Las tecnicas mostradas en la FIG. 13 pueden implementarse mediante un codificador de video 20 o un decodificador de video 30 (en general mediante un codificador de video). Un codificador de video se puede configurar para determinar, para un pixel actual, que uno o mas pfxeles correspondientes a coeficientes de filtro de una mascara de filtro para un filtro de bucle estan a traves de uno de un lfmite de segmento o de uno de un mosaico (820). El codificador de video se puede configurar ademas para eliminar los primeros coeficientes de filtro correspondientes a uno o mas pfxeles a traves del lfmite de segmento o de mosaico de la mascara de filtro (822). En este caso, se forma un filtro parcial asimetrico. Opcionalmente, el codificador de video se puede configurar ademas para eliminar segundos coeficientes de filtro correspondientes a pfxeles en el interior del lfmite de segmento y de mosaico para mantener una mascara de filtro simetrica con relacion a los primeros coeficientes de filtro (824) eliminados.
[114] El codificador de video se puede configurar ademas para crear una mascara de filtro parcial para el filtro de bucle parcial usando los coeficientes de filtro restantes en la mascara de filtro (826) y para renormalizar la mascara de filtro parcial (828). La renormalizacion de los coeficientes de filtro puede incluir volver a calcular el valor de los coeficientes de filtro restantes en la mascara de filtro parcial de manera que el valor total de los coeficientes de filtro restantes sea igual al valor total de los coeficientes de filtro en una mascara de filtro completo. A menudo, este valor total es 1. El codificador de video realiza luego un filtrado de bucle en el pixel actual usando un filtro de bucle parcial con la mascara de filtro parcial (830) renormalizada.
5
10
15
20
25
30
35
40
45
50
55
[115] En algunos ejemplos, el codificador de video se puede configurar ademas para determinar, para el pixel actual, que uno o mas pfxeles correspondientes a los coeficientes de filtro de la mascara de filtro para el filtro de bucle estan a traves un lfmite vertical de mosaico, y omitir la realizacion del filtrado de bucle para el pixel actual.
[116] En uno o mas ejemplos, las funciones descritas pueden implementarse en hardware, software, firmware o cualquier combinacion de los mismos. Si se implementan en software, las funciones pueden almacenarse en o transmitirse a traves de, como una o mas instrucciones o codigo, 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 correspondan a un medio tangible tal como unos medios de almacenamiento de datos o unos medios de comunicacion que incluyan cualquier medio que facilite la transferencia de un programa informatico desde un lugar a otro, por ejemplo, de acuerdo con un protocolo de comunicacion. De esta manera, los medios legibles por ordenador pueden corresponder en general a (1) unos medios de almacenamiento tangibles legibles por ordenador que sean no transitorios, o (2) un medio de comunicacion tal como una senal o una onda portadora. Los medios de almacenamiento de datos pueden ser cualquier medio disponible a los que se pueda acceder desde uno o mas ordenadores o uno o mas procesadores para recuperar instrucciones, codigo y/o estructuras de datos para la implementacion de las tecnicas descritas en esta divulgacion. Un producto de programa informatico puede incluir un medio legible por ordenador.
[117] A modo de ejemplo, y no de manera limitativa, dichos medios de almacenamiento legibles por ordenador pueden comprender RAM, ROM, EEPROM, CD-ROM u otro almacenamiento de disco optico, almacenamiento de disco magnetico u otros dispositivos de almacenamiento magnetico, memoria flash o cualquier otro medio que pueda usarse para almacenar un codigo de programa deseado en forma de instrucciones o estructuras de datos y al que pueda accederse mediante un ordenador. Ademas, cualquier conexion recibe apropiadamente la denominacion de medio legible por ordenador. Por ejemplo, si las instrucciones se transmiten desde una pagina web, un servidor u otra fuente remota usando un cable coaxial, un cable de fibra optica, un par trenzado, una lfnea de abonado digital (DSL) o tecnologfas inalambricas tales como infrarrojos, radio y microondas, luego el cable coaxial, el cable de fibra optica, el par trenzado, la DSL o las tecnologfas inalambricas tales como infrarrojos, radio y microondas se incluyen en la definicion de medio. Sin embargo, deberfa entenderse que los medios de almacenamiento legibles por ordenador y los medios de almacenamiento de datos no incluyen conexiones, ondas portadoras, senales u otros medios transitorios, sino que, en cambio, se orientan a medios de almacenamiento tangibles no transitorios. El termino disco, como se usa en el presente documento, incluye un disco compacto (CD), un disco laser, un disco optico, un disco versatil digital (DVD), un disco flexible y un disco Blu-ray, donde algunos discos reproducen usualmente datos magneticamente, mientras que otros discos reproducen datos opticamente con laseres. Las combinaciones de lo anterior deberfan incluirse tambien dentro del alcance de los medios legibles por ordenador.
[118] Las instrucciones pueden ejecutarse por uno o mas procesadores, tales como uno o mas procesadores de senales digitales (DSP), microprocesadores de uso general, circuitos integrados especfficos de la aplicacion (ASIC), matrices logicas programables por campo (FPGA) u otros circuitos logicos integrados o discretos equivalentes. Por consiguiente, el termino "procesador", como se usa en el presente documento, puede referirse a cualquiera de las estructuras anteriores o a cualquier otra estructura adecuada para la implementacion de las tecnicas descritas en el presente documento. Ademas, en algunos aspectos, la funcionalidad descrita en el presente documento puede proporcionarse dentro de modulos de hardware y/o software dedicados configurados para codificar y decodificar, o incorporarse en un codec combinado. Asimismo, las tecnicas podrfan implementarse completamente en uno o mas circuitos o elementos logicos.
[119] Las tecnicas de la presente divulgacion se pueden implementar en una amplia variedad de dispositivos o aparatos, que incluyan un auricular inalambrico, un circuito integrado (IC) o un conjunto de IC (por ejemplo, un conjunto de chips). Diversos componentes, modulos o unidades se describen en esta divulgacion para enfatizar aspectos funcionales de dispositivos configurados para realizar las tecnicas divulgadas, pero no requieren necesariamente su realizacion 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, incluidos uno o mas procesadores como los descritos anteriormente, conjuntamente con software y/o firmware adecuados.
[120] Se han descrito diversos ejemplos. Estos y otros ejemplos estan dentro del alcance de las siguientes reivindicaciones.
Claims (10)
10
15
20
25
2.
30
3.
35
40
4.
45
50
5.
55 6.
60
REIVINDICACIONES
Un procedimiento para realizar el filtrado de bucle adaptativo, ALF, en un proceso de codificacion de video, comprendiendo el procedimiento:
Determinar (820), para un pixel actual, que uno o mas pixeles correspondientes a los coeficientes de filtro de una mascara de filtro para un filtro de bucle adaptativo estan a traves de uno de un limite de segmento o de un limite de mosaico;
caracterizado por, basado en la determinacion, definir un filtro de bucle adaptativo parcial, en el que la definicion del filtro de bucle adaptativo parcial comprende:
eliminar (822) los primeros coeficientes de filtro correspondientes al uno o mas pixeles a traves del limite de segmento o de mosaico desde la mascara de filtro;
eliminar (824) segundos coeficientes de filtro correspondientes a pixeles en un interior del limite de segmento y de mosaico desde la mascara de filtro para mantener una mascara de filtro simetrica respecto a los primeros coeficientes de filtro eliminados; y
crear (826) una mascara de filtro parcial para el filtro de bucle adaptativo parcial usando los coeficientes de filtro restantes en la mascara de filtro, en el que la mascara de filtro parcial define el filtro de bucle adaptativo parcial; y
realizar (830) el filtrado de bucle adaptativo en el pixel actual usando el filtro de bucle adaptativo parcial.
El procedimiento segun la reivindicacion 1, en el que la definicion del filtro de bucle adaptativo parcial comprende ademas:
Renormalizar (828) la mascara de filtro parcial, en la que realizar el filtrado de bucle adaptativo comprende realizar un filtrado de bucle adaptativo en el pixel actual usando el filtro de bucle adaptativo parcial con la mascara de filtro parcial renormalizada.
El procedimiento segun la reivindicacion 1, en el que el proceso de codificacion de video es un proceso de codificacion de video, comprendiendo ademas el procedimiento:
codificar un bloque de datos de video para formar un bloque codificado de datos de video; y
reconstruir el bloque codificado de datos de video para formar un bloque reconstruido de datos de video, en el que el pixel actual esta dentro del bloque reconstruido de datos de video.
El procedimiento segun la reivindicacion 1, en el que el proceso de codificacion de video es un proceso de decodificacion de video, comprendiendo ademas el procedimiento:
recibir un bloque codificado de datos de video; y
realizar un proceso de prediccion para formar un bloque reconstruido de datos de video, en el que el pixel actual esta dentro del bloque reconstruido de datos de video.
El procedimiento segun la reivindicacion 1,
en el que el filtro de bucle adaptativo se define mediante una de un modo de clasificacion basado en bloques y de un modo de clasificacion basado en regiones.
Un aparato (20, 30) configurado para realizar un filtrado de bucle adaptativo en un proceso de codificacion de video, comprendiendo el aparato:
medios para determinar, para un pixel actual, que uno o mas pixeles correspondientes a coeficientes de filtro de una mascara de filtro para un filtro de bucle adaptativo estan a traves de uno de un limite de segmento o de mosaico; caracterizado por:
medios para definir un filtro de bucle adaptativo parcial, en base a la determinacion, en el que los medios para definir el filtro de bucle adaptativo parcial comprenden:
medios para eliminar los primeros coeficientes de filtro correspondientes al uno o mas pixeles a traves del limite de segmento o de mosaico de la mascara de filtro;
5
10
15
20
25
30
35
40
medios para eliminar los segundos coeficientes de filtro correspondientes a pfxeles en un interior del limite de segmento y de mosaico de la mascara de filtro con el fin de mantener una mascara de filtro simetrica respecto a los primeros coeficientes de filtro eliminados; y
medios para crear una mascara de filtro parcial para el filtro de bucle adaptativo parcial que use los coeficientes de filtro restantes en la mascara de filtro, en el que la mascara de filtro parcial defina el filtro de bucle adaptativo parcial; y
medios para realizar un filtrado de bucle adaptativo en el pixel actual usando el filtro de bucle adaptativo parcial.
7. El aparato segun la reivindicacion 6, en el que los medios para definir el filtro de bucle adaptativo parcial comprende:
medios para renormalizar la mascara de filtro parcial, en el que los medios para realizar un filtrado de bucle adaptativo comprenden medios para realizar un filtrado de bucle adaptativo en el pixel actual usando el filtro de bucle adaptativo parcial con la mascara de filtro parcial renormalizada.
8. El aparato segun la reivindicacion 6, en el que el proceso de codificacion de video es un proceso de codificacion de video, comprendiendo ademas el aparato:
medios (20) para codificar un bloque de datos de video para formar un bloque codificado de datos de video; y
medios (62) para reconstruir el bloque codificado de datos de video para formar un bloque reconstruido de datos de video, en el que el pixel actual se encuentra dentro del bloque reconstruido de datos de video.
9. El aparato de la reivindicacion 6, en el que el proceso de codificacion de video es un proceso de decodificacion de video, comprendiendo ademas el aparato:
medios para recibir un bloque codificado de datos de video; y
medios (30) para realizar un proceso de prediccion para formar un bloque reconstruido de datos de video, en el que el pixel actual esta dentro del bloque reconstruido de datos de video.
10. El aparato segun la reivindicacion 6,
en el que el filtro de bucle adaptativo se define mediante uno de un modo de clasificacion basado en bloques y de un modo de clasificacion basado en regiones.
11. Un medio de almacenamiento legible por ordenador que almacena instrucciones que, cuando se ejecutan, causan que uno o mas procesadores, configurados para realizar un proceso de codificacion de video, lleven a cabo el procedimiento de cualquiera de las reivindicaciones 1 a 5.
Applications Claiming Priority (5)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US201161550211P | 2011-10-21 | 2011-10-21 | |
| US201161550211P | 2011-10-21 | ||
| US201213598375 | 2012-08-29 | ||
| US13/598,375 US9462298B2 (en) | 2011-10-21 | 2012-08-29 | Loop filtering around slice boundaries or tile boundaries in video coding |
| PCT/US2012/053176 WO2013058876A1 (en) | 2011-10-21 | 2012-08-30 | Loop filtering around slice boundaries or tile boundaries in video coding |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| ES2677100T3 true ES2677100T3 (es) | 2018-07-30 |
Family
ID=48135966
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| ES12755945.8T Active ES2677100T3 (es) | 2011-10-21 | 2012-08-30 | Filtrado de bucle alrededor de los límites de segmento o de límites de mosaico en la codificación de video |
Country Status (8)
| Country | Link |
|---|---|
| US (1) | US9462298B2 (es) |
| EP (1) | EP2769545B1 (es) |
| JP (1) | JP5876156B2 (es) |
| KR (1) | KR101607788B1 (es) |
| CN (1) | CN104247434B (es) |
| ES (1) | ES2677100T3 (es) |
| HU (1) | HUE038103T2 (es) |
| WO (1) | WO2013058876A1 (es) |
Families Citing this family (51)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| EP2737705A4 (en) * | 2011-10-24 | 2016-03-02 | Mediatek Inc | METHOD AND APPARATUS FOR NON-INTER-TILE BUCKLE FILTERING |
| CN107959852A (zh) * | 2011-11-08 | 2018-04-24 | 株式会社Kt | 对视频信号进行解码的方法 |
| KR20240038130A (ko) * | 2012-02-04 | 2024-03-22 | 엘지전자 주식회사 | 비디오 인코딩 방법, 비디오 디코딩 방법 및 이를 이용하는 장치 |
| US9591331B2 (en) * | 2012-03-28 | 2017-03-07 | Qualcomm Incorporated | Merge signaling and loop filter on/off signaling |
| EP2920962A4 (en) | 2012-11-13 | 2016-07-20 | Intel Corp | ADAPTIVE TRANSFORMATION ENCODING OF CONTENT FOR NEXT GENERATION VIDEO |
| US20140341302A1 (en) * | 2013-05-15 | 2014-11-20 | Ce Wang | Slice level bit rate control for video coding |
| CN104702963B (zh) * | 2015-02-13 | 2017-11-24 | 北京大学 | 一种自适应环路滤波的边界处理方法及装置 |
| MY197611A (en) | 2015-09-25 | 2023-06-28 | Huawei Tech Co Ltd | Apparatus and method for video motion compensation |
| BR112018006009B1 (pt) | 2015-09-25 | 2023-12-12 | Huawei Technologies Co., Ltd | Codificador de vídeo, decodificador de vídeo, métodos para a codificação e decodificação preditiva e meio de armazenamento legível por computador |
| CN108141603B (zh) | 2015-09-25 | 2020-12-15 | 华为技术有限公司 | 视频编解码方法及视频编解码器 |
| WO2017052408A1 (en) | 2015-09-25 | 2017-03-30 | Huawei Technologies Co., Ltd. | Apparatus and method for video motion compensation |
| JP6678735B2 (ja) | 2015-09-25 | 2020-04-08 | 華為技術有限公司Huawei Technologies Co.,Ltd. | 予測符号化のための適応シャープニングフィルタ |
| US11405611B2 (en) | 2016-02-15 | 2022-08-02 | Qualcomm Incorporated | Predicting filter coefficients from fixed filters for video coding |
| US20190253624A1 (en) * | 2017-07-17 | 2019-08-15 | Ki Baek Kim | Image data encoding/decoding method and apparatus |
| KR20190052128A (ko) * | 2016-10-04 | 2019-05-15 | 김기백 | 영상 데이터 부호화/복호화 방법 및 장치 |
| CN110495168B (zh) | 2017-04-06 | 2021-12-07 | 松下电器(美国)知识产权公司 | 编码装置、解码装置、编码方法及解码方法 |
| TW201842768A (zh) | 2017-04-06 | 2018-12-01 | 美商松下電器(美國)知識產權公司 | 編碼裝置、解碼裝置、編碼方法及解碼方法 |
| WO2018225593A1 (ja) | 2017-06-05 | 2018-12-13 | パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ | 符号化装置、復号装置、符号化方法および復号方法 |
| WO2019131400A1 (ja) * | 2017-12-26 | 2019-07-04 | シャープ株式会社 | 画像フィルタ装置、画像復号装置、および画像符号化装置 |
| CN109996069B (zh) | 2018-01-03 | 2021-12-10 | 华为技术有限公司 | 视频图像编解码方法及设备 |
| WO2019158812A1 (en) * | 2018-02-16 | 2019-08-22 | Nokia Technologies Oy | A method and an apparatus for motion compensation |
| EP4246973A3 (en) * | 2018-03-09 | 2023-12-06 | Huawei Technologies Co., Ltd. | Method and apparatus for image filtering with adaptive multiplier coefficients |
| CN110662064B (zh) | 2018-06-29 | 2022-06-14 | 北京字节跳动网络技术有限公司 | Lut中的运动候选的检查顺序 |
| JP7137008B2 (ja) | 2018-06-29 | 2022-09-13 | 北京字節跳動網絡技術有限公司 | 1つまたは複数のルックアップテーブルを使用して、以前コーディングされた動き情報を順に記憶させてそれらを後続のブロックのコーディングに使用する概念 |
| TWI723445B (zh) | 2018-06-29 | 2021-04-01 | 大陸商北京字節跳動網絡技術有限公司 | 查找表的更新:fifo、約束的fifo |
| TWI731360B (zh) | 2018-06-29 | 2021-06-21 | 大陸商北京字節跳動網絡技術有限公司 | 查找表的使用條件 |
| CN110662057B (zh) | 2018-06-29 | 2022-06-21 | 北京字节跳动网络技术有限公司 | 视频处理方法、装置、设备以及存储比特流的方法 |
| KR20210024502A (ko) | 2018-06-29 | 2021-03-05 | 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 | Hmvp 후보를 병합/amvp에 추가할 때의 부분/풀 프루닝 |
| CN110662063B (zh) | 2018-06-29 | 2020-12-15 | 北京字节跳动网络技术有限公司 | 视频处理方法、装置和计算机可读存储介质 |
| KR20240005239A (ko) | 2018-06-29 | 2024-01-11 | 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 | Lut와 amvp 사이의 상호작용 |
| CN115134599A (zh) | 2018-06-29 | 2022-09-30 | 抖音视界有限公司 | 更新查找表(lut)的条件 |
| WO2020008347A1 (en) | 2018-07-02 | 2020-01-09 | Beijing Bytedance Network Technology Co., Ltd. | Hmvp + non-adjacent motion |
| CN111064959B (zh) | 2018-09-12 | 2023-09-01 | 北京字节跳动网络技术有限公司 | 要检查多少个hmvp候选 |
| KR102648159B1 (ko) | 2019-01-10 | 2024-03-18 | 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 | Lut 업데이트의 호출 |
| WO2020143824A1 (en) | 2019-01-13 | 2020-07-16 | Beijing Bytedance Network Technology Co., Ltd. | Interaction between lut and shared merge list |
| CN113302937B (zh) | 2019-01-16 | 2024-08-02 | 北京字节跳动网络技术有限公司 | 运动候选推导 |
| ES2980868T3 (es) * | 2019-03-11 | 2024-10-03 | Huawei Tech Co Ltd | Direcciones de segmento basadas en sub-imagen en codificación de vídeo |
| CN113615193B (zh) | 2019-03-22 | 2024-06-25 | 北京字节跳动网络技术有限公司 | Merge列表构建和其他工具之间的交互 |
| CN110147761A (zh) * | 2019-05-20 | 2019-08-20 | 杭州电子科技大学 | 基于扩展卡尔曼滤波的卷积神经网络的道路损伤识别方法 |
| CN121367775A (zh) | 2019-05-22 | 2026-01-20 | 弗劳恩霍夫应用研究促进协会 | 用于独立编码区域的无漂移填充和哈希的编码器和解码器,编码方法和解码方法 |
| US20220417506A1 (en) * | 2019-06-23 | 2022-12-29 | Lg Electronics Inc. | Deblocking filtering method and apparatus in video/image coding system |
| US11432015B2 (en) * | 2019-07-11 | 2022-08-30 | Qualcomm Incorporated | Adaptive loop filtering across raster-scan slices |
| BR112022000214A2 (pt) * | 2019-07-11 | 2022-02-22 | Samsung Electronics Co Ltd | Método de decodificação de vídeo em |
| US11303890B2 (en) * | 2019-09-05 | 2022-04-12 | Qualcomm Incorporated | Reusing adaptive loop filter (ALF) sub-picture boundary processing for raster-scan slice boundaries |
| WO2021115362A1 (en) * | 2019-12-11 | 2021-06-17 | Beijing Bytedance Network Technology Co., Ltd. | Sample padding for cross-component adaptive loop filtering |
| JP7541102B2 (ja) | 2020-02-14 | 2024-08-27 | エルジー エレクトロニクス インコーポレイティド | フィルタ利用可能情報を選択的にシグナリングする画像符号化/復号化方法及び装置、並びにビットストリームを伝送する方法 |
| KR102918036B1 (ko) * | 2020-03-29 | 2026-01-23 | 엘지전자 주식회사 | 인루프 필터링 기반 영상 코딩 장치 및 방법 |
| US12015802B2 (en) | 2020-04-01 | 2024-06-18 | Hfi Innovation Inc. | Method and apparatus for signaling slice partition information in image and video coding |
| KR102846913B1 (ko) | 2020-06-30 | 2025-08-14 | 두인 비전 컴퍼니 리미티드 | 적응적 루프 필터링을 위한 경계 위치 |
| CN117834864B (zh) * | 2022-09-27 | 2025-11-18 | 中兴通讯股份有限公司 | 一种视频编解码环路滤波方法、视频解码方法及装置 |
| WO2025076116A1 (en) * | 2023-10-02 | 2025-04-10 | Netflix, Inc. | Techniques for debanding in the intra-prediction stage of a video coding pipeline |
Family Cites Families (12)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR100243225B1 (ko) * | 1997-07-16 | 2000-02-01 | 윤종용 | 블록화효과 및 링잉잡음 감소를 위한 신호적응필터링방법 및신호적응필터 |
| CN101669360B (zh) | 2007-04-26 | 2016-08-03 | 宝利通公司 | 去块滤波器设备 |
| US9648325B2 (en) | 2007-06-30 | 2017-05-09 | Microsoft Technology Licensing, Llc | Video decoding implementations for a graphics processing unit |
| US8535255B2 (en) | 2007-09-14 | 2013-09-17 | Sage Products, Inc. | Therapeutic boots stabilization wedge |
| JP5127557B2 (ja) | 2008-05-12 | 2013-01-23 | 株式会社リコー | 画像復号装置、画像復号方法、プログラム、及び、記録媒体 |
| US20100245672A1 (en) * | 2009-03-03 | 2010-09-30 | Sony Corporation | Method and apparatus for image and video processing |
| KR101749269B1 (ko) | 2009-06-30 | 2017-06-22 | 삼성전자주식회사 | 적응적인 인루프 필터를 이용한 동영상 부호화와 복호화 장치 및 그 방법 |
| JP5344238B2 (ja) | 2009-07-31 | 2013-11-20 | ソニー株式会社 | 画像符号化装置および方法、記録媒体、並びにプログラム |
| JP5233897B2 (ja) | 2009-07-31 | 2013-07-10 | ソニー株式会社 | 画像処理装置および方法 |
| CN101694694B (zh) * | 2009-10-22 | 2011-09-28 | 上海交通大学 | 用于交互式演示系统中的手指识别方法 |
| EP2559238B1 (en) * | 2010-04-13 | 2015-06-03 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Adaptive image filtering method and apparatus |
| CN103109530A (zh) | 2010-07-09 | 2013-05-15 | 三星电子株式会社 | 使用可调整环路滤波对视频编码的方法和设备以及使用可调整环路滤波对视频解码的方法和设备 |
-
2012
- 2012-08-29 US US13/598,375 patent/US9462298B2/en active Active
- 2012-08-30 WO PCT/US2012/053176 patent/WO2013058876A1/en not_active Ceased
- 2012-08-30 KR KR1020147013448A patent/KR101607788B1/ko active Active
- 2012-08-30 JP JP2014537062A patent/JP5876156B2/ja active Active
- 2012-08-30 EP EP12755945.8A patent/EP2769545B1/en active Active
- 2012-08-30 HU HUE12755945A patent/HUE038103T2/hu unknown
- 2012-08-30 CN CN201280051439.6A patent/CN104247434B/zh active Active
- 2012-08-30 ES ES12755945.8T patent/ES2677100T3/es active Active
Also Published As
| Publication number | Publication date |
|---|---|
| HUE038103T2 (hu) | 2018-09-28 |
| KR20140081882A (ko) | 2014-07-01 |
| JP5876156B2 (ja) | 2016-03-02 |
| EP2769545B1 (en) | 2018-04-18 |
| JP2014533008A (ja) | 2014-12-08 |
| KR101607788B1 (ko) | 2016-03-30 |
| CN104247434A (zh) | 2014-12-24 |
| US9462298B2 (en) | 2016-10-04 |
| EP2769545A1 (en) | 2014-08-27 |
| WO2013058876A1 (en) | 2013-04-25 |
| CN104247434B (zh) | 2018-10-02 |
| US20130101016A1 (en) | 2013-04-25 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| ES2677100T3 (es) | Filtrado de bucle alrededor de los límites de segmento o de límites de mosaico en la codificación de video | |
| ES3001093T3 (es) | Diseño y señalización de filtro de bucle adaptativo (ALF) basado en bloques | |
| US10778974B2 (en) | Adaptive loop filter with enhanced classification methods | |
| ES2856051T3 (es) | Candidatos de fusión favorables a la paralelización para codificación de vídeo | |
| ES2864623T3 (es) | Codificación de parámetros de cuantificación (QP) en codificación de video | |
| ES2891175T3 (es) | Realizar de manera adaptativa operaciones de suavizado | |
| ES2637490T3 (es) | Grupos de coeficientes y codificación de coeficientes para barridos de coeficientes | |
| ES2715838T3 (es) | Matrices de cuantización de señalización para la codificación de vídeo | |
| ES2777218T3 (es) | Inhabilitación de ocultación de datos de signo en codificación de vídeo | |
| ES2608595T3 (es) | Mejora del rendimiento para la codificación del nivel de coeficientes de la CABAC | |
| ES2866894T3 (es) | Predicción de coeficientes de filtro a partir de filtros fijos para codificación de video | |
| ES2963135T3 (es) | Codificación de la posición de un último coeficiente significativo dentro de un bloque de vídeo basándose en un orden de exploración para el bloque en una codificación de vídeo | |
| ES2844549T3 (es) | Inicialización del parámetro de Rice para la codificación de niveles de coeficiente en un proceso de codificación de vídeo | |
| ES3047693T3 (en) | Video coding using mapped transforms and scanning modes | |
| ES2865389T3 (es) | Actualización del parámetro de rice para la codificación de nivel de coeficiente en el procedimiento de codificación de vídeo | |
| ES2810253T3 (es) | Reposicionamiento de bloques residuales de predicción en codificación de vídeo | |
| ES2693643T3 (es) | Exploración dependiente de modo de coeficientes de un bloque de datos 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 | |
| KR101721302B1 (ko) | 비디오 코딩에서 변환 계수 데이터를 코딩하기 위한 콘텍스트들의 결정 | |
| ES2952256T3 (es) | Modelado de contexto eficiente de memoria | |
| US9497472B2 (en) | Parallel context calculation in video coding | |
| JP5922245B2 (ja) | クロマ成分のための適応ループフィルタ処理 | |
| CA2840618C (en) | Derivation of the position in scan order of the last significant transform coefficient in video coding | |
| 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 | |
| US9445088B2 (en) | LCU-based adaptive loop filtering for video coding |