ES2989520T3 - Métodos de codificación y de descodificación de vídeo - Google Patents
Métodos de codificación y de descodificación de vídeo Download PDFInfo
- Publication number
- ES2989520T3 ES2989520T3 ES22211018T ES22211018T ES2989520T3 ES 2989520 T3 ES2989520 T3 ES 2989520T3 ES 22211018 T ES22211018 T ES 22211018T ES 22211018 T ES22211018 T ES 22211018T ES 2989520 T3 ES2989520 T3 ES 2989520T3
- Authority
- ES
- Spain
- Prior art keywords
- luma
- samples
- value
- chroma
- neighboring
- 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 89
- 241000023320 Luma <angiosperm> Species 0.000 claims description 551
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 claims description 551
- 238000013139 quantization Methods 0.000 claims description 17
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 claims description 15
- 230000008569 process Effects 0.000 claims description 11
- 230000007246 mechanism Effects 0.000 description 101
- 239000000523 sample Substances 0.000 description 48
- 238000012545 processing Methods 0.000 description 28
- 238000010586 diagram Methods 0.000 description 24
- 238000003860 storage Methods 0.000 description 23
- 239000002609 medium Substances 0.000 description 19
- 238000004891 communication Methods 0.000 description 18
- 239000013598 vector Substances 0.000 description 18
- 230000005540 biological transmission Effects 0.000 description 12
- 230000006835 compression Effects 0.000 description 9
- 238000007906 compression Methods 0.000 description 9
- 238000000638 solvent extraction Methods 0.000 description 9
- 239000006163 transport media Substances 0.000 description 9
- 238000013500 data storage Methods 0.000 description 7
- 238000005192 partition Methods 0.000 description 6
- 230000003044 adaptive effect Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 4
- 238000005070 sampling Methods 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
- 238000013507 mapping Methods 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 230000002123 temporal effect Effects 0.000 description 3
- 230000001052 transient effect Effects 0.000 description 3
- 101100155952 Escherichia coli (strain K12) uvrD gene Proteins 0.000 description 2
- 230000002457 bidirectional effect Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012432 intermediate storage Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/103—Selection of coding mode or of prediction mode
- H04N19/11—Selection of coding mode or of prediction mode among a plurality of spatial predictive coding modes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/124—Quantisation
-
- 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/13—Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
-
- 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/132—Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
-
- 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/157—Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
- H04N19/159—Prediction type, e.g. intra-frame, inter-frame or bidirectional frame 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/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/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/59—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial sub-sampling or interpolation, e.g. alteration of picture size or resolution
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/593—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
- H04N19/96—Tree coding, e.g. quad-tree coding
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Closed-Circuit Television Systems (AREA)
- Analogue/Digital Conversion (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Color Television Systems (AREA)
Abstract
Se describen técnicas del modo de predicción de modelo lineal. Se determinan dos pares de valor de luminancia y valor de croma según N muestras de luminancia vecinas reconstruidas y N muestras de croma vecinas reconstruidas que corresponden a las N muestras de luminancia vecinas reconstruidas, y M muestras de luminancia vecinas reconstruidas y M muestras de croma vecinas reconstruidas que corresponden a las M muestras de luminancia vecinas reconstruidas. El valor mínimo de las N muestras de luminancia vecinas reconstruidas no es menor que el valor de luminancia de las muestras de luminancia vecinas reconstruidas restantes del conjunto de muestras de luminancia vecinas reconstruidas. El valor máximo de las M muestras de luminancia vecinas reconstruidas no es mayor que el valor de luminancia de las muestras de luminancia vecinas reconstruidas restantes del conjunto de muestras de luminancia vecinas reconstruidas. M, N son números enteros positivos y son mayores que 1. Se determinan uno o más parámetros de modelo lineal en función de los dos pares de valor de luminancia y valor de croma, y se determina un bloque predictivo en función de uno o más parámetros de modelo lineal. (Traducción automática con Google Translate, sin valor legal)
Description
DESCRIPCIÓN
Métodos de codificación y de descodificación de vídeo
Campo técnico
Las realizaciones de la presente divulgación se refieren en general a técnicas de codificación y de descodificación de datos de vídeo y se refieren en especial a técnicas para una intrapredicción utilizando un modelo lineal de componentes cruzados (CCLM, por sus siglas en inglés).
Antecedentes
Desde la introducción del disco versátil digital (DVD), se ha venido utilizando mucho el vídeo digital. Además de distribuir programas de vídeo usando DVD, hoy en día se pueden transmitir programas de vídeo utilizando redes informáticas por cable (tales como Internet) o redes de comunicación inalámbricas. Antes de transmitir datos de vídeo utilizando un medio de transmisión, el vídeo se codifica. Un espectador recibe el vídeo codificado y utiliza un dispositivo de visionado para descodificar y visualizar el vídeo. Con los años, la calidad del vídeo ha mejorado gracias a, por ejemplo, mayores resoluciones, profundidades de color y velocidades de fotogramas. La calidad mejorada de los datos de vídeo transmitidos ha dado lugar a flujos de datos más grandes, y, en la actualidad, se transmiten habitualmente flujos de datos más grandes por Internet y redes de comunicación móvil.
Los vídeos de mayor resolución normalmente requieren más ancho de banda, ya que llevan más información. Para reducir los requisitos de ancho de banda, se han introducido planes de codificación de vídeo que conllevan una compresión del vídeo. Cuando se codifica el vídeo, se reducen los requisitos de ancho de banda (o los correspondientes requisitos de memoria, en caso de almacenamiento) en comparación con el vídeo no codificado. Frecuentemente, esta reducción se produce a costa de la calidad. Así, en los estándares de codificación de vídeo se está trabajando para tratar de dar con un equilibrio entre la calidad y los requisitos de ancho de banda.
Como existe una necesidad continua de mejorar la calidad y reducir los requisitos de ancho de banda, se están buscando continuamente soluciones que conserven la calidad con unos requisitos de ancho de banda reducidos o que mejoren la calidad al tiempo que mantienen los requisitos de ancho de banda. A veces, los compromisos entre los dos aspectos pueden resultar aceptables. Por ejemplo, puede ser aceptable aumentar los requisitos de ancho de banda si la mejora de la calidad es significativa.
La codificación de vídeo de gran rendimiento (HEVC, por sus siglas en inglés) es un plan de codificación de vídeo harto conocido. En la HEVC, una unidad de codificación (CU, por sus siglas en inglés) se divide en múltiples unidades de predicción (PU, por sus siglas en inglés) o unidades de transformación (TU, por sus siglas en inglés). Un estándar de codificación de vídeo de próxima generación -e l estándar de codificación de vídeo versátil (VVC)- es el proyecto de codificación de vídeo conjunto más reciente del Grupo de Expertos en Codificación de Vídeo (VCEG, por sus siglas en inglés) del Sector de Normalización de las Telecomunicaciones de la Unión Internacional de Comunicaciones (ITU-T, por sus siglas en inglés) y del Grupo de Expertos en Imágenes en Movimiento (MPEG, por sus siglas en inglés) de la Organización Internacional de Normalización/la Comisión Electrotécnica Internacional (ISO / IEC, por sus siglas en inglés). Las dos organizaciones de normalización están trabajando juntos en una asociación conocida como Equipo Conjunto de Exploración de Vídeo (JVET, por sus siglas en inglés). El estándar VVC también se denomina estándar H.266 de la ITU-T o estándar Next Generation Video Coding (NGVC). En el estándar VVC se eliminan los conceptos de múltiples tipos de partición, es decir, la separación de los conceptos CU, PU y TU, salvo lo que sea necesario para las CU que tengan un tamaño demasiado grande para la longitud máxima de transformada, y la VVC admite más flexibilidad para formas de partición de CU. En D1 (=XP030199520) se divulga “ Non-CE3: On cross-component linear model simplification” , donde los valores mínimo y máximo de muestras de luma vecinas submuestreadas se utilizan para obtener parámetros de modelo lineal.
Resumen
Las realizaciones de la presente solicitud proporcionan aparatos y métodos de codificación y de descodificación de datos de vídeo. En particular, al usar muestras de luma para predecir muestras de croma por intrapredicción como parte de un mecanismo de codificación de vídeo, se puede lograr de manera flexible la codificación por intrapredicción utilizando un modelo lineal de componentes cruzados.
La invención se define en las reivindicaciones independientes. Las características adicionales de la invención se proporcionan en las reivindicaciones dependientes. La invención corresponde al tercer mecanismo mejorado que se describe a continuación. Partes de la descripción y de los dibujos que se refieren a realizaciones que no están cubiertas por las reivindicaciones no se presentan como realizaciones de la invención, sino como ejemplos útiles para comprenderla.
Breve descripción de los dibujos
Lo siguiente es una breve descripción de los dibujos adjuntos utilizados a la hora de describir las realizaciones de la presente solicitud.
La figura 1A es un diagrama de bloques de un sistema de codificación de datos de vídeo, en el que se pueden implementar realizaciones de la presente divulgación.
La figura 1B es un diagrama de bloques de otro sistema de codificación de datos de vídeo en el que se pueden implementar realizaciones de la presente divulgación.
La figura 2 es un diagrama de bloques de un codificador de datos de vídeo en el que se pueden implementar realizaciones de la presente divulgación.
La figura 3 es un diagrama de bloques de un descodificador de datos de vídeo en el que se pueden implementar realizaciones de la presente divulgación.
La figura 4 es un diagrama esquemático de un dispositivo de codificación de vídeo según una realización de la presente divulgación.
La figura 5 es un diagrama de bloques simplificado de un aparato de codificación de datos de vídeo en el que se pueden implementar diversas realizaciones de la presente divulgación.
La figura 6 es una ilustración de unos modos de intrapredicción de H.265/HEVC.
La figura 7 es una ilustración de unas muestras de referencia.
La figura 8 es un diagrama conceptual que ilustra ubicaciones relativas verticales y horizontales nominales de muestras de luma y de croma.
La figura 9, que incluye la figura 9A y la figura 9B, es un diagrama esquemático que ilustra un mecanismo de ejemplo de ejecución de una intrapredicción del modelo lineal de componentes cruzados (CCLM). La figura 9A ilustra un ejemplo de píxeles reconstruidos vecinos de un bloque de luma coubicado. La figura 9B ilustra un ejemplo de píxeles reconstruidos vecinos de un bloque de croma.
La figura 10 es un diagrama conceptual que ilustra un ejemplo de posiciones de luma y de posiciones de croma para submuestrear muestras de un bloque de luma para generar un bloque predictivo.
La figura 11 es un diagrama conceptual que ilustra otro ejemplo de posiciones de luma y de posiciones de croma para submuestrear muestras de un bloque de luma para generar un bloque predictivo.
Las figuras 12-15 son diagramas esquemáticos que ilustran mecanismos de ejemplo de submuestreo para admitir una intrapredicción de componentes cruzados.
La figura 16 es una ilustración de la línea recta entre valores de luma mínimo y máximo.
La figura 17 es una ilustración de un modo de intrapredicción de componentes cruzados_A (CCIP_A).
La figura 18 es una ilustración de un modo de intrapredicción de componentes cruzados_L (CCIP_L).
La figura 19 es una gráfica que ilustra un mecanismo de ejemplo de determinación de parámetros de modelo lineal para admitir una intrapredicción de CCLM de múltiples modelos (MMLM, por sus siglas en inglés).
La figura 20 es un diagrama esquemático que ilustra mecanismos de ejemplo, que utilizan muestras superiores e izquierdas vecinas para admitir una intrapredicción de componentes cruzados.
La figura 21 es un diagrama esquemático que ilustra mecanismos de ejemplo, que utilizan unas muestras ampliadas para admitir una intrapredicción de componentes cruzados.
La figura 22 es un diagrama de flujo de un método de una predicción de modelo lineal de componentes cruzados (CCLM) según algunas realizaciones de la presente divulgación.
La figura 23 es un diagrama de flujo de un método de descodificación de datos de vídeo, que utiliza una predicción de modelo lineal de componentes cruzados (CCLM) según una realización de la presente divulgación.
La figura 24 es un diagrama de flujo de un método de codificación de datos de vídeo, que utiliza una predicción de modelo lineal de componentes cruzados (CCLM) según una realización de la presente divulgación.
La figura 25 es un diagrama de flujo de un método de descodificación de datos de vídeo, que utiliza una predicción de modelo lineal de componentes cruzados (CCLM) según otra realización de la presente divulgación.
La figura 26 es un diagrama de flujo ejemplar de un método de codificación de datos de vídeo, que utiliza una predicción de modelo lineal de componentes cruzados (CCLM) según otra realización de la presente divulgación.
En las diversas figuras se utilizarán números de referencia idénticos para indicar características idénticas o funcionalmente equivalentes.
Descripción detallada
Debe entenderse desde el principio que, aunque a continuación se proporciona una implementación ilustrativa de una o más modalidades, los sistemas y/o métodos divulgados pueden implementarse mediante el uso de cualquier número de técnicas, ya sea actualmente conocidas o en existencia. La descripción no debe limitarse de ninguna manera a las implementaciones ilustrativas, dibujos y técnicas ilustrados a continuación, incluidos los diseños ilustrativos e implementaciones ilustrados y descritos en el presente documento, pero puede modificarse dentro del alcance de las reivindicaciones adjuntas junto con su alcance completo de equivalentes.
La figura 1A es un diagrama de bloques de un sistema de codificación de datos de vídeo, en el que se pueden implementar realizaciones de la presente divulgación. Tal y como se muestra en la figura 1A, el sistema 10 de codificación incluye un dispositivo 12 fuente que proporciona datos de vídeo codificados y un dispositivo 14 de destino que descodifica los datos de vídeo codificados proporcionados por el dispositivo 12 de codificación. En particular, el dispositivo 12 fuente puede proporcionar los datos de vídeo al dispositivo 14 de destino a través de un medio 16 de transporte. El dispositivo 12 fuente y el dispositivo 14 de destino pueden ser cualesquiera de una gran variedad de dispositivos, tales como ordenadores de sobremesa, ordenadores notebook (i.e., ordenadores portátiles), ordenadores de tableta, descodificadores de televisión, terminales telefónicos celulares (i.e., teléfonos “ inteligentes” ), televisores, cámaras, dispositivos de visualización, reproductores de medios digitales, consolas de videojuegos, dispositivos de emisión de vídeo o similares. En algunos casos, el dispositivo 12 fuente y el dispositivo 14 de destino pueden estar equipados para comunicación inalámbrica.
El dispositivo 14 de destino puede recibir los datos de vídeo codificados a través del medio 16 de transporte. El medio 16 de transporte puede ser cualquier tipo de medio o dispositivo que sea capaz de transportar los datos de vídeo codificados del dispositivo 12 fuente al dispositivo 14 de destino. En un ejemplo, el medio 16 de transporte puede ser un medio de comunicación que permita que el dispositivo 12 fuente transmita datos de vídeo codificados directamente al dispositivo 14 de destino en tiempo real. Los datos de vídeo codificados pueden modularse según un estándar de comunicación, tal como un protocolo de comunicación inalámbrica, y los datos de vídeo codificados modulados se transmiten al dispositivo 14 de destino. El medio de comunicación puede ser cualquier medio de comunicación inalámbrico o cableado, tal como una onda de espectro de radiofrecuencia (RF) o una o más líneas físicas de transmisión. El medio de comunicación puede formar parte de una red basada en paquetes, tal como una red de área local, una red de área amplia o una red global tal como Internet. El medio de comunicación puede incluir encaminadores, conmutadores, estaciones base o cualquier otro equipo que pueda resultar útil para facilitar una comunicación desde el dispositivo 12 fuente hasta el dispositivo 14 de destino.
En el dispositivo 12 fuente, a los datos codificados se les puede dar salida desde una interfaz 22 de salida hasta un dispositivo de almacenamiento (no mostrado en la fig. 1A). Del mismo modo, una interfaz 28 de entrada del dispositivo 14 de destino puede acceder a los datos codificados del dispositivo de almacenamiento. El dispositivo de almacenamiento puede incluir cualquiera de una diversidad de medios de almacenamiento de datos distribuidos o a los que se accede localmente, tales como discos duros, discos Blu-ray™, discos de vídeo digital (DVD), discos compactos de memoria de solo lectura (CD-ROM), memorias flash, memorias volátiles o no volátiles o cualquier otro medio de almacenamiento digital adecuado para almacenar datos de vídeo codificados.
En otro ejemplo, el dispositivo de almacenamiento puede corresponder a un servidor de archivos o a otro dispositivo de almacenamiento intermedio que pueda almacenar el vídeo codificado generado por el dispositivo 12 fuente. El dispositivo 14 de destino puede acceder a los datos de vídeo almacenados del dispositivo de almacenamiento por emisión o descarga. El servidor de archivos puede ser cualquier tipo de servidor que pueda almacenar datos de vídeo codificados y transmitir esos datos de vídeo codificados al dispositivo 14 de destino. Los servidores de archivos ilustrativos incluyen un servidor web (p. ej., para un sitio web), un servidor de protocolo de transferencia de archivos (FTP), dispositivos de almacenamiento conectados en red (NAS) o una unidad de disco local. El dispositivo 14 de destino puede acceder a los datos de vídeo codificados a través de cualquier conexión de datos estándar, incluida una conexión a Internet. Esto puede incluir un canal inalámbrico (p. ej., una conexión wifi), una conexión alámbrica (p. ej., línea de abonado digital (DSL), módem por cable, etc.) o una combinación de ambos que sea adecuada para acceder a datos de vídeo codificados almacenados en un servidor de archivos. La transmisión de datos de vídeo codificados desde el dispositivo de almacenamiento puede ser una transmisión de envío por flujo continuo, una transmisión de descarga o una combinación de las mismas.
Las técnicas de esta descripción no se limitan necesariamente a aplicaciones o configuraciones inalámbricas. Las técnicas se pueden aplicar a la codificación de vídeo como soporte de cualquiera de una diversidad de aplicaciones multimedia, tales como difusiones de televisión por aire, transmisiones de televisión por cable, transmisiones de televisión por satélite, transmisiones de vídeo de envío por flujo continuo por Internet, tales como envío por flujo continuo adaptativo dinámico a través de HTTP ( DASH), vídeo digital que se codifica en un medio de almacenamiento de datos, descodificación de vídeo digital almacenado en un medio de almacenamiento de datos u otras aplicaciones. En algunos ejemplos, el sistema 10 de codificación puede estar configurado para admitir una transmisión de vídeo unidireccional o bidireccional con el fin de admitir aplicaciones, tales como la emisión de vídeo, la reproducción de vídeo, la difusión de vídeo y/o la videotelefonía.
En el ejemplo de la figura 1A, el dispositivo 12 fuente incluye una fuente 18 de vídeo, un codificador 20 de vídeo y una interfaz 22 de salida. El dispositivo 14 de destino incluye una interfaz 28 de entrada, un descodificador 30 de vídeo y un dispositivo 32 de visualización. De acuerdo con esta divulgación, el codificador 20 de vídeo del dispositivo 12 fuente y/o el descodificador 30 de vídeo del dispositivo 14 de destino puede(n) configurarse para aplicar las técnicas para una predicción bidireccional. En otros ejemplos, un dispositivo 12 fuente y un dispositivo 14 de destino pueden incluir otros componentes o disposiciones. Por ejemplo, el dispositivo 12 fuente puede recibir datos de vídeo de una fuente de vídeo externa, tal como una cámara externa. Asimismo, el dispositivo 14 de destino puede interactuar con un dispositivo de visualización externo, en vez de incluir un dispositivo de visualización integrado.
El sistema 10 de codificación ilustrado de la figura 1A es simplemente un ejemplo. Métodos para una predicción bidireccional se pueden realizar con cualquier dispositivo de codificación o de descodificación de vídeo digital. Aunque las técnicas de esta divulgación se utilicen por lo general por parte de un dispositivo de codificación de vídeo, también se pueden utilizar por parte de un codificador/descodificador de vídeo, que normalmente se denomina “ códec” . Además, las técnicas de esta divulgación también se pueden utilizar por parte de un preprocesador de vídeo. El codificador de vídeo y/o el descodificador de vídeo puede(n) ser una unidad de procesamiento gráfico (GPU, por sus siglas en inglés) o un dispositivo similar.
El dispositivo 12 fuente y el dispositivo 14 de destino son simplemente ejemplos de dispositivos de codificación/descodificación en un sistema de codificación de datos de vídeo, en el que el dispositivo 12 fuente genera datos de vídeo codificados para su transmisión al dispositivo 14 de destino. En algunos ejemplos, el dispositivo 12 fuente y el dispositivo 14 de destino pueden funcionar de manera sustancialmente simétrica, de manera que cada uno de los dispositivo 12 fuente y dispositivo 14 de destino incluye componentes de codificación y de descodificación de vídeo. Así, el sistema 10 de codificación puede admitir una transmisión de vídeo unidireccional o bidireccional entre los dispositivos 12 y 14 de vídeo, p. ej., para la emisión de vídeo, la reproducción de vídeo, la difusión de vídeo o la videotelefonía.
La fuente 18 de vídeo del dispositivo 12 fuente puede incluir un dispositivo de captura de vídeo, tal como una cámara de vídeo, un archivo de vídeo que contenga vídeos previamente capturados y/o una interfaz de suministro de vídeo para recibir un vídeo de un proveedor de contenidos de vídeo. Como una alternativa más, la fuente 18 de vídeo puede generar datos basados en computación gráfica como el vídeo de origen o una combinación de vídeo en directo, vídeo archivado y vídeo generado por ordenador.
En algunos casos, cuando la fuente 18 de vídeo es una cámara de vídeo, el dispositivo 12 fuente y el dispositivo 14 de destino pueden formar los denominados teléfonos con cámara o videoteléfonos. Sin embargo, como se mencionó anteriormente, las técnicas descritas en esta descripción pueden ser aplicables a la codificación de vídeo generalmente y pueden aplicarse a aplicaciones inalámbricas y/o cableadas. En cada caso, el vídeo capturado, precapturado o generado por ordenador puede ser codificado por el codificador 20 de vídeo. La interfaz 22 de salida puede dar salida entonces a la información de vídeo codificada al medio 16 de transporte.
El medio 16 de transporte puede incluir medios transitorios, tales como unos medios de difusión inalámbrica o de transmisión por red cableada o de almacenamiento (es decir, unos medios de almacenamiento no transitorios), tales como un disco duro, una unidad flash, un disco compacto, un disco de vídeo digital, disco Blu-ray™ u otro medio legible por ordenador. En algunos ejemplos, un servidor de red (no mostrado) puede recibir datos de vídeo codificados del dispositivo 12 fuente y proporcionar los datos de vídeo codificados al dispositivo 14 de destino, p. ej., a través de una transmisión de red. Del mismo modo, un dispositivo de computación de una instalación de producción de medios, tal como una instalación de estampado de discos puede recibir datos de vídeo codificados del dispositivo 12 fuente y producir un disco que contenga datos de vídeo codificados. Por lo tanto, se puede entender que, en diversos ejemplos, el medio 16 de transporte incluye uno o más medios legibles por ordenador de diversas formas.
La interfaz 28 de entrada del dispositivo 14 de destino recibe información del medio 16 de transporte. La información del medio 16 de transporte puede incluir información sintáctica definida por el codificador 20 de vídeo, que también la usa el descodificador 30 de vídeo, que incluye elementos sintácticos que describen las características y/o el procesamiento de bloques y otras unidades codificadas, p. ej., un grupo de imágenes (GOP, por sus siglas en inglés). El dispositivo 32 de visualización visualiza los datos de vídeo descodificados para un usuario y puede incluir cualquiera de una diversidad de dispositivos de visualización, tales como un tubo de rayos catódicos (CRT, por sus siglas en inglés), una pantalla de cristal líquido (LCD, por sus siglas en inglés), una pantalla de plasma, una pantalla de diodos emisores de luz orgánicos (OLED, por sus siglas en inglés) u otros tipos de dispositivos de visualización.
El codificador 20 de vídeo y el descodificador 30 de vídeo pueden funcionar según un estándar de codificación de vídeo, tal como el estándar High Efficiency Video Coding (HEVC), actualmente en desarrollo, y pueden ajustarse a un modelo de pruebas HEVC (HM). Alternativamente, el codificador 20 de vídeo y el descodificador 30 de vídeo pueden funcionar según otros estándares patentados o de la industrial, tales como el estándar H.264 del Sector de Normalización de Telecomunicaciones de la Unión Internacional de Telecomunicaciones (ITU-T), denominado alternativamente Part 10, Advanced Video Coding (AVC), H.265/HEVC, del Grupo de Expertos en Imágenes en Movimiento (MPEG)-4, o ampliaciones de tales estándares. Sin embargo, las técnicas que proporciona esta divulgación no se limitan a ningún estándar de codificación particular. Otros ejemplos de estándares de codificación de vídeo incluyen MPEG-2 e ITU-T H.263. Aunque no se muestra en la figura 1a , en algunos aspectos, el codificador 20 de vídeo y el descodificador 30 de vídeo pueden estar cada uno integrados con un codificador y un descodificador de audio y pueden incluir unidades multiplexoras-demultiplexoras (MUX-DEMUX) apropiadas, u otrohardwareysoftware,para gestionar la codificación tanto de audio como de vídeo en un flujo de datos común o en flujos de datos separados. Si procede, las unidades MUX-DEMUX pueden ajustarse al protocolo multiplexor H.223 del ITU o a otros protocolos tales como el protocolo de datagramas de usuario (UDP, por sus siglas en inglés).
El codificador 20 de vídeo y el descodificador 30 de vídeo pueden implementarse cada uno como cualquiera de una diversidad de circuitería codificadora adecuada, tal como uno o más microprocesadores, procesadores de señales digitales (DSP, por sus siglas en inglés), circuitos integrados específicos de la aplicación (ASIC, por sus siglas en inglés), matrices de puertas programables en campo (FPGA, por sus siglas en inglés), lógica discreta,software, hardware, firmwareo cualquier combinación de los mismos. Cuando las técnicas se implementan parcialmente en software, un dispositivo puede almacenar instrucciones para el software en un medio legible por ordenador no transitorio adecuado y ejecutar las instrucciones en hardware usando uno o más procesadores para realizar las técnicas de esta descripción. El codificador 20 de vídeo y el descodificador 30 de vídeo pueden incluirse cada uno en uno o más codificadores o descodificadores, cualquiera de los cuales puede integrarse como parte de un codificador/descodificador (códec) combinado en un dispositivo respectivo. Un dispositivo que incluye un codificador 20 de vídeo y/o un descodificador 30 de vídeo puede ser un circuito integrado, un microprocesador y/o un dispositivo de comunicación inalámbrica, tal como un teléfono móvil.
La figura 1B es un diagrama de bloques de un sistema 40 de codificación de vídeo de ejemplo, que incluye el codificador 20 de vídeo y/o el descodificador 30. Tal y como se muestra en la figura 1B, el sistema 40 de codificación de vídeo puede incluir uno o más dispositivos 41 de imagen, el codificador 20 de vídeo, el descodificador 30 de vídeo, una antena 42, uno o más procesadores 43 y uno o más almacenes 44 de memoria, y puede incluir además un dispositivo 45 de visualización.
Tal y como se ha ilustrado, el (los) dispositivo(s) 41 de imagen, la antena 42, la circuitería 46 de procesamiento, el codificador 20 de vídeo, el descodificador 30 de vídeo, el (los) procesador(es) 43, el (los) almacén(es) 44 de memoria y el dispositivo 45 de visualización pueden comunicarse entre sí. Aunque se ha ilustrado tanto con el codificador 20 de vídeo como con el descodificador 30 de vídeo, en varios ejemplos, el sistema 40 de codificación de vídeo puede incluir únicamente el codificador 20 de vídeo o únicamente el descodificador 30 de vídeo.
En algunos ejemplos, la antena 42 del sistema 40 de codificación de vídeo puede estar configurada para transmitir o recibir un flujo de bits codificado de datos de vídeo. Además, en algunos ejemplos, el dispositivo 45 de visualización del sistema 40 de codificación de vídeo puede estar configurado para presentar datos de vídeo. En algunos ejemplos, la circuitería 46 de procesamiento del sistema 40 de codificación de vídeo puede implementarse a través de una(s) unidad(es) de procesamiento. La(s) unidad(es) de procesamiento puede(n) incluir una lógica de circuito integrado específica de la aplicación (ASIC), un(os) procesador(es) gráfico(s), un(os) procesador(es) de uso general o similares. El sistema 40 de codificación de vídeo también puede incluir un(os) procesador(es) 43 opcional(es), que puede(n) incluir del mismo modo una lógica de circuito integrado específico de la aplicación (ASIC), un(os) procesador(es) gráfico(s), un(os) procesador(es) de uso general o similares. En algunos ejemplos, la circuitería 46 de procesamiento puede implementarse a través de unhardware,unhardwarededicado a la codificación de vídeo o similar. Además, el (los) almacén(es) 44 de memoria puede(n) ser cualquier tipo de memoria, tal como una memoria volátil (p. ej., una memoria de acceso aleatorio estática (SRAM, por sus siglas en inglés), una memoria dinámica de acceso aleatorio (DRAM, por sus siglas en inglés], etc.) o una memoria no volátil (p. ej., una memoria flash, etc.), etc. En un ejemplo, el (los) almacén(es) 44 de memoria puede(n) implementarse mediante una memoria caché. En algunos ejemplos, la circuitería 46 de procesamiento puede acceder al (a los) almacén(es) 44 de memoria (para la implementación de, por ejemplo, una memoria tampón de imágenes). En otros ejemplos, la circuitería 46 de procesamiento puede incluir almacenes de memoria (p. ej., una caché o similar) para la implementación de una memoria tampón de imágenes o similar.
En algunos ejemplos, el codificador 20 de vídeo implementado a través de una circuitería de procesamiento puede encarnar los diversos módulos que se analizan con respecto a la figura 2 y/o cualquier otro sistema o subsistema codificador descrito en la presente memoria. La circuitería de procesamiento puede configurarse para realizar las diversas operaciones que se analizan en la presente memoria.
El descodificador 30 de vídeo puede implementarse de una manera parecida a la implementada a través de la circuitería 46 de procesamiento para encarnar los diversos módulos que se analizan con respecto al descodificador 30 de la figura 3 y/o cualquier otro sistema o subsistema descodificador descrito en la presente memoria.
En algunos ejemplos, la antena 42 del sistema de codificación de vídeo 40 puede configurarse para recibir un flujo de bits codificado de datos de vídeo. El flujo de bits codificado puede incluir datos, indicadores o similares asociados con la codificación de un fotograma de vídeo. El sistema 40 de codificación de vídeo puede incluir también el descodificador 30 de vídeo acoplado a la antena 42 y configurado para descodificar el flujo de bits codificado. El dispositivo 45 de visualización está configurado para presentar fotogramas de vídeo.
La figura 2 es un diagrama de bloques que ilustra un ejemplo de un codificador 20 de vídeo que puede implementar las técnicas de la presente aplicación. El codificador 20 de vídeo puede realizar una intra- e inter- codificación de bloques de vídeo dentro de porciones de vídeo. La intracodificación se basa en la predicción espacial para reducir o eliminar la redundancia espacial en el vídeo dentro de un fotograma o imagen de vídeo determinados. La intercodificación se basa en la predicción temporal para reducir o eliminar la redundancia temporal en el vídeo dentro de fotogramas o imágenes adyacentes de una secuencia de vídeo. El modo intra (modo I) puede referirse a cualquiera de varios modos de codificación basados en el espacio. Los intermodos, tales como la predicción unidireccional (modo P) o la bipredicción (modo B), pueden referirse a cualquiera de varios modos de codificación basados en el tiempo.
Como se muestra en la Figura 2, el codificador 20 de vídeo recibe un bloque de vídeo actual dentro de un fotograma de vídeo a codificar. En el ejemplo de la figura 2, el codificador 20 de vídeo incluye una unidad 40 de selección de modo, una memoria 64 de fotogramas de referencia, un sumador 50, una unidad 52 de procesamiento de transformada, una unidad 54 de cuantificación y una unidad 56 de codificación por entropía. La unidad 40 de selección de modo, a su vez, incluye la unidad 44 de compensación de movimiento, la unidad 42 de estimación de movimiento, la unidad 46 de intrapredicción y la unidad 48 de partición. Para la reconstrucción de bloques de vídeo, el codificador 20 de vídeo también incluye una unidad 58 de cuantificación inversa, una unidad 60 de transformada inversa y un sumador 62. También se puede incluir un filtro de desbloqueo (no mostrado en la Figura 2) para filtrar los límites de los bloques y eliminar los artefactos de bloqueo del vídeo reconstruido. Si se desease, el filtro de desbloqueo normalmente filtraría la salida del sumador 62. También se pueden usar filtros adicionales (en bucle o post bucle) además del filtro de desbloqueo. Tales filtros no se muestran a afectos de brevedad, pero si se desea, pueden filtrar la salida del sumador 50 (como un filtro de lazo).
Durante el proceso de codificación, el codificador 20 de vídeo recibe un fotograma o segmento de vídeo a codificar. El fotograma o segmento se puede dividir en múltiples bloques de vídeo. La unidad 42 de estimación de movimiento y la unidad 44 de compensación de movimiento realizan codificación intrapredictiva del bloque de vídeo recibido con respecto a uno o más bloques en uno o más fotogramas de referencia para proporcionar predicción temporal. La unidad 46 de intrapredicción puede realizar alternativamente codificación intrapredictiva del bloque de vídeo recibido con respecto a uno o más bloques vecinos en el mismo fotograma o segmento que el bloque a codificar para proporcionar predicción espacial. El codificador 20 de vídeo puede realizar múltiples pasadas de codificación, p. ej., para seleccionar un modo de codificación apropiado para cada bloque de datos de vídeo.
Además, la unidad 48 de partición puede particionar bloques de datos de vídeo en subbloques, basándose en la evaluación de esquemas de partición anteriores en pasadas de codificación anteriores. Por ejemplo, la unidad 48 de partición puede particionar inicialmente una trama o segmento en unidades de codificación más grandes (LCU) y partir cada una de las LCU en unidades de subcodificación (sub-CU) basándose en un análisis de tasa-distorsión (p. ej., optimización de tasa-distorsión). La unidad 40 de selección de modo puede producir además una estructura de datos de árbol cuádruple indicativa de la partición de una LCU en subCU. Las CU de nodo hoja del árbol cuádruple pueden incluir una o más unidades de predicción (PU) y una o más unidades de transformada (TU).
En la presente divulgación, el término “ bloque” se emplea para referirse a cualquiera de una unidad de codificación (CU), una unidad de predicción (PU) o una unidad de transformada (TU), en el contexto de la HEVC, o a unas estructuras de datos similares en el contexto de otros estándares (p. ej., macrobloques y subbloques de los mismos en H.264/AVC). Una CU incluye un nodo de codificación, PU y TU asociadas con el nodo de codificación. Un tamaño de la CU corresponde a un tamaño del nodo de codificación y tiene forma rectangular. El tamaño de la CU puede variar desde 8*8 píxeles hasta el tamaño del bloque de árbol con un máximo de 64*64 píxeles o mayor. Cada CU puede contener una o más PU y una o más TU. Los datos de sintaxis asociados con una CU pueden describir, por ejemplo, la partición de la CU en una o más PU. Los modos de partición pueden diferir dependiendo de si la CU está codificada en modo directo o de salto, codificada en modo de intrapredicción o codificada en modo intrapredicción. Las PU pueden dividirse para que no tengan forma cuadrada. Los datos de sintaxis asociados con una CU también pueden describir, por ejemplo, la partición de la CU en una o más TU según un árbol cuádruple. En una realización, una CU, PU o TU puede tener forma cuadrada o no cuadrada (p. ej., rectangular).
La unidad 40 de selección de modo puede seleccionar uno de los modos de codificación -intra o inter- basándose en, p. ej., resultados de error y proporciona el bloque intra- o intercodificado resultante a un sumador 50 para generar datos de bloque residuales y a un sumador 62 para reconstruir el bloque codificado con el fin de usarlo como fotograma de referencia. La unidad 40 de selección de modo también proporciona elementos de sintaxis, tales como vectores de movimiento, indicadores intramodo, información de partición y otra información de sintaxis similar, a la unidad 56 de codificación por entropía.
La unidad 42 de estimación de movimiento y la unidad 44 de compensación de movimiento pueden estar altamente integradas, pero se ilustran por separado con fines conceptuales. La estimación de movimiento, realizada por la unidad 42 de estimación de movimiento, es el proceso de generar vectores de movimiento, que estiman el movimiento para bloques de vídeo. Por ejemplo, un vector de movimiento puede indicar el desplazamiento de una PU de un bloque de vídeo dentro de un fotograma de vídeo (o imagen) actual en relación con un bloque predictivo dentro de un fotograma (u otra unidad codificada) de referencia o puede indicar el desplazamiento de una PU de un bloque de vídeo dentro un fotograma de vídeo (o una imagen) actual en relación con un bloque codificado dentro del fotograma (u otra unidad codificada) actual. Un bloque predictivo es un bloque que coincide estrechamente con el bloque que se va a codificar, en términos de diferencia de píxeles, que puede determinarse mediante la suma de la diferencia absoluta (SAD), la suma de la diferencia cuadrada (SSD) u otras métricas de diferencia. En algunos ejemplos, el codificador 20 de vídeo puede calcular valores para posiciones de píxeles subenteros de imágenes de referencia almacenadas en la memoria 64 de fotograma de referencia. Por ejemplo, el codificador 20 de vídeo puede interpolar valores de posiciones de un cuarto de píxel, posiciones de un octavo de píxel u otras posiciones de píxel fraccionales de la imagen de referencia. Por lo tanto, la unidad 42 de estimación de movimiento puede realizar una búsqueda de movimiento con respecto a las posiciones de píxeles completas y las posiciones de píxeles fraccionales y generar un vector de movimiento con precisión de píxeles fraccionales.
La unidad 42 de estimación de movimiento calcula un vector de movimiento para una PU de un bloque de vídeo en un segmento intercodificado comparando la posición de la PU con la posición de un bloque predictivo de una imagen de referencia. La imagen de referencia puede seleccionarse de una primera lista de imágenes de referencia (p. ej., una Lista 0) o de una segunda lista de imágenes de referencia (p. ej., una Lista 1), cada una de las cuales identifica una o más imágenes de referencia que están almacenadas en la memoria 64 de fotogramas de referencia. La unidad 42 de estimación de movimiento envía el vector de movimiento calculado a la unidad 56 de codificación por entropía y a la unidad 44 de compensación de movimiento.
La compensación de movimiento, realizada por la unidad 44 de compensación de movimiento, puede implicar obtener o generar el bloque predictivo basándose en el vector de movimiento determinado por la unidad 42 de estimación de movimiento. De nuevo, la unidad 42 de estimación de movimiento y la unidad 44 de compensación de movimiento pueden integrarse funcionalmente, en algunos ejemplos. Tras recibir el vector de movimiento para la PU del bloque de vídeo actual, la unidad 44 de compensación de movimiento puede ubicar el bloque predictivo al que apunta el vector de movimiento en una de las listas de imágenes de referencia. El sumador 50 forma un bloque de vídeo residual restando valores de píxel del bloque predictivo de los valores de píxel del bloque de vídeo actual que se está codificando, de manera que se forman valores de diferencia entre píxeles, tal y como se analiza a continuación. Generalmente, la unidad 42 de estimación de movimiento realiza una estimación de movimiento con respecto a los componentes de luma, y la unidad 44 de compensación de movimiento usa vectores de movimiento calculados basándose en los componentes de luma tanto para los componentes de croma como para los componentes de luma. La unidad 40 de selección de modo también puede generar elementos sintácticos asociados con los bloques y segmentos de vídeo para su uso por el descodificador 30 de vídeo al descodificar los bloques de imagen del segmento de vídeo.a
La unidad 46 de intrapredicción puede intrapredecir un bloque actual, como alternativa a la intrapredicción realizada por la unidad 42 de estimación de movimiento y la unidad 44 de compensación de movimiento, como se describió anteriormente. En particular, la unidad 46 de intrapredicción puede determinar un modo de intrapredicción a usar para codificar un bloque actual. En algunos ejemplos, la unidad 46 de intrapredicción puede codificar un bloque actual usando diversos modos de intrapredicción, p. ej., durante pasadas de codificación separadas, y la unidad 46 de intrapredicción (o la unidad 40 de selección de modo, en algunos ejemplos) puede seleccionar un modo de intrapredicción apropiado para su uso desde los modos probados.
Por ejemplo, la unidad 46 de intrapredicción puede calcular valores de tasa-distorsión usando un análisis de tasadistorsión para los diversos modos de intrapredicción probados, y seleccionar el modo de intrapredicción que tenga las mejores características de tasa-distorsión entre los modos probados. El análisis de tasa-distorsión generalmente determina una cantidad de distorsión (o error) entre un bloque codificado y un bloque original no codificado que fue codificado para producir el bloque codificado, así como una tasa de bits (es decir, un número de bits) usada para producir el bloque codificado. La unidad 46 de intrapredicción puede calcular relaciones a partir de las distorsiones y tasa para los diversos bloques codificados para determinar qué modo de intrapredicción presenta el mejor valor de tasa-distorsión para el bloque.
Además, la unidad 46 de intrapredicción puede configurarse para codificar bloques de profundidad de un mapa de profundidad usando un modo de modelado de profundidad (DMM). La unidad 40 de selección de modo puede determinar si un modo de DMM disponible produce mejores resultados de codificación que un modo de intrapredicción y los otros modos de DMM, p. ej., usando optimización de tasa-distorsión (RDO). Los datos para una imagen de textura que corresponde a un mapa de profundidad pueden almacenarse en la memoria 64 de fotogramas de referencia. La unidad 42 de estimación de movimiento y la unidad 44 de compensación de movimiento también pueden configurarse para intrapredecir bloques de profundidad de un mapa de profundidad.
Después de seleccionar un modo de intrapredicción para un bloque (p, ej., un modo de intrapredicción convencional o uno de los modos de DMM), la unidad 46 de intrapredicción puede proporcionar información indicativa del modo de intrapredicción seleccionado para el bloque a la unidad 56 de codificación por entropía. La unidad 56 de codificación por entropía puede codificar la información que indica el modo de intrapredicción seleccionado. El codificador 20 de vídeo puede incluir en los datos de configuración de flujo de bits transmitido, que pueden incluir una pluralidad de tablas de índice de modo de intrapredicción y una pluralidad de tablas de índice de modo de intrapredicción modificadas (también denominadas tablas de mapeo de palabras de código), definiciones de contextos de codificación para diversos bloques e indicaciones de un modo de intrapredicción más probable, una tabla de índice de modo de intrapredicción y una tabla de índice de modo de intrapredicción modificada para su uso en cada uno de los contextos.
El codificador 20 de vídeo forma un bloque de vídeo residual restando los datos de predicción de la unidad 40 de selección de modo del bloque de vídeo original que se está codificando. El sumador 50 representa el componente o los componentes que realizan esta operación de resta.
La unidad 52 de procesamiento de transformada aplica una transformada, tal como una transformada de coseno discreta (DCT) o una transformada conceptualmente similar, al bloque residual, produciendo un bloque de vídeo que comprende valores de coeficientes de transformada residual. La unidad 52 de procesamiento de transformada puede realizar otras transformadas que son conceptualmente similares a DCT. También podrían usarse transformadas de ondícula, transformadas de números enteros, transformadas de subbanda u otros tipos de transformadas.
La unidad 52 de procesamiento de transformada aplica la transformada al bloque residual, produciendo un bloque de coeficientes de transformada residual. La transformada puede convertir la información residual de un dominio de valor de píxel a un dominio de la transformada, tal como un dominio de la frecuencia. La unidad 52 de procesamiento de transformada puede enviar los coeficientes de transformada resultantes a la unidad 54 de cuantificación. La unidad 54 de cuantificación cuantifica los coeficientes de transformada para reducir aún más la tasa de bits. El proceso de cuantificación puede reducir la profundidad de bits asociada con algunos o todos los coeficientes. El grado de cuantificación se puede modificar ajustando un parámetro de cuantificación. En algunos ejemplos, a continuación, la unidad 54 de cuantificación puede realizar una exploración de la matriz que incluye los coeficientes de transformada cuantificados. Alternativamente, la unidad 56 de codificación por entropía puede realizar la exploración.
Después de la cuantificación, la unidad 56 de codificación por entropía codifica por entropía los coeficientes de transformada cuantificados. Por ejemplo, la unidad 56 de codificación por entropía puede realizar codificación de longitud variable adaptativa al contexto (CAVLC), codificación aritmética binaria adaptativa al contexto (CABAC), codificación aritmética binaria adaptativa al contexto basada en sintaxis (SBAC), codificación por entropía de partición de intervalos de probabilidad (PIPE) u otra técnica de codificación por entropía. En el caso de la codificación por entropía basada en contexto, el contexto puede basarse en bloques vecinos. Después de la codificación por entropía por la unidad 56 de codificación por entropía, el flujo de bits codificado puede transmitirse a otro dispositivo (p. ej., el descodificador 30 de vídeo) o archivarse para su posterior transmisión o recuperación.
La unidad 58 de cuantificación inversa y la unidad 60 de transformada inversa aplican cuantificación inversa y transformación inversa, respectivamente, para reconstruir el bloque residual en el dominio de píxeles, p. ej., para su uso posterior como bloque de referencia. La unidad 44 de compensación de movimiento puede calcular un bloque de referencia añadiendo el bloque residual a un bloque predictivo de uno de los fotogramas de la memoria 64 de fotogramas de referencia. La unidad 44 de compensación de movimiento también puede aplicar uno o más filtros de interpolación al bloque residual reconstruido para calcular valores de píxeles subenteros para su uso en la estimación de movimiento. El sumador 62 suma el bloque residual reconstruido al bloque de predicción compensado con respecto al movimiento producido por la unidad 44 de compensación de movimiento para producir un bloque de vídeo reconstruido para su almacenamiento en la memoria 64 de fotogramas de referencia. El bloque de vídeo reconstruido puede usarse por la unidad 42 de estimación de movimiento y la unidad 44 de compensación de movimiento como bloque de referencia para intercodificar un bloque en un fotograma de vídeo posterior.
Para codificar un flujo de vídeo pueden usarse otras variaciones estructurales del codificador 20 de vídeo. Por ejemplo, en el caso de ciertos bloques o fotogramas, un descodificador 20 no basado en transformada puede cuantificar la señal residual directamente sin la unidad 52 de procesamiento de transformada. En otra implementación, un codificador 20 puede tener la unidad 54 de cuantificación y la unidad 58 de cuantificación inversa combinadas en una sola unidad.
La figura 3 es un diagrama de bloques que ilustra un ejemplo de un descodificador 30 de vídeo que puede implementar las técnicas de esta presente solicitud. En el ejemplo de la figura 3, el descodificador 30 de vídeo incluye una unidad 70 de descodificación por entropía, una unidad 72 de compensación de movimiento, una unidad 74 de intrapredicción, una unidad 76 de cuantificación inversa, una unidad 78 de transformación inversa, una memoria 82 de fotogramas de referencia y un sumador 80. En algunos ejemplos, el descodificador 30 de vídeo puede realizar una pasada de descodificación que es generalmente recíproca a la pasada de codificación descrita con respecto al codificador 20 de vídeo (tal y como se muestra en la fig. 2). La unidad 72 de compensación de movimiento puede generar datos de predicción basándose en vectores de movimiento recibidos desde la unidad 70 de descodificación de entropía, mientras que la unidad 74 de intrapredicción puede generar datos de predicción basándose en indicadores de modo de intrapredicción recibidos de la unidad 70 de descodificación de entropía.
Durante el proceso de descodificación, el descodificador 30 de vídeo recibe un flujo de bits de vídeo codificado que representa bloques de vídeo de un segmento de vídeo codificado y elementos sintácticos asociados, desde el codificador 20 de vídeo. La unidad 70 de descodificación por entropía del descodificador 30 de vídeo descodifica por entropía el flujo de bits para generar coeficientes cuantificados, vectores de movimiento o indicadores de modo de intrapredicción y otros elementos de sintaxis. La unidad 70 de descodificación por entropía reenvía los vectores de movimiento y otros elementos de sintaxis a la unidad 72 de compensación de movimiento. El descodificador 30 de vídeo puede recibir los elementos de sintaxis a nivel del segmento de vídeo y/o el nivel del bloque de vídeo.
Cuando el segmento de vídeo está codificado como un segmento intracodificado (I), la unidad 74 de intrapredicción puede generar datos de predicción para un bloque de vídeo del segmento de vídeo actual basándose en un modo de intrapredicción señalizado y en datos de bloques previamente descodificados del fotograma o imagen actual. Cuando el fotograma de video se codifica como un segmento intercodificado (es decir, B, P, o GPB), la unidad 72 de compensación de movimiento produce bloques predictivos para un bloque de video del segmento de vídeo actual basado en los vectores de movimiento y otros elementos de sintaxis recibidos de la unidad 70 de descodificación por entropía. Los bloques predictivos pueden producirse a partir de una de las imágenes de referencia dentro de una de las listas de imágenes de referencia. El descodificador 30 de vídeo puede construir las listas de fotogramas de referencia, por ejemplo, la Lista 0 y la Lista 1, usando técnicas de construcción predeterminadas basadas en imágenes de referencia que están almacenadas en la memoria 82 de fotogramas de referencia.
La unidad 72 de compensación de movimiento determina 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 predictivos para el bloque de vídeo actual que se está descodificando. Por ejemplo, la unidad 72 de compensación de movimiento usa algunos de los elementos de sintaxis recibidos para determinar un modo de predicción (p. ej., intra- o intrapredicción) usado para codificar los bloques de vídeo del segmento de vídeo, un tipo de segmento de intrapredicción (p. ej., 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 intrapredicción para cada bloque de vídeo intercodificado del segmento, y otra información para descodificar los bloques de vídeo en el segmento de vídeo actual.
La unidad 72 de compensación de movimiento también puede realizar una interpolación basándose en filtros de interpolación. La unidad 72 de compensación de movimiento puede usar filtros de interpolación como los que usa el codificador 20 de vídeo durante la codificación de los bloques de vídeo para calcular valores interpolados para píxeles subenteros de bloques de referencia. En este caso, la unidad 72 de compensación de movimiento puede determinar los filtros de interpolación usados por el codificador 20 de vídeo a partir de los elementos de sintaxis recibidos y utilizar los filtros de interpolación para producir bloques predictivos.
Los datos para una imagen de textura correspondiente a un mapa de profundidad pueden almacenarse en la memoria 82 de fotograma de referencia. La unidad 72 de compensación de movimiento también puede configurarse para intrapredecir bloques de profundidad de un mapa de profundidad.
Tal y como apreciarán los expertos en la técnica, el sistema 10 de codificación de la figura 1A es apto para implementar diversas técnicas de compresión o de codificación de vídeo. Algunas técnicas de compresión de vídeo, tales como los filtros de intrapredicción, de intrapredicción y/o de lazo se analizarán más adelante. Por lo tanto, las técnicas de compresión de vídeo se han adoptado en diversos estándares de codificación de vídeo, tales como H.264/AVC y H.265/HEVC.
Se utilizan diversas herramientas de codificación, tales como la predicción adaptativa de vectores de movimiento (AMVP, por sus siglas en inglés) y el modo de fusión (MERGE), para predecir vectores de movimiento (MV, por sus siglas en inglés) y mejorar el rendimiento de intrapredicción y, por lo tanto, el rendimiento de compresión de vídeo global.
Se pueden usar otras variaciones del descodificador 30 de vídeo para descodificar el flujo de bits comprimido. Por ejemplo, el descodificador 30 puede producir el flujo de vídeo de salida sin la unidad de filtrado de lazo. Por ejemplo, en el caso de ciertos bloques o fotogramas, un descodificador 30 no basado en la transformada puede cuantificar a la inversa la señal residual directamente sin la unidad 78 de procesamiento de transformada inversa. En otra implementación, el descodificador 30 de vídeo puede tener la unidad 76 de cuantificación inversa y la unidad 78 de procesamiento de transformada inversa combinadas en una sola unidad.
La figura 4 es un diagrama esquemático de un dispositivo de codificación de vídeo según una realización de la divulgación. El dispositivo 400 de codificación de vídeo es apto para implementar las realizaciones descritas tal y como se describen en la presente memoria. En una realización, el dispositivo 400 de codificación de vídeo puede ser un descodificador tal como el descodificador 30 de vídeo de la Figura 1A o un codificador tal como el codificador 20 de vídeo de la Figura 1A. En una realización, el dispositivo 400 de codificación de vídeo puede ser uno o más componentes del descodificador 30 de vídeo de la figura 1A o del codificador 20 de vídeo de la figura 1A que se han descrito anteriormente.
El dispositivo 400 de codificación de vídeo incluye puertos 410 de ingreso y unidades 420 receptoras (Rx) para recibir datos, un procesador 430 (que puede ser una unidad lógica o una unidad central de procesamiento [CPU, por sus siglas en inglés]) para procesar los datos, unidades 440 transmisoras (Tx), puertos 450 de egreso para transmitir los datos y una memoria 460 para almacenar los datos. El dispositivo 400 de codificación de vídeo también puede incluir componentes óptoeléctricos (OE) y componentes electroópticos (EO) que estén acoplados a los puertos 410 de ingreso, a las unidades 420 receptoras, a las unidades 440 transmisoras y a los puertos 450 de egreso para el ingreso o el egreso de señales ópticas o eléctricas.
El procesador 430 se implementa mediantehardwarey/osoftware.El procesador 430 puede implementarse como uno o más chips de CPU, núcleos (p. ej., como un procesador de multinúcleo), matrices FPGA, circuitos ASIC y procesadores DSP. El procesador 430 está en comunicación con los puertos 410 de ingreso, las unidades 420 receptoras, las unidades 440 transmisoras, los puertos 450 de egreso y la memoria 460. El procesador 430 incluye un módulo 470 de codificación. El módulo 470 de codificación implementa las realizaciones divulgadas que se describen en la presente memoria. Por ejemplo, el módulo 470 de codificación implementa, procesa, prepara o proporciona las diversas operaciones de codificación. Por lo tanto, la inclusión del módulo 470 de codificación proporciona una mejora sustancial a la funcionalidad del dispositivo 400 de codificación de vídeo y efectúa una transformada del dispositivo 400 de codificación de vídeo a un estado diferente. Alternativamente, el módulo 470 de codificación se implementa como unas instrucciones almacenadas en la memoria 460 y ejecutadas por el procesador 430.
La memoria 460 incluye uno o más discos, unidades de cinta magnética y unidades de estado sólido y puede utilizarse como dispositivo de almacenamiento de datos en desbordamiento, para almacenar programas cuando tales programas se seleccionen para su ejecución y para almacenar instrucciones y datos que se lean durante la ejecución de los mismos. La memoria 460 puede ser volátil y/o no volátil y puede ser una memoria de solo lectura (ROM, por sus siglas en inglés), una memoria de acceso aleatorio (RAM, por sus siglas en inglés), una memoria ternaria de contenido direccionable (TCAM, por sus siglas en inglés) y/o una memoria de acceso aleatorio estática (SRAM, por sus siglas en inglés).
La figura 5 es un diagrama de bloques simplificado de un aparato 500 que puede usarse como cualquiera o ambos del dispositivo 12 fuente y el dispositivo 14 de destino de la figura 1A según una realización ejemplar. El aparato 500 puede implementar técnicas de la presente solicitud. El aparato 500 puede estar en forma de un sistema informático que incluya múltiples dispositivos de computación o en forma de un único dispositivo de computación, por ejemplo, un teléfono móvil, un ordenador de tableta, un ordenador portátil, un ordenador notebook, un ordenador de sobremesa y similares.
Un procesador 502 del aparato 500 puede ser una unidad central de procesamiento. Alternativamente, el procesador 502 puede ser cualquier otro tipo de dispositivo o múltiples dispositivos, que sea capaz de manipular o procesar información que exista actualmente o que se desarrolle de aquí en adelante. Aunque, tal y como se muestra, las implementaciones divulgadas pueden ponerse en práctica con un solo procesador, por ejemplo, el procesador 502, se pueden obtener ventajas de velocidad y de rendimiento usando más de un procesador.
En una implementación, 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). Puede usarse como memoria 504 cualquier otro tipo apropiado de dispositivo de almacenamiento. La memoria 504 se puede usar para almacenar un código y/o datos 506 a los que accede un procesador 502 usando un bus 512. Además, la memoria 504 puede usarse para almacenar un sistema 508 operativo y programas 510 de aplicación. Los programas 510 de aplicación pueden incluir al menos un programa que permita al procesador 502 realizar los métodos aquí descritos. Por ejemplo, los programas 510 de aplicación pueden incluir múltiples aplicaciones 1 a N e incluir además una aplicación de codificación de vídeo que realice los métodos aquí descritos. El aparato 500 también puede incluir una memoria adicional en forma de un almacén 514 secundario, que puede ser, por ejemplo, una tarjeta de memoria utilizada con un dispositivo de computación móvil. Como las sesiones de comunicación por vídeo pueden contener una gran cantidad de información, pueden almacenarse total o parcialmente en el almacén 514 y cargarse en la memoria 504 según sea necesario para el procesamiento.
El aparato 500 también puede incluir uno o más dispositivos de salida, tales como una pantalla 518. En un ejemplo, la pantalla 518 puede ser una pantalla sensible al tacto que combine una pantalla con un elemento sensible al tacto que pueda hacerse funcionar para detectar entradas táctiles. La pantalla 518 puede estar acoplada al procesador 502 a través del bus 512. Se pueden proporcionar otros dispositivos de salida que permitan a un usuario programar o, de otro modo, usar el aparato 500 además de o como alternativa a la pantalla 518. Cuando el dispositivo de salida es o incluye una pantalla, la pantalla puede implementarse de diversas maneras, incluida una pantalla de cristal líquido (LCD, por sus siglas en inglés), una pantalla de tubo de rayos catódicos (CRT, por sus siglas en inglés), una pantalla de plasma o una pantalla de diodos emisores de luz (LED), tal como una pantalla de led orgánico (OLED).
El aparato 500 también puede incluir o estar en comunicación con un dispositivo 520 de detección de imágenes, por ejemplo, una cámara o cualquier otro dispositivo 520 de detección de imágenes que exista actualmente o se desarrolle de aquí en adelante que pueda detectar una imagen, tal como la imagen de un usuario que esté manejando el aparato 500. El dispositivo 520 de detección de imágenes se puede posicionar para que apunte al usuario que esté manejando el aparato 500. En un ejemplo, la posición y el eje óptico del dispositivo 520 de detección de imágenes pueden configurarse para que el campo de visión incluya una zona que sea directamente adyacente a la pantalla 518 y desde la cual sea visible la pantalla 518.
El aparato 500 también puede incluir o estar en comunicación con un dispositivo 522 de detección de sonidos, por ejemplo, un micrófono o cualquier otro dispositivo de detección de sonidos que exista actualmente o se desarrolle de aquí en adelante y que pueda detectar sonidos cerca del aparato 500. El dispositivo 522 de detección de sonidos se puede posicionar para que apunte al usuario que esté manejando el aparato 500 y se puede configurar para recibir sonidos, por ejemplo, habla u otras declaraciones, emitidos por parte del usuario mientras maneja el aparato 500.
Aunque el procesador 502 y la memoria 504 del aparato 500 se han representado en la figura 5 como si estuviesen integrados en un solo dispositivo, pueden utilizarse otras configuraciones. Las operaciones del procesador 502 se pueden distribuir entre múltiples máquinas (donde cada máquina tiene uno o más procesadores) que se pueden acoplar directamente o a través de una red de área local u otra red. La memoria 504 puede distribuirse entre múltiples máquinas, tales como una memoria basada en red o una memoria en múltiples máquinas que realicen las operaciones del aparato 500. Aunque aquí se ha representado como un único bus, el bus 512 del aparato 500 puede incluir múltiples buses. Además, el almacén 514 secundario puede estar acoplado directamente a los demás componentes del aparato 500 o puede accederse a él a través de una red, y puede incluir una única unidad integrada, tal como una tarjeta de memoria, o múltiples unidades, tales como múltiples tarjetas de memoria. Por tanto, el aparato 500 puede implementarse en una gran variedad de configuraciones.
La presente divulgación se refiere a una intrapredicción como parte de un mecanismo de codificación de vídeo.
La intrapredicción se puede usar cuando no hay ninguna imagen de referencia disponible o cuando no se usa codificación por intrapredicción para el bloque o la imagen actual. Las muestras de referencia de intrapredicción normalmente se obtienen de bloques vecinos en la misma imagen previamente codificados (o reconstruidos). Por ejemplo, tanto en H.264/AVC como en H.265/HEVC, las muestras límite de bloques adyacentes se usan como referencia para la intrapredicción. Existen muchos modos de intrapredicción diferentes para cubrir distintos caracteres estructurales o de textura. En cada modo se usa un método de obtención de señales de predicción diferente. Por ejemplo, H.265/HEVC admite un total de 35 modos de intrapredicción, tal y como se muestra en la figura 6.
En el caso de la intrapredicción, se utilizan como referencia las muestras límite descodificadas de bloques adyacentes. El codificador selecciona el mejor modo de intrapredicción de luma de cada bloque de entre 35 opciones: 33 modos de predicción direccional, un modo DC y un modo plano(Planar).El mapeo entre la dirección de intrapredicción y el número de modo de intrapredicción se especifica en la figura 6.
Tal y como se muestra en la figura 7, el bloque “ CUR” es un bloque actual que hay que predecir; las muestras grises a lo largo del límite de bloques construidos adyacentes se usan como muestras de referencia. La señal de predicción se puede obtener mapeando las muestras de referencia según un método específico que viene indicado por el modo de intrapredicción.
La codificación de vídeo se puede realizar basada en el espacio de color y el formato de color. Por ejemplo, el vídeo en color desempeña un papel importante en los sistemas multimedia, donde se utilizan varios espacios de color para representar el color de modo eficiente. Un espacio de color especifica el color con valores numéricos que utilizan varios componentes. Un espacio de color popular es el espacio de color RGB, donde el color se representa como una combinación de tres valores de componentes de color primarios (es decir, rojo, verde y azul). Para la compresión de vídeo en color, se ha utilizado mucho el espacio de color YCbCr, tal y como se describe en “ Colour space conversions” , de A. Ford y A. Roberts, Universidad de Westminster, Londres, Tech. Rep., agosto de 1998.
YCbCr se puede convertir fácilmente desde el espacio de color RGB mediante una transformación lineal y la redundancia entre diferentes componentes, es decir, la redundancia entre componentes, se reduce significativamente en el espacio de color YCbCr. Una ventaja de YCbCr es la retrocompatibilidad con la televisión en blanco y negro, ya que la señal Y transmite información de luminancia. Además, la anchura de banda de crominancia se puede reducir submuestreando los componentes Cb y Cr en un formato de muestreo de croma 4:2:0 con un impacto subjetivo significativamente menor que el submuestreo en el espacio de color RGB. Debido a estas ventajas, YCbCr ha sido el principal espacio de color en la compresión de vídeo. También hay otros espacios de color, tales como YCoCg, que se utilizan en la compresión de vídeo. En esta descripción, independientemente del espacio de color real utilizado, la luma (o L o Y) y las dos cromas (Cb y Cr) se utilizan para representar los tres componentes de color en el esquema de compresión de vídeo.
Por ejemplo, cuando la estructura de muestreo en formato de croma es un muestreo 4:2:0, cada una de las dos matrices de croma tiene la mitad de la altura y la mitad de la anchura de la matriz de luma. En la figura 8 se muestran las ubicaciones relativas verticales y horizontales nominales de muestras de luma y de croma en imágenes.
La figura 9 (que incluye la fig. 9A y la fig. 9B) es un diagrama esquemático que ilustra un mecanismo de ejemplo de ejecución de una intrapredicción 900 de modelo lineal de componentes cruzados (CCLM). La figura 9 ilustra un ejemplo de muestreo 4:2:0. La figura 9 muestra un ejemplo de la ubicación de las muestras izquierdas y superiores, y de la muestra del bloque actual que participa en el modo CCLM. Los cuadrados blancos son muestras del bloque actual y los círculos sombreados son muestras reconstruidas. La figura 9A ilustra un ejemplo de los píxeles reconstruidos vecinos de un bloque de luma coubicado. La figura 9B ilustra un ejemplo de los píxeles reconstruidos vecinos de un bloque de croma. Si el formato de vídeo es YUV4:2:0, entonces hay un bloque de luma de 16x16 y dos bloques de croma de 8x8.
La intrapredicción 900 de CCLM es un tipo de intrapredicción de componentes cruzados. Así, la intrapredicción 900 de CCLM se puede realizar mediante una unidad 46 de intraestimación de un codificador 20 y/o mediante una unidad 94 de intrapredicción de un descodificador 30. La intrapredicción 900 de CCLM predice muestras 903 de croma en un bloque 901 de croma. Las muestras 903 de croma aparecen en unas posiciones enteras que se han mostrado como unas líneas que se intersecan. La predicción se basa en parte en muestras de referencia vecinas, que se han representado como círculos negros. A diferencia de los modos 500 de intrapredicción, las muestras 903 de croma no se predicen basándose únicamente en las muestras 905 de referencia de croma vecinas, que se denominan muestras de croma reconstruidas (Rec'C). Las muestras 903 de croma también se predicen basándose en muestras 913 de referencia de luma y en muestras 915 de referencia de luma vecinas. Específicamente, una CU contiene un bloque 911 de luma y dos bloques 901 de croma. Se genera un modelo que correlaciona las muestras 903 de croma y las muestras 913 de referencia de luma en la misma CU. Se determinan coeficientes lineales para el modelo, comparando las muestras 915 de referencia de luma vecinas con las muestras 905 de referencia de croma vecinas.
A medida que se reconstruyen las muestras 913 de referencia de luma, estas se denominan muestras de luma reconstruidas (Rec'L). A medida que se reconstruyen las muestras 905 de referencia de croma vecinas, estas se denominan muestras de croma reconstruidas (Rec'C).
Tal y como se muestra, el bloque 911 de luma contiene cuatro veces más muestras que el bloque 901 de croma. Específicamente, el bloque 901 de croma contiene un número N de muestras por un número N de muestras, mientras que el bloque 911 de luma contiene un número 2N de muestras por un número 2N de muestras. Así, el bloque 911 de luma tiene una resolución cuatro veces superior a la del bloque 901 de croma. Para que la predicción funcione, en las muestras 913 de referencia de luma y en las muestras 915 de referencia de luma vecinas, las muestras 913 de referencia de luma y las muestras 915 de referencia de luma vecinas se submuestrean para proporcionar una comparación precisa con las muestras 905 de referencia de croma vecinas y las muestras 903 de croma. El submuestreo es el proceso de reducción de la resolución de un grupo de valores de muestra. Por ejemplo, cuando se usa el formato YUV4:2:0, las muestras de luma se pueden reducir en un factor de cuatro (p. ej., dos de anchura y dos de altura). YUV es un sistema de codificación de color que emplea un espacio de color en términos de componentes de luma Y y dos componentes de crominancia U y V.
Para reducir la redundancia entre componentes cruzados, existe un modo de predicción de modelo lineal de componentes cruzados (CCLM, llamado también modo LM o modo CCIP), para el cual se predicen las muestras de croma basándose en las muestras de luma reconstruidas de la misma unidad de codificación (CU) usando un modelo lineal, de la siguiente manera:
predc (i,)) = a ■ recL'(i,j<)>p<(>1<)>
donde predC(i, j) representa las muestras de croma predichas en una CU, recL(i, j) representa las muestras de luma reconstruidas submuestreadas de la misma CU, y a y p son parámetros de modelo lineal o coeficientes de modelo lineal.
En un ejemplo, los parámetros a y p se obtienen minimizando el error de regresión entre las muestras de luma reconstruidas vecinas que hay alrededor del bloque de luma actual y las muestras de croma reconstruidas vecinas que hay alrededor del bloque de croma, de la siguiente manera:
_ A ^ ( i ( n > C ( n ) ) - £ ¿ ( n > £ C ( n )
JV-Z(L(n>L(n))-XL(n>XL(n) ^'
donde L(n) representa las muestras de luma reconstruidas vecinas superiores e izquierdas submuestreadas,C(n)representa las muestras de croma reconstruidas vecinas superiores e izquierdas, y el valor deNes igual a la suma de la anchura y la altura del bloque de codificación de croma actual (p. ej., el bloque 901 de croma). En otro ejemplo, a y p se determinan basándose en los valores mínimos y máximos de las muestras de referencia de luma vecinas submuestreadas, tal y como se explica más adelante con respecto a la figura 16.
La presente divulgación se refiere al uso de muestras de luma para predecir muestras de croma por intrapredicción, como parte de un mecanismo de codificación de vídeo. Los modos de predicción de modelo lineal de componentes cruzados (CCLM) se añaden como modos de intrapredicción de croma adicionales. En el lado del codificador, para seleccionar el modo de intrapredicción de croma, se añade una mayor comprobación del coste de la distorsión en la velocidad para el componente de croma.
En general, cuando se aplica el modo de predicción de CCLM (abreviatura de modo de predicción de LM), el codificador 20 de vídeo y el descodificador 30 de vídeo pueden invocar los siguientes pasos. El codificador 20 de vídeo y el descodificador 30 de vídeo pueden submuestrear las muestras de luma vecinas. El codificador 20 de vídeo y el descodificador 30 de vídeo pueden obtener parámetros lineales (i.e., a y (p) [denominados también parámetros de escalado o parámetros de un modo de predicción de modelo lineal de componentes cruzados (CCLM)]). El codificador 20 de vídeo y el descodificador 30 de vídeo pueden submuestrear el bloque de luma actual y obtener la predicción (p. ej., un bloque predictivo), basándose en el bloque de luma submuestreado y los parámetros lineales.
Puede haber diversas maneras de submuestrear.
La figura 10 es un diagrama conceptual que ilustra un ejemplo de posiciones de luma y de posiciones de croma para submuestrear muestras de un bloque de luma con el fin de generar un bloque predictivo para un bloque de croma. Tal y como se ha representado en la figura 10, se predice una muestra de croma (representada por el triángulo relleno [i.e., negro liso]) a partir de dos muestras de luma (representadas por los dos círculos rellenos) aplicando un filtro [1, 1]. El filtro [1, 1] es un ejemplo de filtro de 2 derivaciones.
La figura 11 es un diagrama conceptual que ilustra otro ejemplo de unas posiciones de luma y de unas posiciones de croma para submuestrear unas muestras de un bloque de luma para generar un bloque predictivo. Tal y como se ha representado en la figura 11, una muestra de croma (representada por el triángulo relleno [i.e., negro liso]) se predice a partir de seis muestras de luma (representadas por los seis círculos rellenos) aplicando un filtro de 6 derivaciones.
Las figuras 12-15 son diagramas esquemáticos que ilustran mecanismos 1200, 1300, 1400 y 1500 de ejemplo de submuestreo para admitir una intrapredicción de componentes cruzados, por ejemplo, según una intrapredicción 900 de CCLM, un mecanismo 1600, una intrapredicción de MDLM utilizando un modo 1700 de CCIP_A y un modo 1800 de CCIP_L, y/o una intrapredicción de MMLM, tal y como se ha representado en la gráfica 1900. Así, los mecanismos 1200, 1300, 1400 y 1500 se pueden realizar mediante una unidad 46 de intrapredicción y/o una unidad 74 de intrapredicción de un sistema códec 10 o 40, mediante una unidad 46 de intrapredicción de un codificador 20 y/o mediante una unidad 74 de intrapredicción de un descodificador 30. Específicamente, los mecanismos 1200, 1300, 1400 y 1500 pueden emplearse durante un paso 2210 de un método 220, durante un paso 2320 de un método 230 o un paso 2520 de un método 250 en un descodificador y durante un paso 2420 de un método 240 o un paso 2620 de un método 260 en un codificador, respectivamente. Los detalles de las figuras 12-15 se presentaron en la solicitud internacional n.° PCT/US2019/041526, presentada el 7 de diciembre de 2019.
En el mecanismo 1200 de la figura 12, se submuestrean dos filas 1218 y 1219 de muestras de referencia de luma vecinas y se submuestrean tres columnas 1220, 1221 y 1222 de muestras de referencia de luma vecinas. Las filas 1218 y 1219 y las columnas 1220, 1221 y 1222 son directamente adyacentes a un bloque 1211 de luma que comparte una CU con un bloque de croma que se está prediciendo según una intrapredicción de componentes cruzados. Tras el submuestreo, las filas 1218 y 1219 de muestras de referencia de luma vecinas se convierten en una única fila 1216 de muestras de referencia de luma vecinas submuestreadas. Además, las columnas 1220, 1221 y 1222 de muestras de referencia de luma vecinas se submuestrean, lo que da como resultado una sola columna 1217 de muestras de referencia de luma vecinas submuestreadas. Además, las muestras de luma del bloque 1211 de luma se submuestrean para crear muestras 1212 de referencia de luma submuestreadas. Las muestras 1212 de referencia de luma submuestreadas y las muestras de referencia de luma vecinas submuestreadas de la fila 1216 y de la columna 1217 se pueden emplear entonces para realizar una intrapredicción de componentes cruzados según la ecuación (1). Cabe observar que las dimensiones de las filas 1218 y 1219 y las columnas 1220, 1221 y 1222 pueden ir más allá del bloque 1211 de luma, tal y como se muestra en la figura 12. Por ejemplo, el número de muestras de referencia de luma vecinas superiores en cada fila 1218/1219, que puede indicarse como M es mayor que el número de muestras de luma en una fila del bloque 1211 de luma, que puede indicarse como W. Además, el número de muestras de referencia de luma vecinas izquierdas en cada columna 1220/1221/1222, que puede indicarse como N es mayor que el número de muestras de luma en un columna del bloque 1211 de luma, que puede indicarse como H.
En un ejemplo, el mecanismo 1200 puede implementarse de la siguiente manera. Para un bloque 1211 de luma, las dos filas 1218 y 1219 vecinas superiores, indicadas como A1 y A2 se utilizan para realizar un submuestreo, con el fin de obtener una muestra descendente de la fila 1216 vecina indicada como A. A[i] es la iésima muestra en A, A1[i] es la iésima muestra en A1 y A2[i] es la iésima muestra en A2. En un ejemplo específico, se puede aplicar un filtro de submuestreo de seis derivaciones a las filas 1218 vecinas y 1219 para obtener la fila 1216 vecina submuestreada según la ecuación (4):
A[i] = (A2[2i]*2+ A2[2i-1]+ A2[2i+1]+Al [2i]*2+ Al [2i-l]+ A l [2i+l]+4)»3 (4)
Además, las columnas 1220, 1221 y 1222 vecinas izquierdas se han indicado como L1, L2 y L3 y se utilizan para submuestrear con el fin de obtener una columna 1217 vecina submuestreada denotada como L. L[i] es la iésima muestra en L, L1[i] es la iésima muestra en L1, L2[i] es la iésima muestra en L2 y L3[i] es la iésima muestra en L3. En un ejemplo específico, se puede aplicar un filtro de submuestreo de seis derivaciones a las columnas 1220, 1221 y 1222 vecinas para obtener una columna 1217 vecina submuestreada según la ecuación (5):
L[i] = (L2[2i]*2+Ll [2i]+L3[2i]+ L2[2i+1]*2+Ll [2i+l]+L3[2i+l] 4) » 3 (5)
El mecanismo 1300 de la figura 13 es sustancialmente similar al mecanismo 1200 de la figura 12. El mecanismo 1300 incluye un bloque 1311 de luma con filas 1318 y 1319 vecinas y columnas 1320, 1321 y 1322 de muestras de referencia de luma vecinas, que son similares al bloque 1211 de luma, las filas 1218 y 1219 y las columnas 1220, 1221 y 1222, respectivamente. La diferencia es que las filas 1318 y 1319 y las columnas 1320, 1321 y 1322 no van más allá del bloque 1211 de luma. Al igual que en el mecanismo 1200, el bloque 1311 de luma, las filas 1318 y 1319 y las columnas 1320, 1321 y 1322 se submuestrean para crear muestras 1312 de referencia de luma submuestreadas, una columna 1317 y una fila 1316 que contiene muestras de referencia de luma vecinas submuestreadas. La columna 1317 y la fila 1316 no van más allá del bloque de muestras 1312 de referencia de luma submuestreadas. De lo contrario, las muestras 1312 de referencia de luma submuestreadas, la columna 1317 submuestreada y la fila 1316 submuestreada son sustancialmente similares a las muestras 1212 de referencia de luma submuestreadas, la columna 1217 submuestreada y la fila 1216 submuestreada, respectivamente.
El mecanismo 1400 de la figura 14 es similar a los mecanismos 1200 y 1300, pero emplea una sola fila 1418 de muestras de referencia de luma vecinas en vez de dos filas. El mecanismo 1400 también emplea tres columnas 1420, 1421 y 1422 de muestras de referencia de luma vecinas. La fila 1418 y las columnas 1420, 1421 y 1422 son directamente adyacentes a un bloque 1411 de luma que comparte una CU con un bloque de croma que se está prediciendo según una intrapredicción de componentes cruzados. Tras el submuestreo, la fila 1418 de muestras de referencia de luma vecinas se convierte en una fila 1416 de muestras de referencia de luma vecinas submuestreadas. Además, las columnas 1420, 1421 y 1422 de muestras de referencia de luma vecinas se submuestrean, lo que da como resultado una sola columna 1417 de muestras de referencia de luma vecinas submuestreadas. Además, las muestras de luma del bloque 1411 de luma se submuestrean para crear muestras 1412 de referencia de luma submuestreadas. Las muestras 1412 de referencia de luma submuestreadas y las muestras de referencia de luma vecinas submuestreadas de la fila 1416 y de la columna 1417 se pueden emplear entonces para la intrapredicción de componentes cruzados según la ecuación (1).
Durante el submuestreo, las filas y columnas se almacenan en una memoria de una memoria tampón de línea. Al omitirse la fila 1319 durante el submuestreo y usar en su lugar una sola fila 1418 de valores, se reduce significativamente el uso de memoria en la memoria tampón de línea. Sin embargo, se ha descubierto que las muestras de referencia de luma vecinas submuestreadas de la fila 1316 son sustancialmente similares a las muestras de referencia de luma vecinas submuestreadas de la fila 1416. Por lo tanto, omitir la fila 1319 durante el submuestreo y usar en su lugar una sola fila 1418 da como resultado una menor utilización de memoria en la memoria tampón de línea y, por tanto, una mejor velocidad de procesamiento, un mayor paralelismo, menos requisitos de memoria, etc., sin sacrificar la precisión y, por tanto, el rendimiento de codificación. Por consiguiente, en una realización de ejemplo, se submuestrea una sola fila 1418 de muestras de referencia de luma vecinas para usarse en la intrapredicción de componentes cruzados.
En un ejemplo, el mecanismo 1400 puede implementarse de la siguiente manera. Para un bloque 1411 de luma, la fila 1418 vecina superior, indicada como A1 se usa para submuestrear con el fin de obtener la fila 1416 vecina submuestreada indicada como A. A[i] es la iésima muestra en A y A1[i] es la iésima muestra en A1. En un ejemplo específico, se puede aplicar un filtro de submuestreo de tres derivaciones a la fila 1418 vecina para obtener la fila 1416 vecina submuestreada según la ecuación (6):
A[i] = (A 1 [2i] *2+ A 1 [2i-1 ] A 1 [2i+1 ] 2 )» 2 (6)
Además, las columnas 1420, 1421 y 1422 vecinas izquierdas se han indicado como L1, L2 y L3 y se utilizan para submuestrear con el fin de obtener una columna 1417 vecina submuestreada indicada como L. L[i] es la iésima muestra en L, L1[i] es la iésima muestra en L1, L2[i] es la iésima muestra en L2 y L3[i] es la iésima muestra en L3. En un ejemplo específico, se puede aplicar un filtro de submuestreo de seis derivaciones a las columnas 1320, 1321 y 1322 vecinas para obtener la columna 1317 vecina submuestreada según la ecuación (7):
L[i] = (L2[2i]*2+Ll[2i]+L 3[2i]+L2[2i+l]*2+Ll[2i+l]+L0[2i+l] 4) » 3 (7)
Cabe observar que el mecanismo 1400 no está limitado a los filtros de submuestreo descritos. Por ejemplo, en vez de emplearse un filtro de submuestreo de tres derivaciones, tal y como se describe en relación con la ecuación (6), las muestras también se pueden obtener directamente utilizando la siguiente ecuación (8):
A[i] = A l [2i] (8)
Un mecanismo 1500 de la figura 15 es similar al mecanismo 1300, pero emplea una sola fila 1518 de muestras de referencia de luma vecinas y una sola columna 1520 de muestras de referencia de luma vecinas en vez de dos filas 1318 y 1319 y tres columnas 1320, 1321 y 1322, respectivamente. La fila 1518 y la 1520 son directamente adyacentes a un bloque 1511 de luma que comparte una CU con un bloque de croma que se está prediciendo según una intrapredicción de componentes cruzados. Tras el submuestreo, la fila 1518 de muestras de referencia de luma vecinas se convierte en una fila 1516 de muestras de referencia de luma vecinas submuestreadas. Además, la columna 1520 de muestras de referencia de luma vecinas se submuestrea, lo que da como resultado una sola columna 1517 de muestras de referencia de luma vecinas submuestreadas. Las muestras de referencia de luma vecinas submuestreadas de la fila 1516 y de la columna 1517 se pueden emplear entonces para la intrapredicción de componentes cruzados según la ecuación (1).
El mecanismo 1500 omite la fila 1319 y las columnas 1321 y 1322 durante el submuestreo y utiliza en su lugar una sola fila 1518 y una sola columna 1520 de valores, lo que reduce significativamente el uso de memoria en la memoria tampón de línea. Sin embargo, se ha descubierto que las muestras de referencia de luma vecinas submuestreadas de la fila 1316 y de la columna 1317 son sustancialmente similares a las muestras de referencia de luma vecinas submuestreadas de la fila 1516 y de la columna 1517, respectivamente. Así pues, omitir la fila 1319 y las columnas 1321 y 1322 durante el submuestreo y usar en su lugar una sola fila 1518 y una sola columna 1520 da como resultado una menor utilización de memoria en la memoria tampón de línea y, por tanto, una mejor velocidad de procesamiento, un mayor paralelismo, menos requisitos de memoria, etc., sin sacrificar la precisión y, por tanto, el rendimiento de codificación. Por consiguiente, en otra realización de ejemplo, se submuestrean una única fila 1518 de muestras de referencia de luma vecinas y una única columna 1520 de muestras de referencia de luma vecinas para usarse en la intrapredicción de componentes cruzados.
En un ejemplo, el mecanismo 1500 puede implementarse de la siguiente manera. Para un bloque 1511 de luma, la fila 1518 vecina superior, indicada como A1 se usa para submuestrear, con el fin de obtener la fila vecina 1516 indicada como A. A[i] es la iésima muestra en A y A1[i] es la iésima muestra en A1. En un ejemplo específico, se puede aplicar un filtro de submuestreo de tres derivaciones a la fila 1518 vecina para obtener la fila 1516 vecina submuestreada según la ecuación (9):
A[i] = (Al [2i]*2+ Al [2i-l]+ A l [2i+l]+2)»2 (9)
Además, la columna 1520 vecina izquierda se ha indicado como L1 y se usa para submuestrear, con el fin de obtener una columna 1517 vecina submuestreada indicada como L. L[i] es la iésima muestra en L y L1[i] es la iésima muestra en L1. En un ejemplo específico, se puede aplicar un filtro de submuestreo de dos derivaciones a la columna 1520 vecina para obtener la columna 1517 vecina submuestreada según la ecuación (10):
L[i] = (L1 [2i] Ll[2i+1] 1) » 2 (10)
En un ejemplo alternativo, el mecanismo 1500 podría modificarse para emplear una columna L2 (p. ej., la columna 1321) en vez de una columna L1 (p. ej., la columna 1520) cuando se submuestree. En este caso, se puede aplicar un filtro de submuestreo de dos derivaciones a la columna L2 vecina para obtener la columna 1517 vecina submuestreada según la ecuación (11). Cabe observar que el mecanismo 1500 no está limitado a los filtros de submuestreo descritos. Por ejemplo, en vez de emplear un filtro de submuestreo de dos derivaciones y otro de tres derivaciones, tal y como se describe en relación con las ecuaciones (9) y (10), las muestras también se pueden obtener directamente utilizando las siguientes ecuaciones (11) y (12):
A[i] = Al[2i] (11)
L[i] =L2[2i] ( 12 )
Además, cabe observar también que los mecanismos 1400 y 1500 también se pueden aplicar cuando las dimensiones de las filas 1418, 1416, 1518 y 1516 y/o de las columnas 1420, 1421, 1422, 1417, 1520 y/o 1517 van más allá del (de los) correspondiente(s) bloque(s) 1411 y/o 1511 de luma (p. ej., tal y como se muestra en la figura 12).
En el modelo de exploración conjunta (JEM, por sus siglas en inglés), hay dos modos de CCLM: el modo CCLM de modelo único y el modo CCLM de múltiples modelos (MMLM, por sus siglas en inglés). Tal y como su nombre indica, el modo CCLM de modelo único emplea un modelo lineal para predecir las muestras de croma a partir de las muestras de luma de toda la CU, mientras que, en el MMLM, puede haber dos modelos lineales. En el m Ml M, las muestras de luma vecinas y las muestras de croma vecinas del bloque actual se clasifican en dos grupos, cada grupo se utiliza como un conjunto de entrenamiento para obtener un modelo lineal (i.e., se obtienen un a particular y un p particular para un grupo particular). Además, las muestras del bloque de luma actual también se clasifican basándose en la misma regla para la clasificación de muestras de luma vecinas.
La figura 16 es una gráfica que ilustra un mecanismo 1600 de ejemplo de determinación de parámetros de modelo lineal para admitir una intrapredicción de CCLM. Para obtener los parámetros a y p de modelo lineal, las muestras de luma reconstruidas vecinas superiores e izquierdas se pueden submuestrear para obtener una relación unívoca con las muestras de croma reconstruidas vecinas superiores e izquierdas. En el mecanismo 1200, a y p, tal y como se utilizan en la ecuación (1) se determinan basándose en los valores mínimos y máximos de las muestras de referencia de luma vecinas submuestreadas. Los dos puntos (2 pares de valor de luma y valor de croma o 2 parejas de valor de luma y valor de croma) (A, B) son los valores mínimo y máximo que hay dentro del conjunto de muestras de luma vecinas, tal y como se ha representado en la figura 16. Este es un enfoque alternativo para determinar a y p que se basa en minimizar el error de regresión.
Tal y como se muestra en la figura 16, la ecuación Y = ax p representa una línea recta, donde los parámetros a y p de modelo lineal se obtienen según las siguientes ecuaciones (13) y (14):
donde (xA, yA) es un conjunto de coordenadas definidas por el valor de referencia de luma vecino mínimo y un correspondiente valor de referencia de croma, y (<xb>, yB) es un conjunto de coordenadas definidas por el valor de referencia de luma vecino máximo y un valor de referencia de croma correspondiente. Obsérvese aquí que los dos puntos (2 pares de valor de luma y valor de croma) (A, B) se eligen de entre las muestras vecinas reconstruidas de luma submuestreadas y las muestras vecinas reconstruidas de croma.
El mecanismo 1600 de ejemplo usa los valores de luma máximo y mínimo, y los correspondientes valores de croma para obtener los parámetros de modelo lineal. Para obtener los parámetros de modelo lineal, solo se eligen 2 puntos (un punto está representado por un par de valor de luma y valor de croma) de entre las muestras de luma vecinas y las muestras de croma vecinas. El mecanismo 1600 de ejemplo no se aplica en el caso de algunas secuencias de vídeo con algo de ruido.
Modelo lineal multidireccional
Aparte de que tanto las muestras vecinas anteriores (o superiores) como las muestras vecinas izquierdas se pueden usar para calcular los parámetros de modelo lineal juntos, también se pueden usar alternativamente en los otros 2 modos de CCIP (intrapredicción de componentes cruzados), llamados modos CCIP_A y CCIP_L. CCIP_A y CCIP_L también se pueden denominar modelo lineal multidireccional (MDLM) en aras de la brevedad.
Las figuras 17 y 18 son diagramas esquemáticos que ilustran un mecanismo de ejemplo para realizar una intrapredicción de MDLM. La intrapredicción de MDLM funciona de manera similar a la intrapredicción 900 de CCLM. Específicamente, la intrapredicción de MDLM usa tanto un modo 1700 de predicción de modelo lineal de componentes cruzados (CCIP)_A como un modo 1800 de CCIP_L a la hora de determinar los parámetros a y p de modelo lineal. Por ejemplo, la intrapredicción de MDLM puede calcular los parámetros a y p de modelo lineal utilizando el modo 1700 de CCIP_A y el modo 1800 de CCIP_L. En otro ejemplo, la intrapredicción de MDLM puede usar el modo 1700 de CCIP_A o el modo 1800 de CCIP_L para determinar los parámetros a y p de modelo lineal.
En el modo de CCIP_A, solo se utilizan las muestras vecinas superiores para calcular los parámetros de modelo lineal. Para obtener más muestras de referencia, las muestras vecinas superiores normalmente se amplían a (W+H). Tal y como se muestra en la figura 17, W es igual que H, donde W indica la anchura del respectivo bloque de luma o de croma y H indica la altura del respectivo bloque de luma o de croma.
En el modo de CCIP_L solo se utilizan las muestras vecinas izquierdas para calcular los parámetros de modelo lineal. Para obtener más muestras de referencia, las muestras vecinas izquierdas normalmente se amplían a (H+W). Tal y como se muestra en la figura 18, W es igual que H, donde W indica la anchura del respectivo bloque de luma o de croma y H indica la altura del respectivo bloque de luma o de croma.
El modo de CCIP (i.e., el modo de CCLM o LM) y el MDLM (CCIP_A y CCIP_L) se pueden usar juntos o alternativamente, por ejemplo, la CCIP solo se usa en un códec o el MDLM solo se usa en un códec, o tanto la CCIP como el MDLM se usan en un códec.
CCLM de múltiples modelos
Además del CCLM de modelo único, hay otro modo llamado modo de CCLM de múltiples modelos (MMLM). Tal y como su nombre indica, el modo de CCLM de modelo único emplea un modelo lineal para predecir las muestras de croma a partir de las muestras de luma para toda la CU, mientras que, en el MMLM, puede haber dos modelos lineales. En el MMLM, las muestras de luma vecinas y las muestras de croma vecinas del bloque actual se clasifican en dos grupos. Cada grupo se utiliza como un conjunto de entrenamiento para obtener un modelo lineal (i.e., se obtienen unos a y p particulares para un grupo en particular). Además, las muestras del bloque de luma actual también se clasifican basándose en la misma regla para la clasificación de muestras de luma vecinas.
La figura 19 es una gráfica que ilustra un mecanismo 1900 de ejemplo de determinación de parámetros de modelo lineal para admitir una intrapredicción de MMLM. La intrapredicción de MMLM, tal y como se muestra en la gráfica 1900 es un tipo de intrapredicción de componentes cruzados. La intrapredicción de MMLM es similar a la intrapredicción de CCLM. La diferencia es que, en el MMLM, las muestras de luma reconstruidas vecinas se meten en dos grupos al comparar el valor de luma relevante (p. ej., Rec'L) con un umbral. Luego se realiza una intrapredicción de CCLM en cada grupo para determinar los parámetros a y p de modelo lineal y completar un modelo lineal correspondiente según la ecuación (1). La clasificación de las muestras de luma reconstruidas vecinas en dos grupos se puede realizar según la siguiente ecuación (15):
En un ejemplo, el umbral se calcula como el valor medio de las muestras de luma reconstruidas vecinas. Una muestra de luma reconstruida vecina conRecz[x,y]<Umbralse clasifica en el grupo 1; mientras que una muestra de luma reconstruida vecina con Reci[x,y] >Umbralse clasifica en el grupo 2.
jPredc[x,y\ = c^xRec'L[ x , y \ s i Rec’L[x,y] < Umbral
\predc[x,y\ = a2xRec'L[x,y\+f]2 s iRec’L[x ,y ]> Umbral
\ l J)
donde las variables de la ecuación (15) se definen de manera similar a la de la ecuación (1), donde un subíndice de uno indica una relación con un primer grupo y un subíndice de dos indica una relación con un segundo grupo.
Tal y como muestra en la gráfica 1900, se pueden calcular los parámetros a1 y p1 de modelo lineal para un primer grupo y se pueden calcular los parámetros a2 y p2 de modelo lineal para un segundo grupo. Como ejemplo específico, tales valores pueden ser a1 = 2, p1 = 1, a2 = 1/2 y p 2 = -1 de uno negativo, donde el umbral es un valor de luma de 17. La intrapredicción de MMLM puede seleccionar entonces el modelo resultante que proporcione la menor cantidad de muestras residuales y/o de como resultado el mayor rendimiento de codificación.
Tal y como se ha indicado anteriormente, los mecanismos de ejemplo para realizar las distintas intrapredicciones de CCLM mencionadas en la presente memoria utilizan los valores de luma máximo y mínimo, y los correspondientes valores de croma para obtener los parámetros de modelo lineal; son deseables unos mecanismos mejorados para realizar la intrapredicción de CCLM que consigan parámetros de modelo lineal robustos.
Si más de un punto tiene un valor máximo o más de un punto tiene un valor mínimo, entonces el par de puntos se elegirá basándose en el valor de croma de los puntos correspondientes.
Si más de un punto tiene un valor máximo o más de un punto tiene un valor mínimo, el valor de croma medio de las muestras de luma que tienen el valor máximo se establecerá como el correspondiente valor de croma para el valor de luma máximo, y el valor de croma medio de las muestras de luma que tienen el valor mínimo se establecerá como el correspondiente valor de croma para el valor de luma mínimo;
no solo se elegirá 1 par de puntos (mínimo y máximo). Específicamente, para calcular el parámetro de modelo lineal, se usarán los N puntos que tienen un valor de luma mayor y los puntos M que tienen un valor de luma menor.
No solo se elegirá 1 par de puntos. Específicamente, los N puntos que tienen un valor de luma que está dentro de un intervalo [ValorMáx-T-i, ValorMáx] y los M puntos que tienen un valor de luma que está dentro de un intervalo [ValorMín, ValorMín+T2] se elegirán como los puntos para calcular el parámetro de modelo lineal.
No solo se usan las muestras vecinas superiores e izquierdas para obtener los valores máximo y mínimo, sino que también se usan algunas muestras vecinas ampliadas, como las muestras vecinas izquierdas inferiores y las muestras vecinas derechas superiores.
Con los mecanismos mejorados de ejemplo mencionados anteriormente, se pueden obtener unos parámetros de modelo lineal más robustos al mejorarse el rendimiento de codificación de la intrapredicción de CCLM.
Los mecanismos mejorados para obtener los valores de luma máximo y mínimo, y los correspondientes valores de croma de entre las parejas de muestras de luma y de croma se describirán detalladamente a continuación en la presente divulgación.
Obsérvese aquí que, los mecanismos mejorados también se pueden usar en el MDLM y en el MMLM.
En la presente divulgación se presentan los mecanismos mejorados para obtener los valores de luma máximo y mínimo, y los correspondientes valores de croma con el fin de obtener los parámetros de modelo lineal. Gracias a los mecanismos mejorados, se pueden obtener parámetros de modelo lineal más robustos.
En un ejemplo, el conjunto de los pares de muestras de luma y de muestras de croma se ha ilustrado aquí como {(p0, qü), (p-i, qi), (p2, q2),..., (pi, qi), ..., (pv-1, qV-1)}. Donde pi es el valor de luma del punto iésimo y qi es el valor de croma del punto iésimo. Aquí, el conjunto de puntos de luma se ha denominado como P = {po, pi, p2, ..., pi, ..., pv-i} y el conjunto de puntos de croma se ha denominado como Q = {qo, qi, ..., qi, ..., qv-i}.
Primer mecanismo mejorado: más de i punto extremo y la pareja de puntos se elige según el valor de croma
En el primer mecanismo mejorado, si más de i punto tiene el valor máximo o mínimo, entonces la pareja de puntos se elegirá basándose en el valor de croma de los puntos correspondientes. La pareja de puntos que tenga la menor diferencia entre valores de croma se elegirá como la pareja de puntos para obtener el parámetro de modelo lineal.
Por ejemplo, supóngase que los puntos 5 °, 7 ° y 8 ° tienen el valor de luma máximo y que los puntos 4 ° y 6 ° tienen el valor de luma mínimo, |q7-q4| es el menor valor de entre |q5-q4|, |qs-qa|, |q7-q4|, |q7-q6|, |qs-q4| y |qs-q6|. Por lo tanto, para obtener los parámetros de modelo lineal, se elegirán los puntos 7 ° y 4 °.
Obsérvese aquí que, aparte de utilizar la menor diferencia entre valores de croma, el primer mecanismo mejorado también puede utilizar la mayor diferencia entre valores de croma. Por ejemplo, supóngase que los puntos 5 °, 7 ° y 8 ° tienen el valor de luma máximo y que los puntos 4 ° y 6 ° tienen el valor de luma mínimo, |q5-q6| es el mayor valor de entre |q5-q4|, |q5-q6|, |q7-q4|, |q7-q6|, |qs-q4| y |qs-q6|. Por lo tanto, para obtener los parámetros de modelo lineal, se elegirán los puntos 5 ° y 6 °
Obsérvese aquí que, el mecanismo mejorado también se puede usar en el MDLM y en el MMLM.
Segundo mecanismo mejorado: más de i punto extremo; uso del valor de croma medio
En el segundo mecanismo mejorado, si más de un punto tiene el valor máximo o mínimo, entonces se utilizará el valor de croma medio. El valor de croma que corresponde al valor de luma máximo es el valor de croma medio de los puntos que tienen un valor de luma máximo. El valor de croma que corresponde al valor de luma mínimo es el valor de croma medio de los puntos que tienen un valor de luma mínimo.
Por ejemplo, si los puntos 5 °, 7 ° y 8 ° tienen el valor de luma máximo y los puntos 4 ° y 6 ° tienen el valor de luma mínimo. Entonces el valor de croma que corresponda al valor de luma máximo es el valor medio de q5, q7 y qs. El valor de croma que corresponde al valor de luma mínimo es el valor medio de q4 y q6.
Obsérvese aquí que, el mecanismo mejorado también se puede usar en el MDLM y en el MMLM.
Tercer mecanismo mejorado: (más de un punto basado en el número de puntos) se utilizará más de i punto más grande o más pequeño; uso del valor medio
En el tercer mecanismo mejorado, se utilizarán N puntos para calcular el valor de luma máximo y el correspondiente valor de croma. Los N puntos seleccionados tienen un valor de luma mayor que otros puntos. El valor de luma medio de los N puntos seleccionados se utilizará como el valor de luma máximo y el valor de croma medio de los N puntos seleccionados se utilizará como el valor de croma que corresponde al valor de luma máximo.
Se utilizarán M puntos para calcular el valor de luma mínimo y el correspondiente valor de croma. Los puntos M seleccionados tienen un valor de luma menor que otros puntos. El valor de luma medio de los M puntos seleccionados se utilizará como el valor de luma mínimo y el valor de croma medio de los M puntos seleccionados se utilizará como el valor de croma que corresponde al valor de luma mínimo.
Por ejemplo, si los puntos 5 °, 7 °, 8 °, 9 ° y 11 ° tienen un valor de luma mayor que otros puntos y los puntos 4 °, 6 °, 14 ° y 18 ° tienen el valor de luma menor. Entonces, el valor medio de p5, p7, p8, p9 y p ii es el valor de luma máximo utilizado para obtener los parámetros de modelo lineal y el valor medio de q5, q7, q8, q9 y q ii es el valor de croma que corresponde al valor de luma máximo. Entonces, el valor medio de p4, p6, pi4 y pi8 es el valor de luma mínimo utilizado para obtener los parámetros de modelo lineal y el valor medio de q4, q6, qi4 y qi8 es el valor de croma que corresponde al valor de luma mínimo.
Obsérvese aquí que M y N pueden ser iguales o no serlo. Por ejemplo, M = N = 2.
Obsérvese aquí que M y N se pueden definir de manera adaptativa basándose en el tamaño de bloque. Por ejemplo, M = (W+H) >> t, y N = (W+H) >> r. Aquí, t y r son una cantidad de bits de desplazamiento a la derecha, tal como 2, 3 y 4.
En una implementación alternativa, si (W+H) > T1, entonces M y N se establecen como unos valores M1, N1 particulares. De lo contrario, M y N se establecen como valores M2, N2 particulares. Aquí, M1 y N1 pueden ser iguales o no serlo. M2 y N2 pueden ser iguales o no serlo. Por ejemplo, si (W+H) > 16, entonces M = 2 y N = 2. Si (W+H) < 16, entonces M = 1 y N = 1.
Obsérvese que el mecanismo mejorado también se puede usar en el MDLM y en el MMLM.
Cuarto mecanismo mejorado: (de manera activa; más de un punto basado en el umbral de valor de luma) se utilizará más de un punto más grande o más pequeño; uso del valor medio
En el cuarto mecanismo mejorado, se utilizarán N puntos para calcular el valor de luma máximo y el correspondiente valor de croma. Los N puntos seleccionados que tienen un valor de luma máximo están dentro de un intervalo [ValorLumaMáx-T1, ValorLumaMáx]. El valor de luma medio de los N puntos seleccionados se utilizará como el valor de luma máximo y el valor de croma medio de los N puntos seleccionados se utilizará como el valor de croma que corresponde al valor de luma máximo. En un ejemplo, ValorLumaMáx representa el valor de luma máximo en el conjunto P.
En el cuarto mecanismo mejorado, se utilizarán M puntos para calcular el valor de luma mínimo y el correspondiente valor de croma. Los M puntos seleccionados que tienen un valor de luma mínimo están dentro de un intervalo [ValorLumaMín, ValorLumaMín+T2. El valor de luma medio de los M puntos seleccionados se utilizará como el valor de luma mínimo y el valor de croma medio de los M puntos seleccionados se utilizará como el valor de croma que corresponde al valor de luma mínimo. En un ejemplo, el ValorLumaMín representa el valor de luma mínimo en el conjunto P.
Por ejemplo, si los puntos 5 °, 7 °, 8 °, 9 ° y 11 ° son los puntos que tienen un valor de luma que está dentro de un intervalo [Lmáx-Ti, Lmáx]. Los puntos 4 °, 6 °, 14 ° y 18 ° son los puntos que tienen un valor de luma que está dentro de un intervalo [Lmin, Lmin+T2]. En un ejemplo, Lmáx representa el mayor valor de luma en el conjunto P y Lmin representa el menor valor de luma en el conjunto P. Entonces, el valor medio de p5, p7, ps, p9 y pn es el valor de luma máximo que se utiliza para obtener los parámetros de modelo lineal y el valor medio de q5, q7, qs, q9 y qn es el valor de croma máximo que corresponde al valor de luma máximo. Entonces, el valor medio de p4, pe, p14 y p1s es el valor de luma mínimo que se utiliza para obtener el parámetro de modelo lineal y el valor medio de q4, qe, q14 y q1s es el valor de croma mínimo que corresponde al valor de luma mínimo.
Obsérvese que M y N pueden ser iguales o no serlo.
Obsérvese que T1 y T2 pueden ser iguales o no serlo.
Obsérvese que el mecanismo mejorado también se puede usar en el MDLM y en el MMLM.
Quinto mecanismo mejorado: uso de muestras vecinas ampliadas
En el mecanismo existente, solo se utilizan las muestras vecinas superiores e izquierdas para obtener la pareja de puntos con el fin de buscar la pareja de puntos para obtener los parámetros de modelo lineal. En el quinto mecanismo mejorado, se pueden usar algunas muestras ampliadas para aumentar el número de parejas de puntos y mejorar la robustez de los parámetros de modelo lineal.
Por ejemplo, las muestras vecinas superiores derechas y las muestras vecinas inferiores izquierdas también se utilizan para obtener los parámetros de modelo lineal.
Por ejemplo, tal y como se muestra en la figura 20, en el mecanismo de CCLM de único modo existente, las muestras de luma vecinas superiores submuestreadas están representadas por A' y las muestras de luma vecinas izquierdas submuestreadas están representadas por L'. Las muestras de croma vecinas superiores están representadas por Ac' y las muestras de croma vecinas izquierdas están representadas por Lc'.
Tal y como se muestra en la figura 21, en el quinto mecanismo mejorado, las muestras vecinas se ampliarán hasta las muestras superiores derechas y inferiores izquierdas. Esto significa que las muestras A, L y Ac, Lc de referencia pueden usarse para obtener el valor de luma máximo o mínimo y el correspondiente valor de croma.
Aquí, M > W y N > H.
Obsérvese aquí que el mecanismo mejorado también se puede usar en el MDLM y en el MMLM.
En el mecanismo de CCIP o de LM existente, solo se utilizará un par de puntos para obtener el valor de luma máximo o mínimo y el correspondiente valor de croma.
En los mecanismos mejorados propuestos no solo se utilizará un par de puntos.
Si más de un punto tiene un valor máximo o más de un punto tiene un valor mínimo, entonces el par de puntos se elegirá basándose en el valor de croma de los puntos correspondientes.
Si más de un punto tiene un valor máximo o más de un punto tiene un valor mínimo, entonces el correspondiente valor de croma para el valor de luma máximo será el valor de croma medio de las muestras de luma que tienen el valor máximo y el correspondiente valor de croma para el valor de luma mínimo será el valor de croma medio de las muestras de luma que tienen el valor mínimo.
No solo se elegirá un par de puntos. Específicamente, para obtener los parámetros de modelo lineal se utilizarán los N puntos que tienen el valor mayor y los puntos M que tienen el valor menor.
No solo se elegirá un par de puntos. Específicamente, los N puntos con valores que están en un intervalo [ValorMáx-T1, ValorMáx] y los M puntos con valores que están en un intervalo [ValorMín, ValorMín+T2 se elegirán como los puntos para calcular los parámetros de modelo lineal.
No solo se usan las muestras vecinas superiores e izquierdas para obtener los valores máximo y mínimo, sino que también se usan algunas muestras vecinas ampliadas, como las muestras vecinas izquierdas inferiores y las muestras vecinas derechas superiores.
Con todos los mecanismos mejorados mencionados anteriormente, se obtendrán los parámetros de modelo lineal más robustos.
En el MMLM también se pueden usar todos los mecanismos mejorados mencionados anteriormente.
En el MDLM también se pueden usar todos los mecanismos mejorados mencionados anteriormente, salvo el mecanismo mejorado 5.
Obsérvese que, los mecanismos mejorados propuestos en la presente divulgación se utilizan para obtener los valores de luma máximo y mínimo, y los correspondientes valores de croma con el fin de obtener los parámetros de modelo lineal para la intrapredicción por croma. Los mecanismos mejorados se aplican en el módulo de intrapredicción o en el proceso de intrapredicción. Por lo tanto, existe tanto en el lado del descodificador como en el lado del codificador. Además, los mecanismos mejorados para obtener los valores de luma máximo y mínimo, y los correspondientes valores de croma pueden implementarse de la misma manera tanto en el codificador como en el descodificador. En el caso de un bloque de croma, para obtener su bloque predictivo usando el modo de LM, primero se obtienen las correspondientes muestras de luma submuestreadas y luego se obtienen los valores de luma máximo y mínimo, y los correspondientes valores de croma en las muestras vecinas reconstruidas para obtener los parámetros de modelo lineal. Luego se obtiene la predicción (i.e., un bloque predictivo) del bloque de croma actual usando los parámetros de modelo lineal obtenidos y el bloque de luma submuestreado.
Un método para la predicción de componentes cruzados de un bloque según la realización 1 de la presente divulgación se refiere al primer mecanismo mejorado descrito anteriormente.
Un método para la predicción de componentes cruzados de un bloque según la realización 2 de la presente divulgación se refiere al segundo mecanismo mejorado descrito anteriormente.
Un método para la predicción de componentes cruzados de un bloque según la realización 3 de la presente divulgación se refiere al tercer mecanismo mejorado descrito anteriormente.
Un método para la predicción de componentes cruzados de un bloque según la realización 4 de la presente divulgación se refiere al cuarto mecanismo mejorado descrito anteriormente.
Un método para la predicción de componentes cruzados de un bloque según la realización 5 de la presente divulgación se refiere al quinto mecanismo mejorado descrito anteriormente.
La figura 22 es un diagrama de flujo de otro método 220 de ejemplo para una predicción de componentes cruzados de un bloque (p. ej., un bloque de croma) según algunas realizaciones de la presente divulgación. Así, el método se puede realizar mediante un codificador 20 de vídeo y/o por un descodificador 30 de vídeo de un sistema 10 o 40 códec. En particular, el método se puede realizar mediante una unidad 46 de intrapredicción del codificador 20 de vídeo y/o mediante una unidad 74 de intrapredicción del descodificador 30 de vídeo.
En un paso 2210, se obtiene un bloque de luma submuestreado. Puede entenderse que, normalmente, la resolución espacial del bloque de luma es mayor que la del bloque de croma, un bloque de luma (i.e., un bloque de luma reconstruido) se submuestrea para obtener un bloque de luma submuestreado. El bloque 911, 1211, 1311, 1411 y 1511 de luma corresponde a un bloque 901 de croma, tal y como se ha ilustrado en las figuras 9, 12-15.
En un paso 2230, se determinan un valor de luma máximo y un valor de luma mínimo, a partir de un conjunto de muestras submuestreadas de muestras de luma vecinas reconstruidas, en donde las muestras de luma vecinas reconstruidas incluyen una pluralidad de muestras de luma reconstruidas que están encima del bloque de luma y/o una pluralidad de muestras de luma reconstruidas que están a la izquierda del bloque de luma, y también se determina el correspondiente valor de croma.
En un paso 2250, se calculan los parámetros de modelo lineal. Por ejemplo, los parámetros de modelo lineal se calculan basándose en el valor de luma máximo y el valor de croma y en el valor de luma mínimo y el correspondiente valor de croma utilizando la ecuación (13) y la ecuación (14).
En un paso 2270, se obtiene un bloque predictivo del bloque 901 de croma, basándose al menos en los uno o más parámetros de modelo lineal. Los valores de croma predichos del bloque 901 de croma se generan basándose en los uno o más parámetros de modelo lineal y en el bloque 1212, 1312, 1412, 1512 de luma submuestreado. Los valores de croma predichos del bloque 901 de croma se obtienen usando la ecuación (1).
El método para la predicción de componentes cruzados de un bloque según la realización 1 (que corresponde al primer mecanismo mejorado para el modo de LM) de la presente divulgación se proporciona haciendo referencia a la figura 22.
El primer mecanismo mejorado descrito anteriormente se usará para obtener los valores de luma máximo y mínimo, y los correspondientes valores de croma. Si más de un punto tiene el valor máximo o mínimo, la pareja de puntos se elegirá basándose en el valor de croma de los puntos correspondientes. La pareja de puntos (que tienen un valor de luma máximo o mínimo) que tiene la menor diferencia entre valores de croma se elegirá como la pareja de puntos para obtener el parámetro de modelo lineal.
Obsérvese aquí que, aparte de utilizar el menor valor de la diferencia entre valores de croma, el primer mecanismo mejorado también puede utilizar el mayor valor de la diferencia entre valores de croma.
Para obtener más información, véase el mecanismo 1 mejorado presentado anteriormente.
El mecanismo 1 mejorado también se puede usar en el MDLM y en el MMLM. Por ejemplo, en el caso del MDLM/MMLM, para obtener los parámetros de modelo lineal, solo se utilizan el valor de luma máximo o mínimo y el correspondiente valor de croma. El mecanismo 1 mejorado se usa para obtener los valores de luma máximo y mínimo, y los correspondientes valores de croma.
El método para la predicción de componentes cruzados de un bloque según la realización 2 (que corresponde al segundo mecanismo mejorado para el modo de LM) de la presente divulgación se proporciona haciendo referencia a la figura 22.
La diferencia entre la realización 2 y la realización 1 radica en que:
Si más de un punto tiene el valor máximo o mínimo, entonces se utilizará el valor de croma medio. El valor de croma que corresponde al valor de luma máximo es el valor de croma medio de los puntos que tienen un valor de luma máximo. El valor de croma que corresponde al valor de luma mínimo es el valor de croma medio de los puntos que tienen un valor de luma mínimo.
Para obtener más información, véase el mecanismo 2 mejorado.
El mecanismo mejorado 2 también se puede usar en el MDLM y en el MMLM. Por ejemplo, en el caso del MDLM/MMLM, para obtener los parámetros de modelo lineal, solo se utilizan el valor de luma máximo o mínimo y el correspondiente valor de croma. El mecanismo 2 mejorado se usa para obtener los valores de luma máximo y mínimo, y los correspondientes valores de croma.
El método para la predicción de componentes cruzados de un bloque según la realización 3 (que corresponde al tercer mecanismo mejorado) de la presente divulgación se proporciona haciendo referencia a la figura 22.
La diferencia entre la realización 3 y la realización 1 radica en que:
Se utilizarán N puntos para calcular el valor de luma máximo y el correspondiente valor de croma. Los N puntos seleccionados tienen un valor de luma mayor que otros puntos. El valor de luma medio de los N puntos seleccionados se utilizará como el valor de luma máximo, y el valor de croma medio de los N puntos seleccionados se utilizará como el valor de croma que corresponde al valor de luma máximo.
Se utilizarán M puntos para calcular el valor de luma mínimo y el correspondiente valor de croma. Los M puntos seleccionados tienen valores de luma más pequeños que otros puntos. El valor de luma medio de los M puntos seleccionados se utilizará como el valor de luma mínimo, y el valor de croma medio de los M puntos seleccionados se utilizará como el valor de croma que corresponde al valor de luma mínimo.
Para obtener más información, véase el mecanismo 3 mejorado descrito anteriormente.
El mecanismo 3 mejorado también se puede usar en el MDLM y en el MMLM. Por ejemplo, en el caso del MDLM/MMLM, para obtener los parámetros de modelo lineal, solo se utilizan los valores de luma máximo y mínimo, y los correspondientes valores de croma. El mecanismo 3 mejorado se usa para obtener los valores de luma máximo y mínimo, y los correspondientes valores de croma.
El método para la predicción de componentes cruzados de un bloque según la realización 4 (que corresponde al cuarto mecanismo mejorado) de la presente divulgación se proporciona haciendo referencia a la figura 22.
La diferencia entre la realización 4 y la realización 1 radica en que:
Se utilizarán N parejas de puntos para calcular el valor de luma máximo y el correspondiente valor de croma. Las N parejas de puntos seleccionadas tienen valores de luma que están en un intervalo [ValorLumaMáx-T-i, ValorLumaMáx]. El valor de luma medio de las N parejas de puntos seleccionadas se utilizará como el valor de luma máximo y el valor de croma medio de las N parejas de puntos seleccionadas se utilizará como el valor de croma que corresponde al valor de luma máximo.
Se utilizarán M parejas de puntos para calcular el valor de luma mínimo y el correspondiente valor de croma. Las M parejas de puntos seleccionadas tienen valores de luma que están en un intervalo [ValorLumaMín, ValorLumaMín+T2]. El valor de luma medio de las M parejas de puntos seleccionadas se utilizará como el valor de luma mínimo y el valor de croma medio de las M parejas de puntos seleccionadas se utilizará como el valor de croma que corresponde al valor de luma mínimo.
Para obtener más información, véase el mecanismo 4 mejorado descrito anteriormente.
El mecanismo 4 mejorado también se puede usar en el MDLM y en el MMLM. Por ejemplo, en el caso del MDLM/MMLM, para obtener los parámetros de modelo lineal, solo se utilizan el valor de luma máximo o mínimo y el correspondiente valor de croma. El mecanismo 4 mejorado se usa para obtener el valor de luma máximo o mínimo y el correspondiente valor de croma.
El método para la predicción de componentes cruzados de un bloque según la realización 5 (que corresponde al quinto mecanismo mejorado) de la presente divulgación se proporciona haciendo referencia a la figura 22.
La diferencia entre la realización 5 y la realización 1 radica en que:
Se pueden usar algunas muestras ampliadas para aumentar el número de parejas de puntos y mejorar la robustez de los parámetros de modelo lineal.
Por ejemplo, las muestras vecinas superiores derechas y las muestras vecinas inferiores izquierdas también se utilizan para obtener los parámetros de modelo lineal.
Para obtener más información, véase el mecanismo 5 mejorado descrito anteriormente.
El mecanismo 5 mejorado también se puede usar en el MMLM. Por ejemplo, en el caso del MMLM, para obtener los parámetros de modelo lineal, solo se utilizan el valor de luma máximo o mínimo y el correspondiente valor de croma. El mecanismo 5 mejorado se usa para obtener los valores de luma máximo y mínimo y los correspondientes valores de croma.
La figura 23 es un diagrama de flujo de un método 230 de ejemplo de descodificación de datos de vídeo. En un paso 2310, se determina un bloque 911, 1211, 1311, 1411 y 1511 de luma que corresponde a un bloque 901 de croma.
En un paso 2320, se determina un conjunto de muestras submuestreadas de muestras de luma vecinas reconstruidas, en donde las muestras de luma vecinas reconstruidas incluyen una pluralidad de muestras de luma reconstruidas que está encima del bloque de luma y/o una pluralidad de muestras de luma reconstruidas que está a la izquierda del bloque de luma.
En un paso 2330, se determinan dos pares de valor de luma y valor de croma según N muestras de luma vecinas submuestreadas y N muestras de croma vecinas reconstruidas que corresponden a las N muestras de luma vecinas submuestreadas, y/o M muestras de luma vecinas submuestreadas y M muestras de croma vecinas reconstruidas que corresponden a las M muestras de luma vecinas submuestreadas. El valor mínimo de las N muestras de luma vecinas submuestreadas no es menor que el valor de luma de las restantes muestras de luma vecinas submuestreadas del conjunto de muestras submuestreadas de muestras de luma vecinas reconstruidas, y el valor máximo de las M muestras de luma vecinas submuestreadas no es mayor que el valor de luma de las restantes muestras de luma vecinas submuestreadas del conjunto de muestras submuestreadas de muestras de luma vecinas reconstruidas, y M y N son enteros positivos mayores que 1. En particular, se determina un primer par de valor de luma y valor de croma según N muestras de luma vecinas submuestreadas del conjunto de muestras submuestreadas y N muestras de croma vecinas reconstruidas que corresponden a las N muestras de luma vecinas submuestreadas; se determina un segundo par de valor de luma y valor de croma según M muestras de luma vecinas submuestreadas del conjunto de muestras submuestreadas y M muestras de croma vecinas reconstruidas que corresponden a las M muestras de luma vecinas submuestreadas.
En un paso 2340, se determinan uno o más parámetros de modelo lineal, basándose en los dos pares de valor de luma y valor de croma.
En un paso 2350, se determina un bloque predictivo del bloque 901 de croma, basándose al menos en los uno o más parámetros de modelo lineal, por ejemplo, se generan valores de croma predichos del bloque 901 de croma, basándose en los parámetros de modelo lineal y en el bloque 1212, 1312, 1412 y 1512 de luma submuestreado.
En un paso 2360, se reconstruye el bloque 901 de croma basándose en el bloque predictivo. Por ejemplo, sumando el bloque predictivo a un bloque residual para reconstruir el bloque 901 de croma.
Cabe observar que, en el caso de la intrapredicción de MDLM utilizando el modo 1700 de CCIP_A, el conjunto de muestras de luma vecinas reconstruidas incluye una pluralidad de muestras de luma reconstruidas que está encima del bloque de luma, pero no incluye una pluralidad de muestras de luma reconstruidas que está a la izquierda del bloque de luma. En el caso de la intrapredicción de MDLM utilizando el modo 1800 de CCIP_L, el conjunto de muestras de luma vecinas reconstruidas no incluye una pluralidad de muestras de luma reconstruidas que está encima del bloque de luma e incluye una pluralidad de muestras de luma reconstruidas que está a la izquierda del bloque de luma. En el caso de la intrapredicción de CCLM, el conjunto de muestras de luma vecinas reconstruidas incluye una pluralidad de muestras de luma reconstruidas que está encima del bloque de luma y una pluralidad de muestras de luma reconstruidas que está a la izquierda del bloque de luma.
La figura 24 es un diagrama de flujo de un método 240 de ejemplo de codificación de datos de vídeo. En un paso 2410, se determina un bloque 911, 1211, 1311, 1411 y 1511 de luma que corresponde a un bloque 901 de croma.
En un paso 2420, se determina un conjunto de muestras submuestreadas de muestras de luma vecinas reconstruidas, en donde las muestras de luma vecinas reconstruidas incluyen una pluralidad de muestras de luma reconstruidas que está encima del bloque de luma y/o una pluralidad de muestras de luma reconstruidas que está a la izquierda del bloque de luma.
En un paso 2430, se determinan dos pares de valor de luma y valor de croma según N muestras de luma vecinas submuestreadas y N muestras de croma vecinas reconstruidas que corresponden a las N muestras de luma vecinas submuestreadas, y/o M muestras de luma vecinas submuestreadas y M muestras de croma vecinas reconstruidas que corresponden a las M muestras de luma vecinas submuestreadas. El valor mínimo de las N muestras de luma vecinas submuestreadas no es menor que el valor de luma de las restantes muestras de luma vecinas submuestreadas del conjunto de muestras submuestreadas de muestras de luma vecinas reconstruidas. El valor máximo de las M muestras de luma vecinas submuestreadas no es mayor que el valor de luma de las restantes muestras de luma vecinas submuestreadas del conjunto de muestras submuestreadas de muestras de luma vecinas reconstruidas, y M y N son enteros positivos mayores que 1. En particular, se determina un primer par de valor de luma y valor de croma según N muestras de luma vecinas submuestreadas del conjunto de muestras submuestreadas y N muestras de croma vecinas reconstruidas que corresponden a las N muestras de luma vecinas submuestreadas; se determina un segundo par de valor de luma y valor de croma según M muestras de luma vecinas submuestreadas del conjunto de muestras submuestreadas y M muestras de croma vecinas reconstruidas que corresponden a las M muestras de luma vecinas submuestreadas.
En un paso 2440, se determinan uno o más parámetros de modelo lineal, basándose en los dos pares de valor de luma y valor de croma.
En un paso 2450, se determina un bloque predictivo del bloque 901 de croma, basándose en los uno o más parámetros de modelo lineal, por ejemplo, se generan valores de croma predichos del bloque 901 de croma, basándose en los parámetros de modelo lineal y en el bloque 1212, 1312, 1412 y 1512 de luma submuestreado.
En un paso 2460, se reconstruye el bloque 901 de croma basándose en el bloque predictivo. Se codifican datos residuales entre el bloque de croma y el bloque predictivo, y se genera un flujo de bits que incluye los datos residuales codificados. Por ejemplo, restando el bloque predictivo del bloque 901 de croma para obtener un bloque residual (datos residuales) y generar un flujo de bits que incluya los datos residuales codificados.
Cabe observar que, en el caso de la intrapredicción de MDLM que utiliza el modo 1700 de CCIP_A, el conjunto de muestras de luma vecinas reconstruidas incluye una pluralidad de muestras de luma reconstruidas que está encima del bloque de luma, pero no incluye una pluralidad de muestras de luma reconstruidas que está a la izquierda del bloque de luma. En el caso de la intrapredicción de MDLM que utiliza el modo 1800 de CCIP_L, el conjunto de muestras de luma vecinas reconstruidas no incluye una pluralidad de muestras de luma reconstruidas que esté encima del bloque de luma e incluye una pluralidad de muestras de luma reconstruidas que está a la izquierda del bloque de luma. En el caso de la intrapredicción de CCLM, el conjunto de muestras de luma vecinas reconstruidas incluye una pluralidad de muestras de luma reconstruidas que está encima del bloque de luma y una pluralidad de muestras de luma reconstruidas que está a la izquierda de la intrapredicción de CCLM de bloque de luma.
La figura 25 es un diagrama de flujo de un método 250 de ejemplo de descodificación de datos de vídeo. En un paso 2510, se determina un bloque 911 de luma que corresponde a un bloque 901 de croma.
En un paso 2520, se determina un conjunto de muestras submuestreadas de muestras de luma vecinas reconstruidas, en donde las muestras de luma vecinas reconstruidas incluyen una pluralidad de muestras de luma reconstruidas que está encima del bloque de luma y/o una pluralidad de muestras de luma reconstruidas que está a la izquierda del bloque de luma.
En un paso 2530, cuando N muestras de luma vecinas submuestreadas que tienen el valor máximo y/o M muestras de luma vecinas submuestreadas que tienen el valor mínimo están incluidas en el conjunto de muestras submuestreadas de muestras de luma vecinas reconstruidas, se determinan dos pares de valor de luma y valor de croma según N muestras de luma vecinas submuestreadas que tienen el valor máximo y N muestras de croma vecinas reconstruidas que corresponden a las N muestras de luma vecinas submuestreadas que tienen los valores máximos, y/o M muestras de luma vecinas submuestreadas que tienen el valor mínimo y M muestras de croma vecinas reconstruidas que corresponden a las M muestras de luma vecinas submuestreadas que tienen el valor mínimo, en donde M y N son enteros positivos mayores que 1. En particular, se determinan dos pares de valor de luma y valor de croma según al menos uno de los siguientes aspectos:
1. N muestras de luma vecinas submuestreadas que tienen el valor máximo y N muestras de croma vecinas reconstruidas que corresponden a las N muestras de luma vecinas submuestreadas que tienen los valores máximos, y una muestra de luma vecina submuestreada que tiene el valor mínimo y una muestra de croma vecina reconstruida que corresponde a la muestra de luma vecina submuestreada que tiene el valor mínimo;
2. Una muestra de luma vecina submuestreada que tiene el valor máximo y una muestra de croma vecina reconstruida que corresponde a la muestra de luma vecina submuestreada que tiene el valor máximo, y M muestras de luma vecinas submuestreadas que tienen el valor mínimo y M muestras de croma vecinas reconstruidas que corresponden a las M muestras de luma vecinas submuestreadas que tienen el valor mínimo, y
3. N muestras de luma vecinas submuestreadas que tienen el valor máximo y N muestras de croma vecinas reconstruidas que corresponden a las N muestras de luma vecinas submuestreadas que tienen los valores máximos, y M muestras de luma vecinas submuestreadas que tienen el valor mínimo y M muestras de croma vecinas reconstruidas que corresponden a las M muestras de luma vecinas submuestreadas que tienen el valor mínimo, en donde M y N son enteros positivos mayores que 1.
En un paso 2540, se determinan uno o más parámetros de modelo lineal, basándose en los dos pares de valor de luma y valor de croma.
En un paso 2550, se determina un bloque predictivo, basándose en los uno o más parámetros de modelo lineal, por ejemplo, se generan valores de croma predichos del bloque 901 de croma, basándose en los parámetros de modelo lineal y en los bloques 1212, 1312, 1412 y 1512 de luma submuestreados.
En un paso 2560, se reconstruye el bloque 901 de croma basándose en el bloque predictivo. Por ejemplo, sumando el bloque predictivo a un bloque residual para reconstruir el bloque 901 de croma.
Cabe observar que, en el caso de la intrapredicción de MDLM que utiliza el modo 1700 de CCIP_A, el conjunto de muestras de luma vecinas reconstruidas incluye una pluralidad de muestras de luma reconstruidas que están encima del bloque de luma, pero no incluye una pluralidad de muestras de luma reconstruidas que están a la izquierda del bloque de luma. En el caso de la intrapredicción de MDLM que utiliza el modo 1800 de CCIP_L, el conjunto de muestras de luma vecinas reconstruidas no incluye una pluralidad de muestras de luma reconstruidas que esté encima del bloque de luma e incluye una pluralidad de muestras de luma reconstruidas que está a la izquierda del bloque de luma. En el caso de la intrapredicción de CCLM, el conjunto de muestras de luma vecinas reconstruidas incluye una pluralidad de muestras de luma reconstruidas que está encima del bloque de luma y una pluralidad de muestras de luma reconstruidas que está a la izquierda de la intrapredicción de CCLM de bloque de luma.
La figura 26 es un diagrama de flujo de un método 260 de ejemplo de codificación de datos de vídeo. En un paso 2610, se determina un bloque 911 de luma que corresponde a un bloque 901 de croma.
En un paso 2620, se determina un conjunto de muestras submuestreadas de muestras de luma vecinas reconstruidas, en donde las muestras de luma vecinas reconstruidas incluyen una pluralidad de muestras de luma reconstruidas que está encima del bloque de luma y/o una pluralidad de muestras de luma reconstruidas que está a la izquierda del bloque de luma.
En un paso 2630, cuando N muestras de luma vecinas submuestreadas que tienen el valor máximo y/o M muestras de luma vecinas submuestreadas que tienen el valor mínimo están incluidas en el conjunto de muestras submuestreadas de muestras de luma vecinas reconstruidas, se determinan dos pares de valor de luma y valor de croma según N muestras de luma vecinas submuestreadas que tienen el valor máximo y N muestras de croma vecinas reconstruidas que corresponden a las N muestras de luma vecinas submuestreadas que tienen los valores máximos, y/o M muestras de luma vecinas submuestreadas que tienen el valor mínimo y M muestras de croma vecinas reconstruidas que corresponden a las M muestras de luma vecinas submuestreadas que tienen el valor mínimo, en donde M y N son enteros positivos mayores que 1. En particular, se determinan dos pares de valor de luma y valor de croma según al menos uno de los siguientes aspectos:
1. N muestras de luma vecinas submuestreadas que tienen el valor máximo y N muestras de croma vecinas reconstruidas que corresponden a las N muestras de luma vecinas submuestreadas que tienen los valores máximos, y una muestra de luma vecina submuestreada que tiene el valor mínimo y una muestra de croma vecina reconstruida que corresponde a la muestra de luma vecina submuestreada que tiene el valor mínimo;
2. Una muestra de luma vecina submuestreada que tiene el valor máximo y una muestra de croma vecina reconstruida que corresponde a la muestra de luma vecina submuestreada que tiene el valor máximo, y M muestras de luma vecinas submuestreadas que tienen el valor mínimo y M muestras de croma vecinas reconstruidas que corresponden a las M muestras de luma vecinas submuestreadas que tienen el valor mínimo, y
3. N muestras de luma vecinas submuestreadas que tienen el valor máximo y N muestras de croma vecinas reconstruidas que corresponden a las N muestras de luma vecinas submuestreadas que tienen los valores máximos, y M muestras de luma vecinas submuestreadas que tienen el valor mínimo y M muestras de croma vecinas reconstruidas que corresponden a las M muestras de luma vecinas submuestreadas que tienen el valor mínimo, en donde M y N son enteros positivos mayores que 1.
En un paso 2640, se determinan uno o más parámetros de modelo lineal, basándose en los dos pares de valor de luma y valor de croma.
En un paso 2650, se determina un bloque predictivo del bloque 901 de croma, basándose en los uno o más parámetros de modelo lineal, por ejemplo, se generan valores de croma predichos del bloque 901 de croma, basándose en los parámetros de modelo lineal y en el bloque 1212, 1312, 1412 y 1512 de luma submuestreado.
En un paso 2660, se codifica el bloque 901 de croma basándose en el bloque predictivo. Se codifican datos residuales entre el bloque de croma y el bloque predictivo, y se genera un flujo de bits que incluye los datos residuales codificados. Por ejemplo, restando el bloque predictivo del bloque 901 de croma para obtener un bloque residual (datos residuales) y generar un flujo de bits que incluya los datos residuales codificados.
Cabe observar que, en el caso de la intrapredicción de MDLM utilizando el modo 1700 de CCIP_A, el conjunto de muestras de luma vecinas reconstruidas incluye una pluralidad de muestras de luma reconstruidas que están encima del bloque de luma, pero no incluye una pluralidad de muestras de luma reconstruidas que están a la izquierda del bloque de luma. En el caso de la intrapredicción de MDLM utilizando el modo 1800 de CCIP_L, el conjunto de muestras de luma vecinas reconstruidas no incluye una pluralidad de muestras de luma reconstruidas que están encima del bloque de luma e incluye una pluralidad de muestras de luma reconstruidas que están a la izquierda del bloque de luma. En el caso de la intrapredicción de CCLM, el conjunto de muestras de luma vecinas reconstruidas incluye una pluralidad de muestras de luma reconstruidas que están encima del bloque de luma y una pluralidad de muestras de luma reconstruidas que están a la izquierda de la intrapredicción de CCLM de bloque de luma.
En uno o más ejemplos, las funciones descritas pueden implementarse enhardware, software, firmwareo cualquier combinación de los mismos. Si se implementan en software, las funciones pueden almacenarse en o transmitirse a través de una o más instrucciones o código en un medio legible por ordenador y ejecutarse mediante una unidad de procesamiento basada en hardware. Los medios legibles por ordenador pueden incluir unos medios de almacenamiento legibles por ordenador, que corresponden a un medio tangible tal como unos medios de almacenamiento de datos, o unos medios de comunicación que incluyen cualquier medio que facilite la transferencia de un programa informático de un lugar a otro, por ejemplo, según un protocolo de comunicación. De esta manera, los medios legibles por ordenador pueden corresponder en general a (1) unos medios de almacenamiento legibles por ordenador tangibles que sean no transitorios o a (2) un medio de comunicación tal como una señal o una onda portadora. Los medios de almacenamiento de datos pueden ser cualquier medio disponible al que puedan acceder uno o más ordenadores o uno o más procesadores para recuperar instrucciones, un código y/o estructuras de datos para la implementación de las tecnologías descritas en esta descripción. Un producto de programa informático puede incluir un medio legible por ordenador.
A modo de ejemplo no limitativo, tal medio de almacenamiento legible por ordenador puede incluir una RAM, una ROM, una EEPRO<m>, un CD-ROM u otro almacenamiento de disco óptico, almacenamiento de disco magnético u otros dispositivos de almacenamiento magnético, memoria flash o cualquier otro medio que pueda usarse para almacenar un código de programa deseado en forma de instrucciones o de estructuras de datos y al que pueda acceder un ordenador. Además, toda conexión se denomina apropiadamente medio legible por ordenador. Por ejemplo, si se transmiten instrucciones desde un sitio web, un servidor u otra fuente remota usando un cable coaxial, un cable de fibra óptica, un par trenzado, una línea de abonado digital (DSL, por sus siglas en inglés) o tecnologías inalámbricas tales como rayos infrarrojos, ondas de radio y microondas, entonces el cable coaxial, el cable de fibra óptica, el par trenzado, la línea DSL o las tecnologías inalámbricas tales como los rayos infrarrojos, las ondas de radio y las microondas se incluyen en las definiciones de medio. Sin embargo, debe entenderse que los medios de almacenamiento legibles por ordenador y los medios de almacenamiento de datos no incluyen conexiones, ondas portadoras, señales u otros medios transitorios, sino que en realidad están dirigidos a medios de almacenamiento tangibles y no transitorios. Tal y como se usan en la presente memoria, los términos disco (disk) y disco (disc) incluyen un disco compacto (CD), un disco láser, un disco óptico, un disco versátil digital (DVD), un disquete y un disco Bluray, donde los discos (disks) normalmente reproducen datos magnéticamente, mientras que los discos (discs) reproducen datos ópticamente con láseres. En el alcance de los medios legibles por ordenador también debe incluirse una combinación de los medios anteriores.
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 uso general, circuitos integrados de aplicación específica (ASIC), matrices de puertas lógicas programables en campo (FPGA) u otra circuitería lógica integrada o discreta equivalente. Por consiguiente, el término “ procesador” , tal y como se usa en la presente memoria, puede referirse a cualquiera de las anteriores estructuras o a cualquier otra estructura adecuada para la implementación de las técnicas descritas en la presente memoria. Además, en algunos aspectos, la funcionalidad descrita en la presente memoria puede proporcionarse dentro de módulos de hardware y/o de software dedicados configurados para codificar y descodificar o incorporarse en un códec combinado. Además, las tecnologías podrían implementarse por completo en uno o más circuitos o elementos lógicos.
Las tecnologías de esta descripción pueden implementarse en una gran variedad de dispositivos o aparatos, incluidos unos cascos inalámbricos, un circuito integrado (IC, por sus siglas en inglés) o un conjunto de circuitos IC (p. ej., un conjunto de chips). En esta descripción se describen diversos componentes, módulos o unidades para recalcar aspectos funcionales de dispositivos que están configurados para realizar las técnicas descritas, pero no requieren necesariamente una realización por medio de distintas unidades de hardware. Más bien, tal y como se ha descrito anteriormente, pueden combinarse diversas unidades en una unidad dehardwarede códec o ser proporcionadas por parte de una colección de unidades dehardwareinteroperativas, incluidos uno o más procesadores como los descritos anteriormente, en combinación con unsoftwarey/o unfirmwareapropiado(s).
Claims (18)
- REIVINDICACIONESi .Un método de descodificación de datos de vídeo, que comprende:Realizar una descodificación por entropía, un proceso de cuantificación inversa y un proceso de transformada inversa sobre un flujo de bits, para obtener un bloque residual;determinar (2310) un bloque de luma que corresponde a un bloque de croma;determinar (2320) un conjunto de muestras submuestreadas de luma vecinas reconstruidas, en donde las muestras de luma vecinas reconstruidas comprenden una pluralidad de muestras de luma reconstruidas que están encima del bloque de luma;calcular (2330) un primer par de un valor de luma y un valor de croma utilizando N muestras de luma vecinas submuestreadas del conjunto y N muestras de croma vecinas reconstruidas que corresponden a las N muestras de luma vecinas submuestreadas, en donde N es un entero positivo mayor que 1 y un valor mínimo de las N muestras de luma vecinas submuestreadas no es menor que los respectivos valores de luma de las restantes primeras muestras de luma vecinas submuestreadas del conjunto, y en donde un número de las restantes primeras muestras de luma vecinas submuestreadas del conjunto es igual que un número total de muestras de luma vecinas submuestreadas en el conjunto menos N;calcular (2330) un segundo par de un valor de luma y un valor de croma utilizando M muestras de luma vecinas submuestreadas del conjunto y M muestras de croma vecinas reconstruidas que corresponden a las M muestras de luma vecinas submuestreadas, en donde M es un entero positivo mayor que 1 y un valor máximo de las M muestras de luma vecinas submuestreadas no es mayor que los respectivos valores de luma de las restantes segundas muestras de luma vecinas submuestreadas del conjunto, y en donde un número de las restantes segundas muestras de luma vecinas submuestreadas del conjunto es igual que un número total de muestras de luma vecinas submuestreadas en el conjunto menos M;determinar (2340) uno o más parámetros de modelo lineal basándose en el primer y segundo pares de valor de luma y valor de croma;determinar (2350) un bloque predictivo basándose en los uno o más parámetros de modelo lineal; y reconstruir (2360) el bloque de croma sumando el bloque predictivo al bloque residual.
- 2.El método de la reivindicación 1, en donde el conjunto de muestras submuestreadas de luma vecinas reconstruidas consta de:Las N muestras de luma vecinas submuestreadas y las M muestras de luma vecinas submuestreadas, y la suma de N y M es igual al número total de muestras de luma vecinas submuestreadas en el conjunto.
- 3. El método de una cualquiera de las reivindicaciones 1 o 2, en dondeEl valor de luma del primer par de valor de luma y valor de croma es el valor de luma medio de las N muestras de luma vecinas submuestreadas, yel valor de croma del primer par de valor de luma y valor de croma es el valor de croma medio de las N muestras de croma vecinas reconstruidas que corresponden a las N muestras de luma vecinas submuestreadas;y en dondeel valor de luma del segundo par de valor de luma y valor de croma es el valor de luma medio de las M muestras de luma vecinas submuestreadas, yel valor de croma del segundo par de valor de luma y valor de croma es el valor de croma medio de las M muestras de croma vecinas reconstruidas que corresponden a las M muestras de luma vecinas submuestreadas.
- 4.El método de una cualquiera de las reivindicaciones 1 a 3, en donde M y N son iguales.
- 5.El método de la reivindicación 4, en donde M = N = 2.
- 6.El método de una cualquiera de las reivindicaciones 1 a 5, en donde las muestras de luma vecinas reconstruidas comprenden:Una muestra de luma vecina superior derecha que está fuera del bloque de luma y unas muestras de luma que están a la derecha de la muestra de luma vecina superior derecha que está fuera del bloque de luma.
- 7.El método de una cualquiera de las reivindicaciones 1 a 6, en donde la pluralidad de muestras de luma reconstruidas que está encima del bloque de luma son muestras de luma vecinas reconstruidas que son adyacentes al respectivo límite superior.
- 8.El método de una cualquiera de las reivindicaciones 1 a 7, en donde las muestras de luma vecinas reconstruidas excluyen muestras de luma que estén a la izquierda de la muestra de luma vecina superior izquierda.
- 9.El método de una cualquiera de las reivindicaciones 1 a 8, en donde el conjunto de muestras submuestreadas de las muestras de luma vecinas reconstruidas se obtiene submuestreando las muestras de luma vecinas reconstruidas.
- 10.Un método de codificación de datos de vídeo, que comprende:determinar (2410) un bloque de luma que corresponde a un bloque de croma;determinar (2420) un conjunto de muestras submuestreadas de muestras de luma vecinas reconstruidas, en el que las muestras de luma vecinas reconstruidas comprenden una pluralidad de muestras de luma reconstruidas que está encima del bloque de luma;calcular (2430) un primer par de un valor de luma y un valor de croma utilizando N muestras de luma vecinas submuestreadas del conjunto y N muestras de croma vecinas reconstruidas que corresponden a las N muestras de luma vecinas submuestreadas, en el que N es un entero positivo mayor que 1 y un valor mínimo de las N muestras de luma vecinas submuestreadas no es menor que los respectivos valores de luma de restantes primeras muestras de luma vecinas submuestreadas del conjunto, y en el que un número de las restantes primeras muestras de luma vecinas submuestreadas del conjunto es igual que un número total de muestras de luma vecinas submuestreadas en el conjunto menos N;calcular (2430) un segundo par de un valor de luma y un valor de croma utilizando M muestras de luma vecinas submuestreadas del conjunto y M muestras de croma vecinas reconstruidas que corresponden a las M muestras de luma vecinas submuestreadas, en el que M es un entero positivo mayor que 1 y un valor máximo de las M muestras de luma vecinas submuestreadas no es mayor que los respectivos valores de luma de las restantes segundas muestras de luma vecinas submuestreadas del conjunto, y en el que un número de las restantes segundas muestras de luma vecinas submuestreadas del conjunto es igual que el número total de muestras de luma vecinas submuestreadas en el conjunto menos M;determinar (2440) uno o más parámetros de modelo lineal basándose en el primer y segundo pares de valor de luma y valor de croma;determinar (2450) un bloque predictivo basándose en los uno o más parámetros de modelo lineal; yrealizar (2460) un proceso de transformada, un proceso de cuantificación y una codificación por entropía sobre un bloque residual, para dar salida a un flujo de bits, en el que el bloque residual se obtiene restando el bloque predictivo del bloque de croma.
- 11.El método de la reivindicación 10, en donde el conjunto de muestras submuestreadas de muestras de luma vecinas reconstruidas consta de:Las N muestras de luma vecinas submuestreadas y las M muestras de luma vecinas submuestreadas, y la suma de N y M es igual al número total de muestras de luma vecinas submuestreadas en el conjunto.
- 12.El método de una cualquiera de las reivindicaciones 10 o 11,en donde el valor de luma del primer par de valor de luma y valor de croma es el valor de luma medio de dichas N muestras de luma vecinas submuestreadas, y el valor de croma del primer par de valor de luma y valor de croma es el valor de croma medio de dichas N muestras de croma vecinas reconstruidas que corresponden a las N muestras de luma vecinas submuestreadas; yen donde el valor de luma del segundo par de valor de luma y valor de croma es el valor de luma medio de dichas M muestras de luma vecinas submuestreadas, y el valor de croma del segundo par de valor de luma y valor de croma es el valor de croma medio de dichas M muestras de croma vecinas reconstruidas que corresponden a las M muestras de luma vecinas submuestreadas.
- 13.El método de una cualquiera de las reivindicaciones 10 a 12, en donde M y N son iguales.
- 14.El método de la reivindicación 13, en donde M = N = 2.
- 15.El método de una cualquiera de las reivindicaciones 10 a 14, en donde las muestras de luma vecinas reconstruidas comprenden:una muestra de luma vecina superior derecha que está fuera del bloque de luma y muestras de luma que están a la derecha de la muestra de luma vecina superior derecha que está fuera del bloque de luma.
- 16.El método de una cualquiera de las reivindicaciones 10 a 15, en donde la pluralidad de muestras de luma reconstruidas que está encima del bloque de luma son muestras de luma vecinas reconstruidas que son adyacentes al respectivo límite superior.
- 17.El método de una cualquiera de las reivindicaciones 10 a 16, en donde las muestras de luma vecinas reconstruidas excluyen las muestras de luma que están a la izquierda de la muestra de luma vecina superior izquierda.
- 18.El método de una cualquiera de las reivindicaciones 10 a 17, en donde el conjunto de muestras submuestreadas de las muestras de luma vecinas reconstruidas se obtiene submuestreando las muestras de luma vecinas reconstruidas.
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US201862698924P | 2018-07-16 | 2018-07-16 | |
| US201862698991P | 2018-07-17 | 2018-07-17 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| ES2989520T3 true ES2989520T3 (es) | 2024-11-26 |
Family
ID=69164978
Family Applications (2)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| ES22211018T Active ES2989520T3 (es) | 2018-07-16 | 2019-07-16 | Métodos de codificación y de descodificación de vídeo |
| ES19837624T Active ES2938068T3 (es) | 2018-07-16 | 2019-07-16 | Codificador de video, decodificador de video y métodos de codificación y decodificación correspondientes |
Family Applications After (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| ES19837624T Active ES2938068T3 (es) | 2018-07-16 | 2019-07-16 | Codificador de video, decodificador de video y métodos de codificación y decodificación correspondientes |
Country Status (26)
| Country | Link |
|---|---|
| US (3) | US11336907B2 (es) |
| EP (3) | EP4462782A3 (es) |
| JP (4) | JP7461925B2 (es) |
| KR (4) | KR20230008896A (es) |
| CN (2) | CN115941942B (es) |
| AU (3) | AU2019303720B2 (es) |
| BR (1) | BR112021000694A2 (es) |
| CA (2) | CA3213840A1 (es) |
| CL (1) | CL2021000123A1 (es) |
| DK (2) | DK3815377T3 (es) |
| ES (2) | ES2989520T3 (es) |
| FI (2) | FI4164225T3 (es) |
| HR (1) | HRP20230288T1 (es) |
| HU (2) | HUE067054T2 (es) |
| IL (1) | IL280228B2 (es) |
| LT (1) | LT3815377T (es) |
| MX (3) | MX2021000616A (es) |
| NZ (1) | NZ772305A (es) |
| PH (1) | PH12021550112A1 (es) |
| PL (2) | PL3815377T3 (es) |
| PT (2) | PT4164225T (es) |
| SG (1) | SG11202100412SA (es) |
| SI (1) | SI3815377T1 (es) |
| UA (1) | UA128557C2 (es) |
| WO (1) | WO2020015648A1 (es) |
| ZA (1) | ZA202209225B (es) |
Families Citing this family (21)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| BR112021000694A2 (pt) | 2018-07-16 | 2021-04-13 | Huawei Technologies Co., Ltd. | Codificador de vídeo, decodificador de vídeo, e métodos de codificação e decodificação correspondentes |
| KR20200028856A (ko) * | 2018-09-07 | 2020-03-17 | 김기백 | 인트라 예측을 이용한 영상 부호화/복호화 방법 및 장치 |
| KR20250035621A (ko) | 2018-10-07 | 2025-03-12 | 삼성전자주식회사 | 복수개의 참조 라인을 위한 mpm 구성 방법을 이용한 비디오 신호 처리 방법 및 장치 |
| CN116170586B (zh) * | 2018-10-08 | 2024-03-26 | 北京达佳互联信息技术有限公司 | 对视频信号进行解码或编码的方法、计算装置和存储介质 |
| JP7518065B2 (ja) | 2018-10-12 | 2024-07-17 | オッポ広東移動通信有限公司 | ビデオ画像成分予測方法および装置、コンピュータ記憶媒体 |
| CN116962720A (zh) * | 2018-10-12 | 2023-10-27 | 三星电子株式会社 | 通过使用交叉分量线性模型来处理视频信号的方法和设备 |
| EP3861738A4 (en) | 2018-11-06 | 2022-01-26 | Beijing Bytedance Network Technology Co., Ltd. | POSITION-BASED INTRA PREDICTION |
| CN113170122B (zh) | 2018-12-01 | 2023-06-27 | 北京字节跳动网络技术有限公司 | 帧内预测的参数推导 |
| CN113170168B (zh) | 2018-12-07 | 2023-12-08 | 北京字节跳动网络技术有限公司 | 基于上下文的帧内预测 |
| TWI754188B (zh) | 2018-12-07 | 2022-02-01 | 弗勞恩霍夫爾協會 | 用於增加計算交叉分量線性模型參數的穩健性的編碼器、解碼器及方法 |
| KR102811925B1 (ko) | 2019-01-02 | 2025-05-23 | 광동 오포 모바일 텔레커뮤니케이션즈 코포레이션 리미티드 | 예측 디코딩 방법, 장치 및 컴퓨터 저장 매체 |
| CN121728244A (zh) * | 2019-01-16 | 2026-03-24 | Oppo广东移动通信有限公司 | 信息处理方法及装置、设备、存储介质 |
| PH12021551868A1 (en) | 2019-02-24 | 2022-05-23 | Beijing Bytedance Network Tech Co Ltd | Parameter derivation for intra prediction |
| CN113767631B (zh) | 2019-03-24 | 2023-12-15 | 北京字节跳动网络技术有限公司 | 用于帧内预测的参数推导中的条件 |
| CN113840144B (zh) * | 2019-03-25 | 2023-06-02 | Oppo广东移动通信有限公司 | 图像分量的预测方法、编码器、解码器及计算机存储介质 |
| CN113497937B (zh) * | 2020-03-20 | 2023-09-05 | Oppo广东移动通信有限公司 | 图像编码方法、图像解码方法及相关装置 |
| CN113747176A (zh) * | 2020-05-29 | 2021-12-03 | Oppo广东移动通信有限公司 | 图像编码方法、图像解码方法及相关装置 |
| JP2024513993A (ja) * | 2021-04-16 | 2024-03-27 | ベイジン ダジア インターネット インフォメーション テクノロジー カンパニー リミテッド | 方法、電子装置、非一時的コンピュータ可読記憶媒体、およびコンピュータプログラム |
| US20250024072A1 (en) * | 2021-11-01 | 2025-01-16 | Mediatek Singapore Pte. Ltd. | Method and Apparatus for Prediction Based on Cross Component Linear Model in Video Coding System |
| WO2024169932A1 (en) * | 2023-02-16 | 2024-08-22 | Douyin Vision Co., Ltd. | Method, apparatus, and medium for video processing |
| CN118707712B (zh) * | 2024-07-08 | 2025-02-14 | 深圳市鹏鼎智控科技有限公司 | 一种振镜控制系统 |
Family Cites Families (32)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8000390B2 (en) | 2006-04-28 | 2011-08-16 | Sharp Laboratories Of America, Inc. | Methods and systems for efficient prediction-mode selection |
| US8428133B2 (en) | 2007-06-15 | 2013-04-23 | Qualcomm Incorporated | Adaptive coding of video block prediction mode |
| CN105472387B (zh) | 2010-04-09 | 2018-11-02 | Lg电子株式会社 | 处理视频数据的方法和装置 |
| US9288500B2 (en) * | 2011-05-12 | 2016-03-15 | Texas Instruments Incorporated | Luma-based chroma intra-prediction for video coding |
| KR20120140181A (ko) * | 2011-06-20 | 2012-12-28 | 한국전자통신연구원 | 화면내 예측 블록 경계 필터링을 이용한 부호화/복호화 방법 및 그 장치 |
| US9693070B2 (en) * | 2011-06-24 | 2017-06-27 | Texas Instruments Incorporated | Luma-based chroma intra-prediction for video coding |
| CN103782596A (zh) * | 2011-06-28 | 2014-05-07 | 三星电子株式会社 | 使用图像的亮度分量的对图像的色度分量的预测方法和设备 |
| CN103096055B (zh) * | 2011-11-04 | 2016-03-30 | 华为技术有限公司 | 一种图像信号帧内预测及解码的方法和装置 |
| EP2806649A1 (en) * | 2012-01-18 | 2014-11-26 | Electronics and Telecommunications Research Institute | Method and device for encoding and decoding image |
| CN109218730B (zh) | 2012-01-19 | 2023-07-28 | 华为技术有限公司 | 用于lm帧内预测的参考像素缩减 |
| CA2896637C (en) | 2013-03-26 | 2018-02-13 | Mediatek Inc. | Method of cross color intra prediction |
| US9648330B2 (en) | 2013-07-15 | 2017-05-09 | Qualcomm Incorporated | Inter-color component residual prediction |
| US10455249B2 (en) * | 2015-03-20 | 2019-10-22 | Qualcomm Incorporated | Downsampling process for linear model prediction mode |
| US9736335B2 (en) | 2015-04-15 | 2017-08-15 | Apple Inc. | Techniques for advanced chroma processing |
| CN109274974B (zh) | 2015-09-29 | 2022-02-11 | 华为技术有限公司 | 图像预测的方法及装置 |
| WO2017139937A1 (en) * | 2016-02-18 | 2017-08-24 | Mediatek Singapore Pte. Ltd. | Advanced linear model prediction for chroma coding |
| US10390015B2 (en) | 2016-08-26 | 2019-08-20 | Qualcomm Incorporated | Unification of parameters derivation procedures for local illumination compensation and cross-component linear model prediction |
| US10652575B2 (en) * | 2016-09-15 | 2020-05-12 | Qualcomm Incorporated | Linear model chroma intra prediction for video coding |
| US10382781B2 (en) * | 2016-09-28 | 2019-08-13 | Qualcomm Incorporated | Interpolation filters for intra prediction in video coding |
| US10477240B2 (en) * | 2016-12-19 | 2019-11-12 | Qualcomm Incorporated | Linear model prediction mode with sample accessing for video coding |
| US10231104B2 (en) | 2017-06-08 | 2019-03-12 | T-Mobile Usa, Inc. | Proactive and reactive management for devices in a network |
| WO2019070770A1 (en) * | 2017-10-02 | 2019-04-11 | Arris Enterprises Llc | SYSTEM AND METHOD FOR REDUCING BLOCKED ARTIFACTS AND PRODUCING ENHANCED ENCODING EFFICIENCY |
| GB2567249A (en) * | 2017-10-09 | 2019-04-10 | Canon Kk | New sample sets and new down-sampling schemes for linear component sample prediction |
| WO2020053805A1 (en) * | 2018-09-12 | 2020-03-19 | Beijing Bytedance Network Technology Co., Ltd. | Single-line cross component linear model prediction mode |
| GB2571313B (en) | 2018-02-23 | 2022-09-21 | Canon Kk | New sample sets and new down-sampling schemes for linear component sample prediction |
| EP4447448A3 (en) * | 2018-07-02 | 2025-01-01 | TCL King Electrical Appliances (Huizhou) Co. Ltd. | Cclm-based intra-prediction method and device |
| EP3815370B1 (en) * | 2018-07-12 | 2024-07-31 | Huawei Technologies Co., Ltd. | Intra-prediction using a cross-component linear model in video coding |
| BR112021000694A2 (pt) | 2018-07-16 | 2021-04-13 | Huawei Technologies Co., Ltd. | Codificador de vídeo, decodificador de vídeo, e métodos de codificação e decodificação correspondentes |
| CN116170586B (zh) * | 2018-10-08 | 2024-03-26 | 北京达佳互联信息技术有限公司 | 对视频信号进行解码或编码的方法、计算装置和存储介质 |
| EP3861738A4 (en) * | 2018-11-06 | 2022-01-26 | Beijing Bytedance Network Technology Co., Ltd. | POSITION-BASED INTRA PREDICTION |
| CN113170168B (zh) * | 2018-12-07 | 2023-12-08 | 北京字节跳动网络技术有限公司 | 基于上下文的帧内预测 |
| PH12021551868A1 (en) * | 2019-02-24 | 2022-05-23 | Beijing Bytedance Network Tech Co Ltd | Parameter derivation for intra prediction |
-
2019
- 2019-07-16 BR BR112021000694-0A patent/BR112021000694A2/pt unknown
- 2019-07-16 NZ NZ772305A patent/NZ772305A/en unknown
- 2019-07-16 KR KR1020227046193A patent/KR20230008896A/ko not_active Ceased
- 2019-07-16 PT PT222110181T patent/PT4164225T/pt unknown
- 2019-07-16 PT PT198376246T patent/PT3815377T/pt unknown
- 2019-07-16 FI FIEP22211018.1T patent/FI4164225T3/fi active
- 2019-07-16 EP EP24179643.2A patent/EP4462782A3/en active Pending
- 2019-07-16 HU HUE22211018A patent/HUE067054T2/hu unknown
- 2019-07-16 IL IL280228A patent/IL280228B2/en unknown
- 2019-07-16 CA CA3213840A patent/CA3213840A1/en active Pending
- 2019-07-16 MX MX2021000616A patent/MX2021000616A/es unknown
- 2019-07-16 ES ES22211018T patent/ES2989520T3/es active Active
- 2019-07-16 SI SI201930499T patent/SI3815377T1/sl unknown
- 2019-07-16 AU AU2019303720A patent/AU2019303720B2/en active Active
- 2019-07-16 PL PL19837624.6T patent/PL3815377T3/pl unknown
- 2019-07-16 KR KR1020247034064A patent/KR102783114B1/ko active Active
- 2019-07-16 PL PL22211018.1T patent/PL4164225T3/pl unknown
- 2019-07-16 EP EP19837624.6A patent/EP3815377B1/en active Active
- 2019-07-16 CN CN202211027871.3A patent/CN115941942B/zh active Active
- 2019-07-16 KR KR1020257008201A patent/KR20250043571A/ko active Pending
- 2019-07-16 HU HUE19837624A patent/HUE061422T2/hu unknown
- 2019-07-16 EP EP22211018.1A patent/EP4164225B1/en active Active
- 2019-07-16 DK DK19837624.6T patent/DK3815377T3/da active
- 2019-07-16 SG SG11202100412SA patent/SG11202100412SA/en unknown
- 2019-07-16 FI FIEP19837624.6T patent/FI3815377T3/fi active
- 2019-07-16 JP JP2021502477A patent/JP7461925B2/ja active Active
- 2019-07-16 WO PCT/CN2019/096191 patent/WO2020015648A1/en not_active Ceased
- 2019-07-16 DK DK22211018.1T patent/DK4164225T3/da active
- 2019-07-16 CN CN201980047780.6A patent/CN112425173A/zh active Pending
- 2019-07-16 CA CA3106468A patent/CA3106468C/en active Active
- 2019-07-16 UA UAA202100627A patent/UA128557C2/uk unknown
- 2019-07-16 KR KR1020217004298A patent/KR102483942B1/ko active Active
- 2019-07-16 HR HRP20230288TT patent/HRP20230288T1/hr unknown
- 2019-07-16 LT LTEPPCT/CN2019/096191T patent/LT3815377T/lt unknown
- 2019-07-16 ES ES19837624T patent/ES2938068T3/es active Active
-
2021
- 2021-01-15 CL CL2021000123A patent/CL2021000123A1/es unknown
- 2021-01-15 US US17/149,726 patent/US11336907B2/en active Active
- 2021-01-15 PH PH12021550112A patent/PH12021550112A1/en unknown
- 2021-01-15 MX MX2024011961A patent/MX2024011961A/es unknown
- 2021-01-15 MX MX2024011960A patent/MX2024011960A/es unknown
-
2022
- 2022-04-26 US US17/729,176 patent/US12192488B2/en active Active
- 2022-08-17 ZA ZA2022/09225A patent/ZA202209225B/en unknown
-
2023
- 2023-07-04 AU AU2023204301A patent/AU2023204301B2/en active Active
- 2023-12-01 JP JP2023203937A patent/JP7571266B2/ja active Active
-
2024
- 2024-10-09 JP JP2024177448A patent/JP7721768B2/ja active Active
- 2024-11-25 US US18/957,874 patent/US20250168365A1/en active Pending
-
2025
- 2025-06-18 AU AU2025204546A patent/AU2025204546A1/en active Pending
- 2025-07-30 JP JP2025127737A patent/JP2025160398A/ja active Pending
Also Published As
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| ES2938068T3 (es) | Codificador de video, decodificador de video y métodos de codificación y decodificación correspondientes | |
| ES3001093T3 (es) | Diseño y señalización de filtro de bucle adaptativo (ALF) basado en bloques | |
| ES3009439T3 (en) | Adaptive motion vector resolution signaling for video coding | |
| ES2779461T3 (es) | Intrapredicción de vídeo mejorada que usa una combinación de predicción dependiente de la posición para codificación de vídeo | |
| CN114342373A (zh) | 带有协调运动场存储和运动补偿的几何分割模式 | |
| KR20210046677A (ko) | 애파인 모션 예측 | |
| ES2842082T3 (es) | Indicación de alineación de tipos de imágenes entre capas en la codificación de vídeo multicapa | |
| JP7651669B2 (ja) | ビデオ符号化のための位置依存の空間変化変換 | |
| ES2966494T3 (es) | Señalización de modo intra luma | |
| ES2994635T3 (en) | In-loop filters for video coding | |
| BR122024004201A2 (pt) | Transformação de variação espacial dependente de posição para codificação de vídeo |