ES2954064T3 - Dispositivo de codificación, dispositivo de decodificación, procedimiento de codificación, procedimiento de decodificación y programa de compresión de imágenes - Google Patents

Dispositivo de codificación, dispositivo de decodificación, procedimiento de codificación, procedimiento de decodificación y programa de compresión de imágenes Download PDF

Info

Publication number
ES2954064T3
ES2954064T3 ES19808240T ES19808240T ES2954064T3 ES 2954064 T3 ES2954064 T3 ES 2954064T3 ES 19808240 T ES19808240 T ES 19808240T ES 19808240 T ES19808240 T ES 19808240T ES 2954064 T3 ES2954064 T3 ES 2954064T3
Authority
ES
Spain
Prior art keywords
block
partition
pixels
mode
blocks
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
ES19808240T
Other languages
English (en)
Inventor
Tadamasa Toma
Takahiro Nishi
Kiyofumi Abe
Ryuichi KANOH
Chong Soon Lim
Sughosh Pavan SHASHIDHAR
Ru Ling Liao
hai wei Sun
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 ES2954064T3 publication Critical patent/ES2954064T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/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/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/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Reduction Or Emphasis Of Bandwidth Of Signals (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Abstract

Un dispositivo de codificación (100) realiza la división en una pluralidad de bloques utilizando un conjunto de modos de división de bloques obtenido combinando uno o más modos de división de bloques que definen tipos de división. El conjunto de modos de división de bloques comprende: un primer modo de división de bloques en el que se definen el número de divisiones y la dirección de división para dividir un primer bloque; y un segundo modo de división de bloques en el que se definen el número de divisiones y la dirección de división para dividir un segundo bloque, que es uno de los bloques adquiridos al dividir el primer bloque. Cuando una división en el primer modo de bloque da como resultado tres bloques, el segundo bloque es el bloque central entre los bloques adquiridos al dividir el primer bloque, y la dirección de división del segundo modo de división de bloque es la misma que la dirección de división del primero. modo de división de bloques, entonces el segundo modo de división de bloques incluye sólo un modo de división de bloques en el que una división da como resultado tres bloques. (Traducción automática con Google Translate, sin valor legal)

Description

DESCRIPCION
Dispositivo de codificación, dispositivo de decodificación, procedimiento de codificación, procedimiento de decodificación y programa de compresión de imágenes
CAMPO TÉCNICO
La presente divulgación se refiere a procedimientos y aparatos para codificar y decodificar video e imágenes utilizando partición de bloques.
TÉCNICA ANTECEDENTE
En los procedimientos de codificación de imágenes y videos convencionales, una imagen normalmente se somete a partición de bloques y los procedimientos de codificación y decodificación se realizan a nivel de bloque. En el desarrollo reciente de estándares de video, los procedimientos de codificación y decodificación se pueden realizar en varios tamaños de bloque distintos de los tamaños típicos de 8 x 8 o 16x16. En una imagen, se puede utilizar un rango de tamaños de 4 x 4 a 256 x 256 para los procedimientos de codificación y decodificación de una imagen.
Lista de citas
NPL 1: H.265 (ISO/IEC 23008-2 HEVC (High Efficiency Video Coding))
NPL 2: T. Toma et al., “Description of SDR video coding technology proposal by Panasonic”, no. JVET-J0020; 10. JVET Meeting; San Diego 2018;
http://phenix.int-evry.fr/jvet/doc_end_user/documents/10_San%20Diego/wg11JVET-J0020-V1.zip
NPL 3: J. Ma et al., “Description of Core Experiment 1 (CEI): Partitioning”, no. m42841, 122. MPEG MEETING; San Diego 2018;http://phenix.int-evry.fr/mpeg/doc_end_user/documents/l22_San%20Diego/wg11/m42841-JVET-J1021-v5-JVET-J1021_v5.zip
RESUMEN DE LA INVENCIÓN PROBLEMA TÉCNICO
Para representar el rango de tamaños de 4 x 4 a 256 x 256, la información de partición de bloques, tal como los modos de partición de bloques (por ejemplo, árbol cuádruple, árbol binario y árbol ternario) y los indicadores de partición (por ejemplo, indicador de división) se determinan y señalan para un bloque. La sobrecarga de la señalización aumenta cuando aumenta la profundidad de la partición. Entonces, la mayor sobrecarga reduce la eficiencia de compresión de video (cf. NPL 1).
Los documentos NPL 2 y NPL 3 se refieren a técnicas para realizar partición jerárquicamente de un bloque de datos de imagen en una pluralidad de subbloques al utilizar una combinación de modos de partición, que incluyen la descomposición binaria y ternaria. Estos documentos divulgados que algunos modos de partición pueden no ser válidos o no estar permitidos para un determinado tamaño del bloque original. Esto, sin embargo, no tiene efecto sobre la eficiencia de compresión.
En vista de esto, es un objeto de la presente invención proporcionar un codificador, un decodificador y procedimientos correspondientes y productos de programas informáticos que sean capaces de mejorar la eficiencia de compresión en la codificación de información de partición de bloques.
Esto se logra mediante las características de las reivindicaciones independientes. Las realizaciones preferentes son la materia objeto de las reivindicaciones dependientes.
La invención se define por las reivindicaciones adjuntas. Cualquier referencia a realizaciones que no caen dentro del alcance de las reivindicaciones se debe entender como ejemplos útiles para comprender la invención.
Cabe señalar que los aspectos generales y específicos descritos anteriormente se pueden implementar utilizando un sistema, un procedimiento, un circuito integrado, un programa informático o un medio de grabación legible por ordenador, tal como un CD-ROM, o cualquier combinación arbitraria de sistemas, procedimientos, circuitos integrados, programas informáticos o medios de grabación legibles por ordenador.
EFECTO VENTAJOSO DE LA INVENCIÓN
La presente divulgación permite mejorar la eficiencia de compresión en la codificación de la información de partición de bloques.
BREVE DESCRIPCIÓN DE LOS DIBUJOS
La FIG. 1 es un diagrama de bloques que ilustra una configuración funcional del codificador de acuerdo con la Realización 1.
La FIG. 2 ilustra un ejemplo de división de bloques de acuerdo con la Realización 1.
La FIG. 3 es un gráfico que indica las funciones de base de transformación para cada tipo de transformación. La FIG. 4A ilustra un ejemplo de una forma de filtro utilizada en ALF.
La FIG. 4B ilustra otro ejemplo de una forma de filtro utilizada en ALF.
La FIG. 4C ilustra otro ejemplo de una forma de filtro utilizada en ALF.
La FIG. 5A ilustra 67 modos de intrapredicción utilizados en la intrapredicción.
La FIG. 5B es un diagrama de flujo para ilustrar un esquema de un procedimiento de corrección de imagen de predicción realizado a través del procesamiento de OBMC.
La FIG. 5C es un diagrama conceptual para ilustrar un esquema de un procedimiento de corrección de imagen de predicción realizado a través del procesamiento de OBMC.
La FIG. 5D ilustra un ejemplo de FRUC.
La FIG. 6 es para ilustrar la coincidencia de patrones (coincidencia bilateral) entre dos bloques a lo largo de una trayectoria de movimiento.
La FIG. 7 es para ilustrar la coincidencia de patrones (coincidencia de plantillas) entre una plantilla en el cuadro actual y un bloque en un cuadro de referencia.
La FIG. 8 es para ilustrar un modelo que asume un movimiento lineal uniforme.
La FIG. 9A es para ilustrar la derivación de un vector de movimiento de cada subbloque basado en vectores de movimiento de bloques vecinos.
La FIG. 9B es para ilustrar un esquema de un procedimiento para derivar un vector de movimiento a través del modo de fusión.
La FIG. 9C es un diagrama conceptual para ilustrar un esquema del procesamiento de DMVR.
La FIG. 9D es para ilustrar un esquema de un procedimiento de generación de imágenes de predicción utilizando un procedimiento de corrección de luminancia realizado a través del procesamiento de LIC. La FIG. 10 es un diagrama de bloques que ilustra una configuración funcional del dispositivo de decodificación de acuerdo con la Realización 1.
La FIG. 11 es un diagrama de flujo de un procedimiento de codificación de video de acuerdo con la Realización 2.
La FIG. 12 es un diagrama de flujo de un procedimiento de decodificación de video de acuerdo con la Realización 2.
La FIG. 13 es un diagrama de flujo de un procedimiento de codificación de video de acuerdo con la Realización 3.
La FIG. 14 es un diagrama de flujo de un procedimiento de decodificación de video de acuerdo con la Realización 3.
La FIG. 15 es un diagrama de bloques que ilustra la estructura de un codificador de video/imagen de acuerdo con la Realización 2 o 3.
La FIG. 16 es un diagrama de bloques que ilustra la estructura de un decodificador de video/imagen de acuerdo con la Realización 2 o 3.
La FIG. 17 ilustra ejemplos de posibles ubicaciones de un primer parámetro en un flujo de bits de video comprimido de acuerdo con la Realización 2 o 3.
La FIG. 18 ilustra ejemplos de posibles ubicaciones de un segundo parámetro en un flujo de bits de video comprimido de acuerdo con la Realización 2 o 3.
La FIG. 19 ilustra un ejemplo de un segundo parámetro que sigue después de un primer parámetro de acuerdo con la Realización 2 o 3.
La FIG. 20 ilustra un ejemplo en el que un segundo modo de partición no se selecciona para someter a partición un bloque de 2N píxeles por N píxeles, como se ilustra en la etapa (2c), en la Realización 2.
La FIG. 21 ilustra un ejemplo en el que un segundo modo de partición no se selecciona para someter a partición un bloque de N píxeles por 2N píxeles, como se ilustra en la etapa (2c), en la Realización 2.
La FIG. 22 ilustra un ejemplo en el que un segundo modo de partición no se selecciona para someter a partición un bloque de N píxeles por N píxeles, como se ilustra en la etapa (2c), en la Realización 2.
La FIG. 23 ilustra un ejemplo en el que un segundo modo de partición no se selecciona para someter a partición un bloque de N píxeles por N píxeles, como se ilustra en la etapa (2c), en la Realización 2.
La FIG. 24 ilustra un ejemplo de someter a partición un bloque de 2N píxeles por N píxeles utilizando un modo de partición seleccionado cuando no se va a seleccionar el segundo modo de partición, como se ilustra en la etapa (3), en la Realización 2.
La FIG. 25 ilustra un ejemplo de someter a partición un bloque de N píxeles por 2N píxeles utilizando un modo de partición seleccionado cuando no se va a seleccionar el segundo modo de partición, como se ilustra en la etapa (3), en la Realización 2.
La FIG. 26 ilustra un ejemplo de someter a partición un bloque de N píxeles por N píxeles utilizando un modo de partición seleccionado cuando no se va a seleccionar el segundo modo de partición, como se ilustra en la etapa (3), en la Realización 2.
La FIG. 27 ilustra un ejemplo de someter a partición un bloque de N píxeles por N píxeles utilizando un modo de partición seleccionado cuando no se va a seleccionar el segundo modo de partición, como se ilustra en la etapa (3), en la Realización 2.
La FIG. 28 ilustra ejemplos de modos de partición para someter a partición un bloque de N píxeles por N píxeles en la Realización 2. (a) a (h) muestran diferentes modos de partición.
La FIG. 29 ilustra ejemplos de tipos de partición y direcciones de partición para someter a partición un bloque de N píxeles por N píxeles en la Realización 3. (1), (2), (3), y (4) son diferentes tipos de partición, (1a), (2a), (3a), y (4a) son diferentes modos de partición de los tipos de partición relacionados en la dirección de partición vertical, y (1b), (2b), (3b), y (4b) son diferentes modos de partición de los tipos de partición relacionados en la dirección de partición horizontal.
La FIG. 30 ilustra una ventaja de codificar el tipo de partición antes que la dirección de partición en comparación con codificar la dirección de partición antes que el tipo de partición, de acuerdo con la Realización 3.
La FIG. 31A ilustra un ejemplo de dividir un bloque en subbloques utilizando un conjunto de modos de partición con pocos contenedores en los modos de partición de codificación.
La FIG. 31B ilustra un ejemplo de dividir un bloque en subbloques utilizando un conjunto de modos de partición con pocos contenedores en los modos de partición de codificación.
La FIG. 32A ilustra un ejemplo de dividir un bloque en subbloques utilizando un conjunto de modos de partición que aparece primero en un orden predeterminado de una pluralidad de conjuntos de modos de partición.
La FIG. 32B ilustra un ejemplo de dividir un bloque en subbloques utilizando un conjunto de modos de partición que aparece primero en un orden predeterminado de una pluralidad de conjuntos de modos de partición.
La FIG. 32C ilustra un ejemplo de dividir un bloque en subbloques utilizando un conjunto de modos de partición que aparece primero en un orden predeterminado de una pluralidad de conjuntos de modos de partición.
La FIG. 33 ilustra una configuración general de un sistema proveedor de contenido para implementar un servicio de distribución de contenido.
ilustra un ejemplo de una estructura de codificación en codificación escalable.
Figure imgf000004_0001
ilustra un ejemplo de una estructura de codificación en codificación escalable.
ilustra un ejemplo de una pantalla de visualización de una página web.
La FIG. 37 ilustra un ejemplo de una pantalla de visualización de una página web.
La FIG. 38 ilustra un ejemplo de un teléfono inteligente.
La FIG. 39 es un diagrama de bloques que ilustra un ejemplo de configuración de un teléfono inteligente.
La FIG. 40 es un diagrama que ilustra un ejemplo de una restricción en un modo de partición para dividir un bloque rectangular en tres subbloques.
La FIG. 41 es un diagrama que ilustra un ejemplo de una restricción en un modo de partición para dividir un bloque en dos subbloques.
La FIG. 42 es un diagrama que ilustra un ejemplo de una restricción en un modo de partición para dividir un bloque cuadrado en tres subbloques.
La FIG. 43 es un diagrama que ilustra un ejemplo de una restricción en un modo de partición para dividir un bloque rectangular en dos subbloques.
La FIG. 44 es un diagrama que ilustra un ejemplo de una restricción basada en la dirección de partición de un modo de partición para dividir un bloque no rectangular en dos subbloques.
La FIG. 45 es un diagrama que ilustra un ejemplo de una dirección de partición válida de un modo de partición para dividir un bloque no rectangular en dos subbloques.
DESCRIPCIÓN DE REALIZACIONES EJEMPLARES
A continuación, las realizaciones se describirán en detalle con referencia a los dibujos.
Tenga en cuenta que cada una de las realizaciones descritas a continuación muestra un ejemplo general o específico. Los valores numéricos, formas, materiales, componentes, disposición y conexión de los componentes, etapas, orden de las etapas, etc., indicados en las siguientes realizaciones son solo ejemplos, y por tanto no pretenden limitar el alcance de las reivindicaciones. Adicionalmente, entre los componentes de las siguientes realizaciones, los que no se mencionan en ninguna de las reivindicaciones independientes que definen los conceptos inventivos más amplios se describen como componentes opcionales.
REALIZACIÓN 1
En primer lugar, se presentará un esquema de la Realización 1 como un ejemplo de un codificador y un decodificador a los que son aplicables los procedimientos y/o configuraciones presentados en la descripción subsiguiente de aspectos de la presente divulgación. Tenga en cuenta que la Realización 1 es simplemente un ejemplo de un codificador y un decodificador a los que son aplicables los procedimientos y/o configuraciones presentados en la descripción de los aspectos de la presente divulgación. Los procedimientos y/o configuraciones presentados en la descripción de los aspectos de la presente divulgación también se pueden implementar en un codificador y un decodificador diferentes de aquellos de acuerdo con la Realización 1.
Cuando los procedimientos y/o configuraciones presentados en la descripción de los aspectos de la presente divulgación se aplican a la Realización 1, por ejemplo, se puede realizar cualquiera de los siguientes.
(1) en relación con el codificador o el decodificador de acuerdo con la Realización 1, entre los componentes incluidos en el codificador o el decodificador de acuerdo con la Realización 1, sustituyendo un componente correspondiente a un componente presentado en la descripción de los aspectos de la presente divulgación con un componente presentado en la descripción de los aspectos de la presente divulgación;
(2) en relación con el codificador o el decodificador de acuerdo con la Realización 1, implementar cambios discrecionales en las funciones o procedimientos implementados realizados por uno o más componentes incluidos en el codificador o el decodificador de acuerdo con la Realización 1, tal como la adición, sustitución o eliminación, etc., de dichas funciones o procedimientos implementados, luego sustituir un componente correspondiente a un componente presentado en la descripción de los aspectos de la presente divulgación con un componente presentado en la descripción de los aspectos de la presente divulgación;
(3) en relación con el procedimiento implementado por el codificador o el decodificador de acuerdo con la Realización 1, implementar cambios discrecionales tales como adición de procedimientos y/o sustitución, eliminación de uno o más de los procedimientos incluidos en el procedimiento y luego sustituir un procedimiento correspondiente a un procedimiento presentado en la descripción de los aspectos de la presente divulgación con un procedimiento presentado en la descripción de los aspectos de la presente divulgación;
(4) combinar uno o más componentes incluidos en el codificador o decodificador de acuerdo con la Realización 1 con un componente presentado en la descripción de los aspectos de la presente divulgación, un componente que incluye una o más funciones incluidas en un componente presentado en la descripción de los aspectos de la presente divulgación, o un componente que implementa uno o más procedimientos implementados por un componente presentado en la descripción de los aspectos de la presente divulgación;
(5) combinar un componente que incluye una o más funciones incluidas en uno o más componentes incluidos en el codificador o decodificador de acuerdo con la Realización 1, o un componente que implementa uno o más procedimientos implementados por uno o más componentes incluidos en el codificador o decodificador de acuerdo con la Realización 1 con un componente presentado en la descripción de los aspectos de la presente divulgación, un componente que incluye una o más funciones incluidas en un componente presentado en la descripción de los aspectos de la presente divulgación, o un componente que implementa uno o más procedimientos implementados por un componente presentado en la descripción de los aspectos de la presente divulgación;
(6) en relación con el procedimiento implementado por el codificador o el decodificador de acuerdo con la Realización 1, entre los procedimientos incluidos en el procedimiento, sustituir un procedimiento correspondiente a un procedimiento presentado en la descripción de los aspectos de la presente divulgación con un procedimiento presentado en la descripción de aspectos de la presente divulgación; y
(7) combinar uno o más procedimientos incluidos en el procedimiento implementado por el codificador o el decodificador de acuerdo con la Realización 1 con un procedimiento presentado en la descripción de los aspectos de la presente divulgación.
Tenga en cuenta que la implementación de los procedimientos y/o configuraciones presentados en la descripción de los aspectos de la presente divulgación no se limita a los ejemplos anteriores. Por ejemplo, los procedimientos y/o configuraciones presentados en la descripción de los aspectos de la presente divulgación se pueden implementar en un dispositivo utilizado para un propósito diferente del codificador de cuadro/cuadro en movimiento o el decodificador de cuadro/cuadro en movimiento divulgado en la Realización 1. Más aún, los procedimientos y/o configuraciones presentados en la descripción de los aspectos de la presente divulgación se pueden implementar de forma independiente. Más aún, se pueden combinar los procedimientos y/o configuraciones descritos en los diferentes aspectos.
[Esquema del codificador]
En primer lugar, se esbozará el codificador de acuerdo con la Realización 1. La FIG. 1 es un diagrama de bloques que ilustra una configuración funcional del codificador 100 de acuerdo con la Realización 1. El codificador 100 es un codificador de cuadro/cuadro en movimiento que codifica un cuadro/cuadro en movimiento bloque por bloque.
Como se ilustra en la FIG. 1, el codificador 100 es un dispositivo que codifica un cuadro bloque por bloque e incluye un divisor 102, restador 104, transformador 106, cuantificador 108, codificador 110 de entropía, cuantificador 112 inverso, transformador 114 inverso, sumador 116, memoria 118 de bloque, filtro 120 de bucle, memoria 122 de fotograma, intrapredictor 124, interpredictor 126 y controlador 128 de predicción.
El codificador 100 se realiza, por ejemplo, como un procesador y una memoria genéricos. En este caso, cuando el procesador ejecuta un programa de software almacenado en la memoria, el procesador funciona como divisor 102, restador 104, transformador 106, cuantificador 108, codificador 110 de entropía, cuantificador 112 inverso, transformador 114 inverso, sumador 116, filtro 120 de bucle, intrapredictor 124, interpredictor 126 y controlador 128 de predicción. Alternativamente, el codificador 100 se puede realizar como uno o más circuitos electrónicos dedicados correspondientes al divisor 102, restador 104, transformador 106, cuantificador 108, codificador 110 de entropía, cuantificador 112 inverso, transformador 114 inverso, sumador 116, filtro 120 de bucle, intrapredictor 124, interpredictor 126 y controlador 128 de predicción.
A continuación, se describirá cada componente incluido en el codificador 100.
[Divisor]
El divisor 102 divide cada cuadro incluido en un cuadro en movimiento de entrada en bloques y emite cada bloque al restador 104. Por ejemplo, el divisor 102 primero divide un cuadro en bloques de un tamaño fijo (por ejemplo, 128 x 128). El bloque de tamaño fijo también se denomina como unidad de árbol de codificación (CTU). El divisor 102 luego divide cada bloque de tamaño fijo en bloques de tamaños variables (por ejemplo, 64 x 64 o más pequeños), en base a la división recursiva de bloques de árboles cuádruples y/o árboles binarios. El bloque de tamaño variable también se denomina unidad de codificación (CU), unidad de predicción (PU) o unidad de transformación (TU). Tenga en cuenta que en esta realización, no hay necesidad de diferenciar entre CU, PU y TU; todos o algunos de los bloques de un cuadro se pueden procesar por CU, PU o TU.
La FIG. 2 ilustra un ejemplo de división de bloques de acuerdo con la Realización 1. En la FIG. 2, las líneas continuas representan límites de bloques de bloques divididos por división de bloques de árbol cuádruple, y las líneas discontinuas representan límites de bloques de bloques divididos por división de bloques de árbol binario.
En la presente memoria, el bloque 10 es un bloque cuadrado de 128 x 128 píxeles (bloque de 128 x 128). Este bloque 10 de 128 x 128 se divide primero en cuatro bloques cuadrados de 64 x 64 (división de bloques de árbol cuádruple).
El bloque superior izquierdo de 64 x 64 se divide verticalmente en dos bloques rectangulares de 32 x 64, y el bloque izquierdo de 32x64 se divide verticalmente en dos bloques rectangulares de 16x64 (división de bloques de árbol binario). Como resultado, el bloque superior izquierdo de 64x64 se divide en dos bloques 11 y 12 de 16x64 y un bloque 13 de 32 x 64.
El bloque superior derecho de 64x 64 se divide horizontalmente en dos bloques 14 y 15 rectangulares de 64x32 (división de bloques de árbol binario).
El bloque inferior izquierdo de 64 x 64 se divide primero en cuatro bloques cuadrados de 32 x 32 (división de bloques de árbol cuádruple). El bloque superior izquierdo y el bloque inferior derecho entre los cuatro bloques de 32 x 32 se dividen adicionalmente. El bloque superior izquierdo de 32 x 32 se divide verticalmente en dos bloques rectangulares de 16 x 32, y el bloque derecho de 16 x 32 se divide horizontalmente en dos bloques de 16 x 16 (división de bloques de árbol binario). El bloque inferior derecho de 32 x 32 se divide horizontalmente en dos bloques de 32 x 16 (división de bloques de árbol binario). Como resultado, el bloque inferior izquierdo de 64x64 se divide en el bloque 16 de 16 x 32, dos bloques 17 y 18 de 16x16, dos bloques 19 y 20 de 32 x 32 y dos bloques 21 y 22 de 32 x 16.
El bloque 23 inferior derecho de 64 x 64 no está dividido.
Como se describió anteriormente, en la FIG. 2, el bloque 10 se divide en 13 bloques 11 a 23 de tamaño variable en base a la división recursiva de bloques de árboles cuádruples y árboles binarios. Este tipo de división también se denomina como división de árbol cuádruple más árbol binario (QTBT).
Tenga en cuenta que en la FIG. 2, un bloque se divide en cuatro o dos bloques (división de bloques de árbol cuádruple o de árbol binario), pero la división no se limita a este ejemplo. Por ejemplo, un bloque se puede dividir en tres bloques (división de bloques ternaria). La división que incluye dicha división de bloques ternaria también denomina como división de árboles de tipos múltiples (MBT).
[Restador]
El restador 104 sustrae una señal de predicción (muestra de predicción) desde una señal original (muestra original) por bloque dividido por el divisor 102. En otras palabras, el restador 104 calcula los errores de predicción (también denominados residuales) de un bloque que se va a codificar (en lo sucesivo denominado como un bloque actual). El restador 104 luego emite los errores de predicción calculados al transformador 106.
La señal original es una entrada de señal en el codificador 100 y es una señal que representa una imagen para cada cuadro incluido en un cuadro en movimiento (por ejemplo, una señal de luminancia y dos señales de crominancia). En lo sucesivo, una señal que representa una imagen también se denomina muestra.
[Transformador]
El transformador 106 transforma los errores de predicción del dominio espacial en coeficientes de transformada del dominio de frecuencia y emite los coeficientes de transformada al cuantificador 108. Más específicamente, el transformador 106 aplica, por ejemplo, una transformada de coseno discreta (DCT) predefinida o una transformada de seno discreta (DST) a los errores de predicción de dominio espacial.
Tenga en cuenta que el transformador 106 puede seleccionar adaptativamente un tipo de transformada de entre una pluralidad de tipos de transformada, y transformar los errores de predicción en coeficientes de transformada utilizando una función de base de transformación correspondiente al tipo de transformada seleccionada. Esta especie de transformada también se denomina como transformada de múltiples núcleo (EMT) explícita o transformada múltiple adaptativa (AMT).
Los tipos de transformadas incluyen, por ejemplo, DCT-II, DCT-V, DCT-VIII, DST-I y DST-VII. La FIG. 3 es un gráfico que indica funciones de 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 de entre la pluralidad de tipos de transformadas puede depender del tipo de predicción (intrapredicción e interpredicción) y puede depender del modo de intrapredicción.
La información que indica si aplicar dicha EMT o AMT (denominada, por ejemplo, un indicador de AMT) y la información que indica el tipo de transformada seleccionada se señaliza en el nivel de Cu . Tenga en cuenta que la señalización de dicha información no necesita realizarse en el nivel de CU y se puede realizar en otro nivel (por ejemplo, en el nivel de secuencia, nivel de cuadro, nivel de segmento, nivel de mosaico o nivel de CTU).
Más aún, el transformador 106 puede aplicar una transformada secundaria a los coeficientes de transformada (resultado de 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 de 4 x 4) incluido en el bloque de los coeficientes de transformada correspondientes a los errores de intrapredicción. La información que indica si aplicar NSST y la información relacionada con la matriz de transformada utilizada en NSST se señalan en el nivel de CU. Tenga en cuenta que la señalización de dicha información no necesita realizarse en el nivel de CU y se puede realizar en otro nivel (por ejemplo, en el nivel de secuencia, nivel de cuadro, nivel de segmento, nivel de mosaico o nivel de CTU).
En la presente memoria, una transformada separable es un procedimiento en el que una transformada se realiza una pluralidad de veces al realizar por separado una transformada para cada dirección de acuerdo con el número de dimensiones de entrada. 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 única dimensión.
En un ejemplo de una transformada no separable, cuando la entrada es un bloque de 4x 4 , el bloque de 4 x 4 se considera como un arreglo único que incluye 16 componentes, y la transformada aplica una matriz de transformada de 16 x 16 al arreglo.
Más aún, de manera similar a lo anterior, después de que un bloque de entrada 4 x 4 se considera como un arreglo único que incluye 16 componentes, una transformada que realiza una pluralidad de rotaciones de Givens sobre el arreglo (es decir, una Transformada de Hypercube-Givens) también es un ejemplo de una transformada no separable.
[Cuantificador]
El cuantificador 108 cuantifica la salida de los coeficientes de transformada del transformador 106. Más específicamente, el cuantificador 108 explora, en un orden de exploración predeterminado, los coeficientes de transformada del bloque actual y cuantifica los coeficientes de transformada explorados en base a los parámetros de cuantificación (QP) correspondientes a los coeficientes de transformada. Luego, el cuantificador 108 emite los coeficientes de transformada cuantificados (en lo sucesivo denominados coeficientes cuantificados) del bloque actual al codificador 110 de entropía y al cuantificador 112 inverso.
Un orden predeterminado es un orden para cuantificar/cuantificar de forma inversa coeficientes transformados. Por ejemplo, un orden de exploración predeterminado se define como un orden ascendente de frecuencia (desde baja hasta alta frecuencia) o un orden descendente de frecuencia (desde alta hasta baja frecuencia).
Un parámetro de cuantificación es un parámetro que define un tamaño de etapa de cuantificación (ancho de cuantificación). Por ejemplo, si aumenta el valor del parámetro de cuantificación, también aumenta el tamaño de la etapa de cuantificación. En otras palabras, si aumenta el valor del parámetro de cuantificación, aumenta el error de cuantificación.
[Codificador de entropía]
El codificador 110 de entropía genera una señal codificada (flujo de bits codificado) mediante la codificación de longitud variable de coeficientes cuantificados, que son entradas del cuantificador 108. Más específicamente, el codificador 110 de entropía, por ejemplo, binariza los coeficientes cuantificados y la aritmética codifica la señal binaria.
[Cuantificador inverso]
El cuantificador 112 inverso cuantifica de forma inversa los coeficientes cuantificados, que son entradas del cuantificador 108. Más específicamente, el cuantificador 112 inverso cuantifica de forma inversa, en un orden de exploración predeterminado, los coeficientes cuantificados del bloque actual. El cuantificador 112 inverso luego emite los coeficientes de transformada cuantificada inversa del bloque actual al transformador 114 inverso.
[Transformador inverso]
El transformador 114 inverso restablece los errores de predicción al transformar de forma inversa los coeficientes de transformada, que son entradas del cuantificador 112 inverso. Más específicamente, el transformador 114 inverso restablece los errores de predicción del bloque actual al aplicar una transformada inversa correspondiente a la transformada aplicada por el transformador 106 en los coeficientes de transformada. El transformador 114 inverso luego emite los errores de predicción restaurados al sumador 116.
Tenga en cuenta que dado que la información se pierde en la cuantificación, los errores de predicción restaurados no coinciden con los errores de predicción calculados por el restador 104. En otras palabras, los errores de predicción restaurados incluyen errores de cuantificación.
[Sumador]
El sumador 116 reconstruye el bloque actual al sumar errores de predicción, que son entradas del transformador 114 inverso, y muestras de predicción, que son entradas del controlador 128 de predicción. El sumador 116 luego emite el bloque reconstruido a la memoria 118 de bloque y al filtro 120 de bucle. Un bloque reconstruido también se denomina como bloque decodificado local.
[Memoria de bloque]
La memoria 118 de bloque es un almacenamiento para almacenar bloques en un cuadro que se va a codificar (en lo sucesivo denominado cuadro actual) para referencia en la intrapredicción. Más específicamente, la memoria 118 de bloque almacena los bloques reconstruidos generados por el sumador 116.
[Filtro de bucle]
El filtro 120 de bucle aplica un filtro de bucle a los bloques reconstruidos por el sumador 116 y emite los bloques reconstruidos filtrados a la memoria 122 de fotograma. 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).
En el ALF, se aplica un filtro de error de mínimos cuadrados para eliminar los artefactos de compresión. Por ejemplo, se selecciona un filtro de entre una pluralidad de filtros para cada subbloque 2 x 2 en el bloque actual en base a la dirección y la actividad de los gradientes locales, y se aplica.
Más específicamente, primero, cada subbloque (por ejemplo, cada subbloque 2 x 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 en base a la direccionalidad del gradiente D (por ejemplo, 0 a 2 o 0 a 4) y la actividad del gradiente A (por ejemplo, 0 a 4) (por ejemplo, C = 5D A). Luego, en base al índice de clasificación C, cada subbloque se categoriza en una de una pluralidad de clases (por ejemplo, 15 o 25 clases).
Por ejemplo, la direccionalidad de gradiente D se calcula al comparar los gradientes de una pluralidad de direcciones (por ejemplo, la dirección horizontal, vertical y dos direcciones diagonales). Más aún, por ejemplo, la actividad de gradiente A se calcula al sumar gradientes de una pluralidad de direcciones y cuantificar la suma.
El filtro que se va a utilizar para cada subbloque se determina de entre la pluralidad de filtros en base al resultado de dicha categorización.
La forma de filtro que se utilizará en ALF es, por ejemplo, una forma de filtro simétrica circular. La FIG. 4A a la FIG.
4C ilustran ejemplos de formas de filtro utilizadas en ALF. La FIG. 4A ilustra un filtro en forma de diamante de 5x5 , la FIG. 4B ilustra un filtro en forma de diamante de 7 x 7 y la FIG. 4C ilustra un filtro en forma de diamante de 9x9. La información que indica la forma del filtro se señala al nivel del cuadro. Tenga en cuenta que la señalización de información que indica la forma del filtro no necesita realizarse al nivel de cuadro y se puede realizar a otro nivel (por ejemplo, a nivel de secuencia, nivel de segmento, nivel de mosaico, nivel de CTU o nivel de CU).
La habilitación o deshabilitación de ALF se determina en el nivel de cuadro o en el nivel de CU. Por ejemplo, para la luminancia, la decisión de aplicar o no ALF se realiza a nivel de CU, y para la crominancia, la decisión de aplicar o no ALF se realiza a nivel de cuadro. La información que indica si ALF está habilitado o deshabilitado se señala en el nivel de cuadro o en el nivel de CU. Tenga en cuenta que la señalización de información que indica si ALF está habilitado o deshabilitado no necesita realizarse en el nivel de cuadro ni en el nivel de CU, y se puede realizar en otro nivel (por ejemplo, en el nivel de secuencia, nivel de segmento, nivel de mosaico o nivel de CTU).
Los coeficientes establecidos para la pluralidad de filtros seleccionables (por ejemplo, 15 o 25 filtros) se señalizan a nivel de cuadro. Tenga en cuenta que la señalización del conjunto de coeficientes no necesita realizarse a nivel de cuadro y se puede realizar a otro nivel (por ejemplo, a nivel de secuencia, nivel de segmento, nivel de mosaico, nivel de CTU, nivel de CU o nivel de subbloque).
[Memoria de fotograma]
La memoria 122 de fotograma es un almacenamiento para almacenar cuadros de referencia utilizados en la interpredicción, y también se denomina memoria intermedia de fotograma. Más específicamente, la memoria 122 de fotograma almacena bloques reconstruidos filtrados por el filtro 120 de bucle.
[Intrapredictor]
El intrapredictor 124 genera una señal de predicción (señal de intrapredicción) al intrapredecir el bloque actual con referencia a un bloque o bloques en el cuadro actual y almacenado en la memoria 118 de bloque (también denominada intrapredicción de fotograma). Más específicamente, el intrapredictor 124 genera una señal de intrapredicción por intrapredicción con referencia a muestras (por ejemplo, valores de luminancia y/o crominancia) de un bloque o bloques vecinos al bloque actual, y luego emite la señal de intrapredicción al controlador 128 de predicción.
Por ejemplo, el intrapredictor 124 realiza intrapredicción al utilizar un modo de entre una pluralidad de modos de intrapredicción predefinidos. Los modos de intrapredicción incluyen uno o más modos de predicción no direccional y una pluralidad de modos de predicción direccional.
El uno o más modos de predicción no direccional incluyen, por ejemplo, el modo de predicción plano y el modo de predicción DC definidos en el estándar H.265/codificación de video de alta eficiencia (HEVC) (véase NPL 1).
La pluralidad de modos de predicción direccional incluyen, por ejemplo, los 33 modos de predicción direccional definidos en el estándar H.265/HEVC. Tenga en cuenta que la pluralidad de modos de predicción direccional puede incluir adicionalmente 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). La FIG. 5A ilustra 67 modos de intrapredicción utilizados en la intrapredicción (dos modos de predicción no direccional y 65 modos de predicción direccional). Las flechas continuas representan las 33 direcciones definidas en el estándar H.265/HEVC y las flechas discontinuas representan las 32 direcciones adicionales.
Tenga en cuenta que se puede hacer referencia a un bloque de luminancia en la intrapredicción del bloque de crominancia. En otras palabras, se puede predecir un componente de crominancia del bloque actual en base a un componente de luminancia del bloque actual. Dicha intrapredicción también se denomina como predicción del modelo lineal de componentes cruzados (CCLM). Dicho modo de intrapredicción de bloque de crominancia que hace referencia a un bloque de luminancia (denominado, por ejemplo, modo CCLM) se puede agregar como uno de los modos de intrapredicción de bloque de crominancia.
El intrapredictor 124 puede corregir los valores de píxeles posteriores a la intrapredicción en base a gradientes de píxeles de referencia horizontales/verticales. La intrapredicción acompañada de esta especie de corrección también se denomina combinación de intrapredicción dependiente de la posición (PDPC). La información que indica si aplicar o no PDPC (denominada como, por ejemplo, un indicador de PDPC) se señala, por ejemplo, en el nivel de CU. Tenga en cuenta que la señalización de esta información no necesita realizarse en el nivel de CU y se puede realizar en otro nivel (por ejemplo, en el nivel de secuencia, nivel de cuadro, nivel de segmento, nivel de mosaico o nivel de CTU).
[Interpredictor]
El interpredictor 126 genera una señal de predicción (señal de interpredicción) al predecir el bloque actual con referencia a un bloque o bloques en un cuadro de referencia, que es diferente del cuadro actual y se almacena en la memoria 122 de fotograma (también denominada como interpredicción de fotograma). La interpredicción se realiza por bloque actual o por subbloque (por ejemplo, por bloque 4 x 4) en el bloque actual. Por ejemplo, el interpredictor 126 realiza una estimación de movimiento en un cuadro de referencia para el bloque o subbloque actual. El interpredictor 126 genera entonces una señal de interpredicción del bloque o subbloque actual mediante compensación de movimiento al utilizar información de movimiento (por ejemplo, un vector de movimiento) obtenida a partir de la estimación de movimiento. El interpredictor 126 luego emite la señal de interpredicción generada al controlador 128 de predicción.
Se señala la información de movimiento utilizada en la compensación de movimiento. Se puede utilizar un predictor de vector de movimiento para la señalización del vector de movimiento. En otras palabras, se puede señalar la diferencia entre el vector de movimiento y el predictor de vector de movimiento.
Tenga en cuenta que la señal de interpredicción se puede generar utilizando información de movimiento para un bloque vecino además de la información de movimiento para el bloque actual obtenida de la estimación de movimiento. Más específicamente, la señal de interpredicción se puede generar por subbloque en el bloque actual al calcular una suma ponderada de una señal de predicción en base a la información de movimiento obtenida de la estimación de movimiento y una señal de predicción en base a la información de movimiento para un bloque vecino. Dicha interpredicción (compensación de movimiento) también se denomina compensación de movimiento de bloques superpuestos (OBMC).
En dicho modo de OBMC, la información que indica el tamaño de subbloque para OBMC (denominada, por ejemplo, tamaño de bloque OBMC) se señaliza en el nivel de secuencia. Más aún, la información que indica si aplicar o no el modo de OBMC (denominado, por ejemplo, un indicador de OBMC) se señala en el nivel de CU. Tenga en cuenta que la señalización de dicha información no necesita realizarse a nivel de secuencia y nivel de CU, y se puede realizar a otro nivel (por ejemplo, a nivel de cuadro, nivel de segmento, nivel de mosaico, nivel de CTU o nivel de subbloque).
A continuación, el modo de OBMC se describirá con mayor detalle. La FIG. 5B es un diagrama de flujo y la FIG. 5C es un diagrama conceptual para ilustrar un esquema de un procedimiento de corrección de imagen de predicción realizado a través del procesamiento de OBMC.
Primero, se obtiene una imagen de predicción (Pred) a través de la compensación de movimiento típica utilizando un vector de movimiento (MV) asignado al bloque actual.
A continuación, se obtiene una imagen de predicción (Pred_L) al aplicar un vector de movimiento (MV_L) del bloque izquierdo vecino codificado al bloque actual, y se realiza un primer paso de corrección de la imagen de predicción al superponer la imagen de predicción y Pred_L.
De manera similar, se obtiene una imagen de predicción (Pred_U) al aplicar un vector de movimiento (MV_U) del bloque superior vecino codificado al bloque actual, y se realiza un segundo paso de la corrección de la imagen de predicción al superponer la imagen de predicción resultante desde el primer paso y Pred_U. El resultado del segundo paso es la imagen de predicción final.
Tenga en cuenta que el ejemplo anterior es un procedimiento de corrección de dos pasos que utiliza los bloques izquierdo y superior vecinos, pero el procedimiento puede ser un procedimiento de corrección de tres pasos o superior que también utiliza el bloque derecho y/o inferior vecino.
Tenga en cuenta que la región sujeta a superposición puede ser la región de píxeles completa del bloque y, alternativamente, puede ser una región límite de bloque parcial.
Tenga en cuenta que en la presente memoria, el procedimiento de corrección de la imagen de predicción se describe como basado en un único cuadro de referencia, pero lo mismo se aplica cuando una imagen de predicción se corrige en base a una pluralidad de cuadros de referencia. En dicho caso, después de obtener las imágenes de predicción corregidas resultantes de realizar la corrección en base a cada uno de los cuadros de referencia, las imágenes de predicción corregidas obtenidas se superponen adicionalmente para obtener la imagen de predicción final.
Tenga en cuenta que la unidad del bloque actual puede ser un bloque de predicción y, alternativamente, puede ser un subbloque obtenido al dividir adicionalmente el bloque de predicción.
Un ejemplo de un procedimiento para determinar si implementar el procesamiento de OBMC es mediante obmc_flag, que es una señal que indica si implementar el procesamiento de OBMC. Como ejemplo específico, el codificador determina si el bloque actual pertenece a una región que incluye un movimiento complicado. El codificador establece obmc_flag en un valor de “1” cuando el bloque pertenece a una región que incluye movimiento complicado e implementa el procesamiento de OBMC al codificar, y establece obmc_flag en un valor de “0” cuando el bloque no pertenece a una región que incluye movimiento de complicación y codifica sin implementar el procesamiento de OBMC. El decodificador cambia entre implementar o no el procesamiento de OBMC al decodificar el indicador obmc_flag escrito en el flujo y realizar la decodificación de acuerdo con el valor del indicador.
Tenga en cuenta que la información de movimiento se puede derivar del lado del decodificador sin señalizarse. Por ejemplo, se puede utilizar un modo de fusión definido en el estándar H.265/HEVC. Más aún, por ejemplo, la información de movimiento se puede derivar al realizar una estimación de movimiento en el lado del decodificador. En este caso, la estimación de movimiento se realiza sin utilizar los valores de píxel del bloque actual.
En la presente memoria, se describirá un modo para realizar una estimación de movimiento en el lado del decodificador. Un modo para realizar una estimación de movimiento en el lado del decodificador también se denomina como modo de derivación de vector de movimiento con coincidencia de patrón (PMMVD) o modo de conversión ascendente de velocidad de fotogramas (FRUC).
Un ejemplo de procesamiento de FRUC se ilustra en la FIG. 5D. En primer lugar, se genera una lista de candidatos (una lista de candidatos puede ser una lista de fusión) de candidatos, cada uno de los cuales incluye un predictor de vector de movimiento, con referencia a vectores de movimiento de bloques codificados que son espacial o temporalmente vecinos al bloque actual. A continuación, se selecciona la mejor MV candidato entre una pluralidad de MV candidatos registrados en la lista de candidatos. Por ejemplo, se calculan los valores de evaluación de los candidatos incluidos en la lista de candidatos y se selecciona un candidato en base a los valores de evaluación calculados.
A continuación, se deriva un vector de movimiento para el bloque actual a partir del vector de movimiento del candidato seleccionado. Más específicamente, por ejemplo, el vector de movimiento para el bloque actual se calcula como el vector de movimiento del candidato seleccionado (MV del mejor candidato), tal cual. Alternativamente, el vector de movimiento para el bloque actual se puede derivar mediante la coincidencia de patrones realizada en las proximidades de una posición en un cuadro de referencia correspondiente al vector de movimiento del candidato seleccionado. En otras palabras, cuando se busca la vecindad del mejor MV candidato a través del mismo procedimiento y se encuentra un MV que tiene un mejor valor de evaluación, el mejor MV candidato se puede actualizar al MV que tiene el mejor valor de evaluación, y el MV que tiene el mejor valor de evaluación se puede utilizar como el MV final para el bloque actual. Tenga en cuenta que también es aceptable una configuración en la que no se implementa este procesamiento.
Los mismos procedimientos se podrán realizar en los casos en que el procesamiento se realice en unidades de subbloques.
Tenga en cuenta que se calcula un valor de evaluación al calcular la diferencia en la imagen reconstruida mediante la coincidencia de patrones realizada entre una región en un cuadro de referencia correspondiente a un vector de movimiento y una región predeterminada. Tenga en cuenta que el valor de evaluación se puede calcular al utilizar alguna otra información además de la diferencia.
La coincidencia de patrones utilizada es la primera coincidencia de patrones o la segunda coincidencia de patrones. La primera coincidencia de patrones y la segunda coincidencia de patrones también se denominan coincidencia bilateral y coincidencia de plantillas, respectivamente.
En la primera coincidencia de patrones, la coincidencia de patrones se realiza entre dos bloques a lo largo de la trayectoria de movimiento del bloque actual en dos cuadros de referencia diferentes. Por lo tanto, en la primera coincidencia de patrones, se utiliza una región en otro cuadro de referencia que se conforma a la trayectoria de movimiento del bloque actual como la región predeterminada para el cálculo descrito anteriormente del valor de evaluación candidato.
La FIG. 6 es para ilustrar un ejemplo de coincidencia de patrones (coincidencia bilateral) entre dos bloques a lo largo de una trayectoria de movimiento. Como se ilustra en la FIG. 6, en la primera coincidencia de patrones, se derivan dos vectores de movimiento (MV0, MV1) al encontrar la mejor coincidencia entre dos bloques a lo largo de la trayectoria de movimiento del bloque actual (Cur block) en dos cuadros de referencia diferentes (Ref0, Ref1). Más específicamente, se puede derivar una diferencia entre (i) una imagen reconstruida en una posición específica en un primer cuadro de referencia codificado (Ref0) especificado por un MV candidato y (ii) un cuadro reconstruido en una posición específica en un segundo cuadro de referencia codificado (Ref1) especificado por un MV simétrico escalado en un intervalo de tiempo de visualización del MV candidato, y el valor de evaluación para el bloque actual se puede calcular al utilizar la diferencia derivada. El MV candidato que tenga el mejor valor de evaluación entre la pluralidad de MV candidatos se puede seleccionar como el MV final.
Bajo el supuesto de trayectoria de movimiento continuo, los vectores de movimiento (MV0, MV1) que apuntan a los dos bloques de referencia serán proporcionales a las distancias temporales (TD0, TD1) entre el cuadro actual (Cur Pic) y los dos cuadros de referencia (Ref0, Ref1). Por ejemplo, cuando el cuadro actual se encuentra temporalmente entre los dos cuadros de referencia y la distancia temporal desde el cuadro actual a los dos cuadros de referencia es la misma, la primera coincidencia de patrón deriva un vector de movimiento bidireccional basado en un espejo.
En la segunda coincidencia de patrones, la coincidencia de patrones se realiza entre una plantilla en el cuadro actual (bloques vecinos al bloque actual en el cuadro actual (por ejemplo, los bloques vecinos superiores y/o izquierdos)) y un bloque en un cuadro de referencia. Por lo tanto, en la segunda coincidencia de patrones, un bloque vecino al bloque actual en el cuadro actual se utiliza como la región predeterminada para el cálculo descrito anteriormente del valor de evaluación candidato.
La FIG. 7 es para ilustrar un ejemplo de coincidencia de patrones (coincidencia de plantillas) entre una plantilla en el cuadro actual y un bloque en un cuadro de referencia. Como se ilustra en la FIG. 7, en la segunda coincidencia de patrones, se deriva un vector de movimiento del bloque actual al buscar un cuadro de referencia (Ref0) para encontrar el bloque que mejor se adapta a los bloques vecinos del bloque actual (Cur block) en el cuadro actual (Cur Pic). Más específicamente, se puede derivar una diferencia entre (i) una imagen reconstruida de una región codificada que es ambas o una de las regiones vecina izquierda y vecina superior y (ii) un cuadro reconstruido en la misma posición en un cuadro de referencia codificado (Ref0) especificado por un MV candidato, y el valor de evaluación para el bloque actual se puede calcular al utilizar la diferencia derivada. El MV candidato que tiene el mejor valor de evaluación entre la pluralidad de MV candidatos se puede seleccionar como el mejor MV candidato.
La información que indica si aplicar o no el modo de FRUC (denominada, por ejemplo, un indicador de FRUC) se señala en el nivel de CU. Más aún, cuando se aplica el modo de FRUC (por ejemplo, cuando el indicador de FRUC se establece en verdadero), la información que indica el procedimiento de coincidencia de patrones (primera coincidencia de patrones o segunda coincidencia de patrones) se señala en el nivel de CU. Tenga en cuenta que la señalización de dicha información no necesita realizarse en el nivel de CU y se puede realizar en otro nivel (por ejemplo, en el nivel de secuencia, nivel de cuadro, nivel de segmento, nivel de mosaico, nivel de CTU o nivel de subbloque).
En la presente memoria, se describirá un modo para derivar un vector de movimiento en base a un modelo que asume un movimiento lineal uniforme. Este modo también se denomina como modo de flujo óptico bidireccional (BIO).
La FIG. 8 es para ilustrar un modelo que supone un movimiento lineal uniforme. En la Fig. 8, (vx, vy) denota un vector de velocidad, y To y Ti denotan distancias temporales entre el cuadro actual (Cur Pic) y dos cuadros de referencia (Refo, Refi). (MVxo, MVyo) indica un vector de movimiento correspondiente al cuadro de referencia Refo, y (MVxi, MVyi) indica un vector de movimiento correspondiente al cuadro de referencia Refi.
En la presente memoria, bajo el supuesto de movimiento lineal uniforme exhibido por el vector de velocidad (vx, vy), (MVxo, MVyo) y (MVxi, MVyi) se representan como (vxTo, vyTo) y (-vxTi, -vyTi), respectivamente, y se da la siguiente ecuación de flujo óptico.
[Matemáticas i ]
Figure imgf000012_0001
En la presente memoria, I(k) denota un valor de luminancia del cuadro de referencia k (k = o, i ) después de la compensación de movimiento. Esta ecuación de flujo óptico muestra que la suma de (i) la derivada de tiempo del valor de luminancia, (ii) el producto de la velocidad horizontal y el componente horizontal del gradiente espacial de un cuadro de referencia, y (iii) el producto de la velocidad vertical y el componente vertical del gradiente espacial de un cuadro de referencia es igual a cero. Un vector de movimiento de cada bloque obtenido de, por ejemplo, una lista de fusión se corrige píxel por píxel en base a una combinación de la ecuación de flujo óptico y la interpolación de Hermite.
Tenga en cuenta que un vector de movimiento se puede derivar en el lado del decodificador utilizando un procedimiento que no sea derivar un vector de movimiento en base a un modelo que suponga un movimiento lineal uniforme. Por ejemplo, se puede derivar un vector de movimiento para cada subbloque en base a los vectores de movimiento de los bloques vecinos.
En la presente memoria, se describirá un modo en el que se deriva un vector de movimiento para cada subbloque 20 en base a los vectores de movimiento de bloques vecinos. Este modo también se denomina como modo de predicción de compensación de movimiento afín.
La FIG. 9A es para ilustrar la derivación de un vector de movimiento de cada subbloque en base a vectores de movimiento de bloques vecinos. En la Fig. 9A, el bloque actual incluye 16 subbloques de 4 x 4. En la presente memoria, el vector de movimiento v0 del punto de control de la esquina superior izquierda del bloque actual se deriva en base a los vectores de movimiento de los subbloques vecinos, y el vector de movimiento v1 del punto de control de la esquina superior derecha del bloque actual se deriva en base a los vectores de movimiento de bloques vecinos. Luego, utilizando los dos vectores de movimiento v0 y v-i, el vector de movimiento (vx, vy) de cada subbloque en el bloque actual se deriva utilizando la Ecuación 2 a continuación.
[Matemáticas 2]
Figure imgf000013_0001
En la presente memoria, x y y son las posiciones horizontal y vertical del subbloque, respectivamente, y w es un coeficiente ponderado predeterminado.
Dicho modo de predicción de compensación de movimiento afín puede incluir una serie de modos de diferentes procedimientos para derivar los vectores de movimiento de los puntos de control de esquina superior izquierda y superior derecha. La información que indica dicho modo de predicción de compensación de movimiento afín (denominado, por ejemplo, un indicador afín) se señaliza en el nivel de CU. Tenga en cuenta que la señalización de información que indica el modo de predicción de compensación de movimiento afín no necesita realizarse en el nivel de CU y se puede realizar en otro nivel (por ejemplo, en el nivel de secuencia, nivel de cuadro, nivel de segmento, nivel de mosaico, nivel de CTU, o nivel de subbloque).
[Controlador de predicción]
El controlador 128 de predicción selecciona ya sea la señal de intrapredicción o la señal de interpredicción y emite la señal de predicción seleccionada al restador 104 y al sumador 116.
En la presente memoria, se dará un ejemplo de derivación de un vector de movimiento a través del modo de fusión en un cuadro actual. La FIG. 9B es para ilustrar un esquema de un procedimiento para derivar un vector de movimiento a través del modo de fusión.
En primer lugar, se genera una lista de predictores de MV en la que se registran predictores de MV candidatos. Los ejemplos de predictores de MV candidatos incluyen: predictores de MV espacialmente vecinos, que son los MV de bloques codificados colocados en la vecindad espacial del bloque actual; un predictor de MV temporalmente vecino, que es un MV de un bloque en un cuadro de referencia codificado que está cerca de un bloque en la misma ubicación que el bloque actual; un predictor de MV combinado, que es un MV generado al combinar los valores de MV del predictor de MV espacialmente vecino y el predictor de Mv temporalmente vecino; y un predictor de MV cero, que es un MV cuyo valor es cero.
A continuación, se determina el MV del bloque actual al seleccionar un predictor de MV de entre la pluralidad de predictores de MV registrados en la lista de predictores de MV.
Adicionalmente, en el codificador de longitud variable, un merge_idx, que es una señal que indica quE se selecciona el predictor de MV, se escribe y codifica en el flujo.
Tenga en cuenta que los predictores de MV registrados en la lista de predictores de MV ilustrada en la FIG. 9B constituyen un ejemplo. El número de predictores de VM registrados en la lista de predictores de VM puede ser diferente del número ilustrado en la FIG. 9B, los predictores de MV registrados en la lista de predictores de MV pueden omitir uno o más de los tipos de predictores de MV dados en el ejemplo de la FIG. 9B, y los predictores de MV registrados en la lista de predictores de MV pueden incluir uno o más tipos de predictores de MV además de los tipos dados en el ejemplo de la FIG. 9B.
Tenga en cuenta que el MV final se puede determinar al realizar el procesamiento de DMVR (que se describirá más adelante) al utilizar el MV del bloque actual derivado a través del modo de fusión.
En la presente memoria, se dará un ejemplo de cómo determinar un MV al utilizar el procesamiento de DMVR.
La FIG. 9C es un diagrama conceptual para ilustrar un esquema del procesamiento de DMVR.
En primer lugar, se considera que el conjunto de MVP más adecuado para el bloque actual es el MV candidato, los píxeles de referencia se obtienen de un primer cuadro de referencia, que es un cuadro procesado en la dirección L0 de acuerdo con el MV candidato, y un segundo cuadro de referencia, que es un cuadro procesado en la dirección L1 de acuerdo con el MV candidato, y se genera una plantilla al calcular el promedio de los píxeles de referencia.
A continuación, utilizando la plantilla, se buscan las regiones circundantes de los MV candidatos del primer y segundo cuadros de referencia, y se determina que el MV con el coste más bajo es el MV final. Tenga en cuenta que el valor del coste se calcula utilizando, por ejemplo, la diferencia entre cada valor de píxel en la plantilla y cada valor de píxel en las regiones buscadas, así como el valor de MV.
Tenga en cuenta que los esquemas de los procedimientos descritos en la presente memoria son fundamentalmente los mismos tanto en el codificador como en el decodificador.
Tenga en cuenta que se puede utilizar un procesamiento distinto del procesamiento exactamente como se describió anteriormente, siempre que el procesamiento sea capaz de derivar el MV final al buscar en los alrededores del MV candidato.
En la presente memoria, se dará un ejemplo de un modo que genera una imagen de predicción al utilizar el procesamiento de LIC.
La FIG. 9D es para ilustrar un esquema de un procedimiento de generación de imágenes de predicción utilizando un procedimiento de corrección de luminancia realizado a través del procesamiento de LIC.
En primer lugar, se extrae un MV para obtener, a partir de un cuadro de referencia codificado, una imagen de referencia correspondiente al bloque actual.
A continuación, se extrae la información que indica cómo cambió el valor de luminancia entre el cuadro de referencia y el cuadro actual y se calcula un parámetro de corrección de luminancia al utilizar los valores de píxel de luminancia para la región de referencia vecina izquierda codificada y la región de referencia vecina superior codificada, y el valor de píxel de luminancia en la misma ubicación en el cuadro de referencia especificado por el MV.
La imagen de predicción para el bloque actual se genera al realizar un procedimiento de corrección de luminancia utilizando el parámetro de corrección de luminancia sobre la imagen de referencia en el cuadro de referencia especificado por el MV.
Tenga en cuenta que la forma de la región de referencia circundante ilustrada en la FIG. 9D es solo un ejemplo; la región de referencia circundante puede tener una forma diferente.
Más aún, aunque en este ejemplo se genera una imagen de predicción a partir de un único cuadro de referencia, en los casos en los que también se genera una imagen de predicción a partir de una pluralidad de cuadros de referencia, la imagen de predicción se genera después de realizar un procedimiento de corrección de luminancia, a través del mismo procedimiento, sobre las imágenes de referencia obtenidas a partir de los cuadros de referencia.
Un ejemplo de un procedimiento para determinar si implementar el procesamiento de LIC es utilizar un lic_flag, que es una señal que indica si implementar el procesamiento de LIC. Como ejemplo específico, el codificador determina si el bloque actual pertenece a una región de cambio de luminancia. El codificador establece lic_flag en un valor de “1” cuando el bloque pertenece a una región de cambio de luminancia e implementa el procesamiento de LIC al codificar, y establece lic_flag en un valor de “0” cuando el bloque no pertenece a una región de cambio de luminancia y codifica sin implementar el procesamiento de LIC. El decodificador cambia entre implementar o no el procesamiento de LIC al decodificar lic_flag escrito en el flujo y realizar la decodificación de acuerdo con el valor del indicador.
Un ejemplo de un procedimiento diferente para determinar si implementar el procesamiento de LIC es determinarlo de acuerdo con si se determinó que el procesamiento de LIC se implementaría para un bloque circundante. En un ejemplo específico, cuando se utiliza el modo de fusión en el bloque actual, se puede determinar si se aplicó el procesamiento de LIC en la codificación del bloque codificado circundante seleccionado al derivar el MV en el procesamiento del modo de fusión, y si implementar el procesamiento de LIC o no se puede conmutar en base al resultado de la determinación. Tenga en cuenta que en este ejemplo, lo mismo se aplica al procesamiento realizado en el lado del decodificador.
[Esquema del decodificador]
A continuación, se describirá un decodificador capaz de decodificar una señal codificada (flujo de bits codificado) emitida desde el codificador 100. La FIG. 10 es un diagrama de bloques que ilustra una configuración funcional del decodificador 200 de acuerdo con la Realización 1. El decodificador 200 es un decodificador de cuadro/cuadro en movimiento que decodifica un cuadro/cuadro en movimiento bloque por bloque.
Como se ilustra en la FIG. 10, el decodificador 200 incluye el decodificador 202 de entropía, cuantificador 204 inverso, transformador 206 inverso, sumador 208, memoria 210 de bloque, filtro 212 de bucle, memoria 214 de fotograma, el intrapredictor 216, el interpredictor 218 y el controlador 220 de predicción.
El decodificador 200 se realiza, por ejemplo, como un procesador y una memoria genéricos. En este caso, cuando el procesador ejecuta un programa de software almacenado en la memoria, el procesador funciona como decodificador 202 de entropía, cuantificador 204 inverso, transformador 206 inverso, sumador 208, filtro 212 de bucle, intrapredictor 216, interpredictor 218 y controlador 220 de predicción. Alternativamente, el decodificador 200 se puede realizar como uno o más circuitos electrónicos dedicados correspondientes al decodificador 202 de entropía, cuantificador 204 inverso, transformador 206 inverso, sumador 208, filtro 212 de bucle, intrapredictor 216, interpredictor 218 y controlador 220 de predicción.
A continuación, se describirá cada componente incluido en el decodificador 200.
[Decodificador de entropía]
El decodificador 202 de entropía decodifica un flujo de bits codificado. Más específicamente, por ejemplo, la aritmética del decodificador 202 de entropía decodifica un flujo de bits codificado en una señal binaria. El decodificador 202 de entropía luego desbinaliza la señal binaria. Con esto, el decodificador 202 de entropía emite los coeficientes cuantificados de cada bloque al cuantificador 204 inverso.
[Cuantificador inverso]
El cuantificador 204 inverso cuantifica de forma inversa los coeficientes cuantificados de un bloque que se va a decodificar (en lo sucesivo denominado bloque actual), que son entradas desde el decodificador 202 de entropía. Más específicamente, el cuantificador 204 inverso cuantifica de forma inversa los coeficientes cuantificados del bloque actual en base a los parámetros de cuantificación correspondientes a los coeficientes cuantificados. El cuantificador 204 inverso luego emite los coeficientes cuantificados inversos (es decir, los coeficientes de transformada) del bloque actual al transformador 206 inverso.
[Transformador inverso]
El transformador 206 inverso restaura los errores de predicción mediante coeficientes de transformada de transformación inversa, que son entradas del cuantificador 204 inverso.
Por ejemplo, cuando la información analizada a partir de un flujo de bits codificado indica la aplicación de EMT o AMT (por ejemplo, cuando el indicador de AMT se establece en verdadero), el transformador 206 inverso transforma de forma inversa los coeficientes de transformada del bloque actual en base a la información que indica el tipo de transformada analizada.
Más aún, por ejemplo, cuando la información analizada a partir de un flujo de bits codificado indica la aplicación de NSST, el transformador 206 inverso aplica una transformada inversa secundaria a los coeficientes de transformada.
[Sumador]
El sumador 208 reconstruye el bloque actual al sumar los errores de predicción, que son entradas del transformador 206 inverso, y las muestras de predicción, que son una entrada del controlador 220 de predicción. El sumador 208 luego emite el bloque reconstruido a la memoria 210 de bloque y al filtro 212 de bucle.
[Memoria de bloque]
La memoria 210 de bloque es un almacenamiento para almacenar bloques en un cuadro que se va a decodificar (en lo sucesivo denominado cuadro actual) para referencia en la intrapredicción. Más específicamente, la memoria 210 de bloque almacena la salida de bloques reconstruidos del sumador 208.
[Filtro de bucle]
El filtro 212 de bucle aplica un filtro de bucle a los bloques reconstruidos por el sumador 208 y emite los bloques reconstruidos filtrados a la memoria 214 de fotograma y, por ejemplo, a un dispositivo de visualización.
Cuando la información que indica la habilitación o deshabilitación de ALF analizada a partir de un flujo de bits codificado indica que está habilitada, se selecciona un filtro de entre una pluralidad de filtros en base a la dirección y la actividad de los gradientes locales, y el filtro seleccionado se aplica al bloque reconstruido.
[Memoria de fotograma]
La memoria 214 de fotograma es un almacenamiento para almacenar cuadros de referencia utilizados en la interpredicción, y también se denomina memoria intermedia de fotograma. Más específicamente, la memoria 214 de fotograma almacena bloques reconstruidos filtrados por el filtro 212 de bucle.
[Intrapredictor]
El intrapredictor 216 genera una señal de predicción (señal de intrapredicción) por intrapredicción con referencia a un bloque o bloques en el cuadro actual y almacenado en la memoria 210 de bloque. Más específicamente, el intrapredictor 216 genera una señal de intrapredicción por intrapredicción con referencia a muestras (por ejemplo, valores de luminancia y/o crominancia) de un bloque o bloques vecinos al bloque actual, y luego emite la señal de intrapredicción al controlador 220 de predicción.
Tenga en cuenta que cuando se selecciona un modo de intrapredicción en el que se intrapredice un bloque de crominancia a partir de un bloque de luminancia, el intrapredictor 216 puede predecir el componente de crominancia del bloque actual en base al componente luminancia del bloque actual.
Más aún, cuando la información que indica la aplicación de PDPC se analiza a partir de un flujo de bits codificado, el intrapredictor 216 corrige los valores de píxeles posteriores a la intrapredicción en base a gradientes de píxeles de referencia horizontales/verticales.
[Interpredictor]
El interpredictor 218 predice el bloque actual con referencia a un cuadro de referencia almacenado en la memoria 214 de fotograma. La interpredicción se realiza por bloque actual o por subbloque (por ejemplo, por bloque 4 x 4 ) en el bloque actual. Por ejemplo, el interpredictor 218 genera una señal de interpredicción del bloque o subbloque actual mediante compensación de movimiento al utilizar la información de movimiento (por ejemplo, un vector de movimiento) analizada a partir de un flujo de bits codificado, y emite la señal de interpredicción al controlador 220 de predicción.
Tenga en cuenta que cuando la información analizada del flujo de bits codificado indica la aplicación del modo de OBMC, el interpredictor 218 genera la señal de interpredicción utilizando información de movimiento para un bloque vecino además de la información de movimiento para el bloque actual obtenida de la estimación de movimiento.
Más aún, cuando la información analizada del flujo de bits codificado indica la aplicación del modo de FRUC, el interpredictor 218 deriva la información de movimiento al realizar una estimación de movimiento de acuerdo con el procedimiento de coincidencia de patrones (coincidencia bilateral o coincidencia de plantillas) analizado a partir del flujo de bits codificado. A continuación, el interpredictor 218 realiza la compensación de movimiento utilizando la información de movimiento derivada.
Más aún, cuando se va a aplicar el modo BIO, el interpredictor 218 deriva un vector de movimiento en base a un modelo que supone un movimiento lineal uniforme. Más aún, 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 interpredictor 218 deriva un vector de movimiento de cada subbloque en base a vectores de movimiento de bloques vecinos.
[Controlador de predicción]
El controlador 220 de predicción selecciona la señal de intrapredicción o la señal de interpredicción y emite la señal de predicción seleccionada al sumador 208.
REALIZACIÓN 2
El procedimiento de codificación y el procedimiento de decodificación de acuerdo con la Realización 2 se describirán en detalle con referencia a la FIG. 11 y la FIG. 12, y el codificador y decodificador de acuerdo con la Realización 2 se describirán en detalle con referencia a la FIG. 15 y la FIG. 16.
[Procedimiento de codificación]
La FIG. 11 ilustra un procedimiento de codificación de video de acuerdo con la Realización 2.
Primero, en la etapa S1001, un primer parámetro para identificar, a partir de una pluralidad de modos de partición, un modo de partición para someter a partición un primer bloque en subbloques se escribe en un flujo de bits. Utilizar un modo de partición dará como resultado la partición de un bloque en subbloques. Utilizar diferentes modos de partición puede resultar en someter a partición un bloque en subbloques con diferentes formas, diferentes alturas o diferentes anchos.
La FIG. 28 ilustra ejemplos de modos de partición para someter a partición un bloque de N píxeles por N píxeles en la Realización 2. En la FIG. 28, (a) a (h) se muestra diferentes modos de partición. Como se ilustra en la FIG. 28, utilizando el modo de partición (a) se someterá a partición un bloque de N píxeles por N píxeles (el valor de 'N' puede ser cualquier valor en el rango de 8 a 128 que son múltiplos enteros de 4, por ejemplo, un bloque de 16 píxeles por 16 píxeles) en dos subbloques de N/2 píxeles por N píxeles (por ejemplo, subbloques de 8 píxeles por 16 píxeles). Utilizando el modo de partición (b) se someterá a partición un bloque de N píxeles por N píxeles en un subbloque de N/4 píxeles por N píxeles y un subbloque de 3N/4 píxeles por N píxeles (por ejemplo, un subbloque de 4 píxeles por 16 píxeles y un subbloque de 12 píxeles por 16 píxeles). Utilizando el modo de partición (c) se someterá a partición un bloque de N píxeles por N píxeles en un subbloque de 3N/4 píxeles por N píxeles y un subbloque de N/4 píxeles por N píxeles (por ejemplo, un subbloque de 12 píxeles por 16 píxeles y un subbloque de 4 píxeles por 16 píxeles). Utilizando el modo de partición (d) se someterá a partición un bloque de N píxeles por N píxeles en un subbloque de N/4 píxeles por N píxeles, un subbloque de N/2 píxeles por N píxeles, y un subbloque de N/4 píxeles por N píxeles (por ejemplo, un subbloque de 4 píxeles por 16 píxeles, un subbloque de 8 píxeles por 16 píxeles y un subbloque de 4 píxeles por 16 píxeles). Utilizando el modo de partición (e) se someterá a partición un bloque de N píxeles por N píxeles en dos subbloques de N píxeles por N/2 píxeles (por ejemplo, subbloques de 16 píxeles por 8 píxeles). Utilizando el modo de partición (f) se someterá a partición un bloque de N píxeles por N píxeles en un subbloque de N píxeles por N/4 píxeles y un subbloque de N píxeles por 3N/4 píxeles (por ejemplo, un subbloque de 16 píxeles por 4 píxeles y un subbloque de 16 píxeles por 12 píxeles). Utilizando el modo de partición (g) se someterá a partición un bloque de N píxeles por N píxeles en un subbloque de N píxeles por 3N/4 píxeles y un subbloque de N píxeles por N/4 píxeles (por ejemplo, un subbloque de 16 píxeles por 12 píxeles y un subbloque de 16 píxeles por 4 píxeles). Utilizando el modo de partición (h) se someterá a partición un bloque de N píxeles por N píxeles en un subbloque de N píxeles por N/4 píxeles, un subbloque de N píxeles por N/2 píxeles, y un subbloque de N píxeles por N/4 píxeles (por ejemplo, un subbloque de 16 píxeles por 4 píxeles, un subbloque de 16 píxeles por 8 píxeles y un subbloque de 16 píxeles por 4 píxeles).
A continuación, en la etapa S1002, se determina si un primer parámetro identifica un primer modo de partición.
A continuación, en la etapa S1003, en base al menos en la determinación de si el primer parámetro identifica un primer modo de partición, se determina si no se va a seleccionar un segundo modo de partición como candidato para someter a partición un segundo bloque.
Dos conjuntos diferentes de modos de partición pueden dividir un bloque en subbloques de las mismas formas y tamaños. Por ejemplo, como se ilustra en la FIG. 31A, los subbloques de (1b) y (2c) tienen las mismas formas y tamaños. Un conjunto de modos de partición puede incluir al menos dos modos de partición. Por ejemplo, un conjunto de modos de partición puede incluir una división vertical de árbol ternario seguida de una división vertical de árbol binario sobre el subbloque central y ninguna división sobre otros subbloques, como se ilustra en (1a) y (1b) en la FIG.
31A. Otro conjunto de modos de partición, por ejemplo, puede incluir una división vertical de árbol binario seguida de una división vertical de árbol binario en ambos subbloques, como se ilustra en (2a), (2b) y (2c) en la FIG. 31A. Ambos conjuntos de modos de partición darán como resultado subbloques de las mismas formas y tamaños.
Al seleccionar entre dos conjuntos de modos de partición que dan como resultado la división de un bloque en subbloques de las mismas formas y tamaños y cada uno de los conjuntos de modos de partición, cuando se codifican en un flujo de bits, tiene un número diferente de contenedores o un número diferente de bits, el conjunto de los modos de partición que tienen menos número de contenedores o menos número de bits se seleccionan entre los dos conjuntos. Tenga en cuenta que el número de contenedores y el número de bits es equivalente a la cantidad de código.
Al seleccionar entre dos conjuntos de modos de partición que dan como resultado la división de un bloque en subbloques de las mismas formas y tamaños y cada uno de los conjuntos de modos de partición, cuando se codifica en un flujo de bits, tiene el mismo número de contenedores o el mismo número de bits, el conjunto de modos de partición que aparece primero en un orden predeterminado de una pluralidad de conjuntos de modos de partición se selecciona entre los dos conjuntos. Un ejemplo del orden predeterminado puede ser un orden en base al número de modos de partición en cada conjunto de modos de partición.
La FIG. 31A y la FIG. 31B ilustran un ejemplo de división de un bloque en subbloques utilizando un conjunto de modos de partición con pocos contenedores en los modos de partición de codificación. En este ejemplo, cuando el bloque de N píxeles por N píxeles de la izquierda se divide verticalmente en dos subbloques, no se selecciona el segundo modo de partición en la etapa (2c), para el bloque de N píxeles por N píxeles de la derecha. Esto se debe a que, en el procedimiento de codificación del modo de partición en la FIG. 31B, el segundo conjunto de modos de partición (2a, 2b, 2c) requerirá más contenedores para la codificación del modo de partición en comparación con el primer conjunto de modos de partición (1a, 1b).
La FIG. 32A a la FIG. 32C ilustran un ejemplo de dividir un bloque en subbloques utilizando un conjunto de modos de partición que aparece primero en un orden predeterminado de una pluralidad de conjuntos de modos de partición. En este ejemplo, cuando el bloque superior de 2N píxeles por N/2 píxeles se divide verticalmente en tres subbloques, no se selecciona el segundo modo de partición en la etapa (2c), para el bloque inferior de 2N píxeles por N/2 píxeles. Esto se debe a que, en el procedimiento de codificación del modo de partición en la FIG. 32B, el segundo conjunto de modos de partición (2a, 2b, 2c) tiene el mismo número de contenedores que el primer conjunto de modos de partición (1a, 1b, 1c, 1d) y aparece después del primer conjunto de modos de partición (1a, 1b, 1c, 1d) en el orden predeterminado de conjuntos de modos de particiones en la FIG. 32C. El orden predeterminado de la pluralidad de conjuntos de modos de partición se puede fijar o señalizar en un flujo de bits.
La FIG. 20 ilustra un ejemplo en el que no se selecciona un segundo modo de partición para someter a partición un bloque de 2N píxeles por N píxeles, como se ilustra en la etapa (2c), en la Realización 2. Como se ilustra en la FIG.
20, un bloque de 2N píxeles por 2N píxeles (por ejemplo, un bloque de 16 píxeles por 16 píxeles) se puede dividir en cuatro subbloques iguales de tamaño N píxeles por N píxeles (por ejemplo, 8 píxeles por 8 píxeles) utilizando una primera forma de división (i), como en la etapa (1a). Adicionalmente, un bloque de 2N píxeles por 2N píxeles también se puede dividir en dos subbloques iguales de tamaño 2N píxeles por N píxeles (por ejemplo, 16 píxeles por 8 píxeles) utilizando una segunda forma de división (2a), como en la etapa (2a). Durante la segunda forma de división (ii), cuando el primer modo de partición divide el bloque superior de 2N píxeles por N píxeles (primer bloque) verticalmente en dos subbloques de N píxeles por N píxeles como en la etapa (2b), el segundo modo de partición que divide el bloque inferior de 2N píxeles por N píxeles (segundo bloque) en dos subbloques de N píxeles por N píxeles en la etapa (2c) no se selecciona como un candidato para el modo de partición posible. Esto se debe a que el segundo modo de partición producirá tamaños de subbloques iguales a los tamaños de subbloques de división cuádruple de la primera forma de división (i).
De esta manera, en la FIG. 20, cuando el primer bloque se divide verticalmente en dos subbloques iguales si se utiliza el primer modo de partición, y el segundo bloque adyacente verticalmente al primer bloque se divide verticalmente en dos subbloques iguales si se utiliza el segundo modo de partición, el segundo modo de partición no se selecciona como un candidato.
La FIG. 21 ilustra un ejemplo en el que no se selecciona un segundo modo de partición para someter a partición un bloque de N píxeles por 2N píxeles, como se ilustra en la etapa (2c), en la Realización 2. Como se ilustra en la FIG.
21, un bloque de 2N píxeles por 2N píxeles se puede dividir en cuatro subbloques iguales de N píxeles por N píxeles utilizando la primera forma de división (i). Adicionalmente, como en la etapa (2a), un bloque de 2N píxeles por 2N píxeles también se puede dividir verticalmente en dos subbloques iguales de N píxeles por 2n píxeles (por ejemplo, 8 píxeles por 16 píxeles) utilizando la segunda forma de división (ii). Durante la segunda forma de división (ii), cuando el primer modo de partición divide el bloque izquierdo de N píxeles por 2N píxeles (primer bloque) horizontalmente en dos subbloques de N píxeles por N píxeles como en la etapa (2b), el segundo modo de partición que divide horizontalmente el bloque derecho de N píxeles por 2N píxeles (segundo bloque) en dos subbloques de N píxeles por N píxeles en la etapa (2c) no se selecciona como un candidato para el modo de partición posible. Esto se debe a que el segundo modo de partición producirá tamaños de subbloques iguales a los tamaños de subbloques de división cuádruple de la primera forma de división (i).
De esta manera, en la FIG. 21, cuando el primer bloque se divide horizontalmente en dos subbloques iguales si se utiliza el primer modo de partición, y el segundo bloque que es horizontalmente vecino al primer bloque se divide horizontalmente en dos subbloques iguales si se utiliza el segundo modo de partición, el segundo modo de partición no se selecciona como un candidato.
La FIG. 40 ilustra un ejemplo en el que una partición 4Nx2N en la FIG. 20 se divide en tres en una relación de 1:2:1, tal como Nx2N, 2Nx2N y Nx2N. En la presente memoria, cuando el bloque superior se va a dividir en tres, no se selecciona un modo de partición para dividir el bloque inferior en tres en una relación de 1:2:1 como un candidato para el modo de partición posible. La división en tres se puede realizar en una relación diferente de 1:2:1. Además, se puede realizar la división en más de 3 e, incluso cuando se divide en dos, la relación puede ser diferente de 1:1, tal como 1:2 o 1:3. Aunque la FIG. 40 ilustra un ejemplo de división horizontal primero, la misma restricción también se puede aplicar al primero dividir verticalmente.
La FIG. 41 y la FIG. 42 ilustran un ejemplo en el que se aplica la misma restricción en el caso de que el primer bloque sea un rectángulo.
La FIG. 43 ilustra un ejemplo de una segunda restricción cuando un cuadrado se divide horizontalmente en tres y luego se divide horizontalmente en dos partes iguales. Al aplicar la restricción en la FIG. 43, en la FIG. 40, es posible seleccionar un modo de partición para dividir el bloque inferior 4Nx2N en tres en una relación de 1:2:3. La información que indica cuál de la restricción en la FIG. 40 y la restricción en la FIG. 43 se va a aplicar se puede codificar por separado en la información del encabezado. Alternativamente, se puede aplicar la restricción que tiene una cantidad menor de código de información que indica la partición. Por ejemplo, suponiendo que la cantidad de códigos de información que indican la partición en el caso 1 y el caso 2 es como se muestra a continuación, la división del caso 1 está habilitada y la división del caso 2 está deshabilitada. En otras palabras, se aplica la restricción en la FIG. 43.
(Caso 1) (1) Después de que un cuadrado se divide horizontalmente en dos, (2) cada uno de los dos bloques rectangulares en la parte superior e inferior se divide verticalmente en tres: (1) información de dirección: 1 bit, información de número de particiones: 1 bit, (2) (información de dirección: 1 bit, información de número de particiones: 1 bit) x 2 para un total de 6 bits
(Caso 2) (1) Después de dividir verticalmente un cuadrado, (2) cada bloque rectangular izquierdo, central y derecho se divide horizontalmente en dos: (1) información de dirección: 1 bit, información de número de particiones: 1 bit, (2) (información de dirección: 1 bit, información de número de particiones: 1 bit) x 3 para un total de 8 bits
Alternativamente, durante la codificación, hay casos en los que se determina la partición adecuada al seleccionar un modo de partición en un orden predeterminado. Por ejemplo, es posible intentar dividir en dos, luego intentar dividir en tres o dividir en cuatro (2 partes iguales horizontal y verticalmente), etc. En este momento, antes del ensayo de dividir en tres como en la FIG. 43, ya se ha realizado un ensayo que inicia de la división en dos como en los ejemplos de la FIG. 40. Por tanto, en un ensayo que inicia de la división en dos, la restricción de la FIG. 43 se aplica porque ya se obtienen las particiones resultantes de dividir por igual un bloque horizontalmente y luego dividir verticalmente los dos bloques en la parte superior e inferior en tres. De esta manera, el procedimiento de restricción que se va a seleccionar se puede determinar en base a un esquema de codificación predeterminado.
La FIG. 44 ilustra un ejemplo donde, en el segundo modo de partición, se restringen los modos de partición seleccionables para someter a participación el segundo bloque en la misma dirección que el primer modo de partición. En la presente memoria, el primer modo de partición se divide verticalmente en tres y, por lo tanto, en este momento, la división en dos no se puede seleccionar como el segundo modo de partición. Por otro lado, se puede seleccionar la división en dos para la dirección vertical que es una dirección diferente del primer modo de partición (FIG. 45).
La FIG. 22 ilustra un ejemplo en el que un segundo modo de partición no se selecciona para someter a partición un bloque de N píxeles por N píxeles, como se ilustra en la etapa (2c), en la Realización 2. Como se ilustra en la FIG. 22, un bloque de 2N píxeles por N píxeles (el valor de 'N' puede ser cualquier valor en el rango de 8 a 128 que son múltiplos enteros de 4, por ejemplo, 16 píxeles por 8 píxeles) se puede dividir verticalmente en un subbloque de N/2 píxeles por N píxeles, un subbloque de N píxeles por N píxeles, y un subbloque de N/2 píxeles por N píxeles (por ejemplo, un subbloque de 4 píxeles por 8 píxeles, un subbloque 8 píxeles por 8 píxeles, un subbloque de 4 píxeles por 8 píxeles), utilizando la primera forma de división (i), como en la etapa (1a). Adicionalmente, un bloque de 2N píxeles por N píxeles también se puede dividir en dos subbloques de N píxeles por N píxeles utilizando la segunda forma de división (ii), como en la etapa (2a). Durante la primera forma de división (i), el bloque central de N píxeles por N píxeles se puede dividir verticalmente en dos subbloques de N/2 píxeles por N píxeles (por ejemplo, 4 píxeles por 8 píxeles) en la etapa (1b). Durante la segunda forma de división (ii), cuando el bloque izquierdo de N píxeles por N píxeles (primer bloque) se divide verticalmente en dos subbloques de N/2 píxeles por N píxeles como en la etapa (2b), un modo de partición que divide verticalmente el bloque derecho de N píxeles por N píxeles (segundo bloque) en dos subbloques de N/2 píxeles por N píxeles en la etapa (2c) no se selecciona como un candidato para el modo de partición posible. Esto es porque, el modo de partición producirá tamaños de subbloques que son los mismos como aquellos obtenidos de la primera forma de división (i), o cuatro subbloques de N/2 píxeles por N píxeles.
De esta manera, en la FIG. 22, cuando el primer bloque se divide verticalmente en dos subbloques iguales si se utiliza el primer modo de partición, y el segundo bloque horizontalmente vecino al primer bloque se divide verticalmente en dos subbloques iguales si se utiliza el segundo modo de partición, el segundo modo de partición no se selecciona como un candidato.
La FIG. 23 ilustra un ejemplo en el que un segundo modo de partición no se selecciona para someter a partición un bloque de N píxeles por N píxeles, como se ilustra en la etapa (2c), en la Realización 2. Como se ilustra en la FIG. 23, un bloque de N píxeles por 2N píxeles (el valor de 'N' puede ser cualquier valor en el rango de 8 a 128 que son múltiplos enteros de 4, por ejemplo, 8 píxeles por 16 píxeles) se puede dividir en un subbloque de N píxeles por N/2 píxeles, un subbloque de N píxeles por N píxeles, y un subbloque de N píxeles por N/2 píxeles (por ejemplo, un subbloque de 8 píxeles por 4 píxeles, un subbloque 8 píxeles por 8 píxeles, un subbloque de 8 píxeles por 4 píxeles) utilizando la primera forma de división (i), como en la etapa (1a). Adicionalmente, un bloque de N píxeles por 2N píxeles también se puede dividir en dos subbloques de N píxeles por N píxeles utilizando la segunda forma de división, como en la etapa (2a). Durante la primera forma de división (i), el bloque central de N píxeles por N píxeles se puede dividir horizontalmente en dos subbloques de N píxeles por N/2 píxeles, como en la etapa (1b). Durante la segunda forma de división (ii), cuando los N píxeles por N píxeles superiores (primer bloque) se divide horizontalmente en dos subbloques de N píxeles por N/2 píxeles en la etapa (2b), un modo de partición que divide horizontalmente los N píxeles por N píxeles inferiores (segundo bloque) en dos subbloques de N píxeles por N/2 píxeles en la etapa (2c) no se selecciona como un candidato para el modo de partición posible. Esto es porque, el modo de partición producirá tamaños de subbloques que son los mismos como aquellos obtenidos de la primera forma de división (i), o cuatro subbloques de N píxeles por N/2 píxeles.
De esta manera, en la FIG. 23, cuando el primer bloque se divide horizontalmente en dos subbloques iguales si se utiliza el primer modo de partición, y el segundo bloque verticalmente vecino al primer bloque se divide horizontalmente en dos subbloques iguales si se utiliza el segundo modo de partición, el segundo modo de partición no se selecciona como un candidato.
Si se determina que el segundo modo de partición no se selecciona como un candidato para someter a partición un segundo bloque (N en S1003), un modo de partición se selecciona de una pluralidad de modos de partición que incluyen el segundo modo de partición como un candidato en la etapa S1004. En la etapa S1005, un segundo parámetro que indica se escribe el resultado de la selección en un flujo de bits.
Si se determina que el segundo modo de partición no es para ser seleccionado como un candidato para someter a partición un segundo bloque (Y en S1003), un modo de partición diferente del segundo modo de partición se selecciona para someter a partición el segundo bloque en la etapa S1006. En la presente memoria, el modo de partición seleccionado somete a partición un bloque en subbloques con diferentes formas o diferentes tamaños en comparación con los subbloques que se hubieran generado por el segundo modo de partición.
La FIG. 24 ilustra un ejemplo de someter a partición un bloque de 2N píxeles por N píxeles utilizando un modo de partición seleccionado cuando no se va a seleccionar el segundo modo de partición, como se ilustra en la etapa (3), en la Realización 2. Como se ilustra en la FIG. 24, el modo de partición seleccionado puede dividir un bloque actual de 2N píxeles por N píxeles (el bloque inferior en este ejemplo) en tres subbloques como se ilustra en (c) y (f) en la FIG. 24. Los tamaños de los tres subbloques pueden ser diferentes. Por ejemplo, entre los tres subbloques, un subbloque grande puede tener dos veces el ancho/alto de un subbloque pequeño. Adicionalmente, por ejemplo, el modo de partición seleccionado puede dividir el bloque actual en dos subbloques con diferentes tamaños (árbol binario asimétrico) como se ilustra en (a), (b), (d) y (e) en la FIG. 24. Por ejemplo, cuando se utiliza un árbol binario asimétrico, el subbloque grande puede tener tres veces el ancho/alto del subbloque pequeño.
La FIG. 25 ilustra un ejemplo de someter a partición un bloque de N píxeles por 2N píxeles utilizando un modo de partición seleccionado cuando no se va a seleccionar el segundo modo de partición, como se ilustra en la etapa (3), en la Realización 2. Como se ilustra en la FIG. 25, el modo de partición seleccionado puede dividir el bloque actual de N píxeles por 2N píxeles (el bloque derecho en este ejemplo) en tres subbloques como se ilustra en (c) y (f) en la FIG.
25. Los tamaños de los tres subbloques pueden ser diferentes. Por ejemplo, entre los tres subbloques, un subbloque grande puede tener dos veces el ancho/alto de un subbloque pequeño. Adicionalmente, por ejemplo, el modo de partición seleccionado puede dividir el bloque actual en dos subbloques con diferentes tamaños (árbol binario asimétrico) como se ilustra en (a), (b), (d), y (e) en la FIG. 25. Por ejemplo, cuando se utiliza un árbol binario asimétrico, el subbloque grande puede tener tres veces el ancho/alto del subbloque pequeño.
La FIG. 26 ilustra un ejemplo de someter a partición un bloque de N píxeles por N píxeles utilizando un modo de partición seleccionado cuando no se va a seleccionar el segundo modo de partición, como se ilustra en la etapa (3), en la Realización 2. Como se ilustra en la FIG. 26, un bloque de 2N píxeles por N píxeles se divide verticalmente en dos subbloques de N píxeles por N píxeles en la etapa (1), y el bloque izquierdo de N píxeles por N píxeles se divide verticalmente en dos subbloques de N/2 píxeles por N píxeles en la etapa (2). En la etapa (3), un bloque actual se puede someter a partición en tres subbloques utilizando un modo de partición seleccionado para un bloque actual de N píxeles por N píxeles (el bloque izquierdo en este ejemplo), como se ilustra en (c) y (f) en la FIG. 26. Los tamaños de los tres subbloques pueden ser diferentes. Por ejemplo, entre los tres subbloques, un subbloque grande puede tener dos veces el ancho/alto de un subbloque pequeño. Adicionalmente, por ejemplo, el modo de partición seleccionado puede dividir el bloque actual en dos subbloques con diferentes tamaños (árbol binario asimétrico) como se ilustra en (a), (b), (d), y (e) en la FIG. 26. Por ejemplo, cuando se utiliza un árbol binario asimétrico, el subbloque grande puede tener tres veces el ancho/alto del subbloque pequeño.
La FIG. 27 ilustra un ejemplo de someter a partición un bloque de N píxeles por N píxeles utilizando un modo de partición seleccionado cuando no se va a seleccionar el segundo modo de partición, como se ilustra en la etapa (3), en la Realización 2. Como se ilustra en la FIG. 27, un bloque de N píxeles por 2N píxeles se divide horizontalmente en dos subbloques de N píxeles por N píxeles en la etapa (1), y el bloque superior de N píxeles por N píxeles se divide horizontalmente en dos subbloques de N píxeles por N/2 píxeles en la etapa (2). En la etapa (3), un bloque actual se puede someter a partición en tres subbloques utilizando un modo de partición seleccionado para un bloque actual de N píxeles por N píxeles (el bloque inferior en este ejemplo), como se ilustra en (c) y (f) en la FIG. 27. Los tamaños de los tres subbloques pueden ser diferentes. Por ejemplo, entre los tres subbloques, un subbloque grande puede tener dos veces el ancho/alto de un subbloque pequeño. Adicionalmente, por ejemplo, el modo de partición seleccionado puede dividir el bloque actual en dos subbloques con diferentes tamaños (árbol binario asimétrico) como se ilustra en (a), (b), (d), y (e) en la FIG. 27. Por ejemplo, cuando se utiliza un árbol binario asimétrico, el subbloque grande puede tener tres veces el ancho/alto del subbloque pequeño.
La FIG. 17 ilustra las posibles ubicaciones del primer parámetro en un flujo de bits de video comprimido. Como se ilustra en la FIG. 17, el primer parámetro puede estar en un conjunto de parámetros de video, un conjunto de parámetros de secuencia, un conjunto de parámetros de cuadro, un encabezado de segmento o una unidad de árbol de codificación. El primer parámetro puede indicar la forma de someter a partición un bloque en una pluralidad de subbloques. Por ejemplo, el primer parámetro puede incluir un indicador para indicar si el bloque se someterá a partición en dirección horizontal o vertical. El primer parámetro también puede incluir un parámetro para indicar si el bloque se va a someter a partición en dos o más subbloques.
La FIG. 18 ilustra las posibles ubicaciones del segundo parámetro en un flujo de bits de video comprimido. Como se ilustra en la FIG. 18, el segundo parámetro puede estar en un conjunto de parámetros de video, un conjunto de parámetros de secuencia, un conjunto de parámetros de cuadro, un encabezado de segmento o una unidad de árbol de codificación. El segundo parámetro puede indicar la forma de someter a partición un bloque en una pluralidad de subbloques. Por ejemplo, el segundo parámetro puede incluir un indicador para indicar si el bloque se someterá a partición en dirección horizontal o vertical. El segundo parámetro también puede incluir un parámetro para indicar si el bloque se someterá a partición en dos o más subbloques. El segundo parámetro sigue después del primer parámetro en un flujo de bits como se ilustra en la FIG. 19
El primer bloque y el segundo bloque son bloques diferentes. El primer bloque y el segundo bloque se pueden incluir en el mismo fotograma. Por ejemplo, el primer bloque puede ser el bloque vecino superior al segundo bloque. Adicionalmente, por ejemplo, el primer bloque puede ser el bloque vecino a la izquierda del segundo bloque.
En la etapa S1007, el segundo bloque se somete a participación en subbloques utilizando el modo de partición seleccionado. En la etapa S1008, se codifican los bloques sometidos a partición.
[Codificador]
La FIG. 15 es un diagrama de bloques que ilustra la estructura de un codificador de video/imagen de acuerdo con la Realización 2 o 3.
El codificador 5000 de video es un aparato para codificar un video/imagen de entrada en una base bloque por bloque para generar un flujo de bits de salida codificado. Como se ilustra en la FIG. 15, el codificador 5000 de video incluye el transformador 5001, cuantificador 5002, cuantificador 5003 inverso, transformador 5004 inverso, memoria 5005 de bloque, memoria 5006 de fotograma, intrapredictor 5007, interpredictor 5008, codificador 5009 de entropía y el determinador 5010 de partición de bloques.
Un video de entrada se ingresa a un sumador y el valor agregado se emite al transformador 5001. El transformador 5001 transforma los valores agregados en coeficientes de frecuencia en base al modo de partición de bloque derivado del determinador 5010 de partición de bloques y emite los coeficientes de frecuencia al cuantificador 5002. El modo de partición de bloque puede estar relacionado con un modo de partición de bloque, un tipo de partición de bloque o una dirección de partición de bloque. El cuantificador 5002 cuantifica los coeficientes cuantificados introducidos y emite los valores cuantificados al cuantificador 5003 inverso y al codificador 5009 de entropía.
El cuantificador 5003 inverso cuantifica de forma inversa los valores cuantificados emitidos por el cuantificador 5002 y emite los coeficientes de frecuencia al transformador 5004 inverso. El transformador 5004 inverso realiza una transformada de frecuencia inversa en los coeficientes de frecuencia en base al modo de partición de bloque derivado del determinador 5010 de partición de bloques, para transformar los coeficientes de frecuencia en valores de muestra del flujo de bits y emite los valores de muestra a un sumador.
El sumador agrega los valores de muestra del flujo de bits generado del transformador 5004 inverso a los valores de video/imagen pronosticados emitidos por el inter/intrapredictor 5007, 5008, y emite los valores agregados a la memoria 5005 de bloque o a la memoria 5006 de fotograma para predicción adicional. El determinador 5010 de partición de bloques recopila información de bloques de la memoria 5005 de bloque o de la memoria 5006 de fotograma para derivar un modo de partición de bloque y parámetros relacionados con el modo de partición de bloque. Utilizar el modo de partición de bloque derivado dará como resultado la partición de un bloque en una pluralidad de subbloques. El inter/intrapredictor 5007, 5008 busca dentro de videos/imágenes almacenados en la memoria 5005 de bloque o de videos/imágenes en la memoria 5006 de fotograma reconstruidos utilizando el modo de partición de bloque derivado del determinador 5010 de partición de bloques, y estima un área de video/imagen que es, por ejemplo, más similar a los videos/imágenes de entrada para la predicción.
El codificador 5009 de entropía codifica los valores cuantificados emitidos desde el cuantificador 5002, codifica los parámetros del determinador 5010 de partición de bloques y emite un flujo de bits.
[Procedimiento de decodificación]
La FIG. 12 ilustra un procedimiento de decodificación de video de acuerdo con la Realización 2.
Primero, en la etapa S2001, se analiza un primer parámetro para identificar, a partir de una pluralidad de modos de partición, un modo de partición para someter a partición un primer bloque en subbloques a partir de un flujo de bits. Utilizar un modo de partición resultará en la partición de un bloque en subbloques, y utilizar diferentes modos de partición puede resultar en la partición de un bloque en subbloques con diferentes formas, diferentes alturas o diferentes anchos.
La FIG. 28 ilustra ejemplos de modos de partición para someter a partición un bloque de N píxeles por N píxeles en la Realización 2. En la FIG. 28, (a) a (h) se muestran diferentes modos de partición. Como se ilustra en la FIG. 28, utilizando el modo de partición (a) se someterá a partición un bloque de N píxeles por N píxeles (el valor de 'N' puede ser cualquier valor en el rango de 8 a 128 que son múltiplos enteros de 4, por ejemplo, un bloque de 16 píxeles por 16 píxeles) en dos subbloques de N/2 píxeles por N píxeles (por ejemplo, subbloques de 8 píxeles por 16 píxeles). Utilizando el modo de partición (b) se someterá a partición un bloque de N píxeles por N píxeles en un subbloque de N/4 píxeles por N píxeles y un subbloque de 3N/4 píxeles por N píxeles (por ejemplo, un subbloque de 4 píxeles por 16 píxeles y un subbloque de 12 píxeles por 16 píxeles). Utilizando el modo de partición (c) se someterá a partición un bloque de N píxeles por N píxeles en un subbloque de 3N/4 píxeles por N píxeles y un subbloque de N/4 píxeles por N píxeles (por ejemplo, un subbloque de 12 píxeles por 16 píxeles y un subbloque de 4 píxeles por 16 píxeles).
Utilizando el modo de partición (d) se someterá a partición un bloque de N píxeles por N píxeles en un subbloque de N/4 píxeles por N píxeles, un subbloque de N/2 píxeles por N píxeles, y un subbloque de N/4 píxeles por N píxeles (por ejemplo, un subbloque de 4 píxeles por 16 píxeles, un subbloque de 8 píxeles por 16 píxeles y un subbloque de 4 píxeles por 16 píxeles). Utilizando el modo de partición (e) se someterá a partición un bloque de N píxeles por N píxeles en dos subbloques de N píxeles por N/2 píxeles (por ejemplo, subbloques de 16 píxeles por 8 píxeles). Utilizando el modo de partición (f) se someterá a partición un bloque de N píxeles por N píxeles en un subbloque de N píxeles por N/4 píxeles y un subbloque de N píxeles por 3N/4 píxeles (por ejemplo, un subbloque de 16 píxeles por 4 píxeles y un subbloque de 16 píxeles por 12 píxeles). Utilizando el modo de partición (g) se someterá a partición un bloque de N píxeles por N píxeles en un subbloque de N píxeles por 3N/4 píxeles y un subbloque de N píxeles por N/4 píxeles (por ejemplo, un subbloque de 16 píxeles por 12 píxeles y un subbloque de 16 píxeles por 4 píxeles). Utilizando el modo de partición (h) se someterá a partición un bloque de N píxeles por N píxeles en un subbloque de N píxeles por N/4 píxeles, un subbloque de N píxeles por N/2 píxeles, y un subbloque de N píxeles por N/4 píxeles (por ejemplo, un subbloque de 16 píxeles por 4 píxeles, un subbloque de 16 píxeles por 8 píxeles y un subbloque de 16 píxeles por 4 píxeles).
A continuación, en la etapa S2002, se determina si un primer parámetro identifica un primer modo de partición.
A continuación, en la etapa S2003, en base al menos en la determinación de si el primer parámetro identificó un primer modo de partición, se determina si no se debe seleccionar el segundo modo de partición como un candidato para someter a participación un segundo bloque.
Los dos conjuntos diferentes de modos de partición pueden someter a partición un bloque en subbloques de las mismas formas y tamaños. Por ejemplo, como se ilustra en la FIG. 31A, los subbloques de (1b) y (2c) tienen las mismas formas y tamaños. Un conjunto de modos de partición puede incluir al menos dos modos de partición. Por ejemplo, un conjunto de modos de partición puede incluir una división vertical de árbol ternario seguida de una división vertical de árbol binario en el subbloque central y ninguna división en otros subbloques, como se ilustra en (1a) y (1b) en la FIG. 31A. Adicionalmente, por ejemplo, otro conjunto de modos de partición puede incluir una división vertical de árbol binario seguida por una división vertical de árbol binario en ambos subbloques, como se ilustra en (2a), (2b) y (2c) en la FIG. 31A. Ambos conjuntos de modos de partición darán como resultado subbloques de las mismas formas y tamaños.
Al seleccionar entre dos conjuntos de modos de partición que dan como resultado la división de un bloque en subbloques de las mismas formas y tamaños y cada uno de los conjuntos de modos de partición, cuando se codifica en un flujo de bits, tiene un número diferente de contenedores o un número diferente de bits, se selecciona el conjunto de los modos de partición que tiene pocos número de contenedores o pocos números de bits entre los dos conjuntos.
Al seleccionar entre dos conjuntos de modos de partición que dan como resultado la división de un bloque en subbloques de las mismas formas y tamaños y cada uno de los conjuntos de modos de partición, cuando se codifica en un flujo de bits, tiene el mismo número de contenedores o el mismo número de bits, el conjunto de modos de partición que aparece primero en un orden predeterminado de una pluralidad de conjuntos de modos de partición se selecciona entre los dos conjuntos. Un ejemplo del orden predeterminado puede ser un orden en base al número de modos de partición en cada conjunto de modos de partición.
La FIG. 31A y FIG. 31B ilustra un ejemplo de dividir un bloque en subbloques utilizando un conjunto de modos de partición con pocos contenedores en los modos de partición de codificación. En este ejemplo, cuando el bloque izquierdo de N píxeles por N píxeles se divide verticalmente en dos subbloques, no se selecciona el segundo modo de partición en la etapa (2c), para el bloque derecho de N píxeles por N píxeles. Esto es porque, en el procedimiento de codificación del modo de partición en la FIG. 31B, el segundo conjunto de modos de partición (2a, 2b, 2c) requerirá más contendores de modos de partición de codificación en comparación con el primer conjunto de modos de partición (1a, 1b).
La FIG. 32A ilustra un ejemplo de dividir un bloque en subbloques utilizando un conjunto de modos de partición que aparece primero en un orden predeterminado de una pluralidad de conjuntos de modos de partición. En este ejemplo, cuando el bloque superior de 2N píxeles por N/2 píxeles se divide verticalmente en tres subbloques, no se selecciona el segundo modo de partición en la etapa (2c), para el bloque inferior de 2N píxeles por N/2 píxeles. Esto es porque, en el procedimiento de codificación del modo de partición en la FIG. 32B, el segundo conjunto de modos de partición (2a, 2b, 2c) tiene el mismo número de contenedores como el primer conjunto de modos de partición (1a, 1b, 1c, 1d) y aparece después del primer conjunto de modos de partición (1a, 1b, 1c, 1d) en el orden predeterminado de conjuntos de modos de particiones en la FIG. 32C. El orden predeterminado de la pluralidad de conjuntos de modos de partición se puede fijar o señalar en un flujo de bits.
La FIG. 20 ilustra un ejemplo en el que un segundo modo de partición no se selecciona para someter a partición un bloque de 2N píxeles por N píxeles, como se ilustra en la etapa (2c), en la Realización 1. Como se ilustra en la FIG.
20, un bloque de 2N píxeles por 2N píxeles (por ejemplo, un bloque de 16 píxeles por 16 píxeles) se puede dividir en cuatro subbloques iguales de tamaño de N píxeles por N píxeles (por ejemplo, 8 píxeles por 8 píxeles) utilizando una primera forma de división (i), como en la etapa (1a). Adicionalmente, un bloque de 2N píxeles por 2N píxeles también se puede dividir en dos subbloques iguales de tamaño de 2N píxeles por N píxeles (por ejemplo, 16 píxeles por 8 píxeles) utilizando una segunda forma de división (2a), como en la etapa (2a). Durante la segunda forma de división (ii), cuando el primer modo de partición divide el bloque superior de 2N píxeles por N píxeles (primer bloque) verticalmente en dos subbloques de N píxeles por N píxeles como en la etapa (2b), el segundo modo de partición que divide verticalmente el bloque inferior de 2N píxeles por N píxeles (segundo bloque) en dos subbloques de N píxeles por N píxeles en la etapa (2c) no se selecciona como un candidato para el modo de partición posible. Esto es porque el segundo modo de partición producirá tamaños de subbloques igual como los tamaños de subbloque de división cuádruple de la primera forma de división (i).
De esta manera, en la FIG. 20, cuando el primer bloque se divide verticalmente en dos subbloques iguales si se utiliza el primer modo de partición, y el segundo bloque verticalmente vecino al primer bloque se divide verticalmente en dos subbloques iguales si se utiliza el segundo modo de partición, el segundo modo de partición no se selecciona como un candidato.
La FIG. 21 ilustra un ejemplo en el que un segundo modo de partición no se selecciona para someter a partición un bloque de N píxeles por 2N píxeles, como se ilustra en la etapa (2c), en la Realización 2. Como se ilustra en la FIG.
21, un bloque de 2N píxeles por 2N píxeles se puede dividir en cuatro subbloques iguales de N píxeles por N píxeles utilizando la primera forma de división (i). Adicionalmente, como en la etapa (2a), un bloque de 2N píxeles por 2N píxeles también se puede dividir verticalmente en dos subbloques iguales de N píxeles por 2n píxeles (por ejemplo, 8 píxeles por 16 píxeles) utilizando la segunda forma de división (ii). Durante la segunda forma de división (ii), cuando el primer modo de partición divide el bloque izquierdo de N píxeles por 2N píxeles (primer bloque) horizontalmente en dos subbloques de N píxeles por N píxeles como en la etapa (2b), el segundo modo de partición que divide horizontalmente el bloque derecho de N píxeles por 2N píxeles (segundo bloque) en dos subbloques de N píxeles por N píxeles en la etapa (2c) no se selecciona como un candidato para el modo de partición posible. Esto es porque el segundo modo de partición producirá tamaños de subbloques iguales como los tamaños de subbloque de división cuádruple de la primera forma de división (i).
De esta manera, en la FIG. 21, cuando el primer bloque se divide horizontalmente en dos subbloques iguales si se utiliza el primer modo de partición, y el segundo bloque horizontalmente vecino al primer bloque se divide horizontalmente en dos subbloques iguales si se utiliza el segundo modo de partición, el segundo modo de partición no se selecciona como un candidato.
La FIG. 22 ilustra un ejemplo en el que un segundo modo de partición no se selecciona para someter a partición un bloque de N píxeles por N píxeles, como se ilustra en la etapa (2c), en la Realización 2. Como se ilustra en la FIG. 22, un bloque de 2N píxeles por N píxeles (el valor de 'N' puede ser cualquier valor en el rango de 8 a 128 que son múltiplos enteros de 4, por ejemplo, 16 píxeles por 8 píxeles) se puede dividir verticalmente en un subbloque de N/2 píxeles por N píxeles, un subbloque de N píxeles por N píxeles, y un subbloque de N/2 píxeles por N píxeles (por ejemplo, un subbloque de 4 píxeles por 8 píxeles, un subbloque 8 píxeles por 8 píxeles, un subbloque de 4 píxeles por 8 píxeles), utilizando la primera forma de división (i), como en la etapa (1a). Adicionalmente, un bloque de 2N píxeles por N píxeles también se puede dividir en dos subbloques de N píxeles por N píxeles utilizando la segunda forma de división (ii), como en la etapa (2a). Durante la primera forma de división (i), el bloque central de N píxeles por N píxeles se puede dividir verticalmente en dos subbloques de N/2 píxeles por N píxeles (por ejemplo, 4 píxeles por 8 píxeles) en la etapa (1b). Durante la segunda forma de división (ii), cuando el bloque izquierdo de N píxeles por N píxeles (primer bloque) se divide verticalmente en dos subbloques de N/2 píxeles por N píxeles como en la etapa (2b), un modo de partición que divide verticalmente el bloque derecho de N píxeles por N píxeles (segundo bloque) en dos subbloques de N/2 píxeles por N píxeles en la etapa (2c) no se selecciona como un candidato para el modo de partición posible. Esto es porque, el modo de partición producirá tamaños de subbloques que son los mismos como aquellos obtenidos de la primera forma de división (i), o cuatro subbloques de N/2 píxeles por N píxeles.
De esta manera, en la FIG. 22, cuando el primer bloque se divide verticalmente en dos subbloques iguales si se utiliza el primer modo de partición, y el segundo bloque horizontalmente vecino al primer bloque se divide verticalmente en dos subbloques iguales si se utiliza el segundo modo de partición, el segundo modo de partición no se selecciona como un candidato.
La FIG. 23 ilustra un ejemplo en el que un segundo modo de partición no se selecciona para someter a partición un bloque de N píxeles por N píxeles, como se ilustra en la etapa (2c), en la Realización 2. Como se ilustra en la FIG. 23, un bloque de N píxeles por 2N píxeles (el valor de 'N' puede ser cualquier valor en el rango de 8 a 128 que son múltiplos enteros de 4, por ejemplo, 8 píxeles por 16 píxeles) se puede dividir en un subbloque de N píxeles por N/2 píxeles, un subbloque de N píxeles por N píxeles, y un subbloque de N píxeles por N/2 píxeles (por ejemplo, un subbloque de 8 píxeles por 4 píxeles, un subbloque 8 píxeles por 8 píxeles, un subbloque de 8 píxeles por 4 píxeles) utilizando la primera forma de división (i), como en la etapa (1a). Adicionalmente, un bloque de N píxeles por 2N píxeles también se puede dividir en dos subbloques de N píxeles por N píxeles utilizando la segunda forma de división, como en la etapa (2a). Durante la primera forma de división (i), el bloque central de N píxeles por N píxeles se puede dividir horizontalmente en dos subbloques de N píxeles por N/2 píxeles, como en la etapa (1b). Durante la segunda forma de división (ii), cuando los N píxeles por N píxeles superiores (primer bloque) se dividen horizontalmente en dos subbloques de N píxeles por N/2 píxeles en la etapa (2b), un modo de partición que divide horizontalmente los N píxeles por N píxeles inferiores (segundo bloque) en dos subbloques de N píxeles por N/2 píxeles en la etapa (2c) no se selecciona como un candidato para el modo de partición posible. Esto es porque, el modo de partición producirá tamaños de subbloques que son los mismos como aquellos obtenidos de la primera forma de división (i), o cuatro subbloques de N píxeles por N/2 píxeles.
De esta manera, en la FIG. 23, cuando el primer bloque se divide horizontalmente en dos subbloques iguales si se utiliza el primer modo de partición, y el segundo bloque verticalmente vecino al primer bloque se divide horizontalmente en dos subbloques iguales si se utiliza el segundo modo de partición, el segundo modo de partición no se selecciona como un candidato.
Si se determina que el segundo modo de partición no se selecciona como un candidato para someter a partición un segundo bloque (N en S2003), el segundo parámetro se analiza a partir del flujo de bits y un modo de partición se selecciona de una pluralidad de modos de partición que incluyen el segundo modo de partición como un candidato en la etapa S2004.
Si se determina que el segundo modo de partición no es para ser seleccionado como un candidato para someter a partición el segundo bloque (Y en S2003), un modo de partición diferente del segundo modo de partición se selecciona para someter a partición el segundo bloque en la etapa S2005. En la presente memoria, el modo de partición seleccionado somete a partición un bloque en subbloques con diferentes formas o diferentes tamaños en comparación con los subbloques que se hubieran generado por el segundo modo de partición.
La Figura 24 ilustra un ejemplo de someter a partición un bloque de 2N píxeles por N píxeles utilizando un modo de partición seleccionado cuando no se va a seleccionar el segundo modo de partición, como se ilustra en la etapa (3), en la Realización 2. Como se ilustra en la FIG. 24, el modo de partición seleccionado puede dividir un bloque actual de 2N píxeles por N píxeles (el bloque inferior en este ejemplo) en tres subbloques como se ilustra en (c) y (f) en la FIG. 24. Los tamaños de los tres subbloques pueden ser diferentes. Por ejemplo, entre los tres subbloques, un subbloque grande puede tener dos veces el ancho/alto de un subbloque pequeño. Adicionalmente, por ejemplo, el modo de partición seleccionado puede dividir el bloque actual en dos subbloques con diferentes tamaños (árbol binario asimétrico) como se ilustra en (a), (b), (d), y (e) en la FIG. 24. Por ejemplo, cuando se utiliza un árbol binario asimétrico, el subbloque grande puede tener tres veces el ancho/alto del subbloque pequeño.
La FIG. 25 ilustra un ejemplo de someter a partición un bloque de N píxeles por 2N píxeles utilizando un modo de partición seleccionado cuando no se va a seleccionar el segundo modo de partición, como se ilustra en la etapa (3), en la Realización 2. Como se ilustra en la FIG. 25, el modo de partición seleccionado puede dividir el bloque actual de N píxeles por 2N píxeles (el bloque derecho en este ejemplo) en tres subbloques como se ilustra en (c) y (f) en la FIG.
25. Los tamaños de los tres subbloques pueden ser diferentes. Por ejemplo, entre los tres subbloques, un subbloque grande puede tener dos veces el ancho/alto de un subbloque pequeño. Adicionalmente, por ejemplo, el modo de partición seleccionado puede dividir el bloque actual en dos subbloques con diferentes tamaños (árbol binario asimétrico) como se ilustra en (a), (b), (d), y (e) en la FIG. 25. Por ejemplo, cuando se utiliza un árbol binario asimétrico, el subbloque grande puede tener tres veces el ancho/alto del subbloque pequeño.
La Figura 26 ilustra un ejemplo de someter a partición un bloque de N píxeles por N píxeles utilizando un modo de partición seleccionado cuando no se va a seleccionar el segundo modo de partición, como se ilustra en la etapa (3), en la Realización 2. Como se ilustra en la FIG. 26, un bloque de 2N píxeles por N píxeles se divide verticalmente en dos subbloques de N píxeles por N píxeles en la etapa (1), y el bloque izquierdo de N píxeles por N píxeles se divide verticalmente en dos subbloques de N/2 píxeles por N píxeles en la etapa (2). En la etapa (3), un bloque actual se puede someter a partición en tres subbloques utilizando un modo de partición seleccionado para un bloque actual de N píxeles por N píxeles (el bloque izquierdo en este ejemplo), como se ilustra en (c) y (f) en la FIG. 26. Los tamaños de los tres subbloques pueden ser diferentes. Por ejemplo, entre los tres subbloques, un subbloque grande puede tener dos veces el ancho/alto de un subbloque pequeño. Adicionalmente, por ejemplo, el modo de partición seleccionado puede dividir el bloque actual en dos subbloques con diferentes tamaños (árbol binario asimétrico) como se ilustra en (a), (b), (d), y (e) en la FIG. 26. Por ejemplo, cuando se utiliza un árbol binario asimétrico, el subbloque grande puede tener tres veces el ancho/alto del subbloque pequeño.
La Figura 27 ilustra un ejemplo de someter a partición un bloque de N píxeles por N píxeles utilizando un modo de partición seleccionado cuando no se va a seleccionar el segundo modo de partición, como se ilustra en la etapa (3), en la Realización 2. Como se ilustra en la FIG. 27, un bloque de N píxeles por 2N píxeles se divide horizontalmente en dos subbloques de N píxeles por N píxeles en la etapa (1), y el bloque superior de N píxeles por N píxeles se divide horizontalmente en dos subbloques de N píxeles por N/2 píxeles en la etapa (2). En la etapa (3), un bloque actual se puede someter a partición en tres subbloques utilizando un modo de partición seleccionado para un bloque actual de N píxeles por N píxeles (el bloque inferior en este ejemplo), como se ilustra en (c) y (f) en la FIG. 27. Los tamaños de los tres subbloques pueden ser diferentes. Por ejemplo, entre los tres subbloques, un subbloque grande puede tener dos veces el ancho/alto de un subbloque pequeño. Adicionalmente, por ejemplo, el modo de partición seleccionado puede dividir el bloque actual en dos subbloques con diferentes tamaños (árbol binario asimétrico) como se ilustra en (a), (b), (d), y (e) en la FIG. 27. Por ejemplo, cuando se utiliza un árbol binario asimétrico, el subbloque grande puede tener tres veces el ancho/alto del subbloque pequeño.
La FIG. 17 ilustra las posibles ubicaciones del primer parámetro en un flujo de bits de video comprimido. Como se ilustra en la FIG. 17, el primer parámetro puede estar en un conjunto de parámetros de video, un conjunto de parámetros de secuencia, un conjunto de parámetros de cuadro, un encabezado de segmento, o una unidad de árbol de codificación. El primer parámetro puede indicar la forma para someter a partición un bloque en una pluralidad de subbloques. Por ejemplo, el primer parámetro puede incluir una bandera para indicar si el bloque se va a someter a partición en una dirección horizontal o vertical. El primer parámetro también puede incluir un parámetro para indicar si el bloque se va a someter a partición en dos o más subbloques.
La FIG. 18 ilustra las posibles ubicaciones del segundo parámetro en un flujo de bits de video comprimido. Como se ilustra en la FIG. 18, el segundo parámetro puede estar en un conjunto de parámetros de video, un conjunto de parámetros de secuencia, un conjunto de parámetros de cuadro, un encabezado de segmento, o una unidad de árbol de codificación. El segundo parámetro puede indicar la forma para someter a partición un bloque en una pluralidad de subbloques. Por ejemplo, el segundo parámetro puede incluir una bandera para indicar si el bloque se va a someter a partición en una dirección horizontal o vertical. El segundo parámetro también puede incluir un parámetro para indicar si el bloque se va a someter a partición en dos o más subbloques. El segundo parámetro sigue después del primer parámetro en un flujo de bits como se ilustra en la FIG. 19.
El primer bloque y el segundo bloque son diferentes bloques. El primer bloque y el segundo bloque se pueden incluir en el mismo fotograma. Por ejemplo, el primer bloque puede ser el bloque vecino superior al segundo bloque. Adicionalmente, por ejemplo, el primer bloque puede ser el bloque vecino a la izquierda del segundo bloque.
En la etapa S2006, el segundo bloque se somete a partición en subbloques utilizando el modo de partición seleccionado. En la etapa S2007, se decodifican los bloques sometidos a partición.
[Decodificador]
La FIG. 16 es un diagrama de bloques que ilustra la estructura de un decodificador de video/imagen de acuerdo con la Realización 2 o 3.
El decodificador 6000 de video es un aparato para decodificar un flujo de bits codificado de entrada en una base bloque por bloque y emitir videos/imágenes. Como se ilustra 67 en la FIG. 16, el decodificador 6000 de video incluye el decodificador 6001 de entropía, cuantificador 6002 inverso, transformador 6003 inverso, memoria 6004 de bloque, memoria 6005 de fotograma, intrapredictor 6006, interpredictor 6007, y determinador 6008 de partición de bloques.
Un flujo de bits codificados de entrada se ingresa al decodificador 6001 de entropía. Después que el flujo de bits codificados de entrada se ingresa al decodificador 6001 de entropía, el decodificador 6001 de entropía decodifica el flujo de bits codificados de entrada, emite los parámetros al determinador 6008 de partición de bloques, y emite los valores decodificados al cuantificador 6002 inverso.
El cuantificador 6002 inverso cuantifica de forma inversa los valores decodificados, y emite los coeficientes de frecuencia al transformador 6003 inverso. El transformador 6003 inverso realiza la transformada de frecuencia inversa sobre los coeficientes de frecuencia en base al modo de partición de bloques derivado del determinador 6008 de partición de bloques para transformar los coeficientes de frecuencia en valores de muestra, y emite los valores de muestra a un sumador. El modo de partición de bloques se puede relacionar con un modo de partición de bloques, un tipo de partición de bloques, o una dirección de partición de bloques. El sumador agrega los valores de muestra a los valores de video/imagen pronosticados emitidos desde los intra/interpredictores 6006, 6007, y emite los valores agregados a una visualización, y emite los valores agregados a la memoria 6004 de bloque o memoria 6005 de fotograma para predicción adicional. El determinador 6008 de partición de bloques recopila información de bloques desde la memoria 6004 de bloque o memoria 6005 de fotograma para derivar el modo de partición de bloques utilizando los parámetros decodificados por el decodificador 6001 de entropía. Utilizando el modo de partición de bloques derivado dará como resultado la partición de un bloque en una pluralidad de subbloques. Además, el intra/interpredictor 6006, 6007 estima un área de video/imagen del bloque que se va a decodificar, desde videos/imágenes almacenados en la memoria 6004 de bloque o desde videos/imágenes en la memoria 6005 de fotograma reconstruida utilizando el modo de partición de bloques derivado del determinador 6008 de partición de bloques.
REALIZACIÓN 3
El procedimiento de codificación y el procedimiento de decodificación de acuerdo con la Realización 3 se describirán en detalle con referencia a la FIG. 13 y FIG. 14. El codificador y el decodificador de acuerdo con la Realización 3 se describirán en detalle con referencia a la FIG. 15 y FIG. 16.
[Procedimiento de codificación]
La FIG. 13 ilustra un procedimiento de codificación de video de acuerdo con la Realización 3.
Primero, en la etapa S3001, se escribe un primer parámetro para identificar, a partir de una pluralidad de tipos de partición, un tipo de partición para someter a partición un primer bloque en subbloques en un flujo de bits.
A continuación, en la etapa S3002, un segundo parámetro que indica la dirección de partición se escribe en el flujo de bits. El segundo parámetro sigue después del primer parámetro en un flujo de bits. El tipo de partición junto con la dirección de partición puede formar el modo de partición. El tipo de partición indica el número de subbloques y la relación de partición para someter a partición un bloque.
La FIG. 29 ilustra ejemplos de tipos de partición y direcciones de partición para someter a partición un bloque de N píxeles por N píxeles en la Realización 3. En la FIG. 29, (1), (2), (3), y (4) son diferentes tipos de partición, (1a), (2a), (3a), y (4a) son diferentes modos de partición de los tipos de partición relacionados en la dirección de partición vertical, y (1b), (2b), (3b), y (4b) son diferentes modos de partición de los tipos de partición relacionados en la dirección de partición horizontal. Como se ilustra en la FIG. 29, un bloque de N píxeles por N píxeles se somete a partición utilizando el modo de partición (1a) cuando se somete a partición con el árbol binario simétrico (es decir, dos subbloques) en la dirección de partición vertical con relación de partición 1:1. Un bloque de N píxeles por N píxeles se somete a partición utilizando el modo de partición (1b) cuando se somete a partición con el árbol binario simétrico (es decir, dos subbloques) en la dirección de partición horizontal con relación de partición 1:1. Un bloque de N píxeles por N píxeles se somete a partición utilizando el modo de partición (2a) cuando se somete a partición con el árbol binario asimétrico (es decir, dos subbloques) en la dirección de partición vertical en relación de partición 1:3. Un bloque de N píxeles por N píxeles se somete a partición utilizando el modo de partición (2b) cuando se somete a partición con el árbol binario asimétrico (es decir, dos subbloques) en la dirección de partición horizontal en relación de partición 1:3. Un bloque de N píxeles por N píxeles se somete a partición utilizando el modo de partición (3a) cuando se somete a partición con el árbol binario asimétrico (es decir, dos subbloques) en la dirección de partición vertical en relación de partición 3:1. Un bloque de N píxeles por N píxeles se somete a partición utilizando el modo de partición (3b) cuando se somete a partición con el árbol binario asimétrico (es decir, dos subbloques) en la dirección de partición horizontal en relación de partición 3:1. Un bloque de N píxeles por N píxeles se somete a partición utilizando el modo de partición (4a) cuando se somete a partición con el árbol ternario (es decir, tres subbloques) en la dirección de partición vertical en relación de partición 1:2:1. Un bloque de N píxeles por N píxeles se somete a partición utilizando el modo de partición (4b) cuando se somete a partición con el árbol ternario (o tres subbloques) en la dirección de partición horizontal en relación de partición 1:2:1.
La FIG. 17 ilustra las posibles ubicaciones del primer parámetro en un flujo de bits de video comprimido. Como se ilustra en la FIG. 17, el primer parámetro puede estar en un conjunto de parámetros de video, un conjunto de parámetros de secuencia, un conjunto de parámetros de cuadro, un encabezado de segmento, o una unidad de árbol de codificación. El primer parámetro puede indicar la forma para someter a partición un bloque en una pluralidad de subbloques. Por ejemplo, el primer parámetro puede incluir una bandera para indicar si el bloque se va a someter a partición en una dirección horizontal o vertical. El primer parámetro también puede incluir un parámetro para indicar si el bloque se va a someter a partición en dos o más subbloques.
La FIG. 18 ilustra las posibles ubicaciones del segundo parámetro en un flujo de bits de video comprimido. Como se ilustra en la FIG. 18, el segundo parámetro puede estar en el conjunto de parámetros de video, conjunto de parámetros de secuencia, conjunto de parámetros de cuadro, encabezado de segmento, o unidad de árbol de codificación. El segundo parámetro puede indicar la forma para someter a partición un bloque en una pluralidad de subbloques. Por ejemplo, el segundo parámetro puede incluir una bandera para indicar si el bloque se va a someter a partición en una dirección horizontal o vertical. El segundo parámetro también puede incluir un parámetro para indicar si el bloque se va a someter a partición en dos o más subbloques. El segundo parámetro sigue después del primer parámetro en un flujo de bits como se ilustra en la FIG. 19.
La FIG. 30 ilustra una ventaja de codificar el tipo de partición antes de la dirección de partición en comparación con codificar la dirección de partición antes del tipo de partición. En este ejemplo, cuando se deshabilita la dirección de partición horizontal debido al tamaño no admitido (16 píxeles por 2 píxeles), no es necesario codificar la dirección de partición. La dirección de partición se determina como la dirección de partición vertical a medida que se deshabilita la dirección de partición horizontal en este ejemplo. Codificar el tipo de partición antes de la dirección de partición ahorra bits de codificación desde la dirección de partición de codificación en comparación con codificar la dirección de partición antes del tipo de partición.
De esta manera, es posible determinar si un bloque se puede someter a partición en cada una de la dirección horizontal y dirección vertical en base a una condición predeterminada para la partición de bloques permitida o no permitida. Luego, cuando se determina que es posible la partición en solo una de la dirección horizontal y la dirección vertical, se puede omitir la escritura de la dirección de partición en un flujo de bits. Además, cuando se determina que no es posible la partición tanto en la dirección horizontal como en la dirección vertical, además de la dirección de partición, también se puede omitir la escritura del tipo de partición en el flujo de bits.
La condición predeterminada para la partición de bloques permitida o no permitida se define por el tamaño (número de píxeles) o el número de veces que se realiza la partición, por ejemplo. La condición para la partición de bloques permitida o no permitida se puede predefinir en una memoria descriptiva estándar. Adicionalmente, la condición para la partición de bloques permitida o no permitida se puede incluir en un conjunto de parámetros de video, un conjunto de parámetros de secuencia, un conjunto de parámetros de cuadro, un encabezado de segmento, o una unidad de árbol de codificación. La condición para la partición de bloques permitida o no permitida se puede fijar para todos los bloques, y se puede conmutar de forma dinámica de acuerdo con una propiedad de bloque (por ejemplo, bloque de luminanacia y crominancia) o una propiedad de cuadro (por ejemplo, cuadro I, P, y B)
En la etapa S3003, el bloque se somete a partición en subbloques utilizando el tipo de partición identificado y la dirección de partición indicada. En la etapa S3004, se codifican los bloques sometidos a partición.
[Codificador]
La FIG. 15 es un diagrama de bloques que ilustra la estructura de un codificador de video/imágenes de acuerdo con la Realización 2 o 3.
El codificador 5000 de video es un aparato para codificar un video/imagen de entrada en una base bloque- por bloque para generar un flujo de bits de salida codificado. Como se ilustra en la FIG. 15, el codificador 5000 de video incluye el transformador 5001, cuantificador 5002, cuantificador 5003 inverso, transformador 5004 inverso, memoria 5005 de bloque, memoria 5006 de fotograma, intrapredictor 5007, interpredictor 5008, codificador 5009 de entropía, y determinador 5010 de partición de bloques.
Un video de entrada se ingresa a un sumador, y el valor agregado se emite al transformador 5001. El transformador 5001 transforma los valores agregados en coeficientes de frecuencia en base al tipo de partición de bloques y la dirección derivada desde el determinador 5010 de partición de bloques, y emite los coeficientes de frecuencia al cuantificador 5002. El tipo de partición de bloques y la dirección se pueden relacionar con un modo de partición de bloques, un tipo de partición de bloques, o una dirección de partición de bloques. El cuantificador 5002 cuantifica los coeficientes cuantificados introducidos, y emite los valores cuantificados al cuantificador 5003 inverso y al codificador 5009 de entropía.
El cuantificador 5003 inverso cuantifica de forma inversa los valores cuantificados emitidos desde el cuantificador 5002, y emite los coeficientes de frecuencia al transformador 5004 inverso. El transformador 5004 inverso realiza la transformada de frecuencia inversa sobre los coeficientes de frecuencia en base al tipo de partición de bloques y la dirección derivada desde el determinador 5010 de partición de bloques, para transformar los coeficientes de frecuencia en valores de muestra del flujo de bits, y emite los valores de muestra a un sumador.
El sumador agrega los valores de muestra del flujo de bits emitidos desde el transformador 5004 inverso a los valores de video/imagen pronosticados emitidos desde el inter/intrapredictor 5007, 5008, y emite los valores agregados a la memoria 5005 de bloque o memoria 5006 de fotograma para predicción adicional. El determinador 5010 de partición de bloques recopila información de bloques desde la memoria 5005 de bloque o memoria 5006 de fotograma para derivar un tipo de partición de bloques y la dirección y los parámetros relacionados con el tipo y dirección de partición de bloques. Utilizando el tipo y dirección de partición de bloques derivado dará como resultado la partición de un bloque en una pluralidad de subbloques. El inter/intrapredictor 5007, 5008 busca dentro de los videos/imágenes almacenados en la memoria 5005 de bloque o desde videos/imágenes en la memoria 5006 de fotograma reconstruida utilizando el tipo de partición de bloques y la dirección derivada desde el determinador 5010 de partición de bloques, y estima un área de video/imagen que es por ejemplo, más similar a los videos/imágenes de entrada para la predicción.
El codificador 5009 de entropía codifica los valores cuantificados emitidos desde el cuantificador 5002, codifica los parámetros desde el determinador 5010 de partición de bloques, y emite un flujo de bits.
[Procedimiento de decodificación]
La FIG. 14 ilustra un procedimiento de decodificación de video de acuerdo con la Realización 3.
Primero, en la etapa S4001, se analiza un primer parámetro para identificar, a partir de una pluralidad de tipos de partición, un tipo de partición para someter a partición un primer bloque en subbloques a partir de un flujo de bits.
A continuación, en la etapa S4002, un segundo parámetro que indica dirección de partición se analiza a partir del flujo de bits. El segundo parámetro sigue después del primer parámetro en un flujo de bits. El tipo de partición junto con la dirección de partición puede formar el modo de partición. El tipo de partición indica el número de subbloques y la relación de partición para someter a partición un bloque.
La FIG. 29 ilustra ejemplos de tipos de partición y direcciones de partición para someter a partición un bloque de N píxeles por N píxeles en la Realización 3. En la FIG. 29, (1), (2), (3), y (4) son diferentes tipos de partición, (1a), (2a), (3a), y (4a) son diferentes modos de partición de los tipos de partición relacionados en la dirección de partición vertical, y (1b), (2b), (3b), y (4b) son diferentes modos de partición de los tipos de partición relacionados en la dirección de partición horizontal. Como se ilustra en la FIG. 29, un bloque de N píxeles por N píxeles se somete a partición utilizando el modo de partición (1a) cuando se somete a partición con el árbol binario simétrico (es decir, dos subbloques) en la dirección de partición vertical con relación de partición 1:1. Un bloque de N píxeles por N píxeles se somete a partición utilizando el modo de partición (1b) cuando se somete a partición con el árbol binario simétrico (es decir, dos subbloques) en la dirección de partición horizontal con relación de partición 1:1. Un bloque de N píxeles por N píxeles se somete a partición utilizando el modo de partición (2a) cuando se somete a partición con el árbol binario asimétrico (es decir, dos subbloques) en la dirección de partición vertical en relación de partición 1:3. Un bloque de N píxeles por N píxeles se somete a partición utilizando el modo de partición (2b) cuando se somete a partición con el árbol binario asimétrico (es decir, dos subbloques) en la dirección de partición horizontal en relación de partición 1:3. Un bloque de N píxeles por N píxeles se somete a partición utilizando el modo de partición (3a) cuando se somete a partición con el árbol binario asimétrico (es decir, dos subbloques) en la dirección de partición vertical en relación de partición 3:1. Un bloque de N píxeles por N píxeles se somete a partición utilizando el modo de partición (3b) cuando se somete a partición con el árbol binario asimétrico (es decir, dos subbloques) en la dirección de partición horizontal en relación de partición 3:1. Un bloque de N píxeles por N píxeles se somete a partición utilizando el modo de partición (4a) cuando se somete a partición con el árbol ternario (es decir, tres subbloques) en la dirección de partición vertical en relación de partición 1:2:1. Un bloque de N píxeles por N píxeles se somete a partición utilizando el modo de partición (4b) cuando se somete a partición con el árbol ternario (o tres subbloques) en la dirección de partición horizontal en relación de partición 1:2:1.
La FIG. 17 ilustra las posibles ubicaciones del primer parámetro en un flujo de bits de video comprimido. Como se ilustra en la FIG. 17, el primer parámetro puede estar en conjunto de parámetros de video, conjunto de parámetros de secuencia, conjunto de parámetros de cuadro, encabezado de segmento, o unidad de árbol de codificación. El primer parámetro puede indicar la forma para someter a partición un bloque en una pluralidad de subbloques. Por ejemplo, el primer parámetro puede incluir un identificador del tipo de partición anteriormente mencionado. Por ejemplo, el primer parámetro puede incluir una bandera para indicar si el bloque se va a someter a partición en una dirección horizontal o vertical. El primer parámetro también puede incluir un parámetro para indicar si el bloque se va a someter a partición en dos o más subbloques.
La FIG. 18 ilustra las posibles ubicaciones del segundo parámetro en un flujo de bits de video comprimido. Como se ilustra en la FIG. 18, el segundo parámetro puede estar en conjunto de parámetros de video, conjunto de parámetros de secuencia, conjunto de parámetros de cuadro, encabezado de segmento, o unidad de árbol de codificación. El segundo parámetro puede indicar la forma para someter a partición un bloque en una pluralidad de subbloques. Por ejemplo, el segundo parámetro puede incluir una bandera para indicar si el bloque se va a someter a partición en una dirección horizontal o vertical. Específicamente, el segundo parámetro puede incluir un parámetro para indicar la dirección de partición. El segundo parámetro también puede incluir un parámetro para indicar si el bloque se va a someter a partición en dos o más subbloques. El segundo parámetro sigue después del primer parámetro en un flujo de bits como se ilustra en la FIG. 19.
La FIG. 30 ilustra una ventaja de codificar el tipo de partición antes de la dirección de partición en comparación con codificar la dirección de partición antes del tipo de partición. En este ejemplo, cuando se deshabilita la dirección de partición horizontal debido al tamaño no admitido (16 píxeles por 2 píxeles), no es necesario codificar la dirección de partición. La dirección de partición se determina como la dirección de partición vertical a medida que se deshabilita la dirección de partición horizontal en este ejemplo. Codificar el tipo de partición antes de la dirección de partición ahorra bits de codificación desde la dirección de partición de codificación en comparación con codificar la dirección de partición antes del tipo de partición.
De esta manera, es posible determinar si un bloque se puede someter a partición en cada una de la dirección horizontal y dirección vertical en base a una condición predeterminada para la partición de bloques permitida o no permitida. Luego, cuando se determina que es posible la partición en solo una de la dirección horizontal y la dirección vertical, se puede omitir el análisis de la dirección de partición desde un flujo de bits. Además, cuando se determina que no es posible la partición tanto en la dirección horizontal como en la dirección vertical, además de la dirección de partición, también se puede omitir el análisis del tipo de partición desde el flujo de bits.
La condición predeterminada para la partición de bloques permitida o no permitida se define por el tamaño (número de píxeles) o el número o veces que se realiza la partición, por ejemplo. Esta condición para la partición de bloques permitida o no permitida se puede predefinir en una memoria descriptiva estándar. Adicionalmente, la condición para la partición de bloques permitida o no permitida se puede incluir en un conjunto de parámetros de video, un conjunto de parámetros de secuencia, un conjunto de parámetros de cuadro, un encabezado de segmento, o una unidad de árbol de codificación. La condición para la partición de bloques permitida o no permitida se puede fijar para todos los bloques, y se puede conmutar de forma dinámica de acuerdo con una propiedad de bloque (por ejemplo, bloque de luminanacia y crominancia) o una propiedad de cuadro (por ejemplo, cuadro I, P, y B)
En la etapa S4003, el bloque se somete a partición en subbloques utilizando el tipo de partición identificado y la dirección de partición indicada. En la etapa S4004, se decodifican los bloques sometidos a partición.
[Decodificador]
La FIG. 16 es un diagrama de bloques que ilustra la estructura de un decodificador de video/imagen de acuerdo con la Realización 2 o 3.
El decodificador 6000 de video es un aparato para decodificar un flujo de bits codificado de entrada en una base bloque por bloque y emitir videos/imágenes. Como se ilustra en la FIG. 16, el decodificador 6000 de video incluye el decodificador 6001 de entropía, cuantificador 6002 inverso, transformador 6003 inverso, memoria 6004 de bloque, memoria 6005 de fotograma, intrapredictor 6006, interpredictor 6007, y determinador 6008 de partición de bloques.
Un flujo de bits codificados de entrada se ingresa al decodificador 6001 de entropía. Después que se ingresa el flujo de bits codificados de entrada al decodificador 6001 de entropía, decodificador 6001 de entropía decodifica el flujo de bits codificados de entrada, emite los parámetros al determinador 6008 de partición de bloques, y emite los valores decodificados al cuantificador 6002 inverso.
El cuantificador 6002 inverso cuantifica de forma inversa los valores decodificados, y emite los coeficientes de frecuencia al transformador 6003 inverso. El transformador 6003 inverso realiza la transformada de frecuencia inversa sobre los coeficientes de frecuencia en base al tipo de partición de bloques y la dirección derivada desde el determinador 6008 de partición de bloques para transformar los coeficientes de frecuencia en valores de muestra, y emite los valores de muestra a un sumador. El tipo de partición de bloques y la dirección se pueden relacionar con un modo de partición de bloques, un tipo de partición de bloques, o una dirección de partición de bloques. El sumador agrega los valores de muestra a los valores de video/imagen pronosticados emitidos desde los intra/interpredictores 6006, 6007, y emite los valores agregados a una visualización, y emite los valores agregados a la memoria 6004 de bloque o memoria 6005 de fotograma para predicción adicional. El determinador 6008 de partición de bloques recopila información de bloques desde la memoria 6004 de bloque o memoria 6005 de fotograma para derivar el tipo y dirección de partición de bloques utilizando los parámetros decodificados por el decodificador 6001 de entropía. Utilizando el tipo y dirección de partición de bloques derivado dará como resultado la partición de un bloque en una pluralidad de subbloques. Además, el intra/interpredictor 6006, 6007 estima un área de video/imagen del bloque que se va a decodificar, desde videos/imágenes almacenados en la memoria 6004 de bloque o desde videos/imágenes en la memoria 6005 de fotograma reconstruida utilizando el tipo de partición de bloques y la dirección derivada desde el determinador 6008 de partición de bloques.
REALIZACIÓN 4
Como se describe en cada una de las realizaciones anteriores, cada bloque funcional normalmente se puede realizar como una MPU y una memoria, por ejemplo. Más aún, los procedimientos realizados por cada uno de los bloques funcionales normalmente se realizan mediante una unidad de ejecución de programas, tal como un procesador, que lee y ejecuta software (un programa) grabado en un medio de grabación tal como una ROM. El software se puede distribuir mediante, por ejemplo, descargas, y se puede grabar en un medio de grabación tal como una memoria de semiconductores y distribuirse. Tenga en cuenta que cada bloque funcional, por supuesto, también se puede realizar como hardware (circuito dedicado).
Más aún, el procesamiento descrito en cada una de las realizaciones se puede realizar a través de un procesamiento integrado utilizando un único aparato (sistema) y, alternativamente, se puede realizar a través de un procesamiento descentralizado utilizando una pluralidad de aparatos. Más aún, el procesador que ejecuta el programa descrito anteriormente puede ser un único procesador o una pluralidad de procesadores. En otras palabras, se puede realizar un procesamiento integrado y, alternativamente, se puede realizar un procesamiento descentralizado.
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.
A continuación, se describirán ejemplos de aplicación del procedimiento de codificación de cuadros en movimiento (procedimiento de codificación de imágenes) y el procedimiento de decodificación de cuadros en movimiento (procedimiento de decodificación de imágenes) descritos en cada una de las realizaciones anteriores y un sistema que emplea los mismos. El sistema se caracteriza por incluir un codificador de imágenes que emplea el procedimiento de codificación de imágenes, un decodificador de imágenes que emplea el procedimiento de decodificación de imágenes y un codificador/decodificador de imágenes que incluye tanto el codificador de imágenes como el decodificador de imágenes. Otras configuraciones incluidas en el sistema se pueden modificar caso por caso.
[Ejemplos de uso]
La FIG. 33 ilustra una configuración general del sistema ex100 proveedor de contenido 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 ex106, ex107, ex108, ex109 y ex110 base, que son estaciones inalámbricas fijas, se ubican en celdas respectivas.
En el sistema ex100 proveedor de contenido, los dispositivos que incluyen el ordenador ex111, dispositivo ex112 de juego, cámara ex113, electrodoméstico ex114 y teléfono ex115 inteligente se conectan a la internet ex101 a través del proveedor ex102 de servicios de internet o la red ex104 de comunicaciones y las estaciones ex106 a ex110 base. El sistema ex100 proveedor de contenido puede combinar y conectar cualquier combinación de los elementos anteriores. Los dispositivos se pueden conectar entre sí directa o indirectamente a través de una red telefónica o comunicación de campo cercano en lugar de a través de estaciones ex106 a ex110 base, que son estaciones inalámbricas fijas. Más aún, el servidor ex103 de transmisión continua se conecta a dispositivos que incluyen el ordenador ex111, dispositivo ex112 de juegos, cámara ex113, electrodomésticos ex114 y teléfono ex115 inteligente a través, por ejemplo, de internet ex101. El servidor ex103 de transmisión continua también se conecta, por ejemplo, a un terminal en un punto de conexión en el avión ex117 a través del satélite ex116.
Tenga en cuenta que en lugar de las estaciones ex106 a ex110 base, se pueden utilizar puntos de acceso inalámbrico o puntos de conexión. El servidor ex103 de transmisión continua se puede conectar a la red ex104 de comunicaciones directamente en lugar de a través de internet ex101 o al proveedor ex102 de servicios de internet, y se puede conectar al avión ex117 directamente en lugar de a través del satélite ex116.
La cámara ex113 es un dispositivo capaz de capturar imágenes fijas y video, tal como una cámara digital. El teléfono ex115 inteligente es un dispositivo de teléfono inteligente, teléfono celular o teléfono con sistema personal de telefonía portátil (PHS) que puede operar bajo los estándares del sistema de comunicaciones móviles de los sistemas típicos 2G, 3G, 3.9G y 4G, así como el sistema 5G de próxima generación.
El electrodoméstico ex118 es, por ejemplo, un frigorífico o un dispositivo incluido en un sistema de cogeneración de pila de combustible doméstico.
En el sistema ex100 proveedor de contenido, un terminal que incluye una función de captura de imagen y/o video es capaz, por ejemplo, de transmitir en directo al conectarse al servidor ex103 de transmisión continua a través, por ejemplo, de la estación ex106 base. Cuando se transmite en vivo, un terminal (por ejemplo, ordenador ex111, dispositivo ex112 de juego, cámara ex113, electrodoméstico ex114, teléfono ex115 inteligente o avión ex117) realiza el procesamiento de codificación descrito en las realizaciones anteriores en imágenes fijas o contenido de video capturado por un usuario a través del terminal, multiplexa los datos de video obtenidos a través de la codificación y los datos de audio obtenidos al codificar el audio correspondiente al video, y transmite los datos obtenidos al servidor ex103 de transmisión continua. En otras palabras, el terminal funciona como codificador de imágenes de acuerdo con un aspecto de la presente divulgación.
El servidor ex103 de transmisión continua transmite de forma continua los datos de contenido transmitidos a los clientes que solicitan la transmisión continua. Los ejemplos de clientes incluyen el ordenador ex111, dispositivo ex112 de juego, cámara ex113, electrodoméstico ex114, teléfono ex115 inteligente y terminales dentro del avión ex117, que son capaces de decodificar los datos codificados descritos anteriormente. Los dispositivos que reciben los datos transmitidos de forma continua decodifican y reproducen los datos recibidos. En otras palabras, cada uno de los dispositivos funciona como decodificador de imágenes de acuerdo con un aspecto de la presente divulgación.
[Procesamiento descentralizado]
El servidor ex103 de transmisión continua se puede realizar como una pluralidad de servidores u ordenadores entre los cuales se dividen tareas tales como el procesamiento, grabación y transmisión continua de datos. Por ejemplo, el servidor ex103 de transmisión continua se puede realizar como una red de entrega de contenido (CDN) que transmite de forma continua contenido a través de una red que conecta múltiples servidores perimetrales ubicados en todo el mundo. En una CDN, un servidor perimetral físicamente cerca del cliente se asigna dinámicamente al cliente. El contenido se almacena en caché y se transmite de forma continua al servidor perimetral para reducir los tiempos de carga. En caso de, por ejemplo, algún tipo de error o cambio en la conectividad debido, por ejemplo, a un pico en el tráfico, es posible transmitir datos de manera estable a altas velocidades, ya que es posible evitar las partes afectadas de la red, por ejemplo, al dividir el procesamiento entre una pluralidad de servidores perimetrales o conmutar las tareas de transmisión continua a un servidor perimetral diferente y continuar la transmisión continua.
La descentralización no se limita solo a la división del procesamiento para la transmisión continua; la codificación de los datos capturados se puede dividir entre y realizar 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 qué tan complicada es la imagen sobre una base fotograma por fotograma o escena por escena, o detectar la carga de codificación. El segundo bucle es para el procesamiento que mantiene la calidad de la 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 la eficiencia de codificación del contenido al hacer que los terminales realicen el primer bucle de codificación y que el lado del servidor que recibió el contenido realice el segundo bucle de la codificación. En dicho 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 hace posible realizar una transmisión continua fluida y en tiempo real.
En otro ejemplo, la cámara ex113 o similar extrae una cantidad de funciones de una imagen, comprime los datos relacionados con la cantidad de funciones como metadatos y transmite los metadatos comprimidos a un servidor. Por ejemplo, el servidor determina la importancia de un objeto en base a la cantidad de características y cambia la precisión de la cuantificación de acuerdo con lo anterior para realizar la compresión adecuada para el significado de la imagen. Los datos de cantidad de características son particularmente efectivos para mejorar la precisión y la eficiencia de la predicción del vector de movimiento durante el segundo paso de compresión realizado por el servidor. Más aún, la codificación que tiene una carga de procesamiento relativamente baja, tal como la codificación de longitud variable (VLC), se puede manejar por el terminal, y la codificación que tiene una carga de procesamiento relativamente alta, tal como la codificación aritmética binaria adaptable al contexto (CABAC), puede ser manejado por el servidor.
En aún otro ejemplo, hay instancias en las que una pluralidad de videos de aproximadamente la misma escena son capturados por una pluralidad de terminales en, por ejemplo, un estadio, un centro comercial o una fábrica. En dicho caso, por ejemplo, la codificación se puede descentralizar al dividir las tareas de procesamiento entre la pluralidad de terminales que capturaron los videos y, si es necesario, otros terminales que no capturaron los videos y el servidor, en una base por unidad. Las unidades pueden ser, por ejemplo, grupos de cuadros (GOP), cuadros, o mosaicos resultantes de dividir un cuadro. Esto permite reducir los tiempos de carga y lograr una transmisión continua más cercana al tiempo real.
Más aún, dado que los videos son de aproximadamente la misma escena, el manejo y/o la instrucción se pueden llevar a cabo por el servidor para que los videos capturados por los terminales se puedan cruzar. Más aún, el servidor puede recibir datos codificados de los terminales, cambiar la relación de referencia entre los ítems de datos o corregir o reemplazar los propios cuadros y luego realizar la codificación. Esto hace posible generar un flujo con mayor calidad y eficiencia para los ítems de datos individuales.
Más aún, el servidor puede transmitir de forma continua los datos de video después de realizar la transcodificación para convertir el formato de codificación de los datos de video. Por ejemplo, el servidor puede convertir el formato de codificación de MPEG a VP y puede convertir H.264 a H.265.
De esta forma, la codificación se puede realizar por un terminal o uno o más servidores. De acuerdo con lo anterior, aunque el dispositivo que realiza la codificación se denomina como un “servidor” o “terminal” en la siguiente descripción, algunos o todos los procedimientos realizados por el servidor pueden ser realizados por el terminal, y así mismo algunos o todos los procedimientos realizados por el terminal pueden ser realizados por el servidor. Esto también se aplica a los procedimientos de decodificación.
[3D, multiángulo]
En los últimos años, ha aumentado el uso de imágenes o videos combinados a partir de imágenes o videos de diferentes escenas capturadas simultáneamente o la misma escena capturada desde diferentes ángulos por una pluralidad de terminales tales como la cámara ex113 y/o teléfono ex115 inteligente. Los videos capturados por los terminales se combinan en base, por ejemplo, a la relación de posición relativa obtenida por separado entre los terminales, o regiones en un video que tienen puntos característicos coincidentes.
Además de la codificación de cuadros en movimiento bidimensionales, el servidor puede codificar una imagen fija basada en el análisis de la escena de un cuadro en movimiento, ya sea automáticamente o en un momento en el tiempo especificado por el usuario, y transmitir la imagen fija codificada a un terminal de recepción. Adicionalmente, cuando el servidor puede obtener la relación posicional relativa entre los terminales de captura de video, además de cuadros en movimiento bidimensionales, el servidor puede generar geometría tridimensional de una escena basada en video de la misma escena capturada desde diferentes ángulos. Tenga en cuenta que el servidor puede codificar por separado datos tridimensionales generados a partir de, por ejemplo, una nube de puntos, y puede, según el resultado de reconocer o rastrear a una persona u objeto utilizando datos tridimensionales, seleccionar o reconstruir y generar un video para transmitirse a un terminal de recepción a partir de videos capturados por una pluralidad de terminales.
Esto permite al usuario disfrutar de una escena al seleccionar libremente videos correspondientes a los terminales de captura de video, y permite que el usuario disfrute del contenido obtenido al extraer, a partir de datos tridimensionales reconstruidos desde una pluralidad de imágenes o videos, un video de un punto de vista seleccionado. Adicionalmente, de manera similar al video, el sonido se puede grabar desde ángulos relativamente diferentes, y el servidor se puede multiplexar, con el video, el audio desde un ángulo o espacio específico de acuerdo con el video, y transmitir el resultado.
En los últimos años, el contenido que es una combinación del mundo real y el mundo virtual, tal como el contenido de realidad virtual (VR) y realidad aumentada (AR), también se ha vuelto popular. En el caso de las imágenes de realidad virtual, el servidor puede crear imágenes desde los puntos de vista de los ojos izquierdo y derecho y realizar una codificación que tolere la referencia entre las imágenes de dos puntos de vista, tal como la codificación de múltiples vistas (MVC) y, alternativamente, puede codificar las imágenes como flujos separados sin referencias. Cuando las imágenes se decodifican como flujos separados, los flujos se pueden sincronizar cuando se reproducen para recrear un espacio tridimensional virtual de acuerdo con el punto de vista del usuario.
En el caso de las imágenes AR, el servidor superpone información de objetos virtuales existente en un espacio virtual sobre la información de la cámara que representa un espacio del mundo real, en base a 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 en base al movimiento desde la perspectiva del usuario y luego generar datos superpuestos al conectar las imágenes sin problemas. Alternativamente, el decodificador puede transmitir, al servidor, el movimiento desde la perspectiva del usuario además de una solicitud de información del objeto virtual, y el servidor puede generar datos superpuestos en base a los datos tridimensionales almacenados en el servidor de acuerdo con el movimiento recibido, y codificar y transmitir de forma continua los datos superpuestos generados al decodificador. Tenga en cuenta que los datos superpuestos incluyen, además de los valores de RGB, un valor a que indica transparencia, y el servidor establece el valor a para secciones distintas del objeto generado a partir de datos tridimensionales, por ejemplo, 0, y puede realizar la codificación mientras esas secciones son transparentes. Alternativamente, el servidor puede establecer el fondo en un valor de RGB predeterminado, tal como una clave de crominancia, y generar datos en los que áreas distintas del objeto se establezcan como fondo.
La decodificación de datos transmitidos de forma continua de manera similar se puede realizar por el cliente (es decir, los terminales), en el lado del servidor, o divididirse 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 se puede transmitir a un dispositivo que tiene una pantalla. Es posible reproducir datos de alta calidad de imagen al descentralizar el procesamiento y seleccionar adecuadamente el contenido, independientemente de la capacidad de procesamiento del propio terminal de comunicaciones. En aún otro ejemplo, mientras un TV, por ejemplo, es recibir datos de imagen de gran tamaño, una región de un cuadro, tal como un mosaico obtenido al dividir el cuadro, se puede decodificar y visualizar sobre un terminal personal o terminales de un espectador o espectadores de la TV. Esto hace posible que los espectadores compartan una vista de cuadro grande, así como que cada espectador compruebe su área asignada o inspeccione una región con más detalle de cerca.
En el futuro, tanto en interiores como en exteriores, en situaciones en las que sea posible una pluralidad de conexiones inalámbricas a distancias cercanas, medias y lejanas, se espera poder recibir contenido sin interrupciones incluso cuando se conmuta a los datos apropiados para la conexión actual, utilizando un estándar de sistema de transmisión continua tal como MPEG-DASH. Con esto, el usuario puede conmutar entre datos en tiempo real mientras selecciona libremente un decodificador o aparato de visualización que incluye no solo su propio terminal, sino también, por ejemplo, pantallas dispuestas en interiores o exteriores. Más aún, en base, por ejemplo, a la información sobre la posición del usuario, la decodificación se puede realizar mientras se conmuta qué terminal maneja la decodificación y qué terminal maneja la visualización del contenido. Esto hace posible, durante la ruta hacia un destino, visualización, en la pared de un edificio cercano en el que esté incorporado un dispositivo capaz de mostrar contenido, o en una parte del suelo, mapear información mientras se está en movimiento. Más aún, también es posible conmutar la tasa de bits de los datos recibidos en base a la accesibilidad a los datos codificados en una red, tal como cuando los datos codificados se almacenan en caché en un servidor al que se puede acceder rápidamente desde el terminal de recepción o cuando se copian los datos codificados a un servidor perimetral en un servicio de suministro de contenido.
[Codificación escalable]
La conmutación de contenido se describirá con referencia a un flujo escalable, ilustrado en la FIG. 34, que se codifica por compresión a través de la implementación del procedimiento de codificación de cuadros en movimiento descrito en las realizaciones anteriores. El servidor puede tener una configuración en la que el contenido se conmuta mientras se hace uso de la escalabilidad temporal y/o espacial de un flujo, que se logra mediante la división y codificación de capas, como se ilustra en la FIG. 34. Tenga en cuenta que puede haber una pluralidad de flujos individuales que son del mismo contenido pero de diferente calidad. En otras palabras, al determinar en qué capa decodificar en base a factores internos, tales como la capacidad de procesamiento en el lado del decodificador, y factores externos, tales como el ancho de banda de comunicación, el lado del decodificador se puede conmutar libremente entre contenido de baja resolución y contenido de alta resolución, mientras se decodifica. Por ejemplo, en el caso de que el usuario quiera seguir viendo, en su casa en un dispositivo tal como un TV conectado a la Internet, un video que había estado viendo previamente en el teléfono ex115 inteligente mientras estaba en movimiento, el dispositivo puede solo decodificar el mismo flujo en una capa diferente, lo que reduce la carga del lado del servidor.
Adicionalmente, además de la configuración descrita anteriormente en la que la escalabilidad se logra como resultado de que los cuadros se codifican por capa y la capa de mejora está por encima de la capa base, la capa de mejora puede incluir metadatos basados, por ejemplo, en información estadística sobre la imagen, y el lado del decodificador puede generar contenido de alta calidad de imagen al realizar formación de imágenes de súper resolución sobre un cuadro en la capa base en base a los metadatos. La formación de imágenes de superresolución puede mejorar la relación SN mientras se mantiene la resolución o se aumenta la resolución. Los metadatos incluyen información para identificar un coeficiente de filtro lineal o no lineal utilizado 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 procedimiento de mínimos cuadrados utilizado en el procesamiento de súper resolución.
Alternativamente, una configuración en la que un cuadro se divide en, por ejemplo, mosaicos de acuerdo con el significado de, por ejemplo, un objeto en la imagen, y en el lado del decodificador, solo se decodifica una región parcial al seleccionar un mosaico para decodificar, también es aceptable. Más aún, al almacenar un atributo sobre el objeto (persona, automóvil, pelota, etc.) y una posición del objeto en el video (coordenadas en imágenes idénticas) como metadatos, el lado del decodificador puede identificar la posición de un objeto deseado en base a los metadatos y determinar qué mosaico o mosaicos incluyen ese objeto. Por ejemplo, como se ilustra en la FIG. 35, los metadatos se almacenan utilizando una estructura de almacenamiento de datos diferente de los datos de píxeles, tales como un mensaje SEI en HEVC. Estos metadatos indican, por ejemplo, la posición, el tamaño o el color del objeto principal.
Más aún, los metadatos se pueden almacenar en unidades de una pluralidad de cuadros, tales como unidades de flujo, secuencia o acceso aleatorio. Con esto, el lado del decodificador puede obtener, por ejemplo, el momento en que una persona específica aparece en el video y, al ajustar eso con la información de la unidad de cuadro, puede identificar un cuadro en el que el objeto está presente y la posición del objeto en el cuadro.
[Optimización de página web]
La FIG. 36 ilustra un ejemplo de una pantalla de visualización de una página web en, por ejemplo, un ordenador ex111. La FIG. 37 ilustra un ejemplo de una pantalla de visualización de una página web en, por ejemplo, un teléfono ex115 inteligente. Como se ilustra en la FIG. 36 y la FIG. 37, una página web puede incluir una pluralidad de enlaces de imagen que son enlaces a contenido de imagen, y la apariencia de la página web difiere dependiendo del dispositivo utilizado para ver la página web. Cuando una pluralidad de enlaces de imágenes son visibles en la 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 hasta que el enlace de imagen completo se ajuste en la pantalla, el aparato de visualización (decodificador) muestra, como los enlaces de imagen, imágenes fijas incluidas en el contenido o cuadros I, muestra el video tal como un gif animado utilizando una pluralidad de imágenes fijas o cuadros I, por ejemplo, o recibe solo la capa base y decodifica y muestra el video.
Cuando el usuario selecciona un enlace de imagen, el aparato de visualización decodifica dando la máxima prioridad a la capa base. Tenga en cuenta 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. Más aún, para garantizar la reproducción en tiempo real, antes de realizar una selección o cuando el ancho de banda está muy limitado, el aparato de visualización puede reducir el retardo entre el momento en que se decodifica el cuadro principal y el momento en que se muestra el cuadro decodificado (es decir, el retardo entre el comienzo de la decodificación del contenido y la visualización del contenido) al decodificar y visualizar solo cuadros de referencia directos (cuadro I, cuadro P, cuadro B de referencia directa). Más aún, el aparato de visualización puede ignorar deliberadamente la relación de referencia entre los cuadros y decodificar de forma aproximada todos los cuadros B y P como cuadros de referencia directa, y luego realizar una decodificación normal a medida que aumenta el número de cuadros recibidos con el tiempo.
[Conducción autónoma]
Al transmitir y recibir imágenes fijas o datos de video, tal como información cartográfica bidimensional o tridimensional para la conducción autónoma o la conducción asistida de un automóvil, el terminal de recepción puede recibir, además de los 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 la imagen al decodificarlos. Tenga en cuenta que los metadatos se pueden asignar por capa y, alternativamente, simplemente se pueden multiplexar con los datos de la imagen.
En dicho caso, dado que el automóvil, dron, avión, etc., incluida el terminal de recepción es móvil, el terminal de recepción puede recibir y decodificar sin problemas mientras se conmuta entre las estaciones base entre las estaciones ex106 a ex110 base al transmitir la información que indica la posición del terminal de recepción previa solicitud de recepción. Más aún, de acuerdo con la selección que haga el usuario, la situación del usuario o el ancho de banda de la conexión, el terminal de recepción puede seleccionar dinámicamente en qué medida se reciben los metadatos o en qué medida, por ejemplo, se actualiza la información del mapa.
Con ello, en el sistema ex100 proveedor de contenido, el cliente puede recibir, decodificar y reproducir, en tiempo real, la información codificada transmitida por el usuario.
[Transmisión continua de contenido individual]
En el sistema ex100 proveedor de contenido, además de la alta calidad de imagen, también es posible el contenido extenso distribuido por una entidad de distribución de video, la transmisión continua de unidifusión o multidifusión de baja calidad de imagen, el contenido breve de un individuo. Más aún, es probable que dicho contenido de individuos aumente aún más en popularidad. El servidor puede realizar primero el procesamiento de edición en el contenido antes del procesamiento de codificación para refinar el contenido individual. Esto se puede lograr con, por ejemplo, la siguiente configuración.
En tiempo real, mientras se captura contenido de video o imagen o después de que el contenido se haya capturado y acumulado, el servidor realiza un procesamiento de reconocimiento en base a los datos sin procesar o codificados, tales como el procesamiento de errores de captura, procesamiento de búsqueda de escena, análisis de significado y/o procesamiento de detección de objeto. Luego, en base al resultado del procesamiento de reconocimiento, el servidor, ya sea cuando se le solicita o automáticamente, edita el contenido, ejemplos de los cuales incluyen: corrección tal como enfoque y/o corrección de desenfoque de movimiento; eliminación de escenas de baja prioridad, tales como escenas que tienen poco brillo en comparación con otros cuadros o que están desenfocadas; ajuste del borde del objeto; y ajuste de tono de color. El servidor codifica los datos editados en base al resultado de la edición. Se sabe que los videos excesivamente largos tienden a recibir menos vistas. De acuerdo con lo anterior, para mantener el contenido dentro de una duración específica que se escala con la duración del video original, el servidor puede, además de las escenas de baja prioridad descritas anteriormente, recortar automáticamente escenas con poco movimiento en base a un resultado de procesamiento de imágenes. Alternativamente, el servidor puede generar y codificar un resumen de video en base al resultado de un análisis del significado de una escena.
Tenga en cuenta que hay casos en los que el contenido individual puede incluir contenido que infringe derechos de autor, derechos morales, derechos de imagen, etc. Dicho caso puede llevar a una situación desfavorable para el creador, tal como cuando el contenido se comparte más allá del alcance previsto por el creador. De acuerdo con lo anterior, antes de codificar, el servidor puede, por ejemplo, editar imágenes para desenfocar rostros de personas en la periferia de la pantalla o desenfocar el interior de una casa, por ejemplo. Más aún, el servidor se puede configurar para que reconozca los rostros de personas distintas de una persona registrada en imágenes a codificar, y cuando dichos rostros aparezcan en una imagen, por ejemplo, aplicar un filtro de mosaico al rostro de la persona. Alternativamente, como procesamiento previo o posterior para la codificación, el usuario puede especificar, por motivos de derechos de autor, que se procese una región de una imagen que incluya una persona o una región del fondo, y el servidor puede procesar la región especificada, por ejemplo, al reemplazar la región con una imagen diferente o difuminando la región. Si la región incluye a una persona, la persona se puede seguir en el cuadro en movimiento, la región de la cabeza puede reemplazarse con otra imagen a medida que la persona se mueve.
Más aún, dado que existe una demanda de visualización en tiempo real de contenido producido por individuos, que tiende a tener un tamaño de datos pequeño, el decodificador primero recibe la capa base como la prioridad más alta y realiza la decodificación y reproducción, aunque esto puede diferir dependiendo del 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, el decodificador puede reproducir un video de alta calidad de imagen que incluye la capa de mejora. Si el flujo se codifica utilizando dicha codificación escalable, el video puede ser de baja calidad cuando no está seleccionado o al comienzo del video, pero puede ofrecer una experiencia en la que la calidad de la imagen del flujo aumenta progresivamente de manera inteligente. Esto no se limita solo a la codificación escalable: se puede ofrecer la misma experiencia configurando un solo flujo a partir de un flujo de baja calidad reproducido por primera vez y un segundo flujo codificado utilizando el primer flujo como referencia.
[Otros ejemplos de uso]
La codificación y decodificación puede realizarla LSI ex500, que normalmente se incluye en cada terminal. LSI ex500 se puede configurar con un solo chip o una pluralidad de chips. El software para codificar y decodificar cuadros en movimiento se puede integrar en algún tipo de medio de grabación (tal como un CD-ROM, un disco flexible o un disco duro) que se pueda leer, por ejemplo, mediante un ordenador ex111, y la codificación y decodificación se puede realizar utilizando el software. Adicionalmente, cuando el teléfono ex115 inteligente está equipado con una cámara, se pueden transmitir los datos de video obtenidos por la cámara. En este caso, los datos de video están codificados por LSI ex500 incluido en el teléfono ex115 inteligente.
Tenga en cuenta que LSI ex500 se puede configurar para descargar y activar una aplicación. En dicho 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.
Además del ejemplo del sistema ex100 proveedor de contenido que utiliza internet ex101, al menos el codificador de cuadros en movimiento (codificador de imágenes) o el decodificador de cuadros en movimiento (decodificador de imágenes) descrito en las realizaciones anteriores se puede implementar en un sistema de transmisión digital. El mismo procesamiento de codificación y decodificación se puede aplicar para transmitir y recibir ondas de radiodifusión superpuestas con datos de audio y video multiplexados utilizando, por ejemplo, un satélite, aunque esto está orientado hacia la multidifusión, mientras que la unidifusión es más fácil con el sistema ex100 proveedor de contenido.
[Configuración de hardware]
La FIG. 38 ilustra el teléfono ex115 inteligente. La FIG. 39 ilustra un ejemplo de configuración del teléfono ex115 inteligente. El teléfono ex115 inteligente incluye una antena ex450 para transmitir y recibir ondas de radio hacia y desde la estación ex110 base, una cámara ex465 capaz de capturar videos e imágenes fijas y una pantalla ex458 que muestra datos decodificados, tales como videos capturados por la cámara ex465 y videos recibidos por la antena ex450. El teléfono ex115 inteligente incluye adicionalmente una interfaz ex466 de usuario, tal como un panel táctil, unidad ex457 de salida de audio, tal como un altavoz para emitir voz u otro audio, unidad ex456 de entrada de audio, tal como un micrófono para entrada de audio, memoria ex467 capaz de almacenar datos decodificados, tales como datos capturados video o imágenes fijas, audio grabado, video recibido o imágenes fijas y correo, así como datos decodificados, y ranura ex464 que es una interfaz para SIM ex468 para autorizar el acceso a una red y varios datos. Tenga en cuenta que se puede utilizar una memoria externa en lugar de la memoria ex467.
Más aún, el controlador ex460 principal que controla integralmente la pantalla ex458 y la interfaz ex466 de usuario, circuito ex461 de fuente de alimentación, controlador ex462 de entrada de interfaz de usuario, procesador ex455 de señal de video, interfaz ex463 de cámara, controlador ex459 de pantalla, modulador/demodulador ex452, multiplexor/demultiplexor ex453, procesador ex454 de señal de audio, ranura ex464 y memoria ex467 se conectan a través del bus ex470.
Cuando el usuario enciende el botón de encendido del circuito ex461 de fuente de alimentación, el teléfono ex115 inteligente se enciende en un estado operativo mediante el suministro de energía de cada componente desde un paquete de baterías.
El teléfono ex115 inteligente realiza el procesamiento para, por ejemplo, llamadas y transmisión de datos, en base al control realizado por el controlador ex460 principal, que incluye una CPU, ROM y RAM. Al realizar llamadas, una señal de audio grabada por la unidad ex456 de entrada de audio se convierte en una señal de audio digital por el procesador ex454 de señal de audio, y esto se aplica con procesamiento de espectro amplio por el modulador/demodulador ex452 y conversión digital-analógica y procesamiento de conversión de frecuencia por el transmisor /receptor ex451, y luego se transmite a través de la antena ex450. Los datos recibidos se amplifican, se convierten en frecuencia y se convierten de analógico a digital, el espectro amplio inverso se procesa mediante el modulador/demodulador ex452, se convierte en una señal de audio analógica mediante el procesador ex454 de señal de audio y luego se emite desde la unidad ex457 de salida de audio. En el modo de transmisión de datos, el controlador ex460 principal transmite datos de texto, imágenes fijas o video a través del controlador ex462 de entrada de interfaz de usuario como resultado de la operación de, por ejemplo, la interfaz ex466 de usuario del cuerpo principal y se realiza un procesamiento similar de transmisión y recepción. En el modo de transmisión de datos, cuando se envía un video, una imagen fija o un video y audio, el procesador ex455 de señal de video codifica por compresión, a través del procedimiento de codificación de cuadros en movimiento descrito en las realizaciones anteriores, una señal de video almacenada en la memoria ex467 o una entrada de señal de video desde la cámara ex465 y transmite los datos de video codificados al multiplexor/demultiplexor ex453. Más aún, el procesador ex454 de señal de audio codifica una señal de audio grabada por la unidad ex456 de entrada de audio mientras la cámara ex465 está capturando, por ejemplo, un video o una imagen fija, y transmite los datos de audio codificados al multiplexor/demultiplexor ex453. El multiplexor/demultiplexor ex453 multiplexa los datos de video codificados y los datos de audio codificados utilizando un esquema predeterminado, modula y convierte los datos utilizando el modulador/demodulador ex452 (circuito modulador/demodulador) y el transmisor/receptor ex451, y transmite el resultado a través de la antena ex450.
Cuando se adjunta un video en un correo electrónico o un chat, o se recibe un video vinculado desde una página web, por ejemplo, para decodificar los datos multiplexados recibidos a través de la antena ex450, el multiplexor/demultiplexor ex453 demultiplexa los datos multiplexados para dividir los datos multiplexados en un flujo de bits de datos de video y un flujo de bits de datos de audio, suministra los datos de video codificados al procesador ex455 de señal de video a través del bus ex470 síncrono, y suministra los datos de audio codificados al procesador ex454 de señal de audio a través del bus ex470 síncrono. El procesador ex455 de señal de video decodifica la señal de video utilizando un procedimiento de decodificación de cuadros en movimiento correspondiente al procedimiento de codificación de cuadros en movimiento descrito en las realizaciones anteriores, y el video o una imagen fija incluida en el archivo de cuadros en movimiento vinculado se muestra en la pantalla ex458 a través del controlador ex459 de pantalla. Más aún, el procesador ex454 de señal de audio decodifica la señal de audio y emite audio desde la unidad ex457 de salida de audio. Tenga en cuenta que dado que la transmisión continua en tiempo real se está volviendo cada vez más popular, hay casos en los que la reproducción del audio puede ser socialmente inapropiada según el entorno del usuario. Se acuerdo con lo anterior, como valor inicial, es preferente una configuración en la que solo se reproduzcan datos de video, es decir, no se reproduzca la señal de audio. El audio se puede sincronizar y reproducir solo cuando se recibe una entrada, tal como cuando el usuario hace clic en los datos de video.
Aunque en el ejemplo anterior se utilizó el teléfono ex115 inteligente, son concebibles 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. Además, 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 video con, por ejemplo, datos de audio, pero los datos multiplexados pueden ser datos de video multiplexados con datos que no sean datos de audio, tales como datos de texto relacionados con el video. Más aún, se pueden recibir o transmitir los propios datos de video en lugar de los datos multiplexados.
Aunque el controlador ex460 principal que incluye una CPU se describe como la que controla los procedimientos de codificación o decodificación, los terminales a menudo incluyen GPU. De acuerdo con lo anterior, es aceptable una configuración en la que se procesa un área grande a la vez al hacer uso de la capacidad de rendimiento de la GPU a través de la memoria compartida por la CPU y la GPU o la memoria que incluye una dirección que se administra para permitir el uso común por parte de la CPU y GPU. Esto hace posible acortar el tiempo de codificación, mantener la naturaleza en tiempo real del flujo y reducir la demora. En particular, el procesamiento relacionado con la estimación de movimiento, filtrado de desbloqueo, desplazamiento adaptativo de muestra (SAO) y transformación/cuantificación pueden ser llevados a cabo de manera efectiva por la GPU en lugar de la CPU en unidades de, por ejemplo, imágenes, todo a la vez.
Un codificador de acuerdo con una realización de la presente divulgación puede ser un codificador que codifica un cuadro e incluye un procesador y memoria. El procesador puede incluir: un determinador de partición de bloques que somete a partición el cuadro en una pluralidad de bloques, utilizando un conjunto de modos de partición de bloques obtenido al combinar uno o más modos de partición de bloques cada uno de los cuales define un tipo de partición, el cuadro que se lee desde la memoria; y una unidad de codificación que codifica la pluralidad de bloques. El conjunto de modos de partición de bloques puede incluir un primer modo de partición que define una dirección de partición y un número total de particiones para someter a partición un primer bloque, y un segundo modo de partición de bloques que define una dirección de partición y un número total de particiones para someter a partición un segundo bloque que es uno de los bloques obtenidos después de que el primer bloque se somete a partición. Cuando el número total de particiones del primer modo de partición de bloques es tres, el segundo bloque es un bloque central entre los bloques obtenidos después de que el primer bloque se somete a partición, y la dirección de partición del segundo modo de partición de bloques es la misma que la dirección de partición del primer modo de partición de bloques, el segundo modo de partición de bloques puede incluir solo un modo de partición de bloques que indica que el número total de particiones es tres.
Un parámetro para identificar el segundo modo de partición de bloques en el codificador de acuerdo con una realización de la presente divulgación puede incluir un primer indicador que indica si un bloque se va a someter a partición horizontalmente o verticalmente, y no necesita incluir un segundo indicador que indique un número total de particiones en el que se va a someter a partición el bloque.
Un codificador de acuerdo con una realización de la presente divulgación puede ser un codificador que codifica un cuadro e incluye un procesador y memoria. El procesador puede incluir: un determinador de partición de bloques que somete a partición el cuadro en una pluralidad de bloques, utilizando un conjunto de modos de partición de bloques obtenido al combinar uno o más modos de partición de bloques cada uno de los cuales define un tipo de partición, el cuadro que se lee desde la memoria; y una unidad de codificación que codifica la pluralidad de bloques. El conjunto de modos de partición de bloques puede incluir un primer modo de partición que define una dirección de partición y un número total de particiones para someter a partición un primer bloque, y un segundo modo de partición de bloques que define una dirección de partición y un número total de particiones para someter a partición un segundo bloque que es uno de los bloques obtenidos después de que el primer bloque se somete a partición. Cuando el número total de particiones del primer modo de partición de bloques es tres, el segundo bloque es un bloque central entre los bloques obtenidos después de que el primer bloque se somete a partición, y la dirección de partición del segundo modo de partición de bloques es la misma que la dirección de partición del primer modo de partición de bloques, no se necesita utilizar el segundo modo de partición de bloques que indica que el número total de particiones.
Un codificador de acuerdo con una realización de la presente divulgación puede ser un codificador que codifica un cuadro, e incluye: un procesador y una memoria. El procesador puede incluir: un determinador de partición de bloques que somete a partición el cuadro en una pluralidad de bloques, utilizando un conjunto de modos de partición de bloques obtenido al combinar uno o más modos de partición de bloques cada uno de los cuales define un tipo de partición, el cuadro que se lee desde la memoria; y una unidad de codificación que codifica la pluralidad de bloques. El conjunto de modos de partición de bloques puede incluir un primer modo de partición y un segundo modo de partición de bloques cada uno de los cuales define una dirección de partición y un número total de particiones. El determinador de partición de bloques puede restringir el uso del segundo modo de partición de bloques que indica que el número de particiones es dos.
Un parámetro para identificar el segundo modo de partición de bloques en el codificador de acuerdo con una realización de la presente divulgación, puede incluir un primer indicador que indica si el bloque se va a someter a partición horizontalmente o verticalmente, y un segundo indicador que indica si el bloque se va a someter a partición en dos o más.
El parámetro en el codificador de acuerdo con una realización de la presente divulgación se puede proporcionar en datos de segmento.
Un codificador de acuerdo con una realización de la presente divulgación puede ser un codificador que codifica un cuadro, e incluye: un procesador; y una memoria. El procesador puede incluir: un determinador de partición de bloques que somete a partición el cuadro en un conjunto de bloques que incluye una pluralidad de bloques, utilizando un conjunto de modos de partición de bloques obtenido al combinar uno o más modos de partición de bloques cada uno de los cuales define un tipo de partición, el cuadro que se lee desde la memoria; y una unidad de codificación que codifica la pluralidad de bloques. Cuando un primer conjunto de bloques obtenido al utilizar un primer conjunto de modos de partición de bloques y un segundo conjunto de bloques obtenido al utilizar un segundo conjunto de modos de partición de bloques son los mismos, el determinador de partición de bloques puede realizar la partición solo utilizando uno del primer modo de partición de bloques o el segundo modo de partición de bloques.
El determinador de partición de bloques en el codificador de acuerdo con una realización de la presente divulgación puede, en base a una primera cantidad de códigos del primer conjunto de modos de partición de bloques y una segunda cantidad de códigos del segundo conjunto de modos de partición de bloques, realizar la participación utilizando el conjunto de modos de partición de bloques de la menor de la primera cantidad de códigos y la segunda cantidad de códigos.
El determinador de partición de bloques en el codificador de acuerdo con una realización de la presente divulgación puede, en base a una primera cantidad de códigos del primer conjunto de modos de partición de bloques y una segunda cantidad de códigos del segundo conjunto de modos de partición de bloques, realizar la participación utilizando el conjunto de modos de partición de bloques que aparecen primero en un orden predeterminado entre el primer conjunto de modos de partición de bloques y el segundo conjunto de modos de partición de bloques, cuando sean iguales la primera cantidad de códigos y la segunda cantidad de códigos.
Un decodificador de acuerdo con una realización de la presente divulgación puede ser un decodificador que decodifica una señal codificada e incluye un procesador y memoria. El procesador puede incluir un determinador de partición de bloques que somete a partición la señal codificada en una pluralidad de bloques, utilizando un conjunto de modos de partición de bloques obtenido al combinar uno o más modos de partición de bloques cada uno de los cuales define un tipo de partición, la señal codificada que se lee desde la memoria; y una unidad de decodificación que decodifica la pluralidad de bloques. El conjunto de modos de partición de bloques puede incluir un primer modo de partición que define una dirección de partición y un número total de particiones para someter a partición un primer bloque, y un segundo modo de partición de bloques que define una dirección de partición y un número total de particiones para someter a partición un segundo bloque que es uno de los bloques obtenidos después de que el primer bloque se somete a partición. Cuando el número total de particiones del primer modo de partición de bloques es tres, el segundo bloque es un bloque central entre los bloques obtenidos después de que el primer bloque se somete a partición, y la dirección de partición del segundo modo de partición de bloques es la misma que la dirección de partición del primer modo de partición de bloques, el segundo modo de partición de bloques puede incluir solo un modo de partición de bloques que indica que el número total de particiones es tres.
Un parámetro para identificar el segundo modo de partición de bloques en el decodificador de acuerdo con una realización de la presente divulgación puede incluir un primer indicador que indica si un bloque se va a someter a partición horizontalmente o verticalmente, y no necesita incluir un segundo indicador que indique un número total de particiones en el que se va a someter a partición el bloque.
Un decodificador de acuerdo con una realización de la presente divulgación puede ser un decodificador que decodifica una señal codificada e incluye un procesador y memoria. El procesador puede incluir un determinador de partición de bloques que somete a partición la señal codificada en una pluralidad de bloques, utilizando un conjunto de modos de partición de bloques obtenido al combinar uno o más modos de partición de bloques cada uno de los cuales define un tipo de partición, la señal codificada que se lee desde la memoria; y una unidad de decodificación que decodifica la pluralidad de bloques. El conjunto de modos de partición de bloques puede incluir un primer modo de partición que define una dirección de partición y un número total de particiones para someter a partición un primer bloque, y un segundo modo de partición de bloques que define una dirección de partición y un número total de particiones para someter a partición un segundo bloque que es uno de los bloques obtenidos después de que el primer bloque se somete a partición. Cuando el número total de particiones del primer modo de partición de bloques es tres, el segundo bloque es un bloque central entre los bloques obtenidos después de que el primer bloque se somete a partición, y la dirección de partición del segundo modo de partición de bloques es la misma que la dirección de partición del primer modo de partición de bloques, no se necesita utilizar el segundo modo de partición de bloques que indica que el número total de particiones.
Un decodificador de acuerdo con una realización de la presente divulgación puede ser un decodificador que decodifica una señal codificada, e incluye un procesador y una memoria. El procesador puede incluir: un determinador de partición de bloques que somete a partición la señal codificada en una pluralidad de bloques, utilizando un conjunto de modos de partición de bloques obtenido al combinar uno o más modos de partición de bloques cada uno de los cuales define un tipo de partición, la señal codificada que se lee desde la memoria; y una unidad de decodificación que decodifica la pluralidad de bloques. El conjunto de modos de partición de bloques puede incluir un primer modo de partición de bloques y un segundo modo de partición de bloques cada uno de los cuales define una dirección de partición y el número de particiones. El determinador de partición de bloques puede restringir el uso del segundo modo de partición de bloques que indica que el número de particiones es dos.
Un parámetro para identificar el segundo modo de partición de bloques en el decodificador de acuerdo con una realización de la presente divulgación puede incluir un primer indicador que indica si un bloque se va a someter a partición horizontalmente o verticalmente, y un segundo indicador que indica si el bloque se va a someter a partición en dos o más.
El parámetro en el decodificador de acuerdo con una realización de la presente divulgación se puede proporcionar en datos de segmento.
Un decodificador de acuerdo con una realización de la presente divulgación puede ser un decodificador que decodifica una señal codificada, e incluye: un procesador; y una memoria. El procesador puede incluir: un determinador de partición de bloques que somete a partición la señal codificada en un conjunto de bloques que incluye una pluralidad de bloques, utilizando un conjunto de modos de partición de bloques obtenido al combinar uno o más modos de partición de bloques cada uno de los cuales define un tipo de partición, la señal codificada que se lee desde la memoria; y una unidad de decodificación que decodifica la pluralidad de bloques. Cuando un primer conjunto de bloques obtenido al utilizar un primer conjunto de modos de partición de bloques y un segundo conjunto de bloques obtenido al utilizar un segundo conjunto de modos de partición de bloques son los mismos, el determinador de partición de bloques puede realizar la partición solo utilizando uno del primer modo de partición de bloques o el segundo modo de partición de bloques.
El determinador de partición de bloques en el decodificador de acuerdo con una realización de la presente divulgación puede, en base a una primera cantidad de códigos del primer conjunto de modos de partición de bloques y una segunda cantidad de códigos del segundo conjunto de modos de partición de bloques, realizar la participación utilizando el conjunto de modos de partición de bloques de la menor de la primera cantidad de códigos y la segunda cantidad de códigos.
El determinador de partición de bloques en el decodificador de acuerdo con una realización de la presente divulgación puede, en base a una primera cantidad de códigos del primer conjunto de modos de partición de bloques y una segunda cantidad de códigos del segundo conjunto de modos de partición de bloques, realizar la participación utilizando el conjunto de modos de partición de bloques que aparecen primero en un orden predeterminado entre el primer conjunto de modos de partición de bloques y el segundo conjunto de modos de partición de bloques, cuando sean iguales la primera cantidad de códigos y la segunda cantidad de códigos.
Un procedimiento de codificación de acuerdo con una realización de la presente divulgación puede incluir: someter a partición un cuadro en una pluralidad de bloques, utilizando un conjunto de modos de partición de bloques obtenido al combinar uno o más modos de partición de bloques cada uno de los cuales define un tipo de partición, el cuadro que se lee desde una memoria; y codificar la pluralidad de bloques. El conjunto de modos de partición de bloques puede incluir un primer modo de partición que define una dirección de partición y un número total de particiones para someter a partición un primer bloque, y un segundo modo de partición de bloques que define una dirección de partición y un número total de particiones para someter a partición un segundo bloque que es uno de los bloques obtenidos después de que el primer bloque se somete a partición. En la partición, cuando el número total de particiones del primer modo de partición de bloques es tres, el segundo bloque es un bloque central entre los bloques obtenidos después de que el primer bloque se somete a partición, y la dirección de partición del segundo modo de partición de bloques es la misma que la dirección de partición del primer modo de partición de bloques, el segundo modo de partición de bloques puede incluir solo un modo de partición de bloques que indica que el número total de particiones es tres.
Un parámetro para identificar el segundo modo de partición de bloques en el procedimiento de codificación de acuerdo con una realización de la presente divulgación puede incluir un primer indicador que indica si un bloque se va a someter a partición horizontalmente o verticalmente, y no necesita incluir un segundo indicador que indique un número total de particiones en el que se va a someter a partición el bloque.
Un procedimiento de codificación de acuerdo con una realización de la presente divulgación puede incluir: someter a partición un cuadro en una pluralidad de bloques, utilizando un conjunto de modos de partición de bloques obtenido al combinar uno o más modos de partición de bloques cada uno de los cuales define un tipo de partición, el cuadro que se lee desde la memoria; y codificar la pluralidad de bloques. El conjunto de modos de partición de bloques puede incluir un primer modo de partición que define una dirección de partición y un número total de particiones para someter a partición un primer bloque, y un segundo modo de partición de bloques que define una dirección de partición y un número total de particiones para someter a partición un segundo bloque que es uno de los bloques obtenidos después de que el primer bloque se somete a partición. En la partición, cuando el número total de particiones del primer modo de partición de bloques es tres, el segundo bloque es un bloque central entre los bloques obtenidos después de que el primer bloque se somete a partición, y la dirección de partición del segundo modo de partición de bloques es la misma que la dirección de partición del primer modo de partición de bloques, no se necesita utilizar el segundo modo de partición de bloques que indica que el número total de particiones.
Un procedimiento de codificación de acuerdo con una realización de la presente divulgación puede incluir: someter a partición un cuadro en una pluralidad de bloques, utilizando un conjunto de modos de partición de bloques obtenido al combinar uno o más modos de partición de bloques cada uno de los cuales define un tipo de partición, el cuadro que se lee desde la memoria; y codificar la pluralidad de bloques. El conjunto de modos de partición de bloques puede incluir un primer modo de partición de bloques y un segundo modo de partición de bloques cada uno de los cuales define una dirección de partición y el número de particiones. En la partición, se puede restringir el uso del segundo modo de partición de bloques que indica que el número de particiones es dos.
Un parámetro para identificar el segundo modo de partición de bloques en el procedimiento de codificación de acuerdo con una realización de la presente divulgación puede incluir un primer indicador que indica si un bloque se va a someter a partición horizontalmente o verticalmente, y un segundo indicador que indica si el bloque se va a someter a partición en dos o más.
El parámetro en el procedimiento de codificación de acuerdo con una realización de la presente divulgación se puede proporcionar en datos de segmento.
Un procedimiento de codificación de acuerdo con una realización de la presente divulgación puede incluir: someter a partición un cuadro en un conjunto de bloques que incluye una pluralidad de bloques, utilizando un conjunto de modos de partición de bloques obtenido al combinar uno o más modos de partición de bloques cada uno de los cuales define un tipo de partición, el cuadro que se lee desde la memoria; y codificar la pluralidad de bloques. En la partición, cuando un primer conjunto de bloques obtenido al utilizar un primer conjunto de modos de partición de bloques y un segundo conjunto de bloques obtenido al utilizar un segundo conjunto de modos de partición de bloques son los mismos, la partición se puede realizar solo utilizando uno del primer modo de partición de bloques o el segundo modo de partición de bloques.
La partición en el procedimiento de codificación de acuerdo con una realización de la presente divulgación, en base a una primera cantidad de códigos del primer conjunto de modos de partición de bloques y una segunda cantidad de códigos del segundo conjunto de modos de partición de bloques, se puede realizar utilizando el conjunto de modos de partición de bloques de la menor de la primera cantidad de códigos y la segunda cantidad de códigos.
La partición en el procedimiento de codificación de acuerdo con una realización de la presente divulgación, en base a una primera cantidad de códigos del primer conjunto de modos de partición de bloques y una segunda cantidad de códigos del segundo conjunto de modos de partición de bloques, se puede realizar utilizando el conjunto de modos de partición de bloques que aparecen primero en un orden predeterminado entre el primer conjunto de modos de partición de bloques y el segundo conjunto de modos de partición de bloques, cuando sean iguales la primera cantidad de códigos y la segunda cantidad de códigos.
Un procedimiento de decodificación de acuerdo con una realización de la presente divulgación puede incluir: someter a partición una señal codificada en una pluralidad de bloques, utilizando un conjunto de modos de partición de bloques obtenido al combinar uno o más modos de partición de bloques cada uno de los cuales define un tipo de partición, la señal codificada que se lee desde una memoria; y decodificar la pluralidad de bloques. El conjunto de modos de partición de bloques puede incluir un primer modo de partición que define una dirección de partición y un número total de particiones para someter a partición un primer bloque, y un segundo modo de partición de bloques que define una dirección de partición y un número total de particiones para someter a partición un segundo bloque que es uno de los bloques obtenidos después de que el primer bloque se somete a partición. En la partición, cuando el número total de particiones del primer modo de partición de bloques es tres, el segundo bloque es un bloque central entre los bloques obtenidos después de que el primer bloque se somete a partición, y la dirección de partición del segundo modo de partición de bloques es la misma que la dirección de partición del primer modo de partición de bloques, el segundo modo de partición de bloques puede incluir solo un modo de partición de bloques que indica que el número total de particiones es tres.
Un parámetro para identificar el segundo modo de partición de bloques en el procedimiento de decodificación de acuerdo con una realización de la presente divulgación puede incluir un primer indicador que indica si un bloque se va a someter a partición horizontalmente o verticalmente, y un segundo indicador que indica si el bloque se va a someter a partición en dos o más.
Un procedimiento de decodificación de acuerdo con una realización de la presente divulgación puede incluir: someter a partición una señal codificada en una pluralidad de bloques, utilizando un conjunto de modos de partición de bloques obtenido al combinar uno o más modos de partición de bloques cada uno de los cuales define un tipo de partición, la señal codificada que se lee desde la memoria; y decodificar la pluralidad de bloques. El conjunto de modos de partición de bloques puede incluir un primer modo de partición que define una dirección de partición y un número total de particiones para someter a partición un primer bloque, y un segundo modo de partición de bloques que define una dirección de partición y un número total de particiones para someter a partición un segundo bloque que es uno de los bloques obtenidos después de que el primer bloque se somete a partición. En la partición, cuando el número total de particiones del primer modo de partición de bloques es tres, el segundo bloque es un bloque central entre los bloques obtenidos después de que el primer bloque se somete a partición, y la dirección de partición del segundo modo de partición de bloques es la misma que la dirección de partición del primer modo de partición de bloques, no se necesita utilizar el segundo modo de partición de bloques que indica que el número total de particiones.
Un procedimiento de decodificación de acuerdo con una realización de la presente divulgación puede incluir: someter a partición una señal codificada en una pluralidad de bloques, utilizando un conjunto de modos de partición de bloques obtenido al combinar uno o más modos de partición de bloques cada uno de los cuales define un tipo de partición, la señal codificada que se lee desde la memoria; y decodificar la pluralidad de bloques. El conjunto de modos de partición de bloques puede incluir un primer modo de partición de bloques y un segundo modo de partición de bloques cada uno de los cuales define una dirección de partición y el número de particiones. En la partición, se puede restringir el uso del segundo modo de partición de bloques que indica que el número de particiones es dos.
Un procedimiento de decodificación de acuerdo con una realización de la presente divulgación puede incluir: someter a partición una señal codificada en un conjunto de bloques que incluye una pluralidad de bloques, utilizando un conjunto de modos de partición de bloques obtenido al combinar uno o más modos de partición de bloques cada uno de los cuales define un tipo de partición, la señal codificada que se lee desde la memoria; y decodificar la pluralidad de bloques. En la partición, cuando un primer conjunto de bloques obtenido al utilizar un primer conjunto de modos de partición de bloques y un segundo conjunto de bloques obtenido al utilizar un segundo conjunto de modos de partición de bloques son los mismos, se puede realizar la partición solo utilizando uno del primer modo de partición de bloques o el segundo modo de partición de bloques.
Un programa de compresión de cuadro de acuerdo con una realización de la presente divulgación puede incluir: someter a partición un cuadro en una pluralidad de bloques, utilizando un conjunto de modos de partición de bloques obtenido al combinar uno o más modos de partición de bloques cada uno de los cuales define un tipo de partición, el cuadro que se lee desde una memoria; y decodificar la pluralidad de bloques. El conjunto de modos de partición de bloques puede incluir un primer modo de partición que define una dirección de partición y un número total de particiones para someter a partición un primer bloque, y un segundo modo de partición de bloques que define una dirección de partición y un número total de particiones para someter a partición un segundo bloque que es uno de los bloques obtenidos después de que el primer bloque se somete a partición. En la partición, cuando el número total de particiones del primer modo de partición de bloques es tres, el segundo bloque es un bloque central entre los bloques obtenidos después de que el primer bloque se somete a partición, y la dirección de partición del segundo modo de partición de bloques es la misma que la dirección de partición del primer modo de partición de bloques, el segundo modo de partición de bloques puede incluir solo un modo de partición de bloques que indica que el número total de particiones es tres.
Un programa de compresión de cuadro de acuerdo con una realización de la presente divulgación puede incluir: someter a partición un cuadro en una pluralidad de bloques, utilizando un conjunto de modos de partición de bloques obtenido al combinar uno o más modos de partición de bloques cada uno de los cuales define un tipo de partición, el cuadro que se lee desde una memoria; y decodificar la pluralidad de bloques. El conjunto de modos de partición de bloques puede incluir un primer modo de partición que define una dirección de partición y un número total de particiones para someter a partición un primer bloque, y un segundo modo de partición de bloques que define una dirección de partición y un número total de particiones para someter a partición un segundo bloque que es uno de los bloques obtenidos después de que el primer bloque se somete a partición. En la partición, cuando el número total de particiones del primer modo de partición de bloques es tres, el segundo bloque es un bloque central entre los bloques obtenidos después de que el primer bloque se somete a partición, y la dirección de partición del segundo modo de partición de bloques es la misma que la dirección de partición del primer modo de partición de bloques, no se necesita utilizar el segundo modo de partición de bloques que indica que el número total de particiones.
Un programa de compresión de cuadro de acuerdo con una realización de la presente divulgación puede incluir: someter a partición un cuadro en una pluralidad de bloques, utilizando un conjunto de modos de partición de bloques obtenido al combinar uno o más modos de partición de bloques cada uno de los cuales define un tipo de partición, el cuadro que se lee desde la memoria; y codificar la pluralidad de bloques. El conjunto de modos de partición de bloques puede incluir un primer modo de partición de bloques y un segundo modo de partición de bloques cada uno de los cuales define una dirección de partición y el número de particiones. En la partición, se puede restringir el uso del segundo modo de partición de bloques que indica que el número de particiones es dos.
Un programa de compresión de cuadro de acuerdo con una realización de la presente divulgación puede incluir: someter a partición un cuadro en un conjunto de bloques que incluye una pluralidad de bloques, utilizando un conjunto de modos de partición de bloques obtenido al combinar uno o más modos de partición de bloques cada uno de los cuales define un tipo de partición, el cuadro que se lee desde la memoria; y codificar la pluralidad de bloques. En la partición, cuando un primer conjunto de bloques obtenido al utilizar un primer conjunto de modos de partición de bloques y un segundo conjunto de bloques obtenido al utilizar un segundo conjunto de modos de partición de bloques son los mismos, se puede realizar la partición solo utilizando uno del primer modo de partición de bloques o el segundo modo de partición de bloques.
APLICABILIDAD INDUSTRIAL
La presente divulgación se puede utilizar en la codificación/decodificación multimedia, y particularmente en un codificador/decodificador de imágenes y video que utiliza la codificación/decodificación de bloques.
MARCAS DE REFERENCIA EN LOS DIBUJOS
100 codificador
102 divisor
104 restador
transformador
108, 5002 cuantificador
110, codificador de entropía
112, cuantificador inverso
114, transformada inversa
116 sumador
118, 5005, 6004 bloque de memoria
120 filtro de bucle
122, 5006, 6005 memoria de fotograma
124, 5007, 6006 intrapredictor
126, 5008, 6007 interpredictor
128 controlador de predicción
200 decodificador
202, 6001 decodificador de entropía
204 cuantificador inverso
206 transformador inverso
208 sumador
210 bloque de memoria
212 filtro de bucle
214 memoria de fotograma
216 intrapredictor
218 interpredictor
220 controlador de predicción
5000 codificador de video
5010, 6008 determinador de partición de bloques
6000 decodificador de video

Claims (5)

REIVINDICACIONES
1. Un codificador que codifica un cuadro, el codificador comprende:
un procesador; y memoria, en el que el procesador incluye:
un determinador de partición de bloques configurado para someter a partición el cuadro en una pluralidad de bloques, utilizando un conjunto de modos de partición de bloques obtenido al combinar uno o más modos de partición de bloques cada uno de los cuales define un tipo de partición, el cuadro que se lee desde la memoria; y
una unidad de codificación configurada para codificar la pluralidad de bloques,
en el que el conjunto de modos de partición de bloques incluye un primer modo de partición que define una dirección de partición y un número total de particiones para someter a partición un primer bloque (44-1), y un segundo modo de partición de bloques que define una dirección de partición y un número total de particiones para someter a partición un segundo bloque (44-2) que es uno de los bloques (44-2, 44-3, 44-4) obtenidos después de que el primer bloque (44-1) se somete a partición,
caracterizado porque
cuando el número total de particiones del primer modo de partición de bloques es tres, el segundo bloque (44-2) es un bloque central entre los bloques (44-2, 44-3, 44-4) obtenidos después de que el primer bloque (44-1) se somete a partición, y la dirección de partición del segundo modo de partición de bloques es la misma que la dirección de partición del primer modo de partición de bloques, el segundo modo de partición de bloques incluye solo un modo de partición de bloques que indica que el número total de particiones es tres, y
en el que la unidad de codificación se configura adicionalmente para codificar un parámetro para identificar el segundo modo de partición de bloques, dicho parámetro incluye un primer indicador que indica si un bloque se va a someter a partición horizontalmente o verticalmente, y no incluye un segundo indicador que indique un número total de particiones en el que se va a someter a partición el bloque.
2. Un decodificador que decodifica una señal codificada, el decodificador comprende:
un procesador; y memoria, en el que el procesador incluye:
un determinador de partición de bloques configurado para someter a partición la señal codificada en una pluralidad de bloques, utilizando un conjunto de modos de partición de bloques obtenido al combinar uno o más modos de partición de bloques cada uno de los cuales define un tipo de partición, la señal codificada que se lee desde la memoria; y
una unidad de decodificación configurada para decodificar la pluralidad de bloques,
en el que el conjunto de modos de partición de bloques incluye un primer modo de partición que define una dirección de partición y un número total de particiones para someter a partición un primer bloque (44-1), y un segundo modo de partición de bloques que define una dirección de partición y un número total de particiones para someter a partición un segundo bloque (44-2) que es uno de los bloques (44-2, 44-3, 44-4) obtenidos después de que el primer bloque (44-1) se somete a partición,
caracterizado porque
cuando el número total de particiones del primer modo de partición de bloques es tres, el segundo bloque (44-2) es un bloque central entre los bloques (44-2, 44-3, 44-4) obtenidos después de que el primer bloque (44-1) se somete a partición, y la dirección de partición del segundo modo de partición de bloques es la misma que la dirección de partición del primer modo de partición de bloques, el segundo modo de partición de bloques incluye solo un modo de partición de bloques que indica que el número total de particiones es tres, y
en el que la unidad de decodificación se configura adicionalmente para decodificar un parámetro para identificar el segundo modo de partición de bloques, dicho parámetro incluye un primer indicador que indica si un bloque se va a someter a partición horizontalmente o verticalmente, y no incluye un segundo indicador que indique un número total de particiones en el que se va a someter a partición el bloque.
3. Un procedimiento de codificación implementado por ordenador, que comprende:
someter a partición un cuadro en una pluralidad de bloques, utilizando un conjunto de modos de partición de bloques obtenido al combinar uno o más modos de partición de bloques cada uno de los cuales define un tipo de partición, el cuadro que se lee desde una memoria; y
codificar la pluralidad de bloques,
en el que el conjunto de modos de partición de bloques incluye un primer modo de partición que define una dirección de partición y un número total de particiones para someter a partición un primer bloque (44-1), y un segundo modo de partición de bloques que define una dirección de partición y un número total de particiones para someter a partición un segundo bloque (44-2) que es uno de los bloques (44-2, 44-3, 44-4) obtenidos después de que el primer bloque (44-1) se somete a partición,
caracterizado porque
en la partición, cuando el número total de particiones del primer modo de partición de bloques es tres, el segundo bloque (44-2) es un bloque central entre los bloques (44-2, 44-3, 44-4) obtenidos después de que el primer bloque (44-1) se somete a partición, y la dirección de partición del segundo modo de partición de bloques es la misma que la dirección de partición del primer modo de partición de bloques, el segundo modo de partición de bloques incluye solo un modo de partición de bloques que indica que el número total de particiones es tres, y
codificar un parámetro para identificar el segundo modo de partición de bloques, dicho parámetro incluye un primer indicador que indica si un bloque se va a someter a partición horizontalmente o verticalmente, y no incluye un segundo indicador que indique un número total de particiones en el que se va a someter a partición el bloque.
4. Un procedimiento de decodificación implementado por ordenador, que comprende:
someter a participación una señal codificada en una pluralidad de bloques, utilizando un conjunto de modos de partición de bloques obtenido al combinar uno o más modos de partición de bloques cada uno de los cuales define un tipo de partición, la señal codificada que se lee desde una memoria; y
decodificar la pluralidad de bloques,
en el que el conjunto de modos de partición de bloques incluye un primer modo de partición que define una dirección de partición y un número total de particiones para someter a partición un primer bloque (44-1), y un segundo modo de partición de bloques que define una dirección de partición y un número total de particiones para someter a partición un segundo bloque (44-2) que es uno de los bloques (44-2, 44-3, 44-4) obtenidos después de que el primer bloque (44-1) se somete a partición,
caracterizado porque
en la partición, cuando el número total de particiones del primer modo de partición de bloques es tres, el segundo bloque (44-2) es un bloque central entre los bloques (44-2, 44-3, 44-4) obtenidos después de que el primer bloque (44-1) se somete a partición, y la dirección de partición del segundo modo de partición de bloques es la misma que la dirección de partición del primer modo de partición de bloques, el segundo modo de partición de bloques incluye solo un modo de partición de bloques que indica que el número total de particiones es tres, y
decodificar un parámetro para identificar el segundo modo de partición de bloques, dicho parámetro incluye un primer indicador que indica si un bloque se va a someter a partición horizontalmente o verticalmente, y no incluye un segundo indicador que indique un número total de particiones en el que se va a someter a partición el bloque.
5. Un producto de programa informático que tiene instrucciones legibles por ordenador en el mismo, dichas instrucciones se adaptan, cuando se ejecutan en un ordenador, para llevar a cabo todas las etapas de un procedimiento de acuerdo con la reivindicación 3 o 4.
ES19808240T 2018-05-22 2019-05-09 Dispositivo de codificación, dispositivo de decodificación, procedimiento de codificación, procedimiento de decodificación y programa de compresión de imágenes Active ES2954064T3 (es)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201862674812P 2018-05-22 2018-05-22
JP2019028523 2019-02-20
PCT/JP2019/018650 WO2019225346A1 (ja) 2018-05-22 2019-05-09 符号化装置、復号装置、符号化方法、復号方法及びピクチャ圧縮プログラム

Publications (1)

Publication Number Publication Date
ES2954064T3 true ES2954064T3 (es) 2023-11-20

Family

ID=68616702

Family Applications (1)

Application Number Title Priority Date Filing Date
ES19808240T Active ES2954064T3 (es) 2018-05-22 2019-05-09 Dispositivo de codificación, dispositivo de decodificación, procedimiento de codificación, procedimiento de decodificación y programa de compresión de imágenes

Country Status (13)

Country Link
US (4) US11044476B2 (es)
EP (2) EP4181512A1 (es)
JP (4) JP6798066B2 (es)
KR (2) KR20210089797A (es)
CN (5) CN114630115A (es)
AU (3) AU2019274735B2 (es)
BR (1) BR112020019922A2 (es)
CA (3) CA3238600A1 (es)
ES (1) ES2954064T3 (es)
MX (3) MX2020012178A (es)
SG (1) SG11202011403WA (es)
TW (3) TW202418802A (es)
WO (1) WO2019225346A1 (es)

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06292020A (ja) * 1993-04-07 1994-10-18 Hitachi Ltd 画像符号復号方法ならびに装置
US7804498B1 (en) * 2004-09-15 2010-09-28 Lewis N Graham Visualization and storage algorithms associated with processing point cloud data
CN101932906B (zh) * 2008-02-12 2013-12-18 特林布尔公司 相对于地面标志来定位勘测仪器
CN103281527B (zh) * 2010-04-15 2015-12-23 华为技术有限公司 图像编解码方法及相关装置
ES2883132T3 (es) * 2011-01-13 2021-12-07 Canon Kk Aparato de codificación de imagen, procedimiento de codificación de imagen y programa, y aparato de decodificación de imagen, procedimiento de decodificación de imagen y programa
DK2768145T3 (da) * 2011-01-14 2016-04-04 Ge Video Compression Llc Entropikodnings- og afkodningssystem
ES2661699T3 (es) * 2011-06-28 2018-04-03 Samsung Electronics Co., Ltd. Procedimiento de decodificación de vídeo con intra predicción
CN107770556B (zh) * 2012-04-23 2020-05-19 太阳专利托管公司 解码方法、解码装置以及编码方法、编码装置
WO2015082217A2 (en) * 2013-12-05 2015-06-11 Trimble Ab Distance measurement instrument with scanning function
US10200701B2 (en) * 2015-10-14 2019-02-05 Qualcomm Incorporated HDR and WCG coding architecture with SDR backwards compatibility in a single bitstream for video coding
US20180324441A1 (en) * 2015-11-24 2018-11-08 Samsung Electronics Co., Ltd. Method for encoding/decoding image and device therefor
CN105451024B (zh) * 2015-12-31 2021-01-26 北京大学 一种采用压缩感知的数字全息图编码传输方法
EP3264034B1 (de) * 2016-06-30 2020-02-26 Leica Geosystems AG Vermessungsgerät mit höhenmesssystem und verfahren zum messen einer höhe
US10779004B2 (en) * 2016-10-12 2020-09-15 Mediatek Inc. Methods and apparatuses of constrained multi-type-tree block partition for video coding
KR20180082330A (ko) * 2017-01-09 2018-07-18 에스케이텔레콤 주식회사 영상 부호화 또는 복호화하기 위한 장치 및 방법
CN116684601A (zh) * 2017-03-31 2023-09-01 松下电器(美国)知识产权公司 图像编码装置、图像解码装置及存储介质
CN116437105A (zh) * 2017-05-19 2023-07-14 松下电器(美国)知识产权公司 解码装置和编码装置
CN118042128A (zh) * 2017-11-16 2024-05-14 松下电器(美国)知识产权公司 图像编码装置、编码方法和非暂时性存储介质
JP7032846B2 (ja) * 2018-05-01 2022-03-09 株式会社トプコン 測量装置
EP3748289B1 (en) * 2019-06-07 2024-01-10 Leica Geosystems AG Scanning surveying device
JP7536666B2 (ja) * 2021-01-19 2024-08-20 株式会社トプコン 測量装置

Also Published As

Publication number Publication date
US20210051323A1 (en) 2021-02-18
US11997271B2 (en) 2024-05-28
EP4181512A1 (en) 2023-05-17
CN114630117A (zh) 2022-06-14
BR112020019922A2 (pt) 2021-01-05
CN114630115A (zh) 2022-06-14
CN114630116A (zh) 2022-06-14
TWI788567B (zh) 2023-01-01
KR102278175B1 (ko) 2021-07-16
AU2024219774A1 (en) 2024-10-10
EP3783896C0 (en) 2023-07-05
US20210258577A1 (en) 2021-08-19
AU2019274735A1 (en) 2020-12-10
AU2023201336B2 (en) 2024-06-20
JP7241056B2 (ja) 2023-03-16
KR20200133813A (ko) 2020-11-30
EP3783896A1 (en) 2021-02-24
TW202005387A (zh) 2020-01-16
CA3157007A1 (en) 2019-11-28
MX2022005226A (es) 2022-06-08
CN114630118A (zh) 2022-06-14
JP2024103570A (ja) 2024-08-01
CN112154662A (zh) 2020-12-29
EP3783896A4 (en) 2021-03-10
SG11202011403WA (en) 2020-12-30
JP7496909B2 (ja) 2024-06-07
JP6798066B2 (ja) 2020-12-09
US20230074281A1 (en) 2023-03-09
TW202318871A (zh) 2023-05-01
US11533482B2 (en) 2022-12-20
CN112154662B (zh) 2022-05-10
AU2019274735B2 (en) 2022-12-15
CA3238600A1 (en) 2019-11-28
MX2020012178A (es) 2022-05-03
EP3783896B1 (en) 2023-07-05
CA3100839C (en) 2022-06-21
JP2021016200A (ja) 2021-02-12
TWI827394B (zh) 2023-12-21
MX2022005224A (es) 2022-06-08
JPWO2019225346A1 (ja) 2021-01-07
WO2019225346A1 (ja) 2019-11-28
CA3100839A1 (en) 2019-11-28
AU2023201336A1 (en) 2023-04-06
US11044476B2 (en) 2021-06-22
TW202418802A (zh) 2024-05-01
JP2023060168A (ja) 2023-04-27
US20240267520A1 (en) 2024-08-08
KR20210089797A (ko) 2021-07-16

Similar Documents

Publication Publication Date Title
AU2018320382B2 (en) Image encoder, image decoder, image encoding method, and image decoding method
US10863175B2 (en) Encoder, and decoder, encoding method, decoding method
BR112020001991A2 (pt) codificador de imagem, decodificador de imagem, método de codificação de imagem e método de decodificação de imagem
WO2019039323A1 (en) IMAGE ENCODER, IMAGE DECODER, IMAGE ENCODING METHOD, AND IMAGE DECODING METHOD
US11949884B2 (en) Encoder, decoder, encoding method, and decoding method
ES2917553T3 (es) Dispositivo de codificación, procedimiento de codificación, dispositivo de decodificación y procedimiento de decodificación
BR112020026686A2 (pt) Sistema e método para codificação de vídeo
KR102470053B1 (ko) 부호화 장치, 복호 장치, 부호화 방법 및 복호 방법
US11064200B2 (en) Encoding apparatus, decoding apparatus, encoding method, and decoding method
US20230105102A1 (en) Encoder, decoder, encoding method, and decoding method
BR112020013554A2 (pt) codificador, decodificador, método de codificação, e método de decodificação
JPWO2020162536A1 (ja) 符号化装置、復号装置、符号化方法及び復号方法
ES2954064T3 (es) Dispositivo de codificación, dispositivo de decodificación, procedimiento de codificación, procedimiento de decodificación y programa de compresión de imágenes
BR112020016755A2 (pt) Codificador, decodificador, método de codificação e método de decodificação
RU2808103C2 (ru) Способ декодирования видео и изображений с использованием сегментации на блоки
BR122023027451A2 (pt) Método de codificação e método de decodificação
BR122023027457A2 (pt) Codificador que codifica uma imagem e decodificador que decodifica um sinal codificado
BR122023027474A2 (pt) Método de codificação e método de decodificação
BR122023027466A2 (pt) Codificador e decodificador
BR122023027486A2 (pt) Método de codificação e método de decodificação
BR122023027448A2 (pt) Método de codificação e método de decodificação