ES3055707T3 - Image decoder and image decoding method - Google Patents

Image decoder and image decoding method

Info

Publication number
ES3055707T3
ES3055707T3 ES18848245T ES18848245T ES3055707T3 ES 3055707 T3 ES3055707 T3 ES 3055707T3 ES 18848245 T ES18848245 T ES 18848245T ES 18848245 T ES18848245 T ES 18848245T ES 3055707 T3 ES3055707 T3 ES 3055707T3
Authority
ES
Spain
Prior art keywords
partition
prediction
motion vector
block
image
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
ES18848245T
Other languages
English (en)
Inventor
Kiyofumi Abe
Takahiro Nishi
Tadamasa Toma
Ryuichi KANOH
Chong Soon Lim
Ru Ling Liao
hai wei Sun
Sughosh Pavan SHASHIDHAR
Han Boon Teo
jing ya Li
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.)
Panasonic Intellectual Property Corp of America
Original Assignee
Panasonic Intellectual Property Corp of America
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 Panasonic Intellectual Property Corp of America filed Critical Panasonic Intellectual Property Corp of America
Application granted granted Critical
Publication of ES3055707T3 publication Critical patent/ES3055707T3/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/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/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/117Filters, e.g. for pre-processing or post-processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/182Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a pixel
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/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/537Motion estimation other than block-based
    • 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/56Motion estimation with initialisation of the vector search, e.g. estimating a good candidate to initiate a search
    • 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/587Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal sub-sampling or interpolation, e.g. decimation or subsequent interpolation of pictures in a video sequence
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • H04N19/86Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving reduction of coding artifacts, e.g. of blockiness
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Apparatus For Radiation Diagnosis (AREA)
  • Closed-Circuit Television Systems (AREA)

Abstract

Se proporciona un codificador de imágenes, que incluye circuitos y una memoria acoplada a ellos. El circuito, en funcionamiento, realiza las siguientes funciones: dividir un bloque de imagen en varias particiones, incluyendo una primera partición con forma no rectangular (p. ej., triangular) y una segunda partición; predecir un primer vector de movimiento para la primera partición y un segundo vector de movimiento para la segunda partición; y codificar la primera partición utilizando el primer vector de movimiento y la segunda partición utilizando el segundo vector de movimiento. (Traducción automática con Google Translate, sin valor legal)

Description

[0001] DESCRIPCIÓN
[0002] Decodificador de imagen y procedimiento de decodificación de imagen
[0003] Esta divulgación se refiere a la codificación de vídeo, y en particular a sistemas de codificación y decodificación de vídeo, componentes y procedimientos para realizar una función de predicción inter para construir un bloque actual basado en un fotograma de referencia o una función de predicción intra para construir un bloque actual basado en un bloque de referencia codificado/decodificado en un fotograma actual. Un ejemplo de codificación de vídeo usando predicción inter se encuentra en US 2013/0266070 A1. Además, un ejemplo de cómo dividir un bloque de imagen en subparticiones se puede encontrar en ÒSCAR DIVORRA ET AL, “Geometry-adaptive Block Partioning”, 32. VCEG MEETING; 80. MPEG MEETING; 23-4-2007 - 27-4-2007; SAN JOSE;(VÍDEO CODING EXPERTS GROUP OF ITU-T SG.16), (20070419), no. VCEG-AF10.
[0004] Con el avance en la tecnología de codificación de vídeo, desde H.261 y MPEG-1 hasta H.264/AVC (Codificación Avanzada de Vídeo), MPEG-LA, H.265/HEVC (codificación de vídeo de alta eficiencia) y H.266/VVC (Códec de vídeo versátil), sigue existiendo una necesidad constante de proporcionar mejoras y optimizaciones a la tecnología de codificación de vídeo para procesar una cantidad cada vez mayor de datos de vídeo digital en diversas aplicaciones. Esta divulgación se refiere a avances, mejoras y optimizaciones adicionales en la codificación de vídeo, en particular, en relación con una función de predicción inter, o una función de predicción intra, dividiendo un bloque de imagen en una pluralidad de particiones, incluyendo al menos una primera partición con forma no rectangular (por ejemplo, un triángulo) y una segunda partición.
[0005] Esto se logra mediante las características de las reivindicaciones independientes.
[0006] Algunas implementaciones de las realizaciones de la presente divulgación pueden mejorar la eficiencia de la codificación, pueden ser simplemente un proceso de codificación/decodificación, pueden acelerar la velocidad de un proceso de codificación/decodificación, pueden seleccionar eficientemente los componentes/operaciones apropiados usados en la codificación y decodificación como filtro apropiado, tamaño de bloque, vector de movimiento, fotograma de referencia, bloque de referencia, etc.
[0007] Beneficios y ventajas adicionales de las realizaciones divulgadas se harán evidentes a partir de la especificación y los dibujos. Los beneficios y/o ventajas pueden obtenerse individualmente mediante las diversas realizaciones y características de la especificación y los dibujos, no todos los cuales deben proporcionarse para obtener uno o más de dichos beneficios y/o ventajas.
[0008] Cabe señalar que las realizaciones generales o específicas pueden implementarse como un sistema, un procedimiento, un circuito integrado, un programa informático, un medio de almacenamiento o cualquier combinación selectiva de ambos.
[0009] [fig.1]La FIG.1 es un diagrama de bloques que ilustra una configuración funcional de un codificador de acuerdo con una realización.
[0010] [fig.2]La FIG.2 ilustra un ejemplo de división de bloques.
[0011] [fig.3]La FIG.3 es una tabla que indica funciones base de transformadas de diversos tipos de transformadas. [fig.4A]La FIG.4A ilustra un ejemplo de forma de filtro utilizada en ALF (filtro de bucle adaptativo).
[0012] [fig.4B]La FIG.4B ilustra otro ejemplo de una forma de filtro utilizada en ALF.
[0013] [fig.4C]La FIG.4C ilustra otro ejemplo de una forma de filtro utilizada en ALF.
[0014] [fig.5A]La FIG.5A ilustra 67 modos de predicción intra utilizados en un ejemplo de predicción intra.
[0015] [fig.5B]La FIG.5B es un diagrama de flujo que ilustra un ejemplo de un proceso de corrección de imagen predictiva realizado en el procesamiento OBMC (compensación de movimiento por bloques superpuestos).
[0016] [fig.5C]La FIG. 5C es un diagrama conceptual que ilustra un ejemplo de un proceso de corrección de imagen predictiva realizado en el procesamiento OBMC.
[0017] [fig.5D]La FIG.5D es un diagrama de flujo que ilustra un ejemplo de procesamiento FRUC (conversión ascendente de la frecuencia de trama).
[0018] [fig.6]La FIG.6 ilustra un ejemplo de emparejamiento de patrones (emparejamiento bilateral) entre dos bloques a lo largo de una trayectoria de movimiento.
[0019] [fig.7]La FIG.7 ilustra un ejemplo de emparejamiento de patrones (emparejamiento de plantillas) entre una plantilla en el fotograma actual y un bloque en un fotograma de referencia.
[0020] [fig.8]La FIG.8 ilustra un modelo que asume un movimiento lineal uniforme.
[0021] [fig.9A]La FIG. 9A ilustra un ejemplo de derivación de un vector de movimiento de cada subbloque basado en vectores de movimiento de bloques adyacentes.
[0022] [fig.9B]La FIG.9B ilustra un ejemplo de un proceso para derivar un vector de movimiento en modo de fusión. [fig.9C]La FIG. 9C es un diagrama conceptual que ilustra un ejemplo de procesamiento DMVR (actualización dinámica por vectores de movimiento).
[0023] [fig.9D]La FIG. 9D ilustra un ejemplo de un procedimiento de generación de imágenes predictivas utilizando un proceso de corrección de luminancia realizado mediante procesamiento LIC (compensación local de iluminación).
[0024] [fig.10]La FIG.10 es un diagrama de bloques que ilustra una configuración funcional del decodificador de acuerdo con una realización.
[0025] [fig.11]La FIG.11 es un diagrama de flujo que ilustra un flujo general de proceso de dividir un bloque de imagen en una pluralidad de particiones, incluyendo al menos una primera partición con forma no rectangular (por ejemplo, un triángulo) y una segunda partición, y realizar un procesamiento adicional de acuerdo con una realización. [fig.12]La FIG.12 ilustra dos procedimientos ejemplares para dividir un bloque de imagen en una primera partición que tiene una forma no rectangular (por ejemplo, un triángulo) y una segunda partición (que también tiene una forma no rectangular en los ejemplos ilustrados).
[0026] [fig.13]La FIG. 13 ilustra un ejemplo de un proceso de suavizado de bordes que implica ponderar los primeros valores de píxeles de borde predichos basándose en la primera partición y los segundos valores de los píxeles de borde predichos en base a la segunda partición.
[0027] [fig.14]La FIG.14 ilustra tres ejemplos adicionales de un proceso de suavizado de bordes que implica ponderar los primeros valores de píxeles de borde predichos basándose en la primera partición y los segundos valores de los píxeles de borde predichos en base a la segunda partición.
[0028] [fig.15]La FIG.15 es una tabla de parámetros de muestra (“primeros valores de índice”) y conjuntos de información codificados respectivamente por los parámetros.
[0029] [fig.16]La FIG.16 es una tabla que ilustra la banalización de parámetros (valores de índice).
[0030] [fig.17]La FIG. 17 es un diagrama de flujo que ilustra un proceso de división de un bloque de imagen en una pluralidad de particiones, incluyendo una primera partición de forma no rectangular y una segunda partición. [fig.18]La FIG.18 ilustra ejemplos de división de un bloque de imagen en una pluralidad de particiones, incluyendo una primera partición de forma no rectangular, que es un triángulo en los ejemplos ilustrados, y una segunda partición.
[0031] [fig.19]La FIG. 19 ilustra más ejemplos de cómo dividir un bloque de imagen en una pluralidad de particiones, incluyendo una primera partición de forma no rectangular, que es un polígono con al menos cinco lados y ángulos en los ejemplos ilustrados, y una segunda partición.
[0032] [fig.20]La FIG.20 es un diagrama de flujo que ilustra un proceso de suavizado de bordes que implica ponderar los primeros valores de píxeles de borde predichos basándose en la primera partición y los segundos valores de los píxeles de borde predichos en base a la segunda partición.
[0033] [fig.21A]La FIG.21A ilustra un ejemplo de un proceso de suavizado de bordes en el que los píxeles de borde para los que se predicen los primeros valores a ponderar basándose en la primera partición y los segundos valores a ponderar se predicen basándose en la segunda partición.
[0034] [fig.21B]La FIG.21B ilustra un ejemplo de proceso de suavizado de bordes en el que los píxeles de borde para los que se predicen los primeros valores a ponderar basándose en la primera partición y los segundos valores a ponderar se predicen basándose en la segunda partición.
[0035] [fig.21C]La FIG.21C ilustra un ejemplo de proceso de suavizado de bordes en el que los píxeles de borde para los que se predicen los primeros valores a ponderar se predicen basándose en la primera partición y los segundos valores a ponderar basándose en la segunda partición.
[0036] [fig.21D]La FIG.21D ilustra un ejemplo de proceso de suavizado de bordes en el que los píxeles de borde para los que se predicen los primeros valores a ponderar se predicen basándose en la primera partición y los segundos valores a ponderar basándose en la segunda partición.
[0037] [fig.22]La FIG.22 es un diagrama de flujo que ilustra un procedimiento realizado en el lado del codificador para dividir un bloque de imagen en una pluralidad de particiones, incluyendo una primera partición de forma no rectangular y una segunda partición, basada en un parámetro de partición indicativo de la división, y escribir uno o más parámetros, incluido el parámetro de partición, en un flujo de bits en la codificación de entropía.
[0038] [fig.23]La FIG.23 es un diagrama de flujo que ilustra un procedimiento realizado en el lado del decodificador para analizar uno o más parámetros de un flujo de bits, que incluye un parámetro de partición indicativo de la división de un bloque de imagen en una pluralidad de particiones, incluyendo una primera partición de forma no rectangular y una segunda partición, y la división del bloque de imagen en la pluralidad de particiones basadas en el parámetro de partición, y decodificar la primera partición y la segunda partición.
[0039] [fig.24]La FIG.24 es una tabla de parámetros de partición de muestra (“primeros valores de índice”) que indican respectivamente la división de un bloque de imagen en una pluralidad de particiones, incluyendo una primera partición de forma no rectangular y una segunda partición, y conjuntos de información que pueden codificarse conjuntamente por los parámetros de la partición, respectivamente.
[0040] [fig.25]La FIG.25 es una tabla de combinaciones de ejemplo de un primer parámetro y un segundo parámetro, uno de los cuales es un parámetro de partición indicativo de la división de un bloque de imagen en una pluralidad de particiones, incluyendo una primera partición de forma no rectangular y una segunda partición.
[0041] [fig.26]La FIG.26 ilustra una configuración general de un sistema de suministro de contenido para implementar un servicio de distribución de contenido.
[0042] [fig.27]La FIG.27 ilustra un ejemplo de una estructura de codificación en codificación escalable.
[0043] [fig.28]La FIG.28 ilustra un ejemplo de una estructura de codificación en codificación escalable.
[0044] [fig.29]La FIG.29 ilustra un ejemplo de pantalla de visualización de una página web.
[0045] [fig.30]La FIG.30 ilustra un ejemplo de pantalla de visualización de una página web.
[0046] [fig.31]La FIG.31 ilustra un ejemplo de un teléfono inteligente.
[0047] [fig.32]La FIG.32 es un diagrama de bloques que ilustra un ejemplo de configuración de un teléfono inteligente. De acuerdo con un aspecto, se proporciona un decodificador de imagen tal y como se define en las reivindicaciones adjuntas.
[0048] En los dibujos, números de referencia idénticos identifican elementos similares. Los tamaños y posiciones relativas de los elementos en los dibujos no se dibujan necesariamente a escala.
[0049] A continuación, se describirán la(s) realización(es) con referencia a los dibujos. Cabe señalar que la(s) realización(es) descrita(s) a continuación muestran cada una un ejemplo general o específico. Los valores numéricos, formas, materiales, componentes, la disposición y conexión de los componentes, las etapas, la relación y el orden de las etapas, etc., indicados en la(s) siguiente(s) realización(es) son simples ejemplos y no pretenden limitar el alcance de las reivindicaciones. Por lo tanto, aquellos componentes divulgados en la(s) siguiente(s) realización(es) pero no citados en ninguna de las reivindicaciones independientes que definen los conceptos inventivos más amplios pueden entenderse como componentes opcionales.
[0050] A continuación se describirán las realizaciones de un codificador y un decodificador. Las realizaciones son ejemplos de codificador y decodificador a los que son aplicables los procesos y/o configuraciones presentados en la descripción de aspectos de la presente divulgación. Los procesos y/o configuraciones también pueden implementarse en un codificador y un decodificador diferentes a los que corresponden a las realizaciones. Por ejemplo, respecto a los procesos y/o configuraciones aplicadas a las realizaciones, se puede implementar cualquiera de lo siguiente:
[0051] (1) Cualquiera de los componentes del codificador o del decodificador, de acuerdo con las realizaciones presentadas en la descripción de aspectos de la presente divulgación, puede ser sustituido o combinado con otro componente presentado en cualquier parte de la descripción de aspectos de la presente divulgación.
[0052] (2) En el codificador o decodificador de acuerdo con las realizaciones, se pueden realizar cambios discrecionales en funciones o procesos realizados por uno o más componentes del codificador o decodificador, como la adición, sustitución, eliminación, etc., de las funciones o procesos. Por ejemplo, cualquier función o proceso puede ser sustituido o combinado con otra función o proceso presentado en cualquier parte de la descripción de aspectos de la presente divulgación.
[0053] (3) En el procedimiento implementado por el codificador o el decodificador de acuerdo con las realizaciones, se pueden realizar cambios discrecionales como la adición, sustitución y eliminación de uno o más de los procesos incluidos en el procedimiento. Por ejemplo, cualquier proceso del procedimiento puede ser sustituido o combinado con otro proceso presentado en cualquier parte de la descripción de aspectos de la presente divulgación.
[0054] (4) Uno o más componentes incluidos en el codificador o el decodificador de acuerdo con las realizaciones pueden combinarse con un componente presentado en cualquier parte de la descripción de aspectos de la presente divulgación, pueden combinarse con un componente que incluye una o más funciones presentadas en cualquier parte de la descripción de aspectos de la presente divulgación, y pueden combinarse con un componente que implemente uno o más procesos implementados por un componente presentado en la descripción de aspectos de la presente divulgación.
[0055] (5) Un componente que incluya una o más funciones del codificador o del decodificador de acuerdo con las realizaciones, o un componente que implemente uno o más procesos del codificador o del decodificador de acuerdo con las realizaciones, puede combinarse o sustituirse por un componente presentado en cualquier parte de la descripción de aspectos de la presente divulgación, con un componente que incluye una o más funciones presentadas en cualquier parte de la descripción de aspectos de la presente divulgación, o con un componente que implementa uno o más procesos presentados en cualquier parte de la descripción de aspectos de la presente divulgación.
[0056] (6) En el procedimiento implementado por el codificador o el decodificador de acuerdo con las realizaciones, cualquiera de los procesos incluidos en el procedimiento puede ser sustituido o combinado con un proceso presentado en cualquier parte de la descripción de aspectos de la presente divulgación o con cualquier proceso correspondiente o equivalente.
[0057] (7) Uno o más procesos incluidos en el procedimiento implementado por el codificador o el decodificador de acuerdo con las realizaciones pueden combinarse con un proceso presentado en cualquier parte de la descripción de aspectos de la presente divulgación.
[0058] (8) La implementación de los procesos y/o configuraciones presentadas en la descripción de aspectos de la presente divulgación no se limita al codificador ni al decodificador de acuerdo con las realizaciones. Por ejemplo, los procesos y/o configuraciones pueden implementarse en un dispositivo utilizado para un propósito diferente al codificador de fotograma en movimiento o al decodificador de fotograma en movimiento revelado en las realizaciones.
[0059] Codificador
[0060] Primero, se describirá el codificador de acuerdo con una realización. La FIG.1 es un diagrama de bloques que ilustra una configuración funcional del codificador 100 de acuerdo con la realizaciones. El codificador 100 es un codificador de fotograma en movimiento que codifica un fotograma en movimiento bloque por bloque.
[0061] Como se ilustra en la FIG.1, el codificador 100 es un dispositivo que codifica un fotograma bloque por bloque, e incluye el divisor 102, el sustractor 104, el transformador 106, el cuantizador 108, el codificador de entropía 110, el cuantizador inverso 112, el transformador inverso 114, el sumador 116, la memoria de bloques 118, el filtro de bucle 120, la memoria de tramas 122, el predictor intra 124, el predictor inter 126 y el controlador de predicción 128.
[0062] El codificador 100 se realiza, por ejemplo, como un procesador y memoria genéricos. En este caso, cuando un programa de software almacenado en la memoria es ejecutado por el procesador, e procesador funciona como divisor 102, sustractor 104, transformador 106, cuantizador 108, codificador de entropía 110, cuantizador inverso 112, transformador inverso 114, sumador 116, filtro de bucle 120, predictor intra 124, predictor inter 126 y controlador de predicción 128. Alternativamente, el codificador 100 puede realizarse como uno o más circuitos electrónicos dedicados correspondientes al divisor 102, sustractor 104, transformador 106, cuantizador 108, codificador de entropía 110, cuantizador inverso 112, transformador inverso 114, sumador 116, filtro de bucle 120, predictor intra 124, predictor inter 126 y controlador de predicción 128.
[0063] A partir de ahora, cada componente incluido en el codificador 100 será descrito.
[0064] Divisor
[0065] El divisor 102 divide cada fotograma incluido en un fotograma en movimiento introducida en bloques, y envía cada bloque al sustractor 104. Por ejemplo, el divisor 102 primero divide un fotograma en bloques de tamaño fijo (por ejemplo, 128×128). El bloque de tamaño fijo también puede denominarse unidad de árbol codificante (CTU). El divisor 102 divide entonces cada bloque de tamaño fijo en bloques de tamaños variables (por ejemplo, 64×64 o menores) basados, por ejemplo, en quadtree recursivo y/o división binaria de bloques en árbol. El bloque de tamaño variable también puede denominarse unidad codificadora (CU), unidad de predicción (PU) o unidad de transformada (TU). En diversas implementaciones puede no ser necesario diferenciar entre CU, PU y TU; todos o algunos de los bloques de un fotograma pueden procesarse por CU, PU o TU.
[0066] La FIG.2 ilustra un ejemplo de división de bloques de acuerdo con una realización. En la FIG. 2, las líneas sólidas representan los bordes de bloques de bloques divididos por división de bloques en quadtree, y las líneas discontinuas representan los bordes de bloques divididos por división binaria de bloques en árbol.
[0067] Aquí, el bloque 10 es un bloque cuadrado de 128×128 píxeles (bloque 128×128). Este bloque 128×12810 se divide primero en cuatro bloques cuadrados de 64×64 (división de bloques en quadtree).
[0068] El bloque superior izquierdo 64×64 se divide verticalmente en dos bloques rectangulares 32×64, y el bloque izquierdo 32×64 se divide verticalmente en dos bloques rectangulares 16×64 (división binaria de bloques en árbol). Como resultado, el bloque 64×64 superior izquierdo se divide en dos bloques 16×6411 y 12 y uno 32×64 bloque 13.
[0069] El bloque 64×64 en la parte superior derecha está dividido horizontalmente en dos bloques rectangulares 64×3214 y 15 (división binaria de bloques en árbol).
[0070] El bloque inferior izquierdo 64×64 se divide primero en cuatro bloques cuadrados 32×32 (división de bloques en quadtree). El bloque superior izquierdo y el bloque inferior derecho entre los cuatro bloques 32×32 están aún más divididos. El bloque superior izquierdo 32×32 está dividido verticalmente en dos bloques rectangulares de 16×32, y el bloque derecho de 16×32 se divide horizontalmente en dos bloques de 16×16 (división binaria de bloques en árbol). El bloque inferior derecho 32×32 está dividido horizontalmente en dos bloques 32×16 (división binaria de bloques en árbol). Como resultado, el bloque inferior izquierdo 64×64 se divide en bloque 16×3216, dos bloques 16×1617 y 18, dos bloques 32×3219 y 20, y dos bloques 32×1621 y 22.
[0071] El bloque 64×64 inferior derecho 23 no está dividido.
[0072] Como se ha descrito anteriormente, en la FIG.2, el bloque 10 se divide en 13 bloques de tamaño variable 11 a 23 basados en quadtree recursivo y división binaria de bloques en árbol. Este tipo de división también se conoce como división quadtree más árbol binario (QTBT).
[0073] Aunque en la FIG.2 un bloque se divide en cuatro o dos bloques (quadtree o división binaria de bloques en árbol), la división no se limita a estos ejemplos. Por ejemplo, un bloque puede dividirse en tres bloques (división ternaria de bloques). La división que incluye este tipo de división ternaria por bloques también se denomina división multitipo de árbol (MBT).
[0074] Sustractor
[0075] El sustractor 104 resta una señal de predicción (muestra de predicción, introducida desde el controlador de predicción 128, que se describirá más abajo) de una señal original (muestra original) por bloque dividido e introducido desde el divisor 102. En otras palabras, el sustractor 104 calcula los errores de predicción (también denominados “residuales”) de un bloque a codificar (en adelante denominado “bloque actual”). El sustractor 104 envía entonces los errores de predicción calculados (residuales) al transformador 106.
[0076] La señal original es una señal de entrada en el codificador 100, y es una señal que representa una imagen para cada fotograma incluido en un fotograma en movimiento (por ejemplo, una señal de luminancia y dos señales de crominancia). A partir de ahora, una señal que representa una imagen también se denomina muestra.
[0077] Transformador
[0078] El transformador 106 transforma los errores de predicción en el dominio espacial en coeficientes de transformada en el dominio de la frecuencia, y envía los coeficientes de transformada al cuantizador 108. Más concretamente, el transformador 106 aplica, por ejemplo, una transformada discreta del coseno (DCT) o una transformada discreta del seno (DST) predefinida a errores de predicción en el dominio espacial.
[0079] Cabe señalar que el transformador 106 puede seleccionar adaptativamente un tipo de transformada entre una pluralidad de tipos de transformadas, y transformar errores de predicción en coeficientes de transformada utilizando una función base de transformada correspondiente al tipo de transformada seleccionado. Este tipo de transformada también se conoce como transformada explícita de múltiples núcleos (EMT) o transformada adaptativa múltiple (AMT). Los tipos de transformada incluyen, por ejemplo, DCT-II, DCT-V, DCT-VIII, DST-I y DST-VII. La FIG.3 es un gráfico que indica las funciones base de transformada para cada tipo de transformada. En la FIG.3, N indica el número de píxeles de entrada. Por ejemplo, la selección de un tipo de transformada entre la pluralidad de tipos de transformada puede depender del tipo de predicción (predicción intra y predicción inter) así como también del modo de predicción intra.
[0080] La información que indica si aplicar EMT o AMT (referida, por ejemplo, como una bandera EMT o una bandera AMT) y la información que indica el tipo de transformada seleccionado suele señalarse a nivel de CU. Cabe señalar que la señalización de dicha información no tiene por qué realizarse a nivel de CU, y puede realizarse a otro nivel (por ejemplo, a nivel de secuencia de bits, a nivel de fotograma, a nivel de rebanada, a nivel de mosaico o a nivel de CTU). Además, el transformador 106 puede aplicar una transformada secundaria a los coeficientes de la transformada (resultado de la transformada). Dicha transformada secundaria también se denomina transformada secundaria adaptativa (AST) o transformada secundaria no separable (NSST). Por ejemplo, el transformador 106 aplica una transformada secundaria a cada subbloque (por ejemplo, cada subbloque 4×4) incluido en el bloque de los coeficientes de transformada correspondientes a los errores de predicción intra. La información que indica si aplicar NSST y la información relacionada con la matriz de transformada utilizada en NSST suelen señalizarse a nivel de CU. Cabe señalar que la señalización de dicha información no tiene por qué realizarse a nivel de CU, y puede realizarse a otro nivel (por ejemplo, a nivel de secuencia, a nivel de fotograma, a nivel de rebanada, a nivel de mosaico o a nivel de CTU).
[0081] En el transformador 106 se puede aplicar una transformada separada o una no separable. Una transformada separada es un procedimiento en el que una transformada se realiza varias veces realizando por separado una transformada para cada dirección de acuerdo con el número de dimensiones introducidas. Una transformada no separable es un procedimiento para realizar una transformada colectiva en la que dos o más dimensiones en una entrada multidimensional se consideran colectivamente como una sola dimensión.
[0082] En un ejemplo de una transformada no separable, cuando la entrada es un bloque 4×4, el bloque 4×4 se considera un solo arreglo que incluye 16 componentes, y la transformada aplica una matriz de transformada 16×16 al arreglo. En otro ejemplo de una transformada no separable, después de que el bloque de entrada 4×4 se considera un solo arreglo que incluye 16 componentes, se puede aplicar una transformada que realice una pluralidad de rotaciones de Givens (por ejemplo, una Transformada de Hipercubo-Givens) sobre el arreglo.
[0083] Cuantizador
[0084] El cuantizador 108 cuantiza los coeficientes de transformada enviados del transformador 106. Más concretamente, el cuantizador 108 escanea, en un orden de escaneo predeterminado, los coeficientes de transformada del bloque actual y cuantiza los coeficientes de transformada escaneados basándose en parámetros de cuantización (QP) correspondientes a los coeficientes de transformada. El cuantizador 108 entonces envía los coeficientes de transformada cuantizados (en adelante denominados coeficientes cuantizados) del bloque actual al codificador de entropía 110 y al cuantizador inverso 112.
[0085] Un orden de escaneo predeterminado es un orden para coeficientes de transformada de cuantización/cuantización inversa. Por ejemplo, un orden de escaneo predeterminado se define como orden ascendente de frecuencia (de baja a alta frecuencia) o de orden descendente de frecuencia (de alta a baja frecuencia).
[0086] Un parámetro de cuantización (QP) es un parámetro que define el tamaño de una etapa de cuantización (ancho de cuantización). Por ejemplo, si el valor del parámetro de cuantización aumenta, el tamaño de la etapa de cuantización también aumenta. En otras palabras, si el valor del parámetro de cuantización aumenta, el error de cuantización aumenta.
[0087] Codificador de Entropía
[0088] El codificador de entropía 110 genera una señal codificada (flujo de bits codificado) basada en los coeficientes cuantizados, que se introducen desde el cuantizador 108. Más concretamente, por ejemplo, el codificador de entropía 110 binarisa coeficientes cuantizados y la aritmética codifica la señal binaria, para enviar un flujo de bits comprimido o una secuencia.
[0089] Cuantizador inverso
[0090] El cuantizador inverso 112 cuantiza inversamente los coeficientes cuantizados, que se introducen desde el cuantizador 108. Más concretamente, el cuantizador inverso 112 cuantiza de manera inversa, en un orden de escaneo predeterminado, coeficientes cuantizados del bloque actual. El cuantizador inverso 112 entonces envía los coeficientes de transformada cuantizados inversos del bloque actual al transformador inverso 114.
[0091] Transformador Inverso
[0092] El transformador inverso 114 restaura los errores de predicción (residuales) transformando inversamente los coeficientes de transformada, que se introducen desde el cuantizador inverso 112. Más concretamente, el transformador inverso 114 restaura los errores de predicción del bloque actual aplicando una transformada inversa correspondiente a la transformada aplicada por el transformador 106 sobre los coeficientes de transformada. El transformador inverso 114 envía entonces los errores de predicción restaurados al sumador 116.
[0093] Cabe señalar que, como normalmente se pierde información en la cuantización, los errores de predicción restaurados no coinciden con los errores de predicción calculados por el sustractor 104. En otras palabras, los errores de predicción restaurados suelen incluir errores de cuantización.
[0094] Sumador
[0095] El sumador 116 reconstruye el bloque actual sumando los errores de predicción, que se introducen desde el transformador inverso 114, y las muestras de predicción, que se introducen desde el controlador de predicción 128. El sumador 116 entonces envía el bloque reconstruido a la memoria de bloque 118 y al filtro de bucle 120. Un bloque reconstruido también se denomina bloque local decodificado.
[0096] Memoria de bloque
[0097] La memoria de bloques 118 es almacenamiento para almacenar bloques en un fotograma que se va a codificar (denominado “fotograma actual”) para referencia en predicciones intra, por ejemplo. Más concretamente, la memoria de bloques 118 almacena bloques reconstruidos que se envían desde el sumador 116.
[0098] Filtro de bucle
[0099] El filtro de bucle 120 aplica un filtro de bucle a bloques reconstruidos por el sumador 116, y envía los bloques reconstruidos filtrados a la memoria de tramas 122. Un filtro de bucle es un filtro utilizado en un bucle de codificación (filtro en bucle), e incluye, por ejemplo, un filtro de desbloqueo (DF), un desplazamiento adaptativo de muestra (SAO) y un filtro de bucle adaptativo (ALF).
[0100] En ALF, se aplica un filtro de error de cuadrados mínimos para eliminar artefactos de compresión. Por ejemplo, se selecciona un filtro entre una pluralidad de filtros para cada subbloque 2×2 en el bloque actual basándose en la dirección y actividad de los gradientes locales, y se aplica.
[0101] Más específicamente, primero, cada subbloque (por ejemplo, cada subbloque 2×2) se categoriza en una de una pluralidad de clases (por ejemplo, 15 o 25 clases). La clasificación del subbloque se basa en la direccionalidad y actividad del gradiente. Por ejemplo, el índice de clasificación C se deriva basándose en la direccionalidad del gradiente D (por ejemplo, de 0 a 2 o de 0 a 4) y de la actividad del gradiente A (por ejemplo, de 0 a 4) (por ejemplo, C = 5D A). Luego, basándose en el índice de clasificación C, cada subbloque se categoriza en una de una pluralidad de clases.
[0102] Por ejemplo, la direccionalidad del gradiente D se calcula comparando gradientes de una pluralidad de direcciones (por ejemplo, la horizontal, la vertical y las dos direcciones diagonales). Además, por ejemplo, la actividad de gradiente A se calcula sumando gradientes de una pluralidad de direcciones y cuantizando la suma.
[0103] El filtro que se va a usar para cada subbloque se determina entre la pluralidad de filtros basándose en el resultado de dicha categorización.
[0104] La forma de filtro que se va a usar en ALF es, por ejemplo, una forma de filtro simétrica circular. Las FIG.4A, 4B y 4C ilustran ejemplos de formas de filtros utilizadas en ALF. La FIG.4A ilustra un filtro en forma de diamante 5×5, la FIG.
[0105] 4B un filtro en forma de diamante 7×7, y la FIG. 4C ilustra un filtro en forma de diamante 9×9. La información que indica la forma del filtro suele señalizarse a nivel de fotograma. Cabe señalar que la señalización de información que indica la forma del filtro no necesita realizarse a nivel de fotograma, y puede realizarse a otro nivel (por ejemplo, a nivel de secuencia, nivel de rebanada, nivel de mosaico, nivel CTU o nivel de CU).
[0106] La activación o desactivación de ALF puede determinarse a nivel de fotograma o a nivel de CU. Por ejemplo, en el caso de la luminancia, la decisión de aplicar o no ALF puede hacerse a nivel de CU, y para la crominancia, la decisión de aplicar o no ALF puede hacerse a nivel de fotograma. La información que indica si el ALF está activado o desactivado suele señalizarse a nivel de fotograma o a nivel de CU. Cabe señalar que la señalización de la información que indica si ALF está activado o desactivado no tiene por qué realizarse a nivel de fotograma o de CU, y puede realizarse a otro nivel (por ejemplo, a nivel de secuencia, a nivel de rebanada, a nivel de mosaico o a nivel de CTU). Los coeficientes establecidos para la pluralidad de filtros seleccionables (por ejemplo, 15 o 25 filtros) suelen señalizarse a nivel de fotograma. Cabe señalar que la señalización del conjunto de coeficientes no tiene por qué realizarse a nivel de fotograma, y puede realizarse a otro nivel (por ejemplo, a nivel de secuencia, a nivel de rebanada, a nivel de mosaico, a nivel de CTU, a nivel de CU o a nivel de subbloque).
[0107] Memoria de trama
[0108] La memoria de trama 122 es almacenamiento para almacenar fotogramas de referencia usadas, por ejemplo, en la predicción inter, y también se denomina búfer de trama. Más concretamente, la memoria de trama 122 almacena bloques reconstruidos filtrados por el filtro de bucle 120.
[0109] Predictor intra
[0110] El predictor intra 124 genera una señal de predicción (señal de predicción intra) al predecir intra el bloque actual con referencia a un bloque o bloques que están en el fotograma actual almacenado en la memoria de bloques 118 (también conocida como predicción de trama intra). Más concretamente, el predictor intra 124 genera una señal de predicción intra mediante predicción intra con referencia a muestras (por ejemplo, valores de luminancia y/o crominancia) de un bloque o bloques adyacentes al bloque actual, y luego envía la señal de predicción intra al controlador de predicción 128.
[0111] Por ejemplo, el predictor intra 124 realiza predicción intra utilizando un modo entre una pluralidad de modos de predicción intra predefinidos. Los modos de predicción intra suelen incluir uno o más modos de predicción no direccionales y una pluralidad de modos de predicción direccional.
[0112] Los uno o más modos de predicción no direccionales incluyen, por ejemplo, el modo de predicción planar y el modo de predicción DC definidos en el estándar H.265/HEVC.
[0113] La pluralidad de modos de predicción direccional incluye, por ejemplo, los 33 modos de predicción direccional definidos en el estándar H.265/HEVC. Cabe señalar que la pluralidad de modos de predicción direccional puede incluir además 32 modos de predicción direccional además de los 33 modos de predicción direccional (para un total de 65 modos de predicción direccional).
[0114] La FIG.5A ilustra un total de 67 modos de predicción intra utilizados en la predicción intra (dos modos de predicción no direccional y 65 modos de predicción direccional). Las flechas sólidas representan las 33 direcciones definidas en la norma H.265/HEVC, y las flechas discontinuas representan las 32 direcciones adicionales. (Los dos modos de predicción “no direccionales” no se ilustran en la FIG.5A.)
[0115] En diversas implementaciones, un bloque de luminancia puede ser referenciado en la predicción intra del bloque de crominancia. Es decir, un componente de crominancia del bloque actual puede predecirse basándose en un componente de luminancia del bloque actual. Esta predicción intra también se conoce como predicción por modelo lineal de componente cruzado (CCLM). El modo de predicción intra del bloque de crominancia que hace referencia a un bloque de luminancia (denominado, por ejemplo, modo CCLM) puede añadirse como uno de los modos de predicción intra del bloque de crominancia.
[0116] El predictor intra 124 puede corregir los valores de píxeles posteriores a la predicción intra basándose en gradientes de referencia horizontales/verticales de píxeles. La predicción intra acompañada de este tipo de corrección también se conoce como combinación de predicción intra dependiente de la posición (PDPC). La información que indica si aplicar o no PDPC (denominada, por ejemplo, bandera PDPC) suele ser señalizada a nivel de CU. Cabe señalar que la señalización de esta información no tiene por qué realizarse a nivel de CU, y puede realizarse a otro nivel (por ejemplo, a nivel de secuencia, a nivel de fotograma, a nivel de rebanada, a nivel de mosaico o a nivel de CTU). Predictor inter
[0117] El predictor inter 126 genera una señal de predicción (señal de predicción inter) al predecir inter el bloque actual con referencia a un bloque o bloques en un fotograma de referencia, que es diferente del fotograma actual y se almacena en la memoria de trama 122 (también conocida como predicción de trama inter). La predicción inter se realiza por bloque actual o por subbloque actual (por ejemplo, por bloque 4×4) en el bloque actual. Por ejemplo, el predictor inter 126 realiza una estimación de movimiento en un fotograma de referencia para el bloque actual o el subbloque actual, para encontrar un bloque o subbloque de referencia en el fotograma de referencia que mejor coincida con el bloque o subbloque actual, y para obtener información de movimiento (por ejemplo, un vector de movimiento) que compense (o prediga) el movimiento o cambio del bloque o subbloque de referencia al bloque o subbloque actual. El predictor inter 126 realiza entonces la compensación del movimiento (o predicción del movimiento) basada en la información de movimiento, y genera una señal de predicción inter del bloque o subbloque actual basada en la información del movimiento. El predictor inter 126 envía entonces la señal de predicción inter generada al controlador de predicción 128.
[0118] La información de movimiento utilizada en la compensación de movimiento puede ser señalizada en diversas formas como la señal de predicción inter. Por ejemplo, un vector de movimiento puede ser señalizado. Como otro ejemplo, puede señalarse una diferencia entre un vector de movimiento y un predictor de vector de movimiento.
[0119] Cabe señalar que la señal de predicción inter puede generarse usando información de movimiento para un bloque adyacente además de la información de movimiento para el bloque actual obtenida de la estimación de movimiento. Más concretamente, la señal de predicción inter puede generarse por subbloque del bloque actual calculando una suma ponderada de una señal de predicción basada en la información de movimiento obtenida de la estimación del movimiento (en el fotograma de referencia) y una señal de predicción basada en la información de movimiento de un bloque adyacente (en el fotograma actual). Este predictor inter (compensación de movimiento) también se denomina compensación de movimiento por bloque superpuesto (OBMC).
[0120] En modo OBMC, la información que indica el tamaño del subbloque para OBMC (referido, por ejemplo, como tamaño de bloque OBMC) puede ser señalizada a nivel de secuencia. Además, la información que indique si aplicar o no el modo OBMC (denominada, por ejemplo, una bandera OBMC) puede ser señalizada a nivel de CU. Cabe señalar que la señalización de dicha información no tiene por qué realizarse a nivel de secuencia ni de CU, y puede realizarse a otro nivel (por ejemplo, a nivel de fotograma, a nivel de rebanada, a nivel de mosaico, CTU o a nivel de subbloque). A partir de ahora, el modo OBMC se describirá con más detalle. La FIG.5B es un diagrama de flujo y la FIG.5C es un diagrama conceptual que ilustra un proceso de corrección de imagen predictiva realizado mediante procesamiento OBMC.
[0121] En referencia a la FIG. 5C, primero, se obtiene una imagen de predicción (Pred) mediante compensación típica de movimiento usando un vector de movimiento (MV) asignado al bloque objetivo (actual). En la FIG.5C, una flecha “MV” apunta al fotograma de referencia, para indicar a qué se refiere el bloque actual en el fotograma actual y así obtener una imagen de predicción.
[0122] A continuación, se obtiene una imagen de predicción (Pred_L) aplicando (reutilizando) un vector de movimiento (MV_L), que ya se había derivado para el bloque izquierdo adyacente codificado, al bloque objetivo (actual), indicado por una flecha “MV_L” originada en el bloque actual y apuntando al fotograma de referencia para obtener la imagen de predicción Pred_L. Luego, se superponen las dos imágenes de predicción Pred y Pred_L para realizar una primera pasada de la corrección de la imagen de predicción, lo que en un aspecto tiene el efecto de mezclar el límite entre los bloques adyacentes.
[0123] De manera similar, se obtiene una imagen de predicción (Pred_U) aplicando (reutilizando) un vector de movimiento (MV_U), que ya se había derivado para el bloque superior adyacente codificado, al bloque objetivo (actual), como indica una flecha “MV_U” que se origina en el bloque actual y apunta al fotograma de referencia para obtener la imagen de predicción Pred_U. Luego, la imagen de predicción Pred_U se superpone con la imagen de predicción resultante de la primera pasada (es decir, Pred y Pred_L) para realizar una segunda reposición de la corrección de la imagen de predicción, lo que en un aspecto tiene el efecto de mezclar el límite entre los bloques adyacentes. El resultado de la segunda pasada es la imagen final de predicción para el bloque actual, con límites mezclados (suavizados) con sus bloques adyacentes.
[0124] Cabe señalar que el ejemplo anterior es de un procedimiento de corrección de dos pasadas usando los bloques adyacentes izquierdo y superior, pero el procedimiento puede ser un procedimiento de corrección de tres pasadas o pasada superior que también utiliza el bloque derecho y/o inferior adyacente.
[0125] Cabe señalar que la región sujeta a superposición puede ser la región completa del píxel del bloque y, alternativamente, puede ser una región de borde parcial del bloque.
[0126] Cabe señalar que aquí, el proceso de corrección de imagen de predicción de OBMC se describe como basado en un único fotograma de referencia para derivar una única imagen de predicción Pred, a la que se superponen imágenes de predicción adicionales Pred_L y Pred_U, pero el mismo proceso puede aplicarse a cada una de una pluralidad de fotogramas de referencia cuando la imagen de predicción se corrige basándose en la pluralidad de fotogramas de referencia. En tal caso, tras obtener una pluralidad de imágenes de predicción corregidas realizando la corrección de imagen de OBMC basada en la pluralidad de fotogramas de referencia, respectivamente, la pluralidad obtenida de imágenes de predicción corregidas se superpone aún más para obtener la imagen final de predicción.
[0127] Cabe señalar que, en OBMC, la unidad del bloque objetivo puede ser un bloque de predicción y, alternativamente, puede ser un subbloque obtenido al dividir aún más el bloque de predicción.
[0128] Un ejemplo de procedimiento para determinar si implementar el procesamiento OBMC es usar un obmc_flag, que es una señal que indica si implementar el procesamiento OBMC. Como ejemplo específico, el codificador puede determinar si el bloque objetivo pertenece a una región que incluye movimiento complicado. El codificador establece el obmc_flag en un valor de “1” cuando el bloque pertenece a una región que incluye movimiento complicado e implementa procesamiento OBMC durante la codificación, y establece el obmc_flag en un valor de “0” cuando el bloque no pertenece a una región que incluye movimiento de complicaciones y codifica el bloque sin implementar procesamiento OBMC. El decodificador conmuta entre implementar o no el procesamiento OBMC decodificando el obmc_flag escrito en el flujo (es decir, la secuencia comprimida) y realizando la decodificación de acuerdo con el valor de la bandera.
[0129] Cabe señalar que la información de movimiento puede derivarse en el lado del decodificador sin ser señalizada desde el lado del codificador. Por ejemplo, puede utilizarse un modo de fusión definido en la norma H.265/HEVC. Además, por ejemplo, la información de movimiento puede derivarse realizando una estimación del movimiento en el lado del decodificador. En este caso, el lado del decodificador puede realizar la estimación de movimiento sin usar los valores de píxeles del bloque actual.
[0130] Aquí se describirá un modo para realizar estimación de movimiento en el lado del decodificador. Un modo para realizar estimación de movimiento en el lado del decodificador también se denomina modo de derivación de vectores de movimiento por coincidencia de patrones (PMMVD) o modo de conversión ascendente de tasa de trama (FRUC). Un ejemplo de procesamiento FRUC se ilustra en la FIG.5D. Primero, se genera una lista de candidatos (una lista de candidatos puede ser una lista de fusión) de candidatos, cada uno incluyendo un vector de movimiento de predicción (MV), con referencia a los vectores de movimiento de bloques codificados que espacial o temporalmente son adyacentes del bloque actual. A continuación, se selecciona el mejor MV candidato entre la pluralidad de MV candidatos registrados en la lista de candidatos. Por ejemplo, se calculan los valores de evaluación de los MV candidatos incluidos en la lista de candidatos y se selecciona un MV candidato basándose en los valores de evaluación calculados.
[0131] A continuación, se deriva un vector de movimiento para el bloque actual a partir del vector de movimiento del candidato seleccionado. Más concretamente, por ejemplo, el vector de movimiento para el bloque actual se calcula como el vector de movimiento del candidato seleccionado (el mejor MV candidato), tal cual. Alternativamente, el vector de movimiento para el bloque actual puede derivarse mediante el emparejamiento de patrones realizada en las proximidades de una posición en un fotograma de referencia correspondiente al vector de movimiento del candidato seleccionado. En otras palabras, cuando se busca la cercanía del mejor MV candidato usando el emparejamiento de patrones en un fotograma de referencia y valores de evaluación, y se encuentra un MV con un mejor valor de evaluación, el MV candidato mejor puede actualizarse para que el MV tenga el mejor valor de evaluación, y el MV con mejor valor de evaluación pueda usarse como MV final para el bloque actual. También es aceptable una configuración en la que el procesamiento para actualizar el MV con un mejor valor de evaluación no esté implementado.
[0132] Los mismos procesos pueden realizarse en los casos en que el procesamiento se realiza en unidades de subbloques. Un valor de evaluación puede calcularse de varias maneras. Por ejemplo, una imagen reconstruida de una región en un fotograma de referencia correspondiente a un vector de movimiento se compara con una imagen reconstruida de una región predeterminada (que puede estar en otro fotograma de referencia o en un bloque adyacente en el fotograma actual, por ejemplo, como se describe más adelante), y se puede calcular y usar una diferencia en los valores de píxeles entre las dos imágenes reconstruidas y usarla como valor de evaluación del vector de movimiento. Cabe señalar que el valor de evaluación puede calcularse utilizando otra información además de la diferencia.
[0133] A continuación, se describe en detalle el emparejamiento de patrones. Primero, se selecciona un MV candidato incluido en una lista de candidatos (por ejemplo, una lista de fusión) como punto de partida para la búsqueda mediante emparejamiento de patrones. El emparejamiento de patrones utilizado es o bien el primer emparejamiento de patrones o el segundo emparejamiento de patrones. El primer emparejamiento de patrones y el segundo emparejamiento de patrones también se denominan emparejamiento bilateral y emparejamiento de plantillas, respectivamente.
[0134] En el primer emparejamiento de patrones, el emparejamiento de patrones se realiza entre dos bloques en dos fotogramas de referencia diferentes que siguen la trayectoria de movimiento del bloque actual. Por lo tanto, en el primer emparejamiento de patrones, para una región en un fotograma de referencia, se utiliza una región en otro fotograma de referencia que se ajusta a la trayectoria de movimiento del bloque actual como región predeterminada para el cálculo descrito anteriormente del valor de evaluación del candidato.
[0135] La FIG.6 ilustra un ejemplo de primer emparejamiento de patrón (emparejamiento bilateral) entre dos bloques en dos fotogramas de referencia a lo largo de una trayectoria de movimiento. Como se ilustra en la FIG. 6, en el primer emparejamiento de patrones, se derivan dos vectores de movimiento (MV0, MV1) encontrando el mejor emparejamiento entre los dos bloques en dos fotogramas de referencia diferentes (Ref0, Ref1) a lo largo de la trayectoria de movimiento del bloque actual (bloque Cur). Más concretamente, se puede obtener una diferencia entre (i) una imagen reconstruida en una posición especificada por un MV candidato en un primer fotograma de referencia codificado (Ref0), y (ii) una imagen reconstruida en una posición especificada por el MV candidato, que se escala simétricamente por intervalos de tiempo de visualización, en un segundo fotograma de referencia codificado (Ref1). Luego, la diferencia puede usarse para derivar un valor de evaluación para el bloque actual. Un MV candidato que tenga el mejor valor de evaluación entre una pluralidad de MV candidatos puede ser seleccionado como MV final. Bajo la suposición de trayectoria de movimiento continuo, los vectores de movimiento (MV0, MV1) que apuntan a los dos bloques de referencia son proporcionales a las distancias temporales (TD0, TD1) entre el fotograma actual (Cur Pic) y los dos fotogramas de referencia (Ref0, Ref1). Por ejemplo, cuando el fotograma actual está temporalmente entre los dos fotogramas de referencia y la distancia temporal entre el fotograma actual y los dos fotogramas de referencia es la misma, el primer emparejamiento de patrones deriva dos vectores de movimiento bidireccionales en espejo.
[0136] En el segunda emparejamiento de patrones (emparejamiento de plantillas), el emparejamiento de patrones se realiza entre una plantilla en el fotograma actual (bloques adyacentes al bloque actual en el fotograma actual; por ejemplo, los bloques adyacentes superior y/o izquierdo) y un bloque en un fotograma de referencia. Por lo tanto, en el segundo emparejamiento de patrones, se utiliza un bloque adyacente al bloque actual en el fotograma actual como región predeterminada para el cálculo descrito anteriormente del valor de evaluación candidato.
[0137] La FIG.7 ilustra un ejemplo de emparejamiento de patrones (emparejamiento de plantillas) entre una plantilla en el fotograma actual y un bloque en un fotograma de referencia. Como se ilustra en la FIG. 7, en el segundo emparejamiento de patrones, se deriva un vector de movimiento del bloque actual buscando en un fotograma de referencia (Ref0) encontrar un bloque que mejor empareje a bloque(s) adyacent(es) del bloque actual (bloque Cur) en el fotograma actual (Cur Pic). Más concretamente, se puede obtener una diferencia entre (i) una imagen reconstruida de una o ambas regiones superior e izquierda adyacentes codificadas respecto al bloque actual, y (ii) una imagen reconstruida de las mismas regiones respecto a una posición del bloque especificada por un MV candidato en un fotograma de referencia codificado (Ref0). Luego, la diferencia puede usarse para derivar un valor de evaluación para el bloque actual. Un MV candidato con el mejor valor de evaluación entre una pluralidad de MV candidatos puede ser seleccionado como el mejor MV candidato.
[0138] La información que indica si aplicar o no el modo FRUC (denominada, por ejemplo, bandera FRUC) puede ser señalizada a nivel de CU. Además, cuando se aplica el modo FRUC (por ejemplo, cuando la bandera FRUC está configurada como verdadera), la información que indica el procedimiento de emparejamiento aplicable al patrón (por ejemplo, el primer emparejamiento o el segundo emparejamiento de patrones) puede ser señalizado a nivel de CU. Cabe señalar que la señalización de dicha información no tiene por qué realizarse a nivel de CU, y puede realizarse a otro nivel (por ejemplo, a nivel de secuencia, a nivel de fotograma, a nivel de rebanada, a nivel de mosaico, a nivel de CTU o a nivel de subbloque).
[0139] A continuación, se describen procedimientos para derivar un vector de movimiento. Primero, se describe un modo para derivar un vector de movimiento basado en un modelo que asume movimiento lineal uniforme. Este modo también se denomina modo de flujo óptico bidireccional (BIO).
[0140] La FIG. 8 ilustra un modelo que asume un movimiento lineal uniforme. En la FIG. 8, (v<x>, v<y>) denota un vector de velocidad, y τ<0>y τ<1>denotan distancias temporales entre el fotograma actual (Cur Pic) y dos fotogramas de referencia (Ref<0>, Ref<1>), respectivamente. (MVx<0>, MVy<0>) denota un vector de movimiento correspondiente al fotograma de referencia Ref<0>, y (MVx<1>, MVy<1>) denota un vector de movimiento correspondiente al fotograma de referencia Ref<1>. Aquí, bajo la suposición de movimiento lineal uniforme exhibido por el vector de velocidad (v<x>, v<y>), (MVx<0>, MVy<0>) y (MVx<1>, MVy<1>) se representan como (v<x>τ<0>, v<y>τ<0>) y (-v<x>τ<1>, -v<y>τ<1>), respectivamente, y la siguiente ecuación de flujo óptico usando la Ecuación 2 a continuación.
[0141] [Matemáticas.1]
[0144]
[0146] Aquí, I<(k)>denota un valor de luminancia del fotograma de referencia k (k = 0, 1) después de compensación de movimiento. La ecuación de flujo óptico muestra que la suma de (i) la derivada temporal del valor de luminancia, (ii) el producto de la velocidad horizontal y el componente horizontal del gradiente espacial de un fotograma de referencia, y (iii) el producto de la velocidad vertical y el componente vertical del gradiente espacial de un fotograma de referencia, es igual a cero. Un vector de movimiento de cada bloque obtenido, por ejemplo, de una lista de fusión puede corregirse píxel a píxel basándose en una combinación de la ecuación de flujo óptico y la interpolación de Hermite.
[0147] Cabe señalar que un vector de movimiento puede derivarse en el lado del decodificador usando un procedimiento distinto a derivar un vector de movimiento basado en un modelo que asume un movimiento lineal uniforme. Por ejemplo, se puede derivar un vector de movimiento para cada subbloque basado en los vectores de movimiento de bloques adyacentes.
[0148] A continuación, se describe un modo en el que se deriva un vector de movimiento para cada subbloque basado en los vectores de movimiento de bloques adyacentes. Este modo también se conoce como modo de predicción de compensación de movimiento afín.
[0149] La FIG.9A ilustra un ejemplo de derivación de un vector de movimiento de cada subbloque basado en vectores de movimiento de bloques adyacentes. En la FIG. 9A, el bloque actual incluye 16 subbloques 4×4. Aquí, el vector de movimiento v<0>del punto de control de la esquina superior izquierda en el bloque actual se deriva a partir de los vectores de movimiento de subbloques adyacentes. De manera similar, el vector de movimiento v<1>del punto de control de la esquina superior derecha en el bloque actual se deriva a partir de los vectores de movimiento de bloques adyacentes. Luego, usando los dos vectores de movimiento v<0>y v<1>, se deriva el vector de movimiento (v<x>, v<y>) de cada subbloque del bloque actual usando la Ecuación 2 a continuación.
[0150] [Matemáticas.2]
[0153]
[0155] Aquí, x e y son las posiciones horizontal y vertical del subbloque, respectivamente, y w es un coeficiente ponderado predeterminado.
[0156] Un modo de predicción de compensación de movimiento afín puede incluir varios modos de diferentes procedimientos para derivar los vectores de movimiento de los puntos de control de la esquina superior izquierda y superior derecha. La información que indica un modo de predicción de compensación de movimiento afín (denominado, por ejemplo, bandera afín) puede ser señalizada a nivel de CU. Cabe señalar que la señalización de información que indica el modo de predicción de compensación de movimiento afín no tiene por qué realizarse a nivel de CU, y puede realizarse a otro nivel (por ejemplo, a nivel de secuencia, a nivel de fotograma, a nivel de rebanada, a nivel de mosaico, a nivel de CTU o a nivel de subbloque).
[0157] Controlador de predicciones
[0158] El controlador de predicción 128 selecciona bien la señal de predicción intra (enviada desde el predictor intra 124) o la señal de predicción inter (enviada desde el predictor inter 126), y envía la señal de predicción seleccionada al sustractor 104 y al sumador 116.
[0159] Como se ilustra en la FIG.1, en varias implementaciones, el controlador de predicción 128 puede enviar parámetros de predicción, que se introducen en el codificador de entropía 110. El codificador de entropía 110 puede generar un flujo de bits codificado (o secuencia) basado en los parámetros de predicción, introducidos desde el controlador de predicción 128, y los coeficientes cuantizados, introducidos desde el cuantizador 108. Los parámetros de predicción pueden ser utilizados por el decodificador, que recibe y decodifica el flujo de bits codificado, para llevar a cabo el mismo procesamiento de predicción que se realiza en el predictor intra 124, el predictor inter 126 y el controlador de predicción 128. Los parámetros de predicción pueden incluir la señal de predicción seleccionada (por ejemplo, vectores de movimiento, tipo de predicción o modo de predicción empleado en el predictor intra 124 o el predictor inter 126), o cualquier índice, bandera o valor que se base, o sea indicativo de, el procesamiento de predicción realizado en el predictor intra 124, el predictor inter 126 y el controlador de predicción 128.
[0160] La FIG.9B ilustra un ejemplo de un proceso para derivar un vector de movimiento en un fotograma actual en modo de fusión.
[0161] Primero, se genera una lista de MV de predicción, en la que se registran los candidatos MV de predicción. Ejemplos de candidatos MV de predicción incluyen: MV de predicción espacialmente adyacente, que son MV de bloques codificados situados en la cercanía espacial del bloque objetivo; MV de predicción temporalmente adyacente, que son MV de bloques en fotogramas de referencia codificadas que son adyacentes a un bloque en la misma ubicación que el bloque objetivo; un MV de predicción acoplada, que es un MV generada combinando los valores MV de la predicción espacialmente adyacente MV y el MV de predicción temporalmente adyacente; y un MV de predicción cero, que es un MV cuyo valor es cero.
[0162] A continuación, el MV del bloque objetivo se determina seleccionando un MV de predicción entre la pluralidad de MV de predicción registrados en la lista MV de predicción.
[0163] Además, en un codificador de longitud variable, se escribe y codifica en el flujo un merge_idx, que es una señal que indica qué MV de predicción está seleccionado.
[0164] Cabe señalar que los MV de predicción registrados en la lista de MV de predicción ilustrada en la FIG.9B constituyen un ejemplo. El número de MV de predicción registrados en la lista de MV de predicción puede ser diferente del número ilustrado en la FIG.9B, y los MV de predicción registrados en la lista de MV de predicción pueden omitir uno o más de los tipos de MV de predicción dados en el ejemplo de la FIG.9B, y los MV de predicción registrados en la lista de MV de predicción pueden incluir uno o más tipos de MV de predicción además de y diferentes de los tipos dados en el ejemplo de la FIG.9B.
[0165] El MV final puede determinarse realizando un procesamiento DMVR (actualización dinámica por vector de movimiento) (que se describirá más adelante) utilizando el MV del bloque objetivo derivado en modo de fusión.
[0166] La FIG.9C es un diagrama conceptual que ilustra un ejemplo de procesamiento DMVR para determinar un MV. Primero, se considera el MV más apropiado que se establezca para el bloque actual (por ejemplo, en modo de fusión) como el MV candidato. Luego, de acuerdo con el candidato MV(L0), se identifica un píxel de referencia en un primer fotograma de referencia (L0), que es un fotograma codificado en dirección L0. De manera similar, de acuerdo con el candidato MV(L1), un píxel de referencia se identifica en un segundo fotograma de referencia (L1), que es un fotograma codificado en dirección L1. Los píxeles de referencia se promedian para formar una plantilla.
[0167] A continuación, usando la plantilla, se buscan las regiones circundantes de los MV candidatos del primer y segundo fotogramas de referencia (L0) y (L1), y se determina que el MV con menor coste es el MV final. El valor de coste puede calcularse, por ejemplo, usando la diferencia entre cada valor de píxel en la plantilla y cada valor de píxel en las regiones buscadas, usando los MV candidatos, etc.
[0168] Cabe señalar que la configuración y la operación de los procesos descritos aquí son fundamentalmente los mismos tanto en el lado del codificador como en el lado del decodificador, como se describirá a continuación.
[0169] Se puede utilizar cualquier procesamiento distinto al descrito anteriormente, siempre que el procesamiento sea capaz de derivar el MV final buscando en el entorno del MV candidato.
[0170] A continuación, se describe un ejemplo de un modo que genera una imagen de predicción (una predicción) usando procesamiento LIC (compensación local de iluminación).
[0171] La FIG. 9D ilustra un ejemplo de un procedimiento de generación de imágenes de predicción utilizando un procedimiento de corrección de luminancia realizado por procesamiento LIC.
[0172] Primero, a partir de un fotograma de referencia codificado, se deriva un MV para obtener una imagen de referencia correspondiente al bloque actual.
[0173] A continuación, para el bloque actual, se obtiene información que indique cómo cambió el valor de luminancia entre el fotograma de referencia y el fotograma actual, basado en los valores de píxeles de luminancia de la región de referencia adyacente codificada a la izquierda y de la región superior de referencia codificada en el fotograma actual, y basándose en los valores de píxeles de luminancia en las mismas ubicaciones del fotograma de referencia especificadas por el MV. La información que indica cómo cambió el valor de luminancia se utiliza para calcular un parámetro de corrección de luminancia.
[0174] La imagen de predicción para el bloque actual se genera realizando un proceso de corrección de luminancia, que aplica el parámetro de corrección de luminancia en la imagen de referencia del fotograma de referencia especificado por el MV.
[0175] Cabe señalar que la forma de la(s) región(es) de referencia circundante(s) ilustrada en la FIG.9D es solo un ejemplo; la región de referencia circundante puede tener una forma diferente.
[0176] Además, aunque una imagen de predicción se genera a partir de un único fotograma de referencia en este ejemplo, en los casos en que una imagen de predicción se genera a partir de una pluralidad de fotogramas de referencia, la imagen de predicción puede generarse tras realizar un proceso de corrección de luminancia, como se describió arriba, sobre las imágenes de referencia obtenidas de los fotogramas de referencia.
[0177] Un ejemplo de un procedimiento para determinar si implementar el procesamiento LIC es usar un lic_flag, que es una señal que indica si implementar el procesamiento LIC. Como ejemplo específico, el codificador determina si el bloque actual pertenece a una región de cambio de luminancia. El codificador establece el lic_flag en un valor de “1” cuando el bloque pertenece a una región de cambio de luminancia, e implementa procesamiento LIC al codificar. El codificador establece el lic_flag en un valor de “0” cuando el bloque no pertenece a una región de cambio de luminancia, y realiza codificación implementando procesamiento LIC. El decodificador puede conmutar entre implementar o no el procesamiento LIC decodificando el lic_flag escrito en el flujo y realizando la decodificación de acuerdo con el valor de la bandera.
[0178] Un ejemplo de otro procedimiento para determinar si implementar el procesamiento LIC incluye discernir si se determinó que el procesamiento LIC se implementaba para un bloque circundante. En un ejemplo concreto, cuando se utiliza el modo de fusión en el bloque actual, se determina si el procesamiento LIC se aplicó en la codificación del bloque codificado circundante, que se seleccionó al derivar el MV en modo de fusión. Luego, la determinación se utiliza para determinar si implementar o no el procesamiento LIC para el bloque actual. Cabe señalar que en este ejemplo también se aplica al procesamiento realizado en el lado del decodificador.
[0179] Decodificador
[0180] A continuación, se describirá un decodificador capaz de decodificar una señal codificada (flujo de bits codificado) enviada del codificador 100. La FIG. 10 es un diagrama de bloques que ilustra una configuración funcional del decodificador 200 de acuerdo con una realización. El decodificador 200 es un decodificador de imágenes en movimiento que decodifica un fotograma en movimiento bloque por bloque.
[0181] Como se ilustra en la FIG.10, el decodificador 200 incluye el decodificador de entropía 202, cuantizador inverso 204, transformador inverso 206, sumador 208, memoria de bloques 210, filtro de bucle 212, memoria de trama 214, predictor intra 216, predictor inter 218 y controlador de predicción 220.
[0182] El decodificador 200 se realiza como, por ejemplo, un procesador y memoria genéricos. En este caso, cuando un programa de software almacenado en la memoria es ejecutado por el procesador, el procesador funciona como decodificador de entropía 202, cuantizador inverso 204, transformador inverso 206, sumador 208, filtro de bucle 212, predictor intra 216, predictor inter 218 y controlador de predicción 220. Alternativamente, el decodificador 200 puede realizarse como uno o más circuitos electrónicos dedicados correspondientes al decodificador de entropía 202, cuantizador inverso 204, transformador inverso 206, sumador 208, filtro de bucle 212, predictor intra 216, predictor inter 218 y controlador de predicción 220.
[0183] A partir de ahora, se describirá cada componente incluido en el decodificador 200.
[0184] Decodificador de Entropía
[0185] El decodificador de entropía 202 decodifica la entropía de un flujo de bits codificados. Más concretamente, por ejemplo, el decodificador de entropía 202 aritmético decodifica un flujo de bits codificado en una señal binaria. El decodificador de entropía 202 entonces desbinariza la señal binaria. El decodificador de entropía 202 envía los coeficientes cuantizados de cada bloque al cuantizador inverso 204. El decodificador de entropía 202 también puede enviar los parámetros de predicción, que pueden incluirse en el flujo de bits codificado (véase FIG. 1), al predictor intra 216, predictor inter 218 y controlador de predicción 220, para que puedan llevar a cabo el mismo procesamiento de predicción que se realiza en el lado del codificador en el predictor intra 124, el predictor inter 126 y el controlador de predicción 128.
[0186] Cuantizador inverso
[0187] El cuantizador inverso 204 cuantiza inversamente los coeficientes cuantizados de un bloque a decodificar (en adelante denominados bloque actual), que se introducen desde el decodificador de entropía 202. Más concretamente, el cuantizador inverso 204 cuantiza los coeficientes cuantizados del bloque actual basándose en parámetros de cuantización correspondientes a los coeficientes cuantizados. El cuantizador inverso 204 entonces envía los coeficientes cuantizados inversos (es decir, coeficientes de transformada) del bloque actual al transformador inverso 206.
[0188] Transformador inverso El transformador inverso 206 restaura errores de predicción (residuales) mediante la transformada inversa de los coeficientes de transformada, que se introducen desde el cuantizador inverso 204. Por ejemplo, cuando la información analizada de un flujo de bits codificado indica la aplicación de EMT o AMT (por ejemplo, cuando la bandera AMT está configurada como verdadera), el transformador inverso 206 transforma inversamente los coeficientes de transformada del bloque actual basándose en información que indica el tipo de transformada analizada.
[0189] Además, por ejemplo, cuando la información analizada de un flujo de bits codificado indica la aplicación de NSST, el transformador inverso 206 aplica una transformada inversa secundaria a los coeficientes de la transformada.
[0190] Sumador
[0191] El sumador 208 reconstruye el bloque actual sumando los errores de predicción, que se introducen desde el transformador inverso 206, y las muestras de predicción, que son una entrada del controlador de predicción 220. El sumador 208 entonces envía el bloque reconstruido a la memoria de bloque 210 y al filtro de bucle 212.
[0192] Memoria de bloque
[0193] La memoria de bloques 210 es almacenamiento para almacenar bloques en un fotograma que se va a decodificar (en adelante denominado fotograma actual) para referencia en la predicción intra. Más concretamente, la memoria de bloques 210 almacena bloques reconstruidos enviados del sumador 208.
[0194] Filtro de bucle
[0195] El filtro de bucle 212 aplica un filtro de bucle a bloques reconstruidos por el sumador 208, y envía los bloques reconstruidos filtrados a la memoria de tramas 214 y, por ejemplo, a un dispositivo de visualización.
[0196] Cuando la información que indica la activación o desactivación de ALF analizada desde un flujo de bits codificado indica activado, se selecciona un filtro entre una pluralidad de filtros basándose en la dirección y actividad de los gradientes locales, y el filtro seleccionado se aplica al bloque reconstruido.
[0197] Memoria de trama
[0198] La memoria de trama 214 es almacenamiento para almacenar fotogramas de referencia utilizados en la predicción inter, y también se denomina búfer de trama. Más concretamente, la memoria de trama 214 almacena bloques reconstruidos filtrados por el filtro de bucle 212.
[0199] Predictor intra
[0200] El predictor intra 216 genera una señal de predicción (señal de predicción intra) mediante predicción intra con referencia a un bloque o bloques en el fotograma actual almacenado en la memoria de bloques 210. Más concretamente, el predictor intra 216 genera una señal de predicción intra mediante predicción intra con referencia a muestras (por ejemplo, valores de luminancia y/o crominancia) de un bloque o bloques adyacentes al bloque actual, y luego envía la señal de predicción intra al controlador de predicción 220.
[0201] Cabe señalar que cuando se selecciona un modo de predicción intra en el que un bloque de crominancia se predice intra desde un bloque de luminancia, el predictor intra 216 puede predecir el componente cromático del bloque actual basándose en el componente de luminancia del bloque actual.
[0202] Además, cuando la información que indica la aplicación de PDPC se analiza a partir de un flujo de bits codificado (por ejemplo, en los parámetros de predicción enviados por el decodificador de entropía 202), el predictor intra 216 corrige los valores de píxeles posteriores a la predicción intra basándose en gradientes de píxeles de referencia horizontales/verticales.
[0203] Predictor inter
[0204] El predictor inter 218 predice el bloque actual con referencia a un fotograma de referencia almacenado en la memoria de trama 214. La predicción inter se realiza por bloque actual o por subbloque (por ejemplo, por bloque 4×4) en el bloque actual. Por ejemplo, el predictor inter 218 genera una señal de predicción inter del bloque o subbloque actual basada en la compensación de movimiento usando información de movimiento (por ejemplo, un vector de movimiento) analizado a partir de un flujo de bits codificado (por ejemplo, en los parámetros de predicción enviados por el decodificador de entropía 202), y envía la señal de predicción inter al controlador de predicción 220.
[0205] Cuando la información analizada del flujo de bits codificado indica la aplicación del modo OBMC, el predictor inter 218 genera la señal de predicción inter utilizando información de movimiento para un bloque adyacente además de la información de movimiento para el bloque actual obtenida mediante estimación de movimiento.
[0206] Además, cuando la información analizada del flujo de bits codificado indica la aplicación del modo FRUC, el predictor inter 218 deriva información de movimiento realizando una estimación de movimiento de acuerdo con el procedimiento de emparejamiento de patrones (emparejamiento bilateral o emparejamiento de plantilla) analizado a partir del flujo de bits codificado. El predictor inter 218 realiza entonces la compensación del movimiento (predicción) utilizando la información derivada del movimiento.
[0207] Además, cuando se va a aplicar el modo BIO, el predictor inter 218 deriva un vector de movimiento basado en un modelo que asume movimiento lineal uniforme. Además, cuando la información analizada del flujo de bits codificado indica que se va a aplicar el modo de predicción de compensación de movimiento afín, el predictor inter 218 deriva un vector de movimiento de cada subbloque basado en los vectores de movimiento de bloques adyacentes.
[0208] Controlador de predicciones
[0209] El controlador de predicción 220 selecciona la señal de predicción intra o la señal de predicción inter, y envía la señal de predicción seleccionada al sumador 208. En general, la configuración, funciones y operaciones del controlador de predicción 220, el predictor inter 218 y el predictor intra 216 en el lado del decodificador pueden corresponder a la configuración, funciones y operaciones del controlador de predicción 128, predictor inter 126 y predictor intra 124 en el lado del codificador.
[0210] Partición no rectangular
[0211] En el controlador de predicción 128 acoplado al predictor intra 124 y al predictor inter 126 en el lado del codificador (véase FIG.1), así como en el controlador de predicción 220 acoplado al predictor intra 216 y al predictor inter 218 en el lado del decodificador (véase FIG. 10), particiones hasta ahora (o bloques o subbloques de tamaño variable) obtenidos al dividir cada bloque, para los cuales se obtiene información de movimiento (por ejemplo, vectores de movimiento), son invariablemente rectangulares, como se muestra en la FIG.2. Los inventores han descubierto que generar particiones con una forma no rectangular, como una forma triangular, conduce a una mejora en la calidad de imagen y la eficiencia de codificación dependiendo del contenido de una imagen en un fotograma en diversas implementaciones. A continuación, se describirán diversas realizaciones, en las que al menos una partición dividida de un bloque de imagen para fines de predicción tiene una forma no rectangular. Cabe señalar que estas realizaciones son igualmente aplicables en el lado del codificador (controlador de predicción 128 acoplado al predictor intra 124 y predictor inter 126) y en el lado del decodificador (controlador de predicción 220 acoplado al predictor intra 216 y predictor inter 218), y pueden implementarse en el codificador de la FIG.1 o similar, o en el decodificador de la FIG.
[0212] 10 o similar.
[0213] La FIG. 11 es un diagrama de flujo que ilustra un ejemplo de un proceso de división de un bloque de imagen en particiones, incluyendo al menos una primera partición con forma no rectangular (por ejemplo, un triángulo) y una segunda partición, y realizar un procesamiento adicional incluyendo la codificación (o decodificación) del bloque de imagen como una combinación reconstruida de la primera y segunda partición.
[0214] En la etapa S1001, un bloque de imagen se divide en particiones, incluyendo una primera partición de forma no rectangular y una segunda partición, que puede o no tener una forma no rectangular. Por ejemplo, como se muestra en la FIG.12, un bloque de imagen puede dividirse desde una esquina superior izquierda del bloque de imagen hasta una esquina inferior derecha del bloque de imagen para crear una primera partición y una segunda partición, ambas con una forma no rectangular (por ejemplo, un triángulo), o un bloque de imagen puede dividirse desde una esquina superior derecha del bloque de imagen hasta una esquina inferior izquierda del bloque de imagen para crear una primera partición y una segunda partición, ambas con forma no rectangular (por ejemplo, un triángulo). A continuación, se describirán diversos ejemplos de la partición no rectangular en referencia a las FIG.12 y 19.
[0215] En la etapa S1002, el proceso predice un primer vector de movimiento para la primera partición y predice un segundo vector de movimiento para la segunda partición. Por ejemplo, la predicción del primer y segundo vector de movimiento puede incluir seleccionar el primer vector de movimiento de un primer conjunto de candidatos a vectores de movimiento y seleccionar el segundo vector de movimiento de un segundo conjunto de candidatos a vectores de movimiento. En la etapa S1003, se realiza un proceso de compensación de movimiento para obtener la primera partición usando el primer vector de movimiento, que se deriva en la etapa S1002 anterior, y para obtener la segunda partición usando el segundo vector de movimiento, que se deriva en la etapa S1002 anterior.
[0216] En la etapa S1004, se realiza un proceso de predicción para el bloque de imagen como una combinación (reconstruida) de la primera partición y la segunda partición. El proceso de predicción puede incluir un proceso de suavizado de bordes para suavizar el borde entre la primera y la segunda partición. Por ejemplo, el proceso de suavizado de bordes puede implicar ponderar los primeros valores de los píxeles de borde predichos basándose en la primera partición y los segundos valores de los píxeles de borde predichos basándose en la segunda partición. A continuación, se describirán diversas implementaciones del proceso de suavizado de bordes en referencia a las FIG.13, 14, 20 y 21A-21D.
[0217] En la etapa S1005, el proceso codifica o decodifica el bloque de imagen usando uno o más parámetros, incluyendo un parámetro de partición que indica la división del bloque de imagen en la primera partición con forma no rectangular y la segunda partición. Como se resume en una tabla de la FIG.15, por ejemplo, el parámetro de partición (“el primer valor del índice”) puede codificar conjuntamente, por ejemplo, una dirección de división aplicada en la división (por ejemplo, de arriba-izquierda a abajo-derecha o de arriba-derecha a abajo-izquierda, como se muestra en la FIG.12) y los primeros y segundos vectores de movimiento derivados en la etapa S1002 anterior. Los detalles de dicha operación de sintaxis de partición que involucran uno o más parámetros, incluyendo el parámetro de partición, se describirán en detalle a continuación en referencia a las FIG.15, 16 y 22-25.
[0218] La FIG.17 es un diagrama de flujo que ilustra un proceso 2000 de división de un bloque de imagen. En la etapa S2001, el proceso divide una imagen en una pluralidad de particiones, incluyendo una primera partición con forma no rectangular y una segunda partición, que puede o no tener una forma no rectangular. Como se muestra en la FIG.12, un bloque de imagen puede dividirse en una primera partición con forma de triángulo y una segunda partición también con forma de triángulo. Existen numerosos otros ejemplos en los que un bloque imagen se divide en una pluralidad de particiones, incluyendo una primera partición y una segunda partición de las cuales al menos la primera partición tiene una forma no rectangular. La forma no rectangular puede ser un triángulo, un trapezoide y un polígono con al menos cinco lados y ángulos.
[0219] Por ejemplo, como se muestra en la FIG.18, un bloque de imagen puede dividirse en dos particiones triangulares de forma; un bloque de imagen puede dividirse en más de dos particiones de forma triangular (por ejemplo, tres particiones de forma triangular); un bloque de imagen puede dividirse en una combinación de particiones de forma triangular y particiones de forma rectangular; o un bloque de imagen puede dividirse en una combinación de particiones en forma de triángulo y particiones en forma de polígono.
[0220] Como se muestra más adelante en la FIG.19, un bloque de imagen puede dividirse en una partición en forma de L (en forma de polígono) y una partición en forma rectangular; un bloque de imagen puede dividirse en una partición de forma de pentágono (polígono) y una partición de forma triangular; un bloque de imagen puede dividirse en una partición de forma hexagonal (polígono) y una partición de forma de pentágono (polígono); o un bloque de imagen puede dividirse en varias particiones de forma de polígono.
[0221] Volviendo a la FIG.17, en la etapa S2002, el proceso predice un primer vector de movimiento para la primera partición, por ejemplo seleccionando la primera partición de un primer conjunto de candidatos a vector de movimiento, y predice un segundo vector de movimiento para la segunda partición, por ejemplo seleccionando la segunda partición de un segundo conjunto de candidatos a vector de movimiento. Por ejemplo, el primer conjunto de candidatos a vectores de movimiento puede incluir vectores de movimiento de particiones adyacentes a la primera partición, y el segundo conjunto de candidatos a vectores de movimiento puede incluir vectores de movimiento de particiones adyacentes a la segunda partición. Las particiones adyacentes pueden ser una o ambas particiones espacialmente adyacentes y particiones adyacentes temporales. Algunos ejemplos de particiones espacialmente adyacentes incluyen una partición situada a la izquierda, abajo a la izquierda, abajo, abajo derecha, derecha, superior derecha, superior o superior izquierda de la partición que se está procesando. Ejemplos de particiones adyacentes temporales son particiones coubicadas en los fotogramas de referencia del bloque de imagen.
[0222] En varias implementaciones, las particiones adyacentes a la primera partición y las particiones adyacentes a la segunda partición pueden estar fuera del bloque de imagen del que se dividen la primera partición y la segunda partición. El primer conjunto de candidatos a vectores de movimiento puede ser igual o diferente del segundo conjunto de candidatos a vectores de movimiento. Además, al menos uno de los primeros candidatos a vectores de movimiento y el segundo conjunto de candidatos a vectores de movimiento pueden ser iguales a otro, un tercer conjunto de candidatos a vectores de movimiento preparados para el bloque de imagen.
[0223] En algunas implementaciones, en la etapa S2002, en respuesta a la determinación de que la segunda partición, similar a la primera, también tiene una forma no rectangular (por ejemplo, un triángulo), el proceso 2000 crea el segundo conjunto de candidatos a vectores de movimiento (para la segunda partición de forma no rectangular) que incluye los vectores de movimiento de particiones adyacentes a la segunda partición excluyendo la primera partición (es decir, excluyendo el vector de movimiento de la primera partición). Por otro lado, en respuesta a la determinación de que la segunda partición, a diferencia de la primera, tiene una forma rectangular, el proceso 2000 crea el segundo conjunto de candidatos a vectores de movimiento (para la segunda partición de forma rectangular) que incluye los vectores de movimiento de particiones adyacentes a la segunda partición, incluyendo la primera partición.
[0224] En la etapa S2003, el proceso codifica o decodifica la primera partición usando el primer vector de movimiento derivado en la etapa S2002 anterior, y codifica o decodifica la segunda partición usando el segundo vector de movimiento derivado en la etapa S2002 anterior.
[0225] Un proceso de división por bloques de imagen, como el proceso 2000 de la FIG.17, puede realizarse mediante un codificador de imágenes, como se muestra en la FIG.1 por ejemplo, que incluye circuitería y una memoria acoplada a la circuitería. La circuitería, en operación, realiza: dividir un bloque de imagen en una pluralidad de particiones, incluyendo una primera partición de forma no rectangular y una segunda partición (etapa S2001); predecir un primer vector de movimiento para la primera partición y un segundo vector de movimiento para la segunda partición (etapa S2002); y codificar la primera partición usando el primer vector de movimiento y la segunda partición usando el segundo vector de movimiento (etapa S2003).
[0226] De acuerdo con otra realización, como se muestra en la FIG.1, se proporciona un codificador de imagen que incluye: un divisor 102 que, en operación, recibe y divide un fotograma original en bloques; un sumador 104 que, en operación, recibe los bloques del divisor y las predicciones de un controlador de predicción 128, y resta cada predicción de su bloque correspondiente para enviar un residual; un transformador 106 que, en operación, realiza una transformada sobre los residuales enviados por el sumador 104 a coeficientes de la transformada de salida; un cuantizador 108 que, en operación, cuantiza los coeficientes de transformada para generar coeficientes de transformada cuantizados; un codificador de entropía 110 que, en operación, codifica los coeficientes de transformada cuantizados para generar un flujo de bits; y el controlador de predicción 128 acoplado a un predictor inter 126, un predictor intra 124 y una memoria 118, 122, en la que el predictor inter 126, en operación, genera una predicción de un bloque actual basada en un bloque de referencia en un fotograma de referencia codificado y el predictor intra 124, en operación, genera una predicción de un bloque actual basada en un bloque de referencia codificado en un fotograma actual. El controlador de predicción 128, en operación, divide los bloques en una pluralidad de particiones, incluyendo una primera partición de forma no rectangular y una segunda partición (FIG.17, etapa S2001); predice un primer vector de movimiento para la primera partición y un segundo vector de movimiento para la segunda partición (etapa S2002); y codifica la primera partición usando el primer vector de movimiento y la segunda partición usando el segundo vector de movimiento (etapa S2003).
[0227] De acuerdo con otra realización, se proporciona un decodificador de imágenes, como se muestra en la FIG.10 por ejemplo, que incluye circuitería y una memoria acoplada a la circuitería. La circuitería, en operación, realiza: dividir un bloque de imagen en una pluralidad de particiones, incluyendo una primera partición de forma no rectangular y una segunda partición (FIG. 17, etapa S2001); predecir un primer vector de movimiento para la primera partición y un segundo vector de movimiento para la segunda partición (etapa S2002); y decodificar la primera partición usando el primer vector de movimiento y la segunda partición usando el segundo vector de movimiento (etapa S2003).
[0228] De acuerdo con otra realización, se proporciona un decodificador de imagen como se muestra en la FIG. 10 que incluye: un decodificador de entropía 202 que, en operación, recibe y decodifica un flujo de bits codificado para obtener coeficientes de transformada cuantizados; un cuantizador inverso 204 y un transformador 206 que, en operación, cuantiza inversamente los coeficientes de transformada cuantizados para obtener coeficientes de transformada y transforma inversamente los coeficientes de transformada para obtener residuales; un sumador 208 que, en operación, suma los residuales enviados por el cuantizador inverso 204 y el transformador 206 y las predicciones enviadas por un controlador de predicción 220 para reconstruir bloques; y el controlador de predicción 220 acoplado a un predictor inter 218, un predictor intra 216 y una memoria 210, 214, en la que el predictor inter 218, en operación, genera una predicción de un bloque actual basada en un bloque de referencia en un fotograma de referencia decodificado y el predictor intra 216, en operación, genera una predicción de un bloque actual basada en un bloque de referencia decodificado en un fotograma actual. El controlador de predicción 220, en operación, divide un bloque de imagen en una pluralidad de particiones, incluyendo una primera partición de forma no rectangular y una segunda partición (FIG.
[0229] 17, etapa S2001); predice un primer vector de movimiento para la primera partición y un segundo vector de movimiento para la segunda partición (etapa S2002); y decodifica la primera partición usando el primer vector de movimiento y la segunda partición usando el segundo vector de movimiento (etapa S2003).
[0230] Suavizar bordes
[0231] Como se describe anteriormente en la FIG.11, etapa S1004, de acuerdo con varias realizaciones, realizar un proceso de predicción para el bloque de imagen como una combinación (reconstruida) de la primera partición que tiene una forma no rectangular y la segunda partición puede implicar la aplicación de un proceso de suavizado de bordes a lo largo del borde entre la primera partición y la segunda partición.
[0232] Por ejemplo, la FIG.21B ilustra un ejemplo de un proceso de suavizado de bordes que implica ponderar primero los valores de los píxeles de borde, que se predicen primero a partir de la primera partición, y los segundos valores de los píxeles de borde, que se predicen en segundo lugar basándose en la segunda partición.
[0233] La FIG.20 es un diagrama de flujo que ilustra un proceso general de suavizado de bordes 3000 que involucra ponderar los primeros valores de los píxeles de borde predichos primero basándose en la primera partición y segundos valores de los píxeles de borde predichos en segundo lugar basándose en la segunda partición, de acuerdo con una realización. En la etapa S3001, un bloque de imagen se divide en una primera partición y una segunda a lo largo de un borde en el que al menos la primera partición tiene una forma no rectangular, como se muestra en la FIG.21A o en las FIG.12, 18 y 19 descritas anteriormente.
[0234] En la etapa S3002, se predicen primero los primeros valores (por ejemplo, color, luminancia, transparencia, etc.) de un conjunto de píxeles (“píxeles de borde” en la FIG.21A) de la primera partición a lo largo del borde, en el que los primeros valores se predicen primero usando la información de la primera partición. En la etapa S3003, los segundos valores del (mismo) conjunto de píxeles de la primera partición a lo largo del borde se predicen en segundo lugar, en el que los segundos valores se predicen en segundo lugar usando información de la segunda partición. En algunas implementaciones, al menos uno de la primea predicción y la segunda predicción es un proceso de predicción inter que predice los primeros valores y los segundos valores basándose en una partición de referencia en un fotograma de referencia codificado. En referencia a la FIG.21D, en algunas implementaciones, el proceso de predicción predice los primeros valores de todos los píxeles de la primera partición (“el primer conjunto de muestras”), incluyendo el conjunto de píxeles sobre los que se solapan la primera y la segunda partición, y predice los segundos valores solo del conjunto de píxeles (“el segundo conjunto de muestras”) sobre los que se solapan la primera y la segunda partición. En otra implementación, al menos uno del primer predictor y el segundo predictor es un proceso de predicción intra que predice los primeros valores y los segundos valores basándose en una partición de referencia codificada en un fotograma actual. En algunas implementaciones, un procedimiento de predicción usado en la primera predicción es diferente de un procedimiento de predicción usado en la segunda predicción. Por ejemplo, la primera predicción puede incluir un proceso de predicción inter y la segunda predicción puede incluir un proceso de predicción intra. La información utilizada para predecir primero los primeros valores o para predecir en segundo lugar los segundos valores pueden ser vectores de movimiento, direcciones de predicción intra, etc. de la primera o segunda partición.
[0236] En la etapa S3004, los primeros valores, predichos usando la primera partición, y los segundos valores, predichos usando la segunda partición, se ponderan. En la etapa S3005, la primera partición se codifica o decodifica usando los primeros y segundos valores ponderados.
[0238] La FIG. 21B ilustra un ejemplo de operación de suavizado de bordes en la que la primera partición y la segunda partición se solapan sobre cinco píxeles (como máximo) de cada fila o columna. Es decir, el número del conjunto de píxeles de cada fila o columna, para los cuales los primeros valores se predicen basándose en la primera partición y los segundos valores se predicen basados en la segunda partición, es cinco como máximo. La FIG.21C ilustra otro ejemplo de una operación de suavizado de bordes en la que la primera partición y la segunda partición se solapan sobre tres píxeles (como máximo) de cada fila o columna. Es decir, el número del conjunto de píxeles de cada fila o columna, para los cuales los primeros valores se predicen basándose en la primera partición y los segundos valores se predicen basándose en la segunda partición, es de tres como máximo.
[0240] La FIG. 13 ilustra otro ejemplo de operación de suavizado de bordes, en la que la primera partición y la segunda partición se solapan sobre cuatro píxeles (como máximo) de cada fila o columna. Es decir, el número del conjunto de píxeles de cada fila o columna, para los cuales se predicen los primeros valores basándose en la primera partición y los segundos valores se predicen basándose en la segunda partición, es de cuatro como máximo. En el ejemplo ilustrado, se pueden aplicar pesos de 1/8, 1/4, 3/4 y 7/8 a los primeros valores de los cuatro píxeles del conjunto, respectivamente, y pesos de 7/8, 3/4, 1/4 y 1/8 se pueden aplicar a los segundos valores de los cuatro píxeles del conjunto, respectivamente.
[0242] La FIG.14 ilustra más ejemplos de una operación de suavizado de bordes en la que la primera y la segunda partición se solapan sobre cero píxeles de cada fila o columna (es decir, no se solapan), se solapan sobre un píxel (como máximo) de cada fila o columna, y se solapan sobre dos píxeles (como máximo) de cada fila o columna, respectivamente. En el ejemplo en el que la primera y la segunda particiones no se solapan, se aplican pesos cero. En el ejemplo en el que la primera y segunda particiones se solapan sobre un píxel de cada fila o columna, se puede aplicar un peso de 1/2 a los primeros valores de los píxeles del conjunto predicho basándose en la primera partición, y un peso de 1/2 se puede aplicar a los segundos valores de los píxeles del conjunto predicho basándose en la segunda partición. En el ejemplo en el que la primera y segunda particiones se solapan sobre dos píxeles de cada fila o columna, se pueden aplicar pesos de 1/3 y 2/3 a los primeros valores de los dos píxeles del conjunto predichos en base a la primera partición, respectivamente, y pesos de 2/3 y 1/3 pueden aplicarse a los segundos valores de los dos píxeles del conjunto predicho basándose en la segunda partición, respectivamente.
[0244] De acuerdo con las realizaciones descritas anteriormente, el número de píxeles en el conjunto sobre el que se solapan la primera partición y la segunda partición es un entero. En otras implementaciones, el número de píxeles que se solapan en el conjunto puede ser no enteros y puede ser fraccionario, por ejemplo. Además, los pesos aplicados a los primeros y segundos valores del conjunto de píxeles pueden ser fraccionarios o enteros dependiendo de cada aplicación.
[0246] Un proceso de suavizado de bordes, como el proceso 3000 de la FIG.20, puede ser realizado por un codificador de imágenes, como se muestra en la FIG.1 por ejemplo, que incluye circuitería y una memoria acoplada a la circuitería. La circuitería, en operación, realiza una operación de suavizado de bordes a lo largo de un borde entre una primera partición de forma no rectangular y una segunda partición que se divide de un bloque de imagen (FIG. 20, etapa S3001). La operación de suavizado de bordes incluye: predecir primero los primeros valores de un conjunto de píxeles de la primera partición a lo largo del borde, usando información de la primera partición (etapa S3002); la segunda predicción de segundos valores del conjunto de píxeles de la primera partición a lo largo del borde, usando información de la segunda partición (etapa S3003); ponderando los primeros valores y los segundos (etapa S3004); y codificar la primera partición usando los primeros valores ponderados y los segundos valores ponderados (etapa S3005).
[0247] De acuerdo con otra realización, como se muestra en la FIG.1, se proporciona un codificador de imagen que incluye: un divisor 102 que, en operación, recibe y divide u fotograma original en bloques; un sumador 104 que, en operación, recibe los bloques del divisor y las predicciones de un controlador de predicción 128, y resta cada predicción de su bloque correspondiente para enviar un residual; un transformador 106 que, en operación, realiza una transformada sobre los residuales enviados por el sumador 104 a coeficientes de la transformada de salida; un cuantizador 108 que, en operación, cuantiza los coeficientes de transformada para generar coeficientes de transformada cuantizados; un codificador de entropía 110 que, en operación, codifica los coeficientes de transformada cuantizados para generar un flujo de bits; y el controlador de predicción 128 acoplado a un predictor inter 126, un predictor intra 124 y una memoria 118, 122, en los que el predictor inter 126, en operación, genera una predicción de un bloque actual basada en un bloque de referencia en un fotograma de referencia codificado y el predictor intra 124, en operación, genera una predicción de un bloque actual basado en un bloque de referencia codificado en un fotograma actual. El controlador de predicción 128, en operación, realiza una operación de suavizado de bordes a lo largo de un borde entre una primera partición de forma no rectangular y una segunda partición que se divide de un bloque de imagen (FIG.20, etapa S3001). La operación de suavizado de bordes incluye: predecir primero los primeros valores de un conjunto de píxeles de la primera partición a lo largo del borde, usando información de la primera partición (etapa S3002); la segunda predicción de segundos valores del conjunto de píxeles de la primera partición a lo largo del borde, usando información de la segunda partición (etapa S3003); ponderar los primeros valores y los segundos valores (etapa S3004); y codificar la primera partición usando los primeros valores ponderados y los segundos valores ponderados (etapa S3005).
[0249] De acuerdo con otra realización, se proporciona un decodificador de imagen, como se muestra en la FIG. 10 por ejemplo, que incluye circuitería y una memoria acoplada a la circuitería. La circuitería, en operación, realiza una operación de suavizado de bordes a lo largo de un borde entre una primera partición de forma no rectangular y una segunda partición que se divide de un bloque de imagen (FIG. 20, etapas S3001). La operación de suavizado de bordes incluye: predecir primero los primeros valores de un conjunto de píxeles de la primera partición a lo largo del borde, usando información de la primera partición (etapa S3002); la segunda predicción de segundos valores del conjunto de píxeles de la primera partición a lo largo del borde, usando información de la segunda partición (etapa S3003); ponderar los primeros valores y los segundos valores (etapa S3004); y decodificar la primera partición usando los primeros valores ponderados y los segundos valores ponderados (etapa S3005).
[0251] De acuerdo con otra realización, se proporciona un decodificador de imagen como se muestra en la FIG. 10 que incluye: un decodificador de entropía 202 que, en operación, recibe y decodifica un flujo de bits codificado para obtener coeficientes de transformada cuantizados; un cuantizador inverso 204 y un transformador 206 que, en operación, cuantiza inversamente los coeficientes de transformada cuantizados para obtener coeficientes de transformada y transforma inversamente los coeficientes de transformada para obtener residuales; un sumador 208 que, en operación, suma los residuales enviados por el cuantizador inverso 204 y el transformador 206 y las predicciones enviadas por un controlador de predicción 220 para reconstruir bloques; y el controlador de predicción 220 acoplado a un predictor inter 218, un predictor intra 216 y una memoria 210, 214, en el que el predictor inter 218, en operación, genera una predicción de un bloque actual basada en un bloque de referencia en un fotograma de referencia decodificado y el predictor intra 216, en operación, genera una predicción de un bloque actual basada en un bloque de referencia decodificado en un fotograma actual. El controlador de predicción 220, en operación, realiza una operación de suavizado de bordes a lo largo de un borde entre una primera partición de forma no rectangular y una segunda partición que se divide de un bloque de imagen. (FIG.20, etapa S3001) La operación de suavizado de bordes incluye: predecir primero los primeros valores de un conjunto de píxeles de la primera partición a lo largo del borde, usando información de la primera partición (etapa S3002); predecir en segundo lugar los segundos valores del conjunto de píxeles de la primera partición a lo largo del borde, usando información de la segunda partición (etapa S3003); ponderar los primeros valores y los segundos valores (etapa S3004); y decodificar la primera partición usando los primeros valores ponderados y los segundos valores ponderados (etapa S3005).
[0253] Codificación y decodificación de entropía usando sintaxis de parámetros de partición
[0255] Como se describe en la FIG.11, etapa S1005, de acuerdo con varias realizaciones, el bloque de imagen se divide en una primera partición de forma no rectangular y una segunda partición puede codificarse o decodificarse usando uno o más parámetros, incluyendo un parámetro de partición indicativo de la división no rectangular del bloque de imagen. En diversas realizaciones, dicho parámetro de partición puede codificar conjuntamente, por ejemplo, una dirección de división aplicada a la división (por ejemplo, de arriba-izquierda a abajo-derecha o de arriba-derecha a abajo-izquierda, véase la FIG.12) y a los primeros y segundos vectores de movimiento predichos en la etapa S1002, como se describirá más detalladamente a continuación.
[0257] La FIG.15 es una tabla de parámetros de partición de muestra (“el primer valor de índice”) y conjuntos de información codificados conjuntamente por los parámetros de la partición, respectivamente. Los parámetros de la partición (“los primeros valores de índice”) van de 0 a 6 y codifican conjuntamente: la dirección de división de un bloque de imagen en una primera partición y una segunda partición, ambas triangulares (véase la FIG. 12), el primer vector de movimiento predicho para la primera partición (FIG. 11, etapa S1002) y el segundo vector de movimiento predicho para la segunda partición (FIG.11, etapa S1002). Específicamente, el parámetro 0 de partición codifica la dirección de división desde la esquina superior izquierda hasta la esquina inferior derecha, el primer vector de movimiento es el “2.<o>” vector de movimiento listado en el primer conjunto de candidatos a vectores de movimiento para la primera partición, y el segundo vector de movimiento es el “1.<er>” vector de movimiento listado en el segundo conjunto de candidatos a vectores de movimiento para la segunda partición.
[0259] El parámetro de partición 1 codifica la dirección de división desde la esquina superior derecha hasta la esquina inferior izquierda, el primer vector de movimiento es el “1.<er>” vector de movimiento listado en el primer conjunto de candidatos a vectores de movimiento para la primera partición, y el segundo vector de movimiento es el “2.<o>” vector de movimiento listado en el segundo conjunto de candidatos a vectores de movimiento para la segunda partición. El parámetro de partición 2 codifica la dirección de división desde la esquina superior derecha hasta la esquina inferior izquierda, el primer vector de movimiento es el “2.<o>” vector de movimiento listado en el primer conjunto de candidatos a vectores de movimiento para la primera partición, y el segundo vector de movimiento es el “1.<er>” vector de movimiento listado en el segundo conjunto de candidatos a vectores de movimiento para la segunda partición. El parámetro de partición 3 codifica la dirección de división desde la esquina superior izquierda hasta la esquina inferior derecha, el primer vector de movimiento es el “2.<o>” vector de movimiento listado en el primer conjunto de candidatos a vectores de movimiento para la primera partición, y el segundo vector de movimiento es el “2.º” vector de movimiento listado en el segundo conjunto de candidatos a vectores de movimiento para la segunda partición. El parámetro 4 de partición codifica la dirección de división desde la esquina superior derecha hasta la esquina inferior izquierda, el primer vector de movimiento es el “2.<o>” vector de movimiento listado en el primer conjunto de candidatos a vectores de movimiento para la primera partición, y el segundo vector de movimiento es el “3.<er>” vector de movimiento listado en el segundo conjunto de candidatos a vectores de movimiento para la segunda partición. El parámetro 5 de partición codifica la dirección de división desde la esquina superior izquierda hasta la esquina inferior derecha, el primer vector de movimiento es el “3.<er>” vector de movimiento listado en el primer conjunto de candidatos a vectores de movimiento para la primera partición, y el segundo vector de movimiento es el “1.<er>” vector de movimiento listado en el segundo conjunto de candidatos a vectores de movimiento para la segunda partición. El parámetro de partición 6 codifica la dirección de división desde la esquina superior izquierda hasta la esquina inferior derecha, el primer vector de movimiento es el “4.<o>” vector de movimiento listado en el primer conjunto de candidatos a vectores de movimiento para la primera partición, y el segundo vector de movimiento es el “1.<er>” vector de movimiento listado en el segundo conjunto de candidatos a vectores de movimiento para la segunda partición.
[0261] La FIG.22 es un diagrama de flujo que ilustra un procedimiento 4000 realizado en el lado del codificador. En la etapa S4001, el proceso divide un bloque de imagen en una pluralidad de particiones, incluyendo una primera partición de forma no rectangular y una segunda partición, basándose en un parámetro de partición indicativo de la división. Por ejemplo, como se muestra en la FIG.15 descrita anteriormente, el parámetro de partición puede indicar la dirección de separación de un bloque de imagen (por ejemplo, de la esquina superior derecha a la esquina inferior izquierda o de la esquina superior izquierda a la esquina inferior derecha). En la etapa S4002, el proceso codifica la primera partición y la segunda partición. En la etapa S4003, el proceso escribe uno o más parámetros, incluido el parámetro de partición, en un flujo de bits, que el lado decodificador puede recibir y decodificar para obtener uno o más parámetros que realizarán el mismo proceso de predicción (que el que se realiza en el lado del codificador) para la primera y segunda particiones en el lado del decodificador. Uno o más parámetros, incluyendo el parámetro de partición, pueden codificar conjuntamente o por separado diversas piezas de información, como la forma no rectangular de la primera partición, la forma de la segunda partición, la dirección de división utilizada para dividir un bloque de imagen y obtener la primera y segunda partición, el primer vector de movimiento de la primera partición, el segundo vector de movimiento de la segunda partición, etc.
[0263] La FIG. 23 es un diagrama de flujo que ilustra un procedimiento 5000 realizado en el lado del decodificador. En la etapa S5001, el proceso analiza uno o más parámetros de un flujo de bits, en el que uno o más parámetros incluyen un parámetro de partición indicativo de la división de un bloque de imagen en una pluralidad de particiones, incluyendo una primera partición de forma no rectangular y una segunda partición. Uno o más parámetros, incluyendo el parámetro de partición analizado del flujo de bits, pueden codificar conjuntamente o por separado diversas piezas de información necesarias para que el lado del decodificador realice el mismo proceso de predicción que el del lado del codificador, como la forma no rectangular de la primera partición, la forma de la segunda partición, la dirección de división usada para dividir un bloque de imagen y obtener la primera y segunda partición, el primer vector de movimiento de la primera partición, el segundo vector de movimiento de la segunda partición, etc. En la etapa S5002, el proceso 5000 divide el bloque de imagen en la pluralidad de particiones basadas en el parámetro de partición descifrado del flujo de bits. En la etapa S5003, el proceso decodifica la primera partición y la segunda partición, tal como se dividió del bloque de imagen.
[0265] La FIG.24 es una tabla de parámetros de partición de muestra (“el primer valor de índice”) y conjuntos de información codificados conjuntamente por los parámetros de la partición, respectivamente, similar en naturaleza a la tabla de muestra descrita anteriormente en la FIG. 15. En la FIG. 24, los parámetros de partición (“los primeros valores de índice”) van de 0 a 6 y codifican conjuntamente: la forma de la primera y segunda particiones divididas de un bloque de imagen, la dirección de la división de un bloque de imagen en la primera y segunda partición, el primer vector de movimiento predicho para la primera partición (FIG. 11, etapa S1002), y el segundo vector de movimiento predicho para la segunda partición (FIG.11, etapa S1002). Específicamente, el parámetro de partición 0 codifica que ninguna de las particiones primera y segunda tiene forma triangular, por lo que la información de la dirección de división es “N/A”, la información del primer vector de movimiento es “N/A” y la información del segundo vector de movimiento es “N/A”.
[0266] El parámetro de partición 1 codifica que la primera y segunda particiones son triángulos, la dirección de división va de la esquina superior izquierda a la esquina inferior derecha, el primer vector de movimiento es el “2.<o>” vector de movimiento listado en el primer conjunto de candidatos a vectores de movimiento para la primera partición, y el segundo vector de movimiento es el “1.<er>” vector de movimiento listado en el segundo conjunto de candidatos a vectores de movimiento para la segunda partición. El parámetro de partición 2 codifica que la primera y segunda particiones son triángulos, la dirección de división va de la esquina superior derecha a la esquina inferior izquierda, el primer vector de movimiento es el “1.<er>” vector de movimiento listado en el primer conjunto de candidatos a vectores de movimiento para la primera partición, y el segundo vector de movimiento es el “2.<o>” vector de movimiento listado en el segundo conjunto de candidatos a vectores de movimiento para la segunda partición. El parámetro 3 de partición codifica que la primera y segunda particiones son triángulos, la dirección de división va de la esquina superior derecha a la esquina inferior izquierda, el primer vector de movimiento es el “2.<o>” vector de movimiento listado en el primer conjunto de candidatos a vectores de movimiento para la primera partición, y el segundo vector de movimiento es el “1.<er>” vector de movimiento listado en el segundo conjunto de candidatos a vectores de movimiento para la segunda partición. El parámetro 4 de partición codifica que la primera y segunda particiones son triángulos, la dirección de división va de la esquina superior izquierda a la esquina inferior derecha, el primer vector de movimiento es el “2.<o>” vector de movimiento listado en el primer conjunto de candidatos a vectores de movimiento para la primera partición, y el segundo vector de movimiento es el “2.<o>” vector de movimiento listado en el segundo conjunto de candidatos a vectores de movimiento para la segunda partición. El parámetro 5 de partición codifica que la primera y segunda particiones son triángulos, la dirección de división va de la esquina superior derecha a la esquina inferior izquierda, el primer vector de movimiento es el “2.<o>” vector de movimiento listado en el primer conjunto de candidatos a vectores de movimiento para la primera partición, y el segundo vector de movimiento es el “3.<er>” vector de movimiento listado en el segundo conjunto de candidatos a vectores de movimiento para la segunda partición. El parámetro de partición 6 codifica la primera y segunda particiones como triángulos, la dirección de división va de la esquina superior izquierda a la esquina inferior derecha, el primer vector de movimiento es el “3.<er>” vector de movimiento listado en el primer conjunto de candidatos a vectores de movimiento para la primera partición, y el segundo vector de movimiento es el “1.<er>” vector de movimiento listado en el segundo conjunto de candidatos a vectores de movimiento para la segunda partición.
[0267] De acuerdo con algunas implementaciones, los parámetros de partición (valores índice) pueden binarizarse mediante un esquema de binarización, que se selecciona basándose en un valor de al menos uno o uno o más parámetros. La FIG. 16 ilustra un esquema de binarización de muestra de binarización de los valores del índice (los valores de los parámetros de partición).
[0268] La FIG.25 es una tabla de combinaciones de ejemplo de un primer parámetro y un segundo parámetro, en la que uno de los cuales es un parámetro de partición que indica la división de un bloque de imagen en una pluralidad de particiones, incluyendo una primera partición de forma no rectangular y una segunda partición. En este ejemplo, el parámetro de partición puede usarse para indicar la división de un bloque de imagen sin codificar conjuntamente otra información, que está codificada por uno o más de los otros parámetros.
[0269] En el primer ejemplo de la FIG.25, el primer parámetro se usa para indicar el tamaño de un bloque de imagen, y el segundo parámetro se usa como parámetro de partición (una bandera) para indicar que al menos una de las pluralidades de particiones separadas de un bloque de imagen tiene una forma triangular. Esta combinación de los primeros y segundos parámetros puede usarse para indicar, por ejemplo, 1) cuando el tamaño del bloque de imagen es mayor que 64x64, no hay partición de formas triangular, o 2) cuando la proporción entre el ancho y la altura de un bloque de imagen es mayor que 4 (por ejemplo, 64x4), no existe una partición de formas triangular.
[0270] En el segundo ejemplo de la FIG.25, el primer parámetro se usa para indicar un modo de predicción, y el segundo parámetro se usa como parámetro de partición (una bandera) para indicar que al menos una de las pluralidades de particiones separadas de un bloque de imagen tiene una forma triangular. Esta combinación de los primeros y segundos parámetros puede usarse para indicar, por ejemplo, 1) cuando un bloque de imagen está codificado en modo intra, no existe una partición triangular.
[0271] En el tercer ejemplo de la FIG. 25, el primer parámetro se utiliza como parámetro de partición (una bandera) para indicar que al menos una de las pluralidades de particiones separadas de un bloque de imagen tiene una forma triangular, y el segundo parámetro se usa para indicar un modo de predicción. Tal combinación de los primeros y segundos parámetros puede usarse para indicar, por ejemplo, 1) cuando al menos una de las pluralidades de particiones separadas de un bloque de imagen tiene una forma triangular, el bloque de imagen debe estar codificado inter.
[0272] En el cuarto ejemplo de la FIG.25, el primer parámetro indica el vector de movimiento de un bloque adyacente, y el segundo parámetro se utiliza como parámetro de partición que indica la dirección de la división de un bloque de imagen en dos triángulos. Esta combinación de los primeros y segundos parámetros puede usarse para indicar, por ejemplo, 1) cuando el vector de movimiento de un bloque adyacente es diagonal, la dirección de separación del bloque de imagen en dos triángulos es desde la esquina superior izquierda hasta la esquina inferior derecha.
[0273] En el quinto ejemplo de la FIG.25, el primer parámetro indica la dirección de predicción intra de un bloque adyacente, y el segundo parámetro se utiliza como parámetro de partición que indica la dirección de la división de un bloque de imagen en dos triángulos. Esta combinación de los primeros y segundos parámetros puede usarse para indicar, por ejemplo, 1) cuando la dirección de predicción intra de un bloque adyacente es una dirección de diagonal inversa, la dirección de división del bloque de imagen en dos triángulos es de la esquina superior derecha a la esquina inferior izquierda.
[0275] Debe entenderse que las tablas de uno o más parámetros, incluyendo el parámetro de partición y qué información está codificada conjunta o por separado, como se muestra en las FIG.15, 24 y 25, se presentan solo como ejemplos y numerosas otras formas de codificar, conjunta o por separado, diversa información como parte de la operación de sintaxis de partición descrita anteriormente están dentro del alcance de la presente divulgación. Por ejemplo, el parámetro de partición puede indicar que la primera partición es un triángulo, un trapezoide o un polígono con al menos cinco lados y ángulos. El parámetro de partición puede indicar que la segunda partición tiene una forma no rectangular, como un triángulo, un trapezoide y un polígono con al menos cinco lados y ángulos. El parámetro de partición puede indicar una o más piezas de información sobre la división, como la forma no rectangular de la primera partición, la forma de la segunda partición (que puede ser no rectangular o rectangular), la dirección de división aplicada para dividir un bloque de imagen en una pluralidad de particiones (por ejemplo, desde una esquina superior izquierda del bloque de imagen hasta una esquina inferior derecha de este, y desde la esquina superior derecha del bloque de imagen hasta la esquina inferior izquierda de este). El parámetro de partición puede codificar conjuntamente información adicional como el primer vector de movimiento de la primera partición, el segundo vector de movimiento de la segunda partición, el tamaño del bloque de imagen, el modo de predicción, el vector de movimiento de un bloque adyacente, la dirección de predicción intra de un bloque adyacente, etc. Alternativamente, cualquier información adicional puede codificarse por separado mediante uno o más parámetros distintos al parámetro de partición.
[0277] Una operación de sintaxis de partición, como el proceso 4000 de la FIG.22, puede realizarse mediante un codificador de imágenes, como se muestra en la FIG.1 por ejemplo, que incluye circuitería y una memoria acoplada a la circuitería. La circuitería, en operación, realiza una operación de sintaxis de partición que incluye: la división de un bloque de imagen en una pluralidad de particiones, incluyendo una primera partición de forma no rectangular y una segunda partición basada en un parámetro de partición indicativo de la división (FIG. 22, etapa S4001); codificar la primera partición y la segunda partición (S4002); y escribir uno o más parámetros, incluido el parámetro de partición, en una secuencia de bits (S4003).
[0279] De acuerdo con otra realización, como se muestra en la FIG.1, se proporciona un codificador de imagen que incluye: un divisor 102 que, en operación, recibe y divide un fotograma original en bloques; un sumador 104 que, en operación, recibe los bloques del divisor y las predicciones de un controlador de predicción 128, y resta cada predicción de su bloque correspondiente para enviar un residual; un transformador 106 que, en operación, realiza una transformada sobre los residuales enviados por el sumador 104 para enviar coeficientes de transformada; un cuantizador 108 que, en operación, cuantiza los coeficientes de transformada para generar coeficientes de transformada cuantizados; un codificador de entropía 110 que, en operación, codifica los coeficientes de transformada cuantizados para generar un flujo de bits; y el controlador de predicción 128 acoplado a un predictor inter 126, un predictor intra 124 y una memoria 118, 122, en los que el predictor inter 126, en operación, genera una predicción de un bloque actual basada en un bloque de referencia en un fotograma de referencia codificado y el predictor intra 124, en operación, genera una predicción de un bloque actual basada en un bloque de referencia codificado en un fotograma actual. El controlador de predicción 128, en operación, divide un bloque de imagen en una pluralidad de particiones, incluyendo una primera partición de forma no rectangular y una segunda partición basada en un parámetro de partición indicativo de la división (FIG.22, etapa S4001), y codifica la primera partición y la segunda partición (etapa S4002). El codificador de entropía 110, en operación, escribe uno o más parámetros, incluido el parámetro de partición, en un flujo de bits (etapa S4003).
[0280] De acuerdo con otra realización, se proporciona un decodificador de imagen, como se muestra en la FIG. 10 por ejemplo, que incluye circuitería y una memoria acoplada a la circuitería. La circuitería, en operación, realiza una operación de sintaxis de partición que incluye: analizar uno o más parámetros de un flujo de bits, en el que uno o más parámetros incluyen un parámetro de partición indicativo de la división de un bloque de imagen en una pluralidad de particiones, incluyendo una primera partición de forma no rectangular y una segunda partición (FIG.23, etapa S5001); la división del bloque de imagen en la pluralidad de particiones basadas en el parámetro de partición (S5002); y decodificar la primera partición y la segunda partición (S5003).
[0282] De acuerdo con otra realización, se proporciona un decodificador de imagen como se muestra en la FIG. 10 que incluye: un decodificador de entropía 202 que, en operación, recibe y decodifica un flujo de bits codificado para obtener coeficientes de transformada cuantizados; un cuantizador inverso 204 y un transformador 206 que, en operación, cuantiza inversamente los coeficientes de transformada cuantizados para obtener coeficientes de transformada y transforma inversamente los coeficientes de transformada para obtener residuales; un sumador 208 que, en operación, suma los residuales generados por el cuantizador inverso 204 y el transformador 206 y las predicciones enviadas por un controlador de predicción 220 para reconstruir bloques; y el controlador de predicción 220 acoplado a un predictor inter 218, un predictor intra 216 y una memoria 210, 214, en el que el predictor inter 218, en operación, genera una predicción de un bloque actual basada en un bloque de referencia en un fotograma de referencia decodificado y el predictor intra 216, en operación, genera una predicción de un bloque actual basada en un bloque de referencia decodificado en un fotograma actual. El decodificador de entropía 202, en operación: analiza uno o más parámetros de un flujo de bits, en el que uno o más parámetros incluyen un parámetro de partición indicativo de la división de un bloque de imagen en una pluralidad de particiones, incluyendo una primera partición de forma no rectangular y una segunda partición (FIG.23, etapa S5001); divide el bloque de imagen en la pluralidad de particiones basadas en el parámetro de partición (S5002); y decodifica la primera partición y la segunda partición (S5003) en cooperación con el controlador de predicción 220 en algunas implementaciones.
[0283] De acuerdo con otros ejemplos, un predictor inter puede realizar el siguiente proceso.
[0284] Todos los candidatos a vector de movimiento incluidos en el primer conjunto de candidatos a vectores de movimiento pueden ser vectores de movimiento unipredicción. Es decir, el predictor inter puede determinar solo los vectores de movimiento unipredicción como candidatos a vectores de movimiento en el primer conjunto de candidatos a vector de movimiento.
[0285] El predictor inter puede seleccionar solo candidatos a vectores de movimiento unipredicción del primer conjunto de candidatos a vector de movimiento.
[0286] Solo se puede usar el vector de movimiento unipredicción para predecir un bloque pequeño. El vector de movimiento bipredicción puede usarse para predecir un bloque grande. Por ejemplo, el proceso de predicción puede incluir juzgar el tamaño del bloque de imagen. Cuando se considera que el tamaño del bloque de imagen es mayor que un umbral, la predicción puede incluir seleccionar el primer vector de movimiento de un primer conjunto de candidatos a vectores de movimiento, y el primer conjunto de candidatos a vector de movimiento puede contener vectores de movimiento unipredicción y/o bipredicción. Cuando se considera que el tamaño del bloque de imagen no es mayor que el umbral, la predicción puede incluir seleccionar el primer vector de movimiento de un primer conjunto de candidatos a vector de movimiento, y el primer conjunto de candidatos a vectores de movimiento puede contener solo vectores de movimiento unipredicción.
[0287] Implementaciones y aplicaciones
[0288] Como se describe en cada una de las realizaciones anteriores, cada bloque funcional u operacional puede realizarse típicamente como una MPU (unidad de microprocesamiento) y memoria, por ejemplo. Además, los procesos realizados por cada uno de los bloques funcionales pueden realizarse como una unidad de ejecución de programa, como un procesador que lee y ejecuta software (un programa) grabado en un medio de grabación como la ROM. El software puede ser distribuido. El software puede grabarse en una variedad de soportes de grabación, como la memoria de semiconductores. Cabe señalar que cada bloque funcional también puede realizarse como hardware (circuito dedicado).
[0289] El procesamiento descrito en cada una de las realizaciones puede realizarse mediante procesamiento integrado usando un único aparato (sistema) y, alternativamente, puede realizarse mediante procesamiento descentralizado usando una pluralidad de aparatos. Además, el procesador que ejecuta el programa descrito anteriormente puede ser un solo procesador o una pluralidad de procesadores. En otras palabras, se puede realizar procesamiento integrado y, alternativamente, se puede realizar procesamiento descentralizado.
[0290] Las realizaciones de la presente divulgación no se limitan a las realizaciones ejemplares anteriores; se pueden realizar diversas modificaciones a las realizaciones ejemplares, cuyos resultados también se incluyen dentro del alcance de las realizaciones de la presente divulgación.
[0291] A continuación, se describirán ejemplos de aplicación del procedimiento de codificación de fotogramas en movimiento (procedimiento de codificación de imágenes) y el procedimiento de decodificación de fotogramas en movimiento (procedimiento de decodificación de imágenes) descrito en cada una de las realizaciones anteriores, así como varios sistemas que implementan los ejemplos de aplicación. Dicho sistema puede caracterizarse como incluyendo una codificadora de imagen que emplea el procedimiento de codificación de imágenes, un decodificador de imagen que emplea el procedimiento de decodificación de imágenes, o un codificador-decodificador de imágenes que incluye tanto el codificador de imagen como el decodificador de imagen. Otras configuraciones de dicho sistema pueden modificarse caso por caso.
[0292] Ejemplos de uso
[0293] La FIG.26 ilustra una configuración general del sistema de suministro de contenido ex100 adecuado para implementar un servicio de distribución de contenido. El área en la que se proporciona el servicio de comunicación se divide en celdas de tamaños deseados, y las estaciones base ex106, ex107, ex108, ex109 y ex110, que en el ejemplo ilustrado son estaciones inalámbricas fijas, están ubicadas en las respectivas celdas.
[0294] En el sistema de suministro de contenido ex100, dispositivos que incluyen el ordenador ex111, el dispositivo de juegos ex112, la cámara ex113, el electrodoméstico ex114 y el teléfono inteligente ex115 están conectados a internet ex101 a través del proveedor de servicios ex102 o red de comunicaciones ex104 y estaciones base ex106 a ex110. El sistema de suministro de contenido ex100 puede combinar y conectar cualquier combinación de los dispositivos anteriores. En diversas implementaciones, los dispositivos pueden estar conectados directa o indirectamente mediante una red telefónica o comunicación de campo cercano, en lugar de mediante estaciones base ex106 a ex110. Además, el servidor de transmisión ex103 puede conectarse a dispositivos como el ordenador ex111, el dispositivo de juegos ex112, la cámara ex113, el electrodoméstico ex114 y el teléfono inteligente ex115 a través de, por ejemplo, internet ex101. El servidor de transmisión ex103 también puede estar conectado, por ejemplo, a un terminal en un punto de acceso en el avión ex117 vía satélite ex116.
[0295] Cabe señalar que en lugar de las estaciones base ex106 a ex110, se pueden usar puntos de acceso inalámbricos o puntos de acceso. El servidor de transmisión ex103 puede conectarse directamente a la red de comunicaciones ex104 en lugar de a través de internet ex101 o proveedor de servicios de internet ex102, y puede conectarse directamente al avión ex117 en lugar de vía satélite ex116.
[0296] La cámara ex113 es un dispositivo capaz de capturar imágenes fijas y vídeo, como una cámara digital. El teléfono inteligente ex115 es un dispositivo inteligente, teléfono móvil o Sistema de telefonía personal portátil (PHS) que puede operar bajo los estándares de sistemas de comunicaciones móviles de los sistemas 2G, 3G, 3.9G y 4G, así como bajo el sistema 5G de próxima generación.
[0297] El electrodoméstico ex114 es, por ejemplo, un frigorífico o un dispositivo incluido en un sistema de cogeneración de pila de combustible doméstico.
[0298] En el sistema ex100 que proporciona contenido, un terminal que incluye una función de captura de imágenes y/o vídeo es capaz de, por ejemplo, transmisión en directo conectándose al servidor de transmisión ex103 a través de, por ejemplo, la estación base ex106. Al transmitir en directo, un terminal (por ejemplo, ordenador ex111, dispositivo de juego ex112, cámara ex113, electrodoméstico ex114, teléfono inteligente ex115 o avión ex117) puede realizar el procesamiento de codificación descrito en las realizaciones anteriores sobre imágenes fijas o contenido de vídeo capturado por un usuario a través del terminal, puede multiplexar datos de vídeo obtenidos mediante la codificación y datos de audio obtenidos mediante la codificación correspondiente al vídeo, y puede transmitir los datos obtenidos al servidor de transmisión ex103. En otras palabras, el terminal funciona como codificador de imagen de acuerdo con un aspecto de la presente divulgación.
[0299] El servidor de transmisión ex103 transmitía datos de contenido a los clientes que solicitaban la transmisión. Ejemplos de clientes incluyen ex111 de ordenador, ex112 de dispositivos de juego, ex113 de cámara, electrodomésticos ex114, teléfono inteligente ex115 y terminales dentro del avión ex117, capaces de decodificar los datos codificados descritos anteriormente. Los dispositivos que reciben los datos transmitidos decodifican y reproducen los datos recibidos. En otras palabras, cada dispositivo puede funcionar como decodificador de imágenes, de acuerdo con un aspecto de la presente divulgación.
[0300] Procesamiento descentralizado
[0301] El servidor de transmisión ex103 puede realizarse como una pluralidad de servidores u ordenadores entre los cuales se dividen tareas como el procesamiento, grabación y transmisión de datos. Por ejemplo, el servidor de transmisión ex103 puede realizarse como una red de distribución de contenidos (CDN) que transmite contenido a través de una red que conecta múltiples servidores de borde ubicados en todo el mundo. En una CDN, un servidor de borde físicamente cerca del cliente se asigna dinámicamente al cliente. El contenido se almacena en caché y se transmite al servidor de borde para reducir los tiempos de carga. En el caso, por ejemplo, de algún tipo de error o cambio en la conectividad debido, por ejemplo, a un pico de tráfico, es posible transmitir datos de forma estable a altas velocidades, ya que es posible evitar las partes afectadas de la red dividiendo, por ejemplo, el procesamiento entre una pluralidad de servidores de borde o conmutando las tareas de transmisión a otro servidor de borde y continuando la transmisión. La descentralización no se limita solo a la división del procesamiento para transmisión; La codificación de los datos capturados puede dividirse y realizarse por los terminales, en el lado del servidor, o en ambos. En un ejemplo, en la codificación típica, el procesamiento se realiza en dos bucles. El primer bucle es para detectar lo complicada que es la imagen trama por trama o escena por escena, o para detectar la carga de codificación. El segundo bucle es para un procesamiento que mantiene la calidad de imagen y mejora la eficiencia de codificación. Por ejemplo, es posible reducir la carga de procesamiento de los terminales y mejorar la calidad y eficiencia de codificación del contenido haciendo que los terminales realicen el primer bucle de codificación y que el lado servidor que recibió el contenido realice el segundo bucle de codificación. En tal caso, al recibir una solicitud de decodificación, es posible que los datos codificados resultantes del primer bucle realizado por un terminal sean recibidos y reproducidos en otro terminal aproximadamente en tiempo real. Esto permite lograr una transmisión fluida y en tiempo real.
[0302] En otro ejemplo, la cámara ex113 o similar extrae una cantidad de característica de una imagen, comprime datos relacionados con esa cantidad de característica como metadatos y transmite los metadatos comprimidos a un servidor. Por ejemplo, el servidor determina la importancia de un objeto basándose en la cantidad de característica y modifica la precisión de cuantización en consecuencia para realizar una compresión adecuada al significado (o significado del contenido) de la imagen. Los datos de cantidad de características son especialmente efectivos para mejorar la precisión y eficiencia de la predicción del vector de movimiento durante la segunda pasada de compresión realizada por el servidor. Además, la codificación con una carga de procesamiento relativamente baja, como la codificación de longitud variable (VLC), puede ser gestionada por el terminal, y la codificación con una carga de procesamiento relativamente alta, como la codificación aritmética binaria adaptativa al contexto (CABAC), puede ser gestionada por el servidor.
[0303] En otro ejemplo, hay casos en los que una pluralidad de vídeos de aproximadamente la misma escena es capturada por una pluralidad de terminales, por ejemplo, en un estadio, centro comercial o fábrica. En tal caso, por ejemplo, la codificación puede descentralizarse dividiendo las tareas de procesamiento entre la pluralidad de terminales que capturaron los vídeos y, si es necesario, otros terminales que no capturaron los vídeos, y el servidor, por unidad. Las unidades pueden ser, por ejemplo, grupos de fotogramas (GOP), fotogramas o mosaicos resultantes de dividir un fotograma. Esto permite reducir los tiempos de carga y lograr una transmisión más cercana al tiempo real.
[0304] Dado que los vídeos representan aproximadamente la misma escena, el servidor puede llevar a cabo la gestión y/o las instrucciones para que los vídeos capturados por los terminales puedan ser cruzados. Además, el servidor puede recibir datos codificados de los terminales, cambiar la relación de referencia entre los ítems de datos, o corregir o reemplazar fotogramas por sí mismos, y luego realizar la codificación. Esto permite generar un flujo con mayor calidad y eficiencia para los ítems individuales de datos.
[0305] Además, el servidor puede transmitir datos de vídeo tras realizar la transcodificación para convertir el formato de codificación de los datos de vídeo. Por ejemplo, el servidor puede convertir el formato de codificación de MPEG a VP (por ejemplo, VP9), y puede convertir H.264 a H.265.
[0306] De este modo, la codificación puede realizarse mediante un terminal o uno o más servidores. Por lo tanto, aunque el dispositivo que realiza la codificación se denomina “servidor” o “terminal” en la siguiente descripción, algunos o todos los procesos realizados por el servidor pueden ser realizados por el terminal, y del mismo modo algunos o todos los procesos realizados por el terminal pueden ser realizados por el servidor. Esto también se aplica a los procesos de decodificación.
[0307] 3D, multiángulo
[0308] Ha habido un aumento en el uso de imágenes o vídeos combinados a partir de imágenes o vídeos de diferentes escenas capturadas simultáneamente, o de la misma escena captada desde diferentes ángulos, por una pluralidad de terminales como la cámara ex113 y/o el teléfono inteligente ex115. Los vídeos capturados por los terminales se combinan basándose, por ejemplo, en la relación posicional relativa obtenida por separado entre los terminales, o en regiones de un vídeo que tienen puntos de característica de emparejamiento.
[0309] Además de la codificación de fotogramas en movimiento bidimensionales, el servidor puede codificar una imagen fija basada en el análisis de la escena de un fotograma en movimiento, ya sea automáticamente o en un momento especificado por el usuario, y transmitir la imagen fija codificada a un terminal de recepción. Además, cuando el servidor puede obtener la relación posicional relativa entre los terminales de captura de vídeo, además de fotogramas en movimiento bidimensionales, el servidor puede generar geometría tridimensional de una escena basada en vídeos de la misma escena capturados desde diferentes ángulos. El servidor puede codificar por separado datos tridimensionales generados, por ejemplo, a partir de una nube de puntos y, basándose en el reconocimiento o seguimiento de una persona u objeto usando datos tridimensionales, puede seleccionar o reconstruir y generar un vídeo para ser transmitido a un terminal de recepción, a partir de vídeos capturados por una pluralidad de terminales. Esto permite al usuario disfrutar de una escena seleccionando libremente vídeos correspondientes a los terminales de captura de vídeo, y permite al usuario disfrutar del contenido obtenido extrayendo un vídeo en un punto de vista seleccionado a partir de datos tridimensionales reconstruidos a partir de una pluralidad de imágenes o vídeos. Además, al igual que con el vídeo, el sonido puede grabarse desde ángulos relativamente diferentes, y el servidor puede multiplexar audio desde un ángulo o espacio específico con el vídeo correspondiente, y transmitir el vídeo y audio multiplexados.
[0310] En los últimos años, el contenido que es una combinación del mundo real y uno virtual, como los contenidos de realidad virtual (VR) y realidad aumentada (AR), también se ha vuelto popular. En el caso de imágenes VR, el servidor puede crear imágenes desde los puntos de vista tanto del ojo izquierdo como del derecho, y realizar codificaciones que toleran la referencia entre las dos imágenes desde el punto de vista, como la codificación multivista (MVC), y, alternativamente, puede codificar las imágenes como flujos separados sin referencia. Cuando las imágenes se decodifican como flujos separados, los flujos pueden sincronizarse al reproducirse, para recrear un espacio tridimensional virtual de acuerdo con el punto de vista del usuario.
[0311] En el caso de imágenes AR, el servidor superpone información de objetos virtuales existentes en un espacio virtual sobre información de cámara que representa un espacio del mundo real, basándose en una posición o movimiento tridimensional desde la perspectiva del usuario. El decodificador puede obtener o almacenar información de objetos virtuales y datos tridimensionales, generar imágenes bidimensionales basadas en el movimiento desde la perspectiva del usuario y luego generar datos superpuestos conectando las imágenes de forma fluida. Alternativamente, el decodificador puede transmitir al servidor movimiento desde la perspectiva del usuario además de una solicitud de información sobre objetos virtuales. El servidor puede generar datos superpuestos basados en datos tridimensionales almacenados en el servidor de acuerdo con el movimiento recibido, y codificar y transmitir los datos superpuestos generados al decodificador. Cabe señalar que los datos superpuestos incluyen, además de los valores RGB, un valor α que indica transparencia, y el servidor establece el valor de α para secciones distintas al objeto generado a partir de datos tridimensionales en, por ejemplo, 0, y puede realizar la codificación mientras esas secciones son transparentes.
[0312] Alternativamente, el servidor puede establecer el fondo en un valor RGB predeterminado, como una clave de crominancia, y generar datos en cuyas áreas distintas al objeto se establecen como fondo.
[0313] La decodificación de datos transmitidos de forma similar puede ser realizada por el cliente (es decir, los terminales), en el lado del servidor, o dividida entre ellos. En un ejemplo, un terminal puede transmitir una solicitud de recepción a un servidor, el contenido solicitado puede ser recibido y decodificado por otro terminal, y una señal decodificada puede transmitirse a un dispositivo que tenga una pantalla. Es posible reproducir datos de alta calidad de imagen descentralizando el procesamiento y seleccionando adecuadamente el contenido, independientemente de la capacidad de procesamiento del propio terminal de comunicaciones. En otro ejemplo más, mientras que un TV, por ejemplo, recibe datos de imagen de gran tamaño, una región de un fotograma, tal como un mosaico obtenido dividiendo el fotograma, puede ser decodificado y mostrado en un terminal personal o terminales de un espectador o espectadores del TV. Esto permite que los espectadores compartan una visión general y que cada uno revise su área asignada o inspeccione una región con más detalle y de cerca.
[0314] En situaciones en las que es posible una pluralidad de conexiones inalámbricas a distancias cercanas, medias y lejanas, tanto en interiores como en exteriores, puede ser posible recibir contenido de forma fluida utilizando un estándar de sistema de transmisión como MPEG-DASH. El usuario puede conmutar entre datos en tiempo real mientras selecciona libremente un decodificador o aparato de visualización, incluyendo el terminal del usuario, pantallas dispuestas en interiores o exteriores, etc. Además, utilizando, por ejemplo, información sobre la posición del usuario, se puede realizar la decodificación mientras se cambia qué terminal se encarga de la decodificación y cuál de la visualización del contenido. Esto permite mapear y mostrar información mientras el usuario se desplaza en ruta hacia un destino, en la pared de un edificio cercano en el que se instala un dispositivo capaz de mostrar contenido, o en una parte del suelo. Además, también es posible cambiar la tasa de bits de los datos recibidos basándose en la accesibilidad a los datos codificados en una red, como cuando los datos codificados se almacenan en caché en un servidor accesible rápidamente desde el terminal de recepción, o cuando los datos codificados se copian a un servidor de borde en un servicio de entrega de contenido.
[0315] Codificación escalable
[0316] El cambio de contenido se describirá con referencia a un flujo escalable, ilustrado en la FIG.27, que está codificado por compresión mediante la implementación del procedimiento de codificación de fotogramas en movimiento descrito en las realizaciones anteriores. El servidor puede tener una configuración en la que el contenido se conmuta aprovechando la escalabilidad temporal y/o espacial de un flujo, lo cual se logra mediante la división y codificación de capas, como se ilustra en la FIG.27. Cabe señalar que puede haber una pluralidad de flujos individuales que tienen el mismo contenido pero de calidad diferente. En otras palabras, al determinar qué capa decodificar basándose en factores internos, como la capacidad de procesamiento del lado del decodificador, y factores externos, como el ancho de banda de comunicación, el lado del decodificador puede conmutar libremente entre contenido de baja resolución y contenido de alta resolución mientras decodifica. Por ejemplo, en un caso en el que el usuario quiera seguir viendo, por ejemplo en casa en un dispositivo como una TV conectada a internet, un vídeo que el usuario había estado viendo previamente en el teléfono inteligente ex115 mientras se desplazaba, el dispositivo puede simplemente decodificar la misma transmisión a una capa diferente, lo que reduce la carga del lado del servidor.
[0317] Adicionalmente, además de la configuración descrita anteriormente, en la que la escalabilidad se logra como resultado de que los fotogramas se codifican por capa, con la capa de mejora por encima de la capa base, la capa de mejora puede incluir metadatos basados, por ejemplo, en información estadística de la imagen. El lado del decodificador puede generar contenido de alta calidad de imagen realizando imágenes de superresolución en un fotograma de la capa base basada en los metadatos. La imagen de superresolución puede mejorar la relación SN manteniendo la resolución y/o aumentando la resolución. Los metadatos incluyen información para identificar un coeficiente de filtro lineal o no lineal, como se usa en el procesamiento de superresolución, o información que identifica un valor de parámetro en el procesamiento de filtros, aprendizaje automático o un procedimiento de mínimos cuadrados utilizado en el procesamiento de superresolución.
[0318] Alternativamente, se puede proporcionar una configuración en la que un fotograma se divide, por ejemplo, en mosaicos de acuerdo con, por ejemplo, con el significado de un objeto en la imagen. En el lado del decodificador, solo se decodifica parcialmente una región seleccionando un mosaico para decodificar. Además, almacenando un atributo del objeto (persona, coche, balón, etc.) y una posición del objeto en el vídeo (coordenadas en imágenes idénticas) como metadatos, el lado del decodificador puede identificar la posición de un objeto deseado basándose en los metadatos y determinar qué mosaico o mosaicos incluyen ese objeto. Por ejemplo, como se ilustra en la FIG.28, los metadatos pueden almacenarse usando una estructura de almacenamiento de datos diferente a los datos de píxeles, como un mensaje SEI (información suplementaria de mejora) en HEVC. Estos metadatos indican, por ejemplo, la posición, tamaño o color del objeto principal.
[0319] Los metadatos pueden almacenarse en unidades de una pluralidad de fotogramas, como flujos, secuencias o unidades de acceso aleatorio. El lado del decodificador puede obtener, por ejemplo, el momento en que aparece una persona específica en el vídeo y, ajustando la información temporal con la de la unidad de fotograma, puede identificar un fotograma en la que el objeto está presente y determinar la posición del objeto en el fotograma.
[0320] Optimización de páginas web
[0321] La FIG.29 ilustra un ejemplo de pantalla de visualización de una página web en el ordenador ex111, por ejemplo. La FIG. 30 ilustra un ejemplo de una pantalla de visualización de una página web en el teléfono inteligente ex115, por ejemplo. Como se ilustra en la FIG.29 y la FIG.30, una página web puede incluir una pluralidad de enlaces a imágenes que son enlaces a contenido de imagen, y la apariencia de la página varía de acuerdo con el dispositivo utilizado para visualizar la página web. Cuando una pluralidad de enlaces de imagen son visibles en pantalla, hasta que el usuario seleccione explícitamente un enlace de imagen, o hasta que el enlace de imagen esté aproximadamente en el centro de la pantalla o el enlace completo de la imagen encaje en ella, el aparato de visualización (decodificador) puede mostrar, como enlaces de imagen, imágenes fijas incluidas en el contenido o fotogramas tipo I; puede mostrar vídeo como un gif animado usando una pluralidad de imágenes fijas o fotogramas tipo I; o puede recibir solo la capa base, y decodificar y mostrar el vídeo.
[0322] Cuando el usuario selecciona un enlace de imagen, el aparato de visualización realiza la decodificación dando la máxima prioridad a la capa base. Cabe señalar que si hay información en el código HTML de la página web que indica que el contenido es escalable, el aparato de visualización puede decodificar hasta la capa de mejora. Además, para garantizar la reproducción en tiempo real, antes de que se realice una selección o cuando el ancho de banda sea muy limitado, el aparato de visualización puede reducir el retardo entre el momento en que se decodifica la fotograma principal y el momento en que se muestra el fotograma decodificado (es decir, el retraso entre el inicio de la decodificación del contenido y la visualización del contenido) decodificando y mostrando solo fotogramas de referencia directa (fotogramas tipo I, fotogramas tipo P, fotogramas tipo B de referencia directa). Además, el aparato de visualización puede ignorar intencionadamente la relación de referencia entre fotogramas y decodificar de forma burda todos los fotogramas tipo B y P como fotogramas de referencia directa, para luego realizar la decodificación normal a medida que aumenta el número de fotogramas recibidos con el tiempo.
[0323] Conducción autónoma
[0324] Al transmitir y recibir datos fijos de imágenes o vídeo, como información del mapa bidimensional o tridimensional para conducción autónoma o conducción asistida de un automóvil, el terminal receptor puede recibir, además de datos de imagen pertenecientes a una o más capas, información sobre, por ejemplo, el clima o la construcción de carreteras como metadatos, y asociar los metadatos con los datos de imagen al decodificar. Cabe señalar que los metadatos pueden asignarse por capa y, alternativamente, simplemente multiplexarse con los datos de la imagen.
[0325] En tal caso, dado que el automóvil, dron, avión, etc., que contiene el terminal de recepción es móvil, el terminal de recepción puede recibir y realizar la decodificación sin interrupciones mientras conmuta entre estaciones base entre estaciones base ex106 a ex110 transmitiendo información que indica la posición del terminal de recepción. Además, de acuerdo con la selección realizada por el usuario, la situación del usuario y/o el ancho de banda de la conexión, el terminal de recepción puede seleccionar dinámicamente hasta qué punto se reciben los metadatos, o en qué medida se actualiza la información del mapa, por ejemplo.
[0326] En el sistema de suministro de contenido ex100, el cliente puede recibir, decodificar y reproducir, en tiempo real, información codificada transmitida por el usuario.
[0327] Transmisión de contenido individual
[0328] En el sistema de suministro de contenido ex100, además de alta calidad de imagen, contenido largo distribuido por una entidad de distribución de vídeo, también es posible la transmisión unicast o multicast de baja calidad de imagen y contenido corto de un individuo. Este tipo de contenido de individuos probablemente aumentará aún más en popularidad. El servidor puede primero realizar el procesamiento de edición del contenido antes del procesamiento de codificación, para refinar el contenido individual. Esto puede lograrse usando la siguiente configuración, por ejemplo. En tiempo real mientras se captura contenido de vídeo o imagen, o después de que el contenido ha sido capturado y acumulado, el servidor realiza un procesamiento de reconocimiento basado en los datos en bruto o codificados, como procesamiento de errores de captura, búsqueda de escenas, análisis de significados y/o procesamiento de detección de objetos. Luego, basándose en el resultado del procesamiento de reconocimiento, el servidor —ya sea cuando se lo solicita o automáticamente— edita el contenido, ejemplos de los cuales incluyen: corrección como la corrección de enfoque y/o desenfoque de movimiento; eliminar escenas de baja prioridad, como las que tienen poco brillo en comparación con otros fotogramas, o que están desenfocadas; ajuste de bordes de objetos; y ajuste de tonos de color. El servidor codifica los datos editados basándose en el resultado de la edición. Se sabe que los vídeos excesivamente largos suelen tener menos visualizaciones. Por lo tanto, para mantener el contenido dentro de una longitud específica que escale con la duración del vídeo original, el servidor puede, además de las escenas de baja prioridad descritas anteriormente, recortar automáticamente escenas con poco movimiento, basándose en el resultado de procesamiento de imagen. Alternativamente, el servidor puede generar y codificar un resumen de vídeo basado en el resultado de un análisis del significado de una escena.
[0329] Puede haber casos en los que contenido individual incluya contenido que infringe derechos de autor, derechos morales, derechos de retrato, etc. Este tipo de situaciones puede dar lugar a una situación desfavorable para el creador, como cuando el contenido se comparte más allá del alcance previsto por el creador. Por lo tanto, antes de codificar, el servidor puede, por ejemplo, editar imágenes para difuminar los rostros de personas en la periferia de la pantalla o difuminar el interior de una casa, por ejemplo. Además, el servidor puede configurarse para reconocer los rostros de personas distintas de una persona registrada en las imágenes a codificar, y cuando dichos rostros aparecen en una imagen, puede aplicar, por ejemplo, un filtro mosaico al rostro de la persona. Alternativamente, como pre o postprocesamiento para codificación, el usuario puede especificar, por motivos de derechos de autor, una región de una imagen que incluya a una persona o una región del fondo a procesar. El servidor puede procesar la región especificada, por ejemplo, reemplazando la región por una imagen diferente o difuminando la región. Si la región incluye a una persona, la persona puede ser rastreada en el fotograma en movimiento, y la región de la cabeza de la persona puede ser reemplazada por otra imagen a medida que se mueve.
[0330] Dado que existe una demanda de visualización en tiempo real del contenido producido por individuos, que suele ser pequeño en tamaño de datos, el decodificador primero recibe la capa base como prioridad más alta y realiza la decodificación y reproducción, aunque esto puede variar de acuerdo con el ancho de banda. Cuando el contenido se reproduce dos o más veces, como cuando el decodificador recibe la capa de mejora durante la decodificación y reproducción de la capa base, y repite la reproducción en bucle, puede reproducir un vídeo de alta calidad de imagen incluyendo la capa de mejora. Si el flujo se codifica usando esta codificación escalable, el vídeo puede tener baja calidad cuando está en un estado no seleccionado o al inicio del vídeo, pero puede ofrecer una experiencia en la que la calidad de imagen del flujo mejora progresivamente de manera inteligente. Esto no se limita solo a la codificación escalable; la misma experiencia puede ofrecerse configurando un solo flujo de un flujo de baja calidad reproducido por primera vez y un segundo flujo codificado usando el primer flujo como referencia.
[0331] Otros ejemplos de implementación y aplicación
[0332] La codificación y decodificación pueden realizarse mediante LSI (circuito de integración a gran escala) ex500 (véase FIG. 26), que normalmente se incluye en cada terminal. El LSI ex500 puede configurarse con un solo chip o una pluralidad de chips. El software para codificar y decodificar fotogramas en movimiento puede integrarse en algún tipo de medio de grabación (como un CD-ROM, un disco flexible o un disco duro) que sea legible, por ejemplo, por el ordenador ex111, y la codificación y decodificación pueden realizarse mediante el software. Además, cuando el teléfono inteligente ex115 está equipado con una cámara, los datos de vídeo obtenidos por la cámara pueden transmitirse. En este caso, los datos de vídeo están codificados por LSI ex500 incluido en el teléfono inteligente ex115. Cabe señalar que LSI ex500 puede configurarse para descargar y activar una aplicación. En tal caso, el terminal primero determina si es compatible con el esquema utilizado para codificar el contenido o si es capaz de ejecutar un servicio específico. Cuando el terminal no es compatible con el esquema de codificación del contenido, o cuando el terminal no es capaz de ejecutar un servicio específico, el terminal primero descarga un códec o software de aplicación y luego obtiene y reproduce el contenido.
[0333] Aparte del ejemplo del sistema de suministro de contenido ex100 que utiliza internet ex101, al menos el codificador de fotogramas en movimiento (codificador de imágenes) o el decodificador de fotogramas en movimiento (decodificador de imágenes) descrito en las realizaciones anteriores pueden implementarse en un sistema de radiodifusión digital. El mismo procesamiento de codificación y procesamiento de decodificación puede aplicarse para transmitir y recibir ondas de radio de difusión superpuestas con datos multiplexados de audio y vídeo usando, por ejemplo, un satélite, aunque esto esté orientado a multicast, mientras que unicast es más sencillo con el sistema ex100 que proporciona contenido.
[0334] Configuración de hardware
[0335] La FIG. 31 ilustra más detalles del teléfono inteligente ex115 que se muestran en la FIG. 26. La FIG. 32 ilustra un ejemplo de configuración del teléfono inteligente ex115. El teléfono inteligente ex115 incluye la antena ex450 para transmitir y recibir ondas de radio hacia y desde la estación base ex110, la cámara ex465 capaz de capturar vídeo e imágenes fijas, y la pantalla ex458 que muestra datos decodificados, como el vídeo capturado por la cámara ex465 y el vídeo recibido por la antena ex450. El teléfono inteligente ex115 incluye además la interfaz de usuario ex466 como un panel táctil, la unidad de salida de audio ex457 como altavoz para enviar voz u otro audio, la unidad de entrada de audio ex456 como un micrófono para entrada de audio, memoria ex467 capaz de almacenar datos decodificados como vídeo capturado o imágenes fijas, audio grabado, vídeo recibido o imágenes fijas, y correo electrónico, así como datos decodificados, y la ranura ex464, que es una interfaz para SIM ex468 para autorizar el acceso a una red y a diversos datos. Cabe señalar que se puede usar memoria externa en lugar de memoria ex467.
[0336] El controlador principal ex460, que controla de forma completa la pantalla ex458 y la interfaz de usuario ex466, el circuito de alimentación ex461, el controlador de entrada de interfaz de usuario ex462, el procesador de señal de vídeo ex455, la interfaz de cámara ex463, el controlador de pantalla ex459, modulador/demodulador ex452, multiplexor/demultiplexor ex453, procesador de señales de audio ex454, ranura ex464 y memoria ex467 están conectados vía bus ex470.
[0337] Cuando el usuario activa el botón de encendido de la circuitería de alimentación ex461, el teléfono inteligente ex115 se enciende en estado operativo y cada componente recibe energía desde un paquete de baterías.
[0338] El teléfono inteligente ext15 realiza el procesamiento para, por ejemplo, llamadas y transmisión de datos, basándose en el control realizado por el controlador principal ex460, que incluye CPU, ROM y RAM. Al realizar llamadas, una señal de audio grabada por la unidad de entrada ex456 se convierte en una señal de audio digital por el procesador de señal de audio ex454, a la que se aplica el procesamiento de espectro extendido mediante el modulador/demodulador ex452 y la conversión digital-analógica, y el procesamiento de inversión de frecuencia es aplicado por el transmisor/receptor ex451, y la señal resultante se transmite mediante la antena ex450. Los datos recibidos se amplifican, se convierten en frecuencia y se convierten analógico-digital, el espectro de dispersión inverso se procesa mediante modulador/demodulador ex452, se convierte en una señal de audio analógica por el procesador de señales de audio ex454, y luego se envía desde la unidad de salida de audio ex457. En modo transmisión de datos, los datos de texto, imagen fija o vídeo son transmitidos por el controlador principal ex460 a través del controlador de entrada de la interfaz de usuario ex462, basándose en la operación de la interfaz ex466 del cuerpo principal, por ejemplo. Se realiza un procesamiento similar de transmisión y recepción. En modo transmisión de datos, al enviar un vídeo, imagen fija o vídeo y audio, el procesador de compresión de señales de vídeo ex455 codifica, mediante el procedimiento de codificación de fotogramas en movimiento descrito en las realizaciones anteriores, una señal de vídeo almacenada en memoria ex467 o una señal de vídeo de entrada de la cámara ex465, y transmite los datos de vídeo codificados al multiplexor/demultiplexor ex453. El procesador de señales de audio ex454 codifica una señal de audio grabada por la unidad de entrada de audio ex456 mientras la cámara ex465 captura un vídeo o imagen fija, y transmite los datos de audio codificados al multiplexor/demultiplexor ex453. El multiplexor/demultiplexor ex453 multiplexa los datos de vídeo codificados y los datos de audio codificados usando un esquema predeterminado, modula y convierte los datos usando el modulador/demodulador (circuito modulador/demodulador) ex452 y transmisor/receptor ex451, y transmite el resultado mediante la antena ex450.
[0340] Cuando se recibe un vídeo añadido en un correo electrónico o chat, o un vídeo enlazado desde una página web, por ejemplo, para decodificar los datos multiplexados recibidos vía antena ex450, multiplexor/demultiplexor ex453 desmultiplexa los datos multiplexados para dividir los datos multiplexados en un flujo de bits de datos de vídeo y otro de audio en un flujo de bits de datos de audio, suministra los datos de vídeo codificados al procesador de señal de vídeo ex455 mediante el bus síncrono ex470, y los datos de audio codificados al procesador de señal de audio ex 454 mediante el bus síncrono ex 470. El procesador de señales de vídeo ex455 decodifica la señal de vídeo usando un procedimiento de decodificación de fotogramas en movimiento correspondiente al procedimiento de codificación de fotogramas en movimiento descrito en las realizaciones anteriores, y el vídeo o una imagen fija incluida en el archivo de fotograma en movimiento vinculado se muestra en la pantalla el ex458 mediante el controlador de pantalla ex459. El procesador de señales de audio ex454 decodifica la señal de audio y envía audio desde la unidad de salida ex457. Dado que la transmisión en tiempo real está ganando popularidad, puede haber casos en los que la reproducción del audio sea socialmente inapropiada, dependiendo del entorno del usuario. En consecuencia, como valor inicial, es preferible una configuración en la que solo se reproduzcan datos de vídeo, es decir, que la señal de audio no se reproduzca; el audio puede sincronizarse y reproducirse solo cuando se recibe una entrada, como cuando el usuario hace clic en datos de vídeo.
[0342] Aunque en el ejemplo anterior se utilizó el teléfono inteligente ex115, son concebibles otras tres implementaciones: un terminal transceptor que incluye tanto un codificador como un decodificador; un terminal transmisor que incluye solo un codificador; y un terminal receptor que incluye solo un decodificador. En la descripción del sistema de radiodifusión digital, se da un ejemplo en el que se reciben o transmiten datos multiplexados obtenidos como resultado de la multiplexación de datos de vídeo con datos de audio. Sin embargo, los datos multiplexados pueden ser datos de vídeo multiplexados con datos distintos a los datos de audio, como datos de texto relacionados con el vídeo. Además, los datos de vídeo en sí, en lugar de datos multiplexados, pueden ser recibidos o transmitidos.
[0344] Aunque el controlador principal ex460 incluyendo una CPU se describe como el control de los procesos de codificación o decodificación, diversos terminales suelen incluir GPU. Por lo tanto, es aceptable una configuración en la que se procesa una gran área a la vez aprovechando la capacidad de rendimiento de la GPU a través de la memoria compartida por la CPU y la GPU, o memoria que incluye una dirección gestionada para permitir el uso común por parte de la CPU y la GPU. Esto permite acortar el tiempo de codificación, mantener la naturaleza en tiempo real del flujo y reducir el retardo. En particular, el procesamiento relacionado con la estimación de movimiento, el filtrado de desbloqueo, el desplazamiento adaptativo de muestra (SAO) y la transformada/cuantización puede realizarse eficazmente por la GPU en lugar de la CPU en unidades de fotogramas, por ejemplo, todo a la vez.

Claims (12)

1. REIVINDICACIONES
1. Un decodificador de imagen que comprende a:
circuitería (218, 220);
una memoria (210, 214) acoplada a la circuitería;
en el que la circuitería (218, 220), en operación, realiza:
dividir un bloque de imagen en una primera partición con forma no rectangular y una segunda partición a lo largo de un borde, con la primera partición y la segunda solapándose sobre un conjunto de píxeles a lo largo del borde;
seleccionar un primer vector de movimiento para la primera partición de candidatos a vectores de movimiento preparados para el bloque de imagen;
predecir los primeros valores del conjunto de píxeles de la primera partición usando el primer vector de movimiento;
seleccionar un segundo vector de movimiento para la segunda partición de los candidatos a vector de movimiento;
predecir los segundos valores del conjunto de píxeles de la segunda partición usando el segundo vector de movimiento;
ponderar los primeros valores y los segundos valores; y
decodificar la primera partición usando el primer vector de movimiento y la segunda partición usando el segundo vector de movimiento, en la que
la circuitería (218, 220), en operación:
decodifica el conjunto de píxeles usando los primeros valores ponderados y los segundos valores ponderados, al decodificar la primera partición y la segunda partición; y
seleccionar solo candidatos a vectores de movimiento unipredicción de los candidatos a vectores de movimiento como primer vector de movimiento y segundo vector de movimiento.
2. El decodificador de la reivindicación 1, en el que la segunda partición tiene una forma no rectangular.
3. El decodificador de la reivindicación 1, en el que la forma no rectangular es un triángulo.
4. El decodificador de la reivindicación 1, en el que la forma no rectangular se selecciona de un grupo que consiste de un triángulo, un trapezoide y un polígono con al menos cinco lados y ángulos.
5. El decodificador de cualquiera de las reivindicaciones 1 a 4, en el que los candidatos a vectores de movimiento incluyen vectores de movimiento de particiones adyacentes a la primera partición, y vectores de movimiento de particiones adyacentes a la segunda partición.
6. El decodificador de la reivindicación 5, en el que las particiones adyacentes a la primera partición y las particiones adyacentes a la segunda partición están fuera del bloque de imagen del que se dividen la primera partición y la segunda partición.
7. El decodificador de la reivindicación 5, en el que las particiones adyacentes son una o ambas particiones espacialmente adyacentes y particiones adyacentes temporales.
8. El decodificador de cualquiera de las reivindicaciones 5 a 7, en el que se adapta la circuitería (218, 220) (i) crear, en respuesta a la determinación de que la segunda partición tiene una forma no rectangular, los candidatos a vectores de movimiento que incluyen vectores de movimiento de particiones adyacentes a la segunda partición, excluyendo la primera partición; y
(ii) crear, en respuesta a la determinación de que la segunda partición tiene una forma rectangular, los candidatos a vectores de movimiento que incluyen vectores de movimiento de particiones adyacentes a la segunda partición, incluyendo a la primera.
9. Un decodificador de imagen que comprende:
un decodificador de entropía (202) que, en operación, recibe y decodifica un flujo de bits codificado para obtener coeficientes de transformada cuantizados, un cuantizador inverso y un transformador (204, 206) que, en operación, cuantiza inversamente los coeficientes de transformada cuantizada para obtener coeficientes de transformada y transforma inversamente los coeficientes para obtener residuales, un sumador (208) que, en operación, suma los residuales enviados por el cuantizador inverso y el transformador y las predicciones enviadas desde un controlador de predicción para reconstruir bloques, y
el controlador de predicción (220) acoplado a un predictor inter, un predictor intra y una memoria, en el que el predictor inter, en operación, genera una predicción de un bloque actual basada en un bloque de referencia en un fotograma de referencia decodificado y el predictor intra, en la operación, genera una predicción de un bloque actual basada en un bloque de referencia decodificado en un fotograma actual; en el que
el controlador de predicción (220), en operación, (i) divide un bloque de imagen en una primera partición de forma no rectangular y una segunda partición a lo largo de un borde, la primera partición y la segunda partición solapándose sobre un conjunto de píxeles a lo largo del borde; (ii) selecciona un vector de primer movimiento para la primera partición de candidatos a vectores de movimiento preparados para el bloque de imagen; (iii) predice los primeros valores del conjunto de píxeles de la primera partición usando el primer vector de movimiento; (iv) selecciona un segundo vector de movimiento para la segunda partición de entre los candidatos a vector de movimiento; (v) predice los segundos valores del conjunto de píxeles de la segunda partición usando el segundo vector de movimiento; (vi) pondera los primeros valores y los segundos valores; y (vii) decodifica la primera partición usando el primer vector de movimiento y la segunda partición usando el segundo vector de movimiento, en el que el controlador de predicción (220), en operación:
decodifica el conjunto de píxeles usando los primeros valores ponderados y los segundos valores ponderados, al decodificar la primera partición y la segunda partición; y selecciona solo candidatos a vectores de movimiento unipredicción de los candidatos a vectores de movimiento como primer vector de movimiento y segundo vector de movimiento.
10. El decodificador de la reivindicación 9, en la que la segunda partición tiene una forma no rectangular.
11. Un procedimiento de decodificación de imágenes que comprende:
dividir (S3001) un bloque de imagen en una primera partición de forma no rectangular y una segunda partición a lo largo de un borde, solapándose la primera partición y la segunda sobre un conjunto de píxeles a lo largo del borde;
seleccionar (S3002) un vector de primer movimiento para la primera partición de candidatos a vectores de movimiento preparados para el bloque de imagen;
predecir los primeros valores del conjunto de píxeles de la primera partición usando el primer vector de movimiento; seleccionar (S3003) un segundo vector de movimiento para la segunda partición de los candidatos a vectores de movimiento;
predecir los segundos valores del conjunto de píxeles de la segunda partición usando el segundo vector de movimiento;
ponderar los primeros valores y los segundos valores; y
decodificar (S3005) la primera partición usando el primer vector de movimiento y la segunda partición usando el segundo vector de movimiento;
decodificar la primera partición y la segunda partición incluye decodificar el conjunto de píxeles usando los primeros valores ponderados y los segundos valores ponderados, en los que solo se seleccionan candidatos a vectores de movimiento unipredicción entre los candidatos a vectores de movimiento como primer vector de movimiento y segundo vector de movimiento.
12. El procedimiento de la reivindicación 11, en el que la segunda partición tiene una forma no rectangular.
ES18848245T 2017-08-22 2018-08-10 Image decoder and image decoding method Active ES3055707T3 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201762548631P 2017-08-22 2017-08-22
US201862698785P 2018-07-16 2018-07-16
PCT/JP2018/030059 WO2019039322A1 (en) 2017-08-22 2018-08-10 IMAGE ENCODER, IMAGE DECODER, IMAGE ENCODING METHOD, AND IMAGE DECODING METHOD

Publications (1)

Publication Number Publication Date
ES3055707T3 true ES3055707T3 (en) 2026-02-13

Family

ID=65438980

Family Applications (1)

Application Number Title Priority Date Filing Date
ES18848245T Active ES3055707T3 (en) 2017-08-22 2018-08-10 Image decoder and image decoding method

Country Status (10)

Country Link
US (8) US11223844B2 (es)
EP (2) EP3673656B1 (es)
JP (5) JP7179832B2 (es)
KR (2) KR20200038943A (es)
CN (7) CN116527935B (es)
BR (1) BR112020001991A2 (es)
ES (1) ES3055707T3 (es)
MX (6) MX2020001886A (es)
TW (2) TWI836681B (es)
WO (1) WO2019039322A1 (es)

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ES3055707T3 (en) * 2017-08-22 2026-02-13 Panasonic Ip Corp America Image decoder and image decoding method
CN117478879A (zh) * 2017-10-16 2024-01-30 数字洞察力有限公司 用于将图像编码/解码的方法和存储比特流的记录介质
CN108198145B (zh) * 2017-12-29 2020-08-28 百度在线网络技术(北京)有限公司 用于点云数据修复的方法和装置
CA3103654C (en) * 2018-06-15 2023-09-26 Huawei Technologies Co., Ltd. Method and apparatus for intra prediction
US11695967B2 (en) * 2018-06-22 2023-07-04 Op Solutions, Llc Block level geometric partitioning
CN118301327A (zh) * 2018-07-04 2024-07-05 松下电器(美国)知识产权公司 编码装置、解码装置、和非暂时性的计算机可读介质
CN119363986A (zh) * 2018-07-17 2025-01-24 松下电器(美国)知识产权公司 用于视频编码的系统和方法
CN113287317B (zh) 2018-10-23 2023-04-28 北京字节跳动网络技术有限公司 并置的局部照明补偿和修改的帧间编解码工具
WO2020084502A1 (en) * 2018-10-23 2020-04-30 Beijing Bytedance Network Technology Co., Ltd. Video processing using local illumination compensation
US10778977B2 (en) 2018-12-05 2020-09-15 Qualcomm Incorporated Triangle motion information for video coding
US20200213595A1 (en) * 2018-12-31 2020-07-02 Comcast Cable Communications, Llc Methods, Systems, And Apparatuses For Adaptive Processing Of Non-Rectangular Regions Within Coding Units
WO2020147747A1 (en) 2019-01-15 2020-07-23 Beijing Bytedance Network Technology Co., Ltd. Weighted prediction in video coding
WO2020147805A1 (en) 2019-01-17 2020-07-23 Beijing Bytedance Network Technology Co., Ltd. Deblocking filtering using motion prediction
BR112021016738A8 (pt) * 2019-03-08 2022-08-02 Jvckenwood Corp Dispositivo de codificação de imagem, método de codificação de imagem, programa de codificação de imagem, dispositivo de decodificação de imagem, método de decodificação de imagem e programa de decodificação de imagem
AR118250A1 (es) * 2019-03-08 2021-09-22 Jvckenwood Corp Dispositivos, métodos y programas de codificación y decodificación de imágenes en movimiento
CN118764633A (zh) * 2019-03-12 2024-10-11 现代自动车株式会社 用于有效地对残差块解码的方法和装置
KR20250044935A (ko) 2019-03-13 2025-04-01 엘지전자 주식회사 Dmvr 기반의 인터 예측 방법 및 장치
KR102664876B1 (ko) 2019-03-22 2024-05-10 로즈데일 다이나믹스 엘엘씨 Dmvr 및 bdof 기반의 인터 예측 방법 및 장치
US11140409B2 (en) 2019-03-22 2021-10-05 Lg Electronics Inc. DMVR and BDOF based inter prediction method and apparatus thereof
KR102772250B1 (ko) * 2019-03-22 2025-02-25 엘지전자 주식회사 Dmvr 기반의 인터 예측 방법 및 장치
CN113163205B (zh) * 2019-06-24 2022-11-01 杭州海康威视数字技术股份有限公司 一种编解码方法、装置及其设备
KR102925158B1 (ko) 2019-06-25 2026-02-09 에스케이텔레콤 주식회사 움직임정보 유도 방법 및 영상 복호화 장치
WO2020260766A1 (en) * 2019-06-26 2020-12-30 Nokia Technologies Oy Method, apparatus, computer program product for storing motion vectors for video encoding
WO2021003126A1 (en) * 2019-07-02 2021-01-07 Beijing Dajia Internet Information Technology Co., Ltd. Methods and apparatuses for video coding using triangle partition
EP4011073A1 (en) * 2019-08-06 2022-06-15 InterDigital VC Holdings France, SAS Secondary transform for video encoding and decoding
JP7474772B2 (ja) * 2019-08-29 2024-04-25 日本放送協会 符号化装置、復号装置、及びプログラム
US12075028B2 (en) 2019-09-20 2024-08-27 Electronics And Telecommunications Research Institute Image encoding/decoding method and device, and recording medium storing bitstream
KR102766987B1 (ko) * 2019-09-23 2025-02-13 주식회사 케이티 비디오 신호 처리 방법 및 장치
EP4022908A4 (en) * 2019-09-25 2022-11-09 Huawei Technologies Co., Ltd. METHOD AND DEVICE FOR SIMPLIFIED GEOMETRIC FUSION MODE FOR INTERPREDICTION
WO2021134393A1 (en) * 2019-12-31 2021-07-08 Huawei Technologies Co., Ltd. Method and apparatus of deblocking filtering between boundaries of blocks predicted using weighted prediction and non-rectangular merge modes
EP4091324A1 (en) 2020-04-30 2022-11-23 Huawei Technologies Co., Ltd. Triangulation-based adaptive subsampling of dense motion vector fields
TWI749676B (zh) 2020-08-03 2021-12-11 緯創資通股份有限公司 影像品質評估裝置及其影像品質評估方法
TWI743919B (zh) 2020-08-03 2021-10-21 緯創資通股份有限公司 視訊處理裝置及視訊串流的處理方法
WO2022047117A1 (en) * 2020-08-28 2022-03-03 Op Solutions, Llc Methods and systems of adaptive geometric partitioning
WO2022077495A1 (zh) * 2020-10-16 2022-04-21 Oppo广东移动通信有限公司 帧间预测方法、编码器、解码器以及计算机存储介质
TWI786497B (zh) 2020-12-22 2022-12-11 宏正自動科技股份有限公司 影像輸出裝置、影像接收裝置及影像傳輸方法

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1274252A3 (en) * 1995-08-29 2005-10-05 Sharp Kabushiki Kaisha Video coding device and video decoding device with a motion compensated interframe prediction
US7756348B2 (en) 2006-10-30 2010-07-13 Hewlett-Packard Development Company, L.P. Method for decomposing a video sequence frame
JP4448167B2 (ja) * 2007-12-28 2010-04-07 フェリカネットワークス株式会社 通信デバイス、リモートサーバおよび端末装置
JP2011023885A (ja) * 2009-07-14 2011-02-03 Canon Inc 映像符号化装置及び映像符号化方法
CN104967857B (zh) * 2010-01-19 2019-08-23 三星电子株式会社 对图像进行编码/解码的方法和设备
US8879632B2 (en) * 2010-02-18 2014-11-04 Qualcomm Incorporated Fixed point implementation for geometric motion partitioning
JP2012019447A (ja) * 2010-07-09 2012-01-26 Sony Corp 画像処理装置および方法
JP2012023597A (ja) 2010-07-15 2012-02-02 Sony Corp 画像処理装置及び画像処理方法
PL3661211T3 (pl) * 2010-07-20 2021-12-13 Ntt Docomo, Inc. Sposób predykcyjnego dekodowania obrazu
JP2012034213A (ja) * 2010-07-30 2012-02-16 Toshiba Corp 画像処理装置、画像処理システムおよび画像処理方法
KR101815723B1 (ko) * 2010-09-24 2018-01-05 선 페이턴트 트러스트 화상 부호화 방법, 화상 복호화 방법, 화상 부호화 장치, 및 화상 복호화 장치
JP5698541B2 (ja) * 2011-01-12 2015-04-08 株式会社Nttドコモ 画像予測符号化装置、画像予測符号化方法、画像予測符号化プログラム、画像予測復号装置、画像予測復号方法及び画像予測復号プログラム
US8917763B2 (en) * 2011-03-07 2014-12-23 Panasonic Corporation Motion compensation apparatus, video coding apparatus, video decoding apparatus, motion compensation method, program, and integrated circuit
EP2763415B1 (en) 2011-09-29 2020-04-15 Sharp Kabushiki Kaisha Image decoding apparatus for decoding partition information, image decoding method and image encoding apparatus
CA2883050C (en) * 2011-11-08 2015-07-14 Samsung Electronics Co., Ltd. Method and apparatus for motion vector determination in video encoding or decoding
EP4161078A1 (en) * 2011-11-11 2023-04-05 GE Video Compression, LLC Effective wedgelet partition coding using spatial prediction
BR122020008353B1 (pt) * 2011-12-28 2022-05-10 JVC Kenwood Corporation Dispositivo de codificação de foto em movimento e método de codificação de foto em movimento
CN104025601A (zh) * 2011-12-30 2014-09-03 数码士有限公司 编码三维图像的方法和设备以及解码方法和设备
US20130287093A1 (en) * 2012-04-25 2013-10-31 Nokia Corporation Method and apparatus for video coding
WO2014107074A1 (ko) * 2013-01-04 2014-07-10 삼성전자 주식회사 스케일러블 비디오의 부호화 및 복호화를 위한 움직임 보상 방법 및 장치
WO2015006884A1 (en) * 2013-07-19 2015-01-22 Qualcomm Incorporated 3d video coding with partition-based depth inter coding
WO2015055245A1 (en) * 2013-10-16 2015-04-23 Huawei Technologies Co., Ltd. A method for determining a corner video part of a partition of a video coding block
US10390034B2 (en) * 2014-01-03 2019-08-20 Microsoft Technology Licensing, Llc Innovations in block vector prediction and estimation of reconstructed sample values within an overlap area
US10110916B2 (en) 2014-04-22 2018-10-23 Sony Corporation Encoding device and encoding method
US10085028B2 (en) * 2014-06-26 2018-09-25 Futurewei Technologies, Inc. Method and device for reducing a computational load in high efficiency video coding
US10271057B2 (en) * 2014-11-04 2019-04-23 Vahagn Nurijanyan System and methods for image/video compression
EP3293975A4 (en) * 2015-09-08 2018-10-10 Samsung Electronics Co., Ltd. Device and method for entropy encoding and decoding
JP6638366B2 (ja) * 2015-12-14 2020-01-29 日本電気株式会社 映像符号化装置、映像符号化方法及び映像符号化プログラム
US10306258B2 (en) * 2016-01-29 2019-05-28 Google Llc Last frame motion vector partitioning
ES3055707T3 (en) * 2017-08-22 2026-02-13 Panasonic Ip Corp America Image decoder and image decoding method
WO2020094052A1 (en) * 2018-11-06 2020-05-14 Beijing Bytedance Network Technology Co., Ltd. Side information signaling for inter prediction with geometric partitioning
CN111418208B (zh) * 2018-11-06 2023-12-05 北京字节跳动网络技术有限公司 用于几何分割的权重推导
US10893298B2 (en) 2018-12-12 2021-01-12 Tencent America LLC Method and apparatus for video coding
US11463693B2 (en) * 2019-08-30 2022-10-04 Qualcomm Incorporated Geometric partition mode with harmonized motion field storage and motion compensation

Also Published As

Publication number Publication date
MX2024004989A (es) 2024-05-07
EP3673656B1 (en) 2025-11-19
KR20250024127A (ko) 2025-02-18
TW202425632A (zh) 2024-06-16
MX2024004992A (es) 2024-05-07
JP7579477B2 (ja) 2024-11-07
TW202312734A (zh) 2023-03-16
US11812049B2 (en) 2023-11-07
KR20200038943A (ko) 2020-04-14
CN116567265B (zh) 2025-11-07
CN116567266A (zh) 2023-08-08
US20250234028A1 (en) 2025-07-17
BR112020001991A2 (pt) 2020-08-18
US12483720B2 (en) 2025-11-25
EP3673656A4 (en) 2020-07-01
US12114004B2 (en) 2024-10-08
US20230107832A1 (en) 2023-04-06
CN116567265A (zh) 2023-08-08
MX2024004990A (es) 2024-05-07
WO2019039322A1 (en) 2019-02-28
TWI782073B (zh) 2022-11-01
JP2020532225A (ja) 2020-11-05
CN116527934A (zh) 2023-08-01
MX2020001886A (es) 2020-03-24
CN116582682A (zh) 2023-08-11
CN110999303A (zh) 2020-04-10
US11563969B2 (en) 2023-01-24
US11924456B2 (en) 2024-03-05
JP2025143441A (ja) 2025-10-01
JP7179832B2 (ja) 2022-11-29
JP2024054401A (ja) 2024-04-16
US20230118198A1 (en) 2023-04-20
US20230156214A1 (en) 2023-05-18
JP2023009233A (ja) 2023-01-19
CN116582682B (zh) 2025-11-07
JP7446393B2 (ja) 2024-03-08
TWI836681B (zh) 2024-03-21
CN116527933A (zh) 2023-08-01
US20230110758A1 (en) 2023-04-13
US20200014950A1 (en) 2020-01-09
US11856217B2 (en) 2023-12-26
CN116527935A (zh) 2023-08-01
CN116527935B (zh) 2025-11-07
JP7710081B2 (ja) 2025-07-17
MX2024004987A (es) 2024-05-07
MX2024004988A (es) 2024-05-07
US20220046266A1 (en) 2022-02-10
US20230145558A1 (en) 2023-05-11
US11223844B2 (en) 2022-01-11
CN116527934B (zh) 2025-11-11
CN116567266B (zh) 2025-11-07
EP3673656A1 (en) 2020-07-01
CN110999303B (zh) 2023-07-07
EP3673656C0 (en) 2025-11-19
EP4676057A2 (en) 2026-01-07
JP2025010211A (ja) 2025-01-20
TW201921943A (zh) 2019-06-01

Similar Documents

Publication Publication Date Title
ES3055707T3 (en) Image decoder and image decoding method
AU2023202734B2 (en) Image encoder, image decoder, image encoding method, and image decoding method
CN110999306B (zh) 图像编码器和图像解码器
ES2993476T3 (en) Encoding device, decoding device, encoding method and decoding method
ES3003036T3 (en) Decoding device and decoding method
TWI917877B (zh) 影像編碼器、影像解碼器及非暫時性電腦可讀取媒體