[go: up one dir, main page]

ES2984321T3 - Método y aparato de restricciones a nivel de bloque dependientes de modo y tamaño - Google Patents

Método y aparato de restricciones a nivel de bloque dependientes de modo y tamaño Download PDF

Info

Publication number
ES2984321T3
ES2984321T3 ES19898708T ES19898708T ES2984321T3 ES 2984321 T3 ES2984321 T3 ES 2984321T3 ES 19898708 T ES19898708 T ES 19898708T ES 19898708 T ES19898708 T ES 19898708T ES 2984321 T3 ES2984321 T3 ES 2984321T3
Authority
ES
Spain
Prior art keywords
intra prediction
block
sample value
prediction mode
mode
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
ES19898708T
Other languages
English (en)
Inventor
Alexey Konstantinovich Filippov
Vasily Alexeevich Rufitskiy
Jianle Chen
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 ES2984321T3 publication Critical patent/ES2984321T3/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/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/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/182Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a pixel
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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
    • H04N19/82Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • H04N19/86Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving reduction of coding artifacts, e.g. of blockiness
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • H04N19/86Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving reduction of coding artifacts, e.g. of blockiness
    • H04N19/865Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving reduction of coding artifacts, e.g. of blockiness with detection of the former encoding block subdivision in decompressed video
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • H04N19/87Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving scene cut or scene change detection in combination with video compression

Landscapes

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

Abstract

Un método para predecir intra un bloque de una imagen, que comprende, para una muestra de una pluralidad de muestras del bloque, determinar un valor de muestra previsto a partir de uno o más valores de muestra de referencia mediante predicción intra utilizando un modo de predicción intra seleccionado de entre un modo DC, un modo planar y un modo angular de predicción intra; determinar un primer peso basado en el modo de predicción intra y uno de entre la altura, el ancho del bloque o ambos; determinar un segundo peso similar al primer peso; calcular un valor adicional como una suma ponderada de un valor de muestra de referencia superior y un valor de muestra de referencia izquierda ponderando dichos valores; multiplicar el valor de muestra previsto por un factor de ponderación de muestra, dando como resultado un valor de muestra previsto ponderado; añadir el valor adicional al valor de muestra previsto ponderado, dando como resultado un valor de muestra previsto modificado no normalizado; y normalizar el valor de muestra previsto modificado no normalizado mediante un desplazamiento aritmético a la derecha de una representación entera del valor de muestra previsto modificado no normalizado, dando como resultado un valor de muestra previsto modificado normalizado. (Traducción automática con Google Translate, sin valor legal)

Description

DESCRIPCIÓN
Método y aparato de restricciones a nivel de bloque dependientes de modo y tamaño
Campo técnico
Las modalidades de la presente solicitud (descripción) se refieren en general al campo del procesamiento de imágenes y, más particularmente, a la intra predicción con una combinación de predicción dependiente de la posición.
Antecedentes
La codificación de video (codificación y decodificación de video) se utiliza en una amplia gama de aplicaciones de video digital, por ejemplo, la difusión de televisión digital, la transmisión de video a través de Internet y redes móviles, las aplicaciones de conversación 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 video y las videocámaras de aplicaciones de seguridad. La cantidad de datos de video necesaria para representar incluso un video relativamente corto puede ser considerable, lo que puede dar lugar a dificultades cuando los datos se van a transmitir o comunicar de otra manera a través de una red de comunicaciones con una capacidad de ancho de banda limitada. Por ello, los datos de video suelen comprimirse antes de ser comunicados a través de las redes de telecomunicaciones actuales. El tamaño de un video también puede ser un problema cuando el video se almacena en un dispositivo de almacenamiento porque los recursos de memoria pueden ser limitados. Los dispositivos de compresión de video suelen utilizar software y/o hardware en la fuente para codificar los datos de video antes de su transmisión o almacenamiento, disminuyendo así la cantidad de datos necesarios para representar las imágenes de video digital. Los datos comprimidos son recibidos en el destino por un dispositivo de descompresión de video que decodifica los datos de video. Con unos recursos de red limitados y una demanda cada vez mayor de una mayor calidad de video, 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.
GEERT VAN DER AUWERA ET AL: “Description of Core Experiment 3 (CE3): Intra Prediction and Mode Coding”, 10. REUNIÓN JVET; 20180410 - 20180420; SAN DIEGO; (THE JOINT VIDEO EXPLORATION TEAM OF ISO/IEC JTC1/SC29/WG11 Y ITU-T SG.16), no. JVET-J1023 da a conocer un método de cálculo particular para la intra predicción dependiente de la posición (Position Dependent Intra Prediction Combination, PDPC) en la sección 6.4.
La solicitud de patente estadounidense (US 2017/0272748A1) da a conocer un método para determinar los parámetros de la PDPC.
Compendio
La presente invención se establece mediante el conjunto de reivindicaciones adjuntas. A continuación, partes de la descripción y los dibujos que se refieren a realizaciones, ejemplos o implementaciones, que no están cubiertas por las reivindicaciones, no se presentan como realizaciones de la invención, sino como ejemplos ilustrativos útiles para comprender la invención.
En vista de los problemas mencionados anteriormente, la presente invención da a conocer una solución para mitigar o resolver el problema mencionado anteriormente.
Las realizaciones de la presente solicitud dan a conocer aparatos y métodos para la intra predicción de un bloque de una imagen según las reivindicaciones independientes.
Los objetos anteriores y otros se consiguen mediante el objeto de las reivindicaciones independientes. Otras formas de implementación se desprenden de las reivindicaciones dependientes, la descripción y las figuras.
La presente invención da a conocer:
un método de intra predicción de un bloque de una imagen según la reivindicación 1; el método se utiliza para codificación o decodificación, comprendiendo el método para una muestra de una pluralidad de muestras del bloque:
determinar un valor de muestra predicho a partir de uno o más valores de muestra de referencia mediante la intra predicción utilizando un modo de intra predicción seleccionado de entre un modo de intra predicción DC, un modo de intra predicción planar o un modo de intra predicción angular;
determinar una primera ponderación basándose en el modo de intra predicción y en una de la altura del bloque, la anchura del bloque, o ambas;
determinar una segunda ponderación basándose en el modo de intra predicción y en una de la altura del bloque, la anchura del bloque, o ambas;
calcular un valor adicional como suma ponderada de un valor de muestra de referencia superior y un valor de muestra de referencia izquierdo ponderando el valor de muestra de referencia superior con la primera ponderación y el valor de muestra de referencia izquierdo con la segundo ponderación;
multiplicar el valor de la muestra predicho, por un factor de ponderación de la muestra, lo que da lugar a un valor de la muestra predicho ponderado;
agregar el valor adicional al valor ponderado de la muestra predicha, dando como resultado un valor de la muestra predicha modificado no normalizado; y
normalizar el valor de la muestra predicha modificada no normalizada mediante un desplazamiento aritmético a la derecha de una representación entera del valor de la muestra predicha modificada no normalizada, dando como resultado un valor de la muestra predicha modificada normalizada.
En este caso, en particular, la primera ponderación y la segunda ponderación pueden ser diferentes.
En una posible forma de implementación del método según el propio aspecto anterior, en la que el método comprende intra predecir el bloque para la imagen, comprende cada muestra de la pluralidad de muestras del bloque.
En una posible forma de implementación del método según cualquier realización anterior del aspecto anterior o del propio aspecto anterior, en la que
determinar la primera ponderación y determinar la segunda ponderación comprenden determinar un factor de escalado basándose en el modo de intra predicción y en una de la altura del bloque, la anchura del bloque o ambas; en donde la primera ponderación y la segunda ponderación se determinan basándose en el factor de escalado, respectivamente.
En una posible forma de implementación del método según cualquier realización del aspecto anterior o del propio aspecto anterior; en la que
determinar la primera ponderación comprende determinar un factor de escalado vertical, designado nScaleY, basándose en la altura del bloque y el modo de intra predicción, donde la primera ponderación se determina basándose en el factor de escalado vertical, nScaleY;
determinar la segunda ponderación comprende determinar un factor de escalado horizontal, designado, nScaleX, basándose en la anchura del bloque y el modo de intra predicción, en donde la segunda ponderación se determina basándose en el factor de escalado horizontal, nScaleX, normalizar el valor de muestra predicho no normalizado mediante un desplazamiento aritmético a la derecha de una representación entera del valor de muestra predicho no normalizado, dando como resultado un valor de muestra predicho normalizado.
En este caso, la determinación de la primera ponderación comprende determinar un factor de escalado vertical, mientras que determinar la segunda ponderación comprende determinar un factor de escalado horizontal, donde debe entenderse que dependiendo del tipo de los modos de intra predicción estos factores pueden ser diferentes.
En una posible forma de implementación del método según cualquier realización anterior del aspecto anterior o del propio aspecto anterior, en la que nScaleX y nScaleY se obtienen dependiendo de un índice de clase de modo, respectivamente, en el que el índice de clase de modo se obtiene utilizando un grupo de modos de intra predicción.
En una posible forma de implementación del método según cualquier realización anterior del aspecto anterior o del propio aspecto anterior, en la que el índice de clase de modo se mapea al grupo específico de modos de intra predicción según una de las siguientes tablas:
o
o
o
donde DC_IDX representa el modo DC que tiene un índice de modo de intra predicción de 1, HOR_IDX y VER_IDX representan los modos horizontal y vertical que tienen índices de modo de intra predicción de 18 y 50, respectivamente, VDIA_IDX representa el modo diagonal que tiene un índice de modo de intra predicción de 66.
En el presente documento se muestran diferentes mapeos de grupos de modos de intra predicción para diferentes clases.
En una posible forma de implementación del método según cualquier realización anterior del aspecto anterior o del propio aspecto anterior, en donde nScaleX y nScaleY se obtienen según el siguiente mapeo:
donde nTbW y nTbH designan la anchura y la altura del bloque predicho, respectivamente, y “>>“ designa una operación de desplazamiento a la derecha;
donde Floor es la función floor, Log2 devuelve el logaritmo natural de un número en base 2, Min devuelve el menor de sus argumentos, y “>>“ designa una operación de desplazamiento a la derecha.
En una posible forma de implementación del método según cualquier realización anterior del aspecto anterior o del propio aspecto anterior, en la que el índice de clase de modo se mapea al grupo específico de modos de predicción intra espacial de acuerdo con la siguiente tabla:
En una posible forma de implementación del método según cualquier realización anterior del aspecto anterior o del propio aspecto anterior, en la que nScaleX y nScaleY se obtienen según el siguiente mapeo:
donde nTbW y nTbH designan la anchura y la altura del bloque predicho, respectivamente, y “>>“ designa una operación de desplazamiento a la derecha;
donde Floor es la función floor, Log2 devuelve el logaritmo natural de un número en base 2, Min devuelve el menor de sus argumentos, y “>>“ designa una operación de desplazamiento a la derecha;
en donde invAngle es el parámetro de ángulo inverso que se obtiene usando intraPredAngle como sigue:
en donde intraPredAngle es el parámetro de ángulo que se obtiene a partir del modo de intra predicción, dado por la variable predModeIntra, utilizando una tabla de búsqueda, LUT.
En una posible forma de implementación del método según cualquier realización del aspecto anterior o del propio aspecto anterior, en la que la LUT viene dada por la siguiente tabla
En una posible forma de implementación del método según cualquier realización anterior del aspecto anterior o del propio aspecto anterior, en la que la normalización del valor de muestra predicho modificado no normalizado comprende calcular el valor de muestra predicho como
donde
P(x , y )es el valor de la muestra de predicción modificada no normalizada,
Rx,-i, R-i,yrepresentan los valores de las muestras de referencia más cercanas situadas por encima y a la izquierda de cada muestra,
wL = V >> (x << 1) >> nScaleX)es un factor de ponderación horizontal,
wT = V >> (y << 1) >> nScaleY)es un factor de ponderación vertical,
Ves un valor base;
x es una coordenada horizontal de cada muestra, e
yes una coordenada vertical de la muestra;
donde clip1Cmp se ajusta como sigue:
en caso de que cIdx sea igual a 0, clip1Cmp se establece igual a Clip1Y;
de otra cosa, clip1Cmp se establece igual a Clip1C;
donde cIdx es una variable que especifica el componente de color del bloque actual; y
Clip1y(x) = Clip3 (0,(1 << BitDepthy) - 1, x)
Clip1o(x) = Clip3 (0,(1 << BitDepthc) - 1, x)
donde BitDepth<y>es la profundidad de bits de las muestras de luma.
donde BitDepth<c>es la profundidad de bits de las muestras de luma.
En una posible forma de implementación del método según el propio aspecto anterior, en la que para un modo planar,wTL = 0,mientras que para el modo horizontalwTL = wTy para el modo verticalwTL = wL.
En una posible forma de implementación del método según cualquier realización anterior del aspecto anterior o del propio aspecto anterior, en la que la normalización del valor de muestra predicho modificado no normalizado comprende calcular el valor de muestra predicho modificado normalizado como
donde
P(x,y)es el valor de muestra predicho modificado normalizado,
P(x,y)es el valor de muestra predicho modificado no normalizado,
R<x,-1>, R<-1 ,y>representan los valores de las muestras de referencia más cercanas situadas por encima y a la izquierda de cada muestra,
wL=V>> (( x << 1 ) >>nScaleX)es un factor de ponderación horizontal,
wT=V>> (( y << 1 ) >>nScaleY)es un factor de ponderación vertical,
x es una coordenada horizontal de cada muestra, e
yes una coordenada vertical de la muestra.
En una posible forma de implementación del método según cualquier realización anterior del aspecto anterior o del propio aspecto anterior, en la que cada muestra no se actualiza
si una suma de la anchura y la altura del bloque, dadas en muestras, respectivamente, es superior a 64 muestras, y
cualquiera del modo de intra predicción es no diagonal o el modo de intra predicción es un modo de intra predicción planar.
En una posible forma de implementación del método según cualquier realización anterior del aspecto anterior o del propio aspecto anterior, en la que intraPredMode es no diagonal si intraPredMode no es igual a 2 o VDIA_IDX y una de las siguientes es verdadera: intraPredMode no es menor que VDIA_IDX - numModes o intraPredMode no es mayor que 2 numModes.
En una posible forma de implementación del método según cualquier realización anterior del aspecto anterior o del propio aspecto anterior, la imagen forma parte de una secuencia de vídeo.
En una posible forma de implementación del método según cualquier realización anterior del aspecto anterior o del propio aspecto anterior, comprendiendo además
agregar un valor residual al valor de la muestra normalizado y modificado, lo que da lugar a un valor de la muestra reconstruido.
La presente invención da a conocer, además, un codificador (20) según la reivindicación 14, que comprende una circuitería de procesamiento para llevar a cabo el método según cualquier realización anterior del aspecto anterior o del propio aspecto anterior.
La presente invención da a conocer, además, un decodificador (30) según la reivindicación 15, que comprende una circuitería de procesamiento para llevar a cabo el método según cualquier realización anterior del aspecto anterior o del propio aspecto anterior.
La presente invención da a conocer, además, un programa informático según la reivindicación 16, que comprende un código de programa para llevar a cabo el método según cualquier realización anterior del aspecto anterior o del propio aspecto anterior.
La presente invención puede dar a conocer, además, un producto de programa informático que comprende un código de programa para realizar el método según cualquier realización anterior de cualquier aspecto anterior o cualquier propio aspecto anterior.
La presente invención da a conocer, además, un decodificador según la reivindicación 17, 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 la que la programación, cuando es ejecutada por los procesadores, configura el decodificador para llevar a cabo el método según cualquier realización del aspecto anterior o el propio aspecto anterior.
La presente invención da a conocer, además, un codificador, según la reivindicación 18, 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 la que la programación, cuando es ejecutada por los procesadores, configura el codificador para llevar a cabo el método según cualquier realización anterior del aspecto anterior o el propio aspecto anterior.
Los detalles de una o más implementaciones se exponen en las figuras adjuntas y en la descripción que sigue. Otras características, objetos y ventajas serán evidentes a partir de la descripción, de las figuras y de las reivindicaciones.
Breve descripción de las figuras
Las siguientes implementaciones de la invención se describen con más detalle con referencia a las figuras y dibujos adjuntos, en los que:
la figura 1A ilustra de forma esquemática un ejemplo de un sistema de codificación de vídeo configurado para implementar realizaciones de la invención;
la figura 1B ilustra de forma esquemática otro ejemplo de sistema de codificación de vídeo configurado para implementar realizaciones de la invención;
la figura 2 ilustra de forma esquemática un ejemplo de codificador de vídeo configurado para implementar realizaciones de la invención;
la figura 3 ilustra de forma esquemática un ejemplo de estructura de un decodificador de vídeo configurado para implementar realizaciones de la invención;
la figura 4 ilustra de forma esquemática un ejemplo de aparato de codificación o de decodificación; la figura 5 ilustra de forma esquemática otro ejemplo de aparato de codificación o de decodificación; la figura 6 ilustra de forma esquemática las direcciones de intra predicción angular y los modos de intra predicción asociados en HEVC;
la figura 7 ilustra de forma esquemática las direcciones angulares de intra predicción y los modos de intra predicción asociados en JEM;
la figura 8 ilustra de forma esquemática las direcciones angulares de intra predicción y los modos de intra predicción asociados en el proyecto de especificación VTM-3.0 y VVC v.3;
la figura 9 ilustra de forma esquemática las direcciones de intra predicción angular y los modos de intra predicción asociados en el borrador de la especificación VTM-3.0 y VVC v.3;
la figura 10 ilustra de forma esquemática un ejemplo de ponderaciones de PDPC en modo DC para las posiciones (0, 0) y (1, 0) dentro de un bloque de 4x4;
la figura 11 ilustra de forma esquemática un ejemplo de intra predicción de un bloque a partir de muestras de referencia del lado de referencia principal;
la figura 12 ilustra un ejemplo de ponderaciones de PDPC en modo DC para las posiciones (0, 0) y (1, 0) dentro de un bloque de 4x4;
la figura 13 ilustra de forma esquemática un ejemplo de un método para determinar un factor de escalado vertical y horizontal;
la figura 14 ilustra de forma esquemática un ejemplo de un método para determinar un factor de escalado vertical y horizontal;
la figura 15 ilustra de forma esquemática un ejemplo alternativo de un método para determinar un factor de escalado vertical y horizontal.
En lo siguiente, signos de referencia idénticos se refieren a características idénticas o al menos funcionalmente equivalentes, si no se especifica explícitamente otra cosa.
Descripción detallada de las realizaciones
En la siguiente descripción, se hace referencia a las figuras adjuntas, que forman parte de la invención, y que muestran, a modo de ilustración, aspectos específicos de las realizaciones de la invención o aspectos específicos en los que pueden utilizarse las realizaciones de la presente invención. Se entiende que las implementaciones de la invención pueden utilizarse en otros aspectos y comprender cambios estructurales o lógicos no representados en las figuras. La siguiente descripción detallada, por lo tanto, no debe tomarse en un sentido limitativo, y el alcance de la presente invención está definido por las reivindicaciones adjuntas. Por ejemplo, se entiende que una invención en relación con un método descrito también puede ser válida para un dispositivo o sistema correspondiente configurado para 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 realiza uno o la pluralidad de pasos, o una pluralidad de unidades que realizan cada 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 dicho 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 implementaciones y/o aspectos a modo de ejemplo descritos en el presente documento pueden combinarse entre sí, a menos que se indique específicamente otra cosa.
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 “dibujo” 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 comprender 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 implementaciones 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 reconstruirse, 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 reconstruirse 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 por transformación 2D para aplicar la cuantificación en el dominio de la transformación). 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/por procesar) para obtener un bloque residual, transformando el bloque residual y cuantificando el bloque residual en el dominio de la transformación 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 implementaciones 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 de acuerdo con diversos ejemplos descritos en la presente solicitud.
Como se muestra en la figura 1A, el sistema de codificación 10 comprende un dispositivo de origen 12 configurado para proporcionar datos de imagen codificados 21, por ejemplo, a un dispositivo de destino 14 para decodificar los datos de imagen codificados 13.
El dispositivo de origen 12 comprende un codificador 20, y puede comprender adicionalmente, 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 generador de imágenes, por ejemplo un procesador gráfico de 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, AR)). La fuente de imágenes 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 la imagen preprocesados 19. El preprocesamiento realizado por el preprocesador 18 puede, por ejemplo, comprender ajuste, conversión del formato de color (por ejemplo, de RGB a YCbCr), corrección del color o 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 post-procesador 32 (o unidad de post-procesamiento 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 directa 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 ellas.
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 de transmisión correspondiente y/o desempaquetado para obtener los datos de imagen codificados 21.
Tanto la interfaz de comunicación 22 como la interfaz de comunicación 28 pueden configurarse como interfaces de comunicación unidireccionales, como se indica en la flecha del canal de comunicación 13 de la figura 1A que está orientada desde el dispositivo de origen 12 al dispositivo de destino 14, o como interfaces de comunicación bidireccionales, y pueden configurarse, 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 imágenes codificadas.
El decodificador 30 está configurado para recibir los datos de imagen codificados 21 y proporcionar datos de imagen decodificada 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 post-procesador 32 del dispositivo de destino 14 está configurado para post-procesar los datos de imagen decodificada 31 (también llamados datos de imagen reconstruida), por ejemplo, la imagen decodificada 31, para obtener datos de imagen post-procesados 33, por ejemplo, una imagen post-procesada 33. El post procesamiento realizado por la unidad de post-procesamiento 32 puede comprender, por ejemplo, conversión del formato de color (por ejemplo, de YCbCr a RGB), corrección del color, ajuste o nuevo muestreo, o cualquier otro procesamiento, por ejemplo, para preparar los datos de imagen decodificada 31 para su visualización, por ejemplo, por 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 on 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, como se muestra en la figura 1A, pueden variar dependiendo del dispositivo y de 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, como se muestra en la figura 1B, tales como uno o más microprocesadores, procesadores de señales digitales (DSP), circuitos integrados de aplicación específica (Application Specific Integrated Circuits, ASIC), conjuntos de puertas programables en campo (Field Programmable Gate Arrays, 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 la circuitería de procesamiento 46 para incorporar los diversos módulos como se explica con respecto al codificador 20 de la figura 2 y/o cualquier otro sistema o subsistema de codificación descrito en la presente invención. El decodificador 30 puede implementarse a través de la circuitería de procesamiento 46 para incorporar los diversos módulos como se explica con respecto al decodificador 30 de la figura 3 y/o cualquier otro sistema o subsistema decodificador descrito en la presente invención. La circuitería de procesamiento puede ser configurada para realizar las diversas operaciones, 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 legible por ordenador no transitorio adecuado, y puede ejecutar las instrucciones en hardware utilizando uno o más procesadores para realizar las técnicas de esta invención. Cualquiera de los codificadores de vídeo 20 y los decodificadores de vídeo 30 pueden integrarse como parte de un codificador/decodificador combinado (CODEC) en un solo dispositivo, por ejemplo, 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 manuales o estacionarios, por ejemplo, ordenadores portátiles, teléfonos móviles, teléfonos inteligentes, tabletas u ordenadores, cámaras, ordenadores de mesa, decodificadores, televisores, dispositivos de visualización, reproductores de medios digitales, consolas de videojuegos, dispositivos de transmisión de vídeo (como servidores de servicios de contenido o servidores de entrega de contenido), dispositivo receptor de emisión, dispositivo transmisor de emisión, 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 aplicarse 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 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 implementaciones de la invención se describen en el presente documento, por ejemplo, haciendo referencia a la codificación de vídeo de alta eficiencia (HEVC) o al software de referencia de la codificación de vídeo versátil (Versatile Video Coding, 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 Video Coding, JCT-VC) del grupo de expertos en codificación de vídeo del UIT-T (Video Coding Experts Group, VCEG) y el grupo de expertos en imágenes en movimiento de la ISO/CEI (Motion Picture Experts Group, MPEG). Un experto en la materia comprenderá que las implementaciones 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 residual 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 imágenes decodificadas (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 del 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 residual 204, la unidad de procesamiento mediante transformada 206, la unidad de cuantificación 208, la unidad de selección de modo 260 pueden ser referidas como formación de 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, la memoria intermedia 216, el filtro de bucle 220, la memoria intermedia de imágenes decodificadas (DPB) 230, la unidad de inter predicción 244 y la unidad de intra predicción 254 pueden denominarse formación de una trayectoria de señal hacia atrás del codificador de vídeo 20, en la que la trayectoria de señal hacia atrás del codificador de vídeo 20 corresponde a la trayectoria de la 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 denominan formación del “decodificador incorporado” del codificador de vídeo 20.
Imágenes y partición de imágenes (imágenes y bloques)
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 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, 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 un 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 Y (o luma corto) 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 Cb y Cr (o croma corto) 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 solo 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 particionar 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 Blocks, CTB) o unidades de árbol de codificación (Coding Tree Units, 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 particionar 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 de MxN (M columnas por N filas) de muestras, o una matriz de 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 predicción se realiza por cada bloque 203.
Cálculo del residuo
La unidad de cálculo del residuo 204 puede estar configurada para calcular un bloque residual 205 (también denominado residual 205) basándose en el bloque de imagen 203 y un bloque de predicción 265 (más adelante se proporcionan más detalles sobre el bloque de predicción 265), por ejemplo, restando 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.
Transformada
La unidad de procesamiento mediante transformada 206 puede estar configurada para aplicar una transformada, por ejemplo, una transformada de coseno discreta (Discrete Cosine Transform, DCT) o una transformada de seno discreta (Discrete Sine Transform, DST), sobre los valores de muestra del bloque residual 205 para obtener coeficientes de la transformada 207 en el dominio de la transformada. Los coeficientes de la transformada 207 también pueden denominarse coeficientes residuales de la transformada 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 DCT/DST, como las transformadas especificadas para H.265/HEVC. En comparación con una transformada DCT ortogonal, dichas aproximaciones enteras se escalan típicamente mediante un determinado factor. Para preservar la norma del bloque residual que es procesado por las transformadas directa e inversa, se aplican factores de escalado adicionales como parte del proceso de transformación. Los factores de escalado se eligen normalmente en función de ciertas restricciones, como que los factores de escalado sean una potencia de dos para las operaciones de desplazamiento, la profundidad de bits de los coeficientes de la transformada, el equilibrio entre la precisión y los costes de implementación, etc. Los factores de escalado específicos se especifican, por ejemplo, para la transformada inversa, por ejemplo, por la unidad de procesamiento mediante transformada inversa 212 (y la correspondiente transformada inversa, por ejemplo, por la unidad de procesamiento mediante transformada inversa 312 en el decodificador de vídeo 30) y los correspondientes factores de escalado para la transformada directa, por ejemplo, por 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 la transformación, por ejemplo, un tipo de transformada o transformadas, por ejemplo, directamente o codificadas o comprimidas a través 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 la transformación para la decodificación.
Cuantificación
La unidad de cuantificación 208 puede estar configurada para cuantificar los coeficientes de la transformada 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 la transformada 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 la transformada 207. Por ejemplo, un coeficiente de la transformada de n bits puede redondearse a un coeficiente de la transformada 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 gruesa. Los tamaños del paso de cuantificación más pequeños corresponden a una cuantificación más fina, mientras que los tamaños del paso de cuantificación más grandes corresponden a una cuantificación más gruesa. El tamaño del paso de cuantificación aplicable puede indicarse mediante un parámetro de cuantificación (QP). El parámetro de cuantificación puede ser, por ejemplo, un índice de un conjunto predefinido de tamaños del paso de cuantificación aplicables. Por ejemplo, los parámetros de cuantificación pequeños pueden corresponder a una cuantificación fina (tamaños de paso de cuantificación pequeños) y los parámetros de cuantificación grandes pueden corresponder a una cuantificación gruesa (tamaños de paso de cuantificación grandes) o viceversa. La cuantificación puede incluir la división por un tamaño de paso de cuantificación y una correspondiente, y/o la descuantificación inversa, por ejemplo, por 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 escalado 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 al aumentar el 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 dar salida a los parámetros de cuantificación (QP), por ejemplo, directamente o codificados a través 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 211 descuantificados, 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 típicamente no son idénticos a los coeficientes de transformación debido a la pérdida por cuantificación- a los coeficientes de la transformada 207.
Transformada 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 mediante transformada 206, por ejemplo, una transformada de coseno discreta inversa (DCT) o una transformada de seno discreta inversa (DST) 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 transformada 213.
Reconstrucción
La unidad de reconstrucción 214 (por ejemplo, el adicionador o sumador 214) está configurada para sumar el bloque de transformada 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 muestralos 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 la calidad del vídeo. La unidad de filtro de bucle 220 puede comprender uno o más filtros de bucle, 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 (como la información de compensación adaptativa de la muestra), por ejemplo, directamente o codificados 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 decodificadas
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, tales como la memoria dinámica de acceso aleatorio (Dynamic Random Access Memory, DRAM), incluyendo la DRAM síncrona (Synchronous DRAM, SDRAM), la RAM magnetorresistiva (Magnetoresistive RAM, MRAM), la RAM resistiva (Resistive RAM, 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 inter predicció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 filtro de bucle 220, o cualquier otra versión procesada de los bloques o muestras reconstruidos.
Selección de 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 imagen reconstruidos se utilizan como datos de 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 (sin incluir ninguna 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 los soportados por o disponibles para la unidad de selección de modo 260), que proporcionan la mejor coincidencia o, en otras palabras, el mínimo residual (el mínimo residual 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 tales 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-T ree-Partitioning, QT), partición binaria (Binary Partitioning, BT) o partición de árbol ternario (Triple-Tree-Partitioning, 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 dividido 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 la 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 20 de ejemplo.
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 se pueden denominar sub-bloques) pueden ser divididos en particiones aún más pequeñas. Esto también se conoce como partición de árbol o partición jerárquica de árbol, en la que un bloque raíz, por ejemplo, en el nivel de árbol raíz 0 (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 nodos en el nivel de árbol 1 (nivel de jerarquía 1, profundidad 1), donde estos bloques pueden ser nuevamente divididos en dos o más bloques de un nivel inmediatamente inferior, por ejemplo, nivel de árbol 2 (nivel de jerarquía 2, profundidad 2), etc. hasta que la partición se termine, por ejemplo, debido a que se cumple un criterio de terminación, por ejemplo, se alcanza una profundidad máxima de árbol o un tamaño mínimo de bloque. 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).
Como se ha mencionado anteriormente, el término “bloque”, tal como se utiliza en el presente documento, 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 (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 (Coding Block, CB), un bloque de transformación (Transform Block, TB) o un bloque de predicción (Prediction Block, 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 de NxN para algún valor de N, de tal manera que la división de un componente en varios 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 tal manera 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 inter predicción de imagen (temporal) o intra predicción de 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. Después de obtener el bloque residual aplicando el proceso de predicción basándose 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, de acuerdo con el último estándar de codificación de vídeo actualmente en desarrollo, que se denomina Codificación de Vídeo Versátil (VVC), se utiliza la partición del árbol cuaternario y binario (Quad-Tree and Binary Tree, QTBT) para dividir un bloque de codificación. En la estructura de bloques QTBT, una unidad de codificación puede tener forma cuadrada o rectangular. Por ejemplo, una unidad de árbol de codificación (CTU) se divide 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 triple, 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 la presente invención.
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 media) y el modo planar, o modos direccionales, por ejemplo, como se define en HEVC, o puede comprender 67 modos de intra predicción diferentes, por ejemplo, modos no direccionales como el modo DC (o media) y el modo planar, o modos direccionales, por ejemplo, como se define para VVC.
La versión 3.0 del VTM (Versatile Test Model) utiliza 93 modos de intra predicción y varias herramientas de intra suavizado, entre las que se incluyen el filtrado de interpolación subpixelada de cuatro pasos y la combinación de predicción dependiente de la posición (PDPC). La PDPC se propone como un mecanismo unificado de modificación de las muestras predichas que son un resultado de la intra predicción utilizando los modos de intra predicción DC, PLANAR o angular.
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 de acuerdo con un modo de intra predicción del conjunto de modos de intra predicción.
La unidad de intra predicción 254 (o en general la unidad de selección de modo 260) está configurada además para 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, las imágenes anteriores decodificadas al menos parcialmente, por ejemplo, almacenadas en la DPB 230) y de otros parámetros de inter predicción, por ejemplo, si se utiliza toda la imagen de referencia o solo una parte, por ejemplo, un área de ventana de búsqueda alrededor del área del bloque actual, de la imagen de referencia se utiliza para buscar un bloque de referencia que coincida mejor, y/o por ejemplo, si se aplica la interpolación de píxeles, por ejemplo, interpolación de medio/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 del movimiento (Motion Estimation, ME) y una unidad de compensación del 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 del movimiento. Por ejemplo, una secuencia de vídeo puede comprender la imagen actual y las imágenes previamente decodificadas 231, o en otras palabras, la imagen actual y las imágenes previamente decodificadas 231 pueden ser parte 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 del movimiento (Motion Vector, MV).
La unidad de compensación del movimiento está configurada para obtener, por ejemplo, recibir, un parámetro de inter predicción y 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 del movimiento, realizada por la unidad de compensación del movimiento, puede implicar la obtención o generación del bloque de predicción basándose en el vector del 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. Tras recibir el vector del movimiento para la PU del bloque de imagen actual, la unidad de compensación del movimiento puede localizar el bloque de predicción al que apunta el vector del movimiento en una de las listas de imágenes de referencia.
La unidad de compensación del movimiento también puede generar elementos de sintaxis asociados a los bloques y al segmento de vídeo para su uso por el decodificador de vídeo 30 en la decodificación de los bloques de imagen del segmento 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 adaptativa al contexto (Context Adaptive Binary Arithmetic Coding, CABAC), una codificación aritmética binaria adaptativa al contexto basada en la sintaxis (Syntax-Based Context-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 obtenció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 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 un decodificador de vídeo 30 que está configurado para implementar las técnicas de la presente invención. 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 segmento 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 (DPB) 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 del 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.
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 inter predicción 344 y la unidad de intra predicción 354 también se dice que forman 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 a la unidad de procesamiento mediante transformada inversa 212, la unidad de reconstrucción 314 puede ser idéntica en función a la unidad de reconstrucción 214, el filtro de bucle 320 puede ser idéntico en función al filtro de bucle 220, y la memoria intermedia de imágenes decodificadas 330 puede ser idéntica en función a la memoria intermedia de imágenes decodificadas 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 cualquiera o todos los parámetros de inter predicción (por ejemplo, índice de imagen de referencia y vector del movimiento), parámetro de intra predicción (por ejemplo, modo o índice de intra predicción), parámetros de la 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 segmento 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 los parámetros de cuantificación (QP) (o en general la información relacionada con la cuantificación inversa) y los coeficientes cuantificados 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 los coeficientes descuantificados 311, que también pueden denominarse coeficientes de la transformada 311. El proceso de cuantificación inversa puede incluir el uso de un parámetro de cuantificación determinado por el codificador de vídeo 20 para cada bloque de vídeo en el segmento de vídeo para determinar un grado de cuantificación y, asimismo, un grado de cuantificación inversa que debe aplicarse.
Transformada inversa
La unidad de procesamiento mediante transformada inversa 312 puede estar configurada para recibir los coeficientes 311 descuantificados, también denominados coeficientes de la transformada 311, y para aplicar una transformación a los coeficientes 311 descuantificados con el fin de obtener bloques residuales 213 reconstruidos en el dominio de la muestra. Los bloques residuales 213 reconstruidos 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 la 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 311 descuantificados.
Reconstrucción
La unidad de reconstrucción 314 (por ejemplo, adicionador o sumador 314) puede estar configurada para agregar 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 la calidad del vídeo de otra manera. 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 adaptativo (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 del 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 del 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 basándose 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 basándose en las imágenes reconstruidas, en los bloques o en las muestras respectivas (filtradas o no filtradas) para obtener el bloque de predicción 365.
Cuando el segmento de vídeo está codificado como un segmento 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 segmento 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 segmento inter codificado (es decir, B, o P), la unidad de inter predicción 344 (por ejemplo, la unidad de compensación del 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 segmento de vídeo actual basándose en los vectores del 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 segmento de vídeo actual analizando los vectores del 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 segmento de vídeo, un tipo de segmento de inter predicción (por ejemplo, segmento B, segmento P, o segmento de GPB), información de construcción para una o más de las listas de imágenes de referencia para el segmento, vectores del movimiento para cada bloque de vídeo inter codificado del segmento, estado de inter predicción para cada bloque de vídeo inter codificado del segmento, y otra información para decodificar los bloques de vídeo en el segmento 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 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 obtención del vector del movimiento o el filtrado de bucle, se puede realizar una operación adicional, tal como el ajuste o el desplazamiento, en el resultado del procesamiento del filtrado de interpolación, la obtención del vector del movimiento o el filtrado de bucle.
Hay que tener en cuenta que pueden aplicarse otras operaciones a los vectores del movimiento obtenidos a partir del bloque actual (incluyendo, entre otros, los vectores del movimiento de los puntos de control del modo afín, los vectores del movimiento de los sub-bloques en los modos afín, planar y ATMVP, los vectores del movimiento temporal, etc.). Por ejemplo, el valor del vector del movimiento está limitado a un rango predefinido según su bit de representación. Si el bit de representación del vector del 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 del 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 cuatro 4x4 sub-bloques MV no es mayor de N píxeles, tal como no más de 1 píxel. En este caso se ofrecen dos métodos para restringir el vector del movimiento según la profundidad de bits.
Método 1: eliminar el MSB (bit más significativo, Most Significant Bit) de desbordamiento mediante operaciones de flujo
ux=(mvx+2<bitDepth>)%2<bitDepth>(1)
mvx=(ux>=2<bitDepth' 1>)?(ux-2<bitDepth>):ux (2)
uy=(mvy+2<bitDepth>)%2<bitDepth>(3)
mvy=(uy>=2<bitDepth' 1>)?(uy-2<bitDepth>):uy (4)
donde mvx es una componente horizontal de un vector del movimiento de un bloque o sub-bloque de imagen, mvy es una componente vertical de un vector del 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+2<bitDepth>)%2<bitDepth>(5)
mvx=(ux>=2<bitDepth-1>)?(ux-2<bitDepth>):ux (6)
uy=(mvpy+mvdy+2<bitDepth>)%2<bitDepth>(7)
mvy=(uy>=2<bitDepth' 1>)?(uy-2<bitDepth>):uy (8)
Las operaciones pueden aplicarse durante la suma de mvp y mvd, como se muestra en la fórmula (5) a (8).
Método 2: eliminar el MSB de desbordamiento recortando el valor
vx = Clip3(-2<bitDepth-1>, 2<bitDepth' 1>-1, vx)
vy = Clip3(-2<bitDepth-1>, 2<bitDepth' 1>-1, vy)
donde vx es una componente horizontal de un vector del movimiento de un bloque o sub-bloque de imagen, vy es una componente vertical de un vector del movimiento de un bloque o sub-bloque de imagen; x, y y z corresponden 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 en caso 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 la presente invención. 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 entrada 410 (o puertos de entrada 410) y unidades receptoras (Rx) 420 para recibir datos; un procesador, unidad lógica o unidad central de procesamiento (CPU) 430 para procesar los datos; unidades transmisoras (Tx) 440 y puertos de salida 450 (o puertos de salida 450) para transmitir los datos; y una memoria 460 para almacenar los datos. El dispositivo de codificación de vídeo 400 también puede comprender componentes de óptica a eléctrica (OE) y componentes de eléctrica a óptica (EO) acopladas a los puertos de entrada 410, a las unidades receptoras 420, a las unidades transmisoras 440 y a 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 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 solo lectura (Read Only Memory, ROM), una memoria de acceso aleatorio (Random Access Memory, RAM), una memoria ternaria de contenido direccionable (Ternary Content-Addressable Memory, TCAM), y/o una memoria estática de acceso aleatorio (Static RAM, SRAM).
La figura 5 es un diagrama de bloques simplificado de un aparato 500 que puede utilizarse como uno o ambos dispositivos de origen 12 y de destino 14 de la figura 1 según una realización a modo de ejemplo.
Un procesador 502 del aparato 500 puede ser una unidad central de procesamiento. Alternativamente, el procesador 502 puede ser cualquier otro tipo de dispositivo, o múltiples dispositivos, capaces de manipular o procesar información ya existente o desarrollada en lo sucesivo. Aunque las implementaciones dadas a conocer pueden ponerse en práctica con un solo procesador, 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 solo 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 en el presente documento. 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 en el presente documento.
El aparato 500 también puede incluir uno o más dispositivos de salida, 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 en este caso 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, tal como múltiples tarjetas de memoria. De este modo, el aparato 500 puede implementarse en una amplia variedad de configuraciones.
La implementación particular de la PDPC simplificada podría realizarse de manera diferente, dependiendo del modo de intra predicción:
Para los modos de intra predicción planar, DC, HOR/VER (designados como 0, 1, 18, 50 respectivamente en la figura 7 y la figura 8), se realizan los siguientes pasos:
La muestra predichaP(x, y)situada en (x, y) se calcula como sigue:
P(_x,y)= Clip1Cmp( (wL x fi_ly+ w T x Rx _1 — wTLxR-í - í+ (64— wl — wT wTL)xP (x ,y )+ 32)) >> 6)
(1)
donde Rx,-1, R-1,y representan las muestras de referencia situadas en la parte superior e izquierda de la muestra actual (x, y), y R-1,-1 representa la muestra de referencia situada en la esquina superior izquierda del bloque actual, la función clip1Cmp se establece como sigue:
- Si cIdx es igual a 0, clip1Cmp se establece igual a Clip1Y.
- En caso contrario, clip1Cmp se establece igual a Clip1C
Clip1y(x) = Clip3(0, (1 << BitDepthy) - 1, x)
Clip1<c>(x) = Clip3(0, (1 << BitDepth<c>) - 1, x)
z < x
z > y
en caso contrario
BitDepth<Y>es la profundidad de bits de las muestras de luma.
BitDepth<c>es la profundidad de bits de las muestras de luma.
BitDepth<Y>y BitDepth<C>podrían señalarse en el conjunto de parámetros de secuencia (Sequence Parameter Set, SPS) de un flujo de bits.
Son posibles definiciones alternativas de Clip1Y(x) y Clip1C(x). En particular, como describen F. Galpin, P. Bordes y F. Le Léannec en la contribución JVET-C0040 “Adaptive Clipping in JEM2.0”,Clip1Cm(x)=Clip3(minc, maxc,x),
dondeminCes el límite inferior de recorte utilizado en el corte actual para la componente IDC,
maxces el límite superior de recorte utilizado en el corte actual para la componente IDC,
C es una componente del color (por ejemplo, Y para luma, Cb y Cr para croma),
“x >> y” es un desplazamiento aritmético a la derecha de una representación entera en complemento a dos de x por y dígitos binarios. Esta función se define solo para valores enteros no negativos de y. Los bits desplazados en los bits más significativos (MSB) como resultado del desplazamiento a la derecha tienen un valor igual al MSB de x antes de la operación de desplazamiento.
Las ponderaciones del modo DC se calculan como sigue:
wT= 32 » ((y « 1) »shift),
wL= 32 » ((x « 1) »shift),
wTL= -(wL » 4) -(wT »4),
dondes h if t =(log2(width) log2(heifht)2) » 2.
Para el modo planar, wTL = 0, mientras que para el modo horizontal wTL = wT y para el modo vertical wTL = wL. En la figura 9 se muestran las ponderaciones de PDPC del modo DC (wL, wT, wTL) para las posiciones (0, 0) y (1, 0) dentro de un bloque de 4x4.
Para los modos diagonales (designados como 2 y 66 en las figura 7 y la figura 8) y adyacentes (modos direccionales no inferiores a 58 y no superiores a 10 en las figura 7 o la figura 8) el procesamiento se realiza tal como se describe a continuación utilizando la misma fórmula (1).
La figura 10A ilustra la definición de las muestras de referencia R<x,-1>, R<-1,y>y R<-1,-1>para la extensión de la PDPC al modo diagonal superior derecho. La muestra de predicción pred (x', y') se encuentra en (x', y') dentro del bloque de predicción. La coordenada x de la muestra de referencia R<x,-1>viene dada por:
x = x' y' 1,
y la coordenada y de la muestra de referencia R-1,y viene dada, de manera similar, por:
y = x' y' 1.
Las ponderaciones de la PDPC para el modo diagonal superior derecho son:
wT= 16 >> (( y'<<1 ) >>shift),
wL= 16 >> ( ( x'<<1 ) >>shift),
wTL= 0.
Del mismo modo, la figura 10B ilustra la definición de las muestras de referencia R<x,-1>, R<-1,y>y R<-1,-1>para la extensión de la PDPC al modo diagonal inferior izquierdo. La coordenada x de la muestra de referencia R<x,-i>viene dada por:
x = x' y' 1,
y la coordenadayde la muestra de referencia R-1,y, es:
y = x' y' 1.
Las ponderaciones de la PDPC para el modo diagonal superior derecho son:
wT= 16 >> ((y'<<1) >>shift),
wL= 16 >> ((x'<<1) >>shift),
wTL= 0.
El caso de un modo diagonal superior derecho adyacente se ilustra en la figura 10C. Las ponderaciones de la PDPC para un modo diagonal superior derecho adyacente son:
wT= 32 >> ((y'<<1) >>shift),
wL= 0,
wTL= 0.
De manera similar, el caso de un modo diagonal adyacente inferior izquierdo se ilustra en la figura 10D. Las ponderaciones de la PDPC para un modo diagonal inferior izquierdo adyacente son:
wL= 32 >> ((x'<<1) >>shift),
wT= 0,
wTL= 0.
Las coordenadas de la muestra de referencia para los dos últimos casos se calculan utilizando las tablas que ya se utilizan para la intra predicción del modo angular. La interpolación lineal de las muestras de referencia se utiliza si se calculan las coordenadas de muestras de referencia fraccionadas.
La PDPC simplificada podría realizarse como se especifica en la especificación VVC. Además, se utilizan las siguientes designaciones:
invAng 3le = Redondeo v (in .t ,raP 2Jr’e6d*A3.n2gle ,y ), es el valor del án 3gulo inverso,
Redondeo (x) = Signo (x) * Floor (Abs(x) 0.5 ),
1 x > 0
Signo (x) 0 x = = 0
-1 x < 0
Floor( x ) es el mayor entero menor o igual que x,
Log2(x) es el logaritmo de base 2 de x.
intraPredAngle es el parámetro del ángulo especificado en la Tabla 6,
A = C ? B : D es una operación de asignación ternaria, donde A es igual a B si la condición C es verdadera. En caso contrario, si la condición C es falsa, A es igual a D.
INTRA_PLANAR es un modo de intra predicción planar (),
INTRA_DC es un modo de intra predicción,
INTRA_ANGULARXX es uno de los modos de intra predicción direccional, donde XX designa su número y la dirección correspondiente mostrada en la figura 8.
Si un término no se explica en este caso, se entiende que su definición puede encontrarse en la especificación VVC o en la especificación del estándar HEVC/H.265.
Dadas las designaciones anteriores, los pasos de la PDPC simplificada pueden definirse como sigue:
Las entradas a este proceso son:
- el modo de intra predicción predModeIntra,
- una variable nTbW que especifica la anchura del bloque de transformación,
- una variable nTbH que especifica la altura del bloque de transformación,
- una variable refW que especifica el ancho de las muestras de referencia,
- una variable refH que especifica la altura de las muestras de referencia,
- las muestras predichas predSamples[ x ][ y ], con x = 0.. nTbW - 1, y = 0.. nTbH - 1,
- las muestras vecinas p[ x ][ y ], con x = -1, y = -1..refH - 1 y x = 0..refW - 1, y = -1,
- una variable cIdx que especifica la componente del color del bloque actual.
Las salidas de este proceso son las muestras predichas modificadas predSamples[ x ][ y ] con x = 0.. nTbW -1, y = 0.. nTbH - 1.
Dependiendo del valor de cIdx, la función clip1Cmp se ajusta como sigue:
- Si cIdx es igual a 0, clip1Cmp se establece igual a Clip1<Y>.
- En caso contrario, clip1Cmp se establece igual a Clip1<c>.
La variable nScale se establece en ((Log2 (nTbW) Log2 (nTbH) - 2) >> 2).
Las matrices de muestras de referencia Refprincipal[ x ] y Reflateral[ y ], con x = 0..refW - 1 e y = 0..refH - 1 se obtienen como sigue:
Refprincipal[ x ] = p[ x ][ -1 ]
Reflateral[ y ] = p[ -1 ][ y ]
Las variables refL[ x ][ y ], refT[ x ][ y ], wT[ y ], wL[ x ] y wTL[ x ][ y ] con x = 0..nTbW - 1, y =0..nTbH - 1 se obtienen como sigue:
- Si predModeIntra es igual a INTRA_PLANAR, INTRA_DC, INTRA_ANGULAR18 o INTRA_ANGULAR50, se aplica lo siguiente:
refL[ x ][ y ] = p[ -1 ][ y ]
refT[ x ][ y ] = p[ x ][ -1 ]
wT[ y ] = 32 >> ( ( y << 1 ) >> nScale )
wL[ x ] = 32 >> ( x << 1 ) >> nScale )
wTL[ x ][ y ] = ( predModeIntra = = INTRA_DC ) ? ( ( wL[ x ] >> 4 ) ( wT[ y ] >> 4 ) : 0
- En caso contrario, si predModeIntra es igual a INTRA_ANGULAR2 o INTRA_ANGULAR66, se aplica lo siguiente:
refL[ x ][ y ] = p[ -1 ][ x y 1 ]
refT[ x ][ y ] = p[ x y 1 ][ -1 ]
wT[ y ] = ( 32 >> 1 ) >> ( y << 1 ) >> nScale )
wL[ x ] = ( 32 >> 1 ) >> ( x << 1 ) >> nScale )
wTL[ x ][ y ] = 0
- En caso contrario, si predModeIntra es menor o igual que INTRA_ANGULAR10, se aplican los siguientes pasos ordenados:
1. Las variables dXPos[ y ], dXFrac[ y ], dXInt[ y ] y dX[ x ][ y ] se obtienen de la siguiente manera utilizando invAngle:
dXPos [ y ] = ((y 1) * invAngle 2) >> 2
dXFrac [ y ] = dXPos [ y ] & 63
dXInt [ y ] = dXPos [ y ] >> 6
dX [ x ][ y ] = x dXInt [ y ]
2. Las variables refL[ x ][ y ], refT[ x ][ y ], wT[ y ], wL[ x ] y wTL[ x ][ y ] se obtienen como sigue: refL[ x ][ y ] = 0
refT[ x ][ y ] = ( dX[ x ][ y ] < refW - 1 ) ? ( 64 - dXFrac[ y ] ) * Refprincipal[ dX[ x ][ y ] ]
dXFrac[ y ] * Refprincipal[ dX[ x ][ y ] 1 ] 32 ) >> 6 : 0 (Ec. 1)
wT[ y ] = ( dX[ x ][ y ] < refW - 1 ) ? 32 >> ( y << 1 ) >> nScale ) : 0
wL[ x ] = 0
wTL[ x ][ y ] = 0
- En caso contrario, si predModeIntra es mayor o igual que INTRA_ANGULAR58 (véase figura 8), se aplican los siguientes pasos ordenados:
1. Las variables dYPos[ x ], dYFrac[ x ], dYInt[ x ] y dY[ x ][ y ] se obtienen de la siguiente manera utilizando invAngle tal como se especifica a continuación en función de intraPredMode:
dYPos[ x ] = ( x 1 ) * invAngle 2 ) >> 2
dYFrac [ x ] = dYPos[ x ] & 63
dYInt[ x ] =dYPos[ x ] >> 6
dY[ x ][ y ] =y dYInt[ x ]
2. Las variables refL[ x ][ y ], refT[ x ][ y ], wT[ y ], wL[ x ] y wTL[ x ][ y ] se obtienen como sigue: refL[ x ][ y ] = ( dY[ x ][ y ] < refH - 1 ) ? ( ( 64 - dYFrac[ x ] ) * Reflateral[ dY[ x ][ y ] ]
dYFrac[ x ] * Reflateral[ dY[ x ][ y ] 1 ] 32 ) >> 6 : 0 (Ec. 2)
refT[ x ][ y ] = 0
wT[ y ] = 0
wL[ x ] = ( dY[ x ][ y ] < refH - 1 ) ? 32 >> ( x << 1 ) >> nScale ) : 0
wTL[ x ][ y ] = 0
- En caso contrario, refL[ x ][ y ], refT[ x ][ y ], wT[ y ], wL[ x ] y wTL[ x ][ y ] se establecen todos iguales a 0.
Los valores de las muestras predichas modificadas predMuestras[ x ][ y ], con x = 0.. nTbW - 1, y =0.. nTbH 1 se obtienen como sigue:
predMuestras[ x ][ y ] = clip1Cmp( ( refL[ x ][ y ] * wL[ x ] refT[ x ][ y ] * wT[ y ] -p[ -1 ][ -1 ] * wTL[ x ][ y ] ( 64 - wL[ x ] - wT[ y ]
wTL[ x ][ y ] ) * predMuestras[ x ][ y ] 32 ) >> 6 )
En la asignación de la Ec. 1 anterior, la PDPC simplificada puede utilizar la interpolación del vecino más cercano en lugar de la lineal:
refT[ x ][ y ] = ( dX[ x ][ y ] < refW - 1 ) ? Refprincipal[ dX[ x ][ y ] ] : 0
Del mismo modo, la asignación de la Ec. 2 también podría utilizar la interpolación del vecino más cercano: refL[ x ][ y ] = ( dY[ x ][ y ] < refH - 1 ) ? Reflateral[ dY[ x ][ y ] ] : 0
Así, tanto en el lado del codificador como en el del decodificador, el método propuesto utiliza los siguientes datos de entrada:
modo de intra predicción direccional (denominado además predModeIntra, que se muestra en las figura 7 y figura 8);
parámetro de tamaño de bloque nTbS, que se establece igual a (log2(nTbW) Log2(nTbH)) >> 1, donde nTbW y nTbH designan la anchura y la altura del bloque predicho, respectivamente, y “>>“ designa una operación de desplazamiento a la derecha.
La modificación de la especificación VVC que permite el uso del método propuesto puede comprender la sustitución de “ las muestras vecinas p[ x ][ y ]” por “ las muestras de referencia p[ x ][ y ]” en la sección que describe la PDPC simplificada.
El parámetro de ángulo intraPredAngle designa el desplazamiento de subpíxeles entre dos filas adyacentes de muestras predichas en la representación de punto fijo que tiene una longitud de parte fraccional igual a 5 bits. Este parámetro podría ser obtenido del modo de intra predicción y se obtiene de predModeIntra, y una obtención a modo de ejemplo a partir de intraPredAngle a partir de predModeIntra podría definirse con una LUT, por ejemplo, tal como se muestra en la Tabla 1.
�� En esta invención se propone actualizar las muestras predichas que se obtuvieron a partir de las muestras de referencia utilizando los modos de intra predicción direccional, planar o DC. Los pasos del procedimiento de actualización se muestran en la figura 11. El primer paso 1101 consiste en calcular los valores de escalado nScaleX y nScaleY en función de la forma y el tamaño del bloque. Una forma de implementación de este cálculo se describe más adelante en la figura 13.
Los pasos 1103 y 1104 se realizan dentro de un bucle sobre todas las posiciones de las muestras predichas. La inicialización de los iteradores de bucle x e y se realiza en el paso 1102, las comprobaciones de los límites de los iteradores se realizan en los pasos 1105 y 1107, y los incrementos de los iteradores se realizan en los pasos 1106 y 1108. El paso 1108 restablece los iteradores x e y al inicio de la siguiente fila, es decir, x se establece igual a cero y el iterador de fila y se incrementa en 1.
El paso 1103 consiste en calcular los valores de ponderación dependientes de la posición wL[x] y wT[y]. Estos valores de ponderación se obtienen desplazando a la derecha el valor base V. El valor V está relacionado con la operación de desplazamiento a la derecha del paso 4. Si este desplazamiento a la derecha se establece en s, el valor práctico de V podría definirse, por ejemplo, como 2s, 2s-1 o 2s. En la realización a modo de ejemplo mostrada en la figura 11, el valor de s se establece como 6, y el valor de V se establece como 32, es decir, 25.
A diferencia de los métodos del estado de la técnica, wL[x] y wT[y] en el paso 1103 utiliza diferentes valores de escalas nScaleX y nScaleY, respectivamente. Estos valores de ponderación wL[x] y wT[y] se utilizan además en el paso 1104 para calcular el valor modificado de las muestras predichas.
En la figura 12 se presenta una realización alternativa de actualizar las muestras predichas. En esta realización la ponderación wT[y] se recalcula solo una vez por cada fila, es decir, cuando se incrementa el iterador y.
Debido a la partición QTBT y MTT, los bloques de predicción pueden tener una forma no cuadrada (en general, rectangular). Sin embargo, la PDPC de última generación no tiene en cuenta la posible desigualdad de anchura y altura de un bloque de predicción. El mecanismo de ponderación basado únicamente en un valor de la distancia a los lados izquierdo y superior del bloque de predicción puede llevar a que las muestras predichas sean demasiado suaves si la relación de aspecto del bloque de predicción es diferente de 1. En la presente invención, se propone equilibrar el efecto del tamaño del bloque y la relación de aspecto del bloque utilizando el modo de intra predicción. Utilizando la información de direccionalidad proporcionada por el modo de intra predicción es posible determinar la distancia de propagación y la direccionalidad del efecto de suavizado de la PDPC. Por lo tanto, se propone introducir un grupo de modo de intra predicción y aplicar una adaptación de escalado de ponderación dedicada para cada uno de los grupos. En este caso, incluso los bloques de predicción oblongos utilizarán el suavizado de acuerdo con la longitud del lado donde sea apropiado según el modo de intra predicción y las dimensiones del bloque de predicción.
En la invención propuesta se sugiere utilizar valores de nScale separados cuando se obtienen las ponderaciones wT[y] y wL[x]. En particular, en la descripción anterior (paso 1103) se utilizarán las siguientes fórmulas (el valor de V se establece en consecuencia en 16 o 32):
wT[ y ] = V >> ( y << 1 ) >> nScaleY)
wL[ x ] = V >> ( x << 1 ) >> nScaleX)
El cálculo de las escalas (paso 1101) podría realizarse como se muestra en la figura 14. Este es un cálculo alternativo en comparación con el mostrado en la figura 12. El primer paso 1301 consiste en obtener el valor del modo de predicción intraPredAngle del bloque predicho, por ejemplo, analizando el flujo de bits. El siguiente paso 1302 consiste en clasificar el modo de intra predicción en uno de los grupos.
La definición adicional del modo de intra predicción no diagonal se utiliza además:
intraPredMode es no diagonal si intraPredMode no es igual a 2 o VDIA_IDX y se cumple una de las siguientes condiciones: intraPredMode no es menor que VDIA_IDX - numModes o intraPredMode no es mayor que 2 numModes
En la tabla 2 se ofrece un ejemplo de clasificación.
Tabla 2. Obtención del índice de clase basándose en el modo de intra predicción
Dependiendo del índice de clase de modo, la obtención de nScaleX y nScaleY podría ser diferente. Los pasos 1303,...,1312 representan el mapeo del índice de clase a las fórmulas de obtención mostradas en la Tabla 3. Tabla 3. Asignación del índice de clase al método de obtención de nScaleX y nScaleY
En las tablas 4, 5 y 6 se ofrecen clasificaciones alternativas.
Tabla 4. Obtención alternativa del índice de clase basándose en el modo de intra predicción
Tabla 5. Obtención alternativa del índice de clase basándose en el modo de intra predicción
Tabla 6. Obtención alternativa del índice de clase basándose en el modo de intra predicción
En la Tabla 6, la Clase 1 se especifica no solo para los modos diagonales, sino para los modos de anchura angular que tienen un valor IntraPredAngle no fraccionario (es decir, un múltiplo de 32 en la Tabla 1).
Una restricción adicional que podría estar implícita en esta invención es la de no aplicar los pasos de actualización de las muestras predichas en el caso de ciertas combinaciones de condiciones sobre el tamaño del bloque y el modo de intra predicción (intraPredMode).
Suponiendo un parámetro predefinido numModes igual a 8, una implementación particular puede comprender la siguiente condición de deshabilitar la PDPC, es decir, no realizar la actualización de la muestra predicha: - la suma de la anchura del bloque y la altura del bloque es superior a 64 muestras y el intraPredMode es no diagonal o es igual a PLANAR_<i>D<x>.
Las implementaciones particulares de la invención pueden demostrar la mejora del rendimiento de compresión. Las modificaciones del software VTM-3.0 descritas en la Tabla 4 y la Tabla 3 dan como resultado la siguiente mejora del rendimiento de compresión (Tabla 7).
Tabla 7. Mejora del rendimiento de la compresión conseguida con las modificaciones del software VTM-3.0
En otras realizaciones, el valor de nScale se establece en función del valor del ángulo inverso que se obtiene del modo de intra predicción. Según la realización, se realizan los siguientes pasos para obtener el valor del factor nScale de acuerdo con el valor del modo de intra predicción (predModeIntra):
- obtener el valor del parámetro intraPredAngle basándose en el valor del modo de predicción predModeIntra;
- obtener el valor del ángulo inverso (invAngle) sobre la base del parámetro intraPredAngle; y - obtener el valor del factor nScale en función del tamaño del bloque y del valor de invAngle.
La obtención del valor del parámetro intraPredAngle basándose en el valor del modo de predicción predModeIntra podría implementarse como una búsqueda en una tabla de consulta. En la tabla 8 se presenta un ejemplo de tabla de búsqueda.
El parámetro de ángulo inverso invAngle se obtiene a partir de intraPredAngle de la siguiente manera:
invAng 3le = Redondeo V(in.tr .aP 501re2d*A3An2gle ,y 1
La Tabla 9 y la Tabla 10 se utilizan para especificar el valor de nScale basándose en los valores de predModeIntra e invAngle.
Tabla 9. Mapeo del índice de clase al método de obtención de nScaleX y nScaleY
Tabla 10. Obtención del índice de clase basándose en el modo de intra predicción.
La figura 15 muestra los pasos de la invención de acuerdo con la clasificación dada en la Tabla 9 y la Tabla 10. La variable designada en la figura 13 como “ IntraPredAngle” se designa en la figura 15 como “predModeIntra”. Esta variable indica un modo de intra predicción que fue para obtener valores de muestra predichos que son de entrada al proceso de filtrado de PDPC. La correspondencia entre los valores de predModeIntra y las direcciones de intra predicción se muestra en la figura 8. Aunque las realizaciones de la invención se han descrito principalmente sobre la base de la codificación de vídeo, debe tenerse en cuenta que las implementaciones del sistema de codificación 10, el codificador 20 y el decodificador 30 (y, en consecuencia, el sistema 10) y las demás implementaciones descritas en la presente invención 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, solo las unidades de inter predicción 244 (codificador) y 344 (decodificador) pueden no estar disponibles en caso de que la codificación de procesamiento de imágenes se limite a una sola imagen 17. Todas las demás funcionalidades (también denominadas herramientas o tecnologías) del codificador de vídeo 20 y 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 ser ejecutadas por una unidad de procesamiento basada en hardware. Los medios legibles por ordenador pueden incluir medios de almacenamiento legibles por ordenador, que corresponden a un medio tangible tal como los medios de almacenamiento de datos, o los 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 esta 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 (Digital Subscriber Line, DSL) o tecnologías inalámbricas tales 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 tales 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 están dirigidos a medios de almacenamiento tangibles no transitorios. Los discos (disk y disc, en inglés), tal y como se utilizan en este caso, incluyen los discos compactos (Compact Disc, CD), los discos (discs) láser, los discos (discs) ópticos, los discos versátiles digitales (Digital Versatile Disc, DVD), los disquetes (floppy disks, en inglés) y los discos (discs) Blu-ray, donde 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 estar incluidas 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 (Digital Signal Processor, DSP), microprocesadores de propósito general, circuitos integrados de aplicación específica (Application Specific Integrated Circuit, ASIC), matrices lógicas programables en campo (Field Programmable logic Array, 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 la presente invención 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, CI) o un conjunto de CI (por ejemplo, un conjunto de chips). En la presente invención se describen diversos componentes, módulos o unidades para enfatizar los aspectos funcionales de los dispositivos configurados para llevar a cabo las técnicas dadas a conocer, pero no requieren necesariamente la implementación de diferentes unidades de hardware. Más bien, como se ha descrito anteriormente, diversas unidades pueden combinarse en una unidad de hardware de códec o ser proporcionadas por un conjunto 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.

Claims (17)

  1. REIVINDICACIONES 1. El método de intra predicción de un bloque de una imagen, utilizado para codificación y decodificación, comprendiendo el método para una muestra de entre una pluralidad de muestras del bloque: determinar un valor de muestra predicho a partir de uno o más valores de muestra de referencia mediante intra predicción utilizando un modo de intra predicción seleccionado entre uno de un modo de intra predicción DC, un modo de intra predicción planar, y un modo de intra predicción angular; determinar una primera ponderación basándose en el modo de intra predicción y en una de la altura del bloque, la anchura del bloque, o ambas; determinar una segunda ponderación basándose en el modo de intra predicción y en una de la altura del bloque, la anchura del bloque, o ambas; calcular un valor adicional como suma ponderada de un valor de muestra de referencia superior y un valor de muestra de referencia izquierdo ponderando el valor de muestra de referencia superior con la primera ponderación y el valor de muestra de referencia izquierdo con la segunda ponderación; y multiplicar el valor de la muestra predicho por un factor de ponderación de la muestra, resultando en un valor de la muestra predicha ponderada; caracterizado por que el método comprende además: agregar el valor adicional al valor ponderado de la muestra predicha, resultando en un valor de la muestra predicha modificado no normalizado; y normalizar el valor de la muestra predicha modificada no normalizada mediante un desplazamiento aritmético a la derecha de una representación entera del valor de la muestra predicha modificada no normalizada, resultando en un valor de la muestra predicha modificada normalizado.
  2. 2. El método según la reivindicación 1, en el que el método comprende la intra predicción del bloque para la imagen, comprendiendo cada muestra de la pluralidad de muestras del bloque.
  3. 3. El según la reivindicación 1 o 2, en el que determinar la primera ponderación y determinar la segunda ponderación comprende determinar un factor de escalado basándose en el modo de intra predicción y en una de la altura del bloque, la anchura del bloque o ambas; en donde la primera ponderación y la segunda ponderación se determinan basándose en el factor de escalado, respectivamente.
  4. 4. El método según cualquiera de las reivindicaciones 1 a 3; en el que determinar la primera ponderación comprende determinar un factor de escala vertical, designado nScaleY, basándose en la altura del bloque y en el modo de intra predicción, en el que la primer ponderación se determina basándose en el factor de escalado vertical nScaleY; determinar la segunda ponderación comprende determinar un factor de escalado horizontal, designado, nScaleX, basándose en el ancho del bloque y en el modo de intra predicción, en donde la segunda ponderación se determina en base al factor de escalado horizontal, nScaleX; normalizar el valor de muestra predicho no normalizado mediante un desplazamiento aritmético a la derecha de una representación entera del valor de muestra predicho no normalizado, resultando en un valor de muestra predicho normalizado.
  5. 5. El método según la reivindicación 4, en el que nScaleX y nScaleY se obtienen dependiendo de un método de obtención correspondiente a un índice de clase de modo, respectivamente, en el que el índice de clase de modo se obtiene según una correspondencia entre un grupo de modos de intra predicción que incluyen el modo de intra predicción y un índice de clase de modo.
  6. 6. El método según la reivindicación 5, en el que el índice de la clase de modo se obtiene según una correspondencia entre un grupo de modos de intra predicción que incluye el modo de intra predicción y un índice de clase de modo basándose en una de las siguientes tablas:
    o
    o
    o
    en donde DC_IDX representa el modo DC que tiene un índice de modo de intra predicción de 1, HOR_IDX y VER_IDX representan los modos horizontal y vertical que tienen índices de modo de intra predicción de 18 y 50, respectivamente, VDIA_IDX representa el modo diagonal que tiene un índice de modo de intra predicción de 66.
  7. 7. El método según la reivindicación 5, en el que nScaleX y nScaleY se obtienen según el siguiente mapeo:
    donde nTbW y nTbH designan la anchura y la altura del bloque predicho, respectivamente, y “>>“ designa una operación de desplazamiento a la derecha; donde Floor es la función floor, Log2 devuelve el logaritmo natural de un número en base 2, Min devuelve el menor de sus argumentos, y “>>“ designa una operación de desplazamiento a la derecha.
  8. 8. El método según la reivindicación 5, en el que el índice de clase de modo se obtiene según una correspondencia entre un grupo de modos de intra predicción que incluye el modo de intra predicción y un índice de clase de modo basándose en una de las siguientes tablas:
  9. 9. El método según la reivindicación 8, en el que nScaleX y nScaleY se obtienen según el siguiente mapeo:
  10. donde nTbW y nTbH designan la anchura y la altura del bloque predicho, respectivamente, y “>>“ designa una operación de desplazamiento a la derecha; donde Floor es la función floor, Log2 devuelve el logaritmo natural de un número en base 2, Min devuelve el menor de sus argumentos, y “>>“ designa una operación de desplazamiento a la derecha; en donde invAngle es el parámetro de ángulo inverso que se obtiene usando intraPredAngle como sigue: invAng 3le = Redondeo V(i.nt.ra 5P01re2d*A3A2ngl ,ey 1; en donde intraPredAngle es el parámetro de ángulo que se obtiene del modo de intra predicción, dado por la variable predModeIntra, utilizando una tabla de búsqueda, LUT. 10. El método según la reivindicación 9, en el que la LUT viene dada por la siguiente tabla
  11. 11. El método según cualquiera de las reivindicaciones 4 a 10, en el que la normalización del valor de la muestra predicho modificado no normalizado comprende el cálculo del valor de la muestra predicho modificado normalizado como P(x,y) =<(wL x R_ly w T x R>x_1<+ (64 — wL — wT) xP (x ,y ) + 32)) >> 6>donde P(x,y) es el valor de muestra predicho modificado normalizado P{x,y)es el valor de muestra predicho modificado no normalizado, Rx,-1 , R-1,yrepresentan los valores de las muestras de referencia más cercanas situadas por encima y a la izquierda de cada muestra, wL=V>> (( x << 1 ) >>nScaleX)es un factor de ponderación horizontal, wT=V>> (( y << 1 ) >>nScaleY)es un factor de ponderación vertical, Ves un valor de base; x es una coordenada horizontal de cada muestra, e yes una coordenada vertical de la muestra.
  12. 12. El método según cualquiera de las reivindicaciones anteriores, que comprende, además, agregar un valor residual al valor de muestra predicho modificado normalizado, lo que da como resultado un valor de muestra reconstruido.
  13. 13. Un codificador (20) que, comprende circuitos de procesamiento para llevar a cabo el método según cualquiera de las reivindicaciones 1 a 12.
  14. 14. Un decodificador (30), que comprende circuitos de procesamiento para llevar a cabo el método según cualquiera de las reivindicaciones 1 a 12.
  15. 15. Un programa informático, que comprende un código de programa para realizar el método de conformidad con cualquiera de las reivindicaciones 1 a 12.
  16. 16. Un decodificador (30), que comprende: uno o más procesadores (430); y un medio de almacenamiento no transitorio legible por ordenador acoplado a los procesadores (430) y que almacena programación para su ejecución por los procesadores (430), en donde la programación, cuando es ejecutada por los procesadores (430), configura el decodificador (30) para llevar a cabo el método según cualquiera de las reivindicaciones 1 a 12.
  17. 17. Un codificador (20), que comprende: uno o más procesadores (430); y un medio de almacenamiento no transitorio legible por ordenador acoplado a los procesadores (430) y que almacena programación para su ejecución por los procesadores (430), en donde la programación, cuando es ejecutada por los procesadores (430), configura el codificador (20) para llevar a cabo el método según cualquiera de las reivindicaciones 1 a 12.
ES19898708T 2018-12-21 2019-12-23 Método y aparato de restricciones a nivel de bloque dependientes de modo y tamaño Active ES2984321T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201862784345P 2018-12-21 2018-12-21
PCT/RU2019/050253 WO2020130889A1 (en) 2018-12-21 2019-12-23 Method and apparatus of mode- and size-dependent block-level restrictions

Publications (1)

Publication Number Publication Date
ES2984321T3 true ES2984321T3 (es) 2024-10-29

Family

ID=71101526

Family Applications (1)

Application Number Title Priority Date Filing Date
ES19898708T Active ES2984321T3 (es) 2018-12-21 2019-12-23 Método y aparato de restricciones a nivel de bloque dependientes de modo y tamaño

Country Status (17)

Country Link
US (2) US12108077B2 (es)
EP (2) EP3881549B1 (es)
JP (2) JP7277586B2 (es)
KR (2) KR102725069B1 (es)
CN (4) CN114885157A (es)
AU (1) AU2019401170B2 (es)
BR (1) BR112021011723A2 (es)
CA (1) CA3122769A1 (es)
ES (1) ES2984321T3 (es)
HU (1) HUE067148T2 (es)
IL (1) IL284220B2 (es)
MX (2) MX2021007092A (es)
MY (1) MY207582A (es)
PL (1) PL3881549T3 (es)
PT (1) PT3881549T (es)
WO (1) WO2020130889A1 (es)
ZA (1) ZA202104005B (es)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3913915A4 (en) 2019-01-14 2022-12-07 Samsung Electronics Co., Ltd. ENCODING METHODS AND RELATED DEVICE, AND DECODING METHODS AND RELATED DEVICE
CN114071161B (zh) * 2020-07-29 2023-03-31 Oppo广东移动通信有限公司 图像编码方法、图像解码方法及相关装置
MX2023011306A (es) * 2021-03-31 2023-10-05 Ericsson Telefon Ab L M Prediccion de superficies suaves.
EP4580186A1 (en) * 2022-08-25 2025-07-02 LG Electronics Inc. Intra prediction mode-based image encoding/decoding method and apparatus using multi reference line (mrl), and recording medium for storing bitstream
US20240129454A1 (en) * 2022-10-17 2024-04-18 Tencent America LLC Boundary filtering on intrabc and intratmp coded blocks
CN120345251A (zh) * 2023-01-10 2025-07-18 Lg 电子株式会社 图像编码/解码方法和装置及其上存储比特流的记录介质

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6940903B2 (en) * 2001-03-05 2005-09-06 Intervideo, Inc. Systems and methods for performing bit rate allocation for a video data stream
JP4050754B2 (ja) * 2005-03-23 2008-02-20 株式会社東芝 ビデオエンコーダ及び動画像信号の符号化方法
US7995649B2 (en) * 2006-04-07 2011-08-09 Microsoft Corporation Quantization adjustment based on texture level
US8503536B2 (en) * 2006-04-07 2013-08-06 Microsoft Corporation Quantization adjustments for DC shift artifacts
JP5271271B2 (ja) * 2006-11-03 2013-08-21 サムスン エレクトロニクス カンパニー リミテッド 動きベクトル・トラッキングを利用した映像の符号化、復号化方法及び装置
EP2182732A1 (en) * 2008-10-28 2010-05-05 Panasonic Corporation Switching between scans in image coding
KR101503269B1 (ko) * 2010-04-05 2015-03-17 삼성전자주식회사 영상 부호화 단위에 대한 인트라 예측 모드 결정 방법 및 장치, 및 영상 복호화 단위에 대한 인트라 예측 모드 결정 방법 및 장치
CN102695061B (zh) * 2011-03-20 2015-01-21 华为技术有限公司 一种权重因子的确定方法和装置,以及一种帧内加权预测方法和装置
CN102291584B (zh) * 2011-09-01 2013-04-17 西安电子科技大学 帧内图像亮度块预测装置及方法
CN110830797B (zh) * 2012-01-18 2023-09-15 韩国电子通信研究院 视频解码装置、视频编码装置和传输比特流的方法
WO2013155662A1 (en) 2012-04-16 2013-10-24 Mediatek Singapore Pte. Ltd. Methods and apparatuses of simplification for intra chroma lm mode
WO2017035831A1 (en) * 2015-09-06 2017-03-09 Mediatek Inc. Adaptive inter prediction
US10425648B2 (en) * 2015-09-29 2019-09-24 Qualcomm Incorporated Video intra-prediction using position-dependent prediction combination for video coding
US10455228B2 (en) * 2016-03-21 2019-10-22 Qualcomm Incorporated Determining prediction parameters for non-square blocks in video coding
US10425640B2 (en) * 2016-06-16 2019-09-24 Peking University Shenzhen Graduate School Method, device, and encoder for controlling filtering of intra-frame prediction reference pixel point
US10674165B2 (en) * 2016-12-21 2020-06-02 Arris Enterprises Llc Constrained position dependent intra prediction combination (PDPC)
CN107071417B (zh) * 2017-04-10 2019-07-02 电子科技大学 一种用于视频编码的帧内预测方法
US10491893B1 (en) * 2018-08-29 2019-11-26 Tencent America LLC Method and apparatus for multi-line intra prediction
GB2577337A (en) * 2018-09-24 2020-03-25 Sony Corp Image data encoding and decoding
US20200162737A1 (en) * 2018-11-16 2020-05-21 Qualcomm Incorporated Position-dependent intra-inter prediction combination in video coding
US11057622B2 (en) * 2018-12-13 2021-07-06 Qualcomm Incorporated Position dependent intra prediction combination with non-square block diagonals
US11363284B2 (en) * 2019-05-09 2022-06-14 Qualcomm Incorporated Upsampling in affine linear weighted intra prediction

Also Published As

Publication number Publication date
IL284220B2 (en) 2025-03-01
KR20240161209A (ko) 2024-11-12
AU2019401170B2 (en) 2023-03-30
PT3881549T (pt) 2024-05-20
KR102725069B1 (ko) 2024-10-31
CN114885159B (zh) 2023-10-20
JP2023100834A (ja) 2023-07-19
ZA202104005B (en) 2022-07-27
CA3122769A1 (en) 2020-06-25
EP3881549A1 (en) 2021-09-22
JP2022514885A (ja) 2022-02-16
CN114885158B (zh) 2023-10-20
BR112021011723A2 (pt) 2021-08-31
EP4307673A2 (en) 2024-01-17
EP3881549B1 (en) 2024-03-06
WO2020130889A1 (en) 2020-06-25
EP4307673A3 (en) 2024-02-14
JP7277586B2 (ja) 2023-05-19
CN112889286B (zh) 2022-04-19
MX2024013487A (es) 2024-12-06
CN114885159A (zh) 2022-08-09
MY207582A (en) 2025-03-05
KR20210091322A (ko) 2021-07-21
US20240422353A1 (en) 2024-12-19
CN114885158A (zh) 2022-08-09
AU2019401170A1 (en) 2021-06-24
CN114885157A (zh) 2022-08-09
JP7508645B2 (ja) 2024-07-01
HUE067148T2 (hu) 2024-10-28
IL284220A (en) 2021-08-31
PL3881549T3 (pl) 2024-06-24
CN112889286A (zh) 2021-06-01
US12108077B2 (en) 2024-10-01
MX2021007092A (es) 2021-08-11
IL284220B1 (en) 2024-11-01
US20220124368A1 (en) 2022-04-21
EP3881549A4 (en) 2022-06-22

Similar Documents

Publication Publication Date Title
ES2946909T3 (es) Método, aparato y producto de programa informático para interpredicción
ES2989421T3 (es) Un codificador, un decodificador y métodos correspondientes para la intrapredicción
ES2973667T3 (es) Un codificador de video, un decodificador de video y métodos correspondientes
ES2984321T3 (es) Método y aparato de restricciones a nivel de bloque dependientes de modo y tamaño
ES2974160T3 (es) Decodificador de video y métodos
ES2996341T3 (en) Video processing method, video processing apparatus, encoder, decoder, medium and computer program
ES3009580T3 (en) Relation between partition constraint elements
ES2987742T3 (es) Método y aparato para intrapredicción
CN112889281B (zh) 对图像中的块进行帧内预测的方法、设备和存储介质
ES3014838T3 (en) Method for deriving interpolation filter index for a current block; devices for video compression
CN113196748B (zh) 帧内预测方法及相关装置
ES2967663T3 (es) Método y aparato para el almacenamiento de información de movimiento
ES2988839T3 (es) Método y aparato de modelización lineal de componentes cruzados para intrapredicción
BR112021013644A2 (pt) Codificador, decodificador e métodos correspondentes de adaptação de filtro de deblocagem
ES2998460T3 (en) Method and apparatus for intra prediction
ES2983321T3 (es) Método y aparato de filtrado de interpolación para la codificación predictiva
ES3001382T3 (en) Encoder, decoder and corresponding methods using dct2 enabled high level flag
ES2992660T3 (en) Method and apparatus for chroma intra prediction in video coding
ES2946058T3 (es) Un codificador, un decodificador y los métodos correspondientes que usan la codificación intramodo para la intrapredicción
EP3841752A1 (en) Method and apparatus for hierarchical signaling of enabling and disabling prediction mechanisms for video coding