ES2983321T3 - Método y aparato de filtrado de interpolación para la codificación predictiva - Google Patents

Método y aparato de filtrado de interpolación para la codificación predictiva Download PDF

Info

Publication number
ES2983321T3
ES2983321T3 ES19901364T ES19901364T ES2983321T3 ES 2983321 T3 ES2983321 T3 ES 2983321T3 ES 19901364 T ES19901364 T ES 19901364T ES 19901364 T ES19901364 T ES 19901364T ES 2983321 T3 ES2983321 T3 ES 2983321T3
Authority
ES
Spain
Prior art keywords
filter
video
block
unit
sub
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
ES19901364T
Other languages
English (en)
Inventor
Vasily Alexeevich Rufitskiy
Jianle Chen
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 ES2983321T3 publication Critical patent/ES2983321T3/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/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/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/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/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/12Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
    • H04N19/122Selection of transform size, e.g. 8x8 or 2x4x8 DCT; Selection of sub-band transforms of varying structure or type
    • 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/124Quantisation
    • 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/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • 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/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/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • 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
    • 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/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/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • 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/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)
  • Physics & Mathematics (AREA)
  • Discrete Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

La presente divulgación se refiere a la predicción intra o inter para la codificación y decodificación de vídeo. Para ello, un aparato y unos métodos obtienen una muestra de referencia y un valor de desplazamiento de subpíxeles. Se utiliza un filtro de interpolación de 4 tomas de subpíxeles para filtrar la muestra de referencia y obtener un valor de muestra previsto. Los coeficientes de filtro c0, c1, c2 y c3 del filtro de interpolación de 4 tomas de subpíxeles satisfacen la fórmula (I), siendo p una parte fraccionaria del valor del desplazamiento de subpíxeles. (Traducción automática con Google Translate, sin valor legal)

Description

DESCRIPCIÓN
Método y aparato de filtrado de interpolación para la codificación predictiva
Campo técnico
Las realizaciones de la presente solicitud (invención) se refieren en general al campo del procesamiento de imágenes y, más concretamente, a la codificación y decodificación de imágenes y/o vídeos y, en particular, al método y al aparato para la intra/inter predicción.
Antecedentes
La codificación de vídeo (codificación y decodificación de vídeo) se utiliza en una amplia gama de aplicaciones de vídeo digital, por ejemplo, la televisión digital de difusión, la transmisión de vídeo a través de Internet y las redes móviles, las aplicaciones conversacionales en tiempo real como el videochat, las videoconferencias, los discos DVD y Blu-ray, los sistemas de adquisición y edición de contenidos de vídeo y las videocámaras de aplicaciones de seguridad.
La cantidad de datos de vídeo necesaria para representar incluso un vídeo relativamente corto puede ser considerable, lo que puede dar lugar a dificultades cuando los datos deben ser transmitidos o comunicados de otro modo a través de una red de comunicaciones con una capacidad de ancho de banda limitada. Por ello, los datos de vídeo suelen ser comprimidos antes de ser comunicados a través de las redes de telecomunicaciones actuales. El tamaño de un vídeo también puede ser un problema cuando se almacena en un dispositivo de almacenamiento, debido a que los recursos de memoria pueden ser limitados. Los dispositivos de compresión de vídeo suelen utilizar software y/o hardware en la fuente para codificar los datos de vídeo antes de su transmisión o almacenamiento, disminuyendo así la cantidad de datos necesarios para representar las imágenes de vídeo digital. Los datos comprimidos son recibidos en el destino por un dispositivo de descompresión de vídeo que decodifica los datos de vídeo. Con unos recursos de red limitados y una demanda cada vez mayor de una mayor calidad de vídeo, es deseable mejorar las técnicas de compresión y descompresión que mejoran la relación de compresión con poco o ningún sacrificio de la calidad de la imagen.
El documento JVET-L0324-v2, CE3, “ Intra reference sample interpolation filter selection using MDIS conditions” (Test 3.1.2), sugiere aplicar un filtro MDIS (intra suavizado dependiente del modo, Mode Dependent Intra Smoothing) a las intra muestras de referencia dependiendo de las condiciones de filtrado de la muestra de referencia de MDIS, donde se incluyen filtros de interpolación cúbica de 4 tomas y gaussiana de 4 tomas para la predicción direccional intra-modos.
El documento US20150023405A1 da a conocer un decodificador de vídeo para deshabilitar, basándose en un elemento de sintaxis, uno o más filtros utilizados para la intra predicción.
Sumario
Las realizaciones de la presente solicitud dan a conocer aparatos y métodos de codificación y decodificación, según las reivindicaciones independientes y las reivindicaciones dependientes.
Los objetivos anteriores y otros se consiguen mediante el objeto de las reivindicaciones independientes y dependientes. Otras formas de implementación se desprenden de las reivindicaciones dependientes, la descripción y las figuras.
Las realizaciones de la invención están definidas por las características de las reivindicaciones independientes, y otras implementaciones ventajosas de las realizaciones, por las características de las reivindicaciones dependientes.
Según un aspecto de la presente invención, se da a conocer un método para el procesamiento de intra o inter predicción de un fotograma de vídeo, que comprende los pasos de: obtener una muestra de referencia; obtener un valor de un desplazamiento de subpíxel; y filtrar, utilizando un filtro de interpolación de subpíxeles de 4 tomas, la muestra de referencia, para obtener un valor de muestra predicho, en donde los coeficientes de filtrado del filtro de interpolación de subpíxeles de 4 tomas cumplen:
P
c0 = 16 - f
C! = 16 16 - 2<P>
c2 =16 g
dondepes una parte fraccionaria del valor del desplazamiento del subpíxel, yc0,cx,c2, yc3son los coeficientes de filtrado de interpolación de 4 tomas de subpíxel.
En una implementación a modo de ejemplo, las muestras de referencia pueden denominarse ref[ x ], siendo ref[ x ] = p[ -1 - refIdx x ][ -1 - refIdx ], con x = 0..nTbW refIdx 1.
correspondiente a una matriz de muestras de referencia, y haciendo referencia “p” a una matriz bidimensional x-y, p [ x ][ y ], que contiene los valores de la muestra. El número de muestras de referencia utilizadas puede ser al menos uno. En otro ejemplo, el número de muestras de referencia puede ser cuatro.
En una implementación a modo de ejemplo, el valor de desplazamiento de subpíxel obtenido puede denominarse
(y 1 refIdx ) * intra predAngle
siendo “Intra predAngle” el valor de un ángulo de intra predicción.
En una implementación a modo de ejemplo, el valor de la muestra predicha “predSamples[ x ][ y ]” puede obtenerse mediante
predSamples[ x ][ y ] = Clip1( ( ( £ -=0 fT[ i ] * ref[ x ildx i ] ) 32 ) >> 6 )
haciendo referencia fT[ i ] a los coeficientes de filtrado. Estos coeficientes pueden ser coeficientes de filtrado de luma o de croma para la inter predicción, denominados fG y fC respectivamente.
La selección de que los coeficientes de filtrado sean luma o croma puede ser implementada mediante el uso y la configuración de un indicador “filterFlag”, por ejemplo, como
fT[ j ] = filterFlag ? fG[ iFact ][ j ] : fC[ iFact ][ j ]
siendo
iFact = ( ( y 1 refIdx ) * intra predAngle ) & 31.
El valor “31” se refiere a la parte fraccionaria del valor de desplazamiento del subpíxel, y puede tomar otros valores diferentes de “31”. Los valores de los coeficientes de filtrado fG (luma) y/o fC (croma) se obtienen analíticamente sobre la marcha utilizando la expresión analítica anterior para los coeficientes de filtrado del filtro de 4 tomas. Así, los coeficientes de filtrado se definen según valor de desplazamiento del subpíxel. Los coeficientes de filtrado se obtienen, por lo tanto, sin acceder a los valores correspondientes de los coeficientes de filtrado de una LUT, pero en su lugar se obtienen mediante cálculo.
Alternativamente, los coeficientes de filtrado pueden ser calculados utilizando las ecuaciones anteriores, y los valores pueden ser almacenados en una LUT.
Según un aspecto de la presente invención, los coeficientes de filtrado del filtro de interpolación de subpíxeles de 4 tomas están definidos en una tabla como la siguiente:
Según un aspecto de la presente invención, se da a conocer un método para el procesamiento de intra o inter predicción de un fotograma de vídeo, que comprende los pasos de: obtener una muestra de referencia; obtener un valor de un desplazamiento de subpíxel; y filtrar, utilizando un filtro de interpolación de subpíxeles de 4 tomas, la muestra de referencia para obtener un valor de muestra predicho, en el que los coeficientes de filtrado del filtro de interpolación de subpíxeles de 4 tomas se definen como sigue:
dondepes una parte fraccionaria del valor del desplazamiento del subpíxel, yc0, c3, c2, yc3son los coeficientes de filtrado.
En una implementación a modo de ejemplo, los valores de los coeficientes de filtrado pueden ser almacenados en una LUT. Esto significa que, para el filtrado de interpolación de subpíxeles, los valores respectivos de los coeficientes de filtrado deben obtenerse de la LUT.
La figura 23 muestra un diagrama de flujo del procesamiento de intra/inter predicción. En el paso 2301, se obtiene una muestra de referencia. La muestra de referencia puede incluir una o más muestras de referencia. En el paso 2302, se obtiene un valor de desplazamiento de subpíxel. En el paso 2303, la muestra de referencia se filtra utilizando el filtro de interpolación de subpíxeles que tiene coeficientes de filtrado {c¡} coni = 0,...3.
Esto se denomina filtro de 4 tomas y/o filtro de 4 puntos.
Los coeficientes de filtrado pueden obtenerse a partir de expresiones analíticas con una parte fraccionaria p dada del valor de desplazamiento del subpíxel. Los coeficientes de filtrado también pueden obtenerse a partir de una LUT con referencia a los valores p.
Según un aspecto de la presente invención, un bit depse pone a cero.
Según un aspecto de la presente invención,pse incrementa en 1 y posteriormente un bit inferior delpincrementado se pone a cero antes de que dichopse utilice para obtener los coeficientes de filtrado.
Según un aspecto de la presente invención, la obtención de los coeficientes de filtrado comprende el paso de calcular los coeficientes de filtrado según
c0 = 16 -Pf
cx = 16 c0
c2 = c 0 p
c3 = c 0 - p .
Esto puede ofrecer la ventaja de calcular un coeficiente de filtrado c¡+1 a partir de un coeficiente de filtrado anterior c¡. Esto puede reducir aún más el tiempo de cálculo de los coeficientes de filtrado.
Según un aspecto de la presente invención, se proporciona un método de codificación de vídeo, el método comprende el procesamiento de intra predicción de un bloque de un fotograma de vídeo, que comprende: filtrar, utilizando un filtro de interpolación de subpíxeles de 4 tomas, de una muestra de referencia del fotograma de vídeo; en el que el filtro de interpolación de subpíxeles de 4 tomas es una combinación de filtros, cumpliendo los coeficientes de filtrado de al menos uno de los filtros:
dondepes una posición de muestra fraccionaria de un desplazamiento de subpíxel, yc0, cx, c2,yc3son los coeficientes de filtrado.
La figura 24 muestra un diagrama de flujo de la codificación de vídeo. En el paso 2401, el procesamiento de intra predicción se lleva a cabo mediante el filtrado de una muestra de referencia de un bloque, utilizando un filtro de interpolación de subpíxeles de 4 tomas.
Según un aspecto de la presente invención, el filtro de interpolación de subpíxeles de 4 tomas es un filtro de suavizado que es una combinación paralela de dos filtros lineales dependientes de la fase y un filtro de paso bajo.
Según un aspecto de la presente invención, el filtro de interpolación de subpíxeles de 4 tomas es un filtro de nitidez que es una combinación paralela de un filtro lineal dependiente de la fase y un filtro de paso alto variable en intensidad.
Según un aspecto de la presente invención, el filtro de paso alto de intensidad variable es un filtro de paso alto de respuesta finita al impulso, FIR, cuya salida se multiplica por un parámetro de intensidad dependiente de la fase.
Según uno de los aspectos anteriores de la presente invención, un bit inferior depse pone a cero.
Según un aspecto de la presente invención,pse incrementa en 1 y posteriormente el bit inferior del valor incrementado se pone a cero antes de que este valor se utilice para derivar los coeficientes de filtrado de interpolación.
Según un aspecto de la presente invención, la operación de recorte se realiza para la salida del filtro de paso alto de intensidad variable.
Según un aspecto de la presente invención, se da a conocer un aparato para el procesamiento de intra o inter predicción de un fotograma de vídeo, incluyendo: una unidad de obtención de muestra de referencia, configurada para obtener una muestra de referencia; una unidad de obtención de valor de desplazamiento de subpíxel, configurada para obtener un valor de un desplazamiento de subpíxel; y un filtro de interpolación de subpíxeles de 4 tomas, configurado para filtrar la muestra de referencia para obtener un valor de muestra predicho, en el que los coeficientes de filtrado del filtro de interpolación de subpíxeles de 4 tomas cumplen:
P
c0 = 16 - f
c± =16 16 — 2V
dondepes una parte fraccionaria del valor del desplazamiento del subpíxel, yc0,c1, c2, yc3son los coeficientes de filtrado del filtro de interpolación de subpíxeles de 4 tomas.
Según un aspecto de la presente invención, los coeficientes de filtrado del filtro de interpolación de subpíxeles de 4 tomas se definen en una tabla como la siguiente:
Según un aspecto de la presente invención, se da a conocer un aparato para el procesamiento de intra o inter predicción de un fotograma de vídeo, que comprende: una unidad de obtención de muestra de referencia, configurada para obtener una muestra de referencia; una unidad de obtención de valor de desplazamiento de subpíxel, configurada para obtener un valor de desplazamiento de subpíxel; y un filtro de interpolación de subpíxeles de 4 tomas, configurado para filtrar la muestra de referencia para obtener un valor de muestra predicho, en el que los coeficientes de filtrado del filtro de interpolación de subpíxeles de 4 tomas se definen como sigue:
dondepes una parte fraccionaria del valor del desplazamiento del subpíxel, y c0,c1, c2, yc3son los coeficientes de filtrado.
La figura 25 muestra un esquema del módulo de intra/inter procesamiento 2500, que comprende una unidad de obtención de muestra de referencia 2510, una unidad de obtención de valor de desplazamiento de subpíxel 2520, y un filtro de interpolación de subpíxeles 2530.
Según un aspecto de la presente invención, se da a conocer un aparato para la codificación de vídeo que comprende: una unidad de procesamiento de intra predicción, configurada para intra predecir un bloque de un fotograma de vídeo; y un filtro de interpolación de subpíxeles de 4 tomas, configurado para filtrar una muestra de referencia del fotograma de vídeo; en el que el filtro de interpolación de subpíxeles de 4 tomas es una combinación de filtros, cumpliendo coeficientes de filtrado de al menos uno de los filtros:
dondepes una posición de muestra fraccionaria de un desplazamiento de subpíxel, yc0, c3, c2,yc3son los coeficientes de filtrado.
La figura 26 muestra un esquema del módulo de codificación de vídeo 2600, que comprende una unidad de procesamiento de intra predicción 2610 y un filtro de interpolación de subpíxeles 2620.
Según un aspecto de la presente invención, se da a conocer un codificador (20), que comprende circuitos de procesamiento para llevar a cabo el método según cualquiera de los aspectos anteriores de la presente invención.
Según un aspecto de la presente invención, se da a conocer un decodificador (30), que comprende circuitos de procesamiento para llevar a cabo el método según cualquiera de los aspectos anteriores de la presente invención.
Según un aspecto de la presente invención, se da a conocer un producto de programa informático que comprende un código de programa para realizar el método según cualquiera de los aspectos anteriores de la presente invención.
Según un aspecto de la presente invención, se da a conocer un decodificador que comprende: 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 el que la programación, cuando es ejecutada por los procesadores, configura el decodificador para llevar a cabo el método según cualquiera de los aspectos anteriores de la presente invención.
Según un aspecto de la presente invención, se da a conocer un codificador, que comprende: uno o más procesadores; y un medio de almacenamiento no transitorio legible por ordenador acoplado a los procesadores y que almacena programación para su ejecución por los procesadores, en el que la programación, cuando es ejecutada por los procesadores, configura el codificador para llevar a cabo el método según cualquiera de los aspectos anteriores de la presente invención.
La presente invención según cualquiera de los aspectos anteriores puede proporcionar una ventaja de realizar la intra/inter predicción de un fotograma de vídeo de forma rápida. Esto se debe a que los coeficientes de filtrado de interpolación se obtienen de forma analítica, es decir, dichos coeficientes se calculan sobre la marcha. Esto evita el almacenamiento de los coeficientes en una tabla de búsqueda (Look-Up Table, LUT), que requiere un tiempo de acceso para leer los coeficientes de la memoria.
Así, la predicción se vuelve más eficiente y requiere menos demanda de memoria. Esto permite también una implementación de bajo coste de la predicción. Además, como los coeficientes de filtrado analítico { c j son lineales en la posición fraccionaria de la muestra p, e implican operaciones de división por 2, la operación respectiva puede realizarse eficientemente empleando operaciones rápidas de bits de bajo nivel. El tiempo respectivo para realizar la operación de bits y para calcular los coeficientes de filtrado es más corto que el tiempo para acceder a los coeficientes almacenados de la LUT. Por lo tanto, la latencia se reduce.
Además, la estructura analítica particular de los coeficientes de filtrado puede ofrecer la ventaja de una implementación de baja complejidad de la una o varias unidades de filtrado. Además, la respuesta del filtro (es decir, la respuesta en frecuencia) para diferentes posiciones de subpíxel es coherente con respecto a la magnitud y la fase, y evita los artefactos en la respuesta, en particular en las frecuencias altas. La linealidad de los coeficientes de filtrado puede suponer una ventaja para la reutilización del hardware.
Los detalles de una o más realizaciones se exponen en las figuras adjuntas y en la descripción que sigue. Otras características, objetivos y ventajas se desprenden de la descripción, las figuras y las reivindicaciones. La invención puede ser implementada en hardware y/o software.
En aras de la claridad, cualquiera de las realizaciones anteriores se puede combinar con una o más de las otras realizaciones anteriores para crear una nueva realización dentro del ámbito de la presente invención. Estas y otras características se entenderán más claramente a partir de la siguiente descripción detallada, tomada en conjunto con las figuras y las reivindicaciones adjuntas.
Breve descripción de los dibujos
A continuación, se describen con más detalle las realizaciones de la invención, haciendo referencia a las figuras y dibujos adjuntos, en los que:
la figura 1A es un diagrama de bloques que muestra un ejemplo de un sistema de codificación de vídeo configurado para implementar realizaciones de la invención;
la figura 1B es un diagrama de bloques que muestra otro ejemplo de un sistema de codificación de vídeo configurado para implementar 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 decodificador de vídeo configurado para implementar realizaciones de la invención;
la figura 4 es un diagrama de bloques que ilustra un ejemplo de un aparato de codificación o un aparato de decodificación;
la figura 5 es un diagrama de bloques que ilustra otro ejemplo de un aparato de codificación o un aparato de decodificación;
la figura 6 es un dibujo que muestra las direcciones angulares de intra predicción y los modos de intra predicción asociados en HEVC;
la figura 7 es un dibujo que muestra las direcciones angulares de intra predicción y los modos de intra predicción asociados en JEM;
la figura 8 es un dibujo que muestra las direcciones angulares de intra predicción y los modos de intra predicción asociados en VTM-3.0 y el borrador de la especificación VVC v.3;
la figura 9 es un dibujo que muestra un ejemplo de combinación de filtros para el suavizado, en el que se introduce un conjunto de muestras de referencia en el filtro de interpolación de subpíxeles;
la figura 10 es un dibujo que muestra una combinación a modo de ejemplo de filtros para el filtrado de interpolación de nitidez, incluyendo la operación de recorte;
la figura 11 es un dibujo que muestra una combinación a modo de ejemplo de filtros para el filtrado de interpolación de nitidez, con una posición alternativa de la operación de recorte;
la figura 12A es un dibujo que muestra una combinación a modo de ejemplo de filtros para el filtrado de interpolación de nitidez, utilizando un filtro de intensidad ajustable;
la figura 12B es un dibujo que muestra otra combinación a modo de ejemplo de filtros para el filtrado de interpolación de nitidez, utilizando un filtro de intensidad ajustable;
las figuras 13-21 son dibujos que muestran diferentes combinaciones de representaciones analíticas y basadas en LUT, de los coeficientes de los filtros de interpolación;
la figura 22 es un dibujo que muestra una implementación a modo de ejemplo del método de cálculo de los coeficientes;
la figura 23 es un diagrama de flujo del procesamiento de intra/inter predicción;
la figura 24 es un diagrama de flujo de la codificación de vídeo;
la figura 25 es un diagrama de bloques del módulo de procesamiento de intra/inter predicción, que incluye una unidad de obtención de muestras de referencia, una unidad de obtención de valores de desplazamiento de subpíxeles y un filtro de interpolación de subpíxeles;
la figura 26 es un diagrama de bloques del módulo de codificación de vídeo, que incluye una unidad de procesamiento de inter predicción y un filtro de interpolación de subpíxeles.
En lo que sigue, signos de referencia idénticos se refieren a características idénticas o al menos funcionalmente equivalentes, si no se especifica explícitamente lo contrario.
Descripción detallada de 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 modo de ilustración, aspectos específicos de las realizaciones de la invención o aspectos específicos en los que pueden ser utilizadas las realizaciones de la presente invención. Se entiende que las realizaciones de la invención pueden ser utilizadas 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 ser tomada en un sentido limitativo, y el alcance de la presente invención está definido 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 uno o una pluralidad de pasos específicos del método, un dispositivo correspondiente puede incluir una o una pluralidad de unidades, por ejemplo, unidades funcionales, para realizar uno o una pluralidad de pasos del método descritos (por ejemplo, una unidad que realice uno o una pluralidad de pasos, o una pluralidad de unidades que realicen cada una uno o más de la pluralidad de pasos), incluso si tales una o más unidades no se describen o ilustran explícitamente en las figuras. Por otra parte, por ejemplo, si se describe un aparato específico basado en una o en una pluralidad de unidades, por ejemplo, unidades funcionales, un método correspondiente puede incluir un paso para realizar la funcionalidad de la una o la pluralidad de unidades (por ejemplo, un paso que realiza la funcionalidad de la una o la pluralidad de unidades, o una pluralidad de pasos que realizan cada uno la funcionalidad de una o más de la pluralidad de unidades), incluso si tal uno o pluralidad de pasos 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 a modo de ejemplo descritos en el presente documento pueden combinarse entre sí, a menos que se indique específicamente lo contrario.
La codificación de vídeo suele referirse al procesamiento de una secuencia de imágenes, que forman el vídeo o la secuencia de vídeo. En lugar del término “imagen” se puede utilizar el término “fotograma” o “imagen” como sinónimos en el campo de la codificación de vídeo. La codificación de vídeo (o la codificación en general) comprende dos partes: la codificación de vídeo y la decodificación de vídeo. La codificación de vídeo se lleva a cabo en el lado de la fuente, y suele incluir el procesamiento (por ejemplo, mediante compresión) de las imágenes de vídeo originales para reducir la cantidad de datos necesarios para representar las imágenes de vídeo (para un almacenamiento y/o transmisión más eficientes). La decodificación de vídeo se realiza en el lado de destino y, normalmente, comprende el procesamiento inverso al del codificador para reconstruir las imágenes de vídeo. Las realizaciones que se refieren a la “codificación” de las imágenes de vídeo (o de las imágenes en general) se entenderán referidas a la “codificación” o “decodificación” de las imágenes de vídeo o de las respectivas secuencias de vídeo. La combinación de la parte de codificación y la parte de decodificación también se denomina CODEC (codificación y decodificación).
En el caso de la codificación de vídeo sin pérdidas, las imágenes de vídeo originales pueden ser reconstruidas, es decir, las imágenes de vídeo reconstruidas tienen la misma calidad que las imágenes de vídeo originales (suponiendo que no haya pérdidas de transmisión u otras pérdidas de datos durante el almacenamiento o la transmisión). En el caso de la codificación de vídeo con pérdidas, se realiza una compresión adicional, por ejemplo, mediante la cuantificación, para reducir la cantidad de datos que representan las imágenes de vídeo, que no pueden ser reconstruidas completamente en el decodificador, es decir, la calidad de las imágenes de vídeo reconstruidas es inferior o peor en comparación con la calidad de las imágenes de vídeo originales.
Varios estándares de codificación de vídeo pertenecen al grupo de los “códecs de vídeo híbridos con pérdidas” (es decir, combinan la predicción espacial y temporal en el dominio de la muestra y la codificación mediante transformada 2D para aplicar la cuantificación en el dominio de la transformada). Cada imagen de una secuencia de vídeo se suele dividir en un conjunto de bloques no superpuestos y la codificación se suele realizar a nivel de bloque. En otras palabras, en el codificador el vídeo se procesa, es decir, se codifica, a nivel de bloque (bloque de vídeo), por ejemplo utilizando la predicción espacial (intra-imagen) y/o temporal (inter imagen) para generar un bloque de predicción, restando el bloque de predicción del bloque actual (bloque actualmente procesado/a procesar) para obtener un bloque residual, transformando el bloque residual y cuantificando el bloque residual en el dominio de la transformada para reducir la cantidad de datos a transmitir (compresión), mientras que en el decodificador se aplica al bloque codificado o comprimido el procesamiento inverso al del codificador para reconstruir el bloque actual para su representación. Además, el codificador duplica el bucle de procesamiento del decodificador, de tal manera que ambos generan predicciones idénticas (por ejemplo, intra e inter predicciones) y/o reconstrucciones para el procesamiento, es decir, la codificación, de los bloques posteriores.
En las siguientes realizaciones de un sistema de codificación de vídeo 10, se describen un codificador de vídeo 20 y un decodificador de vídeo 30 basados en las figuras 1 a 3.
La figura 1A es un diagrama de bloques esquemático que ilustra un ejemplo de sistema de codificación 10, por ejemplo, un sistema de codificación de vídeo 10 (o sistema de codificación corto 10) que puede utilizar técnicas de la presente solicitud. El codificador de vídeo 20 (o codificador corto 20) y el decodificador de vídeo 30 (o decodificador corto 30) del sistema de codificación de vídeo 10 representan ejemplos de dispositivos que pueden configurarse para realizar técnicas según diversos ejemplos descritos en la presente solicitud.
Tal como se muestra en la figura 1A, el sistema de codificación 10 comprende un dispositivo de origen 12, configurado para proporcionar datos de imagen codificados 21, por ejemplo, a un dispositivo de destino 14, para decodificar los datos de imagen codificados 13.
El dispositivo de origen 12 comprende un codificador 20, y puede comprender, además, es decir, opcionalmente, una fuente de imágenes 16, un preprocesador (o unidad de preprocesamiento) 18, por ejemplo, un preprocesador de imágenes 18, y una interfaz de comunicación o unidad de comunicación 22.
La fuente de imágenes 16 puede comprender o ser cualquier tipo de dispositivo de captura de imágenes, por ejemplo, una cámara para capturar una imagen del mundo real, y/o cualquier tipo de dispositivo de generación de imágenes, por ejemplo, un procesador de gráficos por ordenador para generar una imagen animada por ordenador, o cualquier otro tipo de dispositivo para obtener y/o proporcionar una imagen del mundo real, una imagen generada por ordenador (por ejemplo, un contenido de pantalla, una imagen de realidad virtual (Virtual Reality, VR)) y/o cualquier combinación de las mismas (por ejemplo, una imagen de realidad aumentada (Augmented Reality, a R)). La fuente de la imagen puede ser cualquier tipo de memoria o almacenamiento que almacene cualquiera de las imágenes mencionadas.
A diferencia del preprocesador 18 y del procesamiento realizado por la unidad de preprocesamiento 18, la imagen o los datos de la imagen 17 también pueden denominarse imagen sin procesar o datos de la imagen sin procesar 17.
El preprocesador 18 está configurado para recibir los datos de la imagen (sin procesar) 17 y realizar un preprocesamiento de los datos de la imagen 17 para obtener una imagen preprocesada 19 o datos de imagen preprocesados 19. El preprocesamiento realizado por el preprocesador 18 puede, por ejemplo, comprender el recorte, la conversión del formato de color (por ejemplo, de RGB a YCbCr), la corrección del color o la eliminación del ruido. Puede entenderse que la unidad de preprocesamiento 18 puede ser un componente opcional.
El codificador de vídeo 20 está configurado para recibir los datos de imagen preprocesados 19 y proporcionar datos de imagen codificados 21 (se describirán más detalles a continuación, por ejemplo, basándose en la figura 2).
La interfaz de comunicación 22 del dispositivo de origen 12 puede estar configurada para recibir los datos de imagen codificados 21 y para transmitir los datos de imagen codificados 21 (o cualquier otra versión procesada de los mismos) a través del canal de comunicación 13, a otro dispositivo, por ejemplo, el dispositivo de destino 14 o cualquier otro dispositivo, para su almacenamiento o reconstrucción directa.
El dispositivo de destino 14 comprende un decodificador 30 (por ejemplo, un decodificador de vídeo 30), y puede comprender, además, es decir, opcionalmente, una interfaz de comunicación o unidad de comunicación 28, un postprocesador 32 (o unidad de postprocesamiento 32) y un dispositivo de visualización 34.
La interfaz de comunicación 28 del dispositivo de destino 14 está configurada para recibir los datos de imagen codificados 21 (o cualquier otra versión procesada de los mismos), por ejemplo, directamente desde el dispositivo de origen 12 o desde cualquier otra fuente, por ejemplo, un dispositivo de almacenamiento, por ejemplo, un dispositivo de almacenamiento de datos de imagen codificados, y proporcionar los datos de imagen codificados 21 al decodificador 30.
La interfaz de comunicación 22 y la interfaz de comunicación 28 pueden estar configuradas para transmitir o recibir los datos de imagen codificados 21 o los datos codificados 13 a través de un enlace de comunicación directo entre el dispositivo de origen 12 y el dispositivo de destino 14, por ejemplo, una conexión directa por cable o inalámbrica, o a través de cualquier tipo de red, por ejemplo, una red por cable o inalámbrica o cualquier combinación de ellas, o cualquier tipo de red privada y pública, o cualquier tipo de combinación de las mismas.
La interfaz de comunicación 22 puede estar, por ejemplo, configurada para empaquetar los datos de imagen codificados 21 en un formato apropiado, por ejemplo, paquetes, y/o procesar los datos de imagen codificados utilizando cualquier tipo de codificación o procesamiento de transmisión, para la transmisión a través de un enlace o red de comunicación.
La interfaz de comunicación 28, que forma la contraparte de la interfaz de comunicación 22, puede estar, por ejemplo, configurada para recibir los datos transmitidos y procesar los datos de transmisión utilizando cualquier tipo de decodificación o procesamiento y/o desempaquetado de transmisión correspondiente para obtener los datos de imagen codificados 21.
Tanto la interfaz de comunicación 22 como la interfaz de comunicación 28 pueden ser configuradas como interfaces de comunicación unidireccionales, tal como se indica en la flecha del canal de comunicación 13 de la figura 1A, orientada del dispositivo de origen 12 al dispositivo de destino 14, o como interfaces de comunicación bidireccionales, y pueden ser configuradas, por ejemplo, para enviar y recibir mensajes, por ejemplo, para establecer una conexión, para acusar recibo 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 codificados.
El decodificador 30 está configurado para recibir los datos de imagen codificados 21 y proporcionar datos de imagen decodificados 31 o una imagen decodificada 31 (más adelante se describirán más detalles, por ejemplo, basándose en la figura 3 o la figura 5).
El postprocesador 32 del dispositivo de destino 14 está configurado para postprocesar los datos de imagen decodificados 31 (también llamados datos de imagen reconstruida), por ejemplo, la imagen decodificada 31, para obtener datos de imagen postprocesados 33, por ejemplo, una imagen postprocesada 33. El postprocesamiento realizado por la unidad de postprocesamiento 32 puede comprender, por ejemplo, la conversión del formato de color (por ejemplo, de YCbCr a RGB), la corrección del color, el recorte o el remuestreo, o cualquier otro procesamiento, por ejemplo, para preparar los datos de imagen decodificados 31 para su visualización, por ejemplo, mediante el dispositivo de visualización 34.
El dispositivo de visualización 34 del dispositivo de destino 14 está configurado para recibir los datos de imagen post-procesados 33 para mostrar la imagen, por ejemplo, a un usuario o espectador. El dispositivo de visualización 34 puede ser o comprender cualquier tipo de pantalla para representar la imagen reconstruida, por ejemplo, una pantalla o monitor integrado o externo. Las pantallas pueden ser, por ejemplo, pantallas de cristal líquido (Liquid Crystal Display, LCD), pantallas de diodos orgánicos emisores de luz (Organic Light Emitting Diode, OLED), pantallas de plasma, proyectores, pantallas de micro LED, cristal líquido sobre silicio (Liquid Crystal over Silicon, LCoS), procesador digital de luz (Digital Light Processor, DLP) o cualquier otro tipo de pantalla.
Aunque la figura 1A representa el dispositivo de origen 12 y el dispositivo de destino 14 como dispositivos separados, las realizaciones de los dispositivos también pueden comprender ambas funcionalidades, el dispositivo de origen 12 o la funcionalidad correspondiente y el dispositivo de destino 14 o la funcionalidad correspondiente. En tales realizaciones, el dispositivo de origen 12 o la funcionalidad correspondiente y el dispositivo de destino 14 o la funcionalidad correspondiente pueden ser implementados utilizando 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 basándose en la descripción, la existencia y la división (exacta) de las funcionalidades de las diferentes unidades o funcionalidades dentro del dispositivo de origen 12 y/o el dispositivo de destino 14, tal como se muestra en la figura 1A, puede variar dependiendo del dispositivo y la aplicación reales.
El codificador 20 (por ejemplo, un codificador de vídeo 20) o el decodificador 30 (por ejemplo, un decodificador de vídeo 30) o ambos, el codificador 20 y el decodificador 30, pueden implementarse a través de circuitos de procesamiento, tal como se muestra en la figura 1B, tales como uno o más microprocesadores, procesadores de señales digitales (Digital Signal Processor, DSP), circuitos integrados de aplicación específica (Application Specific Integrated Circuit, ASIC), matrices de puertas programables en campo (Field Programmable Gate Array, FPGA), lógica discreta, hardware, codificación de vídeo dedicada o cualquier combinación de los mismos. El codificador 20 puede implementarse a través de circuitos de procesamiento 46 para incorporar los diversos módulos, tal como se explica con respecto al codificador 20 de la figura 2 y/o a cualquier otro sistema o subsistema de codificación descrito en el presente documento. El decodificador 30 puede implementarse a través de circuitos de procesamiento 46 para incorporar los diversos módulos, tal como se explica con respecto al decodificador 30 de la figura 3 y/o a cualquier otro sistema o subsistema decodificador descrito en el presente documento. Los circuitos de procesamiento pueden ser configurados para realizar las diversas operaciones, tal como se explica más adelante. Como se muestra en la figura 5, si las técnicas se implementan parcialmente en software, un dispositivo puede almacenar instrucciones para el software en un medio de almacenamiento no transitorio legible por ordenador adecuado, y puede ejecutar las instrucciones en hardware utilizando uno o más procesadores para realizar las técnicas de esta invención. Cualquiera del codificador de vídeo 20 y el decodificador de vídeo 30 puede estar integrado como parte de un codificador/decodificador (CODEC) combinado en un solo dispositivo, por ejemplo, tal como se muestra en la figura 1B.
El dispositivo de origen 12 y el dispositivo de destino 14 pueden ser cualquiera de una amplia gama de dispositivos, incluyendo cualquier tipo de dispositivos portátiles o fijos, por ejemplo, ordenadores portátiles, teléfonos móviles, teléfonos inteligentes, tabletas, cámaras, ordenadores de sobremesa, decodificadores, televisores, dispositivos de visualización, reproductores de medios digitales, consolas de videojuegos, dispositivos de transmisión de vídeo (tales como servidores de servicios de contenidos o servidores de entrega de contenidos), dispositivos receptores de emisiones, dispositivos transmisores de emisiones, o similares, y pueden no utilizar ningún sistema operativo o cualquier tipo de sistema operativo. En algunos casos, el dispositivo de origen 12 y el dispositivo de destino 14 pueden estar equipados para la comunicación inalámbrica. Así, el dispositivo de origen 12 y el dispositivo de destino 14 pueden ser dispositivos de comunicación inalámbrica.
En algunos casos, el sistema de codificación de vídeo 10 ilustrado en la figura 1A es simplemente un ejemplo y las técnicas de la presente solicitud pueden ser aplicadas a configuraciones de codificación de vídeo (por ejemplo, codificación de vídeo o decodificación de vídeo) que no incluyen necesariamente ninguna comunicación de datos entre los dispositivos de codificación y decodificación. En otros ejemplos, los datos se recuperan de una memoria local, se transmiten a través de una red, o similares. Un dispositivo de codificación de vídeo puede codificar y almacenar datos en la memoria, y/o un dispositivo de decodificación de vídeo puede recuperar y decodificar datos de la memoria. En algunos ejemplos, la codificación y la decodificación es realizada por dispositivos que no se comunican entre sí, sino que simplemente codifican los datos en la memoria y/o recuperan y decodifican los datos de la memoria.
Para facilitar la descripción, las realizaciones de la invención se describen en el presente documento, por ejemplo, haciendo referencia a la codificación de vídeo de alta eficiencia (High Efficiency Video Coding, HEVC) o al software de referencia de la codificación de vídeo versátil (Versatile VC, VVC), el estándar de codificación de vídeo de próxima generación desarrollado por el Equipo de colaboración conjunta sobre codificación de vídeo (Joint Collaboration Team on VC, JCT-VC) del Grupo de expertos en codificación de vídeo (VC Experts Group, VCEG) del UIT-T y el Grupo de expertos en imágenes en movimiento (Motion Picture Experts Group, MPEG) de la ISO/CEI. Un experto en la materia comprenderá que las realizaciones de la invención no se limitan a HEVC o VVC.
Codificador y método de codificación
La figura 2 muestra un diagrama de bloques esquemático de un ejemplo de codificador de vídeo 20 que está configurado para implementar las técnicas de la presente solicitud. En el ejemplo de la figura 2, el codificador de vídeo 20 comprende una entrada 201 (o interfaz de entrada 201), una unidad de cálculo del residuo 204, una unidad de procesamiento mediante transformada 206, una unidad de cuantificación 208, una unidad de cuantificación inversa 210, y una unidad de procesamiento mediante transformada inversa 212, una unidad de reconstrucción 214, una unidad de filtro de bucle 220, una memoria intermedia de imagen decodificada (Decoded Picture Buffer, DPB) 230, una unidad de selección de modo 260, una unidad de codificación por entropía 270 y una salida 272 (o interfaz de salida 272). La unidad de selección de modo 260 puede incluir una unidad de inter predicción 244, una unidad de intra predicción 254 y una unidad de partición 262. La unidad de inter predicción 244 puede incluir una unidad de estimación de movimiento y una unidad de compensación de movimiento (no mostrada). Un codificador de vídeo 20 como el que se muestra en la figura 2 también puede denominarse codificador de vídeo híbrido o codificador de vídeo según un códec de vídeo híbrido.
La unidad de cálculo del residuo 204, la unidad de procesamiento mediante transformada 206, la unidad de cuantificación 208, la unidad de selección de modo 260 se pueden mostrar formando una ruta de señal hacia adelante del codificador 20, mientras que la unidad de cuantificación inversa 210, la unidad de procesamiento mediante transformada inversa 212, la unidad de reconstrucción 214, el memoria intermedia 216, el filtro de bucle 220, la memoria intermedia de imágenes decodificadas (DPB) 230, la unidad de inter predicción 244 y la unidad de intra predicción 254 se pueden mostrar formando una trayectoria de señal hacia atrás del codificador de vídeo 20, en donde la trayectoria de señal hacia atrás del codificador de vídeo 20 corresponde a la trayectoria de señal del decodificador (véase el decodificador de vídeo 30 en la figura 3). La unidad de cuantificación inversa 210, la unidad de procesamiento mediante transformada inversa 212, la unidad de reconstrucción 214, el filtro de bucle 220, la memoria intermedia de imágenes decodificadas (DPB) 230, la unidad de inter predicción 244 y la unidad de intra predicción 254 también se muestran formando el “decodificador incorporado” del codificador de vídeo 20.
Imágenes y partición de imágenes (imágenes y bocetos)
El codificador 20 puede estar configurado para recibir, por ejemplo, a través de la entrada 201, una imagen 17 (o datos de imagen 17), por ejemplo, la imagen de una secuencia de imágenes que forman un vídeo o una secuencia de vídeo. La imagen o los datos de imagen recibidos también pueden ser una imagen preprocesada 19 (o datos de imagen preprocesados 19). En aras de la sencillez, la siguiente descripción se refiere a la imagen 17. La imagen 17 también puede denominarse imagen actual o imagen a codificar (en particular, en la codificación de vídeo, para distinguir la imagen actual de otras imágenes, por ejemplo, las imágenes previamente codificadas y/o decodificadas de la misma secuencia de vídeo, es decir, la secuencia de vídeo que también comprende la imagen actual).
Una imagen (digital) es o puede considerarse como una matriz bidimensional de muestras con valores de intensidad. Una muestra de la matriz también puede denominarse píxel (forma abreviada de elemento de imagen) o pel. El número de muestras en dirección horizontal y vertical (o eje) de la matriz o imagen define el tamaño y/o la resolución de la imagen. Para la representación del color, normalmente se emplean tres componentes de color, es decir, la imagen puede representarse o incluir tres matrices de muestras. En el formato o espacio de color RBG, una imagen comprende una matriz de muestras correspondiente al rojo, al verde y al azul. Sin embargo, en la codificación de vídeo, cada píxel se representa normalmente en un formato o espacio de color de luminancia y crominancia, por ejemplo, YCbCr, que comprende un componente de luminancia indicado por Y (a veces también se utiliza L en su lugar) y dos componentes de crominancia indicados por Cb y Cr. El componente de luminancia (o luma corto) Y representa el brillo o la intensidad del nivel de gris (por ejemplo, como en una imagen en escala de grises), mientras que los dos componentes de crominancia (o croma corto) Cb y Cr representan los componentes de cromaticidad o información de color. Por consiguiente, una imagen en formato YCbCr comprende una matriz de muestras de luminancia (Y) y dos matrices de muestras de crominancia (Cb y Cr). Las imágenes en formato RGB pueden convertirse o transformarse en formato YCbCr y viceversa, proceso que también se conoce como transformación o conversión del color. Si una imagen es monocromática, la imagen puede comprender sólo una matriz de muestras de luminancia. En consecuencia, una imagen puede ser, por ejemplo, una matriz de muestras de luminancia en formato monocromo o una matriz de muestras de luminancia y dos matrices correspondientes de muestras de croma en formato de color 4:2:0, 4:2:2 y 4:4:4.
Las realizaciones del codificador de vídeo 20 pueden comprender una unidad de partición de imágenes (no representada en la figura 2) configurada para dividir la imagen 17 en una pluralidad de bloques de imágenes 203 (normalmente no superpuestos). Estos bloques también pueden denominarse bloques raíz, macrobloques (H.264/AVC) o bloques de árbol de codificación (Coding Tree Block, CTB) o unidades de árbol de codificación (Coding Tree Unit, CTU) (H.265/HEVC y VVC). La unidad de partición de imágenes puede estar configurada para utilizar el mismo tamaño de bloque para todas las imágenes de una secuencia de vídeo y la cuadrícula correspondiente que define el tamaño de bloque, o para cambiar el tamaño de bloque entre imágenes o subconjuntos o grupos de imágenes, y dividir cada imagen en los bloques correspondientes.
En otras realizaciones, el codificador de vídeo puede estar configurado para recibir directamente un bloque 203 de la imagen 17, por ejemplo, uno, varios o todos los bloques que forman la imagen 17. El bloque de imagen 203 también puede denominarse bloque de imagen actual o bloque de imagen a codificar.
Al igual que la imagen 17, el bloque de imágenes 203 también es o puede considerarse como una matriz o matriz bidimensional de muestras con valores de intensidad (valores de muestra), aunque de menor dimensión que la imagen 17. En otras palabras, el bloque 203 puede comprender, por ejemplo, una matriz de muestras (por ejemplo, una matriz de luma en el caso de una imagen monocromática 17, o una matriz de luma o croma en el caso de una imagen en color) o tres matrices de muestras (por ejemplo, una matriz de luma y dos matrices de croma en el caso de una imagen en color 17) o cualquier otro número y/o tipo de matrices en función del formato de color aplicado. El número de muestras en dirección horizontal y vertical (o eje) del bloque 203 define el tamaño del bloque 203. En consecuencia, un bloque puede ser, por ejemplo, una matriz MxN (M columnas por N filas) de muestras, o una matriz MxN de coeficientes de transformación.
Las realizaciones del codificador de vídeo 20, como se muestra en la figura 2, pueden estar configuradas para codificar la imagen 17 bloque a bloque, por ejemplo, la codificación y la predicción se realizan por bloque 203.
Cálculo del residuo
La unidad de cálculo del residuo 204 puede ser configurada para calcular un bloque residual 205 (también denominado residuo 205) basándose en el bloque de imagen 203 y en un bloque de predicción 265 (más adelante se proporcionan más detalles sobre el bloque de predicción 265), por ejemplo, restando los valores de muestra del bloque de predicción 265 de los valores de muestra del bloque de imagen 203, muestra a muestra (píxel a píxel) para obtener el bloque residual 205 en el dominio de la muestra.
Transformación
La unidad de procesamiento mediante transformada 206 puede estar configurada para aplicar una transformada, por ejemplo, una transformada discreta del coseno (Discrete Cosine Transform, DCT) o una transformada discreta del seno (Discrete Sine Transform, DST), sobre los valores de muestra del bloque residual 205 para obtener los coeficientes de transformación 207 en un dominio de la transformada. Los coeficientes de transformación 207 también pueden denominarse coeficientes residuales de transformación y representan el bloque residual 205 en el dominio de la transformada.
La unidad de procesamiento mediante transformada 206 puede estar configurada para aplicar aproximaciones enteras de d Ct /DST, tales como las transformaciones especificadas para H.265/HEVC. En comparación con una transformación mediante DCT ortogonal, dichas aproximaciones enteras se escalan normalmente por un determinado factor. Para preservar la norma del bloque residual que es procesado por las transformaciones directa e inversa, se aplican factores de escala adicionales como parte del proceso de transformación. Los factores de escala se eligen normalmente en función de ciertas restricciones, tal como que los factores de escala sean una potencia de dos para las operaciones de desplazamiento, la profundidad de bits de los coeficientes de la transformación, el equilibrio entre la precisión y los costes de implementación, etc. Los factores de escala específicos se especifican, por ejemplo, para la transformada inversa, por ejemplo mediante la unidad de procesamiento mediante transformada inversa 212 (y la correspondiente transformada inversa, por ejemplo mediante la unidad de procesamiento mediante transformación inversa 312 en el decodificador de vídeo 30) y los correspondientes factores de escala para la transformada directa, por ejemplo mediante la unidad de procesamiento mediante transformada 206, en un codificador 20 pueden especificarse en consecuencia.
Las realizaciones del codificador de vídeo 20 (respectivamente, la unidad de procesamiento mediante transformada 206) pueden estar configuradas para emitir parámetros de transformación, por ejemplo, un tipo de transformación o transformaciones, por ejemplo, directamente o codificadas o comprimidas por medio de la unidad de codificación por entropía 270, de modo que, por ejemplo, el decodificador de vídeo 30 pueda recibir y utilizar los parámetros de transformación para la decodificación.
Cuantificación
La unidad de cuantificación 208 puede estar configurada para cuantificar los coeficientes de transformación 207 para obtener coeficientes cuantificados 209, por ejemplo, aplicando cuantificación escalar o cuantificación vectorial. Los coeficientes cuantificados 209 también pueden denominarse coeficientes de transformación cuantificados 209 o coeficientes residuales cuantificados 209.
El proceso de cuantificación puede reducir la profundidad de bits asociada con algunos o todos los coeficientes de transformación 207. Por ejemplo, un coeficiente de transformación de n bits puede redondearse a un coeficiente de transformación de m bits durante la cuantificación, donde n es mayor que m. El grado de cuantificación puede modificarse ajustando un parámetro de cuantificación (Quantization Parameter, QP). Por ejemplo, para la cuantificación escalar, se pueden aplicar diferentes escalas para lograr una cuantificación más fina o más grosera. Los tamaños de paso de cuantificación más pequeños corresponden a una cuantificación más fina, mientras que los tamaños de paso de cuantificación más grandes corresponden a una cuantificación más grosera. El tamaño de paso de cuantificación aplicable puede indicarse mediante un parámetro de cuantificación (QP). El parámetro de cuantificación puede ser, por ejemplo, un índice de un conjunto predefinido de tamaños de paso de cuantificación aplicables. Por ejemplo, los parámetros de cuantificación pequeños pueden corresponder a una cuantificación fina (tamaños de paso de cuantificación pequeños) y los parámetros de cuantificación grandes pueden corresponder a una cuantificación grosera (tamaños de paso de cuantificación grandes) o viceversa. La cuantificación puede incluir la división por un tamaño de paso de cuantificación y una la descuantificación correspondiente y/o inversa, por ejemplo, mediante la unidad de cuantificación inversa 210, puede incluir la multiplicación por el tamaño de paso de cuantificación. Las realizaciones según algunos estándares, por ejemplo, HEVC, pueden estar configuradas para utilizar un parámetro de cuantificación para determinar el tamaño del paso de cuantificación. En general, el tamaño del paso de cuantificación puede calcularse basándose en un parámetro de cuantificación utilizando una aproximación de punto fijo de una ecuación que incluye la división. Pueden introducirse factores de escala adicionales para la cuantificación y la descuantificación con el fin de restaurar la norma del bloque residual, que podría modificarse debido a la escala utilizada en la aproximación de punto fijo de la ecuación para el tamaño del paso de cuantificación y el parámetro de cuantificación. En un ejemplo de implementación, el escalado de la transformada inversa y la descuantificación podrían combinarse. Alternativamente, se pueden utilizar tablas de cuantificación personalizadas y señalizarlas desde un codificador a un decodificador, por ejemplo, en un flujo de bits. La cuantificación es una operación con pérdidas, en la que éstas aumentan con el incremento del tamaño de los pasos de cuantificación.
Las realizaciones del codificador de vídeo 20 (respectivamente, la unidad de cuantificación 208) pueden estar configuradas para emitir parámetros de cuantificación (QP), por ejemplo, directamente o codificados por medio de la unidad de codificación por entropía 270, de modo que, por ejemplo, el decodificador de vídeo 30 pueda recibir y aplicar los parámetros de cuantificación para la decodificación.
Cuantificación inversa
La unidad de cuantificación inversa 210 está configurada para aplicar la cuantificación inversa de la unidad de cuantificación 208 sobre los coeficientes cuantificados para obtener los coeficientes descuantificados 211, por ejemplo, aplicando la inversa del esquema de cuantificación aplicado por la unidad de cuantificación 208 basándose en o utilizando el mismo tamaño de paso de cuantificación que la unidad de cuantificación 208. Los coeficientes descuantificados 211 también pueden denominarse coeficientes residuales descuantificados 211 y corresponden, aunque normalmente no son idénticos a los coeficientes de transformación debido a la pérdida por cuantificación, a los coeficientes de transformación 207.
Tranformación inversa
La unidad de procesamiento mediante transformada inversa 212 está configurada para aplicar la transformada inversa de la transformada aplicada por la unidad de procesamiento de transformada 206, por ejemplo, una transformada discreta del coseno (DCT) inversa o una transformada discreta del seno (DST) inversa u otras transformadas inversas, para obtener un bloque residual reconstruido 213 (o los correspondientes coeficientes descuantificados 213) en el dominio de la muestra. El bloque residual reconstruido 213 también puede denominarse bloque de transformación 213.
Reconstrucción
La unidad de reconstrucción 214 (por ejemplo, el sumador 214) está configurada para sumar el bloque de transformación 213 (es decir, el bloque residual reconstruido 213) al bloque de predicción 265 para obtener un bloque reconstruido 215 en el dominio de la muestra, por ejemplo, sumando, muestra a muestra, los valores de muestra del bloque residual reconstruido 213 y los valores de muestra del bloque de predicción 265.
Filtrado
La unidad de filtro de bucle 220 (o “filtro de bucle” corto 220), está configurada para filtrar el bloque reconstruido 215 para obtener un bloque filtrado 221 o, en general, para filtrar muestras reconstruidas para obtener muestras filtradas. La unidad de filtro de bucle está configurada, por ejemplo, para suavizar las transiciones de píxeles, o para mejorar de otro modo la calidad del vídeo. La unidad de filtro de bucle 220 puede comprender uno o más filtros de bucle, tales como un filtro de desbloqueo, un filtro de compensación adaptable a la muestra (Sample Adaptive Offset, SAO) o uno o más filtros, por ejemplo, un filtro bilateral, un filtro de bucle adaptativo (Adaptive Loop Filter, ALF), un filtro de nitidez, un filtro de suavizado o un filtro de colaboración, o cualquier combinación de los mismos. Aunque la unidad de filtro de bucle 220 se muestra en la figura 2 como un filtro dentro del bucle, en otras configuraciones, la unidad de filtro de bucle 220 puede implementarse como un filtro posterior al bucle. El bloque filtrado 221 también puede denominarse bloque reconstruido filtrado 221.
Las realizaciones del codificador de vídeo 20 (respectivamente la unidad de filtro de bucle 220) pueden estar configuradas para dar salida a los parámetros del filtro de bucle (tal como la información de compensación adaptativa de la muestra), por ejemplo, directamente o codificada a través de la unidad de codificación por entropía 270, de modo que, por ejemplo, un decodificador 30 pueda recibir y aplicar los mismos parámetros de filtro de bucle o los respectivos filtros de bucle para la decodificación.
Memoria intermedia de imágenes decodificada
La memoria intermedia de imágenes decodificadas (DPB) 230 puede ser una memoria que almacena imágenes de referencia o, en general, datos de imágenes de referencia, para la codificación de datos de vídeo por el codificador de vídeo 20. La DPB 230 puede estar formada por cualquiera de una variedad de dispositivos de memoria, tal como la memoria dinámica de acceso aleatorio (Dynamic RAM, DRAM), incluyendo la DRAM sincrónica (Synchronous DRAM, SDRAM), la RAM magnetorresistiva (MRAM), la RAM resistiva (RRAM), u otros tipos de dispositivos de memoria. La memoria intermedia de imágenes decodificadas (DPB) 230 puede estar configurada para almacenar uno o más bloques filtrados 221. La memoria intermedia de imágenes decodificadas 230 puede estar configurada, además, para almacenar otros bloques filtrados previamente, por ejemplo, bloques previamente reconstruidos y filtrados 221, de la misma imagen actual o de imágenes diferentes, por ejemplo, imágenes previamente reconstruidas, y puede proporcionar imágenes completas previamente reconstruidas, es decir, decodificadas (y los correspondientes bloques de referencia y muestras) y/o una imagen actual parcialmente reconstruida (y los correspondientes bloques de referencia y muestras), por ejemplo para la interprevisión. La memoria intermedia de imágenes decodificadas (DPB) 230 también puede estar configurada para almacenar uno o más bloques reconstruidos 215 no filtrados o, en general, muestras reconstruidas no filtradas, por ejemplo, si el bloque reconstruido 215 no está filtrado por la unidad de filtrado de bucle 220, o cualquier otra versión procesada de los bloques o muestras reconstruidos.
Selección del modo (partición y predicción)
La unidad de selección de modo 260 comprende la unidad de partición 262, la unidad de inter predicción 244 y la unidad de intra predicción 254, y está configurada para recibir u obtener datos de imagen original, por ejemplo, un bloque original 203 (bloque actual 203 de la imagen actual 17), y datos de imagen reconstruida, por ejemplo, muestras o bloques reconstruidos filtrados y/o no filtrados de la misma imagen (actual) y/o de una o una pluralidad de imágenes previamente decodificadas, por ejemplo, de la memoria intermedia de imágenes decodificadas 230 u otras memorias intermedias (por ejemplo, la memoria intermedia de líneas, no mostrada). Los datos de la imagen reconstruida se utilizan como datos de la imagen de referencia para la predicción, por ejemplo, inter predicción o intra predicción, para obtener un bloque de predicción 265 o predictor 265.
La unidad de selección de modo 260 puede estar configurada para determinar o seleccionar una partición para un modo de predicción de bloque actual (incluyendo la no partición) y un modo de predicción (por ejemplo, un modo de intra o inter predicción) y generar un bloque de predicción 265 correspondiente, que se utiliza para el cálculo del bloque residual 205 y para la reconstrucción del bloque reconstruido 215.
Las realizaciones de la unidad de selección de modo 260 pueden estar configuradas para seleccionar la partición y el modo de predicción (por ejemplo, de entre los soportados o disponibles para la unidad de selección de modo 260), que proporcionan la mejor coincidencia o, en otras palabras, el mínimo residuo (el mínimo residuo significa una mejor compresión para la transmisión o el almacenamiento), o una mínima sobrecarga de señalización (la mínima sobrecarga de señalización significa una mejor compresión para la transmisión o el almacenamiento), o que considera o equilibra ambos. La unidad de selección de modo 260 puede estar configurada para determinar el modo de partición y predicción basándose en la optimización de la distorsión de la tasa (Rate Distortion Optimization, RDO), es decir, seleccionar el modo de predicción que proporciona una distorsión mínima de la tasa. Términos como “mejor”, “mínimo”, “óptimo”, etc., en este contexto no se refieren necesariamente a un “mejor”, “mínimo”, “óptimo” global, etc., sino que también pueden referirse al cumplimiento de un criterio de terminación o selección como un valor que exceda o esté por debajo de un umbral u otras restricciones que conduzcan potencialmente a una “selección subóptima” pero que reduzcan la complejidad y el tiempo de procesamiento.
En otras palabras, la unidad de partición 262 puede estar configurada para dividir el bloque 203 en particiones de bloque más pequeñas o sub-bloques (que forman de nuevo bloques), por ejemplo, iterativamente utilizando partición de árbol cuaternario (Quad-Tree, QT), partición de árbol binario (Binary Tree, BT) o partición de árbol ternario (Triple-Tree, TT) o cualquier combinación de las mismas, y para realizar, por ejemplo la predicción para cada una de las particiones o sub-bloques del bloque, donde la selección del modo comprende la selección de la estructura de árbol del bloque particionado 203 y los modos de predicción se aplican a cada una de las particiones o sub-bloques del bloque.
A continuación, se explicará con más detalle la partición (por ejemplo, mediante la unidad de partición 260) y el procesamiento de predicción (mediante la unidad de inter predicción 244 y la unidad de intra predicción 254) realizados por un codificador de vídeo de ejemplo 20.
Partición
La unidad de partición 262 puede particionar (o dividir) un bloque actual 203 en particiones más pequeñas, por ejemplo, bloques más pequeños de tamaño cuadrado o rectangular. Estos bloques más pequeños (que también pueden denominarse sub-bloques) pueden ser divididos en particiones aún más pequeñas. Esto también se denomina partición en árbol o partición jerárquica en árbol, en la que un bloque raíz, por ejemplo, en el nivel 0 del árbol raíz (nivel jerárquico 0, profundidad 0), puede ser dividido recursivamente, por ejemplo, en dos o más bloques de un nivel de árbol inmediatamente inferior, por ejemplo los nodos del nivel de árbol 1 (nivel de jerarquía 1, profundidad 1), en los que estos bloques pueden volver a ser divididos en dos o más bloques de un nivel inferior, por ejemplo, el nivel de árbol 2 (nivel de jerarquía 2, profundidad 2), etc. hasta que se termine la partición, por ejemplo, porque se cumpla un criterio de terminación, por ejemplo, una profundidad de árbol máxima o un tamaño de bloque mínimo. Los bloques que no se dividen más se denominan también bloques hoja o nodos hoja del árbol. Un árbol que utiliza la partición en dos particiones se denomina árbol binario (BT), un árbol que utiliza la partición en tres particiones se denomina árbol ternario (TT), y un árbol que utiliza la partición en cuatro particiones se denomina árbol cuaternario (QT).
Tal como se ha mencionado anteriormente, el término “bloque”, tal como se utiliza aquí, puede ser una porción, en particular una porción cuadrada o rectangular, de una imagen. Con referencia, por ejemplo, a HEVC y VVC, el bloque puede ser o corresponder a una unidad de árbol de codificación (Coding Tree Unit, CTU), una unidad de codificación (Coding Unit, CU), una unidad de predicción (Prediction Unit, PU) y una unidad de transformación (Transform Unit, TU) y/o a los bloques correspondientes, por ejemplo, un bloque de árbol de codificación (CTB), un bloque de codificación (CB), un bloque de transformación (TB) o un bloque de predicción (PB).
Por ejemplo, una unidad de árbol de codificación (CTU) puede ser o comprender un CTB de muestras de luma, dos CTB correspondientes de muestras de croma de una imagen que tiene tres matrices de muestras, o un CTB de muestras de una imagen monocromática o una imagen que se codifica utilizando tres planos de color separados y estructuras de sintaxis utilizadas para codificar las muestras. En consecuencia, un bloque de árbol de codificación (CTB) puede ser un bloque de muestras NxN para algún valor de N, de tal manera que la división de un componente en CTB es una partición. Una unidad de codificación (CU) puede ser o comprender un bloque de codificación de muestras de luma, dos bloques de codificación correspondientes de muestras de croma de una imagen que tiene tres matrices de muestras, o un bloque de codificación de muestras de una imagen monocromática o una imagen que se codifica utilizando tres planos de color separados y estructuras de sintaxis utilizadas para codificar las muestras. En consecuencia, un bloque de codificación (CB) puede ser un bloque de MxN de muestras para algunos valores de M y N, de modo que la división de un CTB en bloques de codificación es una partición.
En las realizaciones, por ejemplo, según HEVC, una unidad de árbol de codificación (CTU) puede dividirse en varias CU utilizando una estructura de árbol cuaternario denominada árbol de codificación. La decisión de codificar un área de la imagen utilizando la inter predicción-imagen (temporal) o intra-imagen (espacial) se realiza a nivel de la CU. Cada CU puede dividirse a su vez en una, dos o cuatro PU según el tipo de división de la PU. Dentro de una PU, se aplica el mismo proceso de predicción y la información pertinente se transmite al decodificador en función de la PU. T ras obtener el bloque residual aplicando el proceso de predicción basado en el tipo de división de la PU, una CU puede dividirse en unidades de transformación (TU) según otra estructura de árbol cuaternario similar al árbol de codificación de la CU.
En las realizaciones, por ejemplo, según el último estándar de codificación de vídeo actualmente en desarrollo, que se denomina Codificación de Vídeo Versátil (VVC), se utiliza el particionamiento de árbol cuaternario y binario (QTBT) para dividir un bloque de codificación. En la estructura de bloques QTBT, una unidad de codificación (CU) puede tener forma cuadrada o rectangular. Por ejemplo, una unidad de árbol de codificación (CTU) se particiona primero mediante una estructura de árbol cuaternario. Los nodos de las hojas del árbol cuaternario se dividen a su vez mediante una estructura de árbol binario o ternario (o triple). Los nodos de hoja del árbol de partición se denominan unidades de codificación (CU), y esa segmentación se utiliza para el procesamiento de predicción y transformación sin ninguna otra partición. Esto significa que las CU, PU y TU tienen el mismo tamaño de bloque en la estructura de bloques de codificación QTBT. Paralelamente, también se propuso la partición múltiple, por ejemplo, la partición de árbol ternario, para utilizarla junto con la estructura de bloques QTBT.
En un ejemplo, la unidad de selección de modo 260 del codificador de vídeo 20 puede estar configurada para realizar cualquier combinación de las técnicas de partición descritas en el presente documento.
Tal como se ha descrito anteriormente, el codificador de vídeo 20 está configurado para determinar o seleccionar el mejor o un modo de predicción óptimo de un conjunto de modos de predicción (predeterminados). El conjunto de modos de predicción puede comprender, por ejemplo, modos de intra predicción y/o modos de inter predicción.
Intra predicción
El conjunto de modos de intra predicción puede comprender 35 modos de intra predicción diferentes, por ejemplo, modos no direccionales como el modo DC (o medio) y el modo planar, o modos direccionales, por ejemplo, como los definidos en HEVC, o puede comprender 67 modos de intra predicción diferentes, por ejemplo, modos no direccionales como el modo DC (o medio) y el modo planar, o modos direccionales, por ejemplo, como los definidos para VVC.
La unidad de intra predicción 254 está configurada para utilizar muestras reconstruidas de bloques vecinos de la misma imagen actual para generar un bloque de intra predicción 265 según un modo de intra predicción del conjunto de modos de intra predicción.
La unidad de intra predicción 254 (o en general la unidad de selección de modo 260) está configurada, además, para emitir parámetros de intra predicción (o en general información indicativa del modo de intra predicción seleccionado para el bloque) a la unidad de codificación por entropía 270 en forma de elementos de sintaxis 266 para su inclusión en los datos de imagen codificados 21, de modo que, por ejemplo, el decodificador de vídeo 30 pueda recibir y utilizar los parámetros de predicción para la decodificación.
Inter-predicción
El conjunto de (o posibles) modos de inter predicción depende de las imágenes de referencia disponibles (es decir, de las imágenes anteriores decodificadas al menos parcialmente, por ejemplo, almacenadas en el DBP 230) y de otros parámetros de inter predicción, por ejemplo, si se utiliza toda la imagen de referencia o sólo una parte, por ejemplo, un área de ventana de búsqueda alrededor del área del bloque actual, de la imagen de referencia para buscar un bloque de referencia que coincida mejor, y/o por ejemplo, si se aplica la interpolación de píxeles, por ejemplo, la interpolación de medio/semi-pel y/o cuarto-pel, o no.
Además de los modos de predicción anteriores, se puede aplicar el modo de salto y/o el modo directo.
La unidad de inter predicción 244 puede incluir una unidad de estimación de movimiento (Motion Estimation, ME) y una unidad de compensación de movimiento (Motion Compensation, MC) (ambas no mostradas en la figura 2). La unidad de estimación de movimiento puede estar configurada para recibir u obtener el bloque de imagen 203 (bloque de imagen actual 203 de la imagen actual 17) y una imagen decodificada 231, o al menos uno o una pluralidad de bloques previamente reconstruidos, por ejemplo, bloques reconstruidos de una o una pluralidad de otras/diferentes imágenes previamente decodificadas 231, para la estimación de movimiento. Por ejemplo, una secuencia de vídeo puede comprender la imagen actual y las imágenes previamente decodificadas 231, o, en otras palabras, la imagen actual y las imágenes previamente decodificadas 231 pueden ser parte de o formar una secuencia de imágenes que forman una secuencia de vídeo.
El codificador 20 puede, por ejemplo, estar configurado para seleccionar un bloque de referencia de una pluralidad de bloques de referencia de la misma o diferentes imágenes de la pluralidad de otras imágenes y proporcionar una imagen de referencia (o índice de imagen de referencia) y/o un desplazamiento (desplazamiento espacial) entre la posición (coordenadas x, y) del bloque de referencia y la posición del bloque actual como parámetros de inter predicción a la unidad de estimación de movimiento. Este desplazamiento también se denomina vector de movimiento (Motion Vector, MV).
La unidad de compensación de movimiento está configurada para obtener, por ejemplo, recibir, un parámetro de inter predicción y para realizar una inter predicción basándose en el parámetro de inter predicción o utilizándolo para obtener un bloque de inter predicción 265. La compensación de movimiento, realizada por la unidad de compensación de movimiento, puede implicar la obtención o generación del bloque de predicción basándose en el vector de movimiento/bloque determinado por la estimación de movimiento, posiblemente realizando interpolaciones con precisión sub-pí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 utilizarse para codificar un bloque de imagen. Al recibir el vector de movimiento para la PU del bloque de imagen actual, la unidad de compensación de movimiento puede localizar el bloque de predicción al que apunta el vector de movimiento en una de las listas de imágenes de referencia.
La unidad de compensación de movimiento también puede generar elementos de sintaxis asociados a los bloques y al fragmento de vídeo para su uso por el decodificador de vídeo 30 en la decodificación de los bloques de imagen del fragmento de vídeo.
Codificación por entropía
La unidad de codificación por entropía 270 está configurada para aplicar, por ejemplo, un algoritmo o esquema de codificación por entropía (por ejemplo un esquema de codificación de longitud variable (Variable Length Coding, VLC), un esquema de VLC adaptable al contexto (Context Adaptive VLC, CAVLC), un esquema de codificación aritmética, una binarización, una codificación aritmética binaria adaptable al contexto (Context Adaptive Binary Arithmetic Coding, CABAC), una codificación aritmética binaria adaptable al contexto basada en la sintaxis (Syntax Based Contex Adaptive Binary Arithmetic Coding, SBAC), codificación por entropía de partición de intervalo de probabilidad (Probability Interval Partitioning Entropy, PIPE) u otra metodología o técnica de codificación por entropía) o de derivación (sin compresión) sobre los coeficientes cuantificados 209, los parámetros de inter predicción, los parámetros de intra predicción, los parámetros de filtro de bucle y/u otros elementos de sintaxis para obtener los datos de imagen codificados 21 que pueden ser emitidos a través de la salida 272, por ejemplo, en forma de un flujo de bits codificado 21, de modo que, por ejemplo, el decodificador de vídeo 30 pueda recibir y utilizar los parámetros para la decodificación. El flujo de bits codificado 21 puede ser transmitido al decodificador de vídeo 30, o almacenado en una memoria para su posterior transmisión o recuperación por el decodificador de vídeo 30.
Se pueden utilizar otras variaciones estructurales del codificador de vídeo 20 para codificar el flujo de vídeo. Por ejemplo, un codificador 20 no basado en la transformación puede cuantificar la señal residual directamente sin la unidad de procesamiento mediante transformada 206 para ciertos bloques o fotogramas. En otra implementación, un codificador 20 puede tener la unidad de cuantificación 208 y la unidad de cuantificación inversa 210 combinadas en una sola unidad.
Decodificador y método de decodificación
La figura 3 muestra un ejemplo de decodificador de vídeo 30 configurado para implementar las técnicas de la presente solicitud. El decodificador de vídeo 30 está configurado para recibir datos de imagen codificados 21 (por ejemplo, flujo de bits codificado 21), por ejemplo, codificados por el codificador 20, para obtener una imagen decodificada 331. Los datos de imagen codificados o el flujo de bits comprenden información para decodificar los datos de imagen codificados, por ejemplo, datos que representan bloques de imagen de un fragmento de vídeo codificado y elementos de sintaxis asociados.
En el ejemplo de la figura 3, el decodificador 30 comprende una unidad de decodificación por entropía 304, una unidad de cuantificación inversa 310, una unidad de procesamiento mediante transformada inversa 312, una unidad de reconstrucción 314 (por ejemplo, un sumador 314), un filtro de bucle 320, una memoria intermedia de imágenes decodificadas (DBP) 330, una unidad de inter predicción 344 y una unidad de intra predicción 354. La unidad de inter predicción 344 puede ser o incluir una unidad de compensación de movimiento. El decodificador de vídeo 30 puede, en algunos ejemplos, realizar un pase de decodificación, en general, recíproco al pase de codificación descrito con respecto al codificador de vídeo 100 de la figura 2.
Tal como se ha explicado con respecto al codificador 20, la unidad de cuantificación inversa 210, la unidad de procesamiento mediante transformada inversa 212, la unidad de reconstrucción 214, el filtro de bucle 220, la memoria intermedia de imágenes decodificadas (DPB) 230, la unidad de intra predicción 344 y la unidad de intra predicción 354 también se muestran formando el “decodificador incorporado” del codificador de vídeo 20. En consecuencia, la unidad de cuantificación inversa 310 puede ser idéntica en función a la unidad de cuantificación inversa 110, la unidad de procesamiento mediante transformada inversa 312 puede ser idéntica en función de la unidad de procesamiento mediante transformada inversa 212, la unidad de reconstrucción 314 puede ser idéntica en función de la unidad de reconstrucción 214, el filtro de bucle 320 puede ser idéntico en función del filtro de bucle 220, y la memoria intermedia de imagen decodificada 330 puede ser idéntica en función de la memoria intermedia de imagen decodificada 230. Por lo tanto, las explicaciones proporcionadas para las respectivas unidades y funciones del codificador de vídeo 20 se aplican correspondientemente a las respectivas unidades y funciones del decodificador de vídeo 30.
Decodificación por entropía
La unidad de decodificación por entropía 304 está configurada para analizar el flujo de bits 21 (o, en general, los datos de imagen codificados 21) y realizar, por ejemplo, la decodificación por entropía de los datos de imagen codificados 21 para obtener, por ejemplo, coeficientes cuantificados 309 y/o parámetros de codificación decodificados (no mostrados en la figura 3), por ejemplo, alguno o todos los parámetros de inter predicción (por ejemplo, índice de imagen de referencia y vector de movimiento), parámetro de intra predicción (por ejemplo, modo o índice de intra predicción), parámetros de transformación, parámetros de cuantificación, parámetros de filtro de bucle y/u otros elementos de sintaxis. La unidad de decodificación por entropía 304 puede estar configurada para aplicar los algoritmos o esquemas de decodificación correspondientes a los esquemas de codificación descritos con respecto a la unidad de codificación por entropía 270 del codificador 20. La unidad de decodificación por entropía 304 puede estar configurada, además, para proporcionar parámetros de inter predicción, parámetros de intra predicción y/u otros elementos de sintaxis a la unidad de selección de modo 360 y otros parámetros a otras unidades del decodificador 30. El decodificador de vídeo 30 puede recibir los elementos de sintaxis a nivel de fragmento de vídeo y/o a nivel de bloque de vídeo.
Cuantificación inversa
La unidad de cuantificación inversa 310 puede estar configurada para recibir parámetros de cuantificación (QP) (o en general información relacionada con la cuantificación inversa) y coeficientes cuantificados a partir de los datos de imagen codificados 21 (por ejemplo, mediante el análisis sintáctico y/o la decodificación, por ejemplo, mediante la unidad de decodificación por entropía 304) y para aplicar, basándose en los parámetros de cuantificación, una cuantificación inversa sobre los coeficientes cuantificados decodificados 309 para obtener coeficientes 311 descuantificados, que también pueden denominarse coeficientes de transformación 311. El proceso de cuantificación inversa puede incluir el uso de un parámetro de cuantificación determinado por el codificador de vídeo 20 para cada bloque de vídeo en el fragmento de vídeo para determinar un grado de cuantificación y, asimismo, un grado de cuantificación inversa que debe aplicarse.
Transformación inversa
La unidad de procesamiento mediante transformada inversa 312 puede estar configurada para recibir los coeficientes 311 descualificados, también denominados coeficientes de transformación 311, y para aplicar una transformada a los coeficientes 311 descualificados con el fin de obtener bloques residuales 213 reconstruidos en el dominio de la muestra. Los bloques residuales reconstruidos 213 también pueden denominarse bloques de transformación 313. La transformada puede ser una transformada inversa, por ejemplo, una DCT inversa, una DST inversa, una transformada entera inversa, o un proceso de transformación inversa conceptualmente similar. La unidad de procesamiento mediante transformada inversa 312 puede estar configurada además para recibir los parámetros de transformación o la información correspondiente de los datos de imagen codificados 21 (por ejemplo, mediante el análisis sintáctico y/o la decodificación, por ejemplo, mediante la unidad de decodificación por entropía 304) para determinar la transformación que debe aplicarse a los coeficientes descuantificados 311.
Reconstrucción
La unidad de reconstrucción 314 (por ejemplo, el sumador 314) puede estar configurada para añadir el bloque residual reconstruido 313, al bloque de predicción 365 para obtener un bloque reconstruido 315 en el dominio de la muestra, por ejemplo, sumando los valores de muestra del bloque residual reconstruido 313 y los valores de muestra del bloque de predicción 365.
Filtrado
La unidad de filtro de bucle 320 (ya sea en el bucle de codificación o después del bucle de codificación) está configurada para filtrar el bloque reconstruido 315 para obtener un bloque filtrado 321, por ejemplo, para suavizar las transiciones de píxeles, o para mejorar de otro modo la calidad del vídeo. La unidad de filtro de bucle 320 puede comprender uno o más filtros de bucle, como un filtro de desbloqueo, un filtro de compensación adaptable a la muestra (SAO) o uno o más filtros, por ejemplo, un filtro bilateral, un filtro de bucle adaptable (ALF), un filtro de nitidez, un filtro de suavizado o un filtro de colaboración, o cualquier combinación de los mismos. Aunque la unidad de filtro de bucle 320 se muestra en la figura 3 como un filtro dentro del bucle, en otras configuraciones, la unidad de filtro de bucle 320 puede implementarse como un filtro posterior al bucle.
Memoria intermedia de imágenes decodificadas
Los bloques de vídeo decodificados 321 de una imagen se almacenan entonces en la memoria intermedia de imágenes decodificadas 330, que almacena las imágenes decodificadas 331 como imágenes de referencia para la posterior compensación de movimiento de otras imágenes y/o para la salida respectivamente de la pantalla.
El decodificador 30 está configurado para emitir la imagen decodificada 311, por ejemplo, a través de la salida 312, para su presentación o visualización a un usuario.
Predicción
La unidad de inter predicción 344 puede ser idéntica a la unidad de inter predicción 244 (en particular a la unidad de compensación de movimiento) y la unidad de intra predicción 354 puede ser idéntica a la unidad de inter predicción 254 en cuanto a su función, y realiza decisiones de división o partición y predicción basadas en los parámetros de partición y/o predicción o en la información respectiva recibida de los datos de imagen codificados 21 (por ejemplo, mediante el análisis sintáctico y/o la decodificación, por ejemplo, mediante la unidad de decodificación por entropía 304). La unidad de selección de modo 360 puede estar configurada para realizar la predicción (intra o inter predicción) por bloque basada en imágenes reconstruidas, bloques o muestras respectivas (filtradas o no filtradas) para obtener el bloque de predicción 365.
Cuando el fragmento de vídeo está codificado como un fragmento intra codificado (I), la unidad de intra predicción 354 de la unidad de selección de modo 360 está configurada para generar el bloque de predicción 365 para un bloque de imagen del fragmento de vídeo actual, basándose en un modo de intra predicción señalado y en los datos de los bloques previamente decodificados de la imagen actual. Cuando la imagen de vídeo se codifica como un fragmento inter codificado (es decir, B, o P), la unidad de inter predicción 344 (por ejemplo, la unidad de compensación de movimiento) de la unidad de selección de modo 360 está configurada para producir bloques de predicción 365 para un bloque de vídeo del fragmento de vídeo actual basándose en los vectores de movimiento y en otros elementos de sintaxis recibidos de la unidad de decodificación por entropía 304. Para la inter predicción, los bloques de predicción pueden producirse a partir de una de las imágenes de referencia dentro de una de las listas de imágenes de referencia. El decodificador de vídeo 30 puede construir las listas de imágenes de referencia, la Lista 0 y la Lista 1, utilizando técnicas de construcción predeterminadas basadas en las imágenes de referencia almacenadas en la DPB 330.
La unidad de selección de modo 360 está configurada para determinar la 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 de sintaxis, y utiliza la información de predicción para producir los bloques de predicción para el bloque de vídeo actual que se está decodificando. Por ejemplo, la unidad de selección de modo 360 utiliza algunos de los elementos de sintaxis recibidos para determinar un modo de predicción (por ejemplo, intra o inter predicción) utilizado para codificar los bloques de vídeo del fragmento de vídeo, un tipo de fragmento de inter predicción (por ejemplo, fragmento B, fragmento P, o fragmento 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 inter codificado del fragmento, estado de inter predicción para cada bloque de vídeo inter codificado del fragmento, y otra información para decodificar los bloques de vídeo en el fragmento de vídeo actual.
Se pueden utilizar otras variaciones del decodificador de vídeo 30 para decodificar los datos de imagen codificados 21. Por ejemplo, el decodificador 30 puede producir el flujo de vídeo de salida sin la unidad de filtrado de bucle 320. Por ejemplo, un decodificador 30 no basado en la transformada puede cuantificar inversamente la señal residual directamente sin la unidad de procesamiento mediante transformada inversa 312 para ciertos bloques o fotogramas. En otra implementación, el decodificador de vídeo 30 puede tener la unidad de cuantificación inversa 310 y la unidad de procesamiento mediante transformada inversa 312 combinadas en una sola unidad.
Debe entenderse que, en el codificador 20 y en el decodificador 30, el resultado del procesamiento de un paso actual puede ser procesado adicionalmente y, a continuación, ser enviado al siguiente paso. Por ejemplo, tras el filtrado de interpolación, la derivación del vector de movimiento o el filtrado de bucle, se puede realizar una operación adicional, tal como el recorte o el desplazamiento, en el resultado del procesamiento del filtrado de interpolación, la derivación del vector de movimiento o el filtrado de bucle.
Cabe señalar que pueden aplicarse otras operaciones a los vectores de movimiento derivados del bloque actual (incluyendo, pero sin limitarse a, los vectores de movimiento de los puntos de control del modo afín, los vectores de movimiento de los sub-bloques en los modos afín, planar y ATMVP, los vectores de movimiento temporal, etc.). Por ejemplo, el valor del vector de movimiento se limita a un rango predefinido según su bit de representación. Si el bit de representación del vector de movimiento es bitDepth, el rango es -2A(bitDepth-1)~2A(bitDepth-1)-1, donde “A” significa exponenciación. Por ejemplo, si bitDepth es igual a 16, el rango es -32768 ~ 32767; si bitDepth es igual a 18, el rango es -131072 ~ 131071. Por ejemplo, el valor del vector de movimiento derivado (por ejemplo, los MV de cuatro sub-bloques 4x4 dentro de un bloque 8x8) se restringe de tal manera que la diferencia máxima entre las partes enteras de los MV de cuatro sub-bloques no es más de N píxeles, tal como por ejemplo no más de 1 píxel. Aquí se ofrecen dos métodos para restringir el vector de movimiento según la profundidad de bits (bitDepth).
Método 1: eliminar el MSB (bit más significativo) de desbordamiento mediante operaciones de flujo
ux= ( mvx+2bitDepth ) % 2bitDepth (1)
mvx = ( ux >= 2bitDepth'1 ) ? (ux - 2bitDepth ) : ux (2)
uy= ( mvy+2bitDepth ) % 2bitDepth (3)
mvy = ( uy >= 2bitDepth-1 ) ? (uy - 2bitDepth ) : uy (4)
donde mvx es una componente horizontal de un vector de movimiento de un bloque o sub-bloque de imagen, mvy es una componente vertical de un vector de movimiento de un bloque o sub-bloque de imagen, y ux y uy indican un valor intermedio.
Por ejemplo, si el valor de mvx es -32769, tras aplicar la fórmula (1) y (2), el valor resultante es 32767. En el sistema informático, los números decimales se almacenan como complemento a dos. El complemento a dos de -32769 es 1,0111,1111,1111,1111 (17 bits), luego se descarta el MSB, por lo que el complemento a dos resultante es 0111,1111,1111,1111 (el número decimal es 32767), que es el mismo que el resultado de aplicar la fórmula (1) y (2).
ux= ( mvpx mvdx 2bitDepth ) % 2bitDepth (5)
mvx = ( ux >= 2bitDepth'1 ) ? (ux - 2bitDepth ) : ux (6)
uy= ( mvpy mvdy 2bitDepth ) % 2bitDepth (7)
mvy = ( uy >= 2bitDepth-1 ) ? (uy - 2bitDepth ) : uy (8)
Las operaciones pueden ser aplicadas durante la suma de mvp y mvd, tal como se muestra en la fórmula (5) a (8).
Método 2: eliminar el MSB de desbordamiento recortando el valor
vx = Clip3(-2bitDepth-1, 2bitDepth'1 -1, vx)
vy = Clip3(-2bitDepth-1, 2bitDepth'1 -1, vy)
donde vx es una componente horizontal de un vector de movimiento de un bloque o sub-bloque de imagen, vy es una componente vertical de un vector de movimiento de un bloque o sub-bloque de imagen; x, y z corresponden respectivamente a tres valores de entrada del proceso de recorte de MV, y la definición de la función Clip3 es la siguiente
x z < x
Clip3( x, y, z ) = y z > y
z de lo contrario
La figura 4 es un diagrama esquemático de un dispositivo de codificación de vídeo 400 según una realización de la invención. El dispositivo de codificación de vídeo 400 es adecuado para implementar las realizaciones dadas a conocer tal como se describe en el presente documento. En una realización, el dispositivo de codificación de vídeo 400 puede ser un decodificador tal como el decodificador de vídeo 30 de la figura 1A o un codificador tal como el codificador de vídeo 20 de la figura 1A.
El dispositivo de codificación de vídeo 400 comprende puertos de ingreso 410 (o puertos de entrada 410) y unidades receptoras (Rx) 420 para recibir datos; un procesador, unidad lógica o unidad central de procesamiento (Central Processing Unit, CPU) 430 para procesar los datos; unidades transmisoras (Tx) 440 y puertos de egreso 450 (o puertos de salida 450) para transmitir los datos; y una memoria 460 para almacenar los datos. El dispositivo de codificación de vídeo 400 también puede comprender componentes ópticoseléctricos (OE) y componentes eléctricos-ópticos (EO) acoplados a los puertos de entrada 410, las unidades receptoras 420, las unidades transmisoras 440 y los puertos de salida 450 para la salida o entrada de señales ópticas o eléctricas.
El procesador 430 se implementa mediante hardware y software. El procesador 430 puede implementarse como uno o más chips de CPU, núcleos (por ejemplo, como un procesador multinúcleo), FPGA, ASIC y DSP. El procesador 430 está en comunicación con los puertos de entrada 410, las unidades receptoras 420, las unidades transmisoras 440, los puertos de salida 450 y la memoria 460. El procesador 430 comprende un módulo de codificación 470. El módulo de codificación 470 implementa las realizaciones dadas a conocer descritas anteriormente. Por ejemplo, el módulo de codificación 470 implementa, procesa, prepara o proporciona las diversas operaciones de codificación. La inclusión del módulo de codificación 470 proporciona, por lo tanto, una mejora sustancial de la funcionalidad del dispositivo de codificación de vídeo 400, y efectúa una transformación del dispositivo de codificación de vídeo 400 a un estado diferente. Alternativamente, el módulo de codificación 470 se implementa como instrucciones almacenadas en la memoria 460 y ejecutadas por el procesador 430.
La memoria 460 puede comprender uno o más discos, unidades de cinta y unidades de estado sólido, y puede utilizarse como dispositivo de almacenamiento de datos de sobrecarga, 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 460 puede ser, por ejemplo, volátil y/o no volátil y puede ser una memoria de sólo lectura (ROM), una memoria de acceso aleatorio (RAM), una memoria ternaria de contenido direccionable (TCAM), y/o una memoria estática de acceso aleatorio (SRAM).
La figura 5 es un diagrama de bloques simplificado de un aparato 500 que puede utilizarse como uno o ambos del dispositivo de origen 12 y el dispositivo de destino 14 de la figura 1, según una realización a modo de ejemplo.
El procesador 502 del aparato 500 puede ser una unidad central de procesamiento. Alternativamente, el procesador 502 puede ser cualquier otro tipo de dispositivo, o múltiples dispositivos, capaces de manipular o procesar información ya existente o desarrollada en lo sucesivo. Aunque las implementaciones dadas a conocer pueden ser puestas en práctica con un solo procesador, tal como se muestra, por ejemplo, el procesador 502, pueden lograrse ventajas de velocidad y eficiencia utilizando más de un procesador.
Una memoria 504 en el aparato 500 puede ser un dispositivo de memoria de sólo lectura (ROM) o un dispositivo de memoria de acceso aleatorio (RAM) en una implementación. Cualquier otro tipo adecuado de dispositivo de almacenamiento puede utilizarse como memoria 504. La memoria 504 puede incluir código y datos 506 a los que accede el procesador 502 mediante un bus 512. La memoria 504 puede incluir además un sistema operativo 508 y programas de aplicación 510, incluyendo los programas de aplicación 510 al menos un programa que permite al procesador 502 realizar los métodos descritos aquí. Por ejemplo, los programas de aplicación 510 pueden incluir las aplicaciones 1 a N, que incluyen además una aplicación de codificación de vídeo que realiza los métodos descritos aquí.
El aparato 500 también puede incluir uno o más dispositivos de salida, tal como una pantalla 518. La pantalla 518 puede ser, en un ejemplo, una pantalla sensible al tacto que combina una pantalla con un elemento sensible al tacto que es operable para detectar entradas táctiles. La pantalla 518 puede estar acoplada al procesador 502 a través del bus 512.
Aunque se representa aquí como un solo bus, el bus 512 del aparato 500 puede estar compuesto por múltiples buses. Además, el almacenamiento secundario 514 puede estar directamente acoplado a los demás componentes del aparato 500 o se puede acceder a él a través de una red y puede comprender una sola unidad integrada, tal como una tarjeta de memoria, o varias unidades, tales como múltiples tarjetas de memoria. De este modo, el aparato 500 puede implementarse en una amplia variedad de configuraciones.
La figura 6 ilustra un diagrama esquemático de una pluralidad de modos de intra predicción utilizados en el esquema HEVC de UIP. Para los bloques de luminancia, los modos de intra predicción pueden comprender hasta 36 modos de intra predicción, que pueden incluir tres modos no direccionales y 33 modos direccionales. Los modos no direccionales pueden comprender un modo de predicción planar, un modo de predicción media (DC) y un modo de predicción de croma a partir de luma (LM). El modo de predicción planar puede realizar predicciones asumiendo una superficie de amplitud de bloque con una pendiente x horizontal y vertical derivada del límite del bloque. El modo de predicción DC puede realizar predicciones asumiendo una superficie de bloque plana con un valor que coincide con el valor medio del límite del bloque. El modo de predicción LM puede realizar predicciones asumiendo que un valor de croma para el bloque coincide con el valor de luma para el bloque.
La figura 7 muestra un ejemplo de 67 modos de intra predicción, por ejemplo, tal como se propone para VVC, la pluralidad de modos de intra predicción de 67 modos de intra predicción que comprenden: el modo planar (índice 0), el modo dc (índice 1), y los modos angulares con índices 2 a 66, donde el modo angular inferior izquierdo en la figura 7 se refiere al índice 2 y la numeración de los índices se incrementa hasta que el índice 66 es el modo angular superior derecho de la figura 7.
Tal como se muestra en la figura 8, a partir de la segunda versión el VVC tiene algunos modos correspondientes a las direcciones de intra predicción objetivo, incluyendo las de gran ángulo (mostradas como líneas discontinuas). Para cualquiera de estos modos, para predecir muestras dentro de un bloque debe realizarse la interpolación de un conjunto de muestras de referencia vecinas, si la posición correspondiente dentro de un lado del bloque es fraccionaria. HEVC y VVC utilizan la interpolación lineal entre dos muestras de referencia adyacentes. JEM utiliza filtros de interpolación de 4 tomas más sofisticados. Los coeficientes de los filtros se seleccionan para ser gaussianos o cúbicos en función del valor de la anchura o de la altura. La decisión de utilizar la anchura o la altura se armoniza con la decisión de seleccionar el lado de referencia principal: cuando el modo de intra predicción es mayor o igual que el modo diagonal, se selecciona el lado superior de las muestras de referencia como lado de referencia principal y se selecciona el valor de la anchura para determinar el filtro de interpolación en uso. En caso contrario, se selecciona el lado principal de referencia del lado izquierdo del bloque y la altura controla el proceso de selección del filtro. En concreto, si la longitud del lado seleccionado es menor o igual a 8 muestras, se aplica la interpolación cúbica de 4 tomas. En caso contrario, el filtro de interpolación es gaussiano de 4 tomas.
De forma similar a la inter predicción, la intra predicción puede requerir un filtrado de interpolación cuando las muestras dentro de un bloque se predicen según un modo direccional de pendiente fraccionaria. Si se utiliza un filtro lineal para este fin, los coeficientes de filtrado pueden calcularse fácilmente si una muestra de un bloque que se va a predecir cae en una posición fraccionaria (sub-pel) dentro de las muestras de referencia. Por lo tanto, el filtro lineal no requiere una LUT (Look-Up Table) para almacenar su coeficiente. No obstante, puede utilizarse en lugar del cálculo directo. Sin embargo, si un módulo de predicción utiliza filtros de interpolación de paso largo (por ejemplo, de 4 u 8 tomas), puede requerir una LUT para guardar el coeficiente de los filtros de interpolación, tal como se hace en el módulo de inter predicción, en el que el DCT-IF de 8 tomas para luma y el DCT-IF de 4 tomas para croma se tabulan como se muestra en la Tabla 1 y la Tabla 2, respectivamente.
Tabla 1 - Especificación de los coeficientes de filtrado de interpolación de luma fL[p] para cada posición p de la muestra fraccionaria de 1/16.
Tabla 2 - Especificación de los coeficientes de filtrado de interpolación de croma fc[p] para cada posición p de la muestra fraccionaria 1/32.
El conjunto particular de coeficientes podría definirse tal como se muestra en la Tabla 3.
Tabla 3 - Especificación de los coeficientes de los filtros de interpolación de intra predicción fC y fG, tal y como se describen en el borrador de la especificación VVC de la versión 3.
La muestra intra predicha se calcula mediante convolución con coeficientes definidos según el desplazamiento del subpíxel y el tipo de filtro, como sigue:
En esta ecuación, “>>“ indica una operación de desplazamiento a la derecha.
Un conjunto de coeficientes { c j se obtiene de una tabla de búsqueda (LUT). La tabla 3 ofrece un ejemplo de los valores almacenados según el diseño actual de VVC descrito en el borrador de la especificación de la versión 3 (JVET-L1001 “Versatile Video Coding (Draft 3)”). La selección entre los filtros de interpolación de suavizado (fG) y de nitidez (fC) se realiza utilizando las condiciones de MDIS (Mode-Dependent Intra Smoothing). De este modo, se puede utilizar tanto fC como fG para generar las muestras previstas de un bloque.
Si se selecciona el filtro de nitidez, la muestra prevista s(x) se recorta además al rango de valores permitido, que se define mediante SPS o se deriva de la profundidad de bits del componente seleccionado.
Para algunos casos de uso, puede ser beneficioso evitar mantener LUT explícitas para los filtros de interpolación, ya que el manejo de LUT requiere memoria adicional y, por lo tanto, aumenta el consumo de energía, así como el tamaño de la matriz. Lo primero es crítico para las aplicaciones móviles. Lo segundo afecta negativamente al precio.
Para los casos de uso mencionados, es razonable definir analíticamente los coeficientes de los filtros de interpolación. En lugar de realizar una búsqueda desde una LUT, los coeficientes de los filtros podrían calcularse a partir de la posición p de la muestra fraccionaria de entrada.
Según una realización de la presente invención, se da a conocer un método para el procesamiento de intra o inter predicción de un fotograma de vídeo, que comprende los pasos de: obtener una muestra de referencia; obtener un valor de un desplazamiento de subpíxel; y filtrar, utilizando un filtro de interpolación de subpíxeles de 4 tomas, la muestra de referencia, para obtener un valor de muestra predicho, en el que los coeficientes de filtrado del filtro de interpolación de subpíxeles de 4 tomas cumplen:
P
dondepes una parte fraccionaria del valor del desplazamiento del subpíxel, yc0,c1, c2, yc3son los coeficientes de filtrado de interpolación de subpíxeles de 4 tomas.
En una implementación a modo de ejemplo, las muestras de referencia pueden denominarse ref[ x ], siendo
ref[ x ] = p[ -1 - refldx x ][ -1 - refldx ], siendo x = 0..nTbW refldx 1.
correspondiente a una matriz de muestras de referencia y refiriéndose “p” a una matriz bidimensional x-y, p[x][y], que contiene los valores de la muestra. El número de muestras de referencia utilizadas puede ser al menos uno. En otro ejemplo, el número de muestras de referencia puede ser cuatro.
En una implementación a modo de ejemplo, el valor de desplazamiento de subpíxel obtenido puede denominarse
(y 1 refldx ) * intra predAngle
siendo “Intra predAngle” el valor de un ángulo de intra predicción.
En una implementación a modo de ejemplo, el valor de la muestra predicha “predSamples[ x ][ y ]” puede obtenerse mediante
predSamples[ x ][ y ] = Clip1( ( ( £ -=0 fT[ i ] * ref[ x ildx i ] ) 32 ) >> 6 )
refiriéndose fT[ i ] a los coeficientes de filtrado. Estos coeficientes pueden ser coeficientes de filtrado de luma o de croma para la inter predicción, denominados fG y fC, respectivamente.
La selección de que los coeficientes de filtrado sean luma o croma puede implementarse mediante el uso y la configuración de un indicador “filterFlag”, por ejemplo, como
fT[ j ] = filterFlag ? fG[ iFact ][ j ] : fC[ iFact ][ j ]
siendo
iFact = ( ( y 1 refldx ) * intra predAngle ) & 31.
El valor “31” se refiere a la parte fraccionaria del valor de desplazamiento del subpíxel, y puede tomar otros valores diferentes de “31”. Los valores de los coeficientes de filtrado fG (luma) y/o fC (croma) se obtienen analíticamente sobre la marcha, utilizando la expresión analítica anterior para los coeficientes de filtrado del filtro de 4 tomas. Así, los coeficientes de filtrado se definen en función del valor de desplazamiento del subpíxel. Los coeficientes de filtrado se obtienen, por lo tanto, sin acceder a los valores correspondientes de los coeficientes de filtrado de una LUT, y más bien se obtienen mediante cálculo.
Alternativamente, los coeficientes de filtrado pueden ser calculados usando las ecuaciones anteriores, y los valores pueden ser almacenados en una LUT.
Según una realización de la presente invención, los coeficientes de filtrado del filtro de interpolación de subpíxeles de 4 tomas se definen en una tabla como la siguiente:
Según una realización de la presente invención, se da a conocer un método para el procesamiento de intra o inter predicción de un fotograma de vídeo, que comprende los pasos de: obtener una muestra de referencia; obtener un valor de un desplazamiento de subpíxel; y filtrar, utilizando un filtro de interpolación de subpíxeles de 4 tomas, la muestra de referencia para obtener un valor de muestra predicho, en donde los coeficientes de filtrado del filtro de interpolación de subpíxeles de 4 tomas se definen como sigue:
dondepes una parte fraccionaria del valor del desplazamiento del subpíxel, yc0,c3, c2, yc3son los coeficientes de filtrado.
En una implementación a modo de ejemplo, los valores de los coeficientes de filtrado pueden almacenarse en una LUT. Esto significa que, para el filtrado de interpolación de subpíxeles, los valores respectivos de los coeficientes de filtrado deben obtenerse de la LUT.
La figura 23 muestra un diagrama de flujo del procesamiento de intra/inter predicción. En el paso 2301, se obtiene una muestra de referencia. La muestra de referencia puede incluir una o más muestras de referencia. En el paso 2302, se obtiene un valor de desplazamiento de subpíxel. En el paso 2303, la muestra de referencia se filtra utilizando el filtro de interpolación de subpíxeles que tiene coeficientes de filtrado { c j coni = 0,...3.Esto se denomina filtro de 4 tomas y/o filtro de 4 puntos.
Los coeficientes de filtrado pueden obtenerse a partir de expresiones analíticas con una parte p fraccionaria determinada del valor de desplazamiento del subpíxel. Los coeficientes de filtrado también pueden obtenerse a partir de una LUT con referencia a los valores p.
Según una realización de la presente invención, un bit depes puesto a cero.
Según una realización de la presente invención,pse incrementa en 1 y, posteriormente, un bit inferior depincrementado es puesto a cero antes de que dichopse utilice para obtener los coeficientes de filtrado.
Según una realización de la presente invención, la obtención de los coeficientes de filtrado comprende el paso de calcular los coeficientes de filtrado según
p
c0 = 16 - f
cx = 16 c0
c2 = c 0 p
c3 = c 0 - p .
Esto puede proporcionar una ventaja de calcular un coeficiente de filtrado ci+1 a partir de un coeficiente de filtrado ci anterior. Esto puede reducir aún más el tiempo de cálculo de los coeficientes de filtrado.
La invención propuesta permite ambos enfoques para obtener los coeficientes de filtrado: búsquedas en LUT y cálculo directo de acuerdo con las ecuaciones propuestas.
Una de las características del filtro de interpolación consiste en una dependencia lineal de su desplazamiento de fase con respecto a la posición p fraccionaria de la muestra. Las realizaciones de la invención utilizan esta dependencia para obtener el valor de un coeficiente de filtrado utilizando operaciones simples sobre la posición p fraccionaria de la muestra.
Para obtener los coeficientes de filtrado del filtro de interpolación de suavizado fG se utiliza una dependencia lineal. La obtención de los coeficientes de filtrado del filtro de interpolación de nitidez fC se basa en tomar un valor absoluto de una expresión lineal basada en p.
Según una realización de la presente invención, se da a conocer un método de codificación de vídeo, el método comprende el procesamiento de intra predicción de un bloque de un fotograma de vídeo, que comprende: el filtrado, utilizando un filtro de interpolación de subpíxeles de 4 tomas, de una muestra de referencia del fotograma de vídeo; en donde el filtro de interpolación de subpíxeles de 4 tomas es una combinación de filtros, cumpliendo los coeficientes de filtrado de al menos uno de los filtros:
dondepes una posición de muestra fraccionaria de un desplazamiento de subpíxel, yc0, c1, c2,yc3son los coeficientes de filtrado.
La figura 24 muestra un diagrama de flujo de la codificación de vídeo. En el paso 2410, el procesamiento de intra predicción se lleva a cabo mediante el filtrado de una muestra de referencia de un bloque, utilizando un filtro de interpolación de subpíxeles de 4 tomas.
Según una realización de la presente invención, el filtro de interpolación de subpíxeles de 4 tomas es un filtro de suavizado que es una combinación paralela de dos filtros lineales dependientes de la fase y un filtro de paso bajo.
Según una realización de la presente invención, el filtro de interpolación de subpíxeles de 4 tomas es un filtro de nitidez que es una combinación paralela de un filtro lineal dependiente de la fase y un filtro de paso alto variable en intensidad.
Según una modalidad de la presente invención, el filtro de paso alto de intensidad variable es un filtro de paso alto de respuesta finita al impulso, FIR, cuya salida se multiplica por un parámetro de intensidad dependiente de la fase.
Según cualquiera de las realizaciones anteriores de la presente invención, un bit inferior depse pone a cero. Según una realización de la presente invención,pse incrementa en 1 y posteriormente el bit inferior del valor incrementado se pone a cero antes de que este valor se utilice para obtener los coeficientes de filtrado de interpolación.
Según una realización de la presente invención, la operación de recorte se realiza para la salida del filtro de paso alto de intensidad variable.
Las realizaciones de la invención expresan el coeficiente de filtrado como una combinación de dos o más filtros FIR (de respuesta finita al impulso). Esta combinación puede comprender las siguientes opciones:
- combinación secuencial, es decir, una convolución de los coeficientes;
- combinación paralela, es decir, suma ponderada de los coeficientes.
Cada uno de estos filtros puede depender o no del parámetro de fase P, que es una función de la posición p fraccionaria de la muestra. Los coeficientes de los filtros pertenecientes a la combinación tienen una representación simple a partir del parámetro de fase P.
En una realización, en la figura 9, se introduce un conjunto de muestras de referencia en el filtro de interpolación.
En una realización, para el caso del filtro de interpolación de suavizado, el valor del parámetro de fase P es el mismo que el valor de la posición p de muestra fraccionaria. En la figura 9, los bloques F1 y F2 representan filtros de interpolación lineal. Los coeficientes de cada uno de estos filtros se expresan a partir del parámetro de fasepcomo sigue:
En un ejemplo, aquí y más allá, la operación de división podría definirse con o sin redondeo, es decir:
o
donde “a” es un nominador de división y “n” es un parámetro de potencia de dos del denominador.
El bloque F3 representa un filtro de paso bajo de dos pasos, con coeficientes constantes:
En un ejemplo, los filtros F1... F3 no están normalizados, F3 tiene una ganancia de DC mayor que F1 y F3 tiene una ganancia de DC mayor que F2.
Las salidas de los filtros F1... F3 se suman y se normalizan. La normalización (bloque “>>“) puede realizarse, por ejemplo, mediante un desplazamiento a la derecha, o mediante una división con redondeo tal como se ha descrito anteriormente.
La ecuación resultante para esta combinación (filtro equivalente de 4 tomas) se expresa de la siguiente manera:
Esta realización permite una implementación basada en LUT. Según esta implementación, los valores de los coeficientes también podrían definirse utilizando una LUT. Los valores almacenados en esta LUT se definen utilizando la Tabla 4 (para ambos casos: con y sin redondeo).
Tabla 4 - Especificación del coeficiente de filtrado de interpolación de intra predicción del filtro de suavizado.
De la Tabla 4 se desprende que los coeficientes están dentro de un rango de [0, 31]. Este hecho explica la ventaja técnica de la invención que consiste en la posibilidad de utilizar multiplicadores de 16 bits para las imágenes de 8 y 10 bits que se utilizan y se utilizarán, al menos, en la perspectiva a medio plazo con mayor frecuencia. Una implementación normal de la invención comprendería cuatro operaciones de multiplicación en paralelo, en las que los operandos de la multiplicación tienen profundidades de bits de, como máximo, 6 para los coeficientes de los filtros y 10 para las muestras. El resultado de la multiplicación no superaría un valor de 16 bits, lo que hace que los coeficientes propuestos sean amigables desde el punto de vista de la implementación.
En el modo de inter predicción, se realiza una compensación de movimiento de bloque. La compensación de movimiento podría comprender un paso de filtrado de interpolación, que es similar al filtrado de intra interpolación. Otra propiedad beneficiosa de la invención es que los coeficientes de los filtros de interpolación tienen la misma precisión (es decir, la profundidad de bits de los valores de los coeficientes es la misma) para los modos de intra e inter predicción. Si la precisión de los coeficientes de los filtros de interpolación es mayor en el caso de la intra predicción, puede afectar negativamente a la complejidad informática de un códec de vídeo. La razón es que la intra predicción es intrínsecamente secuencial, ya que requiere muestras reconstruidas de bloques anteriores. En cambio, la inter predicción puede realizarse en paralelo. Por lo tanto, si la precisión de la interpolación es mayor para la intra predicción que para la inter predicción, eso puede profundizar el desequilibrio de implementación entre las tuberías de intra e inter predicción. Esta alineación de la precisión permite evitar dichas consecuencias negativas.
Otro beneficio de la invención propuesta está en la reducción de la diversidad de los coeficientes. Considerando que los pares de filas vecinas de la Tabla 4 son idénticos, una implementación práctica de la invención obtendría de una LUT que tiene sólo 16 filas (las filas correspondientes a los valores pares de p en el caso “Sin redondeo”, y las filas correspondientes a los valores impares de p en el caso “Con redondeo”) en lugar de 32 filas.
Un efecto técnico de la invención es que permite, al menos, los siguientes tipos de implementaciones:
- implementaciones sin LUT, que calculan los coeficientes de filtrado utilizando valores de p, en donde el cálculo se basa en las ecuaciones analíticas descritas anteriormente; y
- implementaciones basadas en LUT que obtienen los coeficientes de filtrado de una LUT utilizando un valor de índice basado en un valor de p.
La precisión del valor de p se reduce al calcular los valores de los coeficientes. En particular, el valor de los coeficientes se obtiene a partir del resultado de la división entera por 2, es decir, | que puede implementarse como un desplazamiento a la derecha en 1, que es simplemente implementable en hardware. Para las implementaciones basadas en LUT, esta reducción de la precisión se traduce en la reducción de la memoria necesaria para almacenar la LUT. En el hardware, esto también reduciría el número de hilos de un bus de direcciones de la LUT.
Según una realización de la presente invención, se da a conocer un aparato para el procesamiento de intra o inter predicción de un fotograma de vídeo, incluyendo: una unidad de obtención de muestra de referencia, configurada para obtener una muestra de referencia; una unidad de obtención de valor de desplazamiento de subpíxel, configurada para obtener un valor de un desplazamiento de subpíxel; y un filtro de interpolación de subpíxeles de 4 tomas, configurado para filtrar la muestra de referencia para obtener un valor de muestra predicho, en el que los coeficientes de filtrado del filtro de interpolación de subpíxeles de 4 tomas cumplen:
dondepes una parte fraccionaria del valor del desplazamiento del subpíxel, yc0,c1, c2, yc3son los coeficientes de filtrado de interpolación de 4 tomas del subpíxel.
Según una realización de la presente invención, los coeficientes de filtrado del filtro de interpolación de subpíxeles de 4 tomas se definen en una tabla como la siguiente:
Según una realización de la presente invención, se da a conocer un aparato para el procesamiento de intra o inter predicción de un fotograma de vídeo, que comprende: una unidad de obtención de muestra de referencia, configurada para obtener una muestra de referencia; una unidad de obtención de valor de desplazamiento de subpíxel, configurada para obtener un valor de un desplazamiento de subpíxel; y un filtro de interpolación de subpíxeles de 4 tomas, configurado para filtrar la muestra de referencia para obtener un valor de muestra predicho, en el que los coeficientes de filtrado del filtro de interpolación de subpíxeles de 4 tomas se definen como sigue:
dondepes una parte fraccionaria del valor del desplazamiento del subpíxel, yc0,c3, c2, yc3son los coeficientes de filtrado.
La figura 25 muestra un esquema del módulo de intra/inter procesamiento 2500, que comprende una unidad de obtención de muestra de referencia 2510, una unidad de obtención de valor de desplazamiento de subpíxel 2520, y un filtro de interpolación de subpíxel 2530.
Según una realización de la presente invención, se da a conocer un aparato para la codificación de vídeo que comprende: una unidad de procesamiento de intra predicción, configurada para intra predecir un bloque de un fotograma de vídeo; y un filtro de interpolación de subpíxeles de 4 tomas, configurado para filtrar una muestra de referencia del fotograma de vídeo; en el que el filtro de interpolación de subpíxeles de 4 tomas es una combinación de filtros, cumpliendo los coeficientes de filtrado de al menos uno de los filtros:
dondepes una posición de muestra fraccionaria de un desplazamiento de subpíxel, yc0, c1, c2,yc3son los coeficientes de filtrado.
La figura 26 muestra un esquema del módulo de codificación de vídeo 2600, que comprende una unidad de procesamiento de intra predicción 2610 y un filtro de interpolación de subpíxeles 2620.
Según una realización de la presente invención, se da a conocer un codificador (20) que comprende circuitos de procesamiento para llevar a cabo el método según cualquiera de las realizaciones anteriores de la presente invención.
Según una realización de la presente invención, se da a conocer un decodificador (30), que comprende circuitos de procesamiento para llevar a cabo el método según cualquiera de las realizaciones anteriores de la presente invención.
Según una realización de la presente invención, se da a conocer un producto de programa informático que comprende un código de programa para realizar el método según cualquiera de las realizaciones anteriores de la presente invención.
Según una realización de la presente invención, se da a conocer un decodificador que comprende: uno o más procesadores; y un medio de almacenamiento no transitorio legible por ordenador acoplado a los procesadores y que almacena la programación para su ejecución por los procesadores, en el que la programación, cuando es ejecutada por los procesadores, configura el decodificador para llevar a cabo el método según cualquiera de las realizaciones anteriores de la presente invención.
Según una realización de la presente invención, se da a conocer un codificador que comprende: uno o más procesadores; y un medio de almacenamiento no transitorio legible por ordenador acoplado a los procesadores y que almacena la programación para su ejecución por los procesadores, en donde la programación, cuando es ejecutada por los procesadores, configura el codificador para llevar a cabo el método según cualquiera de las realizaciones anteriores de la presente invención.
La presente invención según cualquiera de las realizaciones anteriores puede proporcionar una ventaja de realizar la intra/interpretación de un fotograma de vídeo de forma rápida. Esto se debe a que los coeficientes de filtrado de interpolación se obtienen de forma analítica, es decir, dichos coeficientes se calculan sobre la marcha. Esto evita el almacenamiento de los coeficientes en una tabla de búsqueda (LUT), que requiere un tiempo de acceso para leer los coeficientes de la memoria.
Por lo tanto, la predicción se vuelve más eficiente y requiere menos demanda de memoria. Esto permite también una implementación de bajo coste de la predicción. Además, como los coeficientes de filtrado analítico {ci} son lineales en la posiciónpfraccionaria de la muestra, e implican operaciones de división por 2, la operación respectiva puede ser realizada eficientemente empleando operaciones rápidas de bits de bajo nivel. El tiempo respectivo para realizar la operación de bits y para calcular los coeficientes de filtrado es más corto que el tiempo para acceder a los coeficientes almacenados de la LUT. Por lo tanto, la latencia se reduce.
Además, la estructura analítica particular de los coeficientes de filtrado puede ofrecer la ventaja de una implementación de baja complejidad de la una o varias unidades de filtrado. Además, la respuesta del filtro (es decir, la respuesta en frecuencia) para diferentes posiciones de subpíxel es coherente con respecto a la magnitud y la fase, y evita los artefactos en la respuesta, en particular en las frecuencias altas. La linealidad de los coeficientes de filtrado puede suponer una ventaja para la reutilización del hardware.
En una realización, para el caso del filtro de interpolación de nitidez, un parámetro de intensidad S se define como sigue:
Este parámetro de intensidad S está definido para tener un valor máximo en la posición de medio píxel (p=16). Para las posiciones de subpíxel cercanas a los enteros, el parámetro de intensidad S tiene un valor menor. En la figura 10 se muestra una combinación a modo de ejemplo de filtros. El bloque F1 en esta figura representa un filtro lineal, con sus coeficientes definidos como sigue:
c0 = 64 - ( p << 1),
c1 = p <1.
El bloque F2 representa un filtro de paso alto con los siguientes coeficientes:
c0 = —1
Cl = 1
c2 = 1
c3= - 1
La salida del bloque F2 se multiplica por un parámetro de intensidad S. El resultado de la multiplicación se suma además con la salida del filtro lineal F1, y la suma resultante se normaliza.
La ecuación resultante para esta combinación (filtro equivalente de 4 tomas) se expresa de la siguiente manera:
c0 = -S
c1 = 64 -(p<<1) 5
c2= (p<<1) S
c3 = - S
Para esta ecuación, también es posible una implementación basada en LUT. La Tabla 5 indica los valores de los coeficientes.
Tabla 5 - Especificación del coeficiente de filtrado de interpolación intra predicción del filtro de nitidez
Como el filtro F2 tiene coeficientes negativos, el resultado normalizado se recorta aún más para que encaje en el rango de valores permitidos que podrían señalarse en el SPS o derivarse de la profundidad de bits de las muestras.
Una realización alternativa consiste en especificar una posición alternativa de la operación de recorte (véase la figura 11). Este diseño alternativo se basa en que el filtro lineal F1 no puede tener un valor de salida que sea inferior o superior a cualquiera de sus valores de entrada.
En una realización, el bloque de recorte funciona mediante los siguientes pasos.
El primer paso consiste en determinar si hay que establecer un umbral mínimo o un umbral máximo.
El segundo paso depende del resultado del primero. En concreto, se establece un umbral mínimo o máximo. El establecimiento de umbral mínimo se aplica cuando la entrada al bloque de recorte es negativa. En caso contrario, se aplica el establecimiento de umbral máximo. La salidavcdel segundo paso (y del bloque de recorte) podría definirse como sigue:
_ { V < 0,l?cm¡n
c _ (de lo contrario,vcmax.
Para un valor de entradavla salida del establecimiento de umbral mínimo vcmin se calcula como sigue:
El resultado del establecimiento de umbral máximo se calcula como sigue:
= min{y,<Pmax-m a x (refx,refx_1)>
cmax■),
donde pmax es el valor máximo del rango de valor permitido de la muestra.
Los valores refx y refx_! son muestras de referencia de entrada mostradas en la figura 11, que son una entrada del filtro lineal F1.
En una realización, en caso de que el recorte se realice después de la operación de multiplicación,vcse calcula como sigue:
En algunas realizaciones, el filtro F3 de la figura 9, el filtro F2 de la figura 10 y la figura 11 pueden no depender del parámetro de fase P. Estas realizaciones simplifican la implementación, ya que la salida de estos filtros puede ser la misma para cada fila de entrada de muestras predichas, por lo que este paso podría realizarse antes de iniciar el proceso de interpolación, por ejemplo, en la etapa del proceso de filtrado de muestras de referencia. Este enfoque aumenta el paralelismo y, por lo tanto, reduce la latencia del filtrado direccional. Otra modalidad alternativa (véase la figura 12) utiliza un filtro de potencia ajustable, no sólo un multiplicador de la salida del filtro. La figura 12A muestra el caso en que el recorte se realiza para la salida del filtro de paso alto F2. La figura 12B muestra el caso en el que el recorte se realiza para la salida de la salida normalizada de la combinación de F1 y F2. Ejemplos de filtros de intensidad ajustable podrían ser los siguientes: filtro bilateral, filtro de transformación inversa, etc.
Otra realización utiliza una resolución reducida dep,es decir, sólo se utilizan 16 de las 32 entradas. Esto se consigue, por ejemplo, poniendo a cero el bit menos significativo de p.
Tal como se muestra en las figuras 13-21, son posibles diferentes combinaciones de representaciones analíticas y basadas en LUT de los coeficientes de filtrado de interpolación tanto para la intra predicción como para la inter predicción. Por ejemplo, la figura 14 ilustra el caso de uso en el que se calculan los coeficientes para el filtro de interpolación de suavizado utilizado en el caso de la intra predicción, mientras que los coeficientes para otros filtros de interpolación tanto para la intra predicción como para la inter predicción se almacenan en varias LUT. Además, la especificación de la codificación de vídeo puede incluir tanto representaciones basadas en LUT como representaciones analíticas de los coeficientes de los filtros de interpolación para permitir diferentes implementaciones. Si se describen ambas representaciones, la basada en LUT y la analítica deben proporcionar coeficientes idénticos.
La figura 22 representa una implementación del método de cálculo de coeficientes mostrado en la figura 1. En la ecuación
un parámetro de intensidad S se define como sigue:
Esta implementación corresponde a la forma diferente de derivar el parámetro de intensidad S (denotado como un valor resultante de “q” en la figura 22). El valor de la posición de la muestra fraccionariapse envía al demultiplexor DEMUX que es controlado por la señal de entrada de 1 bit SEL, que se establece en el valor del 5° bit menos significativo dep(que tiene un índice de 4 si la indexación comienza desde cero). Si este bit es igual a “1”, la señal SEL indica que el valor depes mayor que 16 y se debe calcular el siguiente valor:q= - ( not (31 xor p) ),
donde “not” y “xor” son operaciones NOT y XOR a nivel de bits, respectivamente. Esta expresión equivale aq= (32 - p) y puede escribirse en los lenguajes de programación C / C++ como
q= -(~(0x1F * p)).
En caso contrario (es decir, si la señal de entrada SEL del demultiplexor DEMUX es igual a “0”), se omite cualquier cálculo y la señalpse transmite al multiplexor MUX como la señal q. La señal de salida r del multiplexor MUX se pasa al módulo que calcula el valor detla siguiente manera:
t=((r<< 1)r)>> 3,
donde “<<“ y “>>“ son operaciones de desplazamiento a la izquierda y a la derecha, respectivamente.
De hecho, este valor detes un parámetro de intensidad S. Es posible una mayor optimización realizando los pasos mostrados en la figura 22 en paralelo con el de los coeficientes de filtrado lineal:
z = (64 -(p<< 1))
Una vez calculados los valores dezy S, se pueden sumar entre sí para obtenercí = z S.
Aunque las realizaciones de la invención se han descrito principalmente sobre la base de la codificación de vídeo, cabe señalar que las realizaciones del sistema de codificación 10, el codificador 20 y el decodificador 30 (y correspondientemente el sistema 10) y las demás realizaciones descritas en el presente documento también pueden configurarse para el procesamiento o la codificación de imágenes fijas, es decir, el procesamiento o la codificación de una imagen individual independiente de cualquier imagen precedente o consecutiva como en la codificación de vídeo. En general, sólo las unidades de inter predicción 244 (codificador) y 344 (decodificador) pueden no estar disponibles en caso de que la codificación de procesamiento de imágenes se limite a una sola imagen 17. Todas las demás funcionalidades (también denominadas herramientas o tecnologías) del codificador de vídeo 20 y del decodificador de vídeo 30 pueden utilizarse igualmente para el procesamiento de imágenes fijas, por ejemplo, el cálculo del residuo 204/304, la transformación 206, la cuantificación 208, la cuantificación inversa 210/310, la transformación (inversa) 212/312, la partición 262/362, la inter predicción 254/354, y/o el filtrado en bucle 220, 320, y la codificación por entropía 270 y la decodificación por entropía 304.
Las realizaciones, por ejemplo, del codificador 20 y del decodificador 30, y las funciones descritas en el presente documento, por ejemplo, con referencia al codificador 20 y al decodificador 30, pueden implementarse en hardware, software, firmware o cualquier combinación de los mismos. Si se implementan en software, las funciones pueden almacenarse en un medio legible por ordenador o transmitirse a través de medios de comunicación como una o más instrucciones o código y ejecutarse por una unidad de procesamiento basada en hardware. Los medios legibles por ordenador pueden incluir medios de almacenamiento legibles por ordenador, que corresponden a un medio tangible como los medios de almacenamiento de datos, o medios de comunicación que incluyen cualquier medio que facilite la transferencia de un programa informático de un lugar a otro, por ejemplo, según un protocolo de comunicación. De este modo, los medios legibles por ordenador pueden corresponder, en general, a (1) medios tangibles de almacenamiento legibles por ordenador que no son transitorios o (2) un medio de comunicación tal como una señal u onda portadora. Los medios de almacenamiento de datos pueden ser cualquier medio disponible al que puedan acceder uno o más ordenadores o uno o más procesadores para recuperar instrucciones, código y/o estructuras de datos para la implementación de las técnicas descritas en la presente invención. Un producto de programa informático puede incluir un medio legible por ordenador.
A modo de ejemplo, y sin carácter limitativo, dichos medios de almacenamiento legibles por ordenador pueden comprender RAM, ROM, EEPROM, CD-ROM u otro tipo de almacenamiento en disco óptico, almacenamiento en disco magnético u otros dispositivos de almacenamiento magnético, memoria flash o cualquier otro medio que pueda utilizarse para almacenar el código de programa deseado en forma de instrucciones o estructuras de datos y al que pueda acceder un ordenador. Además, cualquier conexión se denomina adecuadamente medio legible por ordenador. Por ejemplo, si las instrucciones se transmiten desde un sitio web, un servidor u otra fuente remota utilizando un cable coaxial, un cable de fibra óptica, un par trenzado, una línea de abonado digital (DSL) o tecnologías inalámbricas como los infrarrojos, la radio y las microondas, entonces el cable coaxial, el cable de fibra óptica, el par trenzado, la DSL o las tecnologías inalámbricas como los infrarrojos, la radio y las microondas se incluyen en la definición de medio. Debe entenderse, sin embargo, que los medios de almacenamiento legibles por ordenador y los medios de almacenamiento de datos no incluyen conexiones, ondas portadoras, señales u otros medios transitorios, sino que se dirigen a medios de almacenamiento tangibles no transitorios. Los discos (disks o discs, en inglés), tal y como se utilizan en el presente documento, incluyen los discos compactos (Compact Disc, CD), los discos láser, los discos ópticos, los discos versátiles digitales (Digital Versatile Disc, DVD), los disquetes (floppy disks) y los discos Blu-ray, en los que los discos (disks) suelen reproducir los datos magnéticamente, mientras que los discos (discs) reproducen los datos ópticamente con láser. Las combinaciones de los anteriores también deben incluirse en el ámbito de los medios legibles por ordenador.
Las instrucciones pueden ser ejecutadas por uno o más procesadores, tal como uno o más procesadores de señales digitales (DSP), microprocesadores de propósito general, circuitos integrados de aplicación específica (ASIC), matrices lógicas programables en campo (FPGA), u otros circuitos lógicos integrados o discretos equivalentes. En consecuencia, el término “procesador”, tal como se utiliza en el presente documento, puede referirse a cualquiera de las estructuras anteriores o a cualquier otra estructura adecuada para la implementación de las técnicas descritas en el presente documento. Además, en algunos aspectos, la funcionalidad descrita en el presente documento puede proporcionarse dentro de módulos de hardware y/o software dedicados, configurados para la codificación y decodificación, o incorporados en un códec combinado. Asimismo, las técnicas podrían implementarse completamente en uno o más circuitos o elementos lógicos.
Las técnicas de esta invención pueden implementarse en una amplia variedad de dispositivos o aparatos, incluyendo un teléfono inalámbrico, un circuito integrado (Integrated Circuit, IC) o un conjunto de IC (por ejemplo, un conjunto de chips). En la presente invención se describen diversos componentes, módulos o unidades para destacar los aspectos funcionales de los dispositivos configurados para llevar a cabo las técnicas dadas a conocer, pero no requieren necesariamente la realización de diferentes unidades de hardware. Más bien, tal como se ha descrito anteriormente, diversas unidades pueden ser combinadas en una unidad de hardware de códec o ser proporcionadas por una colección de unidades de hardware interoperativas, incluyendo uno o más procesadores tal como se ha descrito anteriormente, junto con un software y/o firmware adecuado.
Resumiendo, la presente invención se refiere a la intra o inter predicción para la codificación y decodificación de vídeo. Para ello, un aparato y unos métodos obtienen una muestra de referencia y un valor de desplazamiento de subpíxel. Un filtro de interpolación de subpíxeles de 4 tomas se utiliza para filtrar la muestra de referencia y obtener un valor de muestra predicho. Los coeficientes de filtrado del filtro de interpolación de subpíxeles de 4 tomas se definen en función del valor del desplazamiento de subpíxeles, tal como por ejemplo c0 = 16 — , siendopuna parte fraccionaria del valor del desplazamiento del subpíxel.
Lista de signos de referencia
Figura 1A
10 sistema de codificación de vídeo
12 dispositivo de origen
13 canal de comunicación
14 dispositivo de destino
16 fuente de la imagen
17 datos de la imagen
18 preprocesador
19 datos de imágenes preprocesados
20 codificador de vídeo
21 datos de imagen codificados
22 interfaz de comunicación
28 interfaz de comunicación
30 decodificador de vídeo
31 datos de imagen decodificados
32 postprocesador
33 datos de imagen postprocesados
34 dispositivo de visualización
Figura 1B
40 sistema de codificación de vídeo
41 dispositivo o dispositivos de imagen
42 antena
43 procesador o procesadores
44 almacenamiento o almacenamientos de memoria
45 dispositivo de visualización
46 circuitos de procesamiento
20 codificador de vídeo
30 decodificador de vídeo
Figura 2
17 imagen (datos)
19 imágenes preprocesadas (datos)
20 codificador
21 datos de imagen codificados
201 entrada (interfaz)
204 cálculo del residuo [unidad o paso]
206 unidad de procesamiento mediante transformada
208 unidad de cuantificación
210 unidad de cuantificación inversa
212 unidad de procesamiento mediante transformada inversa
214 unidad de reconstrucción
220 unidad de filtro de bucle
230 memoria intermedia de imágenes decodificadas (DPB)
260 Unidad de selección de modo
270 unidad de codificación por entropía
272 salida (interfaz)
244 unidad de inter predicción
254 unidad de intra predicción
262 unidad de partición
203 bloque de imagen
205 bloque residual
213 bloque residual reconstruido
215 bloque reconstruido
221 bloque filtrado
231 imagen decodificada
265 bloque de predicción
266 elementos de sintaxis
207 coeficientes de transformación
209 coeficientes cuantificados
211 coeficientes descuantificados
Figura 3
21 datos de imagen codificados
30 decodificador de vídeo
304 unidad de decodificación por entropía
309 coeficientes cuantificados
310 unidad de cuantificación inversa
311 coeficientes descuantificados
312 unidad de procesamiento mediante transformada inversa
313 bloque residual reconstruido
314 unidad de reconstrucción
315 bloque reconstruido
320 filtro de bucle
321 bloque filtrado
330 memoria intermedia de imágenes decodificadas, DBP
331 imagen decodificada
360 unidad de aplicación de modo
365 bloque de predicción
366 elementos de sintaxis
344 unidad de inter predicción
354 unidad de intra predicción
Figura 4
400 dispositivo de codificación de vídeo
410 puertos de ingreso/puertos de entrada
420 unidades receptoras Rx
430 procesador
440 unidades transmisoras Tx
450 puertos de egreso/puertos de salida
460 memoria
470 módulo de codificación
Figura 5
500 dispositivo de origen o de destino
502 procesador
504 memoria
506 código y datos
508 sistema operativo
510 programas de aplicación
512 bus
518 pantalla
Figura 23
2300 Diagrama de flujo del método de procesamiento de intra/interpretación Figura 24
2400 Diagrama de flujo del método de codificación de vídeo
Figura 25
2500 módulo de intra/inter procesamiento
2510 unidad de obtención de muestras de referencia
2520 unidad de obtención de valor de desplazamiento de subpíxel
2530 filtro de interpolación de subpíxeles
Figura 26
2600 módulo de codificación de vídeo
2610 unidad de procesamiento de intra predicción
2620 filtro de interpolación de subpíxeles

Claims (5)

  1. REIVINDICACIONES 1. Un método para el procesamiento de intra o inter predicción de un fotograma de vídeo, que comprende los pasos de: obtener al menos 4 muestras de referencia; obtener un valor de un desplazamiento de subpíxel; y filtrar, mediante un filtro de interpolación de subpíxeles de 4 tomas, las al menos 4 muestras de referencia, para obtener al menos un valor de muestra predicho, caracterizado por que los coeficientes de filtrado de interpolación de subpíxeles de 4 tomas cumplen las siguientes ecuaciones:
  2. en dondepes una posición de muestra fraccionaria 1/32 del valor del desplazamiento del subpíxel, estandopen el rango de 0 a 31, y siendoc0,q , c2 yc3los coeficientes de filtrado del filtro de interpolación de subpíxeles de 4 tomas. 2. El método según la reivindicación 1, en el que los coeficientes de filtrado del filtro de interpolación de subpíxeles de 4 tomas están definidos en una tabla como la siguiente:
  3. 3. Un aparato para el procesamiento de intra predicción o inter predicción de un fotograma de vídeo, que incluye: una unidad de obtención de muestra de referencia, configurada para obtener al menos 4 muestras de referencia; una unidad de obtención de valor de desplazamiento de subpíxel, configurada para obtener un valor de un desplazamiento de subpíxel; y un filtro de interpolación de subpíxeles de 4 tomas, configurado para filtrar las al menos 4 muestras de referencia para obtener al menos un valor de muestra predicho, caracterizado por que los coeficientes de filtrado del filtro de interpolación de subpíxeles de 4 tomas cumplen las siguientes ecuaciones:
  4. En dondepes una parte fraccionaria 1/32 del valor del desplazamiento de subpíxel, estandopen el rango de 0 a 31, y siendoc0, c3,c2 yc3los coeficientes de filtrado del filtro de interpolación de subpíxeles de 4 tomas. 4. El aparato según la reivindicación 3, en el que los coeficientes de filtrado del filtro de interpolación de subpíxeles de 4 tomas están definidos como sigue:
  5. 5. Un producto de programa informático que comprende un código de programa para realizar el método según la reivindicación 1 o 2.
ES19901364T 2018-12-21 2019-12-20 Método y aparato de filtrado de interpolación para la codificación predictiva Active ES2983321T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201862784319P 2018-12-21 2018-12-21
PCT/RU2019/050251 WO2020130887A1 (en) 2018-12-21 2019-12-20 Method and apparatus of interpolation filtering for predictive coding

Publications (1)

Publication Number Publication Date
ES2983321T3 true ES2983321T3 (es) 2024-10-22

Family

ID=71102388

Family Applications (1)

Application Number Title Priority Date Filing Date
ES19901364T Active ES2983321T3 (es) 2018-12-21 2019-12-20 Método y aparato de filtrado de interpolación para la codificación predictiva

Country Status (18)

Country Link
US (3) US11877013B2 (es)
EP (2) EP4358513A3 (es)
JP (3) JP7293361B2 (es)
KR (2) KR102762723B1 (es)
CN (2) CN113556566B (es)
AU (2) AU2019401811B2 (es)
BR (1) BR112021000657A2 (es)
CA (1) CA3124104A1 (es)
ES (1) ES2983321T3 (es)
HU (1) HUE067128T2 (es)
IL (1) IL284189B2 (es)
MX (2) MX2021007537A (es)
PL (1) PL3891980T3 (es)
PT (1) PT3891980T (es)
SG (1) SG11202106487VA (es)
UA (1) UA129290C2 (es)
WO (1) WO2020130887A1 (es)
ZA (2) ZA202104428B (es)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ES2983321T3 (es) * 2018-12-21 2024-10-22 Huawei Tech Co Ltd Método y aparato de filtrado de interpolación para la codificación predictiva
GB2586484B (en) * 2019-08-20 2023-03-08 Canon Kk A filter
WO2023014478A1 (en) * 2021-08-04 2023-02-09 Ofinno, Llc Mode dependent intra smoothing
EP4487225A4 (en) * 2022-03-04 2026-03-11 Guangdong Oppo Mobile Telecommunications Corp Ltd INTEGER CONVERSION FOR INTERPOLATION FILTER DESIGN IN VIDEO ENCODING

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8811484B2 (en) * 2008-07-07 2014-08-19 Qualcomm Incorporated Video encoding by filter selection
US10045046B2 (en) * 2010-12-10 2018-08-07 Qualcomm Incorporated Adaptive support for interpolating values of sub-pixels for video coding
KR101956284B1 (ko) * 2011-06-30 2019-03-08 엘지전자 주식회사 보간 방법 및 이를 이용한 예측 방법
JP6341426B2 (ja) 2012-09-10 2018-06-13 サン パテント トラスト 画像復号化方法および画像復号化装置
CN105052134B (zh) * 2012-10-01 2019-09-03 Ge视频压缩有限责任公司 一种可伸缩视频编解码方法及计算机可读存储介质
US9357212B2 (en) * 2012-12-07 2016-05-31 Qualcomm Incorporated Advanced residual prediction in scalable and multi-view video coding
US9451254B2 (en) * 2013-07-19 2016-09-20 Qualcomm Incorporated Disabling intra prediction filtering
US10462480B2 (en) * 2014-12-31 2019-10-29 Microsoft Technology Licensing, Llc Computationally efficient motion estimation
EP3306935A4 (en) * 2015-06-05 2019-01-02 Intellectual Discovery Co., Ltd. Image encoding and decoding method and image decoding device
KR102367708B1 (ko) 2015-11-17 2022-02-24 후아웨이 테크놀러지 컴퍼니 리미티드 비디오 코딩 방법 및 장치
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
US10382781B2 (en) * 2016-09-28 2019-08-13 Qualcomm Incorporated Interpolation filters for intra prediction in video coding
US10341659B2 (en) * 2016-10-05 2019-07-02 Qualcomm Incorporated Systems and methods of switching interpolation filters
US10904565B2 (en) * 2017-06-23 2021-01-26 Qualcomm Incorporated Memory-bandwidth-efficient design for bi-directional optical flow (BIO)
KR102424189B1 (ko) * 2018-02-14 2022-07-21 후아웨이 테크놀러지 컴퍼니 리미티드 적응형 보간 필터
JP7250917B2 (ja) * 2018-10-06 2023-04-03 ホアウェイ・テクノロジーズ・カンパニー・リミテッド 補間フィルタを使用するイントラ予測のための方法および装置
ES2983321T3 (es) * 2018-12-21 2024-10-22 Huawei Tech Co Ltd Método y aparato de filtrado de interpolación para la codificación predictiva

Also Published As

Publication number Publication date
CN113556566B (zh) 2022-06-10
PL3891980T3 (pl) 2024-08-26
ZA202104428B (en) 2026-01-28
KR102762723B1 (ko) 2025-02-04
AU2024200360B2 (en) 2025-06-19
AU2019401811A1 (en) 2021-07-15
EP4358513A2 (en) 2024-04-24
PT3891980T (pt) 2024-07-22
JP7827896B2 (ja) 2026-03-10
EP3891980A1 (en) 2021-10-13
NZ777503A (en) 2023-10-27
EP4358513A3 (en) 2024-07-17
CN113556566A (zh) 2021-10-26
HUE067128T2 (hu) 2024-10-28
AU2019401811B2 (en) 2023-11-23
US11877013B2 (en) 2024-01-16
US20210337238A1 (en) 2021-10-28
SG11202106487VA (en) 2021-07-29
CN113170119A (zh) 2021-07-23
MX2024010829A (es) 2024-09-17
EP3891980A4 (en) 2022-06-22
US20240146974A1 (en) 2024-05-02
JP7618734B2 (ja) 2025-01-21
UA129290C2 (uk) 2025-03-12
US12348788B2 (en) 2025-07-01
JP2022514922A (ja) 2022-02-16
IL284189B1 (en) 2024-11-01
US20250343954A1 (en) 2025-11-06
EP3891980B1 (en) 2024-05-08
IL284189A (en) 2021-08-31
JP2023118725A (ja) 2023-08-25
KR20250020720A (ko) 2025-02-11
MX2021007537A (es) 2021-09-28
JP7293361B2 (ja) 2023-06-19
KR20210100183A (ko) 2021-08-13
BR112021000657A2 (pt) 2021-04-13
JP2025069151A (ja) 2025-04-30
ZA202501701B (en) 2025-11-26
IL284189B2 (en) 2025-03-01
CA3124104A1 (en) 2020-06-25
WO2020130887A1 (en) 2020-06-25
AU2024200360A1 (en) 2024-02-08

Similar Documents

Publication Publication Date Title
ES2989421T3 (es) Un codificador, un decodificador y métodos correspondientes para la intrapredicción
ES2996341T3 (en) Video processing method, video processing apparatus, encoder, decoder, medium and computer program
ES2993252T3 (en) An encoder, a decoder and corresponding methods using ibc merge list
ES3014838T3 (en) Method for deriving interpolation filter index for a current block; devices for video compression
JP7508645B2 (ja) モードおよびサイズに依存したブロックレベル制限の方法および装置
CN113196748B (zh) 帧内预测方法及相关装置
ES2994111T3 (en) Method, computer program product and device for decoding cbf flags
ES2983321T3 (es) Método y aparato de filtrado de interpolación para la codificación predictiva
US20210337194A1 (en) Method and apparatus of sharpening interpolation filtering for predictive coding
ES2992660T3 (en) Method and apparatus for chroma intra prediction in video coding
CN112088534B (zh) 一种帧间预测的方法、装置、设备及存储介质
US11849107B2 (en) Method and apparatus of quantizing coefficients for matrix-based intra prediction technique
CA3144797A1 (en) Method for computing position of integer grid reference sample for block level boundary sample gradient computation in bi-predictive optical flow computation and bi-predictive correction
ES3001382T3 (en) Encoder, decoder and corresponding methods using dct2 enabled high level flag
WO2021126017A2 (en) Method and apparatus of subsample interpolation filtering
WO2020263132A1 (en) Method and apparatus for lossless still picture and video coding
EP3970377B1 (en) Method and apparatus of quantizing coefficients for matrix-based intra prediction technique
EP4022908A1 (en) Method and apparatus of simplified geometric merge mode for inter prediction
EP4029249A2 (en) Method of generating weighting masks
CN113316939A (zh) 一种标志位的上下文建模方法及装置
WO2021040574A1 (en) Method and apparatus of still picture and video coding with shape-adaptive resampling of residual blocks
WO2020251418A2 (en) Method and apparatus of slice-level signaling for bi-directional optical flow and decoder side motion vector refinement
WO2021066680A1 (en) Method and apparatus of signaling for partitioning modes
HK40052995A (en) Method and apparatus of interpolation filtering for predictive coding
HK40052995B (en) Method and apparatus of interpolation filtering for predictive coding