ES2998460T3 - Method and apparatus for intra prediction - Google Patents
Method and apparatus for intra prediction Download PDFInfo
- Publication number
- ES2998460T3 ES2998460T3 ES19905863T ES19905863T ES2998460T3 ES 2998460 T3 ES2998460 T3 ES 2998460T3 ES 19905863 T ES19905863 T ES 19905863T ES 19905863 T ES19905863 T ES 19905863T ES 2998460 T3 ES2998460 T3 ES 2998460T3
- Authority
- ES
- Spain
- Prior art keywords
- intra prediction
- video
- intra
- block
- frame
- 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 110
- 239000000523 sample Substances 0.000 claims abstract description 147
- 239000013074 reference sample Substances 0.000 claims abstract description 104
- 230000008569 process Effects 0.000 claims description 35
- 230000001419 dependent effect Effects 0.000 claims description 7
- 238000009966 trimming Methods 0.000 claims description 5
- 238000013139 quantization Methods 0.000 description 79
- 238000012545 processing Methods 0.000 description 74
- 230000009466 transformation Effects 0.000 description 49
- 238000004891 communication Methods 0.000 description 36
- 238000000638 solvent extraction Methods 0.000 description 33
- 238000005192 partition Methods 0.000 description 28
- 239000000872 buffer Substances 0.000 description 27
- 230000006870 function Effects 0.000 description 25
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 description 20
- 230000005540 biological transmission Effects 0.000 description 18
- 238000010586 diagram Methods 0.000 description 18
- 230000006835 compression Effects 0.000 description 11
- 238000007906 compression Methods 0.000 description 11
- 230000003044 adaptive effect Effects 0.000 description 10
- 239000013598 vector Substances 0.000 description 10
- 238000005516 engineering process Methods 0.000 description 8
- 238000003491 array Methods 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 7
- 239000011159 matrix material Substances 0.000 description 7
- 238000007781 pre-processing Methods 0.000 description 7
- 238000001914 filtration Methods 0.000 description 6
- 238000013500 data storage Methods 0.000 description 5
- 238000009795 derivation Methods 0.000 description 5
- 238000009499 grossing Methods 0.000 description 5
- 230000001360 synchronised effect Effects 0.000 description 5
- 230000002123 temporal effect Effects 0.000 description 5
- 101150039623 Clip1 gene Proteins 0.000 description 4
- 238000010276 construction Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000011664 signaling Effects 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 239000004973 liquid crystal related substance Substances 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012805 post-processing Methods 0.000 description 3
- 230000011218 segmentation Effects 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 238000000844 transformation Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000002146 bilateral effect Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 238000003384 imaging method Methods 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- ZBOYJODMIAUJHH-SANMLTNESA-N (2s)-1-[[2,6-dimethoxy-4-[(2-methyl-3-phenylphenyl)methoxy]phenyl]methyl]piperidine-2-carboxylic acid Chemical compound C=1C(OC)=C(CN2[C@@H](CCCC2)C(O)=O)C(OC)=CC=1OCC(C=1C)=CC=CC=1C1=CC=CC=C1 ZBOYJODMIAUJHH-SANMLTNESA-N 0.000 description 1
- VBRBNWWNRIMAII-WYMLVPIESA-N 3-[(e)-5-(4-ethylphenoxy)-3-methylpent-3-enyl]-2,2-dimethyloxirane Chemical compound C1=CC(CC)=CC=C1OC\C=C(/C)CCC1C(C)(C)O1 VBRBNWWNRIMAII-WYMLVPIESA-N 0.000 description 1
- 241000023320 Luma <angiosperm> Species 0.000 description 1
- 238000012952 Resampling Methods 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- BTCSSZJGUNDROE-UHFFFAOYSA-N gamma-aminobutyric acid Chemical compound NCCCC(O)=O BTCSSZJGUNDROE-UHFFFAOYSA-N 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000011002 quantification Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/103—Selection of coding mode or of prediction mode
- H04N19/105—Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/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/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/136—Incoming video signal characteristics or properties
-
- 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/146—Data rate or code amount at the encoder output
- H04N19/147—Data rate or code amount at the encoder output according to rate distortion criteria
-
- 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/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
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression Of Band Width Or Redundancy In Fax (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
Se proporcionan aparatos y métodos para la predicción intra de un bloque. El método de predicción intra de un bloque actual incluye: obtener un valor de muestra predicho a partir de uno o más valores de muestra de referencia mediante el uso de un modo de predicción intra; obtener al menos un valor de muestra de referencia adicional de acuerdo con el modo de predicción intra; y obtener un valor de muestra de referencia adicional con umbral basado en el valor de muestra de referencia adicional. El método también incluye: calcular un valor adicional a partir del valor de muestra de referencia adicional con umbral; multiplicar el valor de muestra predicho por un factor de ponderación de muestra, lo que da como resultado un valor de muestra predicho ponderado; sumar el valor adicional al valor de muestra predicho ponderado, lo que da como resultado un valor de muestra predicho no normalizado; y normalizar el valor de muestra predicho no normalizado, lo que da como resultado valores de muestra predichos normalizados. Se aumenta la precisión de la predicción intra. (Traducción automática con Google Translate, sin valor legal)
Description
DESCRIPCIÓN
Método y aparato para intra predicción
Campo técnico
La presente descripción se refiere al campo técnico de la codificación y decodificación de imágenes y/o video, y en particular a métodos y aparatos para intra predicción.
Antecedentes
El video digital ha sido ampliamente utilizado desde la introducción de los discos DVD. Antes de la transmisión, el video se codifica y se transmite utilizando un medio de transmisión. El espectador recibe el video y utiliza un dispositivo de visualización para decodificarlo y mostrarlo. Con el paso de los años, la calidad del video ha mejorado, por ejemplo, debido a mayores resoluciones, profundidades de color y velocidades de cuadro. Esto ha dado lugar a flujos de datos de mayor tamaño, que hoy en día se transportan habitualmente a través de Internet y redes de comunicación móviles.
Sin embargo, los videos de mayor resolución generalmente requieren más ancho de banda ya que tienen más información. Para reducir los requisitos de ancho de banda, se han introducido estándares de codificación de video que implican la compresión del video. Cuando se codifica el video, se reducen los requisitos de ancho de banda (o los requisitos de memoria correspondientes en el caso del almacenamiento). A menudo, esta reducción se produce a costa de la calidad. Así, los estándares de codificación de video intentan encontrar un equilibrio entre los requisitos de ancho de banda y la calidad.
La Codificación de Video de Alta Eficiencia (HEVC) es un ejemplo de un estándar de codificación de video que es conocido comúnmente por los expertos en la materia. En HEVC, dividir una unidad de codificación (CU) en unidades de predicción (PU) o unidades de transformación (TU). El estándar de próxima generación Codificación de Video Versátil (WC) es el proyecto de video conjunto más reciente del Grupo de Expertos en Codificación de Video (VCEG) de la UIT-T y las organizaciones de estandarización del Grupo de Expertos en Imágenes en Movimiento (MPEG) de ISO/IEC, que trabajan juntos en una asociación conocida como Equipo de Exploración de Video Conjunto (JVET). VVC también se conoce como estándar ITU-T H.266/Codificación de Video de Próxima Generación (NGVC). En WC, se eliminarán los conceptos de tipos de partición múltiples, es decir, la separación de los conceptos CU, PU y TU excepto cuando sea necesario para CU que tengan un tamaño demasiado grande para la longitud máxima de transformación, y se admite una mayor flexibilidad para las formas de partición de CU.
El procesamiento de estas unidades de codificación (CU) (también denominadas bloques) depende de su tamaño, posición espacial y un modo de codificación especificado por un codificador. Los modos de codificación se pueden clasificar en dos grupos según el tipo de predicción: modos de intrapredicción y modos de interpredicción. Los modos de intra predicción utilizan muestras del mismo fotograma (también denominado cuadro o imagen) para generar muestras de referencia para calcular los valores de predicción para las muestras del bloque que se está reconstruyendo. La intra predicción también se conoce como predicción espacial. Los modos de inter predicción están diseñados para la predicción temporal y utilizan muestras de referencia de fotogramas anteriores o siguientes para predecir muestras del bloque del fotograma actual.
Existe una necesidad de aparatos y métodos para codificación de video, que permitan un manejo eficiente de un proceso de intra predicción. MINEZAWA A ET AL: "An improved intra vertical and horizontal prediction" 6.JCT-VC MEETING;20110714-20110722;TORINO;(EQUIPO DE COLABORACIÓN CONJUNTO SOBRE CODIFICACIÓN DE VIDEO DE ISO/IEC JTC1/SC29/WG11 Y ITU-T SG.16 ), n.° JCTVC-F172 describe una modificación de la intra predicción vertical y horizontal. RELACIONADO CON EE1: SIMPLIFICATION AND EXTENSION OF PDPC: "EE1 related: Simplification and extension of PDPC" 8. REUNIÓN JVET; 18-10-2017 - 25-10-2017; MACAO; (EL EQUIPO DE EXPLORACIÓN DE VIDEO CONJUNTO DE ISO/IEC JTC1/SC29/WG11 Y ITU-T SG.16), n.° JVET-H0057-v3 describe que la tabla de búsqueda para almacenar parámetros PDPC se elimina para el modo planar, DC, modos verticales y horizontales y los parámetros PDPC se derivan de manera uniforme para todos los tamaños de bloque. YW CHEN ET AL: "Description of SDR, HDR and 360° video coding technology proposal by Qualcomm and Technicolor - low and high complexity versions", 10. REUNIÓN JVET; 20180410 - 20180420; SAN DIEGO; (EL EQUIPO DE EXPLORACIÓN DE VIDEO CONJUNTO DE ISO/IEC JTC1/SC29/WG11 Y ITU-T SG.16), n.° JVET-J0021 proporciona una descripción de la tecnología de codificación de video SDR, HDR y 360°.
Compendio
Se proporciona un método de intra predicción de un bloque de un fotograma, un dispositivo de codificación, un dispositivo de decodificación y un medio legible por ordenador. La presente invención se define mediante las reivindicaciones independientes. En las reivindicaciones dependientes se presentan características adicionales de la invención. En lo sucesivo, partes de la descripción y los dibujos que se refieren a realizaciones anteriores que no necesariamente comprende todas las características para implementar realizaciones de la invención reivindicada y no están presentadas como realizaciones de la invención, sino como ejemplos ilustrativos útiles para entender la invención. Por el contrario, la descripción habilitante en forma de una realización que cae dentro del alcance de las reivindicaciones se marca a continuación en la sección "DESCRIPCIÓN DETALLADA DE LAS REALIZACIONES" explícitamente como una "realización según la invención protegida ".
Como ejemplo de un primer aspecto de la invención, se proporciona un método de intra predicción de un bloque de un fotograma, y el método incluye:
obtener un valor de muestra predicho a partir de uno o más valores de muestra de referencia mediante intrapredicción utilizando un modo de intra predicción, en donde el modo de intra predicción es uno de un modo de intra-predicción DC, un modo de intra predicción horizontal o un modo de intrapredicción vertical;
obtener los valores de las muestras de referencia más cercanas ubicadas encima y a la izquierda de la muestra predicha;
obtener, según el modo de intra predicción, uno o más valores de muestra de referencia adicionales, en donde:
- cuando el modo de intra predicción es vertical, el valor de la muestra de referencia adicional se establece igual a la diferencia entre el valor de la muestra de referencia más cercana ubicada por encima de la muestra predicha y el valor de la muestra de referencia superior izquierda,
- cuando el modo de intra predicción es vertical, el valor de la muestra de referencia adicional se establece igual a la diferencia entre el valor de la muestra de referencia más cercana ubicada a la izquierda de la muestra predicha y el valor de la muestra de referencia superior izquierda,
- cuando el modo de intra predicción es un modo de intra predicción de DC, el primer valor de muestra de referencia adicional y el segundo valor de muestra de referencia adicional se obtienen mediante
o establecer el primer valor de muestra de referencia adicional igual al valor de la muestra de referencia más cercana ubicada a la izquierda de la muestra predicha, y
o establecer el segundo valor de muestra de referencia adicional igual al valor de la muestra de referencia más cercana ubicada por encima de la muestra predicha;
establecer un valor de muestra de referencia adicional umbral cuando el modo de intra predicción es horizontal o vertical;
calcular un valor adicional ya sea
o como suma ponderada de la primera muestra de referencia adicional y la segunda muestra de referencia adicional cuando el modo de intra predicción es un modo de intra predicción DC, o
o al multiplicar el factor de ponderación por el valor de la muestra de referencia adicional cuando el modo de intra predicción es horizontal o vertical;
al multiplicar el valor de muestra predicho por un factor de ponderación de muestra, dando como resultado un valor de muestra predicho ponderado, en donde el factor de ponderación de muestra se establece igual a uno cuando el modo de intra predicción es horizontal o vertical;
al añadir un valor adicional al valor de muestra predicho ponderado, lo que da como resultado un valor de muestra predicho no normalizado; y
normalizar el valor de muestra predicho no normalizado mediante un desplazamiento aritmético a la derecha de una representación entera del valor de muestra predicho no normalizado, lo que da como resultado un valor de muestra predicho normalizado.
Como una forma de implementación del primer aspecto, el método incluye además la derivación de los valores mínimo y máximo de una muestra predicha, en donde el umbral de un valor de muestra de referencia adicional incluye:
obtener el valor de la muestra de referencia superior izquierda; y
actualizar el valor de muestra de referencia adicional, que comprende una comprobación de si es mayor que un valor límite superior o menor que un límite inferior, en donde
- cuando el valor de la muestra de referencia superior izquierda es mayor que el valor de la muestra predicho, el límite superior se obtiene restando el valor de la muestra predicho del valor máximo de la muestra predicha, el valor de la muestra de referencia adicional actualizado se establece igual al máximo de dos valores, o el primer valor es el valor de muestra de referencia adicional, y
o el segundo valor es el límite superior,
- de lo contrario, el límite inferior se obtiene restando el valor de muestra predicho del valor mínimo de la muestra predicha, y el valor de muestra de referencia adicional actualizado se establece igual al mínimo de dos valores.
o el primer valor es el valor de muestra de referencia adicional, y
o el segundo valor es el límite inferior.
Como ejemplo de un segundo aspecto de la invención, se proporciona un método de intra predicción de un bloque de un fotograma, y el método incluye: obtener un modo de intra predicción de un bloque actual; y realizar una combinación de predicción dependiente de la posición (PDPC) basada en la muestra superior o la muestra izquierda cuando el modo de intra predicción es el modo DC o el modo planar, la muestra superior izquierda no se utiliza para la combinación de predicción dependiente de la posición (PDPC).
Como ejemplo de un tercer aspecto de la invención, se proporciona un método de intra predicción de un bloque de un fotograma, y el método incluye: obtener un modo de intra predicción de un bloque actual; la operación de recorte en combinación de predicción dependiente de la posición (PDPC) se realiza cuando el modo de intra predicción es el modo de intra predicción horizontal o el modo de intra predicción vertical, y no se realiza cuando el modo de intra predicción es el modo DC o el modo planar.
Como una forma de implementación del tercer aspecto, la operación de recorte en PDPC se realiza solo cuando el modo de intra predicción es el modo de intra predicción horizontal o el modo de intra predicción vertical. Por ejemplo, cuando predModeIntra es igual a INTRA_ANGULAR18 o INTRA_ANGULAR50:
predSamptes[ x ][ y ] = d*>1Cmp( ( refl[ x ](y | ' wL| x | ♦ refT( x |J V 1*wT]y | - pl - 1 I -1 )’wTLfx ][ y 1 ( 64 -wt[x ] -wT[y ] ♦wTL[x | [ y )) * predSamplesJ x ](y ] ♦ 32) » 6),
en donde predModeIntra se utiliza para indicar el modo de intra predicción, {x,y} definen la posición de una muestra predicha, wT, wL y wTL son pesos asociados con muestras de referencia según la posición definida.
El método según el primer aspecto o cualquier posible realización del primer aspecto, el segundo aspecto o cualquier posible realización del segundo aspecto, o el tercer aspecto o cualquier posible realización del tercer aspecto, puede realizarse mediante el aparato según el cuarto aspecto de la invención.
Según un quinto aspecto, la invención se refiere a un aparato para decodificar un flujo de video que incluye un procesador y una memoria. La memoria almacena instrucciones que hacen que el procesador ejecute el método según el primer aspecto o cualquier posible realización del primer aspecto, el segundo aspecto o cualquier posible realización del segundo aspecto, o el tercer aspecto o cualquier posible realización del tercer aspecto.
Según un sexto aspecto, la invención se refiere a un aparato para codificar un flujo de video que incluye un procesador y una memoria. La memoria almacena instrucciones que hacen que el procesador ejecute el método según el primer aspecto o cualquier posible realización del primer aspecto, el segundo aspecto o cualquier posible realización del segundo aspecto, o el tercer aspecto o cualquier posible realización del tercer aspecto.
Según un séptimo aspecto, se propone un medio de almacenamiento legible por ordenador que tiene almacenadas en él instrucciones que, cuando se ejecutan, hacen que uno o más procesadores estén configurados para codificar datos de video. Las instrucciones hacen que uno o más procesadores ejecute el método según el primer aspecto o cualquier posible realización del primer aspecto, el segundo aspecto o cualquier posible realización del segundo aspecto, o el tercer aspecto o cualquier posible realización del tercer aspecto.
Según un octavo aspecto, la invención se refiere a un programa informático que comprende un código de programa para realizar el método según el primer aspecto o cualquier posible realización del primer aspecto, el segundo aspecto o cualquier posible realización del segundo aspecto, o el tercer aspecto o cualquier posible realización del tercer aspecto cuando se ejecuta en un ordenador.
Los detalles de una o más realizaciones se exponen en los dibujos adjuntos y la descripción que sigue. Otras características, objetos y ventajas serán evidentes en función de la descripción, los dibujos y las reivindicaciones.
Breve descripción de los dibujos
En lo sucesivo, se describen con más detalle realizaciones de la invención, con referencia a las figuras y dibujos adjuntos, en donde:
La FIG. 1A es un diagrama de bloques que muestra un ejemplo de un sistema de codificación de video configurado para implementar realizaciones de la invención;
La FIG. 1B es un diagrama de bloques que muestra otro ejemplo de un sistema de codificación de video configurado para implementar realizaciones de la invención;
La FIG. 2A es un diagrama de bloques que muestra un ejemplo de un codificador de video configurado para implementar realizaciones de la invención;
La FIG. 3A es un diagrama de bloques que muestra una estructura ejemplar de decodificador de video configurado para implementar realizaciones de la invención;
La FIG. 4 es un diagrama de bloques que ilustra un ejemplo de un aparato de codificación o un aparato de decodificación;
La FIG. 5 es un diagrama de bloques que ilustra otro ejemplo de un aparato de codificación o un aparato de decodificación;
La FIG. 6 ilustra un ejemplo de direcciones y modos de intra predicción Angular y el valor asociado de pang para direcciones de predicción vertical;
La FIG. 7 ilustra un ejemplo de T ransformación de pref a p1, ref para un bloque de 4 * 4;
La FIG. 8 ilustra un ejemplo de Construcción de p1,ref para predicción angular horizontal;
La FIG. 9 ilustra un ejemplo de Construcción de p1,ref para predicción angular vertical;
La FIG. 10A ilustra un ejemplo de direcciones de intra predicción Angular y los modos de intra predicción asociados en JEM y BMS-1;
La FIG. 10B ilustra un ejemplo de direcciones de intra predicción Angular y los modos de intra predicción asociados en VTM-2;
La FIG. 10C ilustra un ejemplo de direcciones de intra predicción Angular y los modos de intra predicción asociados en VTM-3;
La FIG. 11 ilustra un ejemplo de direcciones de intra predicción Angular y los modos de intra predicción asociados en HEVC;
La FIG. 12 ilustra un ejemplo de QTBT explicado;
La FIG. 13A ilustra un ejemplo de coordenadas para los modos de intra predicción vertical horizontal; La FIG. 13B ilustra un ejemplo de pesos PDPC del modo DC para las posiciones (0, 0) y (1, 0) dentro de un bloque 4x4;
La FIG. 14 ilustra un ejemplo de intra predicción de un bloque a partir de muestras de referencia del lado de referencia principal;
La FIG. 15 ilustra un ejemplo de pesos PDPC del modo DC para las posiciones (0, 0) y (1, 0) dentro de un bloque 4x4;
La FIG. 16 ilustra un ejemplo de intra predicción de un bloque de muestras;
La FIG. 17 ilustra un ejemplo en el que las muestras de referencia son utilizadas por el proceso de intra predicción para producir muestras predichas;
La FIG. 18 es un diagrama de bloques que muestra una estructura ejemplar de un aparato para intra predicción para producir muestras predichas;
La FIG. 19 es un diagrama de bloques que muestra una estructura de ejemplo de un sistema 3100 de suministro de contenido que realiza un servicio de entrega de contenido; y
La FIG. 20 es un diagrama de bloques que muestra una estructura de un ejemplo de un dispositivo terminal.
En lo que sigue, los signos de referencia idénticos se refieren a características idénticas o al menos funcionalmente equivalentes, a menos que se especifique explícitamente lo contrario.
Descripción detallada de las realizaciones
Definiciones de acrónimos y glosario
JEM Modelo de exploración conjunta (la base de código del software para la exploración futura de codificación de video)
JVET Equipo conjunto de expertos en video
LUT Tabla de consulta
PDPC Combinación de predicción dependiente de la posición
PPS Conjunto de parámetros de fotograma
QT Árbol cuádruple
QTBT Árbol cuádruple más árbol binario
RDO Optimización de la distorsión de velocidad
ROM Memoria de solo lectura
SPS Conjunto de parámetros de secuencia
VTM Modelo de prueba VVC
VVC Codificación de video versátil, el proyecto de estandarización desarrollado por JVET.
CTU / CTB - Unidad de árbol de codificación / Bloque de árbol de codificación
CU / CB - Unidad de codificación / Bloque de codificación
PU/PB - Unidad de predicción / Bloque de predicción
TU/TB - Unidad de transformación / Bloque de transformación
HEVC - Codificación de video de alta eficiencia
En la siguiente descripción, se hace referencia a las figuras adjuntas, que forman parte de la descripción, y que muestran, a modo de ilustración, aspectos específicos de realizaciones de la invención o aspectos específicos en los que se pueden usar las realizaciones de la presente invención. Se entiende que las realizaciones de la invención se pueden usar en otros aspectos y comprenden cambios estructurales o lógicos no representados en las figuras. Por lo tanto, la siguiente descripción detallada no debe tomarse en un sentido limitado, y el alcance de la presente invención se define mediante las reivindicaciones adjuntas.
Por ejemplo, se entiende que una descripción en relación con un método descrito también puede ser válida para un dispositivo o sistema correspondiente configurado para realizar el método y viceversa. Por ejemplo, si se describen uno o una pluralidad de etapas del método específicas, un dispositivo correspondiente puede incluir una o una pluralidad de unidades, por ejemplo, unidades funcionales, para realizar la una o la pluralidad de etapas del método descritas (por ejemplo, una unidad que realiza la una o la pluralidad de etapas, o una pluralidad de unidades, cada una de las cuales realiza uno o más de la pluralidad de etapas), incluso si tales una o más unidades no se describen o ilustran explícitamente en las figuras. Por otro lado, por ejemplo, si un aparato específico se describe en función de una o una pluralidad de unidades, por ejemplo, unidades funcionales, un método correspondiente puede incluir una etapa para realizar la funcionalidad de la una o la pluralidad de unidades (por ejemplo, una etapa que realiza la funcionalidad de la una o la pluralidad de unidades, o una pluralidad de etapas, cada una de las cuales realiza la funcionalidad de una o más de la pluralidad de unidades), incluso si tal una o pluralidad de etapas no se describen o ilustran explícitamente en las figuras. Además, se entiende que las características de las diversas realizaciones ejemplares y/o los aspectos descritos en la presente memoria pueden combinarse entre sí, a menos que se indique específicamente lo contrario.
La codificación de video generalmente se refiere al procesamiento de una secuencia de imágenes, que forman el video o la secuencia de video. En lugar del término "fotograma", el término "cuadro" o "imagen" se puede usar como sinónimos en el campo de la codificación de video. La codificación de video (o codificación en general) consta de dos partes, es decir, codificación de video y decodificación de video. La codificación de video se realiza en el lado de origen, lo que generalmente comprende el procesamiento (por ejemplo, mediante compresión) de las imágenes de video originales para reducir la cantidad de datos necesarios para representar las imágenes de video (para un almacenamiento y/o transmisión más eficiente). La decodificación de video se realiza en el lado de destino y generalmente comprende el procesamiento inverso en comparación con el codificador para reconstruir las imágenes de video. Las realizaciones que se refieren a la "codificación" de fotogramas de video (o fotogramas en genera) se entenderán relacionadas con la "codificación" o la "decodificación" de fotogramas de video o secuencias de video respectivas. La combinación de la parte de codificación y la parte de decodificación también se conoce como CODEC (codificación y decodificación).
En caso de codificación de video sin pérdidas, las imágenes de video originales pueden reconstruirse, es decir, las imágenes de video reconstruidas tienen la misma calidad que las imágenes de video originales (suponiendo que no haya pérdida de transmisión u otra pérdida de datos durante el almacenamiento o la transmisión). En caso de codificación de video con pérdida, se realiza una compresión adicional, por ejemplo, mediante cuantificación, para reducir la cantidad de datos que representan las imágenes de video, que no pueden reconstruirse completamente en el decodificador, es decir, la calidad de las imágenes de video reconstruidas es menor o peor en comparación a la calidad de las imágenes de video originales.
Varios estándares de codificación de video pertenecen al grupo de "códecs de video híbridos con pérdida" (es decir, combinan predicción espacial y temporal en el dominio de muestra y codificación de transformación 2D para aplicar cuantificación en el dominio de transformación). Cada imagen de una secuencia de video generalmente se divide en un conjunto de bloques que no se superponen y la codificación generalmente se realiza a nivel de bloque. En otras palabras, en el codificador, el video generalmente se procesa, es decir, se codifica, en un nivel de bloque (bloque de video), por ejemplo, usando predicción espacial (intra fotograma) y/o predicción temporal (inter fotograma) para generar un bloque de predicción, restando el bloque de predicción del bloque actual (bloque actualmente procesado/a procesar) para obtener un bloque residual, transformando el bloque residual y cuantificando el bloque residual en el dominio de transformación para reducir la cantidad de datos a transmitir (compresión), mientras que en el decodificador se aplica parcialmente al bloque codificado o comprimido el procesamiento inverso al del codificador para reconstruir el bloque actual para su representación. Además, el codificador duplica el bucle de procesamiento del decodificador de manera que ambos generarán predicciones idénticas (por ejemplo, intrapredicciones e interpredicciones) y/o reconstrucciones para el procesamiento, es decir, la codificación, de los bloques subsiguientes.
En las siguientes realizaciones de un sistema 10 de codificación de video, se describen un codificador 20 de video y un decodificador 30 de video basándose en las FIG. 1 a 3.
La FIG. 1A es un diagrama de bloques esquemático que ilustra un sistema 10 de codificación ejemplar, por ejemplo, un sistema 10 de codificación de video (o sistema 10 de codificación para abreviar) que puede utilizar técnicas de esta presente solicitud. El codificador 20 de video (o codificador 20 para abreviar) y el decodificador 30 de video (o decodificador 30 para abreviar) del sistema 10 de codificación de video representan ejemplos de dispositivos que pueden configurarse para realizar técnicas según diversos ejemplos descritos en la presente solicitud.
Como se muestra en la FIG. 1A, el sistema 10 de codificación comprende un dispositivo 12 de origen configurado para proporcionar datos 21 de fotograma por ejemplo, a un dispositivo 14 de destino para decodificar los datos 21 de fotograma codificados.
El dispositivo 12 de origen comprende un codificador 20, y puede comprender adicionalmente, es decir, opcionalmente, un origen 16 de fotogramas, una unidad 18 de preprocesamiento, por ejemplo, una unidad 18 de preprocesamiento de fotogramas, y una interfaz de comunicación o unidad 22 de comunicación.
El origen 16 de fotogramas puede comprender o ser cualquier tipo de dispositivo de captura de fotogramas, por ejemplo, para capturar un fotograma del mundo real, y/o cualquier tipo de dispositivo de generación de fotogramas, por ejemplo, un procesador de gráficos por ordenador para generar un fotograma animado por ordenador, o cualquier tipo de dispositivo para obtener y/o proporcionar un fotograma del mundo real, un fotograma generado por ordenador (por ejemplo, un contenido de pantalla, un fotograma de realidad virtual (VR)) y/o cualquier combinación de los mismas (por ejemplo, un fotograma de realidad aumentada (AR)). El origen de fotogramas puede ser cualquier tipo de memoria o almacenamiento que almacene cualquiera de los fotogramas mencionados anteriormente.
A diferencia de la unidad 18 de preprocesamiento y el procesamiento realizado por la unidad 18 de preprocesamiento, el fotograma o los datos 17 de fotograma también pueden denominarse fotograma sin procesar o datos 17 de fotograma sin procesar.
El preprocesador 18 está configurado para recibir los datos 17 de fotograma (sin procesar) y para realizar el preprocesamiento de los datos 17 de fotograma para obtener un fotograma 19 preprocesado o datos 19 de fotograma preprocesados. El preprocesamiento realizado por el preprocesador 18 puede comprender, por ejemplo, recorte, conversión de formato de color (por ejemplo, de RGB a YCbCr), corrección de color o eliminación de ruido. Puede entenderse que la unidad 18 de preprocesamiento puede ser un componente opcional.
El codificador 20 de video está configurado para recibir los datos 19 de fotograma preprocesados y proporcionar datos 21 de fotograma codificados (a continuación se describirán más detalles, por ejemplo, basándose en la FIG. 2).
La interfaz 22 de comunicación del dispositivo 12 de origen puede estar configurada para recibir los datos 21 de fotograma codificados y para transmitir los datos 21 de fotograma codificados (o cualquier versión procesada adicional de los mismos) a través del canal 13 de comunicación a otro dispositivo, por ejemplo, el dispositivo 14 de destino o cualquier otro dispositivo, para almacenamiento o reconstrucción directa.
El dispositivo 14 de destino comprende un decodificador 30 (por ejemplo, un decodificador 30 de video), y puede comprender adicionalmente, es decir, opcionalmente, una interfaz de comunicación o unidad 28 de comunicación, un posprocesador 32 (o unidad 32 de posprocesamiento) y un dispositivo 34 de visualización.
La interfaz 28 de comunicación del dispositivo 14 de destino está configurada para recibir los datos 21 de imagen codificados (o cualquier otra versión procesada de los mismos), por ejemplo, directamente desde el dispositivo de 12 origen o desde cualquier otro origen, por ejemplo, un dispositivo de almacenamiento, por ejemplo, un dispositivo de almacenamiento de datos de fotograma codificados, y proporcionar los datos 21 de fotograma codificados al codificador 30.
La interfaz 22 de comunicación y la interfaz 28 de comunicación pueden configurarse para transmitir o recibir los datos 21 de fotograma codificados o los datos 13 codificados a través de un enlace de comunicación directo entre el dispositivo 12 de origen y el dispositivo 14 de destino, por ejemplo, una conexión directa por cable o inalámbrica, o a través de cualquier tipo de red, por ejemplo, una red por cable o inalámbrica o cualquier combinación de las mismas, o cualquier tipo de red privada y pública, o cualquier tipo de combinación de las mismas.
La interfaz 22 de comunicación puede configurarse, por ejemplo, para empaquetar los datos 21 de fotograma codificados en un formato apropiado, por ejemplo, paquetes, y/o procesar los datos de fotograma codificados mediante el uso de cualquier tipo de codificación de transmisión o procesamiento para transmisión a través de un enlace de comunicación o una red de comunicación.
La interfaz 28 de comunicación , que forma la contraparte de la interfaz 22 de comunicación, puede estar, por ejemplo, configurada para recibir los datos transmitidos y procesar los datos de transmisión utilizando cualquier tipo de decodificación o procesamiento de transmisión correspondiente y/o desempaquetado para obtener los datos 21 de fotograma codificados.
Tanto la interfaz 22 de comunicación como la interfaz 28 de comunicación pueden configurarse como interfaces de comunicación unidireccionales, como lo indica la flecha para el canal 13 de comunicación en la FIG. 1A que apunta desde el dispositivo 12 de origen al dispositivo 14 de destino, o interfaces de comunicación bidireccionales, y puede configurarse, por ejemplo, para enviar y recibir mensajes, por ejemplo, para establecer una conexión, para acuse de recibo e intercambiar cualquier otra información relacionada con el enlace de comunicación y/o transmisión de datos, por ejemplo, transmisión de datos de fotograma codificados.
El decodificador 30 está configurado para recibir los datos 21 de fotograma codificados y proporcionar datos 31 de fotograma decodificados o un fotograma 31 decodificado (a continuación se describirán más detalles, por ejemplo, basándose en la FIG. 3 o la FIG. 5).
El posprocesador 32 del dispositivo 14 de destino está configurado para posprocesar los datos 31 de fotograma decodificados (también llamados datos de fotograma reconstruidos), por ejemplo, el fotograma 31 decodificado, para obtener datos 33 de fotograma posprocesados, por ejemplo, un fotograma 33 posprocesado. El posprocesamiento realizado por la unidad 32 de posprocesamiento puede comprender, por ejemplo, conversión de formato de color (por ejemplo, de YCbCr a RGB), corrección de color, recorte o remuestreo, o cualquier otro procesamiento, por ejemplo, para preparar los datos 31 de fotograma decodificados para la visualización, por ejemplo, mediante el dispositivo 34 de visualización.
El dispositivo 34 de visualización del dispositivo 14 de destino está configurado para recibir los datos 33 de fotograma posprocesados para mostrar el fotograma , por ejemplo, a un usuario o espectador. El dispositivo 34 de visualización puede ser o comprender cualquier tipo de pantalla para representar el fotograma reconstruido, por ejemplo, una pantalla o monitor integrado o externo. Las pantallas pueden comprender, por ejemplo, pantallas de cristal líquido (LCD), pantallas de diodos orgánicos emisores de luz (OLED), pantallas de plasma, proyectores, pantallas micro LED, cristal líquido sobre silicio (LCoS), procesador de luz digital (DLP) o cualquier otro tipo de pantalla.
Aunque la FIG. 1A representa el dispositivo 12 de origen y el dispositivo 14 de destino como dispositivos separados, las realizaciones de los dispositivos también pueden comprender ambos o ambas funcionalidades, el dispositivo 12 de origen o la funcionalidad correspondiente y el dispositivo 14 de destino o la funcionalidad correspondiente. En tales realizaciones, el dispositivo 12 de origen o la funcionalidad correspondiente y el dispositivo 14 de destino o la funcionalidad correspondiente pueden implementarse usando el mismo hardware y/o software o por hardware y/o software separados o cualquier combinación de los mismos.
Como será evidente para el experto en la técnica en función de la descripción, la existencia y división (exacta) de funcionalidades de las diferentes unidades o funcionalidades dentro del dispositivo 12 de origen y/o el dispositivo 14 de destino, como se muestra en la FIG. 1A, puede variar dependiendo del dispositivo y la aplicación reales.
El codificador 20 (por ejemplo, un codificador 20 de video) y el decodificador 30 (por ejemplo, un decodificador 30 de video) cada uno puede implementarse como cualquiera de una variedad de circuitos adecuados como se muestra en la FIG. 1B, tal como uno o más microprocesadores, procesadores de señales digitales (DSP), circuitos integrados de aplicación específica (ASIC), matrices de puertas programables en campo (FPGA), lógica discreta, hardware o cualquier combinación de los mismos. Si las técnicas se implementan parcialmente en software, un dispositivo puede almacenar instrucciones para el software en un medio de almacenamiento legible por ordenador no transitorio adecuado y puede ejecutar las instrucciones en hardware usando uno o más procesadores para realizar las técnicas de esta descripción. Cualquiera de los anteriores (incluyendo hardware, software, una combinación de hardware y software, etc.) puede considerarse como uno o más procesadores. Cada uno del codificador 20 de video y del decodificador 30 de video puede incluirse en uno o más codificadores o decodificadores, cualquiera de los cuales puede integrarse como parte de un codificador/decodificador (CODEC) combinado en un dispositivo respectivo.
El dispositivo 12 de origen y el dispositivo 14 de destino pueden comprender cualquiera de una amplia gama de dispositivos, incluido cualquier tipo de dispositivo portátil o fijo, por ejemplo, ordenadores portátiles o portátiles, teléfonos móviles, teléfonos inteligentes, tabletas u ordenadores tabletas, cámaras, ordenadores de escritorio, decodificadores, televisores, dispositivos de visualización, reproductores de medios digitales, consolas de videojuegos, dispositivos de transmisión de video (tales como servidores de servicios de contenido o servidores de entrega de contenido), dispositivo receptor de emisiones, dispositivo transmisor de emisiones o similares, y puede usar ningún o cualquier tipo de sistema operativo. En algunos casos, el dispositivo 12 de origen y el dispositivo 14 de destino pueden estar equipados para comunicación inalámbrica. Por lo tanto, el dispositivo 12 de origen y el dispositivo 14 de destino pueden ser dispositivos de comunicación inalámbrica.
En algunos casos, el sistema 10 de codificación de video ilustrado en la FIG. 1A es simplemente un ejemplo y las técnicas de la presente solicitud pueden aplicarse a configuraciones de codificación de video (por ejemplo, codificación de video o decodificación de video) que no necesariamente incluyen ninguna comunicación de datos entre los dispositivos de codificación y decodificación. En otros ejemplos, los datos se recuperan de una memoria local, se transmiten a través de una red o similar. Un dispositivo de codificación de video puede codificar y almacenar datos en la memoria, y/o un dispositivo de decodificación de video puede recuperar y decodificar datos de la memoria. En algunos ejemplos, la codificación y decodificación la realizan dispositivos que no se comunican entre sí, sino que simplemente codifican datos en la memoria y/o recuperan y decodifican datos de la memoria.
La FIG. 1B es un diagrama ilustrativo de otro ejemplo del sistema 40 de codificación de video que incluye el codificador 20 de la FIG. 2 y/o el decodificador 30 de la FIG. 3 según una realización ejemplar. El sistema 40 puede implementar técnicas según diversos ejemplos descritos en la presente solicitud. En la implementación ilustrada, el sistema 40 de codificación de video puede incluir dispositivo o dispositivos 41 de imágenes, codificador 100 de video, decodificador 30 de video (y/o un codificador de video implementado a través del circuito 47 lógico de la o las unidades 46 de procesamiento), una antena 42, uno o más procesadores 43, uno o más almacenamientos 44 de memoria, y/o un dispositivo 45 de visualización.
Como se ilustra, el o los dispositivos 41 de imágenes, la antena 42, la o las unidades 46 de procesamiento, el circuito 47 lógico, el codificador 20 de video, el decodificador 30 de video, el o los procesadores 43, el o los almacenamientos 44 de memoria, y/o el dispositivo 45 de visualización pueden ser capaces de comunicarse entre sí. Como se analizó, aunque se ilustra tanto con el codificador 20 de video como con el decodificador 30 de video, el sistema 40 de codificación de video puede incluir solo el codificador 20 de video o solo el decodificador 30 de video en diversos ejemplos.
Como se muestra, en algunos ejemplos, el sistema 40 de codificación de video puede incluir una antena 42. La antena 42 puede configurarse para transmitir o recibir un flujo de bits codificado de datos de video, por ejemplo. Además, en algunos ejemplos, el sistema 40 de codificación de video puede incluir un dispositivo 45 de visualización. El dispositivo 45 de visualización puede configurarse para presentar datos de video. Como se muestra, en algunos ejemplos, el circuito 47 lógico puede implementarse a través de la o las unidades 46 de procesamiento. La o las unidades 46 de procesamiento pueden incluir lógica de circuito integrado de aplicación específica (ASIC), procesador o procesadores de gráficos, procesador o procesadores de propósito general, o similares. El sistema 40 de codificación de video también puede incluir procesador o procesadores 43 opcionales, que pueden incluir de forma similar lógica de circuito integrado de aplicación específica (ASIC), procesador o procesadores de gráficos, procesador o procesadores de propósito general o similares. En algunos ejemplos, el circuito 47 lógico puede implementarse a través de hardware, hardware dedicado de codificación de video o similar, y el o los procesadores 43 pueden implementar software de propósito general, sistemas operativos o similares. Además, el o los almacenamientos 44 de memoria pueden ser cualquier tipo de memoria, tales como memoria volátil (por ejemplo, memoria estática de acceso aleatorio (SRAM), memoria dinámica de acceso aleatorio (DRAM), etc.) o memoria no volátil (por ejemplo, memoria flash, etc.), etc. En un ejemplo no limitativo, el o los almacenamientos 44 de memoria pueden implementarse mediante memoria caché. En algunos ejemplos, el circuito 47 lógico puede acceder a el o los almacenamientos 44 de memoria (para la implementación de una memoria intermedia de imágenes, por ejemplo). En otros ejemplos, el circuito 47 lógico y/o la o las unidades 46 de procesamiento pueden incluir almacenamientos de memoria (por ejemplo, memoria caché o similar) para la implementación de una memoria intermedia de imágenes o similar.
En algunos ejemplos, el codificador 20 de video implementado a través de un circuito lógico puede incluir una memoria intermedia de imágenes (por ejemplo, a través de unidad o unidades de 46 procesamiento o almacenamiento o almacenamientos 44 de memoria) y una unidad de procesamiento de gráficos (por ejemplo, a través de una o unas unidades 46 de procesamiento). La unidad de procesamiento de gráficos puede estar acoplada comunicativamente a la memoria intermedia de imágenes. La unidad de procesamiento de gráficos puede incluir un codificador 20 de video implementado a través del circuito 47 lógico para incorporar los diversos módulos como se analizó con respecto a la FIG. 2 y/o cualquier otro sistema o subsistema codificador descrito en la presente memoria. El circuito lógico puede configurarse para realizar las diversas operaciones que se describen en la presente memoria.
El decodificador 30 de video puede implementarse de manera similar a como se implementa a través del circuito 47 lógico para incorporar los diversos módulos como se analizó con respecto al decodificador 30 de la FIG. 3 y/o cualquier otro sistema o subsistema decodificador descrito en este documento. En algunos ejemplos, el decodificador 30 de video puede implementarse a través de un circuito lógico que puede incluir una memoria intermedia de imágenes (por ejemplo, a través de la o las unidades 46 de procesamiento o el o los almacenamientos 44 de memoria) y una unidad de procesamiento de gráficos (por ejemplo, a través de la o las unidades 46 de procesamiento). La unidad de procesamiento de gráficos puede estar acoplada comunicativamente a la memoria intermedia de imágenes. La unidad de procesamiento de gráficos puede incluir un decodificador 30 de video implementado a través del circuito 47 lógico para incorporar los diversos módulos como se analizó con respecto a la FIG. 3 y/o cualquier otro sistema o subsistema decodificador descrito en este documento.
En algunos ejemplos, la antena 42 del sistema 40 de codificación de video puede configurarse para recibir un flujo de bits codificado de datos de video. Como se analizó, el flujo de bits codificado puede incluir datos, indicadores, valores de índice, datos de selección de modo o similares asociados con la codificación de un trama de video como se analizó en la presente memoria, tal como datos asociados con la partición de codificación (por ejemplo, coeficientes de transformación o coeficientes de transformación cuantificados, indicadores opcionales (como se analizó), y/o datos que definen la partición de codificación). El sistema 40 de codificación de video también puede incluir un decodificador 30 de video acoplado a la antena 42 y configurado para decodificar el flujo de bits codificado. El dispositivo 45 de visualización está configurado para presentar cuadros de video.
Para facilitar la descripción, las realizaciones de la invención se describen en este documento, por ejemplo, en referencia a la codificación de video de alta eficiencia (HEVC) o al software de referencia de codificación de video versátil (VVC), el estándar de codificación de video de próxima generación desarrollado por el equipo de colaboración conjunta en codificación de video (JCT-VC) del grupo de expertos en codificación de video del UIT-T (VCEG) y del grupo de expertos en fotogramas en movimiento del ISO/IEC (MPEG). Un experto en la técnica comprenderá que las realizaciones de la invención no se limitan a HEVC o WC.
Codificador y método de codificación
La FIG. 2 muestra un diagrama de bloques esquemático de un codificador 20 de video ejemplar que está configurado para implementar las técnicas de la presente solicitud. En el ejemplo de la FIG. 2, el codificador 20 de video comprende una entrada 201 (o interfaz 201 de entrada), una unidad 204 de cálculo residual, una unidad 206 de procesamiento de transformación, una unidad 208 de cuantificación, una unidad 210 de cuantificación inversa y una unidad 212 de procesamiento de transformación inversa, una unidad 214 de reconstrucción, una unidad 220 de filtro de bucle, una memoria intermedia 230 de imágenes decodificadas (DPB), una unidad 260 de selección de modo, una unidad 270 de codificación de entropía y una salida 272 (o interfaz 272 de salida). La unidad 260 de selección de modo puede incluir una unidad 244 de inter predicción, una unidad 254 de intra predicción y una unidad 262 de partición. La unidad 244 de interpredicción puede incluir una unidad de estimación de movimiento y una unidad de compensación de movimiento (no mostrada). Un codificador 20 de video como se muestra en la FIG. 2 también puede denominarse codificador de video híbrido o un codificador de video según un códec de video híbrido.
La unidad 204 de cálculo residual, la unidad 206 de procesamiento de transformación, la unidad 208 de cuantificación, la unidad 260 selección de modo pueden ser referidas para formar una ruta de señal directa del codificador 20, mientras que, por ejemplo, la unidad 210 de cuantificación inversa, la unidad 212 de procesamiento de transformación inversa, la unidad 214 de reconstrucción, la memoria intermdia 216, el filtro 220 de bucle, la memoria intermedia 230 de imágenes decodificadas (DPB), la unidad 244 de inter predicción y la unidad 254 de intra predicción pueden ser refereidas para formar una ruta de señal hacia atrás del codificador 20 de video, en donde la ruta de señal hacia atrás del codificador 20 de video corresponde a la ruta de señal del decodificador (consulte el decodificador 30 de video en la FIG. 3) La unidad 210 de cuantificación inversa, la unidad 212 de procesamiento de transformación inversa, la unidad 214 de reconstrucción, el filtro 220 de bucle, la memoria intermedia 230 de imágenes decodificadas (DPB), la unidad 244 de interpredicción y la unidad 254 de intrapredicción también se denominan "decodificador incorporado" del codificador 20 de video.
Fotogramas y particiones de fotogramas (fotogramas y bloques)
El codificador 20 está configurado para recibir, por ejemplo, por la entrada 201, un fotograma 17 (o datos 17 de fotograma), por ejemplo, un fotograma de una secuencia de fotogramas que forman un video o secuencia de video. El fotograma o los datos de fotograma recibidos también pueden ser un fotograma 19 preprocesado (o datos 19 de fotograma preprocesados). Para simplificar, la siguiente descripción se refiere al fotograma 17. El fotograma 17 también puede denominarse bloque de fotograma actual o bloque de fotograma a codificar (en particular en la codificación de video para distinguir el fotograma actual de otros fotogramas, por ejemplo, fotogramas codificados y/o decodificados previamente de la misma secuencia de video, es decir, la secuencia de video que también comprende el fotograma actual).
Un fotograma (digital) es o puede ser considerado como un conjunto o matriz bidimensional de muestras con valores de intensidad. Una muestra en la matriz también puede denominarse píxel (forma abreviada de elemento de imagen) o pel. El número de muestras en dirección horizontal y vertical (o eje) de la matriz o fotograma define el tamaño y/o resolución del fotograma. Para la representación del color, generalmente se emplean tres componentes de color, es decir, el fotograma puede representarse o incluir tres matrices de muestra. En espacio de color o formato RGB, un fotograma comprende una matriz de muestra roja, verde y azul correspondiente. Sin embargo, en la codificación de video, cada píxel generalmente se representa en un espacio de color o formato de luminancia y crominancia, por ejemplo, YCbCr, que comprende un componente de luminancia indicada por Y (a veces también se usa L en su lugar) y dos componentes de crominancia indicados por Cb y Cr. El componente Y de luminancia (o de forma abreviada, luma) representa el brillo o la intensidad del nivel de grises (por ejemplo, como en un fotograma en escala de grises), mientras que los dos componentes Cby Cr de crominancia (o de forma abreviada, croma) representan los componentes de cromaticidad o información de color. En consecuencia, un fotograma en formato YCbCr comprende una matriz de muestras de luminancia de valores (Y) de muestras de luminancia y dos matrices de muestras de crominancia de valores (Cb y Cr) de crominancia. Los fotogramas en formato RGB se pueden convertir o transformar en formato YCbCr y viceversa, el proceso también se conoce como transformación o conversión de color. Si un fotograma es monocromático, el fotograma puede comprender solo una matriz de muestras de luminancia. En consecuencia, un fotograma puede ser, por ejemplo, una matriz de muestras de luminancia en formato monocromático o una matriz de muestras de luminancia y dos matrices correspondientes de muestras de croma en formato de color 4:2:0, 4:2:2 y 4:4:4.
Las realizaciones del codificador 20 de video pueden comprender una unidad de partición (no representada en la FIG. 2) configurada para dividir el fotograma 17 en una pluralidad de (normalmente no solapados) bloques 203 de fotograma. Estos bloques también pueden denominarse bloques raíz, macrobloques (H.264/AVC) o bloques de árbol de codificación (CTB) o unidades de árbol de codificación (CTU) (H.265/HEVC y WC). La unidad de partición de fotogramas puede configurarse para usar el mismo tamaño del bloque para todos los fotogramas de una secuencia de video y la cuadrícula correspondiente que define el tamaño del bloque, o para cambiar el tamaño del bloque entre fotogramas, subconjuntos o grupos de fotogramas, y dividir cada fotograma en los bloques correspondientes.
En otras realizaciones, el codificador de video puede estar configurado para recibir directamente un bloque 203 del fotograma 17, por ejemplo, uno, varios o todos los bloques que forman el fotograma 17. El bloque 203 de fotograma también puede denominarse bloque de fotograma actual o bloque de fotograma a codificar.
Al igual que el fotograma 17, el bloque 203 de fotograma nuevamente es o puede ser considerado como un conjunto o matriz bidimensional de muestras con valores de intensidad (valores de muestra), aunque de menor dimensión que el fotograma 17. En otras palabras, el bloque 203 puede comprender, por ejemplo, una matriz de muestras (por ejemplo, una matriz de luminancia en el caso de un fotograma 17, o una matriz luminancia o crominancia en el caso de un fotograma en color) o tres matrices de muestras (por ejemplo, una matriz de luminancia y dos matrices de crominancia en el caso de un fotograma 17 en color) o cualquier otro número y/o tipo de matrices dependiendo del formato de color aplicado. El número de muestras en dirección horizontal y vertical (o eje) del bloque 203 define el tamaño del bloque 203. En consecuencia, un bloque puede ser, por ejemplo, una matriz MxN (M columnas por N filas) de muestras, o una matriz MxN de coeficientes de transformación.
Realizaciones del codificador 20 de video, como se muestra en la FIG. 2, pueden configurarse para codificar el fotograma 17 bloque a bloque, por ejemplo, la codificación y la predicción se realizan por bloque 203.
Cálculo residual
La unidad 204 de cálculo residual está configurada para calcular un bloque 205 residual (también referido como residual 205) en función del bloque 203 de fotogramas y de un bloque 265 de predicción (más adelante se proporcionan más detalles sobre el bloque 265 de predicción), por ejemplo, restando los valores de muestra del bloque 265 de predicción de los valores de muestra del bloque 203 de fotogramas, muestra por muestra (píxel por píxel) para obtener el bloque 205 residual en el dominio de la muestra.
Transformación
La unidad 206 de procesamiento de transformación puede estar configurada para aplicar una transformación, por ejemplo, una transformación de coseno discreta (DCT) o una transformación de seno discreta (DST), en los valores de muestra del bloque 205 residual para obtener coeficientes 207 de transformación en un dominio de transformación. Los coeficientes 207 de transformación también pueden denominarse coeficientes residuales de transformación y representan el bloque 205 residual en el dominio de transformación.
La unidad 206 de procesamiento de transformación puede configurarse para aplicar aproximaciones enteras de DCT/DST, tales como las transformaciones especificadas para H.265/HEVC. En comparación con una transformación DCT ortogonal, tales aproximaciones de enteros generalmente se escalan mediante un determinado factor. Para preservar la norma del bloque residual que se procesa mediante transformaciones directas e inversas, se aplican factores de escala adicionales como parte del proceso de transformación. Los factores de escala se eligen generalmente en función de ciertas restricciones, como que los factores de escala sean una potencia de dos para operaciones de desplazamiento, la profundidad de bits de los coeficientes de transformación, el equilibrio entre la precisión y los costes de implementación, etc. Los factores de escala específicos se especifican, por ejemplo, para la transformación inversa, por ejemplo, mediante la unidad 212 de procesamiento de transformación inversa (y la transformación inversa correspondiente, por ejemplo, mediante la unidad 312 de procesamiento de transformación inversa en el decodificador 30 de video) y los factores de escala correspondientes para la transformación directa, por ejemplo, mediante la unidad 206 de procesamiento de transformación, en consecuencia, se puede especificar un codificador 20.
Las realizaciones del codificador 20 de video (respectivamente, la unidad 206 de procesamiento de transformación) pueden configurarse para generar parámetros de transformación, por ejemplo, un tipo de transformación o transformaciones, por ejemplo, directamente o codificadas o comprimidas a través de la unidad 270 de codificación de entropía , de modo que, por ejemplo, el decodificador 30 de video pueda recibir y usar los parámetros de transformación para la decodificación.
Cuantificación
La unidad 208 de cuantificación puede configurarse para cuantificar los coeficientes 207 de transformación para obtener coeficientes 209 cuantificados, por ejemplo, aplicando cuantificación escalar o cuantificación vectorial. Los coeficientes 209 cuantificados también pueden denominarse coeficientes 209 de transformación cuantificados o coeficientes 209 residuales cuantificados.
El proceso de cuantificación puede reducir la profundidad de bits asociada con algunos o todos los coeficientes 207 de transformación. Por ejemplo, un coeficiente de transformación de n bits puede redondearse hacia abajo a un coeficiente de transformación de m bits durante la cuantificación, en donde n es mayor que m. El grado de cuantificación puede modificarse ajustando un parámetro de cuantificación (QP). Por ejemplo, para la cuantificación escalar, se pueden aplicar escalas diferentes para lograr una cuantificación más fina o más gruesa. Los tamaños de los escalones de cuantificación menores corresponden a una cuantificación más fina, mientras que los tamaños de los escalones de cuantificación más grandes corresponden a una cuantificación más gruesa. El tamaño de los escalones de cuantificación aplicables puede indicarse mediante un parámetro de cuantificación (QP). El parámetro de cuantificación puede ser, por ejemplo, un índice de un conjunto predefinido de tamaños de escalones de cuantificación aplicables. Por ejemplo, los parámetros de cuantificación pequeños pueden corresponder a una cuantificación fina (tamaños de escalones de cuantificación pequeños) y los parámetros de cuantificación grandes pueden corresponder a una cuantificación gruesa (tamaños de escalones de cuantificación grandes) o viceversa. La cuantificación puede incluir la división por un tamaño del escalón de cuantificación y una cuantificación inversa correspondiente, por ejemplo, mediante la unidad 210 de cuantificación inversa, puede incluir la multiplicación por el tamaño del escalón de cuantificación. Las realizaciones según algunos estándares, por ejemplo, HEVC, pueden configurarse para usar un parámetro de cuantificación para determinar el tamaño del escalón de cuantificación. Generalmente, el tamaño del escalón de cuantificación puede calcularse en función de un parámetro de cuantificación usando una aproximación de punto fijo de una ecuación que incluye la división. Pueden introducirse factores de escala adicionales para la cuantificación y la decuantificación para restaurar la norma del bloque residual, que podría modificarse debido a la escala usada en la aproximación de punto fijo de la ecuación para el tamaño del escalón de cuantificación y el parámetro de cuantificación. En una implementación ejemplar, se pueden combinar el escalado de la transformación inversa y la decuantificación. Alternativamente, pueden usarse tablas de cuantificación personalizadas y señalarse desde un codificador a un decodificador, por ejemplo, en un flujo de bits. La cuantificación es una operación con pérdida, en la que la pérdida aumenta al aumentar los tamaños de los escalones de cuantificación.
Las realizaciones del codificador 20 de video (respectivamente, la unidad 208 de cuantificación) pueden configurarse para emitir parámetros de cuantificación (QP), por ejemplo, directamente o codificados a través de la unidad 270 de codificación de entropía, de modo que, por ejemplo, el decodificador 30 de video pueda recibir y aplicar los parámetros de cuantificación para la decodificación.
Cuantización inversa
La unidad 210 de cuantificación inversa está configurada para aplicar la cuantificación inversa de la unidad 208 de cuantificación en los coeficientes cuantificados para obtener los coeficientes 211 decuantificados, por ejemplo, aplicando el esquema de cuantificación inverso aplicado por la unidad 208 de cuantificación en función de o usando el mismo tamaño del escalón de cuantificación que la unidad 208 de cuantificación. Los coeficientes 211 decuantificados también pueden denominarse coeficientes 211 residuales decuantificados y corresponden - aunque generalmente no son idénticos a los coeficientes de transformación debido a la pérdida por cuantificación - a los coeficientes 207 de transformación.
Transformada inversa
La unidad 212 de procesamiento de transformación inversa está configurada para aplicar la transformación inversa de la transformación aplicada por la unidad 206 de procesamiento de transformación, por ejemplo, una transformación de coseno discreta inversa (DCT) o una transformación de seno discreta inversa (DST) u otras transformadas inversas, para obtener un bloque 213 residual reconstruido (o coeficientes 213 decuantificados correspondientes) en el dominio de la muestra. El bloque 213 residual reconstruido también puede denominarse bloque 213 de transformación.
Reconstrucción
La unidad 214 de reconstrucción (por ejemplo, sumador 214) está configurada para añadir el bloque 213 de transformación (es decir, el bloque 213 residual reconstruido) al bloque 265 de predicción para obtener un bloque 215 reconstruido en el dominio de la muestra, por ejemplo añadiendo -muestra a muestra- los valores de muestra del bloque 213 residual reconstruido y los valores de muestra del bloque 265 de predicción.
Filtro
La unidad 220 de filtro de bucle (o "filtro de bucle" 220 para abreviar), está configurada para filtrar el bloque 215 reconstruido para obtener un bloque 221 filtrado, o en general, para filtrar muestras reconstruidas para obtener muestras filtradas. La unidad de filtro de bucle está configurada, por ejemplo, para suavizar las transiciones de píxeles o mejorar de otro modo la calidad del video. La unidad 220 de filtro de bucle puede comprender uno o más filtros de bucle, tales como un filtro de desbloqueo, un filtro de desplazamiento adaptativo de muestras (SAO) o uno o más otros filtros, por ejemplo, un filtro bilateral, un filtro de bucle adaptativo (ALF), un filtro de nitidez, de suavizado o un filtro colaborativo, o cualquier combinación de los mismos. Aunque la unidad 220 de filtro de bucle se muestra en la FIG. 2 como un filtro en bucle, en otras configuraciones, la unidad 220 de filtro de bucle puede implementarse como un filtro posterior al bucle. El bloque 221 filtrado también puede denominarse bloque 221 filtrado reconstruido. La memoria intermedia 230 de fotogramas decodificados puede almacenar los bloques de codificación reconstruidos después de que la unidad 220 de filtro de bucle realice las operaciones de filtrado en los bloques de codificación reconstruidos.
Las realizaciones del codificador 20 de video (respectivamente, la unidad 220 de filtro de bucle) pueden configurarse para generar parámetros de filtro de bucle (tales como información de desplazamiento adaptativa de muestra), por ejemplo, directamente o codificados a través de la unidad 270 de codificación de entropía, para que, por ejemplo, un decodificador 30 puede recibir y aplicar los mismos parámetros de filtro de bucle o filtros de bucle respectivos para la decodificación.
Memoria intermedia de fotogramas decodificados
La memoria intermedia 230 de fotogramas decodificados (DPB) puede ser una memoria que almacena fotogramas, o en general datos de fotogramas de referencia para codificar datos de video mediante el codificador 20 de video. El DPB 230 puede estar formado por cualquiera de una variedad de dispositivos de memoria, tales como memoria dinámica de acceso aleatorio (DRAM), incluida la DRAM síncrona (SDRAM), la RAM magnetorresistiva (MRAM), la RAM resistiva (RRAM) u otros tipos de dispositivos de memoria. En algún ejemplo, el memoria intermedia de imágenes decodificadas (DPB) 230 está configurado para almacenar el bloque 221 filtrado. La memoria intermedia 230 de fotogramas decodificados puede configurarse además para almacenar otros bloques previamente filtrados, por ejemplo, bloques 221 previamente reconstruidos y filtrados, del mismo fotograma actual o de diferentes fotogramas, por ejemplo, fotogramas previamente reconstruidos, y puede proporcionar fotogramas completos previamente reconstruidos, es decir, decodificados (y los correspondientes bloques y muestras de referencia) y/o un fotograma actual parcialmente reconstruido (y los correspondientes bloques y muestras de referencia), por ejemplo, para interpredicción. La memoria intermedia 230 de fotogramas decodificados (DPB) también puede configurarse para almacenar uno o más bloques 215 reconstruidos sin filtrar , o en general muestras reconstruidas sin filtrar, por ejemplo, si el bloque reconstruido 215 no es filtrado por la unidad 220 de filtro de bucle, o cualquier otra versión procesada adicionalmente de los bloques o muestras reconstruidos.
Selección de modo (partición y predicción)
La unidad 260 de selección de modo comprende una unidad 262 de partición, una unidad 244 de interpredicción y una unidad 254 de intrapredicción, y está configurada para recibir u obtener datos de fotograma original, por ejemplo, un bloque 203 original (bloque 203 actual del fotograma 17 actual), y datos de fotograma reconstruido, por ejemplo, muestras o bloques reconstruidos filtrados y/o sin filtrar del mismo fotograma (actual) y/o de una o una pluralidad de fotogramas decodificados previamente, por ejemplo, de la memoria intermedia 230 de fotogramas decodificados u otras memorias intermedias (por ejemplo, memoria intermedia de línea, no mostrado). Los datos de fotograma reconstruidos se utilizan como datos de fotograma de referencia para la predicción, por ejemplo, interpredicción o intrapredicción, para obtener un bloque 265 de predicción o un predictor 265.
La unidad 260 de selección de modo puede configurarse para determinar o seleccionar una partición para un modo de predicción de bloque actual (que incluye la no partición) y un modo de predicción (por ejemplo, un modo de intrapredicción o modo de interpredicción) y generar un bloque 265 de predicción correspondiente que es usado para el cálculo del bloque 205 residual y para la reconstrucción del bloque 215 reconstruido.
Las realizaciones de la unidad 260 de selección de modo pueden configurarse para seleccionar la partición y el modo de predicción (por ejemplo, de aquellos soportados por o disponibles para la unidad 260 de selección de modo), que proporciona la mejor coincidencia o, en otras palabras, el residual mínimo (el residual mínimo significa una mejor compresión para la transmisión o almacenamiento) o una sobrecarga de señalización mínima (la sobrecarga de señalización mínima significa una mejor compresión para la transmisión o el almacenamiento), o que considera o equilibra ambos. La unidad 260 de selección de modo puede configurarse para determinar la partición y el modo de predicción en función de la optimización de distorsión de tasa (RDO), es decir, seleccionar el modo de predicción que proporciona una distorsión de tasa mínima. Términos como "mejor", "mínimo", "óptimo", etc. en este contexto no necesariamente se refieren a un "mejor", "mínimo", "óptimo", etc. general, sino que también pueden referirse al cumplimiento de un criterio de terminación o selección como un valor que excede o cae por debajo de un umbral u otras restricciones que conducen potencialmente a una "selección subóptima" pero que reducen la complejidad y el tiempo de procesamiento.
En otras palabras, la unidad 262 de partición puede configurarse para dividir el bloque 203 en subbloques o particiones de bloque más pequeñas (que forman bloques otra vez), por ejemplo, de forma iterativa usando partición de árbol cuádruple (QT), partición binaria (BT) o partición de árbol triple (TT) o cualquier combinación de los mismos, y para realizar, por ejemplo, la predicción para cada una de las particiones de bloque o subbloques, en donde la selección de modo comprende la selección de la estructura de árbol del bloque 203 particionado y los modos de predicción se aplican a cada una de las particiones de bloque o subbloques.
A continuación se explicará con más detalle la partición (por ejemplo, mediante la unidad 260 de partición) y el procesamiento de predicción (mediante la unidad 244 de inter-predicción y la unidad 254 de intra-predicción) realizados por un codificador 20 de video ejemplar.
Partición
La unidad 262 de partición puede particionar (o dividir) un bloque 203 actual en particiones más pequeñas, por ejemplo, bloques más pequeños de tamaño cuadrado o rectangular. Estos bloques más pequeños (que también pueden denominarse subbloques) pueden dividirse en particiones aún más pequeñas. Esto también se denomina partición de árbol o partición de árbol jerárquica, en donde un bloque raíz, por ejemplo, en el nivel de árbol raíz 0 (nivel de jerarquía 0, profundidad 0), puede ser particionado recursivamente, por ejemplo, particionado en dos o más bloques de un nivel de árbol inmediatamente inferior, por ejemplo, nodos en el nivel de árbol 1 (nivel de jerarquía 1, profundidad 1), en donde estos bloques pueden ser nuevamente particionados en dos o más bloques de un nivel inmediatamente inferior, por ejemplo, nivel de árbol 2 (nivel de jerarquía 2, profundidad 2), etc. hasta que la partición finalice, por ejemplo, porque se cumple un criterio de terminación, por ejemplo, se alcanza una profundidad de árbol máxima o un tamaño de bloque mínimo. Los bloques que no están divididos en más partes también se denominan bloques hoja o nodos hoja del árbol. Un árbol que utiliza particiones en dos se denomina árbol binario (BT), un árbol que utiliza particiones en tres particiones se denomina árbol ternario (TT) y un árbol que utiliza particiones en cuatro particiones se denomina árbol cuádruple (QT).
Como se mencionó anteriormente, el término "bloque" como se utiliza aquí puede ser una porción, en particular una porción cuadrada o rectangular, de un fotograma. Con referencia, por ejemplo, a HEVC y VVC, el bloque puede ser o corresponder a una unidad de árbol de codificación (CTU), una unidad de codificación (CU), una unidad de predicción (PU) y una unidad de transformación (TU) y/o a los bloques correspondientes, por ejemplo, un bloque de árbol de codificación (CTB), un bloque de codificación (CB), un bloque de transformación (TB) o un bloque de predicción (PB).
Por ejemplo, una unidad de árbol de codificación (CTU) puede ser o comprender un CTB de muestras de luminancia, dos CTB correspondientes de muestras de crominancia de un fotograma que tiene tres matrices de muestras, o un CTB de muestras de un fotograma monocromática o un fotograma que está codificada utilizando tres planos de color separados y estructuras de sintaxis utilizadas para codificar las muestras. En consecuencia, un bloque de árbol de codificación (CTB) puede ser un bloque NxN de muestras para algún valor de N tal que la división de un componente en CTB es una partición. Una unidad de codificación (CU) puede ser o comprender un bloque de codificación de muestras de luminancia, dos bloques de codificación correspondientes de muestras de crominancia de un fotograma que tiene tres matrices de muestras, o un bloque de codificación de muestras de un fotograma monocromático o un fotograma que está codificado utilizando tres planos de color separados y estructuras de sintaxis utilizadas para codificar las muestras. En consecuencia, un bloque de codificación (CB) puede ser un bloque MxN de muestras para algunos valores de M y N, de modo que la división de un CTB en bloques de codificación es una partición.
En realizaciones, por ejemplo, según HEVC, una unidad de árbol de codificación (CTU) se puede dividir en CU mediante el uso de una estructura de árbol cuádruple denominada árbol de codificación. La decisión de codificar un área de imagen usando predicción inter-fotograma (temporal) o intra-fotograma (espacial) se toma en el nivel de CU. Cada CU se puede dividir en una, dos o cuatro Pu según el tipo de división de PU. Dentro de una PU, se aplica el mismo proceso de predicción y la información relevante se transmite al decodificador en función de la PU. Después de obtener el bloque residual aplicando el proceso de predicción en función del tipo de división de PU, una CU se puede dividir en unidades de transformación (TU) según otra estructura de árbol cuádruple similar al árbol de codificación de la CU.
En realizaciones, por ejemplo, según el último estándar de codificación de video actualmente en desarrollo, al que se hace referencia como Codificación de Video Versátil (VVC), se utiliza la partición de árbol cuádruple y árbol binario (QTBT) para particionar un bloque de codificación. En la estructura de bloques QTBT, una CU puede tener una forma cuadrada o rectangular. Por ejemplo, una unidad de árbol de codificación (CTU) se divide primero mediante una estructura de árbol cuádruple. Los nodos de hoja de árbol cuádruple se dividen además mediante una estructura de árbol binario o ternario (o triple). Los nodos hoja del árbol de partición se denominan unidades de codificación (CU), y que la segmentación se utiliza para la predicción y el procesamiento de transformaciones sin ninguna otra partición. Esto significa que la CU, PU y TU tienen el mismo tamaño del bloque en la estructura de bloques de codificación QTBT. En paralelo, también se propuso usar la partición múltiple, por ejemplo, la partición de árbol triple junto con la estructura de bloques QTBT.
En un ejemplo, la unidad 260 de selección de modo del codificador 20 de video puede configurarse para realizar cualquier combinación de las técnicas de partición descritas anteriormente.
Como se ha descrito anteriormente, el codificador 20 de video está configurado para determinar o seleccionar el modo de predicción mejor u óptimo de un conjunto de modos de predicción (predeterminados). El conjunto de modos de predicción puede comprender, por ejemplo, modos de intrapredicción y/o modos de interpredicción.
Intra-predicción
El conjunto de modos de intrapredicción puede comprender 35 modos de intrapredicción diferentes, por ejemplo, modos no direccionales como el modo DC (o medio) y el modo planar, o modos direccionales, por ejemplo, como se define en HEVC, o puede comprender 67 modos de intrapredicción diferentes, por ejemplo, modos no direccionales como el modo DC (o medio) y el modo planar, o modos direccionales, por ejemplo, como se define para VVC.
La unidad 254 de intrapredicción está configurada para utilizar muestras reconstruidas de bloques vecinos del mismo fotograma actual para generar un bloque 265 de intrapredicción según un modo de intrapredicción del conjunto de modos de intrapredicción.
La unidad 254 de intra predicción (o en general la unidad 260 de selección de modo) está configurada además para emitir parámetros de intra predicción (o en general información indicativa del modo de intra predicción seleccionado para el bloque) a la unidad 270 de codificación de entropía en forma de elementos 266 de sintaxis para su inclusión en los datos 21 de fotograma codificados, de modo que, por ejemplo, el decodificador 30 de video pueda recibir y utilizar los parámetros de predicción para la decodificación.
Inter-predicción
El conjunto de (o posibles) modos de interpredicción depende de los fotogramas de referencia disponibles (es decir, fotogramas anteriores al menos parcialmente decodificados, por ejemplo, almacenados en DPB 230) y otros parámetros de interpredicción, por ejemplo, si se usa el fotograma de referencia completo o solo una parte, por ejemplo, un área de ventana de búsqueda alrededor del área del bloque actual del fotograma de referencia para buscar un bloque de referencia que coincida mejor, y/o por ejemplo, si se aplica la interpolación de píxeles, por ejemplo, interpolación de medio/semipel y/o de cuarto de pel, o no.
Además de los modos de predicción anteriores, se puede aplicar el modo de salto y/o el modo directo.
La unidad 244 de interpredicción puede incluir una unidad de estimación de movimiento (ME) y una unidad de compensación de movimiento (MC) (ambas no mostradas en la FIG. 2). La unidad de estimación de movimiento puede estar configurada para recibir u obtener el bloque 203 de fotograma (bloque 203 de fotograma actual del fotograma 17 actual) y un fotograma 231 decodificado, o al menos uno o una pluralidad de bloques previamente reconstruidos, por ejemplo, bloques reconstruidos de uno o una pluralidad de otros/diferentes fotogramas 231 previamente decodificados, para estimación de movimiento. Por ejemplo, una secuencia de video puede comprender el fotograma actual y los fotogramas 231 previamente decodificados, o en otras palabras, el fotograma actual y los fotogramas 231 previamente decodificados pueden ser parte o formar una secuencia de fotogramas que forman una secuencia de video.
El codificador 20 puede, por ejemplo, configurarse para seleccionar un bloque de referencia de una pluralidad de bloques de referencia de los mismos o diferentes fotogramas de la pluralidad de otros fotogramas y proporcionar un fotograma de referencia (o índice de fotograma de referencia) y/o un desplazamiento (desplazamiento espacial) entre la posición (coordenadas x, y) del bloque de referencia y la posición del bloque actual como parámetros de interpredicción para la unidad de estimación de movimiento. Este desplazamiento también se denomina vector de movimiento (MV).
La unidad de compensación de movimiento está configurada para obtener, por ejemplo, recibir, un parámetro de interpredicción y para realizar una interpredicción en función o usando el parámetro de interpredicción para obtener un bloque 265 de interpredicción. La compensación de movimiento, realizada por la unidad de compensación de movimiento, puede implicar obtener o generar el bloque de predicción en función del vector de movimiento/bloque determinado por la estimación de movimiento, posiblemente realizando interpolaciones con precisión de subpíxel. El filtrado de interpolación puede generar muestras de píxeles adicionales a partir de muestras de píxeles conocidas, aumentando así potencialmente el número de bloques de predicción candidatos que pueden usarse para codificar un bloque de fotograma. Al recibir el vector de movimiento para la PU del bloque de imagen actual, la unidad de compensación de movimiento puede ubicar el bloque de predicción al que apunta el vector de movimiento en una de las listas de fotogramas de referencia.
La unidad de compensación de movimiento también puede generar elementos de sintaxis asociados con los bloques y el segmento de video para su uso por el decodificador 30 de video en la decodificación de los bloques de fotogramas del segmento de video.
Codificación de entropía
La unidad 270 de codificación de entropía está configurada para aplicar, por ejemplo, un algoritmo o esquema de codificación de entropía (por ejemplo, un esquema de codificación de longitud variable (VLC), un esquema de VLC adaptable al contexto (CAVLC), un esquema de codificación aritmética, una binarización, una codificación aritmética binaria adaptable al contexto (CABAC), una codificación aritmética binaria adaptable al contexto basada en sintaxis (SBA<c>), una codificación de entropía de partición de intervalo de probabilidad (PIPE) u otra técnica o metodología de codificación de entropía) o derivación (no compresión) en los coeficientes 209 cuantificados, los parámetros de intrapredicción, un parámetro de intrapredicción, y/o parámetros de filtro de bucle, y/u otros elementos de sintaxis para obtener datos 21 de fotograma codificados que pueden ser emitidos a través de la salida 272, por ejemplo, en forma de un flujo 21 de bits codificados, de forma que, por ejemplo, el codificador 30 de video recibe y usa los parámetros para decodificar. El flujo 21 de bits codificados puede transmitirse al decodificador 30 de video, o almacenarse en una memoria para su posterior transmisión o recuperación mediante el decodificador 30 de video.
Se pueden usar otras variaciones estructurales del codificador 20 de video para codificar el flujo de video. Por ejemplo, un codificador 20 no basado en transformación puede cuantificar la señal residual directamente sin la unidad 206 de procesamiento de transformación para ciertos bloques o tramas. En otra implementación, un codificador 20 puede tener la unidad 208 de cuantificación y la unidad 210 de cuantificación inversa combinadas en una sola unidad.
Decodificador y método de decodificación
La FIG. 3 muestra un ejemplo de un decodificador 30 de video que está configurado para implementar las técnicas de la presente solicitud. El decodificador 30 de video está configurado para recibir datos 21 de fotograma codificados (por ejemplo, un flujo de bits 21 codificado), por ejemplo, codificados por el codificador 20, para obtener un fotograma 331 decodificado. Los datos de fotograma codificados o flujo de bits comprenden información para decodificar los datos de fotograma codificados, por ejemplo, datos que representan bloques de fotograma de un fragmento de video codificado y elementos de sintaxis asociados.
En el ejemplo de la FIG. 3, el decodificador 30 comprende una unidad 304 de decodificación de entropía, una unidad 310 de cuantificación inversa, una unidad 312 de procesamiento de transformación inversa, una unidad 314 de reconstrucción (por ejemplo, un sumador 314), un filtro 320 de bucle, un memoria intermedia 330 de fotogramas decodificados (DPB) una unidad 344 de inter predicción y una unidad 354 de intra predicción. La unidad 344 de inter predicción puede ser o incluir una unidad de compensación de movimiento. El decodificador 30 de video puede, en algunos ejemplos, realizar una etapa de decodificación generalmente recíproca a la etapa de codificación descrita con respecto al codificador 100 de video de la FIG. 2.
Como se explicó con respecto al codificador 20, la unidad 210 de cuantificación inversa, la unidad 212 de procesamiento de transformación inversa, la unidad 214 de reconstrucción, el filtro 220 de bucle, la memoria intermedia 230 de imágenes decodificadas (DPB), la unidad 344 de interpredicción y la unidad 354 de intrapredicción también se denominan como "decodificador incorporado" del codificador 20 de video. En consecuencia, la unidad 310 de cuantificación inversa puede tener una función idéntica a la unidad 110 de cuantificación inversa, la unidad 312 de procesamiento de transformación inversa puede tener una función idéntica a la unidad 212 de procesamiento de transformación inversa, la unidad 314 de reconstrucción puede tener una función idéntica a la unidad 214 de reconstrucción, el filtro 320 de bucle puede tener una función idéntica al filtro 220 de bucle, y el memoria intermedia 330 de fotogramas decodificados puede tener una función idéntica a la memoria intermedia 230 de fotogramas decodificados. Por lo tanto, las explicaciones proporcionadas para las respectivas unidades y funciones del codificador 20 de video se aplican correspondientemente a las respectivas unidades y funciones del decodificador 30 de video.
Decodificación de la entropía
La unidad 304 de decodificación de entropía está configurada para analizar el flujo de bits 21 (o en general datos 21 de fotogramas codificados) y realizar, por ejemplo, la decodificación de entropía de los datos 21 de fotograma codificados para obtener, por ejemplo, los coeficientes 309 cuantificados y/o parámetros de codificación decodificados (no mostrados en la FIG. 3), por ejemplo alguno o todos los parámetros de interpredicción (por ejemplo, índice de fotograma de referencia y vector de movimiento), parámetro de intrapredicción (por ejemplo, modo de intra predicción o índice) parámetros de transformación, parámetros de cuantificación, parámetros de filtro de bucle, y/u otros elementos de sintaxis. La unidad 304 de decodificación de entropía puede estar configurada para aplicar los algoritmos o esquemas de decodificación correspondientes a los esquemas de codificación como se describe con respecto a la unidad 270 de codificación de entropía del codificador 20. La unidad 304 de decodificación de entropía puede estar configurada además para proporcionar parámetros de interpredicción, parámetro de intrapredicción y/u otros elementos de sintaxis a la unidad 360 de selección de modo y otros parámetros a otras unidades del decodificador 30. El decodificador 30 de video puede recibir los elementos de sintaxis en el nivel de segmento de video y/o el nivel de bloque de video.
Cuantización inversa
La unidad 310 de cuantificación inversa puede estar configurada para recibir parámetros de cuantificación (QP) (o en general información relacionada con la cuantificación inversa) y coeficientes cuantificados de los datos 21 de fotograma codificados (por ejemplo, mediante análisis y/o decodificación, por ejemplo, mediante la unidad 304 de decodificación de entropía ) y para aplicar en función de los parámetros de cuantificación una cuantificación inversa sobre los coeficientes 309 cuantificados decodificados para obtener coeficientes 311 decuantificados, que también pueden denominarse coeficientes 311 de transformación . El proceso de cuantificación inversa puede incluir el uso de un parámetro de cuantificación determinado por el codificador 20 de video para cada bloque de video en el segmento de video para determinar un grado de cuantificación y, asimismo, un grado de cuantificación inversa que debe aplicarse.
Transformada inversa
La unidad 312 de procesamiento de transformada inversa puede estar configurada para recibir coeficientes 311 decuantificados, también denominados coeficientes 311 de transformada , y para aplicar una transformada a los coeficientes 311 decuantificados para obtener bloques 213 residuales reconstruidos en el dominio de muestra. Los bloques 213 residuales reconstruidos también puede denominarse bloques 313 de transformación. La transformación puede ser una transformación inversa, por ejemplo, una DCT inversa, una DST inversa, una transformación entera inversa o un proceso de transformación inversa conceptualmente similar. La unidad 312 de procesamiento de transformación inversa puede configurarse además para recibir parámetros de transformación o información correspondiente de los datos 21 de fotograma codificados (por ejemplo, mediante análisis y/o decodificación, por ejemplo, mediante la unidad 304 de decodificación de entropía) para determinar la transformación que se aplicará a los coeficientes 311 decuantificados.
Reconstrucción
La unidad 314 de reconstrucción (por ejemplo, el sumador 314) puede estar configurada para añadir el bloque 313 residual reconstruido al bloque 365 de predicción para obtener un bloque 315 reconstruido en el dominio de la muestra, por ejemplo, sumando los valores de muestra del bloque 313 residual reconstruido y los valores de muestra del bloque 365 de predicción.
Filtro
La unidad 320 de filtro de bucle (ya sea en el bucle de codificación o después del bucle de codificación) está configurada para filtrar el bloque 315 reconstruido para obtener un bloque 321 filtrado, por ejemplo, para suavizar las transiciones de píxeles o de otro modo mejorar la calidad del video. La unidad 320 de filtro de bucle está destinada a representar uno o más filtros de bucle, tal como un filtro de desbloqueo, un filtro de desplazamiento adaptativo de muestra (SAO) u otros filtros, por ejemplo, un filtro bilateral o un filtro de bucle adaptativo (ALF) o un filtro de nitidez o filtros de suavizado o filtros colaborativos. Aunque la unidad 320 de filtro de bucle se muestra en la FIG. 3 como un filtro de bucle, en otras configuraciones, la unidad 320 de filtro de bucle puede implementarse como un filtro posterior al bucle.
Memoria intermedia de fotogramas decodificados
Los bloques 321 de video decodificados en un fotograma se almacenan luego en la memoria intermedia 330 de fotogramas decodificados, que almacena fotogramas 331 decodificados como fotogramas de referencia para la compensación de movimiento posterior para cualquier fotograma y/o para salida o visualización respectivamente.
El decodificador 30 está configurado para emitir el fotograma 311 decodificado, por ejemplo, a través de la salida 312, para presentación o visualización a un usuario.
Predicción
La unidad 344 de interpredicción puede ser idéntica a la unidad 244 de interpredicción (en particular a la unidad de compensación de movimiento) y la unidad 354 de intrapredicción puede ser idéntica a la unidad de 254 interpredicción en función, y realiza decisiones de división o partición y predicción basadas en los parámetros de partición y/o predicción o la información respectiva recibida de los datos 21 de fotograma codificados (por ejemplo, mediante análisis y/o decodificación, por ejemplo, mediante la unidad 304 de decodificación de entropía). La unidad 360 de selección de modo puede configurarse para realizar la predicción (intra o inter predicción) por bloque basándose en fotogramas reconstruidos, bloques o muestras respectivas (filtradas o sin filtrar) para obtener el bloque 365 de predicción.
Cuando el segmento de video se codifica como un segmento intracodificado (I), la unidad 354 de intrapredicción de la unidad 360 de selección de modo está configurada para generar el bloque 365 de predicción para un bloque de imagen del segmento de video actual en función de un modo de intrapredicción señalado y datos de bloques previamente decodificados del fotograma actual. Cuando el fotograma de video se codifica como un segmento intercodificado (es decir, B o P), la unidad 344 de interpredicción (por ejemplo, la unidad de compensación de movimiento) de la unidad 360 de selección de modo está configurada para producir bloques 365 de predicción para un bloque de video del segmento de video actual en función de los vectores de movimiento y otros elementos de sintaxis recibidos de la unidad 304 de decodificación de entropía. Para la interpredicción, los bloques de predicción pueden generarse a partir de uno de los fotogramas de referencia dentro de una de las listas de fotogramas de referencia. El decodificador 30 de video puede construir las listas de tramas de referencia, Lista 0 y Lista 1, usando técnicas de construcción predeterminadas en función de fotogramas de referencia almacenados en DPB 330.
La unidad 360 de selección de modo está configurada para determinar la información de predicción para un bloque de video del segmento de video actual analizando los vectores de movimiento y otros elementos de sintaxis, y usa la información de predicción para producir los bloques de predicción para el bloque de video actual que se está decodificando. Por ejemplo, la unidad 360 de selección de modo usa algunos de los elementos de sintaxis recibidos para determinar un modo de predicción (por ejemplo, intrapredicción o interpredicción) usado para codificar los bloques de video del segmento de video, un tipo de segmento de interpredicción (por ejemplo, segmento B, segmento P o segmento GPB), información de construcción para una o más de las listas de fotogramas de referencia para el segmento, vectores de movimiento para cada bloque de video intercodificado del segmento, estado de interpredicción para cada bloque de video intercodificado del segmento, y otra información para decodificar los bloques de video en el segmento de video actual.
Se pueden usar otras variaciones del decodificador 30 de video para decodificar los datos 21 de fotogramas codificados. Por ejemplo, el decodificador 30 puede producir el flujo de video de salida sin la unidad 320 de filtrado de bucle. Por ejemplo, un codificador 30 no basado en transformación puede cuantificar de forma inversa la señal residual directamente sin la unidad 312 de procesamiento de transformación inversa para ciertos bloques o tramas. En otra implementación, el decodificador 30 de video puede tener la unidad 310 de cuantificación inversa y la unidad 312 de procesamiento de transformación inversa combinadas en una sola unidad.
La FIG. 4 es un diagrama esquemático de un dispositivo 400 de codificación de video según una realización de la descripción. El dispositivo 400 de codificación de video es adecuado para implementar las realizaciones descritas como se describen en este documento. En una realización, el dispositivo 400 de codificación de video puede ser un decodificador tal como el decodificador 30 de video de la FIG. 1A o un codificador tal como el codificador 20 de video de la FIG. 1A.
El dispositivo 400 de codificación de video comprende puertos 410 de ingreso (o puertos 410 de entrada) y unidades 420 receptoras (Rx) para recibir datos; un procesador, unidad lógica o unidad 430 central de procesamiento (CPU) para procesar los datos; unidades 440 de transmisión (Tx) y puertos 450 de egreso (o puertos 450 de salida) para transmitir los datos; y una memoria 460 para almacenar los datos. El dispositivo 400 de codificación de video también puede comprender componentes ópticos a eléctricos (OE) y componentes eléctricos a ópticos (EO) acoplados a los puertos 410 de entrada, unidades 420 de recepción, unidades 440 de transmisión y puertos 450 de salida para la salida o entrada de señales ópticas o eléctricas.
El procesador 430 está implementado por hardware y software. El procesador 430 puede implementarse como uno o más chips de CPU, núcleos (por ejemplo, como un procesador multinúcleo), FPGA, ASIC y DSP. El procesador 430 está en comunicación con el puerto 410 de entrada, la unidad 420 de recepción, la unidad 440 de transmisión, los puertos 450 de salida y la memoria 460. El procesador 430 comprende un módulo 470 de codificación. El módulo 470 de codificación implementa las realizaciones descritas anteriormente. Por ejemplo, el módulo 470 de codificación implementa, procesa, prepara o proporciona las diversas operaciones de codificación. La inclusión del módulo 470 de codificación por lo tanto proporciona una mejora sustancial a la funcionalidad del dispositivo 400 de codificación de video y efectúa una transformación del dispositivo 400 de codificación de video a un estado diferente. De manera alternativa, el módulo 470 de codificación se implementa como instrucciones almacenadas en la memoria 460 y ejecutadas por el procesador 430.
La memoria 460 puede comprender uno o más discos, unidades de cinta y unidades de estado sólido y puede ser usada como un dispositivo de almacenamiento de datos en exceso, para almacenar programas cuando tales programas se seleccionan para su ejecución y para almacenar instrucciones y datos que se leen durante la ejecución del programa. La memoria 460 puede ser, por ejemplo, volátil o no volátil y puede ser memoria de solo lectura (ROM), memoria de acceso aleatorio (RAM), memoria ternaria de contenido direccionable (TCAM), y/o memoria estática de acceso aleatorio (SRAM).
La FIG. 5 es un diagrama de bloques simplificado de un aparato 500 que se puede usar como dispositivo 12 de origen y dispositivo 14 de destino de la FIG. 1A, o como ambos, según una realización ejemplar. El aparato 500 puede implementar técnicas de esta presente solicitud descritas anteriormente. El aparato 500 puede tener la forma de un sistema informático que incluya múltiples dispositivos informáticos, o la forma de un solo dispositivo informático, por ejemplo, un teléfono móvil, una tableta, una ordenador portátil, un portátil, un ordenador de escritorio, y similares.
Un procesador 502 en el aparato 500 puede ser una unidad central de procesamiento. Alternativamente, el procesador 502 puede ser cualquier otro tipo de dispositivo, o múltiples dispositivos, capaces de manipular o procesar información existente en la actualidad o desarrollada en el futuro. Aunque las implementaciones descritas se pueden practicar con un solo procesador como se muestra, por ejemplo, el procesador 502, se pueden lograr ventajas en velocidad y eficiencia usando más de un procesador.
Una memoria 504 en el aparato 500 puede ser un dispositivo de memoria de solo lectura (ROM) o un dispositivo de memoria de acceso aleatorio (RAM) en una implementación. Cualquier otro tipo adecuado de dispositivo de almacenamiento se puede usar como memoria 504. La memoria 504 puede incluir código y datos 506 a los que accede el procesador 502 usando un bus 512. La memoria 504 puede incluir además un sistema operativo 508 y programas 510 de aplicación, incluyendo los programas 510 de aplicación al menos un programa que permita al procesador 502 realizar los métodos descritos aquí. Por ejemplo, los programas 510 de aplicación pueden incluir las aplicaciones 1 a N, que además incluyen una aplicación de codificación de video que realiza los métodos descritos aquí. El aparato 500 también puede incluir memoria adicional en la forma de un almacenamiento 514 secundario, que puede ser, por ejemplo, una tarjeta de memoria usada con un dispositivo informático móvil. Debido a que las sesiones de comunicación de video pueden contener una cantidad significativa de información, pueden almacenarse total o parcialmente en el almacenamiento 514 secundario 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. La pantalla 518 puede ser, en un ejemplo, una pantalla sensible al tacto que combina una pantalla con un elemento sensible al tacto que puede funcionar para detectar entradas táctiles. La pantalla 518 se puede acoplar al procesador 502 a través del bus 512. 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 una alternativa a la pantalla 518. Cuando el dispositivo de salida es o incluye una pantalla, la pantalla se puede implementar de diversas maneras, incluyendo mediante una pantalla de cristal líquido (LCD), una pantalla de tubo de rayos catódicos (CRT), una pantalla de plasma o una pantalla de diodo emisor de luz (LED), tal como una pantalla LED orgánica (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 existente ahora o desarrollado en el futuro que pueda detectar una imagen tal como la imagen de un usuario que opera el aparato 500. El dispositivo 520 de detección de imágenes se puede colocar de manera que esté dirigido hacia el usuario que opera el aparato 500. En un ejemplo, la posición y el eje óptico del dispositivo 520 de detección de imágenes pueden configurarse de manera que el campo de visión incluya un área que está directamente adyacente a la pantalla 518 y desde la cual es visible la pantalla 518.
El aparato 500 también puede incluir o estar en comunicación con un dispositivo 522 de detección de sonido, por ejemplo, un micrófono, o cualquier otro dispositivo de detección de sonido existente ahora o desarrollado en el futuro que pueda detectar sonidos cerca del aparato 500. El dispositivo 522 de detección de sonido se puede colocar de manera que se dirija hacia el usuario que opera el aparato 500 y se puede configurar para recibir sonidos, por ejemplo, habla u otras expresiones, realizadas por el usuario mientras opera el aparato 500.
Aunque la FIG. 5 representa el procesador 502 y la memoria 504 del aparato 500 integrados en una sola unidad, se pueden utilizar otras configuraciones. Las operaciones del procesador 502 pueden distribuirse entre múltiples máquinas (cada máquina tiene uno o más procesadores) que pueden acoplarse directamente o a través de un red área local u otra red. La memoria 504 se puede distribuir entre varias máquinas, tales como una memoria basada en red o una memoria en múltiples máquinas que realizan las operaciones del aparato 500. Aunque representado aquí como un solo bus, el bus 512 del aparato 500 puede estar compuesto por múltiples buses. Además, el almacenamiento 514 secundario se puede acoplar directamente a los otros componentes del aparato 500 o se puede acceder a él a través de una red y puede comprender una única unidad integrada, tal como una tarjeta de memoria, o múltiples unidades, tales como varias tarjetas de memoria. Por lo tanto, el aparato 500 puede implementarse en una amplia variedad de configuraciones.
Los esquemas de codificación de video como H.264/AVC y HEVC están diseñados según el exitoso principio de codificación de video híbrida basada en bloques. Utilizando este principio, primero se divide una imagen en bloques y luego se predice cada bloque mediante intra predicción-fotograma o inter-predicción-fotograma.
Como se usa en este documento, el término "bloque" puede ser una parte de un fotograma o un cuadro. Para facilitar la descripción, las realizaciones de la invención se describen en este documento en referencia a la codificación de video de alta eficiencia (HEVC) o al software de referencia de codificación de video versátil (VVC), desarrollado por el equipo de colaboración conjunta en codificación de video (JCT-VC) del grupo de expertos en codificación de video del UIT-T (VCEG) y del grupo de expertos en fotogramas en movimiento del ISO/IEC (MPEG). Un experto en la técnica comprenderá que las realizaciones de la invención no se limitan a HEVC o WC. Puede referirse a una CU, PU y TU. En HEVC, una CTU se divide en CU usando una estructura de árbol cuádruple denominada árbol de codificación. La decisión de codificar un área de imagen usando predicción inter-fotograma (temporal) o intra-fotograma (espacial) se toma en el nivel de CU. Cada CU se puede dividir en una, dos o cuatro PU según el tipo de división de PU. Dentro de una PU, se aplica el mismo proceso de predicción y la información relevante se transmite al decodificador en función de la PU. Después de obtener el bloque residual aplicando el proceso de predicción en función del tipo de división de PU, una CU se puede dividir en unidades de transformación (TU) según otra estructura de árbol cuádruple similar al árbol de codificación de la CU. En el desarrollo más reciente de la técnica de compresión de video, la partición árbol cuádruple y árbol binario (QTBT) se usa para dividir un bloque de codificación. En la estructura de bloques QTBT, una CU puede tener una forma cuadrada o rectangular. Por ejemplo, una unidad de árbol de codificación (CTU) se divide primero mediante una estructura de árbol cuádruple. Los nodos de hoja de árbol cuádruple se dividen además mediante una estructura de árbol binario. Los nodos de hoja del árbol binario se denominan unidades de codificación (CU), y esa segmentación se usa para el procesamiento de predicción y transformación sin ninguna otra partición. Esto significa que la CU, PU y TU tienen el mismo tamaño del bloque en la estructura de bloques de codificación QTBT. En paralelo, también se propuso usar la partición múltiple, por ejemplo, la partición de árbol triple junto con la estructura de bloques QTBT.
ITU-T VCEG (Q6/16) e ISO/IEC MPEG (JTC 1/SC 29/WG 11) están estudiando la posible necesidad de estandarización de la futura tecnología de codificación de video con una capacidad de compresión que supere significativamente la del estándar HEVC actual (incluidas sus extensiones actuales y extensiones a corto plazo para la codificación de contenido de pantalla y la codificación de alto rango dinámico). Los grupos están trabajando juntos en esta actividad de exploración en un esfuerzo de colaboración conjunto conocido como Equipo Conjunto de Exploración de Video (JVET) para evaluar los diseños de tecnología de compresión propuestos por sus expertos en esta área.
Para la intra predicción direccional, están disponibles modos de intra predicción que representan diferentes ángulos de predicción, desde diagonal hacia arriba hasta diagonal hacia abajo. Para definir los ángulos de predicción, se define un valor de desplazamiento p<ang>en una cuadrícula de 32 muestras. La asociación de p<ang>al modo de intra predicción correspondiente se visualiza en la FIG. 6 para los modos de predicción vertical. Para los modos de predicción horizontal, el esquema se invierte a la dirección vertical y los valores p<ang>se asignan en consecuencia. Como se indicó anteriormente, todos los modos de predicción angular están disponibles para todos los tamaños de bloque de intra predicción aplicables. Todos utilizan la misma cuadrícula de 32 muestras para la definición de los ángulos de predicción. La distribución de los valoresp<ang>sobre la cuadrícula de 32 muestras en la FIG. 6 revela una mayor resolución de los ángulos de predicción alrededor de la dirección vertical y una resolución más gruesa de los ángulos de predicción hacia las direcciones diagonales. Lo mismo se aplica a las direcciones horizontales. Este diseño surge de la observación de que en muchos contenidos de video, las estructuras aproximadamente horizontales y verticales juegan un papel importante en comparación con las estructuras diagonales.
Mientras que para las direcciones de predicción horizontal y vertical, la selección de muestras a utilizar para la predicción es sencilla, esta tarea requiere más esfuerzo en el caso de la predicción angular. Para los modos 11-25, al predecir el bloque actual Bc a partir del conjunto de muestras de predicción p<ref>(también conocido comolado de referencia principal)en una dirección angular, pueden participar muestras tanto de la parte vertical como de la horizontal de p<ref>. Dado que la determinación de la ubicación de las respectivas muestras en cualquiera de las ramas de p<ref>requiere cierto esfuerzo computacional, se ha diseñado una referencia de predicción unidimensional unificada para la intra predicción HEVC. El esquema se visualiza en la FIG. 7. Antes de realizar la operación de predicción real, el conjunto de muestras de referencia p<ref>se asigna a un vector unidimensional p<1,ref>. La proyección que se utiliza para la correspondencia depende de la dirección indicada por el ángulo de intra predicción del modo de intra predicción respectivo. Sólo las muestras de referencia de la parte de p<ref>que se utilizará para la predicción se asignan a p<v e f>. La correspondencia real de las muestras de referencia a p<1,ref>para cada modo de predicción angular se representa en las FIG. 8 y 9 para direcciones de predicción angular horizontal y vertical, respectivamente. El conjunto de muestras de referencia p<1,ref>se construye una vez para el bloque predicho. Luego, la predicción se deriva de dos muestras de referencia vecinas en el conjunto, como se detalla a continuación. Como se puede ver en las FIG. 8 y 9, el conjunto de muestras de referencia unidimensional no está completamente lleno para todos los modos de intra predicción. Sólo se incluyen en el conjunto las ubicaciones que están dentro del rango de proyección para la dirección de intra predicción correspondiente.
La predicción para ambos modos de predicción, horizontal y vertical, se realiza de la misma manera, intercambiando únicamente las coordenadas x e y del bloque. La predicción de p<1,ref>se realiza con una precisión de 1/32 pel. Dependiendo del valor del parámetro angular pang, se determinan un desplazamiento de muestra i<idx>en p<v e f>y un factor de ponderación i<fact>para una muestra en la posición(x, y).Aquí se proporciona la derivación de los modos verticales. La derivación para los modos horizontales se realiza en consecuencia, intercambiando x e y.
üd* = (y I) •l- ~ .i fací — [(y 1) • />anS] mod32.
Si i<fact>i no es igual a 0, es decir, la predicción no cae exactamente en una ubicación de muestra completa en p<1,ref>, se realiza una ponderación lineal entre las dos ubicaciones de muestra vecinas en p<v e f>como
con 0 < x,y<Nc.Se debe tener en cuenta que los valores de i<idx>e i<de hecho>solo dependen deyy, por lo tanto, solo es necesario calcularlos una vez por fila (para los modos de predicción vertical).
El VTM-1.0 (modelo de prueba versátil) utiliza 35 modos Intra mientras que el BMS (conjunto de referencia) utiliza 67 modos Intra. La intrapredicción es un mecanismo utilizado en muchos marcos de codificación de video para aumentar la eficiencia de la compresión en los casos en los que solo puede participar un fotograma determinado.
La FIG. 10A muestra un ejemplo de 67 modos de intra predicción, por ejemplo, como se propone para VVC, la pluralidad de modos de intra predicción de 67 modos de intra predicción que comprenden: modo planar (índice 0), modo dc (índice 1) y modos angulares con índices 2 a 66, en donde el modo angular inferior izquierdo en la FIG. 10A se refiere al índice 2 y la numeración de los índices se incrementa hasta que el índice 66 es el modo angular superior más a la derecha de la FIG. 10A.
Como se muestra en las FIGS. 10B-10C, la última versión de JEM tiene algunos modos correspondientes a direcciones de intra predicción sesgadas. Para cualquiera de estos modos, para predecir muestras dentro de un bloque, se debe realizar una interpolación de un conjunto de muestras de referencia vecinas, si una posición correspondiente dentro de un lado del bloque es fraccionaria. HEVC y VVC utilizan una interpolación lineal entre dos muestras de referencia adyacentes. JEM utiliza filtros de interpolación de 4 toques más sofisticados. Los coeficientes de filtro se seleccionan para que sean gaussianos o cúbicos según el valor del ancho o de la altura. La decisión sobre si utilizar ancho o alto se armoniza con la decisión sobre la selección del lado de referencia principal: cuando el modo de intra predicción es mayor o igual que el modo diagonal, se selecciona el lado superior de las muestras de referencia como lado de referencia principal y se selecciona el valor de ancho para determinar el filtro de interpolación en uso. De lo contrario, el lado de referencia principal se selecciona desde el lado izquierdo del bloque y la altura controla el proceso de selección del filtro. Específicamente, si la longitud del lado seleccionado es menor o igual a 8 muestras, se aplica la interpolación cúbica de 4 toques. De lo contrario, el filtro de interpolación es gaussiano de 4 toques.
Los coeficientes de filtro específicos utilizados en JEM se dan en la Tabla 1. La muestra predicha se calcula mediante convolución con coeficientes seleccionados de la Tabla 1 según el desplazamiento de subpíxeles y el tipo de filtro de la siguiente manera:
s(* ) = (E¡ío(ref i * i ' c<) 128) » 8
En esta ecuación, "»" indica una operación de desplazamiento a la derecha bit a bit.
Si se selecciona el filtro cúbico, la muestra predicha se recorta aún más al rango permitido de valores, que se define en SPS o se deriva de la profundidad de bits del componente seleccionado.
Tabla 1. Filtros de interpolación de intra predicción utilizados en JEM
Otro conjunto de filtros de interpolación que tienen una precisión de 6 bits se presenta en la Tabla 2. Tabla 2: Un conjunto de filtros de interpolación con precisión de 6 bits
La muestra intrapredicha se calcula mediante convolución con coeficientes seleccionados de la Tabla 2 según el desplazamiento de subpíxeles y el tipo de filtro de la siguiente manera:
i<«
s(*) = (£ ( re f l+x-c,) 32) » 6
M
En esta ecuación, "»" indica una operación de desplazamiento a la derecha bit a bit.
Otro conjunto de filtros de interpolación que tienen una precisión de 6 bits se presenta en la Tabla 3.
Tabla 3: Un conjunto de filtros de interpolación con precisión de 6 bits
La FIG. 11 ilustra un diagrama esquemático de una pluralidad de modos de intra predicción utilizados en el esquema HEVC UIP. Para los bloques de luminancia, los modos de intra predicción pueden comprender hasta 36 modos de intra predicción, que pueden incluir tres modos no direccionales y 33 modos direccionales. Los modos no direccionales pueden comprender un modo de predicción planar, un modo de predicción media (DC) y un modo de predicción de crominancia a partir de luminancia (LM). El modo de predicción planar puede realizar predicciones asumiendo una superficie de amplitud de bloque con una pendiente horizontal y vertical derivada del límite del bloque. El modo de predicción DC puede realizar predicciones asumiendo una superficie de bloque plana con un valor que coincide con el valor medio del límite del bloque. El modo de predicción LM puede realizar predicciones asumiendo que un valor de croma para el bloque coincide con el valor de luminancia para el bloque. Los modos direccionales pueden realizar predicciones basadas en bloques adyacentes como se muestra en la FIG. 11.
H.264/AVC y HEVC especifican que se podría aplicar un filtro de paso bajo a muestras de referencia antes de usarse en el proceso de intra predicción. La decisión de utilizar o no un filtro de muestra de referencia está determinada por el modo de intra predicción y el tamaño del bloque. Este mecanismo puede denominarse suavizado intramodo dependiente del modo (MDIS). También existe una pluralidad de métodos relacionados con MDIS. Por ejemplo, el método de suavizado de muestras de referencia adaptativo (ARSS) puede señalar de manera explícita (es decir, se incluye un indicador en un flujo de bits) o implícita (es decir, por ejemplo, se utiliza la ocultación de datos para evitar colocar un indicador en un flujo de bits para reducir la sobrecarga de señalización) si las muestras de predicción están filtradas. En este caso, el codificador puede tomar la decisión sobre el suavizado probando el costo de tasa de distorsión (RD) para todos los modos de intra predicción potenciales.
En VVC, se utiliza un mecanismo de partición basado tanto en árbol cuádruple como en árbol binario y conocido como QTBT. Como se muestra en la FIG. 12, la partición QTBT puede proporcionar no sólo bloques cuadrados sino también rectangulares. Por supuesto, una cierta sobrecarga de señalización y una mayor complejidad computacional en el lado del codificador son el precio de la partición QTBT en comparación con la partición convencional basada en árboles cuádruples utilizada en el estándar HEVC/H.265. Sin embargo, la partición basada en QTBT está dotada de mejores propiedades de segmentación y, por lo tanto, demuestra una eficiencia de codificación significativamente mayor que el árbol cuádruple convencional.
Las hojas de los árboles utilizados para la partición se procesan en un orden de escaneo Z, de modo que el bloque actual correspondiente a la hoja actual tendrá bloques vecinos a la izquierda y por encima que ya se reconstruyeron durante los procesos de codificación o decodificación, a menos que el bloque actual esté ubicado en el límite del segmento. Esto también se ilustra en la FIG. 12. El escaneo de izquierda a derecha de las hojas del árbol que se muestra en la parte derecha de la FIG. 12 corresponde al orden de escaneo Z espacial de los bloques que se muestran en la parte derecha de esta figura. El mismo escaneo se aplica en el caso de árboles de cuatro árboles o de varios tipos.
Para la intra predicción direccional, se obtienen muestras de referencia de las muestras de los bloques vecinos previamente reconstruidos. Dependiendo del tamaño del bloque y del modo de intra predicción, se podría aplicar un filtro a las muestras de referencia antes de utilizarlas para obtener valores de muestras predichas.
En el caso de suavizado de límites y PDPC, varias primeras columnas o varias primeras filas del bloque predicho se combinan con la señal de predicción adicional generada a partir de las muestras vecinas.
Cuando se realiza una intra predicción utilizando el modo de intra predicción horizontal (por ejemplo, como se ilustra en la FIG. 10C como modo 18), las muestras de referencia del lado izquierdo del bloque predicho se replican columna por columna, de modo que todas las muestras dentro de una fila se establecen como iguales a la muestra de referencia ubicada en esta fila en el lado izquierdo del bloque predicho.
Cuando se realiza una intra predicción utilizando el modo de intra predicción vertical (por ejemplo, como se ilustra en la FIG. 10C como modo 50), las muestras de referencia del lado superior del bloque predicho se replican fila por fila, de modo que todas las muestras dentro de una columna se establecen como iguales a la muestra de referencia ubicada en esta columna en el lado superior del bloque predicho.
En [A. Minezawa, K. Sugimoto y S. Sekiguchi, "An improved intra vertical and horizontal prediction", contribución JCTVC-F172 a la 6.a reunión JCT-VC, Turín, Italia, julio de 2011], el proceso de derivación para los modos de intra predicción vertical y horizontal se especifica de la siguiente manera:
Predicción vertical:
Predicción horizontal:
S'(<jc.>y) = S ( -<1.>y) (S(x .- \) - S(-<1 - 1» / 2 ' * '>
en donde (x,y) indica la posición de la muestra de predicción en un bloque de predicción de luminancia como se muestra en la FIG. 13A,S'(x, y)denota muestras predichas yS(x, y)denota la muestra de referencia que se utilizará para la predicción convencional.
Dado que el valor deS'(x,y)puede caer fuera del rango de los valorespminmínimo ypmaxmáximo de una muestra predicha, se debe aplicar una función de recorte, por ejemplo, de la siguiente manera:
S"(*.y) =CUp3(pMIH,pMM,S‘(x,y))l
en donde Clip3() es una función de recorte. A continuación se ofrece una definición ejemplar de esta función.
Para una muestra predicha S(x, y) una muestra de referencia más cercana ubicada por encima de la muestra predicha podría especificarse como S(x, -1). Esta muestra de referencia más cercana se encuentra en la misma columna que la muestra predicha.
De manera similar, la muestra de referencia más cercana ubicada a la izquierda de la muestra predicha podría especificarse como S(-1, y). Esta muestra de referencia más cercana se encuentra en la misma fila que la muestra predicha.
La implementación particular de PDPC simplificado podría realizarse de manera diferente, dependiendo del modo de intra predicción:
Para los modos de intra predicción planar, DC, HOR/VER (indicados como 0, 1, 18, 50 respectivamente en la FIG. 10B y la FIG. 10C), se realizan los siguientes pasos:
La muestra predichaP(x, y)ubicada en (x, y) se calcula de la siguiente manera:
en donde R<x, - 1>, R<-1, y>representan las muestras de referencia ubicadas en la parte superior e izquierda de la muestra actual (x, y), y R<1, -1>representa la muestra superior izquierda, es decir, una muestra de referencia ubicada en la esquina superior izquierda del bloque actual, la función clip1Cmp se establece de la siguiente manera:
- Si cldx es igual a 0, clip1Cmp se establece igual a Clip1Y.
- De lo contrario, clip1Cmp se establece igual a Clip1C
Cliplv( x ) • Cliptr 0.(1 << BidX-pihy ) - I. x )
ClipM x ) - Cliptr 0. ( I « BuDcpüv ) - i. x >
Z < X
z> y
si no
BitDepth<Y>es la profundidad de bits de las muestras de luminancia.
BitDepth<c>es la profundidad de bits de las muestras de crominancia.
Bitüepth<y>y BitDepth<c>podrían señalizarse en el conjunto de parámetros de secuencia (SPS) de un flujo de bits;
Son posibles definiciones alternativas de Clip1Y( x ) y Clip1C( x ). En particular, como lo describen F. Galpin, P. Bordes y F. Le Léannec en la contribución JVET-C0040 "Adaptative Clipping in JEM2.0",Clip1Cmp(x)=Clip3( mine , maxc ,x),
en dondeminees el límite de recorte inferior utilizado en el segmento actual para el ID del componente C,
maxces el límite de recorte superior utilizado en el segmento actual para el ID del componente C,
C es un componente de color (por ejemplo,Ypara luminancia,CbyCrpara crominancia),
"x » y" es un desplazamiento aritmético a la derecha de una representación entera en complemento a dos de x por y dígitos binarios. Esta función está definida solo para valores enteros no negativos de y. Los bits desplazados a los bits más significativos (MSB) como resultado del desplazamiento a la derecha tienen un valor igual al MSB de x antes de la operación de desplazamiento.
Los pesos del modo DC se calculan de la siguiente manera:
\vT= 32 » ((y « 1) »shlft).wL= 32 » ((* « 1) »shtft).wTL=-(w L»4)-(wT »4),
Dóndeshif l*lof-^height) ■2) » 2.
Para el modo planar,wTL= 0, mientras que para el modo horizontalwTL=wTy para el modo verticalwTL=wL.Los pesos PDPC del modo DC (wL,wT, wTL)para las posiciones (0, 0) y (1, 0) dentro de un bloque 4x4 se muestran en la FIG. 13B. De esta figura se desprende que la operación de recorte en (1) es obligatoria y la implementación de PDPC de última generación tiene un fallo potencial. El siguiente ejemplo ilustra el caso en el que el resultado podría estar fuera del rango determinado por BitDepthy o BitDepthc:
DadoR-1 ,y= 0,Rx<,-1>= 0, R<-1, -1>= 100,P(x, y)= 0, de (1) se deduce que para la posición (0, 0) de un bloque predicho de 4x4P(x, y)= Clip1Cmp( (wL * R<-1,y>+wT*Rx,-1±wTL* R<-1, -1>+ (64 -wl - wT+wTL)*P(x, y)+ 32)) » 6) = Clip1Cmp((wTL* R<-1, -1>+ 32) » 6) = Clip1Cmp( (-4 * 100 32) » 6),
wTL= 4 como se muestra en la FIG. 13B.
Como se ve en el ejemplo anterior, un valor negativo "-4 * 100 32 = -368" se desplaza a la derecha mediante desplazamiento de bits aritmético. Dependiendo de la implementación, el desplazamiento aritmético de bits a la derecha de un valor negativo puede generar una salida diferente (por ejemplo, en el caso del lenguaje de programación C/C++) y, por lo tanto, no se puede garantizar que la salida de CliplCmp() siempre sea 0, ya que el resultado de desplazar un valor negativo a la derecha puede tener signo positivo y magnitud distinta de cero en implementaciones específicas.
Para los modos diagonales (indicados como 2 y 66 en la FIG. 10B y la FIG. 10C) y adyacentes (modos direccionales no menores de 58 y no mayores de 10 en la FIG. 10B o la FIG. 10C), el procesamiento se realiza como se describe a continuación utilizando la misma fórmula (1).
La FIG. 14A ilustra la definición de muestras de referenciaRx,-1 , R-1 ,yy R<-1, -1>para la extensión de PDPC al modo diagonal superior derecho. La muestra de predicciónpred(x',y1) se encuentra en (x',y')dentro del bloque de predicción. La coordenada x de la muestra de referencia R<x,-1>viene dada por: x = x 'y'+ 1, y la coordenada y de la muestra de referencia R<-1,y>viene dada de manera similar por: y = x' y' 1.
Los pesos PDPC para el modo diagonal superior derecho son:
wT ~16 » < < y ' « I ) » «Vi/// ). «'/, - 16 >-*((* '« 1 > »stuji).wTt. ~O.
De manera similar, la FIG. 14B ilustra la definición de muestras de referencia R<x,- 1>, R<-1,y>y R<-1, -1>para la extensión de PDPC al modo diagonal inferior izquierdo. La coordenada x de la muestra de referenciaRx,-1se da por: x = x 'y'+ 1, y la coordenadayde la muestra de referencia R<-1,y>es:y= x 'y'+ 1. Los pesos PDPC para el modo diagonal superior derecho son:wT= 16 >> ( (/<<1) >>desplazamiento), wL= 16 >> ( ( x'<<1) >>desplazamiento), wTL= 0. El caso de un modo diagonal superior derecho adyacente se ilustra en la FIG. 14C. Los pesos PDPC para un modo diagonal superior derecho adyacente son:wT= 32 >> ( (/<<1) >>desplazamiento), wL = 0, wTL = 0.De manera similar, el caso de un modo diagonal inferior izquierdo adyacente se ilustra en la FIG. 14D. Los pesos PDPC para un modo diagonal inferior izquierdo adyacente son:wL= 32 >> ( (x'<<1) >>desplazamiento),wT = 0, wTL =0. Las coordenadas de muestra de referencia para los dos últimos casos se calculan utilizando las tablas que ya se utilizan para la intra predicción del modo angular. La interpolación lineal de las muestras de referencia se utiliza si se calculan las coordenadas de la muestra de referencia fraccionaria.
Se podría realizar un PDPC simplificado como se especifica en la especificación VVC. Además se utilizan las siguientes denotaciones:
■m Anplc-Konnd^ ^ ^ J
es el valor del ángulo inverso,
Round» \ ) SigiM x )*Floor( Abs( x ) 0.5 ).
SiptK0
I
Floor( x) es el entero más grande menor o igual a x,
Log2(x) es el logaritmo en base 2 de x.
intraPredAngle es el parámetro de ángulo especificado en la Tabla 6,
A = C ? B : D es una operación de asignación ternaria, en donde A se establece igual a B si la condición C es verdadera. De lo contrario, si la condición C es falsa, A se establece igual a D.
INTRA_PLANAR es un modo de intra predicción planar (),
INTRA_DC es un modo de intra predicción DC,
INTRA_ANGULARXX es uno de los modos de intra predicción direccional, en donde XX" denota su número y dirección correspondiente que se muestra en la FIG. 14B.
Si un término no se explica aquí, se entiende que su definición se puede encontrar en la especificación VVC o en la especificación del estándar HEVC/H.265.
Dadas las denotaciones anteriores, los pasos del PDPC simplificado podrían definirse de la siguiente manera: Las entradas a este proceso son:
- el modo de intra predicción predModeIntra,
- una variable nTbW que especifica el ancho del bloque de transformación,
- una variable nTbH que especifica la altura del bloque de transformación,
- una variable refW que especifica el ancho de las muestras de referencia,
- una variable refH que especifica la altura de las muestras de referencia,
- las muestras predichas predSamples[ x ][ y ], con x = 0..nTbW - 1, y = 0..nTbH - 1,
- las muestras vecinas p[ x ][ y ], con x = -1, y = -1..refH - 1 y x = 0..refW - 1, y = 1,
- una variable cIdx que especifica el componente de color del bloque actual.
Los resultados de este proceso son las muestras predichas modificadas predSamples[ x ][ y ] conx = 0..nTbW - 1, y = 0..nTbH - 1.
Dependiendo del valor de cIdx, la función clip1Cmp se establece de la siguiente manera:
- Si cldx es igual a 0, clip1Cmp se establece igual a Clip1.
- De lo contrario, cliplCmp se establece igual a Clip1
La variable nScale se establece en ( ( Log2( nTbW ) Log2( nTbH ) - 2) >> 2 ).
Las matrices de muestra de referencia mainRef[ x ] y sideRef[ y ], con x = 0..refW - 1 e y = 0..refH - 1 se derivan de la siguiente manera:
Las variables refL[ x ][ y ], reff[ x ][ y ], wT[ y ] y wL[ x ] con x = 0..nTbW - 1, y =0..nTbH - 1 se derivan de la siguiente manera:
- Si predModeIntra es igual a INTRA_PLANAR, INTRA_DC, INTRA_ANGULAR18 o INTRA_ANGULAR50, se aplica lo siguiente:
{x,y} define posición de una muestra predicha, wT, wL y wTL son pesos asociados con muestras de referencia según la posición definida, nScale es un parámetro de escala que controla la distancia de propagación (decaimiento de los pesos wT y wL).
- De lo contrario, si predModeIntra es igual a INTRA_ANGULAR2 o INTRA_ANGULAR66, se aplica lo siguiente:
- De lo contrario, si predModeIntra es menor o igual a INTRA_ANGULAR10, se aplican los siguientes pasos ordenados:
1. Las variables dXPos[ y ], dYFrac[ y ], dXInt[ y ] y dX[ x ][ y ] se derivan de la siguiente manera utilizando invAngle dependiendo de intraPredMode. invAngle puede especificarse en el borrador de especificación VVC.
2. Las variables refL[ x ][ y ], refT[ x ][ y ], wT[ y ], wL[ x ] se derivan de la siguiente manera:
- De lo contrario, si predModeIntra es mayor o igual que INTRA_ANGULAR58, se aplican los siguientes pasos ordenados:
1. Las variables dYPos[ x ], dYFrac[ x ], dYInt[ x ] y dY[ x ][ y ] se derivan de la siguiente manera utilizando invAngle dependiendo de IntraPredMode. InvAngle puede especificarse en el borrador de especificación VVC. dYPos| x | = ( ( x I ) * inv Anglc 2 ) » 2
2.
Los valores de las muestras predichas modificadas predSamples[ x ][ y ], con x = 0..nTbW - 1, y =0..nTbH - 1 se derivan de la siguiente manera:
En la asignación Eq. 1 anterior PDPC simplificado puede usar interpolación de vecino más cercano en vez de una lineal:
De manera similar, la asignación Eq. 2 podría también usar interpolación de vecino más cercano:
El recorte se puede eliminar solo para algunos modos. Específicamente para el modo de intra predicción DC, wTL puede establecerse en cero. En consecuencia, la operación clip1Cmp() no será necesaria para PDPC si el modo de intra predicción es DC. Se podrán aplicar las siguientes reglas o métodos:
pdpc para DC no utiliza la muestra superior izquierda (TL);
- La operación de recorte en PDPC no se realiza para ningún modo de intra predicción excepto los modos HOR y VER;
- PDPC para el modo HOR y VER utiliza la operación de recorte y no utiliza el umbral descrito en esta aplicación.
según la descripción anterior, la especificación podría modificarse de la siguiente manera, representando con ello una realización según la invención protegida :
- Si predModelntra es igual a INTRA_PLANAR o INTRA_DC, se aplica lo siguiente:
- De lo contrario, si predModeIntra es igual a INTRA_ANGULAR18 o INTRA_ANGULAR50, se aplica lo siguiente:
- De lo contrario, si predModeIntra es igual a INTRA_ANGULAR2 o INTRA_ANGULAR66, se aplica lo siguiente:
- De lo contrario, si predModeIntra es menor o igual a INTRA_ANGULAR10, se aplican los siguientes pasos:
1. Las variables dXPos[ y ], dYFrac[ y ], dXInt[ y ] y dX[ x ][ y ] se derivan de la siguiente manera utilizando invAngle dependiende de intraPredMode:
invAngle puede especificarse en el borrador de especificación VVC.
2. Las variables refL[ x ][ y ], refT[ x ][ y ], wT[ y ], wL[ x ] se derivan de la siguiente manera:
- De lo contrario, si predModeIntra es mayor o igual que INTRA_ANGULAR58, se aplican los siguientes pasos ordenados:
1. Las variables dYPos[ x ], dYFrac[ x ], dYInt[ x ] y dY[ x ][ y ] se derivan de la siguiente manera utilizando invAngle dependiendo de IntraPredMode:
InvAngle puede especificarse en el borrador de especificación VVC.
2. Las variables refL[ x ][ y ], refT[ x ][ y ], wT[ y ] y wL[ x ] se derivan de la siguiente manera:
- De lo contrario, refL[ x ][ y ], refT[ x ][ y ], wT[ y ], wL[ x ] se establecen todos en 0.
Los valores de las muestras predichas modificadas predSamples[ x ][ y ], con x = 0..nTbW - 1, y =0..nTbH - 1 se derivan de la siguiente manera:
- Si predModeIntra es igual a INTRA_ANGULAR18 o INTRA_ANGULAR50,:
- De lo contrario, aplica lo siguiente:
p
-
Según el texto de la especificación anterior, se introdujeron las siguientes modificaciones al método PDPC: - Al realizar PDPC para DC, no se considera la muestra superior izquierda;
- El recorte se aplica al valor de salida PDPC de las muestras predichas solo para los modos de intra predicción horizontal y vertical. Para todos los demás modos de intra predicción no se realiza recorte.
Tanto en el lado del codificador como del decodificador, el método propuesto utiliza lo siguiente como datos de entrada:
• modo de intra predicción direccional (denominado además predModelntra, que se muestra en la FIG.
10B y la FIG. 10C)
• parámetro de tamaño de bloque nTbS, que se establece igual a (log2(nTbW) Log2(nTbH)) >> 1, en donde nTbW y nTbH denotan el ancho y la altura del bloque predicho, respectivamente, y "»" denota una operación de desplazamiento a la derecha.
La modificación de la especificación VVC que permite el uso del método propuesto puede comprender sustituir "las muestras vecinas p[ x ][ y ]" por "las muestras de referencia p[ x ][ y ]" en la sección que describe el PDPC simplificado
El parámetro de ángulo intraPredAngle denota el desplazamiento de subpíxeles entre dos filas adyacentes de muestras predichas en una representación de punto fijo que tiene una longitud de parte fraccionaria igual a 5 bits. Este parámetro podría derivarse del modo de intra predicción que se deriva de predModeIntra y. Una derivación ejemplar de intraPredAngle a partir de predModeIntra podría definirse con una LUT, por ejemplo, como se muestra en la Tabla 6.
Tabla 6. Una LUT ejemplar para derivar intraPredAngle a partir de predModeIntra.
A partir del borrador de especificación actual de HEVC y VVC, se utiliza el método de intra predicción planar. A continuación se incorpora como referencia la parte 3 del borrador del VVC:
8.2.4.2.5. Especificación del modo de intra predicción INTRA PLANAR
Las entradas a este proceso son:
- una variable nTbW que especifica el ancho del bloque de transformación,
- una variable nTbH que especifica la altura del bloque de transformación,
- las muestras vecinas p[ x ][ y ], con x = -1, y = -1..nTbH y x = 0..nTbW, y = -1.
Los resultados de este proceso son las muestras predichas predSamples[ x ][ y ], con x = 0..nTbW - 1, y = 0. .nTbH - 1. Los valores de las muestras predichas predSamples[ x ][ y ], con x = 0..nTbW - 1 e y = 0..nTbH -1, se derivan de la siguiente manera:
prcdV| x || y | - ( ( nTbH - I - y ) • p| x || -1 | ( y + I ( • p| - I || nTbH | ) « I.og2 ( nTbW ) (X-X2)
predHJ x ][y ] = « nTbW--x)*p[-1 ][ y ]♦( x» 1 ) * p[nTbW ][-1 J)« Log2< nTbH ) predSamplef x ] , B-83i [ y ] = {predV[ x J [ y ] predH[ x][ y ] nTbW * nTbH r»
(Log2 ( nTbW ) 4 Log2 ( nTbH ) 4 I ) (K-JW)
La solución propuesta es un método PDPC alternativo que no tiene el defecto de la ecuación (1*). En concreto, el método puede comprender los siguientes pasos:
La muestra predichaP(x, y)ubicada en (x, y) se calcula de la siguiente manera:
en donde R<x,-1>, R<-1,y>representa las muestras de referencia ubicadas por encima y a la izquierda de la muestra actual (x,y). Vale la pena señalar que la función cliplCmp no se utiliza en la ecuación (2) ya que los valores de la muestra predichaP(x, y)siempre están en el rango de valores válidos, es decir, entre el mínimo y el máximo de los valores de píxeles.
"x » y" es un desplazamiento aritmético a la derecha de una representación entera en complemento a dos de x por y dígitos binarios. Esta función está definida solo para valores enteros no negativos de y. Los bits desplazados a los bits más significativos (MSB) como resultado del desplazamiento a la derecha tienen un valor igual al MSB de x antes de la operación de desplazamiento.
Los pesos del modo DC se calculan de la siguiente manera:
wT= 32 » ((y « 1) »shift),wL= 32 » ((.t « 1) »sh ift),
en dondesh‘ í t- (iog.(
los pesos PDPC del modo DC(wL, wT)para las posiciones (0, 0) y (1,0) dentro de un bloque 4x4 se muestran en la FIG. 15. Se puede observar que, en comparación con la FIG. 13B, no se utiliza la muestra de referencia superior izquierda y no se especifica el peso de esta muestra.
Este método alternativo podría representarse en forma de una parte de la especificación VVC:
Proceso de filtrado de muestras de intra predicción dependiente de la posición
Las entradas a este proceso son:
- el modo de intra predicción predModeIntra,
- una variable nTbW que especifica el ancho del bloque de transformación,
- una variable nTbH que especifica la altura del bloque de transformación,
- una variable refW que especifica el ancho de las muestras de referencia,
- una variable refH que especifica la altura de las muestras de referencia,
- las muestras predichas predSamples[ x ][ y ], con x = 0..nTbW - 1, y = 0..nTbH - 1,
- las muestras vecinas p[ x ][ y ], con x = -1, y = -1..refH - 1 y x = 0..refW - 1, y = 1,
- una variable cIdx que especifica el componente de color del bloque actual.
Los resultados de este proceso son las muestras predichas modificadas predSamples[ x ][ y ] con x = 0..nTbW - 1, y = 0..nTbH - 1.
Dependiendo del valor de cIdx, la función clip1Cmp se establece de la siguiente manera:
- Si cldx es igual a 0, clip1Cmp se establece igual a Clip1.
- De lo contrario, cliplCmp se establece igual a Clip1
La variable nScale se establece en ( ( Log2( nTbW ) Log2( nTbH ) - 2) >> 2 ).
Las matrices de muestra de referencia mainRef[ x ] y sideRef[ y ], con x = 0..refW - 1 e y = 0..refH - 1 se derivan de la siguiente manera:
maiiiRefl j¡ | = p[xl[ -L |
sídeReffy ]~pf - I]\y ]
Las variables refL[ x ][ y ], reff[ x ][ y ], wT[ y ] y wL[ x ] con x = 0..nTbW - 1, y =0..nTbH - 1 se derivan de la siguiente manera:
- Si predModeIntra es igual a INTRA_PLANAR, INTRA_DC, INTRA_ANGULAR18 o INTRA_ANGULAR50, se aplica lo siguiente:
rcfL| x |I y | = pl —1 || y |
f c r n x i iy I = P lX J|- I I
wT| y | = 32 » ( ( y « I ) » nScalc )
\vL| x ) = 32 » ( ( x « I ) » nScalc )
- De lo contrario, si predModeIntra es igual a INTRA_ANGULAR2 o INTRA_ANGULAR66, se aplica lo siguiente:
i d L [ x ] [ y ] p [ - l ] [ x y l ]
relT[ x || y | p| x > I- J || I ]
- De lo contrario, si predModeIntra es menor o igual a INTRA_ANGULAR10, se aplican los siguientes pasos ordenados:
1. Las variables dXPos[ y ], dYFrac[ y ], dXInt[ y ] y dX[ x ][ y ] se derivan de la siguiente manera utilizando invAngle dependiendo de intraPredMode.
dXPos| y | - (( y I ) * invAngle 2 ) » 2
dXFrael y | = dXPos| y | & 63
dXIm| y | = dXPos | y | » 6
dX| x || y | = \ dXlm| y |
invAngle puede especificarse en el borrador de especificación VVC.
2. Las variables refL[ x ][ y ], refT[ x ][ y ], wT[ y ], wL[ x ] se derivan de la siguiente manera:
rc
- De lo contrario, si predModeIntra es mayor o igual que INTRA_ANGULAR58, se aplican los siguientes pasos ordenados:
1. Las variables dYPos[ x ], dYFrac[ x ], dYInt[ x ] y dY[ x ][ y ] se derivan de la siguiente manera utilizando invAngle dependiendo de IntraPredMode.
invAngle puede especificarse en el borrador de especificación VVC.
2 Las variables refL[ x ][ y ], refT[ x ][ y ], wT[ y ] y wL[ x ] se derivan de la siguiente manera:
- De lo contrario, refL[ x ][ y ], re1T[ x ][ y ], wT[ y ], wL[ x ] se establecen todos en 0. Los valores de las muestras predichas modificadas predSamples[ x ][ y ], con x = 0..nTbW - 1, y =0..nTbH - 1 se derivan de la siguiente manera:
Aquí "(64 - wL[x] - wT[y])" representa el factor de ponderación de la muestra.
La FIG. 16 ilustra el método descrito anteriormente. Mediante línea discontinua se muestra el paso de recorte, que se realiza en el PDPC de última generación, pero no se realiza en el método propuesto, ya que no es necesario, porque no se utiliza el único coeficiente negativowTL.
En la FIG. 17, el proceso de intra predicción utiliza muestras de referencia para producir muestras predichas. Cada muestra predicha se pondera además utilizando un factor de ponderación de muestra. El factor de ponderación de la muestra puede, por ejemplo, ser igual a (64 - wL [ x ] - wT[ y ]). Las mismas muestras de referencia se utilizan para calcular valores adicionales para cada una de las muestras predichas en función de x e y, en donde x e y definen la posición de una muestra predicha dentro de un bloque predicho. Estos valores adicionales se agregan a las muestras predichas ponderadas correspondientes. Cada muestra resultante de esta operación se normaliza luego desplazándola hacia la derecha según la precisión predeterminada del factor de ponderación de la muestra. Por ejemplo, si el factor de ponderación de la muestra se define como (64 - wL[ x ] - wT[ y ]) ) la precisión es de 6 bits. Por lo tanto, en este paso se realiza un desplazamiento a la derecha de 6 para garantizar que los posibles valores mínimos y máximos de los valores de salida sean los mismos que los posibles valores mínimos y máximos de las muestras de referencia.
Uno de los efectos beneficiosos de la solución propuesta es que el mecanismo de intra predicción PLANAR se puede reutilizar para calcular los valores adicionales. Específicamente, la intra predicción PLANAR utiliza la siguiente ecuación para derivar valores de muestra predichos horizontales y verticales:
picdV'l x || y | = ( (nTbH- 1 - y ) * p( x || - 1 |
+ (y l ) • p| -1 H nTbH | ) « Log2 ( nTbW > (H-82)
pirdH| x || y | = (< riTbW - 1 - s ) • p| - t || y J
+ ( x I ) * p| nTbW || -1 | ) « Log2 ( nTbH ) (8-X3>
De las dos ecuaciones anteriores se puede ver que predV[ x ][ y ] utiliza la muestra de referencia p[x][-1 ] ubicada en la misma columna que predV[ x ][ y ] y predH[x][y] utiliza la muestra de referencia p[-1 ][y] ubicada en la misma fila que predH[x] [y]. Además, las operaciones de desplazamiento a la izquierda se realizan como paso final y, por lo tanto, se pueden omitir ya que no afectan los cálculos intermedios que se están reutilizando. Las variables nTbW, nTbH, x e y son entradas del método de intra predicción PLANAr y, por lo tanto, se pueden ajustar en consecuencia. Debido a esto es posible sustituir (nTbW - 1 - x ) por Dx y (nTbH - 1 - y ) por Dy como variables de entrada. Las muestras de referencia inferior izquierda y superior derecha se pueden establecer en 0, ya que no son un parámetro en uso.
Considerando las observaciones descritas anteriormente, las ecuaciones anteriores pueden reescribirse según sus entradas predeterminadas:
V - Dy * p| x || -1 |
V -Dx* p| -1 II y I
De esta forma se podrían realizar las siguientes unificaciones:
- un valor adicional en el caso del modo horizontal (modo 18) podría calcularse como V<y>= Dy * p[ x ][ -1 ], en donde Dy se establece igual a wT[ y ];
- un valor adicional en el caso del modo vertical (modo 50) podría calcularse como Vx= Dx * p[ -1 ][ y ], en donde Dx se establece igual a wL[ y ];
- un valor adicional en el caso del modo CC (modo 1) podría calcularse como Vy+ Vx, en donde Dx y Dy se establecen como en los dos casos anteriores;
Mediante la alternancia de la selección de muestras de referencia se pudo demostrar que se podría realizar la unificación para todos los modos de intra predicción que se especifican para el proceso PDPC.
Cuando se especifica que el modo de intra predicción sea igual a los modos de intra predicción DC, horizontal o vertical, la muestra predicha actualizada resultante debe recortarse, por ejemplo, como se muestra en la FIG.
16 mediante un bloque con borde discontinuo.
En el caso de modos de intra predicción horizontal o vertical, es más beneficioso reposicionar la operación de recorte antes del último paso del PDPC simplificado cuando la muestra predicha ponderada se suma con un valor adicional. Este valor adicional se obtiene de forma diferente para los distintos modos, como se describe anteriormente.
Las realizaciones de la invención proponen umbralizar los resultados de los cálculos intermedios que se realizan para obtener el valor adicional para los casos en que se utilizan modos de intra predicción verticales u horizontales en la intra predicción. Para estos casos se podría calcular un valor adicional de tal manera que al añadirlo a la muestra predicha ponderada no requiera operación de recorte.
Los métodos PDPC de última generación aplican recorte en la muestra predicha actualizada (incluso para los modos horizontales y verticales). Específicamente, predSamples[ x ][ y ] = clip1Cmp( ( refL[ x ][ y ] * wL[ x ] refT[ x ][ y ] *wT[ y ] -p[ -1 ][ -1 ] *wTL[ x ][ y ] ( 64 - wL[ x ] - wT[ y ] wTL[ x ] [ y ]) * predSamples[ x ][ y ] 32) >> 6)
Para el modo de intra predicción horizontal, wTL[ x ][ y ] se establece igual a wT[ y ], lo que conduce a la expresión simplificada:
prcdSamplcsj x J| y ] =
cliplCmp( ( (refT| x || y | — p| —I || —1 | ) * wT| y | 64 * predSamples| x || y | 32 ) » 6 )En esta expresión, "refT[ x ][ y ] - p[ -1 ][ -1 ]" es de hecho el valor de muestra de referencia adicional. esto es, para los casos cuando el modo de intra predicción es horizontal, el valor de la muestra de referencia adicional se establece igual a la diferencia entre el valor de la muestra de referencia más cercana (refT[x][y]) ubicada por encima de la muestra predicha y el valor de la muestra de referencia superior izquierda (p[-1 ][-1 ]).
Para los casos cuando el modo de intra predicción es vertical, el valor de la muestra de referencia adicional se establece igual a la diferencia entre el valor de la muestra de referencia más cercana (refL[x][y]) ubicada a la izquierda de la muestra predicha y el valor de la muestra de referencia superior izquierda (p[ -1 ][ -1 ]), esto es para "refL[ x ][ y ] - p[ -1 ][ -1 ]"
Por lo tanto, es posible reemplazar la función clipCmp mediante operaciones de umbralización sobre el valor de muestra de referencia adicional, es decir, "refT[ x ][ y ] - p[ -1 ][ -1 ]".
Para un modo de intra predicción horizontal:
prcdSampIcsl x || y | =
( T(relTI x l( >' | — pl - I ][ -1 | )*wTly J+ 64 * prcdSantpksI \ || > | 32 ) » 6.
en donde T() es una operación de umbralización.
Para un modo de intra predicción vertical:
prcdSamplcs| x || \ | -( T(refL| x ||y | - pl - I ][ “ I I > * wTb I 64 * prcdSampks| x )| > | 32 > » 6.
en donde T() es una operación de umbralización.
En la FIG. 17 se muestra un ejemplo de implementación de T(). La operación de umbralización T() del valor de muestra de referencia adicional en realidad actualiza el valor de muestra de referencia adicional según si el valor de muestra de referencia superior izquierdo es mayor que el valor de muestra predicho. En específico: - cuando el valor de la muestra de referencia superior izquierda es mayor que el valor de la muestra predicho, el límite inferior se obtiene restando el valor de la muestra predicho del valor máximo de la muestra predicha, el valor de la muestra de referencia adicional actualizado se establece igual al máximo de dos valores, o el primer valor es el valor de muestra de referencia adicional, y
o el segundo valor es el límite inferior.
- de lo contrario, el límite superior se obtiene restando el valor de muestra predicho del valor mínimo de la muestra predicha, y el valor de muestra de referencia adicional actualizado se establece igual al mínimo de dos valores.
o el primer valor es el valor de muestra de referencia adicional, y
o el segundo valor es el límite superior,
En la FIG. 17, la muestra de referencia más cercana es una muestra de referencia más cercana ubicada a la izquierda de la muestra predicha cuando la intra predicción es horizontal. Cuando la intra predicción es vertical, la muestra de referencia más cercana es una muestra de referencia más cercana ubicada por encima de la muestra predicha. De esta figura se puede observar que el resultado de la comparación se utiliza para cambiar ambos
resultados de las funciones de umbralización, es decir, mínimo y máximo, y
uno de los argumentos de la función de umbral.
Cabe destacar que la función Clip3() proporciona dos operaciones de umbralización. Un umbral es el valor mínimo de la muestra predicha y el otro es el valor máximo de la muestra predicha. En comparación con la función Clip3() aplicada a la muestra predicha actualizada (FIG. 16), el umbral propuesto (FIG. 17) aplica solo un umbral: el valor mínimo de la muestra predicha o el valor máximo de la muestra predicha.
También se puede observar que la reposición de umbral descrita anteriormente permite el uso de la misma ecuación sin recorte para todos los modos intra predichos, en donde es aplicable PDPC.
La FIG. 18 es un diagrama de bloques que muestra una estructura ejemplar de un aparato 1800 para intra predecir un bloque de un fotograma. El aparato 1800 está configurado para llevar a cabo los métodos anteriores y puede incluir:
una unidad 1810 de obtención, configurada para obtener un valor de muestra predicho a partir de uno o más valores de muestra de referencia mediante intrapredicción utilizando un modo de intrapredicción, obtener al menos un valor de muestra de referencia adicional según el modo de intrapredicción, y obtener un valor de muestra de referencia adicional con umbral basado en el valor de muestra de referencia adicional;
una unidad 1820 de cálculo, configurada para calcular un valor adicional a partir del valor de muestra de referencia adicional umbralizado, multiplicar el valor de muestra predicho por un factor de ponderación de muestra, dando como resultado un valor de muestra predicho ponderado, añadir el valor adicional al valor de muestra predicho ponderado, dando como resultado un valor de muestra predicho no normalizado, y normalizar el valor de muestra predicho no normalizado, dando como resultado un valor de muestra predicho normalizado.
Cuando el modo de intra predicción es modo de intrapredicción vertical, el valor de la muestra de referencia adicional se establece igual a la diferencia entre el valor de la muestra de referencia más cercana ubicada por encima de la muestra predicha y el valor de la muestra de referencia superior izquierda,
Cuando el modo de intra predicción es modo de intrapredicción horizontal, el valor de la muestra de referencia adicional se puede establecer igual a la diferencia entre el valor de la muestra de referencia más cercana ubicada a la izquierda de la muestra predicha y el valor de la muestra de referencia superior izquierda,
Cuando el modo de intra predicción es el modo de intra predicción DC, el al menos un valor de muestra de referencia adicional incluye un primer valor de muestra de referencia adicional y un segundo valor de muestra de referencia adicional, y el primer valor de muestra de referencia adicional y el segundo valor de muestra de referencia adicional se pueden obtener mediante:
o establecer el primer valor de muestra de referencia adicional igual al valor de la muestra de referencia más cercana ubicada a la izquierda de la muestra predicha, y
o establecer el segundo valor de muestra de referencia adicional igual al valor de la muestra situada por encima de la muestra prevista.
cuando un valor de muestra de referencia superior izquierda es mayor o igual que el valor de muestra predicho, se obtiene un límite superior restando el valor de muestra predicho del valor máximo de la muestra predicha, el valor de muestra de referencia adicional umbralizado se establece igual al máximo de un primer valor y un segundo valor:
o el primer valor es el valor de muestra de referencia adicional, y
o el segundo valor es el límite superior,
cuando un valor de muestra de referencia superior izquierda es menor que el valor de muestra predicho, se obtiene un límite inferior restando el valor de muestra predicho del valor mínimo de la muestra predicha, el valor de muestra de referencia adicional umbralizado se establece igual al mínimo de un primer valor y un segundo valor:
o el primer valor es el valor de muestra de referencia adicional, y
o el segundo valor es el límite inferior.
A continuación se presenta una explicación de las aplicaciones del método de codificación así como del método de decodificación como se muestra en las realizaciones mencionadas anteriormente, y un sistema que los utiliza.
La FIG. 19 es un diagrama de bloques que muestra un sistema 3100 de suministro de contenido para realizar un servicio de distribución de contenido. Este sistema 3100 de suministro de contenido incluye un dispositivo 3102 de captura, un dispositivo 3106 terminal y, opcionalmente, incluye una pantalla 3126. El dispositivo 3102 de captura se comunica con el dispositivo 3106 terminal a través del enlace 3104 de comunicación. El enlace de comunicación puede incluir el canal 13 de comunicación descrito anteriormente. El enlace 3104 de comunicación incluye, entre otros, WIFI, Ethernet, cable, inalámbrico (3G/4G/5G), USB o cualquier tipo de combinación de los mismos, o similares.
El dispositivo 3102 de captura genera datos y puede codificar los datos mediante el método de codificación como se muestra en las realizaciones anteriores. Alternativamente, el dispositivo 3102 de captura puede distribuir los datos a un servidor de transmisión (no mostrado en las Figuras), y el servidor codifica los datos y transmite los datos codificados al dispositivo 3106 terminal. El dispositivo 3102 de captura incluye, entre otros, una cámara, un teléfono inteligente o Pad, un ordenador o portátil, un sistema de videoconferencia, una PDA, un dispositivo montado en un vehículo o una combinación de cualquiera de ellos, o similares. Por ejemplo, el dispositivo 3102 de captura puede incluir el dispositivo 12 de origen como se describió anteriormente. Cuando los datos incluyen video, el codificador 20 de video incluido en el dispositivo 3102 de captura puede realmente realizar el procesamiento de codificación de video. Cuando los datos incluyen audio (es decir, voz), un codificador de audio incluido en el dispositivo 3102 de captura puede realmente realizar el procesamiento de codificación de audio. Para algunos escenarios prácticos, el dispositivo 3102 de captura distribuye los datos de audio y video codificados multiplexándolos juntos. Para otros escenarios prácticos, por ejemplo en el sistema de videoconferencia, los datos de audio codificados y los datos de video codificados no se multiplexan. El dispositivo 3102 de captura distribuye los datos de audio codificados y los datos de video codificados al dispositivo 3106 terminal por separado.
En el sistema 3100 de suministro de contenido, el dispositivo 310 terminal recibe y reproduce los datos codificados. El dispositivo 3106 terminal podría ser un dispositivo con capacidad de recepción y recuperación de datos, tal como un teléfono inteligente o Pad 3108, un ordenador o portátil 3110, una grabadora de video en red (NVR)/grabadora de video digital (DVR) 3112, un televisor 3114, un decodificador (STB) 3116, un sistema 3118 de videoconferencia, un sistema 3120 de videovigilancia, un asistente 3122 digital personal (PDA), un dispositivo 3124 montado en un vehículo, o una combinación de cualquiera de ellos, o similar capaz de decodificar los datos codificados mencionados anteriormente. Por ejemplo, el dispositivo 3106 terminal puede incluir el dispositivo 14 de destino como se describió anteriormente. Cuando los datos codificados incluyen video, el decodificador 30 de video incluido en el dispositivo terminal tiene prioridad para realizar la decodificación de video. Cuando los datos codificados incluyen audio, se prioriza un decodificador de audio incluido en el dispositivo terminal para realizar el procesamiento de decodificación de audio.
Para un dispositivo terminal con su pantalla, por ejemplo, un teléfono inteligente o Pad 3108, un ordenador o portátil 3110, una grabadora de video en red (NVR)/grabadora de video digital (DVR) 3112, un televisor 3114, un asistente 3122 digital personal (PDA) o un dispositivo 3124 montado en un vehículo, el dispositivo terminal puede alimentar los datos decodificados a su pantalla. Para un dispositivo terminal no equipado con pantalla, por ejemplo, STB 3116, sistema 3118 de videoconferencia o sistema 3120 de videovigilancia, se contacta con una pantalla 3126 externa para recibir y mostrar los datos decodificados.
Cuando cada dispositivo en este sistema realiza codificación o decodificación, se puede utilizar el dispositivo de codificación de fotogramas o el dispositivo de decodificación de fotogramas, como se muestra en las realizaciones mencionadas anteriormente.
La FIG. 20 es un diagrama que muestra una estructura de un ejemplo del dispositivo 3106 terminal. Después de que el dispositivo 3106 terminal recibe la transmisión del dispositivo 3102 de captura, la unidad 3202 de procesamiento de protocolo analiza el protocolo de transmisión de la transmisión. El protocolo incluye, entre otros, el Protocolo de transmisión en tiempo real (RTSP), el Protocolo de transferencia de hipertexto (HTTP), el Protocolo de transmisión en vivo HTTP (HLS), MPEG-DASH, el Protocolo de transporte en tiempo real (RTP), el Protocolo de mensajería en tiempo real (RTMP) o cualquier tipo de combinación de los mismos o similares.
Después de que la unidad 3202 de procedimiento de protocolo procesa la secuencia, se genera un archivo de secuencia. El archivo se envía a una unidad 3204 demultiplexora. La unidad 3204 demultiplexora puede separar los datos multiplexados en los datos de audio codificados y los datos de video codificados. Como se ha descrito anteriormente, en algunos escenarios prácticos, por ejemplo en el sistema de videoconferencia, los datos de audio codificados y los datos de vídeo codificados no se multiplexan. En esta situación, los datos codificados se transmiten al decodificador 3206 de video y al decodificador 3208 de audio sin pasar por la unidad 3204 demultiplexora.
A través del procesamiento de demultiplexación, se generan flujos elementales de video (ES), flujos elementales de audio y, opcionalmente, subtítulos. El decodificador 3206 de video, que incluye el decodificador 30 de video como se explicó en las realizaciones mencionadas anteriormente, decodifica el video ES mediante el método de decodificación como se muestra en las realizaciones mencionadas anteriormente para generar un cuadro de video, y envía estos datos a la unidad 3212 sincrónica. El decodificador 3208 de audio decodifica el audio ES para generar un cuadro de audio y envía estos datos a la unidad 3212 sincrónica. Alternativamente, el cuadro de video puede almacenarse en un memoria intermedia (no se muestra en la FIG. Y) antes de alimentarlo a la unidad 3212 sincrónica. De manera similar, el cuadro de audio se puede almacenar en un memoria intermedia (no se muestra en la FIG. Y) antes de alimentarlo a la unidad 3212 sincrónica.
La unidad 3212 sincrónica sincroniza el cuadro de video y el cuadro de audio, y suministra el video/audio a una pantalla 3214 de video/audio. Por ejemplo, la unidad 3212 sincrónica sincroniza la presentación de la información de video y audio. La información puede codificarse en la sintaxis utilizando marcas de tiempo relativas a la presentación de datos de audio y visuales codificados y marcas de tiempo relativas a la entrega del flujo de datos en sí.
Si se incluye un subtítulo en la transmisión, el decodificador 3210 de subtítulos decodifica el subtítulo y lo sincroniza con el cuadro de video y el cuadro de audio, y suministra el video/audio/subtítulo a una pantalla de video/audio/subtítulo 3216.
La presente invención no se limita al sistema mencionado anteriormente, y tanto el dispositivo de codificación de fotogramas como el dispositivo de decodificación de fotogramas en las realizaciones mencionadas anteriormente se pueden incorporar en otro sistema, por ejemplo, un sistema de automóvil.
Aunque las realizaciones de la invención se han descrito principalmente en base a la codificación de video, debe notarse que las realizaciones del sistema 10 de codificación, el codificador 20 y el decodificador 30 (y correspondientemente el sistema 10) y las otras realizaciones descritas aquí también pueden configurarse para el procesamiento o codificación de fotogramas fijos, es decir, el procesamiento o codificación de un fotograma individual independientemente de cualquier fotograma precedente o consecutivo como en la codificación de video. En general, es posible que solo las unidades 244 (codificador) y 344 (decodificador) de interpredicción no estén disponibles en caso de que la codificación del procesamiento de fotogramas esté limitada a un solo fotograma 17. Todas las demás funcionalidades (también denominadas herramientas o tecnologías) del codificador 20 de video y del decodificador 30 de video pueden utilizarse igualmente para el procesamiento de fotogramas fijos, por ejemplo, cálculo 204/304 residual, transformación 206, cuantificación 208, cuantificación 210/310 inversa, transformada 212/312 (inversa), partición 262/362, intrapredicción 254/354 y/o filtrado 220, 320 de bucle y codificación 270 de entropía y decodificación 304 de entropía.
Aunque las realizaciones de la invención se han descrito principalmente en base a la codificación de video, debe notarse que las realizaciones del sistema 10 de codificación, el codificador 20 y el decodificador 30 (y correspondientemente el sistema 10) y las otras realizaciones descritas aquí también pueden configurarse para el procesamiento o codificación de fotogramas fijos, es decir, el procesamiento o codificación de un fotograma individual independientemente de cualquier fotograma precedente o consecutivo como en la codificación de video. En general, es posible que solo las unidades 244 (codificador) y 344 (decodificador) de interpredicción no estén disponibles en caso de que la codificación del procesamiento de fotogramas esté limitada a un solo fotograma 17. Todas las demás funcionalidades (también denominadas herramientas o tecnologías) del codificador 20 de video y del decodificador 30 de video pueden utilizarse igualmente para el procesamiento de fotogramas fijos, por ejemplo, cálculo 204/304 residual, transformación 206, cuantificación 208, cuantificación 210/310 inversa, transformada 212/312 (inversa), partición 262/362, intrapredicción 254/354 y/o filtrado 220, 320 de bucle y codificación 270 de entropía y decodificación 304 de entropía.
Las realizaciones, por ejemplo, del codificador 20 y del decodificador 30, y las funciones descritas en este documento, por ejemplo, con referencia al codificador 20 y al decodificador 30, se pueden implementar en hardware, software, firmware o cualquier combinación de los mismos. Si se implementa mediante software, las funciones pueden almacenarse en un medio legible por ordenador o transmitido sobre un medio de comunicación como una o más instrucciones o códigos y ejecutado por una unidad de procesamiento basada en hardware. Los medios legibles por ordenador pueden incluir medios de almacenamiento legibles por ordenador, que corresponden a un medio tangible tal como un medio de almacenamiento de datos, o medios de comunicación incluyendo 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 generalmente pueden corresponder a (1) medios de almacenamiento tangibles legibles por ordenador que no son transitorios o (2) un medio de comunicación tal como una señal u onda portadora. Los medios de almacenamiento de datos pueden ser cualquier medio disponible al que puedan acceder uno o más ordenadores o uno o más procesadores para recuperar instrucciones, códigos y/o estructuras de datos para la implementación de las técnicas descritas en esta descripción. Un producto de programa informático puede incluir un medio legible por ordenador.
A modo de ejemplo, y sin carácter limitativo, dichos medios de almacenamiento legibles por ordenador pueden comprender RAM, ROM, EEPROM, CD-ROM u otro almacenamiento en disco óptico, almacenamiento en disco magnético u otros dispositivos de almacenamiento magnético, memoria flash o cualquier otro medio que pueda usarse para almacenar el código de programa deseado en forma de instrucciones o estructuras de datos y al que pueda accederse mediante un ordenador. Además, cualquier conexión se denomina apropiadamente un medio legible por ordenador. Por ejemplo, si las instrucciones se transmiten desde un sitio web, un servidor u otra fuente remota utilizando un cable coaxial, un cable óptico de fibra, un cable de par trenzado, una línea de abonado digital (DSL) o tecnologías inalámbricas como infrarrojos, radio y microondas, entonces el cable coaxial, el cable óptico de fibra, el par trenzado, la DSL o tecnologías inalámbricas como infrarrojos, radio y microondas se incluyen en la definición de medio. Debe entenderse, sin embargo, que los 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 se refieren a medios de almacenamiento tangibles no transitorios. El disco y disquete, como se usa en este documento, incluyen un disco compacto (CD), un disco láser, un disco óptico, un disco versátil digital (DVD), un disquete y un disco Blu-ray, en donde los discos magnéticos generalmente reproducen datos magnéticamente, mientras que los discos reproducen datos ópticamente con láser. También deben incluirse combinaciones de los antemencionados dentro del alcance de los medios legibles por ordenador.
Las instrucciones pueden ser ejecutadas por uno o más procesadores, tales como uno o más procesadores de señales digitales (DSP), microprocesadores de propósito general, circuitos integrados de aplicación específica (ASIC), matrices lógicas programables en campo (FPGA) u otros circuitos lógicos integrados o discretos equivalentes. En consecuencia, el término "procesador", tal como se utiliza en este documento, puede referirse a cualquiera de las estructuras anteriores o a cualquier otra estructura adecuada para la implementación de las técnicas descritas en este documento. Además, en algunos aspectos, la funcionalidad descrita en este documento puede proporcionarse dentro de módulos de hardware y/o software dedicados configurados para codificar y decodificar, o incorporados en un códec combinado. Además, las técnicas podrían implementarse completamente en uno o más circuitos o elementos lógicos. Los circuitos de procesamiento mencionados en esta descripción pueden comprender hardware y software.
Las técnicas de esta descripción se pueden implementar en una amplia variedad de dispositivos o aparatos, incluyendo un teléfono inalámbrico, un circuito integrado (CI) o un conjunto de CI (por ejemplo, un conjunto de chips). En esta descripción se describen varios componentes, módulos o unidades para enfatizar aspectos funcionales de los dispositivos configurados para realizar las técnicas descritas, ero que no requieren necesariamente su realización por diferentes unidades de hardware. En cambio, como se describió anteriormente, varias unidades pueden combinarse en una unidad de hardware de códec o proporcionarse mediante una colección de unidades de hardware interoperativas, incluidos uno o más procesadores como se describió anteriormente, junto con un software y/o firmware adecuado.
Claims (7)
1. Método de intra predicción de un bloque de un fotograma como parte de un proceso de codificación de fotogramas, comprendiendo el método:
obtener un modo de intra predicción de un bloque actual; realizar un proceso de combinación de predicción dependiente de la posición, PDPC, en donde el proceso PDPC produce muestras predichas, predSamples[x] [y], para el bloque actual realizando una operación de recorte cuando el modo de intra predicción es el modo de intra predicción horizontal o el modo de intra predicción vertical, y el proceso PDPC produce las muestras predichas sin realizar la operación de recorte cuando el modo de intra predicción es el modo DC o el modo planar;
en donde, cuando el modo de intra predicción es el modo DC o el modo planar, el proceso PDPC se realiza en base a muestras de referencia ubicadas arriba o a la izquierda del bloque actual, y la muestra de referencia superior izquierda, p[-1 ][-1 ], del bloque actual no se utiliza para el proceso PDPC.
2. El método de la reivindicación 1, en el que la operación de recorte en el proceso PDPC se realiza sólo cuando el modo de intra predicción es el modo de intra predicción horizontal o el modo de intra predicción vertical.
3. El método de la reivindicación 1 o 2, cuando predModeIntra es igual a INTRA_ANGULAR18 o INTRA ANGULAR50: predSamples[ x ][ y ] = clip1Cmp( ( refL[ x ][ y ] * wL[ x ] refT[ x ][ y ] *wT[ y ] - p[ -1 ][ -1 ] *wTL[ x ][ y ] ( 64 - wL[ x ] - wT[ y ] wTl [ x ] [ y ]) * predSamples[ x ][ y ] 32) >>6); en donde predModeIntra se utiliza para indicar el modo de intra predicción, {x,y} definen la posición de una muestra predicha, wT, wL y wTL son pesos asociados con muestras de referencia según la posición definida, refL[ x ][ y ] se utiliza para indicar la muestra de referencia más cercana ubicada a la izquierda de la muestra predicha, y refT[ x ][ y ] se utiliza para indicar la muestra de referencia más cercana ubicada por encima de la muestra predicha.
4. El método de la reivindicación 1 o 2, cuando predModeIntra es igual a INTRA_ANGULAR18 o INTRA ANGULAR50, lo siguiente aplica: predSamples[ x ][ y ] = ( refL[ x ][ y ] * wL[ x ] refT[ x ][ y ] *wT[ y ] wTL[ y ] ( 64 - wL[ x ] - wT[ y ]) * predSamples[ x ][ y ] 32) >>6); en donde predModeIntra se utiliza para indicar el modo de intra predicción, {x,y} definen la posición de una muestra predicha, wT y wL son pesos asociados con muestras de referencia según la posición definida, refL[ x ][ y ] se utiliza para indicar la muestra de referencia más cercana ubicada a la izquierda de la muestra predicha, y refT[ x ][ y ] se utiliza para indicar la muestra de referencia más cercana ubicada por encima de la muestra predicha.
5. El método de la reivindicación 1, cuando predModeIntra es igual a INTRA_PLANAR o INTRA DC, se aplica lo siguiente:
wT[ y ] ~ 32 » ( ( y « 1 ) » nScalc ),
wL{ x 1 ~ 32 » ( ( x « I ) » nScalc ).
» T L [ x J[ y ] 0.
en donde predModeIntra se utiliza para indicar el modo de intra predicción, {x,y} definen la posición de una muestra predicha, wT, wL y wTL son pesos asociados con muestras de referencia según la posición definida, nScale es un parámetro de escala.
6. Un aparato, que comprende:
uno o más procesadores; y
un medio de almacenamiento legible por ordenador no transitorio acoplado a los procesadores y que almacena la programación para su ejecución por los procesadores, en donde la programación, cuando la ejecutan los procesadores, configura el aparato para llevar a cabo el método según cualquiera de las reivindicaciones 1 a 5, en donde el aparato es un codificador o un decodificador.
7. Un medio de grabación no transitorio que incluye un flujo de bits codificado predictivamente para su decodificación por un aparato, generándose el flujo de bits según las reivindicaciones 1 a 5.
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US201862786349P | 2018-12-29 | 2018-12-29 | |
| US201962821422P | 2019-03-20 | 2019-03-20 | |
| PCT/RU2019/050262 WO2020139173A1 (en) | 2018-12-29 | 2019-12-30 | Method and apparatus for intra prediction |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| ES2998460T3 true ES2998460T3 (en) | 2025-02-20 |
Family
ID=71129644
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| ES19905863T Active ES2998460T3 (en) | 2018-12-29 | 2019-12-30 | Method and apparatus for intra prediction |
Country Status (11)
| Country | Link |
|---|---|
| US (3) | US11601653B2 (es) |
| EP (2) | EP3891977B1 (es) |
| KR (2) | KR20250024131A (es) |
| CN (2) | CN113170100A (es) |
| BR (1) | BR112021012949A2 (es) |
| ES (1) | ES2998460T3 (es) |
| HU (1) | HUE068559T2 (es) |
| MX (2) | MX2021007841A (es) |
| MY (1) | MY209073A (es) |
| PL (1) | PL3891977T3 (es) |
| WO (1) | WO2020139173A1 (es) |
Families Citing this family (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US11445174B2 (en) * | 2019-05-06 | 2022-09-13 | Tencent America LLC | Method and apparatus for video coding |
| WO2020256466A1 (ko) * | 2019-06-19 | 2020-12-24 | 한국전자통신연구원 | 화면 내 예측 모드 및 엔트로피 부호화/복호화 방법 및 장치 |
| US11595665B2 (en) | 2021-02-11 | 2023-02-28 | Qualcomm Incorporated | Upsampling reference pixels for intra-prediction in video coding |
| KR102582419B1 (ko) * | 2021-08-04 | 2023-09-26 | 한국과학기술원 | 인 메모리 컴퓨팅을 통해 컨벌루션 뉴럴 네트워크 연산을 수행하는 방법 |
Family Cites Families (12)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| PL2375749T3 (pl) * | 2005-10-11 | 2017-03-31 | Nokia Technologies Oy | System i sposób efektywnej adaptacji skalowalnego strumienia |
| KR102471528B1 (ko) * | 2011-11-11 | 2022-11-28 | 지이 비디오 컴프레션, 엘엘씨 | 적응적 분할 코딩 |
| EP2870752A1 (en) * | 2012-07-06 | 2015-05-13 | Telefonaktiebolaget LM Ericsson (Publ) | Restricted intra deblocking filtering for video coding |
| US9161039B2 (en) * | 2012-09-24 | 2015-10-13 | Qualcomm Incorporated | Bitstream properties in video coding |
| KR20170101983A (ko) * | 2014-12-31 | 2017-09-06 | 노키아 테크놀로지스 오와이 | 스케일러블 비디오 코딩 및 디코딩을 위한 계층 간 예측 |
| CN107071417B (zh) * | 2017-04-10 | 2019-07-02 | 电子科技大学 | 一种用于视频编码的帧内预测方法 |
| US10638126B2 (en) * | 2017-05-05 | 2020-04-28 | Qualcomm Incorporated | Intra reference filter for video coding |
| EP3627836A4 (en) * | 2017-06-21 | 2021-04-07 | LG Electronics Inc. | METHOD AND DEVICE FOR DECODING IMAGES ACCORDING TO INTRAPREDICTION IN AN IMAGE ENCODING SYSTEM |
| US10911765B2 (en) * | 2018-08-01 | 2021-02-02 | Tencent America LLC | Method and apparatus for video coding |
| US10491893B1 (en) * | 2018-08-29 | 2019-11-26 | Tencent America LLC | Method and apparatus for multi-line intra prediction |
| US11509908B2 (en) * | 2018-09-11 | 2022-11-22 | Panasonic Intellectual Property Corporation Of America | Encoder, decoder, encoding method, and decoding method |
| US11652984B2 (en) * | 2018-11-16 | 2023-05-16 | Qualcomm Incorporated | Position-dependent intra-inter prediction combination in video coding |
-
2019
- 2019-12-30 EP EP19905863.7A patent/EP3891977B1/en active Active
- 2019-12-30 ES ES19905863T patent/ES2998460T3/es active Active
- 2019-12-30 EP EP24192809.2A patent/EP4451679A3/en active Pending
- 2019-12-30 CN CN201980069230.4A patent/CN113170100A/zh active Pending
- 2019-12-30 KR KR1020257004301A patent/KR20250024131A/ko active Pending
- 2019-12-30 WO PCT/RU2019/050262 patent/WO2020139173A1/en not_active Ceased
- 2019-12-30 CN CN202211674598.3A patent/CN116567207B/zh active Active
- 2019-12-30 PL PL19905863.7T patent/PL3891977T3/pl unknown
- 2019-12-30 HU HUE19905863A patent/HUE068559T2/hu unknown
- 2019-12-30 MY MYPI2021002823A patent/MY209073A/en unknown
- 2019-12-30 MX MX2021007841A patent/MX2021007841A/es unknown
- 2019-12-30 KR KR1020217017513A patent/KR102767882B1/ko active Active
- 2019-12-30 BR BR112021012949-9A patent/BR112021012949A2/pt unknown
-
2021
- 2021-06-11 US US17/345,449 patent/US11601653B2/en active Active
- 2021-06-25 MX MX2024015826A patent/MX2024015826A/es unknown
-
2023
- 2023-02-20 US US18/171,458 patent/US12120315B2/en active Active
-
2024
- 2024-09-09 US US18/828,954 patent/US20250008114A1/en active Pending
Also Published As
| Publication number | Publication date |
|---|---|
| MX2021007841A (es) | 2021-10-26 |
| HUE068559T2 (hu) | 2025-01-28 |
| US20210314576A1 (en) | 2021-10-07 |
| KR20250024131A (ko) | 2025-02-18 |
| EP3891977B1 (en) | 2024-08-28 |
| US20240015304A1 (en) | 2024-01-11 |
| EP4451679A3 (en) | 2025-01-15 |
| EP4451679A2 (en) | 2024-10-23 |
| MX2024015826A (es) | 2025-03-07 |
| US11601653B2 (en) | 2023-03-07 |
| BR112021012949A2 (pt) | 2021-09-14 |
| US20250008114A1 (en) | 2025-01-02 |
| WO2020139173A1 (en) | 2020-07-02 |
| CN116567207A (zh) | 2023-08-08 |
| MY209073A (en) | 2025-06-19 |
| PL3891977T3 (pl) | 2024-11-18 |
| KR20210075201A (ko) | 2021-06-22 |
| KR102767882B1 (ko) | 2025-02-17 |
| EP3891977A4 (en) | 2022-06-22 |
| CN116567207B (zh) | 2024-02-13 |
| US12120315B2 (en) | 2024-10-15 |
| EP3891977A1 (en) | 2021-10-13 |
| CN113170100A (zh) | 2021-07-23 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| ES2982884T3 (es) | Un codificador, un decodificador y métodos correspondientes para realizar el desbloqueo de croma para bloques que usan la codificación de croma conjunta | |
| ES2989421T3 (es) | Un codificador, un decodificador y métodos correspondientes para la intrapredicción | |
| ES2973667T3 (es) | Un codificador de video, un decodificador de video y métodos correspondientes | |
| ES2975941T3 (es) | Armonización de intrapredicción basada en matriz y selección de núcleo de transformada secundaria | |
| ES2974160T3 (es) | Decodificador de video y métodos | |
| ES3024974T3 (en) | An encoder, a decoder and corresponding methods for sub-block partitioning mode | |
| ES3009580T3 (en) | Relation between partition constraint elements | |
| ES2987742T3 (es) | Método y aparato para intrapredicción | |
| KR102661224B1 (ko) | 화상의 블록을 인트라 예측하는 방법 | |
| ES2984321T3 (es) | Método y aparato de restricciones a nivel de bloque dependientes de modo y tamaño | |
| ES2998459T3 (en) | Apparatus and method for deblocking filter in video coding | |
| ES2998460T3 (en) | Method and apparatus for intra prediction | |
| ES2966509T3 (es) | Método y dispositivo de partición de imagen | |
| ES2988839T3 (es) | Método y aparato de modelización lineal de componentes cruzados para intrapredicción | |
| ES3037274T3 (en) | A video encoder, a video decoder and corresponding methods | |
| ES2983226T3 (es) | Aparato y método para realizar desbloqueo | |
| ES2992660T3 (en) | Method and apparatus for chroma intra prediction in video coding | |
| ES3056161T3 (en) | An encoder, a decoder, and corresponding methods that are used for transform process | |
| ES2967903T3 (es) | Codificador, decodificador y métodos correspondientes utilizando filtrado por interpolación | |
| ES3001382T3 (en) | Encoder, decoder and corresponding methods using dct2 enabled high level flag | |
| ES2946058T3 (es) | Un codificador, un decodificador y los métodos correspondientes que usan la codificación intramodo para la intrapredicción | |
| EP4022904A1 (en) | Method and apparatus for intra prediction | |
| US11438629B2 (en) | Method and apparatus for hierarchical signaling of enabling and disabling prediction mechanisms for video coding |