ES2960283T3 - Método y aparato para el filtrado de la interpolación para la intra e interpredicción en la codificación de vídeo - Google Patents

Método y aparato para el filtrado de la interpolación para la intra e interpredicción en la codificación de vídeo Download PDF

Info

Publication number
ES2960283T3
ES2960283T3 ES19856848T ES19856848T ES2960283T3 ES 2960283 T3 ES2960283 T3 ES 2960283T3 ES 19856848 T ES19856848 T ES 19856848T ES 19856848 T ES19856848 T ES 19856848T ES 2960283 T3 ES2960283 T3 ES 2960283T3
Authority
ES
Spain
Prior art keywords
block
prediction
interpolation
intra
video
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
Application number
ES19856848T
Other languages
English (en)
Inventor
Jianle Chen
Vasily Alexeevich Rufitskiy
Alexey Konstantinovich Filippov
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Application granted granted Critical
Publication of ES2960283T3 publication Critical patent/ES2960283T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods 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/117Filters, e.g. for pre-processing or post-processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/523Motion estimation or motion compensation with sub-pixel accuracy
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods 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/103Selection of coding mode or of prediction mode
    • H04N19/105Selection 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods 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/103Selection of coding mode or of prediction mode
    • H04N19/107Selection of coding mode or of prediction mode between spatial and temporal predictive coding, e.g. picture refresh
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods 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/103Selection of coding mode or of prediction mode
    • H04N19/11Selection of coding mode or of prediction mode among a plurality of spatial predictive coding modes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods 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/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods 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/17Methods 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/176Methods 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods 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/182Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a pixel
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods 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/186Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/59Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial sub-sampling or interpolation, e.g. alteration of picture size or resolution
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • H04N19/82Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

Un método de codificación de video, en donde el método comprende procesamiento de interpredicción de un primer bloque, en donde el procesamiento de interpredicción comprende filtrado de interpolación de subpíxeles de muestras de un bloque de referencia; procesamiento de intrapredicción de un segundo bloque, en el que el procesamiento de intrapredicción comprende filtrado por interpolación de subpíxeles de muestras de referencia; en el que el método comprende además seleccionar coeficientes de filtro de interpolación para el filtrado de interpolación de subpíxeles basándose en un desplazamiento de subpíxeles entre las posiciones de las muestras de referencia enteras y las posiciones de las muestras de referencia fraccionarias, en el que para los mismos desplazamientos de subpíxeles se seleccionan los mismos coeficientes de filtro de interpolación para el procesamiento intra-predicción y procesamiento de interpredicción. (Traducción automática con Google Translate, sin valor legal)

Description

DESCRIPCIÓN
Método y aparato para el filtrado de la interpolación para la intra e interpredicción en la codificación de vídeo
Campo Técnico
La presente descripción se refiere al campo técnico de la codificación y descodificación de imágenes y/o vídeo, y en particular a un método y aparato para el filtrado de la interpolación utilizada en la intrapredicción y la interpredicción.
Antecedentes
El vídeo digital se ha utilizado ampliamente desde la introducción de discos DVD. Un vídeo se codifica y transmite mediante un medio de transmisión. Un observador recibe el vídeo, y un dispositivo de visualización se utiliza para descodificar y visualizar el vídeo. A lo largo de los años, la calidad del vídeo ha mejorado, por ejemplo, debido a resoluciones, profundidades de color y velocidades de marcos más altas. Esto tiene lugar a flujos de datos más grandes que hoy en día se transportan comúnmente en internet y redes de comunicación móvil.
Los vídeos de resolución más alta, sin embargo, normalmente requieren más ancho de banda ya que tienen más información. Para reducir los requisitos de ancho de banda, se han introducido normas de codificación de vídeo que implican compresión del vídeo. Como se codifica el vídeo, se reducen los requisitos de ancho de banda (o los requisitos de memoria correspondientes en caso de almacenamiento). Frecuentemente, esta reducción se produce a costa de la calidad. Por lo tanto, los estándares de codificación de vídeo intentan encontrar un equilibrio entre los requisitos y la calidad del ancho de banda.
La codificación de vídeo de alta eficiencia (HEVC) es un ejemplo de una norma de codificación de vídeo que es comúnmente conocida por los expertos en la técnica. En HEVC, una unidad de codificación (CU) se divide en unidades de predicción (PU) o unidades de transformación (TU). El estándar de próxima generación de Codificación de Vídeo Versátil (VVC) es el proyecto de vídeo conjunto más reciente del grupo de Expertos en Codificación de Vídeo de ITU-T (VCEG) y las organizaciones de estandarización del Grupo de Expertos en Imágenes en Movimiento de ISO/IEC (MPEG), que colaboran en una asociación conocida como el Equipo Conjunto de Exploración de Vídeo (JVET). VVC también se conoce como el estándar ITU-T H.266/Próxima Generación de Codificación de Vídeo (NGVC). En VVC, se pueden eliminar los conceptos de múltiples tipos de partición, es decir, la separación de los conceptos CU, PU y TU, excepto lo necesario para las CU que tienen un tamaño demasiado grande para la longitud máxima de transformación, y soporta más flexibilidad para formas de partición CU.
El procesamiento de estas unidades de codificación (CU) (también denominadas bloques) depende de su tamaño, posición espacial y modo de codificación especificado por un codificador. Los modos de codificación se pueden clasificar en dos grupos según el tipo de predicción: modos de intrapredicción e interpredicción. Los modos de intrapredicción usan muestras de la misma imagen (también denominada trama o imagen) para generar muestras de referencia, para calcular los valores de predicción para muestras de un bloque que se reconstruye. La intrapredicción también se denomina predicción espacial. Los modos de interpredicción están diseñados para la predicción temporal y utilizan muestras de referencia de imagen anterior, actual (misma) o siguiente para predecir muestras del bloque de la imagen actual.
UIT-T VCEG (Q6/16) e ISO/IEC MPEG (JTC 1/SC 29/WG 11) están estudiando la necesidad potencial de estandarización de la futura tecnología de codificación de vídeo con una capacidad de compresión, que excede significativamente la norma actual de HEVC (incluyendo sus extensiones actuales y extensiones casi a término para codificación de contenido de pantalla y codificación de alto rango dinámico). Los grupos están colaborando en esta actividad de exploración en un esfuerzo conjunto de colaboración conocido como el Equipo Conjunto de Exploración de Vídeo (JVET) para evaluar los diseños de tecnología de compresión propuestos por sus expertos en este campo.
El estándar VTM (Modelo de Prueba Versátil) utiliza 35 intramodos, mientras que el BMS (Conjunto de Referencia) utiliza 67 intramodos.
El esquema de codificación intramodo descrito actualmente en BMS se considera complejo y una desventaja del conjunto de modos no seleccionados es que la lista de índice siempre es constante y no es adaptativa basándose en las propiedades de bloque actuales (p.ej., sus bloques adyacentes INTRAmodos).
TOURAPIS A M ET AL: “ Inter/Intra Block Copy Unification: Comments and Observations” , 21. JCT-VC MEETING; 19 6-2015 - 26-6-2015; WARSAW; (JOINT COLLABORATIVE TEAM ON VIDEO CODING OF ISO/IEC JTC1/SC29/WG11 AND ITU-T SG.16), XP 030117586, describe un proceso de interpredicción unificada y de copia intrabloque.
RAPAKA (QUALCOMM) K ET AL: “ Intra block copy chroma interpolation for Non-444” , no. JCTVC-U0080, 15 June 2015 (2015-06-15), XP030241535, describe procesos de derivación del vector de movimiento croma para copia intrabloque.
Resumen
Se describe un aparato y un método para el filtrado de la interpolación en la intrapredicción y la interpredicción. El aparato y el método utilizan un mismo proceso de interpolación de muestras para unificar el procedimiento de cálculo para la interpredicción e intra, lo que permite mejorar la eficiencia de codificación. El alcance de protección está definido por las reivindicaciones. La palabra “ invención” , como se utiliza en la presente descripción, se refiere al concepto inventivo como se entiende por el solicitante en el momento de la presentación de la solicitud de patente. La materia para la cual se busca protección está definida por las reivindicaciones adjuntas. Todas las siguientes instancias de la palabra “ realización(es)” , si se refieren a combinaciones de características diferentes de las definidas por las reivindicaciones independientes, se refieren a ejemplos que se presentaron originalmente pero que no representan realizaciones de la invención actualmente reivindicada; estos ejemplos todavía se mantienen con fines ilustrativos solamente.
El objeto anterior y otros objetos se logran mediante la materia de las reivindicaciones independientes. Las formas de implementación adicionales son evidentes a partir de las reivindicaciones dependientes, la descripción y las figuras. Las realizaciones particulares se describen en las reivindicaciones independientes adjuntas, con otras realizaciones en las reivindicaciones dependientes.
Breve descripción de los dibujos
En las siguientes realizaciones de la invención se describen con más detalle con referencia a las figuras y dibujos adjuntos, en los que:
la Figura 1 es un diagrama de bloques que muestra un ejemplo de un sistema de codificación de vídeo configurado para implementar realizaciones 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 realizaciones de la invención;
la Figura 3 es un diagrama de bloques que muestra un ejemplo de estructura de un descodificador de vídeo configurado para implementar realizaciones de la invención;
la Figura 4 muestra un ejemplo de 67 modos de intrapredicción;
la Figura 5 muestra un ejemplo de filtros de interpolación utilizados en la interpredicción e intrapredicción;
la Figura 6 muestra otro ejemplo de filtros de interpolación utilizados en la interpredicción e intrapredicción;
la Figura 7 muestra otro ejemplo de filtros de interpolación utilizados en la interpredicción e intrapredicción;
la Figura 8 muestra una realización de la invención reusando un filtro de interpolación de 4 derivaciones para la interpredicción e intrapredicción;
la Figura 9 muestra otra realización de la invención reusando un filtro de interpolación de 4 derivaciones para la interpredicción e intrapredicción;
la Figura 10 muestra una realización de la invención reusando coeficientes de 4 derivaciones para la interpredicción e intrapredicción;
la Figura 11 muestra un ejemplo de 35 modos de intrapredicción;
la Figura 12 muestra un ejemplo de una selección del filtro de interpolación;
la Figura 13 muestra un ejemplo de una partición de árbol cuádruple y binario;
la Figura 14 muestra ejemplos sobre orientaciones de bloques rectangulares;
la Figura 15 muestra otro ejemplo de una selección del filtro de interpolación;
la Figura 16 muestra otro ejemplo de una selección del filtro de interpolación;
la Figura 17 muestra otro ejemplo de una selección del filtro de interpolación;
la Figura 18 es un diagrama esquemático de un dispositivo de red;
la Figura 19 muestra un diagrama de bloques de un aparato; y
la Figura 20 es un diagrama de flujo sobre una realización de la invención.
En los siguientes signos de referencia idénticos se refieren características idénticas o al menos funcionalmente equivalentes si no se especifican explícitamente de cualquier otra manera.
Descripción detallada de las realizaciones
En la siguiente descripción, se hace referencia a las figuras adjuntas, que forman parte de la descripción, y que muestran, a manera de ilustración, aspectos específicos de realizaciones de la invención o aspectos específicos en los que pueden usarse realizaciones de la presente invención. Se entiende que las realizaciones de la invención pueden usarse en otros aspectos y comprender 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á definida por las reivindicaciones adjuntas.
Por ejemplo, se entiende que una descripción en relación con un método descrito también puede ser válida para un dispositivo o sistema correspondiente configurado para realizar el método y viceversa. Por ejemplo, si se describen una o una pluralidad de etapas del método específico, un dispositivo correspondiente puede incluir una o una pluralidad de unidades, por ejemplo, unidades funcionales, para realizar la una o varias etapas del método descritas (por ejemplo, una unidad que realiza la una o varias etapas, o una pluralidad de unidades cada una que realiza una o más de la pluralidad de etapas), incluso si dicha una o más unidades no se describen o ilustran explícitamente en las figuras. Por otro lado, por ejemplo, si se describe un aparato específico basado en una o una pluralidad de unidades, por ejemplo, unidades funcionales, un método correspondiente puede incluir una etapa para realizar la funcionalidad de una o varias unidades (p. ej., una etapa que realiza la funcionalidad de una o varias unidades, o una pluralidad de etapas, cada una de las cuales realiza la funcionalidad de una o más de la pluralidad de unidades), incluso si una o varias etapas no se describen o ilustran explícitamente en las figuras. Además, se entiende que las características de las diversas realizaciones y/o aspectos ilustrativos descritos en la presente memoria pueden combinarse entre sí, a menos que se indique específicamente lo contrario.
Definiciones de acrónimos y glosario
JEM Modelo de Exploración Conjunta (la base de código de software para la futura exploración de codificación de vídeo)
JVET Equipo Conjunto de Exploración de Vídeo
LUT Tabla de consulta
QT QuadTree
QTBT QuadTree más Binary Tree
RDO Optimización de velocidad-distorsión
ROM Memoria de solo lectura
VTM Modelo de prueba VVC
VVC Codificación de Vídeo Versátil, el proyecto de estandarización desarrollado por JVET.
CTU / CTB - Unidad de árbol de codificación / Bloque de árbol de codificación
CU / CB - Unidad de codificación / Bloque de codificación
PU / PB - Unidad de predicción / Bloque de predicción
TU/TB - Unidad de transformación / Bloque de transformación
HEVC - Codificación de Vídeo de Alta Eficiencia
Los esquemas de codificación de vídeo tales como H.264/AVC y HEVC se han diseñado siguiendo el exitoso principio de la codificación de vídeo híbrida basada en bloques. Mediante este principio, una imagen se divide primero en bloques y luego cada bloque se predice utilizando la predicción intraimagen o interimagen.
Varios estándares de codificación de vídeo desde H.261 pertenecen al grupo de “ códecs de vídeo híbridos con pérdidas” (es decir, combinan predicción espacial y temporal en el dominio de la muestra y la codificación por transformación 2D para aplicar cuantización en el dominio de transformación). Cada imagen de una secuencia de vídeo se divide típicamente en un conjunto de bloques no superpuestos y la codificación se realiza típicamente en un 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 imagen), por ejemplo, mediante el uso de predicción espacial (intraimagen) y predicción temporal (interimagen) para generar un bloque de predicción, restando el bloque de predicción del bloque actual (bloque actualmente procesado/a procesar) para obtener un bloque residual, transformar el bloque residual y cuantizar el bloque residual en el dominio de transformación para reducir la cantidad de datos a transmitir (compresión), mientras que en el descodificador el procesamiento inverso en comparación con el codificador se aplica parcialmente al bloque codificado o comprimido para reconstruir el bloque actual para la representación. Además, el codificador duplica el bucle de procesamiento del descodificador de modo que ambos generarán predicciones idénticas (p. ej., intrapredicciones e interpredicciones) y/o reconstrucciones para procesamiento, es decir, codificación, los bloques posteriores.
Como se utiliza en la presente memoria, el término “ bloque” puede ser una parte de una imagen o un marco. Por conveniencia de la descripción, las realizaciones de la invención se describen en la presente memoria en referencia a la Codificación de Vídeo de Alta Eficiencia (HEVC) o el software de referencia de la Codificación de Vídeo Versátil (VVC), desarrollada por el equipo de Colaboración Conjunta en la Codificación de Vídeo (JCT-VC) del Grupo de Expertos en Codificación de Vídeo de ITU-T (VCEG) y el Grupo de Expertos en Imágenes de Movimiento (MPEG) iSo /IEC. Un experto en la técnica entenderá que las realizaciones de la invención no se limitan a HEVC o VVC. Puede referirse a una CU, PU y TU. En HEVC, una CTU se divide en las CU usando una estructura de árbol cuádruple denominada árbol de codificación. La decisión de si codificar un área de imagen usando interpredicción-instantánea (temporal) o intraimagen (espacial) se realiza a nivel de CU. Cada CU puede dividirse adicionalmente en una, dos o cuatro PU según el tipo de división de PU. Dentro de una PU, se aplica el mismo proceso de predicción y la información relevante se transmite al descodificador en una base de PU. Después de obtener el bloque residual aplicando el proceso de predicción basándose en el tipo de división de PU, una CU puede dividirse en unidades de transformada (TU) según otra estructura de árbol cuádruple similar al árbol de codificación para la CU. En el desarrollo más reciente de la técnica de compresión de vídeo, la partición de árbol cuádruple y binario (QTBT) se utiliza para dividir un bloque de codificación. En la estructura de bloque QTBT, una CU puede tener una forma cuadrada o rectangular. Por ejemplo, una unidad de árbol de codificación (CTU) se divide primero por una estructura de árbol cuádruple. Los nodos de hoja de árbol cuádruple están divididos además por una estructura de árbol binario. Los nodos de hoja de árbol binario se denominan unidades de codificación (CU), y esa segmentación se utiliza para el procesamiento de predicción y transformación sin ninguna partición adicional. Esto significa que la CU, PU y TU tienen el mismo tamaño de bloque en la estructura de bloque de codificación QTBT. En paralelo, también se propuso que la partición de triple árbol, por ejemplo, la partición de árbol triple se usara junto con la estructura de bloque QTBT.
UIT-T VCEG (Q6/16) e ISO/IEC MPEG (JTC 1/SC 29/WG 11) están estudiando la necesidad potencial de estandarización de la futura tecnología de codificación de vídeo con una capacidad de compresión que excede significativamente la norma actual HEVC (incluyendo sus extensiones actuales y extensiones de alto término para codificación de contenido de pantalla y codificación de alto rango dinámico). Los grupos están colaborando en esta actividad de exploración en un esfuerzo conjunto de colaboración conocido como el Equipo Conjunto de Exploración de Vídeo (JVET) para evaluar los diseños de tecnología de compresión propuestos por sus expertos en este campo.
El VTM (Modelo de Prueba Versátil) utiliza 35 intramodos mientras que el BMS (Conjunto de Referencia) utiliza 67 intramodos. La intrapredicción es un mecanismo usado en muchos marcos de codificación de vídeo para aumentar la eficiencia de compresión en los casos donde solo puede estar involucrado un marco determinado.
La codificación de vídeo como se utiliza en la presente memoria se refiere al procesamiento de una secuencia de imágenes, que forman la secuencia de vídeo o vídeo. El término imagen, imagen o marco puede/pueden utilizarse como sinónimos en el campo de la codificación de vídeo, así como en esta solicitud. Cada imagen se divide típicamente en un conjunto de bloques no superpuestos. La codificación/descodificación de la imagen se realiza típicamente en un nivel de bloque donde, por ejemplo, predicción entre tramas o intrapredicción-trama se usa para generar un bloque de predicción, para restar el bloque de predicción del bloque actual (bloque actualmente procesado/a procesar) para obtener un bloque residual, que se transforma y cuantiza adicionalmente para reducir la cantidad de datos a transmitir (compresión) mientras que en el lado del descodificador el procesamiento inverso se aplica al bloque codificado/comprimido para reconstruir el bloque para la representación.
La Figura 1 es un diagrama de bloques esquemático que ilustra un sistema 10 de codificación ilustrativo, p. ej., un sistema 10 de codificación de vídeo que puede utilizar técnicas de esta presente solicitud (presente descripción). El codificador 20 (por ejemplo, el codificador de vídeo 20) y el descodificador 30 (por ejemplo, el descodificador 30 de vídeo) del sistema 10 de codificación de vídeo representan ejemplos de dispositivos que pueden configurarse para realizar técnicas según diversos ejemplos descritos en la presente solicitud. Como se muestra en la Figura 1, el sistema 10 de codificación comprende un dispositivo 12 de origen configurado para proporcionar datos codificados 13, por ejemplo, una imagen codificada 13, por ejemplo, a un dispositivo 14 de destino para descodificar los datos codificados 13.
El dispositivo 12 de origen comprende un codificador 20, y puede además, es decir, opcionalmente, comprender una fuente 16 de imágenes, una unidad 18 de preprocesamiento, por ejemplo, una unidad 18 de preprocesamiento de imágenes y una interfaz 22 de comunicación o unidad 22 de comunicación.
La fuente 16 de imágenes puede comprender o ser cualquier tipo de dispositivo de captura de imágenes, por ejemplo, para capturar una imagen en el mundo real, y/o cualquier tipo de imagen o comentario (para la codificación de contenido de pantalla, algunos textos en la pantalla también se consideran parte de un dispositivo de generación de imagen o imagen a codificar), por ejemplo, un procesador de gráficos de ordenador para generar una imagen animada por ordenador, o cualquier tipo de dispositivo para obtener y/o proporcionar una imagen en el mundo real, una imagen animada por ordenador (por ejemplo, un contenido de pantalla, una imagen de realidad virtual (VR) y/o cualquier combinación de los mismos (por ejemplo, una imagen de realidad aumentada (AR).
Una imagen (digital) es o puede considerarse como una matriz bidimensional o matriz de muestras con valores de intensidad. Una muestra en la matriz también puede denominarse píxel (forma corta del elemento de la imagen). El número de muestras en dirección horizontal y vertical (o eje) de la matriz o imagen define el tamaño y/o resolución de la imagen. Para la representación de color, normalmente se emplean tres componentes de color, es decir, la imagen puede representarse o incluir tres matrices de muestras. En el formato de RBG o el espacio de color, una imagen comprende una matriz de muestras roja, verde y azul correspondiente. Sin embargo, en la codificación de vídeo cada píxel se representa típicamente en un formato de luminancia/crominancia o espacio de color, por ejemplo, YCbCr, que comprende un componente de luminancia indicado por Y (en ocasiones también se usa L en su lugar) y dos componentes de crominancia indicados por Cb y Cr. El componente Y de luminancia (o luma corta) representa el brillo o la intensidad del nivel de grises (por ejemplo, como en una imagen a escala de grises), mientras que los dos componentes Cb y Cr de crominancia (o croma corta) representan la cromaticidad o los componentes de información de color. En consecuencia, una imagen en formato YCbCr comprende una matriz de muestras de luminancia de valores de muestra de luminancia (Y), y dos matrices de muestras de crominancia de valores de crominancia (Cb y Cr). Las imágenes en formato RGB pueden convertirse o transformarse en formato YCbCr y viceversa, el proceso también se conoce como transformación de color o conversión. Si una imagen es monocromática, la imagen puede comprender solo una matriz de muestras de luminancia.
La fuente 16 de imágenes (p. ej., fuente 16 de vídeo) puede ser, por ejemplo, una cámara para capturar una imagen, una memoria, p. ej., una memoria de imagen, que comprende o almacenar una imagen previamente capturada o generada, y/o cualquier tipo de interfaz (interna o externa) para obtener o recibir una imagen. La cámara puede ser, por ejemplo, una cámara local o integrada en el dispositivo fuente, la memoria puede ser una memoria local o integrada, por ejemplo, integrada en el dispositivo fuente. La interfaz puede ser, por ejemplo, una interfaz externa para recibir una imagen de una fuente de vídeo externa, por ejemplo, un dispositivo de captura de imágenes externas como una cámara, una memoria externa o un dispositivo de generación de imágenes externas, por ejemplo, un procesador externo de gráficos, ordenador o servidor. La interfaz puede ser cualquier tipo de interfaz, por ejemplo, una interfaz cableada o inalámbrica, una interfaz óptica, según cualquier protocolo de interfaz patentado o estandarizado. La interfaz para obtener los datos 17 de imagen puede ser la misma interfaz que o parte de la interfaz 22 de comunicación.
En distinción a la unidad 18 de preprocesamiento y el procesamiento realizado por la unidad 18 de preprocesamiento, la imagen o los datos 17 de imagen (por ejemplo, datos 16 de vídeo) también pueden denominarse imágenes sin procesar o datos 17 de imagen sin procesar.
La unidad 18 de preprocesamiento se configura para recibir los datos 17 de imagen (sin procesar) y para realizar el procesamiento previo en los datos 17 de imagen para obtener una imagen 19 previamente procesada o datos 19 de imagen previamente procesados. El preprocesamiento realizado por la unidad 18 de preprocesamiento puede comprender, por ejemplo, el recorte, la conversión de formato de color (por ejemplo, de RGB a YCbCr), la corrección de color o la desactivación. Puede entenderse que la unidad 18 de preprocesamiento puede ser componente opcional.
El codificador 20 (por ejemplo, el codificador 20 de vídeo) se configura para recibir los datos 19 de imagen previamente procesados y proporcionar datos de imagen codificados 21 (se describirán más detalles a continuación, p. ej., basándose en la Figura 2).
La interfaz 22 de comunicación del dispositivo 12 de origen puede configurarse para recibir los datos 21 de imagen codificados y transmitirlo a otro dispositivo, por ejemplo, el dispositivo 14 de destino o cualquier otro dispositivo, para almacenamiento o reconstrucción directa, o para procesar los datos 21 de imagen codificados para respectivamente antes de almacenar los datos codificados 13 y/o transmitir los datos codificados 13 a otro dispositivo, por ejemplo, el dispositivo 14 de destino o cualquier otro dispositivo para descodificar o almacenar.
El dispositivo 14 de destino comprende un descodificador 30 (por ejemplo, un descodificador 30 de vídeo), y puede, además, comprender, opcionalmente, una interfaz 28 de comunicación o unidad 28 de comunicación, una unidad 32 de procesamiento posterior y un dispositivo 34 de visualización.
La interfaz 28 de comunicación del dispositivo 14 de destino se configura para recibir los datos 21 de imagen codificados o los datos codificados 13, por ejemplo, directamente desde el dispositivo 12 de origen o desde cualquier otra fuente, por ejemplo, un dispositivo de almacenamiento, por ejemplo, un dispositivo de almacenamiento de datos de imágenes codificadas.
La interfaz 22 de comunicación y la interfaz 28 de comunicación pueden configurarse para transmitir o recibir los datos 21 de imagen codificados o datos codificados 13 a través de un enlace de comunicación directa entre el dispositivo 12 de origen y el dispositivo 14 de destino, por ejemplo, una conexión directa cableada o inalámbrica, o a través de cualquier tipo de red, por ejemplo, una red cableada o inalámbrica o cualquier combinación de las mismas, o cualquier tipo de red privada y pública, o cualquier tipo de combinación de los mismos.
La interfaz 22 de comunicación puede estar, por ejemplo, configurada para empaquetar los datos 21 de imagen codificados en un formato apropiado, por ejemplo, paquetes, para transmisión a través de un enlace de comunicación o red de comunicación.
La interfaz 28 de comunicación, que forma la contraparte de la interfaz 22 de comunicación, puede estar configurada, p. ej., para desempaquetar los datos codificados 13 para obtener los datos 21 de imagen codificados.
Tanto la interfaz 22 de comunicación 22 como la interfaz 28 de comunicación pueden configurarse como interfaces de comunicación unidireccionales como se indica por la flecha para los datos 13 de imagen codificados en la Figura 1A que apuntan desde el dispositivo 12 de origen al dispositivo 14 de destino, o interfaces de comunicación bidireccionales, y pueden configurarse, por ejemplo, para enviar y recibir mensajes, por ejemplo, para configurar 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, la transmisión de datos de imagen codificada.
El descodificador 30 se configura para recibir los datos 21 de imagen codificados y proporcionar datos 31 de imagen descodificados o una imagen 31 descodificada (más detalles se describirán a continuación, por ejemplo, basándose en la Figura 3).
El posprocesador 32 del dispositivo 14 de destino se configura para procesar posteriormente los datos 31 de imagen descodificados (también denominados datos de imagen reconstruidos), por ejemplo, la imagen descodificada 31, para obtener datos 33 de imagen posprocesados, por ejemplo, una imagen posprocesada 33. El procesamiento posterior realizado por la unidad 32 de posprocesamiento puede comprender, por ejemplo, conversión de formato de color (por ejemplo, de YCbCr a RGB), corrección de color, recorte o remuestreo, o cualquier otro procesamiento, por ejemplo, para preparar los datos 31 de imagen descodificados para su visualización, por ejemplo, mediante el dispositivo 34 de visualización.
El dispositivo 34 de visualización del dispositivo 14 de destino se configura para recibir los datos 33 de imagen procesados posteriormente para visualizar la imagen, por ejemplo, a un usuario u observador. El dispositivo 34 de visualización puede ser o comprender cualquier tipo de pantalla para representar la imagen reconstruida, por ejemplo, una pantalla o monitor integrado o externo. Las pantallas pueden comprender, por ejemplo, pantallas de cristal líquido (LCD), pantallas de diodos orgánicos emisores de luz (OLED), pantallas de plasma, proyectores, pantallas de micro LED, cristal líquido sobre silicio (LCoS), procesador de luz digital (DLP) o cualquier tipo de pantalla.
Aunque la Figura 1 representa el dispositivo 12 de origen y el dispositivo 14 de destino como dispositivos separados, las realizaciones de dispositivos también pueden comprender ambas o ambas funcionalidades, el dispositivo 12 de origen o funcionalidad correspondiente y el dispositivo 14 de destino o funcionalidad correspondiente. En tales realizaciones, el dispositivo 12 de origen o la funcionalidad correspondiente y el dispositivo 14 de destino o la funcionalidad correspondiente pueden implementarse usando el mismo hardware y/o software o mediante hardware y/o software separado o cualquier combinación de los mismos.
Como será evidente para el experto en la técnica, la existencia y la división (exacta) de funcionalidades de las diferentes unidades o funcionalidades dentro del dispositivo 12 de origen 12 y/o el dispositivo 14 de destino como se muestra en la Figura 1 pueden variar dependiendo del dispositivo y la aplicación reales.
El codificador 20 (por ejemplo, un codificador 20 de vídeo) y el descodificador 30 (p. ej., un descodificador 30 de vídeo) cada uno puede implementarse como cualquiera de una variedad de circuitos adecuados, tales como uno o más microprocesadores, procesadores de señales digitales (DSP), circuitos integrados específicos de la aplicación (ASIC), matrices de puertas programables en campo (FPGA), lógica discreta, hardware o cualquier combinación de los mismos. Si las técnicas se implementan parcialmente en software, un dispositivo puede almacenar instrucciones para el software en un medio de almacenamiento legible por ordenador no transitorio adecuado y puede ejecutar las instrucciones en hardware usando uno o más procesadores para realizar las técnicas de esta descripción. Uno cualquiera de los anteriores (incluyendo hardware, software, una combinación de hardware y software, etc.) puede considerarse para ser uno o más procesadores. Cada uno de los codificadores 20 de vídeo y el descodificador 30 de vídeo puede incluirse en uno o más codificadores o descodificadores, cualquiera de los cuales puede integrarse como parte de un codificador/descodificador (códec) combinado en un dispositivo respectivo.
La Figura 2 muestra un diagrama de bloques esquemático/conceptual de un codificador de vídeo 20 de ejemplo que se configura para implementar las técnicas de la presente solicitud. En el ejemplo de la Figura 2, el codificador 20 de vídeo comprende una unidad 204 de cálculo residual, una unidad 206 de procesamiento de transformación, una unidad 208 de cuantización, una unidad 210 de cuantización inversa y una unidad 212 de procesamiento de transformación inversa, una unidad 214 de reconstrucción, una memoria intermedia 216, una unidad 220 de filtro de bucle, una memoria 230 intermedia de imágenes descodificadas (DPB), una unidad 260 de procesamiento de predicción y una unidad 270 de codificación por entropía. La unidad 260 de procesamiento de predicción puede incluir una unidad 244 de interpredicción, una unidad 254 de intrapredicción y una unidad 262 de selección de modo. La unidad 244 de interpredicción puede incluir una unidad de estimación de movimiento y una unidad de compensación de movimiento (no mostrada). Un codificador 20 de vídeo como se muestra en la Figura 2 también puede denominarse codificador de vídeo híbrido o un codificador de vídeo según un códec de vídeo híbrido.
Por ejemplo, la unidad 204 de cálculo residual, la unidad 206 de procesamiento de transformación, la unidad 208 de cuantización, la unidad 260 de procesamiento de predicción y la unidad 270 de codificación por entropía forman una ruta de señal directa del codificador 20, mientras que, por ejemplo, la unidad 210 de cuantización inversa, la unidad 212 de procesamiento de transformación inversa, la unidad 214 de reconstrucción, la memoria intermedia 216, el filtro 220 de bucle, la memoria intermedia 230 de imágenes descodificadas (DPB), la unidad 260 de procesamiento de predicción forman una ruta de señal hacia atrás del codificador, en donde la ruta de señal de retroceso del codificador corresponde a la ruta de señal del descodificador (véase el descodificador 30 en la Figura 3).
El codificador 20 se configura para recibir, por ejemplo, la entrada 202, una imagen 201 o un bloque 203 de la imagen 201, por ejemplo, la imagen de una secuencia de imágenes que forma una secuencia de vídeo o vídeo. El bloque 203 de imagen también puede denominarse bloque de imagen actual o bloque de imagen a codificar, y la imagen 201 como imagen o imagen actual a codificar (en particular en la codificación de vídeo para distinguir la imagen actual de otras imágenes, por ejemplo, imágenes previamente codificadas y/o descodificadas de la misma secuencia de vídeo, es decir, la secuencia de vídeo que también comprende la imagen actual).
La unidad 260 de procesamiento de predicción, también denominada unidad 260 de procesamiento de predicción de bloques, se configura para recibir u obtener el bloque 203 (bloque 203 actual de la imagen 201 actual) y datos de imagen reconstruidos, por ejemplo, muestras de referencia de la misma imagen (actual) de la memoria intermedia 216 y/o datos 231 de imagen de referencia de una o una pluralidad de imágenes previamente descodificadas de la memoria intermedia 230 de imagen descodificada, y procesar dichos datos para predicción, es decir, para proporcionar un bloque 265 de predicción, que puede ser un bloque 245 interpredicho o un bloque 255 intrapredicho.
La unidad 262 de selección de modo puede configurarse para seleccionar un modo de predicción (por ejemplo, un modo de intrapredicción o interpredicción) y/o un bloque 245 o 255 de predicción correspondiente para ser utilizado como bloque 265 de predicción para el cálculo del bloque 205 residual y para la reconstrucción del bloque 215 reconstruido.
Las realizaciones de la unidad 262 de selección de modo pueden configurarse para seleccionar la partición y el modo de predicción (por ejemplo, de los admitidos por la unidad 260 de procesamiento de predicción), que proporciona la mejor coincidencia o en otras palabras el residuo mínimo (mínimo residual significa mejor compresión para transmisión o almacenamiento), o una sobrecarga de señalización mínima (sobrecarga de señalización mínima significa mejor compresión para transmisión o almacenamiento), o que considera o equilibra ambos. La unidad 262 de selección de modo puede configurarse para determinar el modo de predicción en base a la optimización de la distorsión de la tasa (RDO), es decir, seleccionar el modo de predicción que proporciona una optimización mínima de la distorsión de la tasa o la cual la distorsión de la tasa asociada al menos a cumple un criterio de selección del modo de predicción. Términos como “ mejor” , “ mínimo” , “ óptimo” , etc. en este contexto no se refieren necesariamente a un “ mejor” general, “ mínimo” , “ óptimo” , etc., pero también pueden referirse al cumplimiento de un criterio de terminación o selección como un valor que excede o cae por debajo de un umbral u otras restricciones que conducen potencialmente a una “ selección subóptima” pero que reduce la complejidad y el tiempo de procesamiento.
La unidad 254 de intrapredicción se configura además para determinar basándose en el parámetro de intrapredicción, por ejemplo, el modo de intrapredicción seleccionado, el bloque 255 de intrapredicción. En cualquier caso, después de seleccionar un modo de intrapredicción para un bloque, la unidad 254 de intrapredicción también se configura para proporcionar parámetro de intrapredicción, es decir, información indicativa del modo de intrapredicción seleccionado para el bloque a la unidad 270 de codificación de entropía. En un ejemplo, la unidad 254 de intrapredicción puede configurarse para realizar cualquier combinación de las técnicas de intrapredicción descritas más adelante.
La Figura 3 muestra un descodificador 30 de vídeo ilustrativo que se configura para implementar las técnicas de esta presente solicitud. El descodificador 30 de vídeo configurado para recibir datos 21 de imagen codificados (p. ej., flujo de bits codificado), por ejemplo, codificado por el codificador 100, para obtener una imagen descodificada 131. Durante el proceso de descodificación, el descodificador 30 de vídeo recibe datos de vídeo, p. ej., un flujo de bits de vídeo codificado que representa bloques de imágenes de un fragmento de vídeo codificado y elementos sintácticos asociados, desde el codificador 100 de vídeo.
En el ejemplo de la Figura 3, el descodificador 30 comprende una unidad 304 de descodificación por entropía, una unidad 310 de cuantización inversa, una unidad 312 de procesamiento de transformación inversa, una unidad 314 de reconstrucción (por ejemplo, un sumador 314), una memoria intermedia 316, un filtro 320 de bucle, una memoria intermedia 330 de imágenes descodificadas y una unidad 360 de procesamiento de predicción. La unidad 360 de procesamiento de predicción puede incluir una unidad 344 de interpredicción, una unidad 354 de intrapredicción y una unidad 362 de selección de modo. El descodificador 30 de vídeo puede, en algunos ejemplos, realizar un paso de descodificación generalmente recíproco al paso de codificación descrito con respecto al codificador 100 de vídeo de la Figura 2.
La unidad 304 de descodificación de entropía se configura para realizar descodificación de entropía a los datos 21 de imagen codificados para obtener, p. ej., coeficientes cuantizados 309 y/o parámetros de codificación descodificados (que no se muestran en la Figura 3), por ejemplo, (descodificados) cualquiera o todos los parámetros de interpredicción, parámetro de intrapredicción, parámetros de filtro de bucle y/u otros elementos de sintaxis. La unidad 304 de descodificación de entropía se configura además para reenviar parámetros de interpredicción, parámetro de intrapredicción y/u otros elementos sintácticos a la unidad 360 de procesamiento de predicción. El descodificador 30 de vídeo puede recibir los elementos de sintaxis a nivel del segmento de vídeo y/o el nivel del bloque de vídeo.
La unidad 310 de cuantización inversa puede ser idéntica en función a la unidad 110 de cuantización inversa, la unidad 312 de procesamiento de transformación inversa puede ser idéntica en función a la unidad 112 de procesamiento de transformación inversa, la unidad 314 de reconstrucción puede ser idéntica en la unidad 114 de reconstrucción de función, la memoria intermedia 316 puede ser idéntica en función a la memoria intermedia 116, el filtro 320 de bucle puede ser idéntico en función al filtro 120 de bucle, y la memoria intermedia 330 de imagen descodificada puede ser idéntica en función a la memoria intermedia 130 de imagen descodificada.
La unidad 360 de procesamiento de predicción puede comprender una unidad 344 de interpredicción y una unidad 354 de intrapredicción, en donde la unidad de interpredicción 344 puede parecerse a la unidad 144 de interpredicción en función, y la unidad 354 de intrapredicción puede parecerse a la unidad 154 de intrapredicción en función. La unidad 360 de procesamiento de predicción se configura típicamente para realizar la predicción de bloque y/u obtener el bloque 365 de predicción a partir de los datos 21 codificados y para recibir u obtener (explícita o implícitamente) los parámetros relacionados con predicción y/o la información sobre el modo de predicción seleccionado, por ejemplo, desde la unidad 304 de descodificación de entropía.
Cuando el fragmento de vídeo se codifica como un fragmento intracodificado (I), la unidad 354 de intrapredicción de la unidad 360 de procesamiento de predicción se configura para generar el bloque 365 de predicción para un bloque de imagen del fragmento de vídeo actual basándose en un modo de intrapredicción señalizado y datos de bloques previamente descodificados de la trama o imagen actual. Cuando la trama de vídeo se codifica como un corte intercodificado (es decir, B o P), la unidad 344 de interpredicción (p. ej., la unidad de compensación de movimiento) de la unidad 360 de procesamiento de predicción se configura para producir bloques 365 de predicción para un bloque de vídeo del fragmento de vídeo actual basándose en los vectores de movimiento y otros elementos de sintaxis recibidos desde la unidad 304 de descodificación por entropía. Para la interpredicció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 descodificador 30 de vídeo puede construir las listas de tramas de referencia, la Lista 0 y la Lista 1, usando técnicas de construcción predeterminadas basadas en imágenes de referencia almacenadas en la DPB 330.
La unidad 360 de procesamiento de predicción se configura para determinar información de predicción para un bloque de vídeo del fragmento de vídeo actual analizando los vectores de movimiento y otros elementos sintácticos, 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á descodificando. Por ejemplo, la unidad 360 de procesamiento de predicción utiliza algunos de los elementos de sintaxis recibidos para determinar un modo de predicción (por ejemplo, intrapredicción o interpredicción) utilizada para codificar los bloques de vídeo del fragmento de vídeo, un tipo de corte de interpredicción (por ejemplo, segmento B, corte P o corte GPB), información de construcción para una o más de las listas de imágenes de referencia para el fragmento, vectores de movimiento para cada bloque de vídeo codificado entre el fragmento, estado de interpredicción para cada bloque de vídeo intercodificado del fragmento, y otra información para descodificar los bloques de vídeo en el fragmento de vídeo actual.
La unidad 310 de cuantización inversa se configura para cuantizar a la inversa, es decir, descuantizar, los coeficientes de transformación cuantizados proporcionados en el flujo de bits y descodificarse por la unidad 304 de descodificación de entropía. El proceso de cuantización inversa puede incluir el uso de un parámetro de cuantización calculado por el codificador 100 de vídeo para cada bloque de vídeo en el fragmento de vídeo para determinar un grado de cuantización y, asimismo, un grado de cuantización inversa que debe aplicarse.
La unidad 312 de procesamiento de transformada inversa se configura para aplicar una transformada inversa, por ejemplo, una DCT inversa, una transformada entera inversa o un proceso de transformación inversa conceptualmente similar, a los coeficientes de transformada para producir bloques residuales en el dominio de píxeles.
La unidad 314 de reconstrucción (por ejemplo, Verano 314) se configura para añadir el bloque 313 de transformación inversa (es decir, el bloque 313 residual reconstruido) al bloque 365 de predicción para obtener un bloque 315 reconstruido en el dominio de muestra, por ejemplo, agregando los valores de muestra del bloque 313 residual reconstruido y los valores de muestra del bloque 365 de predicción.
La unidad 320 de filtro de bucle (ya sea en el bucle de codificación o después del bucle de codificación) se configura para filtrar el bloque 315 reconstruido para obtener un bloque 321 filtrado, por ejemplo, para suavizar las transiciones de píxeles, o mejorar de otro modo la calidad de vídeo. En un ejemplo, la unidad 320 de filtro de bucle puede configurarse para realizar cualquier combinación de las técnicas de filtrado descritas más adelante. La unidad 320 de filtro de bucle está prevista para representar uno o más filtros de bucle tales como un filtro de desbloqueo, un filtro de desplazamiento adaptativo de muestra (SAO) u otros filtros, por ejemplo, un filtro bilateral o un filtro de bucle adaptativo (ALF) o un filtro de afilado o suavizado o filtros de colaboración. Aunque la unidad 320 de filtro de bucle se muestra en la Figura 3 como un filtro de bucle, en otras configuraciones, la unidad 320 de filtro de bucle puede implementarse como un filtro de bucle posterior.
Los bloques de vídeo descodificados 321 en un marco o imagen dados se almacenan en la memoria intermedia 330 de imágenes descodificadas, que almacena imágenes de referencia usadas para la compensación de movimiento posterior.
El descodificador 30 se configura para emitir la imagen descodificada 331, por ejemplo, a través de la salida 332, para presentación o visualización a un usuario.
Se pueden usar otras variaciones del descodificador 30 de vídeo para descodificar el flujo de bits comprimido. Por ejemplo, el descodificador 30 puede producir el flujo de vídeo de salida sin la unidad 320 de filtrado de bucle. Por ejemplo, un descodificador 30 basado en no transformación puede cuantizar a la inversa la señal residual directamente sin la unidad 312 de procesamiento de transformación inversa para ciertos bloques o marcos. En otra implementación, el descodificador 30 de vídeo puede tener la unidad 310 de cuantización inversa y la unidad 312 de procesamiento de transformación inversa combinadas en una sola unidad.
La Figura 4 muestra un ejemplo de 67 modos de intrapredicción, p. ej., como se propone para VVC, la pluralidad de modos de intrapredicción de 67 modos de intrapredicción que comprende: modo plano (índice 0), modo de dc (índice 1), y modos angulares con los índices 2 a 66, en donde el modo angular inferior izquierdo en la Figura 4 se refiere al índice 2 y la numeración de los índices que se incrementa hasta que el índice 66 es el modo angular más alto de la parte superior derecha de la Figura 4.
Como se muestra en la Figura 4, la última versión de JEM tiene algunos modos correspondientes a direcciones de intrapredicción sesgadas. Para cualquiera de estos modos, para predecir muestras dentro de un bloque, la interpolación de un conjunto de muestras de referencia vecinas debe realizarse si una posición correspondiente dentro de un lado de bloque es fraccionaria. La interpolación lineal entre dos muestras de referencia adyacentes se utiliza en HEVC y VVC. En JEM se utilizan filtros de interpolación de 4 derivaciones estándar. Los coeficientes de filtro se seleccionan para ser gaussianos o cúbicos dependiendo de un valor de anchura de un bloque o de un valor de altura de un bloque. La decisión de si utilizar la anchura o la altura está se armoniza con la decisión sobre la selección del lado de referencia principal. Cuando un valor de un modo de intrapredicción es mayor o igual que un valor de un modo diagonal, se selecciona un lado superior de muestras de referencia para que sea el lado de referencia principal, y el valor de anchura se selecciona para determinar el filtro de interpolación en uso. Cuando un valor de un modo de intrapredicción es menor que un valor de un modo diagonal, se selecciona una referencia lateral principal del lado izquierdo del bloque y se usa un valor de altura para controlar el proceso de selección del filtro. Específicamente, si la longitud lateral seleccionada es menor o igual que 8 muestras, se aplica un filtro cúbico de 4 derivaciones. Si la longitud lateral seleccionada es mayor que 8 muestras, se utiliza un filtro gaussiano de 4 derivaciones como filtro de interpolación.
Los coeficientes de filtro específicos utilizados en JEM se indican en la Tabla 1. Una muestra predicha se calcula mediante el entrelazado con coeficientes seleccionados de la Tabla 1, según el desplazamiento de subpíxeles y el tipo de filtro de la siguiente manera:
s(x) =(ZÍ=o(re/¡+x • c¡) 128)>>8
En esta ecuación, “ »“ indica una operación de desplazamiento a la derecha bit a bit.
Si se selecciona un filtro cúbico, una muestra predicha (valor de muestra) se sujeta adicionalmente al rango permitido de valores que se define en un conjunto de parámetros de secuencia (SPS), o se deriva de la profundidad de bits del componente seleccionado.
Tabla 1. Filtros de interpolación de intrapredicción
Un proceso de compensación de movimiento también utiliza filtrado para predecir valores de muestra cuando los desplazamientos de los píxeles del bloque de referencia son fraccionarios. En JEM, se utiliza el filtrado de 8 derivaciones para el componente de luminancia y se utiliza filtrado de longitud de 4 derivaciones para el componente de crominancia. El filtro de interpolación de movimiento se aplica en primer lugar horizontalmente, y la salida del filtrado horizontal se filtra adicionalmente verticalmente. Los coeficientes de un filtro de crominancia de 4 derivaciones se indican en la Tabla 2.
Tabla 2. Coeficientes de filtro de interpolación de movimiento de crominancia
Existen también muchas soluciones de codificación de vídeo que usan diferentes filtros de interpolación para intrapredicción e interpredicción. En particular, las Figuras 5-7 muestran diferentes ejemplos de filtros de interpolación. La Figura 5 muestra un ejemplo de filtros de interpolación utilizados en JEM. La Figura 6 muestra otro ejemplo de filtros de interpolación propuestos para el experimento principal CE 3-3,1.3, que se describe en ITU-JVET K1023. La Figura 7 muestra otro ejemplo de filtros de interpolación propuestos en ITU-JVET K0064.
Una idea básica de las realizaciones de esta invención es reutilizar las tablas de consulta y/o los módulos de hardware de un filtro de subpíxeles de compensación de movimiento de croma, para interpolar valores de píxeles dentro de un intrapredictor si caen en posiciones fraccionales entre muestras de referencia. Dado que el mismo hardware está destinado a utilizarse tanto para la interpredicción como para la intrapredicción, la precisión de los coeficientes de filtro debe ser consistente, es decir, el número de bits para representar coeficientes de filtro para la interpolación de muestras de intrapredicción debe alinearse con la precisión del coeficiente del filtrado de interpolación de compensación de movimiento del subpíxeles de movimiento.
La Figura 8 ilustra una realización de la invención propuesta. El “ filtro de interpolación de 4 derivaciones” discontinuo con coeficientes de 6 bits para croma “ (denominado además” filtro intra/interrunificado” ) puede usarse para ambos procesos: interpolación de muestras intrapredichas e interpredichas.
Una realización particular que utiliza este diseño se muestra en la Figura 9. En esta implementación, se implementa un módulo de filtrado como una unidad separada que se está acoplando en ambos: predicción de muestras de crominancia en compensación de movimiento, y predicción de muestras de luminancia y crominancia cuando se realiza la intrapredicción. En esta implementación, la parte de filtrado de hardware se usa en procesos de intrapredicción e interpredicción.
La Figura 10 muestra otra realización cuando solo se reutilizan LUT de coeficientes de filtro (véase la Figura 10). La Figura 10 es una implementación ejemplar de la aplicación propuesta basada en el uso de coeficientes LUT. En esta implementación, los coeficientes de carga de los módulos de filtrado de hardware de LUT que se almacenan en la ROM. Un interruptor mostrado para el proceso de intrapredicción determina el tipo de filtro a utilizar, dependiendo de la longitud del lado principal seleccionado para el proceso de intrapredicción.
Una realización práctica reivindicada de la aplicación propuesta puede usar los siguientes coeficientes (véase la Tabla 3) Tabla 3. Filtros intrapolados e interpolados
Una muestra intrapredicha se calcula mediante el entrelazado con coeficientes seleccionados de la Tabla 3 según un desplazamiento de subpíxeles y un tipo de filtro de la siguiente manera:
En esta ecuación, “ »“ indica una operación de desplazamiento a la derecha bit a bit.
Si se selecciona el filtro “ intra/interrunificado” , una muestra predicha se sujeta adicionalmente al rango de valores permitido, que se define en SPS o se deriva de la profundidad de bits del componente seleccionado.
Las características de distinción de las realizaciones de las invenciones propuestas son las siguientes:
Para la interpolación de muestras de intrarreferencia y la interpolación de compensación de movimiento de subpíxeles, el mismo filtro puede usarse para reutilizar módulos de hardware y reducir el tamaño total de la memoria requerida,
La precisión de los coeficientes de filtro utilizados para la interpolación de muestras de intra referencia además del filtro reutilizado debe alinearse con la precisión de los coeficientes del filtro reutilizado anteriormente mencionado.
El procesamiento de Luma en la compensación de movimiento no usa necesariamente filtrado de 8 derivaciones, sino que también puede funcionar en filtrado de 4 derivaciones. En este caso, el filtro de 4 derivaciones podría seleccionarse para unificarse.
Las realizaciones de la invención pueden aplicarse en diferentes partes de un proceso de intrapredicción que puede implicar interpolación. Particularmente, cuando se extienden muestras de referencia principales, las muestras de referencia lateral también se pueden filtrar mediante un filtro de interpolación unificado (véanse las secciones 2.1, 3.1, 4.1 y 5 de JVET-K0211 para más detalles).
Las operaciones de copia intrabloque también implican una etapa de interpolación que puede utilizar la invención propuesta (véase[Xiaozhong Xu, Shan Liu, Tzu-Der Chuang, Yu-Wen Huang, Shawmin Lei, Krishnakanth Rapaka, Chao Pang, Vadim Seregin, Ye-Kui Wang, Marta Karczewicz: Intra Block Copy in HEVC Screen Content Coding Extensions. IEEE J. Emerg. Sel. Topics Circuits Syst. 6(4): 409-419 (2016)] para un descripción de la copia intrabloque).
La Figura 4 muestra un ejemplo de 67 modos de intrapredicción, p. ej., como se propone para VVC, la pluralidad de modos de intrapredicción de 67 modos de intrapredicción que comprende: modo plano (índice 0), modo de dc (índice 1), y modos angulares con los índices 2 a 66, en donde el modo angular inferior izquierdo en la Figura 4 se refiere al índice 2 y la numeración de los índices que se incrementa hasta que el índice 66 es el modo angular más alto de la parte superior derecha de la Figura 4.
La Figura 11 ilustra un diagrama esquemático de una pluralidad de modos de intrapredicción utilizados en el esquema UIP de HEVC. Para bloques de luminancia, los modos de intrapredicción pueden comprender hasta 36 modos de intrapredicción, que pueden incluir tres modos no direccionales y 33 modos direccionales. Los modos no direccionales pueden comprender un modo de predicción plano, un modo de predicción media (CC) y una croma del modo de predicción de luma (LM). El modo de predicción plano puede realizar predicciones suponiendo una superficie de amplitud de bloque con una pendiente horizontal y vertical derivada del límite del bloque. El modo de predicción DC puede realizar predicciones suponiendo una superficie de bloque plana con un valor que coincide con el valor medio del límite de bloque. El modo de predicción LM puede realizar predicciones suponiendo un valor de croma para el bloque coincide con el valor de luma para el bloque. Los modos direccionales pueden realizar predicciones basadas en bloques adyacentes como se muestra en la Figura 11.
H.264/AVC y HEVC especifican que un filtro de paso bajo podría aplicarse a muestras de referencia antes de utilizarse en un proceso de intrapredicción. Una decisión sobre si utilizar o no el filtro de muestra de referencia está determinado por un modo de intrapredicción y un tamaño de bloque. Este mecanismo puede denominarse Intra suavizado dependiente del modo (MDIS). También existe una pluralidad de métodos relacionados con el MDIS. Por ejemplo, el método de suavizado de muestras de referencia adaptativa (ARSS) puede de manera explícita (es decir, una indicador se incluye en un flujo de bits) o implícitamente (es decir, se usa una ocultación de datos para evitar poner un indicador en un flujo de bits para reducir la sobrecarga de señalización) si las muestras de predicción se filtran. En este caso, el codificador puede tomar la decisión sobre suavizado comprobando el coste de velocidad-distorsión (RD) para todos los modos de intrapredicción potenciales.
Como se muestra en la Figura 4, la última versión de JEM (JEM-7.2) tiene algunos modos correspondientes a direcciones de intrapredicción sesgadas. Para cualquiera de estos modos, para predecir las muestras dentro de una interpolación de bloques de un conjunto de muestras de referencia adyacentes deben realizarse, si una posición correspondiente dentro de un lado de bloque es fraccionaria. HEVC y VVC usan interpolación lineal entre dos muestras de referencia adyacentes. JEM utiliza filtros de interpolación de 4 derivaciones más sofisticados. Los coeficientes de filtro se seleccionan para que sean gaussianos o cúbicos, dependiendo del valor de anchura o del valor de altura. Una decisión sobre si usar la anchura o altura se armoniza con la decisión sobre la selección del lado de referencia principal; cuando un modo de intrapredicción es mayor o igual que un modo diagonal, el lado superior de las muestras de referencia se selecciona para que sea el lado de referencia principal y el valor de la anchura se selecciona para determinar el filtro de interpolación en uso. De cualquier otra manera, la referencia lateral principal se selecciona del lado izquierdo del bloque y la altura controla el proceso de selección del filtro. Específicamente, si una longitud lateral seleccionada es menor o igual que 8 muestras, se aplica una interpolación cúbica de 4 derivaciones. De cualquier otra manera, una gaussiana de 4 derivaciones se utiliza como filtro de interpolación.
Un ejemplo de una selección de filtro de interpolación para modos más pequeños y mayores que la diagonal uno (indicado como 45°) en el caso del bloque 32 x 4 se muestra en la Figura 12.
En VVC, se usa un mecanismo de partición basado en árbol cuádruple y binario, conocido como QTBT. Como se representa en la Figura 13, la partición QTBT puede proporcionar no solo bloques cuadrados sino rectangulares. Por supuesto, alguna sobrecarga de señalización y mayor complejidad computacional en el lado del codificador son el precio de la partición QTBT, en comparación con la división convencional basada en árbol cuádruple como se usa en el estándar HEVC/H.265. Sin embargo, la partición basada en QTBT está dotada de mejores propiedades de segmentación y, por lo tanto, demuestra una eficiencia de codificación significativamente mayor que el árbol cuádruple convencional.
Sin embargo, VVC en su estado actual aplica el mismo filtro a ambos lados de las muestras de referencia (izquierda y superior). No importa si un bloque está orientado verticalmente u horizontalmente, un filtro de muestra de referencia será el mismo para ambos lados de la muestra de referencia.
En este documento, los términos “ bloque orientado verticalmente” (“ orientación vertical de un bloque” ) y “ bloque orientado horizontalmente” (“ orientación horizontal de un bloque” ) se aplican a bloques rectangulares generados por la estructura QTBT. Estos términos tienen el mismo significado que se muestra en la Figura 14.
Las realizaciones de la presente descripción proponen un mecanismo para seleccionar diferentes filtros de muestra de referencia para considerar la orientación de un bloque. Específicamente, la anchura y la altura de un bloque se verifican independientemente de modo que se aplican diferentes filtros de muestra de referencia a la muestra de referencia ubicada en diferentes lados de un bloque a predecir.
En algunos ejemplos, se describió que la selección del filtro de interpolación se armoniza con la decisión sobre la selección del lado de referencia principal. Ambas decisiones dependen actualmente de la comparación del modo de intrapredicción con la dirección diagonal (45 grados).
Sin embargo, debe notarse que este diseño presenta un grave fallo para bloques alargados. A partir de la Figura 15 se puede observar que incluso si se selecciona un lado más corto como referencia principal usando criterios de comparación de modo, la mayoría de los píxeles predichos todavía se derivarían de las muestras de referencia del lado más largo (mostrado como área discontinua). La Figura 15 muestra un ejemplo sobre una selección de filtro de referencia dependiente de la longitud lateral.
La presente descripción propone usar una dirección alternativa para el umbral de un modo de intrapredicción durante el proceso de selección del filtro de interpolación. Específicamente, las direcciones corresponden al ángulo de una diagonal principal del bloque a predecir. Por ejemplo, para bloques de tamaño 32 x 4 y 4 x 32, modo umbral mT usado para determinar el filtro de muestra de referencia se define como se muestra en la Figura 16.
El valor específico del umbral de ángulo de intrapredicción puede calcularse mediante la siguiente fórmula:
aT = arctan(^)
Donde W yHson el ancho y la altura del bloque, respectivamente.
Otra realización de la presente descripción es usar diferentes filtros de interpolación dependiendo de qué lado se usen las muestras de referencia. Un ejemplo de esta determinación se muestra en la Figura 17. La Figura 17 muestra un ejemplo sobre la utilización de diferentes filtros de interpolación dependiendo de a qué lado las muestras de referencia utilizadas pertenecen.
Una línea recta con un ángulo correspondiente a la dirección intra m divide un bloque predicho en dos áreas. Las muestras que pertenecen a diferentes áreas se predicen usando diferentes filtros de interpolación.
Los valores ilustrativos de mT (para el conjunto de modos de intrapredicción definidos en BMS1.0) y los ángulos correspondientes se indican en la Tabla 4. Los ángulosase indican como se muestra en la Figura 16.
Tabla 4. Valores ilustrativos demT(para el conjunto de modos de intrapredicción definidos en BMS1.0)
En comparación con la tecnología y las soluciones existentes, la presente descripción usa muestras dentro de un bloque que se predice usando diferentes filtros de interpolación, en donde el filtro de interpolación usado para predecir una muestra se selecciona según una forma de bloque, una orientación que es horizontal o vertical, y un ángulo de modo de intrapredicción.
La presente descripción puede aplicarse en la etapa del filtrado de la muestra de referencia. En particular, es posible determinar un filtro de suavizado de muestras de referencia mediante reglas similares descritas anteriormente para un proceso de selección del filtro de interpolación.
La Figura 18 es un diagrama esquemático de un dispositivo 1300 de red (p. ej. un dispositivo de codificación) según una realización de la descripción. El dispositivo 1300 de red es adecuado para implementar las realizaciones descritas en la presente memoria. El dispositivo 1300 de red comprende puertos 1310 de entrada y unidades receptoras (Rx) 1320 para recibir datos; un procesador, unidad lógica o unidad 1330 de procesamiento central (CPU) para procesar los datos; unidades 1340 de transmisor (Tx) y puertos 1350 de salida para transmitir los datos; y una memoria 1360 para almacenar los datos. El dispositivo 1300 de red también puede comprender componentes ópticos a eléctricos (OE) y componentes eléctricos a ópticos (EO) acoplados a los puertos 1310 de entrada, las unidades receptoras 1320, las unidades transmisoras 1340 y los puertos 1350 de salida para la salida o entrada de señales ópticas o eléctricas.
El procesador 1330 está implementado por hardware y software. El procesador 1330 puede implementarse como uno o más chips de CPU, núcleos (por ejemplo, como un procesador multinúcleo), matrices de puertas programables en campo (FPGA), circuitos integrados de aplicación específica (ASIC) y procesadores de señales digitales (DSP). El procesador 1330 está en comunicación con los puertos 1310 de entrada, las unidades receptoras 1320, las unidades transmisoras 1340, los puertos 1350 de salida y la memoria 1360. El procesador 1330 comprende un módulo 1370 de codificación. El módulo 1370 de codificación implementa las realizaciones descritas anteriormente. Por ejemplo, el módulo 1370 de codificación implementa, procesa, prepara, o proporciona las diversas funciones de red. La inclusión del módulo 1370 de codificación por lo tanto proporciona una mejora sustancial a la funcionalidad del dispositivo 1300 de red y efectúa una transformación del dispositivo 1300 de red a un estado diferente. Alternativamente, el módulo 1370 de codificación se implementa como instrucciones almacenadas en la memoria 1360 y ejecutadas por el procesador 1330.
La memoria 1360 comprende uno o más discos, unidades de cinta y unidades de estado sólido y se pueden usar 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 se leen durante la ejecución del programa. La memoria 1360 puede ser volátil y/o no volátil y puede ser memoria de solo lectura (ROM), memoria de acceso aleatorio (RAM), memoria ternaria de contenido direccionable (TCAM) y/o memoria estática de acceso aleatorio (SRAM).
En la siguiente descripción, se hace referencia a los dibujos adjuntos que forman parte de la descripción, y en los que se muestran, a manera de ilustración, aspectos específicos en los que puede situarse la invención.
Según la norma HEVC/H.265, están disponibles 35 modos de intrapredicción. Como se muestra en la Figura 11, este conjunto contiene los siguientes modos: modo plano (el índice de modo de intrapredicción es 0), modo DC (el índice de modo de intrapredicción es 1) y modos direccionales (angulares) que cubren el rango de 180° y tienen el rango de valor de índice de modo de intrapredicción de 2 a 34 mostrados por flechas negras en la Figura 11. Para capturar las direcciones de borde arbitrarias presentes en el vídeo natural, el número de modos intra direccionales se extiende desde 33, como se usa en HEVC, a 65. Los modos direccionales adicionales se representan como flechas punteadas en la Figura 4, y los modos planos y DC permanecen iguales. Cabe señalar que el rango que está cubierto por modos de intrapredicción puede ser más ancho que 180°. En particular, 62 modos direccionales con valores de índice de 3 a 64 cubren el rango de aproximadamente 230°, es decir, varios pares de modos tienen direccionalidad opuesta. En el caso de las plataformas de referencia de la HEVC (HM) y JEM, solo un par de modos angulares (a saber, los modos 2 y 66) tiene una direccionalidad opuesta como se muestra en la Figura 4. Para construir un predictor, los modos angulares convencionales toman muestras de referencia y (si es necesario) filtrarlos para obtener un predictor de muestra. El número de muestras de referencia requeridas para construir un predictor depende de la longitud del filtro usado para la interpolación (por ejemplo, filtros bilineales y cúbicos tienen longitudes de 2 y 4, respectivamente).
En realizaciones, por ejemplo, según la última norma de codificación de vídeo actualmente en desarrollo, que se denomina codificación de vídeo Versátil (VVC), un árbol de tipo múltiple anidado de árbol cuádruple combinado usando una estructura de segmentación dividida binaria y ternaria, se usa, por ejemplo, para dividir una unidad de árbol de codificación. En la estructura de árbol de codificación dentro de una unidad de árbol de codificación, una CU puede tener una forma cuadrada o rectangular. Por ejemplo, la unidad de árbol de codificación (CTU) se divide primero por un árbol cuaternario. Entonces los nodos de hoja de árbol cuaternario pueden dividirse adicionalmente mediante una estructura de árbol de tipo múltiple. Puede haber cuatro tipos de división en la estructura de árbol de tipo múltiple, la división binaria vertical (SPLIT_<b>T_VER), la división binaria horizontal (SPLIT BT HOR), la división ternaria vertical (SPLIT_TT_VER), y la división ternaria horizontal (SPLIT_TT_HOR). Los nodos de hoja de árbol de tipo múltiple se denominan unidades de codificación (CU), y a menos que la CU sea demasiado grande para la longitud de transformada máxima, esta segmentación se usa para el procesamiento de predicción y transformación sin ninguna partición adicional. Esto significa que, en la mayoría de los casos, la CU, PU y TU tienen el mismo tamaño de bloque en el árbol cuádruple con una estructura de bloque de codificación de árbol de tipo múltiple anidada. La excepción se produce cuando una longitud de transformada máxima soportada es menor que la anchura o altura del componente de color de la CU. Un mecanismo de señalización único de la información de división de partición en árbol cuádruple con estructura de árbol de codificación de árbol de tipo múltiple anidada. En el mecanismo de señalización, una unidad de árbol de codificación (CTU) se trata como la raíz de un árbol cuaternario y se divide primero por una estructura de árbol cuaternario. Cada nodo de hoja de árbol cuaternario (cuando lo suficientemente grande para permitirle) se divide adicionalmente por una estructura de árbol de tipo múltiple. En la estructura de árbol de tipo múltiple, se señaliza un primer indicador (mtt_splid_cu_flag) para indicar si el nodo está partido; cuando un nodo se divide adicionalmente, un segundo indicador (indicador vertical dividido mtt) se señaliza para indicar la dirección de división, y luego se señaliza un tercer indicador (mtt_splid_cu_binary_flag) para indicar si la división es una división binaria o una división ternaria. Basándose en los valores de mtt split cu vertical flag and mtt_split_cu_binary_flag, el modo de corte de árbol de tipo múltiple (MttSplitMode) de una CU puede derivarse por un descodificador basado en una regla predefinida o una tabla. Cabe señalar, para un cierto diseño, por ejemplo, 64 x 64 bloques luma y 32 x 32 de diseño de pipeta croma en descodificadores de hardware VVC, la división de TT está prohibida cuando ya sea ancho o altura de un bloque de codificación de luma es mayor que 64, como se muestra en la Figura 6. La división de TT también está prohibida cuando la anchura o altura de un bloque de codificación de croma es mayor que 32. El diseño de canalización dividirá una imagen en unidades de datos de tuberías virtuales (PPDU) que se definen como unidades no superpuestas en una imagen. En descodificadores de hardware, las PPDU sucesivas pueden procesarse por múltiples etapas de tubería simultáneamente. El tamaño de VPDU es aproximadamente proporcional al tamaño de la memoria intermedia en la mayoría de las etapas de la tubería, por lo que es importante mantener el tamaño de VPDU pequeño. En la mayoría de los descodificadores de hardware, el tamaño de VPDU puede establecerse en el tamaño máximo de bloque de transformada (TB). Sin embargo, en la partición VVC, árbol ternario (TT) y árbol binario (BT) puede conducir a tamaños de VPDU aumentados.
Además, debe observarse que, cuando una parte de un bloque de nodo de árbol excede el límite de imagen inferior o derecha, el bloque de nodo de árbol es forzado a dividirse hasta que todas las muestras de cada CU codificada están ubicadas dentro de los límites de imagen.
Como ejemplo, la herramienta de intrasubpartición (ISP) puede dividir bloques intrapredichos de luma en vertical o en horizontal en 2 o 4 subdivisiones dependiendo del tamaño de bloque.
Intrapredicción
El conjunto de modos de intrapredicción puede comprender 35 modos de intrapredicción diferentes, p. ej. modos no direccionales como DC (o media) y modo plano, o modos direccionales, por ejemplo, como se define en HEVC, o puede comprender 67 modos de intrapredicción diferentes, por ejemplo, modos no direccionales como modo DC (o media) y modo plano, o modos direccionales, por ejemplo, como se define para VVC. Como ejemplo, varios modos de intrapredicción angular convencionales son reemplazados de manera adaptativa por modos de intrapredicción de ángulo amplio para los bloques no cuadrados, p. ej., como se define en<v>V<c>. Como otro ejemplo, para evitar operaciones de división para la predicción de DC, solo el lado más largo se usa para calcular el promedio para bloques no cuadrados. Y, los resultados de la intrapredicción del modo plano pueden modificarse adicionalmente mediante un método de combinación de intrapredicción dependiente de la posición (PDPC).
La unidad de intrapredicción se configura para usar muestras reconstruidas de bloques vecinos de la misma imagen actual para generar un bloque de intrapredicción según un modo de intrapredicción del conjunto de modos de intrapredicción.
La unidad de intrapredicción (o en general la unidad de selección de modo) se configura además para emitir parámetros de intrapredicción (o en información general indicativa del modo de intrapredicción seleccionado para el bloque) a la unidad de codificación de entropía en forma de elementos de sintaxis para su inclusión en los datos de imagen codificados, de modo que, p. ej., el descodificador de vídeo puede recibir y utilizar los parámetros de predicción para la descodificación.
Interpredicción
El conjunto de (o posibles) modos de interpredicción depende de las imágenes de referencia disponibles (es decir, imágenes anteriores al menos parcialmente descodificadas, p. ej., almacenadas en DBP) y otros parámetros de interpredicción, p.ej., si se utiliza toda la imagen de referencia completa o solo una parte, p. ej., un área de ventana de búsqueda alrededor del área del bloque actual, si se utiliza la imagen de referencia para buscar un bloque de referencia que coincida mejor, y/o, p. ej., si se aplica la interpolación de píxeles, p. ej., la interpolación de medio/semipíxel, un cuarto de píxel y/o 1/16 de píxel, o no.
Además de los modos de predicción anteriores, se pueden aplicar modo de omisión, modo directo y/u otros modos de interpredicción.
Por ejemplo, para la predicción de fusión extendida, la lista de candidatos de fusión de tal modo se construye incluyendo los siguientes cinco tipos de candidatos en orden: MVP espacial de CU vecinas espaciales, MVP Temporal de CU coladas, MVP basada en el historial desde una tabla FIFO, MVP promedio por pares y los MV cero. Y se puede aplicar un refinamiento del vector de movimiento del lado del descodificador basado en dos lados (DMVR) para aumentar la precisión de los MV del modo de fusión. Modo fusión con MVD (MMVD), que proviene del modo de fusión con diferencias de vectores de movimiento. Un indicador MMVD se señaliza justo después de enviar una indicador de omisión y un indicador de fusión para especificar si el modo MMVD se utiliza para una CU. Y se puede aplicar un esquema de resolución de vector de movimiento adaptativo a nivel de CU (AMVR). AMVR permite codificar MVD de la CU en diferentes precisiones. Dependiendo del modo de predicción para la CU actual, los MVD de la CU actual pueden seleccionarse adaptativamente. Cuando una CU está codificada en modo de fusión, el modo de inter/intrapredicción combinado (CIIP) puede aplicarse a la CU actual. El promedio ponderado de las señales interpredicción e intrapredicción se realiza para obtener la predicción de CIIP. Predicción con compensación de movimiento afín, el campo de movimiento de afín del bloque se describe mediante información de movimiento de dos vectores de control (4 parámetros) o tres vectores de movimiento de punto de control (6 parámetros). Predicción de vector de movimiento temporal basada en subbloque (SbTMVP), que es similar a la predicción de vector de movimiento temporal (TMVP) en HEVC, pero predice los vectores de movimiento de las sub-CU dentro de la CU actual. El flujo óptico bidireccional (BDF), denominado previamente BIO, es una versión más simple que requiere mucho menos cálculo, especialmente en términos de número de multiplicaciones y el tamaño del multiplicador. Modo de partición triángulo, en tal modo, una CU se divide uniformemente en dos particiones en forma de triángulo, usando la división diagonal o la división antidiagonal. Además, el modo de bipredicción se extiende más allá del promedio simple para permitir el promedio ponderado de las dos señales de predicción.
La unidad de interpredicción puede incluir una unidad de estimación de movimiento (ME) y una unidad de compensación de movimiento (MC) (ninguna se muestra en la Figura 2). La unidad de estimación de movimiento puede configurarse para recibir u obtener el bloque de imagen (bloque de imagen actual de la imagen actual) y una imagen descodificada, 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 descodificadas, para la estimación de movimiento. Por ejemplo, una secuencia de vídeo puede comprender la imagen actual y las imágenes previamente descodificadas, o en otras palabras, la imagen actual y las imágenes previamente descodificadas pueden ser parte de o formar una secuencia de imágenes que forman una secuencia de vídeo.
El codificador puede estar configurado, por ejemplo, para seleccionar un bloque de referencia de una pluralidad de bloques de referencia de las mismas o diferentes imágenes de la pluralidad de otras imágenes y proporcionar una imagen de referencia (o índice de imagen de referencia) y/o un desplazamiento (desplazamiento espacial) entre la posición (coordenadas x, y) del bloque de referencia y la posición del bloque actual como parámetros de interpredicción a la unidad de estimación de movimiento. Este desplazamiento también se denomina vector de movimiento (MV).
La unidad de compensación de movimiento se configura para obtener, por ejemplo, recibir, un parámetro de interpredicción y realizar una interpredicción basándose en o usando el parámetro de interpredicción para obtener un bloque de interpredicción. La compensación de movimiento, realizada por la unidad de compensación de movimiento, puede implicar grabar o generar el bloque de predicción basándose en el movimiento/vector de bloque determinado por la estimación de movimiento, realizando posiblemente interpolaciones a la precisión de subpíxel. El filtrado de interpolación puede generar muestras de píxeles adicionales a partir de muestras de píxeles conocidas, aumentando así potencialmente el número de bloques de predicción candidatos que pueden usarse para codificar un bloque de imagen. Tras recibir el vector de movimiento para la PU del bloque de imagen actual, la unidad de compensación de movimiento puede localizar el bloque de predicción al que los puntos de 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 sintácticos asociados con los bloques y segmentos de vídeo para su uso por el descodificador 30 de vídeo al descodificar los bloques de imagen del fragmento de vídeo. Además o como alternativa a cortes y elementos de sintaxis respectivos, los grupos de baldosas y/o baldosas y los elementos de sintaxis respectivos pueden generarse o usarse.
Como se muestra en la Figura 20, en una realización de la presente invención, un método de codificación de vídeo puede comprender:
S2001: obtener un flujo de bits de vídeo.
Un lado del descodificador recibe un flujo de bits de vídeo codificado desde otro lado (lado del codificador o lado del transmisor de red), o el lado del descodificador lee el flujo de bits de vídeo codificado que almacena en una memoria del lado del descodificador.
El flujo de bits de vídeo codificado comprende información para descodificar los datos de imagen codificados, por ejemplo, datos que representan bloques de imagen de un vídeo codificado y elementos de sintaxis asociados.
S2002: determinar si las muestras predichas de un bloque de codificación actual se obtienen usando intrapredicción o interpredicción, según el flujo de bits de vídeo.
En el lado del descodificador, un bloque de codificación actual es un bloque que está siendo reconstruido actualmente por el descodificador. Un bloque de codificación actual está en una trama o imagen del vídeo.
Si las muestras predichas de un bloque de codificación actual se obtienen usando intrapredicción o interpredicción puede determinarse según elementos de sintaxis en el flujo de bits de vídeo.
Puede haber un elemento de sintaxis en el flujo de bits de vídeo para indicar el bloque de codificación actual usando interpredicción o intrapredicción. Por ejemplo, hay un indicador en el flujo de bits se utiliza para indicar el proceso de intrapredicción o el proceso de interpredicción se usa para el bloque de codificación actual. Cuando un valor del indicador es igual a 1 (u otros valores), entonces las muestras predichas de un bloque de codificación actual se obtienen usando intrapredicción; o cuando un valor del indicador es igual a 0 (u otros valores), entonces las muestras predichas de un bloque de codificación actual se obtienen usando interpredicción.
También puede haber dos o más elementos de sintaxis para indicar el bloque de codificación actual mediante interpredicción o intrapredicción. Por ejemplo, hay una información de indicación (por ejemplo, un indicador) en el flujo de bits se usa para indicar si el proceso de intrapredicción se usa para el bloque de codificación actual o no, y hay otra información de indicación (por ejemplo, otro indicador) en el flujo de bits se usa para indicar si el proceso de interpredicción se usa para el bloque de codificación actual o no.
Cuando se determina que las muestras predichas del bloque de codificación actual se obtienen mediante intrapredicción, van a la etapa S2003. Cuando se determina que las muestras predichas del bloque de codificación actual se obtienen usando interpredicción, van a la etapa S2006.
S2003: obtener un primer valor de desplazamiento de subpíxel según un modo de intrapredicción del bloque de codificación actual y una posición de una muestra predicha dentro del bloque de codificación actual.
En un ejemplo, el modo de intrapredicción del bloque de codificación actual también puede obtenerse según el flujo de bits de vídeo.
La Figura 4 muestra un ejemplo de 67 modos de intrapredicción, p. ej., como se propone para VVC, la pluralidad de modos de intrapredicción de 67 modos de intrapredicción que comprende: modo plano (índice 0), modo de dc (índice 1), y modos angulares con los índices 2 a 66, en donde el modo angular inferior izquierdo en la Figura 4 se refiere al índice 2 y la numeración de los índices que se incrementa hasta que el índice 66 es el modo angular más alto de la parte superior derecha de la Figura 4.
La Figura 11 ilustra un diagrama esquemático de una pluralidad de modos de intrapredicción utilizados en el esquema UIP de HEVC. Para bloques de luminancia, los modos de intrapredicción pueden comprender hasta 36 modos de intrapredicción, que pueden incluir tres modos no direccionales y 33 modos direccionales. Los modos no direccionales pueden comprender un modo de predicción plano, un modo de predicción media (CC) y una croma del modo de predicción de luma (LM). El modo de predicción plano puede realizar predicciones suponiendo una superficie de amplitud de bloque con una pendiente horizontal y vertical derivada del límite del bloque. El modo de predicción DC puede realizar predicciones suponiendo una superficie de bloque plana con un valor que coincide con el valor medio del límite de bloque. El modo de predicción LM puede realizar predicciones suponiendo un valor de croma para el bloque coincide con el valor de luma para el bloque. Los modos direccionales pueden realizar predicciones basadas en bloques adyacentes como se muestra en la Figura 11.
Un modo de intrapredicción del bloque de codificación actual puede obtenerse según analizar el flujo de bits de vídeo para el bloque de codificación actual. En un ejemplo, un valor del indicador más Probable de modos, MPM, para el bloque de codificación actual se obtiene según el flujo de bits de vídeo. En un ejemplo, cuando el valor del indicador de MPM es cierto (por ejemplo, el valor del indicador de MPM es 1), se obtiene un valor de un índice, el valor del índice se usa para indicar el valor del modo de intrapredicción del bloque de codificación actual en el MPM.
En otro ejemplo, cuando el valor del indicador MPM es cierto (por ejemplo, el valor del indicador MPM es 1), se obtiene un valor de un segundo indicador (por ejemplo, un indicador Planar). Cuando el valor del segundo indicador es falso (en un ejemplo, el valor del segundo indicador es falso indica que el modo de intrapredicción del bloque de codificación actual no es un modo Plano), se obtiene un valor de un índice, el valor del índice se usa para indicar el valor del modo de intrapredicción del bloque de codificación actual en el MPM.
En un ejemplo, unos elementos de sintaxis intra_luma_mpm_flag[ x0 ][ y0 ], intra_luma_mpm_idx[ x0 ][ y0] and intra_luma_mpm_remainder[ x0 ][ y0 ] especifican el modo de intrapredicción para muestras de luma. Los índices de matriz x0, y0 especifican la ubicación (x0, y0) de la muestra de luma superior izquierda del bloque de predicción considerado en relación con la muestra de luma superior izquierda de la imagen. Cuando intra_luma_mpm_flag[ x0 ][ y0 ] es igual a 1, el modo de intrapredicción se infiere de una unidad de predicción intrapredicha adyacente.
En un ejemplo, cuando el valor del indicador de MPM es falso (por ejemplo, el valor del indicador de MPM es 0), se obtiene un valor de un índice, el valor del índice se usa para indicar el valor del modo de intrapredicción del bloque de codificación actual en el no MPM.
Una posición de una muestra predicha dentro del bloque de codificación actual se obtiene según la pendiente del modo de intrapredicción. La posición de una muestra dentro de un bloque predicho (por ejemplo, el bloque de codificación actual) se define en relación con la posición de la muestra predicha superior izquierda por un par de valores enteros (xp,yp), en donde Xp es un desplazamiento horizontal de la muestra predicha con respecto a la muestra predicha superior izquierda e yp es el desplazamiento vertical de la muestra predicha con respecto a la muestra predicha superior izquierda. La muestra predicha superior izquierda tiene una posición definida como Xp=0, yp=0. Para generar muestras predichas a partir de las muestras de referencia se realizan las siguientes etapas. Se definen dos rangos de modos de intrapredicción. El primer rango de modos de intrapredicción corresponde a la predicción orientada verticalmente, y el segundo rango de los modos de intrapredicción corresponde a modos orientados horizontalmente. Cuando un modo de intrapredicción especificado para un bloque predicho pertenece al primer rango de los modos de intrapredicción, un bloque de muestras predichas se direcciona adicionalmente con la posición (x, y), en donde x se configura igual a Xp e y se configura igual ayp. Cuando un modo de intrapredicción especificado para un bloque predicho pertenece al segundo rango de los modos de intrapredicción, un bloque de muestras predichas se direcciona adicionalmente con la posición (x, y), en donde x se configura igual aXpeyse configura igual a x p. En algunos ejemplos, el primer rango de modos de intrapredicción se define como [34, 80]. El segundo rango de modos de intrapredicción se define como [-14, -1] u [1,33]. El parámetro inversor invAngle se deriva basándose en el ángulo intraPreddle de la siguiente manera:
invAngle = Round(-i-n-t-ra5P12re*3d2A--n-g-l-e)
Cada manera de intrapredicción tiene una variable de intrapredicción asociada, a la que se hace referencia, además, como “ intraPredAngle” . Esta asociación se muestra en la Tabla 8-8.
El desplazamiento de subpíxeles indicado como “ iFact” y también denominado además “ el primer valor de desplazamiento de subpíxel” , se define mediante la siguiente ecuación:
iFact = ((y+1+refIdx) * intraPredAngle) & 31
En esta ecuación, refIdx indica el desplazamiento de la muestra de referencia establecida desde el límite de un bloque predicho. Para un componente de luma, este valor podría obtenerse, por ejemplo, de la siguiente manera:
El valor del elemento de sintaxis “ intra luma ref idx” se señaliza en el flujo de bits.
Un ejemplo del proceso para obtener muestras predichas (como el estándar VVC descrito, JVET-02001), se proporciona además, en donde la posición (x, y) siempre se define como x=xp e y=yp sin dependencia de si el modo de intrapredicción está orientado horizontal o verticalmente:
Los valores de las muestras de predicción predSamples[ x ][ y ], con x = 0..nTbW -1 , y = 0..nTbH -1 se derivan de la siguiente manera:
- Si predModeIntra es mayor o igual que 34, se aplican las siguientes etapas ordenadas:
1. La matriz de muestras de referencia ref[ x ] se especifica de la siguiente manera:
- Se aplica lo siguiente:
ref[x] = p[-1-refIdx x][-1-refIdx], with x =0..nTbW refIdx 1
- Si el ángulo intraPredAngle es menor que 0, la matriz de muestras de referencia principal se extiende de la siguiente manera:
ref[x] = p[-1-refIdx][-1-refIdx Min (( x * invAngle 256) >>9, nTbH)], with x =-nTbH...1
- De cualquier otra manera,
ref[x] = p[-1-refIdx x][-1-refIdx], with x =nTbW 2 refldx
- Las muestras adicionales ref[ refW refldx x] with x = 1..( Max( 1, nTbW / nTbH) * refldx 2) se derivan de la siguiente manera:
ref[refW refIdx x] = p[-1 refW][-1-refIdx]
2. Los valores de las muestras de predicción predSamples[ x ][ y ], con x = 0..nTbW - 1, y = 0..nTbH - 1 se derivan de la siguiente manera:
- La variable de índice iIdx y el factor de multiplicación iFact se derivan de la siguiente manera:
iIdx = (((y 1+refIdx) * intraPredAngle) >> 5) refIdx
iFact = ((y+1+refIdx)*intraPredAngle) & 31
- Si cldx es igual a 0, se aplica lo siguiente:
- Los coeficientes de filtro de interpolación fT[ j ] with j = 0..3 se derivan de la siguiente manera:
fT[j] = filterFlag ? fG[iFact][j] : fC[iFact][j]
- El valor de las muestras de predicción predSamples[ x ][ y ] se deriva de la siguiente manera:
predSamples[x][y] = Clip1Y(((X-=0/T [t ] *ref[x ildx<í>]) 32) »6) ]- De cualquier otra manera (cIdx no es igual a 0), dependiendo del valor de iFact, se aplica lo siguiente: - Si iFact no es igual a 0, el valor de las muestras de predicción predSamples [x ] [y ] se deriva de la siguiente manera:
predSamples[x][y]=((32-iFact)*ref[x iIdx 1]+iFact*ref[x+iIdx+2] 16) >>5 - De cualquier otra manera, el valor de las muestras de predicción predSamples[ x ][ y ] se deriva de la siguiente manera:
predSamples[x][y]=ref[x+iIdx+1]
- De cualquier otra manera, (predModeIntra es menor que 34), se aplican las siguientes etapas ordenadas: 1. La matriz de muestras de referencia ref[ x ] se especifica de la siguiente manera:
- Se aplica lo siguiente:
ref[x]=p[-1-refIdx][-1-refIdx+x], with x =0..nTbH+refIdx+1
- Si el ángulo intraPredAngle es menor que 0, la matriz de muestras de referencia principal se extiende de la siguiente manera:
ref[x]=p[-1-refIdx+Min((x*invAngle+256)>>9,nTbW)][-1-refIdx], with x =-nTbW..-1 - De cualquier otra manera,
ref[x]=p[-1-refIdx][-1-refIdx+x], with x= nTbH+2+refIdx..refH refIdx
- Las muestras adicionales ref [refH refIdx x] con x = 1,. (Max (1, nTbW/nTbH) *refIdx 2) se derivan de la siguiente manera:
ref[refH refIdx x] =p[-1 refH][-1-refIdx]
2. Los valores de las muestras de predicción predSamples[ x ][ y ], con x = 0..nTbW - 1, y = 0..nTbH - 1 se derivan de la siguiente manera:
- La variable de índice iIdx y el factor de multiplicación iFact se derivan de la siguiente manera:
ildx =((( x+1+refIdx ) * intraPredAngle) >>5) refldx
iFact = (( x+1+refIdx) * intraPredAngle) & 31
- Si cldx es igual a 0, se aplica lo siguiente:
- Los coeficientes de filtro de interpolación fT[ j ] with j = 0..3 se derivan de la siguiente manera:
fT[j] = filterFlag ? fG[iFact][j fC[iFact][j]
- El valor de las muestras de predicción predSamples[ x ][ y ] se deriva de la siguiente manera:
predSamples[x][y] = Clip1Y(((£_(t = 0)A3IfT[i]J * ref[y ildx¿]) 32 ) » 6) - De cualquier otra manera (cIdx no es igual a 0), dependiendo del valor de iFact, se aplica lo siguiente: - Si iFact no es igual a 0, el valor de las muestras de predicción predSamples [x ] [y ] se deriva de la siguiente manera:
predSamples[x][y]=((32-iFact)*ref[y+iIdx+1]+iFact*ref[y+iIdx+2]+16)>>5 - De cualquier otra manera, el valor de las muestras de predicción predSamples[ x ][ y ] se deriva de la siguiente manera:
predSamples[x][y] = ref[y+iIdx+1].
S2004: obtener coeficientes de filtro en base al primer valor de desplazamiento de subpíxeles.
En un ejemplo, obtener coeficientes de filtro basándose en el primer valor de desplazamiento de subpíxel significa que obtener coeficientes de filtro basándose en la tabla de consulta predefinida y el primer valor de desplazamiento de subpíxeles. En un ejemplo, el primer valor de desplazamiento de subpíxeles se usa como un índice, la tabla de consulta predefinida se usa para describir la relación de mapeo entre los coeficientes de filtro y el desplazamiento de subpíxeles. En un ejemplo, la tabla de consulta predefinida se describe como sigue:
en donde la columna “ Desplazamiento de subpíxeles” se define en 1/32 de resolución de subpíxeles, yco, ci, C2, C3son coeficientes de filtro.
En otro ejemplo, la tabla de consulta predefinida se describe como sigue:
en donde la columna “ Desplazamiento de subpíxeles” se define en 1/32 de resolución de subpíxeles, yco, ci, C2, C3son coeficientes de filtro.
En otra posible realización de implementación, el resultado del proceso de derivación del coeficiente de filtro de interpolación para la intrapredicción e interpredicción son coeficientes de un filtro de 4 derivaciones.
En una posible realización de implementación, el proceso de derivación del coeficiente de filtro de interpolación se selecciona cuando un tamaño de un lado de referencia principal usado en la intrapredicción es menor o igual que un umbral.
En un ejemplo, los coeficientes de filtro se seleccionan para ser gaussianos o cúbicos, que dependen de un valor de anchura de un bloque o de un valor de altura de un bloque. La decisión sobre si usar ancho o altura se armoniza con la decisión sobre la selección del lado de referencia principal. Cuando un valor de un modo de intrapredicción es mayor o igual que un valor de un modo diagonal, el lado superior de las muestras de referencia se selecciona para que sea el lado de referencia principal, y el valor de ancho se selecciona para determinar el filtro de interpolación en uso. Cuando un valor de un modo de intrapredicción es menor que un valor de un modo diagonal, la referencia lateral principal se selecciona del lado izquierdo del bloque y el valor de altura se utiliza para controlar el proceso de selección del filtro. Específicamente, si la longitud lateral seleccionada es menor o igual a 8 muestras, se aplica un filtro cúbico de 4 derivaciones. Si la longitud lateral seleccionada es mayor que 8 muestras, el filtro de interpolación es un filtro gaussiano de 4 derivaciones.
Como para cada manera de intrapredicción, hay un valor correspondiente a un modo de intrapredicción. Por lo tanto, la relación de valores (por ejemplo, menor que, igual a, o mayor que) entre diferentes valores de modo de intrapredicción puede usarse para seleccionar referencia lateral principal.
La Figura 12 muestra un ejemplo de selección para modos más pequeños y mayores que la diagonal uno (indicado como 45°) en el caso del bloque 32 x 4. Como se muestra en la Figura 12, si un valor correspondiente al modo de intrapredicción del bloque de codificación actual es menor que un valor correspondiente a la diagonal uno, el lado izquierdo (altura) del bloque de codificación actual se selecciona como el lado de referencia principal. En este caso, un modo de intrapredicción especificado para un bloque predicho está orientado horizontalmente, es decir, este modo de intrapredicción pertenece al segundo rango de los modos de intrapredicción. Como el lado izquierdo tiene 4 muestras, que es menor que un umbral (p. ej., 8 muestras), por lo tanto, se selecciona un filtro de interpolación cúbica.
Si un valor correspondiente al modo de intrapredicción del bloque de codificación actual es mayor o igual que un valor correspondiente a la diagonal uno, el lado superior (ancho) del bloque de codificación actual se selecciona como el lado de referencia principal. En este caso, un modo de intrapredicción especificado para un bloque predicho está orientado verticalmente, es decir, este modo de intrapredicción pertenece al primer rango de los modos de intrapredicción. Como el lado superior tiene 32 muestras, que es mayor que un umbral (p. ej., 8 muestras), por lo tanto, se selecciona un filtro de interpolación gaussiana.
En un ejemplo, si se selecciona un filtro cúbico, la muestra predicha se sujeta adicionalmente al rango de valores permitido, que se define en el conjunto de parámetros de secuencia, SPS o derivado de la profundidad de bits del componente seleccionado.
En un ejemplo, como se muestra en la Figura 8, el “ filtro de interpolación de 4 derivaciones” discontinuo con coeficientes de 6 bits para croma “ (denominado además” filtro intra/interrunificado” ) puede utilizarse para ambos procesos: interpolación de muestras intrapredichas e interpredichas.
Una realización que utiliza este diseño se muestra en la Figura 9. En esta implementación, se está implementando un módulo de filtrado como una unidad separada que se está acoplando en trama: predicción de muestras de crominancia en compensación 906 de movimiento, y predicción de muestras de luminancia y crominancia cuando realiza la intrapredicción 907. En esta implementación, la parte de filtrado de hardware (p. ej., filtro 904 de 4 derivaciones) se utiliza en procesos de intrapredicción e interpredicción.
Otra realización muestra la implementación cuando LUT de coeficientes de filtro se reutilizan (véase la Figura 10). La Figura 10 es una implementación ejemplar de la aplicación propuesta basada en el uso de coeficientes LUT. En esta implementación, los módulos de filtrado de hardware cargan coeficientes de LUT que se almacenan en ROM. Un interruptor que se muestra en el proceso de intrapredicción determina el tipo de filtro que se utiliza, dependiendo de la longitud del lado principal seleccionado para el proceso de intrapredicción.
En otro ejemplo, los coeficientes de filtro se seleccionan para que sean gaussianos o cúbicos, que dependiendo de un umbral.
En algunos ejemplos, para bloques de tamaño 32 x 4 y 4 x 32, el modo umbral m j utilizado para determinar el filtro de muestra de referencia se define como se muestra en la Figura 16.
El valor del umbral de ángulo de intrapredicción puede calcularse usando la siguiente fórmula:
aj=arctan(^),
DondeWyHson el ancho y la altura del bloque, respectivamente.
En un ejemplo, Especificación de modos de intrapredicción INTRA_ANGULAR2..INTRA_ANGULAR66. Las entradas de este proceso son:
- el modo de intrapredicción predModeIntra,
- una variable refldx que especifica el índice de línea de referencia de intrapredicción,
- una variable nTbW que especifica el ancho del bloque de transformación,
- una variable TbH que especifica la altura del bloque de transformación,
- una variable refW que especifica la anchura de las muestras de referencia,
- una recuperación variable que especifica la altura de las muestras de referencia,
- una nCbW variable que especifica el ancho del bloque de codificación,
- un nCbH variable que especifica la altura del bloque de codificación,
- una variable refFilterFlag que especifica el valor del indicador de filtro de referencia,
- una variable cldx que especifica el componente de color del bloque actual,
- las muestras adyacentes p[ x ][ y ], with x = -1- refldx, y = -1- refIdx..refH -1 and x = -refIdx..refW -1, y = -1- refldx. Las salidas de este proceso son las muestras predichas predSamples[ x ][ y ], with x = 0..nTbW -1 , y = 0..nTbH -1. La variable nTbS se configura igual a (Log2 (nTbW) Log2 (nTbH)) >> 1.
La variable filterFlag se deriva de la siguiente manera:
- Si una o más de las siguientes condiciones son verdaderas, filterFlag se configura igual a 0.
- refFilterFlages igual a 1
- refldx no es igual a 0
- IntraSubPartitionsSplitType no es igual a ISP_NO_SPLIT
- De cualquier otra manera, se aplica lo siguiente:
- La variable minDistVerHo se configura igual a Min( Abs( predModeIntra - 50), Abs( predModeIntra -18)). - Se especifica la variable intraHorVerDistThes [nTbS ] en la Tabla 8-7.
- La variable filterFlag se deriva de la siguiente manera:
- Si minDistVerHo es mayor queintraHorVerDistThres[ nTbS ] y refFilterFlag es igual a 0, filterFlag se configura igual a 1.
- De cualquier otra manera, filterFlag se configura igual a 0.
Tabla 8-7. Especificación de intraHorVerDistThres[ nTbS ] para diversos tamaños de bloques de transformación nTbS
La Tabla 8-8 especifica la tabla de mapeo entre predModeIntra y el parámetro de ángulo intraPredAngle. Tabla 8 8. Especificación de intraPredAngle
El parámetro inversor invAngle se deriva basándose en el ángulo intraPreddle de la siguiente manera:
invAngle = Round(-i-n-t-ra51P2r*e3d2A--n-g--le).
Los coeficientes del filtro de interpolación fC[ phase ][ j ] y fG[ phase ][ j ] with phase = 0..31 and j = 0..3 se especifican en la Tabla 8-9.
Tabla 8-9. Especificación de coeficientes de filtro de interpolación fC y fG
S2005: obtener el valor de muestra intrapredicho según los coeficientes del filtro. El valor de muestra intrapredicho se utiliza para el componente Luma del bloque de codificación actual.
En una realización, la muestra intrapredicha se calcula mediante el entrelazado con coeficientes seleccionados de la Tabla 3 según el desplazamiento de subpíxeles y el tipo de filtro de la siguiente manera:
¡<4
* 09 = ( ^ V e f i+ x 'cd+ 32) » 6
¿=o
En esta ecuación “ indica una operación de desplazamiento a prueba de bits,cindica un coeficiente de conjunto de coeficientes de filtro derivados usando el primer valor de desplazamiento de subpíxel, s(x) denota una muestra intrapredicha en la posición (x,y),refi+xindica un conjunto de muestras de referencia, en donderefi+xestá ubicado en la posición (xr,yr), esta posición de la muestra de referencia se define como sigue:
xr =(((y+1+refIdx)*intraPredAngle)>>5)+refIdx;
yr=>>-1-refIdx.
En un ejemplo, los valores de las muestras de predicciónpredSamples[ x ][ y ], with x = 0..nTbW - 1, y = 0..nTbH -1 se derivan de la siguiente manera:
- Si predModeIntra es mayor o igual que 34, se aplican las siguientes etapas ordenadas:
3. La matriz de muestras de referencia ref[ x ] se especifica de la siguiente manera:
- Se aplica lo siguiente:
ref[x] = p[-1-refIdx+x][-1-refIdx], with x= 0..nTbW refIdx 1
- Si intraPredAngle es menor que 0, la matriz de muestras de referencia principal se extiende de la siguiente manera: ref[x]=p[-1-refIdx][-1-refIdx+Min((x*invAngle 256)>>9, nTbH)], with x= -nTbH..1 - De cualquier otra manera,
ref[x]=p[-1-refIdx+x][-1-refIdx], with x=nTbW 2 refIdx..refW refIdx - Las muestras adicionales ref[ refW refIdx x] with x = 1..( Max( 1, nTbW / nTbH) * refIdx 2) se derivan de la siguiente manera:
ref[refW refIdx x] = p[-1+refW][-1-refIdx]
4. Los valores de las muestras de predicción predSamples[ x ][ y ], con x = 0..nTbW - 1, y = 0..nTbH - 1 se derivan de la siguiente manera:
- La variable de índice iIdx y el factor de multiplicación iFact se derivan de la siguiente manera:
iIdx = (((y+1+refIdx) * intraPredAngle)>>5)+refIdx
iFact = ((y+1+refIdx)*intraPredAngle)&31
- Si cldx es igual a 0, se aplica lo siguiente:
- Los coeficientes de filtro de interpolación fT[ j ] with j = 0..3 se derivan de la siguiente manera:
fT[j] =filterFlag ? fG[iFact][j] : fC[iFact][j]
- El valor de las muestras de predicción predSamples[ x ][ y ] se deriva de la siguiente manera:
predSamples[x][y]=Clip1Y(((£_(£ = 0)A3JfT[i] * ref[x ildx<í>]) 32) >>6)J- De cualquier otra manera (cIdx no es igual a 0), dependiendo del valor de iFact, se aplica lo siguiente: - Si iFact no es igual a 0, el valor de las muestras de predicción predSamples [x ] [y ] se deriva de la siguiente manera:
predSamples[x][y]=((32-iFact)*ref[x+iIdx+1]+iFact*ref[x+iIdx+2]+16)>>5 - De cualquier otra manera, el valor de las muestras de predicción predSamples[ x ][ y ] se deriva de la siguiente manera:
predSamples[x][y]=ref[x+iIdx+1]
- De cualquier otra manera, (predModeIntra es menor que 34), se aplican las siguientes etapas ordenadas: 3. La matriz de muestras de referencia ref[ x ] se especifica de la siguiente manera:
- Se aplica lo siguiente:
ref[x]=p[-1-refIdx][-1-refIdx+x]. with x = 0..nTbH refIdx 1
- Si intraPredAngle es menor que 0, la matriz de muestras de referencia principal se extiende de la siguiente manera:
ref[x] =p[-1-refIdx+Min((x*invAngle+256)>>9,nTbW)][-1-refIdx], with x = -nTbW..-1 - De cualquier otra manera,
ref[x]=p[-1-refIdx][-1-refIdx+x], with x =nTbH+2+refIdx..refH+refIdx
- Las muestras adicionales ref[ refH refIdx x] with x = 1..( Max( 1, nTbW / nTbH) * refIdx 2) se derivan de la siguiente manera:
ref[reH refIdx x] =p[-1+refH][-1-refIdx]
4. Los valores de las muestras de predicción predSamples[ x ][ y ], con x = 0..nTbW - 1, y = 0..nTbH - 1 se derivan de la siguiente manera:
- La variable de índice iIdx y el factor de multiplicación iFact se derivan de la siguiente manera:
ildx = (((x+1+refIdx)*intraPredAngle)>>5+refIdx iFact=((x+1+refIdx)*intraPredAngle)&31
- Si cldx es igual a 0, se aplica lo siguiente:
- Los coeficientes de filtro de interpolación fT[ j ] with j = 0..3 se derivan de la siguiente manera:
fT[j]=filterFlag ? fG[iFact][j] : fC[iFact][j]
- El valor de las muestras de predicción predSamples[ x ][ y ] se deriva de la siguiente manera:
predSamples[x][y]=Clip1Y(((X-=0/T [t ] *ref[y ildx¿]) 32) >> 6) - De cualquier otra manera (cIdx no es igual a 0), dependiendo del valor de iFact, se aplica lo siguiente: - Si iFact no es igual a 0, el valor de las muestras de predicción predSamples [x ] [y ] se deriva de la siguiente manera:
predSamples[x][y]=((32-iFact)*ref[y+iIdx+1]+iFact*ref[y+iIdx+2]+16)>>5 - De cualquier otra manera, el valor de las muestras de predicción predSamples[ x ][ y ] se deriva de la siguiente manera:
predSamples[x][y]=ref[y+iIdx+1].
S2006: obtener un segundo valor de desplazamiento de subpíxel según información de movimiento del bloque de codificación actual.
La información de movimiento del bloque de codificación actual se señaliza en el flujo de bits. La información de movimiento puede comprender vectores de movimiento y otros elementos de sintaxis, que se utilizan en la interpredicción. En un ejemplo, el primer valor de desplazamiento de subpíxel puede ser igual al segundo valor de desplazamiento de subpíxel. En otro ejemplo, el primer valor de desplazamiento de subpíxel puede ser diferente al segundo valor de desplazamiento de subpíxel.
S2007: obtener coeficientes de filtro en base al segundo valor de desplazamiento de subpíxeles.
En una posible realización de implementación, el proceso de derivación del coeficiente de filtro de interpolación que se usa en la interpredicción se realiza la misma tabla de consulta predefinida que se usa en la intrapredicción. En este ejemplo, obtener coeficientes de filtro basándose en el segundo valor de desplazamiento de subpíxel significa que obtener coeficientes de filtro basándose en la tabla de consulta predefinida y el segundo valor de desplazamiento de subpíxel. En un ejemplo, el segundo valor de desplazamiento de subpíxeles se usa como un índice, la tabla de consulta predefinida se usa para describir la relación de mapeo entre los coeficientes de filtro y el desplazamiento de subpíxeles. En un ejemplo, la tabla de consulta predefinida se describe como sigue:
en donde la columna “ Desplazamiento de subpíxeles” se define en 1/32 de resolución de subpíxeles, yco, ci, C2, C3son coeficientes de filtro.
En otro ejemplo, la tabla de consulta predefinida se describe como sigue:
en donde la columna “ Desplazamiento de subpíxeles” se define en 1/32 de resolución de subpíxeles, yco, ci, C2, C3son coeficientes de filtro.
Cuando un valor del desplazamiento de subpíxeles es igual a 0, no se requieren los coeficientes de filtro para obtener muestras interpredichas. En una primera realización alternativa, se podría realizar la siguiente etapa:
En una segunda realización alternativa, se podría realizar la siguiente etapa:
En una tercera realización alternativa, se podría realizar la siguiente etapa:
• La matriz de muestra temp[ n ] with n = 0..3, se deriva de la siguiente manera:
• El valor predicho de la muestra de croma predSampLXc se deriva de la siguiente manera:
En todas las tres realizaciones alternativas descritas anteriormente, yFrac c y xFracc se configuran igual a 0, fC [ 0 ] [ 0 ] = 0, fC [ 0 ] [ 1 ] = 64, fC [ 0 ] [ 2 ] = 0, fC [ 0 ] [ 3 ] = 0.
En otra posible realización de implementación, el resultado del proceso de derivación del coeficiente de filtro de interpolación para la intrapredicción e interpredicción son coeficientes de un filtro de 4 derivaciones.
S2008: obtener el valor de muestra interpredicho según los coeficientes de filtro.
En una posible realización de implementación, el valor de muestra interpredicho se usa para componente de croma del bloque de codificación actual.
En un ejemplo, se describe el proceso de interpolación de muestras de croma.
Las entradas de este proceso son:
- una ubicación de croma en unidades de muestra completa( xIntc, yIntc),
- una ubicación de croma en 1/32 unidades fraccionarias de muestra (xFracc, yFracc),
- una ubicación de croma en unidades de muestra completa (xSblntC, ySbIntC) que especifica la muestra superior izquierda del bloque delimitador para el relleno de muestra de referencia en relación con la muestra de croma superior izquierda de la imagen de referencia,
- una anchura variable sb que especifica el ancho del subbloque actual,
- una variable sbHeight que especifica la altura del subbloque actual,
- la matriz de muestras de referencia de croma refPicLXc.
La salida de este proceso es un valor de muestra de croma predicho predSampleLXo
Las variables shift 1, shift2 y shift3 se derivan de la siguiente manera:
- La variable shift1 se configura igual a Min(4, BitDepthc - 8), la variable shift2 se configura igual a 6 y la variable shift3 se configura igual a Max( 2, 14 - BitDepthc).
- La variable picWc se configura igual a la anchura de pico en muestras de luma/SubWidthC y la variable picHc se configura igual a pic_height_in_luma_samples / SubHeightC.
Los coeficientes de filtro de interpolación de croma fc[ p ] para cada una de 1/32 posiciones de muestra fraccionaria p igual a xFracc o yFracc se especifican en la Tabla 8-13.
La variable xOffset se configura igual que (sps_ref_wraparound_offset_minus1 1) * MinCbSizeY ) / SubWidthC. Las ubicaciones de crominanacia en unidades de muestra completa (xInti, In ti) se derivan de la siguiente manera para i = 0..3:
- Si subpic_trated_as_pp_flag [SubPicIdx ] es igual a 1, se aplica lo siguiente:
xInti=Clip3(SubPicLeftBoundaryPos/SubWidthC, SubPicRightBoundaryPos/SubWidthC,xIntL+i) yInti=Clip3(SubPicLeftBoundaryPos/SubWidthC, SubPicRightBoundaryPos/SubWidthC,yIntL+i)
- De cualquier otra manera (subpic_trated_as_pic_flag [SubPicIdx ] es igual a 0), se aplica lo siguiente:
xInti=Clip3(0,picWc-1,sps_ref_wraparound_enabled_flag ? ClipH(xOffset,picWc, xIntc+i-1) yInti=Clip3(0,picHc-1,yIntc+i-1)
Las ubicaciones de croma en unidades de muestra completa ( xInti, In ti) se modifican adicionalmente como sigue para i = 0..3:
xInti=Clip3(xSbIntC-1,xSbIntC+sbWidth+2,xInti)
yInti=Clip3(ySbIntC-1,ySbIntC+sbWidth+2,yInti)
El valor predicho de la muestra de croma predSampleLXo se deriva de la siguiente manera:
- Si tanto xFracc como yFracc son iguales a 0, el valor de predSampleLXo se deriva de la siguiente manera:
predSampleLXc=refPicLXc[xInt1][]yInt1]<<shift3
- De cualquier otra manera, si xFracc no es igual a 0 y yFracc es igual a 0, el valor de predSampleLXo se deriva de la siguiente manera:
predSampleLXo=(£;=0/ c [xFracc][t] *refPicLXc[xInt1][]yInt-i] >>shift1 - De cualquier otra manera, si xFracc es igual a 0 y yFracc no es igual a 0, el valor de predSampleLXo se deriva de la siguiente manera:
predSampleLXC=(£f=0f c[yFracc][i]*refPicLXC[xInti][]yInti] >>shift1
- De cualquier otra manera, si xFracc no es igual a 0 y yFracc no es igual a 0, el valor de predSampleLXC se deriva de la siguiente manera:
- La matriz de muestra temp[ n ] with n = 0..3, se deriva de la siguiente manera:
temp[n]=(Xf=0f c[xFracc][i]*refPicLXC[xInt1][]yInt1] >>shift1
- El valor predicho de la muestra de croma predSampLXc se deriva de la siguiente manera:
predSampleLXc =( fc[ yFracc ][ 0 ] * temp[ 0 ]
fc[ yFracc ][ 1 ] * temp[ 1 ]
fc[ yFracc ][ 2 ] * temp[ 2 ]
fc[ yFracc ][ 3 ] * temp[ 3 ]) » shift2.
Un descodificador que comprende circuitos de procesamiento configurados para llevar a cabo los métodos anteriores.
En la presente descripción, se describe un producto de programa informático que comprende un código de programa para realizar los métodos anteriores.
En la presente descripción, se describe un descodificador para descodificar datos de vídeo, comprendiendo el descodificador uno o más procesadores; y un medio de almacenamiento legible por ordenador no transitorio acoplado a los procesadores y que almacena programación para su ejecución por los procesadores, en donde la programación, cuando es ejecutada por los procesadores, configura el descodificador para llevar a cabo los métodos anteriores.
La Figura 18 es un diagrama esquemático de un dispositivo 1300 de red según una realización de la descripción. El dispositivo 1300 de red es adecuado para implementar las realizaciones descritas en la presente memoria. El dispositivo 1300 de red comprende puertos 1310 de entrada y unidades receptoras (Rx) 1320 para recibir datos; un procesador, unidad lógica o unidad 1330 de procesamiento central (CPU) para procesar los datos; unidades 1340 de transmisor (Tx) y puertos 1350 de salida para transmitir los datos; y una memoria 1360 para almacenar los datos. El dispositivo 1300 de red también puede comprender componentes ópticos a eléctricos (OE) y componentes eléctricos a ópticos (EO) acoplados a los puertos 1310 de entrada, las unidades receptoras 1320, las unidades transmisoras 1340 y los puertos 1350 de salida para la salida o entrada de señales ópticas o eléctricas.
El procesador 1330 está implementado por hardware y software. El procesador 1330 puede implementarse como uno o más chips de CPU, núcleos (por ejemplo, como un procesador multinúcleo), matrices de puertas programables en campo (FPGA), circuitos integrados de aplicación específica (ASIC) y procesadores de señales digitales (DSP). El procesador 1330 está en comunicación con los puertos 1310 de entrada, las unidades receptoras 1320, las unidades transmisoras 1340, los puertos 1350 de salida y la memoria 1360. El procesador 1330 comprende un módulo 1370 de codificación. El módulo 1370 de codificación implementa las realizaciones descritas anteriormente. Por ejemplo, el módulo 1370 de codificación implementa, procesa, prepara, o proporciona las diversas funciones de red. La inclusión del módulo 1370 de codificación por lo tanto proporciona una mejora sustancial a la funcionalidad del dispositivo 1300 de red y efectúa una transformación del dispositivo 1300 de red a un estado diferente. Alternativamente, el módulo 1370 de codificación se implementa como instrucciones almacenadas en la memoria 1360 y ejecutadas por el procesador 1330.
La memoria 1360 comprende uno o más discos, unidades de cinta y unidades de estado sólido y se pueden usar 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 se leen durante la ejecución del programa. La memoria 1360 puede ser volátil y/o no volátil y puede ser memoria de solo lectura (ROM), memoria de acceso aleatorio (RAM), memoria ternaria de contenido direccionable (TCAM) y/o memoria estática de acceso aleatorio (SRAM).
La Figura 19 es un diagrama de bloques de un aparato 1500 que puede utilizarse para implementar varias realizaciones. El aparato 1500 puede ser el dispositivo fuente 102 como se muestra en la Figura 1, o el codificador 200 de vídeo como se muestra en la Figura 2, o el dispositivo 104 de destino como se muestra en la Figura 1, o el descodificador 300 de vídeo como se muestra en la Figura 3. Además, el aparato 1100 puede alojar uno o más de los elementos descritos. En algunas realizaciones, el aparato 1100 está equipado con uno o más dispositivos de entrada/salida, tales como un altavoz, micrófono, ratón, pantalla táctil, teclado, teclado, impresora, pantalla y similares. El aparato 1500 puede incluir una unidad central 1510 de procesamiento (CPU), una memoria 1520, un dispositivo 1530 de almacenamiento masivo, un adaptador 1540 de vídeo y una interfaz 1560 de E/S conectada a un bus. El bus puede ser una o más de cualquier tipo de varias arquitecturas de bus que incluyen un bus de memoria o un controlador de memoria, un bus periférico, un bus de vídeo o similares.
La CPU 1510 puede tener cualquier tipo de procesador de datos electrónico. La memoria 1520 puede tener, o ser, cualquier tipo de memoria del sistema, tal como memoria estática de acceso aleatorio (SRAM), memoria dinámica de acceso aleatorio (DRAM), DRAM síncrona (SDRAM), memoria de solo lectura (ROM), una de sus combinaciones o similares. En una realización, la memoria 1520 puede incluir la ROM para su uso en el arranque y DRAM para almacenamiento de programas y datos para su uso durante la ejecución de programas. En las realizaciones, la memoria 1520 es no transitoria. El almacenamiento masivo 1530 incluye cualquier tipo de dispositivo de almacenamiento que almacena datos, programas y otra información y para hacer que los datos, programas y otra información sean accesibles a través del bus. El almacenamiento masivo 1530 incluye por ejemplo, una o más de una unidad de estado sólido, una unidad de disco duro, una unidad de disco magnético, una unidad de disco óptico o similar.
El adaptador 1540 de vídeo y la interfaz 1560 de E/S proporcionan interfaces para acoplar dispositivos de entrada y salida externos al aparato 1100. Por ejemplo, el aparato 1100 puede proporcionar una interfaz de comando SQL a clientes. Como se ilustra, los ejemplos de dispositivos de entrada y salida incluyen un monitor 1590 acoplado al adaptador de vídeo 1540 y cualquier combinación de ratón/teclado/impresora 1570 acoplada a la interfaz de E/S 1560. Otros dispositivos se pueden acoplar al aparato 1100 y se pueden utilizar más o menos tarjetas de interfaz. Por ejemplo, se puede usar una tarjeta de interfaz en serie (no se muestra) para proporcionar una interfaz en serie para una impresora.
El aparato 1100 también incluye una o más interfaces 1550 de red, que incluyen enlaces por cable, tal como un cable Ethernet o similar, o enlaces inalámbricos para acceder a nodos y/o una o más redes 1580. La interfaz de red 1550 permite que el aparato 1100 se comunique con unidades remotas a través de las redes 1580. Por ejemplo, la interfaz 1550 de red puede proporcionar comunicación a la base de datos. En una realización, el aparato 1100 está acoplado a una red de área local o una red de área amplia para el procesamiento de datos y las comunicaciones con dispositivos remotos, tales como otras unidades de procesamiento, Internet, instalaciones de almacenamiento remotas o similares.
Se introduce una aproximación lineal de giro para calcular los valores de coeficientes de ponderación requeridos para predecir píxeles dentro de un bloque determinado. La aproximación lineal por tramos es, por un lado, reduce significativamente la complejidad computacional del mecanismo de predicción ponderado por distancia en comparación con el cálculo de coeficientes de ponderación directos y, por otro lado, ayuda a lograr una mayor precisión de los valores de coeficientes de ponderación en comparación con las simplificaciones de la técnica anterior.
Las realizaciones pueden aplicarse a otras técnicas de intrapredicción bidireccionales y de posición (por ejemplo, diferentes modificaciones de PDPC), así como mecanismos que usan coeficientes de ponderación que dependen de la distancia de un píxel a otro para mezclar diferentes partes de una imagen (por ejemplo, algunos métodos de mezcla en el procesamiento de imágenes).
Las implementaciones de la materia y las operaciones descritas en esta descripción pueden implementarse en circuitos electrónicos digitales, o en software, firmware o hardware informático, que incluyen las estructuras descritas en esta descripción y sus equivalentes estructurales, o en combinaciones de uno o más de ellos. Las implementaciones del objeto descrito en esta descripción pueden implementarse como uno o más programas informáticos, es decir, uno o más módulos de instrucciones de programa informático, codificados en medio de almacenamiento informático para su ejecución por, o para controlar el funcionamiento del aparato de procesamiento de datos. Alternativamente o además, las instrucciones del programa pueden codificarse en una señal propagada generada artificialmente, por ejemplo, una señal eléctrica, óptica o electromagnética generada por máquina que se genera para codificar información para la transmisión al aparato receptor adecuado para su ejecución por un aparato de procesamiento de datos. Un medio de almacenamiento informático, por ejemplo, el medio legible por ordenador, puede ser, o estar incluido en, un dispositivo de almacenamiento legible por ordenador, un sustrato de almacenamiento legible por ordenador, una matriz o dispositivo de memoria de acceso aleatorio o en serie, o una combinación de uno o más de ellos. Además, aunque un medio de almacenamiento informático no es una señal propagada, un medio de almacenamiento informático puede ser una fuente o destino de las instrucciones del programa informático codificadas en una señal propagada generada artificialmente. El medio de almacenamiento informático también puede estar, o estar incluido en, uno o más componentes o medios físicos y/o no transitorios separados (por ejemplo, múltiples CD, discos u otros dispositivos de almacenamiento).
En algunas implementaciones, las operaciones descritas en esta descripción pueden implementarse como un servicio alojado proporcionado en un servidor en una red informática en la nube. Por ejemplo, los medios de almacenamiento legibles por ordenador pueden agruparse lógicamente y accesibles dentro de una red informática en la nube. Los servidores dentro de la red informática en la nube pueden incluir una plataforma informática en la nube para proporcionar servicios basados en la nube. Los términos “ nube” , “ computación en la nube” y “ basada en la nube” pueden utilizarse indistintamente según sea apropiado sin apartarse del alcance de esta descripción. Los servicios basados en la nube pueden ser servicios alojados que son proporcionados por servidores y entregados a través de una red a una plataforma de cliente para mejorar, complementar o reemplazar aplicaciones ejecutadas localmente en un ordenador cliente. El circuito puede utilizar servicios basados en la nube para recibir rápidamente actualizaciones de software, aplicaciones y otros recursos que de otro modo requerirían un período de tiempo prolongado antes de que los recursos puedan enviarse al circuito.
Un programa informático (también conocido como programa, software, aplicación de software, script o código) puede escribirse en cualquier forma de lenguaje de programación, incluyendo lenguajes compilados o interpretados, lenguajes declarativos o de procedimiento, y puede desplegarse en cualquier forma, incluyendo como un programa independiente o como un módulo, componente, subrutina, objeto u otra unidad adecuada para su uso en un entorno informático. Un programa informático puede, pero no es necesario, corresponder a un archivo en un sistema de archivos. Un programa puede almacenarse en una parte de un archivo que contiene otros programas o datos (por ejemplo, uno o más scripts almacenados en un documento de lenguaje de marcado), en un único archivo dedicado al programa en cuestión, o en múltiples archivos coordinados (por ejemplo, archivos que almacenan uno o más módulos, subprogramas o porciones de código). Un programa informático puede desplegarse para ejecutarse en un ordenador o en múltiples ordenadores que están ubicados en un sitio o distribuidos en múltiples sitios e interconectados por una red de comunicación.
Los procesos y flujos lógicos descritos en esta descripción pueden realizarse por uno o más procesadores programables que ejecutan uno o más programas informáticos para realizar acciones al operar los datos de entrada y generar salida. Los procesos y flujos lógicos también pueden realizarse por, y el aparato también puede implementarse como circuitos lógicos de propósito especial, por ejemplo, una FPGA (matriz de puertas programables en campo) o un ASIC (circuito integrado de aplicación específica).
Los procesadores adecuados para la ejecución de un programa informático incluyen, a manera de ejemplo, microprocesadores de propósito general y especial, y uno o más procesadores de cualquier tipo de ordenador digital. Generalmente, un procesador recibirá instrucciones y datos de una memoria de solo lectura o una memoria de acceso aleatorio o ambos. Los elementos esenciales de un ordenador son un procesador para realizar acciones según instrucciones y uno o más dispositivos de memoria para almacenar instrucciones y datos. Generalmente, un ordenador también incluirá, o estará acoplado operativamente para recibir datos de o transferir datos a, o ambos, uno o más dispositivos de almacenamiento masivo para almacenar datos, por ejemplo, discos magnéticos, magneto-ópticos o discos ópticos. Sin embargo, un ordenador no necesita tener tales dispositivos. Además, un ordenador puede estar integrado en otro dispositivo, por ejemplo, un teléfono móvil, un asistente digital personal (PDA), un reproductor de audio o vídeo móvil, una consola de juegos, un receptor del Sistema de Posicionamiento Global (GPS) o un dispositivo de almacenamiento portátil (por ejemplo, una unidad flash de bus serie universal (USB), por nombrar solo unos pocos. Los dispositivos adecuados para almacenar instrucciones y datos de programas informáticos incluyen todas las formas de memoria no volátil, dispositivos y dispositivos de memoria, que incluyen a manera de ejemplo dispositivos de memoria semiconductores, por ejemplo, EPROM, EEPROM y dispositivos de memoria flash; discos magnéticos, por ejemplo, discos duros internos o discos extraíbles; discos magneto-ópticos; y discos CD-ROM y DVD-ROM. El procesador y la memoria pueden complementarse por, o incorporarse en, circuitos lógicos de propósito especial.
Similarmente, aunque las operaciones se representan en los dibujos en un orden particular, esto no debe entenderse como que requiere que tales operaciones se realicen en el orden particular mostrado o en orden secuencial, o que todas las operaciones ilustradas se realicen, para lograr resultados deseables. En ciertas circunstancias, la multitarea y el procesamiento paralelo pueden ser ventajosos. Además, la separación de diversos componentes del sistema en las implementaciones descritas anteriormente no debe entenderse como que requiere dicha separación en todas las implementaciones, y debe entenderse que los componentes y sistemas del programa descritos generalmente pueden integrarse juntos en un solo producto de software o empaquetarse en múltiples productos de software.

Claims (6)

  1. REIVINDICACIONES 1. Un método de codificación de vídeo, en donde el método comprende: - procesamiento de interpredicción de un primer bloque, en donde el procesamiento de interpredicción comprende el filtrado de la interpolación de subpíxeles de muestras de un bloque de referencia; - procesamiento de intrapredicción de un segundo bloque, en donde el procesamiento de intrapredicción comprende el filtrado de la interpolación de subpíxeles de muestras de referencia; en donde el método comprende además - seleccionar coeficientes de filtro de interpolación para el filtrado de la interpolación de subpíxeles basándose en un desplazamiento de subpíxeles entre posiciones de muestra de referencia de enteros y posiciones de muestra de referencia fraccionaria, en donde para los mismos desplazamientos de subpíxeles los mismos coeficientes de filtro de interpolación se seleccionan para el procesamiento de intrapredicción y el procesamiento de interpredicción, caracterizado porque la selección de los coeficientes de filtro de interpolación comprende seleccionar los mismos coeficientes de filtro de interpolación basándose en la asociación a continuación entre desplazamientos de subpíxeles y coeficientes de filtro de interpolación:
    en donde los desplazamientos de subpíxeles se definen en 1/32 resolución de subpíxeles y c oa C3 representan los coeficientes de filtro de interpolación, y los coeficientes de filtro seleccionados se utilizan para el filtrado de interpolación de subpíxeles de muestras de croma para el procesamiento de interpredicción y de muestras de luma para el procesamiento de intrapredicción.
  2. 2. El método de la reivindicación 1, en donde los coeficientes de filtrado de interpolación utilizados en el procesamiento de interpredicción y el procesamiento de intrapredicción se obtienen de una tabla de consulta.
  3. 3. El método de la reivindicación 1 o 2, en donde se utiliza un filtro de 4 derivaciones para el filtrado de interpolación de subpíxeles.
  4. 4. Un codificador que comprende sistema de circuitos de procesamiento para realizar el método según una cualquiera de las reivindicaciones 1 a 3.
  5. 5. Un codificador que comprende sistema de circuitos de procesamiento para realizar el método según una cualquiera de las reivindicaciones 1 a 3.
  6. 6. Un producto de programa informático que comprende un código de programa para realizar el método según una cualquiera de las reivindicaciones 1 a 3.
ES19856848T 2018-09-07 2019-09-06 Método y aparato para el filtrado de la interpolación para la intra e interpredicción en la codificación de vídeo Active ES2960283T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201862728666P 2018-09-07 2018-09-07
PCT/RU2019/050141 WO2020050752A1 (en) 2018-09-07 2019-09-06 Method and apparatus for interpolation filtering for intra- and inter-prediction in video coding

Publications (1)

Publication Number Publication Date
ES2960283T3 true ES2960283T3 (es) 2024-03-04

Family

ID=69722811

Family Applications (1)

Application Number Title Priority Date Filing Date
ES19856848T Active ES2960283T3 (es) 2018-09-07 2019-09-06 Método y aparato para el filtrado de la interpolación para la intra e interpredicción en la codificación de vídeo

Country Status (16)

Country Link
US (2) US11405612B2 (es)
EP (2) EP4254960A3 (es)
JP (3) JP7066912B2 (es)
KR (2) KR20230164769A (es)
CN (5) CN113784145B (es)
AU (1) AU2019336062B2 (es)
BR (1) BR112020026863A2 (es)
CA (1) CA3111760C (es)
ES (1) ES2960283T3 (es)
HU (1) HUE063698T2 (es)
MX (1) MX2021001515A (es)
PL (1) PL3834415T3 (es)
PT (1) PT3834415T (es)
SG (1) SG11202101822SA (es)
WO (1) WO2020050752A1 (es)
ZA (1) ZA202102228B (es)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP4254960A3 (en) 2018-09-07 2023-11-22 Huawei Technologies Co., Ltd. Method and apparatus for interpolation filtering for intra- and inter-prediction in video coding
US10469845B1 (en) * 2018-09-21 2019-11-05 Tencent America, Llc Method and apparatus for intra mode coding
TWI810596B (zh) * 2019-03-12 2023-08-01 弗勞恩霍夫爾協會 用於混合視訊編碼的編碼器、解碼器、方法及視訊位元流以及電腦程式
JP7348411B2 (ja) 2020-03-26 2023-09-20 エルジー エレクトロニクス インコーポレイティド ラップアラウンド動き補償に基づく画像符号化/復号化方法及び装置、並びにビットストリームを保存した記録媒体
JP7488355B2 (ja) 2020-03-26 2024-05-21 エルジー エレクトロニクス インコーポレイティド ラップアラウンド動き補償に基づく画像符号化/復号化方法及び装置、並びにビットストリームを保存した記録媒体
WO2021201617A1 (ko) * 2020-03-31 2021-10-07 엘지전자 주식회사 레이어간 정렬된 서브픽처 정보에 기반하는 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장하는 기록 매체
WO2021204135A1 (en) 2020-04-07 2021-10-14 Beijing Bytedance Network Technology Co., Ltd. Signaling and inference of subpicture related syntax element
CN115668917A (zh) 2020-04-09 2023-01-31 抖音视界有限公司 视频编解码中的去块信令通知
WO2021204251A1 (en) 2020-04-10 2021-10-14 Beijing Bytedance Network Technology Co., Ltd. Use of header syntax elements and adaptation parameter set
WO2021209061A1 (en) 2020-04-17 2021-10-21 Beijing Bytedance Network Technology Co., Ltd. Presence of adaptation parameter set units
EP4128775A4 (en) 2020-04-26 2024-03-27 Bytedance Inc CONDITIONAL SIGNALING OF SYNTAX ELEMENTS OF A VIDEO CODING
US11882270B2 (en) 2020-06-09 2024-01-23 Hfi Innovation Inc. Method and apparatus for video coding with constraints on reference picture lists of a RADL picture
US20220224938A1 (en) * 2021-01-08 2022-07-14 Offinno, LLC Intra Prediction Signaling
WO2023234681A1 (ko) * 2022-05-30 2023-12-07 주식회사 케이티 영상 부호화/복호화 방법 및 장치

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8942505B2 (en) 2007-01-09 2015-01-27 Telefonaktiebolaget L M Ericsson (Publ) Adaptive filter representation
US9693070B2 (en) 2011-06-24 2017-06-27 Texas Instruments Incorporated Luma-based chroma intra-prediction for video coding
US20140078394A1 (en) 2012-09-17 2014-03-20 General Instrument Corporation Selective use of chroma interpolation filters in luma interpolation process
US20150071357A1 (en) * 2013-09-12 2015-03-12 Qualcomm Incorporated Partial intra block copying for video coding
EP3085085A4 (en) * 2014-01-29 2017-11-08 MediaTek Inc. Method and apparatus for adaptive motion vector precision
EP3078192B1 (en) * 2014-02-21 2019-12-04 MediaTek Singapore Pte Ltd. Method of video coding using prediction based on intra picture block copy
US10412387B2 (en) * 2014-08-22 2019-09-10 Qualcomm Incorporated Unified intra-block copy and inter-prediction
US9838662B2 (en) 2014-10-10 2017-12-05 Qualcomm Incorporated Harmonization of cross-component prediction and adaptive color transform in video coding
US9854237B2 (en) * 2014-10-14 2017-12-26 Qualcomm Incorporated AMVP and merge candidate list derivation for intra BC and inter prediction unification
WO2016072722A1 (ko) * 2014-11-04 2016-05-12 삼성전자 주식회사 영상 특성을 반영한 보간 필터를 이용하는 비디오 부호화 방법 및 장치, 비디오 복호화 방법 및 장치
US10075712B2 (en) * 2014-11-20 2018-09-11 Hfi Innovation Inc. Method of motion vector and block vector resolution control
CN108141604B (zh) * 2015-06-05 2022-07-05 杜比实验室特许公司 图像编码和解码方法和图像解码设备
EP3304907B1 (en) * 2015-06-08 2022-03-23 VID SCALE, Inc. Intra block copy mode for screen content coding
US11463689B2 (en) * 2015-06-18 2022-10-04 Qualcomm Incorporated Intra prediction and intra mode coding
US10812822B2 (en) 2015-10-02 2020-10-20 Qualcomm Incorporated Intra block copy merge mode and padding of unavailable IBC reference region
US20170099490A1 (en) * 2015-10-02 2017-04-06 Qualcomm Incorporated Constrained intra-prediction for block copy mode
KR20230057479A (ko) * 2015-11-11 2023-04-28 삼성전자주식회사 비디오 복호화 방법 및 그 장치 및 비디오 부호화 방법 및 그 장치
US10194170B2 (en) * 2015-11-20 2019-01-29 Mediatek Inc. Method and apparatus for video coding using filter coefficients determined based on pixel projection phase
US10390015B2 (en) * 2016-08-26 2019-08-20 Qualcomm Incorporated Unification of parameters derivation procedures for local illumination compensation and cross-component linear model prediction
US10341659B2 (en) * 2016-10-05 2019-07-02 Qualcomm Incorporated Systems and methods of switching interpolation filters
US11202079B2 (en) * 2018-02-05 2021-12-14 Tencent America LLC Method and apparatus for video decoding of an affine model in an intra block copy mode
EP4254960A3 (en) * 2018-09-07 2023-11-22 Huawei Technologies Co., Ltd. Method and apparatus for interpolation filtering for intra- and inter-prediction in video coding

Also Published As

Publication number Publication date
PL3834415T3 (pl) 2024-02-05
MX2021001515A (es) 2021-04-13
JP2022105529A (ja) 2022-07-14
CN112425169B (zh) 2023-07-11
US11968362B2 (en) 2024-04-23
CA3111760A1 (en) 2020-03-12
JP7342188B2 (ja) 2023-09-11
CN115914624A (zh) 2023-04-04
SG11202101822SA (en) 2021-03-30
WO2020050752A1 (en) 2020-03-12
JP2021533607A (ja) 2021-12-02
EP3834415B1 (en) 2023-09-06
CN117376586A (zh) 2024-01-09
EP3834415A1 (en) 2021-06-16
BR112020026863A2 (pt) 2021-07-27
HUE063698T2 (hu) 2024-01-28
PT3834415T (pt) 2023-11-07
JP7066912B2 (ja) 2022-05-13
CN113784145B (zh) 2022-06-28
KR20210018439A (ko) 2021-02-17
CA3111760C (en) 2023-10-10
KR20230164769A (ko) 2023-12-04
CN112425169A (zh) 2021-02-26
EP4254960A2 (en) 2023-10-04
ZA202102228B (en) 2022-12-21
EP4254960A3 (en) 2023-11-22
AU2019336062A1 (en) 2021-03-25
JP2023165714A (ja) 2023-11-17
KR102607839B1 (ko) 2023-11-29
US20210127110A1 (en) 2021-04-29
US11405612B2 (en) 2022-08-02
US20220385900A1 (en) 2022-12-01
CN117376587A (zh) 2024-01-09
CN113784145A (zh) 2021-12-10
AU2019336062B2 (en) 2022-12-22
EP3834415A4 (en) 2021-08-11

Similar Documents

Publication Publication Date Title
ES2960283T3 (es) Método y aparato para el filtrado de la interpolación para la intra e interpredicción en la codificación de vídeo
CN115243039B (zh) 一种视频图像预测方法及装置
ES2966083T3 (es) Método y aparato para predicción
ES2965083T3 (es) Terminación temprana para el refinamiento de flujo óptico
KR20220107089A (ko) 인트라 예측을 위한 방법 및 장치
BR112021001813A2 (pt) método de processamento de vídeo, aparelho de processamento de vídeo, codificador, decodificador, mídia e programa de computador
BR112021010896A2 (pt) Método e aparelho de codificação e decodificação de imagem de vídeo
BR112021013644A2 (pt) Codificador, decodificador e métodos correspondentes de adaptação de filtro de deblocagem
CN112135137B (zh) 视频编码器、视频解码器及相应方法
CN111432219B (zh) 一种帧间预测方法及装置
KR102543792B1 (ko) 이웃 블록에 기초한 인트라 예측 모드 도출
ES2967663T3 (es) Método y aparato para el almacenamiento de información de movimiento
CN111726630B (zh) 基于三角预测单元模式的处理方法及装置
CN118118688A (zh) 基于三角预测单元模式的处理方法及装置
CN118075484A (en) Processing method and device based on triangular prediction unit mode