ES3004864T3 - Image decoding/encoding method for performing bdof, and method for transmitting bitstream - Google Patents

Image decoding/encoding method for performing bdof, and method for transmitting bitstream Download PDF

Info

Publication number
ES3004864T3
ES3004864T3 ES20863214T ES20863214T ES3004864T3 ES 3004864 T3 ES3004864 T3 ES 3004864T3 ES 20863214 T ES20863214 T ES 20863214T ES 20863214 T ES20863214 T ES 20863214T ES 3004864 T3 ES3004864 T3 ES 3004864T3
Authority
ES
Spain
Prior art keywords
offset
current block
prediction
block
prediction sample
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
ES20863214T
Other languages
English (en)
Inventor
Nae Ri Park
Jung Hak Nam
Hyeong Moon Jang
Seung Hwan Kim
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.)
LG Electronics Inc
Original Assignee
LG Electronics Inc
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 LG Electronics Inc filed Critical LG Electronics Inc
Application granted granted Critical
Publication of ES3004864T3 publication Critical patent/ES3004864T3/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/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/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • 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/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • H04N19/139Analysis of motion vectors, e.g. their magnitude, direction, variance or reliability
    • 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/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/573Motion compensation with multiple frame prediction using two or more reference frames in a given prediction direction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/577Motion compensation with bidirectional frame interpolation, i.e. using B-pictures

Landscapes

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

Abstract

Se proporciona un método y un dispositivo de codificación/decodificación de imágenes. Un método de decodificación de imágenes, según la presente divulgación, es un método de decodificación de imágenes realizado por un dispositivo de decodificación de imágenes. El método puede comprender los siguientes pasos: obtener una muestra de predicción de un bloque actual a partir de la información de movimiento de dicho bloque; determinar si se aplicará flujo óptico bidireccional (BDOF) al bloque actual; si se aplicará el BDOF al bloque actual, obtener un gradiente con respecto a un subbloque actual dentro del bloque actual; obtener un vector de movimiento refinado (vx, vy) con respecto al subbloque actual a partir del gradiente; obtener un desplazamiento del BDOF a partir del gradiente y del vector de movimiento refinado; y obtener una muestra de predicción refinada para el bloque actual a partir de la muestra de predicción del bloque actual y el desplazamiento del BDOF. (Traducción automática con Google Translate, sin valor legal)

Description

DESCRIPCIÓN
Procedimiento de decodificación/codificación de imágenes para realizar un BDOF y procedimiento para transmitir flujo de bits
Campo técnico
La presente descripción se refiere a un procedimiento de codificación/decodificación de imágenes y a un procedimiento de transmisión de un flujo de bits, y, más en particular, a un procedimiento de codificación/decodificación de imágenes para realizar un flujo óptico bidireccional (BDOF, Bi-directional Optical Flow), y a un procedimiento de transmisión de un flujo de bits generado por el procedimiento de codificación de imágenes de la presente descripción.
Antecedentes de la técnica
En los últimos tiempos ha tenido lugar en diversos campos una demanda creciente de imágenes de alta resolución y de alta calidad como imágenes de alta definición (HD, High Definition) e imágenes de definición ultraalta (UHD, Ultra High Definition). A medida que mejora la resolución y los datos de calidad de las imágenes, la cantidad de información o bits transmitidos aumenta relativamente en comparación con los datos de imágenes existentes. El aumento en la cantidad de información o bits transmitidos provoca un aumento en el coste de transmisión y en el coste de almacenamiento.
Por consiguiente, existe una necesidad de una tecnología de compresión de imágenes de alta eficiencia para transmitir, almacenar y reproducir de manera eficaz la información en imágenes de alta resolución y alta calidad.
Se describe una técnica de codificación de vídeo con una capacidad de compresión mejorada en BENJAMIN BROSS ET AL.: "Versatile Video Coding (Draft 6)", 127, MPEG MEETING; 20190708 - 20190712; GOTHENBURG; (MOTION PICTURE EXPERT GROUP OR ISO/IEC JTC1/SC29/WG11), GOTHENBURG SE, n2 JVET-O2001-VE; m49908 31 de julio de 2019 (2019-07-31), páginas 1-455. En él se propone un procedimiento de predicción de flujo óptico bidireccional para derivar un gradiente por desplazamiento a la derecha de las muestras de predicción mediante un primer desplazamiento dependiente de la profundidad de bits.
Se describe un procedimiento convencional de predicción bidireccional de flujo óptico en CHUJOH ET AL.: "Non-CE9: A bug fix of BDOF specification", 15. JVET MEETING; 20190703 - 20190712; GOTEHNBURG; (THE JOINT VIDEO EXPLORATION TEAM OF ISO/IEC JTC1/SC29/WG11 AND ITU-T SG. 16), n2 JVET-00207; m48316 3 de julio de 2019 (2019-07-03). En él se deriva un gradiente por desplazamiento a la derecha de las muestras de predicción mediante un primer desplazamiento de 6.
Descripción
Problema técnico
Un objeto de la presente descripción es proporcionar un procedimiento de codificación/decodificación de imágenes con eficacia de codificación/decodificación mejorada.
Otro objeto de la presente descripción es proporcionar un procedimiento de codificación/decodificación de imágenes para derivar un desfase BDOF.
Otro objeto de la presente descripción es proporcionar un procedimiento de codificación/decodificación de imágenes para realizar BDOF.
Otro objeto de la presente descripción es proporcionar un procedimiento de transmisión de un flujo de bits generado por un procedimiento de codificación de imágenes según la presente descripción.
Otro objeto de la presente descripción es proporcionar un medio de grabación que almacene un flujo de bits generado por un procedimiento de codificación de imágenes según la presente descripción.
Otro objeto de la presente descripción es proporcionar un medio de grabación que almacene un flujo de bits recibido, decodificado y utilizado para reconstruir una imagen mediante un aparato de decodificación de imágenes según la presente descripción.
Los problemas técnicos resueltos por la presente descripción no están limitados a los problemas técnicos anteriores, y otros problemas técnicos que no se describen en la presente memoria serán evidentes para los expertos en la materia a partir de la siguiente descripción.
Solución técnica
Según la presente invención, en las reivindicaciones independientes se exponen un procedimiento de decodificación de imágenes, un procedimiento de codificación de imágenes y un procedimiento para transmitir un flujo de bits. Un procedimiento de decodificación de imágenes según un aspecto de la presente descripción puede comprender la derivación de una muestra de predicción de un bloque actual basado en información de movimiento del bloque actual, la determinación de si el flujo óptico bidireccional (BDOF) se aplica al bloque actual, basado en el BDOF que se aplica al bloque actual, la derivación de un gradiente para un subbloque actual en el bloque actual, la derivación de refinamiento de movimiento (v<x>, v<y>) para el subbloque actual basado en el gradiente, la derivación de un desfase BDOF basado en el gradiente y el refinamiento de movimiento, y la derivación de una muestra de predicción refinada para el bloque actual basado en la muestra de predicción del bloque actual y el desfase BDOF.
En el procedimiento de decodificación de imágenes según la presente descripción, la derivación del gradiente comprende el desplazamiento a la derecha de la muestra de predicción del bloque actual por un primer desplazamiento, y el primer desplazamiento se puede ajustar a un valor fijo con independencia de la profundidad de bits del bloque actual.
En el procedimiento de decodificación de imágenes según la presente descripción, el primer desplazamiento puede ser 6.
En el procedimiento de decodificación de imágenes según la presente descripción, la derivación del refinamiento de movimiento (v<x>, v<y>) comprende la derivación de un primer parámetro intermedio diff basado en la muestra de predicción del bloque actual y la derivación de segundos parámetros intermedios tempH y tempV basado en el gradiente.
En el procedimiento de decodificación de imágenes según la presente descripción, la derivación del primer parámetro intermedio diff comprende el desplazamiento a la derecha de la muestra de predicción del bloque actual por un segundo desplazamiento, y el segundo desplazamiento se puede ajustar a un valor fijo con independencia de la profundidad de bits del bloque actual.
En el procedimiento de decodificación de imágenes según la presente descripción, el segundo desplazamiento puede ser 4.
En el procedimiento de decodificación de imágenes según la presente descripción, la derivación de los segundos parámetros intermedios tempH y tempV comprende el desplazamiento a la derecha de un valor derivado basado en el gradiente por un tercer desplazamiento, y el tercer desplazamiento se puede ajustar a un valor fijo con independencia de la profundidad de bits del bloque actual.
En el procedimiento de decodificación de imágenes según la presente descripción, el tercer desplazamiento puede ser 1.
En el procedimiento de decodificación de imágenes según la presente descripción, el refinamiento de movimiento (v<x>, v<y>) se puede recortar en un intervalo predeterminado.
En el procedimiento de decodificación de imágenes según la presente descripción, el intervalo predeterminado en que se recorta el refinamiento de movimiento (v<x>, v<y>) se puede ajustar a un intervalo fijo con independencia de la profundidad de bits del bloque actual.
En el procedimiento de decodificación de imágenes según la presente descripción, la derivación del desfase BDOF puede comprender desplazamiento a la derecha, por un desplazamiento predeterminado, de un valor derivado basado en el gradiente y el refinamiento de movimiento, y el desplazamiento predeterminado se puede ajustar a un intervalo fijo con independencia de la profundidad de bits del bloque actual.
En el procedimiento de decodificación de imágenes según la presente descripción, la derivación de la muestra de predicción refinada para el bloque actual puede comprender el recorte del desfase BDOF en un intervalo predeterminado, y el intervalo predeterminado se puede ajustar basado en la profundidad de bits del bloque actual.
Un procedimiento de codificación de imágenes según otro aspecto de la presente descripción puede comprender la derivación de una muestra de predicción de un bloque actual basado en información de movimiento del bloque actual, la determinación de si el flujo óptico bidireccional (BDOF) se aplica al bloque actual, basado en el BDOF que se aplica al bloque actual, la derivación de un gradiente para un subbloque actual en el bloque actual, la derivación de refinamiento de movimiento (v<x>, v<y>) para el subbloque actual basado en el gradiente; la derivación de un desfase BDOF basado en el gradiente y el refinamiento de movimiento, y la derivación de una muestra de predicción refinada para el bloque actual basado en la muestra de predicción del bloque actual y el desfase BDOF.
Además, un procedimiento de transmisión según otro aspecto de la presente descripción incluye la transmisión de un flujo de bits generado por un procedimiento de codificación de imágenes de la presente descripción.
Además, un medio de grabación legible por ordenador según otro aspecto de la presente descripción puede almacenar el flujo de bits generado por el aparato de codificación de imágenes o el procedimiento de codificación de imágenes de la presente descripción.
Las características resumidas brevemente con respecto a la presente descripción son aspectos meramente ejemplares de la descripción detallada de la presente descripción mostrada a continuación, y no limitan el alcance de la presente descripción.
Efectos ventajosos
Según la presente descripción, es posible proporcionar un procedimiento y un aparato de codificación/decodificación de imágenes con una eficiencia de codificación/decodificación mejorada.
Además, según la presente descripción, es posible proporcionar un procedimiento y un aparato de codificación/decodificación de imágenes para derivar un desfase BDOF.
Además, según la presente descripción, es posible proporcionar un procedimiento y un aparato de codificación/decodificación de imágenes para realizar BDOF.
Además, según la presente descripción, es posible proporcionar un procedimiento de transmisión de un flujo de bits generado por un procedimiento o un aparato de codificación de imágenes según la presente descripción.
Además, según la presente descripción, es posible proporcionar un medio de grabación que almacena un flujo de bits generado por un procedimiento o un aparato de codificación de imágenes según la presente descripción.
Además, según la presente descripción, es posible proporcionar un medio de grabación que almacena un flujo de bits recibido, decodificado y utilizado para reconstruir una imagen por un aparato de decodificación de imágenes según la presente descripción.
Los expertos en la materia observarán que los efectos pueden conseguirse a través de la presente descripción no se limitan a lo descrito en particular en la presente memoria, y se desprenderán otras ventajas de la presente descripción más claramente a partir de la descripción detallada.
Descripción de los dibujos
La FIG. 1 es una vista que ilustra esquemáticamente un sistema de codificación de vídeo, al que se puede aplicar una realización de la presente descripción.
La FIG. 2 es una vista que ilustra esquemáticamente un aparato de codificación de imágenes, al que es aplicable una realización de la presente descripción.
La FIG. 3 es una vista que ilustra esquemáticamente un aparato de decodificación de imágenes, al que es aplicable una realización de la presente descripción.
La FIG. 4 es un diagrama de flujo que ilustra un procedimiento de vídeo basado en interpredicción/codificación de imágenes.
La FIG. 5 es una vista que ilustra la configuración de una unidad de interpredicción 180 según la presente descripción.
La FIG. 6 es un diagrama de flujo que ilustra un procedimiento de vídeo basado en interpredicción/codificación de imágenes.
La FIG. 7 es una vista que ilustra la configuración de una unidad de interpredicción 260 según la presente descripción.
La FIG. 8 es una vista que ilustra bloques vecinos disponibles como un candidato de fusión espacial.
La FIG. 9 es una vista que ilustra esquemáticamente un procedimiento de construcción de listas de candidatos de fusión según un ejemplo de la presente descripción.
La FIG. 10 es una vista que ilustra un par de candidatos para control de redundancia realizado en un candidato espacial.
La FIG. 11 es una vista que ilustra un procedimiento de aplicación de factor de escala de un vector de movimiento de un candidato temporal.
La FIG. 12 es una vista que ilustra una posición en que se deriva un candidato temporal.
La FIG. 13 es una vista que ilustra esquemáticamente un procedimiento de configuración de lista de candidatos de predictor de vector de movimiento según un ejemplo de la presente descripción.
La FIG. 14 es una vista que ilustra una CU extendida para realizar BDOF.
La FIG. 15 es una vista que ilustra un procedimiento de derivación de una muestra de predicción de un bloque actual aplicando BDOF.
La FIG. 16 es una vista que ilustra la entrada y la salida de un procedimiento BDOF según una realización de la presente descripción.
La FIG. 17 es una vista que ilustra variables utilizadas para un procedimiento BDOF según una realización de la presente descripción.
La FIG. 18 es una vista que ilustra un procedimiento de generación de una muestra de predicción para cada subbloque en una CU actual según si se aplica BDOF según una realización de la presente descripción.
La FIG. 19 es una vista que ilustra un procedimiento de derivación de un gradiente, autocorrelación y correlación cruzada de un subbloque actual según una realización de la presente descripción.
La FIG. 20 es una vista que ilustra un procedimiento de derivación de refinamiento de movimiento (v<x>, v<y>), derivación de un desfase BDOF y generación de una muestra de predicción de un subbloque actual, según una realización de la presente descripción.
La FIG. 21 es una vista que ilustra variables utilizadas para un procedimiento BDOF según otra realización de la presente descripción.
La FIG. 22 es una vista que ilustra un procedimiento de derivación de un gradiente, autocorrelación y correlación cruzada de un subbloque actual según otra realización de la presente descripción.
La FIG. 23 es una vista que ilustra un procedimiento de derivación de refinamiento de movimiento (v<x>, v<y>), derivación de un desfase BDOF y generación de una muestra de predicción de un subbloque actual, según otra realización de la presente descripción.
La FIG. 24 es una vista que ilustra variables utilizadas para un procedimiento BDOF según otra realización de la presente descripción.
La FIG. 25 es una vista que ilustra un procedimiento para derivar un gradiente, autocorrelación y correlación cruzada de un subbloque actual según otra realización de la presente descripción.
La FIG. 26 es una vista que ilustra variables utilizadas para un procedimiento BDOF según otra realización de la presente descripción.
La FIG. 27 es una vista que ilustra un procedimiento de derivación de un gradiente, autocorrelación y correlación cruzada de un subbloque actual según otra realización de la presente descripción.
La FIG. 28 es una vista que muestra un sistema de transmisión continua de contenidos, al que es aplicable una realización de la presente descripción.
Modo para la invención
En adelante, las realizaciones de la presente descripción se describirán en detalle con referencia a los dibujos adjuntos de manera que los expertos en la materia puedan implementarlas fácilmente. Sin embargo, la presente descripción se puede implementar en diversas formas diferentes, y no se limita a las realizaciones descritas en la presente memoria.
En la descripción de la presente descripción, si se determina que la descripción detallada de una función o construcción conocida relacionada convierte el alcance de la presente descripción en innecesariamente ambiguo, se omitirá la descripción detallada de la misma. En los dibujos, las partes no relacionadas con la exposición de la presente descripción se omiten, y se asignan números de referencia similares a partes similares.
En la presente descripción, cuando un componente está "conectado", "acoplado" o "vinculado" con otro componente, esto puede incluir no solo una relación de conexión directa sino también una relación de conexión indirecta en la que está presente un componente que interviene. Además, cuando un componente "incluye" o "tiene" otros componentes, significa que pueden incluirse además otros componentes, en lugar de excluir otros componentes salvo que se indique lo contrario.
En la presente descripción, los términos primero, segundo, etc., se pueden utilizar solo para el fin de distinguir un componente de otros componentes, y no limitan el orden o la importancia de los componentes salvo que se indique lo contrario. Por consiguiente, dentro del alcance de la presente descripción, un primer componente en una realización puede referirse como un segundo componente en otra realización, y de forma análoga, un segundo componente en una realización puede referirse como un primer componente en otra realización.
En la presente descripción, componentes que se distinguen unos de otros pretenden describir claramente cada característica, y no significa que los componentes estén necesariamente separados. Es decir, una pluralidad de componentes puede integrarse e implementarse en una unidad de hardware o software, o un componente puede estar distribuido e implementado en una pluralidad de unidades de hardware o software. Por lo tanto, incluso si no se indica lo contrario, dichas realizaciones en que los componentes están integrados o el componente está distribuido están también incluidas dentro del alcance de la presente descripción.
En la presente descripción, los componentes descritos en diversas realizaciones no se entienden necesariamente como componentes esenciales, y algunos componentes pueden ser componentes opcionales. Por consiguiente, una realización que consista en un subconjunto de componentes descritos en una realización también está incluida dentro del alcance de la presente descripción. Asimismo, realizaciones que incluyen otros componentes además de componentes descritos en las diversas realizaciones están incluidas dentro del alcance de la presente descripción.
La presente descripción se refiere a codificación y decodificación de una imagen, y términos utilizados en la presente descripción pueden tener un significado general utilizado comúnmente en el campo técnico, al que pertenece la presente descripción, salvo que se defina de nuevo en la presente descripción.
En la presente descripción, una "imagen" se refiere en general a una unidad que representa una imagen en un periodo de tiempo específico, y un fragmento/mosaico es una unidad de codificación que constituye una parte de una imagen, y una imagen puede estar compuesta por uno o más fragmentos/mosaicos. Además, un fragmento/mosaico puede incluir una o más unidades de árboles de codificación (CTU, Coding Tree Unit).
En la presente descripción, un "píxel" o un "peí' puede significar la mínima unidad que constituye una imagen. Además, "muestra" se puede utilizar como un término que corresponde a un píxel. Una muestra puede representar en general un píxel o un valor de un píxel, y puede representar solo un píxel/valor de píxel de un componente de luma o solo un píxel/valor de píxel de un componente de croma.
En la presente descripción, una "unidad" puede representar una unidad básica de procesamiento de imágenes. La unidad puede incluir al menos una de una región específica de la imagen e información relacionada con la región. La unidad se puede utilizar indistintamente con términos como "matriz de muestras", "bloque" o "área" en algunos casos. En un caso general, un bloque MxN puede incluir muestras (o matrices de muestras) o un conjunto (o matriz) de coeficientes de transformada de M columnas y N filas.
En la presente descripción, "bloque actual" puede significar uno entre "bloque de codificación actual", "unidad de codificación actual", "bloque objeto de codificación", "bloque objeto de decodificación" o "bloque objeto de procesamiento". Cuando se realiza predicción, "bloque actual" puede significar "bloque de predicción actual" o "bloque objeto de predicción". Cuando se realiza transformada (transformada inversa)/cuantificación (descuantificación), "bloque actual" puede significar "bloque de transformada actual" o "bloque objeto de transformada". Cuando se realiza filtrado, "bloque actual" puede significar "bloque objeto de filtrado".
En la presente descripción, el término "/" y debe interpretarse como indicativo de "y/o”. Por ejemplo, la expresión "A/B" y "A, B" puede significar "A y/o B”. Además, "A/B/C" y "A/B/C" puede significar "al menos uno de A, B y/o C”.
En la presente descripción, el término "o" debe interpretarse como indicativo de "y/o”. Por ejemplo, la expresión "A o B" puede comprender 1) solo "A", 2) solo "B", y/o 3) tanto "A como B". En otras palabras, en la presente descripción, el término "o" debe interpretarse como indicativo de "adicional o alternativamente”.
Visión general del sistema de codificación de vídeo
La FIG. 1 es una vista que muestra un sistema de codificación de vídeo según la presente descripción.
El sistema de codificación de vídeo según una realización puede incluir un aparato de codificación 10 y un aparato de decodificación 20. El aparato de codificación 10 puede suministrar información o datos de vídeo y/o imagen codificados al aparato de decodificación 20 en forma de un archivo o de transmisión continua a través de un medio de almacenamiento digital o red.
El aparato de codificación 10 según una realización puede incluir un generador de fuente de vídeo 11, una unidad de codificación 12 y un transmisor 13. El aparato de decodificación 20 según una realización puede incluir un receptor 21, una unidad de decodificación 22 y un renderizador 23. La unidad de codificación 12 puede denominarse unidad de codificación de vídeo/imagen, y la unidad de decodificación 22 puede denominarse unidad de decodificación de vídeo/imagen. El transmisor 13 puede estar incluido en la unidad de codificación 12. El receptor 21 puede estar incluido en la unidad de decodificación 22. El renderizador 23 puede incluir una pantalla y la pantalla se puede configurar como un dispositivo separado o un componente externo.
El generador de fuente de vídeo 11 puede adquirir un vídeo/imagen a través de un procedimiento de captura, síntesis o generación del vídeo/imagen. El generador de fuente de vídeo 11 puede incluir un dispositivo de captura de vídeo/imagen y/o un dispositivo de generación de vídeo/imagen. El dispositivo de captura de vídeo/imagen puede incluir, por ejemplo, una o más cámaras, archivos de vídeo/imagen que incluyen vídeo/imágenes capturados previamente y similares. El dispositivo de generación de vídeo/imagen puede incluir, por ejemplo, ordenadores, tabletas y teléfonos inteligentes, y puede generar (electrónicamente) vídeo/imágenes. Por ejemplo, se puede generar un vídeo/imagen virtual a través de un ordenador o similar. En este caso, el procedimiento de captura de vídeo/imagen se puede sustituir por un procedimiento de generación de datos relacionados.
La unidad de codificación 12 puede codificar un vídeo/imagen de entrada. La unidad de codificación 12 puede realizar una serie de procedimientos como predicción, transformada y cuantificación para compresión y eficiencia de codificación. La unidad de codificación 12 puede emitir datos codificados (información de vídeo/imagen codificada) en forma de un flujo de bits.
El transmisor 13 puede transmitir la información de vídeo/imagen codificada o datos emitidos en forma de un flujo de bits al receptor 21 del aparato de decodificación 20 a través de un medio de almacenamiento digital o una red en forma de un archivo o de transmisión continua. El medio de almacenamiento digital puede incluir varios medios de almacenamiento tales como USB, SD, CD, DVD, Blu-ray, HDD, SSD y similares. El transmisor 13 puede incluir un elemento para generar un archivo multimedia a través de un formato de archivo predeterminado y puede incluir un elemento para la transmisión a través de una red de difusión/comunicación. El receptor 21 puede extraer/recibir el flujo de bits del medio de almacenamiento o red y transmitir el flujo de bits a la unidad de decodificación 22.
La unidad de decodificación 22 puede decodificar el vídeo/imagen realizando una serie de procedimientos tales como descuantificación, transformada inversa y predicción correspondientes a la operación de la unidad de codificación 12.
El renderizador 23 puede renderizar el vídeo/imagen decodificado. El vídeo/imagen renderizado se puede visualizar a través de la pantalla.
Visión general de un aparato de codificación de imágenes
La FIG. 2 es una vista que muestra esquemáticamente un aparato de codificación de imágenes, al que es aplicable una realización de la presente descripción.
Como se muestra en la FIG. 2, el aparato de codificación de imágenes 100 puede incluir un divisor de imagen 110, un sustractor 115, un transformador 120, un cuantificador 130, un descuantificador 140, un transformador inverso 150, un sumador 155, un filtro 160, una memoria 170, una unidad de interpredicción 180, una unidad de intrapredicción 185 y un codificador de entropía 190. La unidad de interpredicción 180 y la unidad de intrapredicción 185 se pueden referir conjuntamente como "unidad de predicción". El transformador 120, el cuantificador 130, el descuantificador 140 y el transformador inverso 150 pueden estar incluidos en un procesador residual. El procesador residual puede incluir además el sustractor 115.
La totalidad o al menos alguno de la pluralidad de componentes que configuran el aparato de codificación de imágenes 100 se pueden configurar mediante un componente de hardware (por ejemplo, un codificador o un procesador) en algunas realizaciones. Además, la memoria 170 puede incluir una memoria intermedia de imágenes decodificadas (DPB, Decoded Picture Buffer) y se puede configurar con un medio de almacenamiento digital.
El divisor de imagen 110 puede dividir una imagen de entrada (o una imagen o una trama) introducida en el aparato de codificación de imágenes 100 en una o más unidades de procesamiento. Por ejemplo, la unidad de procesamiento puede denominarse unidad de codificación (CU, Coding Unit). La unidad de codificación puede adquirirse mediante división recursiva de una unidad de árbol de codificación (CTU) o la unidad de codificación más grande (LCU, Largest Coding Unit) según una estructura en árbol cuaternario árbol binario árbol ternario (QT/BT/TT, Quad-T ree Binary-T ree Ternary-Tree). Por ejemplo, una unidad de codificación se puede dividir en una pluralidad de unidades de codificación de una mayor profundidad basado en una estructura en árbol cuaternario, una estructura en árbol binario y/o una estructura ternaria. Para la división de la unidad de codificación, se puede aplicar primero una estructura de árbol cuaternario y más adelante se puede aplicar una estructura de árbol binario y/o una estructura ternaria. El procedimiento de codificación según la presente descripción se puede realizar basado en la unidad de codificación final que no se divide más. La unidad de codificación más grande se puede utilizar como unidad de codificación final o la unidad de codificación de mayor profundidad adquirida dividiendo la unidad de codificación más grande se puede utilizar como la unidad de codificación final. En este caso, el procedimiento de codificación puede incluir un procedimiento de predicción, transformada y reconstrucción, que se describirá más adelante. Como otro ejemplo, la unidad de procesamiento del procedimiento de codificación puede ser una unidad de predicción (PU, Prediction Unit) o una unidad de transformada (TU, Transform Unit). La unidad de predicción y la unidad de transformada pueden dividirse o partirse a partir de la unidad de codificación final. La unidad de predicción puede ser una unidad de predicción de muestras, y la unidad de transformada puede ser una unidad para derivar un coeficiente de transformada y/o una unidad para derivar una señal residual a partir del coeficiente de transformada.
La unidad de predicción (la unidad de interpredicción 180 o la unidad de intrapredicción 185) puede realizar predicción en un bloque que se va a procesar (bloque actual) y generar un bloque predicho que incluye muestras de predicción para el bloque actual. La unidad de predicción puede determinar si se aplica intrapredicción o interpredicción en una base de bloque actual o CU. La unidad de predicción puede generar diversa información relacionada con la predicción del bloque actual y transmitir la información generada al codificador de entropía 190. La información sobre la predicción se puede codificar en el codificador de entropía 190 y emitir en forma de un flujo de bits.
La unidad de intrapredicción 185 puede predecir el bloque actual haciendo referencia a las muestras en la imagen actual. Las muestras referidas pueden estar situadas en las proximidades del bloque actual o pueden estar situadas alejadas según el modo de intrapredicción y/o la técnica de intrapredicción. Los modos de intrapredicción pueden incluir una pluralidad de modos no direccionales y una pluralidad de modos direccionales. El modo no direccional puede incluir, por ejemplo, un modo DC y un modo plano. El modo direccional puede incluir, por ejemplo, 33 modos de predicción direccional o 65 modos de predicción direccional basado en el grado fino de la dirección de predicción. Sin embargo, se trata simplemente de un ejemplo, y se pueden utilizar más o menos modos de predicción direccionales basados en un ajuste. La unidad de intrapredicción 185 puede determinar el modo de predicción aplicado al bloque actual utilizando un modo de predicción aplicado a un bloque vecino.
La unidad de interpredicción 180 puede derivar un bloque predicho para el bloque actual basado en un bloque de referencia (matriz de muestras de referencia) especificado por un vector de movimiento en una imagen de referencia. En este caso, para reducir la cantidad de información de movimiento transmitida en el modo de interpredicción, la información de movimiento puede predecirse en unidades de bloques, subbloques o muestras basado en la correlación de información de movimiento entre el bloque vecino y el bloque actual. La información de movimiento puede incluir un vector de movimiento y un índice de imágenes de referencia. La información de movimiento puede incluir además información de dirección de interpredicción (predicción L0, predicción L1, bipredicción, etc.). En el caso de interpredicción, el bloque vecino puede incluir un bloque vecino espacial presente en la imagen actual y un bloque vecino temporal presente en la imagen de referencia. La imagen de referencia que incluye el bloque de referencia y la imagen de referencia que incluye el bloque vecino temporal pueden ser iguales o diferentes. El bloque vecino temporal puede denominarse bloque de referencia colocalizado, CU colocalizada (colCU), y similares. La imagen de referencia que incluye el bloque vecino temporal puede denominarse imagen colocalizada (colPic). Por ejemplo, la unidad de interpredicción 180 puede configurar una lista de candidatos de información de movimiento basado en bloques vecinos y generar información que indique el candidato que se utilizará para derivar un vector de movimiento y/o un índice de imágenes de referencia del bloque actual. La interpredicción se puede realizar basado en varios modos de predicción. Por ejemplo, en el caso de un modo de salto y un modo de fusión, la unidad de interpredicción 180 puede utilizar información de movimiento del bloque vecino como información de movimiento del bloque actual. En el caso del modo de salto, a diferencia del modo de fusión, la señal residual no puede transmitirse. En el caso del modo de predicción del vector de movimiento (MVP, Motion Vector Prediction), el vector de movimiento del bloque vecino se puede utilizar como un predictor de vector de movimiento, y el vector de movimiento del bloque actual se puede señalizar codificando una diferencia de vector de movimiento y un indicador para un predictor de vector de movimiento. La diferencia de vector de movimiento puede significar una diferencia entre el vector de movimiento del bloque actual y el predictor de vector de movimiento.
La unidad de predicción puede generar una señal de predicción basado en diversos procedimientos de predicción y técnicas de predicción descritos más adelante. Por ejemplo, la unidad de predicción no solo puede aplicar intrapredicción o interpredicción sino también aplicar simultáneamente intrapredicción e interpredicción, para predecir el bloque actual. Un procedimiento de predicción para aplicar simultáneamente intrapredicción e interpredicción para predicción del bloque actual puede denominarse inter e intrapredicción combinada (CIIP). Además, la unidad de predicción puede realizar copia de intrabloque (IBC, Intra Block Copy) para predicción del bloque actual. La copia de intrabloque se puede utilizar para codificación de imagen/vídeo de contenidos de un juego o similar, por ejemplo, codificación de contenido de pantalla (SCC, Screen Content Coding). La IBC es un procedimiento de predicción de una imagen actual utilizando un bloque de referencia construido anteriormente en la imagen actual en una localización separada del bloque actual por una distancia predeterminada. Cuando se aplica IBC, la localización del bloque de referencia en la imagen actual se puede codificar como un vector (vector de bloque) que corresponde a la distancia predeterminada.
La señal de predicción generada por la unidad de predicción se puede utilizar para generar una señal reconstruida o para generar una señal residual. El sustractor 115 puede generar una señal residual (bloque residual o matriz de muestras residual) restando la señal de predicción (bloque predicho o matriz de muestras de predicción) emitida desde la unidad de predicción a partir de la señal de imagen de entrada (bloque original o matriz de muestras original). La señal residual generada puede ser transmitida al transformador 120.
El transformador 120 puede generar coeficientes de transformada mediante la aplicación de una técnica de transformada a la señal residual. Por ejemplo, la técnica de transformada puede incluir al menos una de una transformada de coseno discreta (DCT, Discrete Cosine T ransform), una transformada de seno discreta (DST, Discrete Sine Transform), una transformada de Karhunen-Loeve (KLT, Karhunen-Loeve Transform), una transformada basada en gráficos (GBT, Graph-Based Transform) o una transformada condicionalmente no lineal (CNT, Conditionally Nonlinear T ransform). En este caso, la GBT significa transformada obtenida de un gráfico cuando la información de relación entre píxeles está representada por el gráfico. La CNT se refiere a la transformada adquirida basado en una señal de predicción generada utilizando todos los píxeles reconstruidos anteriormente. Además, el procedimiento de transformada se puede aplicar a bloques de píxeles cuadrados que tienen el mismo tamaño o se puede aplicar a bloques que tienen un tamaño variable distinto de un cuadrado.
El cuantificador 130 puede cuantificar los coeficientes de transformada y transmitirlos al codificador de entropía 190. El codificador de entropía 190 puede codificar la señal cuantificada (información sobre los coeficientes de transformada cuantificados) y emitir un flujo de bits. La información sobre los coeficientes de transformada cuantificados se puede denominar como información residual. El cuantificador 130 puede reorganizar los coeficientes de transformada cuantificados en una forma de bloque en una forma de vector unidimensional basado en un orden de barrido de coeficientes y generar información sobre los coeficientes de transformada cuantificados basado en los coeficientes de transformada cuantificados en la forma de vector unidimensional.
El codificador de entropía 190 puede realizar varios procedimientos de codificación tales como, por ejemplo, Golomb exponencial, codificación de longitud variable adaptativa al contexto (Context-Adaptive Variable Coding, CAVLC), codificación aritmética binaria adaptativa al contexto (Context-Adaptive Binary Arithmetic Coding, CABAC) y similares. El codificador de entropía 190 puede codificar información necesaria para reconstrucción de vídeo/imagen distinta de los coeficientes de transformada cuantificados (por ejemplo, valores de elementos de sintaxis, etc.) de manera conjunta o separada. La información codificada (por ejemplo, información de vídeo/imagen codificada) puede ser transmitida o almacenada en unidades de capas de abstracción de red (NAL, Network Abstraction Layer) en forma de un flujo de bits. La información de vídeo/imagen puede incluir además información sobre diversos conjuntos de parámetros, tales como un conjunto de parámetros de adaptación (APS, Adaptation Parameter Set), un conjunto de parámetros de imagen (PPS, Picture Parameter Set), un conjunto de parámetros de secuencia (SPS, Sequence Parameter Set) o un conjunto de parámetros de vídeo (Video, Parameter Set, VPS). Además, la información de vídeo/imagen puede incluir también información de restricción general. La información señalizada, la información transmitida y/o los elementos de sintaxis descritos en la presente descripción se pueden codificar a través del procedimiento de codificación descrito anteriormente e incluirse en el flujo de bits.
El flujo de bits se puede transmitir en una red o se puede almacenar en un medio de almacenamiento digital. La red puede incluir una red de difusión y/o una red de comunicación, y el medio de almacenamiento digital puede incluir diversos medios de almacenamiento tales como USB, SD, CD, DVD, Blu-ray, HDD, SSD y similares. Un transmisor (no mostrado) que transmite una señal emitida desde el codificador de entropía 190 y/o una unidad de almacenamiento (no mostrada) que almacena la señal pueden estar incluidos como elemento interno/externo del aparato de codificación de imágenes 100. Alternativamente, el transmisor puede proporcionarse como componente del codificador de entropía 190.
Los coeficientes de transformada cuantificados emitidos desde el cuantificador 130 se pueden utilizar para generar una señal residual. Por ejemplo, la señal residual (bloque residual o muestras residuales) se puede reconstruir aplicando descuantificación y transformada inversa a los coeficientes de transformada cuantificados a través del descuantificador 140 y el transformador inverso 150.
El sumador 155 añade la señal residual reconstruida a la señal de predicción emitida desde la unidad de interpredicción 180 o la unidad de intrapredicción 185 para generar una señal reconstruida (imagen reconstruida, bloque reconstruido, matriz de muestras reconstruida). Si no existe información residual para el bloque que será procesado, como en el caso en que se aplica el modo de omisión, el bloque predicho se puede utilizar como bloque reconstruido. El sumador 155 se puede denominar reconstructor o generador de bloques reconstruidos. La señal reconstruida generada se puede utilizar para intrapredicción de un siguiente bloque que será procesado en la imagen actual y se puede utilizar para interpredicción de una siguiente imagen a través del filtrado como se describe más adelante.
Entre tanto, como se describe más adelante, en un procedimiento de codificación de imágenes se puede aplicar correspondencia luma con escala de croma (LMCS, Luma Mapping with Chroma Scaling).
El filtro 160 puede mejorar calidad de imagen subjetiva/objetiva aplicando filtrado a la señal reconstruida. Por ejemplo, el filtro 160 puede generar una imagen reconstruida modificada aplicando diversos procedimientos de filtrado a la imagen reconstruida y almacenar la imagen reconstruida modificada en la memoria 170, específicamente, en una DPB de la memoria 170. Los diversos procedimientos de filtrado pueden incluir, por ejemplo, filtrado de desbloqueo, un desplazamiento adaptativo de muestra, un filtro de bucle adaptativo, un filtro bilateral y similares. El filtro 160 puede generar diversa información relacionada con el filtrado y transmitir la información generada al codificador de entropía 190 como se describe más adelante en la descripción de cada procedimiento de filtrado. La información relacionada con el filtrado puede ser codificada por el codificador de entropía 190 y emitirse en forma de un flujo de bits.
La imagen reconstruida modificada transmitida a la memoria 170 se puede utilizar como la imagen de referencia en la unidad de interpredicción 180. Cuando se aplica interpredicción a través del aparato de codificación de imágenes 100, puede evitarse la falta de concordancia de la predicción entre el aparato de codificación de imágenes 100 y el aparato de decodificación de imágenes y es posible mejorar la eficacia de la codificación.
La DPB de la memoria 170 puede almacenar la imagen reconstruida modificada para su empleo como imagen de referencia en la unidad de interpredicción 180. La memoria 170 puede almacenar la información de movimiento del bloque a partir de la cual se deriva (o codifica) la información de movimiento en la imagen actual y/o la información de movimiento de los bloques en la imagen que ya se ha reconstruido. La información de movimiento almacenada puede ser transmitida a la unidad de interpredicción 180 y utilizada como la información de movimiento del bloque vecino espacial o la información de movimiento del bloque vecino temporal. La memoria 170 puede almacenar muestras reconstruidas de bloques reconstruidos en la imagen actual y puede transferir las muestras reconstruidas a la unidad de intrapredicción 185.
Visión general de un aparato de decodificación de imágenes
La FIG. 3 es una vista que muestra esquemáticamente un aparato de decodificación de imágenes, al que es aplicable una realización de la presente descripción.
Como se muestra en la FIG.3, el aparato de decodificación de imágenes 200 puede incluir un decodificador de entropía 210, un descuantificador 220, un transformador inverso 230, un sumador 235, un filtro 240, una memoria 250, una unidad de interpredicción 260 y una unidad de intrapredicción 265. La unidad de interpredicción 260 y la unidad de intrapredicción 265 se pueden referir conjuntamente como "unidad de predicción". El descuantificador 220 y el transformador inverso 230 pueden estar incluidos en un procesador residual.
La totalidad o al menos alguno de una pluralidad de componentes que configuran el aparato de decodificación de imágenes 200 pueden ser configurados por un componente de hardware (por ejemplo, un decodificador o un procesador) según una realización. Además, la memoria 250 puede incluir una memoria intermedia de imágenes decodificadas (Decoded Picture Buffer, DPB) o puede ser configurada por un medio de almacenamiento digital.
El aparato de decodificación de imágenes 200, que ha recibido un flujo de bits que incluye información de vídeo/imagen, puede reconstruir una imagen realizando un procedimiento correspondiente a un procedimiento realizado por el aparato de codificación de imágenes 100 de la FIG. 2. Por ejemplo, el aparato de decodificación de imágenes 200 puede realizar decodificación utilizando una unidad de procesamiento aplicada en el aparato de codificación de imágenes. Así, la unidad de procesamiento de decodificación puede ser una unidad de codificación, por ejemplo. La unidad de codificación puede adquirirse dividiendo una unidad de árbol de codificación o la unidad de decodificación más grande. La señal de imagen reconstruida decodificada y emitida a través del aparato de decodificación de imágenes 200 puede reproducirse a través de un aparato de reproducción (no mostrado).
El aparato de decodificación de imágenes 200 puede recibir una señal emitida desde el aparato de codificación de imágenes de la FIG. 2 en forma de un flujo de bits. La señal recibida puede ser decodificada a través del decodificador de entropía 210. Por ejemplo, el decodificador de entropía 210 puede analizar el flujo de bits para derivar información (por ejemplo, información de vídeo/imagen) necesaria para la reconstrucción de imágenes. La información de vídeo/imagen puede incluir además información sobre diversos conjuntos de parámetros, tales como un conjunto de parámetros de adaptación (APS), un conjunto de parámetros de imagen (PPS), un conjunto de parámetros de secuencia (SPS) o un conjunto de parámetros de vídeo (VPS). Además, la información de vídeo/imagen puede incluir también información de restricción general. El aparato de decodificación de imágenes puede decodificar además imágenes basadas en la información sobre el conjunto de parámetros y/o la información de restricción general. La información señalizada/recibida y/o los elementos de sintaxis descritos en la presente descripción pueden ser decodificados a través del procedimiento de decodificación y obtenidos del flujo de bits. Por ejemplo, el decodificador de entropía 210 decodifica la información en el flujo de bits basado en un procedimiento de codificación tal como codificación Golomb exponencial, CAVLC o CABAc , y emitir valores de elementos de sintaxis requeridos para reconstrucción de imágenes y valores cuantificados de coeficientes de transformada para residuos. Más en concreto, el procedimiento de decodificación de entropía CABAC puede recibir un bin correspondiente a cada elemento de sintaxis en el flujo de bits, determinar un modelo de contexto utilizando información de un elemento de sintaxis objeto de decodificación, información de decodificación de un bloque vecino y un bloque objeto de decodificación o información de un símbolo/bin decodificado en una fase anterior, y realizar decodificación aritmética en el bin prediciendo una probabilidad de ocurrencia de un bin según el modelo de contexto determinado, y generar un símbolo correspondiente al valor de cada elemento de sintaxis. En este caso, el procedimiento de decodificación de entropía CABAC puede actualizar el modelo de contexto utilizando la información del símbolo/bin decodificado para un modelo de contexto de un siguiente símbolo/bin después de determinar el modelo de contexto. La información relacionada con la predicción entre la información decodificada por el decodificador de entropía 210 puede ser proporcionada a la unidad de predicción (la unidad de interpredicción 260 y la unidad de intrapredicción 265), y el valor residual sobre el cual se realizó la decodificación de entropía en el decodificador de entropía 210, es decir, los coeficientes de transformada cuantificados y la información de parámetros relacionada, se puede introducir en el descuantificador 220. Además, la información sobre el filtrado entre la información decodificada por el decodificador de entropía 210 se puede proporcionar al filtro 240. Entre tanto, un receptor (no mostrado) para recibir una señal emitida desde el aparato de codificación de imágenes puede ser configurado además como un elemento interno/externo del aparato de decodificación de imágenes 200, o el receptor puede ser un componente del decodificador de entropía 210.
Entre tanto, el aparato de decodificación de imágenes según la presente descripción puede referirse como un aparato de decodificación de vídeo/imagen. El aparato de decodificación de imágenes se puede clasificar en un decodificador de información (decodificador de información de vídeo/imagen) y un decodificador de muestra (decodificador de muestra de vídeo/imagen). El decodificador de información puede incluir el decodificador de entropía 210. El decodificador de muestra puede incluir al menos uno entre el descuantificador 220, el transformador inverso 230, el sumador 235, el filtro 240, la memoria 250, la unidad de interpredicción 260 o la unidad de intrapredicción 265.
El descuantificador 220 puede descuantificar los coeficientes de transformada cuantificados y emitir los coeficientes de transformada. El descuantificador 220 puede reorganizar los coeficientes de transformada cuantificados en una forma de bloque bidimensional. En este caso, la reorganización se puede realizar basado en el orden de barrido de coeficientes realizado en el aparato de codificación de imágenes. El descuantificador 220 puede realizar descuantificación en los coeficientes de transformada cuantificados utilizando un parámetro de cuantificación (por ejemplo, una información de tamaño de etapa de cuantificación) y obtener coeficientes de transformada.
El transformador inverso 230 puede realizar transformada inversa en los coeficientes de transformada para obtener una señal residual (bloque residual, matriz de muestras residual).
La unidad de predicción puede realizar una predicción en el bloque actual y generar un bloque predicho que incluye muestras de predicción para el bloque actual. La unidad de predicción puede determinar si se aplica intrapredicción o interpredicción al bloque actual basado en la información en la predicción emitida desde el decodificador de entropía 210 y puede determinar un modo específico de intra/interpredicción (técnica de predicción).
Al igual que se describió en la unidad de predicción del aparato de codificación de imágenes 100, la unidad de predicción puede generar la señal de predicción basado en diversos procedimientos (técnicas) de predicción que se describirán más adelante.
La unidad de intrapredicción 265 puede predecir el bloque actual haciendo referencia a las muestras en la imagen actual. La descripción de la unidad de intrapredicción 185 se aplica igualmente a la unidad de intrapredicción 265.
La unidad de interpredicción 260 puede derivar un bloque predicho para el bloque actual basado en un bloque de referencia (matriz de muestras de referencia) especificado por un vector de movimiento en una imagen de referencia. En este caso, para reducir la cantidad de información de movimiento transmitida en el modo de interpredicción, la información de movimiento puede predecirse en unidades de bloques, subbloques o muestras basado en la correlación de información de movimiento entre el bloque vecino y el bloque actual. La información de movimiento puede incluir un vector de movimiento y un índice de imágenes de referencia. La información de movimiento puede incluir además información de dirección de interpredicción (predicción L0, predicción L1, bipredicción, etc.). En el caso de interpredicción, el bloque vecino puede incluir un bloque vecino espacial presente en la imagen actual y un bloque vecino temporal presente en la imagen de referencia. Por ejemplo, la unidad de interpredicción 260 puede configurar una lista de candidatos de información de movimiento basado en bloques vecinos y derivar un vector de movimiento del bloque actual y/o un índice de imágenes de referencia basado en la información de selección de candidatos recibida. La interpredicción se puede realizar basado en varios modos de predicción, y la información sobre la predicción puede incluir información que indica un modo de interpredicción para el bloque actual.
El sumador 235 puede generar una señal reconstruida (imagen reconstruida, bloque reconstruido, matriz de muestras reconstruida) añadiendo la señal residual obtenida a la señal de predicción (bloque predicho, matriz de muestras predicha) emitida desde la unidad de predicción (que incluye la unidad de interpredicción 260 y/o la unidad de intrapredicción 265). La descripción del sumador 155 es aplicable igualmente al sumador 235.
Entre tanto, como se describe más adelante, en un procedimiento de decodificación de imágenes se puede aplicar correspondencia luma con escala de croma (LMCS).
El filtro 240 puede mejorar calidad de imagen subjetiva/objetiva aplicando filtrado a la señal reconstruida. Por ejemplo, el filtro 240 puede generar una imagen reconstruida modificada aplicando diversos procedimientos de filtrado a la imagen reconstruida y almacenar la imagen reconstruida modificada en la memoria 250, específicamente, en una DPB de la memoria 250. Los diversos procedimientos de filtrado pueden incluir, por ejemplo, filtrado de desbloqueo, un desplazamiento adaptativo de muestra, un filtro de bucle adaptativo, un filtro bilateral y similares.
La imagen reconstruida (modificada) almacenada en la DPB de la memoria 250 se puede utilizar como imagen de referencia en la unidad de interpredicción 260. La memoria 250 puede almacenar la información de movimiento del bloque a partir de la cual se deriva (o decodifica) la información de movimiento en la imagen actual y/o la información de movimiento de los bloques en la imagen que ya se ha reconstruido. La información de movimiento almacenada puede transmitirse a la unidad de interpredicción 260 de manera que se utilice como la información de movimiento del bloque vecino espacial o la información de movimiento del bloque vecino temporal. La memoria 250 puede almacenar muestras reconstruidas de bloques reconstruidos en la imagen actual y transferir las muestras reconstruidas a la unidad de intrapredicción 265.
En la presente descripción, las realizaciones descritas en el filtro 160, la unidad de interpredicción 180 y la unidad de intrapredicción 185 del aparato de codificación de imágenes 100 se pueden aplicar del mismo modo o en correspondencia al filtro 240, la unidad de interpredicción 260 y la unidad de intrapredicción 265 del aparato de decodificación de imágenes 200.
Visión general de la interpredicción
Un aparato de codificación de imágenes/aparato de decodificación de imágenes puede realizar interpredicción en unidades de bloques para derivar una muestra de predicción. La interpredicción puede significar predicción derivada de una manera que depende de los elementos de datos de imágenes distintas a la imagen actual. Cuando se aplica interpredicción al bloque actual, un bloque predicho para el bloque actual se puede derivar basado en un bloque de referencia especificado por un vector de movimiento en una imagen de referencia.
En este caso, para reducir la cantidad de información de movimiento transmitida en un modo de interpredicción, la información de movimiento del bloque actual se puede derivar basado en la correlación de información de movimiento entre un bloque vecino y el bloque actual, y la información de movimiento se puede derivar en unidades de bloques, subbloques o muestras. La información de movimiento puede incluir un vector de movimiento y un índice de imágenes de referencia. La información de movimiento puede incluir además información de tipo interpredicción. En este caso, la información de tipo interpredicción puede significar información de interpredicción direccional. La información de tipo interpredicción puede indicar que un bloque actual se predice utilizando uno de predicción L0, predicción L1 o bipredicción.
Cuando se aplica interpredicción al bloque actual, el bloque vecino del bloque actual puede incluir un bloque vecino espacial presente en la imagen actual y un bloque vecino temporal presente en la imagen de referencia. Una imagen de referencia que incluye el bloque de referencia para el bloque actual y una imagen de referencia que incluye el bloque vecino temporal pueden ser iguales o diferentes. El bloque vecino temporal puede referirse como bloque de referencia colocalizado o CU colocalizada (colCU), y la imagen de referencia que incluye el bloque vecino temporal puede referirse como imagen colocalizada (colPic).
Entre tanto, puede construirse una lista de candidatos de información de movimiento basado en los bloques vecinos del bloque actual, y, en este caso, se puede señalizar información de índice o indicador que indica el candidato que se utiliza para derivar el vector de movimiento del bloque actual y/o el índice de imágenes de referencia.
La información de movimiento puede incluir información de movimiento L0 y/o información de movimiento L1 según el tipo interpredicción. El vector de movimiento en una dirección L0 se puede definir como un vector de movimiento L0 o MVL0, y el vector de movimiento en una dirección L1 se puede definir como un vector de movimiento L1 o MVL1. La predicción basado en el vector de movimiento L0 se puede definir como predicción L0, la predicción basado en el vector de movimiento L1 se puede definir como predicción L1 y la predicción basado en el vector de movimiento L0 y el vector de movimiento L1 se puede definir como bipredicción. En este caso, el vector de movimiento L0 puede significar un vector de movimiento asociado con una lista de imágenes de referencia L0 y el vector de movimiento L1 puede significar un vector de movimiento asociado con una lista de imágenes de referencia L1.
La lista de imágenes de referencia L0 puede incluir imágenes antes de la imagen actual en orden de salida como imágenes de referencia, y la lista de imágenes de referencia L1 puede incluir imágenes después de la imagen actual en orden de salida. Las imágenes anteriores se pueden definir como imágenes (de referencia) delanteras y las imágenes posteriores se pueden definir como imágenes (de referencia) traseras. Entre tanto, la lista de imágenes de referencia L0 puede incluir además imágenes después de la imagen actual en orden de salida como imágenes de referencia. En este caso, dentro de la lista de imágenes de referencia L0, las imágenes anteriores se pueden indexar primero y las imágenes posteriores se pueden indexar después. La lista de imágenes de referencia L1 puede incluir además imágenes antes de la imagen actual en orden de salida como imágenes de referencia. En este caso, dentro de la lista de imágenes de referencia L1, las imágenes posteriores se pueden indexar primero y las imágenes anteriores se pueden indexar después. En este caso, el orden de salida puede corresponder al orden de recuento de orden de imágenes (POC, Picture Order Count).
La FIG. 4 es un diagrama de flujo que ilustra un procedimiento de vídeo basado en interpredicción/codificación de imágenes.
La FIG. 5 es una vista que ilustra la configuración de un interpredictor 180 según la presente descripción.
El procedimiento de codificación de la FIG. 6 se puede realizar mediante el aparato de codificación de imágenes de la FIG. 2. Específicamente, la etapa S410 se puede realizar mediante el interpredictor 180, y la etapa S420 se puede realizar mediante el procesador residual. Específicamente, la etapa S420 se puede realizar mediante el sustractor 115. La etapa S430 se puede realizar mediante el codificador de entropía 190. La información de predicción de la etapa S630 se puede derivar mediante el interpredictor 180, y la información residual de la etapa S630 se puede derivar mediante el procesador residual. La información residual es información sobre las muestras residuales. La información residual puede incluir información sobre coeficientes de transformada cuantificados para las muestras residuales. Como se describió anteriormente, las muestras residuales se pueden derivar como coeficientes de transformada a través del transformador 120 del aparato de codificación de imágenes, y los coeficientes de transformada se pueden derivar como coeficientes de transformada cuantificados a través del cuantificador 130. La información sobre los coeficientes de transformada cuantificados puede ser codificada por el codificador de entropía 190 a través de un procedimiento de codificación residual.
El aparato de codificación de imágenes puede realizar interpredicción con respecto a un bloque actual (S410). El aparato de codificación de imágenes puede derivar un modo de interpredicción e información de movimiento del bloque actual y generar muestras de predicción del bloque actual. En este caso, los procedimientos de determinación de modo de interpredicción, derivación de información de movimiento y generación de muestras de predicción se pueden realizar simultáneamente o cualquiera de los mismos se puede realizar antes de los otros procedimientos. Por ejemplo, como se muestra en la FIG. 5, la unidad de interpredicción 180 del aparato de codificación de imágenes puede incluir una unidad de determinación del modo de predicción 181, una unidad de derivación de información de movimiento 182 y una unidad de derivación de muestras de predicción 183. La unidad de determinación del modo de predicción 181 puede determinar el modo de predicción del bloque actual, la unidad de derivación de información de movimiento 182 puede derivar la información de movimiento del bloque actual y la unidad de derivación de muestras de predicción 183 puede derivar las muestras de predicción del bloque actual. Por ejemplo, la unidad de interpredicción 180 del aparato de codificación de imágenes puede buscar un bloque similar al bloque actual dentro de un área predeterminada (área de búsqueda) de imágenes de referencia a través de estimación del movimiento, y derivar un bloque de referencia cuya diferencia con respecto al bloque actual es igual a o menor que un criterio predeterminado o un mínimo. Basado en ello, se puede derivar un índice de imágenes de referencia que indica una imagen de referencia en que el bloque de referencia está situado, y se puede derivar un vector de movimiento basado en una diferencia de posición entre el bloque de referencia y el bloque actual. El aparato de codificación de imágenes puede determinar un modo de aplicación al bloque actual entre diversos modos de interpredicción. El aparato de codificación de imágenes puede comparar los costes de distorsión de velocidad (RD, Rate Distortion) para los diversos modos de predicción y determinar un modo de interpredicción óptimo del bloque actual. Sin embargo, el procedimiento de determinación del modo de interpredicción del bloque actual por el aparato de codificación de imágenes no se limita al ejemplo anterior, y se pueden utilizar diversos procedimientos.
Por ejemplo, el modo de interpredicción del bloque actual se puede determinar como al menos uno entre un modo de fusión, un modo de salto de fusión, un modo de predicción de vector de movimiento (MVP, Motion Vector Prediction), un modo de diferencia de vector de movimiento asimétrica (SMVD. Symmetric Motion Vector Difference), un modo de afinación, un modo de fusión basado en subbloque, un modo de resolución de vector de movimiento adaptativo (AMVR, Adaptative Motion Vector Resolution), un modo de predictor de vector de movimiento de base histórica (HMVP, Historybased Motion Vector Predictor), un modo de fusión promediado por pares, un modo de fusión con modo de diferencias de vector de movimiento (MMVD, Merge Mode with Motion Vector Differences), un modo de refinamiento del vector de movimiento lateral de decodificador (DMVR, Decoder side Motion Vector Refinement), un modo de interpredicción e intrapredicción combinado (CIIP) o un modo de división geométrica (GPM, Geometric Partitioning Mode).
Por ejemplo, cuando un modo de salto o un modo de fusión se aplica al bloque actual, el aparato de codificación de imágenes puede derivar candidatos de fusión a partir de bloques vecinos del bloque actual y construir una lista de candidatos de fusión utilizando los candidatos de fusión derivados. Además, el aparato de codificación de imágenes puede derivar un bloque de referencia cuya diferencia con respecto al bloque actual es igual o menor que un criterio predeterminado o un mínimo, entre bloques de referencia indicados por candidatos de fusión incluidos en la lista de candidatos de fusión. En este caso, se puede seleccionar un candidato de fusión asociado con el bloque de referencia derivado, y se puede generar información de índices de fusión que indica el candidato de fusión seleccionado y señalizarla a un aparato de decodificación de imágenes. La información de movimiento del bloque actual se puede derivar utilizando la información de movimiento del candidato de fusión seleccionado.
Como otro ejemplo, cuando se aplica un modo MVP al bloque actual, el aparato de codificación de imágenes puede derivar candidatos de predictores de vectores de movimiento (MVP) a partir de los bloques vecinos del bloque actual y construir una lista de candidatos MVP utilizando los candidatos MVP derivados. Además, el aparato de codificación de imágenes puede utilizar el vector de movimiento del candidato MVP seleccionado entre los candidatos MVP incluidos en la lista de candidatos MVP como el MVP del bloque actual. En este caso, por ejemplo, el vector de movimiento que indica el bloque de referencia derivado por la estimación descrita anteriormente del movimiento se puede utilizar como el vector de movimiento del bloque actual, un candidato MVP con un vector de movimiento que tiene la diferencia más pequeña desde el vector de movimiento del bloque actual entre los candidatos MVP puede ser el candidato MVP seleccionado. Se puede derivar una diferencia de vector de movimiento (MVD, Motion Vector Difference) que es una diferencia obtenida restando el MVP del vector de movimiento del bloque actual. En este caso, se puede señalizar la información de índices que indica el candidato MVP seleccionado y la información sobre el MVD al aparato de decodificación de imágenes. Además, cuando se aplica el modo MVP, el valor del índice de imágenes de referencia se puede construir como información de índices de imágenes de referencia y señalizarse por separado al aparato de decodificación de imágenes.
El aparato de codificación de imágenes puede derivar muestras residuales basadas en las muestras de predicción (S420). El aparato de codificación de imágenes puede derivar las muestras residuales a través de la comparación entre muestras originales del bloque actual y las muestras de predicción. Por ejemplo, la muestra residual se puede derivar restando una muestra de predicción correspondiente de una muestra original.
El aparato de codificación de imágenes puede codificar información de imagen que incluye información de predicción e información residual (S430). El aparato de codificación de imágenes puede emitir la información de imagen codificada en forma de un flujo de bits. La información de predicción puede incluir información de modo de predicción (por ejemplo, indicador de salto, indicador de fusión o índice de modo, etc.) e información sobre información de movimiento como información relacionada con el procedimiento de predicción. Entre el modo de información de predicción, el indicador de salto indica si se aplica un modo de salto al bloque actual, y el indicador de fusión indica si se aplica el modo de fusión al bloque actual. Alternativamente, el modo de información de predicción puede indicar uno de una pluralidad de modos de predicción, tal como un índice de modo. Cuando el indicador de salto y el indicador de fusión son 0, se puede determinar que el modo MVP se aplica al bloque actual. La información sobre la información de movimiento puede incluir información de selección de candidatos (por ejemplo, índice de fusión, indicador mvp o índice mvp) que es información para derivar un vector de movimiento. Entre la información de selección de candidatos, el índice de fusión se puede señalizar cuando el modo de fusión se aplica al bloque actual y puede ser información para seleccionar uno de los candidatos de fusión incluidos en una lista de candidatos de fusión. Entre la información de selección de candidatos, el indicador MVP o el índice MVP se puede señalizar cuando el modo MVP se aplica al bloque actual y puede ser información para seleccionar uno de los candidatos MVP en una lista de candidatos MVP. Específicamente, el indicador MVP se puede señalizar utilizando un elemento de sintaxis mvp_10_flag o mvp_11 _f l ag. Además, la información sobre la información de movimiento puede incluir información sobre el MVD descrito anteriormente y/o información de índices de imágenes de referencia. Además, la información sobre la información de movimiento puede incluir información que indica si se aplica predicción L0, predicción L1 o bipredicción. La información residual es información sobre las muestras residuales. La información residual puede incluir información sobre coeficientes de transformada cuantificados para las muestras residuales.
El flujo de bits de salida se puede almacenar en un medio de almacenamiento (digital) y transmitirse al aparato de decodificación de imágenes o puede transmitirse al aparato de decodificación de imágenes por medio de una red.
Como se describió anteriormente, el aparato de codificación de imágenes puede generar una imagen reconstruida (una imagen que incluye muestras reconstruidas y un bloque reconstruido) basado en las muestras de referencia y las muestras residuales. Así sucede para el aparato de codificación de imágenes para derivar el mismo resultado de predicción que el realizado por el aparato de decodificación de imágenes, aumentando con ello la eficacia de codificación. Por consiguiente, el aparato de codificación de imágenes puede almacenar la imagen reconstruida (o las muestras reconstruidas y el bloque reconstruido) en una memoria y utilizarla como una imagen de referencia para interpredicción. Como se describió anteriormente, se puede aplicar además un procedimiento de filtrado en bucle a la imagen reconstruida.
La FIG. 6 es un diagrama de flujo que ilustra un procedimiento de vídeo basado en intrapredicción/codificación de imágenes.
La FIG. 7 es una vista que ilustra la configuración de una unidad de interpredicción 260 según la presente descripción.
El aparato de decodificación de imágenes puede realizar una operación correspondiente a la operación realizada por el aparato de codificación de imágenes. El aparato de decodificación de imágenes puede realizar predicción con respecto a un bloque actual basado en información de predicción recibida y derivar muestras de predicción.
El procedimiento de decodificación de la FIG. 6 se puede realizar mediante el aparato de decodificación de imágenes de la FIG. 3. Las etapas S610 a S630 se pueden realizar mediante la unidad de interpredicción 260, y la información de predicción de la etapa S610 y la información residual de la etapa S640 se pueden obtener de un flujo de bits por el decodificador de entropía 210. El procesador residual del aparato de decodificación de imágenes puede derivar muestras residuales para un bloque actual basado en la información residual (S640). Específicamente, el descuantificador 220 del procesador residual puede realizar descuantificación basado en coeficientes de transformada cuantificados derivados basado en la información residual para derivar coeficientes de transformada, y el transformador inverso 230 del procesador residual puede realizar transformada inversa con respecto a los coeficientes de transformada para derivar las muestras residuales para el bloque actual. La etapa S650 se puede realizar mediante el sumador 235 o el reconstructor.
Específicamente, el aparato de decodificación de imágenes puede determinar el modo de predicción del bloque actual basado en la información de predicción recibida (S610). El aparato de decodificación de imágenes puede determinar el modo de interpredicción que se aplica al bloque actual basado en el modo de información de predicción en la información de predicción.
Por ejemplo, se puede determinar si se aplica el modo de salto al bloque actual basado en el indicador de salto. Además, se puede determinar si se aplica el modo de fusión o el modo MVP al bloque actual basado en el indicador de fusión. Alternativamente, se puede seleccionar uno de los diversos candidatos de modo de interpredicción basado en el índice de modo. Los candidatos de modo de interpredicción pueden incluir un modo de salto, un modo de fusión y/o un modo MVP o pueden incluir diversos modos de interpredicción que se describirán más adelante.
El aparato de decodificación de imágenes puede derivar la información de movimiento del bloque actual basado en el modo de interpredicción determinado (S620). Por ejemplo, cuando el modo de salto o el modo de fusión se aplican al bloque actual, el aparato de decodificación de imágenes puede construir una lista de candidatos de fusión, que se describirán más adelante, y seleccionar uno de los candidatos de fusión incluidos en la lista de candidatos de fusión. La selección se puede realizar basado en la información de selección de candidatos (índice de fusión) descrita anteriormente. La información de movimiento del bloque actual se puede derivar utilizando la información de movimiento del candidato de fusión seleccionado. Por ejemplo, la información de movimiento del candidato de fusión seleccionado se puede utilizar como la información de movimiento del bloque actual.
Como otro ejemplo, cuando el modo MVP se aplica al bloque actual, el aparato de decodificación de imágenes puede construir una lista de candidatos MVP y utilizar el vector de movimiento de un candidato MVP seleccionado entre candidatos MVP incluidos en la lista de candidatos MVP como un MVP del bloque actual. La selección se puede realizar basado en la información descrita anteriormente de selección de candidatos (indicador mvp o índice mvp). En este caso, el MVD del bloque actual se puede derivar basado en la información sobre el MVD, y el vector de movimiento del bloque actual se puede derivar basado en el MVP y el MVD del bloque actual. Además, el índice de imágenes de referencia del bloque actual se puede derivar basado en la información de índices de imágenes de referencia. Una imagen indicada por el índice de imágenes de referencia en la lista de imágenes de referencia del bloque actual se puede derivar como una imagen de referencia a la que se hace referencia para interpredicción del bloque actual.
El aparato de decodificación de imágenes puede generar muestras de predicción del bloque actual basado en la información de movimiento del bloque actual (S630). En este caso, la imagen de referencia se puede derivar basado en el índice de imágenes de referencia del bloque actual, y las muestras de predicción del bloque actual se pueden derivar utilizando las muestras del bloque de referencia indicadas por el vector de movimiento del bloque actual en la imagen de referencia. En algunos casos, puede realizarse además un procedimiento de filtrado de muestras de predicción con respecto a parte o la totalidad de las muestras de predicción del bloque actual.
Por ejemplo, como se muestra en la FIG. 7, la unidad de interpredicción 260 del aparato de decodificación de imágenes puede incluir una unidad de determinación del modo de predicción 261, una unidad de derivación de información de movimiento 262 y una unidad de derivación de muestras de predicción 263. En la unidad de interpredicción 260 del aparato de decodificación de imágenes, la unidad de determinación del modo de predicción 261 puede determinar el modo de predicción del bloque actual basado en la información de modo de predicción recibida, la unidad de derivación de información de movimiento 262 puede derivar la información de movimiento (un vector de movimiento y/o un índice de imágenes de referencia, etc.) del bloque actual basado en la información de movimiento recibida y la unidad de derivación de muestras de predicción 263 puede derivar las muestras de predicción del bloque actual.
El aparato de decodificación de imágenes puede generar muestras residuales del bloque actual basándose en la información residual recibida (S640). El aparato de decodificación de imágenes puede generar las muestras reconstruidas del bloque actual basado en las muestras de predicción y las muestras residuales y generar una imagen reconstruida basado en esto (S650). Posteriormente, se puede aplicar un procedimiento de filtrado en bucle a la imagen reconstruida como se describió anteriormente.
Como se describió anteriormente, el procedimiento de interpredicción puede incluir la etapa de determinación de un modo de interpredicción, la etapa de derivación de información de movimiento según el modo de predicción determinado y la etapa de realización de predicción (generación de muestras de predicción) basado en la información de movimiento derivada. El procedimiento de interpredicción se puede realizar mediante el aparato de codificación de imágenes y el aparato de decodificación de imágenes, como se describió anteriormente.
A continuación se describirá en mayor detalle la etapa de derivación de la información de movimiento según el modo de predicción.
Como se describió anteriormente, la interpredicción se puede realizar utilizando información de movimiento de un bloque actual. Un aparato de codificación de imágenes puede derivar información de movimiento óptima de un bloque actual a través de un procedimiento de estimación del movimiento. Por ejemplo, el aparato de codificación de imágenes puede buscar un bloque de referencia similar con alta correlación dentro de un intervalo de búsqueda predeterminado en la imagen de referencia utilizando un bloque original en una imagen original para el bloque actual en unidad de píxel fraccionaria, y derivar información de movimiento utilizando la misma. La semejanza del bloque se puede calcular basada en una suma de diferencias absolutas (SAD. Sum of Absolute Differences) entre el bloque actual y el bloque de referencia. En este caso, la información de movimiento se puede derivar basado en un bloque de referencia con una SAD mínima en el área de búsqueda. La información de movimiento derivada se puede señalizar a un aparato de decodificación de imágenes según diversos procedimientos basado en un modo de interpredicción.
Cuando un modo de fusión se aplica a un bloque actual, la información de movimiento del bloque actual no se transmite directamente y la información de movimiento del bloque actual se deriva utilizando información de movimiento de un bloque vecino. Por consiguiente, la información de movimiento de un bloque de predicción actual puede indicarse transmitiendo información de indicador que indica que se utiliza el modo de fusión y la información de selección de candidatos (por ejemplo, un índice de fusión) que indica que se utiliza el bloque vecino como un candidato de fusión. En la presente descripción, dado que el bloque actual es una unidad de rendimiento de predicción, el bloque actual se puede utilizar con el mismo significado que el bloque de predicción actual, y el bloque vecino se puede utilizar como el mismo significado que un bloque de predicción vecino.
El aparato de codificación de imágenes puede buscar bloques de candidatos de fusión utilizados para derivar la información de movimiento del bloque actual para realizar el modo de fusión. Por ejemplo, se pueden utilizar hasta cinco bloques de candidatos de fusión, sin estar limitado a ellos. El número máximo de bloques de candidatos de fusión puede transmitirse en un encabezamiento de fragmento o en un encabezamiento de grupos de mosaico, sin estar limitado a ellos. Después de encontrar los bloques de candidatos de fusión, el aparato de codificación de imágenes puede generar una lista de candidatos de fusión y seleccionar un bloque de candidatos de fusión con el menor coste de RD como bloque de candidato de fusión final.
La presente descripción proporciona diversas realizaciones para los bloques de candidatos de fusión que configuran la lista de candidatos de fusión. La lista de candidatos de fusión puede utilizar, por ejemplo, cinco bloques de candidatos de fusión. Por ejemplo, se pueden utilizar cuatro candidatos de fusión espaciales y un candidato de fusión temporal.
La FIG. 8 es una vista que ilustra bloques vecinos disponibles como un candidato de fusión espacial.
La FIG. 9 es una vista que ilustra esquemáticamente un procedimiento de construcción de listas de candidatos de fusión según un ejemplo de la presente descripción.
Un aparato de codificación/decodificación de imágenes puede insertar, en una lista de candidatos de fusión, candidatos de fusión espacial derivados mediante búsqueda de bloques vecinos espaciales de un bloque actual (S910). Por ejemplo, como se muestra en la FIG. 8, los bloques vecinos espaciales pueden incluir un bloque vecino en la esquina inferior izquierda A<0>, un bloque vecino izquierdo A<1>, un bloque vecino en la esquina superior derecha B<0>, un bloque vecino superior B<1>y un bloque vecino en la esquina superior izquierda B<2>del bloque actual. Sin embargo, este es un ejemplo y, además de los bloques vecinos espaciales descritos anteriormente, se pueden utilizar además bloques vecinos adicionales como un bloque vecino derecho, un bloque vecino inferior y un bloque vecino inferior derecho como bloques vecinos espaciales. El aparato de codificación/decodificación de imágenes puede detectar bloques disponibles mediante búsqueda de los bloques vecinos espaciales basados en la prioridad y derivar información de movimiento de los bloques detectados como los candidatos de fusión espaciales. Por ejemplo, el aparato de codificación/decodificación de imágenes puede construir una lista de candidatos de fusión mediante búsqueda de los cinco bloques mostrados en la FIG. 8 en el orden de A<1>, B<1>, B<0>, A<0>y B<2>y candidatos disponibles de indexación en secuencia.
El aparato de codificación/decodificación de imágenes puede insertar, en la lista de candidatos de fusión, un candidato de fusión temporal derivado mediante búsqueda de bloques vecinos temporales del bloque actual (S920). Los bloques vecinos temporales pueden estar situados en una imagen de referencia que sea diferente de una imagen actual en que se encuentra el bloque actual. Una imagen de referencia en la que se encuentra el bloque vecino temporal puede referirse como imagen colocalizada o una imagen col. El bloque vecino temporal puede buscarse en el orden de un bloque vecino en la esquina inferior derecha y un bloque central superior derecho del bloque colocalizado para el bloque actual en la imagen col. Entre tanto, cuando se aplica compresión de datos de movimiento para reducir carga de memoria, la información de movimiento específica se puede almacenar como información de movimiento representativa para cada unidad de almacenamiento predeterminada para la imagen col. En este caso, no es necesario almacenar la información de movimiento de todos los bloques en la unidad de almacenamiento predeterminada, con lo que se obtiene un efecto de compresión de datos de movimiento. En este caso, la unidad de almacenamiento predeterminada puede determinarse, por ejemplo, como una unidad de muestra 16x16 o una unidad de muestra 8x8 o la información de tamaño de la unidad de almacenamiento predeterminada se puede señalizar desde el aparato de codificación de imágenes al aparato de decodificación de imágenes. Cuando se aplica la compresión de datos de movimiento, la información de movimiento del bloque vecino temporal puede sustituirse por la información de movimiento representativa de la unidad de almacenamiento predeterminada en que se encuentra el bloque vecino temporal. Es decir, en este caso, desde el punto de vista de la implementación, el candidato de fusión temporal se puede derivar basado en la información de movimiento de un bloque de predicción que cubre una posición aritmética desplazada a la izquierda después de un desplazamiento aritmético a la derecha por un valor predeterminado basado en coordenadas (posición de la muestra arriba a la izquierda) del bloque vecino temporal, no un bloque de predicción situado en las coordenadas del bloque vecino temporal. Por ejemplo, cuando la unidad de almacenamiento predeterminada es una unidad de muestra 2nx2n y las coordenadas del bloque vecino temporal son (xTnb, yTnb), la información de movimiento de un bloque de predicción situado en una posición modificada ((xTnb>>n)<<n), (yTnb>>n)<<n)) se puede utilizar para el candidato de fusión temporal. Específicamente, por ejemplo, cuando la unidad de almacenamiento predeterminada es una unidad de muestra 16x16 y las coordenadas del bloque vecino temporal son (xTnb, yTnb), la información de movimiento de un bloque de predicción situado en una posición modificada ((xTnb>>4)<<4), (yTnb>>4)<<4)) se puede utilizar para el candidato de fusión temporal. Alternativamente, por ejemplo, cuando la unidad de almacenamiento predeterminada es una unidad de muestra 8x8 y las coordenadas del bloque vecino temporal son (xTnb, yTnb), la información de movimiento de un bloque de predicción situado en una posición modificada ((xTnb>>3)<<3), (yTnb>>3)<<3)) se puede utilizar para el candidato de fusión temporal.
Con referencia a las FIG. 9 de nuevo, el aparato de codificación/decodificación de imágenes puede verificar si el número actual de candidatos de fusión es menor que un número máximo de candidatos de fusión (S930). El número máximo de candidatos de fusión puede ser predefinido o señalizado desde el aparato de codificación de imágenes al aparato de decodificación de imágenes. Por ejemplo, el aparato de codificación de imágenes puede generar y codificar información sobre el número máximo de candidatos de fusión y transmitir la información codificada al aparato de decodificación de imágenes en forma de un flujo de bits. Cuando se cumple el número máximo de candidatos de fusión, no puede realizarse un procedimiento de adición de candidatos S940 posterior.
Cuando el número actual de candidatos de fusión es menor que el número máximo de candidatos de fusión como un resultado verificado de la etapa S930, el aparato de codificación/decodificación de imágenes puede derivar un candidato de fusión adicional según un procedimiento predeterminado y después insertar el candidato de fusión adicional en la lista de candidatos de fusión (S940). El candidato de fusión adicional puede incluir, por ejemplo, al menos uno de uno o varios candidatos de fusión basados en la historia, uno o varios candidatos de fusión promedio por pares, ATMVP, uno o varios candidatos de fusión bipredictivos combinados (cuando un tipo de fragmento/grupo de mosaico de un fragmento/grupo de mosaico actual es un tipo B) y/o uno o varios candidatos de fusión de vector cero.
Cuando el número actual de candidatos de fusión es no menor que el número máximo de candidatos de fusión como resultado verificado de la etapa S930, el aparato de codificación/decodificación de imágenes puede finalizar la construcción de la lista de candidatos de fusión. En este caso, el aparato de codificación de imágenes puede seleccionar un candidato de fusión óptimo entre los candidatos de fusión que configuran la lista de candidatos de fusión y señalizar la información de selección de candidatos (por ejemplo, índice de candidatos de fusión o índice de fusión) que indica el candidato de fusión seleccionado al aparato de decodificación de imágenes. El aparato de decodificación de imágenes puede seleccionar el candidato de fusión óptimo basado en la lista de candidatos de fusión y de la información de selección de candidatos.
La información de movimiento del candidato de fusión seleccionado se puede utilizar como la información de movimiento del bloque actual, y las muestras de predicción del bloque actual se pueden derivar basado en la información de movimiento del bloque actual, como se describió anteriormente. El aparato de codificación de imágenes puede derivar las muestras residuales del bloque actual basado en las muestras de predicción y señalizar la información residual de las muestras residuales al aparato de decodificación de imágenes. El aparato de decodificación de imágenes puede generar muestras reconstruidas basado en las muestras residuales derivadas basado en la información residual y las muestras de predicción y generar la imagen reconstruida basado en las mismas, como se describió anteriormente.
Cuando se aplica un modo de salto al bloque actual, la información de movimiento del bloque actual se puede derivar utilizando el mismo procedimiento que en el caso de aplicación del modo de fusión. Sin embargo, cuando se aplica el modo de salto, se omite una señal residual para un bloque correspondiente y así las muestras de predicción se pueden utilizar directamente como muestras reconstruidas. El modo de salto anterior puede aplicarse, por ejemplo, cuando el valor de cu_skip_flag es 1.
A continuación se describirá un procedimiento de derivación de un candidato espacial en un modo de fusión y/o un modo de salto. El candidato espacial puede representar el candidato de fusión espacial descrito anteriormente.
La derivación del candidato espacial se puede realizar basado en bloques vecinos espacialmente. Por ejemplo, se puede derivar un máximo de cuatro candidatos espaciales a partir de bloques candidatos existentes en las posiciones mostradas en la FIG. 8. El orden de derivación de candidatos espaciales puede ser A1 -> B1 -> B0 -> A0 -> B2. Sin embargo, el orden de derivación de candidatos espaciales no se limita al orden anterior y puede ser, por ejemplo, B1 -> A1 -> B0 -> A0 -> B2. La última posición en el orden (posición B2 en el ejemplo anterior) puede considerarse cuando al menos una de las cuatro posiciones anteriores (A1, B1, B0 y A0 en el ejemplo anterior) no está disponible. En este caso, un bloque en una posición predeterminada que no está disponible puede incluir un bloque correspondiente que pertenece a un fragmento o mosaico diferente del bloque actual o un bloque correspondiente que es un intrabloque predicho. Cuando un candidato espacial se deriva de una primera posición en el orden (A1 o B1 en el ejemplo anterior), se puede realizar control de redundancia en los candidatos espaciales de posiciones posteriores. Por ejemplo, cuando la información de movimiento de un candidato espacial posterior es la misma que la información de movimiento de un candidato espacial ya incluido en una lista de candidatos de fusión, el candidato espacial posterior puede no incluirse en la lista de candidatos de fusión, lo que mejora la eficacia de codificación. El control de redundancia realizado en el candidato espacial posterior se puede realizar en algunos pares de candidatos en lugar de en todos los posibles pares de candidatos, con lo que se reduce la complejidad de cómputo.
La FIG. 10 es una vista que ilustra un par de candidatos para control de redundancia realizado en un candidato espacial.
En el ejemplo que se muestra en la FIG. 10, el control de redundancia para un candidato espacial en una posición B<0>se puede realizar solo para un candidato espacial en una posición A<0>. Además, el control de redundancia para un candidato espacial en una posición B<1>se puede realizar solo para un candidato espacial en una posición B<0>. Además, el control de redundancia para un candidato espacial en una posición A<1>se puede realizar solo para un candidato espacial en una posición A<0>. Finalmente, el control de redundancia para un candidato espacial en una posición B<2>se puede realizar solo para candidatos espaciales en una posición A<0>y una posición B<0>.
En el ejemplo que se muestra en la FIG. 10, el orden de derivación de los candidatos espaciales es A0 -> B0 -> B1 -> A1 -> B2. Sin embargo, la presente descripción no se limita a ello e, incluso si se cambia el orden de derivación de los candidatos espaciales, como en el ejemplo mostrado en la FIG. 10, el control de redundancia se puede realizar solo en algunos pares de candidatos.
A continuación se describirá un procedimiento de derivación de un candidato temporal en el caso de un modo de fusión y/o un modo de salto. El candidato temporal puede representar el candidato de fusión temporal descrito anteriormente. Además, el vector de movimiento del candidato temporal puede corresponder al candidato temporal de un modo MVP.
En el caso del candidato temporal, solo un candidato puede estar incluido en una lista de candidatos de fusión. En el procedimiento de derivación del candidato temporal, al vector de movimiento del candidato temporal puede aplicársele un factor de escala. Por ejemplo, la aplicación de un factor de escala se puede realizar basado en un bloque colocalizado (CU) (referido en lo sucesivo como "bloque col") perteneciente a una imagen de referencia colocalizada (colPic) (referida en lo sucesivo como "imagen col"). Una lista de imágenes de referencia utilizada para derivar el bloque col se puede señalizar explícitamente en un encabezamiento de fragmento.
La FIG. 11 es una vista que ilustra un procedimiento de aplicación de factor de escala de un vector de movimiento de un candidato temporal.
En la FIG. 11, curr_CU y curr_pic denotan respectivamente un bloque actual y una imagen actual, y col_CU y col_pic denotan respectivamente un bloque col y una imagen col. Además, curr_ref denota una imagen de referencia de un bloque actual, y col_ref denota una imagen de referencia de un bloque col. Además, tb denota una distancia entre la imagen de referencia del bloque actual y la imagen actual, y td denota una distancia entre la imagen de referencia del bloque col y la imagen col, tb y td pueden denotar valores correspondientes a diferencias en POC (Picture Order Count, recuento de orden de imágenes) entre imágenes. La aplicación de un factor de escala al vector de movimiento del candidato temporal se puede realizar basado en tb y td. Además, el índice de imágenes de referencia del candidato temporal se puede ajustar a 0.
La FIG. 12 es una vista que ilustra una posición en que se deriva un candidato temporal.
En la FIG. 12, un bloque con una continua gruesa denota un bloque actual. Un candidato temporal se puede derivar de un bloque en una imagen col correspondiente a una posición C<0>(posición inferior derecha) o C<1>(posición central) de la FIG. 12. En primer lugar, se puede determinar si la posición C<0>está disponible y, cuando la posición C<0>está disponible, el candidato temporal se puede derivar basado en la posición C<0>. Cuando la posición C<0>no está disponible, el candidato temporal se puede derivar basado en la posición C<1>. Por ejemplo, cuando un bloque en la imagen col en la posición C<0>es un intrabloque predicho o está situado fuera de una fila CTU actual, se puede determinar que la posición C<0>no está disponible.
Como se describió anteriormente, cuando se aplica compresión de datos de movimiento, el vector de movimiento del bloque col se puede almacenar para cada bloque unitario predeterminado. En este caso, para derivar el vector de movimiento de un bloque que cubre la posición C<0>o la posición C<1>, la posición C<0>o la posición C<1>se puede modificar. Por ejemplo, cuando el bloque unitario predeterminado es un bloque 8x8 y la posición C<0>o la posición C<1>es (xColCi, yColCi), la posición para derivar el candidato temporal se puede modificar a ((xColCi >> 3) << 3, (yColCi >> 3) << 3).
A continuación se describirá un procedimiento de derivación de un candidato basado en la historia en el caso de un modo de fusión y/o un modo de salto. El candidato basado en la historia puede ser expresarse mediante un candidato de fusión basado en la historia.
El candidato basado en la historia puede añadirse a una lista de candidatos de fusión después de que un candidato espacial y un candidato temporal se añadan a la lista de candidatos de fusión. Por ejemplo, la información de movimiento de un bloque codificado/decodificado previamente se puede almacenar en una tabla y utilizarse como un candidato basado en la historia de un bloque actual. La tabla puede almacenar una pluralidad de candidatos basados en la historia durante el procedimiento de codificación/decodificación. La tabla puede inicializarse cuando comienza una nueva fila. Inicializar la tabla puede significar que la tabla correspondiente se vacía borrando todos los candidatos basados en la historia almacenados en la tabla. Cuando existe un interbloque predicho, puede añadirse información de movimiento relacionada a la tabla como última entrada. En este caso, el interbloque predicho puede no ser un bloque predicho basado en un subbloque. La información de movimiento añadida a la tabla se puede utilizar como un nuevo candidato basado en la historia.
La tabla de los candidatos basados en la historia puede tener un tamaño predeterminado. Por ejemplo, el tamaño puede ser 5. En este caso, la tabla puede almacenar un máximo de cinco candidatos basados en la historia. Cuando se añade un nuevo candidato a la tabla, se puede aplicar una regla first-in-first-out (FIFO, primero en entrar, primero en salir) limitada en la que el control de redundancia verifica si el mismo candidato está presente en la tabla. Si el mismo candidato está ya presente en la tabla, el mismo candidato se puede borrar de la tabla y las posiciones de todos los candidatos basados en la historia posteriores pueden moverse hacia delante.
El candidato basado en la historia se puede utilizar en un procedimiento de configuración de la lista de candidatos de fusión. En este caso, los candidatos basados en la historia en tiempos recientes incluidos en la tabla pueden verificarse y localizarse en secuencia en una posición después del candidato temporal de la lista de candidatos de fusión. Cuando el candidato basado en la historia se incluye en la lista de candidatos de fusión, se puede realizar el control de redundancia con los candidatos espaciales o candidatos temporales ya incluidos en la lista de candidatos de fusión. Si el candidato espacial o candidato temporal ya incluido en la lista de candidatos de fusión y el candidato basado en la historia se superponen, el candidato basado en la historia no puede incluirse en la lista de candidatos de fusión. Simplificando el control de redundancia del modo siguiente se puede reducir la cantidad de computación.
¿El número de candidatos basados en la historia utilizados para generar la lista de candidatos de fusión se puede ajustar a (N <= 4) ? M: (8 - N). En este caso, N puede denotar el número de candidatos ya incluidos en la lista de candidatos de fusión, y M puede denotar el número de candidatos basados en la historia disponibles incluidos en la tabla. Es decir, cuando se incluyen 4 o menos candidatos en la lista de candidatos de fusión, el número de candidatos basados en la historia utilizados para generar la lista de candidatos de fusión puede ser M, y, cuando se incluyen N candidatos en número superior a 4 en la lista de candidatos de fusión, el número de candidatos basados en la historia utilizados para generar la lista de candidatos de fusión se puede ajustar a (8 - N).
Cuando el número total de candidatos de fusión disponibles alcanza el valor (número máximo permisible de candidatos de fusión - 1), la configuración de la lista de candidatos de fusión que utiliza el candidato basado en la historia puede finalizar.
A continuación se describirá un procedimiento de derivación de un candidato promediado por pares en el caso de un modo de fusión y/o un modo de salto. El candidato promediado por pares puede representarse por medio de un candidato de fusión promediado por pares o un candidato por pares.
El candidato promediado por pares se puede generar obteniendo pares de candidatos predefinidos a partir de los candidatos incluidos en la lista de candidatos de fusión y promediándolos. Los pares de candidatos predefinidos pueden ser {(0, 1), (0, 2), (1, 2), (0, 3), (1, 3), (2, 3)} y el número que configura cada par de candidatos puede ser un índice de la lista de candidatos de fusión. Es decir, el par de candidato predefinido (0, 1) puede significar un par de candidato de índice 0 y candidato de índice 1 de la lista de candidatos de fusión, y el candidato promediado por pares se puede generar por un promedio de candidato de índice 0 y candidato de índice 1. La derivación de candidatos promediados por pares se puede realizar en el orden de los pares de candidatos predefinidos. Es decir, después de la derivación de un candidato promediado por pares para el par de candidato (0, 1), el procedimiento de derivación del candidato promediado por pares se puede realizar en el orden del par de candidato (0, 2) y el par de candidato (1,2). El procedimiento de derivación de candidatos promediados por pares se puede realizar hasta que se complete la configuración de la lista de candidatos de fusión. Por ejemplo, el procedimiento de derivación de candidatos promediados por pares se puede realizar hasta que el número de candidatos de fusión incluidos en la lista de candidatos de fusión alcanza un número máximo de candidatos de fusión.
El candidato promediado por pares se puede calcular por separado para cada lista de imágenes de referencia. Cuando están disponibles dos vectores de movimiento para una lista de imágenes de referencia (lista L0 o lista L1), se puede calcular un promedio de los dos vectores de movimiento. En este caso, incluso si los dos vectores de movimiento indican diferentes imágenes de referencia, se puede realizar un promedio de los dos vectores de movimiento. Si solo está disponible un vector de movimiento para una lista de imágenes de referencia, un vector de movimiento disponible se puede utilizar como un vector de movimiento de un candidato promediado por pares. Si no está disponible ninguno de los dos vectores de movimiento para una lista de imágenes de referencia, se puede determinar que la lista de imágenes de referencia no es válida.
Cuando la configuración de la lista de candidatos de fusión no está completa incluso después de que el candidato promediado por pares se incluya en la lista de candidatos de fusión, puede añadirse un vector cero a la lista de candidatos de fusión hasta que se alcance el número máximo de candidatos de fusión.
Cuando se aplica un modo MVP al bloque actual, se puede generar una lista de candidatos de predictores de vector de movimiento (mvp) utilizando un vector de movimiento de un bloque vecino espacial reconstruido (por ejemplo, el bloque vecino mostrado en la FIG. 8) y/o un vector de movimiento que corresponde al bloque vecino temporal (o bloque Col). Es decir, el vector de movimiento de los bloques vecinos espaciales reconstruidos y el vector de movimiento correspondiente a los bloques vecinos temporales se pueden utilizar como candidatos de predictores de vector de movimiento del bloque actual. Cuando se aplica bipredicción, se genera y se utiliza individualmente una lista de candidatos mvp para derivación de información de movimiento L0 y una lista de candidatos mvp para derivación de información de movimiento L1. La información de predicción (o información sobre predicción) del bloque actual puede incluir información de selección de candidatos (por ejemplo, un indicador MVP o un Índice MVP) que indica un candidato de predictor de vector de movimiento óptimo seleccionado entre los candidatos de predictores de vector de movimiento incluidos en la lista de candidatos mvp. En este caso, una unidad de predicción selecciona un predictor de vector de movimiento de un bloque actual entre los candidatos de predictores de vector de movimiento incluidos en la lista de candidatos mvp utilizando la información de selección de candidatos. La unidad de predicción del aparato de codificación de imágenes puede obtener y codificar una diferencia de vector de movimiento (MVD) entre el vector de movimiento del bloque actual y el predictor de vector de movimiento y emitir el MVD codificado en forma de un flujo de bits. Es decir, el MVD puede obtenerse restando el predictor de vector de movimiento del vector de movimiento del bloque actual. La unidad de predicción del aparato de decodificación de imágenes puede obtener una diferencia de vector de movimiento incluido en la información sobre predicción y derivar el vector de movimiento del bloque actual a través de la adición de la diferencia de vector de movimiento y el predictor de vector de movimiento. La unidad de predicción del aparato de decodificación de imágenes puede obtener o derivar un índice de imágenes de referencia que indica una imagen de referencia de la información sobre predicción.
La FIG. 13 es una vista que ilustra esquemáticamente un procedimiento de construcción de listas de candidatos de predictor de vector de movimiento según un ejemplo de la presente descripción.
En primer lugar, puede buscarse un bloque de candidato espacial de un bloque actual y pueden insertarse bloques de candidatos disponibles en una lista de candidatos MVP (S1010). Posteriormente, se determina si el número de candidatos MVP incluidos en la lista de candidatos MVP es menor que 2 (S1020) y, cuando el número de candidatos MVP es dos, la construcción de la lista de candidatos MVP puede completarse.
En la etapa S1020, cuando el número de candidatos de bloques espaciales disponibles es menor que 2, puede buscarse un candidato temporal bloque del bloque actual y pueden insertarse bloques de candidatos disponibles en la lista de candidatos MVP (S1030). Cuando los bloques de candidatos temporales no están disponibles, puede insertarse un vector de movimiento cero en la lista de candidatos MVP (S1040), completando con ello la construcción de la lista de candidatos MVP.
Entre tanto, cuando se aplica un modo MVP, se puede señalizar explícitamente un índice de imágenes de referencia. En este caso, pueden señalizarse de forma distinguible un índice de imágenes de referencia refidxL0 para predicción L0 y un índice de imágenes de referencia refidxL1 para predicción L1. Por ejemplo, cuando se aplica el modo MVP y se aplica bipredicción, se puede señalizar tanto la información sobre refidxL0 como la información sobre refidxL1.
Como se describió anteriormente, cuando se aplica el modo MVP, se puede señalizar la información sobre MVP derivada por el aparato de codificación de imágenes para el aparato de decodificación de imágenes. La información sobre el MVD puede incluir, por ejemplo, un valor absoluto de MVD e información que indica las componentes x e y para un signo. En este caso, cuando el valor absoluto de MVD es mayor que 0, si el valor absoluto de MVD es mayor que 1 la información que indica un resto de MVD se puede señalizar paso a paso. Por ejemplo, la información que indica si el valor absoluto de MVD es mayor que 1 se puede señalizar solo cuando un valor de información de indicador que indica si el valor absoluto de MVD es mayor que 0 es 1.
A continuación se describirá una realización de un procedimiento de realización de predicciones de la presente descripción. El siguiente procedimiento de realización de predicciones se puede realizar en la etapa S410 de la FIG.
4 o en la etapa S630 de la FIG. 6.
Un bloque predicho para un bloque actual se puede generar basado en la información de movimiento derivada según un modo de predicción. El bloque predicho (bloque de predicción) puede incluir muestras de predicción (matriz de muestras de predicción) del bloque actual. Cuando el vector de movimiento del bloque actual especifica una unidad de muestra fraccionaria, se puede realizar un procedimiento de interpolación y, a través de esto, se pueden derivar muestras de predicción del bloque actual basado en muestras de referencia en unidades de muestras fraccionarias dentro de una imagen de referencia. Cuando se aplica interpredicción de afinación al bloque actual, se pueden generar muestras de predicción basado en un MV de unidad de muestras/subbloques. Cuando se aplica bipredicción, se pueden utilizar muestras de predicción derivadas a través de una suma ponderada o media ponderada (según la fase) de muestras de predicción derivadas basado en predicción L0 (es decir, predicción utilizando MVL0 y una imagen de referencia dentro de una lista de imágenes de referencia L0) y muestras de predicción derivadas basadas en predicción L1 (es decir, predicción utilizando MLV1 y una imagen de referencia dentro de una lista de imágenes de referencia L1) como las muestras de predicción del bloque actual. Cuando se aplica bipredicción y una imagen de referencia utilizada para predicción L0 y la imagen de referencia utilizada para predicción L1 se encuentran en diferentes direcciones temporales con respecto a la imagen actual (es decir, si corresponde a bipredicción y predicción bidireccional), se puede denominar bipredicción verdadera.
En un aparato de decodificación de imágenes, se pueden generar muestras reconstruidas y una imagen reconstruida basado en las muestras de predicción derivadas y después se puede realizar un procedimiento de filtrado en bucle. Además, en un aparato de codificación de imágenes, se pueden derivar muestras residuales basadas en las muestras de predicción y se puede realizar codificación de información de imagen derivada que incluye información de predicción e información residual.
Flujo óptico bidireccional (BDOF)
Según la presente descripción, el BDOF se puede utilizar para refinar una señal de bipredicción. El BDOF generará muestras de predicción calculando información de movimiento refinada cuando se aplica bipredicción a un bloque actual (por ejemplo, CU). Por consiguiente, un procedimiento de cálculo de información de movimiento refinada mediante la aplicación de BDOF puede estar incluido en la etapa de derivación de información de movimiento descrita anteriormente.
Por ejemplo, el BDOF se puede aplicar a un nivel de subbloques 4x4. Es decir, el BDOF se puede realizar dentro del bloque actual en unidades de subbloques 4x4.
El BODF puede aplicarse, por ejemplo, a una CU que cumple al menos una o la totalidad de las siguientes condiciones.
- la CU se codifica en un modo de bipredicción verdadero, es decir, una de dos imágenes de referencia antecede a una imagen actual en orden de pantalla y la otra sigue a la imagen actual en orden de pantalla
- la CU no está en un modo de afinación o un modo de fusión ATMVP
- la CU tiene 64 muestras de luma o más
- la altura y la anchura de la CU son 8 muestras de luma o más
- un índice de peso BCW especifica un peso igual, es decir, que aplica un peso igual a una muestra de predicción L0 y a una muestra de predicción L1
- la predicción ponderada (WP) no se aplica a una CU actual
- se utiliza un modo CIIP para la CU actual
Además, el BDOF se puede aplicar solo a un componente de luma. Sin embargo, la presente descripción no se limita a ello y el BDOF se puede aplicar a un componente de croma o tanto a un componente de luma como a un componente de croma.
Un modo BDOF se basa en el concepto de flujo óptico. Es decir, se supone que el movimiento de un objeto es suave. Cuando se aplica BDOF, para cada subbloque 4x4, se puede calcular un refinamiento de movimiento (v<x>, v<y>). El refinamiento de movimiento se puede calcular minimizando una diferencia entre una muestra de predicción L0 y una muestra de predicción L1. El refinamiento de movimiento se puede utilizar para ajustar valores de muestra de bipredicción dentro de un subbloque 4x4.
A continuación se describirá en mayor detalle un procedimiento de realización de BDOF.
En primer lugar, se pueden calcular los gradientes horizontales y los gradientes verticales de dos señales de predicción. En este caso, k puede ser 0 o 1. Los gradientes se pueden calcular calculando directamente una diferencia entre dos muestras adyacentes. Por ejemplo, los gradientes se pueden calcular del modo siguiente.
[Ecuación
En la Ecuación 1 anterior, I<(k)>(i, j) denota un valor de muestra de coordenadas (i, j) de una señal de predicción en una lista k (k = 0, 1). Por ejemplo, I<(0)>(i, j) puede denotar un valor de muestra en una posición (i, j) en un bloque de predicción L0, e I(1 )(i, j) puede denotar un valor de muestra en una posición (i, j) en un bloque de predicción L1. En la Ecuación 1 anterior, el primer desplazamiento shift1 se puede determinar basado en la profundidad de bits de un componente de luma. Por ejemplo, cuando la profundidad de bits del componente de luma es bitDepth, se puede determinar que shift1 sea max(6, bitDepth-6).
Como se describió anteriormente, después del cálculo de los gradientes, la autocorrelación y la correlación cruzada S<1>, S<2>, S<3>, S<5>y S<6>entre los gradientes se puede calcular del modo siguiente.
[Ecuación 2]
donde
donde Q es una ventana de 6x6 alrededor del subbloque 4x4.
En la Ecuación 2 anterior, n<a>y n<b>se puede ajustar a min(1, bitDepth-11) y min(4, bitDepth-8), respectivamente. El refinamiento de movimiento (v<x>, v<y>) se puede derivar del modo siguiente utilizando la autocorrelación y la correlación cruzada entre los gradientes descritas anteriormente.
[Ecuación 3]
n suelo.
En la Ecuación 3 anterior, nS<2>puede ser 12. Basado en el refinamiento de movimiento derivado y los gradientes, se puede realizar el siguiente ajuste con respecto a cada muestra en el subbloque 4x4.
[Ecuación 4]
Finalmente, las muestras de predicción predBDOF de una CU, a la que se aplica el BDOF, se pueden calcular ajustando las muestras de bipredicción de la CU del modo siguiente.
[Ecuación 5]
En las Ecuaciones anteriores, na, nb y nS<2>pueden ser 3, 6 y 12, respectivamente. Estos valores se pueden seleccionar de manera que un multiplicador no supere 15 bits en el procedimiento BDOF y las anchuras de bit de parámetros intermedios se mantengan dentro de 32 bits.
Para derivar un valor de gradiente, se pueden generar muestras de predicción I(k)(i, j) en una lista k (k=0, 1) que existe fuera de una CU actual. La FIG. 14 es una vista que ilustra una CU extendida para realizar BDOF.
Como se muestra en la FIG. 14, para realizar BDOF, se pueden usar filas/columnas que se extienden alrededor de la frontera de una CU. Para controlar la complejidad de cómputo para generar muestras de predicción fuera de la frontera, se pueden generar muestras de predicción en una región extendida (región blanca en la FIG. 14) utilizando un filtro bilineal, y se pueden generar muestras de predicción en una CU (región gris en la FIG. 14) utilizando un filtro de interpolación de compensación de movimiento de 8 partes normal. Los valores de muestra en las posiciones extendidas se pueden utilizar solo para cálculo de gradientes. Cuando se requieren los valores de muestra y/o los valores de gradiente situados fuera de la frontera de la CU para realizar las etapas restantes del procedimiento BDOF, los valores de muestra y/o los valores de gradiente vecinos más próximos pueden rellenarse (repetirse) y utilizarse.
Cuando la anchura y/o la altura de la CU son mayores que 16 muestras de luma, la CU correspondiente se puede dividir en subbloques que tienen una anchura y/o una altura de 16 muestras de luma. La frontera de los subbloques puede tratarse de la misma forma que la frontera de CU descrita anteriormente en el procedimiento BDOF. Un tamaño de unidad máximo en el que se realiza el procedimiento BDOF puede limitarse a 16x16.
Para cada subbloque, se puede determinar si se realiza el BDOF. Es decir, el procedimiento BDOF para cada subbloque puede saltarse. Por ejemplo, cuando un valor de SAD entre una muestra de predicción L0 inicial y una muestra de predicción L1 inicial es menor que un umbral predeterminado, el procedimiento BDOF puede no aplicarse al subbloque correspondiente. En este caso, cuando la anchura y la altura del subbloque correspondiente son W y H, el umbral predeterminado se puede ajustar a (8 * W*(H >> 1). En consideración de la complejidad del cálculo de SAD adicional, se puede reutilizar la SAD entre la muestra de predicción L0 inicial y la muestra de predicción L1 inicial calculadas en el procedimiento DMVR.
Cuando el BCW está disponible para un bloque actual, por ejemplo, cuando un índice de peso BCW especifica un peso desigual, el BDOF no puede aplicarse. De forma análoga, cuando el WP está disponible para el bloque actual, por ejemplo, cuando luma_weight_lx_flag para al menos una de dos imágenes de referencia es 1, el BDOF no puede aplicarse. En este caso, luma_weight_lx_flag puede ser una información que especifica si los factores de ponderación de WP para un componente de luma de predicción lx (siendo x 0 o 1) están presentes en un flujo de bits o información que especifica si WP se aplica a un componente de luma de predicción lx. Cuando la CU se codifica en un modo MVD simétrico (SMVD) o un modo CIIP, el BDOF no puede aplicarse.
Como se describió anteriormente, aplicando BDOF en un procedimiento de interpredicción para refinar una muestra de referencia en un procedimiento de compensación de movimientos, es posible aumentar el rendimiento de compresión de una imagen. El BDOF se puede realizar en un modo normal. Es decir, el BDOF no se realiza en caso de un modo de afinación, un modo GPM o un modo CIIP.
La presente descripción propone diversos procedimientos capaces de prevenir errores potenciales de BDOF y de mejorar el rendimiento aplicando normalización y recorte cuando se deriva un desfase BDOF bdofOffset (b(x, y)) para refinamiento de una muestra de referencia en un procedimiento BDOF. En la presente descripción, la normalización puede significar que los valores expresados en diversas unidades (por ejemplo, 1/64 píxeles, 1/32 píxeles, 2 píxeles, etc.) se unifican en un valor en una unidad predeterminada (por ejemplo, 1 píxel). Además, en la presente descripción, [a, b] puede significar un intervalo de valores de a hasta b, y el recorte de un cierto valor x en un intervalo de [a, b] puede significar que el intervalo de x se limita a tener un valor de a cuando x es menor que a, un valor de b cuando x es mayor que b y un valor de x en el otro caso. Además, en la presente descripción, una profundidad de bits no se limita a una profundidad de bits de un componente de luma, y puede incluir, por ejemplo, una profundidad de bits cuando las profundidades de bits de un componente de luma y un componente de croma son las mismas.
La FIG. 15 es una vista que ilustra un procedimiento de derivación de una muestra de predicción de un bloque actual aplicando BDOF.
El procedimiento de interpredicción basado en BDOF de la FIG. 15 se puede realizar mediante un aparato de codificación de imágenes y un aparato de decodificación de imágenes.
En primer lugar, en la etapa S1510, se puede derivar la información de movimiento de un bloque actual. La información de movimiento del bloque actual se puede derivar por diversos procedimientos descritos en la presente descripción. Por ejemplo, la información de movimiento del bloque actual se puede derivar mediante un modo de fusión regular, un modo MMVD o un modo AMVP. La información de movimiento puede incluir información de movimiento de bipredicción (información de movimiento L0 e información de movimiento L1). Por ejemplo, la información de movimiento L0 puede incluir MVL0 (vector de movimiento L0) y refldxL0 (índice de imágenes de referencia L0), y la información de movimiento L1 MVL1 (vector de movimiento L1) y refldxL1 (índice de imágenes de referencia L1).
Posteriormente, una muestra de predicción del bloque actual se puede derivar basado en la información derivada del movimiento del bloque actual (S1520). Específicamente, las muestras de predicción L0 para el bloque actual se pueden derivar basado en la información de movimiento L0. Además, las muestras de predicción L1 para el bloque actual se pueden derivar basado en la información de movimiento L1.
Posteriormente, un desfase BDOF se puede derivar basado en las muestras de predicción derivadas (S1530). El BDOF de la etapa S1530 se puede realizar según el procedimiento descrito en la presente descripción. Por ejemplo, el desfase BDOF se puede derivar basado en los gradientes (según la fase) de las muestras de predicción L0 y los gradientes (según la fase) de las muestras de predicción L1.
Posteriormente, basado en las muestras de predicción LX (X = 0 o 1) y el desfase BDOF, se pueden derivar muestras de predicción refinadas del bloque actual (S1540). Las muestras de predicción refinadas se pueden utilizar para generar un bloque de predicción final del bloque actual.
El aparato de codificación de imágenes puede derivar muestras residuales a través de la comparación con muestras originales basadas en las muestras de predicción del bloque actual generadas según el procedimiento de la FIG. 15. La información (información residual) sobre las muestras residuales puede estar incluida y codificada en información de imagen/vídeo y emitirse en forma de un flujo de bits como se describió anteriormente. Además, el aparato de decodificación de imágenes puede generar un bloque reconstruido actual basado en las muestras de predicción del bloque actual generadas según el procedimiento de la FIG. 15 y las muestras residuales obtenidas basado en información residual en un flujo de bits, como se describió anteriormente.
La FIG. 16 es una vista que ilustra la entrada y la salida de un procedimiento BDOF según una realización de la presente descripción.
Como se muestra en la FIG. 16, la entrada del procedimiento BDOF puede incluir una anchura nCbW de un bloque actual, una altura CbH), subbloques de predicción predSamplesL0 y predSamplesL1 con un área de frontera extendida una longitud predeterminada (por ejemplo, 2), índices de dirección de predicción predFlagL0 y predFlagL1 e índices de imágenes de referencia refidxL0 y refidxL1. Asimismo, la entrada del procedimiento BDOF puede incluir además un indicador de utilización BDOF bdofUtilizationFlag. En este caso, el indicador de utilización BDOF puede ser introducido en unidades de subbloques dentro del bloque actual para especificar si el BDOF se aplica al subbloque correspondiente.
Además, el procedimiento BDOF puede generar un bloque de predicción refinado pbSamples aplicando BDOF basado en la información de entrada.
La FIG. 17 es una vista que ilustra variables utilizadas para un procedimiento BDOF según una realización de la presente descripción. La FIG. 17 puede ser un procedimiento posterior a la FIG. 16.
Como se muestra en la FIG. 17, para realizar el procedimiento BDOF, una profundidad de bits de entrada bitDepth de un bloque actual se puede ajustar a BitDepth<y>. En este caso, BitDepth<y>se puede derivar basado en información sobre una profundidad de bits señalizada a través de un flujo de bits. Además, se pueden ajustar varios desplazamientos a la derecha basado en la profundidad de bits. Por ejemplo, se puede derivar un primer desplazamiento shift1, un segundo desplazamiento shift2, un tercer desplazamiento shift3 y un cuarto desplazamiento shift4 basado en la profundidad de bits como se muestra en la FIG. 17. Además, se puede ajustar un desfase offst4 basado en shift4. Además, se puede ajustar una variable mvRefineThres para especificar un intervalo de recorte de refinamiento de movimiento basado en la profundidad de bits. Más adelante se describirá el uso de diversas variables en la FIG. 17.
La FIG. 18 es una vista que ilustra un procedimiento de generación de una muestra de predicción para cada subbloque en una CU actual basado en si se aplica BDOF según una realización de la presente descripción. La FIG. 18 puede ser un procedimiento posterior a la FIG. 17.
El procedimiento mostrado en la FIG. 18 se puede realizar para cada subbloque en la CU actual y, en este caso, el tamaño del subbloque puede ser 4x4. Cuando un indicador de utilización BDOF bdofUtilizationFlag para el subbloque actual es un primer valor (falso, "0"), el BDOF no se puede aplicar al subbloque actual. En este caso, la muestra de predicción del subbloque actual se deriva mediante una suma ponderada de una muestra de predicción L0 y una muestra de predicción L1, y, en este caso, un peso que se aplica a la muestra de predicción L0 y un peso que se aplica a la muestra de predicción L1 puede ser el mismo. shift4 y offset4 utilizados en la Ecuación (1) de la FIG. 18 pueden ser valores ajustados en la FIG. 17. Cuando un indicador de utilización BDOF bdofUtilizationFlag para el subbloque actual es un segundo valor (verdadero, "1"), el BDOF se puede aplicar al subbloque actual. En este caso, la muestra de predicción del subbloque actual se puede generar mediante el procedimiento BDOF según la presente descripción.
La FIG. 19 es una vista que ilustra un procedimiento de derivación de un gradiente, autocorrelación y correlación cruzada de un subbloque actual según una realización de la presente descripción. La FIG. 19 puede ser un procedimiento posterior a la FIG. 18.
El procedimiento mostrado en la FIG. 19 se realiza para cada subbloque en la CU actual y, en este caso, el tamaño del subbloque puede ser 4x4.
Según la FIG. 19, según la Ecuación (1) y la Ecuación (2), se puede derivar una posición (h<x>, h<y>) para cada posición de muestra (x, y) en el subbloque actual. Posteriormente, se puede derivar un gradiente horizontal y un gradiente vertical para cada posición de muestra según la Ecuación (3) a la Ecuación (6). Posteriormente, se pueden derivar variables (primer parámetro intermedio diff y segundos parámetros intermedios tempH y tempV) para derivar autocorrelación y correlación cruzada según la Ecuación (7) a la Ecuación (9). Por ejemplo, el primer parámetro intermedio diff se puede derivar utilizando un valor obtenido aplicando un desplazamiento a la derecha a las muestras de predicción predSamplesL0 y predSamplesL1 del bloque actual por un segundo desplazamiento shift2. Por ejemplo, los segundos parámetros intermedios tempH y tempV se pueden derivar aplicando un desplazamiento a la derecha a una suma de un gradiente en una dirección L0 y un gradiente en una dirección L1 por un tercer desplazamiento shift3 como en la Ecuación (8) y la Ecuación (9). Posteriormente, la autocorrelación y la correlación cruzada se pueden derivar basado en el primer parámetro intermedio y los segundos parámetros intermedios derivados según la Ecuación (10) a la Ecuación (16).
La FIG. 20 es una vista que ilustra un procedimiento de derivación de refinamiento de movimiento (v<x>, v<y>), derivación de un desfase BDOF y generación de una muestra de predicción de un subbloque actual, según una realización de la presente descripción. La FIG. 20 puede ser un procedimiento posterior a la FIG. 19.
El procedimiento mostrado en la FIG. 20 se realiza para cada subbloque en la CU actual y, en este caso, el tamaño del subbloque puede ser 4x4.
Según la Ecuación 20, el refinamiento de movimiento (v<x>, v<y>) se puede derivar según la Ecuación (1) y la Ecuación (2). El refinamiento de movimiento se puede recortar en un intervalo especificado por mvRefineThres. Además, basado en el refinamiento de movimiento y el gradiente, se puede derivar un desfase BDOF bdofOffset según la Ecuación (3). La muestra de predicción pbSamples del subbloque actual se puede generar utilizando el desfase BDOF derivado según la Ecuación (4).
Realizando continuamente los procedimientos descritos con referencia a las FIG. 16 a 20, se puede implementar el procedimiento BDOF según la primera realización de la presente descripción. En la realización según las FIG. 16 a 20, el primer desplazamiento shift1 se ajusta a Max(6, bitDepth-6), y mvRefineThres se ajusta a 1<<Max(, bitDepth-7). Por consiguiente, las anchuras de bits de predSample y cada parámetro de BDOF según BitDepth se pueden derivar como se muestra en la siguiente tabla.
[Tabla 1]
En la Tabla 1 anterior, por ejemplo, cuando BitDepth es 8, predSample tiene un valor de un intervalo de 16 bits, el gradiente utiliza 11 bits, v<x>y v<y>utilizan 6 bits, y, como consecuencia, el intervalo del valor bdofOffset es [-49856, 48298]. Como se muestra en la Tabla 1 anterior, al cambiar BitDepth se cambia la anchura de bits de predSample. Sin embargo, un gradiente que tiene una alta asociación con BitDepth tiene una anchura de bits fija (11 bits) incluso cuando se cambia BitDepth. Además, las anchuras de bits de v<x>y v<y>que no están asociadas con BitDepth cambian al cambiar BitDepth.
Según las otras realizaciones de la presente descripción, al refinar la normalización y el recorte de los parámetros utilizados en el procedimiento BDOF, la asociación con los parámetros y BitDepth puede reflejarse de manera más precisa. Por consiguiente, los parámetros pueden tener valores más precisos y es posible resolver los problemas de desbordamiento de memoria en el procedimiento BDOF.
Otras realizaciones de la presente descripción pueden implementarse cambiando partes de la primera realización de la presente descripción descrita anteriormente con referencia a las FIG. 16 a 20.
A continuación se describirá un procedimiento BDOF según una segunda realización de la presente descripción.
La segunda realización de la presente descripción se aplica a un procedimiento de normalización diferente del procedimiento BDOF de la primera realización de la presente descripción. Según la presente descripción, los gradientes gradientHLX y gradientVLX (en este caso, X es 0 o 1) representan las pendientes a una distancia de 2 píxeles en la dirección horizontal y vertical de la posición actual de la muestra. Además, cuando v<x>y v<y>son de una precisión de 1/32 píxeles y tienen un intervalo de valores de [-32, 31] o [-32, 32], un valor de 1 de v<x>y v<y>representa una distancia real de 1/32 píxeles. Por consiguiente, v<x>y v<y>pueden verse como la aplicación de una operación "1<<5" a un valor unitario de 1 píxel.
Según la segunda realización de la presente descripción, los parámetros (el gradiente horizontal, el gradiente vertical, V<x>y v<y>) utilizados para calcular el desfase BDOF se pueden normalizar a un valor unitario de 1 píxel. Por ejemplo, para un gradiente que es una pendiente a una distancia de 2 píxeles, la normalización se puede realizar a un valor unitario de 1 píxel aplicando una operación ">>1". Además, para v<x>y v<y>de precisión de 1/32 píxeles, la normalización se puede realizar a un valor unitario de 1 píxel aplicando una operación ">>5". En consideración de lo anterior, como se muestra en la Ecuación (3) de la FIG. 23, para la normalización, el valor obtenido al multiplicar el gradiente por v<x>y v<y>puede ser desplazado a la derecha por el primer desplazamiento shift1. En este caso, shift1 se puede ajustar a un valor fijo (por ejemplo, 7) con independencia de la profundidad de bits. Además, v<x>y v<y>se pueden recortar en un intervalo de un conjunto de valores con independencia de la profundidad de bits. Por ejemplo, una variable mvRefineThres que especifica el intervalo de recorte de v<x>y v<y>se puede ajustar a un valor de "1<<5". Como se describió anteriormente, la normalización según la segunda realización de la presente descripción se puede realizar considerando el gradiente y v<x>y v<y>.
La segunda realización de la presente descripción se puede implementar mejorando las FIGS. 17, 19 y 20 de la primera realización de la presente descripción.
La FIG. 21 es una vista que ilustra variables utilizadas para un procedimiento BDOF según otra realización de la presente descripción. La FIG. 21 puede ser un ejemplo obtenido modificando el ejemplo de la FIG. 17. Por consiguiente, se omitirá la descripción de las partes comunes en las FIGS. 17 y 21.
Como se muestra en la FIG. 21, para realizar un procedimiento BDOF, una profundidad de bits de entrada bitDepth de un bloque actual se puede ajustar a BitDepth<y>. En este caso, BitDepth<y>se puede derivar basado en información sobre una profundidad de bits señalizada a través de un flujo de bits. Además, un primer desplazamiento shift1, un segundo desplazamiento shift2 y un tercer desplazamiento shift3 se pueden ajustar a un valor fijo con independencia de la profundidad de bits. Por ejemplo, el primer desplazamiento shift1, el segundo desplazamiento shift2 y el tercer desplazamiento shift3 se pueden ajustar a 7, 4 y 1, respectivamente. El cuarto desplazamiento shift4 y el desfase offset4 se pueden derivar de la misma forma que en el ejemplo de la FIG. 17. Además, una variable mvRefineThres se puede ajustar a un valor fijo con independencia de la profundidad de bits. Por ejemplo, la variable mvRefineThres se puede ajustar a "1 <<5".
La FIG. 22 es una vista que ilustra un procedimiento para derivar un gradiente, autocorrelación y correlación cruzada de un subbloque actual según otra realización de la presente descripción. La FIG. 22 puede ser un ejemplo obtenido modificando el ejemplo de la FIG. 19. Por consiguiente, se omitirá la descripción de las partes comunes en las FIGS.
19 y 22.
En comparación con el ejemplo de la FIG. 19, en el cálculo de gradientes de la Ecuación (3) a la Ecuación (6) de la FIG. 22, puede no realizarse la operación de desplazamiento a la derecha (">>shift1"). Según la presente realización, es posible obtener un gradiente con mayor precisión omitiendo la operación de desplazamiento a la derecha.
La FIG. 23 es una vista que ilustra un procedimiento de derivación de refinamiento de movimiento (v<x>, v<y>), derivación de un desfase BDOF y generación de una muestra de predicción de un subbloque actual, según otra realización de la presente descripción. La FIG. 23 puede ser un ejemplo obtenido modificando el ejemplo de la FIG. 20. Por consiguiente, se omitirá la descripción de las partes comunes en las FIG. 20 y 23.
En comparación con el ejemplo de la FIG. 20, en el cálculo de bdofOffset de la Ecuación (3) de la FIG. 23, la operación de desplazamiento a la derecha ">>1" se puede cambiar a ">>shift1". Es decir, como se describió anteriormente, para normalización del gradiente y v<x>y v<y>, un valor obtenido multiplicando el gradiente por v<x>y v<y>puede ser desplazado a la derecha por el primer desplazamiento shift1. En este caso, shift1 se puede ajustar a un valor fijo (por ejemplo, 7) con independencia de la profundidad de bits, como se describió anteriormente.
Como se describió anteriormente, modificando los ejemplos de las FIG. 17, 19 y 20 según la primera realización de la presente descripción como se muestra en las FIG. 21, 22 y 23, se puede implementar la segunda realización de la presente descripción.
Según la segunda realización de la presente descripción, las anchuras de bits de predSample y cada parámetro de BDOF según BitDepth se pueden derivar como se muestra en la siguiente tabla.
[Tabla 2]
Como se muestra en la Tabla 2 anterior, el gradiente que tiene una alta asociación con la profundidad de bits cambia según la profundidad de bits. Además, dado que el intervalo del valor de gradiente se determina basado en el valor predSample, la precisión del valor de gradiente puede aumentar. Además, las anchuras de bits de v<x>y v<y>que no están asociadas con la profundidad de bits pueden tener un valor fijo con independencia de la profundidad de bits. Según la Tabla 2, en lugar de aumentar el intervalo del valor de gradiente, dado que el intervalo de los valores de v<x>y v<y>disminuyen, puede no afectar al intervalo del valor bdofOffset.
A continuación se describirá un procedimiento BDOF según una tercera realización de la presente descripción.
Como se describió anteriormente en la segunda realización de la presente descripción, el gradiente y v<x>y v<y>se pueden normalizar a un valor unitario de 1 píxel. Sin embargo, según la realización de la FIG. 22, en el procedimiento de cálculo de gradientes se puede generar un desbordamiento de bits. Por ejemplo, como se muestra en la Ecuación (3) a la Ecuación (6) de la FIG. 22, cuando en el procedimiento de cálculo de gradientes no se realiza una operación de desplazamiento, se puede realizar una operación de 32 bits para calcular el gradiente. Es decir, al calcular el gradiente se puede generar un desbordamiento de bits.
En la tercera realización de la presente descripción, en consideración de lo anterior, la normalización para el gradiente se puede aplicar cuando se calcula el gradiente. Es decir, la normalización se puede realizar aplicando una operación ">>1" cuando se calcula el gradiente, evitando con ello el desbordamiento de bits. Según la tercera realización de la presente descripción, el gradiente no puede superar 16 bits. Entre tanto, la normalización para v<x>y v<y>se puede realizar aplicando una operación de desplazamiento a la derecha por medio de shift1 ajustado. Por ejemplo, shift1 se puede ajustar a un valor fijo (por ejemplo, 6) con independencia de la profundidad de bits.
Una tercera realización de la presente descripción se puede implementar mejorando las FIGS. 21 y 22 de la segunda realización de la presente descripción.
La FIG. 24 es una vista que ilustra variables utilizadas para un procedimiento BDOF según otra realización de la presente descripción. La FIG. 24 puede ser un ejemplo obtenido modificando el ejemplo de la FIG. 21. Por consiguiente, se omitirá la descripción de las partes comunes en las FIGS. 21 y 24.
Como se muestra en la FIG. 24, para realizar un procedimiento BDOF, una profundidad de bits de entrada bitDepth de un bloque actual se puede ajustar a BitDepth<y>. En este caso, BitDepth<y>se puede derivar basado en información sobre una profundidad de bits señalizada a través de un flujo de bits. Además, un primer desplazamiento shift1, un segundo desplazamiento shift2 y un tercer desplazamiento shift3 se pueden ajustar a un valor fijo con independencia de la profundidad de bits. Por ejemplo, el primer desplazamiento shift1, el segundo desplazamiento shift2 y el tercer desplazamiento shift3 se pueden ajustar a 6, 4 y 1, respectivamente. El cuarto desplazamiento shift4 y el desfase offset4 se pueden derivar de la misma forma que en el ejemplo de la FIG. 17. Además, una variable mvRefineThres se puede ajustar a un valor fijo con independencia de la profundidad de bits. Por ejemplo, la variable mvRefineThres se puede ajustar a "1<<5".
La FIG. 25 es una vista que ilustra un procedimiento para derivar un gradiente, autocorrelación y correlación cruzada de un subbloque actual según otra realización de la presente descripción. La FIG. 25 puede ser un ejemplo obtenido modificando el ejemplo de la FIG. 22. Por consiguiente, se omitirá la descripción de las partes comunes en las FIGS.
22 y 25.
En comparación con el ejemplo de la FIG. 22, en el cálculo de gradientes de la Ecuación (3) a la Ecuación (6) de la FIG. 25, se puede realizar una operación de desplazamiento a la derecha (">>1"). Realizando una operación de desplazamiento a la derecha en el procedimiento de cálculo de gradientes, es posible evitar que se genere un desbordamiento de bits.
Además, como se muestra en la FIG. 24, dado que shift1 se modifica a 6, el desplazamiento total a la derecha que se aplica al gradiente y v<x>y v<y>es "7". Por consiguiente, el desplazamiento total a la derecha en la tercera realización de la presente descripción y la segunda realización de la presente descripción puede mantenerse igualmente.
Como se describió anteriormente, modificando los ejemplos de las FIGS. 21 y 22 según la segunda realización de la presente descripción como se muestra en las FIGS. 24 y 25, puede implementarse la tercera realización de la presente descripción.
Según la tercera realización de la presente descripción, las anchuras de bits de predSample y cada parámetro de BDOF según BitDepth se pueden derivar como se muestra en la siguiente tabla.
[Tabla 3]
Como se muestra en la Tabla 3 anterior, el gradiente que tiene una alta asociación con la profundidad de bits cambia según la profundidad de bits. Además, dado que el intervalo del valor de gradiente se determina basado en el valor predSample, la precisión del valor de gradiente puede aumentar. Además, realizando una operación de desplazamiento a la derecha en la Ecuación (3) a la Ecuación (6) de la FIG. 25 se puede prevenir el desbordamiento de bits cuando se calcula el gradiente. Además, las anchuras de bits de v<x>y v<y>que no están asociadas con la profundidad de bits pueden tener un valor fijo con independencia de la profundidad de bits.
A continuación se describirá un procedimiento BDOF según una cuarta realización de la presente descripción.
Como se describió anteriormente en la segunda realización de la presente descripción, el gradiente y v<x>y v<y>se puede normalizar a un valor unitario de 1 píxel. Sin embargo, según la realización de la FIG. 22, en el procedimiento de cálculo de gradientes se puede generar un desbordamiento de bits. Por ejemplo, como se muestra en la Ecuación (3) a la Ecuación (6) de la FIG. 22, cuando en el procedimiento de cálculo de gradientes no se realiza una operación de desplazamiento, se puede realizar una operación de 32 bits para calcular el gradiente. Es decir, al calcular el gradiente se puede generar un desbordamiento de bits.
En la cuarta realización de la presente descripción, en consideración de lo anterior, realizando un recorte cuando se calcula el gradiente, se puede evitar el desbordamiento de bits. Según la cuarta realización de la presente descripción, el gradiente no puede superar 16 bits. Entre tanto, la normalización para el gradiente y v<x>y v<y>se puede realizar de la misma forma que la segunda realización de la presente descripción. Para este fin, un valor obtenido multiplicando el gradiente por v<x>y v<y>puede ser desplazado a la derecha por el primer desplazamiento shift1. Por ejemplo, shift1 se puede ajustar a un valor fijo (por ejemplo, 7) con independencia de la profundidad de bits.
Una cuarta realización de la presente descripción se puede implementar mejorando las FIGS. 21 y 22 de la segunda realización de la presente descripción.
La FIG. 26 es una vista que ilustra variables utilizadas para un procedimiento BDOF según otra realización de la presente descripción. La FIG. 26 puede ser un ejemplo obtenido modificando el ejemplo de la FIG. 21. Por consiguiente, se omitirá la descripción de las partes comunes en las FIGS. 21 y 26.
Como se muestra en la FIG. 26, para realizar un procedimiento BDOF, una profundidad de bits de entrada bitDepth de un bloque actual se puede ajustar a BitDepth<y>. En este caso, BitDepth<y>se puede derivar basado en información sobre una profundidad de bits señalizada a través de un flujo de bits. Además, un primer desplazamiento shift1, un segundo desplazamiento shift2 y un tercer desplazamiento shift3 se pueden ajustar a un valor fijo con independencia de la profundidad de bits. Por ejemplo, el primer desplazamiento shift1, el segundo desplazamiento shift2 y el tercer desplazamiento shift3 se pueden ajustar a 7, 4 y 1, respectivamente. El cuarto desplazamiento shift4 y el desfase offset4 se pueden derivar de la misma forma que en el ejemplo de la FIG. 17. Además, una variable mvRefineThres se puede ajustar a un valor fijo con independencia de la profundidad de bits. Por ejemplo, la variable mvRefineThres se puede ajustar a "1<<5". Además, se puede ajustar una variable gradLimit para especificar un intervalo de recorte de un valor de gradiente. En este caso, gradLimit se puede ajustar basado en la profundidad de bits, y se puede ajustar, por ejemplo, a "1<<Max(15, BitDepth+3)".
La FIG. 27 es una vista que ilustra un procedimiento para derivar un gradiente, autocorrelación y correlación cruzada de un subbloque actual según otra realización de la presente descripción. La FIG. 27 puede ser un ejemplo obtenido modificando el ejemplo de la FIG. 22. Por consiguiente, se omitirá la descripción de las partes comunes en las FIGS. 22 y 27.
En comparación con el ejemplo de la FIG. 22, en el cálculo de gradientes de la Ecuación (3) a la Ecuación (6) de la FIG. 27 se puede realizar una operación de recorte. Es decir, el valor de gradiente calculado se puede recortar a un valor en un intervalo especificado por gradLimit. Por ejemplo, el intervalo de recorte puede ser [-gradLimit, gradLimit-1]. Según la tercera realización, realizando un operación de recorte en el procedimiento de cálculo de gradientes es posible evitar que se genere un desbordamiento de bits.
Como se describió anteriormente, modificando los ejemplos de las FIG. 21 y 22 según la segunda realización de la presente descripción como se muestra en las FIGS. 26 y 27, puede implementarse la cuarta realización de la presente descripción.
Según la cuarta realización de la presente descripción, las anchuras de bits de predSample y cada parámetro de BDOF según BitDepth se pueden derivar como se muestra en la siguiente tabla.
[Tabla 4]
Como se muestra en la Tabla 4 anterior, el gradiente que tiene una alta asociación con la profundidad de bits cambia según la profundidad de bits. Además, dado que el intervalo del valor de gradiente se determina basado en el valor predSample, la precisión del valor de gradiente puede aumentar. Además, realizando un operación de recorte en la Ecuación (3) a la Ecuación (6) de la FIG. 27 se puede prevenir el desbordamiento de bits cuando se calcula el gradiente. Además, las anchuras de bits de v<x>y v<y>que no están asociadas con la profundidad de bits pueden tener un valor fijo con independencia de la profundidad de bits.
A continuación se describirá una realización de recorte un desfase BDOF según la presente descripción.
Una muestra de predicción predSample generada por interpolación de interpredicción tiene un intervalo de valores determinados por una profundidad de bits de entrada y un coeficiente de un filtro de interpolación, y, en el peor caso, tiene un intervalo de valores de [-16830, 33150]. En este caso, sumando un valor de -8192 al valor predSample con el fin de evitar desbordamiento de 16 bits, como se muestra en la Tabla 1, el valor de predSample se puede ajustar al intervalo de [-25022, 24958].
Por consiguiente, como se muestra en la Tabla 1, cuando BitDepth<y>es 8, predSample tiene un valor de un intervalo de 16 bits, el gradiente utiliza 11 bits, v<x>y v<y>utilizan 6 bits y en su caso el intervalo de bdofOffset es [-49856,48298]. Por consiguiente, según diversas realizaciones de la presente descripción, cuando se añaden predSample y bdofOffset se puede generar un desbordamiento de 16 bits.
Según la presente descripción, cuando el valor de la muestra de predicción refinada se calcula por recorte del valor del desfase BDOF (bdofOffset) en un intervalo predeterminado, se puede evitar que se genere un desbordamiento de 16 bits. Más en concreto, predSample tiene un valor de un intervalo de 16 bits cuando la profundidad de bits es 8 a 12 y predSample tiene un valor de un intervalo de 18 bits y un intervalo de 20 bits cuando la profundidad de bits es 14 y 16, respectivamente. Por consiguiente, el intervalo de recorte de bdofOffset también se puede definir en consideración de la profundidad de bits. Por ejemplo, una variable OffsetLimit que especifica el intervalo de recorte de bdofOffset se puede definir basado enla profundidad de bits, y adicionalmente se puede aplicar el recorte de bdofOffset a las realizaciones de la presente descripción.
Por ejemplo, en la Ecuación (4) de la FIG. 20 y la Ecuación (4) de la FIG. 23, bdofOffset se puede recortar en un intervalo de [-OffsetLimit, OffsetLimit-1]. Por ejemplo, en la Ecuación (4) de la FIG. 20 y la Ecuación (4) de la FIG. 23, bdofOffset se puede sustituir por Clip3(-OffsetLimit, OffsetLimit-1, bdofOffset). En este caso, Offsetlimit se puede definir basado enla profundidad de bits. Por ejemplo, Offsetlimit se puede ajustar a "1<<Max(12, BitDepth<y>)". Como se describió anteriormente, aplicando un recorte a bdofOffset es posible evitar el desbordamiento de bits que se puede generar cuando se suman predSample y bdofOffset
A continuación se describirá un procedimiento de derivación de un desfase BDOF bdofOffset según otra realización de la presente descripción.
Según la presente realización, es posible minimizar la operación de desplazamiento a la derecha en el procedimiento de cálculo de gradientes para mejorar la precisión del desfase BDOF. Además, cuando se realiza una operación de desplazamiento a la derecha en el procedimiento de cálculo de bdofOffset, sumando el valor de desfase, la precisión de bdofOffset puede aumentar aún más. En este caso, el desfase se puede determinar basado en el desplazamiento a la derecha. Por ejemplo, la presente realización se puede aplicar a la tercera realización de la presente descripción. En este caso, la Ecuación (3) de la FIG. 23 se puede modificar del modo siguiente.
bdofOffset = (v<x>* (gradientHL0[x 1][y 1] - gradientHL1[x 1][y 1]
offset)) >> shift1 (v<y>* (gradientVL0[x 1][y 1] - gradientVL1[x 1][y 1]) offset) >> shift1
En la ecuación anterior, shift1 se puede ajustar a "6", y el desfase se puede ajustar basado en shift1, por ejemplo como "1 <<(shift1 -1)".
La modificación de la Ecuación (3) anterior no se limita a la aplicación a la tercera realización de la presente descripción y se puede aplicar a otras realizaciones de la presente descripción. Por ejemplo, la modificación de la Ecuación (3) se puede aplicar a una cuarta realización de la presente descripción. En este caso, shift1 se puede ajustar a "7" y el desfase se puede ajustar basado en shift1, por ejemplo como "1< <(shift1 -1)".
Según la presente realización, minimizando operación de desplazamiento a la derecha en el procedimiento de cálculo de gradientes y sumando un valor de desfase cuando se realiza la operación de desplazamiento a la derecha en el procedimiento de cálculo de bdofOffset, es posible aumentar la precisión de bdofOffset.
A continuación se describirá un procedimiento de derivación de un desfase BDOF bdofOffset según otra realización de la presente descripción.
Como se describió anteriormente, en un procedimiento de cálculo del desfase BDOF, se derivan varias variables utilizando una muestra de predicción y un gradiente. Cuando la normalización se realiza según diversas realizaciones de la presente descripción, si el desplazamiento a la derecha se ajusta a "1" o el recorte se realiza en el procedimiento de cálculo de gradientes, el intervalo de bits del valor de gradiente puede variar. Por ejemplo, como se muestra en la Tabla 1, en la primera realización de la presente descripción, se puede calcular un gradiente en un intervalo de 11 bits aplicando ">>6" a una muestra de predicción en un intervalo de 16 bits. En este caso, según la tercera realización o la cuarta realización de la presente descripción, cuando ">>1" o el recorte se aplica a la muestra de predicción en el intervalo de 16 bits, como se muestra en la Tabla 3 o 4, el gradiente puede tener un valor en el intervalo de 16 bits. Sin embargo, cuando el intervalo del valor de gradiente aumenta, se puede generar un desbordamiento de 16 bits cuando se calculan las variables tempH y tempV basado en el gradiente. En la presente realización, en consideración de lo anterior, se puede evitar que se genere el desbordamiento de bits aplicando una operación de desplazamiento a la derecha a cada elemento del gradiente cuando se calcula tempH y tempV. Por ejemplo, la Ecuación (8) y la Ecuación (9) de las FIGS. 25 y 27 se pueden modificar del modo siguiente.
tempH[x][y] = (gradientHL0[x][y] >> shift3) (gradientHL1[x][y] >> shift3) (8)
tempV[x][y] = (gradientVL0[x][y]>> shift3) (gradientVL1[x][y] >> shift3) (9)
En las Ecuaciones (8) y (9) modificadas, shift3 se puede ajustar a Max(1, bitDepth - 11) o a un valor fijo de 1. Como se describió anteriormente, modificando las realizaciones tercera y cuarta de la presente descripción, se puede evitar que se genere el desbordamiento de bits cuando se calcula tempH y tempV.
A continuación se describirá un procedimiento para evitar que se genere un desbordamiento de bits según otra realización de la presente descripción.
Como se describió anteriormente, cuando se aplica ">>1" o recorte a una muestra de predicción en un intervalo de 16 bits según la tercera o la cuarta realización de la presente descripción, se puede generar un desbordamiento de 16 bits cuando se calculan las variables tempH y tempV. En este caso, incluso en el cálculo de parámetros intermedios como sGx2, sGy2, sGxGy, sGxdl y sGydl calculados basado en las variables tempH y tempV se puede generar un desbordamiento de 16 de bits. Según la presente realización, para evitar la generación de desbordamiento de bits en el cálculo no solo de las variables tempH y tempV sino también de los parámetros intermedios sGx2, sGy2, sGxGy, sGxdl y sGydl, se puede ajustar el desplazamiento a la derecha shift3 que se aplica a las Ecuaciones (8) y (9) modificadas. Por ejemplo, en la tercera realización de la presente descripción, en la modificación de las Ecuaciones (8) y (9) de la FIG. 25 como se describió anteriormente, shift3 se puede ajustar a Max(6, bitDepth - 6) o a un valor fijo de 6. Además, en la cuarta realización de la presente descripción, en la modificación de las Ecuaciones (8) y (9) de la FIG. 27 como se describió anteriormente, shift3 se puede ajustar a Max(6, bitDepth - 6)+1 o a un valor fijo de 7. Según la presente realización, en el cálculo no solo de las variables tempH y tempV sino también de los parámetros intermedios sGx2, sGy2, sGxGy, sGxdl y sGydl, se puede evitar que se genere el desbordamiento de bits.
Las realizaciones de la presente descripción no se limitan a los ejemplos descritos anteriormente, y las realizaciones de la presente descripción se pueden utilizar en combinación con otras realizaciones o modificaciones. Por ejemplo, se puede implementar una quinta realización de la presente descripción cambiando la etapa de la FIG. 17 entre las etapas de la primera realización de la presente descripción descritas con referencia a las FIGS. 16 a 20. Por ejemplo, cambiando la FIG. 17 de la primera realización de la presente descripción por la FIG. 24 de la tercera realización de la presente descripción se puede derivar la quinta realización de la presente descripción.
Si bien los procedimientos ejemplares de la presente descripción descritos anteriormente se representan como una serie de operaciones por cuestiones de claridad de descripción, no se pretende limitar el orden en que se realizan las etapas, y las etapas se pueden realizar simultáneamente o en un orden diferente si fuera necesario. Para implementar el procedimiento según la presente descripción, las etapas descritas pueden incluir además otras etapas, pueden incluir etapas restantes excepto en alguna de las etapas, o pueden incluir otras etapas adicionales excepto en algunas etapas.
En la presente descripción, el aparato de codificación de imágenes o el aparato de decodificación de imágenes que realiza una operación (etapa) predeterminada puede realizar una operación (etapa) de confirmación de una condición o situación de ejecución de la operación (etapa) correspondiente. Por ejemplo, si se describe que una operación predeterminada se realiza cuando se cumple una condición predeterminada, el aparato de codificación de imágenes o el aparato de decodificación de imágenes puede realizar la operación predeterminada después de determinar si se cumple la condición predeterminada.
Las diversas realizaciones de la presente descripción no son una lista de todas las posibles combinaciones y pretenden describir aspectos representativos de la presente descripción, y los asuntos descritos en las diversas realizaciones se pueden aplicar independientemente o en combinación de dos o más.
Diversas realizaciones de la presente descripción se pueden implementar en hardware, firmware, software o una combinación de los mismos. En el caso de implementación de la presente descripción mediante hardware, la presente descripción se puede implementar con circuitos integrados específicos de aplicaciones (ASIC), procesadores de señales digitales (DSP), dispositivos de procesamiento de señales digitales (DSPD), dispositivos lógicos programables (PLD), matrices de puertas programables de campo (FPGA), procesadores generales, controladores, microcontroladores, microprocesadores, etc.
Además, el aparato de decodificación de imágenes y el aparato de codificación de imágenes, a los que se aplican las realizaciones de la presente descripción, pueden estar incluidos en un dispositivo de transmisión y recepción de difusión multimedia, un terminal de comunicación móvil, un dispositivo de vídeo de cine en casa, un dispositivo de vídeo de cine digital, una cámara de vigilancia, un dispositivo de chat para vídeo, un dispositivo de comunicación en tiempo real como comunicación de vídeo, un dispositivo de transmisión continua móvil, un medio de almacenamiento, una videocámara, un dispositivo de suministro de servicio de vídeo bajo demanda (VoD), un dispositivo de vídeo OTT (vídeo “over the top”, servicio de transmisión libre), un dispositivo de suministro de servicios de transmisión continua en Internet, un dispositivo de vídeo tridimensional (3D), un dispositivo de vídeo para videotelefonía, un dispositivo de vídeo médico, y similares, y se puede utilizar para procesar señales de vídeo o señales de datos. Por ejemplo, los dispositivos de vídeo OTT pueden incluir una consola de juegos, un reproductor blu-ray, una TV con acceso a Internet, un sistema de cine en casa, un teléfono inteligente, un PC de tipo tableta, un grabador de vídeo digital (DVR), o similares.
La FIG. 28 es una vista que muestra un sistema de transmisión continua de contenidos, al que es aplicable una realización de la presente descripción.
Como se muestra en la FIG. 28, el sistema de transmisión continua de contenidos, al que se aplica la realización de la presente descripción, puede incluir en sentido extenso un servidor de codificación, un servidor de transmisión continua, un servidor web, un almacenamiento multimedia, un dispositivo de usuario y un dispositivo de entrada multimedia.
El servidor de codificación comprime el contenido introducido desde dispositivos de entrada multimedia como un teléfono inteligente, una cámara, una videocámara, etc., en datos digitales para generar un flujo de bits y transmite el flujo de bits al servidor de transmisión continua. Como otro ejemplo, cuando los dispositivos de entrada multimedia tales como teléfonos inteligentes, cámaras, videocámaras, etc., generan directamente un flujo de bits, se puede omitir el servidor de codificación.
El flujo de bits se puede generar mediante un procedimiento de codificación de imágenes o un aparato de codificación de imágenes, al que se aplica la realización de la presente descripción, y el servidor de transmisión continua puede almacenar temporalmente el flujo de bits en el procedimiento de transmisión o recepción del flujo de bits.
El servidor de transmisión continua transmite los datos multimedia al dispositivo de usuario basado en una solicitud de usuario a través del servidor web, y el servidor web sirve como un medio para informar al usuario de un servicio. Cuando el usuario solicita un servicio deseado del servidor web, el servidor web puede suministrarlo a un servidor de transmisión continua, y el servidor de transmisión continua puede transmitir datos multimedia al usuario. En este caso, el sistema de transmisión continua de contenido puede incluir un servidor de control separado. En este caso, el servidor de control sirve para controlar un comando/respuesta entre dispositivos en el sistema de transmisión continua de contenido.
El servidor de transmisión continua puede recibir contenidos de un almacenamiento multimedia y/o un servidor de codificación. Por ejemplo, cuando los contenidos se reciben del servidor de codificación, los contenidos se pueden recibir en tiempo real. En este caso, con el fin de proporcionar un servicio de transmisión continua sin problemas, el servidor de transmisión continua puede almacenar el flujo de bits durante un tiempo predeterminado.
Los ejemplos del dispositivo de usuario pueden incluir un teléfono móvil, un teléfono inteligente, un ordenador portátil, un terminal de difusión digital, un asistente digital personal (PDA), un reproductor multimedia portátil (PMP), navegación, un PC de tipo pizarra, un PC de tipo tableta, ultrabooks, dispositivos llevables (por ejemplo, relojes inteligentes, gafas inteligentes, pantallas de montaje frontal), televisores digitales, ordenadores de sobremesa, señalización digital, y similares.
Cada servidor en el sistema de transmisión continua de contenidos puede funcionar como un servidor distribuido, en cuyo caso los datos recibidos por cada servidor pueden ser distribuidos.
El alcance de la descripción incluye software u órdenes ejecutables por máquina (por ejemplo, un sistema operativo, una aplicación, firmware, un programa, etc.) para permitir que las operaciones según los procedimientos de diversas realizaciones sean ejecutadas en un aparato o un ordenador, un medio legible por ordenador no transitorio que tiene dicho software o dichas órdenes almacenados en el mismo y ejecutables en el aparato o el ordenador.
Aplicación Industrial
Las realizaciones de la presente descripción se pueden utilizar para codificar o decodificar una imagen.

Claims (10)

REIVINDICACIONES
1. Un procedimiento de decodificación de imágenes realizado por un aparato de decodificación de imágenes, comprendiendo el procedimiento de decodificación de imágenes:
la derivación de una muestra de predicción L0 y una muestra de predicción L1 de un bloque actual utilizando información de movimiento del bloque actual;
la derivación de un gradiente para un área predeterminada que incluye un subbloque actual en el bloque actual; la derivación de desfase de movimiento (vx, vy) para el subbloque actual utilizando el gradiente;
la derivación de un desfase de flujo óptico bidireccional (BDOF) utilizando el gradiente y el desfase de movimiento; y
la derivación de una muestra de predicción para el bloque actual utilizando la muestra de predicción L0, la muestra de predicción L1 del bloque actual y el desfase BDOF,
en donde el gradiente se deriva por desplazamiento a la derecha de la muestra de predicción L0 y la muestra de predicción L1 del bloque actual por un primer desplazamiento,
en donde la derivación del desfase de movimiento (vx, vy) comprende:
la derivación de un primer parámetro intermedio diff restando la muestra de predicción L1 del bloque actual de la muestra de predicción L0 del bloque actual, y
la derivación de segundos parámetros intermedios tempH y tempV por desplazamiento a la derecha del gradiente por un tercer desplazamiento,
en donde la derivación del primer parámetro intermedio diff comprende el desplazamiento a la derecha de la muestra de predicción L0 y la muestra de predicción L1 del bloque actual por un segundo desplazamiento, y en donde el primer desplazamiento, el segundo desplazamiento y el tercer desplazamiento se ajustan a un valor fijo con independencia de la profundidad de bits del bloque actual,
en donde un valor del primer desplazamiento es diferente de un valor del segundo desplazamiento y un valor del tercer desplazamiento, y
en donde un valor del segundo desplazamiento es diferente de un valor del tercer desplazamiento.
2. El procedimiento de decodificación de imágenes de la reivindicación 1, en donde el primer desplazamiento es 6.
3. El procedimiento de decodificación de imágenes de la reivindicación 1, en donde el segundo desplazamiento es 4.
4. El procedimiento de decodificación de imágenes de la reivindicación 1, en donde el tercer desplazamiento es 1.
5. El procedimiento de decodificación de imágenes de la reivindicación 1, en donde el desfase de movimiento (vx, vy) se recorta en un intervalo predeterminado.
6. El procedimiento de decodificación de imágenes de la reivindicación 5, en donde el intervalo predeterminado en que el desfase de movimiento (vx, vy) se recorta se ajusta a un intervalo fijo con independencia de la profundidad de bits del bloque actual.
7. El procedimiento de decodificación de imágenes de la reivindicación 1,
en donde la derivación del desfase BDOF comprende el desplazamiento a la derecha, por un desplazamiento predeterminado, de un valor derivado utilizando el gradiente y el desfase de movimiento, y
en donde el desplazamiento predeterminado se ajusta a un intervalo fijo con independencia de la profundidad de bits del bloque actual.
8. El procedimiento de decodificación de imágenes de la reivindicación 1,
en donde la derivación de la muestra de predicción para el bloque actual comprende el recorte del desfase BDOF en un intervalo predeterminado, y
en donde el intervalo predeterminado se ajusta basado en la profundidad de bits del bloque actual.
9. Un procedimiento de codificación de imágenes realizado por un aparato de codificación de imágenes, comprendiendo el procedimiento de codificación de imágenes:
la derivación de una muestra de predicción L0 y una muestra de predicción L1 de un bloque actual utilizando información de movimiento del bloque actual;
la derivación de un gradiente para un área predeterminada que incluye un subbloque actual en el bloque actual; la derivación de desfase de movimiento (vx, vy) para el subbloque actual utilizando el gradiente;
la derivación de un desfase de flujo óptico bidireccional (BDOF) utilizando el gradiente y el desfase de movimiento; y
la derivación de una muestra de predicción para el bloque actual utilizando la muestra de predicción L0, la muestra de predicción L1 del bloque actual y el desfase BDOF,
en donde el gradiente se deriva por desplazamiento a la derecha de la muestra de predicción L0 y la muestra de predicción L1 del bloque actual por un primer desplazamiento,
en donde la derivación del desfase de movimiento (vx, vy) comprende:
la derivación de un primer parámetro intermedio diff restando la muestra de predicción L1 del bloque actual de la muestra de predicción L0 del bloque actual; y
la derivación de segundos parámetros intermedios tempH y tempV por desplazamiento a la derecha del gradiente por un tercer desplazamiento,
en donde la derivación del primer parámetro intermedio diff comprende el desplazamiento a la derecha de la muestra de predicción L0 y la muestra de predicción L1 del bloque actual por un segundo desplazamiento,
en donde el primer desplazamiento, el segundo desplazamiento y el tercer desplazamiento se ajustan a un valor fijo con independencia de la profundidad de bits del bloque actual,
en donde un valor del primer desplazamiento es diferente de un valor del segundo desplazamiento y un valor del tercer desplazamiento, y
en donde un valor del segundo desplazamiento es diferente de un valor del tercer desplazamiento.
10. Un procedimiento para transmitir un flujo de bits que comprende:
la derivación de una muestra de predicción L0 y una muestra de predicción L1 de un bloque actual de una imagen utilizando información de movimiento del bloque actual;
la derivación de un gradiente para un área predeterminada que incluye un subbloque actual en el bloque actual; la derivación de desfase de movimiento (vx, vy) para el subbloque actual utilizando el gradiente;
la derivación de un desfase de flujo óptico bidireccional (BDOF) utilizando el gradiente y el desfase de movimiento;
la derivación de una muestra de predicción para el bloque actual utilizando la muestra de predicción L0, la muestra de predicción L1 del bloque actual y el desfase BDOF,
la codificación del bloque actual basado en la muestra de predicción para generar el flujo de bits; y la transmisión del flujo de bits,
en donde el gradiente se deriva por desplazamiento a la derecha de la muestra de predicción L0 y la muestra de predicción L1 del bloque actual por un primer desplazamiento,
en donde la derivación del desfase de movimiento (vx, vy) comprende:
la derivación de un primer parámetro intermedio diff restando la muestra de predicción L1 del bloque actual de la muestra de predicción L0 del bloque actual; y
la derivación de segundos parámetros intermedios tempH y tempV por desplazamiento a la derecha del gradiente por un tercer desplazamiento,
en donde la derivación del primer parámetro intermedio diff comprende el desplazamiento a la derecha de la muestra de predicción L0 y la muestra de predicción L1 del bloque actual por un segundo desplazamiento, en donde el primer desplazamiento, el segundo desplazamiento y el tercer desplazamiento se ajustan a un valor fijo con independencia de la profundidad de bits del bloque actual,
en donde un valor del primer desplazamiento es diferente de un valor del segundo desplazamiento y un valor del tercer desplazamiento, y
en donde un valor del segundo desplazamiento es diferente de un valor del tercer desplazamiento.
ES20863214T 2019-09-10 2020-09-09 Image decoding/encoding method for performing bdof, and method for transmitting bitstream Active ES3004864T3 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201962898531P 2019-09-10 2019-09-10
US201962904648P 2019-09-23 2019-09-23
PCT/KR2020/012153 WO2021049865A1 (ko) 2019-09-10 2020-09-09 Bdof를 수행하는 영상 부호화/복호화 방법, 장치 및 비트스트림을 전송하는 방법

Publications (1)

Publication Number Publication Date
ES3004864T3 true ES3004864T3 (en) 2025-03-13

Family

ID=74867156

Family Applications (2)

Application Number Title Priority Date Filing Date
ES24210102T Active ES3041014T3 (en) 2019-09-10 2020-09-09 Image encoding/decoding device for performing bdof, and device for transmitting bitstream
ES20863214T Active ES3004864T3 (en) 2019-09-10 2020-09-09 Image decoding/encoding method for performing bdof, and method for transmitting bitstream

Family Applications Before (1)

Application Number Title Priority Date Filing Date
ES24210102T Active ES3041014T3 (en) 2019-09-10 2020-09-09 Image encoding/decoding device for performing bdof, and device for transmitting bitstream

Country Status (14)

Country Link
US (2) US12231644B2 (es)
EP (3) EP4030760B1 (es)
JP (2) JP2022547988A (es)
KR (2) KR20220036966A (es)
CN (1) CN114365485B (es)
AU (3) AU2020347025B2 (es)
ES (2) ES3041014T3 (es)
FI (1) FI4030760T3 (es)
HR (2) HRP20251109T1 (es)
HU (2) HUE073035T2 (es)
PL (2) PL4030760T3 (es)
RS (1) RS67179B1 (es)
SI (1) SI4030760T1 (es)
WO (1) WO2021049865A1 (es)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP4032300A4 (en) * 2019-09-20 2022-11-09 Telefonaktiebolaget Lm Ericsson (Publ) Methods of video encoding and/or decoding with bidirectional optical flow simplification on shift operations and related apparatus
WO2026056827A1 (en) * 2024-09-11 2026-03-19 Douyin Vision Co., Ltd. Method, apparatus, and medium for video processing

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9049450B2 (en) * 2010-04-05 2015-06-02 Samsung Electronics Co., Ltd. Method and apparatus for encoding video based on internal bit depth increment, and method and apparatus for decoding video based on internal bit depth increment
CN104137549B9 (zh) * 2012-01-18 2020-06-05 韩国电子通信研究院 对图像进行编码和解码的方法及设备
WO2017052000A1 (ko) * 2015-09-24 2017-03-30 엘지전자 주식회사 영상 코딩 시스템에서 움직임 벡터 정제 기반 인터 예측 방법 및 장치
US10375413B2 (en) * 2015-09-28 2019-08-06 Qualcomm Incorporated Bi-directional optical flow for video coding
KR102638991B1 (ko) 2016-03-24 2024-02-21 엘지전자 주식회사 비디오 코딩 시스템에서 인터 예측 방법 및 장치
KR102873107B1 (ko) * 2016-04-25 2025-10-17 엘지전자 주식회사 영상 코딩 시스템에서 인터 예측 방법 및 장치
US10958931B2 (en) * 2016-05-11 2021-03-23 Lg Electronics Inc. Inter prediction method and apparatus in video coding system
US11477442B2 (en) * 2016-10-04 2022-10-18 Electronics And Telecommunications Research Institute Method and apparatus for encoding and decoding image, and recording medium for storing bitstream
WO2018113658A1 (en) * 2016-12-22 2018-06-28 Mediatek Inc. Method and apparatus of motion refinement for video coding
WO2018166357A1 (en) * 2017-03-16 2018-09-20 Mediatek Inc. Method and apparatus of motion refinement based on bi-directional optical flow for video coding
US10659788B2 (en) 2017-11-20 2020-05-19 Google Llc Block-based optical flow estimation for motion compensated prediction in video coding
US11284107B2 (en) 2017-08-22 2022-03-22 Google Llc Co-located reference frame interpolation using optical flow estimation
CN116744019A (zh) * 2017-08-29 2023-09-12 Sk电信有限公司 视频编码方法、视频解码方法和传输比特流的方法
KR102580910B1 (ko) 2017-08-29 2023-09-20 에스케이텔레콤 주식회사 양방향 옵티컬 플로우를 이용한 움직임 보상 방법 및 장치
CN118158435A (zh) * 2017-09-29 2024-06-07 英迪股份有限公司 对图像进行解码的方法、对图像进行编码的方法以及用于发送通过对图像进行编码的方法生成的比特流的方法
US12316870B2 (en) 2019-01-14 2025-05-27 Interdigital Madison Patent Holdings, Sas Method and apparatus for video encoding and decoding with bi-directional optical flow adapted to weighted prediction

Also Published As

Publication number Publication date
HRP20251109T1 (hr) 2025-11-21
EP4478707C0 (en) 2025-08-13
HUE073035T2 (hu) 2025-12-28
US12231644B2 (en) 2025-02-18
EP4604518A3 (en) 2025-11-05
AU2024203549B2 (en) 2025-12-18
US20240422323A1 (en) 2024-12-19
EP4478707A3 (en) 2025-01-29
EP4030760B1 (en) 2024-12-11
EP4478707B1 (en) 2025-08-13
AU2020347025B2 (en) 2024-02-29
FI4030760T3 (fi) 2025-01-14
EP4604518A2 (en) 2025-08-20
JP7833628B2 (ja) 2026-03-23
PL4478707T3 (pl) 2025-12-15
SI4030760T1 (sl) 2025-04-30
AU2020347025A1 (en) 2022-03-24
AU2024203549A1 (en) 2024-06-20
JP2024125405A (ja) 2024-09-18
US20220337842A1 (en) 2022-10-20
KR20240170971A (ko) 2024-12-05
CN114365485A (zh) 2022-04-15
EP4030760A4 (en) 2023-09-06
HUE070019T2 (hu) 2025-05-28
WO2021049865A1 (ko) 2021-03-18
CN114365485B (zh) 2026-03-27
RS67179B1 (sr) 2025-09-30
PL4030760T3 (pl) 2025-03-03
JP2022547988A (ja) 2022-11-16
EP4478707A2 (en) 2024-12-18
HRP20250032T1 (hr) 2025-03-14
KR20220036966A (ko) 2022-03-23
ES3041014T3 (en) 2025-11-06
AU2026201940A1 (en) 2026-04-02
EP4030760A1 (en) 2022-07-20

Similar Documents

Publication Publication Date Title
ES3025197T3 (en) Inter prediction method based on history-based motion vector, and device therefor
ES3026563T3 (en) History-based image coding apparatuses
ES2841312T3 (es) Predicción de vectores de movimiento para modelos de movimiento afines en codificación de vídeo
ES2755573T3 (es) Predicción de vector de movimiento temporal avanzada basada en unidades de subpredicción
ES2753958T3 (es) Predicción de vector de movimiento temporal basada en subunidad de predicción (PU) en la HEVC y diseño de sub-PU en la 3D-HEVC
ES2842109T3 (es) Predicción residual avanzada basada en bloques para la codificación de vídeo 3D
ES3010265T3 (en) Inter-prediction method and device based on dmvr and bdof
KR20220027157A (ko) 움직임 정보 후보를 이용한 영상 부호화/복호화 방법, 장치 및 비트스트림을 전송하는 방법
BR112016006574B1 (pt) Predição de vetor de movimento temporal com base em unidade de subpredição (pu) em hevc e projeto de sub-pu em 3d-hevc
US20250030851A1 (en) Video encoding/decoding method and device using segmentation limitation for chroma block, and method for transmitting bitstream
ES2984615T3 (es) Interpredicción de video basada en flujo óptico
KR102849627B1 (ko) 머지 후보들의 최대 개수 정보를 포함하는 시퀀스 파라미터 세트를 이용한 영상 부호화/복호화 방법, 장치 및 비트스트림을 전송하는 방법
ES3063233T3 (en) Image decoding method and image encoding method for deriving weight index information for generation of prediction sample
KR20220044843A (ko) 서브픽처 기반 영상 부호화/복호화 방법, 장치 및 비트스트림을 전송하는 방법
ES3030286T3 (en) Image encoding/decoding method and apparatus using maximum transform size setting for chroma block, and method for transmitting bitstream
KR102808143B1 (ko) Smvd(symmetric motion vector difference)를 이용한 영상 부호화/복호화 방법, 장치 및 비트스트림을 전송하는 방법
KR20220002687A (ko) 크로마 블록의 적응적 크기 제한을 이용한 영상 부호화/복호화 방법, 장치 및 비트스트림을 전송하는 방법
AU2024203549B2 (en) Image encoding/decoding method and device for performing bdof, and method for transmitting bitstream
KR20220024764A (ko) Ibc를 이용한 영상 부호화/복호화 방법, 장치 및 비트스트림을 전송하는 방법
US12445627B2 (en) Image encoding/decoding method and device using affine TMVP, and method for transmitting bit stream
KR20220036978A (ko) Prof를 수행하는 영상 부호화/복호화 방법, 장치 및 비트스트림을 전송하는 방법
KR20250002119A (ko) Amvp(advanced motion vector prediction)-merge 모드에 기반한 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장하는 기록 매체
KR20220002688A (ko) 크로마 블록의 크기를 제한하는 영상 부호화/복호화 방법, 장치 및 비트스트림을 전송하는 방법
ES3057180T3 (en) Image encoding/decoding method and apparatus for performing prediction on basis of reconfigured prediction mode type of leaf node, and bitstream transmission method
KR102634644B1 (ko) 양방향 예측을 수행하는 영상 부호화/복호화 방법, 장치 및 비트스트림을 전송하는 방법