ES2946487T3 - Un codificador, un decodificador y métodos correspondientes de reducción de complejidad en intra predicción para el modo planar - Google Patents
Un codificador, un decodificador y métodos correspondientes de reducción de complejidad en intra predicción para el modo planar Download PDFInfo
- Publication number
- ES2946487T3 ES2946487T3 ES20867909T ES20867909T ES2946487T3 ES 2946487 T3 ES2946487 T3 ES 2946487T3 ES 20867909 T ES20867909 T ES 20867909T ES 20867909 T ES20867909 T ES 20867909T ES 2946487 T3 ES2946487 T3 ES 2946487T3
- Authority
- ES
- Spain
- Prior art keywords
- block
- prediction
- video
- unit
- ntbw
- 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 66
- 230000009467 reduction Effects 0.000 title description 2
- 239000000523 sample Substances 0.000 claims description 78
- 230000009466 transformation Effects 0.000 claims description 32
- 239000013074 reference sample Substances 0.000 claims description 20
- 238000004364 calculation method Methods 0.000 claims description 12
- 238000013139 quantization Methods 0.000 description 76
- 238000012545 processing Methods 0.000 description 57
- 238000004891 communication Methods 0.000 description 35
- 239000013598 vector Substances 0.000 description 23
- 230000008569 process Effects 0.000 description 22
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 description 19
- 239000000872 buffer Substances 0.000 description 19
- 230000006870 function Effects 0.000 description 17
- 230000005540 biological transmission Effects 0.000 description 15
- 239000011159 matrix material Substances 0.000 description 15
- 238000010586 diagram Methods 0.000 description 14
- 230000006835 compression Effects 0.000 description 9
- 238000007906 compression Methods 0.000 description 9
- 238000001914 filtration Methods 0.000 description 9
- 230000003044 adaptive effect Effects 0.000 description 8
- 230000000295 complement effect Effects 0.000 description 8
- 230000001360 synchronised effect Effects 0.000 description 7
- 241000023320 Luma <angiosperm> Species 0.000 description 6
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 description 6
- 238000007781 pre-processing Methods 0.000 description 6
- 238000013500 data storage Methods 0.000 description 5
- 230000001052 transient effect Effects 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000009795 derivation Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000012805 post-processing Methods 0.000 description 3
- 230000002441 reversible effect Effects 0.000 description 3
- 230000002123 temporal effect Effects 0.000 description 3
- PXFBZOLANLWPMH-UHFFFAOYSA-N 16-Epiaffinine Natural products C1C(C2=CC=CC=C2N2)=C2C(=O)CC2C(=CC)CN(C)C1C2CO PXFBZOLANLWPMH-UHFFFAOYSA-N 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 230000002146 bilateral effect Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 230000006837 decompression Effects 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 238000009499 grossing Methods 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000000844 transformation Methods 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- VBRBNWWNRIMAII-WYMLVPIESA-N 3-[(e)-5-(4-ethylphenoxy)-3-methylpent-3-enyl]-2,2-dimethyloxirane Chemical compound C1=CC(CC)=CC=C1OC\C=C(/C)CCC1C(C)(C)O1 VBRBNWWNRIMAII-WYMLVPIESA-N 0.000 description 1
- 238000012952 Resampling Methods 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 206010044625 Trichorrhexis Diseases 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000007620 mathematical function Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000011002 quantification Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
- 238000009966 trimming Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/593—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/103—Selection of coding mode or of prediction mode
-
- 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/107—Selection of coding mode or of prediction mode between spatial and temporal predictive coding, e.g. picture refresh
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/117—Filters, e.g. for pre-processing or post-processing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/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/119—Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/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/12—Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
- H04N19/122—Selection of transform size, e.g. 8x8 or 2x4x8 DCT; Selection of sub-band transforms of varying structure or type
-
- 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/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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/172—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/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/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
-
- 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/44—Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/70—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/80—Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
- H04N19/82—Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/85—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- Discrete Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
Se proporciona un método de codificación implementado. El método incluye los siguientes pasos: obtener la altura y el ancho de un bloque actual sin aplicar la operación de recorte; calcular un valor de un componente vertical de una muestra de predicción intra basada en la altura y el ancho del bloque de predicción; calcular un valor de un componente horizontal de la muestra de predicción interna en base a la altura y anchura del bloque; y generar la muestra de predicción intra basada en el valor de la componente vertical y el valor de la componente de horizonte. (Traducción automática con Google Translate, sin valor legal)
Description
DESCRIPCIÓN
Un codificador, un decodificador y métodos correspondientes de reducción de complejidad en intra predicción para el modo planar
Campo técnico
Las modalidades de la presente solicitud (descripción) se refieren generalmente al campo del procesamiento de imágenes y más particularmente a la modificación del filtro en el proceso de intra predicción general para el modo planar.
Antecedentes
La codificación de vídeo (codificación y decodificación de vídeo) se usa en una amplia gama de aplicaciones de vídeo digital, por ejemplo, difusión de TV digital, transmisión de vídeo a través de Internet y redes móviles, aplicaciones de conversación en tiempo real como vídeo chat, videoconferencia, DVD y discos Blu-ray, sistemas de edición y adquisición de contenido de vídeo y videocámaras de aplicaciones de seguridad.
La cantidad de datos de vídeo necesarios para representar incluso un vídeo relativamente corto puede ser sustancial, lo que puede resultar en dificultades cuando los datos deban transmitirse o comunicarse de cualquier otra manera a través de una red de comunicaciones con capacidad de ancho de banda limitada. Por lo tanto, los datos de vídeo generalmente se comprimen antes de comunicarse a través de las redes de telecomunicaciones de hoy en día. El tamaño de un vídeo también podría ser un problema cuando el vídeo se almacene en un dispositivo de almacenamiento porque los recursos de memoria pueden ser limitados. Los dispositivos de compresión de vídeo a menudo usan software y/o hardware en el origen para codificar los datos de vídeo antes de su transmisión o almacenamiento, disminuyendo así la cantidad de datos necesarios para representar imágenes de vídeo digitales. Los datos comprimidos son luego recibidos en el destino por un dispositivo de descompresión de vídeo que decodifica los datos de vídeo. Con recursos de red limitados y demandas cada vez mayores de mayor calidad de vídeo, son deseables técnicas mejoradas de compresión y descompresión que mejoren la relación de compresión con poco o ningún sacrificio en la calidad de la imagen.
Los métodos de predicción pueden desempeñar un papel importante en la codificación de imágenes y vídeos, debido a su capacidad para reducir la redundancia de la señal con base en las muestras codificadas previamente. Las principales técnicas de predicción incluyen la intra predicción para una codificación de redundancia espacial eficiente y la predicción con compensación de movimiento para la codificación de redundancia temporal entre cuadros. En particular, el modo planar es un modo de intra predicción de uso frecuente. Sin embargo, la intra predicción en modo planar es innecesariamente complicada para algunos bloques.
BROSS B Y OTROS: "Versatile Video Coding (Draft 6)", JVET-O2001, 2019-07-28, proporciona un borrador de la especificación de codificación de vídeo.
Resumen
De acuerdo con algunas modalidades de la presente solicitud, se proporcionan aparatos y métodos para codificar (es decir, codificar o decodificar, respectivamente) de acuerdo con las reivindicaciones independientes. La invención se establece en el conjunto de reivindicaciones adjuntas.
Los detalles de una o más modalidades se establecen en los dibujos adjuntos y la descripción a continuación. Otras características, objetos y ventajas serán evidentes a partir de la descripción, los dibujos y las reivindicaciones.
Breve descripción de los dibujos
En las siguientes modalidades de la invención se describen con más detalle con referencia a las figuras y dibujos adjuntos, en los que:
La Figura 1A es un diagrama de bloques que muestra un ejemplo de un sistema de codificación de vídeo configurado para implementar modalidades de la invención.
La Figura 1B es un diagrama de bloques que muestra otro ejemplo de un sistema de codificación de vídeo configurado para implementar modalidades de la invención.
La Figura 2 es un diagrama de bloques que muestra un ejemplo de un codificador de vídeo configurado para implementar modalidades de la invención. La Figura 3 es un diagrama de bloques que muestra una estructura de ejemplo de un decodificador de vídeo configurado para implementar modalidades de la invención.
La Figura 4 es un diagrama de bloques que ilustra un ejemplo de un aparato de codificación o un aparato de decodificación.
La Figura 5 es un diagrama de bloques que ilustra otro ejemplo de un aparato de codificación o un aparato de decodificación.
La Figura 6 es un dibujo esquemático que ilustra la intra predicción para el modo Planar en WC.
La Figura 7 es un dibujo esquemático que ilustra la intra predicción para el modo Planar para un bloque Nx1.
La Figura 8 muestra un diagrama de flujo que ilustra un método para la intra predicción Planar de un bloque actual en la codificación de vídeo.
La Figura 9 ilustra una configuración de un dispositivo de codificación de vídeo.
La Figura 10 es un diagrama de bloques que muestra una estructura de ejemplo de un sistema de suministro de contenido 3100 que lleva a cabo un servicio de entrega de contenido.
La Figura 11 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, si no se especifica explícitamente lo contrario.
Descripción detallada de la invención
En la siguiente descripción, se hace referencia a las figuras adjuntas, que forman parte de la invención y que muestran, a modo de ilustración, aspectos específicos de las modalidades de la invención o aspectos específicos en los que se pueden usar las modalidades de la presente invención. Se entiende que las modalidades de la invención pueden usarse en otros aspectos y comprenden cambios estructurales o lógicos no representados en las figuras. La siguiente descripción detallada, por lo tanto, no debe tomarse en un sentido limitativo, y el alcance de la presente invención está definido por las reivindicaciones adjuntas.
Por ejemplo, se entiende que una invención en relación con un método descrito también puede ser válida para un dispositivo o sistema correspondiente configurado para llevar a cabo el método y viceversa. Por ejemplo, si se describen una o una pluralidad de pasos específicos del método, un dispositivo correspondiente puede incluir una o una pluralidad de unidades, por ejemplo, unidades funcionales, para llevar a cabo el uno o la pluralidad de pasos del método descritos (por ejemplo, una unidad que lleva a cabo el uno o la pluralidad de pasos, o una pluralidad de unidades, cada una de las cuales lleva a cabo uno o más de la pluralidad de pasos), incluso si tales una o más unidades se describen o ilustran o no explícitamente en las figuras. Por otro lado, por ejemplo, si un aparato específico se describe con base en una o una pluralidad de unidades, por ejemplo, unidades funcionales, un método correspondiente puede incluir un paso para llevar a cabo la funcionalidad de una o una pluralidad de unidades (por ejemplo, un paso que lleva a cabo la funcionalidad de una o una pluralidad de unidades, o una pluralidad de pasos, cada uno de los cuales lleva a cabo la funcionalidad de una o más de la pluralidad de unidades), incluso si tal uno o la pluralidad de pasos no se describen o ilustran explícitamente en las figuras. Además, se entiende que las características de las diversas modalidades ejemplares y/o aspectos descritos en este documento pueden combinarse entre sí, a menos que se indique específicamente lo contrario.
La codificación de vídeo generalmente se refiere al procesamiento de una secuencia de imágenes, que forman el vídeo o la secuencia de vídeo. En lugar del término "imagen", el término “trama” o "fotograma" se puede usar como sinónimos en el campo de la codificación de vídeo. La codificación de vídeo (o codificación en general) comprende dos partes de codificación y decodificación de vídeo. La codificación de vídeo se lleva a cabo en el lado de origen, y típicamente comprende procesar (por ejemplo, mediante compresión) las imágenes de vídeo originales para reducir la cantidad de datos requeridos para representar las imágenes de vídeo (para un almacenamiento y/o transmisión más eficiente). La decodificación de vídeo se lleva a cabo en el lado de destino y típicamente comprende el procesamiento inverso en comparación con el codificador para reconstruir las imágenes de vídeo. Las modalidades que se refieren a la "codificación" de imágenes de vídeo (o imágenes en general) se entenderán relacionadas con la "codificación" o la "decodificación" de imágenes de vídeo o secuencias de vídeo respectivas. La combinación de la parte de codificación y la parte de decodificación también se conoce como CODEC (Codificación y Decodificación).
En caso de codificación de vídeo sin pérdida, las imágenes de vídeo originales se pueden reconstruir, es decir, las imágenes de vídeo reconstruidas tienen la misma calidad que las imágenes de vídeo originales (asumiendo que no hay pérdida de transmisión u otra pérdida de datos durante el almacenamiento o la transmisión). En caso de codificación de vídeo con pérdida, compresión adicional, por ejemplo, mediante cuantificación, para reducir la cantidad de datos que representan las imágenes de vídeo, que no se pueden reconstruir completamente en el decodificador, es decir, la calidad de las imágenes de vídeo reconstruidas es menor o peor en comparación con la calidad de las imágenes de vídeo originales.
Varios estándares de codificación de vídeo pertenecen al grupo de "códecs de vídeo híbridos con pérdidas" (es decir, combinan la predicción espacial y temporal en el dominio de muestra y la codificación de transformación 2D para aplicar la cuantificación en el dominio de transformación). Cada imagen de una secuencia de vídeo se divide normalmente en un conjunto de bloques que no se superponen y la codificación se lleva a cabo normalmente a nivel de bloque. En otras palabras, en el codificador, el vídeo se procesa típicamente, es decir, se codifica, en un nivel de bloque (bloque de vídeo), por ejemplo, mediante el uso de la predicción espacial (intra imagen) y/o la predicción temporal (inter imagen) para generar un bloque de predicción, restando el bloque de predicción del bloque actual (bloque actualmente procesado/por 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 el procesamiento inverso comparado con el codificador se aplica al
bloque codificado o comprimido para reconstruir el bloque actual para su representación. Además, el codificador duplica el bucle de procesamiento del decodificador de modo que ambos generen predicciones idénticas (por ejemplo, predicciones intra e inter) y/o reconstrucciones para procesar, es decir, codificar los bloques subsiguientes. En las siguientes modalidades de un sistema de codificación de vídeo 10, se describen un codificador de vídeo 20 y un decodificador de vídeo 30 con base en las Figuras 1 a 3.
La Figura 1A es un diagrama de bloques esquemático que ilustra un ejemplo de sistema de codificación 10, por ejemplo, un sistema de codificación de vídeo 10 (o sistema de codificación corto 10) que puede usar técnicas de la presente solicitud. El codificador de vídeo 20 (o codificador corto 20) y el decodificador de vídeo 30 (o decodificador corto 30) del sistema de codificación de vídeo 10 representan ejemplos de dispositivos que pueden configurarse para llevar a cabo técnicas de acuerdo con varios ejemplos descritos en la presente solicitud.
Como se muestra en la Figura 1A, el sistema de codificación 10 comprende un dispositivo de origen 12 configurado para proporcionar datos de imagen codificados 21, por ejemplo, a un dispositivo de destino 14 para decodificar los datos de imagen codificados 13.
El dispositivo de origen 12 comprende un codificador 20, y además, es decir, opcionalmente, puede comprender una fuente de imágenes 16, un preprocesador (o unidad de preprocesamiento) 18, por ejemplo, un preprocesador de imágenes 18 y una interfaz de comunicación o unidad de comunicación 22.
La fuente de imágenes 16 puede comprender o ser cualquier tipo de dispositivo de captura de imágenes, por ejemplo, una cámara para capturar una imagen del mundo real, y/o cualquier tipo de dispositivo de generación de imágenes, por ejemplo, un procesador de gráficos por ordenador para generar una imagen animada por ordenador, o cualquier otro dispositivo para obtener y/o proporcionar una imagen del mundo real, una imagen generada por ordenador (por ejemplo, un contenido de pantalla, una imagen de realidad virtual (VR)) y/o cualquier combinación de las mismas (por ejemplo, una imagen de realidad aumentada (AR)). La de origen de imágenes puede ser cualquier tipo de memoria o almacenamiento que almacene cualquiera de las imágenes mencionadas anteriormente.
A diferencia del preprocesador 18 y el procesamiento llevado a cabo por la unidad de preprocesamiento 18, la imagen o datos de imagen 17 también pueden denominarse imagen sin procesar o datos de imagen sin procesar 17. El preprocesador 18 está configurado para recibir los datos de imagen (sin procesar) 17 y para llevar a cabo el preprocesamiento de los datos de imagen 17 para obtener una imagen preprocesada 19 o datos de imagen preprocesados 19. El preprocesamiento llevado a cabo por el preprocesado 18 puede comprender, por ejemplo, recorte, conversión de formato de color (por ejemplo, de RGB a YCbCr), corrección de color o eliminación de ruido. Puede entenderse que la unidad de preprocesamiento 18 puede ser un componente opcional.
El codificador de vídeo 20 está configurado para recibir los datos de imagen preprocesados 19 y proporcionar datos de imagen codificados 21 (se describirán más detalles a continuación, por ejemplo, con base en la Figura 2).
La interfaz de comunicación 22 del dispositivo de origen 12 puede configurarse para recibir los datos de imagen codificados 21 y transmitir los datos de imagen codificados 21 (o cualquier versión procesada adicional de los mismos) a través del canal de comunicación 13 a otro dispositivo, por ejemplo, el dispositivo de destino 14 o cualquier otro dispositivo, para almacenamiento o reconstrucción directa.
El dispositivo de destino 14 comprende un decodificador 30 (por ejemplo, un decodificador de vídeo 30), y puede comprender además, es decir, opcionalmente, una interfaz de comunicación o unidad de comunicación 28, un post procesador 32 (o unidad de post-procesamiento 32) y un dispositivo de presentación visual 34.
La interfaz de comunicación 28 del dispositivo de destino 14 está configurada para recibir los datos de imagen codificados 21 (o cualquier versión procesada adicional de los mismos), por ejemplo, directamente desde el dispositivo de origen 12 o desde cualquier otra fuente, por ejemplo, un dispositivo de almacenamiento, por ejemplo, un dispositivo de almacenamiento de datos de imágenes codificadas, y proporcionar los datos de imagen codificados 21 al decodificador 30.
La interfaz de comunicación 22 y la interfaz de comunicación 28 pueden configurarse para transmitir o recibir los datos de imagen codificados 21 o los datos codificados 13 a través de un enlace de comunicación directo entre el dispositivo de origen 12 y el dispositivo de destino 14, por ejemplo, una conexión directa por cable o inalámbrica, o mediante cualquier tipo de red, por ejemplo, una red cableada o inalámbrica o cualquier combinación de las mismas, o cualquier tipo de red pública y privada, o cualquier tipo de combinación de las mismas.
La interfaz de comunicación 22 puede configurarse, por ejemplo, para empaquetar los datos de imagen codificados 21 en un formato apropiado, por ejemplo, paquetes y/o procesar los datos de imagen codificados usando cualquier tipo de codificación de transmisión o procesamiento para su transmisión a través de un enlace de comunicación o red de comunicación.
La interfaz de comunicación 28, que forma la contraparte de la interfaz de comunicación 22, puede configurarse, por ejemplo, para recibir los datos transmitidos y procesar los datos de transmisión usando cualquier tipo de decodificación de transmisión o procesamiento y/o desempaquetamiento correspondiente para obtener los datos de imagen codificados 21.
Tanto la interfaz de comunicación 22 como la interfaz de comunicación 28 pueden configurarse como interfaces de comunicación unidireccionales como lo indica la flecha para el canal de comunicación 13 en la Figura 1A que apunta del dispositivo de origen 12 al dispositivo de destino 14, o interfaces de comunicación bidireccionales, y se puede configurar, por ejemplo, para enviar y recibir mensajes, por ejemplo, para establecer una conexión, para reconocer e intercambiar cualquier otra información relacionada con el enlace de comunicación y/o la transmisión de datos, por ejemplo, transmisión de datos de imágenes codificadas.
El decodificador 30 está configurado para recibir los datos de imagen codificados 21 y proporcionar datos de imagen decodificados 31 o una imagen decodificada 31 (se describirán más detalles abajo, por ejemplo, con base en la Figura 3 o la Figura 5).
El post-procesador 32 del dispositivo de destino 14 está configurado para post-procesar los datos de imagen decodificados 31 (también llamados datos de imagen reconstruidos), por ejemplo, la imagen decodificada 31, para obtener datos de imagen post-procesados 33, por ejemplo, una imagen 33 post-procesada. El post-procesamiento llevado a cabo por la unidad 32 de post-procesamiento puede comprender, por ejemplo, conversión de formato de color (por ejemplo, de YCbCr a RGB), corrección de color, recorte o remuestreo, o cualquier otro procesamiento, por ejemplo, para preparar los datos de imagen decodificados 31 para su presentación visual, por ejemplo, por dispositivo de presentación visual 34.
El dispositivo de presentación visual 34 del dispositivo de destino 14 está configurado para recibir los datos de imagen post-procesados 33 para presentar visualmente la imagen, por ejemplo, a un usuario o espectador. El dispositivo de presentación visual 34 puede ser o comprender cualquier tipo de presentación visual para representar la imagen reconstruida, por ejemplo, una pantalla o monitor integrado o externo. Las pantallas pueden, por ejemplo, comprender pantallas de cristal líquido (LCD), pantallas de diodos emisores de luz orgánicos (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 Figura 1A representa el dispositivo de origen 12 y el dispositivo de destino 14 como dispositivos separados, las modalidades de los dispositivos también pueden comprender ambas o ambas funcionalidades, el dispositivo de origen 12 o la funcionalidad correspondiente y el dispositivo de destino 14 o la funcionalidad correspondiente. En tales modalidades, el dispositivo de origen 12 o la funcionalidad correspondiente y el dispositivo de destino 14 o la funcionalidad correspondiente pueden implementarse usando el mismo hardware y/o software o mediante hardware y/o software separados o cualquier combinación de los mismos.
Como resultará evidente para el experto con base en la descripción, la existencia y división (exacta) de funcionalidades de las diferentes unidades o funcionalidades dentro del dispositivo de origen 12 y/o dispositivo destino 14 como se muestra en la Figura 1A puede variar dependiendo de la dispositivo y aplicación reales.
El codificador 20 (por ejemplo, un codificador de vídeo 20) o el decodificador 30 (por ejemplo, un decodificador de vídeo 30) o tanto el codificador 20 como el decodificador 30 pueden implementarse por circuitos de procesamiento como se muestra en la Figura 1B, tal como uno o más microprocesadores, procesadores de señales digitales (DSP), circuitos integrados de aplicaciones específicas (ASIC), disposiciones de puertas programables por campos (FPGA), lógica discreta, hardware, codificación de vídeo dedicada o cualquier combinación de los mismos. El codificador 20 puede implementarse a través del circuito de procesamiento 46 para incorporar los diversos módulos como se describe con respecto al codificador 20 de la Figura 2 y/o cualquier otro sistema o subsistema codificador descrito en este documento. El decodificador 30 puede implementarse a través del circuito de procesamiento 46 para incorporar los diversos módulos como se describe con respecto al decodificador 30 de la Figura 3 y/o cualquier otro sistema o subsistema decodificador descrito en este documento. El circuito de procesamiento puede configurarse para llevar a cabo las diversas operaciones como se describe más adelante. Como se muestra en la Figura 5, si las técnicas se implementan parcialmente en software, un dispositivo puede almacenar instrucciones para el software en un medio de almacenamiento adecuado, no transitorio, legible por ordenador y puede ejecutar las instrucciones en hardware usando uno o más procesadores para llevar a cabo las técnicas de esta invención. Tanto el codificador de vídeo 20 como el decodificador de vídeo 30 pueden integrarse como parte de un codificador/decodificador combinado (CODEC) en un solo dispositivo, por ejemplo, tal como se muestra en la Figura 1B.
El dispositivo de origen 12 y el dispositivo de destino 14 pueden comprender cualquiera de una amplia gama de dispositivos, incluyendo cualquier tipo de dispositivo de mano o estacionario, por ejemplo, ordenadores portátiles o portátiles, teléfonos móviles, teléfonos inteligentes, tabletas o tabletas, cámaras, ordenadores de escritorio, decodificadores, televisores, dispositivos de presentación visual, reproductores de medios digitales, consolas de videojuegos, dispositivos de transmisión de vídeo (tal como servidores de servicios de contenido o servidores de entrega de contenido), dispositivo receptor de difusión, dispositivo transmisor de difusión, o similares y no pueden
usar ningún tipo de sistema operativo. En algunos casos, el dispositivo de origen 12 y el dispositivo de destino 14 pueden estar equipados para comunicación inalámbrica. Por lo tanto, el dispositivo de origen 12 y el dispositivo de destino 14 pueden ser dispositivos de comunicación inalámbrica.
En algunos casos, el sistema de codificación de vídeo 10 ilustrado en la Figura 1A es simplemente un ejemplo y las técnicas de la presente solicitud pueden aplicarse a configuraciones de codificación de vídeo (por ejemplo, codificación de vídeo o decodificación de vídeo) que no necesariamente incluyen ninguna comunicación de datos entre los dispositivos de codificación y decodificación. En otros ejemplos, los datos se recuperan de una memoria local, se transmiten a través de una red o similares. Un dispositivo de codificación de vídeo puede codificar y almacenar datos en memoria y/o un dispositivo de decodificación de vídeo puede recuperar y decodificar datos de la memoria. En algunos ejemplos, la codificación y decodificación se lleva a cabo mediante dispositivos que no se comunican entre sí, sino que simplemente codifican datos en la memoria y/o recuperan y decodifican datos de la memoria.
Por conveniencia de la descripción, en este documento se describen modalidades de la invención, por ejemplo, por referencia a la codificación de vídeo de alta eficiencia (HEVC) o al software de referencia de codificación de vídeo versátil (WC), el estándar de codificación de vídeo de próxima generación desarrollado por el Equipo de colaboración conjunta sobre codificación de vídeo (JCT-VC) del Grupo de expertos en codificación de vídeo del UIT-T (VCEG) y del Grupo de expertos en imágenes en movimiento de ISO/IEC (MPEG). Un experto en la técnica comprenderá que las modalidades de la invención no se limitan a HEVC o VVC.
Codificador y método de codificación
La Figura 2 muestra un diagrama de bloques esquemático de un codificador de vídeo 20 de ejemplo que está configurado para implementar las técnicas de la presente solicitud. En el ejemplo de la Figura 2, el codificador de vídeo 20 comprende una entrada 201 (o interfaz de entrada 201), una unidad de cálculo residual 204, una unidad de procesamiento de transformación 206, una unidad de cuantificación 208, una unidad de cuantificación inversa 210 y una unidad de procesamiento de transformación inversa 212, una unidad de reconstrucción 214, una unidad de filtro de bucle 220, una memoria intermedia de imágenes decodificadas (DPB) 230, una unidad de selección de modo 260, una unidad de codificación de entropía 270 y una salida 272 (o interfaz de salida 272). La unidad de selección de modo 260 puede incluir una unidad de inter predicción 244, una unidad de intra predicción 254 y una unidad de división 262. La unidad de inter predicción 244 puede incluir una unidad de estimación de movimiento y una unidad de compensación de movimiento (no mostradas). Un codificador de vídeo 20 como el mostrado en la Figura 2 también puede denominarse codificador de vídeo híbrido o un codificador de vídeo de acuerdo con un códec de vídeo híbrido.
La unidad de cálculo residual 204, la unidad de procesamiento de transformación 206, la unidad de cuantificación 208, la unidad de selección de modo 260 puede denominarse formando una trayectoria de señal directa del codificador 20, mientras que la unidad de cuantificación inversa 210, la unidad de procesamiento de transformación inversa 212, la unidad de reconstrucción 214, la memoria intermedia 216, el filtro de bucle 220, la memoria intermedia de imágenes decodificadas (DPB) 230, la unidad de inter predicción 244 y la unidad de intra predicción 254 pueden denominarse formando una trayectoria de señal hacia atrás del codificador de vídeo 20, en donde la trayectoria de señal hacia atrás del codificador de vídeo 20 corresponde a la trayectoria de señal del decodificador (ver decodificador de vídeo 30 en la Figura 3). La unidad de cuantificación inversa 210, la unidad de procesamiento de transformación inversa 212, la unidad de reconstrucción 214, el filtro de bucle 220, la memoria intermedia de imágenes decodificadas (DPB) 230, la unidad de inter predicción 244 y la unidad de intra predicción 254 también se refieren a la formación del “decodificador incorporado” del codificador de vídeo 20.
Imágenes y división de imágenes (imágenes y bloques)
El codificador 20 puede configurarse para recibir, por ejemplo, a través de la entrada 201, una imagen 17 (o datos de imagen 17), por ejemplo, imagen de una secuencia de imágenes que formen un vídeo o secuencia de vídeo. La imagen o los datos de imagen recibidos también pueden ser una imagen preprocesada 19 (o datos de imagen preprocesados 19). En aras de la simplicidad, la siguiente descripción se refiere a la imagen 17. La imagen 17 también puede denominarse imagen actual o imagen que será codificada (en particular en la codificación de vídeo para distinguir la imagen actual de otras imágenes, por ejemplo, codificadas previamente y/o imágenes decodificadas de la misma secuencia de vídeo, es decir, la secuencia de vídeo que también comprende la imagen actual).
Una imagen (digital) es o puede considerarse como una matriz bidimensional o matriz de muestras con valores de intensidad. Una muestra de la matriz también puede denominarse pixel (forma abreviada de elemento de imagen) o pel. El número de muestras en dirección (o eje) horizontal y vertical de la matriz o imagen define el tamaño y/o resolución de la imagen. Para la representación del color, se emplean típicamente tres componentes de color, es decir, la imagen se puede representar o incluir tres matrices de muestra. En formato RBG o espacio de color, una imagen comprende una matriz de muestra roja, verde y azul correspondiente. Sin embargo, en la codificación de vídeo, cada pixel se representa típicamente en un formato de luminancia y crominancia o espacio de color, por
ejemplo, YCbCr, que comprende un componente de luminancia indicado por Y (a veces también se usa L en su lugar) y dos componentes de crominancia indicados por Cb y Cr. El componente de luminancia (o luma corta) Y representa el brillo o la intensidad del nivel de gris (por ejemplo, tal como en una imagen en escala de grises), mientras que los dos componentes de crominancia (o crominancia corta) Cb y Cr representan los componentes de información cromática o cromática. En consecuencia, una imagen en formato YCbCr comprende una matriz de muestra de luminancia de valores de muestra de luminancia (Y) y dos matrices de muestra de crominancia de valores de crominancia (Cb y Cr). Las imágenes en formato RGB se pueden convertir o transformar en formato YCbCr y viceversa, el proceso también se conoce como transformación o conversión de color. Si una imagen es monocromática, la imagen puede comprender solo una matriz de muestra de luminancia. En consecuencia, una imagen 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 crominancia en formato de color 4:2:0, 4:2:2 y 4:4:4.
Las modalidades del codificador de vídeo 20 pueden comprender una unidad de división de imágenes (no representada en la Figura 2) configurada para dividir la imagen 17 en una pluralidad de bloques de imagen 203 (normalmente no superpuestos). Estos bloques también pueden denominarse bloques de 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 división de imágenes puede configurarse para usar el mismo tamaño de bloque para todas las imágenes de una secuencia de vídeo y la cuadrícula correspondiente que define el tamaño de bloque, o para cambiar el tamaño de bloque entre imágenes o subconjuntos o grupos de imágenes, y dividir cada imagen en los bloques correspondientes.
En modalidades adicionales, el codificador de vídeo puede configurarse para recibir directamente un bloque 203 de la imagen 17, por ejemplo, uno, varios o todos los bloques que formen la imagen 17. El bloque de imagen 203 también puede denominarse bloque de imagen actual o bloque de imagen que será codificada.
Como la imagen 17, el bloque de imagen 203 es nuevamente o puede ser considerado como una matriz bidimensional o matriz de muestras con valores de intensidad (valores de muestra), aunque de menor dimensión que la imagen 17. En otras palabras, el bloque 203 puede comprender, por ejemplo, una matriz de muestra (por ejemplo, una matriz de luma en el caso de una imagen monocromática 17, o una matriz de luma o croma en el caso de una imagen en color) o tres matrices de muestra (por ejemplo, una matriz de luma y dos de croma en el caso de una imagen a color 17) o cualquier otro número y/o tipo de matrices de acuerdo con el formato de color aplicado. El número de muestras en la dirección (o eje) horizontal y vertical del bloque 203 define el tamaño del bloque 203. En consecuencia, un bloque puede, por ejemplo, una matriz de muestras MxN (columna M por fila N), o una matriz MxN de coeficientes de transformación.
Las modalidades del codificador de vídeo 20 como se muestra en la Figura 2 pueden configurarse para codificar la imagen 17 bloque por bloque, por ejemplo, la codificación y predicción se lleva a cabo por bloque 203.
Las modalidades del codificador de vídeo 20 como se muestra en la Figura 2 pueden configurarse adicionalmente para dividir y/o codificar la imagen usando segmentos (también denominados segmentos de vídeo), en donde una imagen puede dividirse o codificarse usando uno o más segmentos (típicamente no superpuestos), y cada segmento puede comprender uno o más bloques (por ejemplo, CTU).
Las modalidades del codificador de vídeo 20 como se muestra en la Figura 2 pueden configurarse además para dividir y/o codificar la imagen usando grupos de mosaicos (también denominados grupos de mosaicos de vídeo) y/o mosaicos (también denominados mosaicos de vídeo), en donde una imagen puede dividirse o codificarse usando uno o más grupos de mosaicos (normalmente no superpuestos), y cada grupo de mosaicos puede comprender, por ejemplo, uno o más bloques (por ejemplo, CTU) o uno o más mosaicos, en donde cada mosaico, por ejemplo, puede ser de forma rectangular y puede comprender uno o más bloques (por ejemplo, CTU), por ejemplo, bloques completos o fraccionarios.
Cálculo residual
La unidad de cálculo residual 204 puede configurarse para calcular un bloque residual 205 (también denominado residual 205) con base en el bloque de imagen 203 y un bloque de predicción 265 (más adelante se proporcionan más detalles sobre el bloque de predicción 265), por ejemplo, restando valores de muestra del bloque de predicción 265 de los valores de muestra del bloque de imagen 203, muestra por muestra (pixel por pixel) para obtener el bloque residual 205 en el dominio de muestra.
Transformación
La unidad de procesamiento de transformación 206 puede configurarse para aplicar una transformación, por ejemplo, una transformación de coseno discreta (DCT) o transformación de seno discreta (DST), en los valores de muestra del bloque residual 205 para obtener los coeficientes de transformación 207 en un dominio de transformada. Los coeficientes de transformación 207 también pueden denominarse coeficientes residuales de transformada y
representan el bloque residual 205 en el dominio de transformación.
La unidad de procesamiento de transformación 206 puede configurarse para aplicar aproximaciones enteras de DCT/DST, tales como las transformadas especificadas para H.265/HEVC. En comparación con una transformación DCT ortogonal, estas aproximaciones de números enteros se escalan típicamente por un cierto 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 generalmente se eligen en función de ciertas restricciones, tal como los factores de escala que son una potencia de dos para las operaciones de desplazamiento, la profundidad de bits de los coeficientes de transformación, el compromiso entre la precisión y los costos de implementación, etc. Los factores de escala específicos se especifican, por ejemplo, para la transformación inversa, por ejemplo mediante la unidad de procesamiento de transformación inversa 212 (y la correspondiente transformación inversa, por ejemplo, mediante la unidad de procesamiento de transformación inversa 312 en el decodificador de vídeo 30) y los factores de escala correspondientes para la transformación directa, por ejemplo, mediante la unidad de procesamiento de transformación 206, en un codificador 20 se puede especificar en consecuencia.
Las modalidades del codificador de vídeo 20 (respectivamente la unidad de procesamiento de transformación 206) pueden configurarse para dar salida a parámetros de transformación, por ejemplo, un tipo de transformación o transformada, por ejemplo, directamente o codificado o comprimido a través de la unidad de codificación de entropía 270, de modo que, por ejemplo, el decodificador de vídeo 30 pueda recibir y usar los parámetros de transformación para decodificar.
Cuantificación
La unidad de cuantificación 208 puede configurarse para cuantificar los coeficientes de transformación 207 para obtener coeficientes cuantificados 209, por ejemplo, aplicando cuantificación escalar o cuantificación vectorial. Los coeficientes cuantificados 209 también pueden denominarse coeficientes de transformación cuantificados 209 o coeficientes residuales cuantificados 209.
El proceso de cuantificación puede reducir la profundidad de bits asociada con algunos o todos los coeficientes de transformación 207. Por ejemplo, un coeficiente de transformación de n bits puede redondearse 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 se puede modificar ajustando un parámetro de cuantificación (QP). Por ejemplo, para la cuantificación escalar, se pueden aplicar diferentes escalas para lograr una cuantificación más fina o más gruesa. Los tamaños de paso de cuantificación más pequeños corresponden a una cuantificación más fina, mientras que los tamaños de paso de cuantificación más grandes corresponden a una cuantificación más gruesa. El tamaño del paso de cuantificación aplicable puede indicarse mediante un parámetro de cuantificación (QP). El parámetro de cuantificación puede ser, por ejemplo, un índice para un conjunto predefinido de tamaños de paso de cuantificación aplicables. Por ejemplo, los parámetros de cuantificación pequeños pueden corresponder a una cuantificación fina (tamaños de paso de cuantificación pequeños) y los parámetros de cuantificación grandes pueden corresponder a una cuantificación gruesa (tamaños de paso de cuantificación grandes) o viceversa.
La cuantificación puede incluir división por un tamaño de paso de cuantificación y una descuantificación correspondiente y/o inversa, por ejemplo, por la unidad de cuantificación inversa 210, puede incluir la multiplicación por el tamaño del paso de cuantificación. Las modalidades de acuerdo con algunas normas, por ejemplo, HEVC, pueden configurarse para usar un parámetro de cuantificación para determinar el tamaño del paso de cuantificación. Generalmente, el tamaño del paso de cuantificación puede calcularse con base en un parámetro de cuantificación usando una aproximación de punto fijo de una ecuación que incluya la división. Se pueden introducir factores de escala adicionales para la cuantificación y descuantificació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 paso de cuantificación y el parámetro de cuantificación. En una implementación de ejemplo, el escalado de la transformación inversa y la descuantificación podrían combinarse. Como alternativa, pueden usarse tablas de cuantificación personalizadas y señalizarse desde un codificador a un decodificador, por ejemplo, en un flujo de bits. La cuantificación es una operación con pérdidas, en donde la pérdida aumenta al aumentar los tamaños de los pasos de cuantificación.
Las modalidades del codificador de vídeo 20 (respectivamente la unidad de cuantificación 208) pueden configurarse para emitir parámetros de cuantificación (QP), por ejemplo, directamente o codificado mediante la unidad de codificación de entropía 270, de modo que, por ejemplo, el decodificador de vídeo 30 pueda recibir y aplicar los parámetros de cuantificación para la decodificación.
Cuantificació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 coeficientes 211 descuantificados, por ejemplo, aplicando la inversa del esquema de cuantificación aplicado por la unidad de cuantificación 208 con base en o
usando el mismo tamaño de paso de cuantificación que la unidad de cuantificación 208. Los coeficientes descuantificados 211 también pueden denominarse coeficientes residuales descuantificados 211 y corresponden -aunque normalmente no son idénticos a los coeficientes de transformación debido a la pérdida por cuantificación - a los coeficientes de transformación 207.
Transformación inversa
La unidad de procesamiento de transformación inversa 212 está configurada para aplicar la transformación inversa de la transformación aplicada por la unidad de procesamiento de transformación 206, por ejemplo, una transformación de coseno discreta inversa (DCT) o una transformación de seno discreta inversa (Ds t ) u otras transformaciones inversas, para obtener un bloque residual reconstruido 213 (o coeficientes descuantificados 213 correspondientes) en el dominio de muestra. El bloque residual reconstruido 213 también puede denominarse bloque de transformación 213.
Reconstrucción
La unidad de reconstrucción 214 (por ejemplo, agregador o sumador 214) está configurada para agregar el bloque de transformación 213 (es decir, el bloque residual reconstruido 213) al bloque de predicción 265 para obtener un bloque reconstruido 215 en el dominio de muestra, por ejemplo, añadiendo - muestra por muestra - los valores de muestra del bloque residual reconstruido 213 y los valores de muestra del bloque de predicción 265.
Filtración
La unidad de filtro de bucle 220 (o "filtro de bucle" corto 220), está configurada para filtrar el bloque reconstruido 215 para obtener un bloque filtrado 221 o, en general, para filtrar muestras reconstruidas para obtener muestras filtradas. La unidad de filtro de bucle está configurada, por ejemplo, para suavizar las transiciones de pixeles o mejorar de otro modo la calidad del vídeo. La unidad de filtro de bucle 220 puede comprender uno o más filtros de bucle tales como un filtro de desbloqueo, un filtro de compensación adaptativa de muestra (SAO) o uno o más de otros filtros, por ejemplo, un filtro bilateral, un filtro de bucle adaptativo (ALF), un filtro de nitidez, uno de suavizado o un filtro colaborativo, o cualquier combinación de los mismos. Aunque la unidad de filtro de bucle 220 se muestra en la Figura 2 como un filtro de bucle, en otras configuraciones, la unidad de filtro de bucle 220 puede implementarse como un filtro de bucle posterior. El bloque filtrado 221 también puede denominarse bloque reconstruido filtrado 221. Las modalidades del codificador de vídeo 20 (respectivamente la unidad de filtro de bucle 220) pueden configurarse para emitir parámetros de filtro de bucle (tales como información de compensación adaptativa de muestra), por ejemplo, directamente o codificado a través de la unidad de codificación de entropía 270, de modo que, por ejemplo, un decodificador 30 pueda recibir y aplicar los mismos parámetros de filtro de bucle o filtros de bucle respectivos para decodificar.
Memoria intermedia de imágenes decodificadas
La memoria intermedia de imágenes decodificadas (DPB) 230 puede ser una memoria que almacene imágenes de referencia, o en general datos de imágenes de referencia, para codificar datos de vídeo mediante el codificador de vídeo 20. La DPB 230 puede estar formada por cualquiera de una variedad de dispositivos de memoria, tales como memoria dinámica de acceso aleatorio (DRAM), que incluye DRAM síncrona (SDRAM), RAM magnetorresistiva (MRAM), RAM resistiva (RRAM) u otros tipos de dispositivos de memoria. La memoria intermedia de imágenes decodificadas (DPB) 230 puede configurarse para almacenar uno o más bloques filtrados 221. La memoria intermedia de imágenes decodificadas 230 puede configurarse además para almacenar otros bloques previamente filtrados, por ejemplo, bloques previamente reconstruidos y filtrados 221, de la misma imagen actual o de diferentes imágenes, por ejemplo, imágenes previamente reconstruidas, y puede proporcionar imágenes completas previamente reconstruidas, es decir, decodificadas (y bloques de referencia y muestras correspondientes) y/o una imagen actual parcialmente reconstruida (y bloques de referencia y muestras correspondientes), por ejemplo, para inter predicción. La memoria intermedia de imágenes decodificadas (DPB) 230 también puede configurarse para almacenar uno o más bloques reconstruidos sin filtrar 215 o, en general, muestras reconstruidas sin filtrar, por ejemplo, si el bloque reconstruido 215 no es filtrado por la unidad de filtro de bucle 220, o cualquier otra versión procesada adicional de los bloques o muestras reconstruidos.
Selección de modo (división y predicción)
La unidad de selección de modo 260 comprende la unidad de división 262, la unidad de inter predicción 244 y la unidad de intra predicción 254, y está configurada para recibir u obtener datos de imágenes originales, por ejemplo, un bloque original 203 (bloque actual 203 de la imagen actual 17), y datos de imagen reconstruidos, por ejemplo, muestras o bloques reconstruidos filtrados y/o sin filtrar de la misma imagen (actual) y/o de una o una pluralidad de imágenes decodificadas previamente, por ejemplo, desde la memoria intermedia de imágenes decodificadas 230 u otras memorias intermedias (por ejemplo, memoria intermedia de línea, no mostrada). Los datos de imagen reconstruidos se usan como datos de imagen de referencia para la predicción, por ejemplo, inter-predicción o intrapredicción, para obtener un bloque de predicción 265 o predictor 265.
La unidad de selección de modo 260 puede configurarse para determinar o seleccionar una división para un modo de predicción de bloque actual (que no incluye división) y un modo de predicción (por ejemplo, un modo de intra o inter predicción) y generar un bloque de predicción 265 correspondiente, que se usa para la cálculo del bloque residual 205 y para la reconstrucción del bloque reconstruido 215.
Las modalidades de la unidad de selección de modo 260 pueden configurarse para seleccionar el modo de división y predicción (por ejemplo, de los admitidos por o disponibles para la unidad de selección de modo 260), que proporcionen la mejor coincidencia o, en otras palabras, el residuo mínimo (el residuo mínimo significa mejor compresión para transmisión o almacenamiento), o una mínima sobrecarga de señalización (mínima sobrecarga de señalización significa mejor compresión para transmisión o almacenamiento), o que considere o equilibre ambos. La unidad de selección de modo 260 puede configurarse para determinar el modo de división y predicción con base en la optimización de distorsión de tasa (RDO), es decir, seleccionar el modo de predicción que proporcione una distorsión de tasa mínima. Términos como "mejor", "mínimo", "óptimo", etc. en este contexto no se refieren necesariamente a un "mejor", "mínimo", "óptimo" general, etc., sino que también pueden referirse al cumplimiento de un criterio de rescisión o selección como un valor que exceda o caiga por debajo de un umbral u otras restricciones que conduzcan potencialmente a una “selección subóptima” pero que reduzcan la complejidad y el tiempo de procesamiento.
En otras palabras, la unidad de división 262 puede configurarse para dividir el bloque 203 en divisiones o subbloques de bloques más pequeños (que forman nuevamente bloques), por ejemplo, usando iterativamente la división de cuatro árboles (QT), la división binaria (BT) o la división de tres árboles (TT) o cualquier combinación de las mismas, y para llevar a cabo, por ejemplo, la predicción para cada una de las divisiones o subbloques de bloque, en donde la selección de modo comprende la selección de la estructura de árbol del bloque dividido 203 y los modos de predicción se aplican a cada una de las divisiones de bloque o subbloques.
A continuación, se explicará con más detalle la división (por ejemplo, mediante la unidad de división 260) y el procesamiento de predicción (mediante la unidad de inter predicción 244 y la unidad de intra predicción 254) llevados a cabo por un codificador de vídeo 20 de ejemplo.
División
La unidad de división 262 puede dividir (o separar) un bloque actual 203 en divisiones 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 aún más en divisiones aún más pequeñas. Esto también se refiere a la división de árboles o la división jerárquica de árboles, en donde un bloque de raíz, por ejemplo, en el nivel de árbol raíz 0 (nivel de jerarquía 0, profundidad 0), puede dividirse de forma recursiva, por ejemplo, dividirse en dos o más bloques de un siguiente nivel de árbol inferior, por ejemplo, nodos en el nivel de árbol 1 (nivel de jerarquía 1, profundidad 1), en donde estos bloques pueden volver a dividirse en dos o más bloques de un nivel inferior siguiente, por ejemplo, nivel de árbol 2 (nivel de jerarquía 2, profundidad 2), etc. hasta que finalice la división, por ejemplo, porque se cumpla un criterio de terminación, por ejemplo, se alcance una profundidad máxima de árbol o un tamaño mínimo de bloque. Los bloques que no se dividen más también se denominan bloques hoja o nodos hoja del árbol. Un árbol que usa la división en dos divisiones se denomina árbol binario (BT), un árbol que usa la división en tres divisiones se denomina árbol ternario (TT) y un árbol que usa la división en cuatro divisiones se denomina árbol cuádruple (QT).
Como se mencionó anteriormente, el término "bloque" como se usa en este documento puede ser una parte, en particular una porción cuadrada o rectangular, de una imagen. Con referencia, por ejemplo, a HEVC y WC, el bloque puede ser o corresponder a una unidad de árbol de codificación (CTU), una unidad de codificación (CU), una unidad de predicción (PU) y una unidad de transformación (TU) y/o 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 luma, dos CTB correspondientes de muestras de croma de una imagen que tiene tres matrices de muestras, o un CTB de muestras de una imagen monocromática o una imagen que sea codificada usando tres planos de color separados y estructuras de sintaxis usadas 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, de manera que la división de un componente en CTB sea una división. Una unidad de codificación (CU) puede ser o comprender un bloque de codificación de muestras de luma, dos bloques de codificación correspondientes de muestras de crominancia de una imagen que tenga tres matrices de muestras, o un bloque de codificación de muestras de una imagen monocromática o una imagen que se codifique usando tres planos de color separados y estructuras de sintaxis que se usen para codificar las muestras. De manera correspondiente, un bloque de codificación (CB) puede ser un bloque MxN de muestras para algunos valores de M y N, de manera que la división de un CTB en bloques de codificación sea una división.
En modalidades, por ejemplo, de acuerdo con HEVC, una unidad de árbol de codificación (CTU) se puede dividir en CU usando una estructura de árbol cuádruple indicada como árbol de codificación. La decisión de codificar un área de imagen usando predicción entre imágenes (temporal) o intra imágenes (espacial) se toma a nivel de CU. Cada CU se puede dividir en una, dos o cuatro PU de acuerdo con 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 por PU. Después de obtener el bloque residual aplicando el proceso de predicción con base en el tipo de división de PU, una CU puede dividirse en unidades de transformación (TU) de acuerdo con otra estructura de árbol cuádruple similar al árbol de codificación de la CU.
En modalidades, por ejemplo, de acuerdo con el último estándar de codificación de vídeo actualmente en desarrollo, que se denomina codificación de vídeo versátil (VVC), se usa una división combinada de árbol cuádruple y árbol binario (QTBT) para dividir un bloque de codificación. En la estructura de bloques QTBT, una CU puede tener forma cuadrada o rectangular. Por ejemplo, una unidad de árbol de codificación (CTU) se divide primero en una estructura de cuatro árboles. Los nodos de hojas de cuatro árboles se dividen aún más mediante un árbol binario o una estructura de árbol ternaria (o triple). Los nodos hoja del árbol de división se denominan unidades de codificación (CU), y esa segmentación se usa para la predicción y el procesamiento de transformación sin más divisiones. Esto significa que CU, PU y TU tienen el mismo tamaño de bloque en la estructura del bloque de codificación QTBT. En paralelo, la división múltiple, por ejemplo, la división de árbol triple se puede usar junto con la estructura de bloques QTBT.
En un ejemplo, la unidad de selección de modo 260 del codificador 20 de vídeo puede configurarse para llevar a cabo cualquier combinación de las técnicas de división descritas en el presente documento.
Como se describió anteriormente, el codificador de vídeo 20 está configurado para determinar o seleccionar el mejor o un modo de predicción óptimo de un conjunto de modos de predicción (por ejemplo, predeterminados). El conjunto de modos de predicción puede comprender, por ejemplo, modos de intra-predicción y/o modos de inter-predicción. Intra-predicción
El conjunto de modos de intra-predicción puede comprender 35 modos diferentes de intra-predicción, por ejemplo, modos no direccionales como modo CC (o medio) y modo planar, o modos direccionales, por ejemplo, como se define en HEVC, o puede comprender 67 modos de intra-predicción diferentes, por ejemplo, modos no direccionales como modo CC (o medio) y modo planar, o modos direccionales, por ejemplo, como se define para VVC.
La unidad de intra-predicción 254 está configurada para usar muestras reconstruidas de bloques vecinos de la misma imagen actual para generar un bloque de intra-predicción 265 de acuerdo con un modo de intra-predicción del conjunto de modos de intra-predicción.
La unidad de intra-predicción 254 (o en general la unidad de selección de modo 260) está configurada además para enviar 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 de codificación de entropía 270 en forma de elementos de sintaxis 266 para su inclusión en los datos de imagen codificados 21, de modo que, por ejemplo, el decodificador de vídeo 30 pueda recibir y usar los parámetros de predicción para la decodificación.
Inter-predicción
El conjunto de (o posibles) modos de inter predicción depende de las imágenes de referencia disponibles (es decir, imágenes previas al menos parcialmente decodificadas, por ejemplo, almacenadas en DPB 230) y otros parámetros de inter predicción, por ejemplo, si la imagen de referencia completa o solo una parte, por ejemplo, un área de ventana de búsqueda alrededor del área del bloque actual, de la imagen de referencia se usa para buscar un bloque de referencia que coincida mejor, y/o por ejemplo, si se aplica la interpolación de pixeles, por ejemplo, interpolación media/semi-pel y/o 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 de inter predicción 244 puede incluir una unidad de estimación de movimiento (ME) y una unidad de compensación de movimiento (MC) (ambas no mostradas en la Figura 2). La unidad de estimación de movimiento puede configurarse para recibir u obtener el bloque de imagen 203 (bloque de imagen actual 203 de la imagen actual 17) y una imagen decodificada 231, o al menos uno o una pluralidad de bloques previamente reconstruidos, por ejemplo, bloques reconstruidos de una o una pluralidad de otras/diferentes imágenes previamente decodificadas 231, para la estimación del movimiento. Por ejemplo, una secuencia de vídeo puede comprender la imagen actual y las imágenes previamente decodificadas 231, o en otras palabras, la imagen actual y las imágenes previamente decodificadas 231 pueden ser parte o formar una secuencia de imágenes que formen una secuencia de vídeo. El codificador 20 puede, por ejemplo, estar configurado para seleccionar un bloque de referencia de una pluralidad de bloques de referencia de la misma o diferentes imágenes de la pluralidad de otras imágenes y proporcionar una
imagen de referencia (o índice de imagen de referencia) y/o un desplazamiento (desplazamiento espacial) entre la posición (coordenadas x, y) del bloque de referencia y la posición del bloque actual como parámetros de predicción entre 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 inter predicción y llevar a cabo una inter predicción con base en o usando el parámetro de inter predicción para obtener un bloque de inter predicción 265. La compensación de movimiento, llevada a cabo por la unidad de compensación de movimiento, puede implicar buscar o generar el bloque de predicción con base en el movimiento/vector de bloque determinado por estimación de movimiento, posiblemente realizando interpolaciones con precisión de subpixeles. El filtrado de interpolación puede generar muestras de pixeles adicionales a partir de muestras de pixeles conocidas, aumentando así potencialmente el número de bloques de predicción candidatos que pueden usarse para codificar un bloque de imagen. Al recibir el vector de movimiento para la PU del bloque de imagen actual, la unidad de compensación de movimiento puede ubicar el bloque de predicción al que apunta el vector de movimiento en una de las listas de imágenes de referencia.
La unidad de compensación de movimiento también puede generar elementos de sintaxis asociados con los bloques y segmentos de vídeo para su uso por el decodificador de vídeo 30 al decodificar los bloques de imagen del segmento de vídeo. Además o como una alternativa a los segmentos y los elementos de sintaxis respectivos, se pueden generar o usar grupos de mosaicos y/o mosaicos y los elementos de sintaxis respectivos.
Codificación de entropía
La unidad de codificación de entropía 270 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 (CABAC), codificación aritmética binaria adaptativa al contexto con base en sintaxis (SBAC), codificación de entropía de división de intervalo de probabilidad (PIPE) u otra metodología o técnica de codificación de entropía) o derivación (sin compresión) en los coeficientes cuantificados 209, parámetros de inter predicción, parámetros de intra predicción, parámetros de filtro de bucle y/u otros elementos de sintaxis para obtener datos de imagen codificados 21 que se pueden emitir a través de la salida 272, por ejemplo, en forma de un flujo de bits codificado 21, de modo que, por ejemplo, el decodificador de vídeo 30 pueda recibir y usar los parámetros para decodificar. El flujo de bits codificado 21 puede transmitirse al decodificador de vídeo 30 o almacenarse en una memoria para su posterior transmisión o recuperación mediante el decodificador de vídeo 30.
Se pueden usar otras variaciones estructurales del codificador de vídeo 20 para codificar el flujo de vídeo. Por ejemplo, un codificador 20 no a base de transformación puede cuantificar la señal residual directamente sin la unidad de procesamiento de transformación 206 para ciertos bloques o cuadros. En otra implementación, un codificador 20 puede tener la unidad de cuantificación 208 y la unidad de cuantificación inversa 210 combinadas en una sola unidad.
Decodificador y método de decodificación
La Figura 3 muestra un ejemplo de un decodificador de vídeo 30 que está configurado para implementar las técnicas de la presente solicitud. El decodificador de vídeo 30 está configurado para recibir datos de imagen codificados 21 (por ejemplo, flujo de bits codificado 21), por ejemplo, codificados por el codificador 20, para obtener una imagen decodificada 331. Los datos de imagen o flujo de bits codificados comprenden información para decodificar los datos de imagen codificados, por ejemplo, datos que representan bloques de imágenes de un segmento de vídeo codificado (y/o mosaicos o grupos de mosaicos) y elementos de sintaxis asociados.
En el ejemplo de la Figura 3, el decodificador 30 comprende una unidad de decodificación de entropía 304, una unidad de cuantificación inversa 310, una unidad de procesamiento de transformación inversa 312, una unidad de reconstrucción 314 (por ejemplo, un sumador 314), un filtro de bucle 320, una memoria intermedia de imágenes decodificadas (DPB) 330, una unidad de aplicación de modo 360, una unidad de inter predicción 344 y una unidad de intra predicción 354. La unidad de inter predicción 344 puede ser o incluir una unidad de compensación de movimiento. El decodificador de vídeo 30 puede, en algunos ejemplos, llevar a cabo una pasada de decodificación generalmente recíproca a la pasada de codificación descrita con respecto al codificador de vídeo 100 de la Figura 2. Como se explica con respecto al codificador 20, la unidad de cuantificación inversa 210, la unidad de procesamiento de transformación inversa 212, la unidad de reconstrucción 214, el filtro de bucle 220, la memoria intermedia de imágenes decodificadas (DPB) 230, la unidad de inter predicción 344 y la unidad de intra predicción 354 también se denominan formando el "decodificador incorporado" del codificador de vídeo 20. En consecuencia, la unidad de cuantificación inversa 310 puede ser idéntica en función a la unidad de cuantificación inversa 110, la unidad de procesamiento de transformación inversa 312 puede ser idéntica en función a la unidad de procesamiento de transformada inversa 212, la unidad de reconstrucción 314 puede ser idéntica en función a la unidad de reconstrucción 214, el filtro de bucle 320 puede ser idéntico en función al filtro de bucle 220, y la memoria intermedia
de imágenes decodificadas 330 puede ser idéntica en función a la memoria intermedia de imágenes 230. Por lo tanto, las explicaciones proporcionadas para las respectivas unidades y funciones del codificador de vídeo 20 se aplican correspondientemente a las respectivas unidades y funciones del decodificador de vídeo 30.
Decodificación de entropía
La unidad de decodificación de entropía 304 está configurada para analizar el flujo de bits 21 (o en general datos de imagen codificados 21) y llevar a cabo, por ejemplo, decodificación de entropía a los datos de imagen codificados 21 para obtener, por ejemplo, coeficientes cuantificados 309 y/o parámetros de codificación decodificados (no se muestra en la Figura 3), por ejemplo, cualquiera o todos los parámetros de inter predicción (por ejemplo, índice de imagen de referencia y vector de movimiento), parámetro de intra predicción (por ejemplo, modo o índice de intra predicción), parámetros de transformación, parámetros de cuantificación, parámetros de filtro de bucle y/u otros elementos de sintaxis. La unidad de decodificación de entropía 304 puede configurarse para aplicar los algoritmos o esquemas de decodificación correspondientes a los esquemas de codificación como se describe con respecto a la unidad de codificación de entropía 270 del codificador 20. La unidad de decodificación de entropía 304 puede configurarse además para proporcionar parámetros de inter predicción, parámetro de intra predicción y/u otros elementos de sintaxis a la unidad de aplicación de modo 360 y otros parámetros a otras unidades del decodificador 30. El decodificador de vídeo 30 puede recibir los elementos de sintaxis en el nivel de segmento de vídeo y/o en el nivel de bloque de vídeo. Además o como alternativa a los segmentos y los elementos de sintaxis respectivos, se pueden recibir y/o usar grupos de mosaicos y/o mosaicos y los elementos de sintaxis respectivos.
Cuantificación inversa
La unidad de cuantificación inversa 310 puede configurarse 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 de imagen codificados 21 (por ejemplo, analizando y/o decodificando, por ejemplo, mediante la unidad de decodificación de entropía 304) y aplicar con base en los parámetros de cuantificación una cuantificación inversa sobre los coeficientes cuantificados decodificados 309 para obtener los coeficientes descuantificados 311, que también pueden denominarse coeficientes de transformación 311. El proceso de cuantificación inversa puede incluir el uso de un parámetro de cuantificación determinado por el codificador de vídeo 20 para cada bloque de vídeo en el segmento de vídeo (o mosaico o grupo de mosaicos) para determinar un grado de cuantificación y, de la misma manera, un grado de cuantificación inversa que debe aplicarse.
Transformación inversa
La unidad de procesamiento de transformación inversa 312 puede configurarse para recibir coeficientes descuantificados 311, también denominados coeficientes de transformación 311, y para aplicar una transformación a los coeficientes descuantificados 311 para obtener bloques residuales reconstruidos 213 en el dominio de muestra. Los bloques residuales reconstruidos 213 también pueden denominarse bloques de transformación 313. La transformación puede ser una transformación inversa, por ejemplo, una DCT inversa, una DST inversa, una transformación de entero inverso o un proceso de transformación inversa conceptualmente similar. La unidad de procesamiento de transformación inversa 312 puede configurarse además para recibir parámetros de transformación o información correspondiente de los datos de imagen codificados 21 (por ejemplo, analizando y/o decodificando, por ejemplo, mediante la unidad de decodificación de entropía 304) para determinar la transformación que se aplicará a los coeficientes descuantificados 311.
Reconstrucción
La unidad de reconstrucción 314 (por ejemplo, agregador o sumador 314) puede configurarse para agregar el bloque residual reconstruido 313, al bloque de predicción 365 para obtener un bloque reconstruido 315 en el dominio de muestra, por ejemplo, sumando los valores de muestra del bloque residual reconstruido 313 y los valores de muestra del bloque de predicción 365.
Filtración
La unidad de filtro de bucle 320 (ya sea en el bucle de codificación o después del bucle de codificación) está configurada para filtrar el bloque reconstruido 315 para obtener un bloque filtrado 321, por ejemplo, para suavizar las transiciones de pixeles o mejorar la calidad del vídeo. La unidad de filtro de bucle 320 puede comprender uno o más filtros de bucle tales como un filtro de desbloqueo, un filtro de compensación adaptativa de muestra (SAO) o uno o más de otros filtros, por ejemplo, un filtro bilateral, un filtro de bucle adaptativo (ALF), un filtro de nitidez, uno de suavizado o un filtro colaborativo, o cualquier combinación de los mismos. Aunque la unidad de filtro de bucle 320 se muestra en la Figura 3 como un filtro en bucle, en otras configuraciones, la unidad de filtro de bucle 320 puede implementarse como un filtro de bucle posterior.
Memoria intermedia de imágenes decodificadas
Los bloques de vídeo decodificados 321 de una imagen se almacenan luego en la memoria intermedia de imágenes decodificadas 330, que almacena las imágenes decodificadas 331 como imágenes de referencia para la compensación de movimiento subsiguiente para otras imágenes y/o para la presentación visual de salida respectivamente.
El decodificador 30 está configurado para emitir la imagen decodificada 311, por ejemplo, a través de la salida 312, para presentación o presentación visual a un usuario.
Predicción
La unidad de inter predicción 344 puede ser idéntica a la unidad de inter predicción 244 (en particular a la unidad de compensación de movimiento) y la unidad de intra predicción 354 puede ser idéntica a la unidad de inter predicción 254 en función, y lleva a cabo decisiones de división o división y predicciones con base en los parámetros de división y/o predicción o la información respectiva recibida de los datos de imagen codificados 21 (por ejemplo, mediante análisis sintáctico y/o decodificación, por ejemplo, mediante la unidad de decodificación de entropía 304). La unidad de aplicación de modo 360 puede configurarse para llevar a cabo la predicción (intra o inter predicción) por bloque con base en imágenes reconstruidas, bloques o muestras respectivas (filtradas o sin filtrar) para obtener el bloque de predicción 365.
Cuando el segmento de vídeo se codifica como un segmento intra codificado (I), la unidad de intra predicción 354 de la unidad de aplicación de modo 360 está configurada para generar el bloque de predicción 365 para un bloque de imagen del segmento de vídeo actual con base en un modo de intra predicción señalizado y datos de bloques previamente decodificados de la imagen actual. Cuando la imagen de vídeo se codifica como un segmento inter codificado (es decir, B o P), la unidad de inter predicción 344 (por ejemplo, la unidad de compensación de movimiento) de la unidad de aplicación de modo 360 se configura para producir bloques de predicción 365 para un bloque de vídeo del segmento de vídeo actual con base en los vectores de movimiento y otros elementos de sintaxis recibidos de la unidad de decodificación de entropía 304. Para la inter predicción, los bloques de predicción pueden producirse a partir de una de las imágenes de referencia dentro de una de las listas de imágenes de referencia. El decodificador de vídeo 30 puede construir las listas de cuadros de referencia, Lista 0 y Lista 1, usando técnicas de construcción predeterminadas basadas en imágenes de referencia almacenadas en DPB 330. Se puede aplicar lo mismo o similar para o mediante modalidades usando grupos de mosaicos (por ejemplo, grupos de mosaicos de vídeo) y/o mosaicos (por ejemplo, mosaicos de vídeo) además o como alternativa a los segmentos (por ejemplo, segmentos de vídeo), por ejemplo, un vídeo se puede codificar usando grupos de mosaicos y/o mosaicos I, P o B. La unidad de aplicación de modo 360 está configurada para determinar la información de predicción para un bloque de vídeo del segmento de vídeo actual analizando los vectores de movimiento o información relacionada y otros elementos de sintaxis, y usa la información de predicción para producir los bloques de predicción para el bloque de vídeo actual que se está decodificando. Por ejemplo, la unidad de aplicación de modo 360 usa algunos de los elementos de sintaxis recibidos para determinar un modo de predicción (por ejemplo, intra o inter predicción) usado para codificar los bloques de vídeo del segmento de vídeo, un tipo de segmento entre predicciones (por ejemplo, segmento B, P segmento, o segmento GPB), información de construcción para una o más de las listas de imágenes de referencia para el segmento, vectores de movimiento para cada bloque de vídeo inter codificado del segmento, estado de predicción inter para cada bloque de vídeo inter codificado del segmento, y otros información para decodificar los bloques de vídeo en el segmento de vídeo actual. Se puede solicitar lo mismo o similar para o mediante modalidades que usen grupos de mosaicos (por ejemplo, grupos de mosaicos de vídeo) y/o mosaicos (por ejemplo, mosaicos de vídeo) además o como alternativa a los segmentos (por ejemplo, segmentos de vídeo), por ejemplo, un vídeo se puede codificar usando grupos de mosaicos y/o mosaicos I, P o B.
Las modalidades del decodificador de vídeo 30 como se muestra en la Figura 3 pueden configurarse para dividir y/o decodificar la imagen usando segmentos (también denominados segmentos de vídeo), en donde una imagen puede dividirse o decodificarse usando uno o más segmentos (típicamente no superpuestos), y cada segmento puede comprender uno o más bloques (por ejemplo, CTU).
Las modalidades del decodificador de vídeo 30 como se muestra en la Figura 3 pueden configurarse para dividir y/o decodificar la imagen usando grupos de mosaicos (también denominados grupos de mosaicos de vídeo) y/o mosaicos (también denominados mosaicos de vídeo), en donde que una imagen puede dividirse o decodificarse usando uno o más grupos de mosaicos (normalmente no superpuestos), y cada grupo de mosaicos puede comprender, por ejemplo, uno o más bloques (por ejemplo, CTU) o uno o más mosaicos, en donde cada mosaico, por ejemplo, puede ser de forma rectangular y puede comprender uno o más bloques (por ejemplo, CTU), por ejemplo, bloques completos o fraccionarios.
Se pueden usar otras variaciones del decodificador de vídeo 30 para decodificar los datos de imagen codificados 21. Por ejemplo, el decodificador 30 puede producir el flujo de vídeo de salida sin la unidad de filtrado de bucle 320. Por ejemplo, un decodificador no a base de transformación 30 puede cuantificar por inversión la señal residual directamente sin la unidad de procesamiento de transformación inversa 312 para ciertos bloques o cuadros. En otra implementación, el decodificador de vídeo 30 puede tener la unidad de cuantificación inversa 310 y la unidad de
procesamiento de transformación inversa 312 combinadas en una sola unidad.
Debe entenderse que, en el codificador 20 y el decodificador 30, un resultado de procesamiento de un paso actual puede procesarse adicionalmente y luego enviarse al siguiente paso. Por ejemplo, después del filtrado de interpolación, la derivación del vector de movimiento o el filtrado de bucle, se puede llevar a cabo una operación adicional, tal como recortar o desplazar, sobre el resultado del procesamiento del filtrado de interpolación, la derivación del vector de movimiento o el filtrado de bucle.
Cabe señalar que se pueden aplicar operaciones adicionales a los vectores de movimiento derivados del bloque actual (incluidos, entre otros, los vectores de movimiento puntuales del modo afín, los vectores de movimiento del subbloque en los modos afín, plano, ATMVP, vectores de movimiento temporal y pronto). Por ejemplo, el valor del vector de movimiento está restringido a un rango predefinido de acuerdo con sus bits de representación. Si los bits que representan el vector de movimiento son bitDepth, entonces el rango es -2A(bitDepth-1) ~ 2A(bitDepth-1)-1, en donde “A” significa exponenciación. Por ejemplo, si bitDepth se establece en 16, el rango es -32 768 ~ 32 767; si bitDepth se establece en 18, el rango es -131 072 ~ 131 071. Por ejemplo, el valor del vector de movimiento derivado (por ejemplo, los MV de cuatro subbloques 4x4 dentro de un bloque 8x8) está restringido de modo que la diferencia máxima entre las partes enteras de los cuatro MV del subbloque 4x4 no supere los N pixeles, tal como no más de 1 pixel. Aquí se proporcionan dos métodos para restringir el vector de movimiento de acuerdo con el bitDepth.
Método 1: elimine el MSB de desbordamiento (bit más significativo) mediante operaciones de flujo
ux= (mvx+2bitDepth) % 2bitDepth (1)
mvx = (ux >= 2bitDepth-1) ? (ux - 2bitDepth) : ux (2)
uy= (mvy+2bitDepth) % 2bitDepth (3)
mvy = (uy >= 2bitDepth-1) ? (uy - 2bitDepth) : uy (4)
en donde mvx es un componente horizontal de un vector de movimiento de un bloque de imagen o: un subbloque, mvy es un componente vertical de un vector de movimiento de un bloque de imagen o un subbloque, y ux y uy indican un valor intermedio;
Por ejemplo, si el valor de mvx es -32769, después de aplicar la fórmula (1) y (2), el valor resultante es 32767. En el sistema informático, los números decimales se almacenan como complemento a dos. El complemento a dos de -32 769 es 1,0111,1111,1111,1111 (17 bits), luego se descarta el MSB, por lo que el complemento a dos resultante es 0111,1111,1111,1111 (el número decimal es 32767), que es el mismo como salida aplicando la fórmula (1) y (2).
ux= (mvpx mvdx 2bitDepth) % 2bitDepth (5)
mvx = (ux >= 2bitDepth-1) ? (ux - 2bitDepth) : ux (6)
uy= (mvpy mvdy 2bitDepth) % 2bitDepth (7)
mvy = (uy >= 2bitDepth-1) ? (uy - 2bitDepth) : uy (8)
Las operaciones se pueden aplicar durante la suma de mvp y mvd, tal como se muestra en la fórmula (5) a (8). Método 2: eliminar el MSB de desbordamiento recortando el valor
vx = Clip3(-2bitDepth'1, 2bitDepth'1 -1, vx)
vy = Clip3(-2bitDepth'1, 2bitDepth'1 -1, vy)
en donde vx es un componente horizontal de un vector de movimiento de un bloque o subbloque de imagen, vy es un componente vertical de un vector de movimiento de un bloque o subbloque de imagen; x, y y z corresponden respectivamente a tres valores de entrada del proceso de recorte de MV, y la definición de la función Clip3 es la siguiente:
,'X z < x
Clip3(x, y, z) = jy I > y
(z de cualquier otra manera
La Figura 4 es un diagrama esquemático de un dispositivo de codificación de vídeo 400 de acuerdo con una modalidad de la invención. El dispositivo de codificación de vídeo 400 es adecuado para implementar las
modalidades descritas como se describe en este documento. En una modalidad, el dispositivo de codificación de vídeo 400 puede ser un decodificador tal como el decodificador de vídeo 30 de la Figura 1A o un codificador como el codificador de vídeo 20 de la Figura 1A.
El dispositivo de codificación de vídeo 400 comprende puertos de entrada 410 (o puertos de entrada 410) y unidades receptoras (Rx) 420 para recibir datos; un procesador, unidad lógica o unidad central de procesamiento (CPU) 430 para procesar los datos; unidades transmisoras (Tx) 440 y puertos de salida 450 (o puertos de salida 450) para transmitir los datos; y una memoria 460 para almacenar los datos. El dispositivo de codificación de vídeo 400 también puede comprender componentes óptico a eléctrico (OE) y componentes eléctrico a óptico (EO) acoplados a los puertos de entrada 410, las unidades receptoras 420, las unidades transmisoras 440 y los puertos de salida 450 para salida o entrada de señales ópticas o eléctricas.
El procesador 430 se implementa mediante hardware y software. El procesador 430 puede implementarse como uno o más chips de CPU, núcleos (por ejemplo, tal como un procesador de múltiples núcleos), FPGA, ASIC y DSP. El procesador 430 está en comunicación con los puertos de entrada 410, las unidades receptoras 420, las unidades transmisoras 440, los puertos de salida 450 y la memoria 460. El procesador 430 comprende un módulo de codificación 470. El módulo de codificación 470 implementa las modalidades descritas anteriormente. Por ejemplo, el módulo de codificación 470 implementa, procesa, prepara o proporciona las diversas operaciones de codificación. La inclusión del módulo de codificación 470 proporciona por lo tanto una mejora sustancial a la funcionalidad del dispositivo de codificación de vídeo 400 y efectúa una transformación del dispositivo de codificación de vídeo 400 a un estado diferente. Como alternativa, el módulo de codificación 470 se implementa como instrucciones almacenadas en la memoria 460 y ejecutadas por el procesador 430.
La memoria 460 puede comprender uno o más discos, unidades de cinta y unidades de estado sólido y puede usarse como un dispositivo de almacenamiento de datos de desbordamiento, para almacenar programas cuando dichos programas se seleccionan para su ejecución y para almacenar instrucciones y datos que son leer durante la ejecución del programa. La memoria 460 puede ser, por ejemplo, volátil y/o no volátil y puede ser una memoria de solo lectura (ROM), una memoria de acceso aleatorio (RAM), una memoria ternaria direccionable por contenido (TCAM) y/o una memoria de acceso aleatorio estática (SRAM).
La Figura 5 es un diagrama de bloques simplificado de un aparato 500 que puede usarse como uno o ambos del dispositivo de origen 12 y el dispositivo destino 14 de la Figura 1 de acuerdo con una modalidad ejemplar.
Un procesador 502 en el aparato 500 puede ser una unidad central de procesamiento. Como alternativa, el procesador 502 puede ser cualquier otro tipo de dispositivo, o varios dispositivos, capaces de manipular o procesar información existente ahora 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 sólo lectura (ROM) o un dispositivo de memoria de acceso aleatorio (RAM) en una implementación. Cualquier otro tipo adecuado de dispositivo de almacenamiento puede usarse como memoria 504. La memoria 504 puede incluir código y datos 506 a los que acceda el procesador 502 usando un bus 512. La memoria 504 puede incluir además un sistema operativo 508 y programas de aplicación 510, incluyendo los programas de aplicación 510 al menos un programa que permite al procesador 502 llevar a cabo los métodos descritos aquí. Por ejemplo, los programas de aplicación 510 pueden incluir aplicaciones 1 a N, que además incluyen una aplicación de codificación de vídeo que lleva a cabo los métodos descritos aquí.
El aparato 500 también puede incluir uno o más dispositivos de salida, tales como una pantalla 518. La pantalla 518 puede ser, en un ejemplo, una pantalla sensible al tacto que combina una pantalla con un elemento sensible al tacto que es operable para detectar entradas táctiles. La pantalla 518 se puede acoplar al procesador 502 a través del bus 512.
Aunque se muestra aquí como un solo bus, el bus 512 del aparato 500 puede estar compuesto por varios buses. Además, el almacenamiento secundario 514 se puede acoplar directamente a los otros componentes del aparato 500 o se puede acceder a él a través de una red y puede comprender una única unidad integrada como una tarjeta de memoria o varias unidades como varias tarjetas de memoria. Por tanto, el aparato 500 puede implementarse en una amplia variedad de configuraciones.
Antecedentes de intra predicción
Para capturar las direcciones de borde arbitrarias presentadas en vídeo natural, el número de modos intra direccionales en VTM6 se amplía de 33, tal como se usa en HEVC, a 65. Los modos planar y CC siguen siendo los mismos. Específicamente, los valores de todos los modos de intra predicción se definen en la Tabla 8-1:
Tabla 81 - Especificación del modo de intra predicción y nombres asociados
Intra predicción para el modo planar
Después del proceso de filtrado de muestras de referencia definido en el documento Codificación de vídeo versátil (Borrador 6) del Equipo conjunto de expertos en vídeo (JVET) de ITU-T SG 16 WP 3 e ISO/IEC JTC 1/SC 29/WG 11 (disponible en http://phenix.it-sudparis.eu/jvet/, documento no: JVET-O2001-vE) Especificación VVC, las muestras de referencia están listas. Con estas muestras de referencia, se puede generar la muestra de intra predicción (que también puede denominarse muestra intra predicha). Si el modo intra del bloque actual es planar o modo DC, se define el proceso de intra predicción correspondiente. Si el modo de intra predicción es angular (es decir, no planar ni DC), entonces se activa la predicción con modo angular.
El modo planar es un modo de predicción interna de uso frecuente. La Figura 6 muestra la idea para la intra predicción con el ancho y la altura de los conjuntos de bloques de predicción en N. La muestra predicha se compone de un componente horizontal y un componente vertical. El componente horizontal es una combinación lineal ponderada de las correspondientes muestras de referencia izquierda y derecha (ver la Figura 6A). El componente vertical es una combinación ponderada lineal de las muestras de referencia superior e inferior correspondientes (Figura 6B). Nótese que la columna derecha que se muestra en la Figura A se rellena con la muestra de referencia superior derecha p[N][-1] y la fila inferior que se muestra en la Figura 6B se rellena con la muestra de referencia inferior izquierda p[-1][N]. p[0][0] se encuentra en la esquina superior izquierda del bloque actual (predicción). Después de la generación del componente horizontal y vertical, la muestra de salida prevista es una combinación ponderada del componente horizontal y vertical (Figura 6C).
Más específicamente, la predicción en modo plano se define de la siguiente manera:
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..nThH 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. Las variables nW y nH se derivan de la siguiente manera:
nW = Max(nTbW, 2) (8-135)
nH = Max(nTbH, 2) (8-136)
Los valores de las muestras de predicción predSamples[x][y], con x = 0..nTbW -1 e y = 0..nTbH -1 , se derivan de la siguiente manera:
predV[x][y] = ((nH - 1 - y) * p[x][-1] (y 1) * p[-1][nTbH]) << Log2 (nW) (8-137) predH[x][y] = ((nW - 1 - x) * p[-1][y] (x 1) * p[nTbW][-1]) << Log2 (nH) (8-138) predSamples[x][y] = (predV[x][y] predH[x][y] nW* nH) >> (Log2 (nW) Log2 (nH) 1) (8-139) En este ejemplo, para predecir una muestra en la coordenada (x, y):
• p[-1][y] representa la muestra de referencia de la columna izquierda correspondiente
• p[nTbW][-1] representa la muestra de referencia de la columna derecha correspondiente. Nótese que las muestras de referencia de la columna de la derecha son las mismas y se rellenan con p[nTbW][-1]. p[nTbW][-1] es una muestra ubicada en el cruce de la columna de muestra de referencia derecha y la fila de muestra de referencia superior.
• p[x][-1] representa la muestra de referencia de la fila superior correspondiente.
• p[-1][nTbH] representa la muestra de referencia de la fila inferior correspondiente. Nótese que las muestras de referencia de la fila inferior son las mismas y se rellenan con p[-1][nTbH]. p[-1][nTbH] es una muestra ubicada en el
cruce de la fila de muestra de referencia inferior y la columna de muestra de referencia izquierda.
La Figura 7 muestra la posición de estas muestras de referencia, y la muestra de referencia de salida predSamples[x][y] corresponde a las muestras en el bloque de predicción actual, que está rodeado por un rectángulo discontinuo. El siguiente rectángulo discontinuo se usa para ilustrar las muestras p(0,0) -p (15,0) que se encuentran en el bloque de predicción actual. Las muestras de referencia, mostradas por una línea continua, son vecinas al bloque de predicción actual. En el ejemplo que se muestra en la Figura 7, p(-1)(-1) a p(-1,1) y p(0, -1) a p(15) (-1), son muestras de referencia. nTbW y nTbH representan el ancho y la altura del bloque de predicción, respectivamente. En este ejemplo particular, el bloque actual (bloque de predicción o bloque de transformación) tiene una altura nTbH de un pixel. Un bloque de predicción representa un bloque MxN rectangular de muestras que resultan de una predicción inter o una predicción interna, en donde M y N son números enteros positivos distintos de cero. De manera similar, un bloque de transformación representa un bloque KxL rectangular de muestras resultantes de una transformación, en donde K y L son números enteros positivos distintos de cero. Por lo general, después de que se genera un bloque de predicción, se genera el mismo tamaño de un bloque de transformación con la misma ubicación con la transformación (o la transformación inversa en la decodificación). Sin embargo, es posible que el tamaño y la ubicación de un bloque de predicción no siempre sean los mismos que los de su bloque de transformación asociado.
Se afirma que la intra predicción en modo plano es innecesariamente complicada, en particular para bloques con altura igual a 1.
En la especificación actual de VVC, para cada muestra predicha, implicaría cinco multiplicaciones y tres operaciones de cambio para el modo plano. Las cinco multiplicaciones incluyen dos en la generación del componente vertical, dos en la generación del componente horizontal y una en el cálculo de la muestra de salida. Las tres operaciones de turno se distribuyen en la generación de componente vertical y horizontal, con una cada una, y una en la generación de la muestra de salida (predSamples)
La especificación actual de VVC también garantiza que el componente vertical y horizontal se genere usando un filtro bilineal al garantizar que la altura mínima (nH) y la anchura mínima (nW) en la ecuación 8-139 sea dos.
En algunas modalidades de esta invención, se propone simplificar la predicción del modo plano para el bloque con altura igual a 1. Es decir, para este tipo de bloque, la generación de componente vertical usa la fila de muestra de referencia inferior, que se rellena con p[-1][nTbH]. En concreto, la generación de muestra vertical se calcula de acuerdo con la siguiente ecuación:
predV[x][y] = ((y 1) * p[-1][nTbH]) << Log2 (nW) (8-137') predH[x][y] = ((nW - 1 - x) * p[-1][y] (x 1) * p[nTbW][-1]) (8-138') predSamples[x][y] = (predV[x][y] predH[x][y] nW) >> (Log2 (nW) 1) (8-139') De esta manera, solo hay tres multiplicaciones y dos operaciones de desplazamiento en la predicción en modo plano para bloques con altura igual a uno (nTbH = 1).
En una modalidad, la predicción del modo plano se modifica en lo siguiente:
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,
- una variable nTbH que especifica la altura del bloque,
- 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. Las variables nW y nH se obtienen aplicando operaciones de recorte en nTbW y nTbH, respectivamente:
nW = Max(nTbW, 2) (8-135) nH = Max(nTbH, 2) (8-136)
Los valores de las muestras de predicción predSamples[x][y], con x = 0..nTbW -1 e y = 0..nTbH -1, se derivan de la siguiente manera:
Si nTbH es igual a 1:
predV[x][y] = ((y 1) * p[-1][nTbH]) << Log2 (nW) (8-137') predH[x][y] = ((nW - 1 - x) * p[-1][y] (x 1) * p[nTbW][-1]) (8-138') predSamples[x][y] = (predV[x][y] predH[x][y] nW) >> (Log2 (nW) 1) (8-139') de cualquier otra manera (nTbH no es igual a 1):
predV[x][y] = ((nH - 1 - y) * p[x][-1 ] (y 1) * p[-1][nTbH]) << Log2 (nW) (8-137) predH[x][y] = ((nW - 1 - x) * p[-1][y] (x 1) * p[nTbW][-1]) << Log2 (nH) (8-138) predSamples[x][y] = (predV[x][y] predH[x][y] nW* nH) >> (Log2 (nW) Log2 (nH) 1) (8-139) En otra modalidad, la predicción del modo plano se modifica en lo siguiente:
Las entradas a este proceso son:
- una variable nTbW que especifica el ancho del bloque,
- una variable nTbH que especifica la altura del bloque,
- 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 de predicción predSamples[x][y], con x = 0..nTbW -1 e y = 0..nTbH -1, se derivan de la siguiente manera:
predV[x][y] = ((nTbH -1 - y) * p[x][-1] (y 1) * p[-1][nTbH]) << Log2 (nTbW) (8 137 ") predH[x][y] = ((nTbW -1 - x) * p[-1 ][y] (x 1) * p[nTbW][-1]) << Log2 (nTbH) (8138 ") predSamples[x][y] = (predV[x][y] predH[x][y] nTbW * nTbH) >> (Log2 (nTbW) Log2 (nTbH) 1) (8139 '') De hecho, los iguales en las ramas if-else en la primera modalidad se pueden fusionar en los iguales como se muestra en esta modalidad. En comparación con los iguales 8-137 a 8-139, la complejidad se mantiene igual, sin embargo, se eliminan las operaciones de recorte para nTbW y nTbH.
En las modalidades anteriores, nTbW podría representar el ancho de un bloque de predicción o un bloque de transformación. Como se mencionó anteriormente, de acuerdo con algunas modalidades, el tamaño del bloque de transformación y el tamaño del bloque de predicción pueden ser iguales. Sin embargo, la invención reenviada no se limita a tales ejemplos.
En las modalidades anteriores, nTbH podría representar la altura de un bloque de predicción o un bloque de transformación.
En particular, se proporcionan los siguientes métodos y modalidades implementados por un dispositivo de decodificación o codificación. El dispositivo de decodificación puede ser el decodificador de vídeo 30 de la Figura 1A o el decodificador 30 de la Figura 3. El dispositivo de codificación puede ser el codificador de vídeo 20 de la Figura 1A o el codificador 20 de la Figura 2.
De acuerdo con una modalidad 800 (ver figura 8), el dispositivo determina que un modo de intra-predicción para el bloque actual es Planar en el bloque 801. La corriente puede ser un bloque de predicción o un bloque de transformación. El dispositivo también puede determinar si la altura o el ancho del bloque es igual a 1. La fila de muestra de referencia inferior del bloque se puede rellenar con p[-1][nTbH], y/o la columna de muestra de referencia derecha del El bloque se puede rellenar con p[nTbW][-1].
En el bloque 802, el dispositivo calcula un valor de un componente vertical de una muestra de intra predicción del bloque actual. El valor del componente vertical predV[x][y] se genera con un filtro lineal usando muestras de las filas de muestra de referencia superior e inferior, donde la fila de muestra inferior se rellena con la muestra ubicada en ( 1, nTbH) relacionada con la muestra superior izquierda del bloque actual. Por ejemplo,
predV[x][y] = ((nTbH -1 - y) * p[x][-1] (y 1) * p[-1][nTbH]) << Log2 (nTbW), donde
predV[x][y] representa el valor del componente vertical con x = 0..nTbW - 1 e y = 0..nTbH - 1, nTbH representa la altura del bloque, nTbW representa el ancho del bloque, y p[x][-1] representa muestras vecinas con x = 0..nTbW.
Particularmente, cuando la altura del bloque es igual a 1, predV[x][y] = ((y 1) * p[-1][nTbH]) << Log2 (nTbW). Cuando el ancho del bloque es igual a 1, predV[x][y] = ((nTbH -1 - y) * p[x][-1] (y 1) * p[-1][nTbH]).
De la descripción anterior, el ancho del bloque es nTbW y la altura del bloque es nTbH. No hay operación de recorte nW = Max (nTbW, 2) ni operación de recorte nH = Max (nTbH, 2) antes de calcular predV[x][y].
En el bloque 803, el dispositivo calcula un valor de un componente horizontal de la muestra de intra predicción del bloque actual.
El valor del componente horizontal predH[x][y] se genera con un filtro lineal usando muestras de las columnas de muestra de referencia izquierda y derecha, en donde la columna de muestra derecha se rellena usando la muestra ubicada en (nTbW, -1) relacionada con la muestra superior izquierda del bloque actual.
Por ejemplo, predH[x][y] = ((nTbW - 1 - x) * p[-1][y] (x 1) * p[nTbW][-1]) << Log2 (nTbH), en donde predH[x][y] representa el valor del componente horizontal con x = 0..nTbW - 1 e y = 0..nTbH - 1, nTbH representa la altura del bloque, nTbW representa el ancho del bloque, y p[-1][y] representa muestras vecinas con y = -1..nTbH.
En particular, cuando la altura del bloque es igual a 1, predH[x][y] = ((nTbW -1 - x) * p[-1][y] (x 1) * p[nTbW][-1]). Cuando el ancho del bloque es igual a 1, predH[x][y] = ((x 1) * p[nTbW][-1]) << Log2 (nTbH).
De manera similar, no hay operación de recorte nW = Max (nTbW, 2) ni operación de recorte nH = Max (nTbH, 2) antes de calcular predH[x][y].
No hay limitación con respecto a la secuencia entre el bloque 802 y 803. En otras palabras, las funciones del bloque 802 se pueden llevar a cabo antes, al mismo tiempo o después del bloque 803.
En el bloque 804, el dispositivo genera la muestra de intra predicción con base en el valor del componente vertical y el valor del componente horizontal.
Por ejemplo, la muestra de intra predicción se calcula como:
predSamples[x][y] = (predV[x][y] predH[x][y] nTbW * nTbH) >> (Log2 (nTbW) Log2 (nTbH) 1).
La información detallada para la predicción intra Planar se muestra en las modalidades mencionadas anteriormente. La Figura 9 ilustra modalidades de un dispositivo 900. El dispositivo 900 puede ser un decodificador de vídeo 30 de la Figura 1A, o un decodificador 30 de la Figura 3, o puede ser un codificador de vídeo 20 de la Figura 1A, o un codificador 20 de la Figura 2. El dispositivo 900 puede usarse para implementar la modalidad 800 y las otras modalidades descritas anteriormente.
El dispositivo de predicción intra Planar 900 incluye una unidad de determinación 901, una unidad de cálculo 902 y una unidad de predicción 903. La unidad de determinación 901, configurada para determinar que un modo de intra predicción para el bloque es plano. La unidad de cálculo 902, configurada para calcular un valor de un componente vertical de una muestra de intra predicción incluida en el bloque de la imagen. El valor del componente vertical predV[x][y] se genera con un filtro lineal usando muestras de las filas de muestra de referencia superior e inferior, en donde la fila de muestra inferior se rellena con la muestra ubicada en (-1, nTbH) relacionada con la muestra superior izquierda del bloque actual. Por ejemplo,
predV[x][y] = ((nTbH -1 - y) * p[x][-1] (y 1) * p[-1][nTbH]) << Log2 (nTbW),
donde
predV[x][y] representa el valor del componente vertical con x = 0..nTbW - 1 e y = 0..nTbH - 1, nTbH representa la altura del bloque, nTbW representa el ancho del bloque, y p[x][-1] representa muestras vecinas con x = 0..nTbW. La unidad de cálculo, configurada además para calcular un valor de un componente horizontal de la muestra de intra predicción, en donde el valor del componente horizontal predH[x][y] se genera con un filtro lineal usando muestras de las columnas de muestra de referencia izquierda y derecha, en donde la columna de muestra derecha se rellena usando la muestra ubicada en (nTbW, -1) relacionada con la muestra superior izquierda del bloque actual.
Por ejemplo, predH[x][y] = ((nTbW - 1 - x) * p[-1][y] (x 1) * p[nTbW][-1]) << Log2 (nTbH), en donde predH[x][y] representa el valor del componente horizontal con x = 0..nTbW - 1 e y = 0..nTbH - 1, nTbH representa la altura del bloque, nTbW representa el ancho del bloque, y p[-1][y] representa muestras vecinas con y = -1..nTbH.
Cuando la altura del bloque es igual a 1, la unidad de cálculo (902), configurada para calcular el valor del
componente vertical y el valor del componente horizontal mediante:
predV[x][y] = ((y 1) * p[-1][nTbH]) << Log2 (nTbW),
predH[x][y] = ((nTbW -1 - x) * p[-1 ][y] (x 1) * p[nTbW][-1]).
Cuando el ancho del bloque es igual a 1, la unidad de cálculo (902), configurada para calcular el valor del componente vertical y el valor del componente horizontal por:
predV[x][y] = ((nTbH -1 - y) * p[x][-1] (y 1) * p[-1][nTbH])
predH[x][y] = ((x 1) * p[nTbW][-1]) << Log2 (nTbH).
La unidad de predicción 903, configurada para generar la muestra de intra predicción con base en el valor del componente vertical y el valor del componente horizontal. Por ejemplo, la unidad de predicción (903), configurada para generar la muestra de intra predicción mediante:
predSamples[x][y] = (predV[x][y] predH[x][y] nTbW * nTbH) >> (Log2 (nTbW) Log2 (nTbH) 1).
El dispositivo puede incluir además una unidad de relleno (904). La unidad de relleno (904) configurada para rellenar la fila de muestra de referencia inferior del bloque o el bloque de transformación con p[-1][nTbH], en particular, cuando la altura del bloque o el bloque de transformación es igual a 1, o rellenar la columna de muestra de referencia derecha del bloque con p[nTbW][-1], en particular, cuando el ancho del bloque sea igual a 1.
Como se discutió anteriormente, en los casos convencionales relacionados con la intra predicción del modo plano, la determinación de muestras de bloques de predicción es innecesariamente complicada para algunos bloques. Se tuvieron que derivar dos variables nW y nH aplicando operaciones de recorte en nTbW y nTbH antes de calcular el valor del componente vertical y el valor del componente horizontal. Algunas modalidades de esta invención no llevan a cabo la operación de recorte nW = Max (nTbW, 2) y la operación de recorte nH = Max (nTbH, 2) antes de calcular los componentes verticales y horizontales. Por tanto, se simplifica la predicción aplicando el modo plano. En consecuencia, se aumenta la eficacia de codificación o decodificación.
La Figura 10 es un diagrama de bloques que muestra un sistema de suministro de contenido 3100 para llevar a cabo un servicio de distribución de contenido. Este sistema de suministro de contenido 3100 incluye el dispositivo de captura 3102, el dispositivo terminal 3106 y opcionalmente incluye la pantalla 3126. El dispositivo de captura 3102 se comunica con el dispositivo terminal 3106 a través del enlace de comunicación 3104. El enlace de comunicación puede incluir el canal de comunicación 13 descrito anteriormente. El enlace de comunicación 3104 incluye, entre otros, WIFI, Ethernet, Cable, inalámbrico (3G/4G/5G), USB o cualquier tipo de combinación de los mismos, o similares.
El dispositivo de captura 3102 genera datos y puede codificar los datos mediante el método de codificación como se muestra en las modalidades anteriores. Como alternativa, el dispositivo de captura 3102 puede distribuir los datos a un servidor de transmisión (no mostrado en las figuras), y el servidor codifica los datos y transmite los datos codificados al dispositivo terminal 3106. El dispositivo de captura 3102 incluye, pero no se limita a, una cámara, teléfono inteligente o almohadilla, ordenador u ordenador portátil, sistema de videoconferencia, PDA, dispositivo montado en un vehículo o una combinación de cualquiera de ellos, o similares. Por ejemplo, el dispositivo de captura 3102 puede incluir el dispositivo de origen 12 como el descrito anteriormente. Cuando los datos incluyen vídeo, el codificador de vídeo 20 incluido en el dispositivo de captura 3102 puede realmente llevar a cabo el procesamiento de codificación de vídeo. Cuando los datos incluyen audio (es decir, voz), un codificador de audio incluido en el dispositivo de captura 3102 puede llevar a cabo realmente el procesamiento de codificación de audio. Para algunos escenarios prácticos, el dispositivo de captura 3102 distribuye los datos de audio y vídeo codificados multiplexándolos juntos. Para otros escenarios prácticos, por ejemplo en el sistema de videoconferencia, los datos de audio codificados y los datos de vídeo codificados no se multiplexan. El dispositivo de captura 3102 distribuye los datos de audio codificados y los datos de vídeo codificados al dispositivo terminal 3106 por separado.
En el sistema de suministro de contenido 3100, el dispositivo terminal 310 recibe y reproduce los datos codificados. El dispositivo terminal 3106 podría ser un dispositivo con capacidad de recepción y recuperación de datos, tal como un teléfono inteligente o Pad 3108, ordenador u ordenador portátil 3110, grabadora de vídeo en red (NVR)/grabadora de vídeo digital (DVR) 3112, TV 3114, decodificador (STB) 3116, sistema de videoconferencia 3118, sistema de videovigilancia 3120, asistente digital personal (PDA) 3122, dispositivo montado en un vehículo 3124, o una combinación de cualquiera de ellos, o similar capaz de decodificar los datos codificados antes mencionados. Por ejemplo, el dispositivo terminal 3106 puede incluir el dispositivo de destino 14 como se describió anteriormente. Cuando los datos codificados incluyen vídeo, se prioriza el decodificador de vídeo 30 incluido en el dispositivo terminal para llevar a cabo la decodificación de vídeo. Cuando los datos codificados incluyen audio, se prioriza un decodificador de audio incluido en el dispositivo terminal para llevar a cabo el procesamiento de decodificación de audio.
Para un dispositivo terminal con su pantalla, por ejemplo, teléfono inteligente o Pad 3108, ordenador u ordenador portátil 3110, grabadora de vídeo en red (NVR)/grabadora de vídeo digital (DVR) 3112, TV 3114, asistente personal digital (PDA) 3122 o vehículo dispositivo montado 3124, el dispositivo terminal puede alimentar los datos decodificados a su pantalla. Para un dispositivo terminal equipado sin pantalla, por ejemplo, STB 3116, sistema de videoconferencia 3118 o sistema de videovigilancia 3120, se contacta con una pantalla externa 3126 para recibir y mostrar los datos decodificados.
Cuando cada dispositivo de este sistema lleva a cabo la codificación o decodificación, se puede usar el dispositivo de codificación de imágenes o el dispositivo de decodificación de imágenes, tal como se muestra en las modalidades mencionadas anteriormente.
La Figura 11 es un diagrama que muestra una estructura de un ejemplo del dispositivo terminal 3106. Después de que el dispositivo terminal 3106 recibe el flujo del dispositivo de captura 3102, la unidad de procedimiento de protocolo 3202 analiza el protocolo de transmisión del flujo. El protocolo incluye, entre otros, Protocolo de transmisión en tiempo real (RTSP), Protocolo de transferencia de hipertexto (HTTP), Protocolo de transmisión en vivo HTTP (HLS), MPEG-DASH, Protocolo de transporte en tiempo real (RTP), Protocolo de mensajería en tiempo real (RTMP), o cualquier tipo de combinación de los mismos, o similares.
Después de que la unidad de procedimiento de protocolo 3202 procesa el flujo, se genera el archivo de flujo. El archivo se envía a una unidad de demultiplexación 3204. La unidad de demultiplexación 3204 puede separar los datos multiplexados en los datos de audio codificados y los datos de vídeo codificados. Como se describió anteriormente, para 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 de vídeo 3206 y al decodificador de audio 3208 no a través de la unidad de demultiplexación 3204.
A través del procesamiento de demultiplexación, se generan el flujo elemental de vídeo (ES), el ES de audio y, opcionalmente, los subtítulos. El decodificador de vídeo 3206, que incluye el decodificador de vídeo 30 como se explica en las modalidades mencionadas anteriormente, decodifica el ES de vídeo mediante el método de decodificación como se muestra en las modalidades mencionadas anteriormente para generar una trama de vídeo, y alimenta estos datos a la unidad síncrona 3212. El decodificador de audio 3208 decodifica el ES de audio para generar una trama de audio y alimenta estos datos a la unidad síncrona 3212. Como alternativa, la trama de vídeo puede almacenarse en una memoria intermedia (no se muestra en la Figura 11) antes de alimentarla a la unidad síncrona 3212. De manera similar, la trama de audio puede almacenarse en una memoria intermedia (no mostrada en la Figura 11) antes de alimentarla a la unidad síncrona 3212.
La unidad síncrona 3212 sincroniza la trama de vídeo y la trama de audio, y suministra el vídeo/audio a una pantalla de vídeo/audio 3214. Por ejemplo, la unidad síncrona 3212 sincroniza la presentación de la información de vídeo y audio. La información puede codificarse en la sintaxis usando 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 incluyen subtítulos en la secuencia, el decodificador de subtítulos 3210 decodifica el subtítulo y lo sincroniza con la trama de vídeo y la trama de audio, y suministra el vídeo/audio/subtítulo a una pantalla de vídeo/audio/subtítulos 3216.
La presente invención no se limita al sistema mencionado anteriormente, y el dispositivo de codificación de imágenes o el dispositivo de decodificación de imágenes en las modalidades mencionadas anteriormente se pueden incorporar en otro sistema, por ejemplo, un sistema de automóvil.
Operadores matemáticos
Los operadores matemáticos usados en esta solicitud son similares a los usados en el lenguaje de programación C. Sin embargo, los resultados de la división de enteros y las operaciones de desplazamiento aritmético se definen con mayor precisión y se definen operaciones adicionales, tal como la exponenciación y la división en valores reales. Las convenciones de numeración y conteo generalmente comienzan desde 0, por ejemplo, "el primero" es equivalente al 0-ésimo, "el segundo" es equivalente al 1-ésimo, etc.
Operadores aritméticos
Los siguientes operadores aritméticos se definen de la siguiente manera:
Suma
- Resta (como operador de dos argumentos) o negación (como operador de prefijo unario)
* Multiplicación, incluida la multiplicación de matrices
xy Exponenciación. Especifica x elevado a y.. En otros contextos, dicha notación se usa para superíndices que no están destinados a ser interpretados como exponenciación.
/ División de enteros con truncamiento del resultado hacia cero. Por ejemplo, H4 y -7 / -4 se truncan a 1 y -7 / 4 y 7 / -4 se truncan a -1.
Se usa para denotar división en ecuaciones matemáticas donde no se pretende truncamiento o redondeo.
Se usa para denotar división en ecuaciones matemáticas donde no se pretende truncamiento o redondeo.
x % y Módulo. Resto de x dividido entre y, definido solo para enteros x e y con x> = 0 e y> 0.
Operadores lógicos
Los siguientes operadores lógicos se definen de la siguiente manera:
x && y lógico booleano"y" de x e y
x | | y lógico booleano "o" de x e y
! lógico booleano “no”
x ? y : z Si x es VERDADERO o no es igual a 0, se evalúa como el valor de y; de lo contrario, se evalúa al valor de z.
Operadores relacionales
Los siguientes operadores relacionales se definen de la siguiente manera:
> Mayor que
>= Mayor o igual que
< Menos de
<= Menor o igual a
= = Igual a
! = No es igual a
Cuando se aplica un operador relacional a un elemento sintáctico o variable al que se le ha asignado el valor "na" (no aplicable), el valor "na" se trata como un valor distinto para el elemento sintáctico o variable. Se considera que el valor "na" no es igual a ningún otro valor.
Operadores bit a bit
Los siguientes operadores bit a bit se definen como sigue:
& Bit a bit "y". Cuando se opera con argumentos enteros, opera con una representación en complemento a dos del valor entero. Cuando se opera con un argumento binario que contiene menos bits que otro argumento, el argumento más corto se amplía agregando más bits significativos iguales a 0.
| Bit a bit "o". Cuando se opera con argumentos enteros, opera con una representación en complemento a dos del valor entero. Cuando se opera con un argumento binario que contiene menos bits que otro argumento, el argumento más corto se amplía agregando más bits significativos iguales a 0.
a Bit a bit "exclusivo o" de bits. Cuando se opera con argumentos enteros, opera con una representación en complemento a dos del valor entero. Cuando se opera con un argumento binario que contiene menos bits que otro argumento, el argumento más corto se amplía agregando más bits significativos iguales a 0.
x >> y 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.
x << y Desplazamiento aritmético a la izquierda 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 menos significativos (LSB) como resultado del desplazamiento a la izquierda tienen un valor igual a 0.
Operadores de asignación
Los siguientes operadores aritméticos se definen de la siguiente manera:
= Operador de asignación
Incremento, es decir, x+ es equivalente a x = x 1; cuando se usa en un índice de matriz, evalúa el valor de la variable antes de la operación de incremento.
- - Decremento, es decir, x— es equivalente a x = x - 1; cuando se usa en un índice de matriz, evalúa el valor de la variable antes de la operación de disminución.
= Incremento por la cantidad especificada, es decir, x = 3 es equivalente a x = x 3, y
x = (-3) es equivalente ax = x (-3).
- = Decremento por la cantidad especificada, es decir, x - = 3 es equivalente ax = x - 3, y
x - = (-3) es equivalente a x = x -(-3).
Notación de rango
La siguiente notación se usa para especificar un rango de valores:
x = y..z x toma valores enteros comenzando desde y hasta z, inclusive, siendo x, y, z números enteros y z mayor que y.
Funciones matemáticas
Se definen las siguientes funciones matemáticas:
Asin(x) la función trigonométrica de seno inverso, que opera sobre un argumento x que está en el rango de -1.0 a 1.0, inclusive, con un valor de salida en el rango de -n 2 a n 2, inclusive, en unidades de radianes
Atan(x) la función trigonométrica inversa tangente, que opera sobre un argumento x, con un valor de salida en el rango de -n 2 a n 2, inclusive, en unidades de radianes
Ceil(x) el número entero más pequeño mayor o igual que x.
CliμlY (x) = Clip3(0, (1 << BitDepthY) - 1, x)
Clip1c(x) = Clip3(0, (1 << BitDepthc) - 1, x)
Cos(x) la función coseno trigonométrica que opera sobre un argumento x en unidades de radianes.
Floor(x) el entero más grande menor o igual a x.
Ln(x) el logaritmo natural de x (el logaritmo base-e donde e es el logaritmo natural base constante 2.718 281 828 ...).
Log2(x) el logaritmo de base-2 de x.
Log10(x) el logaritmo de base-10 de x.
Sin(x) la función seno trigonométrica que opera sobre un argumento x en unidades de radianes
Tan(x) la función tangente trigonométrica que opera sobre un argumento x en unidades de radianes Orden de precedencia de la operación
Cuando un orden de precedencia en una expresión no se indica explícitamente mediante el uso de paréntesis, se aplican las siguientes reglas:
- Las operaciones de mayor precedencia se evalúan antes que cualquier operación de menor precedencia.
- Las operaciones de la misma precedencia se evalúan secuencialmente de izquierda a derecha.
La siguiente tabla especifica la precedencia de las operaciones de mayor a menor; una posición más alta en la tabla indica una precedencia más alta.
Para aquellos operadores que también se usan en el lenguaje de programación C, el orden de precedencia usado en esta Especificación es el mismo que se usa en el lenguaje de programación C.
Tabla: Precedencia de operaciones desde la más alta (en la parte superior de la tabla) hasta la más baja (en la parte inferior de la tabla)
Descripción de texto de operaciones lógicas
En el texto, una declaración de operaciones lógicas como se describiría matemáticamente de la siguiente forma: if (condition 0)
statement 0
else if (condition 1)
statement 1
else/* comentario informativo sobre la condición restante */
statement n
puede describirse de la siguiente manera:
... como sigue /... se aplica lo siguiente:
- Si la condición es 0, la declaración es 0
- De lo contrario, si la condición es 1, la declaración es 1
- De lo contrario (comentario informativo sobre la condición restante), la declaración es n
Cada declaración "Si... De lo contrario, si... De lo contrario,..." en el texto se introduce con "... como sigue" o "... se aplica lo siguiente" inmediatamente seguido de "Si...". La última condición de "Si... De lo contrario, si... De lo contrario,..." es siempre "De lo contrario,...". Intercaladas "Si... De lo contrario, si... De lo contrario,..." las declaraciones se pueden identificar haciendo coincidir "... como sigue" o "... se aplica lo siguiente" con la terminación "De lo contrario,...".
En el texto, una declaración de operaciones lógicas como se describiría matemáticamente de la siguiente forma: if (condition 0a && condition 0b)
statement 0
else if (condition 1a | | condition 1b)
statement 1
else
statement n
puede describirse de la siguiente manera:
... como sigue /... se aplica lo siguiente:
- Si se cumplen todas las condiciones siguientes, declaración 0:
- condición 0a
- condición 0b
- De lo contrario, si una o más de las siguientes condiciones son verdaderas, declaración 1:
- condición 1a
- condición 1b
- De lo contrario, declaración n
En el texto, una declaración de operaciones lógicas como se describiría matemáticamente de la siguiente forma: if (condition 0)
statement 0
if (condition 1)
statement 1
puede describirse de la siguiente manera:
Cuando la condición 0, declaración 0
Cuando la condición 1, declaración 1
Aunque las modalidades de la invención se han descrito principalmente con base en la codificación de vídeo, debe tenerse en cuenta que las modalidades del sistema de codificación 10, el codificador 20 y el decodificador 30 (y en consecuencia el sistema 10) y las otras modalidades descritas en este documento también pueden configurarse para procesamiento o codificación de imágenes, es decir, el procesamiento o codificación de una imagen individual independientemente de cualquier imagen anterior o consecutiva como en la codificación de vídeo. En general, solo las unidades de inter predicción 244 (codificador) y 344 (decodificador) pueden no estar disponibles en caso de que la codificación de procesamiento de imágenes se limite a una sola imagen 17. Todas las demás funcionalidades (también denominadas herramientas o tecnologías) del codificador de vídeo 20 y el decodificador de vídeo 30 pueden usarse igualmente para el procesamiento de imágenes fijas, por ejemplo, cálculo residual 204/304, transformación 206, cuantificación 208, cuantificación inversa 210/310, transformación (inversa) 212/312, división 262/362, intra-predicción 254/354 y/o filtrado de bucle 220, 320 y codificación de entropía 270 y decodificación de entropía 304.
Modalidades, por ejemplo, del codificador 20 y el decodificador 30, y las funciones descritas en el presente documento, por ejemplo, con referencia al codificador 20 y al decodificador 30, puede implementarse en hardware, software, firmware o cualquier combinación de los mismos. Si se implementan en software, las funciones pueden
almacenarse en un medio legible por ordenador o transmitirse a través de medios de comunicación como una o más instrucciones o código y ejecutarse mediante una unidad de procesamiento con base en hardware. Los medios legibles por ordenador pueden incluir medios de almacenamiento legibles por ordenador, que corresponden a un medio tangible, tal como medios de almacenamiento de datos, o medios de comunicación, incluido cualquier medio que facilite la transferencia de un programa de informático de un lugar a otro, por ejemplo, de acuerdo con un protocolo de comunicación. De esta manera, los medios legibles por ordenador generalmente pueden corresponder a (1) medios de almacenamiento legibles por ordenador tangibles que no sean transitorios o (2) un medio de comunicación tal como una señal u onda portadora. Los medios de almacenamiento de datos pueden ser cualquier medio disponible al que se pueda acceder mediante uno o más ordenadores o uno o más procesadores para recuperar instrucciones, código y/o estructuras de datos para la implementación de las técnicas descritas en esta invención. Un producto de programa de informático puede incluir un medio legible por ordenador.
A modo de ejemplo, y no 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 se pueda usar para almacenar el código de programa deseado en forma de instrucciones o estructuras de datos y al que se puede acceder mediante un ordenador. Además, cualquier conexión se denomina correctamente un medio legible por ordenador. Por ejemplo, si las instrucciones se transmiten desde un sitio web, servidor u otra de origen remota usando un cable coaxial, cable de fibra óptica, par trenzado, línea de suscriptor digital (DSL) o tecnologías inalámbricas como infrarrojos, radio y microondas, entonces el cable coaxial, cable de fibra óptica, par trenzado, DSL o tecnologías inalámbricas como infrarrojos, radio y microondas se incluyen en la definición de medio. Sin embargo, debe entenderse que los medios de almacenamiento legibles por ordenador y los medios de almacenamiento de datos no incluyen conexiones, ondas portadoras, señales u otros medios transitorios, sino que están dirigidos a medios de almacenamiento tangibles y no transitorios. Disco digital y disco, tal como se usan en este documento, incluyen disco compacto (CD), disco láser, disco óptico, disco versátil digital (DVD), disquete y disco Blu-ray, en donde los discos generalmente reproducen datos magnéticamente, mientras que los discos digitales reproducen datos ópticamente con láser. Las combinaciones de los anteriores también deben incluirse dentro del alcance de los medios legibles por ordenador.
Las instrucciones pueden ser ejecutadas por uno o más procesadores, tal como uno o más procesadores de señales digitales (DSP), microprocesadores de propósitos generales, circuitos integrados específicos de aplicación (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 usa en el presente documento, puede referirse a cualquiera de las estructuras anteriores o cualquier otra estructura adecuada para la implementación de las técnicas descritas en el presente documento. Además, en algunos aspectos, la funcionalidad descrita en el presente documento puede proporcionarse dentro de módulos de hardware y/o software dedicados configurados para codificar y decodificar, o incorporarse en un códec combinado. Además, las técnicas podrían implementarse completamente en uno o más circuitos o elementos lógicos.
Las técnicas de esta invención pueden implementarse en una amplia variedad de dispositivos o aparatos, incluido un teléfono inalámbrico, un circuito integrado (IC) o un conjunto de IC (por ejemplo, un conjunto de chips). En esta descripción se describen varios componentes, módulos o unidades para enfatizar los aspectos funcionales de los dispositivos configurados para llevar a cabo las técnicas descritas, pero no necesariamente requieren la modalidad por diferentes unidades de hardware. Más bien, tal 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, que incluyen uno o más procesadores como se describió anteriormente, junto con software y/o firmware adecuados.
Claims (7)
1. Un método de predicción intra Planarcon una altura de un bloque igual a 1, que comprende:
calcular (802) un valor de un componente vertical predV[x][y] de una muestra de intra predicción incluida en un bloque, en donde el valor del componente vertical predV[x][y] es: predV[x][y] = ((y 1) * p[-1][nTbH]) << Log2 (nTbW);
calcular (803) un valor de un componente horizontal predH[x][y] de la muestra de intra predicción, en donde el valor del componente horizontal predH[x][y] es:
predH[x][y] = (( nTbW -1 - x ) * p[-1][y] (x 1)* p[nTbW][-1]); y
generar (804) la muestra de intra predicción predSamples[x][y] con base en el valor del componente vertical y el valor del componente horizontal,
en donde nTbH representa la altura del bloque, nTbW representa el ancho del bloque, p[x][y] representa muestras vecinas con x = -1, y = -1..nTbH y x = 0..nTbW, y = -1, y en donde el bloque es un bloque de transformación, o un bloque de predicción.
2. El método de conformidad con la reivindicación 1, en donde la muestra de intra predicción predSamples[x][y] se calcula mediante:
predSamples[x][y] = (predV[x][y] predH[x][y] nTbW * nTbH) >> (Log2 (nTbW) 1).
3. El método de conformidad con la reivindicación 1 o 2, en donde la fila de muestra de referencia inferior del bloque de predicción se rellena con p[-1][nTbH].
4. Un dispositivo de predicción intra planar en una imagen con una altura de un bloque igual a 1, que comprende: una unidad de cálculo (902), configurada para calcular un valor de un componente vertical de una muestra de intra predicción incluida en un bloque de la imagen, y calcular un valor de un componente horizontal de la muestra de intra predicción, en donde el valor del componente vertical predV[x][y] es:
predV[x][y] = ((y 1) * p[-1][nTbH]) << Log2 (nTbW), y el valor del componente horizontal predH[x][y] = ((nTbW - 1 - x) * p[-1][y] (x 1) * p[nTbW][-1]), nTbH representa la altura del bloque, nTbW representa el ancho del bloque, p[x][y] representa muestras vecinas con x = -1, y = -1..nTbH y x = 0..nTbW, y = -1, y en donde el bloque es un bloque de transformación, o un bloque de predicción;
una unidad de predicción (903), configurada para generar la muestra de intra predicción predSamples[ x][ y] con base en el valor del componente vertical y el valor del componente horizontal.
5. El dispositivo de conformidad con la reivindicación 4, en donde la unidad de predicción (903) está configurada para generar la muestra de intra predicción predSamples[x][y] mediante:
predSamples[x][y] = (predV[x][y] predH[x][y] nTbW) >> (Log2 (nTbW) 1).
6. El dispositivo de conformidad con la reivindicación 4 o 5, en donde el dispositivo comprende además una unidad de relleno (904), la unidad de relleno (904) configurada para rellenar la rellenar la fila de muestra de referencia inferior del bloque con p[-1][nTbH].
7. El dispositivo de conformidad con cualquiera de las reivindicaciones 4-7, en donde el dispositivo es un decodificador o un codificador.
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| EP2019075519 | 2019-09-23 | ||
| PCT/CN2020/116968 WO2021057755A1 (en) | 2019-09-23 | 2020-09-23 | An encoder, a decoder and corresponding methods of complexity reduction on intra prediction for the planar mode |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| ES2946487T3 true ES2946487T3 (es) | 2023-07-19 |
Family
ID=75166737
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| ES20867909T Active ES2946487T3 (es) | 2019-09-23 | 2020-09-23 | Un codificador, un decodificador y métodos correspondientes de reducción de complejidad en intra predicción para el modo planar |
Country Status (14)
| Country | Link |
|---|---|
| US (2) | US11616980B2 (es) |
| EP (3) | EP3932064B1 (es) |
| JP (1) | JP2024109748A (es) |
| KR (1) | KR20210129180A (es) |
| CN (2) | CN114900702B (es) |
| AU (1) | AU2020352269A1 (es) |
| BR (1) | BR112022005441A2 (es) |
| CA (1) | CA3155442A1 (es) |
| ES (1) | ES2946487T3 (es) |
| HU (1) | HUE062044T2 (es) |
| MX (1) | MX2021012982A (es) |
| PL (1) | PL3932064T3 (es) |
| PT (1) | PT3932064T (es) |
| WO (1) | WO2021057755A1 (es) |
Family Cites Families (10)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN102595120A (zh) * | 2011-01-14 | 2012-07-18 | 华为技术有限公司 | 一种空域预测编码方法、解码方法、装置和系统 |
| KR20130050149A (ko) | 2011-11-07 | 2013-05-15 | 오수미 | 인터 모드에서의 예측 블록 생성 방법 |
| US9516306B2 (en) * | 2013-03-27 | 2016-12-06 | Qualcomm Incorporated | Depth coding modes signaling of depth data for 3D-HEVC |
| KR20180005186A (ko) * | 2015-05-12 | 2018-01-15 | 삼성전자주식회사 | 인트라 예측을 수행하는 영상 복호화 방법 및 그 장치 및 인트라 예측을 수행하는 영상 부호화 방법 및 그 장치 |
| EP3244617A1 (en) * | 2016-05-13 | 2017-11-15 | Thomson Licensing | A method and device for deblocking filtering a boundary within an intra predicted block |
| CN116668688A (zh) * | 2016-08-08 | 2023-08-29 | Lg电子株式会社 | 视频信号解码装置、视频信号编码装置和发送数据的装置 |
| EP3577899A4 (en) * | 2017-01-31 | 2020-06-17 | Sharp Kabushiki Kaisha | SYSTEMS AND METHODS FOR SCALING TRANSFORMATION COEFFICIENT LEVELS |
| US11509889B2 (en) * | 2018-06-27 | 2022-11-22 | Kt Corporation | Method and apparatus for processing video signal |
| US10284844B1 (en) * | 2018-07-02 | 2019-05-07 | Tencent America LLC | Method and apparatus for video coding |
| KR102634068B1 (ko) * | 2018-08-24 | 2024-02-05 | 지티이 코포레이션 | 시각 미디어 인코딩 및 디코딩을 위한 평면 예측 모드 |
-
2020
- 2020-09-23 CA CA3155442A patent/CA3155442A1/en active Pending
- 2020-09-23 EP EP20867909.2A patent/EP3932064B1/en active Active
- 2020-09-23 ES ES20867909T patent/ES2946487T3/es active Active
- 2020-09-23 BR BR112022005441A patent/BR112022005441A2/pt unknown
- 2020-09-23 WO PCT/CN2020/116968 patent/WO2021057755A1/en not_active Ceased
- 2020-09-23 CN CN202210368844.6A patent/CN114900702B/zh active Active
- 2020-09-23 EP EP23167944.0A patent/EP4236313B1/en active Active
- 2020-09-23 KR KR1020217030655A patent/KR20210129180A/ko not_active Ceased
- 2020-09-23 AU AU2020352269A patent/AU2020352269A1/en active Pending
- 2020-09-23 CN CN202080062927.1A patent/CN114402606A/zh active Pending
- 2020-09-23 HU HUE20867909A patent/HUE062044T2/hu unknown
- 2020-09-23 EP EP25188374.0A patent/EP4622267A3/en active Pending
- 2020-09-23 PT PT208679092T patent/PT3932064T/pt unknown
- 2020-09-23 MX MX2021012982A patent/MX2021012982A/es unknown
- 2020-09-23 PL PL20867909.2T patent/PL3932064T3/pl unknown
-
2021
- 2021-09-17 US US17/478,621 patent/US11616980B2/en active Active
-
2022
- 2022-06-27 US US17/850,123 patent/US12063388B2/en active Active
-
2024
- 2024-05-21 JP JP2024082547A patent/JP2024109748A/ja active Pending
Also Published As
| Publication number | Publication date |
|---|---|
| JP2022531544A (ja) | 2022-07-07 |
| EP4622267A3 (en) | 2025-12-17 |
| CN114900702B (zh) | 2023-04-04 |
| EP4236313B1 (en) | 2025-09-03 |
| US11616980B2 (en) | 2023-03-28 |
| US20220014784A1 (en) | 2022-01-13 |
| WO2021057755A1 (en) | 2021-04-01 |
| BR112022005441A2 (pt) | 2022-10-11 |
| EP4622267A2 (en) | 2025-09-24 |
| CA3155442A1 (en) | 2021-04-01 |
| EP4236313C0 (en) | 2025-09-03 |
| EP4236313A3 (en) | 2023-09-13 |
| HUE062044T2 (hu) | 2023-09-28 |
| EP4236313A2 (en) | 2023-08-30 |
| CN114402606A (zh) | 2022-04-26 |
| MX2021012982A (es) | 2021-12-10 |
| KR20210129180A (ko) | 2021-10-27 |
| AU2020352269A1 (en) | 2022-04-14 |
| EP3932064B1 (en) | 2023-05-03 |
| US12063388B2 (en) | 2024-08-13 |
| JP2024109748A (ja) | 2024-08-14 |
| EP3932064A1 (en) | 2022-01-05 |
| US20220337870A1 (en) | 2022-10-20 |
| EP3932064A4 (en) | 2022-08-10 |
| PT3932064T (pt) | 2023-06-05 |
| CN114900702A (zh) | 2022-08-12 |
| PL3932064T3 (pl) | 2023-07-17 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| ES2966479T3 (es) | Un codificador, un decodificador y métodos correspondientes para la intrapredicción | |
| ES2946909T3 (es) | Método, aparato y producto de programa informático para interpredicción | |
| KR102596735B1 (ko) | 루마 및 크로마 성분에 대한 ibc 전용 버퍼 및 디폴트 값 리프레싱을 사용하는 인코더, 디코더 및 대응하는 방법들 | |
| ES3024974T3 (en) | An encoder, a decoder and corresponding methods for sub-block partitioning mode | |
| ES2987742T3 (es) | Método y aparato para intrapredicción | |
| ES2972326T3 (es) | Un codificador, un decodificador y métodos correspondientes para el modo de fusión | |
| CN113748677A (zh) | 编码器、解码器及对应的帧内预测方法 | |
| ES2985369T3 (es) | Un codificador, un decodificador y métodos correspondientes de derivación de croma de modo intra | |
| WO2020253830A1 (en) | Chroma sample weight derivation for geometric partition mode | |
| CN116708797A (zh) | 运动信息存储方法及装置 | |
| ES2992660T3 (en) | Method and apparatus for chroma intra prediction in video coding | |
| ES2946058T3 (es) | Un codificador, un decodificador y los métodos correspondientes que usan la codificación intramodo para la intrapredicción | |
| ES2967903T3 (es) | Codificador, decodificador y métodos correspondientes utilizando filtrado por interpolación | |
| CN114830652B (zh) | 用于方向性帧内预测的参考样本插值滤波的方法及装置 | |
| CN115278227B (zh) | 一种由解码设备或编码设备实现的译码方法,编码器和解码器 | |
| ES2946487T3 (es) | Un codificador, un decodificador y métodos correspondientes de reducción de complejidad en intra predicción para el modo planar | |
| EP4059220A2 (en) | Method and apparatus of position dependent prediction combination | |
| WO2021045655A9 (en) | Method and apparatus for intra prediction |