ES2988839T3 - Método y aparato de modelización lineal de componentes cruzados para intrapredicción - Google Patents
Método y aparato de modelización lineal de componentes cruzados para intrapredicción Download PDFInfo
- Publication number
- ES2988839T3 ES2988839T3 ES19907489T ES19907489T ES2988839T3 ES 2988839 T3 ES2988839 T3 ES 2988839T3 ES 19907489 T ES19907489 T ES 19907489T ES 19907489 T ES19907489 T ES 19907489T ES 2988839 T3 ES2988839 T3 ES 2988839T3
- Authority
- ES
- Spain
- Prior art keywords
- video
- value
- unit
- maximum
- difference
- 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
- 238000000034 method Methods 0.000 title claims abstract description 74
- 241000023320 Luma <angiosperm> Species 0.000 claims abstract description 59
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 claims abstract description 59
- 238000012545 processing Methods 0.000 claims description 59
- 238000004364 calculation method Methods 0.000 claims description 14
- 238000013139 quantization Methods 0.000 description 76
- 230000006854 communication Effects 0.000 description 33
- 238000004891 communication Methods 0.000 description 33
- 238000009826 distribution Methods 0.000 description 26
- 238000005192 partition Methods 0.000 description 26
- 239000013598 vector Substances 0.000 description 23
- 239000000872 buffer Substances 0.000 description 20
- 230000008569 process Effects 0.000 description 20
- 238000000638 solvent extraction Methods 0.000 description 19
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 description 18
- 230000005540 biological transmission Effects 0.000 description 17
- 238000010586 diagram Methods 0.000 description 16
- 230000006870 function Effects 0.000 description 13
- 230000006835 compression Effects 0.000 description 9
- 238000007906 compression Methods 0.000 description 9
- 230000009466 transformation Effects 0.000 description 9
- 230000003044 adaptive effect Effects 0.000 description 8
- 238000009795 derivation Methods 0.000 description 8
- 238000001914 filtration Methods 0.000 description 7
- 230000001360 synchronised effect Effects 0.000 description 7
- 238000013500 data storage Methods 0.000 description 5
- 238000007781 pre-processing Methods 0.000 description 5
- 230000002123 temporal effect Effects 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 230000000295 complement effect Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000003287 optical effect 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
- 101150114515 CTBS gene Proteins 0.000 description 2
- 230000002146 bilateral effect Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 230000006837 decompression Effects 0.000 description 2
- 230000007423 decrease Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 238000012952 Resampling Methods 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000007175 bidirectional communication Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000009499 grossing Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012417 linear regression Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
- 238000009966 trimming Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/593—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/103—Selection of coding mode or of prediction mode
- H04N19/105—Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
-
- 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/136—Incoming video signal characteristics or properties
- H04N19/14—Coding unit complexity, e.g. amount of activity or edge presence estimation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/157—Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/167—Position within a video image, e.g. region of interest [ROI]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/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/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/186—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
-
- 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/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
- H04N19/423—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
Se proporcionan aparatos y métodos para codificar y decodificar. El método para predecir intra una muestra de croma de un bloque mediante la aplicación de un modelo lineal de componentes cruzados incluye: obtener muestras de luma reconstruidas; determinar valores máximos y mínimos de muestra de luma en función de las muestras de luma reconstruidas; obtener una diferencia de los valores máximos y mínimos de muestra de luma. El método también incluye: obtener un valor de una tabla de búsqueda (LUT) mediante el uso de un conjunto de bits como índice, el conjunto de bits que sigue a una posición del bit más significativo; obtener parámetros de modelo lineal en función del valor obtenido; y calcular un valor de muestra de croma predicho mediante el uso de los parámetros de modelo lineal obtenidos. Se aumenta la eficiencia para obtener el valor de la LUT. (Traducción automática con Google Translate, sin valor legal)
Description
DESCRIPCIÓN
Método y aparato de modelización lineal de componentes cruzados para intrapredicción
Campo técnico
Las realizaciones de la presente solicitud (divulgación) se relacionan en general con el campo del procesamiento de imágenes y más particularmente con la intrapredicción utilizando modelado lineal de componentes cruzados.
Antecedentes
El codificado de vídeo (codificación y decodificación de vídeo) se utiliza en una amplia gama de aplicaciones de vídeo digital, por ejemplo, transmisión de TV digital, transmisión de vídeo a través de Internet y redes móviles, aplicaciones de conversación en tiempo real como videochat, videoconferencia, discos DVD y Bluray, sistemas de adquisición y edición de contenido de vídeo y videocámaras para aplicaciones de seguridad. La cantidad de datos de vídeo necesarios para representar incluso un vídeo relativamente corto puede ser sustancial, lo que puede generar dificultades cuando los datos se van a transmitir o se comunicar de otro modo a través de una red de comunicaciones con capacidad de ancho de banda limitada. Por lo tanto, los datos de vídeo generalmente se comprimen antes de comunicarse a través de las redes de telecomunicaciones modernas. El tamaño de un vídeo también podría ser un problema cuando el vídeo se almacena en un dispositivo de almacenamiento debido a que los recursos de memoria pueden ser limitados. Los dispositivos de compresión de vídeo a menudo usan software y/o hardware en la fuente para codificar los datos de vídeo antes de la transmisión o el almacenamiento, lo que reduce la cantidad de datos necesarios para representar imágenes de vídeo digital. Luego, los datos comprimidos son recibidos en el destino por un dispositivo de descompresión de vídeo que decodifica los datos de vídeo. Con recursos de la red limitados y demandas cada vez mayores de mayor calidad de vídeo, son deseables técnicas mejoradas de compresión y descompresión que mejoren la relación de compresión con poco o ningún sacrificio en la calidad de imagen.
El documento de GUILLAUME LAROCHE ET AL: "CE3-5.1 Cross-component linear model simplification", EQUIPO DE COLABORACIÓN CONJUNTO SOBRE CODIFICACIÓN DE VÍDEO DE ISO/IEC JTC1/SC29/WG11 Y ITU-T SG.16, n.° JVET-L0191 12 de octubre de 2018 (2018-10-12), páginas 1-4, XP030250267 divulga una simplificación del modelo lineal entre componentes.
El documento de HSU JET AL: "Simplified Parameter Calculation for Chroma LM Mode", 9. REUNIÓN JCT-VC; 20120427 - 20120507; GINEBRA; (EQUIPO DE COLABORACIÓN CONJUNTO SOBRE codificado de vídeo DE ISO/IEC JTC1/SC29/WG11 Y ITU-T SG.16), n.° JCTVC-10166 28 de abril de 2012 (2012-04-28), XP030233809 divulga un cálculo de parámetros simplificado para el modo Chroma LM.
El documento US 2017/221183 proporciona un método para filtrar ruido para formación de imágenes que incluye recibir un fotograma de imagen que tiene datos de posición e intervalo.
El documento US 2015/100612 proporciona un método y un aparato para procesar cálculos numéricos. Compendio
Las realizaciones de la presente solicitud proporcionan aparatos y métodos para codificar y decodificar según las reivindicaciones independientes. La invención se expone en el conjunto de reivindicaciones adjuntas. Los objetos anteriores y otros se logran mediante la materia de asunto de las reivindicaciones independientes. Formas de implementación adicionales son evidentes a partir de las reivindicaciones dependientes, la descripción y las figuras.
Los detalles de una o más realizaciones se exponen en los dibujos adjuntos y la descripción que sigue. Otras características, objetos y ventajas serán evidentes en función de la descripción, los dibujos y las reivindicaciones.
Breve descripción de los dibujos
A continuación se describen realizaciones de la invención con más detalle con referencia a las figuras y dibujos adjuntos, en los que:
FIG. 1A es un diagrama de bloques que muestra un ejemplo de un sistema de codificado de vídeo configurado para implementar realizaciones de la invención;
FIG. 1B es un diagrama de bloques que muestra otro ejemplo de un sistema de codificado de vídeo configurado para implementar realizaciones de la invención;
FIG. 2 es un diagrama de bloques que muestra un ejemplo de un codificador de vídeo configurado para implementar realizaciones de la invención;
FIG. 3 es un diagrama de bloques que muestra una estructura de ejemplo de un decodificador de vídeo configurado para implementar realizaciones de la invención;
FIG. 4 es un diagrama de bloques que ilustra un ejemplo de un aparato de codificación o un aparato de decodificación;
FIG. 5 es un diagrama de bloques que ilustra otro ejemplo de un aparato de codificación o un aparato de decodificación;
FIG. 6 es un dibujo que ilustra un concepto de modelo lineal de componentes cruzados para la intrapredicción de croma;
FIG. 7 es un dibujo que ilustra un método simplificado de derivación de parámetros de modelos lineales; FIG. 8 es un dibujo que ilustra la distribución de probabilidad de ocurrencia de la diferencia entre los valores máximos y mínimos de las muestras de luma de referencia;
FIG. 9 es un diagrama de flujo que ilustra un proceso ejemplar de generación de una tabla de búsqueda según una realización de la invención;
FIG. 10 es un dibujo con diagramas de flujo que ilustran una realización de la derivación de índice para la tabla de búsqueda ejemplar;
FIG. 11 es un diagrama de flujo que ilustra una intrapredicción ejemplar de una muestra de croma de un bloque mediante la aplicación de un modelo lineal de componentes cruzados;
FIG. 12 es un diagrama de bloques que muestra una estructura de ejemplo de un aparato para la intrapredicción de una muestra de croma de un bloque mediante la aplicación de un modelo lineal de componentes cruzados;
FIG. 13 es un diagrama de bloques que muestra una estructura de ejemplo de un sistema de suministro de contenido 3100 que realiza un servicio de entrega de contenido; y
FIG. 14 es un diagrama de bloques que muestra la estructura de un ejemplo de un dispositivo terminal. En lo que sigue, los signos de referencia idénticos se refieren a características idénticas o al menos funcionalmente equivalentes, a menos que se especifique explícitamente lo contrario.
Descripción detallada de las realizaciones
En la siguiente descripción, se hace referencia a las figuras adjuntas, que forman parte de la divulgación, y que muestran, a modo de ilustración, aspectos específicos de realizaciones de la invención o aspectos específicos en los que se pueden usar las realizaciones de la presente invención. Se entiende que las realizaciones de la invención se pueden usar en otros aspectos y comprenden cambios estructurales o lógicos no representados en las figuras. Por lo tanto, la siguiente descripción detallada no debe tomarse en un sentido limitado, y el alcance de la presente invención se define mediante las reivindicaciones adjuntas.
Por ejemplo, se entiende que una divulgación en relación con un método descrito también puede ser válida para un dispositivo o sistema correspondiente configurado para realizar el método y viceversa. Por ejemplo, si se describe una o una pluralidad de etapas de método específicas, un dispositivo correspondiente puede incluir una o una pluralidad de unidades, por ejemplo, unidades funcionales, para realizar la una o la pluralidad de etapas de método descritas (por ejemplo, una unidad que realiza la una o la pluralidad de etapas, o una pluralidad de unidades, cada una de las cuales realiza uno o más de la pluralidad de etapas), incluso si tales una o más unidades no se describen o ilustran explícitamente en las figuras. Por otro lado, por ejemplo, si un aparato específico se describe en función de una o una pluralidad de unidades, por ejemplo, unidades funcionales, un método correspondiente puede incluir una etapa para realizar la funcionalidad de la una o la pluralidad de unidades (por ejemplo, una etapa que realiza la funcionalidad de la una o la pluralidad de unidades, o una pluralidad de etapas, cada una de las cuales realiza la funcionalidad de una o más de la pluralidad de unidades), incluso si tal una o pluralidad de etapas no se describen o ilustran explícitamente en las figuras. Además, se entiende que las características de las diversas realizaciones ejemplares y/o los aspectos descritos en la presente memoria pueden combinarse entre sí, a menos que se indique específicamente lo contrario.
El codificado de vídeo generalmente se refiere al procesamiento de una secuencia de imágenes, que forman el vídeo o la secuencia de vídeo. En lugar del término "imagen", el término "trama" o "imagen" se puede usar como sinónimos en el campo del codificado de vídeo. El codificado de vídeo (o codificación en general) comprende dos partes: codificación de vídeo y decodificación de vídeo. La codificación de vídeo se realiza en el lado de origen, lo que generalmente comprende el procesamiento (por ejemplo, mediante compresión) de las imágenes de vídeo originales para reducir la cantidad de datos necesarios para representar las imágenes de vídeo (para un almacenamiento y/o transmisión más eficiente). La decodificación de vídeo se realiza en el lado de destino y generalmente comprende el procesamiento inverso en comparación con el codificador para reconstruir las imágenes de vídeo. Las realizaciones que se refieren a la "codificado" de imágenes de vídeo (o imágenes en general) se entenderán relacionadas con la "codificación" o la "descodificación" de imágenes de vídeo o secuencias de vídeo respectivas. La combinación de la parte de codificación y la parte de decodificación también se conoce como CODEc (codificación y decodificación).
En caso de codificado de vídeo sin pérdidas, las imágenes de vídeo originales pueden reconstruirse, es decir, las imágenes de vídeo reconstruidas tienen la misma calidad que las imágenes de vídeo originales (suponiendo que no haya pérdida de transmisión u otra pérdida de datos durante el almacenamiento o la transmisión). En caso de codificado de vídeo con pérdida, se realiza una compresión adicional, por ejemplo, mediante cuantización, para reducir la cantidad de datos que representan las imágenes de vídeo, que no pueden reconstruirse completamente en el decodificador, es decir, la calidad de las imágenes de vídeo reconstruidas es menor o peor en comparación a la calidad de las imágenes de vídeo originales.
Varios estándares de codificado de vídeo pertenecen al grupo de "códecs de vídeo híbridos con pérdida" (es decir, combinan predicción espacial y temporal en el dominio de muestra y codificado de transformación 2D para aplicar cuantización en el dominio de transformada). Cada imagen de una secuencia de vídeo generalmente se divide en un conjunto de bloques que no se superponen y el codificado generalmente se realiza a nivel de bloque. En otras palabras, en el codificador, el vídeo generalmente se procesa, es decir, se codifica, en un nivel de bloque (bloque de vídeo), por ejemplo, usando predicción espacial (intraimagen) y/o predicción temporal (interimagen) para generar un bloque de predicción, restando el bloque de predicción del bloque actual (bloque actualmente procesado/a procesar) para obtener un bloque residual, transformando el bloque residual y cuantificando el bloque residual en el dominio de transformada para reducir la cantidad de datos a transmitir (compresión), mientras que en el decodificador se aplica al bloque codificado o comprimido el procesamiento inverso al del codificador para reconstruir el bloque actual para su representación. Además, el codificador duplica el bucle de procesamiento del decodificador de manera que ambos generarán predicciones idénticas (por ejemplo, intrapredicción e interpredicciones) y/o reconstrucciones para procesar, es decir, codificar, los bloques subsiguientes.
A continuación se describen realizaciones de un sistema de codificado de vídeo 10, un codificador de vídeo 20 y un decodificador de vídeo 30 sobre la base de las Figs. 1 a 3.
La Fig. 1A es un diagrama de bloques esquemático que ilustra un sistema de codificado de ejemplo 10, por ejemplo, un sistema de codificado de vídeo 10 (o sistema de codificado 10 por abreviar) que puede utilizar técnicas de esta presente solicitud. El codificador de vídeo 20 (o codificador 20 por abreviar) y el decodificador de vídeo 30 (o decodificador 30 por abreviar) del sistema de codificado de vídeo 10 representan ejemplos de dispositivos que pueden configurarse para realizar técnicas según diversos ejemplos descritos en la presente solicitud.
Como se muestra en la FIG. 1A, el sistema de codificación 10 comprende un dispositivo de origen 12 configurado para proporcionar datos de imagen codificada 21, por ejemplo, a un dispositivo de destino 14 para decodificar los datos de imagen codificada 21.
El dispositivo de origen 12 comprende un codificador 20, y puede comprender adicionalmente, es decir, opcionalmente, un origen de imágenes 16, un preprocesador (o unidad de preprocesamiento) 18, por ejemplo, un preprocesador de imágenes 18, y una interfaz de comunicación o unidad de comunicación 22.
El origen de imágenes 16 puede comprender o ser cualquier tipo de dispositivo de captura de imágenes, por ejemplo, una cámara para capturar una imagen del mundo real, y/o cualquier tipo de dispositivo de generación de imágenes, por ejemplo, un procesador de gráficos por ordenador para generar una imagen animada por ordenador, o cualquier otro tipo de dispositivo para obtener y/o proporcionar una imagen del mundo real, una imagen generada por ordenador (por ejemplo, un contenido de pantalla, una imagen de realidad virtual (VR)) y/o cualquier combinación de los mismas (por ejemplo, una imagen de realidad aumentada (AR)). La fuente de imagen puede ser cualquier tipo de memoria o almacenamiento que almacene cualquiera de las imágenes mencionadas anteriormente.
A diferencia del preprocesador 18 y el procesamiento realizado por la unidad de preprocesamiento 18, la imagen o los datos de imagen 17 también pueden denominarse imagen sin procesar o datos de imagen sin procesar 17.
El preprocesador 18 se configura para recibir los datos de imagen 17 (sin procesar) y para realizar el preprocesamiento de los datos de imagen 17 para obtener una imagen preprocesada 19 o datos de imagen preprocesada 19. El preprocesamiento realizado por el preprocesador 18 puede comprender, por ejemplo, recorte, conversión de formato de color (por ejemplo, de RGB a YCbCr), corrección de color o eliminación de ruido. Puede entenderse que la unidad de preprocesamiento 18 puede ser un componente opcional.
El codificador de vídeo 20 se configura para recibir los datos de imagen preprocesada 19 y proporcionar datos de imagen codificada 21 (a continuación se describirán más detalles, por ejemplo, basándose en la Fig. 2). La interfaz de comunicación 22 del dispositivo de origen 12 puede configurarse para recibir los datos de imagen codificada 21 y para transmitir los datos de imagen codificada 21 (o cualquier versión procesada adicional de los mismos) a través del canal de comunicación 13 a otro dispositivo, por ejemplo el dispositivo de destino 14 o cualquier otro dispositivo, para almacenamiento o reconstrucción directa.
El dispositivo de destino 14 comprende un decodificador 30 (por ejemplo, un decodificador de vídeo 30), y puede comprender adicionalmente, es decir, opcionalmente, una interfaz de comunicación o unidad de comunicación 28, un posprocesador 32 (o unidad de posprocesamiento 32) y un dispositivo de visualización 34.
La interfaz de comunicación 28 del dispositivo de destino 14 se configura para recibir los datos de imagen codificada 21 (o cualquier versión procesada adicional de los mismos), por ejemplo, directamente desde el dispositivo de origen 12 o desde cualquier otro origen, por ejemplo, un dispositivo de almacenamiento, por ejemplo, un dispositivo de almacenamiento de datos de imagen codificada y proporcionar los datos de imagen codificada 21 al decodificador 30.
La interfaz de comunicación 22 y la interfaz de comunicación 28 pueden configurarse para transmitir o recibir los datos de imagen codificada 21 o los datos codificados 13 a través de un enlace de comunicación directo entre el dispositivo de origen 12 y el dispositivo de destino 14, por ejemplo, una conexión directa por cable o inalámbrica, o a través de cualquier tipo de red, por ejemplo, una red por cable o inalámbrica o cualquier combinación de las mismas, o cualquier tipo de red privada y pública, o cualquier tipo de combinación de las mismas.
La interfaz de comunicación 22 puede configurarse, por ejemplo, para empaquetar los datos de imagen codificada 21 en un formato apropiado, por ejemplo, paquetes, y/o procesar los datos de imágenes codificados de cualquier tipo de codificación o procesamiento de transmisión para la transmisión a través de un enlace de comunicación o una red de comunicación.
La interfaz de comunicación 28, que forma la contraparte de la interfaz de comunicación 22, puede configurarse, por ejemplo, para recibir los datos transmitidos y procesar los datos de transmisión utilizando cualquier tipo de decodificación o procesamiento de transmisión correspondiente y/o desempaquetado para obtener los datos de imagen codificada 21.
Tanto la interfaz de comunicación 22 como la interfaz de comunicación 28 pueden configurarse como interfaces de comunicación unidireccionales, como lo indica la flecha para el canal de comunicación 13 en la Fig. 1A que apuntan desde el dispositivo de origen 12 al dispositivo de destino 14, o interfaces de comunicación bidireccionales, y puede configurarse, por ejemplo, para enviar y recibir mensajes, por ejemplo, para establecer una conexión, para acuse de recibo e intercambiar cualquier otra información relacionada con el enlace de comunicación y/o transmisión de datos, por ejemplo, transmisión de datos de imágenes codificadas.
El decodificador 30 se configura para recibir los datos de imagen codificada 21 y proporcionar datos de imagen decodificada 31 o una imagen decodificada 31 (a continuación se describirán más detalles, por ejemplo, basándose en la Fig. 3 o la Fig. 5).
El posprocesador 32 del dispositivo de destino 14 se configura para posprocesar los datos de imagen decodificada 31 (también llamados datos de imagen reconstruida), por ejemplo, la imagen decodificada 31, para obtener datos de imagen posprocesada 33, por ejemplo, un imagen posprocesada 33. El posprocesamiento realizado por la unidad de posprocesamiento 32 puede comprender, por ejemplo, conversión de formato de color (por ejemplo, de YCbCr a RGB), corrección de color, recorte o remuestreo, o cualquier otro procesamiento, por ejemplo, para preparar los datos de imagen decodificada 31 para la visualización, por ejemplo, mediante el dispositivo de visualización 34.
El dispositivo de visualización 34 del dispositivo de destino 14 se configuran para recibir los datos de imagen posprocesada 33 para mostrar la imagen, por ejemplo, a un usuario o espectador. El dispositivo de visualización 34 puede ser o comprender cualquier tipo de pantalla para representar la imagen reconstruida, por ejemplo, una pantalla o monitor integrado o externo. Las pantallas pueden comprender, por ejemplo, pantallas de cristal líquido (LCD), pantallas de diodos orgánicos emisores de luz (OLED), pantallas de plasma, proyectores, pantallas micro LED, cristal líquido sobre silicio (LCoS), procesador de luz digital (DLP) o cualquier otro tipo de pantalla.
Aunque la Fig. 1A representa el dispositivo de origen 12 y el dispositivo de destino 14 como dispositivos separados, las realizaciones de los dispositivos también pueden comprender ambos o ambas funcionalidades, el dispositivo de origen 12 o la funcionalidad correspondiente y el dispositivo de destino 14 o la funcionalidad correspondiente. En tales realizaciones, el dispositivo de origen 12 o la funcionalidad correspondiente y el dispositivo de destino 14 o la funcionalidad correspondiente pueden implementarse usando el mismo hardware y/o software o por hardware y/o software separados o cualquier combinación de los mismos.
Como será evidente para el experto en la técnica en función de la descripción, la existencia y división (exacta) de funcionalidades de las diferentes unidades o funcionalidades dentro del dispositivo de origen 12 y/o el dispositivo de destino 14, como se muestra en la Fig. 1A, puede variar dependiendo del dispositivo y la aplicación reales.
El codificador 20 (por ejemplo, un codificador de vídeo 20) y el decodificador 30 (por ejemplo, un decodificador de vídeo 30) o ambos codificador 20 y decodificador 30 pueden implementarse mediante circuitería de procesamiento como se muestra en la Fig. 1B, tal como uno o más microprocesadores, procesadores de señales digitales (DSP), circuitos integrados de aplicación específica (ASIC), matrices de puertas programables en campo (FPGA), lógica discreta, hardware o cualquier combinación de los mismos. El codificador 20 puede implementarse a través de la circuitería de procesamiento 46 para incorporar los diversos módulos como se analizó con respecto al codificador 20 de la FIG. 2 y/o cualquier otro sistema o subsistema de codificador descritos en esta memoria. El decodificador 30 puede implementarse a través de la circuitería de procesamiento 46 para incorporar los diversos módulos como se analizó con respecto al decodificador 30 de la FIG. 3 y/o cualquier otro sistema o subsistema de decodificador descritos en esta memoria. La circuitería de procesamiento puede configurarse para realizar las diversas operaciones que se describen más adelante. Como se muestra en la fig. 5, si las técnicas se implementan parcialmente en software, un dispositivo puede almacenar instrucciones para el software en un soporte de almacenamiento no transitorio legible por ordenador adecuado y puede ejecutar las instrucciones en hardware usando uno o más procesadores para realizar las técnicas de esta divulgación. Cualquiera del codificador de vídeo20o del decodificador de vídeo30pueden integrarse como parte de un codificador/decodificador combinado (CODEC) en un solo dispositivo, por ejemplo, como se muestra en la Fig. 1B.
El dispositivo de origen 12 y el dispositivo de destino 14 pueden comprender cualquiera de una amplia gama de dispositivos, incluido cualquier tipo de dispositivo portátil o fijo, por ejemplo, ordenadores portátiles, teléfonos móviles, teléfonos inteligentes, tabletas u tabletas informáticas, cámaras, ordenadores de escritorio, decodificadores, televisores, dispositivos de visualización, reproductores de medios digitales, consolas de videojuegos, dispositivos de transmisión de vídeo (tales como servidores de servicios de contenido o servidores de entrega de contenido), dispositivo receptor de emisiones, dispositivo transmisor de emisiones o similares, y puede usar ningún o cualquier tipo de sistema operativo. En algunos casos, el dispositivo de origen 12 y el dispositivo de destino 14 pueden equiparse para comunicación inalámbrica. Por lo tanto, el dispositivo de origen 12 y el dispositivo de destino 14 pueden ser dispositivos de comunicación inalámbrica.
En algunos casos, el sistema de codificado de vídeo10ilustrado en la Fig. 1A es simplemente un ejemplo y las técnicas de la presente solicitud pueden aplicarse a configuraciones de codificado de vídeo (por ejemplo, codificación de vídeo o decodificación de vídeo) que no necesariamente incluyen ninguna comunicación de datos entre los dispositivos de codificación y decodificación. En otros ejemplos, los datos se recuperan de una memoria local, se transmiten a través de una red o similar. Un dispositivo de codificación de vídeo puede codificar y almacenar datos en la memoria, y/o un dispositivo de decodificación de vídeo puede recuperar y decodificar datos de la memoria. En algunos ejemplos, la codificación y decodificación la realizan dispositivos que no se comunican entre sí, sino que simplemente codifican datos en la memoria y/o recuperan y decodifican datos de la memoria.
Para facilitar la descripción, las realizaciones de la invención se describen en esta memoria, por ejemplo, por referencia al codificado de vídeo de alta eficiencia (HEVC) o al software de referencia de codificación de vídeo versátil (VVC), el estándar de codificado de vídeo de nueva generación desarrollado por el equipo de colaboración conjunta en codificado de vídeo (JCT-VC) del grupo de expertos en codificado de vídeo del UIT-T (VCEG) y del grupo de expertos en imágenes en movimiento del ISO/IEC (MPEG). Un experto en la técnica comprenderá que las realizaciones de la invención no se limitan a HEVC o VVC.
Codificador y método de codificación
La Fig. 2 muestra un diagrama de bloques esquemático/conceptual de un codificador de vídeo 20 de ejemplo que se configura para implementar las técnicas de la presente solicitud. En el ejemplo de la Fig. 2, el codificador de vídeo 20 comprende una entrada 201 (o interfaz de entrada 201), una unidad de cálculo residual 204, una unidad de procesamiento de transformada 206, una unidad de cuantización 208, una unidad de cuantización inversa 210 y una unidad de procesamiento de transformada inversa 212, una unidad de reconstrucción 214, una unidad de filtro de bucle 220, un búfer de imágenes decodificadas (DPB) 230, una unidad de selección de modo 260, una unidad de codificación entrópica 270 y una salida 272 (o interfaz de salida 272). La unidad de procesamiento de predicción 260 puede incluir una unidad de interpredicción 244, una unidad 254 de intrapredicción y una unidad de selección de modo 262. La unidad de interpredicción 244 puede incluir una unidad de estimación de movimiento y una unidad de compensación de movimiento (no mostrada). Un codificador de vídeo 20 como se muestra en la Fig. 2 también puede denominarse codificador de vídeo híbrido o un codificador de vídeo según un códec de vídeo híbrido.
La unidad de cálculo residual 204, la unidad de procesamiento de transformada 206, la unidad de cuantización 208, la unidad de selección de modo 260 pueden referirse como que forman una ruta de señal directa del codificador 20, mientras que la unidad de cuantización inversa 210, la unidad de procesamiento de transformada inversa 212, la unidad de reconstrucción 214, el búfer 216, el filtro 220 de bucle, el búfer de imágenes decodificada (DPB) 230, la unidad de interpredicción 244 y l unidad de intrapredicción 254 pueden referirse como que forman una ruta de señal hacia atrás del codificador de vídeo 20, en donde la ruta de señal hacia atrás del codificador de vídeo 20 corresponde a la ruta de señal del decodificador (consulte el decodificador de vídeo 30 en la Fig. 3). La unidad de cuantización inversa 210, la unidad de procesamiento de transformada inversa 212, la unidad de reconstrucción 214, el filtro de bucle 220, el búfer de imagen decodificada (DPB) 230, la unidad de interpredicción 244 y la unidad de intrapredicción 254 también se refieren como que forman "decodificador incorporado" del codificador de vídeo 20.
Imágenes y particiones de imágenes (imágenes y bloques)
El codificador 20 se puede configurar para recibir, por ejemplo, por la entrada 201, una imagen 17 (o datos de imagen 17), por ejemplo imagen de una secuencia de imágenes que forman un vídeo o secuencia de vídeo. La imagen o los datos de imagen recibidos también pueden ser una imagen preprocesada 19 (o datos de imagen preprocesada 19). Para simplificar, la siguiente descripción se refiere a la imagen 17. La imagen 17 también puede denominarse imagen actual o imagen a codificar (en particular en el codificado de vídeo para distinguir la imagen actual de otras imágenes, por ejemplo, imágenes codificadas y/o decodificadas previamente de la misma secuencia de vídeo, es decir, la secuencia de vídeo que también comprende la imagen actual).
Una imagen (digital) es o puede ser considerada como una distribución o matriz bidimensional de muestras con valores de intensidad. Una muestra en la distribución también puede denominarse píxel (forma abreviada de elemento de imagen) o pel. El número de muestras en dirección horizontal y vertical (o eje) de la distribución o imagen define el tamaño y/o resolución de la imagen. Para la representación del color, generalmente se emplean tres componentes de color, es decir, la imagen puede representarse o incluir tres distribuciones de muestras. En espacio de color o formato RGB, una imagen comprende una distribución de muestra roja, verde y azul correspondiente. Sin embargo, en el codificado de vídeo, cada píxel generalmente se representa en un espacio de color o formato de luminancia y crominancia, por ejemplo, YCbCr, que comprende un componente de luminancia indicada por Y (a veces también se usa L en su lugar) y dos componentes de crominancia indicados por Cb y Cr. El componente Y de luminancia (o de forma abreviada, luma) representa el brillo o la intensidad del nivel de grises (por ejemplo, como en una imagen en escala de grises), mientras que los dos componentes Cby Cr de crominancia (o de forma abreviada, croma) representan los componentes de cromaticidad o información de color. En consecuencia, una imagen en formato YCbCr comprende una distribución de muestras de luminancia de valores (Y) de muestras de luminancia y dos matrices de muestras de crominancia de valores (Cb y Cr) de crominancia. Las imágenes en formato RGB se pueden convertir o transformar en formato YCbCr y viceversa, el proceso también se conoce como transformación o conversión de color. Si una imagen es monocromática, la imagen puede comprender solo una distribución de muestras de luminancia. En consecuencia, una imagen puede ser, por ejemplo, una distribución de muestras de luma en formato monocromático o una distribución de muestras de luma y dos distribuciones correspondientes de muestras de croma en formato de color 4:2:0, 4:2:2 y 4:4:4.
Las realizaciones del codificador de vídeo 20 pueden comprender una unidad de partición de imágenes (no representada en la Fig. 2) configurada para partir la imagen 17 en una pluralidad de bloques de imagen 203 (que normalmente no se superponen). Estos bloques también pueden denominarse bloques raíz, macrobloques (H.264/AVC) o bloques de árbol de codificado (CTB) o unidades de árbol de codificado (CTU) (H.265/HEVC y WC). La unidad de partición de imagen puede configurarse para usar el mismo tamaño de bloque para todas las imágenes de una secuencia de vídeo y la cuadrícula correspondiente que define el tamaño de bloque, o para cambiar el tamaño de bloque entre imágenes, subconjuntos o grupos de imágenes, y partir cada imagen en los bloques correspondientes.
En otras realizaciones, el codificador de vídeo puede configurarse para recibir directamente un bloque 203 de la imagen 17, por ejemplo uno, varios o todos los bloques que forman la imagen 17. El bloque de imagen 203 también puede denominarse bloque de imagen actual o bloque de imagen a codificar.
Al igual que la imagen 17, el bloque de imagen 203 nuevamente es o puede ser considerado como una distribución o matriz bidimensional de muestras con valores de intensidad (valores de muestra), aunque de menor dimensión que la imagen 17. En otras palabras, el bloque 203 puede comprender, por ejemplo, una distribución de muestras (por ejemplo, una distribución de luminancia en el caso de una imagen monocromática 17, o una distribución de luma o croma en caso de una imagen a color) o tres distribuciones de muestras (por ejemplo, una distribución de luminancia y dos distribuciones de crominancia en el caso de una imagen 17 en color) o cualquier otro número y/o tipo de distribuciones dependiendo del formato de color aplicado. El número de muestras en dirección horizontal y vertical (o eje) del bloque 203 define el tamaño del bloque 203. En consecuencia, un bloque puede ser, por ejemplo, una distribución MxN (M columnas por N filas) de muestras, o una distribución MxN de coeficientes de transformada.
Las realizaciones del codificador de vídeo 20, como se muestra en la Fig. 2 pueden configurarse para codificar la imagen 17 bloque por bloque, por ejemplo, la codificación y la predicción se realizan por bloque 203.
Cálculo residual
La unidad de cálculo residual 204 se configura para calcular un bloque residual 205 (también denominado residual 205) en función del bloque de imagen 203 y de un bloque de predicción 265 (más adelante se proporcionan más detalles sobre el bloque de predicción 265), por ejemplo, restando los valores de muestra del bloque de predicción 265 de los valores de muestra del bloque de imagen 203, muestra por muestra (píxel por píxel) para obtener el bloque residual 205 en el dominio de la muestra.
Transformación
La unidad de procesamiento de transformada 206 puede configurare para aplicar una transformación, por ejemplo, una transformada de coseno discreta (DCT) o una transformada de seno discreta (DST), en los valores de muestra del bloque residual 205 para obtener coeficientes de transformada 207 en un dominio de transformada. Los coeficientes de transformada 207 también pueden denominarse coeficientes residuales de transformada y representan el bloque residual 205 en el dominio de transformada.
La unidad de procesamiento de transformada 206 puede configurarse para aplicar aproximaciones enteras de DCT/DST, tales como las transformadas especificadas para HEVc /H.265. En comparación con una transformada DCT ortogonal, tales aproximaciones de enteros generalmente se escalan mediante un determinado factor. Para preservar la norma del bloque residual que se procesa mediante transformadas directas e inversas, se aplican factores de escala adicionales como parte del proceso de transformada. Los factores de escala se eligen generalmente en función de ciertas restricciones, como que los factores de escala sean una potencia de dos para operaciones de desplazamiento, la profundidad de bits de los coeficientes de transformada, el equilibrio entre la precisión y los costes de implementación, etc. Los factores de escala específicos se especifican, por ejemplo, para la transformada inversa, por ejemplo, mediante la unidad de procesamiento de transformada inversa 212, (y la transformada inversa correspondiente, por ejemplo, mediante la unidad de procesamiento de transformada inversa 312 en un decodificador de vídeo 30) y los factores de escala correspondientes para la transformada directa, por ejemplo, mediante la unidad de procesamiento de transformada 206, en consecuencia, se puede especificar un codificador 20.
Las realizaciones del codificador de vídeo 20 (respectivamente, la unidad de procesamiento de transformada 206) pueden configurarse para generar parámetros de transformada, por ejemplo, un tipo de transformada o transformadas, por ejemplo, directamente o codificadas o comprimidas a través de la unidad de codificación entrópica 270, de modo que, por ejemplo, el decodificador de vídeo 30 pueda recibir y usar los parámetros de transformada para la decodificación.
Cuantización
La unidad de cuantización 208 se configura para cuantizar los coeficientes de transformada 207 para obtener coeficientes de transformada 209 cuantizados, por ejemplo, aplicando cuantización escalar o cuantización vectorial. Los coeficientes de transformada 209 cuantizados también pueden denominarse coeficientes de transformada cuantizados 209 y coeficientes residuales cuantizados 209.
El proceso de cuantización puede reducir la profundidad de bits asociada con algunos o todos los coeficientes de transformada 207. Por ejemplo, un coeficiente de transformada de n bits puede redondearse hacia abajo a un coeficiente de transformada de m bits durante la cuantización, donde n es mayor que m. El grado de cuantización puede modificarse ajustando un parámetro de cuantización (QP). Por ejemplo, para la cuantización escalar, se pueden aplicar escalas diferentes para lograr una cuantización más fina o más gruesa. Los tamaños de los escalones de cuantización menores corresponden a una cuantización más fina, mientras que los tamaños de los escalones de cuantización más grandes corresponden a una cuantización más gruesa. El tamaño de los escalones de cuantización aplicables puede indicarse mediante un parámetro de cuantización (QP). El parámetro de cuantización puede ser, por ejemplo, un índice de un conjunto predefinido de tamaños de escalones de cuantización aplicables. Por ejemplo, los parámetros de cuantización pequeños pueden corresponder a una cuantización fina (tamaños de escalones de cuantización pequeños) y los parámetros de cuantización grandes pueden corresponder a una cuantización gruesa (tamaños de escalones de cuantización grandes) o viceversa. La cuantización puede incluir la división por un tamaño del escalón de cuantización y la decuantización correspondiente o inversa, por ejemplo, mediante la cuantización inversa 210, puede incluir la multiplicación por el tamaño del escalón de cuantización. Las realizaciones según algunos estándares, por ejemplo, HEVC, pueden configurarse para usar un parámetro de cuantización para determinar el tamaño del escalón de cuantización. Generalmente, el tamaño del escalón de cuantización puede calcularse en función de un parámetro de cuantización usando una aproximación de punto fijo de una ecuación que incluye la división. Pueden introducirse factores de escala adicionales para la cuantización y la decuantización para restaurar la norma del bloque residual, que podría modificarse debido a la escala usada en la aproximación de punto fijo de la ecuación para el tamaño del escalón de cuantización y el parámetro de cuantización. En una implementación de ejemplo, se pueden combinar el escalado de la transformada inversa y la decuantización. Alternativamente, pueden usarse tablas de cuantización personalizadas y señalarse desde un codificador a un decodificador, por ejemplo, en un flujo de bits. La cuantización es una operación con pérdida, en donde la pérdida aumenta al aumentar los tamaños de los escalones de cuantización.
Las realizaciones del codificador de vídeo 20 (respectivamente, la unidad de cuantización 208) pueden configurarse para tener como salida parámetros de cuantización (QP), por ejemplo directamente o codificados a través de la unidad de codificación entrópica 270, de modo que, por ejemplo, el decodificador de vídeo 30 pueda recibir y aplicar los parámetros de cuantización para la decodificación.
Cuantización inversa
La unidad de cuantización inversa 210 se configura para aplicar la cuantización inversa de la unidad de cuantización 208 en los coeficientes cuantizados para obtener los coeficientes decuantizados 211, por ejemplo, aplicando el esquema de cuantización inverso aplicado por la unidad de cuantización 208 en función del mismo tamaño de escalón de cuantización, o usando este, que la unidad de cuantización 208. Los coeficientes decuantizados 211 también pueden denominarse coeficientes residuales decuantizados 211 y corresponden -aunque generalmente no son idénticos a los coeficientes de transformada debido a la pérdida por cuantización - a los coeficientes de transformada 207.
Transformada inversa
La unidad de procesamiento de transformada inversa 212 se configura para aplicar la transformada inversa de la transformación aplicada por la unidad de procesamiento de transformada 206, por ejemplo, una transformada de coseno discreta inversa (DCT) o una transformada de seno discreta inversa (DST), para obtener un bloque de transformada inversa 213 (o correspondientes coeficientes decuantizadoas 213) en el dominio de muestra. El bloque residual reconstruido 213 también puede denominarse bloque de transformada 213.
Reconstrucción
La unidad de reconstrucción 214 (por ejemplo, adicionador o sumador 214) se configura para añadir el bloque de transformada 213 (es decir, el bloque residual reconstruido 213) al bloque de predicción 265 para obtener un bloque reconstruido 215 en el dominio de muestra, por ejemplo, añadiendo los valores de muestra del bloque residual reconstruido 213 y los valores de muestra del bloque de predicción 265.
Filtrado
La unidad de filtro de bucle 220 (o "filtro de bucle" 220 para abreviar), se configura para filtrar el bloque reconstruido 215 para obtener un bloque filtrado 221, o en general, para filtrar muestras reconstruidas para obtener muestras filtradas. La unidad de filtro de bucle se configura, por ejemplo, para suavizar las transiciones de píxeles o mejorar de otro modo la calidad de vídeo. La unidad de filtro de bucle 220 puede comprender uno o más filtros de bucle, tales como un filtro de desbloqueo, un filtro de desplazamiento adaptativo de muestras (SAO) o uno o más de otros filtros, por ejemplo, un filtro bilateral, un filtro de bucle adaptativo (ALF) o filtros de nitidez y de suavizado o filtros colaborativos, o cualquier combinación de los mismos. Aunque la unidad de filtro de bucle 220 se muestra en la FIG. 2 como un filtro en bucle, en otras configuraciones, la unidad de filtro de bucle 220 puede implementarse como un filtro posterior al bucle. El bloque filtrado 221 también puede denominarse bloque filtrado reconstruido 221.
Las realizaciones del codificador de vídeo 20 (respectivamente, la unidad de filtro de bucle 220) pueden configurarse para generar parámetros de filtro de bucle (tales como información de desplazamiento adaptativa de muestra), por ejemplo, directamente o codificados a través de la unidad de codificación entrópica 270 para que, por ejemplo, un decodificador 30 puede recibir y aplicar los mismos parámetros de filtro de bucle o respectivos filtros de bucle para decodificar.
Búfer de imagen decodificada
El búfer de imágenes decodificadas (DPB) 230 puede ser una memoria de imágenes de referencia que almacena datos de imágenes de referencia para su uso en la codificación de datos de vídeo mediante el codificador de vídeo 20. El DPB 230 puede formarse por cualquiera de una variedad de dispositivos de memoria, tales como memoria dinámica de acceso aleatorio (DRAM), incluida la DRAM síncrona (SDRAM), la RAM magnetorresistiva (MRAM), la RAM resistiva (RRAM) u otros tipos de dispositivos de memoria. El búfer de imágenes decodificadas (DPB) 230 puede configurarse para almacenar el uno o más bloques filtrados 221. El búfer de imágenes decodificadas 230 puede configurarse además para almacenar otros bloques previamente filtrados, por ejemplo, bloques 221 previamente reconstruidos y filtrados, de la misma imagen actual o de diferentes imágenes, por ejemplo, imágenes previamente reconstruidas, y puede proporcionar imágenes completas previamente reconstruidas, es decir, decodificadas (y los correspondientes bloques y muestras de referencia) y/o una imagen actual parcialmente reconstruida (y los correspondientes bloques y muestras de referencia), por ejemplo, para interpredicción. El búfer de imagen decodificada (DPB) 230 también puede configurarse para almacenar uno o más bloques reconstruidos sin filtrar 215, o en general muestras reconstruidas sin filtrar, por ejemplo si el bloque reconstruido 215 no es filtrado por la unidad de filtro de bucle 220, o cualquier otra versión procesada adicionalmente de los bloques o muestras reconstruidos.
Selección de modo (partición y predicción)
La unidad de selección de modo 260 comprende una unidad de partición 262, una unidad de interpredicción 244 y una unidad de intrapredicción 254, y se configura para recibir u obtener datos de imagen original, por ejemplo, un bloque original 203 (bloque actual 203 de la imagen actual 17), y datos de imagen reconstruida, por ejemplo, muestras o bloques reconstruidos filtrados y/o sin filtrar de la misma imagen (actual) y/o de una o una pluralidad de imágenes decodificadas previamente, por ejemplo, del búfer de imagen decodificada 230 u otros búferes (por ejemplo, búfer de línea, no mostrado). Los datos de imagen reconstruida se utilizan como datos de imagen de referencia para la predicción, por ejemplo, interpredicción o intrapredicción, para obtener un bloque de predicción 265 o un predictor 265.
La unidad de selección de modo 260 puede configurarse para determinar o seleccionar una partición para un modo de predicción de bloque actual (que no incluye partición) y un modo de predicción (por ejemplo, un modo de intrapredicción o modo de interpredicción) y generar un bloque de predicción 265 correspondiente, que se usa para el cálculo del bloque residual 205 y para la reconstrucción del bloque reconstruido 215.
Las realizaciones de la unidad de selección de modo 260 pueden configurarse para seleccionar la partición y el modo de predicción (por ejemplo, de aquellos soportados por o disponibles para la unidad de selección de modo 260), que proporcionan la mejor coincidencia o, en otras palabras, el residual mínimo (el residual mínimo significa una mejor compresión para la transmisión o almacenamiento) o una sobrecarga de señalización mínima (la sobrecarga de señalización mínima significa una mejor compresión para la transmisión o el almacenamiento), o que considera o equilibra ambos. La unidad de selección de modo 260 puede configurarse para determinar la partición y el modo de predicción en función de la optimización de distorsión de tasa (RDO), es decir, seleccionar el modo de predicción que proporciona una distorsión de tasa mínima. Términos como "mejor", "mínimo", "óptimo", etc. en este contexto no necesariamente se refieren a un "mejor", "mínimo", "óptimo", etc. general, sino que también pueden referirse al cumplimiento de un criterio de terminación o selección como un valor que excede o cae por debajo de un umbral u otras restricciones que conducen potencialmente a una "selección subóptima" pero que reducen la complejidad y el tiempo de procesamiento.
En otras palabras, la unidad de partición 262 puede configurarse para partir el bloque 203 en subbloques o particiones de bloque más pequeñas (que de nuevo forman bloques), por ejemplo, de forma iterativa usando partición de árbol cuádruple (QT), partición binaria (BT) o partición de árbol triple (TT) o cualquier combinación de los mismos, y para realizar, por ejemplo, la predicción para cada una de las particiones de bloque o subbloques, en donde la selección de modo comprende la selección de la estructura de árbol del bloque 203 particionado y los modos de predicción se aplican a cada una de las particiones de bloque o subbloques.
A continuación se explicará con más detalle la partición (por ejemplo, mediante la unidad de partición 260) y el procesamiento de predicción (por parte de la unidad de interpredicción 244 y la unidad de intrapredicción 254) realizados por un codificador de vídeo de ejemplo 20.
Partición
La unidad de partición 262 puede partir (o dividir) un bloque actual 203 en particiones más pequeñas, por ejemplo, bloques más pequeños de tamaño cuadrado o rectangular. Estos bloques más pequeños (que también pueden denominarse subbloques) pueden dividirse en particiones aún más pequeñas. Esto también se denomina partición de árbol o partición de árbol jerárquica, en donde un bloque raíz, por ejemplo en el nivel de árbol raíz 0 (nivel de jerarquía 0, profundidad 0), se puede partir recursivamente, por ejemplo, se puede partir en dos o más bloques de un nivel de árbol inmediatamente inferior, por ejemplo, nodos en el nivel de árbol 1 (nivel de jerarquía 1, profundidad 1), en donde estos bloques se pueden volver a partir en dos o más bloques de un nivel inmediatamente inferior, por ejemplo, nivel de árbol 2 (nivel de jerarquía 2, profundidad 2), etc., hasta que finalice la partición, por ejemplo, porque se cumple un criterio de terminación, por ejemplo, se alcanza una profundidad de árbol máxima o un tamaño de bloque mínimo. Los bloques que no se parten en más partes también se denominan bloques hoja o nodos hoja del árbol. Un árbol que utiliza particiones en dos se denomina árbol binario (BT), un árbol que utiliza particiones en tres particiones se denomina árbol ternario (TT) y un árbol que utiliza particiones en cuatro particiones se denomina árbol cuádruple (QT).
Como se ha mencionado anteriormente, el término "bloque" como se utiliza en esta memoria puede ser una parte, en particular una parte cuadrada o rectangular, de una imagen. Con referencia, por ejemplo, a HEVC y WC, el bloque puede ser o corresponder a una unidad de árbol de codificado (CTU), una unidad de codificación (CU), una unidad de predicción (PU) y una unidad de transformación (TU) y/o a los bloques correspondientes, por ejemplo, un bloque de árbol de codificado (CTB), un bloque de codificado (CB), un bloque de transformada (TB) o un bloque de predicción (PB).
Por ejemplo, una unidad de árbol de codificado (CTU) puede ser o comprender un CTB de muestras de luma, dos CTB correspondientes de muestras de croma de una imagen que tiene tres distribuciones de muestras, o un CTB de muestras de una imagen monocromática o una imagen que se codifica utilizando tres planos de color separados y estructuras de sintaxis utilizadas para codificar las muestras. En consecuencia, un bloque de árbol de codificado (CTB) puede ser un bloque NxN de muestras para algún valor de N tal que la división de un componente en CTB es una partición. Una unidad de codificación (CU) puede ser o comprender un bloque de codificado de muestras de luma, dos bloques de codificado correspondientes de muestras de croma de una imagen que tiene tres distribuciones de muestras, o un bloque de codificado de muestras de una imagen monocromática o una imagen que se codifica utilizando tres planos de color separados y estructuras de sintaxis utilizadas para codificar las muestras. En consecuencia, un bloque de codificado (CB) puede ser un bloque MxN de muestras para algunos valores de M y N, de modo que la división de un CTB en bloques de codificación es una partición.
En realizaciones, por ejemplo, según HEVC, una unidad de árbol de codificado (CTU) se puede dividir en CU mediante el uso de una estructura de árbol cuádruple denominada árbol de codificado. La decisión de codificar un área de imagen usando predicción interimagen (temporal) o intraimagen (espacial) se toma en el nivel de CU. Cada CU se puede dividir en una, dos o cuatro PU según el tipo de división de PU. Dentro de una PU, se aplica el mismo proceso de predicción y la información relevante se transmite al decodificador en función de la PU. Después de obtener el bloque residual aplicando el proceso de predicción en función del tipo de división de PU, una CU se puede partir en unidades de transformación (TU) según otra estructura de árbol cuádruple similar al árbol de codificado de la CU.
En realizaciones, por ejemplo, según el último estándar de codificación de vídeo actualmente en desarrollo, al que se hace referencia como Codificación de Vídeo Versátil (WC), se utiliza la partición de árbol cuádruple y árbol binario (QTBT) para partir un bloque de codificado. En la estructura de bloques QTBT, una CU puede tener una forma cuadrada o rectangular. Por ejemplo, una unidad de árbol de codificado (CTU) se parte primero mediante una estructura de árbol cuádruple. Los nodos de hoja de árbol cuádruple se dividen además mediante una estructura de árbol binario o ternario (triple). Los nodos de hoja del árbol de partición se denominan unidades de codificado (CU), y esa segmentación se usa para el procesamiento de predicción y transformada sin ninguna otra partición. Esto significa que la CU, PU y TU tienen el mismo tamaño del bloque en la estructura de bloques de codificado QTBT. En paralelo, también se propuso usar la partición múltiple, por ejemplo, la partición de árbol triple junto con la estructura de bloques QTBT.
En un ejemplo, la unidad de selección de modo 260 del codificador de vídeo 20 puede configurarse para realizar cualquier combinación de las técnicas de partición descritas en esta memoria.
Como se ha descrito anteriormente, el codificador de vídeo 20 se configura para determinar o seleccionar el modo de predicción mejor u óptimo de un conjunto de modos de predicción (predeterminados). El conjunto de modos de predicción puede comprender, por ejemplo, modos de intrapredicción y/o modos de interpredicción.
Intrapredicción
El conjunto de modos de intrapredicción puede comprender 35 modos de intrapredicción diferentes, por ejemplo, modos no direccionales como el modo DC (o medio) y el modo planar, o modos direccionales, por ejemplo, como se define en HEVC, o puede comprender 67 modos de intrapredicción diferentes, por ejemplo, modos no direccionales como el modo DC (o medio) y el modo planar, o modos direccionales, por ejemplo, como se define para VVC.
La unidad de intrapredicción 254 se configura para utilizar muestras reconstruidas de bloques vecinos de la misma imagen actual para generar un bloque de intrapredicción 265 según un modo de intrapredicción del conjunto de modos de intrapredicción.
La unidad de intrapredicción 254 (o en general la unidad de selección de modo 260) se configura además para emitir parámetros de intrapredicción (o en general información indicativa del modo de intrapredicción seleccionado para el bloque) a la unidad de codificación entrópica 270 en forma de elementos de sintaxis 266 para su inclusión en los datos de imagen codificada 21, de modo que, por ejemplo, el decodificador de vídeo 30 pueda recibir y utilizar los parámetros de predicción para la decodificación.
Interpredicción
El conjunto de (o posibles) modos de interpredicción depende de las imágenes de referencia disponibles (es decir, imágenes anteriores al menos parcialmente decodificadas, por ejemplo, almacenadas en DPB 230) y otros parámetros de interpredicción, por ejemplo, si se usa la imagen de referencia completa o solo una parte, por ejemplo, un área de ventana de búsqueda alrededor del área del bloque actual de la imagen de referencia para buscar un bloque de referencia que coincida mejor, y/o por ejemplo, si se aplica la interpolación de píxeles, por ejemplo, interpolación de medio/semipel y/o de cuarto de pel, o no.
Además de los modos de predicción anteriores, se puede aplicar el modo omitir y/o el modo directo.
La unidad de interpredicción 244 puede incluir una unidad de estimación de movimiento (ME) y una unidad de compensación de movimiento (MC) (ambas no mostradas en la Fig. 2). La unidad de estimación de movimiento puede configurarse para recibir u obtener el bloque de imagen 203 (bloque de imagen 203 actual de la imagen actual 17) y una imagen decodificada 231, o al menos uno o una pluralidad de bloques previamente reconstruidos, por ejemplo, bloques reconstruidos de uno o una pluralidad de otras/diferentes imágenes previamente decodificadas 231, para estimación de movimiento. Por ejemplo, una secuencia de vídeo puede comprender la imagen actual y las imágenes previamente decodificadas 231, o en otras palabras, la imagen actual y las imágenes previamente decodificadas 231 pueden ser parte o formar una secuencia de imágenes que forman una secuencia de vídeo.
El codificador 20 puede, por ejemplo, configurarse para seleccionar un bloque de referencia de una pluralidad de bloques de referencia de las mismas o diferentes imágenes de la pluralidad de otras imágenes y proporcionar una imagen de referencia (o índice de imagen de referencia) y/o un desplazamiento (desplazamiento espacial) entre la posición (coordenadas x, y) del bloque de referencia y la posición del bloque actual como parámetros de interpredicción para la unidad de estimación de movimiento. Este desplazamiento también se denomina vector de movimiento (MV).
La unidad de compensación de movimiento se configura para obtener, por ejemplo, recibir, un parámetro de interpredicción y para realizar una interpredicción en función o usando el parámetro de interpredicción para obtener un bloque de interpredicción 265. La compensación de movimiento, realizada por la unidad de compensación de movimiento, puede implicar obtener o generar el bloque de predicción en función del vector de movimiento/bloque determinado por la estimación de movimiento, posiblemente realizando interpolaciones con precisión de subpíxel. El filtrado de interpolación puede generar muestras de píxeles adicionales a partir de muestras de píxeles conocidas, aumentando así potencialmente el número de bloques de predicción candidatos que pueden usarse para codificar un bloque de imagen. Al recibir el vector de movimiento para la PU del bloque de imagen actual, la unidad de compensación de movimiento puede ubicar el bloque de predicción al que apunta el vector de movimiento en una de las listas de imágenes de referencia.
La unidad de compensación de movimiento también puede generar elementos de sintaxis asociados con los bloques y el segmento de vídeo para su uso por el decodificador de vídeo 30 en la decodificación de los bloques de imágenes del segmento de vídeo.
Codificación entrópica
La unidad de codificación entrópica 270 se configura para aplicar, por ejemplo, un algoritmo o esquema de codificación entrópica (por ejemplo, un esquema de codificación de longitud variable (VLC), un esquema de VLC adaptable al contexto (CAVLC), un esquema de codificación aritmética, una binarización, una codificación aritmética binaria adaptable al contexto (CABAC), una codificación aritmética binaria adaptable al contexto basada en sintaxis (SBAC), una codificación entrópica de partición de intervalo de probabilidad (PIPE) u otra técnica o metodología de codificación entrópica) o derivación (no compresión) en los coeficientes cuantizados 209, parámetros de interpredicción, parámetros de intrapredicción, parámetros de filtro de bucle, y/u otros elementos de sintaxis para obtener datos de imagen codificada 21 que pueden salir por la salida 272, por ejemplo, en forma de un flujo de bits codificados 21, de modo que, por ejemplo, el decodificador de vídeo 30 puede recibir y usar los parámetros para decodificar. El flujo de bits codificados 21 puede transmitirse al decodificador de vídeo 30, o almacenarse en una memoria para su posterior transmisión o recuperación por el decodificador de vídeo 30.
Se pueden usar otras variaciones estructurales del codificador de vídeo 20 para codificar el flujo de vídeo. Por ejemplo, un codificador basado en no transformada 20 puede cuantificar la señal residual directamente sin la unidad de procesamiento de transformada 206 para ciertos bloques o tramas. En otra implementación, un codificador 20 puede tener la unidad de cuantización 208 y la unidad de cuantización inversa 210 combinadas en una sola unidad.
Decodificador y método de decodificación
La Fig. 3 muestra un ejemplo de decodificador de vídeo 30 que se configura para implementar las técnicas de esta presente solicitud. El decodificador de vídeo 30 se configura para recibir datos de imagen codificada 21 (por ejemplo, un flujo de bits codificado 21), por ejemplo, codificados por el codificador 20, para obtener una imagen decodificada 331. Los datos de imagen o flujo de bits codificados comprenden información para decodificar los datos de imagen codificada, por ejemplo, datos que representan bloques de imagen de un fragmento de vídeo codificado y elementos de sintaxis asociados.
En el ejemplo de la FIG. 3, el decodificador 30 comprende una unidad de decodificación entrópica 304, una unidad de cuantización inversa 310, una unidad de procesamiento de transformada inversa 312, una unidad de reconstrucción 314 (por ejemplo, un sumador 314), un filtro de bucle 320, un búfer de imágenes decodificadas (DBP) 330, una unidad de interpredicción 344 y una unidad de intrapredicción 354. La unidad de interpredicción 344 puede ser o incluir una unidad de compensación de movimiento. El decodificador de vídeo 30 puede, en algunos ejemplos, realizar una etapa de decodificación generalmente recíproca a la etapa de codificación descrita con respecto al codificador de vídeo 100 de la FIG. 2.
Como se explica con relación al codificador 20, la unidad de cuantización inversa 210, la unidad de procesamiento de transformada inversa 212, la unidad de reconstrucción 214, el filtro de bucle 220, el búfer de imagen decodificada (DPB) 230, la unidad de interpredicción 344 y la unidad de intrapredicción 354 también se refieren como que forman "decodificador incorporado" del codificador de vídeo 20. Por consiguiente, la unidad de cuantización inversa 310 puede tener una función idéntica a la unidad de cuantización inversa 110, la unidad de procesamiento de transformada inversa 312 puede tener una función idéntica a la unidad de procesamiento de transformada inversa 212, la unidad de reconstrucción 314 puede tener una función idéntica a la unidad de reconstrucción 214, el filtro de bucle 320 puede tener una función idéntica al filtro de bucle 220, y el búfer de imágenes decodificadas 330 puede tener una función idéntica al búfer de imagen decodificada 230. Por lo tanto, las explicaciones proporcionadas para las respectivas unidades y funciones del codificador de vídeo 20 se aplican correspondientemente a las respectivas unidades y funciones del decodificador de vídeo 30.
Descodificación entrópica
La unidad de decodificación entrópica 304 se configura para analizar sintácticamente el flujo de bits 21 (o en general datos de imagen codificada 21) y realizar, por ejemplo, la decodificación entrópica de los datos de imagen codificada 21 para obtener, por ejemplo, los coeficientes 309 cuantizados y/o parámetros de codificación decodificados (no mostrados en la Fig. 3), por ejemplo alguno o todos los parámetros de interpredicción (p. ej. vector de movimiento e índice de imagen de referencia), parámetro de intrapredicción (p. ej. índice o modo de intrapredicción), parámetros de transformada, parámetros de filtro de bucle, y/u otros elementos de sintaxis. La unidad de decodificación entrópica 304 puede configurarse para aplicar los algoritmos o esquemas de decodificación correspondientes a los esquemas de codificación como se describe con respecto a la unidad de codificación entrópica 270 del codificador 20. La unidad de decodificación entrópica 304 puede configurarse además para proporcionar parámetros de interpredicción, parámetro de intrapredicción y/u otros elementos de sintaxis a la unidad de selección de modo 360 y otros parámetros a las unidades del decodificador 30. El decodificador de vídeo 30 puede recibir los elementos de sintaxis en el nivel de segmento de vídeo y/o el nivel de bloque de vídeo.
Cuantización inversa
La unidad de cuantización inversa 310 puede configurarse para recibir parámetros de cuantización (QP) (o en general información relacionada con la cuantización inversa) y coeficientes cuantizados de los datos de imagen codificada 21 (por ejemplo, mediante análisis y/o decodificación, por ejemplo, mediante la unidad de decodificación entrópica 304) y para aplicar, en función de los parámetros de cuantización, una cuantización inversa sobre los coeficientes cuantizados decodificados 309 para obtener coeficientes descuantizados 311, que también pueden denominarse coeficientes de transformada 311. El proceso de cuantización inversa puede incluir el uso de un parámetro de cuantización calculado por el codificador de vídeo 20 para cada bloque de vídeo en el segmento de vídeo para determinar un grado de cuantización y, asimismo, un grado de cuantización inversa que debe aplicarse.
Transformada inversa
La unidad de procesamiento de transformada inversa 312 puede configurarse para recibir coeficientes descuantizados 311, también denominados coeficientes de transformada 311, y para aplicar una transformada a los coeficientes descuantizados 311 para obtener bloques residuales reconstruidos 213 en el dominio de muestra. Los bloques residuales reconstruidos 213 también pueden denominarse bloques de transformada 313. La transformada puede ser una transformada inversa, por ejemplo, una DCT inversa, una DST inversa, una transformada entera inversa o un proceso de transformada inversa conceptualmente similar. La unidad de procesamiento de transformada inversa 312 puede configurarse además para recibir parámetros de transformada o información correspondiente de los datos de imagen codificada 21 (por ejemplo, mediante análisis y/o decodificación, por ejemplo, mediante la unidad de decodificación entrópica 304) para determinar la transformación que se aplicará a los coeficientes descuantizados 311.
Reconstrucción
La unidad de reconstrucción 314 (por ejemplo, el adicionador o sumador 314) puede configurarse para añadir el bloque residual reconstruido 313, al bloque de predicción 365 para obtener un bloque reconstruido 315 en el dominio de la muestra, por ejemplo, sumando los valores de muestra del bloque residual reconstruido 313 y los valores de muestra del bloque de predicción 365.
Filtrado
La unidad de filtro de bucle 320 (ya sea en el bucle de codificación o después del bucle de codificación) se configura para filtrar el bloque reconstruido 315 para obtener un bloque filtrado 321, por ejemplo, para suavizar las transiciones de píxeles o de otro modo mejorar la calidad del vídeo. La unidad de filtro de bucle 320 está destinada a representar uno o más filtros de bucle, tal como un filtro de desbloqueo, un filtro de desplazamiento adaptativo de muestra (SAO) u otros filtros, por ejemplo, un filtro bilateral o un filtro de bucle adaptativo (ALF) o un filtro de nitidez o filtros de suavizado o filtros colaborativos. Aunque la unidad de filtro de bucle 320 se muestra en la FIG. 3 como un filtro de bucle, en otras configuraciones, la unidad de filtro de bucle 320 puede implementarse como un filtro posterior al bucle.
Búfer de imagen decodificada
Los bloques de vídeo decodificado 321 de una imagen se almacenan luego en el búfer de imágenes decodificadas 330, que almacena las imágenes decodificadas 331 como imágenes de referencia para subsiguiente compensación de movimiento para otras imágenes y/o para tener como salida respectivamente visualización.
El decodificador 30 se configura para tener como salida la imagen decodificada 311, por ejemplo, a través de la salida 312, para presentación o visualización a un usuario.
Predicción
La unidad de interpredicción 344 puede ser idéntica a la unidad de interpredicción 244 (en particular a la unidad de compensación de movimiento) y la unidad de intrapredicción 354 puede ser idéntica a la unidad de interpredicción 254 en función, y realiza decisiones de división o partición y predicción basadas en los parámetros de partición y/o predicción o la información respectiva recibida de los datos de imagen codificada 21 (por ejemplo, mediante análisis y/o decodificación, por ejemplo, mediante la unidad de decodificación entrópica 304). La unidad de selección de modo 360 puede configurarse para realizar la predicción (intra- o interpredicción) por bloque basándose en imágenes reconstruidas, bloques o muestras respectivas (filtradas o sin filtrar) para obtener el bloque de predicción 365.
Cuando el segmento de vídeo se codifica como un segmento intracodificado (I), la unidad de intrapredicción 354 de la unidad de selección de modo 360 se configura para generar el bloque de predicción 365 para un bloque de imagen del segmento de vídeo actual en función de un modo de intrapredicción señalado y datos de bloques previamente decodificados del fotograma o imagen actual. Cuando la imagen de vídeo se codifica como un segmento intercodificado (es decir, B o P), la unidad de interpredicción 344 (por ejemplo, la unidad de compensación de movimiento) de la unidad de selección de modo 360 se configura para producir bloques de predicción 365 para un bloque de vídeo del segmento de vídeo actual en función de los vectores de movimiento y otros elementos de sintaxis recibidos de la unidad de decodificación entrópica 304. Para la interpredicción, los bloques de predicción pueden generarse a partir de una de las imágenes de referencia dentro de una de las listas de imágenes de referencia. El decodificador de vídeo 30 puede construir las listas de tramas de referencia, Lista 0 y Lista 1, usando técnicas de construcción predeterminadas en función de imágenes de referencia almacenadas en DPB 330.
La unidad de selección de modo 360 se configura para determinar la información de predicción para un bloque de vídeo del segmento de vídeo actual analizando los vectores de movimiento y otros elementos de sintaxis, y usa la información de predicción para producir los bloques de predicción para el bloque de vídeo actual que se está decodificando. Por ejemplo, la unidad de selección de modo 360 usa algunos de los elementos de sintaxis recibidos para determinar un modo de predicción (por ejemplo, intrapredicción o interpredicción) usado para codificar los bloques de vídeo del segmento de vídeo, un tipo de segmento de interpredicción (por ejemplo, segmento B, segmento P o segmento GPB), información de construcción para una o más de las listas de imágenes de referencia para el segmento, vectores de movimiento para cada bloque de vídeo intercodificado del segmento, estado de interpredicción para cada bloque de vídeo intercodificado del segmento, y otra información para decodificar los bloques de vídeo en el segmento de vídeo actual.
Se pueden usar otras variaciones del decodificador de vídeo 30 para decodificar los datos de imagen codificada 21. Por ejemplo, el decodificador 30 puede producir el flujo de vídeo de salida sin la unidad de filtrado de bucle 320. Por ejemplo, un decodificador 30 no basado en transformación puede cuantificar de forma inversa la señal residual directamente sin la unidad de procesamiento de transformada inversa 312 para ciertos bloques o tramas. En otra implementación, el decodificador de vídeo 30 puede tener la unidad de cuantización inversa 310 y la unidad de procesamiento de transformada inversa 312 combinadas en una sola unidad.
Debe entenderse que, en el codificador 20 y el decodificador 30, un resultado de procesamiento de una etapa actual puede procesarse aún más y luego enviarse al siguiente etapa. Por ejemplo, después del filtrado de interpolación, la derivación del vector de movimiento o el filtrado de bucle, se puede realizar una operación adicional, como Clip o Shift, en el resultado del procesamiento del filtrado de interpolación, la derivación del vector de movimiento o el filtrado de bucle.
Se debe tener en cuenta que se pueden aplicar operaciones adicionales a los vectores de movimiento derivados del bloque actual (incluidos, entre otros, vectores de movimiento de puntos de control de modo afín, vectores de movimiento de subbloques en modos afines, planos, ATMVP, vectores de movimiento temporales, etc.). Por ejemplo, el valor del vector de movimiento está restringido a un intervalo predefinido según el bit que lo representa. Si el bit que representa el vector de movimiento es bitDepth, entonces el intervalo es -2A(bitDepth-1) ~ 2A(bitDepth-1)-1, donde "A" significa exponenciación. Por ejemplo, si bitDepth se establece en 16, el intervalo es -32768 ~ 32767; si bitDepth se establece en 18, el intevalo es -131072-131071. Por ejemplo, el valor del vector de movimiento derivado (por ejemplo, los MV de cuatro subbloques de 4x4 dentro de un bloque de 8x8) está restringido de modo que la diferencia máxima entre las partes enteras de los cuatro MV de los subbloques de 4x4 no sea mayor que N píxeles, como por ejemplo no más de 1 píxel. Aquí se proporcionan dos métodos para restringir el vector de movimiento según bitDepth.
Método 1: eliminar el MSB (bit más significativo) de desbordamiento mediante operaciones de flujo
ux= ( mvx+2bi,Dep,h) % 2bitDep,h (1)
mvx = ( ux >= 2bi®ep,h'1) ? (ux - 2bi,Dep,h) : ux (2)
uy= ( mvy+2bitDepth) % 2bi®epth(3)
mvy - ( uy > - 2bl,Dep,b'1) ? (uy — 2bl,Dep,b): uy(4)
donde mvx es un componente horizontal de un vector de movimiento de un bloque de imagen o un subbloque, mvy es un componente vertical de un vector de movimiento de un bloque de imagen o un subbloque, y ux y uy indican un valor intermedio;
Por ejemplo, si el valor de mvx es -32769, después de aplicar la fórmula (1) y (2), el valor resultante es 32767. En el sistema informático, los números decimales se almacenan como complemento a dos. El complemento a dos de -32769 es 1,0111,1111,1111,1111 (17 bits), luego se descarta el MSB, por lo que el complemento a dos resultante es 0111,1111,1111,1111 (el número decimal es 32767), que es el mismo que el resultado de aplicar las fórmulas (1) y (2).
ux= ( mvpx mvdx 2bi®ep,h) % 2bi,Dep,h(5)
mvx = ( ux >= 2bi®ep,h'1) ? (ux - 2bi®ep,h): ux<(>6<)>
uy= ( mvpy mvdy 2bi®epth) % 2bi®epth(V)
mvy = ( uy >= 2bi®ep,h'1) ? (uy - 2bi®ep,h): uy( 8)
Las operaciones se pueden aplicar durante la suma de mvp y mvd, como se muestra en la fórmula (5) a (8).
Método 2: eliminar el MSB de desbordamiento recortando el valor
vx = Clip3(-2bi®epth'1, 2bi®epth'1 -1, vx)
vy = Clip3(-2bitDeptl1-1, 2bitDepth'1 -1, vy)
donde vx es un componente horizontal de un vector de movimiento de un bloque de imagen o un subbloque, vy es un componente vertical de un vector de movimiento de un bloque de imagen o un subbloque; x, y z corresponden respectivamente a tres valores de entrada del proceso de recorte de MV, y la definición de la función Clip3 es la siguiente:
rx ; z < x
C lip 3 (x ,y ,z ) = jy ; z > y
vz ; si no
La FIG. 4 es un diagrama esquemático de un dispositivo de codificado de vídeo 400 según una realización de la divulgación. El dispositivo de codificado de vídeo 400 es adecuado para implementar las realizaciones descritas como se describen en esta memoria. En una realización, el dispositivo de codificado de vídeo 400 puede ser un decodificador tal como el decodificador de vídeo 30 de la FIG. 1A o un codificador tal como el codificador de vídeo 20 de la FIG. 1A.
El dispositivo de codificado de vídeo 400 comprende puertos de entrada 410 (o puertos de entrada 410) y unidades receptoras (Rx) 420 para recibir datos; un procesador, unidad lógica o unidad central de procesamiento (CPU) 430 para procesar los datos; unidades de transmisión (Tx) 440 y puertos de salida 450 (o puertos de salida 450) para transmitir los datos; y una memoria 460 para almacenar los datos. El dispositivo de codificado de vídeo 400 también puede comprender componentes ópticos a eléctricos (OE) y componentes eléctricos a ópticos (EO) acoplados a los puertos de entrada 410, unidades de recepción 420, unidades de transmisión 440 y puertos de salida 450 para la salida o entrada de señales ópticas o eléctricas.
El procesador 430 se implementa por hardware y software. El procesador 430 puede implementarse como uno o más chips de CPU, núcleos (por ejemplo, como un procesador multinúcleo), FPGA, ASIC y DSP. El procesador 430 está en comunicación con el puerto de entrada 410, la unidad 420 de recepción, la unidad 440 de transmisión, los puertos 450 de salida y la memoria 460. El procesador 430 comprende un módulo de codificado 470. El módulo de codificado 470 implementa las realizaciones descritas anteriormente. Por ejemplo, el módulo de codificado 470 implementa, procesa, prepara o proporciona las diversas operaciones de codificación. La inclusión del módulo de codificado 470 por lo tanto proporciona una mejora sustancial a la funcionalidad del dispositivo 400 de codificado de vídeo y efectúa una transformación del dispositivo 400 de codificado de vídeo a un estado diferente. De manera alternativa, el módulo de codificado 470 se implementa como instrucciones almacenadas en la memoria 460 y ejecutadas por el procesador 430.
La memoria 460 puede comprender uno o más discos, unidades de cinta y unidades de estado sólido y puede usarse como dispositivo de almacenamiento de datos de desbordamiento, para almacenar programas cuando tales programas se seleccionan para su ejecución y para almacenar instrucciones y datos que se leen durante la ejecución del programa. La memoria 460 puede ser, por ejemplo, volátil o no volátil y puede ser memoria de solo lectura (ROM), memoria de acceso aleatorio (RAM), memoria ternaria de contenido direccionable (TCAM), y/o memoria estática de acceso aleatorio (SRAM).
La Fig. 5 es un diagrama de bloques simplificado de un aparato 500 que se puede usar como dispositivo de origen 12 y dispositivo de destino 14 de la Fig. 1A, o como ambos, según una realización ejemplar.
Un procesador 502 en el aparato 500 puede ser una unidad central de procesamiento. Alternativamente, el procesador 502 puede ser cualquier otro tipo de dispositivo, o múltiples dispositivos, capaces de manipular o procesar información existente en la actualidad o desarrollada en el futuro. Aunque las implementaciones descritas se pueden practicar con un solo procesador como se muestra, por ejemplo, el procesador 502, se pueden lograr ventajas en velocidad y eficiencia usando más de un procesador.
Una memoria 504 en el aparato 500 puede ser un dispositivo de memoria de solo lectura (ROM) o un dispositivo de memoria de acceso aleatorio (RAM) en una implementación. Cualquier otro tipo adecuado de dispositivo de almacenamiento se puede usar como memoria 504. La memoria 504 puede incluir código y datos 506 a los que accede el procesador 502 usando un bus 512. La memoria 504 puede incluir además un sistema operativo 508 y programas 510 de aplicación, incluyendo los programas 510 de aplicación al menos un programa que permita al procesador 502 realizar los métodos descritos aquí. Por ejemplo, los programas de aplicación 510 pueden incluir las aplicaciones 1 a N, que además incluyen una aplicación de codificado de vídeo que realiza los métodos descritos aquí.
El aparato 500 también puede incluir uno o más dispositivos de salida, tales como una pantalla 518. La pantalla 518 puede ser, en un ejemplo, una pantalla sensible al tacto que combina una pantalla con un elemento sensible al tacto que puede funcionar para detectar entradas táctiles. La pantalla 518 se puede acoplar al procesador 502 a través del bus 512.
Aunque representado aquí como un solo bus, el bus 512 del aparato 500 puede estar compuesto por múltiples buses. Además, el almacenamiento secundario 514 se puede acoplar directamente a los otros componentes del aparato 500 o se puede acceder a él a través de una red y puede comprender una única unidad integrada, tal como una tarjeta de memoria, o múltiples unidades, tales como varias tarjetas de memoria. Por lo tanto, el aparato 500 puede implementarse en una amplia variedad de configuraciones. La intrapredicción de muestras de croma se podría realizar utilizando muestras de bloques de luma reconstruidos.
Durante el desarrollo de HEVC se propuso la intrapredicción de croma del modelo lineal de componentes cruzados (CCLM) [J. Kim, S.-W. Park, J.-Y. Park, y B.-M. Jeon, Intra Chroma Prediction Using Inter Channel Correlation, documento JCTVC-B021, julio de 2010]. CCLM utiliza una correlación lineal entre una muestra de croma y una muestra de luma en la posición correspondiente en un bloque de codificado. Cuando se codifica un bloque de croma utilizando CCLM, se deriva un modelo lineal de las muestras de luma y croma vecinas reconstruidas mediante regresión lineal. Las muestras de croma en el bloque actual se pueden predecir a partir de las muestras de luma reconstruidas en el bloque actual con el modelo lineal derivado (véase la Fig. 6):
dondeCyLindican valores de croma y luma, respectivamente. Los parámetrosayf ise derivan mediante el método de mínimos cuadrados de la siguiente manera:
R {L,C)
R (L ,L)
dondeM(A)representa la media deAyR(A,B)se define de la siguiente manera:
Si la imagen codificada o decodificada tiene un formato que especifica un número diferente de muestras para los componentes de luminancia y croma (por ejemplo, formato 4:2:0 YCbCr), las muestras de luma se muestrean a menor escala antes del modelado y la predicción.
El método se ha adoptado para su uso en VTM2.0. Específicamente, la derivación de parámetros se realiza de la siguiente manera:
_ JVE(i(wR(w))-Ei(w)EC(w)
aN-2(L(n)L(n))-2L(n)-2L(n)’
„ _Y.CW-a-'ZUn)
P ~ 1V 5
dondeL(n)representa las muestras de luma reconstruidas vecinas superior e izquierda con muestreo descendente,C(n)representa las muestras de croma reconstruidas vecinas superior e izquierda.
En [G. Laroche, J. Taquet, C. Gisquet, P. Onno (Canon), "CE3: Cross-component linear model simplification (Test 5.1)", Documento de entrada a la 12.a Reunión de JVET en Macao, China, octubre de 2018] se propuso un método diferente para derivarayf i(véase la Fig. 7). En particular, los parámetros del modelo linealayfise obtienen según las siguientes ecuaciones:
_ C(B) -C(A)
a L (B )-L (A)
¡3 —¿04)aC(A\d o n de
dondeB= argmax(L(n)) yA= argmin(L(n)) son posiciones de valores máximos y mínimos en muestras de luma.
También se propuso implementar la operación de división utilizando la multiplicación por un número que se almacena en una tabla de búsqueda (LUT), que se especifica en la Tabla 1. Esta sustitución es posible utilizando el siguiente método:
donde S es un parámetro de desplazamiento que especifica la precisión.
La Tabla 1 proporciona la correspondencia del intervalo de índices de LUT (dado en la primera línea de la tabla) con las listas de valores almacenados en LUT, correspondiendo cada lista a su intervalo de índices. Se puede observar que los valores LUT[v-i] se pueden calcular de la siguiente manera:
Utilizando la LUT definida en la Tabla 1 (o calculada de manera equivalente utilizando la ecuación anterior), el cálculo dease realiza de la siguiente manera:
C(B)-C(A)
a= (iC(B) - C (i4)) ■ L U T [ L ( B ) -L(A)]» 5
L { B ) - L { A )
El parámetro de desplazamiento S se puede descomponer en varias partes, es decir, S = S0 Si, porque el valor dease utiliza en un cálculo adicional. Esta descomposición proporciona flexibilidad en la precisión de cálculo en diferentes escalones (step) y, por lo tanto, es posible redistribuir la profundidad de bits de las operaciones de multiplicación a lo largo de las etapas de obtención de un valor de una muestra de croma prevista. En la implementación particular:
S0 =1.
Si = 15,
S=Sq+S1= 16.
Tabla 1. Tabla LUT de ejemplo para implementar la operación de división utilizando la multiplicación por un número
En este caso, el coeficienteadel modelo lineal tiene una representación entera de punto fijo del valor fraccionario, la precisión dease determina por el valor de S1 = S - S0, que se utiliza para obtener un valor de una muestra de croma predicha:
precfc(i,j )= (a ■ rec[(l,j)) »S±+ /? ,
El tamaño de la LUT es bastante crítico en la implementación de hardware de un codificador o un decodificador. La forma más sencilla de resolver este problema es submuestrear una LUT regularmente conservando solo cada elemento w-ésimo (aquíNes una relación de submuestreo) de la LUT inicial especificada, es decir, en la Tabla 1.
Después de un submuestreo regular con una relación de submuestreo de potencia de dos deN,una búsqueda desde la LUT se define de manera diferente:
m=LUT[(L(B) -L(A)» log2(JV))]
en lugar de
m= LUT[L(B) -L(Á)]
Se puede observar que, para imágenes naturales, la probabilidad de que L(B) -L(A)tenga un valor pequeño es mayor que la probabilidad de que esta diferencia sea grande. En otras palabras, la probabilidad de ocurrencia del valor de la Tabla 1 disminuye de las columnas de la izquierda a las de la derecha, y dentro de cada columna esta probabilidad disminuye del primer al último elemento perteneciente a esa columna. En la Fig. 8 se muestra un ejemplo de dependencia de la probabilidad de ocurrencia con el valor deL(B)-L(A).
Por lo tanto, mantener sólo cada w ésim° elemento de la LUT inicial está lejos de ser óptimo, ya que corresponde con una distribución de probabilidad igual de su argumento, lo cual no es verdadero.
Al considerar esta distribución es posible lograr un mejor equilibrio entre el tamaño de la LUT y la precisión de los cálculos que el que podría proporcionar el submuestreo regular.
Se propone definir una LUT utilizando indexación no lineal, específicamente de tal manera que dos entradas LUT vecinas corresponderán a diferentes escalones de L(B) - L(A), y el valor de este escalón aumenta con el índice de la entrada. Una de las soluciones computacionalmente eficientes es determinar el índice dentro de una LUT utilizando varios bits más significativos de L(B) - L(A). La posición del bit más significativo de L(B) -L(A) define la precisión (es decir, el escalón entre las dos entradas vecinas de la LUT) en función de la posición de los bits más significativos. Los valores mayores de la posición del bit más significativo corresponden a una menor precisión y a un mayor valor de escalón.
Una realización particular se muestra en la Fig. 9 y la Fig. 10. La Fig. 9 muestra un diagrama de flujo del cálculo de valores LUT, y la Fig. 10 muestra cómo obtener un índice "idx" dentro de una LUT correspondiente a un valor de entrada de L(B) - L(A).
Al utilizar las etapas que se muestran en la Fig. 9, es posible obtener valores que se almacenarán en una LUT para su uso posterior en el modelado CCLM. En la Fig. 9, la variable "ctr" itera a través de todos los valores posibles de L(B) - L(A) - 1. Se puede observar que, de hecho, LUT tiene subintervalos, cada subintervalo comprende entradas "colmax". Dentro de un subintervalo, el valor "ctr" aumenta con el valor "etapa" igual. Un subintervalo que tiene un índice "lut_shift+1" mayor que 1 tiene un valor de "step" (escalón) correspondiente incrementado dos veces en comparación con el subintervalo "lut_shift". Los dos primeros subintervalos tendrían una etapa igual a uno debido a un umbral en la operación "etapa=1<<max(0,lut_shift)".
Como se muestra en la Fig. 9, el diagrama de flujo ilustra un proceso de generación de tabla de búsqueda ejemplar según una realización de la invención. En la etapa 902, el dispositivo de codificado de vídeo inicia el proceso de generación de la tabla de búsqueda. El dispositivo de codificado de vídeo puede ser un decodificador tal como el decodificador de vídeo 30 de la Fig. 1A-1B, Fig. 3, o un codificador tal como el codificador de vídeo 20 de la FIG. 1A-1B, Fig. 2, o el dispositivo de codificado de vídeo 400 de la Fig. 4, o el aparato 500 de la Fig. 5.
En la etapa 904, sea ctr=1 y lut_shift=1. En la etapa 906, se determina si el índice lut_shift< lut_shiftmax. Si lut_shift< lut_shiftmax, el escalón se calcula como 1<<max(0, lut_shift) y col=0 en la etapa 908; de lo contrario, el proceso de generación finaliza en la etapa 922. En la etapa 910, el desplazamiento inicial lo proporciona la etapa "ctr=ctr+(step>>1)". Luego, en la etapa 912 se determina si col<colmax. Si col<colmax, LUT[ctr]=(1<<S)/ctr en la etapa 914, aquí, los valores LUT pre calculados que se definen en las etapas 912 918 generan una fila de la LUT; de lo contrario, deje que el índice lut_shift= lut_shift+1 en la etapa 920. En la etapa 916, los valores de ctr correspondientes al inicio de cada subintervalo se establecen como ctrl+step. En la etapa 918, el proceso de generación pasa a la siguiente columna y luego el proceso vuelve a la etapa 912.
En la Tabla 2 se proporciona un LUT ejemplar generado utilizando un diagrama de flujo mostrado en la Figura 9. Una fila de esta tabla corresponde a un subintervalo que tiene un índice de "lut_shift". Esta tabla se obtuvo con "lut_shiftmax" igual a 6 y "colmax" igual a 3, lo que da como resultado 48 entradas dentro de una LUT. Los valores de ctr correspondientes al inicio de cada subintervalo (valor "col" cero) son los siguientes:
0, 8, 17, 35, 71, 143, 287.
Estos valores no siempre son una potencia de dos porque el submuestreo dentro de cada subintervalo se realiza con respecto a la mitad del subintervalo. El desplazamiento inicial correspondiente lo proporciona la etapa "ctr=ctr+(step>>1)" que se muestra en la Fig. 9. El valor de "step" (escalón) para valores de "lut_shift" no mayores que 0 se establece igual a 1.
Tabla 2. LUT ejemplar generada utilizando un diagrama de flujo mostrado en la Fig. 9
En la Fig. 10A, se está procesando una representación binaria 1001 de un valor de entrada (por ejemplo, una diferencia L(B) - L(A)) para determinar la posición de la entrada correspondiente en la LUT que se muestra en la Tabla 2. El bit distinto de cero más significativo del valor de entrada está marcado como 1002. La posición de este bit determina el valor "msb". De hecho, el valor msb es un log2() del valor de entrada 1001. Restar 1 de "msb" da el valor "lut_shift" que selecciona una fila en la Tabla 2. De lo contrario, el escalón se calcula como "1<<lut_shift".
La selección de columnas se realiza tomando los bits "colmax" próximos a 1002. El valor de "col" dentro de la Tabla 2 se obtiene de la siguiente manera:
- el valor de "high_bits" se obtiene seleccionando los bits "colmax+1" que siguen al bit más significativo 1020;
- col se establece igual al valor almacenado en "high_bits" decrementado en 1.
Para el caso en el que no se realiza la etapa de alineación "ctr=ctr+ (step>> 1)" en la Fig. 9, la derivación del valor "lut_shift" es la misma y la derivación del valor "col" es incluso más simple (Fig. 10B): el valor de "col" se obtiene seleccionando los bits "colmax" que siguen al bit más significativo 1020. Este método de derivación de índices corresponde a la Tabla 3. Los valores de "ctr" (Fig. 9) correspondientes al inicio de cada subintervalo (valor "col" cero) son los siguientes:
0, 8, 16, 32, 64, 128, 256
Tabla 3. Otra LUT ejemplar generada usando un diagrama de flujo mostrado en la Fig. 9 en caso de que se omita "ctr=ctr+(etapa>>1)"
Al derivar el valor de "col", msb puede ser menor o igual a "colmax". En este caso, el valor de "col" se establece igual a los bits menos significativos de "colmax" de la diferencia de entrada 1001.
En implementaciones prácticas, el índice LUT es unidimensional. Generalmente se entiende que las LUT que se muestran en la Tabla 2 y la Tabla 3 se pueden abordar de forma lineal utilizando un índice establecido igual a:
max(lutshift,0) • (1 « co]max)+col.
Ambas LUT que se muestran en la Tabla 2 y la Tabla 3 almacenan valores que son muy diferentes en su magnitud. Por lo tanto, es razonable tener un número similar de bits para todos los valores almacenados en la LUT. El valor que se obtiene de la LUT se puede desplazar aún más hacia la izquierda según el valor de lut_shift. La única excepción a esta regla son los primeros cuatro valores que tienen una precisión diferente a la de los últimos cuatro valores dentro de esta fila. Sin embargo, este problema podría resolverse con una LUT adicional que almacene estos cambios adicionales para los primeros cuatro valores. En este ejemplo, el valor del multiplicador se restaura a partir del valor obtenido de la LUT de la siguiente manera:
m= LUT[idx] « ms
dondems= 6 - (lutshift 1) 5. El valor de5se establece en 3, 2, 1, 1, respectivamente, para valores "idx" menores o iguales a 4. La tabla de consulta para este ejemplo se proporciona en la Tabla 4.
Tabla 4. Otra LUT ejemplar generada utilizando un diagrama de flujo mostrado en la Fig. 9 en caso de precisión igual dentro de los intervalos.
Se puede observar que las últimas filas de la Tabla 4 son muy similares entre sí. Por lo tanto, es posible reducir el tamaño de la LUT almacenando solo una fila para algunos conjuntos de subgrupos. En una realización particular, cuando un valor de " lut_shift" es mayor que un cierto umbral, el valor de lut_shift se establece igual al umbral y el valor de 5 se reduce por la diferencia entre el valor inicial de "lut_shift" y el valor del umbral.
La FIG. 11 es un diagrama de flujo que ilustra una intrapredicción ejemplar de una muestra de croma de un bloque mediante la aplicación de un modelo lineal de componentes cruzados. En la etapa 1102, un dispositivo de codificado de vídeo obtiene muestras de luma reconstruidas. El dispositivo de codificado de vídeo puede ser un decodificador tal como el decodificador de vídeo 30 de la Fig. 1A-1B, Fig. 3, o un codificador tal como el codificador de vídeo 20 de la FIG. 1A-1B, Fig. 2, o el dispositivo de codificado de vídeo 400 de la Fig. 4, o el aparato 500 de la Fig. 5.
En la etapa 1104, el dispositivo de codificado de vídeo determina las posiciones de los valores de muestra reconstruidos máximos y mínimos dentro de las muestras de luma reconstruidas. Por ejemplo, las muestras de luma reconstruidas son muestras de luma reconstruidas vecinas correspondientes a la muestra de croma.
En la etapa 1106, el dispositivo de codificado de vídeo obtiene el valor de la diferencia del máximo y el mínimo de las muestras de luma reconstruidas.
En la etapa 1108, el dispositivo de codificado de vídeo calcula un índice para una LUT para obtener un valor de un multiplicador que corresponde al valor de la diferencia entre el máximo y el mínimo de las muestras de luma reconstruidas.
Por ejemplo, el dispositivo de codificado de vídeo determina la posición del bit más significativo de la diferencia de los valores de muestra de luma máximo y mínimo, y utiliza un conjunto de bits que sigue a la posición del bit más significativo de la diferencia de los valores de muestra de luma máximo y mínimo como índice para que la LUT obtenga el valor. La posición del bit más significativo de la diferencia de los valores de muestra de luma máximo y mínimo se puede obtener como un logaritmo de dos de la diferencia. El dispositivo de codificado de vídeo determina el conjunto de bits que sigue la posición del bit más significativo de la diferencia. Como resultado posible, el conjunto de bits incluye cuatro bits.
LUT se genera con o sin una etapa de alineación. LUT puede incluir al menos dos valores vecinos almacenados en la LUT que corresponden a diferentes escalones de la diferencia obtenida, y el valor de este escalón aumenta con el valor de la diferencia o es una constante.
Como se describe en las tablas ejemplares 1 a 4, la LUT puede incluir subintervalos de valores. Una etapa del valor de la diferencia del máximo y el mínimo de las muestras de luma reconstruidas es constante dentro de un subintervalo; y una etapa para diferentes subintervalos es diferente. Como ejemplo, el escalón del valor de la diferencia del máximo y el mínimo de las muestras de luma reconstruidas aumenta con el aumento del índice de subintervalo. Por ejemplo, el escalón del valor de la diferencia del máximo y el mínimo de las muestras de luma reconstruidas puede ser una potencia de dos del índice de subintervalo.
Sea la LUT la que incluya al menos tres valores: un primer valor, un segundo valor y un tercer valor. Entre los tres valores, el primer valor y el segundo valor son dos valores vecinos, y el segundo valor y el tercer valor son dos valores vecinos. Un escalón (es decir, precisión o diferencia) entre el primer valor y el segundo valor puede ser igual o diferente a un escalón entre el segundo valor y el tercer valor. Si el primer valor se indexa por un primer conjunto de bits, y el segundo valor se indexa por un segundo conjunto de bits, el primer valor es menor que el segundo valor cuando un valor del primer conjunto de bits es mayor que un valor del segundo conjunto de bits; o el primer valor es mayor que el segundo valor cuando un valor del primer conjunto de bits es menor que un valor del segundo conjunto de bits.
La LUT se divide en subintervalos. Se determina un índice de subintervalo utilizando la posición del bit distinto de cero más significativo de la diferencia entre el máximo y el mínimo de las muestras de luma reconstruidas. A modo de ejemplo, el tamaño del subintervalo se establece en 8 y la cantidad de subintervalos es 6. Como otro ejemplo, diferentes subintervalos vecinos tienen diferentes aumentos de valor con el mismo escalón.
La LUT puede incluir índices no lineales. Dos entradas LUT vecinas corresponden a diferentes escalones deL(B)-L(A),dondeL(B)representa el valor máximo de las muestras de luma reconstruidas,L(A)representa el valor mínimo de las muestras de luma reconstruidas. El valor de un escalón de la entrada puede aumentar con el índice de la entrada.
Cuando LUT utiliza varios bits más significativos deL(B)-L(A),la posición del bit más significativo deL(B)-L(A)define la precisión (es decir, el escalón entre las dos entradas vecinas de la LUT) en función de la posición de los bits más significativos. Los valores mayores de la posición del bit más significativo pueden corresponder a una menor precisión y a un mayor valor de escalón.
En la etapa 1110, el dispositivo de codificado de vídeo obtiene los parámetros del modelo lineal a y p, multiplicando el valor obtenido por la diferencia de los valores máximo y mínimo de las muestras de croma reconstruidas.
En la etapa 1112, el dispositivo de codificado de vídeo calcula el valor de muestra de croma previsto utilizando los parámetros del modelo lineal obtenidos a y p.
La FIG. 12 es un diagrama de bloques que muestra una estructura de ejemplo de un aparato 1200 para la intrapredicción de una muestra de croma de un bloque mediante la aplicación de un modelo lineal de componentes cruzados. El aparato 1200 se configura para llevar a cabo los métodos anteriores y puede incluir:
una unidad de obtención 1210, configurada para obtener muestras de luma reconstruidas;
una unidad de determinación 1220, configurada para determinar valores de muestra de luma máximos y mínimos basándose en las muestras de luma reconstruidas;
la unidad de obtención 1210, configurada además para obtener una diferencia de los valores de muestra de luma máximo y mínimo. la unidad de determinación 1220, configurada además para determinar la posición del bit más significativo de la diferencia de los valores de muestra de luma máximo y mínimo. Como ejemplo, la posición del bit más significativo de la diferencia de los valores de muestra de luma máximo y mínimo es un logaritmo de dos de la diferencia. Como implementación, el bit más significativo es el primer bit distinto de cero.
El aparato 1200 incluye además una unidad de cálculo 1230, configurada para obtener un valor de una tabla de búsqueda (LUT) utilizando un conjunto de bits como índice, el conjunto de bits sigue la posición del bit más significativo de la diferencia de los valores de muestra de luma máximo y mínimo, obtener los parámetros de modelo lineal a y p en función del valor obtenido; y calcular un valor de muestra de croma previsto utilizando los parámetros de modelo lineal obtenidos a y p. Por ejemplo, el conjunto de bits comprende cuatro bits
La unidad de cálculo puede obtener los parámetros del modelo lineal a y p, basándose en el valor obtenido y una diferencia de valores máximos y mínimos de muestras de croma reconstruidas. Por ejemplo, la unidad de cálculo obtiene los parámetros del modelo lineal a y p multiplicando el valor obtenido por la diferencia de los valores máximo y mínimo de las muestras de croma reconstruidas.
Beneficio de las realizaciones de la invención
1. El índice de la LUT se calcula de una manera elegante que extrae varios bits en representación binaria. Como resultado, aumenta la eficiencia para obtener el valor de la LUT.
2. Dado que aumenta la eficiencia para obtener el valor de la LUT, se minimiza la magnitud del multiplicador para obtener los parámetros del modelo lineal a y p.
3. Se minimiza el tamaño de LUT. La curva de la función de división (f(x) = 1/x, conocida como hipérbola) en las realizaciones de esta invención se aproximó de la siguiente manera:
1) El tamaño de tabla LUT puede ser 16
i. (número mínimo de entradas para la aproximación de la curva 1/x cuya derivada varía de 0 a infinito)
2) Los elementos de LUT tienen una dependencia no lineal del índice de entrada
i. (para aproximar la curva 1/x)
3) Los multiplicadores (elementos de LUT) son números enteros sin signo de 3 bits (0... 7)
i. (precisión mínima para la aproximación de la curva 1/x cuya derivada varía de 0 a infinito)
A continuación se presenta una explicación de las aplicaciones del método de codificación así como del método de decodificación como se muestra en las realizaciones mencionadas anteriormente, y un sistema que los utiliza.
La FIG. 13 es un diagrama de bloques que muestra un sistema de suministro de contenido 3100 para realizar un servicio de distribución de contenido. Este sistema de suministro de contenido 3100 incluye un dispositivo de captura 3102, un dispositivo terminal 3106 y, opcionalmente, incluye una pantalla 3126. El dispositivo de captura 3102 se comunica con el dispositivo terminal 3106 a través del enlace de comunicación 3104. El enlace de comunicación puede incluir el canal de comunicación 13 descrito anteriormente. El enlace de comunicación 3104 incluye, entre otros, WIFI, Ethernet, cable, inalámbrico (3G/4G/5G), USB o cualquier tipo de combinación de los mismos, o similares.
El dispositivo de captura 3102 genera datos y puede codificar los datos mediante el método de codificación como se muestra en las realizaciones anteriores. Alternativamente, el dispositivo de captura 3102 puede distribuir los datos a un servidor de transmisión (no mostrado en las Figuras), y el servidor codifica los datos y transmite los datos codificados al dispositivo terminal 3106. El dispositivo de captura 3102 incluye, entre otros, una cámara, un teléfono inteligente o Pad, un ordenador o portátil, un sistema de videoconferencia, una PDA, un dispositivo montado en un vehículo o una combinación de cualquiera de ellos, o similares. Por ejemplo, el dispositivo de captura 3102 puede incluir el dispositivo de origen 12 como se ha descrito anteriormente. Cuando los datos incluyen vídeo, el codificador de vídeo 20 incluido en el dispositivo de captura 3102 puede realmente realizar el procesamiento de codificación de vídeo. Cuando los datos incluyen audio (es decir, voz), un codificador de audio incluido en el dispositivo de captura 3102 puede realmente realizar el procesamiento de codificación de audio. Para algunos escenarios prácticos, el dispositivo de captura 3102 distribuye los datos de audio y vídeo codificados multiplexándolos juntos. Para otros escenarios prácticos, por ejemplo en el sistema de videoconferencia, los datos de audio codificados y los datos de vídeo codificados no se multiplexan. El dispositivo de captura 3102 distribuye los datos de audio codificados y los datos de vídeo codificados al dispositivo terminal 3106 por separado.
En el sistema de suministro de contenido 3100, el dispositivo terminal 310 recibe y reproduce los datos codificados. El dispositivo terminal 3106 podría ser un dispositivo con capacidad de recepción y recuperación de datos, tal como un teléfono inteligente o Pad 3108, una ordenador o portátil 3110, una grabadora de vídeo en red (NVR)/grabadora de vídeo digital (DVR) 3112, un televisor 3114, un decodificador (STB) 3116, un sistema de videoconferencia 3118, un sistema de videovigilancia 3120, un asistente digital personal (PDA) 3122, un dispositivo montado en un vehículo 3124, o una combinación de cualquiera de ellos, o similar capaz de decodificar los datos codificados mencionados anteriormente. Por ejemplo, el dispositivo terminal 3106 puede incluir el dispositivo de destino 14 como se ha descrito anteriormente. Cuando los datos codificados incluyen vídeo, el decodificador de vídeo 30 incluido en el dispositivo terminal tiene prioridad para realizar la decodificación de vídeo. Cuando los datos codificados incluyen audio, se prioriza un decodificador de audio incluido en el dispositivo terminal para realizar el procesamiento de decodificación de audio.
Para un dispositivo terminal con su pantalla, por ejemplo, un teléfono inteligente o Pad 3108, un ordenador o portátil 3110, una grabadora de vídeo en red (NVR)/grabadora de vídeo digital (DVR) 3112, un televisor 3114, un asistente digital personal (PDA) 3122 o un dispositivo montado en un vehículo 3124, el dispositivo terminal puede alimentar los datos decodificados a su pantalla. Para un dispositivo terminal no equipado con pantalla, por ejemplo, STB 3116, sistema de videoconferencia 3118 o sistema de videovigilancia 3120, se contacta con una pantalla externa 3126 para recibir y mostrar los datos decodificados.
Cuando cada dispositivo en este sistema realiza codificación o decodificación, se puede utilizar el dispositivo de codificación de imágenes o el dispositivo de decodificación de imágenes, como se muestra en las realizaciones mencionadas anteriormente.
La FIG. 14 es un diagrama que muestra una estructura de un ejemplo del dispositivo terminal 3106. Después de que el dispositivo terminal 3106 recibe la transmisión del dispositivo de captura 3102, la unidad de procedimiento de protocolo 3202 analiza el protocolo de transmisión de la transmisión. El protocolo incluye, entre otros, el Protocolo de transmisión en tiempo real (RTSP), el Protocolo de transferencia de hipertexto (HTTP), el Protocolo de transmisión en vivo HTTP (HLS), MPEG-DASH, el Protocolo de transporte en tiempo real (RTP), el Protocolo de mensajería en tiempo real (RTMP) o cualquier tipo de combinación de los mismos o similares.
Después de que la unidad de procedimiento de protocolo 3202 procesa la secuencia, se genera un archivo de secuencia. El archivo se envía a una unidad demultiplexora 3204. La unidad demultiplexora 3204 puede separar los datos multiplexados en los datos de audio codificados y los datos de vídeo codificados. Como se ha descrito anteriormente, para algunos escenarios prácticos, por ejemplo en sistemas de videoconferencias, los datos de audio codificados y los datos de vídeo codificados no se multiplexan. En esta situación, los datos codificados se transmiten al decodificador de vídeo 3206 y al decodificador de audio 3208 sin pasar por la unidad demultiplexora 3204.
A través del procesamiento de demultiplexación, se generan flujos elementales de vídeo (ES), ES de audio y, opcionalmente, subtítulos. El decodificador de vídeo 3206, que incluye el decodificador de vídeo 30 como se ha explicado en las realizaciones mencionadas anteriormente, decodifica el vídeo ES mediante el método de decodificación como se muestra en las realizaciones mencionadas anteriormente para generar un fotograma de vídeo, y envía estos datos a la unidad sincrónica 3212. El decodificador de audio 3208 decodifica el audio ES para generar una trama de audio y envía estos datos a la unidad sincrónica 3212. Alternativamente, el fotograma de vídeo puede almacenarse en un búfer (no se muestra en la FIG. Y) antes de alimentarlo a la unidad sincrónica 3212. De manera similar, la trama de audio se puede almacenar en un búfer (no se muestra en la FIG. Y) antes de alimentarlo a la unidad sincrónica 3212.
La unidad sincrónica 3212 sincroniza el fotograma de vídeo y la trama de audio, y suministra el vídeo/audio a una pantalla de vídeo/audio 3214. Por ejemplo, la unidad sincrónica 3212 sincroniza la presentación de la información de vídeo y audio. La información puede codificarse en la sintaxis utilizando marcas de tiempo relativas a la presentación de datos de audio y visuales codificados y marcas de tiempo relativas a la entrega del flujo de datos en sí.
Si se incluye un subtítulo en la transmisión, el decodificador de subtítulos 3210 decodifica el subtítulo y lo sincroniza con el fotograma de vídeo y la trama de audio, y suministra el vídeo/audio/subtítulo a una pantalla de vídeo/audio/subtítulo 3216.
La presente invención no se limita al sistema mencionado anteriormente, y tanto el dispositivo de codificación de imágenes como el dispositivo de decodificación de imágenes en las realizaciones mencionadas anteriormente se pueden incorporar en otro sistema, por ejemplo, un sistema de automóvil.
Aunque las realizaciones de la invención se han descrito principalmente en función de la codificación de vídeo, cabe señalar que las realizaciones del sistema de codificación 10, el codificador 20 y el decodificador 30 (y correspondientemente el sistema 10) y las otras realizaciones descritas en esta memoria también pueden configurarse para el procesamiento o codificación de imágenes fijas, es decir, el procesamiento o codificación de una imagen individual independientemente de cualquier imagen precedente o consecutiva como en la codificación de vídeo. En general, es posible que solo las unidades de interpredicción 244 (codificador) y 344 (decodificador) no estén disponibles en caso de que la codificación del procesamiento de imágenes esté limitada a una sola imagen 17. Todas las demás funcionalidades (también denominadas herramientas o tecnologías) del codificador de vídeo 20 y del decodificador de vídeo 30 pueden utilizarse igualmente para el procesamiento de imágenes fijas, por ejemplo, cálculo residual 204/304, transformación 206, cuantización 208, cuantización inversa 210/310, transformada (inversa) 212/312, partición 262/362, intrapredicción 254/354 y/o filtrado de bucle 220, 320 y codificación entrópica 270 y decodificación entrópica 304.
Las realizaciones, por ejemplo del codificador 20 y el decodificador 30, y las funciones descritas en esta memoria, por ejemplo con referencia al codificador 20 y al decodificador 30, se pueden implementar en hardware, software, firmware o cualquier combinación de los mismos. Si se implementan en software, las funciones pueden almacenarse en un soporte legible por ordenador o transmitirse por medios de comunicación como una o más instrucciones o código y ejecutarse por una unidad de procesamiento basada en hardware. Los medios legibles por ordenador pueden incluir soportes de almacenamiento legibles por ordenador, que corresponden a un medio tangible tal como un soporte de almacenamiento de datos, o medios de comunicación incluyendo cualquier medio que facilite la transferencia de un programa de ordenador de un lugar a otro, por ejemplo, según un protocolo de comunicación. De esta manera, los medios legibles por ordenador generalmente pueden corresponder a (1) soportes 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 soportes de almacenamiento de datos pueden ser cualquier medio disponible al que puedan acceder una o más ordenadores o uno o más procesadores para recuperar instrucciones, códigos y/o estructuras de datos para la implementación de las técnicas descritas en esta divulgación. Un producto de programa informático puede incluir un medio legible por ordenador.
A modo de ejemplo, y sin limitación: tales medios legibles por ordenador pueden comprender RAM, ROM, EEPROM, c D-ROm u otro almacenamiento de disco óptico, almacenamiento de disco magnético, memoria flash, o cualquier otro medio que se pueda usar para almacenar el código de programa deseado en forma de instrucciones o estructuras de datos, y al que pueda acceder un ordenador. Además, cualquier conexión se denomina apropiadamente un medio legible por ordenador. Por ejemplo, si se transmiten instrucciones desde un sitio web, un servidor u otra fuente remota utilizando un cable coaxial, un cable de fibra óptica, un cable de par trenzado, una línea de abonado digital (DSL) o tecnologías inalámbricas como infrarrojos, radio y microondas, entonces el cable coaxial, el cable de fibra óptica, el par trenzado, la DSL o tecnologías inalámbricas como infrarrojos, radio y microondas se incluyen en la definición de medio. Debe entenderse, sin embargo, que los soportes de almacenamiento legibles por ordenador y los soportes de almacenamiento de datos no incluyen conexiones, ondas portadoras, señales u otros medios transitorios, sino que se refieren a soportes de almacenamiento tangibles no transitorios. Disco y disquete, como se usan en esta memoria, incluyen un disco compacto (CD), un disco láser, un disco óptico, un disco versátil digital (DVD), un disquete y un disco blu-ray, donde los discos magnéticos generalmente reproducen datos magnéticamente, mientras que los discos reproducen datos ópticamente con láser. También deben incluirse combinaciones de los antemencionados dentro del alcance 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 (DSP), microprocesadores de propósito general, circuitos integrados de aplicación específica (ASIC), matrices lógicas programables en campo (FPGA) u otros circuitos lógicos integrados o discretos equivalentes. En consecuencia, el término "procesador", tal como se utiliza en esta memoria, puede referirse a cualquiera de las estructuras anteriores o a cualquier otra estructura adecuada para la implementación de las técnicas descritas en esta memoria. Además, en algunos aspectos, la funcionalidad descrita en esta memoria puede proporcionarse dentro de módulos de hardware y/o software dedicados configurados para codificar y decodificar, o incorporados en un códec combinado. Además, las técnicas podrían implementarse completamente en uno o más circuitos o elementos lógicos.
Las técnicas de esta divulgación se pueden implementar en una amplia variedad de dispositivos o aparatos, incluyendo un teléfono inalámbrico, un circuito integrado (CI) o un conjunto de CI (por ejemplo, un conjunto de chips). En esta divulgación se describen diversos componentes, módulos o unidades para enfatizar aspectos funcionales de los dispositivos configurados para realizar las técnicas divulgadas, pero que no requieren necesariamente su realización por diferentes unidades de hardware. En cambio, como se ha descrito anteriormente, diversas unidades pueden combinarse en una unidad de hardware de códec o proporcionarse mediante una colección de unidades de hardware interoperativas, incluidos uno o más procesadores como se ha descrito anteriormente, junto con un software y/o firmware adecuado.
Claims (7)
1. Un método para intrapredicción de una muestra de croma de un bloque mediante la aplicación de un modelo lineal de componentes cruzados, que comprende:
obtener (1102) muestras de luma reconstruidas;
determinar (1104) valores de muestra de luma máximos y mínimos basados en las muestras de luma reconstruidas;
obtener (1106) una diferencia de los valores máximo y mínimo de la muestra de luma;
determinar la posición del bit más significativo de la diferencia de los valores de muestra de luma máximo y mínimo, en donde la posición del bit más significativo de la diferencia de los valores de muestra de luma máximo y mínimo se obtiene como un log2() de la diferencia;
obtener (1108) un valor de una tabla de búsqueda (LUT) mediante el uso de un índice, en donde uno o más bits del índice se determinan en función de la posición del bit más significativo de la diferencia de los valores de muestra de luma máximo y mínimo y los bits restantes del índice se determinan según un conjunto de bits que sigue a la posición del bit más significativo de la diferencia de los valores de muestra de luma máximo y mínimo, consistiendo el conjunto de bits en tres o cuatro bits;
obtener (1110) parámetros de modelo lineal a y p en función del valor obtenido, en donde al obtener el parámetro a, se implementa una operación de división utilizando la multiplicación por el valor obtenido y un desplazamiento a la derecha por un parámetro de desplazamiento Sü, y en donde el parámetro p se obtiene en función del parámetro a; y
calcular (1112) un valor de muestra de croma previsto utilizando los parámetros de modelo lineal obtenidos a y p, en donde se realiza un desplazamiento hacia la derecha adicional mediante un parámetro de desplazamiento S<1>en una multiplicación del parámetro de modelo lineal a y un valor de muestra de luma.
2. El método de la reivindicación 1, en donde el método comprende:
obtener los parámetros del modelo lineal a y p, basándose en el valor obtenido y una diferencia de valores máximos y mínimos de muestras de croma reconstruidas.
3. El método de la reivindicación 2, en donde el método comprende:
obtener los parámetros del modelo lineal a multiplicando el valor obtenido por la diferencia de los valores máximo y mínimo de las muestras de croma reconstruidas.
4. Un aparato (1200) para intraprección de una muestra de croma de un bloque mediante la aplicación de un modelo lineal de componentes cruzados, en donde el aparato es un codificador o un decodificador, y el aparato comprende:
una unidad de obtención (1210), configurada para obtener muestras de luma reconstruidas;
una unidad de determinación (1220), configurada para determinar valores de muestra de luma máximos y mínimos basándose en las muestras de luma reconstruidas;
la unidad de obtención (1210), configurada además para obtener una diferencia de los valores de muestra de luma máximo y mínimo;
la unidad de determinación (1220), configurada además para determinar la posición del bit más significativo de la diferencia de los valores de muestra de luma máximo y mínimo, en donde la posición del bit más significativo de la diferencia de los valores de muestra de luma máximo y mínimo se obtiene como un log2() de la diferencia; una unidad de cálculo (1230), configurada para obtener un valor de una tabla de búsqueda (LUT) usando un índice, en donde uno o más bits del índice se determinan en función de la posición del bit más significativo de la diferencia de los valores de muestra de luma máximo y mínimo y los bits restantes del índice se determinan según un conjunto de bits que sigue a la posición del bit más significativo de la diferencia de los valores de muestra de luma máximo y mínimo, consistiendo el conjunto de bits en tres o cuatro bits, obtener parámetros de modelo lineal a y p en función del valor obtenido; y calcular un valor de muestra de croma previsto mediante el uso de los parámetros de modelo lineal obtenidos a y p, en donde al obtener el parámetro a, se implementa una operación de división mediante la multiplicación por el valor obtenido y un desplazamiento a la derecha mediante un parámetro de desplazamiento S<ü>, y en donde el parámetro p se obtiene en función del parámetro a; y en donde al calcular el valor de muestra de croma previsto, se realiza un desplazamiento adicional hacia la derecha mediante un parámetro de desplazamiento S<1>en una multiplicación del parámetro de modelo lineal a y un valor de muestra de luma.
5. El aparato según la reivindicación 4, en donde la unidad de cálculo (1230) se configura para: obtener los parámetros del modelo lineal a y p, basándose en el valor obtenido y una diferencia de valores máximos y mínimos de muestras de croma reconstruidas.
6. El aparato según la reivindicación 5, en donde la unidad de cálculo (1230) se configura para: obtener los parámetros del modelo lineal a multiplicando el valor obtenido por la diferencia de los valores máximo y mínimo de las muestras de croma reconstruidas.
7. Un codificador (12; 20) o un decodificador (14; 30) que comprende circuitería de procesamiento para llevar a cabo el método según cualquiera de las reivindicaciones 1 a 3.
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US201862786563P | 2018-12-31 | 2018-12-31 | |
| PCT/RU2019/050261 WO2020141985A1 (en) | 2018-12-31 | 2019-12-30 | Method and apparatus of cross-component linear modeling for intra prediction |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| ES2988839T3 true ES2988839T3 (es) | 2024-11-21 |
Family
ID=71407089
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| ES19907489T Active ES2988839T3 (es) | 2018-12-31 | 2019-12-30 | Método y aparato de modelización lineal de componentes cruzados para intrapredicción |
Country Status (17)
| Country | Link |
|---|---|
| US (3) | US11930209B2 (es) |
| EP (2) | EP3900332B1 (es) |
| JP (4) | JP7247349B2 (es) |
| KR (2) | KR20250079075A (es) |
| CN (2) | CN115665407B (es) |
| AU (3) | AU2019419322B2 (es) |
| BR (1) | BR112021012708A2 (es) |
| ES (1) | ES2988839T3 (es) |
| HU (1) | HUE068334T2 (es) |
| IL (1) | IL284455A (es) |
| MX (1) | MX2021007999A (es) |
| MY (1) | MY209420A (es) |
| PL (1) | PL3900332T3 (es) |
| SG (1) | SG11202107170VA (es) |
| UA (1) | UA128739C2 (es) |
| WO (1) | WO2020141985A1 (es) |
| ZA (1) | ZA202105346B (es) |
Families Citing this family (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| GB2571313B (en) * | 2018-02-23 | 2022-09-21 | Canon Kk | New sample sets and new down-sampling schemes for linear component sample prediction |
| CN116781915A (zh) * | 2018-12-13 | 2023-09-19 | 华为技术有限公司 | 色度块的预测方法和装置 |
| JP7247349B2 (ja) * | 2018-12-31 | 2023-03-28 | ホアウェイ・テクノロジーズ・カンパニー・リミテッド | イントラ予測のための成分間線形モデリングの方法、装置、デコーダ、エンコーダ、およびプログラム |
| US11800124B2 (en) * | 2020-07-28 | 2023-10-24 | Beijing Dajia Internet Information Technology Co., Ltd. | Chroma coding enhancement in cross-component sample adaptive offset |
| US20240397074A1 (en) * | 2023-05-23 | 2024-11-28 | Tencent America LLC | Enhancement for block adaptive weighted prediction |
| CN116708844A (zh) * | 2023-06-21 | 2023-09-05 | 支付宝(杭州)信息技术有限公司 | 一种编码方法、解码方法、装置、介质及计算设备 |
| US20250247520A1 (en) * | 2024-01-26 | 2025-07-31 | Tencent America LLC | Simplified Multi-Hypothesis Cross Component Prediction Models |
Family Cites Families (30)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP3413720B2 (ja) * | 1998-06-26 | 2003-06-09 | ソニー株式会社 | 画像符号化方法及び装置、並びに画像復号方法及び装置 |
| US7847973B2 (en) * | 2004-01-30 | 2010-12-07 | Broadcom Corporation | Color mapping circuit |
| CN101317460A (zh) * | 2005-10-11 | 2008-12-03 | 诺基亚公司 | 用于有效的可伸缩流适配的系统和方法 |
| US7957589B2 (en) * | 2007-01-25 | 2011-06-07 | Qualcomm Mems Technologies, Inc. | Arbitrary power function using logarithm lookup table |
| KR101365444B1 (ko) * | 2007-11-19 | 2014-02-21 | 삼성전자주식회사 | 영상의 해상도의 조정을 통하여 동영상을 효율적으로부호화/복호화하는 방법 및 장치 |
| US7911371B2 (en) * | 2009-02-26 | 2011-03-22 | Northrop Grumman Systems Corporation | Extraction of relative signals from closely spaced targets in a monopulse system |
| US9674521B2 (en) | 2011-06-28 | 2017-06-06 | Samsung Electronics Co., Ltd. | Prediction method and apparatus for chroma component of image using luma component of image |
| KR20130049526A (ko) * | 2011-11-04 | 2013-05-14 | 오수미 | 복원 블록 생성 방법 |
| CN103096055B (zh) * | 2011-11-04 | 2016-03-30 | 华为技术有限公司 | 一种图像信号帧内预测及解码的方法和装置 |
| US9031319B2 (en) * | 2012-05-31 | 2015-05-12 | Apple Inc. | Systems and methods for luma sharpening |
| US9161039B2 (en) * | 2012-09-24 | 2015-10-13 | Qualcomm Incorporated | Bitstream properties in video coding |
| CN104919803B (zh) * | 2013-01-15 | 2017-09-12 | 华为技术有限公司 | 一种用于解码视频比特流的方法 |
| KR102106538B1 (ko) * | 2013-10-08 | 2020-05-04 | 삼성전자주식회사 | 수치 연산을 처리하는 장치 및 방법 |
| CA2972332C (en) * | 2014-12-31 | 2019-09-17 | Nokia Technologies Oy | Inter-layer prediction for scalable video coding and decoding |
| GB2534136A (en) * | 2015-01-12 | 2016-07-20 | Nokia Technologies Oy | An apparatus, a method and a computer program for video coding and decoding |
| US10209957B2 (en) * | 2015-05-04 | 2019-02-19 | Samsung Electronics Co., Ltd. | Partial remainder/divisor table split implementation |
| US10126966B1 (en) * | 2015-08-27 | 2018-11-13 | Google Llc | Rotated memory storage for fast first-bit read access |
| US10121231B2 (en) * | 2016-02-01 | 2018-11-06 | Texas Instruments Incorporated | Adaptive bilateral (BL) filtering for computer vision |
| US10484712B2 (en) * | 2016-06-08 | 2019-11-19 | Qualcomm Incorporated | Implicit coding of reference line index used in intra prediction |
| WO2018051346A1 (en) * | 2016-09-14 | 2018-03-22 | Yossef Raichman | Smoking device |
| US10652575B2 (en) * | 2016-09-15 | 2020-05-12 | Qualcomm Incorporated | Linear model chroma intra prediction for video coding |
| JP6763285B2 (ja) * | 2016-11-29 | 2020-09-30 | セイコーエプソン株式会社 | シェーディング補正装置、電子機器、及びシェーディング補正方法 |
| US11025903B2 (en) * | 2017-01-13 | 2021-06-01 | Qualcomm Incorporated | Coding video data using derived chroma mode |
| US10419758B2 (en) * | 2017-03-16 | 2019-09-17 | Mediatek Inc. | Non-local adaptive loop filter processing |
| WO2019204672A1 (en) * | 2018-04-19 | 2019-10-24 | Huawei Technologies Co., Ltd. | Interpolation filter for an intra prediction apparatus and method for video coding |
| US10609402B2 (en) * | 2018-05-02 | 2020-03-31 | Tencent America LLC | Method and apparatus for prediction and transform for small blocks |
| JP7714460B2 (ja) | 2018-11-06 | 2025-07-29 | 北京字節跳動網絡技術有限公司 | イントラ予測のためのパラメータ導出における複雑性低減 |
| US11095921B2 (en) | 2018-12-18 | 2021-08-17 | Tencent America LLC | Method and apparatus for video encoding or decoding |
| KR20210113188A (ko) * | 2018-12-21 | 2021-09-15 | 브이아이디 스케일, 인크. | 템플릿 기반 비디오 코딩을 위한 개선된 선형 모델 추정에 관한 방법들, 아키텍처들, 장치들 및 시스템들 |
| JP7247349B2 (ja) * | 2018-12-31 | 2023-03-28 | ホアウェイ・テクノロジーズ・カンパニー・リミテッド | イントラ予測のための成分間線形モデリングの方法、装置、デコーダ、エンコーダ、およびプログラム |
-
2019
- 2019-12-30 JP JP2021538039A patent/JP7247349B2/ja active Active
- 2019-12-30 KR KR1020257017427A patent/KR20250079075A/ko active Pending
- 2019-12-30 PL PL19907489.9T patent/PL3900332T3/pl unknown
- 2019-12-30 HU HUE19907489A patent/HUE068334T2/hu unknown
- 2019-12-30 WO PCT/RU2019/050261 patent/WO2020141985A1/en not_active Ceased
- 2019-12-30 UA UAA202104391A patent/UA128739C2/uk unknown
- 2019-12-30 ES ES19907489T patent/ES2988839T3/es active Active
- 2019-12-30 BR BR112021012708-9A patent/BR112021012708A2/pt unknown
- 2019-12-30 MY MYPI2021003653A patent/MY209420A/en unknown
- 2019-12-30 CN CN202211067848.7A patent/CN115665407B/zh active Active
- 2019-12-30 KR KR1020217023320A patent/KR102814887B1/ko active Active
- 2019-12-30 EP EP19907489.9A patent/EP3900332B1/en active Active
- 2019-12-30 SG SG11202107170VA patent/SG11202107170VA/en unknown
- 2019-12-30 CN CN201980087352.6A patent/CN113287301A/zh active Pending
- 2019-12-30 AU AU2019419322A patent/AU2019419322B2/en active Active
- 2019-12-30 EP EP24191398.7A patent/EP4447449A3/en active Pending
- 2019-12-30 MX MX2021007999A patent/MX2021007999A/es unknown
-
2021
- 2021-06-28 IL IL284455A patent/IL284455A/en unknown
- 2021-06-29 US US17/361,692 patent/US11930209B2/en active Active
- 2021-07-28 ZA ZA2021/05346A patent/ZA202105346B/en unknown
-
2023
- 2023-03-15 JP JP2023041332A patent/JP7508621B2/ja active Active
-
2024
- 2024-01-30 US US18/427,084 patent/US12489919B2/en active Active
- 2024-02-20 AU AU2024201095A patent/AU2024201095B2/en active Active
- 2024-06-19 JP JP2024098659A patent/JP7669571B2/ja active Active
-
2025
- 2025-04-16 JP JP2025067286A patent/JP2025111541A/ja active Pending
- 2025-11-10 US US19/384,076 patent/US20260067498A1/en active Pending
-
2026
- 2026-01-08 AU AU2026200100A patent/AU2026200100A1/en active Pending
Also Published As
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US11765343B2 (en) | Inter prediction method and apparatus | |
| CN113039798B (zh) | 解码设备实现的译码方法及解码器 | |
| ES2989421T3 (es) | Un codificador, un decodificador y métodos correspondientes para la intrapredicción | |
| ES2988839T3 (es) | Método y aparato de modelización lineal de componentes cruzados para intrapredicción | |
| CN113841405B (zh) | 用于帧间预测的局部光照补偿的方法和设备 | |
| CA3122137C (en) | An encoder, a decoder and corresponding methods of boundary strength derivation of deblocking filter | |
| ES2992659T3 (en) | Method and apparatus for prediction refinement with optical flow for an affine coded block | |
| ES2987742T3 (es) | Método y aparato para intrapredicción | |
| CN113748677A (zh) | 编码器、解码器及对应的帧内预测方法 | |
| ES3014838T3 (en) | Method for deriving interpolation filter index for a current block; devices for video compression | |
| US20210289222A1 (en) | Encoder, decoder and corresponding methods of most probable mode list construction for blocks with multi-hypothesis prediction | |
| ES2984615T3 (es) | Interpredicción de video basada en flujo óptico | |
| EP3864846A1 (en) | An encoder, a decoder and corresponding methods for merge mode | |
| CN114026864A (zh) | 用于几何分割模式的色度样本权重推导 | |
| ES2992660T3 (en) | Method and apparatus for chroma intra prediction in video coding | |
| ES3056161T3 (en) | An encoder, a decoder, and corresponding methods that are used for transform process | |
| ES2946058T3 (es) | Un codificador, un decodificador y los métodos correspondientes que usan la codificación intramodo para la intrapredicción | |
| CN114830652A (zh) | 用于方向性帧内预测的参考样本插值滤波的方法及装置 | |
| EP3895418A1 (en) | An encoder, a decoder and corresponding methods for local illumination compensation | |
| WO2021034231A2 (en) | Method and apparatus of position dependent prediction combination for oblique directional intra prediction | |
| WO2021006773A1 (en) | Motion field storage optimization for the line buffer | |
| BR122024001393A2 (pt) | Codificador, decodificador e métodos correspondentes para sinalização de subimagem em conjunto de parâmetros de sequência | |
| BR122024000821A2 (pt) | Método de codificar um número máximo de candidatos a modo de mesclagem de particionamento geométrico, aparelho de codificação de vídeo, codificador, meio legível por computador não transitório e meio de armazenamento legível por computador não transitório | |
| HK40052579A (en) | Method and apparatus of cross-component linear modeling for intra prediction | |
| HK40052579B (en) | Method and apparatus of cross-component linear modeling for intra prediction |