ES3001093T3 - Diseño y señalización de filtro de bucle adaptativo (ALF) basado en bloques - Google Patents
Diseño y señalización de filtro de bucle adaptativo (ALF) basado en bloques Download PDFInfo
- Publication number
- ES3001093T3 ES3001093T3 ES19732509T ES19732509T ES3001093T3 ES 3001093 T3 ES3001093 T3 ES 3001093T3 ES 19732509 T ES19732509 T ES 19732509T ES 19732509 T ES19732509 T ES 19732509T ES 3001093 T3 ES3001093 T3 ES 3001093T3
- Authority
- ES
- Spain
- Prior art keywords
- adaptive loop
- block
- video
- loop filters
- filters
- 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
- 230000003044 adaptive effect Effects 0.000 title claims abstract description 242
- 230000011664 signaling Effects 0.000 title description 15
- 238000013461 design Methods 0.000 title description 11
- 238000000034 method Methods 0.000 claims description 91
- 238000001914 filtration Methods 0.000 claims description 76
- 238000003860 storage Methods 0.000 claims description 23
- 238000004891 communication Methods 0.000 claims description 14
- 241000023320 Luma <angiosperm> Species 0.000 description 33
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 description 33
- 238000012545 processing Methods 0.000 description 26
- 238000013139 quantization Methods 0.000 description 20
- 239000013598 vector Substances 0.000 description 19
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 description 18
- 230000008569 process Effects 0.000 description 17
- 230000006835 compression Effects 0.000 description 14
- 238000007906 compression Methods 0.000 description 14
- 230000002123 temporal effect Effects 0.000 description 14
- 230000005540 biological transmission Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 8
- 238000013500 data storage Methods 0.000 description 7
- 238000000638 solvent extraction Methods 0.000 description 6
- 238000012360 testing method Methods 0.000 description 6
- 230000004927 fusion Effects 0.000 description 5
- 238000005192 partition Methods 0.000 description 5
- 230000009466 transformation Effects 0.000 description 5
- 230000000007 visual effect Effects 0.000 description 5
- 238000003491 array Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000012805 post-processing Methods 0.000 description 3
- PXFBZOLANLWPMH-UHFFFAOYSA-N 16-Epiaffinine Natural products C1C(C2=CC=CC=C2N2)=C2C(=O)CC2C(=CC)CN(C)C1C2CO PXFBZOLANLWPMH-UHFFFAOYSA-N 0.000 description 2
- VBRBNWWNRIMAII-WYMLVPIESA-N 3-[(e)-5-(4-ethylphenoxy)-3-methylpent-3-enyl]-2,2-dimethyloxirane Chemical compound C1=CC(CC)=CC=C1OC\C=C(/C)CCC1C(C)(C)O1 VBRBNWWNRIMAII-WYMLVPIESA-N 0.000 description 2
- 244000292604 Salvia columbariae Species 0.000 description 2
- 235000012377 Salvia columbariae var. columbariae Nutrition 0.000 description 2
- 235000001498 Salvia hispanica Nutrition 0.000 description 2
- 108010063123 alfare Proteins 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 235000014167 chia Nutrition 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 230000001186 cumulative effect Effects 0.000 description 2
- 230000008030 elimination Effects 0.000 description 2
- 238000003379 elimination reaction Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 208000028167 Southeast Asian ovalocytosis Diseases 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000009849 deactivation Effects 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000012432 intermediate storage Methods 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 230000007704 transition 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/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/154—Measured or subjectively estimated visual quality after decoding, e.g. measurement of distortion
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/172—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/174—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a slice, e.g. a line of blocks or a group of blocks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/176—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/46—Embedding additional information in the video signal during the compression process
- H04N19/463—Embedding additional information in the video signal during the compression process by compressing encoding parameters before transmission
-
- 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/70—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
-
- 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/90—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
- H04N19/96—Tree coding, e.g. quad-tree coding
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
Un codificador y decodificador de vídeo puede determinar un conjunto de filtros de bucle adaptativos, de entre una pluralidad de conjuntos de filtros de bucle adaptativos, sobre una base por bloque. Cada conjunto de filtros de bucle adaptativos puede incluir filtros de una imagen anterior, filtros indicados para la imagen actual y/o un filtro entrenado previamente. Al variar el conjunto de filtros de bucle adaptativos sobre una base por bloque, los filtros de bucle adaptativos disponibles para cada bloque de datos de vídeo pueden estar más adaptados a las estadísticas locales de los datos de vídeo. (Traducción automática con Google Translate, sin valor legal)
Description
DESCRIPCIÓN
Diseño y señalización de filtro de bucle adaptativo (ALF) basado en bloques
Campo técnico
Esta divulgación se relaciona con la codificación de vídeo y decodificación de vídeo.
Antecedentes
Las capacidades de vídeo digital se pueden incorporar en un amplio rango de dispositivos, incluyendo televisores digitales, sistemas de radiodifusión directa digital, sistemas de radiodifusión inalámbrica, asistentes digitales personales (PDAs), ordenadores portátiles o de escritorio, ordenadores tipo tableta, lectores de libros electrónicos, cámaras digitales, dispositivos de grabación digital, reproductores de medios digitales, dispositivos de videojuegos, consolas de videojuegos, teléfonos celulares o de radio satelital, los llamados "teléfonos inteligentes", dispositivos de teleconferencia por vídeo, dispositivos de generación de flujo de vídeo, y similares. Los dispositivos de vídeo digital implementan técnicas de compresión de vídeo, tales como las descritas en los estándares definidos por MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Parte 10, Cifrado de Vídeo Avanzado (AVC), el estándar de Cifrado de Vídeo de Alta Eficiencia (HEVC) recientemente finalizado, y extensiones de tales estándares. Los dispositivos de vídeo pueden transmitir, recibir, codificar, decodificar, y/o almacenar información de vídeo digital de manera más eficiente al implementar tales técnicas de compresión de vídeo.
Las técnicas de compresión de vídeo realizan predicción espacial (intraimagen) y/o predicción temporal (interimagen) para reducir o retirar la redundancia inherente en las secuencias de vídeo. Para el cifrado de vídeo basado en bloques, una sección de vídeo (es decir, un marco de vídeo o una porción de un marco de vídeo) puede dividirse en bloques de vídeo, que también pueden denominarse como bloques de árbol, unidades de cifrado (CUs) y/o nodos de cifrado. Los bloques de vídeo en una sección intracifrada (I) de una imagen se codifican usando predicción espacial con respecto a muestras de referencia en bloques vecinos en la misma imagen. Los bloques de vídeo en una sección intercifrada (P o B) de una imagen pueden usar predicción espacial con respecto a muestras de referencia en bloques vecinos en la misma imagen o predicción temporal con respecto a muestras de referencia en otras imágenes de referencia. Las imágenes pueden denominarse como marcos, y las imágenes de referencia pueden denominarse como marcos de referencia.
La predicción espacial o temporal da como resultado un bloque predictivo para un bloque que va a ser cifrado. Los datos residuales representan diferencias de píxeles entre el bloque original que va a ser cifrado y el bloque predictivo. Un bloque intercifrado se codifica de acuerdo con un vector de movimiento que apunta a un bloque de muestras de referencia que forman el bloque predictivo, y los datos residuales que indican la diferencia entre el bloque cifrado y el bloque predictivo. Un bloque intracifrado se codifica de acuerdo con un modo de intracifrado y los datos residuales. Para una compresión adicional, los datos residuales pueden transformarse desde el dominio de píxeles a un dominio de transformada, dando como resultado coeficientes de transformada residuales, que luego pueden cuantificarse. Los coeficientes de transformada cuantificados, dispuestos inicialmente en un arreglo bidimensional, pueden escanearse con el fin de producir un vector unidimensional de coeficientes de transformada, y puede aplicarse un cifrado por entropía para lograr una compresión aún mayor.
Alfonso De La Rocha Gomez - Arevalillo: "Investigating the Adaptive Loop Filter in Next Generation Video Coding", Tesis independiente de nivel Avanzado (grado de Máster (Dos Años)), proporciona una visión general detallada de la implementación de Filtro de bucle adaptativo (ALF) en JEM3 (es decir ISO/IEC Equipo Conjunto de Exploración de vídeo (JVET). "N16276: Algorithm description of Joint Exploratory Test Model 3 (JEM3)". En las etapas de ALF, los bloques incluidos en cada grupo de clasificación para el canal de luma se usan para diseñar un conjunto óptimo de coeficientes de filtro. Por lo tanto, se pueden usar y transmitir hasta 25 filtros en ALF para el canal de luma (un conjunto diferente de coeficientes de filtro para cada grupo). Además, si para una Cu , la distorsión medida es menor para la señal filtrada (usando los coeficientes previamente estimados, fusionados o predichos) en comparación con la que va a ser filtrada, se habilita el indicador de ALF para esa CU.
CHEN J ET AL: "JVET-G1001-Algorithm description of Joint Exploration Test Model 7 (JEM7)", JOINT VIDEO EXPLORATION TEAM (JVET)OF ITU-T SG 16 WP 3 AND ISO/IECJTC 1/SC 29/WG 11, 7TH MEETING), divulga que en JEM, se aplica un filtro de bucle adaptativo (ALF) con adaptación de filtro basado en bloques. Para el componente de Luma, se selecciona uno entre 25 filtros para cada bloque 2x2, con base en la dirección y actividad de los gradientes locales. El proceso de filtrado del componente de luma se puede controlar a nivel de CU. Se señala un indicador para indicar si se aplica ALF al componente de luma de una CU.
Resumen
Esta divulgación describe técnicas relacionadas con técnicas de filtrado denominadas como "Filtro de bucle adaptativo (ALF)". Un ALF se puede usar en una etapa de posprocesamiento, para cifrado en bucle, o en un proceso de predicción. El filtrado de compensación adaptativa de muestra (SAO) y/o el filtrado de bucle adaptativo se pueden aplicar a cualquiera de las diversas tecnologías de códec de vídeo existentes, tal como tecnología de códec compatible con HEVC, o pueden ser una herramienta de cifrado eficiente en cualquier estándar de cifrado de vídeo futuro. Las técnicas descritas se pueden aplicar por lo tanto a una variedad de técnicas de cifrado de vídeo basadas en bloques en las cuales el vídeo se reconstruye sobre una base de bloque por bloque. Los bloques de píxeles se pueden denominar de manera diversa como unidades de árbol de cifrado (CTUs), unidades de cifrado más grandes (LCU), unidad de predicción (PU) u otra terminología dependiendo del cifrado de vídeo basado en bloques usado, como se describe más adelante.
Como se explicará con más detalle a continuación, de acuerdo con las técnicas de esta divulgación, un codificador de vídeo y un decodificador de vídeo pueden configurarse para determinar conjuntos de filtros de bucle adaptativos, de entre una pluralidad de conjuntos de filtros de bucle adaptativos, sobre una base por bloque (por ejemplo, para bloques para los que está habilitado el filtrado de bucle adaptativo). De esta forma, el conjunto de filtros de bucle adaptativos disponibles para uso con un bloque particular puede adaptarse mejor a las características locales de los datos de vídeo cerca del bloque particular, mejorando de este modo la eficiencia de cifrado y/o calidad de imagen.
Un método de acuerdo con la invención se define en la reivindicación independiente anexa 1. Un aparato de acuerdo con la invención se define en la reivindicación independiente anexa 8. Un medio de almacenamiento legible por ordenador no transitorio de acuerdo con la invención se define en la reivindicación independiente anexa 15.
Los detalles de uno o más ejemplos se establecen en los dibujos acompañantes y en la descripción a continuación. Otras características, objetos, y ventajas serán evidentes a partir de la descripción, dibujos, y reivindicaciones.
Breve descripción de dibujos
La figura 1 es un diagrama de bloques que ilustra un sistema de codificación y decodificación de vídeo de ejemplo que puede utilizar las técnicas descritas en esta divulgación.
La figura 2 muestra un diagrama de bloques de ejemplo de un decodificador de HEVC.
Las figuras 3A-3D muestran cuatro patrones direccionales 1-D para la clasificación de muestras con compensación de borde (EO).
La figura 4 es un diagrama de bloques que ilustra un codificador de vídeo de ejemplo que puede implementar las técnicas descritas en esta divulgación.
La figura 5 es un diagrama de bloques que ilustra un decodificador de vídeo de ejemplo que puede implementar las técnicas descritas en esta divulgación.
La figura 6 muestra una implementación de ejemplo de una unidad de filtro para realizar las técnicas de esta divulgación.
La figura 7 es un diagrama de flujo que ilustra un método de ejemplo de la divulgación.
La figura 8 es un diagrama de flujo que ilustra otro método de ejemplo de la divulgación.
Descripción detallada
La figura 1 es un diagrama de bloques que ilustra un sistema de codificación y decodificación de vídeo de ejemplo 10 útil para entender la invención. El sistema 10 puede utilizar las técnicas para filtrado de bucle adaptativo descritas en esta divulgación. Como se muestra en la figura 1, el sistema 10 incluye un dispositivo de origen 12 que genera datos de vídeo codificados para ser decodificados en un momento posterior por un dispositivo de destino 14. El dispositivo de origen 12 y dispositivo de destino 14 pueden ser cualquiera de un amplio rango de dispositivos, incluyendo ordenadores de escritorio, ordenadores portátiles (es decir, portables), ordenadores tipo tableta, decodificadores, aparatos telefónicos tales como denominados teléfonos "inteligentes", denominadas almohadillas "inteligentes", televisores, cámaras, dispositivos de visualización, reproductores de medios digitales, consolas de videojuegos, dispositivos de generación de flujo de vídeo, o similares. En algunos casos, el dispositivo de origen 12 y dispositivo de destino 14 pueden estar equipados para comunicación inalámbrica.
El dispositivo de destino 14 puede recibir los datos de vídeo codificados que van a ser decodificados a través de un enlace 16. El enlace 16 puede ser cualquier tipo de medio o dispositivo capaz de mover los datos de vídeo codificados desde el dispositivo de origen 12 al dispositivo de destino 14. En un ejemplo, el enlace 16 puede ser un medio de comunicación para permitir que el dispositivo de origen 12 transmita datos de vídeo codificados directamente al dispositivo de destino 14 en tiempo real. Los datos de vídeo codificados pueden modularse de acuerdo con un estándar de comunicación, tal como un protocolo de comunicación inalámbrica, y transmitirse al dispositivo de destino 14. El medio de comunicación puede incluir cualquier medio de comunicación inalámbrica o cableada, tal como un espectro de radiofrecuencia (RF) o una o más líneas de transmisión físicas. El medio de comunicación puede formar parte de una red basada en paquetes, tal como una red de área local, una red de área amplia, o una red global tal como el Internet. El medio de comunicación puede incluir enrutadores, conmutadores, estaciones base, o cualquier otro equipo que pueda ser útil para facilitar la comunicación desde el dispositivo de origen 12 al dispositivo de destino 14.
En otro ejemplo, los datos de vídeo codificados pueden emitirse desde la interfaz de salida 22 a un dispositivo de almacenamiento 26. De manera similar, se puede acceder a los datos de vídeo codificados desde el dispositivo de almacenamiento 26 mediante la interfaz de entrada 28. El dispositivo de almacenamiento 26 puede incluir cualquiera de una variedad de medios de almacenamiento de datos distribuidos o accedidos localmente tales como un disco duro, discos Blu-ray, DVDs, CD-ROMs, memoria flash, memoria volátil o no volátil, o cualquier otro medio de almacenamiento digital adecuado para almacenar datos de vídeo codificados. En un ejemplo adicional, el dispositivo de almacenamiento 26 puede corresponder a un servidor de archivos u otro dispositivo de almacenamiento intermedio que puede contener el vídeo codificado generado por el dispositivo de origen 12. El dispositivo de destino 14 puede acceder a los datos de vídeo almacenados desde el dispositivo de almacenamiento 26 a través de generación de flujo o descarga. El servidor de archivos puede ser cualquier tipo de servidor capaz de almacenar datos de vídeo codificados y transmitir esos datos de vídeo codificados al dispositivo de destino 14. Los servidores de archivos de ejemplo incluyen un servidor web (por ejemplo, para un sitio web), un servidor de protocolo de transferencia de archivos (FTP), dispositivos de almacenamiento conectados a red (NAS), o una unidad de disquete local. El dispositivo de destino 14 puede acceder a los datos de vídeo codificados a través de cualquier conexión de datos estándar, incluyendo una conexión a Internet. Esto puede incluir una conexión inalámbrica (por ejemplo, una conexión Wi-Fi), una conexión cableada (por ejemplo, DSL, módem por cable, etc.) o una combinación de ambas que sea adecuada para acceder a los datos de vídeo codificados almacenados en un servidor de archivos. La transmisión de datos de vídeo codificados desde el dispositivo de almacenamiento 26 puede ser una transmisión de generación de flujo, una transmisión de descarga, o una combinación de ambas.
Las técnicas de esta divulgación no se limitan necesariamente a aplicaciones o configuraciones inalámbricas. Las técnicas se pueden aplicar al cifrado de vídeo en soporte de cualquiera de una variedad de aplicaciones multimedia, tales como radiodifusiones de televisión por aire, transmisiones de televisión por cable, transmisiones de televisión por satélite, transmisiones de vídeo de generación de flujo, por ejemplo, a través del Internet, codificación de vídeo digital para almacenamiento en un medio de almacenamiento de datos, decodificación de vídeo digital almacenado en un medio de almacenamiento de datos, u otras aplicaciones. En algunos ejemplos, el sistema 10 se puede configurar para soportar la transmisión de vídeo unidireccional o bidireccional para soportar aplicaciones tales como generación de flujo de vídeo, reproducción de vídeo, radiodifusión de vídeo, y/o telefonía por vídeo.
En el ejemplo de la figura 1, el dispositivo de origen 12 incluye una fuente de vídeo 18, un codificador de vídeo 20 y una interfaz de salida 22. En algunos casos, la interfaz de salida 22 puede incluir un modulador/desmodulador (módem) y/o un transmisor. En el dispositivo de origen 12, la fuente de vídeo 18 puede incluir una fuente tal como un dispositivo de captura de vídeo, por ejemplo, una cámara de vídeo, un archivo de vídeo que contenga vídeo capturado previamente, una interfaz de alimentación de vídeo para recibir vídeo desde un proveedor de contenido de vídeo, y/o un sistema de gráficos por ordenador para generar datos de gráficos por ordenador como el vídeo fuente, o una combinación de tales fuentes. En general, la captura de datos de vídeo puede incluir cualquier técnica para grabar, generar, y/o detectar datos de vídeo. Como ejemplo, si la fuente de vídeo 18 es una cámara de vídeo, el dispositivo de origen 12 y dispositivo de destino 14 pueden formar los denominados teléfonos con cámara o teléfonos con vídeo. Sin embargo, las técnicas descritas en esta divulgación pueden ser aplicables al cifrado de vídeo en general, y pueden aplicarse a aplicaciones inalámbricas y/o cableadas.
El vídeo capturado, precapturado, o generado por ordenador puede ser codificado por el codificador de vídeo 20. Los datos de vídeo codificados pueden transmitirse directamente al dispositivo de destino 14 a través de la interfaz de salida 22 del dispositivo de origen 12. Los datos de vídeo codificados también pueden (o alternativamente) almacenarse en el dispositivo de almacenamiento 26 para acceso posterior por el dispositivo de destino 14 u otros dispositivos, para decodificación y/o reproducción.
El dispositivo de destino 14 incluye una interfaz de entrada 28, un decodificador de vídeo 30, y un dispositivo de visualización 32. En algunos casos, la interfaz de entrada 28 puede incluir un receptor y/o un módem. La interfaz de entrada 28 del dispositivo de destino 14 recibe los datos de vídeo codificados a través del enlace 16. Los datos de vídeo codificados comunicados a través del enlace 16, o proporcionados en el dispositivo de almacenamiento 26, pueden incluir una variedad de elementos de sintaxis generados por el codificador de vídeo 20 para uso por un decodificador de vídeo, tal como decodificador de vídeo 30, en la decodificación de los datos de vídeo. Tales elementos de sintaxis pueden estar incluidos con los datos de vídeo codificados transmitidos en un medio de comunicación, almacenados en un medio de almacenamiento, o almacenados en un servidor de archivos.
El dispositivo de visualización 32 puede estar integrado con, o externo a, el dispositivo de destino 14. En algunos ejemplos, el dispositivo de destino 14 puede incluir un dispositivo de visualización integrado y también estar configurado para interconectarse con un dispositivo de visualización externo. En otros ejemplos, el dispositivo de destino 14 puede ser un dispositivo de visualización. En general, el dispositivo de visualización 32 muestra los datos de vídeo decodificados a un usuario, y puede ser cualquiera de una variedad de dispositivos de visualización tal como una pantalla de cristal líquido (LCD), una pantalla de plasma, una pantalla de diodo emisor de luz orgánico (OLED), u otro tipo de dispositivo de visualización.
El codificador de vídeo 20 y decodificador de vídeo 30 pueden operar de acuerdo con un estándar de compresión de vídeo, tal como el estándar de Cifrado de Vídeo de Alta Eficiencia (HEVC) recientemente finalizado, y pueden cumplir con el Modelo de Prueba de HEVC (HM). El codificador de vídeo 20 y decodificador de vídeo 30 pueden operar adicionalmente de acuerdo con una extensión de HEVC, tal como la extensión de rango, la extensión multivista (MV-HEVC), o la extensión escalable (SHVC) que han sido desarrolladas por el Equipo de Colaboración Conjunta sobre Cifrado de Vídeo (JCT-VC) así como por el Equipo de Colaboración Conjunta sobre Desarrollo de Extensión de Cifrado de Vídeo 3D (JCT-3V) del Grupo de Expertos en Cifrado de Vídeo (VCEG) de UIT-T y el Grupo de Expertos en Imágenes en Movimiento (M<p>E<g>) de ISO/IEC. Alternativamente, el codificador de vídeo 20 y decodificador de vídeo 30 pueden operar de acuerdo con otros estándares registrados o industriales, tal como el estándar ITU-T H.264, alternativamente denominado como ISO/IEC MPEG-4, Parte 10, Cifrado de Vídeo Avanzado (AVC), o extensiones de tales estándares, tales como las extensiones Cifrado de Vídeo Escalable (SVC) y Cifrado de Vídeo Multivista (MVC). Sin embargo, las técnicas de esta divulgación no se limitan a ningún estándar de cifrado particular. Otros ejemplos de estándares de compresión de vídeo incluyen ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 o ISO/IEC MPEG-2 Visual, ITU-T H.263 e ISO/IEC MPEG-4 Visual. HEVC (ITU-T H.265), incluyendo sus extensiones de rango, extensión multivista (MV-HEVC) y extensión escalable (SHVC), fueron desarrollados por el Equipo de Colaboración Conjunta sobre Cifrado de Vídeo (JCT-VC) así como el Equipo de Colaboración Conjunta sobre Desarrollo de Extensión de Cifrado de Vídeo 3D (JCT-3V) del Grupo de Expertos en Cifrado de Vídeo (VCEG) de UIT-T y del Grupo de Expertos en Imágenes en Movimiento (MPEG) de ISO/IEC. El borrador finalizado de HEVC, al que de aquí en adelante se hace referencia como HEVC WD, está disponible en http://phenix.intevry.fr/jct/doc_end_user/documents/14_Vienna/wg11/JCTVC-N1003-v1.zip.
VCEG de ITU-T (Q6/16) y MPEG de ISO/IEC (JTC 1/SC 29/WG 11) están ahora desarrollando una futura tecnología de cifrado de vídeo con una capacidad de compresión que potencialmente excede la del estándar de HEVC actual (incluyendo sus extensiones actuales y las extensiones a corto plazo para el cifrado de contenido de pantalla y cifrado de alto rango dinámico). El nuevo estándar se denomina H.266/VVC (Cifrado de Vídeo Versátil). Los grupos están trabajando juntos en esta actividad de exploración en un esfuerzo de colaboración conjunto conocido como el Equipo Conjunto de Exploración de Vídeo (JVET) para evaluar los diseños de tecnología de compresión propuestos por sus expertos en esta área. El JVET se reunió por primera vez durante 19-21 de octubre de 2015. Una versión del software de referencia, es decir, Modelo de Exploración Conjunta 7 (JEM7) se puede descargar a partir de: https://ivet.hhi.fraunhofer.de/svn/svn_HMJEMSoftware/tags/HM-16.6-JEM-7.0/. La descripción de algoritmo para JEM7 se describe en J. Chen, E. Alshina, G. J. Sullivan, J.R. Ohm, J. Boyce, "Algorithm description of Joint Exploration Test Model 7 (JEM7)", JVET-G1001, Turín, julio de 2017. Un borrador reciente del estándar de VVC se describe en Bross, et al. "Versatile Video Coding (Draft 5)", Equipo Conjunto de Expertos en Vídeo (JVET) de ITU-T SG 16 WP 3 e ISO/IEC JTC 1/SC 29/WG 11, 14° Reunión: Ginebra, CH, 19-27 de Marzo de 2019, JVET-N1001-v3 (de aquí en adelante, "Borrador 5 de VVC"). Sin embargo, las técnicas de esta divulgación no se limitan a ningún estándar de cifrado particular.
Aunque no se muestra en la figura 1, en algunos aspectos, el codificador de vídeo 20 y decodificador de vídeo 30 pueden estar integrados cada uno con un codificador y decodificador de audio, y pueden incluir unidades de MUX-DEMUX adecuadas, u otro hardware y software, para manejar la codificación tanto de audio como de vídeo en un flujo de datos común o en flujos de datos separados. Si es aplicable, en algunos ejemplos, las unidades de MUX-DEMUX pueden cumplir con el protocolo de multiplexor ITU H.223, u otros protocolos tales como el protocolo de datagramas de usuario (UDP).
El codificador de vídeo 20 y decodificador de vídeo 30 pueden implementarse cada uno como cualquiera de una variedad de circuitería codificadora o circuitería decodificadora adecuadas, tales como uno o más microprocesadores, procesadores de señales digitales (DSPs), circuitos integrados específicos de aplicación (ASICs), arreglos de puertas programables en campo (FPGAs), lógica discreta, software, hardware, firmware o cualquier combinación de los mismos. Cuando las técnicas se implementan parcialmente en software, un dispositivo puede almacenar instrucciones para el software en un medio legible por ordenador no transitorio, adecuado y ejecutar las instrucciones en hardware usando uno o más procesadores para realizar las técnicas de esta divulgación. Cada uno del codificador de vídeo 20 y decodificador de vídeo 30 puede incluirse en uno o más codificadores o decodificadores, cualquiera de los cuales puede integrarse como parte de un codificador/decodificador combinado (CODEC) en un dispositivo respectivo.
Esta divulgación describe técnicas relacionadas con operaciones de filtrado que podrían usarse en una etapa de posprocesamiento, como parte del cifrado en bucle, o en la etapa de predicción de cifrado de vídeo. Las técnicas de esta divulgación pueden implementarse en códecs de vídeo existentes, tal como HEVC, o ser una herramienta de cifrado eficiente para un estándar de cifrado de vídeo futuro, tal como el estándar H.266/VVC actualmente bajo desarrollo.
El cifrado de vídeo típicamente involucra predecir un bloque de datos de vídeo a partir de cualquiera de un bloque ya cifrado de datos de vídeo en la misma imagen (por ejemplo, intrapredicción) o de un bloque ya cifrado de datos de vídeo en una imagen diferente (por ejemplo, interpredicción). En algunos casos, el codificador de vídeo 20 también calcula datos residuales comparando el bloque predictivo con el bloque original. De este modo, los datos residuales representan una diferencia entre el bloque predictivo y el bloque original.
El codificador de vídeo 20 transforma y cuantifica los datos residuales y señala los datos residuales transformados y cuantificados en el flujo de bits codificado. El decodificador de vídeo 30 agrega los datos residuales al bloque predictivo para producir un bloque de vídeo reconstruido que coincide con el bloque de vídeo original más estrechamente que el bloque predictivo solo. Para mejorar además la calidad del vídeo decodificado, el codificador de vídeo 20 y decodificador de vídeo 30 pueden realizar una o más operaciones de filtrado en los bloques de vídeo reconstruidos. Ejemplos de estas operaciones de filtrado incluyen filtrado de eliminación de bloque, filtrado de compensación adaptativa de muestra (SAO), y filtrado de bucle adaptativo. Los parámetros para estas operaciones de filtrado pueden ser determinados por el codificador de vídeo 20 y señalizados explícitamente en el flujo de bits de vídeo codificado o pueden ser determinados implícitamente por el decodificador de vídeo 30 sin necesidad de que los parámetros sean señalizados explícitamente en el flujo de bits de vídeo codificado.
Esta divulgación describe técnicas relacionadas con los métodos de filtrado denominados como "Filtro de bucle adaptativo (ALF)". Un ALF se puede usar en una etapa de posprocesamiento, para cifrado en bucle, o en un proceso de predicción. El filtrado de SAO y/o filtrado de bucle adaptativo se pueden aplicar a cualquiera de diversas tecnologías de códec de vídeo existentes, tal como tecnología de códec compatible con HEVC, o ser una herramienta de cifrado eficiente en cualquier estándar de cifrado de vídeo futuro.
Como se usa en esta divulgación, el término cifrado de vídeo se refiere genéricamente a ya sea codificación de vídeo o decodificación de vídeo. De manera similar, el término cifrador de vídeo puede referirse genéricamente a un codificador de vídeo o un decodificador de vídeo. Además, ciertas técnicas descritas en esta divulgación con respecto a la decodificación de vídeo también pueden aplicarse a la codificación de vídeo, y viceversa. Por ejemplo, a menudo los codificadores de vídeo y decodificadores de vídeo están configurados para realizar el mismo proceso, o procesos recíprocos. También, el codificador de vídeo 20 típicamente realiza la decodificación de vídeo como parte de los procesos de determinación de cómo codificar datos de vídeo.
Como se explicará con más detalle a continuación, de acuerdo con la invención el codificador de vídeo 20 y decodificador de vídeo 30 están configurados para determinar conjuntos de filtros de bucle adaptativos, de entre una pluralidad de conjuntos de filtros de bucle adaptativos, sobre una base por bloque (por ejemplo, para bloques para los cuales está habilitado el filtrado de bucle adaptativo). De esta forma, el conjunto de filtros de bucle adaptativos disponibles para uso con un bloque particular se adaptan más a las características locales de los datos de vídeo cerca del bloque particular, mejorando de este modo la eficiencia de cifrado y/o la calidad de imagen.
En HEVC, VVC, y otras especificaciones de cifrado de vídeo, una secuencia de vídeo incluye típicamente una serie de imágenes. Las imágenes también pueden denominarse como "marcos". En un enfoque de ejemplo, una imagen puede incluir tres arreglos de muestras, denominados Sl, Sob, y Sor. En tal enfoque de ejemplo, Sl es un arreglo bidimensional (es decir, un bloque) de muestras de luma. SCb es un arreglo bidimensional de muestras de crominancia Cb. Scr es un arreglo bidimensional de muestras de crominancia Cr. Las muestras de crominancia también pueden denominarse en este documento como muestras de "croma". En otros casos, una imagen puede ser monocromática y puede incluir solamente un arreglo de muestras de luma.
Para generar una representación codificada de una imagen, el codificador de vídeo 20 puede generar un conjunto de unidades de árbol de cifrado (CTU). Cada una de las CTUs puede incluir un bloque de árbol de cifrado de muestras de luma, dos bloques de árbol de cifrado correspondientes de muestras de croma, y estructuras de sintaxis usadas para cifrar las muestras de los bloques de árbol de cifrado. En imágenes monocromáticas o imágenes que tienen tres planos de color separados, una CTU puede incluir un único bloque de árbol de cifrado y estructuras de sintaxis usadas para cifrar las muestras del bloque de árbol de cifrado. Un bloque de árbol de cifrado puede ser un bloque NxN de muestras. Una CTU también puede denominarse como un "bloque de árbol" o una "unidad de cifrado más grande" (LCU). Las CTUs de HEVC pueden ser ampliamente análogas a los macrobloques de otros estándares, tal como H.264/AVC. Sin embargo, una CTU no está necesariamente limitada a un tamaño particular y puede incluir una o más unidades de cifrado (CUs). Una sección puede incluir un número entero de CTUs ordenadas consecutivamente en un orden de escaneo de disposición.
En un ejemplo, para generar una CTU cifrada, el codificador de vídeo 20 puede realizar de manera recursiva una división de árbol cuádruple en los bloques de árbol de cifrado de una CTU para dividir los bloques de árbol de cifrado en bloques de cifrado, por tanto el nombre "unidades de árbol de cifrado". Un bloque de cifrado puede ser un bloque NxN de muestras. Una CU puede incluir un bloque de cifrado de muestras de luma y dos bloques de cifrado correspondientes de muestras de croma de una imagen que tiene un arreglo de muestras de luma, un arreglo de muestras Cb, y un arreglo de muestras Cr, y estructuras de sintaxis usadas para cifrar las muestras de los bloques de cifrado. En imágenes monocromáticas o imágenes que tienen tres planos de color separados, una CU puede incluir un único bloque de cifrado y estructuras de sintaxis usadas para cifrar las muestras del bloque de cifrado.
El codificador de vídeo 20 puede dividir un bloque de cifrado de una CU en uno o más bloques de predicción. Un bloque de predicción es un bloque rectangular (es decir, cuadrado o no cuadrado) de muestras sobre el cual se aplica la misma predicción. Una unidad de predicción (PU) de una CU puede incluir un bloque de predicción de muestras de luma, dos bloques de predicción correspondientes de muestras de croma, y estructuras de sintaxis usadas para predecir los bloques de predicción. En imágenes monocromáticas o imágenes que tienen tres planos de color separados, una PU puede incluir un único bloque de predicción y estructuras de sintaxis usadas para predecir el bloque de predicción. El codificador de vídeo 20 puede generar bloques de luma, Cb, y Cr predictivos para los bloques de predicción de luma, Cb, y Cr de cada PU de la CU.
Como otro ejemplo, el codificador de vídeo 20 y decodificador de vídeo 30 pueden estar configurados para operar de acuerdo con JEM o VVC. De acuerdo con JEM o VVC, un cifrador de vídeo (tal como codificador de vídeo 20) divide una imagen en una pluralidad de unidades de árbol de cifrado (CTUs). El codificador de vídeo 20 puede dividir una CTU de acuerdo con una estructura de árbol, tal como una estructura de árbol binario de árbol cuádruple (QTBT) o estructura de Árbol de Múltiples Tipos (MTT). La estructura de QTBT retira los conceptos de múltiples tipos de división, tal como la separación entre CUs, Pus, y TUs (unidades de transformada) de HEVC. Una estructura de QTBT incluye dos niveles: un primer nivel dividido de acuerdo con la división de árbol cuádruple, y un segundo nivel dividido de acuerdo con la división de árbol binario. Un nodo raíz de la estructura de QTBT corresponde a una CTU. Los nodos de hoja de los árboles binarios corresponden a unidades de cifrado (CUs).
En una estructura de división de MTT, los bloques se pueden dividir usando una división de árbol cuádruple (QT), una división de árbol binario (BT), y uno o más tipos de divisiones de árbol triple (TT). Una división de árbol triple es una división donde un bloque se divide en tres subbloques. En algunos ejemplos, una división de árbol triple divide un bloque en tres subbloques sin dividir el bloque original a través del centro. Los tipos de división en MTT (por ejemplo, QT, BT, y TT) pueden ser simétricos o asimétricos.
En algunos ejemplos, el codificador de vídeo 20 y decodificador de vídeo 30 pueden usar una única estructura de QTBT o MTT para representar cada uno de los componentes de luminancia y crominancia, mientras que en otros ejemplos, el codificador de vídeo 20 y decodificador de vídeo 30 pueden usar dos o más estructuras de QTBT o MTT, tales como una estructura de QTBT/MTT para el componente de luminancia y otra estructura de QTBT/MTT para ambos componentes de crominancia (o dos estructuras de QTBT/MTT para los respectivos componentes de crominancia).
El codificador de vídeo 20 y decodificador de vídeo 30 pueden configurarse para usar división de árbol cuádruple, división de QTBT, división de MTT, u otras estructuras de división.
El codificador de vídeo 20 puede usar la intrapredicción o interpredicción para generar los bloques predictivos para un bloque (por ejemplo, una PU). Si el codificador de vídeo 20 usa la intrapredicción para generar los bloques predictivos de una PU, el codificador de vídeo 20 puede generar los bloques predictivos de la PU con base en muestras decodificadas de la imagen asociada con la PU. Si el codificador de vídeo 20 usa la interpredicción para generar los bloques predictivos de una PU, el codificador de vídeo 20 puede generar los bloques predictivos de la PU con base en muestras decodificadas de una o más imágenes distintas de la imagen asociada con la PU.
Algunos ejemplos de JEM y VVC también proporcionan un modo de compensación de movimiento afín, que puede considerarse un modo de interpredicción. En el modo de compensación de movimiento afín, el codificador de vídeo 20 puede determinar dos o más vectores de movimiento que representan un movimiento de no traslación, tal como ampliar o reducir, rotación, movimiento en perspectiva, u otros tipos de movimiento irregular.
Para realizar la intrapredicción, el codificador de vídeo 20 puede seleccionar un modo de intrapredicción para generar el bloque de predicción. Algunos ejemplos de JEM y VVC proporcionan sesenta y siete modos de intrapredicción, incluyendo diversos modos direccionales, así como el modo plano y el modo de DC. En general, el codificador de vídeo 20 selecciona un modo de intrapredicción que describe muestras vecinas a un bloque actual (por ejemplo, un bloque de una CU) a partir del cual predecir muestras del bloque actual. Tales muestras pueden estar generalmente por encima, por encima y a la izquierda, o a la izquierda del bloque actual en la misma imagen que el bloque actual, suponiendo que el codificador de vídeo 20 cifre las CTUs y CUs en orden de escaneo de disposición (de izquierda a derecha, de arriba a abajo).
Después de que el codificador de vídeo 20 genera bloques de luma, Cb, y Cr predictivos para una o más PUs de una CU, el codificador de vídeo 20 puede generar un bloque residual de luma para la CU. Cada muestra en el bloque residual de luma de la CU indica una diferencia entre una muestra de luma en uno de los bloques de luma predictivos de la CU y una muestra correspondiente en el bloque de cifrado de luma original de la CU. Además, el codificador de vídeo 20 puede generar un bloque residual Cb para la CU. Cada muestra en el bloque residual Cb de la CU puede indicar una diferencia entre una muestra Cb en uno de los bloques Cb predictivos de la CU y una muestra correspondiente en el bloque de cifrado Cb original de la CU. El codificador de vídeo 20 también puede generar un bloque residual Cr para la CU. Cada muestra en el bloque residual Cr de la CU puede indicar una diferencia entre una muestra Cr en uno de los bloques Cr predictivos de la CU y una muestra correspondiente en el bloque de cifrado Cr original de la CU.
En algunos ejemplos, el codificador de vídeo 20 puede usar división de árbol cuádruple para descomponer los bloques residuales de luma, Cb, y Cr de una CU en uno o más bloques de transformada de luma, Cb, y Cr. En otros ejemplos, el bloque de transformada es el mismo tamaño que el bloque de predicción. Un bloque de transformada es un bloque rectangular (por ejemplo, cuadrado o no cuadrado) de muestras sobre el cual se aplica la misma transformada. Una unidad de transformada (TU) de una CU puede incluir un bloque de transformada de muestras de luma, dos bloques de transformada correspondientes de muestras de croma, y estructuras de sintaxis usadas para transformar las muestras del bloque de transformada. De este modo, cada TU de una CU puede estar asociada con un bloque de transformada de luma, un bloque de transformada Cb, y un bloque de transformada Cr. El bloque de transformada de luma asociado con la TU puede ser un subbloque del bloque residual de luma de la CU. El bloque de transformada Cb puede ser un subbloque del bloque residual Cb de la CU. El bloque de transformada Cr puede ser un subbloque del bloque residual Cr de la CU. En imágenes monocromáticas o imágenes que tienen tres planos de color separados, una TU puede incluir un único bloque de transformada y estructuras de sintaxis usadas para transformar las muestras del bloque de transformada.
El codificador de vídeo 20 puede aplicar una o más transformadas a un bloque de transformada de luma de una TU para generar un bloque de coeficientes de luma para la TU. Un bloque de coeficientes puede ser un arreglo bidimensional de coeficientes de transformada. Un coeficiente de transformada puede ser una cantidad escalar. El codificador de vídeo 20 puede aplicar una o más transformadas a un bloque de transformada Cb de una TU para generar un bloque de coeficientes Cb para la TU. El codificador de vídeo 20 puede aplicar una o más transformadas a un bloque de transformada Cr de una TU para generar un bloque de coeficientes Cr para la TU.
La estructura de bloques anterior con CTUs, CUs, PUs, y TUs describe en general la estructura de bloques usada en HEVC. Sin embargo, otros estándares de cifrado de vídeo, pueden usar estructuras de bloques diferentes. Como ejemplo, aunque HEVC permite que las PUs y TUs tengan tamaños o conformaciones diferentes, otros estándares de cifrado de vídeo pueden requerir que los bloques predictivos y bloques de transformada tengan un mismo tamaño. Las técnicas de esta divulgación no se limitan a la estructura de bloques de HEVC y pueden ser compatibles con otras estructuras de bloques.
Después de generar un bloque de coeficientes (por ejemplo, un bloque de coeficientes de luma, un bloque de coeficientes Cb o un bloque de coeficientes Cr), el codificador de vídeo 20 puede cuantificar el bloque de coeficientes. La cuantificación se refiere generalmente a un proceso en el cual se cuantifican los coeficientes de transformada para reducir posiblemente la cantidad de datos usados para representar los coeficientes de transformada, lo que proporciona compresión adicional. Después de que el codificador de vídeo 20 cuantifique un bloque de coeficientes, el codificador de vídeo 20 puede codificar por entropía los elementos de sintaxis que indican los coeficientes de transformada cuantificados. Por ejemplo, el codificador de vídeo 20 puede realizar Cifrado Aritmético Binario Adaptativo al Contexto (CABAC) sobre los elementos de sintaxis que indican los coeficientes de transformada cuantificados.
El codificador de vídeo 20 puede emitir un flujo de bits que incluye una secuencia de bits que forma una representación de imágenes cifradas y datos asociados. El flujo de bits puede incluir una secuencia de unidades de Capa de Abstracción de Red (NAL). Una unidad de NAL es una estructura de sintaxis que contiene una indicación del tipo de datos en la unidad de NAL y bytes que contienen esos datos en la forma de una carga útil de secuencia de bytes sin procesar (RBSP) intercalada según sea necesario con bits de prevención de emulación. Cada una de las unidades de NAL incluye un encabezado de unidad de NAL y encapsula una RBSP. El encabezado de unidad de NAL puede incluir un elemento de sintaxis que indica un código de tipo de unidad de NAL. El código de tipo de unidad de NAL especificado por el encabezado de unidad de NAL de una unidad de NAL indica el tipo de la unidad de NAL. Una RBSP puede ser una estructura de sintaxis que contiene un número entero de bytes que está encapsulado dentro de una unidad de NAL. En algunos casos, una RBSP incluye cero bits.
Diferentes tipos de unidades de NAL pueden encapsular diferentes tipos de RBSPs. Por ejemplo, un primer tipo de unidad de NAL puede encapsular una RBSP para un conjunto de parámetros de imagen (PPS), un segundo tipo de unidad de NAL puede encapsular una RBSP para una sección cifrada, un tercer tipo de unidad de NAL puede encapsular una RBSP para mensajes de información de mejora suplementaria (SEI), y así sucesivamente. Las unidades de NAL que encapsulan RBSPs para datos de cifrado de vídeo (en lugar de las RBSPs para conjuntos de parámetros y mensajes de SEI) pueden denominarse como unidades de NAL de capa de cifrado de vídeo (VCL).
El decodificador de vídeo 30 puede recibir un flujo de bits generado por el codificador de vídeo 20. Además, el decodificador de vídeo 30 puede analizar sintácticamente el flujo de bits para obtener elementos de sintaxis del flujo de bits. El decodificador de vídeo 30 puede reconstruir las imágenes de los datos de vídeo con base al menos en parte en los elementos de sintaxis obtenidos desde el flujo de bits. El proceso para reconstruir los datos de vídeo puede ser generalmente recíproco al proceso realizado por el codificador de vídeo 20. Además, el decodificador de vídeo 30 puede cuantificar de manera inversa los bloques de coeficientes asociados con las TUs de una CU actual. El decodificador de vídeo 30 puede realizar transformadas inversas en los bloques de coeficientes para reconstruir los bloques de transformada asociados con las TUs de la CU actual. El decodificador de vídeo 30 puede reconstruir los bloques de cifrado de la CU actual agregando las muestras de los bloques predictivos para las PUs de la CU actual a las muestras correspondientes de los bloques de transformada de las TUs de la CU actual. Al reconstruir los bloques de cifrado para cada CU de una imagen, el decodificador de vídeo 30 puede reconstruir la imagen.
Ahora se discutirán aspectos de las técnicas de HEVC y JEM. La figura 2 muestra un diagrama de bloques de ejemplo del decodificador de HEVC 31. El decodificador de vídeo 31 que se muestra en la figura 2 corresponde en general al decodificador de vídeo 30, pero a diferencia del decodificador de vídeo 30, no incluye un filtro de bucle adaptativo entre la reconstrucción y el búfer de imagen de referencia. El decodificador de vídeo 30 se ilustra con mayor detalle en la figura 5. HEVC emplea dos filtros en bucle, que incluyen un filtro de eliminación de bloque (DBF) y un filtro de compensación adaptativa de muestra (SAO). Se describen detalles adicionales sobre la decodificación de HEVC y SAO en C. Fu, E. Alshina, A. Alshin, Y. Huang, C. Chen, Chia. Tsai, C. Hsu, S. Lei, J. Park, W. Han, "Sample adaptive offset in the HEVC standard", IEEE Trans. Circuits Syst. Video Technol., 22(12): 1755-1764 (2012).
Como se ilustra en la figura 2, la entrada a un DBF puede ser la imagen reconstruida después de la intra o interpredicción, como se muestra con la salida del bloque de reconstrucción. El DBF realiza la detección de los artefactos en los límites de bloques cifrados y atenúa los artefactos aplicando un filtro seleccionado. En comparación con el filtro de eliminación de bloque H.264/AVC, el filtro de eliminación de bloque de HEVC tiene una menor complejidad computacional y mejores capacidades de procesamiento paralelo mientras que todavía logra una reducción significativa de los artefactos visuales. Para ejemplos adicionales, véase A. Norkin, G. Bjontegaard, A. Fuldseth, M. Narroschke, M. Ikeda, K. Andersson, Minhua Zhou, G. Van der Auwera, "HEVC Deblocking Filter", IEEE Trans. Circuits Syst. Video Technol., 22(12): 1746-1754 (2012).
En HEVC, las decisiones de filtro de eliminación de bloque se toman por separado para cada límite de una longitud de cuatro muestras que yace en la rejilla que divide la imagen en bloques de 8 x 8 muestras. La eliminación de bloque se realiza en un límite de bloque si son ciertas las siguientes condiciones: (1) el límite de bloque es un límite de unidad de predicción (PU) o unidad de transformada (TU); (2) la intensidad de límite (Bs), como se define en la Tabla 1 a continuación, es mayor que cero; (3) la variación de la señal, como se define en la Ecuación (1) a continuación, en ambos lados de un límite de bloque está por debajo de un umbral especificado.
Tabla 1. Valores de intensidad de límite (Bs) para límites entre dos bloques de luma vecinos
Si Bs > 0 para un límite de bloque de luma, entonces se aplica el filtrado de eliminación de bloque a ese límite si se cumple la siguiente condición:
|P2,o - 2pi,o po,o| |p2,3 - 2pi,3 po,3| |q2,o - 2qi,o qo,o| |q2,3 - 2qi,3 qo,3| < p, (1)
donde p y q son valores de muestra de luma en el límite y p es un umbral.
HEVC permite dos tipos de filtros de eliminación de bloque de luma, a saber: (i) filtro normal, y (ii) filtro fuerte. La elección del filtro de eliminación de bloque depende de si los términos de variación de señal particulares son menores que ciertos umbrales (véase "HEVC Deblocking Filter" de Norkin et al (2oi2) citado anteriormente para detalles). Aunque las decisiones de filtrado se basan solo en las dos filas (o columnas) de un límite vertical (u horizontal, según pueda ser el caso) de cuatro píxeles de largo, el filtro se aplica a cada fila (o columna, según pueda ser el caso) en el límite. El número de píxeles usados en el proceso de filtrado y el número de píxeles que se pueden modificar con cada tipo de filtrado se resumen en la Tabla 2 a continuación.
Tabla 2. Número de píxeles usados/modificados por límite en eliminación de bloque de HEVC
La eliminación de bloque de croma (es decir, el filtrado de eliminación de bloque realizado en los componentes de croma) se realiza solo cuando Bs es igual a dos (2). En HEVC, solo se usa un tipo de filtro de eliminación de bloque de croma. El filtro de eliminación de bloque de croma usa los píxeles po, pi, qo, qi y puede modificar los píxeles po y qo en cada fila (el segundo subíndice que indica el índice de fila se omite en la descripción anterior para brevedad, debido a que el filtro se aplica a cada fila). En JEM, la eliminación de bloque se realiza a nivel de CU. El tamaño de CUs a cada lado de un límite puede ser mayor que 8 x 8. El tamaño mínimo de CU en JEM es 4 x 4. Por lo tanto, el filtro de eliminación de bloque también se puede aplicar a límites de bloques de 4 x 4.
La entrada a un filtro de SAO puede ser el bloque reconstruido después de aplicar el filtro de eliminación de bloque, como se muestra con la salida del filtro de eliminación de bloque en la figura 2. Un cifrador de vídeo puede aplicar un filtro de SAO para reducir la distorsión de muestra media de una región clasificando primero las muestras de región en múltiples categorías con un clasificador seleccionado, obteniendo una compensación para cada categoría, y luego agregando la compensación a cada muestra de la categoría, donde el índice de clasificador y las compensaciones de la región se cifran en el flujo de bits. En HEVC, la región (la unidad para la señalización de parámetros de SAO) se define como una CTU.
En HEVC fueron adoptados dos tipos de SAO que pueden satisfacer el requisito de ser de baja complejidad. Estos dos tipos son la SAO de compensación de borde (EO) y de compensación de banda (BO), que se discuten con detalle adicional a continuación. El codificador de vídeo 2o y decodificador de vídeo 3o pueden cifrar un índice de un tipo de SAO. Para EO, la clasificación de muestras se basa en la comparación entre muestras actuales y muestras vecinas de acuerdo con patrones direccionales i-D: horizontal, vertical, diagonal de i35°, y diagonal de 45°.
Las figuras 3A-3D muestran cuatro patrones direccionales i-D para la clasificación de muestras de EO: horizontal (figura 3A, clase de EO = o), vertical (figura 3B, clase de EO = i), diagonal de i35° (figura 3C, clase de EO = 2), y diagonal de 45° (figura 3D, clase de EO = 3). Se describen detalles adicionales relacionados con SAO en C. Fu, E. Alshina, A. Alshin, Y. Huang, C. Chen, Chia. Tsai, C. Hsu, S. Lei, J. Park, W. Han, "Sample adaptive offset in the HEVC standard", IEEE Trans. Circuits Syst. Video Technol., 22(i2): i755-i764 (2oi2). En las figuras 3A-3D, el bloque C es el bloque actual, y los bloques A y B son bloques vecinos.
io
De acuerdo con el patrón de EO seleccionado, se definen además cinco categorías denotadas por edgeldx en la Tabla 3. Para edgeIdx igual a 0~3, la magnitud de una compensación puede ser señalizada mientras que el indicador de signo está cifrado implícitamente, es decir, compensación negativa para edgeIdx igual a 0 o 1 y compensación positiva para edgeIdx igual a 2 o 3. Para edgeIdx igual a 4, la compensación siempre se establece en 0 lo cual significa que no se requiere ninguna operación para este caso.
Tabla 3: clasificación para EO
Categoría (edgeIdx) Condición
0 C < A && C < B
Para BO, la clasificación de muestra se basa en valores de muestra. Cada componente de color puede tener sus propios parámetros de SAO para la clasificación para filtrado de SAO de tipo BO. BO implica que se agrega una compensación a todas las muestras de la misma banda. El rango de valores de muestra se divide igualmente en 32 bandas. Para muestras de 8 bits que oscilan desde 0 a 255, el ancho de una banda es 8, y los valores de muestra desde 8k a 8k 7 pertenecen a la banda k, donde k oscila desde 0 a 31. Se agrega una compensación a todas las muestras de la misma banda. La diferencia promedio entre las muestras originales y las muestras reconstruidas en una banda (es decir, compensación de una banda) se señaliza al decodificador (por ejemplo, decodificador de vídeo 30). No hay ninguna restricción en los signos de compensación. Solo las compensaciones de cuatro (4) bandas consecutivas y la posición de banda de partida se señalizan al decodificador (por ejemplo, decodificador de vídeo 30).
El codificador de vídeo 20 y decodificador de vídeo 30 pueden configurarse para implementar diversas técnicas de filtrado de bucle adaptativo establecidas en JEM y/o en borradores de trabajo de VVC. Ahora se describirán aspectos de algunas técnicas de filtrado de JEM de ejemplo (por ejemplo, a Lf ). Además de los métodos de eliminación de bloque modificada (DB) y SAO de h Ev C, JEM incluye otro método de filtrado denominado filtrado de bucle Adaptativo basado en transformación de Geometría (GALF). La entrada a un ALF/GALF puede ser la imagen reconstruida después de la aplicación de SAO (por ejemplo, salida de compensación adaptativa de muestra en la figura 2). Aspectos de GALF se describen en Tsai, C.Y., Chen, C.Y., Yamakage, T., Chong, I.S., Huang, Y.W., Fu, C.M., Itoh, T., Watanabe, T., Chujoh, T., Karczewicz, M. y Lei, S.M., "Adaptive loop filtering for video coding", IEEE Journal of Selected Topics in Signal Processing, 7(6), pp. 934-945, 2013 y en M. Karczewicz, L. Zhang, W.-J. Chien, yX. Li, "Geometry transformation-based adaptive in-loop filter", Picture Coding Symposium (PCS), 2016.
Las técnicas de ALF intentan minimizar el error cuadrático medio entre las muestras originales y las muestras decodificadas/reconstruidas usando un filtro de Wiener adaptativo. Denotar la imagen de entrada como p, la imagen de origen como S, y el filtro de respuesta de impulso finito (FIR) como h. Luego se debe minimizar la siguiente expresión de la suma de errores cuadrados (SSE), donde (x, y) denota cualquier posición de píxel en p o S.
La h óptima, denotada como hopt, se puede obtener estableciendo la derivada parcial de SSE con respecto a h(i, j) igual a 0 de la siguiente manera:
dSSE_ o
d h ( i , j)
Esto lleva a la ecuación de Wiener-Hopf que se muestra a continuación, que da el filtro óptimo hopt:
m ,y — n)
En algunos ejemplos de JEM o VVC, en lugar de usar un filtro para toda la imagen, el codificador de vídeo 20 y/o decodificador de vídeo 30 pueden configurarse para clasificar muestras en una imagen en veinticinco (25) clases con base en los gradientes locales. El codificador de vídeo 20 y/o decodificador de vídeo 30 pueden derivar filtros de Wiener óptimos separados para los píxeles en cada clase. Se han empleado varias técnicas para aumentar la efectividad del filtrado de bucle adaptativo reduciendo la sobrecarga de señalización y complejidad computacional. A continuación se citan algunas de las técnicas que se pueden usar para aumentar la efectividad de ALF reduciendo la sobrecarga de señalización y/o complejidad computacional:
1. Predicción a partir de filtros fijos: Los coeficientes de filtro óptimos para cada clase se predicen usando un grupo de predicción de filtros fijos que incluye 16 filtros candidatos para cada clase. Se selecciona el mejor candidato de predicción para cada clase y solo se transmiten los errores de predicción.
2. Fusión de clases: En lugar de usar veinticinco (25) filtros diferentes (uno para cada clase), los píxeles en múltiples clases pueden compartir un filtro con el fin de reducir el número de parámetros de filtro que van a ser cifrados. La fusión de dos clases puede llevar a una SSE acumulativa más alta pero un menor coste de Distorsión de Tasa (RD).
3. Número variable de toques: El número de toques de filtro es adaptable al nivel de marco. Teóricamente, los filtros con más toques pueden lograr una SSE menor, pero pueden no ser una buena opción en términos de coste de RD, debido a la sobrecarga de bits asociada con más coeficientes de filtro.
4. Control de activación/desactivación a nivel de bloque: ALF se puede activar y desactivar (habilitar o deshabilitar) sobre una base de bloque. El tamaño de bloque en el cual se señala el indicador de control de activación/desactivación se selecciona de manera adaptable al nivel de marco. Los coeficientes de filtro se pueden recalcular usando píxeles desde solo aquellos bloques para los cuales se habilita un ALF (es decir, se usa un ALF).
5. Predicción temporal: Los filtros derivados para marcos cifrados previamente se almacenan en un búfer. Si el marco actual es un marco P o B, entonces se puede usar uno del conjunto de filtros almacenados para filtrar este marco si esto lleva a un mejor coste de RD. Se señala un indicador para indicar el uso de predicción temporal. Si se usa predicción temporal, se señala un índice que indica qué conjunto de filtros almacenados se usa. No se necesita señalización adicional de coeficientes de ALF. También se pueden señalar indicadores de control de activación/desactivación de ALF a nivel de bloque para un marco que use predicción temporal.
En este y en los siguientes párrafos se resumen los detalles de algunos aspectos de ALF. Algunos aspectos de ALF están relacionados con la clasificación de píxeles y transformación de geometría. En un ejemplo, el codificador de vídeo 20 y decodificador de vídeo 30 pueden configurarse para calcular sumas de valores absolutos de Laplacianos verticales, horizontales y diagonales en todos los píxeles dentro de una ventana de 6x6 que cubre cada píxel en un marco reconstruido (antes de ALF). El codificador de vídeo 20 y decodificador de vídeo 30 dividen el marco reconstruido en bloques de 2x2 no superpuestos. El codificador de vídeo 20 y decodificador de vídeo 30 clasifican los cuatro píxeles en estos bloques en una de veinticinco (25) categorías, denotadas como Ck (k=0, 1, ..., 24), con base en la actividad Laplaciana total y direccionalidad de ese bloque. Adicionalmente, el codificador de vídeo 20 y decodificador de vídeo 30 aplican una de las cuatro transformaciones de geometría (sin transformación, volteo diagonal, volteo vertical, o rotación) a los filtros con base en la direccionalidad de gradiente de ese bloque. Se pueden encontrar detalles adicionales en M. Karczewicz, L. Zhang, W.-J. Chien, y X. Li, "Geometry transformation-based adaptive in-loop filter", Picture Coding Symposium (PCS), 2016.
Algunos aspectos del filtrado de bucle adaptativo están relacionados con la derivación y predicción de filtros a partir de filtros fijos. Para cada clase Ck, el codificador de vídeo 20 y decodificador de vídeo 30 primero determinan un mejor filtro de predicción a partir del grupo para Ck, denotado como hpred,k, con base en la SSE dada por los filtros. La SSE de Ck, que se debe minimizar, se puede escribir como a continuación:
donde h¿,k es la diferencia entre el filtro óptimo para Ck y hpred,k. Dejar que p'(x, y) = Zi,j hpred,k(i, j)p(x - i, y - j) sea el resultado de filtrar el píxel p(x, y) por hpred,k. Entonces la expresión para SSEk puede reescribirse como
Al hacer la derivada parcial de SSEk con respecto a hA,k (i, j) igual a 0, la ecuación de Wiener-Hopf modificada se obtiene de la siguiente manera:
Para la simplicidad de la expresión, denotar Ix ,y p(x - i, y -j)p(x - m, y - n) y Ix,y(S(x, y) - p'(x, y))p(x - m, y - n)
con (x, y) e Ck by Rpp, k(i - m, j - n) yPs-I{ ^ ’", respectivamente. Entonces, la ecuación anterior se puede escribir como:
2 i j h á lk(i>D R p p Á 1 - m ’i - n) = Rps,k(m ’n ) k = 0 , 2 4(1)
Para cada Ck, la matriz de autocorrelación RPP,k(¡ - m, j - n) y vector de correlación cruzadaRFL'k(m, n)se calculan sobre todo (x, y) e Ck.
En un ejemplo de filtrado de bucle adaptativo, el codificador de vídeo 20 calcula y transmite solamente la diferencia entre el filtro óptimo y el filtro de predicción fija. Si ninguno de los filtros candidatos disponibles en el grupo es un buen predictor, entonces el codificador de vídeo 20 y decodificador de vídeo 30 usan el filtro de identidad (es decir, el filtro con un único coeficiente de no cero igual a 1 en el centro que hace que la entrada y la salida sean idénticas) como el predictor.
Algunos aspectos del filtrado de bucle adaptativo se relacionan con la fusión de clases de píxeles. Las clases se fusionan para reducir la sobrecarga de los coeficientes de filtro de señalización. El coste de fusionar dos clases se aumenta con respecto a SSE. Considerar dos clases Cm y Cn con SSEs dadas por SSEmy SSEn, respectivamente. Dejar que Cm+n denote la clase obtenida al fusionar Cm y Cn con SSE, denotada como SSEm+n. SSEm+n siempre es mayor que o igual a SSEm SSEn. Dejar que ASSEm+n denote el aumento en SSE causado al fusionar Cm y Cn, que es igual a SSEm+n - (SSEm SSEn). Para calcular SSEm+n, el codificador de vídeo 20 puede derivar h¿,m+n, el error de predicción de filtro para Cm+n, usando la siguiente expresión similar a (1):
R p s ,n ( U ' V )( 2 )
El codificador de vídeo 20 puede calcular la SSE para la categoría fusionada Cm+n como:
SSEm+n ~ ~2u,v h-A,m+n(u> ^)(.Rps,mCU’^0 3”Rps,n(U’^ ) ) 3" (^ss,m 3”Rss,n)
Para reducir la cantidad de clases desde NaN-1, puede que sea necesario encontrar dos clases, Cm y Cn, de tal manera que al fusionarlas lleve a la ASSEm+n más pequeña en comparación con cualquier otra combinación. En algunos diseños de ALF, el codificador de vídeo 20 está configurado para verificar cada par de clases disponibles para fusionar para encontrar el par con el menor coste de fusión.
Si se fusionan Cm y Cn (con m < n), entonces el codificador de vídeo 20 y decodificador de vídeo 30 pueden marcar Cn como no disponible para una fusión adicional y las auto y cruzadas correlaciones para Cm se cambian a las auto y cruzadas correlaciones combinadas de la siguiente manera:
Rpp.m ~ Rpp,m<3 ">Rpp,n
D’—Q 'D '
n ps,m — n ps,m ^“ ps,n
El codificador de vídeo 20 puede determinar un número óptimo de clases de ALF después de la fusión para cada marco con base en el coste de RD. En un ejemplo, esto se hace empezando con veinticinco (25) clases y fusionando un par de clases (a partir del conjunto de clases disponibles) sucesivamente hasta que solo quede una clase. Para cada número posible de clases (1, 2, ..., 25) que queden después de la fusión, el codificador de vídeo 20 puede almacenar un mapa que indica qué clases se fusionan juntas. El codificador de vídeo 20 luego selecciona el número óptimo de clases de tal manera que el coste de RD se minimice de la siguiente manera:
Nopt =argmin(J\N = D\N+ AflU),
N
£}\
donde D|n es la SSE total de usar N clases ( _ y W —1 S S E
k^r |n es e| número total de bits usados para cifrar los N filtros, y A es el factor de ponderación determinado por el parámetro de cuantificación (QP). El codificador de vídeo 20 puede transmitir el mapa de fusión para un número Nopt de clases, indicando qué clases se fusionan juntas, al decodificador de vídeo 30.
A continuación se describen aspectos de señalizar parámetros de ALF. A continuación se da una breve descripción etapa por etapa de un proceso de codificación de parámetros de ALF de ejemplo realizado por el codificador de vídeo 20. El decodificador de vídeo 30 puede configurarse para realizar un proceso recíproco (por ejemplo, señal desde la perspectiva del decodificador de vídeo 30 es la recepción de elementos de sintaxis).
1. Señalar el indicador de activación/desactivación de ALF a nivel de marco.
2. Si ALF está activado, entonces señalar el indicador de predicción temporal que indica el uso de los filtros desde las imágenes previas.
3. Si se usa predicción temporal, entonces señalar el índice del marco desde el cual se usan los parámetros de ALF correspondientes para filtrar el marco actual.
4. Si no se usa predicción temporal, entonces señalar la información de ALF auxiliar y coeficientes de filtro de la siguiente manera:
a. La siguiente información de ALF auxiliar puede ser señalizada antes de señalizar los coeficientes de filtro. La información de ALF auxiliar puede incluir:
i. El número de filtros únicos usados después de la fusión de clases.
ii. Número de toques de filtro.
iii. Información de fusión de clases que indica qué clases comparten los errores de predicción de filtro. iv. Índice del predictor de filtro fijo para cada clase.
b. Después de señalizar la información de ALF auxiliar, los errores de predicción de coeficiente de filtro pueden señalizarse de la siguiente manera:
i. Se señaliza un indicador para indicar si los errores de predicción de filtro se fuerzan a cero (0) para algunas de las clases restantes después de la fusión.
ii. Se señaliza un indicador para indicar si se usa cifrado diferencial para señalizar errores de predicción de filtro (si el número de clases restantes después de la fusión es mayor que uno (1)).
iii. Los errores de predicción de coeficientes de filtro se señalan luego usando un código Exp-Golomb de orden k-ésimo, donde el valor k para las diferentes posiciones de coeficiente se selecciona empíricamente.
c. Los coeficientes de filtro para los componentes de croma, si están disponibles, se cifran directamente sin ningún método de predicción.
5. Finalmente, se señalizan los indicadores de control de activación/desactivación de ALF a nivel de bloque.
El diseño de filtrado de bucle adaptativo en algunos ejemplos de JEM puede presentar uno o más problemas potenciales. Como ejemplo, algunos diseños de filtrado de bucle adaptativo de ejemplo realizan múltiples pasadas sobre cada marco para diseñar un conjunto de filtros (por ejemplo, un filtro para cada clase de píxeles o un filtro compartido entre múltiples clases en el marco) para todo el marco. Tales técnicas introducen una alta latencia de codificador. La alta latencia de codificador puede ser especialmente problemática en aplicaciones de bajo retraso, tales como videoconferencia, donde puede ser importante enviar incluso un marco parcialmente codificado al canal lo antes posible.
Como otro ejemplo, de acuerdo con algunos diseños de filtrado de bucle adaptativo, se usa un conjunto de filtros para toda la imagen. Las estadísticas locales en un bloque pequeño de la imagen original y la imagen reconstruida pueden ser diferentes de las estadísticas acumulativas obtenidas usando la imagen completa. Por lo tanto, un ALF que sea óptimo para toda la imagen puede no ser óptimo para un bloque dado.
Como otro ejemplo, un problema potencial con diseñar un nuevo conjunto de filtros de Wiener usando un bloque pequeño de una imagen con el fin de obtener una mejor adaptabilidad local es que el número de píxeles disponibles en un bloque pequeño puede no ser suficiente para que el codificador de vídeo 20 determine una buena estimación de las matrices y vectores de correlación. Esto puede llevar a ecuaciones de Wiener-Hopf mal planteadas, que a su vez pueden emitir coeficientes de ALF menos que óptimos.
Como otro ejemplo, algunos diseños de filtrado de bucle adaptativo de ejemplo definen dieciséis (16) filtros fijos para cada una de las veinticinco (25) clases, produciendo de esa manera un total de cuatrocientos (400) filtros. Estos filtros pueden usarse como filtros predictores para los coeficientes de filtro finales para cada clase. El índice del filtro predictor usado se señala para cada clase. Esto puede causar alta sobrecarga de señalización y reducir la ganancia de cifrado global.
Otra posible desventaja de usar un conjunto fijo de filtros como predictores es que el conjunto de predictores no se modifica con base en los nuevos filtros diseñados para marcos previos. Dado que es probable que los marcos temporalmente vecinos tengan estadísticas similares, usar los filtros óptimos para marcos previos puede llevar a una predicción eficiente de los filtros óptimos para el marco actual.
Como otro ejemplo, algunos diseños de filtrado de bucle adaptativo requieren dos pasadas sobre el marco actual para tomar decisiones de activación/desactivación de filtro a nivel de bloque. Esto introduce una latencia adicional de codificador. Los bloques para los cuales se señalan indicadores de activación/desactivación de ALF no se alinean con las unidades de cifrado (CUs). Por lo tanto, la información de CU tal como modo, indicador de bloque cifrado, etc. no se puede considerar en una decisión de control de activación/desactivación de ALF. Usar esta información puede reducir la sobrecarga de señalización de activación/desactivación.
Para abordar uno o más de los problemas discutidos anteriormente, esta divulgación describe técnicas para mejorar además las ganancias de cifrado y calidad visual obtenidas al usar el filtrado de bucle adaptativo.
De acuerdo con la invención, el codificador de vídeo 20 señala un conjunto de filtros de bucle adaptativos por bloque en una sección. Por ejemplo, para cada bloque de datos de vídeo en una sección de datos de vídeo, el codificador de vídeo 20 está configurado para codificar uno o más elementos de sintaxis que indican un conjunto de filtros de bucle adaptativos a usar para el bloque. El decodificador de vídeo 30 está configurado para decodificar el uno o más elementos de sintaxis para cada bloque para determinar el conjunto de filtros de bucle adaptativos a usar para el bloque.
De acuerdo con la invención, el codificador de vídeo 20 está configurado para indicar el conjunto de ALF (por ejemplo, el conjunto de filtros de bucle adaptativos mencionado anteriormente) codificando un índice de conjunto en una lista de conjuntos de filtros (por ejemplo, la pluralidad de conjuntos de filtros de bucle adaptativos). En esta divulgación, el término "conjunto de filtros" puede referirse a un único conjunto de filtros de bucle adaptativos, el término "conjuntos de filtros" puede referirse a una pluralidad de conjuntos de filtros de bucle adaptativos, y el término "lista de conjuntos de filtros" puede referirse a una lista de la pluralidad de conjuntos de filtros de bucle adaptativos. En un ejemplo, la lista de conjuntos de filtros puede incluir una pluralidad de conjuntos de filtros de bucle adaptativos. Es decir, la lista de conjuntos de filtros puede incluir todos los conjuntos de filtros posibles determinados (es decir, la pluralidad de conjuntos de filtros de bucle adaptativos) para la sección. El índice, en algunos ejemplos, identifica un conjunto particular de filtros de bucle adaptativos de entre la pluralidad de conjuntos de filtros de bucle adaptativos incluidos en la lista.
El decodificador de vídeo 30 está configurado para almacenar y/o determinar la pluralidad de conjuntos de filtros de bucle adaptativos de acuerdo con reglas predeterminadas. El codificador de vídeo 20 y/o decodificador de vídeo 30 de acuerdo con la invención pueden aplicar adicionalmente cualquiera de las siguientes técnicas detalladas individualmente. Alternativamente, el codificador de vídeo 20 y/o decodificador de vídeo 30 pueden aplicar cualquier combinación de las técnicas detalladas que se discuten a continuación.
Como se discutirá a continuación, la pluralidad de conjuntos de filtros de bucle adaptativos puede incluir filtros preentrenados, filtros de bucle adaptativos que se señalizan para una imagen actual, y filtros de bucle adaptativos que se reutilizan a partir de imágenes previas. En un ejemplo, para un conjunto particular de filtros de bucle adaptativos, cada conjunto respectivo del conjunto particular de filtros de bucle adaptativos incluye uno o más de un filtro de bucle adaptativo actual señalizado para una imagen actual o un filtro de bucle adaptativo preentrenado. El decodificador de vídeo 30 puede estar configurado para decodificar el índice enviado por el codificador de vídeo 20 y determinar el conjunto de filtros de bucle adaptativos, de entre la pluralidad de conjuntos de filtros de bucle adaptativos, a usar para un bloque particular de datos de vídeo.
De esta forma, el codificador de vídeo 20 y decodificador de vídeo 30 pueden configurarse para determinar un conjunto respectivo de filtros de bucle adaptativos, de entre una pluralidad de conjuntos de filtros de bucle adaptativos, por bloque de la imagen actual para bloques en los cuales se usa el filtrado de bucle adaptativo. En un ejemplo de la divulgación, cada conjunto respectivo de filtros de bucle adaptativos incluye un filtro de bucle adaptativo previo usado en una o más imágenes previas. El codificador de vídeo 20 y decodificador de vídeo 30 pueden configurarse para determinar un conjunto respectivo de filtros de bucle adaptativos para un bloque respectivo de la imagen actual en el caso de que el filtrado de bucle adaptativo esté habilitado para el bloque (por ejemplo, como se indica mediante un indicador de ALF activado/desactivado).
El codificador de vídeo 20 y decodificador de vídeo 30 pueden configurarse además para filtrar mediante bucle adaptativo los bloques de la imagen actual de acuerdo con los respectivos conjuntos de filtros de bucle adaptativos. Por ejemplo, como se describió anteriormente, el codificador de vídeo 20 y decodificador de vídeo 30 pueden configurarse para clasificar las muestras del bloque y luego usar el filtro de bucle adaptativo en el respectivo conjunto de filtros de bucle adaptativos que está asociado con la clasificación. En otro ejemplo, el codificador de vídeo 20 puede configurarse para señalar un elemento de sintaxis que indica qué filtro de bucle adaptativo en el respectivo conjunto de filtros de bucle adaptativos usar para el bloque actual. Por consiguiente, en un ejemplo, el codificador de vídeo 20 y decodificador de vídeo 30 pueden estar configurados para cifrar un indicador respectivo por bloque que indica si se usa el filtrado de bucle adaptativo para el bloque respectivo (por ejemplo, un indicador de activación/desactivación de ALF a nivel de bloque), y cifrar, con base en el indicador respectivo por bloque, un elemento de sintaxis respectivo que indica el conjunto respectivo de filtros de bucle adaptativos, de entre la pluralidad de conjuntos de filtros de bucle adaptativos, por bloque de la imagen actual. En algunos ejemplos, el codificador de vídeo 20 y decodificador de vídeo 30 no cifrarían el elemento de sintaxis respectivo que indica el conjunto respectivo de filtros de bucle adaptativos en el caso de que no se use el filtrado de bucle adaptativo para el bloque actual (por ejemplo, el indicador de ALF a nivel de bloque indica que el filtrado de bucle adaptativo está desactivado y/o no habilitado).
En los ejemplos anteriores, el "bloque" de la imagen actual puede definirse como cualquier tamaño de bloque. En un ejemplo, el bloque puede ser la unidad de árbol de cifrado (CTU) o cualquier otro bloque. El bloque puede desacoplarse de la división. En el caso de que el bloque sea una CTU, el codificador de vídeo 20 y decodificador de vídeo 30 pueden configurarse para usar el conjunto de filtros de bucle adaptativos señalizados para la CTU para todos los bloques divididos de la CTU.
En un ejemplo, el codificador de vídeo 20 y decodificador de vídeo 30 pueden estar configurados para determinar una lista de la pluralidad de conjuntos de filtros de bucle adaptativos. El codificador de vídeo 20 y decodificador de vídeo 30 pueden estar configurados para determinar tal lista por imagen, por sección, o por mosaico. Cada conjunto de filtros de bucle adaptativos de la pluralidad de conjuntos de filtros de bucle adaptativos puede estar configurado de tal manera que cada clasificación posible de muestras tenga un filtro asociado. Es decir, cada conjunto puede contener un filtro asignado por clase. Como se describió anteriormente, el codificador de vídeo 20 y decodificador de vídeo 30 pueden estar configurados para cifrar un índice de conjunto en la lista de la pluralidad de conjuntos de filtros de bucle adaptativos por bloque. En un ejemplo, la lista de la pluralidad de conjuntos de filtros de bucle adaptativos puede ser una tabla, donde cada entrada en la tabla es un conjunto particular de filtros de bucle adaptativos. Además, el codificador de vídeo 20 y decodificador de vídeo 30 pueden estar configurados para cifrar un indicador por bloque para indicar si se usa o no un ALF (por ejemplo, un indicador de activación/desactivación de ALF a nivel de bloque). La lista de la pluralidad de conjuntos de filtros de bucle adaptativos puede incluir uno o más filtros preentrenados, uno o más filtros derivados usando filtros de imágenes previas, y/o filtros señalizados en el flujo de bits para la imagen actual.
De acuerdo con algunos ejemplos de esta divulgación, el codificador de vídeo 20 y/o decodificador de vídeo 30 pueden compartir la lista de la pluralidad de conjuntos de filtros a través de diferentes imágenes (por ejemplo, un filtro de bucle adaptativo usado para una imagen previa se incluye en un conjunto de la pluralidad de conjuntos de filtros usados para cifrar un bloque actual). En un ejemplo, la lista de conjuntos de filtros se puede inicializar con filtros preentrenados. Después de cifrar una imagen, el codificador de vídeo 20 puede derivar un nuevo conjunto de filtros con base en la imagen codificada y agregar el nuevo conjunto de filtros a la lista de conjuntos de filtros. Alternativamente, el nuevo conjunto de filtros puede reemplazar un conjunto de filtros existente en la lista. Después de cifrar otra imagen, el codificador de vídeo 20 puede derivar otro conjunto de filtros e incluir el conjunto de filtros derivado en la lista de conjuntos de filtros. En este ejemplo, la lista de conjuntos de filtros es común para todas las imágenes y se puede actualizar después de cifrar una imagen. Desde el lado de decodificador, el decodificador de vídeo 30 puede detectar una señalización del nuevo conjunto de filtros después de decodificar una imagen o antes de la decodificación de una imagen.
De acuerdo con algunos ejemplos de esta divulgación, el codificador de vídeo 20 puede estar configurado para señalar (por ejemplo, codificar) elementos de sintaxis de un nuevo conjunto de filtros por imagen, por sección, y/o por mosaico. El decodificador de vídeo 30 puede estar configurado para determinar el nuevo conjunto de filtros con base en la señalización del codificador de vídeo 20 y agregar el nuevo conjunto de filtros a la lista que incluye la pluralidad de conjuntos de filtros.
En un ejemplo, el codificador de vídeo 20 y decodificador de vídeo 30 pueden configurarse para agregar el nuevo conjunto de filtros a la lista de conjuntos de filtros. La lista actualizada puede usarse entonces para filtrar un bloque en la siguiente imagen o imágenes. En otro ejemplo, el codificador de vídeo 20 y decodificador de vídeo 30 pueden configurarse para usar la lista actualizada (por ejemplo, que contiene el nuevo conjunto de filtros derivados usando la imagen/sección/mosaico actual) para filtrar un bloque en la imagen/sección/mosaico actual.
De acuerdo con algunos ejemplos de esta divulgación, el codificador de vídeo 20 y decodificador de vídeo 30 pueden actualizar la lista de conjuntos de filtros (por ejemplo, la lista de la pluralidad de conjuntos de filtros de bucle adaptativos) con filtros derivados usando imágenes previas, secciones previas, y/o mosaicos previos. El orden en el cual el codificador de vídeo 20 y decodificador de vídeo 30 pueden configurarse para agregar los conjuntos de filtros de bucle adaptativos en la lista de conjuntos de filtros puede ser fijo, predefinido, o flexible. La lista puede reordenarse por imagen con base en la información relacionada con la imagen actual e información relacionada con las imágenes desde las cuales se derivan los filtros correspondientes en la lista. El codificador de vídeo 20 puede indicar un conjunto de filtros al decodificador de vídeo 30 usando un índice en la lista de conjuntos de filtros. En algunos ejemplos, el codificador de vídeo 20 puede asignar un valor de índice menor a los filtros usados con más frecuencia o filtros agregados recientemente.
En un ejemplo, el codificador de vídeo 20 y decodificador de vídeo 30 pueden configurarse para agregar el conjunto de filtros recién derivado al principio de la lista. En otro ejemplo, el codificador de vídeo 20 y decodificador de vídeo 30 pueden configurarse para agregar los conjuntos de filtros derivados usando marcos previos (por ejemplo, filtros de bucle adaptativos previos) en la lista después de los filtros actualmente señalados y antes de los conjuntos de filtros existentes en la lista (por ejemplo, los conjuntos de filtros fijos preentrenados). En otro ejemplo, el codificador de vídeo 20 y decodificador de vídeo 30 pueden configurarse para agregar filtros de bucle adaptativos a cada conjunto respectivo de filtros de bucle adaptativos de tal manera que los filtros de bucle adaptativos actuales se agreguen primero, los filtros de bucle adaptativos previos se agreguen en segundo lugar, y los filtros de bucle adaptativos preentrenados se agreguen en último lugar.
En otro ejemplo de la divulgación, el ordenamiento de conjuntos de filtros en la lista puede depender de otra información relacionada con imagen. Por ejemplo, los filtros derivados desde imágenes en la misma capa temporal que la imagen actual pueden colocarse en la lista antes de los filtros derivados usando imágenes en otra capa temporal. En otro ejemplo, el índice de un conjunto de filtros en la lista puede depender de si la imagen correspondiente desde la cual se deriva es una imagen de referencia usada para la predicción de la imagen actual. El codificador de vídeo 20 y decodificador de vídeo 30 pueden configurarse para agregar filtros que corresponden a una imagen de referencia usada con más frecuencia antes de los filtros derivados desde otras imágenes de referencia. Ordenar los conjuntos de filtros de esta manera puede dar como resultado elementos de sintaxis (por ejemplo, índices en la lista de conjuntos de filtros) con menos bits para los conjuntos de filtros usados con más frecuencia en la lista de conjuntos de filtros. Por consiguiente, se pueden usar menos bits para señalar el conjunto de filtros usado para el bloque, aumentando de este modo la eficiencia de cifrado.
En otro ejemplo, el codificador de vídeo 20 y decodificador de vídeo 30 pueden configurarse para agregar filtros derivados usando imágenes cifradas con un parámetro de cuantificación (QP) similar a la imagen actual antes de los filtros derivados desde imágenes previas cifradas con un QP diferente.
En otro ejemplo de la divulgación, el codificador de vídeo 20 y decodificador de vídeo 30 pueden estar configurados para limitar el número máximo de conjuntos de filtros en la lista de conjuntos de filtros. En un ejemplo, se pueden mantener hasta treinta y dos (32) conjuntos de filtros en la lista de conjuntos de filtros. En algunos ejemplos, el codificador de vídeo 20 puede estar configurado para señalar el número máximo de conjuntos de filtros en la lista en el encabezado de sección, conjunto de parámetros de secuencia, conjunto de parámetros de imagen, en otra información de sintaxis de alto nivel, o en otro lugar.
En otro ejemplo de la divulgación, el codificador de vídeo 20 puede usar un número diferente de bits para señalar diferentes índices de conjuntos de filtros. Se pueden usar menos bits para indicar una posición de índice inferior en la lista (debido a que es más probable que se seleccionen los conjuntos de filtros cerca de la parte superior de una lista) en comparación con una posición de índice superior. De nuevo, esto puede dar como resultado que se usen menos bits para señalar el conjunto de filtros usado para el bloque más a menudo, aumentando de este modo la eficiencia de cifrado.
De acuerdo con algunos ejemplos de esta divulgación, el codificador de vídeo 20 y decodificador de vídeo 30 pueden estar configurados para compartir información de ALF para algunos bloques (por ejemplo, fusión de la información de ALF a través de dos o más bloques). En un ejemplo, el codificador de vídeo 20 y decodificador de vídeo 30 pueden estar configurados para compartir el índice del conjunto de filtros y/o indicador de activación/desactivación de ALF (este indicador indica si se aplica el filtrado de bucle adaptativo a un bloque) a través de múltiples bloques. Un indicador de fusión de ALF puede indicar qué bloques están fusionados, y qué información de ALF está asociada con el indicador de fusión de ALF. El indicador de fusión puede ser un índice, un indicador, o cualquier otro elemento de sintaxis.
En un ejemplo, el codificador de vídeo 20 y decodificador de vídeo 30 pueden configurarse para fusionar la información de ALF de un bloque con un bloque superior, o con un bloque a la izquierda. En otros ejemplos, también se puede usar una fusión de información de ALF más flexible que permita la fusión de un bloque con cualquier otro bloque (es decir, no necesariamente un bloque vecino) en la imagen.
En algunos ejemplos de esta divulgación, el decodificador de vídeo 30 puede estar configurado para derivar el indicador de activación/desactivación de ALF con base en otra información de bloque existente. En un ejemplo, el decodificador de vídeo 30 puede derivar el indicador de activación/desactivación de ALF con base en la información de bloque existente, y como tal, el codificador de vídeo 20 puede no señalar el indicador de activación/desactivación de ALF. El codificador de vídeo 20 puede señalar el indicador de activación/desactivación de ALF para un grupo de bloques, denotado como un bloque de ALF. El tamaño de un bloque de ALF puede estar predeterminado, o puede ser señalado por el codificador de vídeo 20. En un ejemplo, los bloques que comparten el mismo indicador de activación/desactivación de ALF pueden representar un bloque de ALF. En otro ejemplo, el bloque de ALF puede ser igual a un bloque.
a. En un ejemplo, el codificador de vídeo 20 y decodificador de vídeo 30 pueden configurarse para derivar el indicador de activación/desactivación de ALF con base en el número de bloques en un bloque de ALF, que comparten el mismo indicador de activación/desactivación de ALF, que tienen indicadores de bloque cifrados (CBFs) de no cero. Un CBF indica si un bloque incluye cualquier significativo (por ejemplo, coeficientes de transformada de no cero). Un valor de "1" para el CBF indica que el bloque incluye coeficientes de transformada de no cero. Si el número CBF de no cero es menor que un cierto umbral, entonces se puede deshabilitar ALF, o se puede aplicar un filtro de ALF predeterminado a esos bloques en el bloque de ALF.
b. En el ejemplo de subviñeta 'a' anterior, se puede contar el número de coeficientes de transformada de no cero en lugar de CBFs. Se puede introducir un umbral para los coeficientes contados, y si el número de coeficientes de transformada de no cero es menor que el umbral, se puede deshabilitar el filtrado de bucle adaptativo para los bloques incluidos en el bloque de ALF, o se puede aplicar un filtro de ALF predeterminado a esos bloques.
c. En otro ejemplo, si el número de bloques en un bloque de ALF cifrado con modo de omisión es mayor que un cierto umbral entonces el filtrado de bucle adaptativo puede deshabilitarse para esos bloques en el bloque de ALF. Las técnicas de subviñeta 'c' pueden usarse junto con las técnicas de subviñetas 'a' y 'b' en cualquier combinación.
d. En el ejemplo de la subviñeta 'c' anterior, el modo de omisión se usa como ejemplo, y otros modos de cifrado (por ejemplo, un modo particular tal como una dirección de intrapredicción particular, modo de interpredicción particular, etc.) pueden utilizarse para derivar el indicador de activación/desactivación de ALF.
La figura 4 es un diagrama de bloques que ilustra un codificador de vídeo de ejemplo 20 que puede implementar las técnicas descritas en esta divulgación y es útil para entender la invención. El codificador de vídeo 20 puede realizar el intra e intercifrado de bloques de vídeo dentro de secciones de vídeo. El intracifrado se basa en la predicción espacial para reducir o retirar la redundancia espacial en el vídeo dentro de un marco o imagen de vídeo dado. El intercifrado se basa en la predicción temporal para reducir o retirar la redundancia temporal en el vídeo dentro de marcos o imágenes adyacentes de una secuencia de vídeo. El intramodo (modo I) puede referirse a cualquiera de varios modos de compresión basados en espacio. Los intermodos, tales como predicción unidireccional (modo P) o bipredicción (modo B), pueden referirse a cualquiera de varios modos de compresión basados en tiempo.
En el ejemplo de la figura 4, el codificador de vídeo 20 incluye una memoria de datos de vídeo 33, unidad de división 35, unidad de procesamiento de predicción 41, agregador 50, unidad de procesamiento de transformada 52, unidad de cuantificación 54, unidad de codificación por entropía 56. La unidad de procesamiento de predicción 41 incluye una unidad de estimación de movimiento (MEU) 42, unidad de compensación de movimiento (MCU) 44, y unidad de intrapredicción 46. Para la reconstrucción de bloques de vídeo, el codificador de vídeo 20 también incluye una unidad de cuantificación inversa 58, unidad de procesamiento de transformada inversa 60, agregador 62, unidad de filtro 64, y búfer de imágenes decodificadas (DPB) 66.
Como se muestra en la figura 4, el codificador de vídeo 20 recibe datos de vídeo y almacena los datos de vídeo recibidos en la memoria de datos de vídeo 33. La memoria de datos de vídeo 33 puede almacenar datos de vídeo que van a ser codificados mediante los componentes de codificador de vídeo 20. Los datos de vídeo almacenados en la memoria de datos de vídeo 33 pueden obtenerse, por ejemplo, desde la fuente de vídeo 18. El DPB 66 puede ser una memoria de imágenes de referencia que almacena datos de vídeo de referencia para uso al codificar datos de vídeo por el codificador de vídeo 20, por ejemplo, en modos de intra o intercifrado. La memoria de datos de vídeo 33 y DPB 66 pueden estar formados por cualquiera de una variedad de dispositivos de memoria, tal como memoria de acceso aleatorio dinámica (DRAM), incluyendo DRAM sincrónica (SDRAM), RAM magnetorresistiva (MRAM), RAM resistiva (RRAM), u otros tipos de dispositivos de memoria. La memoria de datos de vídeo 33 y DPB 66 pueden estar provistos por el mismo dispositivo de memoria o dispositivos de memoria separados. En diversos ejemplos, la memoria de datos de vídeo 33 puede estar en el chip con otros componentes de codificador de vídeo 20, o fuera del chip en relación con esos componentes.
La unidad de división 35 recupera los datos de vídeo desde la memoria de datos de vídeo 33 y divide los datos de vídeo en bloques de vídeo. Esta división también puede incluir la división en secciones, mosaicos, u otras unidades más grandes, así como división en bloques de vídeo, por ejemplo, de acuerdo con una estructura de árbol cuádruple de LCUs y CUs. El codificador de vídeo 20 ilustra en general los componentes que codifican bloques de vídeo dentro de una sección de vídeo que va a ser codificada. La sección puede dividirse en múltiples bloques de vídeo (y posiblemente en conjuntos de bloques de vídeo denominados como mosaicos). La unidad de procesamiento de predicción 41 puede seleccionar uno de una pluralidad de modos de cifrado posibles, tal como uno de una pluralidad de modos de intracifrado o uno de una pluralidad de modos de intercifrado, para el bloque de vídeo actual con base en los resultados de error (por ejemplo, tasa de cifrado y el nivel de distorsión). La unidad de procesamiento de predicción 41 puede proporcionar el bloque intra o intercifrado resultante al agregador 50 para generar datos de bloque residual y al agregador 62 para reconstruir el bloque codificado para uso como una imagen de referencia.
La unidad de intrapredicción 46 dentro de la unidad de procesamiento de predicción 41 puede realizar cifrado intrapredictivo del bloque de vídeo actual en relación con uno o más bloques vecinos en el mismo marco o sección que el bloque actual que va a ser cifrado para proporcionar compresión espacial. La unidad de estimación de movimiento 42 y unidad de compensación de movimiento 44 dentro de la unidad de procesamiento de predicción 41 realizan cifrado interpredictivo del bloque de vídeo actual en relación con uno o más bloques predictivos en una o más imágenes de referencia para proporcionar compresión temporal.
La unidad de estimación de movimiento 42 puede configurarse para determinar el modo de interpredicción para una sección de vídeo de acuerdo con un patrón predeterminado para una secuencia de vídeo. El patrón predeterminado puede designar secciones de vídeo en la secuencia como secciones P o secciones B. La unidad de estimación de movimiento 42 y unidad de compensación de movimiento 44 pueden estar altamente integradas, pero se ilustran por separado con propósitos conceptuales. La estimación de movimiento, realizada por la unidad de estimación de movimiento 42, es el proceso de generación de vectores de movimiento, que estiman el movimiento para bloques de vídeo. Un vector de movimiento, por ejemplo, puede indicar el desplazamiento de una P<u>de un bloque de vídeo dentro de un marco o imagen de vídeo actual en relación con un bloque predictivo dentro de una imagen de referencia.
Un bloque predictivo es un bloque que se encuentra que coincide estrechamente con la PU del bloque de vídeo que va a ser cifrado en términos de diferencia de píxeles, que puede determinarse por la suma de la diferencia absoluta (SAD), suma de diferencia al cuadrado (SSD), u otras métricas de diferencia. En algunos ejemplos, el codificador de vídeo 20 puede calcular valores para posiciones de píxeles subenteros de imágenes de referencia almacenadas en DPB 66. Por ejemplo, el codificador de vídeo 20 puede interpolar valores de posiciones de cuarto de píxel, posiciones de un octavo de píxel, u otras posiciones de píxeles fraccionarias de la imagen de referencia. Por lo tanto, la unidad de estimación de movimiento 42 puede realizar una búsqueda de movimiento relativa a las posiciones de píxeles completos y posiciones de píxeles fraccionarias y emitir un vector de movimiento con precisión de píxeles fraccionarios.
La unidad de estimación de movimiento 42 calcula un vector de movimiento para una PU de un bloque de vídeo en una sección intercifrada comparando la posición de la PU con la posición de un bloque predictivo de una imagen de referencia. La imagen de referencia puede seleccionarse a partir de una primera lista de imágenes de referencia (Lista 0) o una segunda lista de imágenes de referencia (Lista 1), cada una de las cuales identifica una o más imágenes de referencia almacenadas en DPB 66. La unidad de estimación de movimiento 42 envía el vector de movimiento calculado a la unidad de codificación por entropía 56 y a la unidad de compensación de movimiento 44.
La compensación de movimiento, realizada por la unidad de compensación de movimiento 44, puede involucrar la extracción o generación del bloque predictivo con base en el vector de movimiento determinado por la estimación de movimiento, posiblemente realizando interpolaciones con precisión de subpíxeles. Tras recibir el vector de movimiento para la PU del bloque de vídeo actual, la unidad de compensación de movimiento 44 puede localizar el bloque predictivo al cual apunta el vector de movimiento en una de las listas de imágenes de referencia. El codificador de vídeo 20 forma un bloque de vídeo residual restando los valores de píxel del bloque predictivo de los valores de píxel del bloque de vídeo actual que se cifra, formando valores de diferencia de píxel. Los valores de diferencia de píxel forman datos residuales para el bloque, y pueden incluir tanto componentes de diferencia de luma como de croma. El agregador 50 representa el componente o componentes que realizan esta operación de resta. La unidad de compensación de movimiento 44 también puede generar elementos de sintaxis asociados con los bloques de vídeo y la sección de vídeo para uso por el decodificador de vídeo 30 en la decodificación de los bloques de vídeo de la sección de vídeo.
Después de que la unidad de procesamiento de predicción 41 genera el bloque predictivo para el bloque de vídeo actual, ya sea a través de intrapredicción o interpredicción, el codificador de vídeo 20 forma un bloque de vídeo residual restando el bloque predictivo del bloque de vídeo actual. Los datos de vídeo residuales en el bloque residual pueden incluirse en una o más TUs y aplicarse a la unidad de procesamiento de transformada 52. La unidad de procesamiento de transformada 52 transforma los datos de vídeo residuales en coeficientes de transformada residuales usando una transformada, tal como una transformada de coseno discreta (DCT) o una transformada conceptualmente similar. La unidad de procesamiento de transformada 52 puede convertir los datos de vídeo residuales desde un dominio de píxeles a un dominio de transformada, tal como un dominio de frecuencia.
La unidad de procesamiento de transformada 52 puede enviar los coeficientes de transformada resultantes a la unidad de cuantificación 54. La unidad de cuantificación 54 cuantifica los coeficientes de transformada para reducir además la tasa de bits. El proceso de cuantificación puede reducir la profundidad de bits asociada con algunos o todos los coeficientes. El grado de cuantificación puede modificarse ajustando un parámetro de cuantificación. En algunos ejemplos, la unidad de cuantificación 54 puede entonces realizar un escaneo de la matriz que incluye los coeficientes de transformada cuantificados. En otro ejemplo, la unidad de codificación por entropía 56 puede realizar el escaneo.
Después de la cuantificación, la unidad de codificación por entropía 56 codifica por entropía los coeficientes de transformada cuantificados. Por ejemplo, la unidad de codificación por entropía 56 puede realizar un cifrado de longitud variable adaptativo al contexto (CAVLC), cifrado aritmético binario adaptativo al contexto (CABAC), cifrado aritmético binario adaptativo al contexto basado en sintaxis (SBAC), cifrado por entropía de división de intervalos de probabilidad (PIPE) u otra metodología o técnica de codificación por entropía. Después de la codificación por entropía por la unidad de codificación por entropía 56, el flujo de bits codificado puede transmitirse al decodificador de vídeo 30, o archivarse para posterior transmisión o recuperación por el decodificador de vídeo 30. La unidad de codificación por entropía 56 también puede codificar por entropía los vectores de movimiento y los otros elementos de sintaxis para la sección de vídeo actual que se cifra proporcionados por la unidad de procesamiento de predicción 41.
La unidad de cuantificación inversa 58 y unidad de procesamiento de transformada inversa 60 aplican cuantificación inversa y transformación inversa, respectivamente, para reconstruir el bloque residual en el dominio de píxeles para uso posterior como un bloque de referencia de una imagen de referencia. La unidad de compensación de movimiento 44 puede calcular un bloque de referencia agregando el bloque residual a un bloque predictivo de una de las imágenes de referencia dentro de una de las listas de imágenes de referencia. La unidad de compensación de movimiento 44 también puede aplicar uno o más filtros de interpolación al bloque residual reconstruido para calcular valores de píxeles subenteros para uso en la estimación de movimiento. El agregador 62 agrega el bloque residual reconstruido al bloque de predicción compensado por movimiento producido por la unidad de compensación de movimiento 44 para producir un bloque reconstruido.
La unidad de filtro 64 filtra el bloque reconstruido (por ejemplo, la salida de agregador 62) y almacena el bloque reconstruido filtrado en DPB 66 para usos como un bloque de referencia. El bloque de referencia se puede usar por la unidad de estimación de movimiento 42 y unidad de compensación de movimiento 44 como un bloque de referencia para interpredecir un bloque en un marco o imagen de vídeo subsecuente. La unidad de filtro 64 puede realizar cualquier tipo de filtrado tal como filtrado de eliminación de bloque, filtrado de SAO, filtrado de SAO pico, ALF, y/o GALF, y/u otros tipos de filtros de bucle. Un filtro de eliminación de bloque puede, por ejemplo, aplicar un filtrado de eliminación de bloque a los límites de bloques de filtro para retirar los artefactos que generan bloques del vídeo reconstruido. Un filtro de SAO pico puede aplicar compensaciones a los valores de píxeles reconstruidos con el fin de mejorar la calidad global de cifrado. También se pueden usar filtros de bucle adicionales (en bucle o posbucle).
Además, la unidad de filtro 64 puede estar configurada para realizar cualquiera de las técnicas en esta divulgación relacionadas con el filtrado de bucle adaptativo. En particular, como se describió anteriormente, la unidad de filtro 64 puede estar configurada para determinar un conjunto respectivo de filtros de bucle adaptativos, de entre una pluralidad de conjuntos de filtros de bucle adaptativos, por bloque de la imagen actual para bloques en los cuales se usa el filtrado de bucle adaptativo, en donde cada conjunto respectivo de filtros de bucle adaptativos incluye un filtro de bucle adaptativo previo usado en una o más imágenes previas, y filtra mediante bucle adaptativo los bloques de la imagen actual de acuerdo con los conjuntos respectivos de filtros de bucle adaptativos.
La figura 5 es un diagrama de bloques que ilustra un decodificador de vídeo de ejemplo 30 que puede implementar las técnicas descritas en esta divulgación y es útil para entender la invención. El decodificador de vídeo 30 de la figura 5 puede, por ejemplo, estar configurado para recibir la señalización descrita anteriormente con respecto al codificador de vídeo 20 de la figura 4. En el ejemplo de la figura 5, el decodificador de vídeo 30 incluye una memoria de datos de vídeo 78, unidad de decodificación por entropía 80, unidad de procesamiento de predicción 81, unidad de cuantificación inversa 86, unidad de procesamiento de transformada inversa 88, agregador 90, DPB 94, y unidad de filtro 92. La unidad de procesamiento de predicción 81 incluye una unidad de compensación de movimiento 82 y unidad de intrapredicción 84. El decodificador de vídeo 30 puede, en algunos ejemplos, realizar una pasada de decodificación generalmente recíproca a la pasada de codificación descrita con respecto al codificador de vídeo 20 de la figura 4.
Durante el proceso de decodificación, el decodificador de vídeo 30 recibe un flujo de bits de vídeo codificado que representa bloques de vídeo de una sección de vídeo codificada y elementos de sintaxis asociados del codificador de vídeo 20. El decodificador de vídeo 30 almacena el flujo de bits de vídeo codificado recibido en la memoria de datos de vídeo 78. La memoria de datos de vídeo 78 puede almacenar datos de vídeo, tal como un flujo de bits de vídeo codificado, que van a ser decodificados mediante los componentes del decodificador de vídeo 30. Los datos de vídeo almacenados en la memoria de datos de vídeo 78 se pueden obtener, por ejemplo, a través del enlace 16, desde el dispositivo de almacenamiento 26, o desde una fuente de vídeo local, tal como una cámara, o accediendo a medios de almacenamiento de datos físicos. La memoria de datos de vídeo 78 puede formar un búfer de imágenes cifradas (CPB) que almacena datos de vídeo codificados a partir de un flujo de bits de vídeo codificado. El DPB 94 puede ser una memoria de imágenes de referencia que almacena datos de vídeo de referencia para uso en la decodificación de datos de vídeo por el decodificador de vídeo 30, por ejemplo, en modos de intra o intercifrado. La memoria de datos de vídeo 78 y DPB 94 pueden estar formados por cualquiera de una variedad de dispositivos de memoria, tales como DRAM, SDRAM, MRAM, RRAM, u otros tipos de dispositivos de memoria. La memoria de datos de vídeo 78 y DPB 94 pueden estar proporcionados por el mismo dispositivo de memoria o por dispositivos de memoria separados. En diversos ejemplos, la memoria de datos de vídeo 78 puede estar en el chip con otros componentes del decodificador de vídeo 30, o fuera del chip en relación con esos componentes.
La unidad de decodificación por entropía 80 del decodificador de vídeo 30 decodifica por entropía los datos de vídeo almacenados en la memoria de datos de vídeo 78 para generar coeficientes cuantificados, vectores de movimiento, y otros elementos de sintaxis. La unidad de decodificación por entropía 80 reenvía los vectores de movimiento y otros elementos de sintaxis a la unidad de procesamiento de predicción 81. El decodificador de vídeo 30 puede recibir los elementos de sintaxis al nivel de sección de vídeo y/o al nivel de bloque de vídeo.
Cuando la sección de vídeo se cifra como una sección intracifrada (I), la unidad de intrapredicción 84 de la unidad de procesamiento de predicción 81 puede generar datos de predicción para un bloque de vídeo de la sección de vídeo actual con base en un modo de intrapredicción señalizado y datos de bloques decodificados previamente del marco o imagen actual. Cuando el marco de vídeo se cifra como una sección intercifrada (por ejemplo, sección B o sección P), la unidad de compensación de movimiento 82 de la unidad de procesamiento de predicción 81 produce bloques predictivos para un bloque de vídeo de la sección de vídeo actual con base en los vectores de movimiento y otros elementos de sintaxis recibidos desde la unidad de decodificación por entropía 80. Los bloques predictivos se pueden producir a partir de una de las imágenes de referencia dentro de una de las listas de imágenes de referencia. El decodificador de vídeo 30 puede construir las listas de marcos de referencia, Lista 0 y Lista 1, usando técnicas de construcción predeterminadas basadas en imágenes de referencia almacenadas en DPB 94.
La unidad de compensación de movimiento 82 determina la información de predicción para un bloque de vídeo de la sección de vídeo actual analizando sintácticamente los vectores de movimiento y otros elementos de sintaxis, y usa la información de predicción para producir los bloques predictivos para el bloque de vídeo actual que se decodifica. Por ejemplo, la unidad de compensación de movimiento 82 usa algunos de los elementos de sintaxis recibidos para determinar un modo de predicción (por ejemplo, intra o interpredicción) usado para cifrar los bloques de vídeo de la sección de vídeo, un tipo de sección de interpredicción (por ejemplo, sección B o sección P), información de construcción para una o más de las listas de imágenes de referencia para la sección, vectores de movimiento para cada bloque de vídeo intercodificado de la sección, estado de interpredicción para cada bloque de vídeo intercifrado de la sección, y otra información para decodificar los bloques de vídeo en la sección de vídeo actual.
La unidad de compensación de movimiento 82 también puede realizar una interpolación basada en filtros de interpolación. La unidad de compensación de movimiento 82 puede usar filtros de interpolación como se usan por el codificador de vídeo 20 durante la codificación de los bloques de vídeo para calcular valores interpolados para píxeles subenteros de bloques de referencia. En este caso, la unidad de compensación de movimiento 82 puede determinar los filtros de interpolación usados por el codificador de vídeo 20 a partir de los elementos de sintaxis recibidos y usar los filtros de interpolación para producir bloques predictivos.
La unidad de cuantificación inversa 86 cuantifica inversamente, es decir, descuantifica, los coeficientes de transformada cuantificados proporcionados en el flujo de bits y decodificados por la unidad de decodificación por entropía 80. El proceso de cuantificación inversa puede incluir el uso de un parámetro de cuantificación calculado por el codificador de vídeo 20 para cada bloque de vídeo en la sección de vídeo para determinar un grado de cuantificación y, asimismo, un grado de cuantificación inversa que se debe aplicar. La unidad de procesamiento de transformada inversa 88 aplica una transformada inversa, por ejemplo, una DCT inversa, una transformada de enteros inversa, o un proceso de transformada inversa conceptualmente similar, a los coeficientes de transformada con el fin de producir bloques residuales en el dominio de píxeles.
Después de que la unidad de procesamiento de predicción 81 genera el bloque predictivo para el bloque de vídeo actual usando, por ejemplo, intra o interpredicción, el decodificador de vídeo 30 forma un bloque de vídeo reconstruido sumando los bloques residuales de la unidad de procesamiento de transformada inversa 88 con los bloques predictivos correspondientes generados por la unidad de compensación de movimiento 82. El agregador 90 representa el componente o componentes que realizan esta operación de suma.
La unidad de filtro 92 filtra el bloque reconstruido (por ejemplo, la salida de agregador 90) y almacena el bloque reconstruido filtrado en DPB 94 para usos como un bloque de referencia. El bloque de referencia se puede usar por la unidad de compensación de movimiento 82 como un bloque de referencia para interpredecir un bloque en un marco o imagen de vídeo subsecuente. La unidad de filtro 92 puede realizar cualquier tipo de filtrado tal como filtrado de eliminación de bloque, filtrado de SAO, filtrado de<s>A<o>pico, ALF, y/o<g>A<l>F, y/u otros tipos de filtros de bucle. Un filtro de eliminación de bloque puede, por ejemplo, aplicar un filtrado de eliminación de bloque a los límites de bloques de filtro para retirar los artefactos que generan bloques del vídeo reconstruido. Un filtro de SAO pico puede aplicar compensaciones a los valores de píxeles reconstruidos con el fin de mejorar la calidad global de cifrado. También se pueden usar filtros de bucle adicionales (en bucle o posbucle).
Además, la unidad de filtro 92 puede estar configurada para realizar cualquiera de las técnicas en esta divulgación relacionadas con el filtrado de bucle adaptativo. En particular, como se describió anteriormente, la unidad de filtro 92 puede estar configurada para determinar un conjunto respectivo de filtros de bucle adaptativos, de entre una pluralidad de conjuntos de filtros de bucle adaptativos, por bloque de la imagen actual para bloques en los cuales se usa el filtrado de bucle adaptativo, en donde cada conjunto respectivo de filtros de bucle adaptativos incluye un filtro de bucle adaptativo previo usado en una o más imágenes previas, y filtra mediante bucle adaptativo los bloques de la imagen actual de acuerdo con los conjuntos respectivos de filtros de bucle adaptativos.
La figura 6 muestra una implementación de ejemplo de la unidad de filtro 92. La unidad de filtro 64 puede implementarse de la misma manera. Las unidades de filtro 64 y 92 pueden realizar las técnicas de esta divulgación, posiblemente en conjunción con otros componentes del codificador de vídeo 20 o del decodificador de vídeo 30. En el ejemplo de la figura 6, la unidad de filtro 92 incluye un filtro de eliminación de bloque 102, filtro de SAO 104, y filtro de ALF/GALF 106. El filtro de SAO 104 puede configurarse, por ejemplo, para determinar valores de compensación para muestras de un bloque de la manera descrita en esta divulgación. El filtro de ALF/GALF 106 puede configurarse para determinar un conjunto respectivo de filtros de bucle adaptativos, de entre una pluralidad de conjuntos de filtros de bucle adaptativos, por bloque de la imagen actual para bloques en los cuales se usa el filtrado de bucle adaptativo, en donde cada conjunto respectivo de filtros de bucle adaptativos incluye un filtro de bucle adaptativo previo usado en una o más imágenes previas, y filtra mediante bucle adaptativo los bloques de la imagen actual de acuerdo con los conjuntos respectivos de filtros de bucle adaptativos.
La unidad de filtro 92 puede incluir menos filtros y/o puede incluir filtros adicionales. Adicionalmente, los filtros particulares que se muestran en la figura 6 pueden implementarse en un orden diferente. También pueden usarse otros filtros de bucle (ya sea en el bucle de cifrado o después del bucle de cifrado) para suavizar las transiciones de píxeles o mejorar de otro modo la calidad de vídeo. Los bloques de vídeo decodificados en un marco o imagen dados se almacenan entonces en el DPB 94, que almacena imágenes de referencia usadas para la compensación de movimiento subsecuente. El DPB 94 puede ser parte de o estar separado de la memoria adicional que almacena el vídeo decodificado para posterior presentación en un dispositivo de visualización, tal como el dispositivo de visualización 32 de la figura 1.
La figura 7 es un diagrama de flujo que ilustra un método de ejemplo de acuerdo con la invención. Las técnicas de la figura 7 pueden ser realizadas por una o más unidades estructurales del codificador de vídeo 20 y decodificador de vídeo 30, incluyendo la unidad de filtro 64 y unidad de filtro 92. Como se discutió anteriormente, el término "cifrado" se refiere genéricamente tanto a la codificación como decodificación. Asimismo, el término "código" se refiere genéricamente tanto a la codificación como decodificación.
El codificador de vídeo 20 y decodificador de vídeo 30 están configurados para determinar un conjunto respectivo de filtros de bucle adaptativos, de entre una pluralidad de conjuntos de filtros de bucle adaptativos, por bloque de la imagen actual para bloques en los cuales se usa el filtrado de bucle adaptativo, en donde cada conjunto respectivo de filtros de bucle adaptativos incluye un filtro de bucle adaptativo previo usado en una o más imágenes previas (700). Para determinar los conjuntos respectivos de filtros de bucle adaptativos, el codificador de vídeo 20 y decodificador de vídeo 30 están configurados además para cifrar un indicador respectivo por bloque que indica si se usa el filtrado de bucle adaptativo para el bloque respectivo, y cifrar, con base en el indicador respectivo por bloque, un elemento de sintaxis respectivo que indica el conjunto respectivo de filtros de bucle adaptativos, de entre la pluralidad de conjuntos de filtros de bucle adaptativos, por bloque de la imagen actual. El elemento de sintaxis respectivo es un índice de una lista que incluye la pluralidad de conjuntos de filtros de bucle adaptativos. El codificador de vídeo 20 y decodificador de vídeo 30 están configurados además para filtrar mediante bucle adaptativo los bloques de la imagen actual de acuerdo con los respectivos conjuntos de filtros de bucle adaptativos (702).
La figura 8 es un diagrama de flujo que ilustra otro método de ejemplo de acuerdo con la invención. La figura 8 muestra un ejemplo de las técnicas de la figura 7 con más detalle. El codificador de vídeo 20 y decodificador de vídeo 30 están configurados para cifrar un bloque de datos de vídeo en una imagen actual para crear un bloque reconstruido de datos de vídeo (800). Es decir, el codificador de vídeo 20 y decodificador de vídeo 30 pueden estar configurados para cifrar el primer bloque de datos de vídeo en la imagen actual para crear un primer bloque reconstruido de datos de vídeo.
El codificador de vídeo 20 y decodificador de vídeo 30 se configuran entonces para determinar si un indicador de Activación/Desactivación de ALF a nivel de bloque está activado (802). Si no, el codificador de vídeo 20 y decodificador de vídeo 30 no aplican ALF, y en su lugar proceden a cifrar el siguiente bloque de datos de vídeo (810). Si sí, el codificador de vídeo 20 y decodificador de vídeo 30 cifran, para el bloque, un elemento de sintaxis que indica un conjunto de filtros de bucle adaptativos (804). Por ejemplo, el codificador de vídeo 20 y decodificador de vídeo 30 cifran, para el primer bloque de datos de vídeo, un primer elemento de sintaxis que indica un primer conjunto de filtros de bucle adaptativos de entre la pluralidad de conjuntos de filtros de bucle adaptativos.
El codificador de vídeo 20 y decodificador de vídeo 30 determinan entonces un filtro de bucle adaptativo a partir del conjunto de filtros de bucle adaptativos para el bloque cifrado actualmente (806). Por ejemplo, el codificador de vídeo 20 y decodificador de vídeo 30 pueden determinar un primer filtro de bucle adaptativo a partir del primer conjunto de filtros de bucle adaptativos para el primer bloque reconstruido de datos de vídeo. El codificador de vídeo 20 y decodificador de vídeo 30 pueden entonces aplicar el filtro de bucle adaptativo al bloque reconstruido (808). El codificador de vídeo 20 y decodificador de vídeo 30 pueden entonces proceder a cifrar el siguiente bloque de datos de vídeo (810). Por ejemplo, el siguiente bloque de datos de vídeo puede ser un segundo bloque de datos de vídeo. Luego se repite el proceso de la figura 8. Se debe anotar que, al realizar las técnicas de esta divulgación, al determinar el conjunto de filtros de bucle adaptativos para un siguiente bloque de datos de vídeo (por ejemplo, un segundo bloque de datos de vídeo), el conjunto de filtros de bucle adaptativos para el segundo bloque de datos de vídeo puede ser diferente del conjunto de filtros de bucle adaptativos usados para otros bloques de datos de vídeo.
En uno o más ejemplos, las funciones descritas pueden implementarse en hardware, software, firmware, o cualquier combinación de los mismos. Si se implementan en software, las funciones pueden almacenarse en o transmitirse a través de, como una o más instrucciones o código, un medio legible por ordenador y ejecutarse por una unidad de procesamiento basada en hardware. Los medios legibles por ordenador pueden incluir medios de almacenamiento legibles por ordenador, que corresponden a medios tangibles tales como medios de almacenamiento de datos, o medios de comunicación que incluyen cualquier medio que facilite la transferencia de un programa de ordenador de un lugar a otro, por ejemplo, de acuerdo con un protocolo de comunicación. De esta manera, los medios legibles por ordenador generalmente pueden corresponder a (1) medios de almacenamiento tangibles legibles por ordenador que no son transitorios o (2) un medio de comunicación tal como una señal u onda portadora. Los medios de almacenamiento de datos pueden ser cualquier medio disponible al que se pueda acceder por uno o más ordenadores o uno o más procesadores para recuperar instrucciones, código y/o estructuras de datos para la implementación de las técnicas descritas en esta divulgación. Un producto de programa de ordenador puede incluir un medio legible por ordenador.
A modo de ejemplo, y sin limitación, tales medios de almacenamiento legibles por ordenador pueden ser cualquier de RAM, ROM, EEPROM, CD-ROM u otro almacenamiento en disquete óptico, almacenamiento en disquete magnético, u otros dispositivos de almacenamiento magnético, memoria flash, o cualquier otro medio que pueda usarse para almacenar el código de programa deseado en la forma de instrucciones o estructuras de datos y al que se pueda acceder mediante un ordenador. También, cualquier conexión se denomina correctamente un medio legible por ordenador. Por ejemplo, si se transmiten instrucciones desde un sitio web, servidor, u otra fuente remota usando un cable coaxial, cable de fibra óptica, par trenzado, línea de suscriptor digital (DSL), o tecnologías inalámbricas tales como infrarrojos, radio, y microondas, entonces el cable coaxial, cable de fibra óptica, par trenzado, DSL, o tecnologías inalámbricas tales como infrarrojos, radio, y microondas se incluyen en la definición de medio. Sin embargo, debe entenderse que los medios de almacenamiento legibles por ordenador y medios de almacenamiento de datos no incluyen conexiones, ondas portadoras, señales, u otros medios transitorios, sino que en cambio se dirigen a medios de almacenamiento tangibles, no transitorios. Disquete y disco, como se usan en este documento, incluyen disco compacto (CD), disco láser, disco óptico, disco versátil digital (DVD), disquete flexible y disco Blu-ray, donde los disquetes usualmente reproducen datos de manera magnética, mientras que los discos reproducen datos de manera óptica con láseres. Las combinaciones de lo anterior también deben incluirse dentro de los medios legibles por ordenador.
Las instrucciones pueden ser ejecutadas por uno o más procesadores, tales como uno o más procesadores de señales digitales (DSPs), microprocesadores de propósito general, circuitos integrados de aplicación específica (ASICs), arreglos lógicos programables en campo (FPGAs), u otra circuitería lógica integrada o discreta equivalente. Por consiguiente, el término "procesador", como se usa en este documento puede referirse a cualquiera de la estructura anterior o a cualquier otra estructura adecuada para la implementación de las técnicas descritas en este documento. Además, en algunos aspectos, la funcionalidad descrita en este documento puede proporcionarse dentro de módulos de hardware y/o software dedicados configurados para codificar y decodificar, o incorporarse en un códec combinado. También, las técnicas podrían implementarse completamente en uno o más circuitos o elementos lógicos.
Las técnicas de esta divulgación pueden implementarse en una amplia variedad de dispositivos o aparatos, incluyendo un aparato telefónico inalámbrico, un circuito integrado (IC) o un conjunto de ICs (por ejemplo, un conjunto de chips). En esta divulgación se describen diversos componentes, módulos, o unidades para enfatizar aspectos funcionales de dispositivos configurados para realizar las técnicas divulgadas, pero no necesariamente requieren la realización por diferentes unidades de hardware. En cambio, como se describió anteriormente, diversas unidades pueden combinarse en una unidad de hardware de códec o proporcionarse mediante una colección de unidades de hardware interoperativas, incluyendo uno o más procesadores como se describió anteriormente, en conjunto con software y/o firmware adecuados.
Claims (15)
1. Un método de cifrado de datos de vídeo, comprendiendo el método:
determinar una pluralidad de conjuntos de filtros de bucle adaptativos para una sección actual; determinar (700) un conjunto respectivo de filtros de bucle adaptativos, de entre la pluralidad de conjuntos de filtros de bucle adaptativos, por bloque de la sección actual para bloques en los cuales se usa el filtrado de bucle adaptativo, en donde la determinación del conjunto respectivo de filtros de bucle adaptativos comprende: cifrar un elemento de sintaxis respectivo que indica el conjunto respectivo de filtros de bucle adaptativos, de entre la pluralidad de conjuntos de filtros de bucle adaptativos, por bloque de la sección actual en la cual se usa el filtrado de bucle adaptativo,
en donde los bloques de la sección actual son unidades de árbol de cifrado, CTUs, de la sección actual, en donde cada conjunto respectivo de filtros de bucle adaptativos incluye un filtro de bucle adaptativo previo de una o más secciones previas, y
en donde el elemento de sintaxis respectivo es un índice de una lista que incluye la pluralidad de conjuntos de filtros de bucle adaptativos; y
filtrar mediante bucle adaptativo (702) los bloques de la sección actual de acuerdo con los respectivos conjuntos de filtros de bucle adaptativos.
2. El método de la reivindicación 1, que comprende además:
cifrar un indicador respectivo por bloque que indique si se usa el filtrado de bucle adaptativo para el bloque respectivo; o
cifrar un indicador respectivo por grupo de bloques que indique si se usa el filtrado de bucle adaptativo para cada bloque en el grupo de bloques respectivo; y/o
determinar si se usa filtrado de bucle adaptativo para cada bloque, o para cada bloque en un grupo de bloques con base en uno o más de:
un número de bloques en un grupo de bloques que tienen indicadores de bloque cifrados, CBFs, de no cero un número de coeficientes de transformada de no cero,
un número de bloques en un grupo de bloques cifrados en un modo particular, y
un número de bloques en un grupo de bloques cifrados con modo de omisión.
3. El método de la reivindicación 1, en donde
cada conjunto respectivo de filtros de bucle adaptativos incluye además uno o más de un filtro de bucle adaptativo actual señalado para la sección actual o un filtro de bucle adaptativo preentrenado.
4. El método de la reivindicación 1, que comprende además:
agregar filtros de bucle adaptativos a cada conjunto respectivo de filtros de bucle adaptativos de tal manera que:
cualquier filtro de bucle adaptativo actual señalado para la sección actual se agregue primero, cualquier filtro de bucle adaptativo previo se agregue en segundo lugar, y
cualquier filtro de bucle adaptativo preentrenado se agregue en último lugar; y
en donde los filtros de bucle adaptativos actuales señalados para la sección actual tienen un valor de índice más bajo en una lista de conjuntos de filtros y/o
cifrar, para la sección actual, uno o más elementos de sintaxis que indican un filtro de bucle adaptativo actual para la sección actual.
5. El método de la reivindicación 1, en donde los respectivos conjuntos de filtros de bucle adaptativos incluyen respectivos filtros de bucle adaptativos asignados a cada clase de una pluralidad de clases.
6. El método de la reivindicación 1, en donde la determinación del conjunto respectivo de filtros de bucle adaptativos comprende
cifrar, para un primer bloque de datos de vídeo, un primer elemento de sintaxis que indica un primer conjunto de filtros de bucle adaptativos de entre la pluralidad de conjuntos de filtros de bucle adaptativos, y cifrar, para un segundo bloque de datos de vídeo, un segundo elemento de sintaxis que indica un segundo conjunto de filtros de bucle adaptativos de entre la pluralidad de conjuntos de filtros de bucle adaptativos, en donde el segundo conjunto de filtros de bucle adaptativos es diferente del primer conjunto de filtros de bucle adaptativos, comprendiendo además el método:
cifrar el primer bloque de datos de vídeo en la sección actual para crear un primer bloque reconstruido de datos de vídeo;
determinar un primer filtro de bucle adaptativo a partir del primer conjunto de filtros de bucle adaptativos para el primer bloque reconstruido de datos de vídeo;
aplicar el primer filtro de bucle adaptativo al primer bloque reconstruido de datos de vídeo;
cifrar el segundo bloque de datos de vídeo en la sección actual para crear un segundo bloque reconstruido de datos de vídeo;
determinar un segundo filtro de bucle adaptativo a partir del segundo conjunto de filtros de bucle adaptativos para el segundo bloque reconstruido de datos de vídeo; y
aplicar el segundo filtro de bucle adaptativo al segundo bloque reconstruido de datos de vídeo.
7. El método de la reivindicación 1, en donde el cifrado comprende codificación, comprendiendo además el método:
capturar la sección actual de una imagen con una cámara; o
en donde el cifrado comprende decodificación, comprendiendo además el método:
mostrar la sección actual de una imagen.
8. Un aparato (12; 14) configurado para cifrar datos de vídeo, comprendiendo el aparato:
una memoria configurada para almacenar una sección actual de datos de vídeo; y
uno o más procesadores (20; 30) en comunicación con la memoria, el uno o más procesadores configurados para:
determinar una pluralidad de conjuntos de filtros de bucle adaptativos para la sección actual; determinar un conjunto respectivo de filtros de bucle adaptativos, de entre la pluralidad de conjuntos de filtros de bucle adaptativos, por bloque de la sección actual para bloques en los cuales se usa el filtrado de bucle adaptativo, en donde para determinar el conjunto respectivo de filtros de bucle adaptativos, el uno o más procesadores están configurados además para:
cifrar un elemento de sintaxis respectivo que indica el conjunto respectivo de filtros de bucle adaptativos, de entre la pluralidad de conjuntos de filtros de bucle adaptativos, por bloque de la sección actual en la cual se usa el filtrado de bucle adaptativo,
en donde los bloques de la sección actual son unidades de árbol de cifrado, CTUs, de la sección actual, en donde cada conjunto respectivo de filtros de bucle adaptativos incluye un filtro de bucle adaptativo previo de una o más secciones previas, y
en donde el elemento de sintaxis respectivo es un índice de una lista que incluye la pluralidad de conjuntos de filtros de bucle adaptativos; y
filtrar mediante bucle adaptativo los bloques de la sección actual de acuerdo con los conjuntos respectivos de filtros de bucle adaptativos.
9. El aparato de la reivindicación 8, en donde el uno o más procesadores están configurados además para: cifrar un indicador respectivo por bloque que indica si se usa el filtrado de bucle adaptativo para el bloque respectivo; o
cifrar un indicador respectivo por grupo de bloques que indica si se usa filtrado de bucle adaptativo para cada bloque en el grupo respectivo de bloques; y/o
en donde el uno o más procesadores están configurados además para:
determinar si se usa filtrado de bucle adaptativo para cada bloque, o para cada bloque en un grupo de bloques con base en uno o más de:
un número de bloques en un grupo de bloques que tienen indicadores de bloque cifrados, CBFs, de no cero un número de coeficientes de transformada de no cero,
un número de bloques en un grupo de bloques cifrados en un modo particular, y
un número de bloques en un grupo de bloques cifrados con modo de salto.
10. El aparato de la reivindicación 8, en donde:
cada conjunto respectivo de filtros de bucle adaptativos incluye además uno o más de un filtro de bucle adaptativo actual señalado para la sección actual o un filtro de bucle adaptativo preentrenado.
11. El aparato de la reivindicación 8, en donde el uno o más procesadores están configurados además para: agregar filtros de bucle adaptativos a cada conjunto respectivo de filtros de bucle adaptativos de tal manera que
cualquier filtro de bucle adaptativo actual señalado para la sección actual se agregue primero, cualquier filtro de bucle adaptativo previo se agregue en segundo lugar, y
cualquier filtro de bucle adaptativo preentrenado se agregue en último lugar; y
en donde los filtros de bucle adaptativos actuales señalados para la sección actual tienen un valor de índice más bajo en una lista de conjuntos de filtros; y/o
en donde el uno o más procesadores están configurados además para:
cifrar, para la sección actual, uno o más elementos de sintaxis que indican un filtro de bucle adaptativo actual para la sección actual.
12. El aparato de la reivindicación 8, en donde los respectivos conjuntos de filtros de bucle adaptativos incluyen respectivos filtros de bucle adaptativos asignados a cada clase de una pluralidad de clases.
13. El aparato de la reivindicación 8, en donde para determinar el conjunto respectivo de filtros de bucle adaptativos, el uno o más procesadores están configurados además para
cifrar, para un primer bloque de datos de vídeo, un primer elemento de sintaxis que indica un primer conjunto de filtros de bucle adaptativos de entre la pluralidad de conjuntos de filtros de bucle adaptativos, y cifrar, para un segundo bloque de datos de vídeo, un segundo elemento de sintaxis que indica un segundo conjunto de filtros de bucle adaptativos de entre la pluralidad de conjuntos de filtros de bucle adaptativos, en donde el segundo conjunto de filtros de bucle adaptativos es diferente del primer conjunto de filtros de bucle adaptativos, y en donde el uno o más procesadores están configurados además para:
cifrar el primer bloque de datos de vídeo en la sección actual para crear un primer bloque reconstruido de datos de vídeo;
determinar un primer filtro de bucle adaptativo a partir del primer conjunto de filtros de bucle adaptativos para el primer bloque reconstruido de datos de vídeo;
aplicar el primer filtro de bucle adaptativo al primer bloque reconstruido de datos de vídeo;
cifrar el segundo bloque de datos de vídeo en la sección actual para crear un segundo bloque reconstruido de datos de vídeo;
determinar un segundo filtro de bucle adaptativo a partir del segundo conjunto de filtros de bucle adaptativos para el segundo bloque reconstruido de datos de vídeo; y
aplicar el segundo filtro de bucle adaptativo al segundo bloque reconstruido de datos de vídeo.
14. El aparato de la reivindicación 8, en donde para cifrar el uno o más procesadores están configurados para codificar, comprendiendo además el aparato:
Una cámara configurada para capturar la sección actual de una imagen; o
en donde para cifrar el uno o más procesadores están configurados para decodificar, comprendiendo además el aparato:
una pantalla configurada para mostrar la sección actual de una imagen.
15. Un medio de almacenamiento legible por ordenador no transitorio que almacena instrucciones que, cuando se ejecutan, hacen que uno o más procesadores:
determinen una pluralidad de conjuntos de filtros de bucle adaptativos para una sección actual; determinen un conjunto respectivo de filtros de bucle adaptativos, de entre la pluralidad de conjuntos de filtros de bucle adaptativos, por bloque de la sección actual para bloques en los cuales se usa el filtrado de bucle adaptativo, en donde determinar el conjunto respectivo de filtros de bucle adaptativos comprende: cifrar un elemento de sintaxis respectivo que indica el conjunto respectivo de filtros de bucle adaptativos, de entre la pluralidad de conjuntos de filtros de bucle adaptativos, por bloque de la sección actual en la cual se usa el filtrado de bucle adaptativo,
en donde los bloques de la sección actual son unidades de árbol de cifrado, CTUs, de la sección actual, en donde cada conjunto respectivo de filtros de bucle adaptativos incluye un filtro de bucle adaptativo previo de una o más secciones previas,
en donde el elemento de sintaxis respectivo es un índice de una lista que incluye la pluralidad de conjuntos de filtros de bucle adaptativos; y
filtrar mediante bucle adaptativo los bloques de la sección actual de acuerdo con los conjuntos respectivos de filtros de bucle adaptativos.
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US201862679685P | 2018-06-01 | 2018-06-01 | |
| US16/427,017 US11451773B2 (en) | 2018-06-01 | 2019-05-30 | Block-based adaptive loop filter (ALF) design and signaling |
| PCT/US2019/034964 WO2019232412A1 (en) | 2018-06-01 | 2019-05-31 | Block-based adaptive loop filter (alf) design and signaling |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| ES3001093T3 true ES3001093T3 (es) | 2025-03-04 |
Family
ID=68693391
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| ES19732509T Active ES3001093T3 (es) | 2018-06-01 | 2019-05-31 | Diseño y señalización de filtro de bucle adaptativo (ALF) basado en bloques |
Country Status (20)
| Country | Link |
|---|---|
| US (1) | US11451773B2 (es) |
| EP (1) | EP3804337B1 (es) |
| JP (1) | JP7422684B2 (es) |
| KR (1) | KR102852851B1 (es) |
| CN (1) | CN112243587B (es) |
| AU (1) | AU2019278991B2 (es) |
| BR (1) | BR112020024520A2 (es) |
| CA (1) | CA3099795A1 (es) |
| CL (1) | CL2020003085A1 (es) |
| CO (1) | CO2020014698A2 (es) |
| ES (1) | ES3001093T3 (es) |
| IL (1) | IL278482B2 (es) |
| MX (1) | MX2020012846A (es) |
| MY (1) | MY206052A (es) |
| PH (1) | PH12020551866A1 (es) |
| PL (1) | PL3804337T3 (es) |
| SA (1) | SA520420639B1 (es) |
| SG (1) | SG11202010952XA (es) |
| TW (1) | TWI827609B (es) |
| WO (1) | WO2019232412A1 (es) |
Families Citing this family (31)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US9210426B2 (en) * | 2011-06-30 | 2015-12-08 | Mitsubishi Electric Corporation | Image coding device, image decoding device, image coding method, and image decoding method |
| US11140418B2 (en) | 2018-07-17 | 2021-10-05 | Qualcomm Incorporated | Block-based adaptive loop filter design and signaling |
| TWI692939B (zh) * | 2018-08-14 | 2020-05-01 | 鈺創科技股份有限公司 | 過濾訊號的數位濾波器 |
| US11284075B2 (en) | 2018-09-12 | 2022-03-22 | Qualcomm Incorporated | Prediction of adaptive loop filter parameters with reduced memory consumption for video coding |
| US11051017B2 (en) | 2018-12-20 | 2021-06-29 | Qualcomm Incorporated | Adaptive loop filter (ALF) index signaling |
| US11910024B2 (en) | 2019-03-11 | 2024-02-20 | Qualcomm Incorporated | Boundary handling for adaptive loop filtering |
| US11159791B2 (en) * | 2019-03-16 | 2021-10-26 | Mediatek Inc. | Method and apparatus for signaling adaptive loop filter parameters in video coding |
| US11683487B2 (en) | 2019-03-26 | 2023-06-20 | Qualcomm Incorporated | Block-based adaptive loop filter (ALF) with adaptive parameter set (APS) in video coding |
| US11284114B2 (en) | 2019-04-23 | 2022-03-22 | Qualcomm Incorporated | Adaptive loop filter set index signaling |
| CN118138754A (zh) | 2019-06-14 | 2024-06-04 | 北京字节跳动网络技术有限公司 | 处理视频单元边界和虚拟边界 |
| KR102669852B1 (ko) * | 2019-07-09 | 2024-05-29 | 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 | 적응적 루프 필터링을 위한 샘플 결정 |
| KR102707854B1 (ko) | 2019-07-15 | 2024-09-23 | 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 | 적응적 루프 필터링에서의 분류 |
| CN112449183B (zh) * | 2019-09-03 | 2023-05-09 | 联咏科技股份有限公司 | 视频编码器、视频解码器以及视频系统 |
| CN117278747A (zh) | 2019-09-22 | 2023-12-22 | 北京字节跳动网络技术有限公司 | 自适应环路滤波中的填充过程 |
| KR102762212B1 (ko) | 2019-10-10 | 2025-02-07 | 두인 비전 컴퍼니 리미티드 | 적응적 루프 필터링에서 이용 불가능한 샘플 위치들에서의 패딩 프로세스 |
| WO2021122070A1 (en) * | 2019-12-19 | 2021-06-24 | Telefonaktiebolaget Lm Ericsson (Publ) | Picture header prediction |
| IL294258B2 (en) * | 2019-12-23 | 2026-04-01 | Huawei Tech Co Ltd | Cross-component adaptive loop filtering and video coding |
| US11303892B2 (en) * | 2020-01-23 | 2022-04-12 | Qualcomm Incorporated | Adaptive rounding for loop filters |
| IL295013B2 (en) | 2020-01-24 | 2026-04-01 | Huawei Tech Co Ltd | Encoder, decoder and matching methods for adaptive loop filtering |
| US11516514B2 (en) * | 2020-03-27 | 2022-11-29 | Tencent America LLC | High level control for deblocking operations |
| CN113824956B (zh) * | 2020-08-24 | 2022-12-23 | 杭州海康威视数字技术股份有限公司 | 滤波方法、装置、设备及机器可读存储介质 |
| CN117178550A (zh) * | 2021-03-30 | 2023-12-05 | 瑞典爱立信有限公司 | 组合环路滤波 |
| US20230085391A1 (en) * | 2021-09-13 | 2023-03-16 | Apple Inc. | Systems and Methods for Luma or Chroma Statistics Collection |
| CN116456086A (zh) * | 2022-01-07 | 2023-07-18 | 腾讯科技(深圳)有限公司 | 环路滤波方法、视频编解码方法、装置、介质及电子设备 |
| CN116962688A (zh) * | 2022-04-20 | 2023-10-27 | 腾讯科技(深圳)有限公司 | 环路滤波方法、视频编解码方法、装置、介质及电子设备 |
| CN120035997A (zh) * | 2022-08-04 | 2025-05-23 | 抖音视界有限公司 | 用于视频处理的方法、装置和介质 |
| WO2024119191A1 (en) * | 2022-12-03 | 2024-06-06 | Beijing Dajia Internet Information Technology Co., Ltd. | Methods and devices for adaptive loop filtering and cross-component adaptive loop filter |
| WO2024094071A1 (en) * | 2022-11-01 | 2024-05-10 | Douyin Vision Co., Ltd. | Using side information for adaptive loop filter in video coding |
| WO2024147679A1 (ko) * | 2023-01-04 | 2024-07-11 | 한국전자통신연구원 | 영상 부호화/복호화를 위한 방법, 장치 및 기록 매체 |
| WO2026010342A1 (ko) * | 2024-07-02 | 2026-01-08 | 삼성전자 주식회사 | 영상의 필터링 장치 및 방법 |
| WO2026008042A1 (en) * | 2024-07-05 | 2026-01-08 | Mediatek Inc. | Method and apparatus of fixed filter set selection of adaptive loop filter in video coding |
Family Cites Families (27)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8811484B2 (en) | 2008-07-07 | 2014-08-19 | Qualcomm Incorporated | Video encoding by filter selection |
| US8548041B2 (en) * | 2008-09-25 | 2013-10-01 | Mediatek Inc. | Adaptive filter |
| JP2011151431A (ja) * | 2009-12-25 | 2011-08-04 | Sony Corp | 画像処理装置および方法 |
| JP5436695B2 (ja) * | 2010-01-14 | 2014-03-05 | ドルビー ラボラトリーズ ライセンシング コーポレイション | ビデオ適応フィルタリングのための方法、システム、ビデオエンコーダ、ビデオデコーダ、コンピュータ装置、集積回路(ic)装置、及びコンピュータ読取可能な記録媒体 |
| US9094658B2 (en) * | 2010-05-10 | 2015-07-28 | Mediatek Inc. | Method and apparatus of adaptive loop filtering |
| US20120039383A1 (en) * | 2010-08-12 | 2012-02-16 | Mediatek Inc. | Coding unit synchronous adaptive loop filter flags |
| US9819966B2 (en) | 2010-09-01 | 2017-11-14 | Qualcomm Incorporated | Filter description signaling for multi-filter adaptive filtering |
| US9813738B2 (en) * | 2010-10-05 | 2017-11-07 | Hfi Innovation Inc. | Method and apparatus of adaptive loop filtering |
| US9681132B2 (en) * | 2010-11-24 | 2017-06-13 | Thomson Licensing Dtv | Methods and apparatus for adaptive loop filtering in video encoders and decoders |
| US9445126B2 (en) | 2011-01-05 | 2016-09-13 | Qualcomm Incorporated | Video filtering using a combination of one-dimensional switched filter and one-dimensional adaptive filter |
| US20120177104A1 (en) * | 2011-01-12 | 2012-07-12 | Madhukar Budagavi | Reduced Complexity Adaptive Loop Filter (ALF) for Video Coding |
| US8964853B2 (en) | 2011-02-23 | 2015-02-24 | Qualcomm Incorporated | Multi-metric filtering |
| WO2012142966A1 (en) * | 2011-04-21 | 2012-10-26 | Mediatek Inc. | Method and apparatus for improved in-loop filtering |
| US20120294353A1 (en) | 2011-05-16 | 2012-11-22 | Mediatek Inc. | Apparatus and Method of Sample Adaptive Offset for Luma and Chroma Components |
| US9277228B2 (en) * | 2011-07-18 | 2016-03-01 | Qualcomm Incorporated | Adaptation parameter sets for video coding |
| US9485521B2 (en) * | 2011-09-19 | 2016-11-01 | Lg Electronics Inc. | Encoding and decoding image using sample adaptive offset with start band indicator |
| US9357235B2 (en) | 2011-10-13 | 2016-05-31 | Qualcomm Incorporated | Sample adaptive offset merged with adaptive loop filter in video coding |
| US20130114694A1 (en) * | 2011-11-08 | 2013-05-09 | Qualcomm Incorporated | Parameter set groups for coded video data |
| WO2013113997A1 (en) * | 2012-02-01 | 2013-08-08 | Nokia Corporation | Method and apparatus for video coding |
| US9596463B2 (en) * | 2012-02-22 | 2017-03-14 | Qualcomm Incorporated | Coding of loop filter parameters using a codebook in video coding |
| US10057574B2 (en) * | 2015-02-11 | 2018-08-21 | Qualcomm Incorporated | Coding tree unit (CTU) level adaptive loop filter (ALF) |
| EP3453174B1 (en) | 2016-05-06 | 2024-11-27 | InterDigital Madison Patent Holdings, SAS | Method and system for decoder-side intra mode derivation for block-based video coding |
| US10419755B2 (en) * | 2016-05-16 | 2019-09-17 | Qualcomm Incorporated | Confusion of multiple filters in adaptive loop filtering in video coding |
| WO2018122092A1 (en) | 2016-12-30 | 2018-07-05 | Telefonaktiebolaget Lm Ericsson (Publ) | Methods, apparatus, and computer programs for decoding media |
| US10506230B2 (en) | 2017-01-04 | 2019-12-10 | Qualcomm Incorporated | Modified adaptive loop filter temporal prediction for temporal scalability support |
| ES3062819T3 (en) * | 2017-10-06 | 2026-04-14 | Panasonic Ip Corp America | Encoding device |
| US11284075B2 (en) | 2018-09-12 | 2022-03-22 | Qualcomm Incorporated | Prediction of adaptive loop filter parameters with reduced memory consumption for video coding |
-
2019
- 2019-05-30 US US16/427,017 patent/US11451773B2/en active Active
- 2019-05-31 BR BR112020024520-8A patent/BR112020024520A2/pt unknown
- 2019-05-31 TW TW108119088A patent/TWI827609B/zh active
- 2019-05-31 MX MX2020012846A patent/MX2020012846A/es unknown
- 2019-05-31 KR KR1020207034314A patent/KR102852851B1/ko active Active
- 2019-05-31 EP EP19732509.5A patent/EP3804337B1/en active Active
- 2019-05-31 MY MYPI2020005783A patent/MY206052A/en unknown
- 2019-05-31 SG SG11202010952XA patent/SG11202010952XA/en unknown
- 2019-05-31 JP JP2020566603A patent/JP7422684B2/ja active Active
- 2019-05-31 ES ES19732509T patent/ES3001093T3/es active Active
- 2019-05-31 AU AU2019278991A patent/AU2019278991B2/en active Active
- 2019-05-31 CA CA3099795A patent/CA3099795A1/en active Pending
- 2019-05-31 PL PL19732509.5T patent/PL3804337T3/pl unknown
- 2019-05-31 WO PCT/US2019/034964 patent/WO2019232412A1/en not_active Ceased
- 2019-05-31 IL IL278482A patent/IL278482B2/en unknown
- 2019-05-31 CN CN201980036216.4A patent/CN112243587B/zh active Active
-
2020
- 2020-11-04 PH PH12020551866A patent/PH12020551866A1/en unknown
- 2020-11-25 SA SA520420639A patent/SA520420639B1/ar unknown
- 2020-11-27 CO CONC2020/0014698A patent/CO2020014698A2/es unknown
- 2020-11-27 CL CL2020003085A patent/CL2020003085A1/es unknown
Also Published As
| Publication number | Publication date |
|---|---|
| SA520420639B1 (ar) | 2024-10-13 |
| MY206052A (en) | 2024-11-27 |
| CN112243587B (zh) | 2023-01-31 |
| IL278482A (en) | 2020-12-31 |
| JP2021525981A (ja) | 2021-09-27 |
| KR102852851B1 (ko) | 2025-08-29 |
| WO2019232412A1 (en) | 2019-12-05 |
| PL3804337T3 (pl) | 2025-03-24 |
| AU2019278991A1 (en) | 2020-12-03 |
| SG11202010952XA (en) | 2020-12-30 |
| MX2020012846A (es) | 2021-02-18 |
| BR112020024520A2 (pt) | 2021-03-02 |
| TW202005399A (zh) | 2020-01-16 |
| EP3804337C0 (en) | 2024-11-27 |
| CN112243587A (zh) | 2021-01-19 |
| JP7422684B2 (ja) | 2024-01-26 |
| AU2019278991B2 (en) | 2022-11-24 |
| US20190373258A1 (en) | 2019-12-05 |
| KR20210015819A (ko) | 2021-02-10 |
| TWI827609B (zh) | 2024-01-01 |
| CO2020014698A2 (es) | 2020-12-10 |
| EP3804337B1 (en) | 2024-11-27 |
| CL2020003085A1 (es) | 2021-06-11 |
| US11451773B2 (en) | 2022-09-20 |
| PH12020551866A1 (en) | 2021-07-19 |
| IL278482B1 (en) | 2024-05-01 |
| IL278482B2 (en) | 2024-09-01 |
| EP3804337A1 (en) | 2021-04-14 |
| CA3099795A1 (en) | 2019-12-05 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| ES3001093T3 (es) | Diseño y señalización de filtro de bucle adaptativo (ALF) basado en bloques | |
| ES3053322T3 (en) | Block-based adaptive loop filter (alf) with adaptive parameter set (aps) in video coding | |
| US10887604B2 (en) | Signalling of filtering information | |
| US10419757B2 (en) | Cross-component filter | |
| US10419755B2 (en) | Confusion of multiple filters in adaptive loop filtering in video coding | |
| US10484712B2 (en) | Implicit coding of reference line index used in intra prediction | |
| US10623737B2 (en) | Peak sample adaptive offset | |
| US11051017B2 (en) | Adaptive loop filter (ALF) index signaling | |
| AU2018212665A1 (en) | Bilateral filters in video coding with reduced complexity | |
| KR20200139163A (ko) | 각도 모드들로 연장된 포지션 종속 인트라 예측 결합 | |
| KR102309353B1 (ko) | 무분할 양방향 필터 | |
| WO2019200277A1 (en) | Hardware-friendly sample adaptive offset (sao) and adaptive loop filter (alf) for video coding | |
| US20190373292A1 (en) | In-loop bilateral filter type decision based on block information |