[go: up one dir, main page]

ES2994752T3 - Chroma block prediction method and device - Google Patents

Chroma block prediction method and device Download PDF

Info

Publication number
ES2994752T3
ES2994752T3 ES19897050T ES19897050T ES2994752T3 ES 2994752 T3 ES2994752 T3 ES 2994752T3 ES 19897050 T ES19897050 T ES 19897050T ES 19897050 T ES19897050 T ES 19897050T ES 2994752 T3 ES2994752 T3 ES 2994752T3
Authority
ES
Spain
Prior art keywords
value
difference
chroma
luma
block
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
ES19897050T
Other languages
English (en)
Inventor
Xiang Ma
Jianle Chen
Haitao Yang
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 ES2994752T3 publication Critical patent/ES2994752T3/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/117Filters, e.g. for pre-processing or post-processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/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/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/149Data rate or code amount at the encoder output by estimating the code amount by means of a model, e.g. mathematical model or statistical model
    • 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/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame 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/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/186Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/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/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/196Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Algebra (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Color Television Systems (AREA)

Abstract

La presente solicitud proporciona un método de predicción de bloques cromáticos y un dispositivo, pertenecientes al campo técnico de los vídeos. El método comprende: adquirir, sobre la base de píxeles de luminancia correspondientes a píxeles vecinos de un bloque cromático objetivo, un valor de luminancia máximo y un valor de luminancia mínimo, y calcular una primera diferencia entre el valor de luminancia máximo y el valor de luminancia mínimo; si la primera diferencia es mayor que 0, procesar la primera diferencia según el número de bits válidos en la primera diferencia y una primera profundidad de bits predeterminada para obtener una segunda diferencia, siendo la profundidad de bits de la segunda diferencia menor que la profundidad de bits de la primera diferencia; determinar, según un primer valor cromático, un segundo valor cromático y la segunda diferencia, un parámetro de modelo de predicción intra-cuadro correspondiente al bloque cromático objetivo, en donde el primer valor cromático y el segundo valor cromático se determinan sobre la base de los píxeles vecinos del bloque cromático objetivo; y determinar la información de predicción del bloque de croma objetivo según el parámetro del modelo de predicción intra-cuadro y la información de reconstrucción de luminancia correspondiente al bloque de croma objetivo. La presente aplicación aumenta la eficiencia de la predicción del bloque de croma. (Traducción automática con Google Translate, sin valor legal)

Description

DESCRIPCIÓN
Método y dispositivo de predicción de bloques de croma
Antecedentes
Con el desarrollo de las tecnologías de Internet, hay más programas de aplicaciones de vídeo y cada vez son más los requisitos para los vídeos de alta definición en los programas de aplicaciones de vídeo. Sin embargo, debido a que los vídeos de alta definición necesitan una cantidad comparativamente grande de datos, es necesario codificarlos si se desea transmitirlos en un ancho de banda de red limitado. Generalmente, el procesamiento de codificación incluye principalmente intrapredicción, interpredicción, transformación, cuantificación, codificación de entropía, filtrado en bucle y similares.
En una tecnología relacionada, cuando se realiza una intrapredicción, para cualquier bloque de croma, se puede usar un modo lineal de componentes cruzados (CCLM) para determinar la información de predicción. El modo lineal de componentes cruzados también puede denominarse modo de predicción de componentes cruzados (CCP) o modo de intrapredicción de componentes cruzados (CCIP). El modo lineal de componentes cruzados es un método de intrapredicción de croma que usa correlación entre luma y croma. El método de intrapredicción de croma usa un componente de luma reconstruido para derivar información de predicción de un bloque de croma actual según el modelo lineal, y puede usar la siguiente ecuación: predc (i, j) = a*reci_'(i, j) p, dondeay p son parámetros del modelo de intrapredicción,aes un coeficiente de escalado, p es un factor de desplazamiento, predc (i, j) es un valor de predicción de muestras de croma en una ubicación (i,j),y reci_'(i, j) es un valor de muestra reconstruido de luma en la ubicación (i, j) después de que un bloque reconstruido de luma correspondiente al bloque de croma actual se submuestree a una resolución de componente de croma. No es necesario codificar ni transmitir el coeficiente de escalado ni el factor de desplazamiento, sino que se derivan usando muestras de límite de un bloque reconstruido vecino del bloque de croma actual y muestras de luma en una ubicación correspondiente de la muestra de límite.
De esta manera, es necesario determinar un parámetro del modelo de intrapredicción para cada bloque de croma usando el CCLM. Sin embargo, en la tecnología relacionada, determinar el parámetro del modelo de intrapredicción es comparativamente complejo y, por lo tanto, la eficiencia de predicción del bloque de croma es comparativamente baja.
El documento de SULLIVAN (MICROSOFT) G J ET AL, no. JVET-G1000 (XP030150979) proporciona un informe de la reunión de 7" del Equipo Conjunto de Exploración de Video (JVET).
El documento GB 2505640 A describe un método y un aparato para comprimir o descomprimir una secuencia de vídeo de imágenes. El documento CN 105306944 A proporciona un método de predicción de componentes de crominancia en un estándar de codificación de vídeo híbrido. El documento de GUILLAUME LAROCHE ET AL, "CE3-5.1 Cross-component linear model simplification", n.° JVET-L0191, 12 de octubre de 2018, páginas 1-4, describe una modificación del modelo CCLM. Para determinar a y p para el modelo CCLM en esta modificación, se buscan muestras de luma mínimas y máximas entre las muestras de luma reconstruidas vecinas superior e izquierda sin submuestreo. Después de identificar las muestras de luma mínima y máxima, se generan sus submuestras de luma correspondientes y a y p se derivan por el modelo lineal formado por las submuestras de luma y las muestras de croma correspondientes.
Compendio
La invención se establece en el conjunto de reivindicaciones adjuntas. Para resolver problemas en la tecnología relacionada, las realizaciones de esta solicitud proporcionan un método y un aparato de predicción de bloques de croma. Las soluciones técnicas son de la siguiente manera.
Según un primer aspecto, se proporciona un método de predicción de bloques de croma según la reivindicación 1.
En la solución descrita en esta realización de esta solicitud, cuando se realiza la determinación hasta un bloque de croma actual (que puede denominarse bloque de croma objetivo), se puede determinar un esquema de codificación del bloque de croma objetivo. Si el esquema de codificación es un CCLM, se pueden determinar las muestras vecinas del bloque de croma objetivo y luego se determinan el valor de luma máximo y el valor de luma mínimo en función de las muestras vecinas. Luego, se puede determinar una diferencia entre el valor de luma máximo y el valor de luma mínimo, es decir, la primera diferencia. Se determina si la primera diferencia es mayor que 0. Si la primera diferencia es mayor que 0, se determina la cantidad de bits significativos de la primera diferencia y se procesa la primera diferencia en función de la cantidad de bits significativos de la primera diferencia y la primera profundidad de bits preestablecida para obtener la segunda diferencia, donde la profundidad de bits de la segunda diferencia es menor que la profundidad de bits de la primera diferencia.
Luego, el parámetro del modelo de intrapredicción correspondiente al bloque de croma objetivo se puede determinar en función del primer valor de croma, el segundo valor de croma y la segunda diferencia, donde el primer valor de croma y el segundo valor de croma se determinan en función de las muestras vecinas del bloque de croma objetivo. El parámetro del modelo de intrapredicción incluye un coeficiente de escalado (que también puede denominarse coeficiente de escalado objetivo) y un factor de desplazamiento (que también puede denominarse factor de desplazamiento objetivo). Se obtiene la información de reconstrucción de luma correspondiente al bloque de croma objetivo y luego se determina la información de predicción del bloque de croma objetivo en función del parámetro del modelo de intrapredicción determinado y la información de reconstrucción de luma correspondiente al bloque de croma objetivo.
De esta manera, cuando se determina el coeficiente de escalado, la primera diferencia entre el valor de luma máximo y el valor de luma mínimo se procesa en función de la cantidad de bits significativos de la primera diferencia y la primera profundidad de bits preestablecida para obtener la segunda diferencia, donde la profundidad de bits de la segunda diferencia es menor que la profundidad de bits de la primera diferencia. Esto puede reducir la cantidad de cálculos para determinar el coeficiente de escalado, reducir aún más la cantidad de cálculos para determinar el factor de desplazamiento, disminuir la complejidad de cálculo del parámetro del modelo de intrapredicción y mejorar la eficiencia de predicción de un bloque de croma.
La obtención de un valor de luma máximo y un valor de luma mínimo en función de muestras de luma correspondientes a muestras vecinas de un bloque de croma objetivo incluye: obtener el valor de luma máximo y el valor de luma mínimo en las muestras de luma correspondientes a las muestras vecinas del bloque de croma objetivo.
En la solución descrita en esta realización de esta solicitud, cuando se realiza la determinación hasta el bloque de croma actual (que puede denominarse el bloque de croma objetivo), se puede determinar un esquema de codificación del bloque de croma objetivo. Si el esquema de codificación es el CCLM, se pueden determinar las muestras vecinas del bloque de croma objetivo. Luego, se determinan el valor de luma máximo y el valor de luma mínimo en las muestras de luma correspondientes a estas muestras. Cuando se determinan el primer valor de croma y el segundo valor de croma, un valor de croma de muestras de croma correspondiente a muestras de luma a las que pertenece el valor de luma máximo puede determinarse como el primer valor de croma, y un valor de croma de muestras de croma correspondiente a muestras de luma a las que pertenece el valor de luma mínimo puede determinarse como el segundo valor de croma.
En una posible implementación, la obtención de un valor de luma máximo y un valor de luma mínimo en función de muestras de luma correspondientes a muestras vecinas de un bloque de croma objetivo incluye: dividir una cantidad preestablecida de muestras de luma correspondientes a una cantidad preestablecida de muestras vecinas del bloque de croma objetivo en un primer conjunto de muestras de luma y un segundo conjunto de muestras de luma, donde una cantidad de muestras de luma en el primer conjunto de muestras de luma es la misma que una cantidad de muestras de luma en el segundo conjunto de muestras de luma, y los valores de luma de las muestras de luma en el primer conjunto de muestras de luma son mayores o iguales que los valores de luma de las muestras de luma en el segundo conjunto de muestras de luma; y determinar el valor de luma máximo en función del primer conjunto de muestras de luma, y determinar el valor de luma mínimo en función del segundo conjunto de muestras de luma.
En la solución descrita en esta realización de esta solicitud, cuando se realiza la determinación hasta el bloque de croma actual (que puede denominarse el bloque de croma objetivo), se puede determinar un esquema de codificación del bloque de croma objetivo. Si el esquema de codificación es el CCLM, se pueden determinar las muestras vecinas del bloque de croma objetivo. Luego, se selecciona una cantidad preestablecida de muestras de croma (puede estar preestablecida, por ejemplo, en 4) de las muestras de croma de estas muestras, y luego se obtiene una cantidad objetivo de muestras de luma correspondientes a cada muestra de croma en la cantidad preestablecida de muestras de croma en función de la cantidad preestablecida de muestras de croma, y se realiza un procesamiento de ponderación por separado sobre los valores de luma de la cantidad objetivo de muestras de luma correspondientes a cada muestra de croma, para obtener valores de luma de la cantidad preestablecida de muestras de luma (un proceso de realización del procesamiento de ponderación sobre los valores de luma de la cantidad objetivo de muestras de luma para obtener los valores de luma de las muestras de luma puede denominarse proceso de submuestreo).
Luego, la cantidad preestablecida de muestras de luma se divide en el primer conjunto de muestras de luma y el segundo conjunto de muestras de luma. La cantidad de muestras de luma incluidas en el primer conjunto de muestras de luma es la misma que la cantidad de muestras de luma incluidas en el segundo conjunto de muestras de luma. El valor de luma de cada muestra de luma en el primer conjunto de muestras de luma es mayor o igual que el valor de luma de cada muestra de luma en el segundo conjunto de muestras de luma. Luego, se toma un valor promedio de los valores de luma de las muestras de luma en el primer conjunto de muestras de luma, para obtener el valor de luma máximo, y se toma un valor promedio de los valores de luma de las muestras de luma en el segundo conjunto de muestras de luma, para obtener el valor de luma mínimo. Un valor promedio obtenido de muestras de croma de las muestras de luma en el primer conjunto de muestras de luma se determina como el primer valor de croma, y un valor promedio obtenido de muestras de croma de las muestras de luma en el segundo conjunto de muestras de luma se determina como el segundo valor de croma.
En una posible implementación, el primer valor de croma corresponde al valor de luma máximo, y el segundo valor de croma corresponde al valor de luma mínimo.
En una posible implementación, el procesamiento de la primera diferencia para obtener una segunda diferencia incluye: desplazar la primera diferencia hacia la derecha para obtener la segunda diferencia.
En la solución descrita en esta realización de esta solicitud, después de que se determina la primera diferencia, la primera diferencia puede desplazarse hacia la derecha en función de la cantidad de bits significativos de la primera diferencia y la primera profundidad de bits preestablecida, para obtener la segunda diferencia.
En una posible implementación, se determina una tercera diferencia entre la cantidad de bits significativos de la primera diferencia y la primera profundidad de bits preestablecida. La primera diferencia se desplaza hacia la derecha en función de la tercera diferencia para obtener la segunda diferencia, donde la tercera diferencia es mayor que 0.
En la solución descrita en esta realización de esta solicitud, se puede determinar la diferencia entre el valor de luma máximo y el valor de luma mínimo, es decir, la primera diferencia. Luego, se puede determinar si la primera diferencia es mayor que 0. Si la primera diferencia es mayor que 0, se puede determinar la cantidad de bits significativos de la primera diferencia, y se puede obtener la primera profundidad de bits preestablecida prealmacenada. Luego, se puede determinar una diferencia entre la cantidad de bits significativos de la primera diferencia y la primera profundidad de bits preestablecida, es decir, la tercera diferencia.
Luego, se puede determinar si la tercera diferencia es mayor que 0. Si la tercera diferencia es mayor que 0, la primera diferencia puede desplazarse hacia la derecha en función de la tercera diferencia para obtener la segunda diferencia.
De esta manera, en lugar de desplazar directamente la primera diferencia hacia la derecha en bits de la primera profundidad de bits preestablecida, se usa una diferencia entre la primera diferencia y la primera profundidad de bits preestablecida como una cantidad de bits desplazados hacia la derecha, y los bits significativos de la primera diferencia se pueden retener tanto como sea posible. Esto puede mejorar el rendimiento de la codificación.
En una posible implementación, la primera diferencia se desplaza hacia la derecha en bits de la tercera diferencia, para obtener la segunda diferencia.
De esta manera, en lugar de desplazar directamente la primera diferencia hacia la derecha en bits de la primera profundidad de bits preestablecida, se usa una diferencia entre la primera diferencia y la primera profundidad de bits preestablecida como una cantidad de bits desplazados hacia la derecha, y los bits significativos de la primera diferencia se pueden retener tanto como sea posible. Esto puede mejorar el rendimiento de la codificación.
En una posible implementación, el parámetro del modelo de intrapredicción correspondiente al bloque de croma objetivo se determina en función del primer valor de croma, el segundo valor de croma, un valor preestablecido de un parámetro de desplazamiento normalizado, la segunda diferencia, y el valor de luma mínimo.
El parámetro de desplazamiento normalizado se usa para realizar el procesamiento de desplazamiento, y el valor preestablecido del parámetro de desplazamiento normalizado se puede preestablecer y almacenar en un aparato mencionado a continuación.
En la solución descrita en esta realización de esta solicitud, cada bloque de croma que usa el CCLM corresponde a un parámetro del modelo de intrapredicción, y el parámetro del modelo de intrapredicción incluye un factor de desplazamiento y un coeficiente de escalado. Se puede determinar un coeficiente de escalado y un factor de desplazamiento correspondiente al bloque de croma objetivo en función del primer valor de croma, el segundo valor de croma, el valor preestablecido del parámetro de desplazamiento normalizado, la segunda diferencia, el valor de luma mínimo y una fórmula preestablecida.
En una posible implementación, el coeficiente de escalado en el parámetro del modelo de intrapredicción correspondiente al bloque de croma objetivo se determina en función del primer valor de croma, el segundo valor de croma, la segunda diferencia, y el valor preestablecido. El factor de desplazamiento en el parámetro del modelo de intrapredicción correspondiente al bloque de croma objetivo se determina en función del coeficiente de escalado, el segundo valor de croma, un valor objetivo del parámetro de desplazamiento normalizado, y el valor de luma mínimo.
En la solución descrita en esta realización de esta solicitud, se puede obtener el valor preestablecido del parámetro de desplazamiento normalizado, y el valor preestablecido es un valor del parámetro preestablecido para el parámetro de desplazamiento normalizado. Luego, el primer valor de croma, el segundo valor de croma, el valor preestablecido del parámetro de desplazamiento normalizado y la segunda diferencia se pueden introducir en una fórmula preestablecida para obtener el coeficiente de escalado correspondiente al bloque de croma objetivo, y luego el coeficiente de escalado, el valor preestablecido del parámetro de desplazamiento normalizado, y el valor de luma mínimo se introducen en otra fórmula preestablecida, para obtener el factor de desplazamiento correspondiente al bloque de croma objetivo.
En una posible implementación, la determinación, en función del coeficiente de escalado, el segundo valor de croma, el valor preestablecido del parámetro de desplazamiento normalizado, y el valor de luma mínimo, de un factor de desplazamiento en el parámetro del modelo de intrapredicción correspondiente al bloque de croma objetivo incluye: determinar, en función del coeficiente de escalado, el segundo valor de croma, el valor objetivo del parámetro de desplazamiento normalizado, y el valor de luma mínimo, el factor de desplazamiento en el parámetro del modelo de intrapredicción correspondiente al bloque de croma objetivo, donde el valor objetivo del parámetro de desplazamiento normalizado se determina en función del valor preestablecido del parámetro de desplazamiento normalizado.
En la solución descrita en esta realización de esta solicitud, el valor objetivo del parámetro de desplazamiento normalizado se determina en función del valor preestablecido del parámetro de desplazamiento normalizado, y el factor de desplazamiento en el parámetro del modelo de intrapredicción correspondiente al bloque de croma objetivo se determina en función del coeficiente de escalado, el segundo valor de croma, el valor objetivo del parámetro de desplazamiento normalizado, y el valor de luma mínimo. De esta manera, debido a que se usa el valor objetivo del parámetro de desplazamiento normalizado, el parámetro de intrapredicción determinado puede ser más preciso.
= (maxC -min C ) *Floor
En una posible implementación, v' d~'iJfJf J, donde a es el coeficiente de escalado,diffes la segunda diferencia, max C es el primer valor de croma, min C es el segundo valor de croma y N es el valor preestablecido.
En la solución descrita en esta realización de esta solicitud, el coeficiente de escalado se determina según una
a= fmaxC - --2-N--fórmulaV d i f f, . Debido a quediffse desplaza hacia la derecha con respecto a
la primera diferencia, puede determinar a través de una tabla de búsqueda. Esto reduce la complejidad.
En una posible implementación, donde
, a es el coeficiente de escalado,diff
es la segunda diferencia, max C es el primer valor de croma, minCes el segundo valor de croma y N es el valor preestablecido.
En la solución descrita en esta realización de esta solicitud, el coeficiente de escalado se determina según una
fórmula .Diffse desplaza hacia la derecha con respecto a la
Floor f-2n
primera diferencia, yy d iffpuede determinarse a través de una tabla de búsqueda. Por lo tanto, esto reduce la complejidad.
En una posible implementación, puede determinarse a través de una tabla de búsqueda. Esto aumenta la velocidad de procesamiento.
En una posible implementación, el coeficiente de escalado en el parámetro del modelo de intrapredicción correspondiente al bloque de croma objetivo se determina en función del primer valor de croma, el segundo valor de croma, el valor preestablecido, y la segunda diferencia. Si una cuarta diferencia entre una cantidad de bits significativos del coeficiente de escalado inicial y una segunda profundidad de bits preestablecida es mayor que 0, el coeficiente de escalado inicial se desplaza hacia la derecha en función de la cuarta diferencia para obtener el coeficiente de escalado en el parámetro del modelo de intrapredicción correspondiente al bloque de croma objetivo.
En la solución descrita en esta realización de esta solicitud, el coeficiente de escalado inicial en el parámetro del modelo de intrapredicción correspondiente al bloque de croma objetivo se puede determinar en función del primer valor de croma, el segundo valor de croma, el valor preestablecido, y la segunda diferencia. Para este proceso, consulte la implementación 1 o la implementación 2 anteriores. Luego, se puede obtener la segunda profundidad de bits preestablecida correspondiente al coeficiente de escalado, se determina la cuarta diferencia entre la cantidad de bits significativos del coeficiente de escalado inicial y la segunda profundidad de bits preestablecida, y se determina si la cuarta diferencia es mayor que 0. Si la cuarta diferencia es mayor que 0, el coeficiente de escalado inicial se desplaza hacia la derecha en función de la cuarta diferencia para obtener el coeficiente de escalado correspondiente al bloque de croma objetivo.
De esta manera, después de que el coeficiente de escalado inicial se desplaza hacia la derecha, se reduce una profundidad de bits del coeficiente de escalado. Por lo tanto, esto puede reducir la complejidad de determinar posteriormente la multiplicación en la información de predicción.
En una posible implementación, el coeficiente de escalado inicial se desplaza hacia la derecha en bits de la cuarta diferencia, para obtener el coeficiente de escalado en el parámetro del modelo de intrapredicción correspondiente al bloque de croma objetivo.
En una posible implementación, el método incluye además: si la cuarta diferencia es mayor que 0, determinar una diferencia entre la cuarta diferencia y una suma del valor preestablecido del parámetro de desplazamiento normalizado y la tercera diferencia como el valor objetivo del parámetro de desplazamiento normalizado. En la solución descrita en esta realización de esta solicitud, si la cuarta diferencia es mayor que 0, la diferencia entre la cuarta diferencia y la suma del valor preestablecido del parámetro de desplazamiento normalizado y la tercera diferencia puede determinarse como el valor objetivo del parámetro de desplazamiento normalizado. En una posible implementación, la segunda profundidad de bits preestablecida es una profundidad de bits de un coeficiente de filtro de intrainterpolación.
En la solución descrita en esta realización de esta solicitud, la segunda profundidad de bits preestablecida se establece en la profundidad de bits del coeficiente del filtro de intrainterpolación, para alinearse con la complejidad de la intrapredicción.
En una posible implementación, la determinación, en función del coeficiente de escalado, el segundo valor de croma, un valor objetivo y el valor de luma mínimo, del factor de desplazamiento en el parámetro del modelo de intrapredicción correspondiente al bloque de croma objetivo incluye:
b = vcimC-Ua*min7 ) »k) ,'
vv’donde b es el factor de desplazamiento, a es el coeficiente de escalado, min C es el segundo valor de croma, minY es el valor de luma mínimo, y k es el valor objetivo. En la solución descrita en esta realización de esta solicitud, se puede obtener una fórmula de cálculo del factor de desplazamiento preestablecidob= minC- ((a*minY)>>k),que indica que se obtiene una diferencia entre minC y un valor obtenido después de que a*minY se desplaza k bits hacia la derecha, para obtener el factor de desplazamiento b correspondiente al bloque de croma objetivo. El coeficiente de escaladoa, el segundo croma min C, el valor objetivokdel parámetro de desplazamiento normalizado y el valor de luma mínimo minY se sustituyen en la fórmula para determinar el factor de desplazamiento b correspondiente al bloque de croma objetivo. K = N shiftLuma, donde shiftLuma es la tercera diferencia mencionada anteriormente.
En una posible implementación, el método incluye además: si la primera diferencia no es mayor que 0, determinar que el coeficiente de escalado en el parámetro del modelo de intrapredicción es 0, y determinar que el factor de desplazamiento en el parámetro del modelo de intrapredicción es el segundo valor de croma. En la solución descrita en esta realización de esta solicitud, si la primera diferencia no es mayor que 0, el coeficiente de escalado puede determinarse como 0. Luego, el segundo valor de croma, el valor objetivo del parámetro de desplazamiento normalizado y el valor de luma mínimo se sustituyen en la fórmulab =minC-((a*minY)>>^), para obtener que b = min C. En otras palabras, el factor de desplazamiento es el segundo valor de croma. De esta manera, el parámetro del modelo de intrapredicción correspondiente al bloque de croma objetivo puede determinarse cuando la primera diferencia no es mayor que 0.
En una posible implementación, el valor preestablecido del parámetro de desplazamiento normalizado es la profundidad de bits de la primera diferencia, una profundidad de bits de muestras de luma, una suma de la profundidad de bits de la primera diferencia y un segundo valor preestablecido, un producto de la profundidad de bits de la primera diferencia y un tercer valor preestablecido, o una profundidad de bits de un byte.
El segundo valor preestablecido es un número entero positivo, por ejemplo, 4 bits. El tercer valor preestablecido es un número entero positivo, por ejemplo, 2 bits.
En la solución descrita en esta realización de esta solicitud, el valor preestablecido del parámetro de desplazamiento normalizado puede establecerse en la profundidad de bits de la primera diferencia. El valor preestablecido del parámetro de desplazamiento normalizado también puede establecerse en la profundidad de bits de muestras de luma.
El valor preestablecido del parámetro de desplazamiento normalizado también puede establecerse en la suma de la profundidad de bits de la primera diferencia y el segundo valor preestablecido. Por ejemplo, la profundidad de bits de la primera diferencia es de 4 bits, el segundo valor preestablecido es de 4 bits, y el valor preestablecido del parámetro de desplazamiento normalizado puede ser de 8 bits.
El valor preestablecido del parámetro de desplazamiento normalizado también puede establecerse en el producto de la profundidad de bits de la primera diferencia y el tercer valor preestablecido. Por ejemplo, la profundidad de bits de la primera diferencia es de 4 bits, el tercer valor preestablecido es 2, y el valor preestablecido del parámetro de desplazamiento normalizado es de 8 bits.
El valor preestablecido del parámetro de desplazamiento normalizado puede establecerse en la profundidad de bits de un byte.
De esta manera, el valor preestablecido del parámetro de desplazamiento normalizado se puede ajustar a uno cualquiera de los valores anteriores, y es menor que 16 en la tecnología relacionada. Esto puede reducir una profundidad de bits de un valor en la tabla para una búsqueda posterior y, por lo tanto, reducir la cantidad de datos de la tabla.
En una posible implementación, la primera profundidad de bits preestablecida es menor que la profundidad de bits de las muestras de luma.
En una posible implementación, la información de reconstrucción de luma correspondiente al bloque de croma objetivo incluye información de submuestreo de un bloque de reconstrucción de luma correspondiente al bloque de croma objetivo.
Según un segundo aspecto, se proporciona un aparato de predicción de bloques de croma. El aparato de predicción incluye un procesador y una memoria. La memoria está configurada para almacenar instrucciones informáticas ejecutadas por el procesador, y el procesador ejecuta las instrucciones para implementar el método de predicción de bloques de croma según el primer aspecto.
Según un tercer aspecto, se proporciona un aparato de predicción de bloques de croma. El aparato incluye uno o más módulos que están configurados para implementar el método de predicción de bloques de croma según el primer aspecto.
Según un cuarto aspecto, se proporciona un soporte de almacenamiento legible por ordenador. El soporte de almacenamiento legible por ordenador almacena instrucciones informáticas. Cuando las instrucciones informáticas en el soporte de almacenamiento legible por ordenador se ejecutan en un dispositivo informático, el dispositivo informático puede realizar el método de predicción de bloques de croma según el primer aspecto.
Según un quinto aspecto, se proporciona un producto de programa informático que incluye instrucciones. Cuando el producto de programa informático se ejecuta en un dispositivo informático, el dispositivo informático está habilitado para realizar el método de predicción de bloques de croma según el primer aspecto.
Las soluciones técnicas proporcionadas en esta solicitud pueden traer al menos los siguientes efectos beneficiosos:
En las realizaciones de esta solicitud, cuando se determina la información de predicción de un bloque de croma objetivo, un aparato de predicción de bloques de croma puede obtener un valor de luma máximo y un valor de luma mínimo en función de muestras de luma correspondientes a muestras vecinas del bloque de croma objetivo, y luego determinar una primera diferencia entre el valor de luma máximo y el valor de luma mínimo. Si la primera diferencia es mayor que 0, la primera diferencia puede procesarse en función de una cantidad de bits significativos de la primera diferencia y una primera profundidad de bits preestablecida para obtener una segunda diferencia, donde una profundidad de bits de la segunda diferencia es menor que una profundidad de bits de la primera diferencia. Luego, se determina un parámetro del modelo de intrapredicción correspondiente al bloque de croma objetivo en función de un primer valor de croma, un segundo valor de croma, y la segunda diferencia, y luego se determina la información de predicción del bloque de croma objetivo en función del parámetro del modelo de intrapredicción y la información de reconstrucción de luma correspondiente al bloque de croma objetivo. De esta manera, cuando se determina el parámetro del modelo de intrapredicción, la primera diferencia entre el valor de luma máximo y el valor de luma mínimo se procesa en función de la cantidad de bits significativos de la primera diferencia y la primera profundidad de bits preestablecida, para que la profundidad de bits de la segunda diferencia sea menor que la profundidad de bits de la primera diferencia. Esto puede reducir la cantidad de cálculos del parámetro del modelo de intrapredicción, y mejorar la eficiencia de predicción del bloque de croma.
Breve descripción de los dibujos
La FIG. 1 es un diagrama de bloques de un ejemplo de un sistema de codificación de vídeo usado para implementar una realización de esta solicitud;
la FIG. 2 es un diagrama de bloques de un ejemplo de un sistema de codificación de vídeo que incluye uno o dos cualquiera de un codificador 20 en la FIG. 3 y un decodificador 30 en la FIG. 4;
la FIG. 3 es un diagrama de bloques que muestra una estructura de ejemplo de un codificador de vídeo usado para implementar una realización de esta solicitud;
la FIG. 4 es un diagrama de bloques que muestra una estructura de ejemplo de un decodificador de vídeo usado para implementar una realización de esta solicitud;
la FIG. 5 es un diagrama de bloques que ilustra un ejemplo de un aparato de codificación o un aparato de decodificación;
la FIG. 6 es un diagrama de bloques que ilustra un ejemplo de otro aparato de codificación u otro aparato de decodificación;
la FIG. 7 ilustra un ejemplo de una cuadrícula de muestreo en formato YUV;
la FIG. 8 ilustra una realización de un modo de predicción de componentes cruzados (CCP);
la FIG. 9 es un diagrama esquemático de una plantilla superior y una plantilla izquierda;
la FIG. 10 es otro diagrama esquemático de una plantilla superior y una plantilla izquierda;
la FIG. 11 es un diagrama de flujo esquemático de un método de predicción de bloques de croma;
la FIG. 12 es un diagrama de flujo esquemático de un método de predicción de bloques de croma; y la FIG. 13 es un diagrama esquemático de una estructura de un aparato de predicción de bloques de croma. Descripción de las realizaciones
Para aclarar los objetivos, las soluciones técnicas y las ventajas de esta solicitud, a continuación se describen adicionalmente las implementaciones de esta solicitud en detalle, con referencia a los dibujos adjuntos. Para facilitar la comprensión de esta solicitud, a continuación se describe primero una arquitectura del sistema y los conceptos de esta solicitud.
La codificación de vídeo generalmente se refiere al procesamiento de una secuencia de imágenes, que forman un vídeo o una secuencia de vídeo. En el campo de la codificación de vídeo, los términos "imagen", "fotograma" e "imagen" pueden usarse como sinónimos. La codificación de vídeo usada en la solicitud (o esta descripción) indica codificación de vídeo o decodificación de vídeo. La codificación de vídeo se realiza en un lado de origen, lo que generalmente comprende el procesamiento (por ejemplo, por compresión) de unas imágenes de vídeo originales para reducir la cantidad de datos para representar las imágenes de vídeo, para almacenamiento y/o transmisión más eficiente. La decodificación de vídeo se realiza en el lado de destino y generalmente incluye procesamiento inverso en comparación con el codificador para reconstruir unas imágenes de vídeo. En las realizaciones, por "codificación" de una imagen de vídeo se debe entender "codificación" o "decodificación" de una secuencia de vídeo. La combinación de la parte de codificación y la parte de decodificación también se denomina codificación y decodificación (CÓDEC para abreviar).
Cada imagen de una secuencia de vídeo generalmente se divide en un conjunto de bloques que no se superponen y la codificación generalmente se realiza a nivel de bloque. En otras palabras, en un lado del codificador, un vídeo generalmente se procesa, es decir, se codifica, a nivel de bloque (también denominado bloque de imagen o bloque de vídeo). Por ejemplo, un bloque de predicción se genera a través de predicción espacial (intraimagen) y predicción temporal (interimagen), el bloque de predicción se resta de un bloque actual (un bloque que se está procesando actualmente o que se procesará) para obtener un bloque residual, y el bloque residual se transforma en un dominio de transformación y se cuantifica para reducir la cantidad de datos que se van a transmitir (comprimir). En un lado del decodificador, se aplica una parte de procesamiento inverso con respecto al codificador al bloque codificado o comprimido para reconstruir el bloque actual para su representación. Además, el codificador duplica el bucle de procesamiento del decodificador para que tanto el codificador como el decodificador generen predicciones idénticas (por ejemplo, intrapredicciones e interpredicciones) y/o reconstrucciones para su procesamiento, es decir, la codificación, de los bloques posteriores.
El término "bloque" puede ser una parte de una imagen o un fotograma. Los términos clave en esta solicitud se definen de la siguiente manera:
Bloque actual: un bloque que se está procesando. Por ejemplo, en codificación, un bloque actual es un bloque que se está codificando actualmente. En la decodificación, un bloque actual es un bloque que se está decodificando. Si el bloque que se está procesando es un bloque de componente de croma, se denomina bloque de croma actual. Un bloque de luma correspondiente al bloque de croma actual puede denominarse bloque de luma actual.
Bloque de referencia: un bloque que proporciona una señal de referencia para un bloque actual. En un proceso de búsqueda, se pueden recorrer una pluralidad de bloques de referencia para encontrar un bloque de referencia óptimo.
Bloque de predicción: un bloque que proporciona predicción para un bloque actual. Por ejemplo, después de recorrer una pluralidad de bloques de referencia para encontrar un bloque de referencia óptimo. El bloque de referencia óptimo proporciona predicción para el bloque actual, y este bloque se denomina bloque de predicción.
Señal de bloque de imagen: un valor de muestra, un valor de muestreo o una señal de muestreo en un bloque de imagen.
Señal de predicción: un valor de muestra, un valor de muestreo o una señal de muestreo en un bloque de predicción.
A continuación se describen realizaciones de un codificador 20, un decodificador 30 y un sistema 10 de codificación con referencia a la FIG. 1, y de la FIG. 2 a la FIG. 4.
La FIG. 1 es un diagrama de bloques conceptual o esquemático de un sistema 10 de codificación de ejemplo, por ejemplo, un sistema 10 de codificación de vídeo que puede usar una tecnología de esta solicitud (esta descripción). El codificador 20 (por ejemplo, el codificador 20 de vídeo) y el decodificador 30 (por ejemplo, el decodificador 30 de vídeo) del sistema 10 de codificación de vídeo representan dispositivos de ejemplo que pueden configurarse para realizar intrapredicción en función de diversos ejemplos descritos en esta solicitud. Como se muestra en la FIG. 1, el sistema 10 de codificación comprende un dispositivo 12 de origen configurado para proporcionar datos 13 codificados tal como una imagen 13 codificada, por ejemplo, a un dispositivo 14 de destino para decodificar los datos 13 codificados.
El dispositivo 12 de origen comprende un codificador 20, y opcionalmente, puede incluir un origen 16 de imágenes, una unidad 18 de preprocesamiento de una unidad 18 de preprocesamiento de imágenes, y una interfaz de comunicaciones o unidad 22 de comunicaciones.
El origen 16 de imágenes puede comprender o ser cualquier tipo de dispositivo de captura de imágenes, por ejemplo, para capturar una imagen del mundo real, y/o cualquier tipo de dispositivo de generación de imágenes o comentarios (para la codificación del contenido de pantalla, algunos textos en una pantalla también se consideran una parte de una imagen o una imagen a codificar), por ejemplo, un procesador de gráficos por ordenador configurado para generar una imagen animada por ordenador, o cualquier tipo de dispositivo configurado para obtener y/o proporcionar una imagen del mundo real, una imagen animada por ordenador (por ejemplo, un contenido de pantalla, una imagen de realidad virtual (VR)); y/o cualquier combinación de los mismas (por ejemplo, una imagen de realidad aumentada (AR)).
Una imagen puede considerarse como una matriz o conjunto bidimensional de muestras con valores de luma. Una muestra en la matriz también puede denominarse píxel (una forma abreviada de elemento de imagen) o pel. Una cantidad de muestras en dirección horizontal y vertical (o eje) de la matriz o la imagen define un tamaño y/o una resolución de la imagen. Para representar un color, generalmente se usan tres componentes de color. Es decir, la imagen puede representarse o incluirse como tres matrices de muestras. En un espacio de color o un formato RGB, una imagen incluye matrices de muestras roja, verde y azul correspondientes. Sin embargo, en la codificación de vídeo, cada píxel generalmente se representa en un espacio de color o formato de luma/croma, por ejemplo, YCbCr, que incluye un componente de luma indicado por Y (a veces también se usa L en su lugar) y dos componentes de croma indicados por Cb y Cr. El componente Y de luminancia (luma para abreviar) representa el brillo o la intensidad del nivel de grises (por ejemplo, ambos son iguales en una imagen en escala de grises), y los dos componentes de crominancia (croma para abreviar) Cb y Cr representan los componentes de croma o información de color. Correspondientemente, una imagen en formato YCbCr incluye una matriz de muestras de luma de valores (Y) de muestras de luma y dos matrices de muestras de croma de valores (Cb y Cr) de croma. Una imagen en un formato RGB puede transformarse o convertirse en una imagen en formato YCbCr y viceversa. Este proceso también se denomina conversión o transformación de color. Si una imagen es monocromática, la imagen puede incluir solo una matriz de muestras de luma.
El origen 16 de imágenes (por ejemplo, un origen 16 de vídeo) puede ser, por ejemplo, una cámara para capturar una imagen, o una memoria tal como una memoria de imágenes, que incluye o almacena una imagen previamente capturada o generada, y/o cualquier tipo de interfaz (interna o externa) para obtener o recibir una imagen. La cámara puede ser, por ejemplo, una cámara local o una cámara integrada en el dispositivo de origen, la memoria puede ser una memoria local o, por ejemplo, una memoria en el dispositivo de origen. La interfaz puede ser, por ejemplo, una interfaz externa para recibir una imagen de un origen de vídeo externo. El origen de vídeo externo es, por ejemplo, un dispositivo externo de captura de imágenes tal como una cámara, una memoria externa o un dispositivo externo de generación de imágenes. El dispositivo externo de generación de imágenes es, por ejemplo, un procesador gráfico externo, un ordenador o un servidor. La interfaz puede ser cualquier tipo de interfaz, por ejemplo, una interfaz por cable o inalámbrica, una interfaz óptica, según cualquier protocolo de interfaz patentado o estandarizado. La interfaz para obtener los datos 17 de imagen puede ser una misma interfaz o una parte de la interfaz 22 de comunicaciones.
A diferencia de la unidad 18 de preprocesamiento y el procesamiento realizado por la unidad 18 de preprocesamiento, la imagen o los datos 17 de imagen (por ejemplo, los datos 16 de vídeo) también pueden denominarse imagen sin procesar o datos 17 de imagen sin procesar.
La unidad 18 de preprocesamiento está configurada para recibir los datos 17 de imagen (sin procesar) y para realizar el preprocesamiento de los datos 17 de imagen para obtener una imagen 19 preprocesada o datos 19 de imagen preprocesados. Por ejemplo, el preprocesamiento realizado por la unidad 18 de preprocesamiento puede incluir, por ejemplo, recorte, conversión de formato de color (por ejemplo, de RGB a YCbCr), corrección de color o eliminación de ruido. Puede entenderse que la unidad 18 de preprocesamiento puede ser un componente opcional.
El codificador 20 (por ejemplo, el codificador 20 de vídeo) está configurado para recibir los datos 19 de imagen preprocesados y proporcionar datos 21 de imagen codificados (a continuación se describirán más detalles, por ejemplo, basándose en la FIG. 3 o la FIG. 5). En un ejemplo, el codificador 20 puede configurarse para realizar las siguientes Realizaciones 1 a 7.
La interfaz 22 de comunicaciones del dispositivo 12 de origen puede estar configurada para recibir los datos 21 de imagen codificados y transmitir los datos 21 de imagen codificados a otro dispositivo, por ejemplo, el dispositivo 14 de destino o cualquier otro dispositivo, para almacenamiento o reconstrucción directa. De manera alternativa, la interfaz 22 de comunicaciones está configurada para procesar los datos 21 de imagen codificados antes de almacenar correspondientemente los datos 13 codificados y/o transmitir los datos 13 codificados a otro dispositivo. El otro dispositivo es, por ejemplo, el dispositivo 14 de destino o cualquier otro dispositivo usado para decodificación o almacenamiento.
El dispositivo 14 de destino incluye el decodificador 30 (por ejemplo, un decodificador 30 de vídeo), y puede incluir opcionalmente una interfaz de comunicaciones o unidad 28 de comunicaciones, una unidad 32 de posprocesamiento y un dispositivo 34 de visualización.
La interfaz 28 de comunicaciones del dispositivo 14 de destino está configurada para, por ejemplo, recibir los datos 21 de imagen codificados o los datos 13 codificados directamente del dispositivo 12 de origen o cualquier otro origen. El cualquier otro origen es, por ejemplo, un dispositivo de almacenamiento. El dispositivo de almacenamiento es, por ejemplo, un dispositivo de almacenamiento de datos de imagen codificados.
La interfaz 22 de comunicaciones y la interfaz 28 de comunicaciones pueden estar configuradas para transmitir o recibir los datos 21 de imagen codificados o los datos 13 codificados a través de un enlace de comunicaciones directo entre el dispositivo 12 de origen y el dispositivo 14 de destino o a través de cualquier tipo de red. El enlace de comunicaciones directo es, por ejemplo, una conexión directa por cable o inalámbrica. El cualquier tipo de red es, por ejemplo, una red por cable o inalámbrica o cualquier combinación de las mismas, o cualquier tipo de red privada o pública, o cualquier combinación de las mismas.
La interfaz 22 de comunicaciones puede configurarse, por ejemplo, para empaquetar los datos 21 de imagen codificados en un formato adecuado, por ejemplo, un paquete, para la transmisión a través de un enlace de comunicaciones o una red de comunicaciones.
La interfaz 28 de comunicaciones, que forma una parte correspondiente de la interfaz 22 de comunicaciones, puede configurarse, por ejemplo, para desempaquetar los datos 13 codificados para obtener los datos 21 de imagen codificados.
Tanto la interfaz 22 de comunicaciones como la interfaz 28 de comunicaciones pueden configurarse como interfaces de comunicaciones unidireccionales, como lo indica una flecha que apunta desde el dispositivo 12 de comunicaciones al dispositivo 14 de destino y que se usa para los datos 13 de imagen codificados en la FIG. 1, o pueden configurarse como interfaces de comunicaciones bidireccionales, y pueden configurarse para, por ejemplo, enviar y recibir mensajes para establecer una conexión, y para acuse de recibo e intercambiar cualquier otra información relacionada con un enlace de comunicaciones y/o transmisión de datos tal como transmisión de datos de imagen codificados.
El decodificador 30 está configurado para recibir los datos 21 de imagen codificados y proporcionar datos 31 de imagen decodificados o una imagen 31 decodificada (a continuación se describen más detalles, por ejemplo, basándose en la FIG. 4 o la FIG. 6). En un ejemplo, el decodificador 30 puede configurarse para realizar las siguientes Realizaciones 1 a 7.
El posprocesador 32 del dispositivo 14 de destino está configurado para posprocesar los datos 31 de imagen decodificados (también denominados datos de imagen reconstruidos), por ejemplo, la imagen 131 decodificada, para obtener datos 33 de imagen posprocesados, por ejemplo, una imagen 33 posprocesada. El posprocesamiento realizado por la unidad 32 de posprocesamiento puede comprender, por ejemplo, conversión de formato de color (por ejemplo, de YCbCr a RGB), corrección de color, recorte o remuestreo, o cualquier otro procesamiento, por ejemplo, para preparar los datos 31 de imagen decodificados para la visualización, por ejemplo, por el dispositivo 34 de visualización.
El dispositivo 34 de visualización del dispositivo 14 de destino está configurado para recibir los datos 33 de imagen posprocesados para visualizar una imagen, por ejemplo, a un usuario o espectador. El dispositivo 34 de visualización puede ser o incluir cualquier tipo de pantalla para presentar una imagen reconstruida, por ejemplo, una pantalla o monitor integrado o externo. Por ejemplo, las pantallas pueden incluir, por ejemplo, una pantalla de cristal líquido (LCD), una pantalla de diodos orgánicos emisores de luz (OLED), una pantalla de plasma, un proyector, una pantalla de microLED, un cristal líquido sobre silicio (LCoS), un procesador de luz digital (DLP) o cualquier otro tipo de otras pantallas.
Aunque la FIG. 1 representa el dispositivo 12 de origen y el dispositivo 14 de destino como dispositivos separados, las realizaciones de los dispositivos pueden incluir de manera alternativa tanto el dispositivo 12 de origen como el dispositivo 14 de destino o funcionalidades de tanto el dispositivo 12 de origen como el dispositivo 14 de destino, es decir, el dispositivo 12 de origen o la funcionalidad correspondiente y el dispositivo 14 de destino o la funcionalidad correspondiente. En dichas realizaciones, el dispositivo 12 de origen o la funcionalidad correspondiente y el dispositivo 14 de destino o la funcionalidad correspondiente pueden implementarse usando el mismo hardware y/o software o por hardware y/o software separados o cualquier combinación de los mismos.
Como será evidente para un experto en la técnica basándose en las descripciones, la existencia y división (exacta) de funcionalidades de las diferentes unidades o las funcionalidades del dispositivo 12 de origen y/o del dispositivo 14 de destino mostradas en la FIG. 1 pueden variar dependiendo del dispositivo y la aplicación reales.
El codificador 20 (por ejemplo, el codificador 20 de vídeo) y el decodificador 30 (por ejemplo, el decodificador 30 de vídeo) cada uno puede implementarse como uno cualquiera de diversos circuitos adecuados, por ejemplo, uno o más microprocesadores, procesadores de señales digitales (DSP), circuitos integrados de aplicación específica (ASIC), matrices de puertas programables en campo (FPGA), lógica discreta, hardware o cualquier combinación de los mismos. Si las tecnologías se implementan parcialmente usando software, un dispositivo puede almacenar instrucciones de software en un soporte de almacenamiento legible por ordenador no transitorio adecuado y puede ejecutar las instrucciones usando hardware tal como uno o más procesadores para realizar las tecnologías de esta descripción. Cualquiera de los contenidos anteriores (incluyendo hardware, software, una combinación de hardware y software, y similares) puede considerarse como uno o más procesadores. El codificador 20 de vídeo y el decodificador 30 de vídeo puede incluirse cada uno en uno o más codificadores o decodificadores, y el codificador o el decodificador puede integrarse como una parte de un codificador/decodificador (CÓDEC) combinado en un dispositivo correspondiente.
El dispositivo 12 de origen puede denominarse dispositivo de codificación de vídeo o aparato de codificación de vídeo. El dispositivo 14 de destino puede denominarse dispositivo de decodificación de vídeo o aparato de decodificación de vídeo. El dispositivo 12 de origen y el dispositivo 14 de destino pueden ser un ejemplo de un dispositivo de codificación de vídeo o un aparato de codificación de vídeo.
El dispositivo 12 de origen y el dispositivo 14 de destino pueden incluir uno cualquiera de una amplia gama de dispositivos, incluido cualquier tipo de dispositivo portátil o fijo, por ejemplo, un notebook u ordenador portátil, un teléfono móvil, un teléfono inteligente, una tableta u ordenador tableta, una cámara de vídeo, un ordenador de escritorio, un decodificador, un televisor, un dispositivo de visualización, un reproductor de medios digitales, una consola de videojuegos, un dispositivo de transmisión de vídeo (tal como un servidor de servicios de contenido o un servidor de entrega de contenido), un dispositivo receptor de emisiones o un dispositivo transmisor de emisiones, y puede usar o no cualquier tipo de sistema operativo.
En algunos casos, el dispositivo 12 de origen y el dispositivo 14 de destino pueden estar equipados para comunicación inalámbrica. Por lo tanto, el dispositivo 12 de origen y el dispositivo 14 de destino pueden ser dispositivos de comunicaciones inalámbricas.
En algunos casos, el sistema 10 de codificación de vídeo mostrado en la FIG. 1 es simplemente un ejemplo y las tecnologías de esta solicitud pueden aplicarse a configuraciones de codificación de vídeo (por ejemplo, codificación de vídeo o decodificación de vídeo) que no necesariamente incluyen ninguna comunicación de datos entre un dispositivo de codificación y un dispositivo de decodificación. En otros ejemplos, los datos se pueden recuperar de una memoria local, se pueden transmitir a través de una red o similar. 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 la realizan dispositivos que no se comunican entre sí, sino que simplemente codifican datos en la memoria y/o recuperan y decodifican datos de la memoria.
Debe entenderse que, para cada uno de los ejemplos descritos con referencia al codificador 20 de vídeo, el decodificador 30 de vídeo puede configurarse para realizar un proceso recíproco. Con respecto a los elementos de sintaxis de señalización, el decodificador 30 de vídeo puede configurarse para recibir y analizar dicho elemento de sintaxis y decodificar correspondientemente los datos de vídeo relacionados. En algunos ejemplos, el codificador 20 de vídeo puede codificar por entropía el elemento de sintaxis en un flujo de bits de vídeo codificado. En tales ejemplos, el decodificador 30 de vídeo puede analizar tal elemento de sintaxis y decodificar correspondientemente los datos de vídeo relacionados.
La FIG. 2 es un diagrama ilustrativo de un ejemplo de un sistema 40 de codificación de vídeo que incluye el codificador 20 en la FIG. 3 y/o el decodificador 30 en la FIG. 4 según una realización de ejemplo. El sistema 40 puede implementar una combinación de diversas tecnologías de esta solicitud. En una implementación descrita, el sistema 40 de codificación de vídeo puede incluir un dispositivo 41 de formación de imágenes, el codificador 20 de vídeo, el decodificador 30 de vídeo (y/o un codificador de vídeo implementado usando un circuito 47 lógico de una unidad 46 de procesamiento), una antena 42, uno o más procesadores 43, uno o más memorias 44, y/o un dispositivo 45 de visualización.
Como se muestra en la FIG. 2, el dispositivo 41 de formación de imágenes, la antena 42, la unidad 46 de procesamiento, el circuito 47 lógico, el codificador 20 de vídeo, el decodificador 30 de vídeo, el procesador 43, la memoria 44 y/o el dispositivo 45 de visualización pueden comunicarse entre sí. Como se describe, aunque el sistema 40 de codificación de vídeo se ilustra usando el codificador 20 de vídeo y el decodificador 30 de vídeo, en otro ejemplo diferente, el sistema 40 de codificación de vídeo puede incluir solo el codificador 20 de vídeo o solo el decodificador 30 de vídeo.
En algunos ejemplos, como se muestra en la FIG. 2, el sistema 40 de codificación de vídeo puede incluir una antena 42. Por ejemplo, la antena 42 puede configurarse para transmitir o recibir flujos de bits codificados de datos de vídeo. Además, en algunos ejemplos, el sistema 40 de codificación de vídeo puede incluir el dispositivo 45 de visualización. El dispositivo 45 de visualización puede configurarse para presentar los datos de vídeo. En algunos ejemplos, como se muestra en la FIG. 2, el circuito 47 lógico puede implementarse por la unidad 46 de procesamiento. La unidad 46 de procesamiento puede incluir lógica de circuito integrado de aplicación específica (ASIC), un procesador de gráficos, un procesador de propósito general, o similares. El sistema 40 de codificación de vídeo puede incluir además un procesador 43 opcional. El procesador 43 opcional puede incluir de forma similar lógica de circuito integrado de aplicación específica (ASIC), un procesador de gráficos, un procesador de propósito general o similares. En algunos ejemplos, el circuito 47 lógico puede implementarse por hardware, por ejemplo, hardware dedicado para codificación de vídeo. El procesador 43 puede implementarse por un software de propósito general, un sistema operativo o similar. Además, la memoria 44 puede ser cualquier tipo de memoria, por ejemplo, una memoria volátil (por ejemplo, una memoria de acceso aleatorio estática (SRAM) o una memoria de acceso aleatorio dinámica (DRAM)) o una memoria no volátil (por ejemplo, una memoria flash). En un ejemplo no limitativo, la memoria 44 puede implementarse como una memoria caché. En algunos ejemplos, el circuito 47 lógico puede acceder a la memoria 44 (por ejemplo, para la implementación de un búfer de imágenes). En otros ejemplos, el circuito 47 lógico y/o la unidad 46 de procesamiento pueden incluir una memoria (por ejemplo, una caché) para la implementación de un búfer de imágenes o similar.
En algunos ejemplos, el codificador 20 de vídeo implementado usando el circuito lógico puede incluir un búfer de imágenes (que se implementa, por ejemplo, por la unidad 46 de procesamiento o la memoria 44) y una unidad de procesamiento de gráficos (que se implementa, por ejemplo, por la unidad 46 de procesamiento). La unidad de procesamiento de gráficos puede estar acoplada comunicativamente al búfer de imágenes. La unidad de procesamiento de gráficos puede incluir el codificador 20 de vídeo implementado a través del circuito 47 lógico para incorporar diversos módulos descritos con referencia a la FIG. 2 y/o cualquier otro sistema o subsistema codificador descrito en esta memoria descriptiva. El circuito lógico puede configurarse para realizar diversas operaciones descritas en esta memoria descriptiva.
El decodificador 30 de vídeo puede implementarse por el circuito 47 lógico de manera similar, para implementar diversos módulos descritos con referencia al decodificador 30 en la FIG. 4 y/o cualquier otro sistema o subsistema descrito en esta memoria descriptiva. En algunos ejemplos, el decodificador 30 de vídeo implementado usando el circuito lógico puede incluir un búfer de imágenes (que se implementa, por ejemplo, por la unidad 2820 de procesamiento o la memoria 44) y una unidad de procesamiento de gráficos (que se implementa, por ejemplo, por la unidad 46 de procesamiento). La unidad de procesamiento de gráficos puede estar acoplada comunicativamente al búfer de imágenes. La unidad de procesamiento de gráficos puede incluir un decodificador 30 de vídeo implementado usando el circuito 47 lógico, para implementar diversos módulos como se analizó con respecto a la FIG. 4 y/o cualquier otro sistema o subsistema decodificador descrito en esta memoria descriptiva.
En algunos ejemplos, la antena 42 del sistema 40 de codificación de vídeo puede configurarse para recibir un flujo de bits codificado de datos de vídeo. Como se describe, el flujo de bits codificado puede incluir datos, un indicador, un valor de índice, datos de selección de modo o similares que estén relacionados con la codificación de fotogramas de vídeo y que se describen en esta memoria descriptiva, por ejemplo, datos relacionados con el particionamiento de codificación (por ejemplo, un coeficiente de transformación o un coeficiente de transformación cuantificado, un indicador opcional (como se describe) y/o datos que definen el particionamiento de codificación). El sistema 40 de codificación de vídeo también puede incluir un decodificador 30 de vídeo que está acoplado a la antena 42 y configurado para decodificar el flujo de bits codificado. El dispositivo 45 de visualización está configurado para presentar fotogramas de vídeo.
Codificador y Método de Codificación
La FIG. 3 muestra un diagrama de bloques esquemático/conceptual de un ejemplo de un codificador 20 de vídeo configurado para implementar las tecnologías de esta solicitud (esta descripción). En el ejemplo en la FIG. 3, el codificador 20 de vídeo incluye una unidad 204 de cálculo residual, una unidad 206 de procesamiento de transformación, una unidad 208 de cuantificación, una unidad 210 de cuantificación inversa y una unidad 212 de procesamiento de transformación inversa, una unidad 214 de reconstrucción, un búfer 216, una unidad 220 de filtro de bucle, un búfer de imágenes decodificadas (DPB) 230, una unidad 260 de procesamiento de predicción y una unidad 270 de codificación de entropía. La unidad 260 de procesamiento de predicción puede incluir una unidad 244 de interpredicción, una unidad 254 de intrapredicción y una unidad 262 de selección de modo. La unidad 244 de interpredicción puede incluir una unidad de estimación de movimiento y una unidad de compensación de movimiento (no mostrada de la figura). El codificador 20 de vídeo como se muestra en la FIG. 3 también puede denominarse codificador de vídeo híbrido o codificador de vídeo basado en un códec de vídeo híbrido.
Por ejemplo, la unidad 204 de cálculo residual, la unidad 206 de procesamiento de transformación, la unidad 208 de cuantificación, la unidad 260 de procesamiento de predicción y la unidad 270 de codificación de entropía forman una ruta de señal directa del codificador 20, mientras que, por ejemplo, la unidad 210 de cuantificación inversa, la unidad 212 de procesamiento de transformación inversa, la unidad 214 de reconstrucción, el búfer 216, el filtro 220 de bucle, el búfer de imágenes decodificadas (DPB) 230 y la unidad 260 de procesamiento de predicción forman una ruta de señal inversa del codificador. La ruta de señal inversa del codificador corresponde a una ruta de señal de un decodificador (consulte el decodificador 30 en la FIG. 4).
El codificador 20 recibe, por ejemplo, a través de la entrada 202, una imagen 201 o un bloque 203 de la imagen 201, por ejemplo, una imagen de una secuencia de imágenes que forman un vídeo o secuencia de vídeo. El bloque 203 de imagen también puede denominarse bloque de imagen actual o bloque de imagen a codificar. La imagen 201 también puede denominarse imagen actual o de imagen a codificar (en particular en la codificación de vídeo, para distinguir la imagen actual de otras imágenes, las otras imágenes son, por ejemplo, imágenes codificadas y/o decodificadas previamente de una misma secuencia de vídeo, es decir, la secuencia de vídeo que también incluye la imagen actual).
Particionamiento
Una realización del codificador 20 puede incluir una unidad de particionamiento (no mostrada en la FIG. 3), configurada para dividir la imagen 201 en una pluralidad de bloques tales como el bloque 203. La imagen 201 generalmente se divide en una pluralidad de bloques no superpuestos. La unidad de particionamiento puede configurarse para usar un 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 un tamaño de bloque entre imágenes o subconjuntos o grupos de imágenes, y dividir cada imagen en bloques correspondientes.
En un ejemplo, la unidad 260 de procesamiento de predicción del codificador 20 de vídeo puede configurarse para realizar cualquier combinación de las tecnologías de particionamiento descritas anteriormente.
Al igual que la imagen 201, el bloque 203 es también o puede ser considerado como un conjunto o matriz bidimensional de muestras con valores de luma (valores de muestra), aunque un tamaño del bloque 203 es menor que un tamaño de la imagen 201. En otras palabras, el bloque 203 puede incluir, por ejemplo, una matriz de muestras (por ejemplo, una matriz de luma en un caso de una imagen 201 monocromática), tres matrices de muestras (por ejemplo, una matriz de luma y dos matrices de croma en un caso de una imagen de color) o cualquier otra cantidad y/o tipo de matrices dependiendo del formato de color aplicado. Una cantidad de muestras en direcciones horizontal y vertical (o ejes) del bloque 203 define el tamaño de bloque 203.
El codificador 20 mostrado en la FIG. 3 está configurado para codificar la imagen 201 bloque a bloque, por ejemplo, realizar codificación y predicción en cada bloque 203.
Cálculo Residual
La unidad 204 de cálculo residual está configurada para calcular un bloque 205 residual en función del bloque 203 de imagen y de un bloque 265 de predicción (más adelante se proporcionan más detalles sobre el bloque 265 de predicción), por ejemplo, restando los valores de muestra del bloque 265 de predicción de los valores de muestra del bloque 203 de imagen, muestra a muestra, para obtener el bloque 205 residual en un dominio de la muestra.
Transformación
La unidad 206 de procesamiento de transformación está configurada para aplicar una transformación, por ejemplo, una transformación de coseno discreta (DCT) o una transformación de seno discreta (DST), a los valores de muestra del bloque 205 residual para obtener coeficientes 207 de transformación en un dominio de transformación. El coeficiente 207 de transformación también puede denominarse coeficiente residual de transformación y representa el bloque 205 residual en el dominio de transformación.
La unidad 206 de procesamiento de transformación puede configurarse para aplicar aproximaciones de números enteros de DCT/DST, tales como las transformaciones especificadas para HEVC/H.265. En comparación con una transformación DCT ortogonal, dichas aproximaciones de números enteros generalmente se escalan por un factor. Para preservar una norma de un bloque residual que se procesa usando transformaciones directas e inversas, se aplica un factor de escala adicional como una parte del proceso de transformación. El factor de escala generalmente se elige en función de algunas restricciones. Por ejemplo, el factor de escala es una potencia de dos para una operación de desplazamiento, una profundidad de bits del coeficiente de transformación, o un equilibrio entre precisión y costes de implementación. Por ejemplo, se especifica un factor de escala específico para la transformación inversa por, por ejemplo, la unidad 212 de procesamiento de transformación inversa en un lado del decodificador 30 (y una transformación inversa correspondiente por, por ejemplo, la unidad 212 de procesamiento de transformación inversa en un lado del codificador 20), y, correspondientemente, se puede especificar un factor de escala correspondiente para la transformación directa por la unidad 206 de procesamiento de transformación en el lado del codificador 20.
Cuantificación
La unidad 208 de cuantificación está configurada para cuantificar los coeficientes 207 de transformación para obtener coeficientes 209 de transformación cuantificados, por ejemplo, aplicando cuantificación escalar o cuantificación vectorial. El coeficiente 209 de transformación cuantificado también puede denominarse coeficiente 209 residual cuantificado. Un proceso de cuantificación puede reducir una profundidad de bits relacionada con algunos o todos los coeficientes 207 de transformación. Por ejemplo, un coeficiente de transformación de n bits puede redondearse hacia abajo a un coeficiente de transformación de m bits durante la cuantificación, donde n es mayor que m. El grado de cuantificación puede modificarse ajustando un parámetro de cuantificación (QP). Por ejemplo, para cuantificación escalar, se pueden aplicar escalas diferentes para lograr una cuantificación más fina o más gruesa. Unos escalones de cuantificación menores corresponden a una cuantificación más fina, mientras que unos escalones de cuantificación más grandes corresponden a una cuantificación más gruesa. Un escalón de cuantificación adecuado puede indicarse por el parámetro de cuantificación (QP). Por ejemplo, el parámetro de cuantificación puede ser un índice de un conjunto predefinido de escalones de cuantificación adecuados. Por ejemplo, un parámetro de cuantificación más pequeño puede corresponder a una cuantificación más fina (un escalón de cuantificación más pequeño) y un parámetro de cuantificación más grande puede corresponder a una cuantificación más gruesa (escalones de cuantificación más grandes) o viceversa. La cuantificación puede incluir división por un escalón de cuantificación y cuantificación o cuantificación inversa, por ejemplo, realizada por la unidad 210 de cuantificación inversa, o puede incluir multiplicación por un escalón de cuantificación. En realizaciones según algunos estándares tales como el HEVC, un parámetro de cuantificación puede usarse para determinar el escalón de cuantificación. Generalmente, el escalón de cuantificación puede calcularse en función de un parámetro de cuantificación usando una aproximación de punto fijo de una ecuación que incluye la división. Pueden introducirse factores de escalado adicionales para cuantificación y decuantificación para restaurar la norma del bloque residual, donde la norma del bloque residual puede modificarse debido a una escala usada en la aproximación de punto fijo de la ecuación para el escalón de cuantificación y el parámetro de cuantificación. En una implementación de ejemplo, se pueden combinar las escalas de la transformación inversa y la decuantificación. De manera alternativa, pueden usarse tablas de cuantificación personalizadas y señalarse desde el codificador al decodificador, por ejemplo, en un flujo de bits. La cuantificación es una operación con pérdida, donde una pérdida aumenta con un aumento del escalón de cuantificación.
La unidad 210 de cuantificación inversa está configurada para aplicar la cuantificación inversa de la unidad 208 de cuantificación a un coeficiente cuantificado para obtener un coeficiente 211 decuantificado, por ejemplo, aplicar, en función de o usando un mismo escalón de cuantificación que la unidad 208 de cuantificación, la inversa de un esquema de cuantificación aplicado por la unidad 208 de cuantificación. El coeficiente 211 decuantificado también puede denominarse coeficiente 211 residual decuantificado, y corresponde al coeficiente 207 de transformación, aunque el coeficiente 211 de decuantificado generalmente es diferente del coeficiente de transformación debido a una pérdida causada por la cuantificación.
La unidad 212 de procesamiento de transformación inversa está configurada para aplicar una transformación inversa de la transformación aplicada por la unidad 206 de procesamiento de transformación, por ejemplo, una transformación de coseno discreta (DCT) inversa o una transformación de seno discreta (DST) inversa, para obtener un bloque 213 de transformación inversa en el dominio de la muestra. El bloque 213 de transformación inversa también puede denominarse bloque 213 decuantificado de transformación inversa o bloque 213 residual de transformación inversa.
La unidad 214 de reconstrucción (por ejemplo, un sumador 214) está configurada para sumar el bloque 213 de transformación inversa (es decir, el bloque 213 residual reconstruido) al bloque 265 de predicción, por ejemplo, sumando valores de muestra del bloque 213 residual reconstruido y los valores de muestra del bloque 265 de predicción, para obtener un bloque 215 reconstruido en el dominio de la muestra.
Opcionalmente, la unidad 216 de búfer ("búfer" 216 para abreviar), por ejemplo, el búfer 216 de línea, está configurado para almacenar en búfer o almacenar el bloque 215 reconstruido y un valor de muestra correspondiente, por ejemplo, para intrapredicción. En otras realizaciones, el codificador puede configurarse para usar un bloque reconstruido sin filtrar y/o un valor de muestra correspondiente que está/están almacenado/s en la unidad 216 de búfer, para cualquier tipo de estimación y/o predicción, por ejemplo, intrapredicción.
Por ejemplo, en una realización, el codificador 20 puede configurarse para que la unidad 216 se configure para almacenar el bloque 215 reconstruido no usado solo para el bloque 254 de intrapredicción, sino usado también para la unidad 220 de filtro de bucle (no mostrada en la FIG. 3), y/o para que, por ejemplo, la unidad 216 de búfer y la unidad 230 de búfer de imágenes decodificadas formen un búfer. En otras realizaciones, un bloque 221 filtrado y/o un bloque o una muestra del búfer 230 de imágenes decodificadas (el bloque o la muestra no se muestran en la FIG. 3) se usa/n como una entrada o una base para la unidad 254 de intrapredicción.
La unidad 220 de filtro de bucle ("filtro de bucle" 220 para abreviar) está configurada para filtrar el bloque 215 reconstruido para obtener un bloque 221 filtrado, por ejemplo, para suavizar las transiciones de muestras o mejorar la calidad del vídeo. La unidad 220 de filtro de bucle está destinada a representar uno o más filtros de bucle, que incluyen, por ejemplo, un filtro de desbloqueo, un filtro de desplazamiento adaptativo de muestras (SAO) u otros filtros tales como un filtro bilateral, un filtro de bucle adaptativo (ALF), un filtros de nitidez o un filtro de suavizado, o un filtro colaborativo. Aunque la unidad 220 de filtro de bucle se muestra en la FIG. 3 como un filtro en bucle, en otras configuraciones, la unidad 220 de filtro de bucle puede implementarse como un filtro posbucle. El bloque 221 filtrado también puede denominarse bloque 221 reconstruido filtrado. El búfer 230 de imágenes decodificadas puede almacenar un bloque de codificación reconstruido después de que la unidad 220 de filtro de bucle realice una operación de filtrado en el bloque de codificación reconstruido.
En una realización, el codificador 20 (correspondientemente, la unidad 220 de filtro de bucle) puede configurarse para emitir un parámetro de filtro de bucle (por ejemplo, información de desplazamiento adaptativa de muestras), por ejemplo, directamente o codificado en entropía realizado por la unidad 270 de codificación de entropía o cualquier otra unidad de codificación de entropía, para que, por ejemplo, el decodificador 30 pueda recibir y aplicar el mismo parámetro de filtro de bucle para decodificación.
El búfer de imágenes decodificadas (DPB) 230 puede ser una memoria de imágenes de referencia que almacena datos de imágenes de referencia para su uso en la codificación de datos de vídeo por el codificador 20 de vídeo. El DPB 230 puede estar formado por uno cualquiera de una variedad de dispositivos de memoria tales como una memoria de acceso aleatorio dinámica (DRAM), incluida una DRAM síncrona (SDRAM), una RAM magnetorresistiva (MRAM), una RAM resistiva (RRAM), u otros tipos de dispositivos de memoria. El DPB 230 y el búfer 216 pueden ser proporcionados por un mismo dispositivo de memoria o dispositivos de memoria separados. En un ejemplo, el búfer de imágenes decodificadas (DPB) 230 está configurado para almacenar el bloque 221 filtrado. El búfer 230 de imágenes decodificadas puede configurarse además para almacenar otro bloque previamente filtrado, por ejemplo, un bloque 221 previamente reconstruido y filtrado, de la misma imagen actual o de una imagen diferente, por ejemplo, una imagen previamente reconstruida, y puede proporcionar una imagen completa previamente reconstruida, es decir, una imagen decodificada (y un bloque de referencia y muestra correspondientes) y/o una imagen actual parcialmente reconstruida (y un bloque de referencia y muestra correspondientes), por ejemplo, para interpredicción. En un ejemplo, si el bloque 215 reconstruido se reconstruye sin filtrado en bucle, el búfer de imágenes decodificadas (DPB) 230 se configura para almacenar el bloque 215 reconstruido.
La unidad 260 de procesamiento de predicción, también denominada unidad 260 de procesamiento de predicción de bloque, está configurada para recibir u obtener el bloque 203 (un bloque 203 actual de la imagen 201 actual) y datos de imagen reconstruida, por ejemplo, muestras de referencia de la misma imagen (actual) del búfer 216 y/o datos 231 de imágenes de referencia de una o más imágenes previamente decodificadas del búfer 230 de imágenes decodificadas, y para procesar tales datos para predicción, es decir, para proporcionar un bloque 265 de predicción, que puede ser un bloque 245 de interpredicción o un bloque 255 de intrapredicción.
La unidad 262 de selección de modo puede configurarse para seleccionar un modo de predicción (por ejemplo, un modo de intrapredicción o modo de interpredicción) y/o un bloque 245 o 255 de predicción correspondiente para ser usado como el bloque 265 de predicción, para el cálculo del bloque 205 residual y para la reconstrucción del bloque 215 reconstruido.
En una realización, la unidad 262 de selección de modo puede configurarse para seleccionar el modo de predicción (por ejemplo, de los modos de predicción soportados por la unidad 260 de procesamiento de predicción), donde el modo de predicción proporciona una mejor coincidencia o un residual mínimo (el residual mínimo significa mejor compresión para la transmisión o almacenamiento) o proporciona sobrecarga de señalización mínima (la sobrecarga de señalización mínima significa mejor compresión para la transmisión o el almacenamiento), o que considera o equilibra ambos. La unidad 262 de selección de modo puede configurarse para determinar el modo de predicción en función de la optimización de distorsión de tasa (RDO), es decir, seleccionar el modo de predicción que proporciona optimización de distorsión de tasa mínima o seleccionar un modo de predicción para cuya distorsión de tasa relacionada cumple al menos un criterio de selección de modo de predicción.
A continuación se describe en detalle el procesamiento de predicción realizado (por ejemplo, por la unidad 260 de procesamiento de predicción) y la selección de modo realizada (por ejemplo, por la unidad 262 de selección de modo) por un ejemplo del codificador 20.
Como se ha descrito anteriormente, el codificador 20 está configurado para determinar o seleccionar un modo de predicción mejor u óptimo de un conjunto de modos de predicción (predeterminados). El conjunto de modos de predicción puede incluir, por ejemplo, modos de intrapredicción y/o modos de interpredicción.
Un conjunto de modos de intrapredicción puede incluir 35 modos de intrapredicción diferentes, puede incluir 67 modos de intrapredicción diferentes o puede incluir un modo de intrapredicción definido en H.266 en desarrollo.
Un conjunto de modos de interpredicción depende de imágenes de referencia disponibles (es decir, por ejemplo, al menos algunas imágenes decodificadas almacenadas en el DBP 230, como se describió anteriormente) y otros parámetros de interpredicción, por ejemplo, depende de si se usa una imagen de referencia completa o solo una parte de la imagen de referencia, por ejemplo, una región de ventana de búsqueda alrededor de una región del bloque de imagen actual, para buscar un bloque de referencia que coincida mejor, y/o por ejemplo, depende de si se aplica una interpolación de muestra tal como una interpolación de medio pel y/o un cuarto de pel.
Además de los modos de predicción anteriores, se puede aplicar también un modo de salto y/o un modo directo.
La unidad 260 de procesamiento de predicción puede configurarse además para dividir el bloque 203 en particiones de bloque o subbloques más pequeños, por ejemplo, usando iterativamente particionamiento de árbol cuádruple (QT), particionamiento de árbol binario (BT), particionamiento de árbol triple (TT) o cualquier combinación de las mismos, y realizar, por ejemplo, predicción en cada una de las particiones de bloque o subbloques. La selección de modo incluye selección de una estructura de árbol del bloque 203 particionado y selección de un modo de predicción usado para cada una de las particiones de bloque o subbloques.
La unidad 244 de interpredicción puede incluir una unidad de estimación de movimiento (ME) (no mostrada en la FIG. 3) y una unidad de compensación de movimiento (MC) (no mostrada en la FIG. 3). La unidad de estimación de movimiento está configurada para recibir u obtener el bloque 203 de imagen (el bloque 203 de imagen actual de la imagen 201 actual) y una imagen 231 decodificada, o al menos uno o una pluralidad de bloques previamente reconstruidos, por ejemplo, uno o más bloques reconstruidos de otras/diferentes imágenes 231 previamente decodificadas, para estimación de movimiento. Por ejemplo, una secuencia de vídeo puede incluir la imagen actual y una imagen 31 previamente decodificada, o en otras palabras, la imagen actual y la imagen 31 previamente decodificada pueden ser una parte o formar una secuencia de imágenes que forman una secuencia de vídeo.
Por ejemplo, el codificador 20 puede configurarse para seleccionar un bloque de referencia de una pluralidad de bloques de referencia de una misma imagen o diferentes imágenes en una pluralidad de otras imágenes y proporcionar, para la unidad de estimación de movimiento (no mostrada en la FIG. 3), una imagen de referencia y/o proporcionar un desplazamiento (un desplazamiento espacial) entre una ubicación (coordenadas X e Y) del bloque de referencia y una ubicación del bloque actual como un parámetro de interpredicción. Este desplazamiento también se denomina vector de movimiento (MV).
La unidad de compensación de movimiento está configurada para obtener, por ejemplo, recibir el parámetro de interpredicción y para realizar una interpredicción en función o usando el parámetro de interpredicción, para obtener el bloque 245 de interpredicción. La compensación de movimiento realizada por la unidad de compensación de movimiento (no mostrada en la FIG. 3), puede incluir extraer o generar un bloque de predicción en función de un vector de movimiento/bloque determinado a través de la estimación de movimiento (la interpolación puede ser realizada con precisión de submuestra). El filtrado de interpolación puede generar muestras de muestra adicionales a partir de muestras de muestra conocidas, aumentando así potencialmente una cantidad de bloques de predicción candidatos que pueden usarse para codificar un bloque de imagen. Al recibir el vector de movimiento para una PU del bloque de imagen actual, la unidad 246 de compensación de movimiento puede ubicar un bloque de predicción al que apunta el vector de movimiento en una de las listas de imágenes de referencia. La unidad 246 de compensación de movimiento también puede generar un elemento de sintaxis asociado con un bloque y un segmento de vídeo, para el decodificador 30 de vídeo use el elemento de sintaxis para decodificar el bloque de imagen del segmento de vídeo.
La unidad 254 de intrapredicción está configurada para obtener, por ejemplo, recibir, un bloque 203 de imagen (bloque de imagen actual) y uno o más bloques previamente reconstruidos, por ejemplo, bloques vecinos reconstruidos, de una misma imagen para intraestimación. Por ejemplo, el codificador 20 puede estar configurado para seleccionar un modo de intrapredicción de una pluralidad de modos de intrapredicción.
En una realización, el codificador 20 puede configurarse para seleccionar el modo de intrapredicción según un criterio de optimización, por ejemplo, en función de un residual mínimo (por ejemplo, un modo de intrapredicción que proporciona el bloque 255 de predicción que es más similar al bloque 203 de imagen actual) o una distorsión de tasa mínima.
La unidad 254 de intrapredicción está configurada además para determinar el bloque 255 de intrapredicción en función de, por ejemplo, un modo de intrapredicción en el modo de intrapredicción seleccionado. En cualquier caso, después de seleccionar un modo de intrapredicción para un bloque, la unidad 254 de intrapredicción también se configura para proporcionar un parámetro de intrapredicción, es decir, información que indica el modo de intrapredicción seleccionado para el bloque, a la unidad 270 de codificación de entropía. En un ejemplo, la unidad 254 de intrapredicción puede configurarse para realizar cualquier combinación de las tecnologías de intrapredicción descritas más adelante.
La unidad 270 de codificación de entropía está configurada para aplicar (o evitar aplicar) un algoritmo o esquema de codificación de entropía (por ejemplo, un esquema de codificación de longitud variable (VLC), un esquema de VLC adaptable al contexto (CAVLC), un esquema de codificación aritmética, una codificación aritmética binaria adaptable al contexto (CABAC), una codificación aritmética binaria adaptable al contexto basada en sintaxis (SBAC), una codificación de entropía de particionamiento de intervalo de probabilidad (PIPE) u otra técnica o metodología de codificación de entropía) en uno o todos de los siguientes: el coeficiente 209 cuantificado, el parámetro de interpredicción, el parámetro de intrapredicción, y/o el parámetro de filtro de bucle, para obtener datos 21 de imagen codificados que pueden ser emitidos a través de una salida 272, por ejemplo, en una forma de un flujo 21 de bits codificados. El flujo de bits codificado puede transmitirse al decodificador 30 de vídeo, o archivarse para su posterior transmisión o recuperación por el decodificador 30 de vídeo. La unidad 270 de codificación de entropía puede configurarse además para codificar en entropía otro elemento de sintaxis para un segmento de vídeo actual que se está codificando.
Se puede usar otra variante estructural del codificador 20 de vídeo para codificar el flujo de vídeo. Por ejemplo, un codificador 20 no basado en transformación puede cuantificar directamente una señal residual sin la unidad 206 de procesamiento de transformación para algunos bloques o fotogramas. En otra implementación, el codificador 20 puede tener la unidad 208 de cuantificación y la unidad 210 de cuantificación inversa que se combinan en una sola unidad.
La FIG. 4 muestra un decodificador 30 de vídeo de ejemplo, configurado para implementar las tecnologías de esta solicitud. El decodificador 30 de vídeo está configurado para recibir datos 21 de imagen codificados (por ejemplo, un flujo de bits codificado), por ejemplo, codificados por el codificador 20, para obtener una imagen 231 decodificada. En un proceso de decodificación, el decodificador 30 de vídeo recibe datos de vídeo del codificador 20 de vídeo, por ejemplo, un flujo de bits de vídeo codificado que representa un bloque de imagen de un segmento de vídeo codificado y un elemento de sintaxis asociado.
En el ejemplo en la FIG. 4, el decodificador 30 incluye una unidad 304 de decodificación de entropía, una unidad 310 de cuantificación inversa, una unidad 312 de procesamiento de transformación inversa, una unidad 314 de reconstrucción (por ejemplo, un sumador 314), un búfer 316, un filtro 320 de bucle, un búfer 330 de imágenes decodificadas y una unidad 360 de procesamiento de predicción. La unidad 360 de procesamiento de predicción puede incluir una unidad 344 de interpredicción, una unidad 354 de intrapredicción y una unidad 362 de selección de modo. En algunos ejemplos, el decodificador 30 de vídeo puede realizar un proceso de decodificación generalmente recíproco al proceso de codificación descrito con referencia al codificador 20 de vídeo en la FIG. 3.
La unidad 304 de decodificación de entropía está configurada para realizar la decodificación de entropía de los datos 21 de imagen codificados para obtener, por ejemplo, un coeficiente 309 cuantificado y/o un parámetro de codificación decodificado (no mostrados en la FIG. 4), por ejemplo, uno cualquiera o todos de un parámetro de interpredicción, un parámetro de intrapredicción, un parámetro de filtro de bucle, y/u otro elemento de sintaxis (que están decodificados). La unidad 304 de decodificación de entropía está configurada además para reenviar el parámetro de interpredicción, el parámetro de intrapredicción y/u otro elemento de sintaxis a la unidad 360 de procesamiento de predicción. El decodificador 30 de vídeo puede recibir los elementos de sintaxis en un nivel de segmento de vídeo y/o un nivel de bloque de vídeo.
La unidad 310 de cuantificación inversa puede tener una misma función que la unidad 110 de cuantificación inversa. La unidad 312 de procesamiento de transformación inversa puede tener una misma función que la unidad 212 de procesamiento de transformación inversa. La unidad 314 de reconstrucción puede tener una misma función que la unidad 214 de reconstrucción. El buffer 316 puede tener una misma función que el buffer 216. El filtro de 320 bucle puede tener una misma función que el filtro 220 de bucle. El búfer 330 de imágenes decodificadas puede tener una misma función que el búfer 230 de imágenes decodificadas.
La unidad 360 de procesamiento de predicción puede incluir una unidad 344 de interpredicción y una unidad 354 de intrapredicción. La unidad 344 de interpredicción puede ser similar a la unidad 244 de interpredicción en funciones, y la unidad 354 de intrapredicción puede ser similar a la unidad 254 de intrapredicción en funciones. La unidad 360 de procesamiento de predicción generalmente está configurada para realizar la predicción de bloque y/u obtener un bloque 365 de predicción a partir de los datos 21 codificados, y recibir u obtener (explícita o implícitamente) un parámetro relacionado con la predicción y/o la información sobre un modo de predicción seleccionado, por ejemplo, de la unidad 304 de decodificación de entropía.
Cuando un segmento de vídeo se codifica como un segmento intracodificado (I), la unidad 354 de intrapredicción de la unidad 360 de procesamiento de predicción está configurada para generar el bloque 365 de predicción para un bloque de imagen del segmento de vídeo actual en función de un modo de intrapredicción señalizado y datos que son de un bloque previamente decodificado de un fotograma o imagen actual. Cuando un fotograma de vídeo se codifica como un segmento intercodificado (B o P), la unidad 344 de interpredicción (por ejemplo, la unidad de compensación de movimiento) de la unidad 360 de procesamiento de predicción está configurada para general el bloque 365 de predicción para un bloque de vídeo del segmento de vídeo actual en función de un vector de movimiento y otro elemento de sintaxis que se reciben de la unidad 304 de decodificación de entropía. Para interpredicción, el bloque de predicción puede generarse a partir de una de las imágenes de referencia en una lista de imágenes de referencia. El decodificador 30 de vídeo puede construir las listas de fotogramas de referencia, una lista 0 y una lista 1, usando una tecnología de construcción preestablecida en función de imágenes de referencia almacenadas en el DPB 330.
La unidad 360 de procesamiento de predicción está configurada para determinar información de predicción para el bloque de vídeo del segmento de vídeo actual analizando el vector de movimiento y otro elemento de sintaxis, y usa la información de predicción para generar un bloque de predicción para el bloque de vídeo actual que se está decodificando. Por ejemplo, la unidad 360 de procesamiento de predicción determina, usando algunos elementos de sintaxis recibidos, un modo de predicción (por ejemplo, intrapredicción o interpredicción) para codificar el bloque de vídeo en el segmento de vídeo, un tipo de segmento de interpredicción (por ejemplo, un segmento B, un segmento P o un segmento GPB), información de construcción para una o más de las listas de imágenes de referencia para el segmento, un vector de movimiento para cada bloque de vídeo intercodificado para el segmento, un estado de interpredicción para cada bloque de vídeo intercodificado en el segmento, y otra información, para decodificar el bloque de vídeo en el segmento de vídeo actual.
La unidad 310 de cuantificación inversa está configurada para cuantificación inversa (es decir, decuantificación) en un coeficiente de transformación cuantificado proporcionado en el flujo de bits y decodificado por la unidad 304 de decodificación de entropía. Un proceso de cuantificación inversa puede incluir: usar un parámetro de cuantificación calculado por el codificador 20 de vídeo para cada bloque de vídeo en el segmento de vídeo, para determinar un grado de cuantificación que debe aplicarse y, asimismo, un grado de cuantificación inversa que debe aplicarse.
La unidad 312 de procesamiento de transformación inversa está configurada para aplicar una transformación inversa (por ejemplo, una DCT inversa, una transformación de números enteros inversa o un proceso de transformación inversa conceptualmente similar) a los coeficientes de transformación, para generar un bloque residual en un dominio de la muestra.
La unidad 314 de reconstrucción (por ejemplo, el sumador 314) está configurada para sumar un bloque 313 de transformación inversa (es decir, un bloque 313 residual reconstruido) al bloque 365 de predicción, por ejemplo, sumando valores de muestra del bloque 313 residual reconstruido y valores de muestra del bloque 365 de predicción, para obtener un bloque 315 reconstruido en un dominio de la muestra.
La unidad 320 de filtro de bucle (durante un bucle de codificación o después de un bucle de codificación) está configurada para filtrar el bloque 315 reconstruido para obtener un bloque 321 filtrado, para suavizar las transiciones de muestras o mejorar la calidad del vídeo. En un ejemplo, la unidad 320 de filtro de bucle puede configurarse para realizar cualquier combinación de las tecnologías de filtrado descritas más adelante. La unidad 320 de filtro de bucle está destinada a representar uno o más filtros de bucle tal como un filtro de desbloqueo, un filtro de desplazamiento adaptativo de muestra (SAO) u otro filtro, por ejemplo, un filtro bilateral, un filtro de bucle adaptativo (ALF), un filtro de nitidez o filtros de suavizado, o un filtro colaborativo. Aunque la unidad 320 de filtro de bucle se muestra como un filtro en bucle en la FIG. 4, en otra configuración, la unidad 320 de filtro de bucle puede implementarse como un filtro posbucle.
Los bloques 321 de vídeo decodificados en un fotograma o imagen dadas se almacenan luego en el búfer 330 de imágenes decodificadas que almacena una imagen de referencia usada para compensación de movimiento posterior.
El decodificador 30 está configurado para, por ejemplo, emitir una imagen 31 decodificada a través de la salida 332, para presentación a un usuario o visualización por un usuario.
Se puede usar otra variante del decodificador 30 de vídeo para decodificar el flujo de bits comprimido. Por ejemplo, el decodificador 30 puede generar un flujo de vídeo de salida sin la unidad 320 de filtrado de bucle. Por ejemplo, un decodificador 30 no basado en transformación puede cuantificar de forma inversa una señal residual directamente sin la unidad 312 de procesamiento de transformación inversa para ciertos bloques o fotogramas. En otra implementación, el decodificador 30 de vídeo puede tener la unidad 310 de cuantificación inversa y la unidad 312 de procesamiento de transformación inversa combinadas en una sola unidad.
La FIG. 5 es un diagrama esquemático de una estructura de un dispositivo 400 de codificación de vídeo (por ejemplo, un dispositivo 400 de codificación de vídeo o un dispositivo 400 de decodificación de vídeo) según una realización de esta solicitud. El dispositivo 400 de codificación de vídeo es adecuado para implementar las realizaciones descritas en esta memoria descriptiva. En una realización, el dispositivo 400 de codificación de vídeo puede ser un decodificador de vídeo (por ejemplo, el decodificador 30 de vídeo en la FIG. 1) o un codificador de vídeo (por ejemplo, el codificador 20 de vídeo en la FIG. 1). En una realización, el dispositivo 400 de codificación de vídeo puede ser uno o más componentes del decodificador 30 de vídeo en la FIG. 1 o el codificador 20 de vídeo en la FIG. 1.
El dispositivo 400 de codificación de vídeo incluye: un puerto 410 de entrada y una unidad receptora (Rx) 420 para recibir datos; un procesador, una unidad lógica, o unidad de procesamiento central (CPU) 430 para procesar datos; una unidad de transmisión (Tx) 440 y un puerto 450 de salida para transmitir datos; y una memoria 460 para almacenar datos. El dispositivo 400 de codificación de vídeo también puede incluir un componentes de conversión óptico a eléctrico y un componente de eléctrico a óptico (EO) acoplados al puerto 410 de entrada, a la unidad 420 de recepción, a la unidad 440 de transmisión, y al puerto 450 de salida para salida o entrada de señales ópticas o eléctricas.
El procesador 430 está implementado por hardware y software. El procesador 430 puede implementarse como uno o más chips de CPU, núcleos (por ejemplo, un procesador multinúcleo), FPGA, ASIC y DSP. El procesador 430 se comunica con el puerto 410 de entrada, la unidad 420 de recepción, la unidad 440 de transmisión, el puerto 450 de salida y la memoria 460. El procesador 430 incluye un módulo 470 de codificación (por ejemplo, un módulo 470 de codificación o un módulo 470 de decodificación). El módulo 470 de codificación/decodificación implementa las realizaciones descritas anteriormente. Por ejemplo, el módulo 470 de codificación/decodificación implementa, procesa, o proporciona diversas operaciones de codificación. Por lo tanto, el módulo 470 de codificación/decodificación mejora sustancialmente las funciones del dispositivo 400 de codificación de vídeo y efectúa una transformación del dispositivo 400 de codificación de vídeo a un estado diferente. De manera alternativa, el módulo 470 de codificación/decodificación se implementa como una instrucción almacenada en la memoria 460 y ejecutada por el procesador 430.
La memoria 460 incluye uno o más discos, unidades de cinta, y unidades de estado sólido, y puede ser usada como un dispositivo de almacenamiento de datos de desbordamiento, para almacenar programas cuando tales programas se seleccionan para su ejecución, y para almacenar instrucciones y datos que se leen durante la ejecución del programa. La memoria 460 puede ser volátil y/o no volátil, y puede ser una memoria de solo lectura (ROM), una memoria de acceso aleatorio (RAM), una memoria ternaria de contenido direccionable (TCAM), y/o una memoria estática de acceso aleatorio (SRAM).
La FIG. 6 es un diagrama de bloques simplificado de un aparato 500 que se puede usar como uno o dos de los dispositivos 12 de origen y dispositivo 14 de destino en la FIG. 1 según una realización de ejemplo. El aparato 500 puede implementar las tecnologías en esta solicitud. El aparato 500 configurado para implementar predicción de bloque de croma puede estar en una forma de un sistema informático que incluya una pluralidad de dispositivos informáticos, o puede estar en una forma de un solo dispositivo informático tal como un teléfono móvil, una tableta, un ordenador portátil, un ordenador notebook, o un ordenador de sobremesa.
Un procesador 502 en el aparato 500 puede ser una unidad de procesamiento central. De manera alternativa, el procesador 502 puede ser cualquier otro tipo de dispositivo o una pluralidad de dispositivos, capaces de manipular o procesar información existente o a desarrollar en el futuro. Como se muestra en la FIG. 6, aunque las implementaciones descritas se pueden practicar usando un solo procesador tal como el procesador 502, se pueden lograr ventajas en velocidad y eficiencia usando más de un procesador.
En una implementación, 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). Cualquier otro tipo adecuado de dispositivo de almacenamiento se puede usar como memoria 504. La memoria 504 puede incluir código y datos 506 a los que accede el procesador 502 usando un bus 512. La memoria 504 puede incluir además un sistema operativo 508 y un programa 510 de aplicación. El programa 510 de aplicación incluye al menos un programa que permite al procesador 502 realizar el método descrito en esta memoria descriptiva. Por ejemplo, el programa 510 de aplicación puede incluir las aplicaciones 1 a N, y las aplicaciones 1 a N además incluyen una aplicación de codificación de vídeo que realiza los métodos descritos en esta memoria descriptiva. El aparato 500 puede incluir además una memoria adicional en una forma de una memoria 514 secundaria. La memoria 514 secundaria puede ser, por ejemplo, una tarjeta de memoria usada con un dispositivo informático móvil. Debido a que una sesión de comunicación por vídeo puede incluir una gran cantidad de información, la información puede almacenarse total o parcialmente en la memoria 514 secundaria y cargarse en la memoria 504 para su procesamiento según sea necesario.
El aparato 500 también puede incluir uno o más dispositivos de salida, por ejemplo, una pantalla 518. En un ejemplo, la pantalla 518 puede ser una pantalla sensible al tacto que combina una pantalla con un elemento sensible al tacto que puede funcionar para detectar entradas táctiles. La pantalla 518 se puede acoplar al procesador 502 a través del bus 512. Además de la pantalla 518, se puede proporcionar además otro dispositivo de salida que permita a un usuario programar el aparato 500 o usar de otro modo el aparato 500, o se puede proporcionar otro dispositivo de salida como una alternativa a la pantalla 518. Cuando el dispositivo de salida es o incluye una pantalla, la pantalla se puede implementar de diversas maneras, que incluye usando una pantalla de cristal líquido (LCD), una pantalla de tubo de rayos catódicos (CRT), una pantalla de plasma, o una pantalla de diodo emisor de luz (LED) tal como una pantalla LED orgánica (OLED).
El aparato 500 puede incluir además o estar conectado a un dispositivo 520 de detección de imágenes. El dispositivo 520 de detección de imágenes es, por ejemplo, una cámara o cualquier otro dispositivo 520 de detección de imágenes que pueda detectar una imagen y que exista o se desarrolle en el futuro. La imagen es, por ejemplo, una imagen de un usuario que maneja el aparato 500. El dispositivo 520 de detección de imágenes puede colocarse directamente frente al usuario que maneja el aparato 500. En un ejemplo, una ubicación y un eje óptico del dispositivo 520 de detección de imágenes pueden configurarse, para que un campo de visión del dispositivo 520 de detección de imágenes incluya una región vecina a la pantalla 518 y la pantalla 518 pueda verse desde la región.
El aparato 500 puede incluir además o estar conectado a un dispositivo 522 de detección de sonido. El dispositivo 522 de detección de sonido es, por ejemplo, un micrófono o cualquier otro dispositivo de detección de sonido que pueda detectar un sonido cerca del aparato 500 y que exista o se desarrolle en el futuro. El dispositivo 522 de detección de sonido puede colocarse directamente frente al usuario que opera el aparato 500, y puede configurarse para recibir un sonido, por ejemplo, una voz u otro sonido, realizado por el usuario cuando maneja el aparato 500.
Aunque el procesador 502 y la memoria 504 del aparato 500 están representados en la FIG. 6 integrados en una sola unidad, se puede seguir usando otra configuración. El funcionamiento del procesador 502 puede estar distribuido en una pluralidad de máquinas (cada máquina tiene uno o más procesadores) que pueden estar acopladas directamente, o distribuidas en una región local u otra red. La memoria 504 puede estar distribuida en una pluralidad de máquinas. Por ejemplo, la memoria 504 es una memoria o memorias basadas en red en una pluralidad de máquinas que ejecutan el aparato 500. Aunque se representa como un solo bus en la presente memoria, el bus 512 del aparato 500 puede estar formado por una pluralidad de buses. Además, la memoria 514 secundaria puede estar acoplada directamente a otro componente del aparato 500 o puede accederse a ella a través de una red. Además, la memoria 514 secundaria puede incluir una sola unidad integrada, por ejemplo, una tarjeta de memoria, o una pluralidad de unidades, por ejemplo, una pluralidad de tarjetas de memoria. Por lo tanto, el aparato 500 puede implementarse en una amplia variedad de configuraciones.
Como se describió anteriormente en esta solicitud, un vídeo en color incluye además un componente de croma (U, V) además de un componente de luma (Y). Por lo tanto, es necesario codificar el componente luma, y también es necesario codificar el componente de croma. Según los diferentes métodos de muestreo del componente de luma y del componente de croma en el vídeo en color, generalmente existen YUV 4:4:4, YUV 4:2:2 y YUV 4:2:0. Como se muestra en la FIG. 7, una cruz representa un punto de muestreo del componente de luma, y un círculo representa un punto de muestreo del componente de croma.
En un formato 4:4:4, no se submuestrea un componente de croma.
En un formato 4:2:2, se realiza un submuestreo horizontal de 2:1 en un componente de croma con respecto a un componente de luma, y no se realiza ningún submuestreo vertical. Por cada dos puntos de muestreo U o puntos de muestreo V, cada fila incluye cuatro puntos de muestreo Y.
En un formato 4:2:0, se realiza un submuestreo horizontal de 2:1 en un componente de croma con respecto a un componente de luma, y se realiza un submuestreo vertical de 2:1 en el componente de croma con respecto al componente de luma.
YUV 4:2:0 es el más común. Cuando una imagen de vídeo usa el formato de muestreo YUV 4:2:0, si un componente de luma de un bloque de imagen es un bloque de imagen 2M x 2N, un componente de croma del bloque de imagen es un bloque de imagen M x N. Por lo tanto, el componente de croma del bloque de imagen también se denomina bloque de croma o bloque de componente de croma en esta solicitud. Esta solicitud se describe usando YUV 4:2:0 como ejemplo, pero otro método de muestreo para un componente de luma y un componente de croma también es aplicable a esta solicitud.
En esta solicitud, un píxel en una imagen de croma se denomina muestra de croma o punto de croma para abreviar. Un píxel en una imagen de luma se denomina muestra de luma o punto de luma para abreviar.
De manera similar al componente de luma, en intrapredicción de croma, muestras de límite de un bloque reconstruido vecino alrededor de un bloque de croma actual también se usan como muestras de referencia de un bloque actual. Las muestras de referencia se asignan a muestras en el bloque de croma actual según un modo de predicción específico y se usan como un valor de predicción de las muestras en el bloque de croma actual. Una diferencia radica en que, debido a que la textura del componente de croma es generalmente relativamente simple, una cantidad de modos de intrapredicción para el componente de croma es generalmente menor que una cantidad de modos de intrapredicción para el componente luma.
Un modo de predicción de componentes cruzados (CCP) también se denomina modo de intrapredicción de componentes cruzados (CCIP) o modo de predicción de modelo lineal de componentes cruzados (CCLM). El modo de predicción CCLM también puede denominarse modo de modelo lineal (LM) para abreviar. El modo LM (para abreviar el modelo lineal o un modo lineal) es un método de intrapredicción de croma que usa la correlación de textura entre luma y croma. LM usa un componente de luma reconstruido para derivar un valor de predicción de un bloque de croma actual según el modelo lineal, y puede usar la siguiente ecuación:
predc (i, j) = a* red L (i, j) /? (i)
dondeay p son ambos coeficientes del modelo lineal,aes un coeficiente de escalado, p es un factor de desplazamiento, predc (i, j) es un valor de predicción de muestras de croma en una posición (i, j), y reci_'(i, j) es un valor de muestra de reconstrucción de luma en la posición (i, j) obtenido después de que un bloque de reconstrucción de luma (al que denomina bloque de luma para abreviar a continuación) correspondiente al bloque de croma actual se submuestrea a una resolución de componente de croma. Para un vídeo en el formato YUV 4:2:0, una resolución de un componente de luma es cuatro veces una resolución de un componente de croma (el ancho del componente de luma es el doble es dos veces el ancho del componente de croma, y la altura del componente de luma es dos veces la altura del componente de croma). Para obtener un bloque de luma con una misma resolución que un bloque de croma, el componente de luma debe submuestrearse a una resolución de croma según un método de submuestreo igual al del componente de croma, y luego se usa el componente de luma.
Los coeficientes del modelo linealay p no necesitan codificarse para la transmisión, sino que se derivan usando muestras de límite de un bloque reconstruido vecino del bloque de croma actual y muestras de luma en posiciones correspondientes de las muestras de límite. La FIG. 8 muestra una realización del modo de predicción de componentes cruzados (CCP). En la FIG. 8, recL es un bloque de luma reconstruido (un bloque de croma actual corresponde a un bloque de luma y muestras de referencia vecinas), recL' es un bloque de luma submuestreado y recC' son muestras de referencia reconstruidas vecinas del bloque de croma actual. Un tamaño de bloque de croma actual es W x H, y las muestras reconstruidas vecinas en el lado superior y en un lado izquierdo del bloque de croma actual se usan como muestras de referencia. Un tamaño de un bloque de luma correspondiente es 2W x 2H. El bloque de luma y las muestras de referencia del bloque de luma se submuestrean a una resolución de croma, para obtener los bloques de muestra mostrados en la FIG. 8(b). Las muestras de referencia vecinas en la FIG. 8(b) y la FIG. 8(c) forman una correspondencia uno a uno.
Para facilitar la descripción, en esta solicitud, los lados superior e izquierdo vecinos usados para calcular los coeficientes del modelo lineal se denominan plantilla. El lado superior vecino se denomina plantilla superior, y el lado izquierdo vecino se denomina plantilla izquierda. Un punto de muestreo de croma en la plantilla superior se denomina muestra de croma de plantilla superior, y un punto de muestreo de luma en la plantilla superior se denomina muestra de luma de plantilla superior. Se puede obtener una muestra de croma de plantilla izquierda y una muestra de luma de plantilla izquierda a través de un método similar. Las muestras de luma de plantilla corresponden uno a uno a las muestras de croma de plantilla, y los valores de los puntos de muestreo forman un par de valores.
En esta realización de esta solicitud, la plantilla indica un conjunto de muestras de luma o muestras de croma usadas para calcular los coeficientes del modelo lineal. Las muestras de luma generalmente necesitan obtenerse a través de submuestreo (debido a que el componente de luma y el componente de croma tienen resoluciones diferentes) y se denotan como muestras de luma. Las muestras de croma generalmente son muestras en una fila superior o dos filas superiores, y muestras en una columna izquierda o dos columnas izquierdas vecinas al bloque de croma actual. La FIG. 9 es un diagrama esquemático de una plantilla que usa una fila y una columna, y la FIG. 10 es un diagrama esquemático de una plantilla que usa dos filas y dos columnas.
El modo LM puede usar eficazmente la correlación entre el componente de luma y el componente de croma. En comparación con un modo de predicción directiva, el modo LM es más flexible y proporciona una señal de predicción más precisa para el componente de croma.
Además, también hay un modo de modelo lineal de modelo múltiple (MMLM para abreviar), y hay una pluralidad de a y p. Se usan dos modelos lineales como ejemplo. Hay dos conjuntos de coeficientes de modelos lineales: ai y pi, y a2 y p2.
Una realización de esta solicitud proporciona un método de predicción de bloques de croma. Esta realización de esta solicitud ilustra un ejemplo en el que la intrapredicción usa un CCLM. A continuación se describe en detalle un procedimiento de procesamiento mostrado en la FIG. 11 con referencia a una implementación específica. Este proceso existe tanto en un proceso de codificación como en un proceso de decodificación, y este proceso puede ser de la siguiente manera:
Etapa 1101: obtener un valor de luma máximo y un valor de luma mínimo en función de las muestras de luma correspondientes a muestras vecinas de un bloque de croma objetivo, y obtener un primer valor de croma correspondiente al valor de luma máximo y un segundo valor de croma correspondiente al valor de luma mínimo.
El bloque de croma objetivo es cualquier bloque de croma que no esté codificado ni decodificado. Las muestras vecinas del bloque de croma objetivo son muestras de referencia de un bloque reconstruido vecino al bloque de croma objetivo, como se muestra en la FIG. 9 y la FIG. 10.
Durante la implementación, cuando se realiza la determinación hasta un bloque de croma actual (que puede denominarse el bloque de croma objetivo), se puede determinar un esquema de codificación del bloque de croma objetivo. Si el esquema de codificación es un CCLM, se pueden determinar las muestras vecinas del bloque de croma objetivo, y se obtienen el valor de luma máximo max Y y el valor de luma mínimo minYen función de las muestras vecinas. Además, se puede determinar un valor de croma (es decir, el primer valor de croma maxC) correspondiente al valor de luma máximo y un valor de croma (es decir, el segundo valor de croma minC) correspondiente al valor de luma mínimo.
Se debe tener en cuenta que, el valor de croma correspondiente al valor de luma máximo se refiere a que cuando las muestras de luma son el valor de luma máximo, las muestras de croma son el primer valor de croma, y el valor de croma correspondiente al valor de luma mínimo se refiere a que cuando las muestras de luma son el valor de luma mínimo, las muestras de croma son el segundo valor de croma.
Opcionalmente, el valor de luma máximo y el valor de luma mínimo se pueden determinar de una variedad maneras. A continuación se proporcionan dos maneras posibles:
Manera 1: obtener el valor de luma máximo y el valor de luma mínimo en las muestras de luma correspondientes a las muestras vecinas del bloque de croma objetivo.
Durante la implementación, cuando se realiza la determinación hasta un bloque de croma actual (que puede denominarse el bloque de croma objetivo), se puede determinar el esquema de codificación del bloque de croma objetivo. Si el esquema de codificación es el CCLM, se pueden determinar las muestras vecinas del bloque de croma objetivo, y luego se determinan el valor de luma máximo maxYy el valor de luma mínimo min Y en las muestras de luma correspondientes a estas muestras.
De la manera 1, cuando se determinan el primer valor de croma y el segundo valor de croma, un valor de croma de muestras de croma correspondientes a muestras de luma a las que pertenece el valor de luma máximo puede determinarse como el primer valor de croma, y un valor de croma de muestras de croma correspondientes a muestras de luma a las que pertenece el valor de luma mínimo puede determinarse como el segundo valor de croma.
Manera 2: una cantidad preestablecida de muestras de luma correspondiente a una cantidad preestablecida de muestras vecinas del bloque de croma objetivo se divide en un primer conjunto de muestras de luma y un segundo conjunto de muestras de luma. Una cantidad de muestras de luma en el primer conjunto de muestras de luma es la misma que una cantidad de muestras de luma en el segundo conjunto de muestras de luma, y los valores de luma de las muestras de luma en el primer conjunto de muestras de luma son mayores o iguales que los valores de luma de las muestras de luma en el segundo conjunto de muestras de luma. El valor de luma máximo se determina en función del primer conjunto de muestras de luma, y el valor de luma mínimo se determina en función del segundo conjunto de muestras de luma.
Durante la implementación, cuando se realiza la determinación hasta el bloque de croma actual (que puede denominarse el bloque de croma objetivo), se puede determinar el esquema de codificación del bloque de croma objetivo. Si el esquema de codificación es el CCLM, se pueden determinar las muestras vecinas del bloque de croma objetivo. Luego, se selecciona una cantidad preestablecida de muestras de croma de las muestras de croma de estas muestras determinadas (por ejemplo, la cantidad preestablecida es 4, y hay ocho muestras de croma vecinas en un lado superior del bloque de croma y ocho muestras de croma vecinas en un lado izquierdo del bloque de croma). Hay un total de 16 muestras de croma. Se puede seleccionar una muestra de croma de cada cuatro muestras de croma (se selecciona una muestra de croma de cada una de las primeras cuatro muestras de croma y de las últimas cuatro muestras de croma en el lado superior, y se selecciona una muestra de croma de cada una de las cuatro muestras de croma superiores y de las cuatro muestras de croma inferiores en el lado izquierdo), para obtener cuatro muestras de croma. Luego, se obtiene una cantidad objetivo de muestras de luma correspondiente a cada muestra de croma en la cantidad preestablecida de muestras de croma en función de la cantidad preestablecida de muestras de croma. El procesamiento de ponderación se realiza por separado en los valores de luma de la cantidad objetivo de muestras de luma correspondientes a cada muestra de croma, para obtener valores de luma de la cantidad preestablecida de muestras de luma (un proceso de realización del procesamiento de ponderación en los valores de luma de la cantidad objetivo de muestras de luma para obtener valores de luma de las muestras de luma puede denominarse proceso de submuestreo). Por ejemplo, la cantidad preestablecida de muestras de croma son cuatro muestras de croma, y cada muestra de croma corresponde a seis muestras de luma (por ejemplo, las coordenadas de ubicación de una muestra de croma son (i, j), y las coordenadas de ubicación de la cantidad objetivo correspondiente de muestras de luma son (2i-1, 2j-1), (2i, 2j-1), (2i+1, 2j-1), (2i-1, 2j), (2i, 2j) y (2i+1, 2j). Una suma de las ponderaciones correspondientes respectivamente a la cantidad objetivo de muestras de luma es igual a 1. Para cada muestra de croma, los valores de luma de seis muestras de luma correspondientes a la muestra de croma se multiplican respectivamente por las ponderaciones correspondientes para obtener seis valores, y los seis valores se suman para obtener los valores de luma de las muestras de luma correspondientes a la muestra de croma. De esta manera, se pueden obtener los valores de luma de la cantidad preestablecida de muestras de luma.
La cantidad preestablecida de muestras de luma se divide dos conjuntos: el primer conjunto de muestras de luma y el segundo conjunto de muestras de luma. La cantidad de muestras de luma en el primer conjunto de muestras de luma es la misma que la cantidad de muestras de luma en el segundo conjunto de muestras de luma, y los valores de luma de las muestras de luma en el primer conjunto de muestras de luma son mayores o iguales que los valores de luma de las muestras de luma en el segundo conjunto de muestras de luma (por ejemplo, si la cantidad preestablecida es 4, dos muestras de luma con valores de luma más grandes se agrupan en el primer conjunto de muestras de luma, y dos muestras de luma con valores de luma más pequeños se agrupan en el segundo conjunto de muestras de luma). Luego, se determina un valor promedio de los valores de luma de las muestras de luma en el primer conjunto de muestras de luma, el valor promedio se determina como el valor de luma máximo max Y. Se determina un valor promedio de los valores de luma de las muestras de luma en el segundo conjunto de muestras de luma, y el valor promedio se determina como el valor de luma mínimo minY.
De la manera 2 correspondiente, un proceso de determinación del primer valor de croma y el segundo valor de croma puede ser de la siguiente manera:
Un valor promedio obtenido de valores de muestra de muestras de croma de las muestras de luma en el primer conjunto de muestras de luma se determina como el primer valor de croma, y un valor promedio obtenido de valores de muestra de muestras de croma de las muestras de luma en el segundo conjunto de muestras de luma se determina como el segundo valor de croma.
Se debe tener en cuenta además que "la determinación se realiza hasta el bloque de croma actual" puede ser "la codificación se realiza hasta el bloque de croma actual", o puede ser "la decodificación se realiza hasta el bloque de croma actual".
Etapa 1102: si una primera diferencia entre el valor de luma máximo y el valor de luma mínimo es mayor que 0, procesar la primera diferencia en función de una cantidad de bits significativos de la primera diferencia y una primera profundidad de bits preestablecida para obtener una segunda diferencia.
La primera profundidad de bits preestablecida es una profundidad de bits preestablecida para la primera diferencia, y se almacena en el aparato mencionado anteriormente.
Durante la implementación, después de que se obtenga el valor de luma máximo y el valor de luma mínimo, se puede determinar una diferencia entre el valor de luma máximo y el valor de luma mínimo, es decir, la primera diferencia. Luego, se determina si la primera diferencia es mayor que 0. Si la primera diferencia es mayor que 0, se determina la cantidad de bits significativos de la primera diferencia, y luego se procesa la primera diferencia (por ejemplo, se desplaza hacia la derecha) usando la cantidad de bits significativos de la primera diferencia y la primera profundidad de bits preestablecida para obtener la segunda diferencia. Una profundidad de bits de la segunda diferencia es menor que la profundidad de bits de la primera diferencia.
Opcionalmente, la primera profundidad de bits preestablecida es menor que una profundidad de bits de las muestras de luma.
Durante la implementación, la primera profundidad de bits preestablecida puede establecerse para que sea menor que la profundidad de bits de las muestras de luma. Por ejemplo, si la profundidad de bits de las muestras de luma es de 8 bits, la primera profundidad de bits preestablecida puede ser de 1 bit, 3 bits, 4 bits, 6 bits, o similar.
Etapa 1103: determinar, en función del primer valor de croma, del segundo valor de croma, y de la segunda diferencia, un parámetro del modelo de intrapredicción correspondiente al bloque de croma objetivo.
El parámetro del modelo de intrapredicción incluye un coeficiente de escalado y un factor de desplazamiento.
Durante la implementación, después de que se obtenga la segunda diferencia, el coeficiente de escalado y el factor de desplazamiento que corresponden al bloque de croma objetivo se pueden determinar en función del primer valor de croma, el segundo valor de croma, y la segunda diferencia.
Etapa 1104: determinar información de predicción del bloque de croma objetivo en función del parámetro del modelo de intrapredicción e información de reconstrucción de luma correspondiente al bloque de croma objetivo.
Durante la implementación, después de que se determine el parámetro del modelo de intrapredicción correspondiente al bloque de croma objetivo, se puede obtener la información de reconstrucción de luma correspondiente al bloque de croma objetivo, y luego se determina la información de predicción del bloque de croma objetivo en función del parámetro del modelo de intrapredicción determinado en la etapa 1103 y la información de reconstrucción de luma correspondiente al bloque de croma objetivo.
Después de la etapa 1104, opcionalmente, el método incluye además: sumar una señal residual a la información de predicción determinada en la etapa 1104, para obtener una señal reconstruida del bloque de croma actual.
Otra realización de esta solicitud describe un ejemplo en el que la intrapredicción usa un CCLM. Este proceso existe tanto en un proceso de codificación como en un proceso de decodificación, como se muestra en la FIG.
12.
Etapa 1201: obtener un valor de luma máximo y un valor de luma mínimo en función de las muestras de luma correspondientes a muestras vecinas de un bloque de croma objetivo, y obtener un primer valor de croma correspondiente al valor de luma máximo y un segundo valor de croma correspondiente al valor de luma mínimo.
Para un proceso de procesamiento de la etapa 1201, consulte el proceso de la etapa 1101.
Etapa 1202: si una primera diferencia entre el valor de luma máximo y el valor de luma mínimo es mayor que 0, determinar una tercera diferencia entre una cantidad de bits significativos de la primera diferencia y una primera profundidad de bits preestablecida.
Durante la implementación, se puede determinar una diferencia entre el valor de luma máximo y el valor de luma mínimo, es decir, la primera diferencia. Luego, se puede determinar si la primera diferencia es mayor que 0. Si la primera diferencia es mayor que 0, se puede determinar la cantidad de bits significativos de la primera diferencia, y se puede obtener la primera profundidad de bits preestablecida prealmacenada. Luego, se puede determinar una diferencia entre la cantidad de bits significativos de la primera diferencia y la primera profundidad de bits preestablecida, es decir, la tercera diferencia. Por ejemplo, si la cantidad de bits significativos de la primera diferencia es 6 y la primera profundidad de bits preestablecida es 3, se puede determinar que la tercera diferencia es 3.
Etapa 1203: desplazar la primera diferencia hacia la derecha en función de la tercera diferencia para obtener una segunda diferencia.
Durante la implementación, después de que se determina la tercera diferencia, se puede determinar si la tercera diferencia es mayor que 0. Si la tercera diferencia es mayor que 0, la primera diferencia puede desplazarse hacia la derecha en función de la tercera diferencia para obtener la segunda diferencia. Por ejemplo, si la tercera diferencia es 3, la primera diferencia puede desplazarse hacia la derecha dos bits.
Opcionalmente, el desplazamiento hacia la derecha puede ser de la siguiente manera:
La primera diferencia se desplaza hacia la derecha en bits de la tercera diferencia para obtener la segunda diferencia.
Durante la implementación, la primera diferencia puede desplazarse hacia la derecha en los bits de la tercera diferencia para obtener la segunda diferencia. Por ejemplo, suponiendo que la primera profundidad de bits preestablecida de la primera diferencia es de 3 bits, si la primera diferencia es igual a 10001110, la cantidad de bits significativos es 8, la tercera diferencia es 5, y la segunda diferencia es igual a 100. Si la primera diferencia es igual a 00001010, la cantidad de bits significativos es 4, la tercera diferencia es 1, y la segunda diferencia es igual a 101.
f i 1N
Floor:
\ d i f f
Por lo tanto, cuando y y/o (N es un valor preestablecido de un parámetro de desplazamiento normalizado, ydiffes la segunda diferencia) se determinan posteriormente a través de una tabla de búsqueda, una profundidad de bits dediffes menor que la de la primera diferencia, y se reduce la cantidad de valores dediff enla tabla (una razón se describe a continuación). Esto puede mejorar una velocidad( jlN '\
Floor-----m o J F - '
de determinación de{cfífíy/o[ d i f f .a través de una tabla de búsqueda.
Etapa 1204: determinar, en función del primer valor de croma, el segundo valor de croma, el valor prestablecido de parámetro de desplazamiento normalizado, la segunda diferencia, y el valor de luma mínimo, el parámetro del modelo de intrapredicción correspondiente al bloque de croma objetivo.
El parámetro de desplazamiento normalizado se usa para realizar el desplazamiento, y el valor preestablecido del parámetro de desplazamiento normalizado se puede preestablecer y almacenar en el aparato mencionado anteriormente.
Durante la implementación, cada bloque de croma que usa el CCLM corresponde a un parámetro del modelo de intrapredicción, y el parámetro del modelo de intrapredicción incluye un factor de desplazamiento y un coeficiente de escalado.
Se puede determinar un coeficiente de escalado y un factor de desplazamiento correspondiente al bloque de croma objetivo en función del primer valor de croma, el segundo valor de croma, el valor preestablecido del parámetro de desplazamiento normalizado, la segunda diferencia, el valor de luma mínimo, y una fórmula preestablecida.
Opcionalmente, se puede ajustar un valor del parámetro de desplazamiento normalizado para determinar el parámetro del modelo de intrapredicción. El procesamiento correspondiente puede ser de la siguiente manera: El coeficiente de escalado en el parámetro del modelo de intrapredicción correspondiente al bloque de croma objetivo se determina en función del primer valor de croma, el segundo valor de croma, la segunda diferencia, y el valor preestablecido. El factor de desplazamiento en el parámetro del modelo de intrapredicción correspondiente al bloque de croma objetivo se determina en función del coeficiente de escalado, el segundo valor de croma, el valor preestablecido del parámetro de desplazamiento normalizado, y el valor de luma mínimo.
El parámetro de desplazamiento normalizado se usa para realizar el desplazamiento. Por ejemplo, un número es 00001010, un valor objetivo del parámetro de desplazamiento normalizado es 1, y el número se desplaza hacia la derecha para obtener 00000101. El valor objetivo del parámetro de desplazamiento normalizado se puede usar en la determinación posterior de información de predicción (que también puede denominarse señal de predicción).
Durante la implementación, se puede obtener el valor preestablecido del parámetro de desplazamiento normalizado, y el valor preestablecido es un valor del parámetro preestablecido para el parámetro de desplazamiento normalizado. Luego, el primer valor de croma, el segundo valor de croma, el valor preestablecido del parámetro de desplazamiento normalizado y la segunda diferencia se pueden introducir en una fórmula preestablecida para obtener el coeficiente de escalado correspondiente al bloque de croma objetivo, y luego el coeficiente de escalado, el valor preestablecido del parámetro de desplazamiento normalizado, y el valor de luma mínimo se introducen en otra fórmula preestablecida, para obtener el factor de desplazamiento correspondiente al bloque de croma objetivo.
Además, si la segunda diferencia es menor o igual a 0, el valor objetivo del parámetro de desplazamiento normalizado es el valor preestablecido del parámetro de desplazamiento normalizado. Posteriormente, la información de predicción puede determinarse en función del valor preestablecido del parámetro de desplazamiento normalizado.
Opcionalmente, el valor objetivo del parámetro de desplazamiento normalizado se puede determinar en función del valor preestablecido del parámetro de desplazamiento normalizado, y el factor de desplazamiento se determina en función del valor objetivo. El procesamiento puede ser de la siguiente manera:
x = Floor( Log2(diff) ) (indica que un valor obtenido después de redondear hacia abajo Log2(diff) se asigna a x);
normDiff = ( (diff<< 4 ) >> x )&15 (indica que ( (diff<< 4 ) >> x )&15 está asignado a normDiff);
x = ( normDiff != 0 ) ? 1 : 0 (indica que si normDiff != 0 es verdadero, x 1 se asigna a x; de lo contrario, x se asigna a x);
y = Floor( Log2( Abs (maxC - minC) ) ) 1 (indica que (Floor( Log2( Abs (maxC - minC) )) 1) se asigna a y);a= ( (maxC - minC) * ( divSigTable[ normDiff ] | 8 ) 2y - 1 ) >> y (indica que (( (max C - minC) * ( divSigTable [ normDiff ] | 8 ) 2y - 1 ) >> y) se asigna a a, dondeaes el coeficiente de escalado);
k = ( ( 3 x - y ) < 1 ) ? 1 : (3 x-y) (indica que si ( 3 x - y ) < 1 ) es verdadero, se asigna 1 a k; de lo contrario, se asigna (3 x - y) a k, donde k es el valor objetivo del parámetro de desplazamiento normalizado, y 3 es el valor preestablecido del parámetro de desplazamiento normalizado);
a= ( ( 3 x - y ) < 1) ? Sign( a ) * 15 :a(indica que si ( 3 x - y ) < 1 ) es verdadero, Sign(a) * 15 se asigna aa; de lo contrario,ase asigna a a, donde Sign( ) es una función de signo);
b= minC-((a*minY)>>^) (indica que (minC - ((a* minY ) >> k )) se asigna a b).
Tenga en cuenta que divSigTable[ ] es de la siguiente manera:
divSigTable[ ] = { O, 7, 6, 5, 5, 4, 4, 3, 3, 2, 2, 1, 1, 1, 1, O }.
Opcionalmente, en otra manera, el valor objetivo del parámetro de desplazamiento normalizado se puede determinar en función del valor preestablecido del parámetro de desplazamiento normalizado, y el factor de desplazamiento se determina en función del valor objetivo. El procesamiento puede ser de la siguiente manera: El factor de desplazamiento en el parámetro del modelo de intrapredicción correspondiente al bloque de croma objetivo se determina en función del coeficiente de escalado, el segundo valor de croma, el valor objetivo del parámetro de desplazamiento normalizado, y el valor de luma mínimo. El valor objetivo del parámetro de desplazamiento normalizado se determina en función del valor preestablecido del parámetro de desplazamiento normalizado y la tercera diferencia.
Durante la implementación, el valor preestablecido del parámetro de desplazamiento normalizado y la tercera diferencia se suman para obtener el valor objetivo del parámetro de desplazamiento normalizado. Luego, el coeficiente de escalado, el valor objetivo del parámetro de desplazamiento normalizado, y el valor de luma mínimo se introducen en una fórmula preestablecida, para obtener el factor de desplazamiento correspondiente al bloque de croma objetivo.
Opcionalmente, en una posible implementación, el valor preestablecido del parámetro de desplazamiento normalizado es la profundidad de bits de la primera diferencia, una profundidad de bits de muestras de luma, una suma de la profundidad de bits de la primera diferencia y un segundo valor preestablecido, un producto de la profundidad de bits de la primera diferencia y un tercer valor preestablecido, o una profundidad de bits de un byte.
El segundo valor preestablecido es un número entero positivo, por ejemplo, 4 bits. El tercer valor preestablecido es un número entero positivo, por ejemplo, 2 bits.
Durante la implementación, el valor preestablecido del parámetro de desplazamiento normalizado puede establecerse en la profundidad de bits de la primera diferencia. El valor preestablecido del parámetro de desplazamiento normalizado también puede establecerse en la profundidad de bits de muestras de luma. El valor preestablecido del parámetro de desplazamiento normalizado también puede establecerse en la suma de la profundidad de bits de la primera diferencia y el segundo valor preestablecido. Por ejemplo, la profundidad de bits de la primera diferencia es de 4 bits, el segundo valor preestablecido es de 4 bits, y el valor preestablecido del parámetro de desplazamiento normalizado puede ser de 8 bits.
El valor preestablecido del parámetro de desplazamiento normalizado también puede establecerse en el producto de la profundidad de bits de la primera diferencia y el tercer valor preestablecido. Por ejemplo, la profundidad de bits de la primera diferencia es de 4 bits, el tercer valor preestablecido es 2, y el valor preestablecido del parámetro de desplazamiento normalizado es de 8 bits.
El valor preestablecido del parámetro de desplazamiento normalizado puede establecerse en la profundidad de bits de un byte.
De esta manera, el valor preestablecido del parámetro de desplazamiento normalizado se puede ajustar a uno cualquiera de los valores anteriores, y es menor que 16 en la tecnología relacionada. Esto puede reducir una profundidad de bits de un valor en la tabla para una búsqueda posterior y, por lo tanto, reducir la cantidad de datos de la tabla.
Etapa 1205: determinar información de predicción del bloque de croma objetivo en función del parámetro del modelo de intrapredicción e información de reconstrucción de luma correspondiente al bloque de croma objetivo.
Durante la implementación, después de que se determinan el coeficiente de escalado y el factor de desplazamiento del bloque de croma objetivo, se puede obtener una fórmula prealmacenadapredSamples[x][y]=Clip1C(((pDsY[x][y]*a)>>k)+b)para determinar información de predicción. En esta fórmula,predSamples[x][y]es la información de predicción del bloque de croma objetivo,pDsY[x][y]es un valor de un bloque de submuestreo de un bloque de luma correspondiente,Clip1C () es una operación de recorte (permite que un valor de muestra obtenido caiga dentro de un intervalo válido), y k es el valor objetivo del parámetro de desplazamiento normalizado. En esta fórmula, debido a que pDsY[x][y], a, ybson todos conocidos, se puede determinarpredSamples[x][y]del bloque de croma objetivo. En otras palabras, se puede determinar la información de predicción (que también puede denominarse señal de predicción) del bloque de croma objetivo.
De esta manera, para cada bloque de croma que usa el CCLM y que se está en cada fotograma de imagen, se obtiene información de predicción según las etapas anteriores y se determina, para realizar procesamiento de codificación o procesamiento de decodificación.
Después de la etapa 1205, opcionalmente, el método incluye además: sumar una señal residual a la información de predicción determinada en la etapa 1205, para obtener una señal reconstruida del bloque de croma actual.
Opcionalmente, la información de reconstrucción de luma correspondiente al bloque de croma objetivo incluye información de submuestreo de un bloque de reconstrucción de luma correspondiente al bloque de croma objetivo.
Opcionalmente, en la etapa 1204, hay una pluralidad de maneras de determinar el coeficiente de escalado y el factor de desplazamiento. Esta realización proporciona tres maneras viables:
a =(maxC -m i<.>nC.\* Floor ( \--2-N--div
V} (d i f f
Manera 1: v 7 , donde a es el coeficiente de escalado,diffes la segunda diferencia, max C es el primer valor de croma, min C es el segundo valor de croma, y N es el valor preestablecido.b= minC-((a*minY)>>k), donde b es el factor de desplazamiento, a es el coeficiente de escalado, min C es el segundo valor de croma, minY es el valor de luma mínimo y k es el valor objetivo. Durante la implementación, se puede obtener una fórmula de cálculo del coeficiente de escaladoa =(maxC - mi■nC)* F lo o r ( l--2-N--\<^>+ div
preestablecidoK } (vd i f f J ). Luego, el primer valor de croma maxC, el segundo valor de croma min C, el valor preestablecido N del parámetro de desplazamiento normalizado, y la segunda diferenciadiffse sustituyen en la fórmula, para obtener el coeficiente de escalado a correspondiente al bloque de croma objetivo. En esta fórmula,
indica que
se redondea hacia abajo, indica que se redondea hacia abajo. Por ejemplo, si N esa= (maxC -minC) div
16, '
Luego, se puede obtener una fórmula de cálculo del factor de desplazamiento preestablecidob= minC-((a*min Y)>>k). Indica que se calcula una diferencia entre minC y un valor obtenido después de que a*minYse desplaza hacia la derecha en k bits, para obtener el factor de desplazamiento b correspondiente al bloque de croma objetivo. El coeficiente de escalado a, el segundo croma min C, y el valor objetivokdel parámetro de desplazamiento normalizado, y el valor de luma mínimo minY se pueden sustituir en esta fórmula, para determinar el factor de desplazamiento b correspondiente al bloque de croma objetivo. De la manera 1, K = N shiftLuma, donde shiftLuma es la tercera diferencia mencionada anteriormente.
Se debe tener en cuenta que, cuando el coeficiente de escalado se determina en función de( 2N \
a= (maxC - m i nC)*Floor-----+div
(vd i f fy , debido a quediffes un denominador, cuando se usa esta formula, se debe cumplir una condición de quediffsea mayor que 0. Cuandodiffno es mayor que 0, el coeficiente de escalado es 0 y el factor de desplazamiento es el segundo valor de croma.
Los pseudocódigos usados en el proceso de procesamiento de la etapa 1202 de la manera 1 pueden expresarse de la siguiente manera:
A = maxY - minY (indica que la primera diferencia (denotada como A) es la diferencia entre el valor de luma máximo y el valor de luma mínimo);
shiftLuma = (A= =0) ? 0 : Floor(Log2(Abs(A))) - DIFF_BIT_DEPTH (indica que la tercera diferencia (denotada como shiftLuma) es 0 cuando la primera diferencia igual a 0 es verdadera, o la tercera diferencia es Floor(Log2(Abs(A))) - DIFF_BIT_DEPTH cuando la primera diferencia igual a 0 es falsa, donde Abs() indica que se usa un valor absoluto, y DIFF_BIT_DEPTH es la primera profundidad de bits preestablecida); shiftLuma = Max(0, shiftLuma) (indica que la tercera diferencia shiftLuma es un valor mayor entre 0 y shiftLuma);
diff= A >> shiftLuma (indica que la primera diferencia A se desplaza hacia la derecha en bits de la tercera diferencia, para obtener la segunda diferencia);
k = N shiftLuma (indica que el valor objetivo k del parámetro de desplazamiento normalizado es una suma del valor preestablecido N del parámetro de desplazamiento normalizado y la tercera diferencia).
Sidiffes mayor que 0, se aplica lo siguiente:
a =ímaxC
V
De lo contrario, se aplica lo siguiente:
a =<0;>
6 = minC-((tf*min7)>>£),
donde , a es el coeficiente de escalado, max C es el primer croma, min C es el segundo croma, k es el valor objetivo del parámetro de desplazamiento normalizado, min Y es el valor de luma mínimo,bes el factor de desplazamiento,diffes la segunda diferencia, y N es el valor preestablecido del parámetro de desplazamiento normalizado.
Se debe tener en cuenta que los textos entre paréntesis se usan para explicar una afirmación anterior.
a -ÍmaxC - mi<.>nC)* Floor f--2-N--V’ { diff
Manera 2: , donde a es el coeficiente de escalado,diffes la segunda diferencia, max C es el primer valor de croma, min C es el segundo valor de croma, y N es el valor preestablecido.b= minC-((a*minY)>>k), donde b es el factor de desplazamiento, a es el coeficiente de escalado, min Y es el valor de luma mínimo, y k es el valor objetivo.
Durante la implementación, se puede obtener una fórmula de cálculo del coeficiente de escaladoa= (maxC —min C ) *Floor
preestablecido vdiff J .Luego, el primer valor de croma maxC, el segundo valor de croma min C, el valor preestablecido del parámetro de desplazamiento normalizado, y la segunda diferenciadiffse sustituyen en la fórmula, para obtener el coeficiente de escalado. En esta fórmula,
se redondea hacia abajo.
Luego, se puede obtener una fórmula de cálculo del factor de desplazamiento preestablecidob= minC-((a*minY)>>k).Indica que se calcula una diferencia entre minC y un valor obtenido después de que a*minYse desplaza hacia la derecha en k bits, para obtener el factor de desplazamiento b correspondiente al bloque de croma objetivo. El coeficiente de escalado a, el segundo croma min C, y el valor objetivokdel parámetro de desplazamiento normalizado, y el valor de luma mínimo min Y se pueden sustituir en esta fórmula, para determinar el factor de desplazamiento b correspondiente al bloque de croma objetivo. De la manera 1, K = N shiftLuma, donde shiftLuma es la tercera diferencia mencionada anteriormente.
Se debe tener en cuenta que, cuando el coeficiente de escalado se determina en función de
, debido a quediff esun denominador, cuando se usa esta fórmula, se
debe cumplir una condición de quediffsea mayor que 0. Cuandodiffno es mayor que 0, el coeficiente de escalado es 0 y el factor de desplazamiento es el segundo valor de croma.
Los pseudocódigos usados en el proceso de procesamiento de la etapa 1202 de la manera 2 pueden expresarse de la siguiente manera:
A = maxY - minY (indica que la primera diferencia (denotada como A) es la diferencia entre el valor de luma máximo y el valor de luma mínimo);
shiftLuma = (A= =0) ? 0 : Floor(Log2(Abs(A))) - DIFF_BIT_DEPTH (indica que la tercera diferencia (denotada como shiftLuma) es 0 cuando la primera diferencia igual a 0 es verdadera, o la tercera diferencia es Floor(Log2(Abs(A))) - DIFF_BIT_DEPTH cuando la primera diferencia igual a 0 es falsa, donde Abs() indica que se usa un valor absoluto, y DIFF_BIT_DEPTH es la primera profundidad de bits preestablecida); shiftLuma = Max(0, shiftLuma) (indica que la tercera diferencia shiftLuma es un valor mayor entre 0 y shiftLuma);
diff=A>> shiftLuma (indica que la primera diferencia A se desplaza hacia la derecha en bits de la tercera diferencia, para obtener la segunda diferencia);
k = N shiftLuma (indica que el valor objetivo k del parámetro de desplazamiento normalizado es una suma del valor preestablecido N del parámetro de desplazamiento normalizado y la tercera diferencia).
Sidiffes mayor que 0, se aplica lo siguiente:
= (max
De lo contrario, se aplica lo siguiente:
a =<0 ; y>
b= minC- ((a * minf)» k } ,
dondeaes el coeficiente de escalado, max C es el primer croma, minCes el segundo croma, k es el valor objetivo del parámetro de desplazamiento normalizado, minY es el valor de luma mínimo, b es el factor de desplazamiento,diffes la segunda diferencia, y N es el valor preestablecido del parámetro de desplazamiento normalizado.
Se debe tener en cuenta que los textos entre paréntesis se usan para explicar una afirmación anterior.
( 2n ) f i 1N
Floor| —— IFloor-ldiff IIdif f
Se debe tener en cuenta que, cuando y v y se determinan generalmente a través de una tabla de búsqueda. Si la profundidad de bits dediffes de 10 bits, el intervalo de valores dediffes de 0 a 1023, y hay un total de 1024 casos. Si se usa un valor dediffcomo columna, hay 1024 columnas. Si se utiliza 216 como fila, hay una fila. En otras palabras, hay una tabla de 1 x 1024. En esta tabla, cada valor de 216
correspondiente adifftiene un valor numérico, que es a resultado del cálculo de . De esta
manera, se necesitan dos tablas para . Se busca en una tabla para encontrar
un resultado de cálculo de , y se busca en la otra tabla para encontrar un resultado de cálculo
De la manera 1 y la manera 2, la primera diferencia A se desplaza hacia la derecha para obtener la segunda diferenciadiff,y en consecuencia e cambia a Una profundidad de bits de un
denominador es menor que la de en la tecnología relacionada, y esto puede mejorar una
velocidad de determinación de a través de una tabla de búsqueda. Una velocidad de una tabla de búsqueda se puede mejorar debido a que se reduce la profundidad de bits de A y se reduce la cantidad de todos los valores posibles de A en una tabla. Por ejemplo, si la profundidad de bits de A es de 10 bits, hay un total de 210 valores en la tabla. Después de cambiar la profundidad de bits dediffa 3 bits, hay un total de 23 valores en la tabla. En este caso, se reduce un tamaño de la tabla. Además, de la manera 1 y la manera 2, A no se desplaza directamente hacia la derecha en bits de la primera profundidad de bits preestablecida, sino que A se desplaza hacia la derecha en bits de una diferencia entre A y la primera profundidad de bits preestablecida, para reservar los bits significativos de A tanto como sea posible. Esto puede mejorar el rendimiento de codificación y decodificación.
Además, el coeficiente de escalado y el factor de desplazamiento se determinan tanto de la manera 1 como de la manera 2. Sin embargo, en comparación con la manera 1, de la manera 2, no se usa un parámetrodiv ( 22N \
F loo rl -cuando se determina el coeficiente de escalado. Por lo tanto,[ d i f f )no se incluye de la manera 2 y
no es necesario buscarlo ni calcularlo. De la manera 2, solo debe almacenarse una tabla, que se usa para
determinar un resultado de cálculo de . Además, debido a que no se usa el parámetrodiv,no
(maxC -m in C ) *F loo r
hay kd J iJff J. En otras palabras, no existe ninguna operación de multiplicación de números grandes. Por lo tanto, esto puede reducir la complejidad de cálculo del coeficiente de escalado, y determinar rápidamente el coeficiente de escalado.
Además, de la manera 1, A puede refinarse adicionalmente. Para ser específico, se sumaaddDiffa A, y addD/7f=(shiftLuma)?1 <<(shiftLuma-1):0 (si shiftLuma no es igual a 0 es verdadero,addDiffes 1<<(shiftLuma-1); si shiftLuma no es igual a 0 es falso,addDiffes 0). De esta manera, los pseudocódigos de la manera 1 pueden expresarse de la siguiente manera:
A= maxY - minY;
shiftLuma - (A= -0) ? 0 : Floor(Log2(Abs(A))) - DIFF_BIT_DEPTH;
shiftLuma = Max(0, shiftLuma);
addDiff=( shiftLuma) ? 1 « ( shiftLuma-1): 0;
d iff= (A+addD iff) » shiftLuma:
k = N shiftLuma.
Sidiffes mayor que 0, se aplica lo siguiente:
= (max .
En caso contrario, se aplica lo siguiente:
« = 0;
Además, de la manera 2, A puede refinarse adicionalmente. Para ser específico, se sumaaddDiffa A, y addDiff=(shiftLuma)?1 <<(shiftLuma-1):0 (si shiftLuma no es igual a 0 es verdadero,addDiffes 1<<(shiftLuma-1); si shiftLuma no es igual a 0 es falso,addDiffes 0). De esta manera, los pseudocódigos de la manera 1 pueden expresarse de la siguiente manera:
A= maxY - minY;
shiftLuma - (A= -0) ? 0 : Floor(Log2(Abs(A))) - DIFF_BIT_DEPTH;
shiftLuma = Max(0, shiftLuma);
addDiff =(shiftLuma) ? 1 « ( shiftLuma-1): 0
diff= (A+addDiff ) »shiftLuma:
y
k = N shiftLuma.
Sidiffes mayor que 0, se aplica lo siguiente:
De lo contrario, se aplica lo siguiente:
£7 = 0; y
b= rn in C -((£ í* rn in Y ) » & ) .
Manera 3: un coeficiente de escalado inicial en el parámetro del modelo de intrapredicción correspondiente al bloque de croma objetivo se determina en función del primer valor de croma, el segundo valor de croma, el valor preestablecido, y la segunda diferencia.
Si una cuarta diferencia entre una cantidad de bits significativos del coeficiente de escalado inicial y una segunda profundidad de bits preestablecida es mayor que 0, el coeficiente de escalado inicial se desplaza hacia la derecha en función de la cuarta diferencia para obtener el coeficiente de escalado en el parámetro del modelo de intrapredicción correspondiente al bloque de croma objetivo.b= minC-((a*minY)>>k), donde b es el factor de desplazamiento, a es el coeficiente de escalado, min C es el segundo valor de croma, minY es el valor de luma mínimo, y k es el valor objetivo.
La segunda profundidad de bits preestablecida es una profundidad de bits preestablecida para el coeficiente de escalado correspondiente, y se almacena en el aparato mencionado anteriormente. Por ejemplo, la segunda profundidad de bits preestablecida puede ser menor a 26 bits, o puede ser 16 bits, 10 bits, 8 bits, o similar.
Durante la implementación, el coeficiente de escalado inicial en el parámetro del modelo de intrapredicción correspondiente al bloque de croma objetivo se puede determinar en función del primer valor de croma, el segundo valor de croma, el valor preestablecido, y la segunda diferencia. Para este proceso, consulte la manera 1 o la manera 2 anteriores. Luego, se puede obtener la segunda profundidad de bits preestablecida correspondiente al coeficiente de escalado, se determina la cuarta diferencia entre la cantidad de bits significativos del coeficiente de escalado inicial y la segunda profundidad de bits preestablecida, y se determina si la cuarta diferencia es mayor que 0. Si la cuarta diferencia es mayor que 0, el coeficiente de escalado inicial se desplaza hacia la derecha en función de la cuarta diferencia para obtener el coeficiente de escalado correspondiente al bloque de croma objetivo. Por ejemplo, si la cuarta diferencia es 4, el coeficiente de escalado inicial puede desplazarse hacia la derecha en tres bits.
Después de determinar el coeficiente de escalado, se puede determinar un factor de escalado objetivo. Una manera de determinación es la misma que el procesamiento de la manera 1 o de la manera 2. Los detalles no se describen de nuevo en la presente memoria.
Opcionalmente, el desplazamiento a la derecha en la manera 3 puede ser de la siguiente manera:
El coeficiente de escalado inicial se desplaza hacia la derecha en bits de la cuarta diferencia, para obtener el coeficiente de escalado en el parámetro del modelo de intrapredicción correspondiente al bloque de croma objetivo.
Durante la implementación, después de que se determina que la cuarta diferencia es mayor que 0, el coeficiente de escalado inicial puede desplazarse hacia la derecha en los bits de la cuarta diferencia, para obtener el coeficiente de escalado en el parámetro del modelo de intrapredicción correspondiente al bloque de croma objetivo.
Opcionalmente, el valor objetivo del parámetro de desplazamiento normalizado también puede ajustarse en función del coeficiente de escalado desplazado. El procesamiento correspondiente puede ser de la siguiente manera:
Si la cuarta diferencia es mayor que 0, se determina una diferencia entre la cuarta diferencia y una suma del valor preestablecido del parámetro de desplazamiento normalizado y la tercera diferencia como el valor objetivo del parámetro de desplazamiento normalizado.
Durante la implementación, si la tercera diferencia es mayor que 0 y la cuarta diferencia entre la cantidad de bits significativos del coeficiente de escalado inicial y la segunda profundidad de bits preestablecida es mayor que 0, se puede determinar la diferencia entre la cuarta diferencia y la suma del valor preestablecido del parámetro de desplazamiento normalizado y la tercera diferencia, y luego se puede determinar la diferencia como el valor objetivo del parámetro de desplazamiento normalizado.
De la manera 3, después de que se obtenga el valor objetivo del parámetro de desplazamiento normalizado, una manera de determinar el factor de desplazamiento puede ser de la siguiente manera: se puede obtener una fórmula de cálculo del factor de desplazamiento preestablecido b=minC-((a*minY) >> k), que indica que se obtiene una diferencia entre min C y un valor obtenido después de que a*minY se desplace en k bits hacia la derecha, para obtener el factor de desplazamiento b correspondiente al bloque de croma objetivo. El coeficiente de escalado a, el segundo croma min C, el valor objetivokdel parámetro de desplazamiento normalizado, y el valor de luma mínimo minY se sustituyen en la fórmula, para determinar el factor de desplazamiento b correspondiente al bloque de croma objetivo. K = N shiftLuma - shiftA, donde shiftLuma es la tercera diferencia mencionada anteriormente, N es el valor preestablecido del parámetro de desplazamiento normalizado mencionado anteriormente, y shiftA es la cuarta diferencia.
Se debe tener en cuenta que, de la manera 3, debido a que el factor de desplazamiento se obtiene en función del coeficiente de escalado y del valor objetivo del parámetro de desplazamiento normalizado, el factor de desplazamiento también cambia. En otras palabras, el factor de desplazamiento se puede recalcular según una fórmulab= minC-((a* minY)>> k), para obtener un factor de desplazamiento b. En esta fórmula, min C indica el segundo valor de croma,aes el coeficiente de escalado, minY es el valor de luma mínimo, ykes el valor objetivo (es decir, la cuarta diferencia) del parámetro de desplazamiento normalizado.
Se debe tener en cuenta además que, este proceso es equivalente a un ajuste adicional en función del coeficiente de escalado determinado y el factor de desplazamiento determinado. Debido a que se desplaza el coeficiente de escalado inicial, después de que se obtiene el coeficiente de escalado inicial, se reduce la profundidad de bits del coeficiente de escalado. Por lo tanto, esto puede reducir la complejidad de determinar posteriormente la multiplicación en la información de predicción.
Además, si la cuarta diferencia no es mayor que 0, el coeficiente de escalado inicial no se desplaza. En otras palabras, el coeficiente de escalado es el mismo que el coeficiente de escalado inicial, y un factor de desplazamiento inicial es el mismo que el factor de desplazamiento.
Si el coeficiente de escalado inicial se obtiene de la manera 1, los pseudocódigos usados en el proceso de la manera 3 pueden ser de la siguiente manera:
A = maxY - minY (indica que la primera diferencia (denotada como A) es la diferencia entre el valor de luma máximo y el valor de luma mínimo);
shiftLuma = (A= =0) ? 0 : Floor(Log2(Abs(A))) - DIFF_BIT_DEPTH (indica que la tercera diferencia (denotada como shiftLuma) es 0 cuando la primera diferencia igual a 0 es verdadera, o la tercera diferencia es Floor(Log2(Abs(A))) - DIFF_BIT_DEPTH cuando la primera diferencia igual a 0 es falsa, donde Abs() indica que se usa un valor absoluto, y DIFF_BIT_DEPTH es la primera profundidad de bits preestablecida);
shiftLuma = Max(0, shiftLuma) (indica que la tercera diferencia shiftLuma es un valor mayor entre 0 y shiftLuma);
diff =A >> shiftLuma (indica que la primera diferencia A se desplaza hacia la derecha en bits de la tercera diferencia, para obtener la segunda diferencia);
k = N shiftLuma (indica que el valor objetivo k del parámetro de desplazamiento normalizado es una suma del valor preestablecido N del parámetro de desplazamiento normalizado y la tercera diferencia).
Sidiffes mayor que 0, se aplica lo siguiente:
= (max
V
div=(max
donde
shiftA= (a= =0) ? 0 : Floor(Log2(Abs(a))) - A_BIT_DEPTH (indica que la cuarta diferencia (denotada como shift A) es 0 cuandoaes igual a 0 es verdadero, o la cuarta diferencia es Floor(Log2(Abs(a))) -A_BIT_DEPTH<cuando a es igual a 0 es falso, donde Abs() indica que se usa un valor absoluto y>A_B<i>T_D<e p>T<h es la segunda>profundidad de bits preestablecida);
shiftA = Max(0, shiftA) (indica que la cuarta diferencia shiftA es un valor mayor entre 0 y shiftA);
a=a>> shiftA (indica quease desplaza hacia la derecha en bits de la cuarta diferencia para obtener el coeficiente de escalado);
k = N shiftLuma - shiftA (indica que el valor objetivo k del parámetro de desplazamiento normalizado es igual a una diferencia entre la cuarta diferencia y una suma del valor preestablecido N del parámetro de desplazamiento normalizado y la tercera diferencia).
En caso contrario, se aplica lo siguiente:
Además, el coeficiente de escalado se puede refinar adicionalmente. Para ser específico,addAse suma al coeficiente de escalado inicial, y luego (a+addA)se desplaza hacia la derecha en shiftA, para determinar un coeficiente de escalado final. addA=(shiftA)?1<<(shiftA-1):0 (un valor deaddAes: si shiftA no es igual a 0 es verdadero,addAes 1<<(shiftA-1); si shiftA no es igual a 0 es falso,addAse establece en 0). De esta manera, los pseudocódigos para desplazar el coeficiente de escalado inicial obtenido de la manera 1 pueden expresarse de la siguiente manera:
A =m axY -m inY ;
shiftLuma - (A= -0) ? 0 : Floor(Log2(Abs(A))) - DIFF_BIT_DEPTH;
shiftLuma = Max(0, shiftLuma);
diff = A »shiftLuma;
k = N shiftLuma.
Sidiffes mayor que 0, se aplica lo siguiente:
a= (m axC
(
div=(max
donde
shiftA= (a ==0)?0:Floor(Log2(Abs(ü )))- A BIT DEPTH;
shiftA = Max(0, shiftA);
addA= shiftA? 1 « (shiftA - 1): 0;
ü =(a addA)» shiftA;
k = N shiftLuma - shiftA;
De lo contrario, se aplica lo siguiente:
a =0 ;
y
b -m inC -( (a* m inY) »k }.
De esta manera, debido a que a se refina, la información de predicción obtenida posteriormente es más precisa. Si el coeficiente de escalado inicial se obtiene de la manera 2, los pseudocódigos usados en el proceso de la manera 3 pueden ser de la siguiente manera:
A =m axY -m inY ;
shiftLuma = (A= -0) ? 0 : Floor(Log2(Abs(A))) - DIFF_BIT_DEPTH;
shiftLuma = Max(0, shiftLuma);
diff= A » shiftLuma;
k = N shiftLuma.
Sidiffes mayor que 0, se aplica lo siguiente:
a= (maxC
V
shiftA =( ü = = 0 ) 10 :Floor(Log2(Abs(ü))) - A_BIT_DEPTH;
shiftA = Max(0, shiftA);
Ci = ü» shiftA;
k = N shiftLuma - shiftA;
ó = m m C -( ( a * r n in f ) > > A;).
De lo contrario, se aplica lo siguiente:
a -0; y
b= minC-((a*rnin7) »&).
Además, el coeficiente de escalado se puede refinar adicionalmente. Para ser específico,addAse suma al coeficiente de escalado inicial, y luego (a+addA)se desplaza hacia la derecha en shiftA, para determinar el coeficiente de escalado final. addA=(shiftA)?1<<(shiftA-1):0 (un valor deaddAes: si shiftA no es igual a 0 es verdadero,addAes 1<<(shiftA-1); si shiftA no es igual a 0 es falso,addAse establece en 0). De esta manera, los pseudocódigos para desplazar el coeficiente de escalado inicial obtenido de la manera 2 se expresan de la siguiente manera:
A = maxY - minY;
shiftLuma - (A= -0) ? 0 : Floor(Log2(Abs(A))) - DIFF_BIT_DEPTH;
shiftLuma = Max(0, shiftLuma);
diff= A » shiftLuma;
k = N shiftLuma;
Sidiffes mayor que 0, se aplica lo siguiente:
shiñA=( ü = = 0 ) 1 0 :Floor(Log2(Abs(ü))) - A_BIT_DEPTH;
shiftA = Max(0, shiftA);
addA = shiftA? 1 « (shiftA - 1): 0;
ü = ( ü+ addA)» shiftA;
k = N shiftLuma - shiftA.
¿ = mmC-(^a*rnin7) » k )j
En caso contrario, se aplica lo siguiente:
a =0
b= minC-((a*rnin7)» k } .
De esta manera, debido a que a se refina, la información de predicción obtenida posteriormente es más precisa. Opcionalmente, la segunda profundidad de bits preestablecida es una profundidad de bits de un coeficiente de filtro de intrainterpolación.
Durante la implementación, la segunda profundidad de bits preestablecida se establece en la profundidad de bits del coeficiente del filtro de intrainterpolación, para alinearse con la complejidad de intrapredicción. Por ejemplo, en un estándar existente, la profundidad de bits del coeficiente del filtro de intrainterpolación es de 6 bits, y la segunda profundidad de bits preestablecida también puede ser de 6 bits.
Opcionalmente, en esta realización de esta solicitud, cuando la primera diferencia no es mayor que 0, un método para determinar el coeficiente de escalado y el factor de desplazamiento puede ser de la siguiente manera:
Si la primera diferencia no es mayor que 0, se determina que el coeficiente de escalado en el parámetro del modelo de intrapredicción es 0, y se determina que el factor de desplazamiento en el parámetro del modelo de intrapredicción es el segundo valor de croma.
Durante la implementación, si la primera diferencia no es mayor que 0, se puede determinar que el coeficiente de escalado es 0. Luego, el segundo valor de croma, el valor objetivo del parámetro de desplazamiento normalizado, y el valor de luma mínimo se sustituyen en la fórmulab=minC-((a* minY)>>k), para obtener b = min C. En otras palabras, el factor de desplazamiento es el segundo valor de croma.
Las realizaciones de los métodos anteriores y sus implementaciones específicas pueden ser ejecutadas por los aparatos o sistemas mostrados de las FIG. 1 a FIG. 5.
En esta realización de esta solicitud, cuando se determina la información de predicción del bloque de croma objetivo, se pueden obtener el valor de luma máximo y el valor de luma mínimo en las muestras de luma correspondientes a las muestras vecinas del bloque de croma objetivo, se pueden obtener el primer valor de luma correspondiente al valor de luma máximo y el segundo valor de croma correspondiente al valor de luma mínimo, y luego se puede determinar la primera diferencia entre el valor de luma máximo y el valor de luma mínimo. Si la primera diferencia es mayor que 0, la primera diferencia se puede desplazar hacia la derecha en función de la cantidad de bits significativos de la primera diferencia y la primera profundidad de bits preestablecida para obtener la segunda diferencia. Luego, se determina un parámetro del modelo de intrapredicción correspondiente al bloque de croma objetivo en función de un primer valor de croma, un segundo valor de croma, y la segunda diferencia, y luego se determina la información de predicción del bloque de croma objetivo en función del parámetro del modelo de intrapredicción y la información de reconstrucción de luma correspondiente al bloque de croma objetivo. De esta manera, cuando se determina el parámetro del modelo de intrapredicción, la primera diferencia entre el valor de luma máximo y el valor de luma mínimo se desplaza hacia la derecha en función de la cantidad de bits significativos de la primera diferencia y la primera profundidad de bits preestablecida. Esto puede reducir la cantidad de cálculos del parámetro del modelo de intrapredicción, y mejorar la eficiencia de predicción del bloque de croma.
El parámetro del modelo de intrapredicción incluye un coeficiente de escalado y un factor de desplazamiento. Para ser específico, cuando se determina el coeficiente de escalado, la primera diferencia entre el valor de luma máximo y el valor de luma mínimo se desplaza hacia la derecha en función de la cantidad de bits significativos de la primera diferencia y la primera profundidad de bits preestablecida. Por lo tanto, esto puede reducir las cantidades de cálculo para determinar el coeficiente de escalado y el factor de desplazamiento, disminuir la complejidad de la determinación de la información de predicción, y mejorar la eficiencia de predicción del bloque de croma.
La FIG. 13 es un diagrama de una estructura de un aparato de predicción de bloques de croma según una realización de esta solicitud. El aparato puede implementarse como una parte del aparato o como el aparato completo usando software, hardware o una combinación de los mismos. El aparato proporcionado en esta realización de esta solicitud puede implementar los procedimientos en la FIG. 11 y la FIG. 12 en las realizaciones de esta solicitud. El aparato incluye el módulo 1310 de obtención y el módulo 1320 de determinación.
El módulo 1310 está configurado para obtener un valor de luma máximo y un valor de luma mínimo en función de las muestras de luma correspondientes a muestras vecinas de un bloque de croma objetivo, y obtener un primer valor de croma correspondiente al valor de luma máximo y un segundo valor de croma correspondiente al valor de luma mínimo. El módulo 1310 de obtención puede configurarse específicamente para implementar funciones de obtención y etapas implícitas incluidas mostradas en la FIG. 11 y la FIG. 12.
El módulo 1320 de determinación está configurado para:
si una primera diferencia entre el valor de luma máximo y el valor de luma mínimo es mayor que 0, procesar la primera diferencia en función de una cantidad de bits significativos de la primera diferencia y una primera profundidad de bits preestablecida para obtener una segunda diferencia, donde una profundidad de bits de la segunda diferencia es menor que una profundidad de bits de la primera diferencia;
determinar, en función del primer valor de croma, el segundo valor de croma, y la segunda diferencia, un parámetro del modelo de intrapredicción correspondiente al bloque de croma objetivo; y
determinar información de predicción del bloque de croma objetivo en función del parámetro del modelo de intrapredicción e información de reconstrucción de luma correspondiente al bloque de croma objetivo. El módulo 1320 de determinación se puede usar específicamente para implementar funciones de determinación y etapas implícitas incluidas mostradas en la FIG. 11 y la FIG. 12.
Opcionalmente, el módulo 1310 de obtención está configurado para:
obtener el valor de luma máximo y el valor de luma mínimo en las muestras de luma correspondientes a muestras vecinas del bloque de croma objetivo.
Opcionalmente, el módulo 1310 de obtención está configurado para:
dividir una cantidad preestablecida de muestras de luma correspondientes a una cantidad preestablecida de muestras vecinas del bloque de croma objetivo en un primer conjunto de muestras de luma y un segundo conjunto de muestras de luma, donde una cantidad de muestras de luma en el primer conjunto de muestras de luma es la misma que una cantidad de muestras de luma en el segundo conjunto de muestras de luma, y los valores de luma de las muestras de luma en el primer conjunto de muestras de luma son mayores o iguales que los valores de luma de las muestras de luma en el segundo conjunto de muestras de luma; y determinar el valor de luma máximo en función del primer conjunto de muestras de luma, y determinar el valor de luma mínimo en función del segundo conjunto de muestras de luma.
Opcionalmente, el módulo 1320 de determinación está configurado para:
desplazar la primera diferencia hacia la derecha para obtener la segunda diferencia.
Opcionalmente, el módulo 1320 de determinación está configurado para:
determinar una tercera diferencia entre la cantidad de bits significativos de la primera diferencia y la primera profundidad de bits preestablecida; y
desplazar la primera diferencia hacia la derecha en función de la tercera diferencia para obtener la segunda diferencia, donde la tercera diferencia es mayor que 0.
Opcionalmente, el módulo 1320 de determinación está configurado para:
desplazar la primera diferencia hacia la derecha en bits de la tercera diferencia para obtener la segunda diferencia.
Opcionalmente, el módulo 1320 de determinación está configurado para:
determinar, en función del primer valor de croma, el segundo valor de croma, un valor preestablecido de un parámetro de desplazamiento normalizado, la segunda diferencia, y el valor de luma mínimo, el parámetro del modelo de intrapredicción correspondiente al bloque de croma objetivo.
Opcionalmente, el módulo 1320 de determinación está configurado para:
determinar, en función del primer valor de croma, el segundo valor de croma, la segunda diferencia, y el valor preestablecido, un coeficiente de escalado en el parámetro del modelo de intrapredicción correspondiente al bloque de croma objetivo; y
determinar, en función del coeficiente de escalado, el segundo valor de croma, el valor preestablecido del parámetro de desplazamiento normalizado, y el valor de luma mínimo, un factor de desplazamiento en el parámetro del modelo de intrapredicción correspondiente al bloque de croma objetivo.
Opcionalmente, el módulo 1320 de determinación está configurado para:
determinar, en función del coeficiente de escalado, el segundo valor de croma, un valor objetivo del parámetro de desplazamiento normalizado, y el valor de luma mínimo, el factor de desplazamiento en el parámetro del modelo de intrapredicción correspondiente al bloque de croma objetivo, donde el valor objetivo del parámetro de desplazamiento normalizado se determina en función del valor preestablecido del parámetro de desplazamiento normalizado y de la tercera diferencia.
Opcionalmente, el módulo 1320 de determinación está configurado para:
)N \
= (max C - min C) *Floor
diff, donde a es el coeficiente de escalado,diffes la segunda diferencia, max C es el primer valor de croma, min C es el segundo valor de croma, y N es el valor preestablecido. Opcionalmente, el módulo 1320 de determinación está configurado para:
a =ímaxC
V
í 22N^( 0N \
div=(maxC -min C) *Floor -FloorZ*2n +2N~l» N
dondediff diff Ja es el coeficiente de escalado,diffes la segunda diferencia, max C es el primer valor de croma, min C es el segundo valor de croma, y N es el valor preestablecido.
Opcionalmente, el módulo 1320 de determinación está configurado para:
determinar, en función del primer valor de croma, el segundo valor de croma, el valor preestablecido, y la segunda diferencia, un coeficiente de escalado en el parámetro del modelo de intrapredicción correspondiente al bloque de croma objetivo; y
si una cuarta diferencia entre una cantidad de bits significativos del coeficiente de escalado inicial y una segunda profundidad de bits preestablecida es mayor que 0, desplazar el coeficiente de escalado inicial hacia la derecha en función de la cuarta diferencia para obtener el coeficiente de escalado en el parámetro del modelo de intrapredicción correspondiente al bloque de croma objetivo.
Opcionalmente, el módulo 1320 de determinación está configurado para:
desplazar el coeficiente de escalado inicial hacia la derecha en bits de la cuarta diferencia para obtener el coeficiente de escalado en el parámetro del modelo de intrapredicción correspondiente al bloque de croma objetivo.
Opcionalmente, el módulo 1320 de determinación está configurado para:
si la cuarta diferencia es mayor que 0, determinar una diferencia entre la cuarta diferencia y una suma del valor preestablecido del parámetro de desplazamiento normalizado y la tercera diferencia como el valor objetivo del parámetro de desplazamiento normalizado.
Opcionalmente, la determinación, en función del coeficiente de escalado, del segundo valor de croma, del valor objetivo, y del valor de luma mínimo, de un factor de desplazamiento en el parámetro del modelo de intrapredicción correspondiente al bloque de croma objetivo incluye:
b= m in C -( ( a* m in 7 ) » £ ) ,
' v' >donde b es el factor de desplazamiento, a es el coeficiente de escalado, minCes el segundo valor de croma, minY es el valor de luma mínimo y k es el valor objetivo.
Opcionalmente, la información de reconstrucción de luma correspondiente al bloque de croma objetivo incluye información de submuestreo de un bloque de reconstrucción de luma correspondiente al bloque de croma objetivo.
Opcionalmente, el primer valor de croma corresponde al valor de luma máximo y el segundo valor de croma corresponde al valor de luma mínimo.
En esta realización de esta solicitud, cuando se determina la información de predicción del bloque de croma objetivo, el aparato puede obtener el valor de luma máximo y el valor de luma mínimo en las muestras de luma correspondientes a las muestras vecinas del bloque de croma objetivo, obtener el primer valor de croma correspondiente al valor de luma máximo y el segundo valor de croma correspondiente al valor de luma mínimo, y luego determinar la primera diferencia entre el valor de luma máximo y el valor de luma mínimo. Si la primera diferencia es mayor que 0, la primera diferencia se puede desplazar hacia la derecha en función de la cantidad de bits significativos de la primera diferencia y la primera profundidad de bits preestablecida para obtener la segunda diferencia. Luego, se determina un parámetro del modelo de intrapredicción correspondiente al bloque de croma objetivo en función de un primer valor de croma, un segundo valor de croma, y la segunda diferencia, y luego se determina la información de predicción del bloque de croma objetivo en función del parámetro del modelo de intrapredicción y la información de reconstrucción de luma correspondiente al bloque de croma objetivo. De esta manera, cuando se determina el parámetro del modelo de intrapredicción, la primera diferencia entre el valor de luma máximo y el valor de luma mínimo se desplaza hacia la derecha en función de la cantidad de bits significativos de la primera diferencia y la primera profundidad de bits preestablecida. Esto puede reducir la cantidad de cálculos del parámetro del modelo de intrapredicción, y mejorar la eficiencia de predicción del bloque de croma.
El parámetro del modelo de intrapredicción incluye el coeficiente de escalado y el factor de desplazamiento. Para ser específico, cuando se determina el coeficiente de escalado, la primera diferencia entre el valor de luma máximo y el valor de luma mínimo se desplaza hacia la derecha en función de la cantidad de bits significativos de la primera diferencia y la primera profundidad de bits preestablecida. Por lo tanto, esto puede reducir las cantidades de cálculo para determinar el coeficiente de escalado y el factor de desplazamiento, disminuir la complejidad de la determinación de la información de predicción, y mejorar la eficiencia de predicción del bloque de croma.
Se debe tener en cuenta que cuando el aparato de predicción de bloques de croma proporcionado en la realización anterior determina la información de predicción del bloque de croma, la división en los módulos funcionales anteriores se usa solo como un ejemplo para la descripción. Durante la aplicación real, las funciones anteriores pueden asignarse a diferentes módulos funcionales según sea necesario. En otras palabras, una estructura interna del aparato se divide en diferentes módulos funcionales para completar todas o algunas de las funciones descritas. Además, el aparato de predicción de bloques de croma proporcionado en la realización anterior tiene un mismo concepto que la realización del método de predicción de bloques de croma. Para obtener detalles sobre un proceso de implementación específico del aparato de predicción de bloques de croma, consulte la realización del método. Los detalles no se describen de nuevo en la presente memoria.
Esta solicitud proporciona además un soporte de almacenamiento legible por ordenador. El soporte de almacenamiento legible por ordenador almacena instrucciones informáticas. Cuando las instrucciones informáticas en el soporte de almacenamiento legible por ordenador se ejecutan en un dispositivo informático, el dispositivo informático está habilitado para realizar el método de predicción de bloques de croma.
Esta solicitud proporciona además un producto de programa informático que incluye instrucciones. Cuando el producto de programa informático se ejecuta en un dispositivo informático, el dispositivo informático está habilitado para realizar el método de predicción de bloques de croma.
Todas o algunas de las realizaciones anteriores se pueden implementar usando software, hardware, firmware o cualquier combinación de los mismos. Cuando se usa software para la implementación, todas o algunas de las realizaciones se pueden implementar en una forma de un producto de programa informático. El producto de programa informático incluye una o más instrucciones informáticas. Cuando las instrucciones de programa informático se cargan y ejecutan en un servidor o un terminal, se generan todos o algunos de los procedimientos y funciones según las realizaciones de esta solicitud. Las instrucciones informáticas pueden almacenarse en un soporte de almacenamiento legible por ordenador o pueden transmitirse desde un soporte de almacenamiento legible por ordenador a otro soporte de almacenamiento legible por ordenador. Por ejemplo, las instrucciones informáticas pueden transmitirse desde un sitio web, ordenador, servidor, o centro de datos a otro sitio web, ordenador, servidor, o centro de datos por cable (por ejemplo, un cable coaxial, una fibra óptica, o una línea de abonado digital) o de una forma inalámbrica (por ejemplo, infrarrojo, radio, o microondas). El soporte de almacenamiento legible por ordenador puede ser cualquier medio utilizable accesible por un servidor o un terminal, o un dispositivo de almacenamiento de datos, tal como un servidor o un centro de datos, que integre uno o más medios utilizables. El medio utilizable puede ser un medio magnético (por ejemplo, un disquete, un disco duro, o una cinta magnética), un medio óptico (por ejemplo, un disco de vídeo digital (DVD)), un medio de semiconductores (por ejemplo, una unidad de estado sólido).
Las descripciones anteriores son simplemente implementaciones específicas de esta solicitud, pero no pretenden limitar esta solicitud. La invención se expone en el conjunto de reivindicaciones adjuntas.

Claims (14)

REIVINDICACIONES
1. Un método de predicción de bloques de croma para codificación de vídeo, en donde el método comprende: obtener (1101) un valor de luma máximo y un valor de luma mínimo en función de muestras de luma correspondientes a muestras vecinas de un bloque de croma objetivo;
si una primera diferencia entre el valor de luma máximo y el valor de luma mínimo es mayor que 0, procesar la primera diferencia para obtener una segunda diferencia, en donde el procesamiento de la primera diferencia para obtener la segunda diferencia comprende: desplazar (1203), usando una cantidad de bits significativos de la primera diferencia y una primera profundidad de bits preestablecida, la primera diferencia hacia la derecha para obtener la segunda diferencia, en donde la cantidad de bits significativos de la primera diferencia se obtiene por Floor(Log2(Abs(A))), y en donde A representa la primera diferencia;
determinar (1103), en función de un primer valor de croma correspondiente al valor de luma máximo, un segundo valor de croma correspondiente al valor de luma mínimo, y la segunda diferencia, un parámetro del modelo de intrapredicción correspondiente al bloque de croma objetivo, en donde un valor de croma de muestras vecinas correspondiente a muestras de luma a las que pertenece el valor de luma máximo se determina como el primer valor de croma, y un valor de croma de muestras vecinas correspondiente a muestras de luma a las que pertenece el valor de luma mínimo se determina como el segundo valor de croma; y determinar (1104) información de predicción del bloque de croma objetivo en función del parámetro del modelo de intrapredicción e información de reconstrucción de luma correspondiente al bloque de croma objetivo.
2. El método según la reivindicación 1, en donde la obtención de un valor de luma máximo y un valor de luma mínimo en función de muestras de luma correspondientes a muestras vecinas de un bloque de croma objetivo comprende:
dividir una cantidad preestablecida de muestras de luma correspondientes a una cantidad preestablecida de muestras vecinas del bloque de croma objetivo en un primer conjunto de muestras de luma y un segundo conjunto de muestras de luma, en donde una cantidad de muestras de luma en el primer conjunto de muestras de luma es la misma que una cantidad de muestras de luma en el segundo conjunto de muestras de luma, y los valores de luma de las muestras de luma en el primer conjunto de muestras de luma son mayores o iguales que los valores de luma de las muestras de luma en el segundo conjunto de muestras de luma; y determinar el valor de luma máximo en función del primer conjunto de muestras de luma, y determinar el valor de luma mínimo en función del segundo conjunto de muestras de luma.
3. El método según la reivindicación 1, en donde el procesamiento de la primera diferencia en función de una cantidad de bits significativos de la primera diferencia y una primera profundidad de bits preestablecida para obtener una segunda diferencia comprende:
determinar (1202) una tercera diferencia entre la cantidad de bits significativos de la primera diferencia y la primera profundidad de bits preestablecida; y
desplazar (1203) la primera diferencia hacia la derecha en bits de la tercera diferencia para obtener la segunda diferencia, en donde la tercera diferencia es mayor que 0.
4. El método según una cualquiera de las reivindicaciones 1 a 3, en donde la determinación, en función de un primer valor de croma, un segundo valor de croma, y la segunda diferencia, de un parámetro del modelo de intrapredicción correspondiente al bloque de croma objetivo comprende:
determinar (1204), en función del primer valor de croma, el segundo valor de croma, un valor preestablecido de un parámetro de desplazamiento normalizado, la segunda diferencia, y el valor de luma mínimo, el parámetro del modelo de intrapredicción correspondiente al bloque de croma objetivo.
5. El método según la reivindicación 4, en donde la determinación, en función del primer valor de croma, el segundo valor de croma, un valor preestablecido de un parámetro de desplazamiento normalizado, la segunda diferencia, y el valor de luma mínimo, del parámetro del modelo de intrapredicción correspondiente al bloque de croma objetivo comprende:
determinar, en función del primer valor de croma, el segundo valor de croma, la segunda diferencia, y el valor preestablecido del parámetro de desplazamiento normalizado, un coeficiente de escalado en el parámetro del modelo de intrapredicción correspondiente al bloque de croma objetivo; y
determinar, en función del coeficiente de escalado, el segundo valor de croma, el valor preestablecido del parámetro de desplazamiento normalizado, y el valor de luma mínimo, un factor de desplazamiento en el parámetro del modelo de intrapredicción correspondiente al bloque de croma objetivo.
6. El método según la reivindicación 5, en donde la determinación, en función del coeficiente de escalado, el segundo valor de croma, el valor preestablecido del parámetro de desplazamiento normalizado y el valor de luma mínimo, de un factor de desplazamiento en el parámetro del modelo de intrapredicción correspondiente al bloque de croma objetivo comprende:
determinar, en función del coeficiente de escalado, el segundo valor de croma, un valor objetivo del parámetro de desplazamiento normalizado, y el valor de luma mínimo, el factor de desplazamiento en el parámetro del modelo de intrapredicción correspondiente al bloque de croma objetivo, en donde el valor objetivo del parámetro de desplazamiento normalizado se determina en función del valor preestablecido del parámetro de desplazamiento normalizado.
7. El método según la reivindicación 5 o 6, en donde la determinación, en función del primer valor de croma, el segundo valor de croma, la segunda diferencia, y el valor preestablecido, del coeficiente de escalado en el parámetro del modelo de intrapredicción correspondiente al bloque de croma objetivo comprende:
( 2n ^
= (max C - min C ) *Floor
diff, en donde a es el coeficiente de escalado,diffes la segunda diferencia, maxC es el primer valor de croma, minC es el segundo valor de croma, y N es el valor preestablecido, y enFloor (-2n
dondey d if fse determina a través de una tabla de búsqueda.
8. El método según la reivindicación 5 o 6, en donde la determinación, en función del primer valor de croma, el segundo valor de croma, la segunda diferencia, y el valor preestablecido, de un coeficiente de escalado en el parámetro del modelo de intrapredicción correspondiente al bloque de croma objetivo comprende: determinar, en función del primer valor de croma, el segundo valor de croma, el valor preestablecido, y la segunda diferencia, un coeficiente de escalado en el parámetro del modelo de intrapredicción correspondiente al bloque de croma objetivo; y
si una cuarta diferencia entre una cantidad de bits significativos del coeficiente de escalado inicial y una segunda profundidad de bits preestablecida es mayor que 0, desplazar el coeficiente de escalado inicial hacia la derecha en bits de la cuarta diferencia para obtener el coeficiente de escalado en el parámetro del modelo de intrapredicción correspondiente al bloque de croma objetivo.
9. El método según una cualquiera de las reivindicaciones 6 a 8, en donde la determinación, en función del coeficiente de escalado, el segundo valor de croma, un valor objetivo, y el valor de luma mínimo, del factor de desplazamiento en el parámetro del modelo de intrapredicción correspondiente al bloque de croma objetivo comprende:
6=minC-((a*minY) »Ar),
en donde b es el factor de desplazamiento, a es el coeficiente de escalado, min C es el segundo valor de croma, min Y es el valor de luma mínimo, y k es el valor objetivo.
10. El método según una cualquiera de las reivindicaciones 5, 6, y 9, en donde el método comprende además: si la primera diferencia no es mayor que 0, determinar que el coeficiente de escalado en el parámetro del modelo de intrapredicción es 0, y determinar que el factor de desplazamiento en el parámetro del modelo de intrapredicción es el segundo valor de croma.
11. El método según una cualquiera de las reivindicaciones 4 a 10, en donde el valor preestablecido del parámetro de desplazamiento normalizado es la profundidad de bits de la primera diferencia, una profundidad de bits de muestras de luma, una suma de la profundidad de bits de la primera diferencia y un segundo valor preestablecido, un producto de la profundidad de bits de la primera diferencia y un tercer valor preestablecido, o una profundidad de bits de un byte.
12. El método según una cualquiera de las reivindicaciones 1 a 11, en donde la información de reconstrucción de luma correspondiente al bloque de croma objetivo comprende información de submuestreo de un bloque de reconstrucción de luma correspondiente al bloque de croma objetivo.
13. Un aparato de predicción de bloques de cromas, en donde el aparato de predicción comprende una memoria y un procesador, en donde la memoria está configurada para almacenar instrucciones informáticas ejecutadas por el procesador; y
el procesador está configurado para realizar el método de predicción de bloques de cromas según una cualquiera de las reivindicaciones 1 a 12.
14. Un soporte de almacenamiento informático legible por ordenador, en donde el soporte de almacenamiento informático legible por ordenador almacena instrucciones informáticas, y cuando las instrucciones informáticas en el soporte de almacenamiento legible por ordenador se ejecutan en un dispositivo informático, el dispositivo informático está habilitado para realizar el método de predicción de bloques de croma según una cualquiera de las reivindicaciones 1 a 12.
ES19897050T 2018-12-13 2019-11-26 Chroma block prediction method and device Active ES2994752T3 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201811527100.4A CN111327903B (zh) 2018-12-13 2018-12-13 色度块的预测方法和装置
PCT/CN2019/120984 WO2020119449A1 (zh) 2018-12-13 2019-11-26 色度块的预测方法和装置

Publications (1)

Publication Number Publication Date
ES2994752T3 true ES2994752T3 (en) 2025-01-30

Family

ID=71075726

Family Applications (1)

Application Number Title Priority Date Filing Date
ES19897050T Active ES2994752T3 (en) 2018-12-13 2019-11-26 Chroma block prediction method and device

Country Status (7)

Country Link
US (3) US11595669B2 (es)
EP (2) EP4492785A3 (es)
CN (5) CN111327903B (es)
BR (1) BR112021011427A2 (es)
ES (1) ES2994752T3 (es)
PL (1) PL3883245T3 (es)
WO (1) WO2020119449A1 (es)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11683494B2 (en) * 2018-12-07 2023-06-20 Sharp Kabushiki Kaisha Moving image coding device and method using chrominance format and intra-frame prediction mode
CN117834912A (zh) * 2018-12-20 2024-04-05 夏普株式会社 预测图像生成装置、运动图像解码装置、运动图像编码装置以及预测图像生成方法
US11843791B2 (en) * 2019-05-03 2023-12-12 Interdigital Madison Patent Holdings, Sas Chroma processing for video encoding and decoding
CN114615494B (zh) * 2020-12-04 2024-09-27 咪咕文化科技有限公司 一种图像处理方法、装置及设备
US20230059035A1 (en) * 2021-08-23 2023-02-23 Netflix, Inc. Efficient encoding of film grain noise
CN114339234B (zh) * 2022-01-07 2024-07-30 湖南大学 一种基于亮度缩放的移动设备视频流传输方法
US12094141B2 (en) * 2022-03-03 2024-09-17 Qualcomm Incorporated Bandwidth efficient image processing
CN119137940A (zh) * 2022-04-08 2024-12-13 交互数字Ce专利控股有限公司 基于模板的cclm/mmlm斜率调整
US20230336748A1 (en) * 2022-04-19 2023-10-19 Tencent America LLC Chroma from luma prediction using mapping and different types
CN119698829A (zh) * 2022-07-28 2025-03-25 北京达佳互联信息技术有限公司 用于视频编解码的跨分量预测的方法和装置
WO2024078416A1 (zh) * 2022-10-12 2024-04-18 维沃移动通信有限公司 色度分量预测方法、装置及设备
WO2024149338A1 (en) * 2023-01-13 2024-07-18 Mediatek Inc. Video coding method of applying bit depth reduction to cross-component prediction parameters before storing cross-component prediction parameters into buffer and associated apparatus
WO2024169968A1 (en) * 2023-02-17 2024-08-22 Douyin Vision Co., Ltd. Method, apparatus, and medium for video processing
US20240397074A1 (en) * 2023-05-23 2024-11-28 Tencent America LLC Enhancement for block adaptive weighted prediction
CN116593408B (zh) * 2023-07-19 2023-10-17 四川亿欣新材料有限公司 一种重质碳酸钙粉体色度检测方法

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100763181B1 (ko) * 2005-04-19 2007-10-05 삼성전자주식회사 기초계층과 향상계층의 데이터를 바탕으로 예측 정보를코딩하여 코딩율을 향상시키는 방법 및 장치
CA2813191A1 (en) * 2010-10-01 2012-04-05 Samsung Electronics Co., Ltd. Image intra prediction method and apparatus
US9693070B2 (en) * 2011-06-24 2017-06-27 Texas Instruments Incorporated Luma-based chroma intra-prediction for video coding
US9807403B2 (en) * 2011-10-21 2017-10-31 Qualcomm Incorporated Adaptive loop filtering for chroma components
CN103918269B (zh) * 2012-01-04 2017-08-01 联发科技(新加坡)私人有限公司 色度帧内预测方法及装置
WO2013155662A1 (en) * 2012-04-16 2013-10-24 Mediatek Singapore Pte. Ltd. Methods and apparatuses of simplification for intra chroma lm mode
CN104471940B (zh) * 2012-04-16 2017-12-15 联发科技(新加坡)私人有限公司 色度帧内预测方法及装置
GB2505640B (en) * 2012-08-22 2014-12-17 Canon Kk Method and apparatus for compressing or decompressing video sequence of images
US10397607B2 (en) * 2013-11-01 2019-08-27 Qualcomm Incorporated Color residual prediction for video coding
US10142642B2 (en) * 2014-06-04 2018-11-27 Qualcomm Incorporated Block adaptive color-space conversion coding
US20160105685A1 (en) * 2014-10-08 2016-04-14 Qualcomm Incorporated Boundary filtering and cross-component prediction in video coding
US9838662B2 (en) * 2014-10-10 2017-12-05 Qualcomm Incorporated Harmonization of cross-component prediction and adaptive color transform in video coding
US9998742B2 (en) * 2015-01-27 2018-06-12 Qualcomm Incorporated Adaptive cross component residual prediction
US10455249B2 (en) * 2015-03-20 2019-10-22 Qualcomm Incorporated Downsampling process for linear model prediction mode
CN105306944B (zh) * 2015-11-30 2018-07-06 哈尔滨工业大学 混合视频编码标准中色度分量预测方法
US10477240B2 (en) * 2016-12-19 2019-11-12 Qualcomm Incorporated Linear model prediction mode with sample accessing for video coding
US10873746B2 (en) * 2016-12-21 2020-12-22 Sharp Kabushiki Kaisha Intra prediction image generation device using cross-component liner model, image decoding apparatus, and image coding apparatus using same
US11025903B2 (en) * 2017-01-13 2021-06-01 Qualcomm Incorporated Coding video data using derived chroma mode
GB2567249A (en) * 2017-10-09 2019-04-10 Canon Kk New sample sets and new down-sampling schemes for linear component sample prediction
KR101956756B1 (ko) * 2018-06-12 2019-03-11 광운대학교 산학협력단 성분 간 참조 기반의 비디오 신호 처리 방법 및 장치
US11909977B2 (en) * 2018-12-21 2024-02-20 Vid Scale, Inc. Methods, architectures, apparatuses and systems directed to improved linear model estimation for template based video coding
CN115665407B (zh) * 2018-12-31 2023-08-04 华为技术有限公司 用于帧内预测的分量间线性建模方法和装置

Also Published As

Publication number Publication date
WO2020119449A1 (zh) 2020-06-18
BR112021011427A2 (pt) 2021-08-31
US20230156202A1 (en) 2023-05-18
US20250097437A1 (en) 2025-03-20
CN112235577B (zh) 2021-08-20
CN111327903B (zh) 2023-05-16
US11595669B2 (en) 2023-02-28
PL3883245T3 (pl) 2024-12-16
CN111327903A (zh) 2020-06-23
EP4492785A2 (en) 2025-01-15
US12120325B2 (en) 2024-10-15
CN117319670A (zh) 2023-12-29
US20210314581A1 (en) 2021-10-07
EP4492785A3 (en) 2025-03-12
CN116781915A (zh) 2023-09-19
EP3883245B1 (en) 2024-09-18
EP3883245A4 (en) 2022-06-08
EP3883245A1 (en) 2021-09-22
CN112235577A (zh) 2021-01-15
CN117082250A (zh) 2023-11-17

Similar Documents

Publication Publication Date Title
ES2994752T3 (en) Chroma block prediction method and device
ES2981403T3 (es) Método y aparato de predicción de bloques de croma
ES2994231T3 (en) Coding method and apparatus
ES2989421T3 (es) Un codificador, un decodificador y métodos correspondientes para la intrapredicción
ES2984766T3 (es) Método y dispositivo para predecir bloques de croma
ES2974160T3 (es) Decodificador de video y métodos
ES2974237T3 (es) Método y aparato de predicción de imágenes de vídeo
ES2996341T3 (en) Video processing method, video processing apparatus, encoder, decoder, medium and computer program
ES2992657T3 (en) Method and apparatus for affine based inter prediction of chroma subblocks
ES2965276T3 (es) Método de decodificación de vídeo y decodificador de vídeo
BR112021004984A2 (pt) aparelho e método para quantização inversa
ES2978268T3 (es) Método y aparato de codificación y decodificación de imágenes de video
ES2998460T3 (en) Method and apparatus for intra prediction
WO2020038378A1 (zh) 色度块预测方法及装置
ES2998959T3 (en) Inter-frame prediction method and device
ES2966509T3 (es) Método y dispositivo de partición de imagen
ES2946058T3 (es) Un codificador, un decodificador y los métodos correspondientes que usan la codificación intramodo para la intrapredicción
ES2992660T3 (en) Method and apparatus for chroma intra prediction in video coding
BR112021009099A2 (pt) codificador de vídeo, decodificador de vídeo e métodos de codificação ou decodificação de uma imagem
BR122023008696B1 (pt) Meio de armazenamento legível por computador que armazena um fluxo de bits é obtido mediante codificar dados de vídeo, fluxo de bits e método para armazenar um fluxo de bits
BR122023008687B1 (pt) Método de predição de bloco de croma, aparelho de predição de bloco de croma, meio de armazenamento legível por computador, fluxo de bits e método para armazenar um fluxo de bits
BR112021007865B1 (pt) Método e aparelho de predição de imagem
BR112021013163B1 (pt) Método de predição de bloco de croma, aparelho de predição de bloco de croma e meio de armazenamento legível por computador
BR112021007865A2 (pt) método e aparelho de predição de imagem