ES2779226T3 - Procedimiento de descodificación de vídeo y dispositivo de descodificación de vídeo - Google Patents

Procedimiento de descodificación de vídeo y dispositivo de descodificación de vídeo Download PDF

Info

Publication number
ES2779226T3
ES2779226T3 ES12793588T ES12793588T ES2779226T3 ES 2779226 T3 ES2779226 T3 ES 2779226T3 ES 12793588 T ES12793588 T ES 12793588T ES 12793588 T ES12793588 T ES 12793588T ES 2779226 T3 ES2779226 T3 ES 2779226T3
Authority
ES
Spain
Prior art keywords
motion vector
vector predictor
candidate
unit
snapshot
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
ES12793588T
Other languages
English (en)
Inventor
Toshiyasu Sugio
Takahiro Nishi
Youji Shibahara
Kyoko Tanikawa
Hisao Sasai
Toru Matsunobu
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.)
Sun Patent Trust Inc
Original Assignee
Sun Patent Trust Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sun Patent Trust Inc filed Critical Sun Patent Trust Inc
Application granted granted Critical
Publication of ES2779226T3 publication Critical patent/ES2779226T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/56Motion estimation with initialisation of the vector search, e.g. estimating a good candidate to initiate a search
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/107Selection of coding mode or of prediction mode between spatial and temporal predictive coding, e.g. picture refresh
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/521Processing of motion vectors for estimating the reliability of the determined motion vectors or motion vector field, e.g. for smoothing the motion vector field or for correcting motion vectors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction

Landscapes

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

Abstract

Un procedimiento de descodificación de instantáneas en movimiento para descodificar un bloque actual de una instantánea, que comprende: establecer un número fijo de primeros candidatos de predictor de vector de movimiento, siendo dicho número fijo un número máximo de candidatos de predictor, teniendo cada candidato de predictor de vector de movimiento un vector de movimiento que se ha obtenido a partir de un bloque adyacente al bloque actual; borrar un candidato redundante de los primeros candidatos de predictor de vector de movimiento; borrar, de los primeros candidatos de predictor de vector de movimiento, un candidato de predictor de vector de movimiento no disponible que se ha obtenido a partir de un bloque codificado por intra predicción, un bloque ubicado fuera de un límite de un sector o una instantánea que incluye el bloque actual, o un bloque que no se ha descodificado aún; determinar si el número total de primeros candidatos de predictor de vector de movimiento después de las etapas de borrado es menor que el número fijo; obtener un segundo candidato de predictor de vector de movimiento que tiene un segundo vector de movimiento cuando el número total de primeros candidatos de predictor de vector de movimiento es menor que el número fijo, siendo el segundo vector de movimiento un vector nulo; y descodificar un índice codificado que indica uno cualquiera de los primeros candidatos de predictor de vector de movimiento después de las etapas de borrado o el segundo candidato de predictor de vector de movimiento; descodificar el bloque actual usando el vector de movimiento del candidato de predictor de vector de movimiento indicado; en el que el número fijo se usa para descodificar el índice codificado.

Description

DESCRIPCIÓN
Procedimiento de descodificación de vídeo y dispositivo de descodificación de vídeo
rCampo técnico!
La presente invención se refiere a un procedimiento de descodificación de instantáneas en movimiento y a un aparato de descodificación de instantáneas en movimiento.
Antecedentes de la técnica!
En el procesamiento de codificación de instantáneas en movimiento, en general, la cantidad de información se reduce mediante la utilización de redundancia en la dirección espacial y la dirección temporal que tienen las instantáneas en movimiento. En el presente caso, en general, la transformada a un dominio de la frecuencia se usa como un procedimiento que utiliza redundancia en la dirección espacial. Además, el procesamiento de codificación de predicción inter instantánea (denominada posteriormente en el presente documento "inter predicción") se usa como un procedimiento que utiliza redundancia en la dirección temporal. En el procesamiento de codificación de inter predicción, cuando se codifica una instantánea, una instantánea codificada que aparece antes o después de una instantánea actual que se va a codificar en el orden de tiempo de visualización se usa como una instantánea de referencia. Un vector de movimiento se obtiene mediante la realización de una detección de movimiento sobre la instantánea actual en relación con la instantánea de referencia. Entonces, la redundancia en la dirección temporal se elimina mediante el cálculo de una diferencia entre datos de imagen de la instantánea actual y datos de imagen predichos obtenidos mediante la realización de una compensación de movimiento basándose en el vector de movimiento obtenido (por ejemplo, véase la referencia no de patente (NPL) 1). En el presente caso, en la detección de movimiento, se calcula un valor de diferencia entre un bloque actual en una instantánea actual que se va a codificar y un bloque en una instantánea de referencia, y un bloque en la instantánea de referencia con el que se obtiene el valor de diferencia más pequeño se determina como un bloque de referencia. Entonces, se detecta un vector de movimiento usando el bloque actual y el bloque de referencia.
ILista de citas!
[Referencias no de patente]
[NPL 1] Recomendación de UIT-T H.264, "Advanced video coding for generic audiovisual services", marzo de 2010 [NPL 2] JCT-VC, "WD3: Working Draft 3 of High-Efficiency Video Coding", JCTVC-E603, marzo de 2011 [NPL 3] Guillaume Laroche y col: "Robust solution for the AMVP parsing issue", 96. Reunión de MPEG; 21-3-2011 -25-3-2011; Ginebra; (Grupo de Expertos de Imágenes en Movimiento o ISO/IEC JTC1/SC29/WG11), n.° m19740, 18 de marzo de 2011 (18-03-2011), XP030048307
rSumario de la invención!
IProblema técnico!
Sin embargo, existe una demanda de que la técnica convencional anterior logre una mejora en la eficiencia de codificación, en la codificación y descodificación de una instantánea en movimiento usando inter predicción.
A la vista de esto, un objeto de la presente invención es proporcionar un procedimiento de descodificación de instantáneas en movimiento que mejora la eficiencia de codificación, en la descodificación de una instantánea en movimiento usando inter predicción.
Esto se consigue mediante las características de las reivindicaciones independientes. Algunas realizaciones mencionadas son el objeto de las reivindicaciones dependientes.
La invención se define mediante las reivindicaciones adjuntas.
lEfectos ventajosos de la invención!
De acuerdo con un aspecto de la presente invención, es posible mejorar la eficiencia de codificación, en la codificación y descodificación de una instantánea en movimiento usando inter predicción.
IBreve descripción de los dibujos!
[Figura 1A] La figura 1A es un diagrama para describir un ejemplo de una lista de instantáneas de referencia para una instantánea B.
[Figura 1B] La figura 1B muestra un ejemplo de una lista de instantáneas de referencia para una dirección de predicción 0 para una instantánea B.
[Figura 1C] La figura 1C muestra un ejemplo de una lista de instantáneas de referencia para una dirección de predicción 1 para una instantánea B.
[Figura 2] La figura 2 es un diagrama para describir vectores de movimiento en un modo de predicción de vectores de movimiento temporal.
[Figura 3] La figura 3 muestra ejemplos de vectores de movimiento de bloques adyacentes usados en un modo de designación de predictor de vector de movimiento.
[Figura 4] La figura 4 es un diagrama para describir un ejemplo de una lista de candidatos de predictor de vector de movimiento para la dirección de predicción 0.
[Figura 5] La figura 5 es un diagrama para describir un ejemplo de una lista de candidatos de predictor de vector de movimiento para la dirección de predicción 1.
[Figura 6] La figura 6 muestra ejemplos de asignación de unas cadenas de bits a unos índices de predictor de vector de movimiento.
[Figura 7] La figura 7 es un diagrama de flujo que muestra un ejemplo de procesamiento de codificación realizado cuando se usa el modo de designación de predictor de vector de movimiento.
[Figura 8A] La figura 8A muestra un ejemplo de cálculo de un predictor de vector de movimiento.
[Figura 8B] La figura 8B muestra un ejemplo de cálculo de un predictor de vector de movimiento.
[Figura 9] La figura 9 es un diagrama de bloques que muestra un ejemplo de una configuración de un aparato de codificación de instantáneas en movimiento que codifica una instantánea en movimiento usando el modo de designación de predictor de vector de movimiento.
[Figura 10] La figura 10 es un diagrama de flujo que muestra un ejemplo de procesamiento de descodificación realizado cuando se usa el modo de designación de predictor de vector de movimiento.
[Figura 11] La figura 11 es un diagrama de bloques que muestra un ejemplo de una configuración de un aparato de descodificación de instantáneas en movimiento que descodifica una instantánea en movimiento codificada usando el modo de designación de predictor de vector de movimiento.
[Figura 12] La figura 12 muestra una sintaxis usada cuando se añade un índice de predictor de vector de movimiento a un flujo de bits.
[Figura 13] La figura 13 es un diagrama de bloques que muestra una configuración de un aparato de codificación de instantáneas en movimiento de acuerdo con la realización 1.
[Figura 14] La figura 14 es un diagrama de flujo que muestra una operación de procesamiento del aparato de codificación de instantáneas en movimiento de acuerdo con la realización 1.
[Figura 15] La figura 15 muestra un ejemplo de una lista de candidatos de predictor de vector de movimiento para la dirección de predicción 0 en la realización 1.
[Figura 16] La figura 16 muestra un ejemplo de una lista de candidatos de predictor de vector de movimiento para la dirección de predicción 1 en la realización 1.
[Figura 17] La figura 17 es un diagrama de flujo que muestra un procesamiento para calcular un candidato de predictor de vector de movimiento y un tamaño de lista de candidatos de predictor de vector de movimiento en la realización 1.
[Figura 18] La figura 18 es un diagrama de flujo que muestra un procesamiento para determinar si un candidato es un candidato de predictor disponible en la realización 1.
[Figura 19] La figura 19 es un diagrama de flujo que muestra un procesamiento para añadir un candidato nulo en la realización 1.
[Figura 20] La figura 20 es un diagrama de flujo que muestra un procesamiento con respecto a la selección de un candidato de predictor de vector de movimiento en la realización 1.
[Figura 21] La figura 21 es un diagrama para describir un ejemplo de una lista de candidatos de predictor de vector de movimiento para la dirección de predicción 0.
[Figura 22] La figura 22 es un diagrama de bloques que muestra una configuración de un aparato de codificación de instantáneas en movimiento de acuerdo con la realización 2.
[Figura 23] La figura 23 es un diagrama de flujo que muestra una operación de procesamiento del aparato de codificación de instantáneas en movimiento de acuerdo con la realización 2.
[Figura 24] La figura 24 es un diagrama de bloques que muestra una configuración de un aparato de descodificación de instantáneas en movimiento de acuerdo con la realización 3.
[Figura 25] La figura 25 es un diagrama de flujo que muestra una operación de procesamiento del aparato de descodificación de instantáneas en movimiento de acuerdo con la realización 3.
[Figura 26] La figura 26 es un diagrama de bloques que muestra una configuración de un aparato de descodificación de instantáneas en movimiento de acuerdo con la realización 4.
[Figura 27] La figura 27 es un diagrama de flujo que muestra una operación de procesamiento del aparato de descodificación de instantáneas en movimiento de acuerdo con la realización 4.
[Figura 28] La figura 28 es un diagrama de bloques que muestra una configuración de un aparato de codificación de instantáneas en movimiento de acuerdo con la realización 5.
[Figura 29] La figura 29 es un diagrama de flujo que muestra una operación de procesamiento del aparato de codificación de instantáneas en movimiento de acuerdo con la realización 5.
[Figura 30] La figura 30 muestra un ejemplo de una lista de candidatos de predictor de vector de movimiento para la dirección de predicción 0 en la realización 5.
[Figura 31] La figura 31 muestra un ejemplo de una lista de candidatos de predictor de vector de movimiento para la dirección de predicción 1 en la realización 5.
[Figura 32] La figura 32 es un diagrama de flujo que muestra un procesamiento para calcular un candidato de predictor de vector de movimiento y un tamaño de lista de candidatos de predictor de vector de movimiento en la realización 5.
[Figura 33] La figura 33 es un diagrama de flujo que muestra un procesamiento para actualizar el número de candidatos de predictor disponibles en la realización 5.
[Figura 34] La figura 34 es un diagrama de flujo que muestra un procesamiento para añadir un nuevo candidato en la realización 5.
[Figura 35] La figura 35 es un diagrama de flujo que muestra un procesamiento con respecto a la selección de un candidato de predictor de vector de movimiento en la realización 5.
[Figura 36] La figura 36 es un diagrama de bloques que muestra una configuración de un aparato de codificación de instantáneas en movimiento de acuerdo con la realización 6.
[Figura 37] La figura 37 es un diagrama de flujo que muestra una operación de procesamiento del aparato de codificación de instantáneas en movimiento de acuerdo con la realización 6.
[Figura 38] La figura 38 es un diagrama de bloques que muestra una configuración de un aparato de descodificación de instantáneas en movimiento de acuerdo con la realización 7.
[Figura 39] La figura 39 es un diagrama de flujo que muestra una operación de procesamiento del aparato de descodificación de instantáneas en movimiento de acuerdo con la realización 7.
[Figura 40] La figura 40 es un diagrama de flujo que muestra un procesamiento para calcular el número de candidatos de predictor disponibles en la realización 7.
[Figura 41] La figura 41 es un diagrama de flujo que muestra un procesamiento para calcular un candidato de predictor de vector de movimiento en la realización 7.
[Figura 42] La figura 42 muestra un ejemplo de una sintaxis usada cuando se añade un índice de predictor de vector de movimiento a un flujo de bits. [Figura 43] La figura 43 muestra un ejemplo de una sintaxis usada cuando un tamaño de lista de candidatos de predictor de vector de movimiento se fija al valor máximo del número de candidatos de predictor de vector de movimiento.
[Figura 44] La figura 44 es un diagrama de bloques que muestra una configuración de un aparato de descodificación de instantáneas en movimiento de acuerdo con la realización 8.
[Figura 45] La figura 45 es un diagrama de flujo que muestra una operación de procesamiento del aparato de descodificación de instantáneas en movimiento de acuerdo con la realización 8.
[Figura 46] La figura 46 muestra una configuración global de un sistema de suministro de contenido para implementar servicios de distribución de contenido.
[Figura 47] La figura 47 muestra una configuración global de un sistema de difusión digital.
[Figura 48] La figura 48 muestra un diagrama de bloques que ilustra un ejemplo de una configuración de una televisión.
[Figura 49] La figura 49 muestra un diagrama de bloques que ilustra un ejemplo de una configuración de una unidad de reproducción/grabación de información que lee y escribe información desde y en un medio de grabación que es un disco óptico.
[Figura 50] La figura 50 muestra un ejemplo de una configuración de un medio de grabación que es un disco óptico.
[Figura 51A] La figura 51A muestra un ejemplo de un teléfono celular.
[Figura 51B] La figura 51B es un diagrama de bloques que muestra un ejemplo de una configuración de un teléfono celular.
[Figura 52] La figura 52 ilustra una estructura de datos multiplexados.
[Figura 53] La figura 53 muestra esquemáticamente cómo se multiplexa cada flujo en datos multiplexados.
[Figura 54] La figura 54 muestra cómo se almacena un flujo de vídeo en un flujo de paquetes de PES en más detalle.
[Figura 55] La figura 55 muestra una estructura de paquetes de TS y paquetes de origen en los datos multiplexados.
[Figura 56] La figura 56 muestra una estructura de datos de una PMT.
[Figura 57] La figura 57 muestra una estructura interna de información de datos multiplexados.
[Figura 58] La figura 58 muestra una estructura interna de información de atributo de flujo.
[Figura 59] La figura 59 muestra etapas para identificar datos de vídeo.
[Figura 60] La figura 60 muestra un ejemplo de una configuración de un circuito integrado para implementar el procedimiento de codificación de instantáneas en movimiento y el procedimiento de descodificación de instantáneas en movimiento de acuerdo con cada una de las realizaciones.
[Figura 61] La figura 61 muestra una configuración para conmutar entre frecuencias de accionamiento.
[Figura 62] La figura 62 muestra etapas para identificar datos de vídeo y conmutación entre frecuencias de accionamiento.
[Figura 63] La figura 63 muestra un ejemplo de una tabla de búsqueda en la que las normas de datos de vídeo están asociadas con frecuencias de accionamiento.
[Figura 64A] La figura 64A es un diagrama que ilustra un ejemplo de una configuración para compartir un módulo de una unidad de procesamiento de señal.
[Figura 64B] La figura 64B es un diagrama que muestra otro ejemplo de una configuración para compartir un módulo de la unidad de procesamiento de señal.
Descripción de las realizaciones!
(Conocimiento subyacente que forma la base de la presente invención)
En el esquema de codificación de instantáneas en movimiento denominado H.264 que ya se ha normalizado, se usan tres tipos de instantánea, en concreto, instantánea I, instantánea P e instantánea B para comprimir la cantidad de información.
Una instantánea I no se codifica mediante un procesamiento de codificación de inter predicción. En concreto, una instantánea I se codifica mediante un procesamiento de codificación de predicción intra instantánea (denominada posteriormente en el presente documento intra predicción). Una instantánea P se codifica por codificación de inter predicción al hacer referencia a una instantánea ya codificada que aparece antes o después de una instantánea actual que se va a codificar en el orden de tiempo de visualización. Una instantánea B se codifica por codificación de inter predicción al hacer referencia a dos instantáneas ya codificadas que aparecen antes o después de la instantánea actual en el orden de tiempo de visualización.
En la codificación de inter predicción, se genera una lista de instantáneas de referencia para identificar una instantánea de referencia. Una lista de referencia es una lista en la que se asignan índices de instantánea de referencia a unas instantáneas de referencia codificadas a las que se va a hacer referencia en la inter predicción. Por ejemplo, debido a que las instantáneas B se pueden codificar al hacer referencia a dos instantáneas, se generan dos listas de referencia (L0, L1).
La figura 1A es un diagrama para describir un ejemplo de una lista de instantáneas de referencia para una instantánea B. La figura 1B muestra un ejemplo de una lista de instantáneas de referencia 0 (L0) para la dirección de predicción 0 en una predicción bidireccional. En el presente caso, en la lista de instantáneas de referencia 0, el valor 0 del índice de instantánea de referencia 0 se asigna a la instantánea de referencia 0 en el orden de visualización 2. Además, el valor 1 del índice de instantánea de referencia 0 se asigna a la instantánea de referencia 1 en el orden de visualización 1. Además, el valor 2 del índice de instantánea de referencia 0 se asigna a la instantánea de referencia 2 en el orden de visualización 0. En concreto, unos índices de instantánea de referencia que tienen valores más pequeños se asignan a unas instantáneas de referencia en orden de proximidad temporal a una instantánea actual que se va a codificar en orden de visualización.
La figura 1C muestra un ejemplo de la lista de instantáneas de referencia 1 (L1) para la dirección de predicción 1 en una predicción bidireccional. En el presente caso, en la lista de instantáneas de referencia 1, el valor 0 del índice de instantánea de referencia 1 se asigna a la instantánea de referencia 1 en el orden de visualización 1. Además, el valor 1 del índice de instantánea de referencia 1 se asigna a la instantánea de referencia 0 en el orden de visualización 2. Además, el valor 2 del índice de instantánea de referencia 2 se asigna a la instantánea de referencia 2 en el orden de visualización 0.
De esta forma, es posible asignar unos índices de instantánea de referencia que tienen diferentes valores para las direcciones de predicción a una instantánea de referencia (las instantáneas de referencia 0 y 1 en la figura 1A), y unos índices de instantánea de referencia que tienen el mismo valor para las direcciones de predicción a una instantánea de referencia (la instantánea de referencia 2 en la figura 1A).
Además, en el esquema de codificación de instantáneas en movimiento denominado H.264 (NPL 1), se usa un modo de detección de vectores de movimiento como un modo de codificación de inter predicción para los bloques que se van a codificar en una instantánea B. En el modo de detección de vectores de movimiento, se codifican un valor de diferencia entre datos de imagen predichos y datos de imagen de un bloque actual que se va a codificar, y un vector de movimiento usado para generar los datos de imagen predichos. Además, en el modo de detección de vectores de movimiento, es posible seleccionar una predicción bidireccional o una predicción unidireccional, como la dirección de predicción. En una predicción bidireccional, se genera una imagen predicha al hacer referencia a dos instantáneas ya codificadas que aparecen antes o después de una instantánea actual que se va a codificar. En una predicción unidireccional, se genera una imagen predicha al hacer referencia a una instantánea ya codificada que aparece antes o después de una instantánea actual que se va a codificar.
Además, en el esquema de codificación de instantáneas en movimiento denominado H.264, un modo de codificación denominado modo de predicción de vectores de movimiento temporal se puede seleccionar cuando se obtiene un vector de movimiento en la codificación de una instantánea B. Se describe un procedimiento de codificación de inter predicción en el modo de predicción de vectores de movimiento temporal usando la figura 2.
La figura 2 es un diagrama para describir vectores de movimiento en el modo de predicción de vectores de movimiento temporal. En concreto, la figura 2 muestra el caso en el que el bloque a en la instantánea B2 se va a codificar en el modo de predicción de vectores de movimiento temporal.
En el presente caso, se utiliza el vector de movimiento vb que se usa cuando se codifica el bloque b (denominado posteriormente en el presente documento "bloque ubicado conjuntamente") en la misma posición en la instantánea P3 que la del bloque a, siendo la instantánea P3 una instantánea de referencia que aparece después de la instantánea B2. El vector de movimiento vb es un vector de movimiento usado cuando se codifica el bloque b al hacer referencia a la instantánea P1.
Dos bloques de referencia para el bloque a se obtienen a partir de la instantánea P1 que es una instantánea de referencia hacia delante y la instantánea P3 que es una instantánea de referencia hacia atrás, usando vectores de movimiento paralelos al vector de movimiento vb. Entonces, el bloque a se codifica mediante la realización de una predicción bidireccional basándose en los dos bloques de referencia obtenidos. En concreto, los vectores de movimiento usados cuando se codifica el bloque a son el vector de movimiento va1 con respecto a la instantánea P1 y el vector de movimiento va2 con respecto a la instantánea P3.
Además, se considera el uso de un modo de designación de predictor de vector de movimiento (NPL 2) como un procedimiento para codificar vectores de movimiento de los bloques que se van a codificar en una instantánea B o una instantánea P. En el modo de designación de predictor de vector de movimiento, se generan candidatos de predictor de vector de movimiento basándose en vectores de movimiento usados cuando se codifican bloques adyacentes a un bloque actual que se va a codificar. Entonces, se selecciona un predictor de vector de movimiento de entre los candidatos de predictor de vector de movimiento, y se codifica un vector de movimiento del bloque actual. En este momento, un índice del predictor de vector de movimiento seleccionado y similares se añaden a un flujo de bits. En consecuencia, el mismo predictor de vector de movimiento que el predictor de vector de movimiento usado para codificar se puede seleccionar también cuando se realiza la descodificación. Se describe un ejemplo específico con referencia a la figura 3.
La figura 3 muestra ejemplos de vectores de movimiento de bloques adyacentes que se usan en el modo de designación de predictor de vector de movimiento. En la figura 3, el bloque adyacente A es un bloque codificado adyacente a y ubicado en la izquierda de un bloque actual que se va a codificar. El bloque adyacente B es un bloque codificado adyacente a y ubicado sobre el bloque actual. El bloque adyacente C es un bloque codificado adyacente a y ubicado en la parte superior derecha del bloque actual. El bloque adyacente D es un bloque codificado adyacente a y ubicado en la parte inferior izquierda del bloque actual.
En la figura 3, el bloque actual es un bloque que se codifica mediante una predicción bidireccional, y tiene, como resultado de la detección de movimiento o similares, el vector de movimiento MvL0 en la dirección de predicción 0 como un vector de movimiento en relación con una instantánea de referencia indicada por el índice de instantánea de referencia RefL0 para la dirección de predicción 0, y el vector de movimiento MvL1 en la dirección de predicción 1 como un vector de movimiento en relación con una instantánea de referencia indicada por el índice de instantánea de referencia RefL1 para la dirección de predicción 1. En el presente caso, MvL0 es un vector de movimiento para el cual se hace referencia a una instantánea de referencia identificada usando la lista de instantáneas de referencia 0 (L0). Además, MvL1 es un vector de movimiento para el cual se hace referencia a una instantánea de referencia identificada usando la lista de instantáneas de referencia 1 (L1).
El bloque adyacente A es un bloque codificado por predicción unidireccional en la dirección de predicción 0. El bloque adyacente A tiene un vector de movimiento MvL0_A en la dirección de predicción 0 como un vector de movimiento en relación con una instantánea de referencia indicada por el índice de instantánea de referencia RefL0_A para la dirección de predicción 0. Además, el bloque adyacente B es un bloque codificado por predicción unidireccional en la dirección de predicción 1. El bloque adyacente B tiene un vector de movimiento MvL1_B en la dirección de predicción 1 como un vector de movimiento en relación con una instantánea de referencia indicada por el índice de instantánea de referencia RefL1_B para la dirección de predicción 1. El bloque adyacente C es un bloque codificado por intra predicción. Además, el bloque adyacente D es un bloque codificado por predicción unidireccional en la dirección de predicción 0. El bloque adyacente D tiene un vector de movimiento MvL0_D en la dirección de predicción 0 como un vector de movimiento en relación con una instantánea de referencia indicada por el índice de instantánea de referencia RefL0_D en la dirección de predicción 0.
En un caso de este tipo, como un predictor de vector de movimiento de un bloque actual que se va a codificar, por ejemplo, se selecciona un predictor de vector de movimiento con el que se puede codificar de la forma más eficiente un vector de movimiento del bloque actual de entre candidatos de predictor de vector de movimiento generados a partir de vectores de movimiento de bloques adyacentes A, B, C y D y un vector de movimiento en el modo de predicción de vectores de movimiento temporal obtenido usando un bloque ubicado conjuntamente. Entonces, un índice de predictor de vector de movimiento que indica el predictor de vector de movimiento seleccionado se añade a un flujo de bits. Por ejemplo, si el vector de movimiento MvL0_A en la dirección de predicción 0 del bloque adyacente A se selecciona como un predictor de vector de movimiento cuando se va a codificar el vector de movimiento MvL0 en la dirección de predicción 0 de un bloque actual, solo el valor "0" del índice de predictor de vector de movimiento que indica que el candidato de predictor de vector de movimiento generado a partir del bloque adyacente A se usa como se muestra en la figura 4 se añade a un flujo de bits. Por consiguiente, se puede reducir la cantidad de información acerca del vector de movimiento MvL0 en la dirección de predicción 0 del bloque actual.
En el presente caso, la figura 4 muestra un ejemplo de una lista de candidatos de predictor de vector de movimiento para la dirección de predicción 0. Además, como se muestra en la figura 4, en el modo de designación de predictor de vector de movimiento, un candidato con el que no se puede generar un predictor de vector de movimiento (denominado posteriormente en el presente documento "candidato de predictor no disponible"), y un candidato cuyo valor es igual que el valor de otro candidato de predictor de vector de movimiento (posteriormente en el presente documento, "candidato redundante") se borran de candidatos de predictor de vector de movimiento. En consecuencia, la cantidad de código asignada a los índices de predictor de vector de movimiento se reduce al disminuir el número de candidatos de predictor de vector de movimiento. En el presente caso, que sea imposible la generación de un predictor de vector de movimiento quiere decir que un bloque adyacente es (1) un bloque codificado por intra predicción, (2) un bloque fuera de un límite de un sector o una instantánea que incluye un bloque actual que se va a codificar, o (3) un bloque que no se ha codificado aún, por ejemplo.
En el ejemplo en la figura 4, el bloque adyacente C se codifica por intra predicción. Por consiguiente, un candidato de predictor indicado por el valor "3" del índice de predictor de vector de movimiento es un candidato de predictor no disponible y, por lo tanto, se borra de la lista de candidatos de predictor de vector de movimiento. Además, un predictor de vector de movimiento en la dirección de predicción 0 generado a partir del bloque adyacente D tiene el mismo valor que el valor de un predictor de vector de movimiento en la dirección de predicción 0 generado a partir del bloque adyacente A y, por lo tanto, un candidato de predictor indicado por el valor "4" del índice de predictor de vector de movimiento se borra de la lista de candidatos de predictor de vector de movimiento. Como resultado, el número de candidatos de predictor de vector de movimiento en la dirección de predicción 0 se reduce con el tiempo a 3, y el tamaño de lista de candidatos de predictor de vector de movimiento para la dirección de predicción 0 se establece a 3.
La figura 5 muestra un ejemplo de una lista de candidatos de predictor de vector de movimiento para la dirección de predicción 1. En el ejemplo mostrado en la figura 5, el número de candidatos de predictor de vector de movimiento en la dirección de predicción 1 se reduce con el tiempo a 2 al borrar un candidato de predictor no disponible y candidatos redundantes, y el tamaño de lista de candidatos de predictor de vector de movimiento para la dirección de predicción 1 se establece a 2.
Como se muestra en la figura 6, se asignan cadenas de bits a unos índices de predictor de vector de movimiento de acuerdo con el tamaño de lista de candidatos de predictor de vector de movimiento, y se codifican por longitud variable. Además, si el tamaño de lista de candidatos de predictor de vector de movimiento es 1, un índice de predictor de vector de movimiento no se añade a un flujo de bits, y se da lugar a que un aparato de descodificación estime que el índice es el valor 0. De esta forma, en el modo de designación de predictor de vector de movimiento, las cadenas de bits asignadas a los índices de predictor de vector de movimiento se cambian de acuerdo con el tamaño de lista de candidatos de predictor de vector de movimiento, reduciendo de ese modo la cantidad de código.
La figura 7 es un diagrama de flujo que muestra un ejemplo de procesamiento de codificación en el caso de usar el modo de designación de predictor de vector de movimiento.
En la etapa S1001, se calculan candidatos de predictor de vector de movimiento en una dirección de predicción X a partir de bloques adyacentes y un bloque ubicado conjuntamente (denominados posteriormente en el presente documento "candidatos de bloque de predicción"). En el presente caso, X es uno de los valores "0" y "1", en los que 0 representa la dirección de predicción 0 y 1 representa la dirección de predicción 1. El candidato de predictor de vector de movimiento sMvLX en la dirección de predicción X se calcula de acuerdo con la siguiente expresión, usando el vector de movimiento MvLX_N y el índice de instantánea de referencia RefLX_N de un candidato de bloque de predicción y el índice de instantánea de referencia RefLX de un bloque actual que se va a codificar.
sMvLX =
MvLX_N x (POC(RefLX) - curPOC) / (POC(RefLX_N) - curPOC) (Expresión 1)
En el presente caso, POC(RefLX) indica cuándo en el orden se visualiza una instantánea de referencia indicada por el índice de instantánea de referencia RefLX, POC(RefLX_N) indica cuándo en el orden se visualiza una instantánea de referencia indicada por el índice de instantánea de referencia RefLX_N, y curPOC indica cuándo en el orden se visualiza una instantánea actual que se va a codificar. Se debería hacer notar que si un candidato de bloque de predicción no tiene el vector de movimiento MvLX_N en la dirección de predicción X, el predictor de vector de movimiento sMvLX se calcula de acuerdo con la expresión 2, usando el vector de movimiento MvL(1 - X)_N en la dirección de predicción (1 - X) y el índice de instantánea de referencia RefL(1 - X)_N.
sMvLX =
MvL(1 - X)_N x (POC(RefLX) - curPOC) / (POC(RefL(1 - X)_N) - curPOC) (Expresión 2)
Las figuras 8A y 8B muestran ejemplos de cálculo de predictores de vector de movimiento usando las expresiones 1 y 2. Se debería hacer notar que, como es mostrado por las expresiones 1 y 2, si los valores de POC(RefLX) y POC(RefLX_N) son iguales, en concreto, se hace referencia a la misma instantánea, se puede omitir el ajuste a escala.
En la etapa S1002, un candidato redundante y un candidato de predictor no disponible se borran de los candidatos de predictor de vector de movimiento en la dirección de predicción X. En la etapa S1003, el tamaño de lista de candidatos de predictor de vector de movimiento se establece al número de candidatos de predictor de vector de movimiento después del procesamiento de borrado. En la etapa S1004, se determina un índice de predictor de vector de movimiento que se va a usar para codificar un vector de movimiento en la dirección de predicción X de un bloque actual. En la etapa S1005, el índice de predictor de vector de movimiento determinado se codifica por longitud variable usando una cadena de bits determinada de acuerdo con el tamaño de lista de candidatos de predictor de vector de movimiento.
La figura 9 es un diagrama de bloques que muestra un ejemplo de una configuración de un aparato de codificación de instantáneas en movimiento 1000 que codifica una instantánea en movimiento usando el modo de designación de predictor de vector de movimiento.
Como se muestra en la figura 9, el aparato de codificación de instantáneas en movimiento 1000 incluye una unidad de sustracción 1001, una unidad de transformada ortogonal 1002, una unidad de cuantificación 1003, una unidad de cuantificación inversa 1004, una unidad de transformada ortogonal inversa 1005, una unidad de adición 1006, una memoria de bloques 1007, una memoria de tramas 1008, una unidad de intra predicción 1009, una unidad de inter predicción 1010, una unidad de control de inter predicción 1011, una unidad de determinación de tipo de instantánea 1012, un conmutador 1013, una unidad de cálculo de candidatos de predictor de vector de movimiento 1014, una memoria de colPic 1015 y una unidad de codificación de longitud variable 1016.
En la figura 9, la unidad de cálculo de candidatos de predictor de vector de movimiento 1014 calcula candidatos de predictor de vector de movimiento. Entonces, la unidad de cálculo de candidatos de predictor de vector de movimiento 1014 transmite el número de candidatos de predictor de vector de movimiento calculados a la unidad de codificación de longitud variable 1016. La unidad de codificación de longitud variable 1016 establece el tamaño de lista de candidatos de predictor de vector de movimiento que es un parámetro de codificación al número de candidatos de predictor de vector de movimiento. Entonces, la unidad de codificación de longitud variable 1016 codifica por longitud variable unos índices de predictor de vector de movimiento usados para codificar mediante la asignación a los mismos de cadenas de bits de acuerdo con el tamaño de lista de candidatos de predictor de vector de movimiento.
La figura 10 es un diagrama de flujo que muestra un ejemplo de procesamiento de descodificación en el caso de usar el modo de designación de predictor de vector de movimiento.
En la etapa S2001, se calculan candidatos de predictor de vector de movimiento en la dirección de predicción X a partir de bloques adyacentes y un bloque ubicado conjuntamente (candidatos de bloque de predicción). En la etapa S2002, un candidato redundante y un candidato de predictor no disponible se borran de los candidatos de predictor de vector de movimiento. En la etapa S2003, el tamaño de lista de candidatos de predictor de vector de movimiento se establece al número de candidatos de predictor de vector de movimiento después del procesamiento de borrado. En la etapa S2004, un índice de predictor de vector de movimiento que se va a usar para descodificar un bloque actual se descodifica a partir de un flujo de bits usando el tamaño de lista de candidatos de predictor de vector de movimiento. En la etapa S2005, un vector de movimiento se calcula al añadir una diferencia de vector de movimiento a un candidato de predictor de vector de movimiento indicado por el índice de predictor de vector de movimiento descodificado, y se genera una imagen predicha usando el vector de movimiento calculado, realizando de ese modo un procesamiento de descodificación.
La figura 11 es un diagrama de bloques que muestra un ejemplo de una configuración de un aparato de descodificación de instantáneas en movimiento que descodifica una instantánea en movimiento codificada usando el modo de designación de predictor de vector de movimiento.
Como se muestra en la figura 11, un aparato de descodificación de instantáneas en movimiento 2000 incluye una unidad de descodificación de longitud variable 2001, una unidad de cuantificación inversa 2002, una unidad de transformada ortogonal inversa 2003, una unidad de adición 2004, una memoria de bloques 2005, una memoria de tramas 2006, una unidad de intra predicción 2007, una unidad de inter predicción 2008, una unidad de control de inter predicción 2009, un conmutador 2010, una unidad de cálculo de candidatos de predictor de vector de movimiento 2011 y una memoria de colPic 2012.
En la figura 11, la unidad de cálculo de candidatos de predictor de vector de movimiento 2011 calcula candidatos de predictor de vector de movimiento. Entonces, la unidad de cálculo de candidatos de predictor de vector de movimiento 2011 transmite el número de candidatos de predictor de vector de movimiento calculados a la unidad de descodificación de longitud variable 2001. La unidad de descodificación de longitud variable 2001 establece el tamaño de lista de candidatos de predictor de vector de movimiento que es un parámetro de descodificación al número de candidatos de predictor de vector de movimiento. Entonces, la unidad de descodificación de longitud variable 2001 descodifica un índice de predictor de vector de movimiento incluido en un flujo de bits usando el tamaño de lista de candidatos de predictor de vector de movimiento.
La figura 12 muestra una sintaxis usada cuando se añade un índice de predictor de vector de movimiento a un flujo de bits. En la figura 12, indicador_inter_pred indica un indicador de dirección de predicción para la inter predicción, ind_pvm indica un índice de predictor de vector de movimiento, y NumCPMVy indica el tamaño de lista de candidatos de predictor de vector de movimiento. NumCPMVy se establece al número de candidatos de predictor de vector de movimiento después de borrar un candidato de predictor no disponible y un candidato redundante de los candidatos de predictor de vector de movimiento.
Como se ha descrito anteriormente, una instantánea en movimiento se codifica o se descodifica usando el modo de designación de predictor de vector de movimiento.
Sin embargo, en el modo de designación de predictor de vector de movimiento anterior, un candidato para un predictor de vector de movimiento que se va a usar cuando se codifica un vector de movimiento de un bloque actual que se va a codificar se calcula a partir de un vector de movimiento usado para un bloque adyacente al bloque actual, por ejemplo. Por lo tanto, por ejemplo, si un bloque adyacente es un área de objeto en movimiento y un bloque actual que se va a codificar es un área estática, un candidato de predictor de vector de movimiento del bloque actual es afectado por el área de objeto en movimiento. Por esta razón, un predictor de vector de movimiento para codificar de forma eficiente un vector de movimiento de un bloque actual que tiene un valor comparativamente pequeño puede no incluirse en candidatos de predictor de vector de movimiento y, por lo tanto, la eficiencia de codificación puede caer.
A la vista de esto, un objeto de la presente invención es proporcionar un procedimiento de codificación de instantáneas en movimiento que mejora la eficiencia de codificación al añadir un predictor de vector de movimiento para un área estática a unas listas de candidatos de predictor de vector de movimiento.
A la vista de esto, un procedimiento de codificación de instantáneas en movimiento de acuerdo con un aspecto de la presente invención es un procedimiento de codificación de instantáneas en movimiento para calcular un predictor de vector de movimiento que se va a usar cuando se codifica un vector de movimiento de un bloque actual que se va a codificar, y codificar el bloque actual, para generar un flujo de bits, incluyendo el procedimiento: obtener cada uno de uno o más primeros candidatos de predictor de vector de movimiento, basándose en un vector de movimiento usado para codificar un bloque espacial o temporalmente adyacente al bloque actual; obtener uno o más segundos candidatos de predictor de vector de movimiento, teniendo cada uno un vector predeterminado como un vector de movimiento; seleccionar, de entre los uno o más primeros candidatos de predictor de vector de movimiento y los uno o más segundos candidatos de predictor de vector de movimiento, el predictor de vector de movimiento que se va a usar para codificar el vector de movimiento del bloque actual; y añadir un índice para identificar el predictor de vector de movimiento al flujo de bits.
De acuerdo con esto, un candidato de predictor de vector de movimiento que tiene un vector predeterminado como un vector de movimiento se puede obtener como el segundo candidato de predictor de vector de movimiento. Por lo tanto, un candidato de predictor de vector de movimiento que tiene un vector de movimiento de área estática, por ejemplo, se puede obtener como el segundo candidato de predictor de vector de movimiento. En consecuencia, se puede codificar de forma eficiente un bloque actual que se va a codificar que tiene un movimiento predeterminado, lo que mejora la eficiencia de codificación.
Por ejemplo, el vector predeterminado puede ser un vector nulo.
De acuerdo con esto, debido a que el vector predeterminado es un vector nulo, se puede obtener un candidato de predictor de vector de movimiento que tiene un vector de movimiento de área estática. Por lo tanto, si el bloque actual es un área estática, es posible mejorar la eficiencia de codificación.
Por ejemplo, el procedimiento de codificación de instantáneas en movimiento puede incluir adicionalmente: determinar un número máximo de candidatos de predictor de vector de movimiento; y determinar si un número total de los uno o más primeros candidatos de predictor de vector de movimiento que se han obtenido es más pequeño que el número máximo, en el que, cuando se obtienen los uno o más segundos candidatos de predictor de vector de movimiento, los uno o más segundos candidatos de predictor de vector de movimiento se pueden obtener cuando se determina que el número total de uno o más primeros candidatos de predictor de vector de movimiento es más pequeño que el número máximo.
De acuerdo con esto, se puede obtener un segundo candidato de predictor de vector de movimiento si se determina que el número de primeros candidatos de predictor de vector de movimiento es más pequeño que el número máximo. Por lo tanto, es posible aumentar el número de candidatos de predictor de vector de movimiento en un intervalo que no supera el número máximo, y mejorar la eficiencia de codificación.
Por ejemplo, cuando se añade el índice, el índice se puede codificar usando el número máximo determinado, y el índice codificado se puede añadir al flujo de bits.
De acuerdo con esto, un índice para identificar un candidato de predictor de vector de movimiento se puede codificar usando el número máximo determinado. En concreto, se puede codificar un índice sin depender del número de candidatos de predictor de vector de movimiento realmente obtenidos. Por lo tanto, incluso si se pierde la información necesaria para obtener un candidato de predictor de vector de movimiento (por ejemplo, información de un bloque ubicado conjuntamente y similares), un aparato de descodificación puede descodificar un índice, y se puede mejorar la resistencia a errores. Además, el aparato de descodificación puede descodificar un índice, sin depender del número de candidatos de predictor de vector de movimiento realmente obtenidos. En concreto, el aparato de descodificación puede descodificar un índice, sin aguardar la obtención de un candidato de predictor de vector de movimiento. Dicho de otra forma, es posible generar un flujo de bits para el cual se puede realizar en paralelo la obtención de un candidato de predictor de vector de movimiento y la descodificación de un índice.
Por ejemplo, cuando se añade el índice, se puede añadir adicionalmente información que indica el número máximo determinado al flujo de bits.
De acuerdo con esto, se puede añadir información que indica el número máximo determinado a un flujo de bits. Por lo tanto, el número máximo se puede cambiar en una unidad adecuada, lo que permite que se mejore la eficiencia de codificación.
Por ejemplo, cuando se obtienen los uno o más primeros candidatos de predictor de vector de movimiento, un vector de movimiento usado para codificar un bloque se puede obtener como el primer candidato de predictor de vector de movimiento, siendo el bloque espacialmente adyacente al bloque actual, y no siendo (i) un bloque codificado por intra predicción, (ii) un bloque ubicado fuera de un límite de un sector o una instantánea que incluye el bloque actual, o (iii) un bloque que no se ha codificado aún.
De acuerdo con esto, el primer candidato de predictor de vector de movimiento se puede obtener basándose en un bloque adecuado para obtener un candidato de predictor de vector de movimiento.
Por ejemplo, cuando se obtienen los primeros candidatos de predictor de vector de movimiento, un candidato de predictor de vector de movimiento se puede obtener como el primer candidato de predictor de vector de movimiento, teniendo el candidato de predictor de vector de movimiento un vector de movimiento diferente de un vector de movimiento de cualquiera de los uno o más primeros candidatos de predictor de vector de movimiento que ya se han obtenido.
De acuerdo con esto, un candidato de predictor de vector de movimiento que tiene el mismo vector de movimiento que un vector de movimiento de cualquiera de los primeros candidatos de predictor de vector de movimiento que ya se han obtenido se puede excluir de los primeros candidatos de predictor de vector de movimiento. Como resultado, se puede aumentar el número de segundos candidatos de predictor de vector de movimiento, y se pueden aumentar los tipos de vectores de movimiento seleccionables como candidatos de predictor de vector de movimiento. Por lo tanto, es posible mejorar adicionalmente la eficiencia de codificación.
Por ejemplo, el procedimiento de codificación de instantáneas en movimiento puede incluir adicionalmente: conmutar entre un primer procesamiento de codificación conforme a una primera norma y un segundo procesamiento de codificación conforme a una segunda norma; y añadir, al flujo de bits, información de identificación que indica la primera norma o la segunda norma con la que es conforme uno correspondiente del primer procesamiento de codificación y el segundo procesamiento de codificación después de la conmutación, en el que, cuando se realiza la conmutación al primer procesamiento de codificación, obtener los uno o más primeros candidatos de predictor de vector de movimiento, obtener los uno o más segundos candidatos de predictor de vector de movimiento, seleccionar el predictor de vector de movimiento, y añadir el índice se puede realizar como el primer procesamiento de codificación.
De acuerdo con esto, es posible conmutar entre el primer procesamiento de codificación conforme a la primera norma y el segundo procesamiento de codificación conforme a la segunda norma.
Un procedimiento de descodificación de instantáneas en movimiento de acuerdo con un aspecto de la presente invención es un procedimiento de descodificación de instantáneas en movimiento para calcular un predictor de vector de movimiento que se va a usar cuando se descodifica un vector de movimiento de un bloque actual que se va a descodificar que se incluye en un flujo de bits, y descodificar el bloque actual, incluyendo el procedimiento: obtener cada uno de uno o más primeros candidatos de predictor de vector de movimiento, basándose en un vector de movimiento usado para descodificar un bloque espacial o temporalmente adyacente al bloque actual; obtener uno o más segundos candidatos de predictor de vector de movimiento, teniendo cada uno un vector predeterminado como un vector de movimiento; obtener un índice para identificar uno de uno o más candidatos de predictor de vector de movimiento a partir del flujo de bits; y seleccionar, basándose en el índice obtenido, el predictor de vector de movimiento que se va a usar cuando se descodifica el bloque actual, de entre los uno o más primeros candidatos de predictor de vector de movimiento y los uno o más segundos candidatos de predictor de vector de movimiento.
De acuerdo con esto, un candidato de predictor de vector de movimiento que tiene el vector predeterminado como un vector de movimiento se puede obtener como el segundo candidato de predictor de vector de movimiento. Por lo tanto, por ejemplo, un candidato de predictor de vector de movimiento que tiene un vector de movimiento de área estática, por ejemplo, se puede obtener como el segundo candidato de predictor de vector de movimiento. En consecuencia, un flujo de bits en el que se codifica de forma eficiente un bloque que tiene un movimiento predeterminado se puede descodificar de forma apropiada y, por lo tanto, es posible descodificar apropiadamente un flujo de bits para el cual se ha mejorado la eficiencia de codificación.
Por ejemplo, el vector predeterminado puede ser un vector nulo.
De acuerdo con esto, debido a que el vector predeterminado es un vector nulo, es posible obtener un candidato de predictor de vector de movimiento que tiene un vector de movimiento de área estática. Por lo tanto, es posible descodificar apropiadamente un flujo de bits para el cual se ha mejorado la eficiencia de codificación.
Por ejemplo, el procedimiento de descodificación de instantáneas en movimiento puede incluir adicionalmente: determinar un número máximo de los candidatos de predictor de vector de movimiento; y determinar si un número total de los uno o más primeros candidatos de predictor de vector de movimiento que se han obtenido es más pequeño que el número máximo, en el que, cuando se obtienen los uno o más segundos candidatos de predictor de vector de movimiento, los uno o más segundos candidatos de predictor de vector de movimiento se pueden obtener cuando se determina que el número total de uno o más primeros candidatos de predictor de vector de movimiento es más pequeño que el número máximo.
De acuerdo con esto, se puede obtener un segundo candidato de predictor de vector de movimiento si se determina que el número de primeros candidatos de predictor de vector de movimiento es más pequeño que el número máximo. Por lo tanto, el número de candidatos de predictor de vector de movimiento se puede aumentar en un intervalo que no supera el número máximo y, por lo tanto, es posible descodificar apropiadamente un flujo de bits para el cual se ha mejorado la eficiencia de codificación.
Por ejemplo, cuando se obtiene el índice, el índice se puede obtener mediante la descodificación, usando el número máximo determinado, del índice codificado y añadido al flujo de bits.
De acuerdo con esto, un índice para identificar un candidato de predictor de vector de movimiento se puede descodificar usando el número máximo determinado. En concreto, un índice se puede descodificar sin depender del número de candidatos de predictor de vector de movimiento realmente obtenidos. Por lo tanto, un índice se puede descodificar incluso si se pierde la información necesaria para obtener un candidato de predictor de vector de movimiento (por ejemplo, información de un bloque ubicado conjuntamente y similares), lo que posibilita que se mejore la resistencia a errores. Además, es posible descodificar un índice sin aguardar la obtención de un candidato de predictor de vector de movimiento, y también obtener un candidato de predictor de vector de movimiento y descodificar un índice en paralelo.
Por ejemplo, cuando se determina el número máximo, el número máximo se puede determinar basándose en información que indica un número máximo y añadida al flujo de bits.
De acuerdo con esto, el número máximo se puede determinar basándose en información añadida a un flujo de bits. Por lo tanto, es posible descodificar una imagen codificada al cambiar el número máximo en una unidad adecuada.
Por ejemplo, cuando se obtienen los uno o más primeros candidatos de predictor de vector de movimiento, un vector de movimiento usado para descodificar un bloque se puede obtener como el primer candidato de predictor de vector de movimiento, siendo el bloque espacialmente adyacente al bloque actual, y no siendo (i) un bloque descodificado por intra predicción, (ii) un bloque ubicado fuera de un límite de un sector o una instantánea que incluye el bloque actual, o (iii) un bloque que no se ha descodificado aún.
De acuerdo con esto, el primer candidato de predictor de vector de movimiento se puede obtener basándose en un bloque adecuado para obtener un candidato de predictor de vector de movimiento.
Por ejemplo, cuando se obtienen los primeros candidatos de predictor de vector de movimiento, un candidato de predictor de vector de movimiento se puede obtener como el primer candidato de predictor de vector de movimiento, teniendo el candidato de predictor de vector de movimiento un vector de movimiento diferente de un vector de movimiento de cualquiera de los uno o más primeros candidatos de predictor de vector de movimiento que ya se han obtenido.
De acuerdo con esto, un candidato de predictor de vector de movimiento que tiene el mismo vector de movimiento que un vector de movimiento de cualquiera de los primeros candidatos de predictor de vector de movimiento que ya se han obtenido se puede excluir de los primeros candidatos de predictor de vector de movimiento. Como resultado, se puede aumentar el número de segundos candidatos de predictor de vector de movimiento, y se pueden aumentar los tipos de combinaciones de una dirección de predicción, un vector de movimiento, y un índice de instantánea de referencia, que son seleccionables como candidatos de predictor de vector de movimiento. Por lo tanto, es posible descodificar apropiadamente un flujo de bits para el cual se ha mejorado adicionalmente la eficiencia de codificación.
Por ejemplo, el procedimiento de descodificación de instantáneas en movimiento puede incluir adicionalmente conmutar entre un primer procesamiento de descodificación conforme a una primera norma y un segundo procesamiento de descodificación conforme a una segunda norma, de acuerdo con información de identificación que indica la primera norma o la segunda norma y añadida al flujo de bits, en el que, cuando se realiza la conmutación al primer procesamiento de descodificación, obtener los uno o más primeros candidatos de predictor de vector de movimiento, obtener los uno o más segundos candidatos de predictor de vector de movimiento, obtener el índice, y seleccionar el predictor de vector de movimiento se puede realizar como el primer procesamiento de descodificación.
De acuerdo con esto, es posible conmutar entre el primer procesamiento de descodificación conforme a la primera norma y el segundo procesamiento de descodificación conforme a la segunda norma.
Se debería hacer notar que estos aspectos generales y específicos pueden implementarse usando 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 de sistemas, procedimientos, circuitos integrados, programas informáticos, o medio de grabación.
Lo siguiente es una descripción específica de un aparato de codificación de instantáneas en movimiento y un aparato de descodificación de instantáneas en movimiento de acuerdo con un aspecto de la presente invención, con referencia a los dibujos.
Cada una de las realizaciones ilustrativas descritas a continuación muestra un ejemplo general o específico. Los valores numéricos, formas, materiales, elementos constituyentes, la disposición y conexión de los elementos constituyentes, etapas, el orden de procesamiento de las etapas, y similares, descritos en las siguientes realizaciones son meros ejemplos y, por lo tanto, no limitan el ámbito de las reivindicaciones adjuntas y sus equivalentes. Por lo tanto, entre los elementos constituyentes en las siguientes realizaciones, los elementos constituyentes no indicados en ninguna de las reivindicaciones independientes se describen como elementos constituyentes arbitrarios.
[Realización 1]
La figura 13 es un diagrama de bloques que muestra una configuración de un aparato de codificación de instantáneas en movimiento 100 de acuerdo con una realización 1.
Como se muestra en la figura 13, el aparato de codificación de instantáneas en movimiento 100 incluye una unidad de sustracción 101, una unidad de transformada ortogonal 102, una unidad de cuantificación 103, una unidad de cuantificación inversa 104, una unidad de transformada ortogonal inversa 105, una unidad de adición 106, una memoria de bloques 107, una memoria de tramas 108, una unidad de intra predicción 109, una unidad de inter predicción 110, una unidad de control de inter predicción 111, una unidad de determinación de tipo de instantánea 112, un conmutador 113, una unidad de cálculo de candidatos de predictor de vector de movimiento 114, una memoria de colPic 115 y una unidad de codificación de longitud variable 116.
La unidad de sustracción 101 genera datos de error de predicción al sustraer, para cada bloque, datos de imagen predichos a partir de datos de imagen de entrada incluidos en una secuencia de imágenes de entrada. La unidad de transformada ortogonal 102 transforma los datos de error de predicción generados de un dominio de imágenes a un dominio de la frecuencia. La unidad de cuantificación 103 realiza un procesamiento de cuantificación sobre los datos de error de predicción que se han transformado al dominio de la frecuencia.
La unidad de cuantificación inversa 104 realiza un procesamiento de cuantificación inversa sobre los datos de error de predicción sobre los cuales ha sido realizado un procesamiento de cuantificación por la unidad de cuantificación 103. La unidad de transformada ortogonal inversa 105 transforma los datos de error de predicción sobre los cuales se ha realizado un procesamiento de cuantificación inversa, del dominio de la frecuencia al dominio de imágenes.
La unidad de adición 106 genera datos de imagen reconstruidos al añadir, para cada bloque que se va a codificar, datos de imagen predichos y los datos de error de predicción sobre los cuales ha sido realizado un procesamiento de cuantificación inversa por la unidad de transformada ortogonal inversa 105. La memoria de bloques 107 almacena datos de imagen reconstruidos de una forma bloque a bloque. La memoria de tramas 108 almacena datos de imagen reconstruidos de una forma trama a trama.
La unidad de determinación de tipo de instantánea 112 determina como cuál de los tipos de instantánea, en concreto, instantánea I, instantánea B e instantánea P, se van a codificar unos datos de imagen de entrada. Entonces, la unidad de determinación de tipo de instantánea 112 genera información de tipo de instantánea. La unidad de intra predicción 109 genera datos de imagen intra predichos de un bloque actual que se va a codificar mediante la realización de una intra predicción usando los datos de imagen reconstruidos en unidades de bloque almacenadas en la memoria de bloques 107. La unidad de inter predicción 110 genera datos de imagen inter predichos de un bloque actual que se va a codificar mediante la realización de una inter predicción usando los datos de imagen reconstruidos en unidades de trama almacenadas en la memoria de tramas 108, y un vector de movimiento obtenido por detección de movimiento y similares.
El conmutador 113 emite los datos de imagen intra predichos generados por la unidad de intra predicción 109 a la unidad de sustracción 101 y la unidad de adición 106 como datos de imagen predichos del bloque actual, se realiza una codificación de intra predicción sobre el bloque actual. Por otro lado, el conmutador 113 emite los datos de imagen inter predichos generados por la unidad de inter predicción 110 a la unidad de sustracción 101 y la unidad de adición 106 como datos de imagen predichos del bloque actual si se realiza la codificación de inter predicción sobre el bloque actual.
La unidad de cálculo de candidatos de predictor de vector de movimiento 114 obtiene candidatos de predictor de vector de movimiento en el modo de designación de predictor de vector de movimiento, usando vectores de movimiento de bloques adyacentes al bloque actual y similares e información de colPic tal como información de un vector de movimiento de un bloque ubicado conjuntamente almacenado en la memoria de colPic 115. Entonces, la unidad de cálculo de candidatos de predictor de vector de movimiento 114 calcula el número de candidatos de predictor de vector de movimiento usando el procedimiento descrito posteriormente. Además, la unidad de cálculo de candidatos de predictor de vector de movimiento 114 asigna los valores del índice de predictor de vector de movimiento a los candidatos de predictor de vector de movimiento obtenidos. Entonces, la unidad de cálculo de candidatos de predictor de vector de movimiento 114 envía los candidatos de predictor de vector de movimiento y los índices de predictor de vector de movimiento a la unidad de control de inter predicción 111. Además, la unidad de cálculo de candidatos de predictor de vector de movimiento 114 transmite el número de candidatos de predictor de vector de movimiento calculados a la unidad de codificación de longitud variable 116.
La unidad de control de inter predicción 111 controla la unidad de inter predicción 110 con el fin de dar lugar a que la unidad de inter predicción 110 realice una codificación de inter predicción, usando la imagen inter predicha generada usando un vector de movimiento obtenido por detección de movimiento. Además, la unidad de control de inter predicción 111 selecciona, usando el procedimiento descrito posteriormente, un candidato de predictor de vector de movimiento de lo más adecuado para codificar un vector de movimiento usado para la codificación de inter predicción. Entonces, la unidad de control de inter predicción 111 envía un índice de predictor de vector de movimiento que se corresponde con el candidato de predictor de vector de movimiento seleccionado, e información de error de predicción (diferencia de vector de movimiento) a la unidad de codificación de longitud variable 116. Además, la unidad de control de inter predicción 111 transfiere información de colPic que incluye información de un vector de movimiento del bloque actual, y similares, a la memoria de colPic 115.
La unidad de codificación de longitud variable 116 realiza un procesamiento de codificación de longitud variable sobre datos de error de predicción sobre los cuales se ha realizado un procesamiento de cuantificación, un indicador de dirección de predicción, información de tipo de instantánea y una diferencia de vector de movimiento, generando de ese modo un flujo de bits. Además, la unidad de codificación de longitud variable 116 establece el tamaño de lista de candidatos de predictor de vector de movimiento al número de candidatos de predictor de vector de movimiento. Entonces, la unidad de codificación de longitud variable 116 codifica por longitud variable el índice de predictor de vector de movimiento usado para codificar un vector de movimiento mediante la asignación al mismo de una cadena de bits de acuerdo con el tamaño de lista de candidatos de predictor de vector de movimiento.
La figura 14 es un diagrama de flujo que muestra una operación de procesamiento del aparato de codificación de instantáneas en movimiento 100 de acuerdo con la realización 1.
En la etapa S101, la unidad de control de inter predicción 111 determina una dirección de predicción, un índice de instantánea de referencia, y un vector de movimiento de un bloque actual que se va a codificar por detección de movimiento. En el presente caso, en la detección de movimiento, se calcula un valor de diferencia que indica una diferencia entre un bloque actual que se va a codificar en una instantánea que se va a codificar y un bloque en una instantánea de referencia, y un bloque en la instantánea de referencia con el que el valor de diferencia es el más pequeño se determina como un bloque de referencia. Entonces, se obtiene un vector de movimiento basándose en la posición de un bloque actual que se va a codificar y la posición de una posición de bloque de referencia usando el procedimiento para obtener un vector de movimiento, por ejemplo. Además, la unidad de control de inter predicción 111 realiza una detección de movimiento sobre cada una de las instantáneas de referencia en las direcciones de predicción 0 y 1, y determina si seleccionar la dirección de predicción 0, la dirección de predicción 1 o una predicción bidireccional usando, por ejemplo, la siguiente expresión para un modelo de optimización de R-D, o similares.
Coste = D A x R (Expresión 3)
En la expresión 3, D denota una distorsión de codificación, y por ejemplo, se usa para ello una suma de diferencias absolutas, cada una de las cuales es una diferencia absoluta entre un valor de píxel obtenido mediante la codificación y descodificación de un bloque actual usando una imagen predicha generada usando un determinado vector de movimiento y un valor de píxel original del bloque actual. R denota una cantidad de código generada, y se usa para ello una cantidad de código necesaria para codificar un vector de movimiento usado para generar una imagen predicha. Además, A denota un multiplicador no determinado de Lagrange.
En la etapa S102, la unidad de cálculo de candidatos de predictor de vector de movimiento 114 obtiene candidatos de predictor de vector de movimiento a partir de bloques adyacentes al bloque actual y un bloque ubicado conjuntamente del mismo. Además, la unidad de cálculo de candidatos de predictor de vector de movimiento 114 calcula el tamaño de lista de candidatos de predictor de vector de movimiento de acuerdo con el procedimiento descrito posteriormente.
Por ejemplo, en el caso que se muestra en la figura 3, la unidad de cálculo de candidatos de predictor de vector de movimiento 114 selecciona vectores de movimiento que los bloques adyacentes A, B, C y D tienen, como candidatos de predictor de vector de movimiento del bloque actual. Además, la unidad de cálculo de candidatos de predictor de vector de movimiento 114 calcula un vector de movimiento, por ejemplo, que se calcula usando un modo de predicción temporal a partir de un vector de movimiento del bloque ubicado conjuntamente, como un candidato de predictor de vector de movimiento.
La unidad de cálculo de candidatos de predictor de vector de movimiento 114 asigna índices de predictor de vector de movimiento a los candidatos de predictor de vector de movimiento en las direcciones de predicción 0 y 1, como se muestra en (a) en la figura 15 y (a) en la figura 16. Entonces, la unidad de cálculo de candidatos de predictor de vector de movimiento 114 calcula unas listas de candidatos de predictor de vector de movimiento como se muestra en (b) en la figura 15 y (b) en la figura 16, y los tamaños de las listas de candidatos de predictor de vector de movimiento al borrar un candidato de predictor no disponible y un candidato redundante y añadir un candidato nulo, usando el procedimiento descrito posteriormente.
Cuanto más pequeño es el valor de un índice de predictor de vector de movimiento, más corto es el código que se asigna al índice de predictor de vector de movimiento. En concreto, si el valor de un índice de predictor de vector de movimiento es pequeño, la cantidad de información necesaria para el índice de predictor de vector de movimiento es pequeña. Por otro lado, si el valor de un índice de predictor de vector de movimiento es grande, la cantidad de información necesaria para el índice de predictor de vector de movimiento es grande. Por lo tanto, la eficiencia de codificación se aumenta mediante la asignación de un índice de predictor de vector de movimiento que tiene un valor pequeño a un candidato de predictor de vector de movimiento que tiene una alta posibilidad de volverse un predictor de vector de movimiento con una precisión elevada.
A la vista de esto, la unidad de cálculo de candidatos de predictor de vector de movimiento 114 puede medir, para cada candidato de predictor de vector de movimiento, el número de veces en las que el candidato de predictor de vector de movimiento se ha seleccionado como un predictor de vector de movimiento, y asignar un índice de predictor de vector de movimiento que tiene un valor pequeño a un candidato de predictor de vector de movimiento cuyo número de veces en las que se ha seleccionado el candidato es grande, por ejemplo. En concreto, es posible considerar identificar un predictor de vector de movimiento seleccionado en un bloque adyacente, y en la codificación de un bloque actual, asignar un índice de predictor de vector de movimiento que tiene un valor pequeño al candidato de predictor de vector de movimiento identificado.
Se debería hacer notar que si un bloque adyacente no tiene información alguna de un vector de movimiento y similares (si el bloque adyacente se codifica por intra predicción, si el bloque adyacente está ubicado, por ejemplo, fuera de un límite de una instantánea o un sector, si el bloque adyacente no se ha codificado aún, o similares), el bloque adyacente no se puede utilizar como un candidato de predictor de vector de movimiento.
En la presente realización, un candidato que no se puede utilizar como un candidato de predictor de vector de movimiento se denomina candidato de predictor no disponible. Un candidato que se puede utilizar como un candidato de predictor de vector de movimiento se denomina candidato de predictor disponible. Además, de entre una pluralidad de candidatos de predictor de vector de movimiento, un candidato cuyo valor es igual que uno cualquiera de los otros predictores de vector de movimiento se denomina candidato redundante.
En el caso de la figura 3, el bloque adyacente C es un bloque codificado por intra predicción y, por lo tanto, se supone que es un candidato de predictor no disponible. Además, el predictor de vector de movimiento sMvL0_D en la dirección de predicción 0 generado a partir del bloque adyacente D tiene el mismo valor que el valor del predictor de vector de movimiento MvL0_A en la dirección de predicción 0 generado a partir del bloque adyacente A y, por lo tanto, se supone que es un candidato redundante.
En la etapa S103, la unidad de control de inter predicción 111 determina un valor de un índice de predictor de vector de movimiento que se va a usar para codificar un vector de movimiento en la dirección de predicción X mediante el uso del procedimiento descrito posteriormente.
En la etapa S104, la unidad de codificación de longitud variable 116 codifica con longitud variable unos índices de predictor de vector de movimiento de candidatos de predictor de vector de movimiento que se van a usar para codificar vectores de movimiento en la dirección de predicción X mediante la asignación a los mismos de cadenas de bits de acuerdo con el tamaño de lista de candidatos de predictor de vector de movimiento como se muestra en la figura 6.
En la presente realización, como se muestra en (a) en la figura 15 y (a) en la figura 16, "0" se asigna como un valor de un índice de predictor de vector de movimiento que se corresponde con el bloque adyacente A. "1" se asigna como un valor de un índice de predictor de vector de movimiento que se corresponde con el bloque adyacente B. "2" se asigna como un valor de un índice de predictor de vector de movimiento que se corresponde con un bloque ubicado conjuntamente. "3" se asigna como un valor de un índice de predictor de vector de movimiento que se corresponde con el bloque adyacente C. "4" se asigna como un valor de un índice de predictor de vector de movimiento que se corresponde con el bloque adyacente D.
Se debería hacer notar que la forma de asignar índices de predictor de vector de movimiento no se limita necesariamente a este ejemplo. Por ejemplo, si se añade un candidato nulo usando el procedimiento descrito posteriormente, la unidad de codificación de longitud variable 116 puede asignar un valor pequeño a un candidato de predictor de vector de movimiento que no es el vector añadido, y un valor grande al candidato nulo. En concreto, la unidad de codificación de longitud variable 116 puede asignar preferentemente un índice de bloques de predictor de vector de movimiento que tiene un valor pequeño a un candidato de predictor de vector de movimiento que no es el vector añadido.
Además, los candidatos de predictor de vector de movimiento no se limitan necesariamente a estar en las posiciones de los bloques adyacentes A, B, C y D. Por ejemplo, un bloque adyacente ubicado sobre el bloque adyacente inferior - izquierdo D, por ejemplo, se puede usar para obtener un candidato de predictor de vector de movimiento. Además, no necesariamente es preciso que se usen todos los bloques adyacentes para obtener candidatos de predictor de vector de movimiento. Por ejemplo, se pueden usar únicamente los bloques adyacentes A y B para obtener candidatos de predictor de vector de movimiento. Como alternativa, los bloques adyacentes se pueden explorar secuencialmente mediante el uso, por ejemplo, del bloque adyacente A si el bloque adyacente D es un candidato de predictor no disponible.
Además, en la presente realización, aunque la unidad de codificación de longitud variable 116 añade un índice de predictor de vector de movimiento a un flujo de bits en la etapa S104 en la figura 14, un índice de predictor de vector de movimiento no necesita añadirse necesariamente a un flujo de bits. Por ejemplo, si el tamaño de lista de candidatos de predictor de vector de movimiento es 1, la unidad de codificación de longitud variable 116-puede no añadir un índice de predictor de vector de movimiento a un flujo de bits. Por consiguiente, la cantidad de información se puede reducir en la del índice de predictor de vector de movimiento.
La figura 17 es un diagrama de flujo que muestra un procesamiento detallado de la etapa S102 en la figura 14. En concreto, la figura 17 muestra un procedimiento para calcular candidatos de predictor de vector de movimiento y el tamaño de lista de candidatos de predictor de vector de movimiento. Lo siguiente es una descripción de la figura 17.
En la etapa S111, la unidad de cálculo de candidatos de predictor de vector de movimiento 114 determina, usando el procedimiento descrito posteriormente, si un candidato de bloque de predicción [N] es un candidato de predictor disponible.
En el presente caso, N es un valor de índice para denotar cada candidato de bloque de predicción. En la presente realización, N es uno de los valores de 0 a 4. En concreto, el bloque adyacente A en la figura 3 se asigna a un candidato de bloque de predicción [0]. El bloque adyacente B en la figura 3 se asigna a un candidato de bloque de predicción [1]. Un bloque ubicado conjuntamente se asigna a un candidato de bloque de predicción [2]. El bloque adyacente C en la figura 3 se asigna a un candidato de bloque de predicción [3]. El bloque adyacente D en la figura 3 se asigna a un candidato de bloque de predicción [4].
En la etapa S112, la unidad de cálculo de candidatos de predictor de vector de movimiento 114 obtiene un candidato de predictor de vector de movimiento en la dirección de predicción X a partir del candidato de bloque de predicción [N] usando las expresiones 1 y 2 anteriormente, y añade el candidato obtenido a una correspondiente de las listas de candidatos de predictor de vector de movimiento.
En la etapa S113, la unidad de cálculo de candidatos de predictor de vector de movimiento 114 busca y borra un candidato de predictor no disponible y un candidato redundante de las listas de candidatos de predictor de vector de movimiento, como se muestra en las figuras 15 y 16.
En la etapa S114, la unidad de cálculo de candidatos de predictor de vector de movimiento 114 añade un candidato nulo a una correspondiente de las listas de candidatos de predictor de vector de movimiento mediante el uso del procedimiento descrito posteriormente. En el presente caso, cuando se añade un candidato nulo, la unidad de cálculo de candidatos de predictor de vector de movimiento 114 puede reasignar valores de índices de predictor de vector de movimiento con el fin de asignar preferentemente un índice de predictor de vector de movimiento pequeño a un candidato de predictor de vector de movimiento que no es el vector añadido. En concreto, la unidad de cálculo de candidatos de predictor de vector de movimiento 114 puede reasignar valores de índices de predictor de vector de movimiento con el fin de asignar un índice de predictor de vector de movimiento que tiene un valor grande al candidato nulo. Por consiguiente, se puede reducir la cantidad de codificación de índices de predictor de vector de movimiento.
En la etapa S115, la unidad de cálculo de candidatos de predictor de vector de movimiento 114 establece el tamaño de lista de candidatos de predictor de vector de movimiento al número de candidatos de predictor de vector de movimiento después de que el candidato nulo se haya añadido en la etapa S114. En los ejemplos de las figuras 15 y 16, mediante el uso del procedimiento descrito posteriormente, se calcula "4" como el número de candidatos de predictor de vector de movimiento en la dirección de predicción 0, y el tamaño de lista de candidatos de predictor de vector de movimiento para la dirección de predicción 0 se establece a "4". Además, se calcula "3" como el número de candidatos de predictor de vector de movimiento en la dirección de predicción 1, y el tamaño de lista de candidatos de predictor de vector de movimiento para la dirección de predicción 1 se establece a "3".
De esta forma, si el número de candidatos de predictor de vector de movimiento no ha alcanzado el número máximo de candidatos de predictor de vector de movimiento, la unidad de cálculo de candidatos de predictor de vector de movimiento 114 puede mejorar la eficiencia de codificación al añadir el candidato nulo.
La figura 18 es un diagrama de flujo que muestra un procesamiento detallado de la etapa S111 en la figura 17. En concreto, la figura 18 muestra un procedimiento para determinar si un candidato de bloque predicho [N] es un candidato de predictor disponible. Lo siguiente es una descripción de la figura 18.
En la etapa S121, la unidad de cálculo de candidatos de predictor de vector de movimiento 114 determina si un candidato de bloque de predicción [N] (1) se intra predice, (2) está ubicado fuera de un límite de un sector o una instantánea que incluye un bloque actual que se va a codificar, o (3) no se ha codificado aún.
Si el resultado de determinación en la etapa S121 es verdadero en el presente caso (Sí en S121), la unidad de cálculo de candidatos de predictor de vector de movimiento 114 establece el candidato de bloque de predicción [N] como un candidato de predictor no disponible en la etapa S122. Por otro lado, si el resultado de determinación en la etapa S121 es falso (No en S121), la unidad de cálculo de candidatos de predictor de vector de movimiento 114 establece el candidato de bloque de predicción [N] como un candidato de predictor disponible en la etapa S123.
La figura 19 es un diagrama de flujo que muestra un procesamiento detallado de la etapa S114 en la figura 17. En concreto, la figura 19 muestra un procedimiento para añadir un candidato nulo. Lo siguiente es una descripción de la figura 19.
En la etapa S131, la unidad de cálculo de candidatos de predictor de vector de movimiento 114 determina si el número de candidatos de predictor de vector de movimiento es más pequeño que el número máximo de candidatos de predictor de vector de movimiento. En concreto, la unidad de cálculo de candidatos de predictor de vector de movimiento 114 determina si el número de candidatos de predictor de vector de movimiento no ha alcanzado el número máximo de candidatos de predictor de vector de movimiento.
En el presente caso, si el resultado de determinación en la etapa S131 es verdadero (Sí en S131), la unidad de cálculo de candidatos de predictor de vector de movimiento 114 determina en la etapa S132 si el candidato nulo que tiene un vector de movimiento cuyo valor es "0" no es un candidato redundante. En el presente caso, si el resultado de determinación en la etapa S132 es verdadero (No en S132), la unidad de cálculo de candidatos de predictor de vector de movimiento 114 asigna un valor de un índice de predictor de vector de movimiento al candidato nulo, y añade el candidato nulo a una correspondiente de las listas de candidatos de predictor de vector de movimiento en la etapa S133. Además, en la etapa S134, la unidad de cálculo de candidatos de predictor de vector de movimiento 114 añade 1 al número de candidatos de predictor de vector de movimiento.
Por otro lado, si el resultado de determinación en la etapa S131 o la etapa S132 es falso (No en S131 o Sí en S132), termina el procesamiento de adición de candidato nulo. En concreto, si el número de candidatos de predictor de vector de movimiento ha alcanzado el número máximo de candidatos de predictor de vector de movimiento, o si el candidato nulo es un candidato redundante, termina el procesamiento de adición de candidato nulo.
La figura 20 es un diagrama de flujo que muestra un procesamiento detallado de la etapa S103 en la figura 14. En concreto, la figura 20 muestra un procesamiento con respecto a la selección de un candidato de predictor de vector de movimiento. Lo siguiente es una descripción de la figura 20.
En la etapa S141, como inicialización, la unidad de control de inter predicción 111 establece el índice de candidatos de predictor de vector de movimiento ind_pvm a 0, y establece la diferencia de vector de movimiento más pequeña al valor máximo.
En la etapa S142, la unidad de control de inter predicción 111 determina si el valor del índice de candidatos de predictor de vector de movimiento ind_pvm es más pequeño que el número de candidatos de predictor de vector de movimiento. En concreto, la unidad de control de inter predicción 111 determina si se han calculado las diferencias de vector de movimiento de todos los candidatos de predictor de vector de movimiento.
En el presente caso, si sigue habiendo un candidato de predictor de vector de movimiento para el cual no se ha realizado el cálculo (Sí en S142), la unidad de control de inter predicción 111 calcula una diferencia de vector de movimiento al sustraer un candidato de predictor de vector de movimiento de un vector obtenido como resultado de la detección de movimiento (vector resultante de detección de movimiento) en la etapa S143.
En la etapa S144, la unidad de control de inter predicción 111 determina si la diferencia de vector de movimiento obtenida en la etapa S143 tiene un valor más pequeño que la diferencia de vector de movimiento más pequeña.
En el presente caso, si el resultado de determinación en la etapa S144 es verdadero (Sí en S144), la unidad de control de inter predicción 111 actualiza la diferencia de vector de movimiento más pequeña y el valor de un índice de predictor de vector de movimiento en la etapa S145. Por otro lado, si el resultado de determinación en la etapa S144 es falso (No en S144), la unidad de control de inter predicción 111 no actualiza la diferencia de vector de movimiento más pequeña y el valor de un índice de predictor de vector de movimiento.
En la etapa S146, la unidad de control de inter predicción 111 actualiza un índice de candidatos de predictor de vector de movimiento al incrementar en 1 y volver a la etapa S142, la unidad de control de inter predicción 111 determina si está presente un candidato de predictor de vector de movimiento siguiente.
Por otro lado, si se determina en la etapa S2 que se ha calculado una diferencia de vector de movimiento para todos los candidatos de predictor de vector de movimiento (No en S142), la unidad de control de inter predicción 111 fija, en la etapa S147, la diferencia de vector de movimiento más pequeña y el índice de predictor de vector de movimiento que se establecen por último.
De esta forma, de acuerdo con el aparato de codificación de instantáneas en movimiento 100 de acuerdo con la presente realización, es posible mejorar la eficiencia de codificación al añadir un predictor de vector de movimiento de área estática a una correspondiente de las listas de candidatos de predictor de vector de movimiento. Más en concreto, si el número de candidatos de predictor de vector de movimiento no ha alcanzado el número máximo de candidatos de predictor de vector de movimiento, el aparato de codificación de instantáneas en movimiento 100 puede mejorar la eficiencia de codificación al añadir un candidato nulo que tiene un vector de movimiento cuyo valor es "0" como un candidato de predictor de vector de movimiento.
Se debería hacer notar que aunque la presente realización muestra un ejemplo en el que el aparato de codificación de instantáneas en movimiento 100 añade un candidato nulo que tiene un vector de movimiento cuyo valor es "0" como un vector de movimiento de área estática a los candidatos de predictor de vector de movimiento, la presente invención no se limita necesariamente a esto.
Por ejemplo, el aparato de codificación de instantáneas en movimiento 100 puede añadir, a los candidatos de predictor de vector de movimiento, un vector de movimiento que es ligeramente más grande o más pequeño que un vector de movimiento (0, 0) cuyo valor es "0", tal como un vector de movimiento (0, 1), debido a una ligera sacudida de la cámara durante la filmación en vídeo.
Además, el aparato de codificación de instantáneas en movimiento 100 puede añadir un parámetro de compensación (CompensaciónX, CompensaciónY) a un encabezamiento de una secuencia, una instantánea, o un sector, por ejemplo, y añadir un vector de movimiento (CompensaciónX, CompensaciónY) a los candidatos de predictor de vector de movimiento.
Además, cuando se crean las listas de candidatos de predictor de vector de movimiento, por ejemplo, el aparato de codificación de instantáneas en movimiento 100 puede establecer un vector de movimiento (0, 0) cuyo valor es "0" como un valor inicial de todos los candidatos de predictor de vector de movimiento en las listas de candidatos de predictor de vector de movimiento, como se muestra en (a) en la figura 21. En este caso, cuando el aparato de codificación de instantáneas en movimiento 100 calcula un candidato de predictor de vector de movimiento y añade el candidato a una correspondiente de las listas de candidatos de predictor de vector de movimiento, se sobrescribirá el vector de movimiento (0, 0) que es un valor inicial. Entonces, el aparato de codificación de instantáneas en movimiento 100 determina si el candidato de predictor de vector de movimiento calculado es un candidato de predictor no disponible o un candidato redundante, antes de que el candidato de predictor de vector de movimiento calculado sea añadido a la lista de candidatos de predictor de vector de movimiento correspondiente. Por consiguiente, si hay un candidato de predictor no disponible o un candidato redundante, el vector de movimiento (0, 0) que es un valor inicial permanece en la lista de candidatos de predictor de vector de movimiento, como se muestra en la figura 21 (b), por ejemplo. También es posible añadir un candidato nulo como un candidato de predictor de vector de movimiento mediante el uso de un procedimiento de este tipo.
Aunque la presente realización describe un ejemplo en el que se usa el modo de designación de predictor de vector de movimiento en el que se generan candidatos de predictor de vector de movimiento a partir de bloques adyacentes a un bloque actual que se va a codificar, y se codifica un vector de movimiento del bloque actual, la presente realización no se limita necesariamente a esto. Por ejemplo, se puede usar un modo directo o un modo de salto. En el modo directo o el modo de salto, una diferencia de vector de movimiento puede no añadirse a un flujo de bits al seleccionar un predictor de vector de movimiento de entre los candidatos de predictor de vector de movimiento creados como se muestra en (b) en la figura 15 y (b) en la figura 16, y generar directamente una imagen predicha usando el predictor de vector de movimiento seleccionado como un vector de movimiento.
[Realización 2]
La presente realización es una modificación del aparato de codificación de instantáneas en movimiento de acuerdo con la realización 1 anteriormente. Lo siguiente es una descripción específica de un aparato de codificación de instantáneas en movimiento de acuerdo con la realización 2.
La figura 22 es un diagrama de bloques que muestra una configuración de un aparato de codificación de instantáneas en movimiento 200 de acuerdo con la realización 2. El aparato de codificación de instantáneas en movimiento 200 genera un flujo de bits mediante la codificación de una imagen de una forma bloque a bloque. El aparato de codificación de instantáneas en movimiento 200 incluye una unidad de obtención de candidatos de predictor de vector de movimiento 210, una unidad de control de predicción 220 y una unidad de codificación 230.
La unidad de obtención de candidatos de predictor de vector de movimiento 210 se corresponde con la unidad de cálculo de candidatos de predictor de vector de movimiento 114 en la realización 1 anteriormente. La unidad de obtención de candidatos de predictor de vector de movimiento 210 obtiene candidatos de predictor de vector de movimiento. Entonces, la unidad de obtención de candidatos de predictor de vector de movimiento 210 genera unas listas de candidatos de predictor de vector de movimiento en las que, por ejemplo, cada uno de los candidatos de predictor de vector de movimiento obtenidos está asociado con un índice (denominado posteriormente en el presente documento "índice de predictor de vector de movimiento") para identificar el candidato de predictor de vector de movimiento.
Un candidato de predictor de vector de movimiento es un candidato para un vector de movimiento que se va a usar para codificar un bloque actual que se va a codificar.
Como se muestra en la figura 22, la unidad de obtención de candidatos de predictor de vector de movimiento 210 incluye una primera unidad de obtención 211 y una segunda unidad de obtención 212.
Más en concreto, la primera unidad de obtención 211 obtiene uno o más primeros candidatos de predictor de vector de movimiento, cada uno basándose en un vector de movimiento usado para codificar un bloque espacial o temporalmente adyacente a un bloque actual que se va a codificar, por ejemplo. Entonces, por ejemplo, la primera unidad de obtención 211 registra, en las listas de candidatos de predictor de vector de movimiento, los uno o más primeros candidatos de predictor de vector de movimiento obtenidos de esta forma, cada uno en asociación con un índice de predictor de vector de movimiento.
Un bloque espacialmente adyacente es un bloque en una instantánea que incluye un bloque actual que se va a codificar, y es un bloque adyacente al bloque actual. En concreto, algunos ejemplos de bloques espacialmente adyacentes son bloques adyacentes A a D mostrados en la figura 3.
Un bloque temporalmente adyacente es un bloque incluido en una instantánea diferente de una instantánea que incluye un bloque actual que se va a codificar, y es un bloque que se corresponde con el bloque actual. En concreto, un ejemplo de un bloque temporalmente adyacente es un bloque ubicado conjuntamente.
Se debería hacer notar que un bloque temporalmente adyacente no necesita ser necesariamente un bloque en la misma posición que la de un bloque actual que se va a codificar (bloque ubicado conjuntamente). Por ejemplo, un bloque temporalmente adyacente puede ser un bloque adyacente a un bloque ubicado conjuntamente.
Se debería hacer notar que, por ejemplo, la primera unidad de obtención 211 puede obtener, como el primer candidato de predictor de vector de movimiento, un vector de movimiento usado para codificar un bloque que es un bloque espacialmente adyacente a un bloque actual que se va a codificar, y no es un bloque que es un candidato de predictor no disponible. Un bloque que es un candidato de predictor no disponible es un bloque codificado por intra predicción, un bloque ubicado fuera de un límite de un sector o una instantánea que incluye un bloque actual que se va a codificar, o un bloque que no se ha codificado aún. Por consiguiente, la primera unidad de obtención 211 puede obtener el primer candidato de predictor de vector de movimiento a partir de un bloque adecuado para obtener un candidato de predictor de vector de movimiento.
La segunda unidad de obtención 212 obtiene uno o más segundos candidatos de predictor de vector de movimiento, teniendo cada uno un vector predeterminado como un vector de movimiento. El vector predeterminado puede ser un vector nulo como en la realización 1, por ejemplo. Por consiguiente, la segunda unidad de obtención 212 puede obtener un candidato de predictor de vector de movimiento que tiene un vector de movimiento de área estática. Por lo tanto, el aparato de codificación de instantáneas en movimiento 200 puede mejorar la eficiencia de codificación si un bloque actual que se va a codificar es un área estática. Se debería hacer notar que el vector predeterminado no necesita ser necesariamente un vector nulo.
Además, la segunda unidad de obtención 212 registra, en las listas de candidatos de predictor de vector de movimiento, los uno o más segundos candidatos de predictor de vector de movimiento obtenidos de esta forma, cada uno en asociación con un índice de predictor de vector de movimiento, por ejemplo. En este momento, la segunda unidad de obtención 212 puede registrar cada segundo candidato de predictor de vector de movimiento en una correspondiente de las listas de candidatos de predictor de vector de movimiento, de tal modo que un índice de predictor de vector de movimiento que tiene un valor más pequeño que el de los segundos candidatos de predictor de vector de movimiento se asigna a cada primer candidato de predictor de vector de movimiento, como en la realización 1. Por consiguiente, si hay una alta posibilidad de que el primer candidato de predictor de vector de movimiento sea seleccionado como un candidato de predictor de vector de movimiento que se va a usar para codificar en lugar de los segundos candidatos de predictor de vector de movimiento, el aparato de codificación de instantáneas en movimiento 200 puede reducir la cantidad de código, y mejorar la eficiencia de codificación.
La unidad de control de predicción 220 selecciona un candidato de predictor de vector de movimiento que se va a usar para codificar un bloque actual que se va a codificar, de entre uno o más primeros candidatos de predictor de vector de movimiento y los uno o más segundos candidatos de predictor de vector de movimiento que se han obtenido. En concreto, la unidad de control de predicción 220 selecciona, de entre las listas de candidatos de predictor de vector de movimiento, un candidato de predictor de vector de movimiento que se va a usar para codificar el bloque actual.
La unidad de codificación 230 añade un índice (índice de predictor de vector de movimiento) para identificar el candidato de predictor de vector de movimiento seleccionado a un flujo de bits. Por ejemplo, la unidad de codificación 230 codifica un índice de predictor de vector de movimiento, usando la suma del número de primeros candidatos de predictor de vector de movimiento obtenidos y el número de segundos candidatos de predictor de vector de movimiento derivados (el número de candidatos de predictor de vector de movimiento), y añade el índice de predictor de vector de movimiento codificado a un flujo de bits.
A continuación se da una descripción de diversas operaciones del aparato de codificación de instantáneas en movimiento 200 constituido como se ha descrito anteriormente.
La figura 23 es un diagrama de flujo que muestra una operación de procesamiento del aparato de codificación de instantáneas en movimiento 200 de acuerdo con la realización 2.
En primer lugar, la primera unidad de obtención 211 obtiene uno o más primeros candidatos de predictor de vector de movimiento (S201). A continuación, la segunda unidad de obtención 212 obtiene uno o más segundos candidatos de predictor de vector de movimiento (S202).
Entonces, la unidad de control de predicción 220 selecciona un predictor de vector de movimiento que se va a usar para codificar un bloque actual que se va a codificar de entre los uno o más primeros candidatos de predictor de vector de movimiento y los uno o más segundos candidatos de predictor de vector de movimiento (S203). Por ejemplo, la unidad de control de predicción 220 selecciona un predictor de vector de movimiento con el que una diferencia de vector de movimiento es la más pequeña de entre las listas de candidatos de predictor de vector de movimiento, como en la realización 1.
Por último, la unidad de codificación 230 añade un índice para identificar el candidato de predictor de vector de movimiento seleccionado a un flujo de bits (S204).
Como se ha descrito anteriormente, de acuerdo con el aparato de codificación de instantáneas en movimiento 200 de acuerdo con la presente realización, se puede obtener el segundo candidato de predictor de vector de movimiento que tiene un vector predeterminado como un vector de movimiento. Por lo tanto, el aparato de codificación de instantáneas en movimiento 200 puede obtener el segundo candidato de predictor de vector de movimiento que tiene un vector de movimiento de área estática o similares, por ejemplo. En concreto, el aparato de codificación de instantáneas en movimiento 200 puede codificar de forma eficiente un bloque actual que se va a codificar que tiene un movimiento predeterminado y, por lo tanto, puede mejorar la eficiencia de codificación.
Se debería hacer notar que, cuando se crean las listas de candidatos de predictor de vector de movimiento, el aparato de codificación de instantáneas en movimiento 200 puede establecer el segundo candidato de predictor de vector de movimiento como un valor inicial de todos los candidatos de predictor de vector de movimiento en las listas de candidatos de predictor de vector de movimiento, como en la realización 1 anteriormente. En este caso, la unidad de obtención de candidatos de predictor de vector de movimiento 210 obtiene el segundo candidato de predictor de vector de movimiento antes del primer candidato de predictor de vector de movimiento. También es posible establecer el segundo candidato de predictor de vector de movimiento como un candidato de predictor de vector de movimiento mediante el uso de un procedimiento de este tipo.
[Realización 3]
La figura 24 es un diagrama de bloques que muestra una configuración de un aparato de descodificación de instantáneas en movimiento 300 de acuerdo con la realización 3.
Como se muestra en la figura 24, el aparato de descodificación de instantáneas en movimiento 300 incluye una unidad de descodificación de longitud variable 301, una unidad de cuantificación inversa 302, una unidad de transformada ortogonal inversa 303, una unidad de adición 304, una memoria de bloques 305, una memoria de tramas 306, una unidad de intra predicción 307, una unidad de inter predicción 308, una unidad de control de inter predicción 309, un conmutador 310, una unidad de cálculo de candidatos de predictor de vector de movimiento 311 y una memoria de colPic 312.
La unidad de descodificación de longitud variable 301 realiza un procesamiento de descodificación de longitud variable sobre un flujo de bits de entrada, y genera información de tipo de instantánea, un indicador de dirección de predicción, un coeficiente de cuantificación y una diferencia de vector de movimiento. Además, la unidad de descodificación de longitud variable 301 realiza un procesamiento de descodificación de longitud variable sobre un índice de predictor de vector de movimiento, usando el número de candidatos de predictor de vector de movimiento obtenidos a partir de la unidad de cálculo de candidatos de predictor de vector de movimiento 311.
La unidad de cuantificación inversa 302 realiza un procesamiento de cuantificación inversa sobre el coeficiente de cuantificación obtenido mediante un procesamiento de descodificación de longitud variable. La unidad de transformada ortogonal inversa 303 transforma un coeficiente de transformada ortogonal obtenido por un procesamiento de cuantificación inversa de un dominio de la frecuencia a un dominio de imágenes, para generar datos de error de predicción. La memoria de bloques 305 almacena datos de imagen generados al añadir datos de error de predicción y datos de imagen predichos, de una forma bloque a bloque. La memoria de tramas 306 almacena datos de imagen de una forma trama a trama.
La unidad de intra predicción 307 genera datos de imagen predichos de un bloque actual que se va a descodificar mediante la realización de una intra predicción usando datos de imagen en unidades de bloque almacenadas en la memoria de bloques 305. La unidad de inter predicción 308 genera datos de imagen predichos de un bloque actual que se va a descodificar mediante la realización de una inter predicción usando datos de imagen en unidades de trama almacenadas en la memoria de tramas 306.
Si se realiza una descodificación de intra predicción sobre el bloque actual, el conmutador 310 emite los datos de imagen intra predichos generados por la unidad de intra predicción 307 a la unidad de adición 304 como datos de imagen predichos del bloque actual. En contraposición, si se realiza una descodificación de inter predicción sobre el bloque actual, el conmutador 310 emite los datos de imagen inter predichos generados por la unidad de inter predicción 308 a la unidad de adición 304 como datos de imagen predichos del bloque actual.
La unidad de cálculo de candidatos de predictor de vector de movimiento 311 obtiene, usando vectores de movimiento de bloques adyacentes al bloque actual, por ejemplo, e información de colPic tal como información de un vector de movimiento del bloque ubicado conjuntamente almacenado en la memoria de colPic 312, por ejemplo, candidatos de predictor de vector de movimiento en el modo de designación de predictor de vector de movimiento y el número de candidatos de predictor de vector de movimiento mediante el uso del procedimiento descrito posteriormente. Además, la unidad de cálculo de candidatos de predictor de vector de movimiento 311 asigna un valor de un índice de predictor de vector de movimiento a cada candidato de predictor de vector de movimiento obtenido. Entonces, la unidad de cálculo de candidatos de predictor de vector de movimiento 311 envía los candidatos de predictor de vector de movimiento y los índices de predictor de vector de movimiento a la unidad de control de inter predicción 309. Además, la unidad de cálculo de candidatos de predictor de vector de movimiento 311 envía el número de candidatos de predictor de vector de movimiento calculados a la unidad de descodificación de longitud variable 301.
La unidad de control de inter predicción 309 selecciona, de entre los candidatos de predictor de vector de movimiento, un predictor de vector de movimiento que se va a usar para la inter predicción, basándose en el índice de predictor de vector de movimiento descodificado. Entonces, la unidad de control de inter predicción 309 calcula un vector de movimiento del bloque actual, basándose en el predictor de vector de movimiento y una diferencia de vector de movimiento. Entonces, la unidad de control de inter predicción 309 da lugar a que la unidad de inter predicción 308 genere una imagen inter predicha usando el vector de movimiento calculado. Además, la unidad de control de inter predicción 309 transfiere información de colPic que incluye información del vector de movimiento del bloque actual, y similares, a la memoria de colPic 312.
Por último, la unidad de adición 304 genera datos de imagen descodificados al añadir datos de imagen predichos y datos de error de predicción.
La figura 25 es un diagrama de flujo que muestra una operación de procesamiento del aparato de descodificación de instantáneas en movimiento de acuerdo con la realización 2.
En la etapa S301, la unidad de descodificación de longitud variable 301 descodifica un indicador de dirección de predicción y un índice de instantánea de referencia. Entonces, el valor de la dirección de predicción X se determina de acuerdo con el indicador de dirección de predicción descodificado, y se realiza el procesamiento de las siguientes etapas S302 a S305.
En la etapa S302, la unidad de cálculo de candidatos de predictor de vector de movimiento 311 obtiene candidatos de predictor de vector de movimiento a partir de bloques adyacentes al bloque actual y un bloque ubicado conjuntamente usando el mismo procedimiento que el de la etapa S102 en la figura 14. Además, la unidad de cálculo de candidatos de predictor de vector de movimiento 311 añade un candidato nulo, y calcula el tamaño de lista de candidatos de predictor de vector de movimiento.
En la etapa S303, la unidad de descodificación de longitud variable 301 descodifica de longitud variable el índice de predictor de vector de movimiento en un flujo de bits usando el tamaño de lista de candidatos de predictor de vector de movimiento calculado. En la etapa S304, la unidad de control de inter predicción 309 añade la diferencia de vector de movimiento descodificada al candidato de predictor de vector de movimiento indicado por el índice de predictor de vector de movimiento descodificado, para calcular un vector de movimiento. Entonces, la unidad de control de inter predicción 309 da lugar a que la unidad de inter predicción 308 genere una imagen inter predicha usando el vector de movimiento calculado.
Se debería hacer notar que si el tamaño de lista de candidatos de predictor de vector de movimiento calculado en la etapa S302 es "1", se puede estimar que un índice de predictor de vector de movimiento es 0, sin descodificarse.
De esta forma, de acuerdo con el aparato de descodificación de instantáneas en movimiento 300 de acuerdo con la presente realización, un flujo de bits para el cual se ha mejorado la eficiencia de codificación se puede descodificar de forma apropiada al añadir un predictor de vector de movimiento de área estática a una correspondiente de las listas de candidatos de predictor de vector de movimiento. Más en concreto, si el número de candidatos de predictor de vector de movimiento no ha alcanzado el número máximo de candidatos de predictor de vector de movimiento, el aparato de descodificación de instantáneas en movimiento 300 puede descodificar de forma apropiada un flujo de bits para el cual se ha mejorado la eficiencia de codificación al añadir un candidato nulo que tiene un vector de movimiento cuyo valor es "0" como un candidato de predictor de vector de movimiento.
Se debería hacer notar que en la presente realización, aunque el aparato de descodificación de instantáneas en movimiento 300 añade un nuevo candidato que tiene un predictor de vector de movimiento nuevo como un candidato de predictor de vector de movimiento si el número de candidatos de predictor de vector de movimiento no ha alcanzado el número de candidatos de predictor disponibles, la presente invención no se limita a esto. Por ejemplo, como en la realización 1 anteriormente, cuando se crean las listas de candidatos de predictor de vector de movimiento, el aparato de descodificación de instantáneas en movimiento 300 puede establecer un vector de movimiento (0, 0) cuyo valor es "0" como un valor inicial de todos los candidatos de predictor de vector de movimiento en las listas de candidatos de predictor de vector de movimiento, como se muestra en (a) en la figura 21.
[Realización 4]
La presente realización es una modificación del aparato de descodificación de instantáneas en movimiento de acuerdo con la realización 3 anteriormente. Lo siguiente es una descripción específica de un aparato de descodificación de instantáneas en movimiento de acuerdo con la realización 4.
La figura 26 es un diagrama de bloques que muestra una configuración de un aparato de descodificación de instantáneas en movimiento 400 de acuerdo con la realización 4. El aparato de descodificación de instantáneas en movimiento 400 descodifica, de una forma bloque a bloque, una imagen codificada incluida en un flujo de bits generado por el aparato de codificación de instantáneas en movimiento 200 de acuerdo con la realización 2, por ejemplo.
Como se muestra en la figura 26, el aparato de descodificación de instantáneas en movimiento 400 incluye una unidad de obtención de candidatos de predictor de vector de movimiento 410, una unidad de descodificación 420 y una unidad de control de predicción 430.
La unidad de obtención de candidatos de predictor de vector de movimiento 410 se corresponde con la unidad de cálculo de candidatos de predictor de vector de movimiento 311 en la realización 3 anteriormente. La unidad de obtención de candidatos de predictor de vector de movimiento 410 obtiene candidatos de predictor de vector de movimiento. Entonces, la unidad de obtención de candidatos de predictor de vector de movimiento 410 genera unas listas de candidatos de predictor de vector de movimiento en las que cada candidato de predictor de vector de movimiento obtenido está asociado con un índice para identificar el candidato de predictor de vector de movimiento (índice de predictor de vector de movimiento), por ejemplo.
Como se muestra en la figura 26, la unidad de obtención de candidatos de predictor de vector de movimiento 410 incluye una primera unidad de obtención 411 y una segunda unidad de obtención 412.
La primera unidad de obtención 411 obtiene uno o más primeros candidatos de predictor de vector de movimiento como con la primera unidad de obtención 211 en la realización 2. En concreto, la primera unidad de obtención 411 obtiene cada primer candidato de predictor de vector de movimiento, basándose en un vector de movimiento usado para descodificar un bloque espacial o temporalmente adyacente a un bloque actual que se va a descodificar, por ejemplo. Entonces, por ejemplo, la primera unidad de obtención 411 registra, en las listas de candidatos de predictor de vector de movimiento, los uno o más primeros candidatos de predictor de vector de movimiento obtenidos de esta forma, cada uno en asociación con un índice de predictor de vector de movimiento.
La segunda unidad de obtención 412 obtiene uno o más segundos candidatos de predictor de vector de movimiento, teniendo cada uno un vector predeterminado como un vector de movimiento. En concreto, la segunda unidad de obtención 412 obtiene uno o más segundos candidatos de predictor de vector de movimiento de la misma forma que la de la segunda unidad de obtención 212 en la realización 2. Entonces, la segunda unidad de obtención 212 registra, en las listas de candidatos de predictor de vector de movimiento, los uno o más segundos candidatos de predictor de vector de movimiento obtenidos de esta forma, cada uno en asociación con un índice de predictor de vector de movimiento, por ejemplo.
El vector predeterminado puede ser, por ejemplo, un vector nulo como en la realización 1 anteriormente. Esto posibilita que la segunda unidad de obtención 412 obtenga un candidato de predictor de vector de movimiento que tiene un vector de movimiento de área estática. En consecuencia, el aparato de descodificación de instantáneas en movimiento 400 puede descodificar de forma apropiada un flujo de bits para el cual se ha mejorado la eficiencia de codificación.
La unidad de descodificación 420 obtiene un índice para identificar un candidato de predictor de vector de movimiento a partir de un flujo de bits. La unidad de descodificación 420 obtiene un índice de predictor de vector de movimiento mediante la descodificación de un índice de predictor de vector de movimiento codificado añadido al flujo de bits, usando la suma del número de primeros candidatos de predictor de vector de movimiento obtenidos y el número de segundos candidatos de predictor de vector de movimiento derivados (el número de candidatos de predictor de vector de movimiento), por ejemplo.
La unidad de control de predicción 430 selecciona un predictor de vector de movimiento que se va a usar para descodificar un bloque actual que se va a descodificar, de entre los uno o más primeros candidatos de predictor de vector de movimiento y los uno o más segundos candidatos de predictor de vector de movimiento, basándose en el índice obtenido. En concreto, la unidad de control de predicción 430 selecciona, de entre las listas de candidatos de predictor de vector de movimiento, un predictor de vector de movimiento que se va a usar para descodificar un bloque actual que se va a descodificar.
A continuación se da una descripción de diversas operaciones del aparato de descodificación de instantáneas en movimiento 400 constituido como se ha descrito anteriormente.
La figura 27 es un diagrama de flujo que muestra una operación de procesamiento del aparato de descodificación de instantáneas en movimiento 400 de acuerdo con la realización 4.
En primer lugar, la primera unidad de obtención 411 obtiene uno o más primeros candidatos de predictor de vector de movimiento (S401). A continuación, la segunda unidad de obtención 412 obtiene uno o más segundos candidatos de predictor de vector de movimiento (S402). Entonces, la unidad de descodificación 420 obtiene un índice de predictor de vector de movimiento a partir de un flujo de bits (S403).
Por último, la unidad de control de predicción 220 selecciona, de entre los uno o más primeros candidatos de predictor de vector de movimiento y los uno o más segundos candidatos de predictor de vector de movimiento, un predictor de vector de movimiento que se va a usar para descodificar un bloque actual que se va a descodificar, basándose en el índice obtenido (S404).
Como se ha descrito anteriormente, de acuerdo con el aparato de descodificación de instantáneas en movimiento 400 de acuerdo con la presente realización, se pueden obtener los uno o más segundos candidatos de predictor de vector de movimiento, teniendo cada uno un vector predeterminado como un vector de movimiento. Por lo tanto, el aparato de descodificación de instantáneas en movimiento 400 puede obtener los uno o más segundos candidatos de predictor de vector de movimiento que tienen, cada uno, vector de movimiento de área estática o similares, por ejemplo. En concreto, el aparato de descodificación de instantáneas en movimiento 400 puede descodificar de forma apropiada una imagen en la que se codifica de forma eficiente un bloque que tiene un movimiento predeterminado y, por lo tanto, puede descodificar de forma apropiada un flujo de bits para el cual se ha mejorado la eficiencia de codificación.
Se debería hacer notar que el aparato de codificación de instantáneas en movimiento 400 puede establecer el segundo candidato de predictor de vector de movimiento como un valor inicial de todos los candidatos de predictor de vector de movimiento en las listas de candidatos de predictor de vector de movimiento, como en la realización 2 anteriormente. En este caso, la unidad de obtención de candidatos de predictor de vector de movimiento 410 obtiene el segundo candidato de predictor de vector de movimiento antes del primer candidato de predictor de vector de movimiento. También es posible establecer el segundo candidato de predictor de vector de movimiento como un candidato de predictor de vector de movimiento mediante el uso de un procedimiento de este tipo.
[Realización 5]
La presente realización describe con detalle un procedimiento para obtener el tamaño de lista de candidatos de predictor de vector de movimiento, que es diferente del procedimiento en la realización 1.
En el modo de designación de predictor de vector de movimiento anterior, el tamaño de lista de candidatos de predictor de vector de movimiento que se va a usar cuando se codifica o se descodifica un índice de predictor de vector de movimiento se establece al número de candidatos de predictor de vector de movimiento. Este número de candidatos de predictor de vector de movimiento se obtiene después de borrar un candidato de predictor no disponible o un candidato redundante usando una información de instantáneas de referencia que incluye información de un bloque ubicado conjuntamente y similares. Por lo tanto, si, por ejemplo, hay una diferencia en el número de candidatos de predictor de vector de movimiento entre un aparato de codificación de instantáneas en movimiento y un aparato de descodificación de instantáneas en movimiento, diferentes cadenas de bits se asignan a unos índices de predictor de vector de movimiento en el aparato de codificación de instantáneas en movimiento y el aparato de descodificación de instantáneas en movimiento. Como resultado, el aparato de descodificación de instantáneas en movimiento puede no ser capaz de descodificar un flujo de bits de forma apropiada.
Por ejemplo, si se pierde una información de una instantánea de referencia a la que se ha hecho referencia como un bloque ubicado conjuntamente debido a una pérdida de paquetes o similares que ha tenido lugar en un canal de transmisión o similares, se perderá un vector de movimiento o un índice de instantánea de referencia del bloque ubicado conjuntamente. Por lo tanto, no se puede obtener la información acerca de un candidato de predictor de vector de movimiento que se va a generar a partir del bloque ubicado conjuntamente. En un caso de este tipo, un candidato de predictor no disponible y un candidato redundante no se pueden borrar de forma apropiada de los candidatos de predictor de vector de movimiento en el momento de la descodificación. Como resultado, el aparato de descodificación de instantáneas en movimiento no será capaz de obtener de forma apropiada el tamaño de lista de candidatos de predictor de vector de movimiento, y no será capaz de descodificar con éxito un índice de predictor de vector de movimiento.
En contraposición, de acuerdo con un procedimiento para obtener el tamaño de lista de candidatos de predictor de vector de movimiento descrito en la presente realización, el tamaño de lista de candidatos de predictor de vector de movimiento que se va a usar cuando se codifica o se descodifica un índice de predictor de vector de movimiento se puede calcular mediante el uso de un procedimiento independiente de una información de instantáneas de referencia que incluye información de un bloque ubicado conjuntamente y similares. Por consiguiente, el aparato de codificación de instantáneas en movimiento puede mejorar la resistencia a errores de un flujo de bits.
La figura 28 es un diagrama de bloques que muestra una configuración de un aparato de codificación de instantáneas en movimiento 500 de acuerdo con una realización 3.
Como se muestra en la figura 28, el aparato de codificación de instantáneas en movimiento 500 incluye una unidad de sustracción 501, una unidad de transformada ortogonal 502, una unidad de cuantificación 503, una unidad de cuantificación inversa 504, una unidad de transformada ortogonal inversa 505, una unidad de adición 506, una memoria de bloques 507, una memoria de tramas 508, una unidad de intra predicción 509, una unidad de inter predicción 510, una unidad de control de inter predicción 511, una unidad de determinación de tipo de instantánea 512, un conmutador 513, una unidad de cálculo de candidatos de predictor de vector de movimiento 514, una memoria de colPic 515 y una unidad de codificación de longitud variable 516.
La unidad de sustracción 501 genera datos de error de predicción al sustraer, para cada bloque, datos de imagen predichos a partir de datos de imagen de entrada incluidos en una secuencia de imágenes de entrada. La unidad de transformada ortogonal 502 transforma los datos de error de predicción generados de un dominio de imágenes a un dominio de la frecuencia. La unidad de cuantificación 503 realiza un procesamiento de cuantificación sobre los datos de error de predicción que se han transformado al dominio de la frecuencia.
La unidad de cuantificación inversa 504 realiza un procesamiento de cuantificación inversa sobre los datos de error de predicción sobre los cuales ha sido realizado un procesamiento de cuantificación por la unidad de cuantificación 503. La unidad de transformada ortogonal inversa 505 transforma los datos de error de predicción sobre los cuales se ha realizado un procesamiento de cuantificación inversa, del dominio de la frecuencia al dominio de imágenes.
La unidad de adición 506 genera datos de imagen reconstruidos al añadir, para cada bloque que se va a codificar, datos de imagen predichos y los datos de error de predicción sobre los cuales ha sido realizado un procesamiento de cuantificación inversa por la unidad de transformada ortogonal inversa 505. La memoria de bloques 507 almacena datos de imagen reconstruidos de una forma bloque a bloque. La memoria de tramas 508 almacena datos de imagen reconstruidos de una forma trama a trama.
La unidad de determinación de tipo de instantánea 512 determina como cuál de los tipos de instantánea, en concreto, instantánea I, instantánea B e instantánea P, se van a codificar unos datos de imagen de entrada. Entonces, la unidad de determinación de tipo de instantánea 512 genera información de tipo de instantánea. La unidad de intra predicción 509 genera datos de imagen intra predichos de un bloque actual que se va a codificar mediante la realización de una intra predicción usando los datos de imagen reconstruidos en unidades de bloque almacenadas en la memoria de bloques 507. La unidad de inter predicción 510 genera datos de imagen inter predichos de un bloque actual que se va a codificar mediante la realización de una inter predicción usando los datos de imagen reconstruidos en unidades de trama almacenadas en la memoria de tramas 508, y un vector de movimiento obtenido por detección de movimiento y similares.
El conmutador 513 emite los datos de imagen intra predichos generados por la unidad de intra predicción 509 a la unidad de sustracción 501 y la unidad de adición 506 como datos de imagen predichos del bloque actual, se realiza una codificación de intra predicción sobre el bloque actual. Por otro lado, el conmutador 513 emite los datos de imagen inter predichos generados por la unidad de inter predicción 510 a la unidad de sustracción 501 y la unidad de adición 506 como datos de imagen predichos del bloque actual si se realiza la codificación de inter predicción sobre el bloque actual.
La unidad de cálculo de candidatos de predictor de vector de movimiento 514 obtiene candidatos de predictor de vector de movimiento en el modo de designación de predictor de vector de movimiento, usando vectores de movimiento de bloques adyacentes al bloque actual y similares e información de colPic tal como información de un vector de movimiento de un bloque ubicado conjuntamente almacenado en la memoria de colPic 515. Entonces, la unidad de cálculo de candidatos de predictor de vector de movimiento 514 calcula el número de candidatos de predictor disponibles usando el procedimiento descrito posteriormente. Además, la unidad de cálculo de candidatos de predictor de vector de movimiento 514 asigna los valores del índice de predictor de vector de movimiento a los candidatos de predictor de vector de movimiento obtenidos. Entonces, la unidad de cálculo de candidatos de predictor de vector de movimiento 514 envía los candidatos de predictor de vector de movimiento y los índices de predictor de vector de movimiento a la unidad de control de inter predicción 511. La unidad de cálculo de candidatos de predictor de vector de movimiento 514 transmite el número de candidatos de predictor disponibles calculados a la unidad de codificación de longitud variable 516.
La unidad de control de inter predicción 511 controla la unidad de inter predicción 510 con el fin de dar lugar a que la unidad de inter predicción 110 realice una codificación de inter predicción, usando la imagen inter predicha generada usando un vector de movimiento obtenido por detección de movimiento. Además, la unidad de control de inter predicción 511 selecciona, usando el procedimiento descrito posteriormente, un candidato de predictor de vector de movimiento de lo más adecuado para codificar un vector de movimiento usado para la codificación de inter predicción. Entonces, la unidad de control de inter predicción 511 envía un índice de predictor de vector de movimiento que se corresponde con el candidato de predictor de vector de movimiento seleccionado, e información de error de predicción (diferencia de vector de movimiento) a la unidad de codificación de longitud variable 516. Además, la unidad de control de inter predicción 511 transfiere información de colPic que incluye información de un vector de movimiento del bloque actual, y similares, a la memoria de colPic 515.
La unidad de codificación de longitud variable 516 realiza un procesamiento de codificación de longitud variable sobre datos de error de predicción sobre los cuales se ha realizado un procesamiento de cuantificación, un indicador de dirección de predicción, información de tipo de instantánea y una diferencia de vector de movimiento, generando de ese modo un flujo de bits. Además, la unidad de codificación de longitud variable 516 establece el tamaño de lista de candidatos de predictor de vector de movimiento al número de candidatos de predictor disponibles. Entonces, la unidad de codificación de longitud variable 516 codifica por longitud variable el índice de predictor de vector de movimiento usado para codificar un vector de movimiento mediante la asignación al mismo de una cadena de bits de acuerdo con el tamaño de lista de candidatos de predictor de vector de movimiento.
La figura 29 es un diagrama de flujo que muestra una operación de procesamiento del aparato de codificación de instantáneas en movimiento de acuerdo con la realización 1.
En la etapa S501, la unidad de control de inter predicción 511 determina una dirección de predicción, un índice de instantánea de referencia, y un vector de movimiento de un bloque actual que se va a codificar por detección de movimiento. En el presente caso, en la detección de movimiento, se calcula un valor de diferencia que indica una diferencia entre un bloque actual que se va a codificar en una instantánea que se va a codificar y un bloque en una instantánea de referencia, y un bloque en la instantánea de referencia con el que el valor de diferencia es el más pequeño se determina como un bloque de referencia. Entonces, se obtiene un vector de movimiento basándose en la posición de un bloque actual que se va a codificar y la posición de una posición de bloque de referencia usando el procedimiento para obtener un vector de movimiento, por ejemplo. Además, la unidad de control de inter predicción 511 realiza una detección de movimiento sobre cada una de las instantáneas de referencia en las direcciones de predicción 0 y 1, y determina si seleccionar la dirección de predicción 0, la dirección de predicción 1 o una predicción bidireccional usando, por ejemplo, la siguiente expresión para un modelo de optimización de R-D, o similares.
Coste = D A x R (Expresión 3)
En la expresión 3, D denota una distorsión de codificación, y por ejemplo, se usa para ello una suma de diferencias absolutas, cada una de las cuales es una diferencia absoluta entre un valor de píxel obtenido mediante la codificación y descodificación de un bloque actual usando una imagen predicha generada usando un determinado vector de movimiento y un valor de píxel original del bloque actual. R denota una cantidad de código generada, y se usa para ello una cantidad de código necesaria para codificar un vector de movimiento usado para generar una imagen predicha. Además, A denota un multiplicador no determinado de Lagrange.
En la etapa S502, la unidad de cálculo de candidatos de predictor de vector de movimiento 514 obtiene candidatos de predictor de vector de movimiento a partir de bloques adyacentes al bloque actual y un bloque ubicado conjuntamente del mismo. Además, la unidad de cálculo de candidatos de predictor de vector de movimiento 514 calcula el tamaño de lista de candidatos de predictor de vector de movimiento de acuerdo con el procedimiento descrito posteriormente.
Por ejemplo, en el caso que se muestra en la figura 3, la unidad de cálculo de candidatos de predictor de vector de movimiento 514 selecciona vectores de movimiento que los bloques adyacentes A, B, C y D tienen, como candidatos de predictor de vector de movimiento del bloque actual. Además, la unidad de cálculo de candidatos de predictor de vector de movimiento 514 calcula un vector de movimiento, por ejemplo, que se calcula usando un modo de predicción temporal a partir de un vector de movimiento del bloque ubicado conjuntamente, como un candidato de predictor de vector de movimiento.
La unidad de cálculo de candidatos de predictor de vector de movimiento 514 asigna índices de predictor de vector de movimiento a los candidatos de predictor de vector de movimiento en las direcciones de predicción 0 y 1, como se muestra en (a) en la figura 30 y (a) en la figura 31. Entonces, la unidad de cálculo de candidatos de predictor de vector de movimiento 514 calcula unas listas de candidatos de predictor de vector de movimiento como se muestra en (b) en la figura 30 y (b) en la figura 31, y los tamaños de las listas de candidatos de predictor de vector de movimiento al borrar un candidato de predictor no disponible y un candidato redundante y añadir la adición de un nuevo candidato, usando el procedimiento descrito posteriormente.
Cuanto más pequeño es el valor de un índice de predictor de vector de movimiento, más corto es el código que se asigna al índice de predictor de vector de movimiento. En concreto, si el valor de un índice de predictor de vector de movimiento es pequeño, la cantidad de información necesaria para el índice de predictor de vector de movimiento es pequeña. Por otro lado, si el valor de un índice de predictor de vector de movimiento es grande, la cantidad de información necesaria para el índice de predictor de vector de movimiento es grande. Por lo tanto, la eficiencia de codificación se aumenta mediante la asignación de un índice de predictor de vector de movimiento que tiene un valor pequeño a un candidato de predictor de vector de movimiento que tiene una alta posibilidad de volverse un predictor de vector de movimiento con una precisión elevada.
A la vista de esto, la unidad de cálculo de candidatos de predictor de vector de movimiento 514 puede medir, para cada candidato de predictor de vector de movimiento, el número de veces en las que el candidato de predictor de vector de movimiento se ha seleccionado como un predictor de vector de movimiento, y asignar un índice de predictor de vector de movimiento que tiene un valor pequeño a un bloque a partir del cual se obtiene un candidato de predictor de vector de movimiento cuyo número de veces en las que se ha seleccionado el candidato es grande, por ejemplo. En concreto, es posible considerar identificar un predictor de vector de movimiento seleccionado en un bloque adyacente, y en la codificación de un bloque actual, asignar un índice de predictor de vector de movimiento que tiene un valor pequeño al candidato de predictor de vector de movimiento identificado.
Se debería hacer notar que si un candidato de predictor de vector de movimiento no tiene información alguna de un vector de movimiento y similares (si el candidato es un bloque codificado por intra predicción, si el candidato es un bloque ubicado, por ejemplo, fuera de un límite de una instantánea o un sector, si el candidato es un bloque que no se ha codificado aún, o similares), el candidato no se puede utilizar para la codificación.
En la presente realización, un candidato que no se puede utilizar como un candidato de predictor de vector de movimiento se denomina candidato de predictor no disponible. Un candidato que se puede utilizar como un candidato de predictor de vector de movimiento se denomina candidato de predictor disponible. Además, de entre una pluralidad de candidatos de predictor de vector de movimiento, un candidato cuyo valor es igual que uno cualquiera de los otros predictores de vector de movimiento se denomina candidato redundante.
En el caso de la figura 3, el bloque adyacente C es un bloque codificado por intra predicción y, por lo tanto, se supone que es un candidato de predictor no disponible. Además, el predictor de vector de movimiento sMvL0_D en la dirección de predicción 0 generado a partir del bloque adyacente D tiene el mismo valor que el valor del predictor de vector de movimiento MvL0_A en la dirección de predicción 0 generado a partir del bloque adyacente A y, por lo tanto, se supone que es un candidato redundante.
En la etapa S503, la unidad de control de inter predicción 511 determina un valor de un índice de predictor de vector de movimiento que se va a usar para codificar un vector de movimiento en la dirección de predicción X mediante el uso del procedimiento descrito posteriormente.
En la etapa S504, la unidad de codificación de longitud variable 516 codifica con longitud variable unos índices de predictor de vector de movimiento de candidatos de predictor de vector de movimiento que se van a usar para codificar vectores de movimiento en la dirección de predicción X mediante la asignación a los mismos de cadenas de bits de acuerdo con el tamaño de lista de candidatos de predictor de vector de movimiento como se muestra en la figura 6.
En la presente realización, como se muestra en (a) en la figura 30 y (a) en la figura 31, "0" se asigna como un valor de un índice de predictor de vector de movimiento que se corresponde con el bloque adyacente A. "1" se asigna como un valor de un índice de predictor de vector de movimiento que se corresponde con el bloque adyacente B. "2" se asigna como un valor de un índice de predictor de vector de movimiento que se corresponde con un bloque ubicado conjuntamente. "3" se asigna como un valor de un índice de predictor de vector de movimiento que se corresponde con el bloque adyacente C. "4" se asigna como un valor de un índice de predictor de vector de movimiento que se corresponde con el bloque adyacente D.
Se debería hacer notar que la forma de asignar índices de predictor de vector de movimiento no se limita necesariamente a este ejemplo. Por ejemplo, si se añade un nuevo candidato usando el procedimiento descrito en la realización 1 o el procedimiento descrito posteriormente, la unidad de codificación de longitud variable 516 puede asignar un valor pequeño a un candidato de predictor de vector de movimiento que no acaba de añadirse, y un valor grande al nuevo candidato. En concreto, la unidad de codificación de longitud variable 516 puede asignar preferentemente un índice de predictor de vector de movimiento que tiene un valor pequeño a un candidato de predictor de vector de movimiento que no acaba de añadirse.
Además, los candidatos de predictor de vector de movimiento no se limitan necesariamente a estar en las posiciones de los bloques adyacentes A, B, C y D. Por ejemplo, un vector de un bloque adyacente ubicado sobre el bloque adyacente inferior - izquierdo D, por ejemplo, se puede usar como un candidato de predictor de vector de movimiento. Además, no necesariamente es preciso que se usen vectores de todos los bloques adyacentes como candidatos de predictor de vector de movimiento. Por ejemplo, se pueden usar vectores de únicamente los bloques adyacentes A y B como candidatos de predictor de vector de movimiento. Como alternativa, los bloques adyacentes se pueden explorar secuencialmente mediante el uso, por ejemplo, del bloque adyacente A si el bloque adyacente D es un candidato de predictor no disponible.
Además, en la presente realización, aunque la unidad de codificación de longitud variable 516 añade un índice de predictor de vector de movimiento a un flujo de bits en la etapa S504 en la figura 29, un índice de predictor de vector de movimiento no necesita añadirse necesariamente a un flujo de bits. Por ejemplo, si el tamaño de lista de candidatos de predictor de vector de movimiento es 1, la unidad de codificación de longitud variable 516 puede no añadir un índice de predictor de vector de movimiento a un flujo de bits. Por consiguiente, la cantidad de información se puede reducir en la del índice de predictor de vector de movimiento.
La figura 32 es un diagrama de flujo que muestra un procesamiento detallado de la etapa S502 en la figura 29. En concreto, la figura 32 muestra un procedimiento para calcular candidatos de predictor de vector de movimiento y el tamaño de lista de candidatos de predictor de vector de movimiento. Lo siguiente es una descripción de la figura 32.
En la etapa S511, la unidad de cálculo de candidatos de predictor de vector de movimiento 514 determina, usando el procedimiento descrito posteriormente, si un candidato de bloque de predicción [N] es un candidato de predictor disponible. Entonces, la unidad de cálculo de candidatos de predictor de vector de movimiento 514 actualiza el número de candidatos de predictor disponibles de acuerdo con el resultado de determinación.
En el presente caso, N es un valor de índice para denotar cada candidato de bloque de predicción. En la presente realización, N es uno de los valores de 0 a 4. En concreto, el bloque adyacente A en la figura 3 se asigna a un candidato de bloque de predicción [0]. El bloque adyacente B en la figura 3 se asigna a un candidato de bloque de predicción [1]. Un bloque ubicado conjuntamente se asigna a un candidato de bloque de predicción [2]. El bloque adyacente C en la figura 3 se asigna a un candidato de bloque de predicción [3]. El bloque adyacente D en la figura 3 se asigna a un candidato de bloque de predicción [4].
En la etapa S512, la unidad de cálculo de candidatos de predictor de vector de movimiento 514 obtiene un candidato de predictor de vector de movimiento en la dirección de predicción X a partir del candidato de bloque de predicción [N] usando las expresiones 1 y 2 anteriormente, y añade el candidato obtenido a una correspondiente de las listas de candidatos de predictor de vector de movimiento.
En la etapa S513, la unidad de cálculo de candidatos de predictor de vector de movimiento 514 busca y borra un candidato de predictor no disponible y un candidato redundante de las listas de candidatos de predictor de vector de movimiento, como se muestra en las figuras 30 y 31.
En la etapa S514, la unidad de cálculo de candidatos de predictor de vector de movimiento 514 añade un nuevo candidato a una correspondiente de las listas de candidatos de predictor de vector de movimiento, usando el procedimiento descrito en la realización 1 o el procedimiento descrito posteriormente. En el presente caso, cuando se añade un nuevo candidato, la unidad de cálculo de candidatos de predictor de vector de movimiento 514 puede reasignar valores de índices de predictor de vector de movimiento con el fin de asignar preferentemente un índice de predictor de vector de movimiento pequeño a un candidato de predictor de vector de movimiento que no acaba de añadirse. En concreto, la unidad de cálculo de candidatos de predictor de vector de movimiento 514 puede reasignar valores de índices de predictor de vector de movimiento con el fin de asignar un índice de predictor de vector de movimiento que tiene un valor grande al nuevo candidato. Por consiguiente, se puede reducir la cantidad de codificación de índices de predictor de vector de movimiento.
En la etapa S515, la unidad de cálculo de candidatos de predictor de vector de movimiento 514 establece el tamaño de lista de candidatos de predictor de vector de movimiento al número de candidatos de predictor disponibles calculados en la etapa S511. En los ejemplos de las figuras 30 y 31, mediante el uso del procedimiento descrito posteriormente, se calcula "4" como el número de candidatos de predictor disponibles en la dirección de predicción 0, y el tamaño de lista de candidatos de predictor de vector de movimiento para la dirección de predicción 0 se establece a "4". Además, se calcula "4" como el número de candidatos de predictor disponibles en la dirección de predicción 1, y el tamaño de lista de candidatos de predictor de vector de movimiento para la dirección de predicción 1 se establece a "4".
Se debería hacer notar que un nuevo candidato en la etapa S514 es un candidato nulo añadido usando el procedimiento descrito en la realización 1, o un candidato que acaba de añadirse a los candidatos de predictor de vector de movimiento usando el procedimiento descrito posteriormente si el número de candidatos de predictor de vector de movimiento no ha alcanzado el número de candidatos de predictor disponibles. Por ejemplo, un nuevo candidato puede ser un predictor de vector de movimiento generado a partir de un bloque adyacente ubicado sobre el bloque adyacente inferior - izquierdo D en la figura 3. Un nuevo candidato puede ser un predictor de vector de movimiento generado a partir de bloques que se corresponden con los bloques A, B, C y D adyacentes un bloque ubicado conjuntamente, por ejemplo. Además, un nuevo candidato puede ser un predictor de vector de movimiento calculado a partir de un total de vectores de movimiento en la totalidad del plano de instantánea o un área determinada de una instantánea de referencia, por ejemplo. De esta forma, la eficiencia de codificación se puede mejorar al añadir, la unidad de cálculo de candidatos de predictor de vector de movimiento 514, un predictor de vector de movimiento nuevo como un nuevo candidato si el número de candidatos de predictor de vector de movimiento no ha alcanzado el número de candidatos de predictor disponibles.
La figura 33 es un diagrama de flujo que muestra un procesamiento detallado de la etapa S511 en la figura 32. En concreto, la figura 33 muestra un procedimiento para determinar si el candidato de bloque de predicción [N] es un candidato de predictor disponible, y actualizar el número de candidatos de predictor disponibles. Lo siguiente es una descripción de la figura 33.
En la etapa S521, la unidad de cálculo de candidatos de predictor de vector de movimiento 514 determina si un candidato de bloque de predicción [N] (1) se intra predice, (2) está ubicado fuera de un límite de un sector o una instantánea que incluye un bloque actual que se va a codificar, o (3) no se ha codificado aún.
En el presente caso, si el resultado de determinación en la etapa S521 es verdadero (Sí en S521), la unidad de cálculo de candidatos de predictor de vector de movimiento 514 establece el candidato de bloque de predicción [N] como un candidato de predictor no disponible en la etapa S522. Por otro lado, si el resultado de determinación en la etapa S521 es falso (No en S521), la unidad de cálculo de candidatos de predictor de vector de movimiento 514 establece el candidato de bloque de predicción [N] como un candidato de predictor disponible en la etapa S523.
En la etapa S524, la unidad de cálculo de candidatos de predictor de vector de movimiento 514 determina si el candidato de bloque de predicción [N] es un candidato de predictor disponible o un candidato de bloque ubicado conjuntamente. En el presente caso, si el resultado de determinación en la etapa S524 es verdadero (Sí en S524), la unidad de cálculo de candidatos de predictor de vector de movimiento 514 añade 1 al número de candidatos de predictor disponibles, y actualiza el número de candidatos de predictor de vector de movimiento en la etapa S5. Por otro lado, si el resultado de determinación en la etapa S524 es falso (No en S524), la unidad de cálculo de candidatos de predictor de vector de movimiento 514 no actualiza el número de candidatos de predictor disponibles.
Como se ha descrito anteriormente, si un candidato de bloque de predicción es un bloque ubicado conjuntamente, la unidad de cálculo de candidatos de predictor de vector de movimiento 514 añade 1 al número de candidatos de predictor disponibles, con independencia de si el bloque ubicado conjuntamente es un candidato de predictor disponible o un candidato de predictor no disponible. Por consiguiente, incluso si se pierde una información de un bloque ubicado conjuntamente debido a una pérdida de paquetes o similares, no hay diferencia alguna en el número de candidatos de predictor disponibles entre el aparato de codificación de instantáneas en movimiento y el aparato de descodificación de instantáneas en movimiento.
El tamaño de lista de candidatos de predictor de vector de movimiento se establece al número de candidatos de predictor disponibles en la etapa S515 en la figura 32. Además, en S504 en la figura 29, el tamaño de lista de candidatos de predictor de vector de movimiento se usa para codificar con longitud variable unos índices de predictor de vector de movimiento. Por consiguiente, incluso si se pierde una información de instantáneas de referencia que incluye información de un bloque ubicado conjuntamente y similares, el aparato de codificación de instantáneas en movimiento 500 puede generar un flujo de bits a partir del cual se puede descodificar con éxito un índice de predictor de vector de movimiento.
La figura 34 es un diagrama de flujo que muestra un procesamiento detallado de la etapa S514 en la figura 32. En concreto, la figura 34 muestra un procedimiento para añadir un nuevo candidato. Lo siguiente es una descripción de la figura 34.
En la etapa S531, la unidad de cálculo de candidatos de predictor de vector de movimiento 514 determina si el número de candidatos de predictor de vector de movimiento es más pequeño que el número de candidatos de predictor disponibles. En concreto, la unidad de cálculo de candidatos de predictor de vector de movimiento 514 determina si el número de candidatos de predictor de vector de movimiento no ha alcanzado el número de candidatos de predictor disponibles.
En el presente caso, si el resultado de determinación en la etapa S531 es verdadero (Sí en S531), la unidad de cálculo de candidatos de predictor de vector de movimiento 514 determina en la etapa S532 si hay un nuevo candidato que se puede añadir a una correspondiente de las listas de candidatos de predictor de vector de movimiento como un candidato de predictor de vector de movimiento. En el presente caso, si el resultado de determinación en la etapa S532 es verdadero (Sí en S532), la unidad de cálculo de candidatos de predictor de vector de movimiento 514 asigna un valor de un índice de predictor de vector de movimiento al nuevo candidato, y añade el nuevo candidato a una correspondiente de las listas de candidatos de predictor de vector de movimiento en la etapa S533. Además, en la etapa S534, la unidad de cálculo de candidatos de predictor de vector de movimiento 514 añade 1 al número de candidatos de predictor de vector de movimiento.
Por otro lado, si el resultado de determinación en la etapa S531 o la etapa S532 es falso (No en S531 o S532), termina el procesamiento de adición de nuevo candidato. En concreto, si el número de candidatos de predictor de vector de movimiento ha alcanzado el número de candidatos de predictor disponibles, o si no hay nuevo candidato alguno, termina el procesamiento de adición de nuevo candidato.
La figura 35 es un diagrama de flujo que muestra un procesamiento detallado de la etapa S503 en la figura 29. En concreto, la figura 35 muestra un procesamiento con respecto a la selección de un candidato de predictor de vector de movimiento. Lo siguiente es una descripción de la figura 35.
En la etapa S541, como inicialización, la unidad de control de inter predicción 511 establece el índice de candidatos de predictor de vector de movimiento ind_pvm a 0, y establece la diferencia de vector de movimiento más pequeña al valor máximo.
En la etapa S542, la unidad de control de inter predicción 511 determina si el valor del índice de candidatos de predictor de vector de movimiento ind_pvm es más pequeño que el número de candidatos de predictor de vector de movimiento. En concreto, la unidad de control de inter predicción 511 determina si se han calculado las diferencias de vector de movimiento de todos los candidatos de predictor de vector de movimiento.
En el presente caso, si sigue habiendo un candidato de predictor de vector de movimiento para el cual no se ha realizado el cálculo (Sí en S542), la unidad de control de inter predicción 511 calcula una diferencia de vector de movimiento al sustraer un candidato de predictor de vector de movimiento de un vector obtenido como resultado de la detección de movimiento (vector resultante de detección de movimiento) en la etapa S543.
En la etapa S544, la unidad de control de inter predicción 511 determina si la diferencia de vector de movimiento obtenida en la etapa S543 tiene un valor más pequeño que la diferencia de vector de movimiento más pequeña.
En el presente caso, si el resultado de determinación en la etapa S544 es verdadero (Sí en S544), la unidad de control de inter predicción 511 actualiza la diferencia de vector de movimiento más pequeña y el valor de un índice de predictor de vector de movimiento en la etapa S545. Por otro lado, si el resultado de determinación en la etapa S544 es falso (No en S544), la unidad de control de inter predicción 511 no actualiza la diferencia de vector de movimiento más pequeña y el valor de un índice de predictor de vector de movimiento.
En la etapa S546, la unidad de control de inter predicción 511 actualiza un índice de candidatos de predictor de vector de movimiento al incrementar en 1 y volver a la etapa S542, la unidad de control de inter predicción 111 determina si está presente un candidato de predictor de vector de movimiento siguiente.
Por otro lado, si se determina en la etapa S2 que se ha calculado una diferencia de vector de movimiento para todos los candidatos de predictor de vector de movimiento (No en S542), la unidad de control de inter predicción 5l1 fija, en la etapa S547, la diferencia de vector de movimiento más pequeña y el índice de predictor de vector de movimiento que se establecen por último.
De esta forma, de acuerdo con el aparato de codificación de instantáneas en movimiento 500 de acuerdo con la presente realización, el tamaño de lista de candidatos de predictor de vector de movimiento que se va a usar cuando se codifica o se descodifica un índice de predictor de vector de movimiento se puede calcular usando un procedimiento independiente de una información de instantáneas de referencia que incluye información de un bloque ubicado conjuntamente y similares. Por consiguiente, el aparato de codificación de instantáneas en movimiento 500 puede mejorar la resistencia a errores.
Más en concreto, el aparato de codificación de instantáneas en movimiento 500 de acuerdo con la presente realización añade 1 al número de candidatos de predictor disponibles si un candidato de bloque de predicción es un bloque ubicado conjuntamente, con independencia de si el bloque ubicado conjuntamente es un candidato de predictor disponible. Entonces, el aparato de codificación de instantáneas en movimiento 500 determina una cadena de bits que se va a asignar a un índice de predictor de vector de movimiento usando el número de candidatos de predictor disponibles calculados de esta forma. Por consiguiente, el aparato de codificación de instantáneas en movimiento 500 puede generar un flujo de bits a partir del cual se puede descodificar con éxito un índice de predictor de vector de movimiento incluso si se pierde una información de instantáneas de referencia que incluye información de un bloque ubicado conjuntamente.
Además, el aparato de codificación de instantáneas en movimiento 500 de acuerdo con la presente realización puede mejorar la eficiencia de codificación al añadir un nuevo candidato que tiene un predictor de vector de movimiento nuevo como un candidato de predictor de vector de movimiento si el número de candidatos de predictor de vector de movimiento no ha alcanzado el número de candidatos de predictor disponibles.
Se debería hacer notar que en la presente realización, el aparato de codificación de instantáneas en movimiento 500 determina una cadena de bits que se va a asignar a un índice de predictor de vector de movimiento usando el número de candidatos de predictor disponibles calculados al añadir siempre 1 si un candidato de bloque de predicción es un bloque ubicado conjuntamente, con independencia de si el bloque ubicado conjuntamente es un candidato de predictor disponible, la presente invención no se limita a esto. Por ejemplo, el aparato de codificación de instantáneas en movimiento 500 puede determinar una cadena de bits que se va a asignar a un índice de predictor de vector de movimiento, usando el número de candidatos de predictor disponibles calculados al añadir siempre 1 también en el caso de un candidato de bloque de predicción que no sea el bloque ubicado conjuntamente en la etapa S524 en la figura 33. En concreto, el aparato de codificación de instantáneas en movimiento 500 puede asignar una cadena de bits a un índice de predictor de vector de movimiento usando el tamaño de lista de candidatos de predictor de vector de movimiento fijado al valor máximo N del número de candidatos de predictor de vector de movimiento. Dicho de otra forma, el aparato de codificación de instantáneas en movimiento puede suponer que todos los candidatos de bloque de predicción son candidatos de predictor disponibles, fijar el tamaño de lista de candidatos de predictor de vector de movimiento al valor máximo N del número de candidatos de predictor de vector de movimiento, y codificar índices de predictor de vector de movimiento.
Por ejemplo, en la presente realización, el valor máximo N del número de candidatos de predictor de vector de movimiento es 5 (el bloque adyacente A, el bloque adyacente B, un bloque ubicado conjuntamente, el bloque adyacente C, el bloque adyacente D) y, por lo tanto, el aparato de codificación de instantáneas en movimiento 500 puede establecer siempre el tamaño de lista de candidatos de predictor de vector de movimiento a 5, y codificar índices de predictor de vector de movimiento. Además, por ejemplo, si el valor máximo N del número de candidatos de predictor de vector de movimiento es 4 (el bloque adyacente A, el bloque adyacente B, el bloque adyacente C, el bloque adyacente D), el aparato de codificación de instantáneas en movimiento 500 puede establecer siempre el tamaño de lista de candidatos de predictor de vector de movimiento a 4, y codificar índices de predictor de vector de movimiento.
De esta forma, el aparato de codificación de instantáneas en movimiento 500 puede determinar el tamaño de lista de candidatos de predictor de vector de movimiento de acuerdo con el valor máximo del número de candidatos de predictor de vector de movimiento. Por consiguiente, es posible generar un flujo de bits a partir del cual la unidad de descodificación de longitud variable 516 del aparato de descodificación de instantáneas en movimiento 500 puede descodificar un índice de predictor de vector de movimiento en un flujo de bits sin hacer referencia a información de bloques adyacentes o un bloque ubicado conjuntamente, lo que da como resultado una reducción de la cantidad de procesamiento que va a ser realizado por la unidad de descodificación de longitud variable 516.
Aunque la presente realización describe un ejemplo en el que se usa el modo de designación de predictor de vector de movimiento en el que se generan candidatos de predictor de vector de movimiento a partir de bloques adyacentes a un bloque actual que se va a codificar, y se codifica un vector de movimiento del bloque actual, la presente realización no se limita necesariamente a esto. Por ejemplo, se puede usar un modo directo o un modo de salto. En el modo directo o el modo de salto, una diferencia de vector de movimiento puede no añadirse a un flujo de bits al seleccionar un predictor de vector de movimiento de entre los candidatos de predictor de vector de movimiento creados como se muestra en (b) en la figura 30 y (b) en la figura 31, y generar directamente una imagen predicha usando el predictor de vector de movimiento seleccionado como un vector de movimiento.
[Realización 6]
La presente realización es una modificación del aparato de codificación de instantáneas en movimiento de acuerdo con la realización 5 anteriormente. Lo siguiente es una descripción específica de un aparato de codificación de instantáneas en movimiento de acuerdo con la realización 6.
La figura 36 es un diagrama de bloques que muestra una configuración de un aparato de codificación de instantáneas en movimiento 600 de acuerdo con una realización 6. El aparato de codificación de instantáneas en movimiento 600 genera un flujo de bits mediante la codificación de una imagen de una forma bloque a bloque. El aparato de codificación de instantáneas en movimiento 600 incluye una unidad de obtención de candidatos de predictor de vector de movimiento 610, una unidad de control de predicción 620 y una unidad de codificación 630.
La unidad de obtención de candidatos de predictor de vector de movimiento 610 se corresponde con la unidad de cálculo de candidatos de predictor de vector de movimiento 514 en la realización 5 anteriormente. La unidad de obtención de candidatos de predictor de vector de movimiento 610 obtiene candidatos de predictor de vector de movimiento. Entonces, la unidad de obtención de candidatos de predictor de vector de movimiento 610 genera unas listas de candidatos de predictor de vector de movimiento en las que cada candidato de predictor de vector de movimiento obtenido está asociado con un índice para identificar el candidato de predictor de vector de movimiento, por ejemplo.
Como se muestra en la figura 36, la unidad de obtención de candidatos de predictor de vector de movimiento 610 incluye una unidad de determinación de número máximo 611, una primera unidad de obtención 612, una unidad de identificación 613, una unidad de determinación 614 y una segunda unidad de obtención 615.
La unidad de determinación de número máximo 611 determina el número máximo de candidatos de predictor de vector de movimiento. En concreto, la unidad de determinación de número máximo 611 determina el valor máximo N del número de candidatos de bloque de predicción.
Por ejemplo, la unidad de determinación de número máximo 611 determina el número máximo de candidatos de predictor de vector de movimiento, basándose en características de una secuencia de imágenes de entrada (secuencia, instantáneas, sectores o bloques). Además, por ejemplo, la unidad de determinación de número máximo 611 puede determinar un número predeterminado como el número máximo de candidatos de predictor de vector de movimiento.
La primera unidad de obtención 612 obtiene cada primer candidato de predictor de vector de movimiento, basándose en un vector de movimiento usado para codificar un bloque espacial o temporalmente adyacente a un bloque actual que se va a codificar. En el presente caso, la primera unidad de obtención 612 obtiene uno o más primeros candidatos de predictor de vector de movimiento de tal modo que el número de primeros candidatos de predictor de vector de movimiento no supera el número máximo. Entonces, por ejemplo, la primera unidad de obtención 612 registra, en las listas de candidatos de predictor de vector de movimiento, los uno o más primeros candidatos de predictor de vector de movimiento obtenidos de esta forma, cada uno en asociación con un índice de predictor de vector de movimiento.
Se debería hacer notar que, por ejemplo, la primera unidad de obtención 612 puede obtener, como el primer candidato de predictor de vector de movimiento, un vector de movimiento usado para codificar un bloque que es un bloque espacialmente adyacente a un bloque actual que se va a codificar, y no es un bloque que es un candidato de predictor no disponible. Un bloque que es un candidato de predictor no disponible es un bloque codificado por intra predicción, un bloque ubicado fuera de un límite de un sector o una instantánea que incluye un bloque actual que se va a codificar, o un bloque que no se ha codificado aún. Por consiguiente, el primer candidato de predictor de vector de movimiento se puede obtener a partir de un bloque adecuado para obtener un candidato de predictor de vector de movimiento.
La unidad de identificación 613 identifica un primer candidato de predictor de vector de movimiento (candidato redundante) que tiene el mismo vector de movimiento que el de cualquier otro primer candidato de predictor de vector de movimiento, si se obtiene una pluralidad de los primeros candidatos de predictor de vector de movimiento. Entonces, la unidad de identificación 613 borra el candidato redundante identificado de la correspondiente de las listas de candidatos de predictor de vector de movimiento.
La unidad de determinación 614 determina si el número de primeros candidatos de predictor de vector de movimiento es más pequeño que el número máximo determinado. En el presente caso, la unidad de determinación 614 determina si el número de primeros candidatos de predictor de vector de movimiento excluyendo el primer candidato de predictor de vector de movimiento redundante identificado es más pequeño que el número máximo determinado.
Si se determina que el número de primeros candidatos de predictor de vector de movimiento es más pequeño que el número máximo determinado, la segunda unidad de obtención 615 obtiene uno o más segundos candidatos de predictor de vector de movimiento, teniendo cada uno un vector predeterminado como un vector de movimiento. En concreto, la segunda unidad de obtención 615 obtiene los segundos candidatos de predictor de vector de movimiento de tal modo que la suma del número de primeros candidatos de predictor de vector de movimiento y el número de segundos candidatos de predictor de vector de movimiento no supera el número máximo. En el presente caso, la segunda unidad de obtención 615 obtiene los segundos candidatos de predictor de vector de movimiento de tal modo que la suma del número de primeros candidatos de predictor de vector de movimiento excluyendo un candidato redundante y el número de segundos candidatos de predictor de vector de movimiento no supera el número máximo.
El vector predeterminado puede ser un vector nulo como en la realización 1 anterior anteriormente, por ejemplo. Se debería hacer notar que el vector predeterminado no necesita ser necesariamente un vector nulo.
Entonces, la segunda unidad de obtención 615 registra, en las listas de candidatos de predictor de vector de movimiento, los uno o más segundos candidatos de predictor de vector de movimiento obtenidos de esta forma, cada uno en asociación con un índice de predictor de vector de movimiento, por ejemplo. En este momento, la segunda unidad de obtención 615 puede registrar los segundos candidatos de predictor de vector de movimiento en una correspondiente de las listas de candidatos de predictor de vector de movimiento, de tal modo que un índice de predictor de vector de movimiento que tiene un valor más pequeño que el de los segundos candidatos de predictor de vector de movimiento se asigna a cada primer candidato de predictor de vector de movimiento. Por consiguiente, si hay una alta posibilidad de que el primer candidato de predictor de vector de movimiento sea seleccionado como un candidato de predictor de vector de movimiento que se va a usar para codificar en lugar de los segundos candidatos de predictor de vector de movimiento, el aparato de codificación de instantáneas en movimiento 600 puede reducir la cantidad de código, y mejorar la eficiencia de codificación.
Se debería hacer notar que la segunda unidad de obtención 615 no necesita obtener necesariamente los uno o más segundos candidatos de predictor de vector de movimiento de tal modo que la suma del número de primeros candidatos de predictor de vector de movimiento y el número de segundos candidatos de predictor de vector de movimiento será igual que el número máximo determinado. Si la suma del número de primeros candidatos de predictor de vector de movimiento y el número de segundos candidatos de predictor de vector de movimiento es más pequeña que el número máximo determinado, puede haber un valor de un índice de predictor de vector de movimiento que no está asociado con un candidato de predictor de vector de movimiento, por ejemplo.
La unidad de control de predicción 620 selecciona un predictor de vector de movimiento que se va a usar para codificar un bloque actual que se va a codificar, de entre uno o más primeros candidatos de predictor de vector de movimiento y los uno o más segundos candidatos de predictor de vector de movimiento. En concreto, la unidad de control de predicción 620 selecciona, de entre las listas de candidatos de predictor de vector de movimiento, un predictor de vector de movimiento que se va a usar para codificar el bloque actual.
La unidad de codificación 630 codifica un índice (índice de predictor de vector de movimiento) para identificar el candidato de predictor de vector de movimiento seleccionado, usando el número máximo determinado. En concreto, la unidad de codificación 630 codifica por longitud variable una cadena de bits asignada al valor de índice del candidato de predictor de vector de movimiento seleccionado, como se muestra en la figura 6. Además, la unidad de codificación 630 añade el índice codificado a un flujo de bits.
En el presente caso, la unidad de codificación 630 puede añadir adicionalmente información que indica el número máximo determinado por la unidad de determinación de número máximo 611 al flujo de bits. En concreto, la unidad de codificación 630 también puede escribir información que indica el número máximo, por ejemplo, en un encabezamiento de sector o similares. Por consiguiente, el número máximo se puede cambiar en una unidad adecuada, lo que puede mejorar la eficiencia de codificación.
Se debería hacer notar que la unidad de codificación 630 no necesita añadir necesariamente información que indica el número máximo a un flujo de bits. Por ejemplo, si el número máximo se determina previamente de acuerdo con una norma, o si el número máximo es igual que un valor por defecto, la unidad de codificación 630 no necesita añadir información que indica el número máximo a un flujo de bits.
A continuación se da una descripción de diversas operaciones del aparato de codificación de instantáneas en movimiento 600 constituido como se ha descrito anteriormente.
La figura 37 es un diagrama de flujo que muestra una operación de procesamiento del aparato de codificación de instantáneas en movimiento 600 de acuerdo con la realización 6.
En primer lugar, la unidad de determinación de número máximo 611 determina el número máximo de candidatos de predictor de vector de movimiento (S601). La primera unidad de obtención 612 obtiene uno o más primeros candidatos de predictor de vector de movimiento (S602). La unidad de identificación 613 identifica un primer candidato de predictor de vector de movimiento (candidato redundante) que tiene el mismo vector de movimiento que el de cualquier otro primer candidato de predictor de vector de movimiento, si se obtiene una pluralidad de los primeros candidatos de predictor de vector de movimiento (S603).
La unidad de determinación 614 determina si el número de primeros candidatos de predictor de vector de movimiento excluyendo un candidato redundante es más pequeño que el número máximo determinado (S604). En el presente caso, si se determina que el número de primeros candidatos de predictor de vector de movimiento excluyendo un candidato redundante es más pequeño que el número máximo determinado (Sí en S604), la segunda unidad de obtención 615 obtiene uno o más segundos candidatos de predictor de vector de movimiento, teniendo cada uno un vector predeterminado como un vector de movimiento (S605). Por otro lado, si no se determina que el número de primeros candidatos de predictor de vector de movimiento excluyendo un candidato redundante es más pequeño que el número máximo determinado (No en S604), la segunda unidad de obtención 615 no obtiene un segundo candidato de predictor de vector de movimiento. Estas etapas S604 y S605 se corresponden con la etapa S514 en la realización 5.
La unidad de control de predicción 620 selecciona un predictor de vector de movimiento que se va a usar para codificar un bloque actual que se va a codificar de entre los uno o más primeros candidatos de predictor de vector de movimiento y los uno o más segundos candidatos de predictor de vector de movimiento (S606). Por ejemplo, la unidad de control de predicción 620 selecciona un predictor de vector de movimiento con el que una diferencia de vector de movimiento es la más pequeña de entre las listas de candidatos de predictor de vector de movimiento, como en la realización 1.
La unidad de codificación 630 codifica un índice para identificar el candidato de predictor de vector de movimiento seleccionado usando el número máximo determinado (S607). Además, la unidad de codificación 630 añade el índice codificado a un flujo de bits.
Como se ha descrito anteriormente, de acuerdo con el aparato de codificación de instantáneas en movimiento 600 de acuerdo con la presente realización, se pueden obtener los uno o más segundos candidatos de predictor de vector de movimiento, teniendo cada uno un vector predeterminado como un vector de movimiento. Por lo tanto, el aparato de codificación de instantáneas en movimiento 600 puede obtener un candidato de predictor de vector de movimiento que tiene, por ejemplo, un vector de movimiento de área estática o similares, como el segundo candidato de predictor de vector de movimiento. En concreto, el aparato de codificación de instantáneas en movimiento 600 puede codificar de forma eficiente un bloque actual que se va a codificar que tiene un movimiento predeterminado, y puede mejorar la eficiencia de codificación.
Además, de acuerdo con el aparato de codificación de instantáneas en movimiento 600 de acuerdo con la presente realización, un índice para identificar un candidato de predictor de vector de movimiento se puede codificar usando el número máximo determinado. En concreto, se puede codificar un índice sin depender del número de candidatos de predictor de vector de movimiento realmente obtenidos. Por lo tanto, incluso si se pierde la información necesaria para obtener un candidato de predictor de vector de movimiento (por ejemplo, información de un bloque ubicado conjuntamente y similares), un aparato de descodificación puede descodificar un índice, y se puede mejorar la resistencia a errores. Además, el aparato de descodificación puede descodificar un índice, sin depender del número de candidatos de predictor de vector de movimiento realmente obtenidos. En concreto, el aparato de descodificación puede descodificar el índice, sin aguardar la obtención de un candidato de predictor de vector de movimiento. Dicho de otra forma, es posible generar un flujo de bits para el cual se puede realizar en paralelo la obtención de un candidato de predictor de vector de movimiento y la descodificación de un índice.
Además, de acuerdo con el aparato de codificación de instantáneas en movimiento 600 de acuerdo con la presente realización, se pueden obtener uno o más segundos candidatos de predictor de vector de movimiento si se determina que el número de primeros candidatos de predictor de vector de movimiento es más pequeño que el número máximo. Por lo tanto, es posible aumentar el número de candidatos de predictor de vector de movimiento en un intervalo que no supera el número máximo, y mejorar la eficiencia de codificación.
Además, de acuerdo con el aparato de codificación de instantáneas en movimiento 600 de acuerdo con la presente realización, uno o más segundos candidatos de predictor de vector de movimiento se pueden obtener de acuerdo con el número de primeros candidatos de predictor de vector de movimiento excluyendo el primer candidato de predictor de vector de movimiento redundante. Como resultado, se puede aumentar el número de segundos candidatos de predictor de vector de movimiento, y se pueden aumentar los tipos de vectores de movimiento seleccionables como candidatos de predictor de vector de movimiento. Por lo tanto, es posible mejorar adicionalmente la eficiencia de codificación.
Se debería hacer notar que en la presente realización, aunque el aparato de codificación de instantáneas en movimiento 600 incluye la unidad de identificación 613, el aparato de codificación de instantáneas en movimiento 600 no necesita incluir necesariamente la unidad de identificación 613. En concreto, la etapa S603 no necesita incluirse necesariamente en el diagrama de flujo mostrado en la figura 37. Incluso en un caso de este tipo, el aparato de codificación de instantáneas en movimiento 600 puede codificar un índice para identificar un candidato de predictor de vector de movimiento usando el número máximo determinado y, por lo tanto, se puede mejorar la resistencia a errores.
Además, aunque en la presente realización, la primera unidad de obtención 612 obtiene los primeros candidatos de predictor de vector de movimiento y, a continuación de lo anterior, la unidad de identificación 613 identifica un candidato redundante como se muestra en la figura 37, no necesariamente el procesamiento necesita realizarse secuencialmente de esta forma. Por ejemplo, en el proceso de obtener los primeros candidatos de predictor de vector de movimiento, la primera unidad de obtención 612 puede identificar un candidato redundante, y obtener los primeros candidatos de predictor de vector de movimiento de tal modo que el candidato redundante identificado no se incluye en los primeros candidatos de predictor de vector de movimiento. En concreto, la primera unidad de obtención 612 puede obtener un candidato de predictor de vector de movimiento que no es igual que un vector de movimiento de cualquier candidato de predictor de vector de movimiento que ya se ha obtenido, como el primer candidato de predictor de vector de movimiento. Más en concreto, por ejemplo, cuando un candidato de predictor de vector de movimiento basándose en un bloque adyacente izquierdo ya se ha obtenido como el primer candidato de predictor de vector de movimiento, si un candidato de predictor de vector de movimiento basándose en un bloque adyacente superior no es igual que el candidato de predictor de vector de movimiento basándose en el bloque adyacente izquierdo, la primera unidad de obtención 612 puede obtener el candidato de predictor de vector de movimiento basándose en el bloque adyacente superior como el primer candidato de predictor de vector de movimiento. Esto permite que la primera unidad de obtención 612 excluya, de los primeros candidatos de predictor de vector de movimiento, un candidato de predictor de vector de movimiento que tiene el mismo vector de movimiento que un vector de movimiento de cualquiera de los primeros candidatos de predictor de vector de movimiento que ya se han obtenido. Como resultado, el aparato de codificación de instantáneas en movimiento 600 puede aumentar el número de segundos candidatos de predictor de vector de movimiento, y aumentar el tipo de vectores de movimiento seleccionables como candidatos de predictor de vector de movimiento. Por lo tanto, es posible mejorar adicionalmente la eficiencia de codificación.
[Realización 7]
La presente realización describe con detalle un procedimiento para obtener el tamaño de lista de candidatos de predictor de vector de movimiento diferente del procedimiento en la realización 2.
La figura 38 es un diagrama de bloques que muestra una configuración de un aparato de descodificación de instantáneas en movimiento 700 de acuerdo con la realización 4.
Como se muestra en la figura 38, el aparato de descodificación de instantáneas en movimiento 700 incluye una unidad de descodificación de longitud variable 701, una unidad de cuantificación inversa 702, una unidad de transformada ortogonal inversa 703, una unidad de adición 704, una memoria de bloques 705, una memoria de tramas 706, una unidad de intra predicción 707, una unidad de inter predicción 708, una unidad de control de inter predicción 709, un conmutador 710, una unidad de cálculo de candidatos de predictor de vector de movimiento 711 y una memoria de colPic 712.
La unidad de descodificación de longitud variable 701 realiza un procesamiento de descodificación de longitud variable sobre un flujo de bits de entrada, y genera información de tipo de instantánea, un indicador de dirección de predicción, un coeficiente de cuantificación y una diferencia de vector de movimiento. Además, la unidad de descodificación de longitud variable 701 realiza un procesamiento de descodificación de longitud variable sobre índices de predictor de vector de movimiento usando el número de candidatos de predictor disponibles descritos posteriormente.
La unidad de cuantificación inversa 702 realiza un procesamiento de cuantificación inversa sobre el coeficiente de cuantificación obtenido mediante un procesamiento de descodificación de longitud variable. La unidad de transformada ortogonal inversa 703 transforma un coeficiente de transformada ortogonal obtenido por un procesamiento de cuantificación inversa de un dominio de la frecuencia a un dominio de imágenes, para generar datos de error de predicción. La memoria de bloques 705 almacena datos de imagen descodificados generados al añadir datos de error de predicción y datos de imagen predichos, de una forma bloque a bloque. La memoria de tramas 706 almacena datos de imagen de una forma trama a trama.
La unidad de intra predicción 707 genera datos de imagen predichos de un bloque actual que se va a descodificar mediante la realización de una intra predicción usando datos de imagen en unidades de bloque almacenadas en la memoria de bloques 705. La unidad de inter predicción 708 genera datos de imagen predichos de un bloque actual que se va a descodificar mediante la realización de una inter predicción usando datos de imagen en unidades de trama almacenadas en la memoria de tramas 706.
Si se realiza una descodificación de intra predicción sobre el bloque actual, el conmutador 710 emite los datos de imagen intra predichos generados por la unidad de intra predicción 707 a la unidad de adición 704 como datos de imagen predichos del bloque actual. En contraposición, si se realiza una descodificación de inter predicción sobre el bloque actual, el conmutador 710 emite los datos de imagen inter predichos generados por la unidad de inter predicción 708 a la unidad de adición 704 como datos de imagen predichos del bloque actual.
Usando, por ejemplo, vectores de movimiento de bloques adyacentes a un bloque actual que se va a descodificar e información de colPic tal como información de un vector de movimiento de un bloque ubicado conjuntamente almacenado en la memoria de colPic 712, la unidad de cálculo de candidatos de predictor de vector de movimiento 711 obtiene candidatos de predictor de vector de movimiento en el modo de designación de predictor de vector de movimiento mediante el uso del procedimiento descrito posteriormente. Además, la unidad de cálculo de candidatos de predictor de vector de movimiento 711 asigna un valor de un índice de predictor de vector de movimiento a cada candidato de predictor de vector de movimiento obtenido. Entonces, la unidad de cálculo de candidatos de predictor de vector de movimiento 711 envía los candidatos de predictor de vector de movimiento y los índices de predictor de vector de movimiento a la unidad de control de inter predicción 709.
La unidad de control de inter predicción 709 selecciona, de entre los candidatos de predictor de vector de movimiento, un predictor de vector de movimiento que se va a usar para la inter predicción, basándose en el índice de predictor de vector de movimiento descodificado. Entonces, la unidad de control de inter predicción 709 calcula un vector de movimiento del bloque actual, basándose en el predictor de vector de movimiento y una diferencia de vector de movimiento. Entonces, la unidad de control de inter predicción 709 da lugar a que la unidad de inter predicción 708 genere una imagen inter predicha usando el vector de movimiento calculado. Además, la unidad de control de inter predicción 709 transfiere información de colPic que incluye información del vector de movimiento del bloque actual, y similares, a la memoria de colPic 712.
Por último, la unidad de adición 704 genera datos de imagen descodificados al añadir datos de imagen predichos y datos de error de predicción.
La figura 39 es un diagrama de flujo que muestra una operación de procesamiento del aparato de descodificación de instantáneas en movimiento de acuerdo con la realización 2.
En la etapa S701, la unidad de descodificación de longitud variable 701 descodifica un indicador de dirección de predicción y un índice de instantánea de referencia. Entonces, el valor de la dirección de predicción X se determina de acuerdo con el indicador de dirección de predicción descodificado, y se realiza el procesamiento de las siguientes etapas S702 a S705.
En la etapa S702, la unidad de cálculo de candidatos de predictor de vector de movimiento 711 calcula el número de candidatos de predictor disponibles, usando los procedimientos descritos en las realizaciones 1 y 2 o el procedimiento descrito posteriormente. Entonces, la unidad de cálculo de candidatos de predictor de vector de movimiento 711 establece el tamaño de lista de candidatos de predictor de vector de movimiento al número calculado de candidatos de predictor disponibles.
En la etapa S703, la unidad de descodificación de longitud variable 701 descodifica de longitud variable el índice de predictor de vector de movimiento en un flujo de bits usando el tamaño de lista de candidatos de predictor de vector de movimiento calculado. En la etapa S704, la unidad de cálculo de candidatos de predictor de vector de movimiento
711 genera candidatos de predictor de vector de movimiento a partir de bloques adyacentes al bloque actual y un bloque ubicado conjuntamente usando el procedimiento descrito posteriormente. En la etapa S705, la unidad de control de inter predicción 709 añade la diferencia de vector de movimiento descodificada al candidato de predictor de vector de movimiento indicado por el índice de predictor de vector de movimiento descodificado, para calcular un vector de movimiento. Entonces, la unidad de control de inter predicción 709 da lugar a que la unidad de inter predicción
708 genere una imagen inter predicha usando el vector de movimiento calculado.
Se debería hacer notar que si el tamaño de lista de candidatos de predictor de vector de movimiento calculado en la etapa S702 es "1", se puede estimar que un índice de predictor de vector de movimiento es 0, sin descodificarse.
La figura 40 es un diagrama de flujo que muestra un procesamiento detallado de la etapa S702 en la figura 39. En concreto, la figura 40 muestra un procedimiento para determinar si un candidato de bloque de predicción [N] es un candidato de predictor disponible, y calcular el número de candidatos de predictor disponibles. Lo siguiente es una descripción de la figura 40.
En la etapa S711, la unidad de cálculo de candidatos de predictor de vector de movimiento 711 determina si un candidato de bloque de predicción [N] (1) se descodifica por intra predicción, (2) está ubicado fuera de un límite de un sector o una instantánea que incluye un bloque actual que se va a descodificar, o (3) no descodificado aún.
En el presente caso, si el resultado de determinación en la etapa S711 es verdadero (Sí en S711), la unidad de cálculo de candidatos de predictor de vector de movimiento 711 establece el candidato de bloque de predicción [N] como un candidato de predictor no disponible en la etapa S712. Por otro lado, si el resultado de determinación en la etapa S711 es falso (No en S711), la unidad de cálculo de candidatos de predictor de vector de movimiento 711 establece el candidato de bloque de predicción [N] como un candidato de predictor disponible en la etapa S713.
En la etapa S714, la unidad de cálculo de candidatos de predictor de vector de movimiento 711 determina si el candidato de bloque de predicción [N] es un candidato de predictor disponible o un candidato de bloque ubicado conjuntamente. En el presente caso, si el resultado de determinación en la etapa S714 es verdadero (Sí en S714), la unidad de cálculo de candidatos de predictor de vector de movimiento 711 añade 1 al número de candidatos de predictor disponibles, y actualiza el valor en la etapa S5. Por otro lado, si el resultado de determinación en la etapa S714 es falso (No en S714), la unidad de cálculo de candidatos de predictor de vector de movimiento 711 no actualiza el número de candidatos de predictor disponibles.
Como se ha descrito anteriormente, si un candidato de bloque de predicción es un bloque ubicado conjuntamente, la unidad de cálculo de candidatos de predictor de vector de movimiento 711 añade 1 al número de candidatos de predictor disponibles, con independencia de si el bloque ubicado conjuntamente es un candidato de predictor disponible o un candidato de predictor no disponible. Por consiguiente, incluso si se pierde una información de un bloque ubicado conjuntamente debido a una pérdida de paquetes o similares, no hay diferencia alguna en el número de candidatos de predictor disponibles entre el aparato de codificación de instantáneas en movimiento y el aparato de descodificación de instantáneas en movimiento.
El tamaño de lista de candidatos de predictor de vector de movimiento se establece al número de candidatos de predictor disponibles en la etapa S702 en la figura 39. Además, en S703 en la figura 39, el tamaño de lista de candidatos de predictor de vector de movimiento se usa para descodificar con longitud variable unos índices de predictor de vector de movimiento. Por consiguiente, incluso si se pierde una información de instantáneas de referencia que incluye información de un bloque ubicado conjuntamente o similares, el aparato de descodificación de instantáneas en movimiento 700 puede descodificar con éxito índices de predictor de vector de movimiento.
La figura 41 es un diagrama de flujo que muestra un procesamiento detallado de la etapa S704 en la figura 39. En concreto, la figura 41 muestra un procedimiento para calcular candidatos de predictor de vector de movimiento. Lo siguiente es una descripción de la figura 41.
En la etapa S721, la unidad de cálculo de candidatos de predictor de vector de movimiento 711 obtiene un candidato de predictor de vector de movimiento en la dirección de predicción X a partir del candidato de bloque de predicción [N] usando las expresiones 1 y 2 anteriormente, y añade el candidato obtenido a una correspondiente de las listas de candidatos de predictor de vector de movimiento.
En la etapa S722, la unidad de cálculo de candidatos de predictor de vector de movimiento 711 busca y borra un candidato de predictor no disponible y un candidato redundante de las listas de candidatos de predictor de vector de movimiento, como se muestra en las figuras 30 y 31.
En la etapa S723, la unidad de cálculo de candidatos de predictor de vector de movimiento 711 añade un nuevo candidato a una correspondiente de las listas de candidatos de predictor de vector de movimiento usando el mismo procedimiento que el de la figura 34.
La figura 42 muestra un ejemplo de una sintaxis usada cuando se añade un índice de predictor de vector de movimiento a un flujo de bits. En la figura 42, indicador_inter_pred indica un indicador de dirección de predicción, e ind_pvm indica un índice de predictor de vector de movimiento. NumCPMVy indica el tamaño de lista de candidatos de predictor de vector de movimiento, y el tamaño se establece al número de candidatos de predictor disponibles calculados en el flujo de procesamiento en la figura 40 en la presente realización.
Como se ha descrito anteriormente, de acuerdo con el aparato de descodificación de instantáneas en movimiento 700 de acuerdo con la presente realización, el tamaño de lista de candidatos de predictor de vector de movimiento que se va a usar cuando se codifica o se descodifica un índice de predictor de vector de movimiento se puede calcular mediante el uso de un procedimiento independiente de una información de instantáneas de referencia que incluye información de un bloque ubicado conjuntamente y similares. Por consiguiente, el aparato de descodificación de instantáneas en movimiento 700 puede descodificar de forma apropiada un flujo de bits que tiene una resistencia a errores mejorada.
Más en concreto, el aparato de descodificación de instantáneas en movimiento 700 de acuerdo con la presente realización siempre añade 1 al número de candidatos de predictor disponibles si un candidato de bloque de predicción es un bloque ubicado conjuntamente, con independencia de si el bloque ubicado conjuntamente es un candidato de predictor disponible. Entonces, el aparato de descodificación de instantáneas en movimiento 700 determina cadenas de bits que se van a asignar a unos índices de predictor de vector de movimiento usando el número de candidatos de predictor disponibles calculados de esta forma. Por consiguiente, incluso si se pierde una información de instantáneas de referencia que incluye información de un bloque ubicado conjuntamente, el aparato de descodificación de instantáneas en movimiento 700 puede descodificar con éxito un índice de predictor de vector de movimiento.
Además, si el número de candidatos de predictor de vector de movimiento no ha alcanzado el número de candidatos de predictor disponibles, el aparato de descodificación de instantáneas en movimiento 700 de acuerdo con la presente realización puede descodificar de forma apropiada un flujo de bits para el cual se ha mejorado la eficiencia de codificación al añadir un nuevo candidato que tiene un predictor de vector de movimiento nuevo como un candidato de predictor de vector de movimiento.
Se debería hacer notar que en la presente realización, aunque el aparato de descodificación de instantáneas en movimiento 700 determina cadenas de bits que se van a asignar a unos índices de predictor de vector de movimiento usando el número de candidatos de predictor disponibles calculados al añadir siempre 1 cuando un candidato de bloque de predicción es un bloque ubicado conjuntamente, con independencia de si el bloque ubicado conjuntamente es un candidato de predictor disponible, la presente invención no se limita a esto. Por ejemplo, el aparato de descodificación de instantáneas en movimiento 700 puede determinar cadenas de bits que se van a asignar a unos índices de predictor de vector de movimiento, usando el número de candidatos de predictor disponibles calculados al también añadir siempre 1 en el caso de un candidato de bloque de predicción que no sea un bloque ubicado conjuntamente en la etapa S714 en la figura 40. En concreto, el aparato de descodificación de instantáneas en movimiento 700 puede asignar una cadena de bits a un índice de predictor de vector de movimiento, usando el tamaño de lista de candidatos de predictor de vector de movimiento fijado al valor máximo N del número de candidatos de predictor de vector de movimiento. Dicho de otra forma, suponiendo que todos los candidatos de bloque de predicción son candidatos de predictor disponibles, el aparato de descodificación de instantáneas en movimiento puede fijar el tamaño de lista de candidatos de predictor de vector de movimiento al valor máximo N del número de candidatos de predictor de vector de movimiento, y descodificar índices de predictor de vector de movimiento.
Por ejemplo, en la presente realización, debido a que el valor máximo N del número de candidatos de predictor de vector de movimiento es 5 (el bloque adyacente A, el bloque adyacente B, un bloque ubicado conjuntamente, el bloque adyacente C, el bloque adyacente D), el aparato de descodificación de instantáneas en movimiento 700 puede establecer siempre el tamaño de lista de candidatos de predictor de vector de movimiento a 5, y descodificar índices de predictor de vector de movimiento. Por consiguiente, la unidad de descodificación de longitud variable 701 del aparato de descodificación de instantáneas en movimiento 700 puede descodificar un índice de predictor de vector de movimiento en un flujo de bits, sin hacer referencia a información de bloques adyacentes o un bloque ubicado conjuntamente. Como resultado, por ejemplo, se puede omitir el procesamiento de las etapas S714 y S715 en la figura 40, por ejemplo, y, por lo tanto, se puede reducir la cantidad de procesamiento que va a ser realizado por la unidad de descodificación de longitud variable 701.
La figura 43 muestra un ejemplo de una sintaxis usada cuando el tamaño de lista de candidatos de predictor de vector de movimiento se fija al valor máximo del número de candidatos de predictor de vector de movimiento. Como se muestra en la figura 43, NumCPMVy se puede borrar de la sintaxis si el tamaño de lista de candidatos de predictor de vector de movimiento se fija al valor máximo del número de candidatos de predictor de vector de movimiento.
[Realización 8]
La presente realización es una modificación del aparato de descodificación de instantáneas en movimiento de acuerdo con la realización 7 anteriormente. Lo siguiente es una descripción específica de un aparato de descodificación de instantáneas en movimiento de acuerdo con la realización 8.
La figura 44 es un diagrama de bloques que muestra una configuración de un aparato de descodificación de instantáneas en movimiento 800 de acuerdo con la realización 8. El aparato de descodificación de instantáneas en movimiento 800 descodifica una imagen codificada incluida en un flujo de bits de una forma bloque a bloque. En concreto, el aparato de descodificación de instantáneas en movimiento 800 descodifica, de una forma bloque a bloque, una imagen codificada incluida en un flujo de bits generado por el aparato de codificación de instantáneas en movimiento 600 de acuerdo con la realización 6, por ejemplo. El aparato de descodificación de instantáneas en movimiento 800 incluye una unidad de obtención de candidatos de predictor de vector de movimiento 810, una unidad de descodificación 820 y una unidad de control de predicción 830.
La unidad de obtención de candidatos de predictor de vector de movimiento 810 se corresponde con la unidad de cálculo de candidatos de predictor de vector de movimiento 711 en la realización 7 anteriormente. La unidad de obtención de candidatos de predictor de vector de movimiento 810 obtiene candidatos de predictor de vector de movimiento. Entonces, la unidad de obtención de candidatos de predictor de vector de movimiento 810 genera unas listas de candidatos de predictor de vector de movimiento en las que cada candidato de predictor de vector de movimiento obtenido está asociado con un índice para identificar el candidato de predictor de vector de movimiento (índice de predictor de vector de movimiento), por ejemplo.
Como se muestra en la figura 44, la unidad de obtención de candidatos de predictor de vector de movimiento 810 incluye una unidad de determinación de número máximo 811, una primera unidad de obtención 812, una unidad de identificación 813, una unidad de determinación 814 y una segunda unidad de obtención 815.
La unidad de determinación de número máximo 811 determina el número máximo de candidatos de predictor de vector de movimiento. En concreto, la unidad de determinación de número máximo 811 determina el valor máximo N del número de candidatos de bloque de predicción.
Por ejemplo, la unidad de determinación de número máximo 811 puede determinar el número máximo de candidatos de predictor de vector de movimiento, usando el mismo procedimiento que el usado por la unidad de determinación de número máximo 611 en la realización 6. Además, por ejemplo, la unidad de determinación de número máximo 811 puede determinar el número máximo, basándose en información que indica el número máximo añadido a un flujo de bits. Por consiguiente, el aparato de descodificación de instantáneas en movimiento 800 puede descodificar una imagen codificada al cambiar el número máximo en una unidad adecuada.
Se debería hacer notar que, en el presente caso, aunque la unidad de determinación de número máximo 811 se incluye en la unidad de obtención de candidatos de predictor de vector de movimiento 810, la unidad de determinación de número máximo 811 se puede incluir en la unidad de descodificación 820.
La primera unidad de obtención 812 obtiene uno o más candidatos de predictor de vector de movimiento como con la primera unidad de obtención 612 en la realización 6. En concreto, la primera unidad de obtención 812 obtiene cada uno de los primeros candidatos de predictor de vector de movimiento, basándose en un vector de movimiento usado para descodificar un bloque espacial o temporalmente adyacente a un bloque actual que se va a descodificar. Entonces, por ejemplo, la primera unidad de obtención 812 registra, en las listas de candidatos de predictor de vector de movimiento, los uno o más primeros candidatos de predictor de vector de movimiento obtenidos de esta forma, cada uno en asociación con un índice de predictor de vector de movimiento.
Se debería hacer notar que la primera unidad de obtención 812 puede obtener, como el primer candidato de predictor de vector de movimiento, un vector de movimiento usado para descodificar un bloque que es espacialmente adyacente a un bloque actual que se va a descodificar, y no es un candidato de predictor no disponible, por ejemplo. Por consiguiente, el primer candidato de predictor de vector de movimiento se puede obtener a partir de un bloque adecuado para obtener un candidato de predictor de vector de movimiento.
La unidad de identificación 813 identifica un primer candidato de predictor de vector de movimiento (candidato redundante) que tiene el mismo vector de movimiento que el de cualquier otro primer candidato de predictor de vector de movimiento, si se obtiene una pluralidad de los primeros candidatos de predictor de vector de movimiento. Entonces, la unidad de identificación 813 borra el candidato redundante identificado de la correspondiente de las listas de candidatos de predictor de vector de movimiento.
La unidad de determinación 814 determina si el número de primeros candidatos de predictor de vector de movimiento es más pequeño que el número máximo determinado. En el presente caso, la unidad de determinación 814 determina si el número de primeros candidatos de predictor de vector de movimiento excluyendo el primer candidato de predictor de vector de movimiento redundante identificado es más pequeño que el número máximo determinado.
Si se determina que el número de primeros candidatos de predictor de vector de movimiento es más pequeño que el número máximo determinado, la segunda unidad de obtención 815 obtiene uno o más segundos candidatos de predictor de vector de movimiento, teniendo cada uno un vector predeterminado como un vector de movimiento. En concreto, la segunda unidad de obtención 815 obtiene los segundos candidatos de predictor de vector de movimiento de tal modo que la suma del número de primeros candidatos de predictor de vector de movimiento y el número de segundos candidatos de predictor de vector de movimiento no supera el número máximo. En el presente caso, la segunda unidad de obtención 815 obtiene los segundos candidatos de predictor de vector de movimiento de tal modo que la suma del número de primeros candidatos de predictor de vector de movimiento excluyendo un candidato redundante y el número de segundos candidatos de predictor de vector de movimiento no supera el número máximo.
El vector predeterminado puede ser un vector nulo como en la realización 3 anteriormente, por ejemplo. Por consiguiente, la segunda unidad de obtención 815 puede obtener un candidato de predictor de vector de movimiento que tiene un vector de movimiento de área estática. En consecuencia, el aparato de descodificación de instantáneas en movimiento 800 puede descodificar de forma apropiada un flujo de bits para el cual se ha mejorado la eficiencia de codificación. Se debería hacer notar que el vector predeterminado no necesita ser necesariamente un vector nulo.
Entonces, la segunda unidad de obtención 815 registra, en las listas de candidatos de predictor de vector de movimiento, los uno o más segundos candidatos de predictor de vector de movimiento obtenidos de esta forma, cada uno en asociación con un índice de predictor de vector de movimiento, por ejemplo. En este momento, la segunda unidad de obtención 815 puede registrar cada segundo candidato de predictor de vector de movimiento en una correspondiente de las listas de candidatos de predictor de vector de movimiento, de tal modo que un índice de predictor de vector de movimiento que tiene un valor más pequeño que el de los segundos candidatos de predictor de vector de movimiento se asigna a cada primer candidato de predictor de vector de movimiento. En consecuencia, el aparato de descodificación de instantáneas en movimiento 800 puede descodificar de forma apropiada un flujo de bits para el cual se ha mejorado la eficiencia de codificación.
Se debería hacer notar que la segunda unidad de obtención 815 no necesita obtener necesariamente los uno o más segundos candidatos de predictor de vector de movimiento de tal modo que la suma del número de primeros candidatos de predictor de vector de movimiento y el número de segundos candidatos de predictor de vector de movimiento será igual que el número máximo determinado. Si la suma del número de primeros candidatos de predictor de vector de movimiento y el número de segundos candidatos de predictor de vector de movimiento es más pequeña que el número máximo determinado, puede haber un valor de un índice de predictor de vector de movimiento que no está asociado con un candidato de predictor de vector de movimiento, por ejemplo.
La unidad de descodificación 820 descodifica, usando el número máximo determinado, un índice codificado añadido a un flujo de bits y usado para identificar un candidato de predictor de vector de movimiento.
La unidad de control de predicción 830 selecciona un predictor de vector de movimiento que se va a usar para descodificar un bloque actual que se va a descodificar, de entre los uno o más primeros candidatos de predictor de vector de movimiento y los uno o más segundos candidatos de predictor de vector de movimiento, basándose en el índice descodificado. En concreto, la unidad de control de predicción 830 selecciona, de entre las listas de candidatos de predictor de vector de movimiento, un predictor de vector de movimiento que se va a usar para descodificar un bloque actual que se va a descodificar.
A continuación se da una descripción de diversas operaciones del aparato de descodificación de instantáneas en movimiento 800 constituido como se ha descrito anteriormente.
La figura 45 es un diagrama de flujo que muestra una operación de procesamiento del aparato de descodificación de instantáneas en movimiento 800 de acuerdo con la realización 8.
En primer lugar, la unidad de determinación de número máximo 811 determina el número máximo de candidatos de predictor de vector de movimiento (S801). La primera unidad de obtención 812 obtiene uno o más primeros candidatos de predictor de vector de movimiento (S802). La unidad de identificación 813 identifica un primer candidato de predictor de vector de movimiento (candidato redundante) que tiene el mismo vector de movimiento que el de cualquier otro primer candidato de predictor de vector de movimiento, si se obtiene una pluralidad de los primeros candidatos de predictor de vector de movimiento (S803).
La unidad de determinación 814 determina si el número de primeros candidatos de predictor de vector de movimiento excluyendo un candidato redundante es más pequeño que el número máximo determinado (S804). En el presente caso, si se determina que el número de primeros candidatos de predictor de vector de movimiento excluyendo un candidato redundante es más pequeño que el número máximo determinado (Sí en S804), la segunda unidad de obtención 815 obtiene uno o más segundos candidatos de predictor de vector de movimiento (S805). Por otro lado, si no se determina que el número de primeros candidatos de predictor de vector de movimiento excluyendo un candidato redundante es más pequeño que el número máximo determinado (No en S804), la segunda unidad de obtención 815 no obtiene un segundo candidato de predictor de vector de movimiento.
La unidad de descodificación 820 descodifica un índice codificado añadido a un flujo de bits y usado para identificar un candidato de predictor de vector de movimiento, usando el número máximo determinado (S806).
La unidad de control de predicción 830 selecciona, de entre los uno o más primeros candidatos de predictor de vector de movimiento y los uno o más segundos candidatos de predictor de vector de movimiento, un predictor de vector de movimiento que se va a usar para descodificar un bloque actual que se va a descodificar, basándose en el índice descodificado (S807).
Se debería hacer notar que, en el presente caso, aunque se descodifica un índice (S806) después de que se haya obtenido un candidato de predictor de vector de movimiento, no necesariamente el procesamiento necesita realizarse en un orden de este tipo. Por ejemplo, el procesamiento para obtener un candidato de predictor de vector de movimiento (S802 a S805) se puede realizar después de descodificar un índice (S806). Además, descodificar un índice (S806) y obtener un candidato de predictor de vector de movimiento (S802 a S805) se puede realizar en paralelo. Por consiguiente, se puede aumentar la velocidad de procesamiento de descodificación.
Como se ha descrito anteriormente, de acuerdo con el aparato de descodificación de instantáneas en movimiento 800 de acuerdo con la presente realización, se pueden obtener los uno o más segundos candidatos de predictor de vector de movimiento, teniendo cada uno un vector predeterminado como un vector de movimiento. Por lo tanto, el aparato de descodificación de instantáneas en movimiento 800 puede obtener, por ejemplo, un candidato de predictor de vector de movimiento que tiene un vector de movimiento de área estática o similares como el segundo candidato de predictor de vector de movimiento. En concreto, el aparato de descodificación de instantáneas en movimiento 800 puede descodificar de forma apropiada un flujo de bits en el que se codifica de forma eficiente un bloque que tiene un movimiento predeterminado, y descodificar de forma apropiada el flujo de bits para el cual se ha mejorado la eficiencia de codificación.
Además, de acuerdo con el aparato de descodificación de instantáneas en movimiento 800 de acuerdo con la presente realización, un índice para identificar un candidato de predictor de vector de movimiento se puede descodificar usando el número máximo determinado. En concreto, un índice se puede descodificar sin depender del número de candidatos de predictor de vector de movimiento realmente obtenidos. Por lo tanto, incluso si se pierde una información (por ejemplo, información de un bloque ubicado conjuntamente y similares) necesaria para obtener un candidato de predictor de vector de movimiento, el aparato de descodificación de instantáneas en movimiento 800 puede descodificar el índice y, por lo tanto, se puede mejorar la resistencia a errores. Además, el aparato de descodificación de instantáneas en movimiento 800 puede descodificar un índice sin aguardar la obtención de un candidato de predictor de vector de movimiento y, por lo tanto, también puede realizar en paralelo la obtención de un candidato de predictor de vector de movimiento y la descodificación de un índice.
Además, de acuerdo con el aparato de descodificación de instantáneas en movimiento 800 de acuerdo con la presente realización, si se determina que el número de primeros candidatos de predictor de vector de movimiento es más pequeño que el número máximo, se pueden obtener uno o más segundos candidatos de predictor de vector de movimiento. Por lo tanto, el aparato de descodificación de instantáneas en movimiento 800 puede aumentar el número de candidatos de predictor de vector de movimiento en un intervalo que no supera el número máximo, y descodificar de forma apropiada un flujo de bits para el cual se ha mejorado la eficiencia de codificación.
Además, de acuerdo con el aparato de descodificación de instantáneas en movimiento 800 de acuerdo con la presente realización, uno o más segundos candidatos de predictor de vector de movimiento se pueden obtener de acuerdo con el número de primeros candidatos de predictor de vector de movimiento excluyendo un primer candidato de predictor de vector de movimiento redundante. Como resultado, el aparato de descodificación de instantáneas en movimiento 800 puede aumentar el número de segundos candidatos de predictor de vector de movimiento, y aumentar los tipos de vectores de movimiento seleccionables como candidatos de predictor de vector de movimiento. En consecuencia, el aparato de descodificación de instantáneas en movimiento 800 puede descodificar de forma apropiada un flujo de bits para el cual se ha mejorado adicionalmente la eficiencia de codificación.
Se debería hacer notar que en la presente realización, aunque el aparato de descodificación de instantáneas en movimiento 800 incluye la unidad de identificación 813, el aparato de descodificación de instantáneas en movimiento 800 no necesita incluir necesariamente la unidad de identificación 813, como en la realización 6. En concreto, la etapa S803 no necesita incluirse necesariamente en el diagrama de flujo mostrado en la figura 45. Incluso en un caso de este tipo, el aparato de descodificación de instantáneas en movimiento 800 puede descodificar un índice para identificar un candidato de predictor de vector de movimiento usando el número máximo determinado y, por lo tanto, puede mejorar la resistencia a errores.
Además, aunque en la presente realización, la primera unidad de obtención 812 obtiene los primeros candidatos de predictor de vector de movimiento y, a continuación de lo anterior, la unidad de identificación 813 identifica un candidato redundante como se muestra en la figura 45, no necesariamente el procesamiento necesita realizarse secuencialmente de esta forma. Por ejemplo, la primera unidad de obtención 812 puede obtener un candidato de predictor de vector de movimiento que tiene un vector de movimiento que no es el mismo que el de cualquier candidato de predictor de vector de movimiento ya obtenido, como el primer candidato de predictor de vector de movimiento. Esto permite que la primera unidad de obtención 812 excluya, de los primeros candidatos de predictor de vector de movimiento, un candidato de predictor de vector de movimiento que tiene el mismo vector de movimiento que un vector de movimiento de cualquiera de los primeros candidatos de predictor de vector de movimiento que ya se han obtenido. Como resultado, el aparato de descodificación de instantáneas en movimiento 800 puede aumentar el número de segundos candidatos de predictor de vector de movimiento, y aumentar los tipos de vectores de movimiento seleccionables como candidatos de predictor de vector de movimiento. En consecuencia, el aparato de descodificación de instantáneas en movimiento 800 puede descodificar de forma apropiada un flujo de bits para el cual se ha mejorado adicionalmente la eficiencia de codificación.
Aunque lo anterior es una descripción del aparato de codificación de instantáneas en movimiento y el aparato de descodificación de instantáneas en movimiento de acuerdo con uno o más aspectos de la presente invención, basándose en las realizaciones, la presente invención no se limita a las realizaciones anteriores. La materia objeto desvelada en el presente documento se ha de considerar únicamente descriptiva e ilustrativa, y las reivindicaciones adjuntas son de un ámbito que tiene por objeto cubrir y abarcar no solo las realizaciones particulares desveladas, sino también estructuras, procedimientos y/o usos equivalentes.
Cada uno de los elementos constituyentes en las realizaciones anteriormente descritas puede configurarse en forma de un producto de hardware exclusivo, o pueden realizarse ejecutando un programa de software adecuado para el elemento estructural. Cada uno de los elementos constituyentes puede realizarse por medio de que una unidad de ejecución de programa, tal como una CPU y un procesador, lea y ejecute el programa de software registrado en un medio de grabación tal como un disco duro o una memoria de semiconductores. En el presente caso, el programa de software para realizar el aparato de codificación de instantáneas en movimiento o el aparato de descodificación de instantáneas en movimiento de acuerdo con las realizaciones anteriores es un programa descrito posteriormente.
En concreto, este programa da lugar a que un ordenador ejecute un procedimiento de codificación de instantáneas en movimiento para calcular un predictor de vector de movimiento que se va a usar cuando se codifica un vector de movimiento de un bloque actual que se va a codificar, y codificar el bloque actual, para generar un flujo de bits, incluyendo el procedimiento: obtener cada uno de uno o más primeros candidatos de predictor de vector de movimiento, basándose en un vector de movimiento usado para codificar un bloque espacial o temporalmente adyacente al bloque actual; obtener uno o más segundos candidatos de predictor de vector de movimiento, teniendo cada uno un vector predeterminado como un vector de movimiento; seleccionar, de entre los uno o más primeros candidatos de predictor de vector de movimiento y los uno o más segundos candidatos de predictor de vector de movimiento, el predictor de vector de movimiento que se va a usar para codificar el vector de movimiento del bloque actual; y añadir un índice para identificar el predictor de vector de movimiento al flujo de bits.
Como alternativa, este programa da lugar a que el ordenador ejecute un procedimiento de descodificación de instantáneas en movimiento para calcular un predictor de vector de movimiento que se va a usar cuando se descodifica un vector de movimiento de un bloque actual que se va a descodificar que se incluye en un flujo de bits, y descodificar el bloque actual, incluyendo el procedimiento: obtener cada uno de uno o más primeros candidatos de predictor de vector de movimiento, basándose en un vector de movimiento usado para descodificar un bloque espacial o temporalmente adyacente al bloque actual; obtener uno o más segundos candidatos de predictor de vector de movimiento, teniendo cada uno un vector predeterminado como un vector de movimiento; obtener un índice para identificar uno de uno o más candidatos de predictor de vector de movimiento a partir del flujo de bits; y seleccionar, basándose en el índice obtenido, el predictor de vector de movimiento que se va a usar cuando se descodifica el bloque actual, de entre los uno o más primeros candidatos de predictor de vector de movimiento y los uno o más segundos candidatos de predictor de vector de movimiento.
[Realización 9]
El procesamiento descrito en cada una de las realizaciones puede implementarse simplemente en un sistema informático independiente, grabando, en un medio de grabación, un programa para que implementa las configuraciones del procedimiento de codificación de instantáneas en movimiento (procedimiento de codificación de imágenes) y el procedimiento de descodificación de instantáneas en movimiento (procedimiento de descodificación de imágenes) descritos en cada una de las realizaciones. El medio de grabación puede ser cualquier medio de grabación siempre que el programa pueda grabarse, tal como un disco magnético, un disco óptico, un disco óptico magnético, una tarjeta de C i, y una memoria de semiconductores.
Posteriormente en el presente documento, se describirán las aplicaciones al procedimiento de codificación de instantáneas en movimiento (procedimiento de codificación de imágenes) y al procedimiento de descodificación de instantáneas en movimiento (procedimiento de descodificación de imágenes) descritos en cada una de las realizaciones, y sistemas que usan los mismos. El sistema tiene una característica de tener un aparato de codificación y de descodificación de imágenes que incluye un aparato de codificación de imágenes que usa el procedimiento de codificación de imágenes y un aparato de descodificación de imágenes que usa el procedimiento de descodificación de imágenes. Otras configuraciones en el sistema se pueden cambiar según sea apropiado, dependiendo de los casos.
La figura 46 ilustra una configuración global de un sistema de provisión de contenido ex100 para implementar servicios de distribución de contenido. El área para proporcionar servicios de comunicación se divide en células de tamaño deseado, y las estaciones base ex106, ex107, ex108, ex109 y ex110 que son estaciones inalámbricas fijas se colocan en cada una de las células.
El sistema de provisión de contenido ex100 está conectado a dispositivos, tales como a un ordenador ex111, un asistente digital personal (PDA) ex112, una cámara ex113, un teléfono celular ex114 y una máquina de juegos ex115, mediante Internet ex101, un proveedor de servicios de Internet ex102, una red de telefonía ex104, así como a las estaciones base ex106 a ex110, respectivamente.
Sin embargo, la configuración del sistema de provisión de contenido ex100 no se limita a la configuración mostrada en la figura 46, y es aceptable una combinación en la que está conectado cualquiera de los elementos. Además, cada dispositivo puede estar directamente conectado a la red de telefonía ex104, en lugar de mediante las estaciones base ex106 a ex110 que son las estaciones inalámbricas fijas. Adicionalmente, los dispositivos pueden interconectarse entre sí mediante una comunicación inalámbrica de corta distancia y otras.
La cámara ex113, tal como una cámara de vídeo digital, puede capturar vídeo. Una cámara ex116, tal como una cámara digital, puede capturar tanto imágenes fijas como vídeo. Adicionalmente, el teléfono ex114 celular puede ser el que cumple cualquiera de las normas tales como el Sistema Global para Comunicación Móvil (GSM) (marca registrada), Acceso Múltiple por División de Código (CDMA), Acceso Múltiple por División de Código de Banda Ancha (W-CDMA), Evolución a Largo Plazo (LTE) y Acceso por Paquetes a Alta Velocidad (HSPA). Como alternativa, el teléfono ex114 celular puede ser un Sistema Móvil Personal (PHS).
En el sistema ex100 de suministro de contenido, un servidor ex103 de envío por flujo continuo está conectado a la cámara ex113 y a otros mediante la red ex104 de telefonía y la estación base ex109, que posibilita la distribución de imágenes de un espectáculo en directo y otros. En una distribución de este tipo, un contenido (por ejemplo, vídeo de un espectáculo en directo de música) capturado por el usuario que usa la cámara ex113 se codifica como se ha descrito anteriormente en cada una de las realizaciones (es decir, la cámara funciona como el aparato de codificación de imágenes de acuerdo con un aspecto de la presente invención), y el contenido codificado se transmite al servidor de flujo continuo ex103. Por otra parte, el servidor de flujo continuo ex103 lleva a cabo distribución de flujo en los datos de contenido transmitidos a los clientes tras sus solicitudes. Los clientes incluyen el ordenador ex111, el PDA ex112, la cámara ex113, el teléfono celular ex114, y la máquina de juegos ex115 que pueden descodificar los datos codificados anteriormente mencionados. Cada uno de los dispositivos que han recibido los datos distribuidos descodifican y reproducen los datos codificados (es decir, funciona como el aparato de descodificación de imágenes de acuerdo con un aspecto de la presente invención).
Los datos capturados pueden codificarse por la cámara ex113 o el servidor de flujo continuo ex103 que transmite los datos, o los procedimientos de codificación pueden compartirse entre la cámara ex113 y el servidor de flujo continuo ex103. De manera similar, los datos distribuidos pueden descodificarse por los clientes o el servidor de flujo continuo ex103, o los procedimientos de descodificaciones pueden compartirse entre los clientes y el servidor de flujo continuo ex103. Adicionalmente, los datos de las imágenes fijas y el vídeo capturado no únicamente por la cámara ex113 sino también por la cámara ex116 pueden transmitirse al servidor de flujo continuo ex103 a través del ordenador ex111. Los procedimientos de codificación pueden realizarse por la cámara ex116, el ordenador ex111, o el servidor de flujo continuo ex103, o compartirse entre ellos.
Adicionalmente, los procedimientos de codificación y descodificación pueden realizarse por un LSI ex500 generalmente incluido en cada uno del ordenador ex111 y los dispositivos. El LSI ex500 puede estar configurado de un único chip o una pluralidad de chips. El software para codificar y descodificar vídeo puede estar integrado en algún tipo de un medio de grabación (tal como un CD-ROM, un disco flexible y un disco duro) que es legible por el ordenador ex111 y otros, y los procedimientos de codificación y descodificación pueden realizarse usando el software. Adicionalmente, cuando el teléfono celular ex114 está equipado con una cámara, los datos de vídeo obtenidos por la cámara pueden transmitirse. Los datos de vídeo son datos codificados por el LSI ex500 incluido en el teléfono celular ex114.
Adicionalmente, el servidor de flujo continuo ex103 puede estar compuesto por servidores y ordenadores, y puede descentralizar los datos y procesar los datos descentralizados, registrar o distribuir los datos.
Como se ha descrito anteriormente, los clientes pueden recibir y reproducir los datos codificados en el sistema de provisión de contenido ex100. En otras palabras, los clientes pueden recibir y descodificar información transmitida por el usuario, y reproducir los datos descodificados en tiempo real en el sistema de provisión de contenido ex100, de modo que el usuario que no tiene ningún derecho y equipo particular puede implementar difusión personal.
Además del ejemplo del sistema de provisión de contenido ex100, al menos uno del aparato de codificación de instantáneas en movimiento (aparato de codificación de imágenes) y el aparato de descodificación de instantáneas en movimiento (aparato de descodificación de imágenes) descritos en cada una de las realizaciones pueden implementarse en un sistema de difusión digital ex200 ilustrado en la figura 47. Más específicamente, una estación de difusión ex201 comunica o transmite mediante ondas de radio a un satélite de difusión ex202, datos multiplexados obtenidos multiplexando datos de audio y otros en datos de vídeo. Los datos de vídeo son datos codificados por el procedimiento de codificación de instantáneas en movimiento descrito en cada una de las realizaciones (es decir, datos codificados por el aparato de codificación de imágenes de acuerdo con un aspecto de la presente invención). Tras la recepción de los datos multiplexados, el satélite de difusión ex202 transmite ondas de radio para difusión. A continuación, una antena de uso doméstico ex204 con una función de recepción de difusión por satélite recibe las ondas de radio. A continuación, un dispositivo tal como una televisión (receptor) ex300 y un descodificador de salón (STB) ex217 descodifica los datos multiplexados recibidos, y reproduce los datos descodificados (es decir, funciona como el aparato de descodificación de imágenes de acuerdo con un aspecto de la presente invención).
Adicionalmente, un lector/grabador ex218 (i) lee y descodifica los datos multiplexados grabados en un medio de grabación ex215, tal como un DVD y un BD, o (i) codifica señales de vídeo en el medio de grabación ex215, y en algunos casos, escribe datos obtenidos multiplexando una señal de audio en los datos codificados. El lector/grabador ex218 puede incluir el aparato de descodificación de instantáneas en movimiento o el aparato de codificación de instantáneas en movimiento como se muestra en cada una de las realizaciones. En este caso, las señales de vídeo reproducidas se visualizan en el monitor ex219, y pueden reproducirse por otro dispositivo o sistema usando el medio de grabación ex215 en el que se graban los datos multiplexados. Es también posible implementar el aparato de descodificación de instantáneas en movimiento en el descodificador de salón ex217 conectado al cable ex203 para una televisión por cable o a la antena ex204 para difusión por satélite y/o terrestre, para visualizar las señales de vídeo en el monitor ex219 de la televisión ex300. El aparato de descodificación de instantáneas en movimiento puede implementarse no en el descodificador de salón sino en la televisión ex300.
La figura 48 ilustra la televisión (receptor) ex300 que usa el procedimiento de codificación de instantáneas en movimiento y el procedimiento de descodificación de instantáneas en movimiento descritos en cada una de las realizaciones. La televisión ex300 incluye: un sintonizador ex301 que obtiene o proporciona datos multiplexados obtenidos multiplexando datos de audio en datos de vídeo, a través de la antena ex204 o el cable ex203, etc., que recibe una difusión; una unidad de modulación/desmodulación ex302 que desmodula los datos multiplexados recibidos o modula datos en datos multiplexados a suministrarse al exterior; y una unidad de multiplexación/desmultiplexación ex303 que desmultiplexa los datos multiplexados modulados en datos de vídeo y datos de audio, o multiplexa datos de vídeo y datos de audio codificados por una unidad de procesamiento de señal en datos ex306.
La televisión ex300 incluye adicionalmente: una unidad de procesamiento de señales ex306 que incluye una unidad de procesamiento de señales de audio ex304 y una unidad de procesamiento de señales de vídeo ex305 que descodifican datos de audio y datos de vídeo y codifican datos de audio y datos de vídeo, respectivamente (que funcionan como el aparato de codificación de imágenes y el aparato de descodificación de imágenes de acuerdo con los aspectos de la presente invención); y una unidad de salida ex309 que incluye un altavoz ex307 que proporciona la señal de audio descodificada, y una unidad de visualización ex308 que visualiza la señal de vídeo descodificada, tal como una pantalla. Adicionalmente, la televisión ex300 incluye una unidad de interfaz ex317 que incluye una unidad de entrada de operación ex312 que recibe una entrada de una operación de usuario. Adicionalmente, la televisión ex300 incluye una unidad de control ex310 que controla de manera global cada elemento constituyente de la televisión ex300, y una unidad de circuito de fuente de alimentación ex311 que suministra potencia a cada uno de los elementos. Aparte de la unidad de entrada de operación ex312, la unidad de interfaz ex317 puede incluir: un puente ex313 que está conectado a un dispositivo externo, tal como el lector/grabador ex218; una unidad de ranura ex314 para posibilitar la conexión del medio de grabación ex216, tal como una tarjeta de SD; un controlador ex315 para conectarse a un medio de grabación externo, tal como un disco duro; y un módem ex316 para conectarse a una red de telefonía. En este punto, el medio de grabación ex216 puede grabar eléctricamente información usando un elemento de memoria de semiconductores no volátil/volátil para almacenamiento. Los elementos constituyentes de la televisión ex300 están conectados entre sí a través de un bus síncrono.
En primer lugar, se describirá la configuración en la que la televisión ex300 descodifica datos multiplexados obtenidos desde el exterior a través de la antena ex204 y otros y reproduce los datos descodificados. En la televisión ex300, después de la operación de un usuario a través de un controlador remoto ex220 y otros, la unidad de multiplexación/desmultiplexación ex303 desmultiplexa los datos multiplexados desmodulados por la unidad de modulación/desmodulación ex302, bajo el control de la unidad de control ex310 que incluye una CPU. Adicionalmente, la unida ex304 de procesamiento de señal de audio descodifica los datos de audio desmultiplexados, y la unidad de procesamiento de señal de vídeo ex305 descodifica los datos de vídeo desmultiplexados, usando el procedimiento de descodificación descrito en cada una de las realizaciones, en la televisión ex300. La unidad de salida ex309 proporciona la señal de vídeo descodificada y la señal de audio al exterior, respectivamente. Cuando la unidad de salida ex309 proporciona la señal de vídeo y la señal de audio, las señales pueden almacenarse temporalmente en las memorias intermedias ex318 y ex319, y otros de modo que las señales se reproducen en sincronización entre sí. Adicionalmente, la televisión ex300 puede leer datos multiplexados no a través de una difusión y otros sino desde el medio de grabación ex215 y ex216, tal como un disco magnético, un disco óptico, y una tarjeta de SD. A continuación, se describirá una configuración en la que la televisión ex300 codifica una señal de audio y una señal de vídeo, y transmite los datos al exterior o escribe los datos en un medio de grabación. En la televisión ex300, después de una operación de usuario a través del controlador remoto ex220 y otros, la unidad de procesamiento de señal de audio ex304 codifica una señal de audio, y la unidad de procesamiento de señal de vídeo ex305 codifica una señal de vídeo, bajo el control de la unidad de control ex310 usando el procedimiento de codificación descrito en cada una de las realizaciones. La unidad de multiplexación/desmultiplexación ex303 multiplexa la señal de vídeo y la señal de audio codificadas, y proporciona la señal resultante al exterior. Cuando la unidad de multiplexación/desmultiplexación ex303 multiplexa la señal de vídeo y la señal de audio, las señales pueden almacenarse temporalmente en las memorias intermedias ex320 y ex321, y otros de modo que las señales se reproducen en sincronización entre sí. En este punto, las memorias intermedias ex318, ex319, ex320 y ex321 pueden ser varias como se ilustra, o al menos una memoria intermedia puede compartirse en la televisión ex300. Adicionalmente, se pueden almacenar datos en una memoria intermedia de modo que puede evitarse el desbordamiento y subdesbordamiento del sistema entre la unidad de modulación/desmodulación ex302 y la unidad de multiplexación/desmultiplexación ex303, por ejemplo.
Adicionalmente, la televisión ex300 puede incluir una configuración para recibir una entrada de AV desde un micrófono o una cámara distinta de la configuración para obtener datos de audio y de vídeo desde una difusión o de un medio de grabación, y puede codificar los datos obtenidos. Aunque la televisión ex300 puede codificar, multiplexar y proporcionar datos al exterior en la descripción, puede únicamente recibir, descodificar y proporcionar datos al exterior pero no codificar, multiplexar y proporcionar datos al exterior.
Adicionalmente, cuando el lector/grabador ex218 lee o escribe datos multiplexados desde o en un medio de grabación, una de la televisión ex300 y el lector/grabador ex218 pueden descodificar o codificar los datos multiplexados, y la televisión ex300 y el lector/grabador ex218 puede compartir la descodificación o codificación.
Como un ejemplo, la figura 49 ilustra una configuración de una unidad de reproducción/grabación de información ex400 cuando se leen o escriben datos desde o en un disco óptico. La unidad de reproducción/grabación de información ex400 incluye los elementos constituyentes ex401, ex402, ex403, ex404, ex405, ex406 y ex407 que se describen en lo sucesivo. El cabezal óptico ex401 irradia un punto láser en una superficie de grabación del medio de grabación ex215 que es un disco óptico para escribir información, y detecta luz reflejada desde la superficie de grabación del medio de grabación ex215 para leer la información. La unidad de grabación de modulación ex402 acciona eléctricamente un láser de semiconductores incluido en el cabezal óptico ex401, y modula la luz de láser de acuerdo con datos grabados. La unidad de desmodulación de reproducción ex403 amplifica una señal de reproducción obtenida detectando eléctricamente la luz reflejada desde la superficie de grabación usando un fotodetector incluido en el cabezal óptico ex401, y desmodula la señal de reproducción separando un componente de señal grabado en el medio de grabación ex215 para reproducir la información necesaria. La memoria intermedia ex404 mantiene temporalmente la información a grabarse en el medio de grabación ex215 y la información reproducida desde el medio de grabación ex215. El motor de disco ex405 gira el medio de grabación ex215. La unidad de servocontrol ex406 mueve el cabezal óptico ex401 a una pista de información predeterminada mientras controla el mecanismo de rotación del motor de disco ex405 para seguir el punto láser. La unidad de control de sistema ex407 controla la totalidad de la unidad de reproducción/grabación de información ex400. Los procedimientos de lectura y escritura pueden implementarse por la unidad de control de sistema ex407 usando diversa información almacenada en la memoria intermedia ex404 y generando y añadiendo nueva información según sea necesaria, y por la unidad de grabación de modulación ex402, la unidad de desmodulación de reproducción ex403, y la unidad de servocontrol ex406 que graban y reproducen información a través del cabezal óptico ex401 mientras se operan de una manera coordinada. La unidad de control de sistema ex407 incluye, por ejemplo, un microprocesador y ejecuta procesamiento provocando que un ordenador ejecute un programa para lectura y escritura.
Aunque el cabezal óptico ex401 irradia un punto láser en la descripción, puede realizar grabación de alta densidad usando luz de campo cercano.
La figura 50 ilustra el medio de grabación ex215 que es el disco óptico. En la superficie de grabación del medio de grabación ex215, se forman de manera espiral surcos de guía, y una pista de información ex230 graba, con antelación, información de dirección que indica una posición absoluta en el disco de acuerdo con el cambio en una forma de las ranuras de guía. La información de dirección incluye información para determinar posiciones de bloques de grabación ex231 que son una unidad para grabar datos. Reproducir la pista de información ex230 y leer la información de dirección en un aparato que graba y reproduce datos puede conducir a la determinación de las posiciones de los bloques de grabación. Adicionalmente, el medio de grabación ex215 incluye un área de grabación de datos ex233, un área de circunferencia interna ex232, y un área de circunferencia externa ex234. El área de grabación de datos ex233 es un área para su uso al grabar los datos de usuario. El área de circunferencia interna ex232 y el área de circunferencia externa ex234 que están en el interior y el exterior del área de grabación de datos ex233, respectivamente son para uso específico excepto para la grabación de los datos de usuario. La unidad de reproducción/grabación de información 400 lee y escribe datos de audio codificado, datos de vídeo codificado, o datos multiplexados obtenidos multiplexando los datos de audio y vídeo codificados, desde y en el área de grabación de datos ex233 del medio de grabación ex215.
Aunque se describe un disco óptico que tiene una capa, tal como un DVD y un BD como un ejemplo en la descripción, el disco óptico no se limita a esto, y puede ser un disco óptico que tiene una estructura de múltiples capas y que puede grabarse en una parte distinta de la superficie. Adicionalmente, el disco óptico puede tener una estructura para grabación/reproducción multidimensional, tal como grabación de información usando luz de colores con diferentes longitudes de onda en la misma porción del disco óptico y para grabar información que tiene diferentes capas desde diferentes ángulos.
Adicionalmente, un coche ex210 que tiene una antena ex205 puede recibir datos desde el satélite ex202 y otros, y reproducir vídeo en un dispositivo de visualización tal como un sistema de navegación de coche ex211 establecido en el coche ex210, en el sistema de difusión digital ex200. En este punto, una configuración del sistema de navegación de coche ex211 será una configuración, por ejemplo, que incluye una unidad de recepción de GPS a partir de la configuración ilustrada en la figura 48. Lo mismo se cumplirá para la configuración del ordenador ex111, el teléfono celular ex114, y otros.
La figura 51A ilustra el teléfono celular ex114 que usa el procedimiento de codificación de instantáneas en movimiento y el procedimiento de descodificación de instantáneas en movimiento descritos en las realizaciones. El teléfono celular ex114 incluye: una antena ex350 para transmitir y recibir ondas de radio a través de la estación base ex110; una unidad de cámara ex365 capaz de capturar imágenes en movimiento y fijas; y una unidad de visualización ex358 tal como un visualizador de cristal líquido para visualizar datos tales como vídeo descodificado capturado por la unidad de cámara ex365 o recibido por la antena ex350. El teléfono celular ex114 incluye adicionalmente: una unidad de cuerpo principal que incluye una unidad de teclas de operación ex366; una unidad de salida de audio ex357 tal como un altavoz para la salida de audio; una unidad de entrada de audio ex356 tal como un micrófono para la entrada de audio; una unidad de memoria ex367 para almacenar vídeo capturado o instantáneas fijas, audio grabado, datos codificados o des codificados del vídeo recibido, las instantáneas fijas, correos electrónicos, u otros; y una unidad de ranura ex364 que es una unidad de interfaz para un medio de grabación que almacena datos de la misma forma que la unidad de memoria ex367.
A continuación, un ejemplo de una configuración del teléfono celular ex114 se describirá con referencia a la figura 51B. En el teléfono celular ex114, una unidad de control principal ex360 diseñada para controlar en conjunto cada unidad del cuerpo principal que incluye la unidad de visualización ex358 así como la unidad de teclas de operación ex366 se conecta mutuamente, por medio de un bus síncrono ex370, a una unidad de circuito de fuente de alimentación ex361, una unidad de control de entrada de operación ex362, una unidad de procesamiento de señales de vídeo ex355, una unidad de interfaz de cámara ex363, una unidad de control de visualizador de cristal líquido (LCD) ex359, una unidad de modulación/desmodulación ex352, una unidad de multiplexación/desmultiplexación ex353, una unidad de procesamiento de señales de audio ex354, la unidad de ranura ex364 y la unidad de memoria ex367.
Cuando una tecla de fin de llamada o una tecla de alimentación es activada por una operación de un usuario, la unidad de circuito de fuente de alimentación ex361 abastece a las unidades respectivas con alimentación procedente de un paquete de batería con el fin de activar el teléfono celular ex114.
En el teléfono celular ex114, la unidad de procesamiento de señales de audio ex354 convierte las señales de audio recogidas por la unidad de entrada de audio ex356 en modo de conversación por voz en señales de audio digital bajo el control de la unidad de control principal ex360 que incluye una CPU, ROM y RAM. Entonces, la unidad de modulación/desmodulación ex352 realiza un procesamiento de espectro ensanchado sobre las señales de audio digital, y la unidad de transmisión y de recepción ex351 realiza una conversión de analógico a digital y una conversión en frecuencia sobre los datos, con el fin de transmitir los datos resultantes por medio de la antena ex350. Asimismo, en el teléfono celular ex114, la unidad de transmisión y de recepción ex351 amplifica los datos recibidos por la antena ex350 en modo de conversación por voz y realiza la conversión en frecuencia y la conversión de digital a analógico sobre los datos. Entonces, la unidad de modulación/desmodulación ex352 realiza un procesamiento de espectro ensanchado inverso sobre los datos, y la unidad de procesamiento de señales de audio ex354 los convierte en señales de audio analógico, con el fin de emitir las mismas por medio de la unidad de salida de audio ex357.
Además, cuando se transmite un correo electrónico en modo de comunicación de datos, datos de texto del correo electrónico introducido al operar la unidad de teclas de operación ex366 y otros del cuerpo principal se envían fuera a la unidad de control principal ex360 por medio de la unidad de control de entrada de operación ex362. La unidad de control principal ex360 da lugar a que la unidad de modulación/desmodulación ex352 realice un procesamiento de espectro ensanchado sobre los datos de texto, y la unidad de transmisión y de recepción ex351 realiza la conversión de analógico a digital y la conversión en frecuencia sobre los datos resultantes para transmitir los datos a la estación base ex110 por medio de la antena ex350. Cuando se recibe un correo electrónico, un procesamiento que es aproximadamente inverso al procesamiento para transmitir un correo electrónico se realiza sobre los datos recibidos, y los datos resultantes se proporcionan a la unidad de visualización ex358.
Cuando se transmite o transmiten vídeo, imágenes fijas o vídeo y audio en modo de comunicación de datos, la unidad de procesamiento de señales de vídeo ex355 comprime y codifica señales de vídeo suministradas desde la unidad de cámara ex365 usando el procedimiento de codificación de instantáneas en movimiento mostrado en cada una de las realizaciones (es decir, funciona como el aparato de codificación de imágenes de acuerdo con el aspecto de la presente invención), y transmite los datos de vídeo codificados a la unidad de multiplexación/desmultiplexación ex353. En contraposición, durante cuando la unidad de cámara ex365 captura vídeo, imágenes fijas, y otros, la unidad de procesamiento de señales de audio ex354 codifica las señales de audio recogidas por la unidad de entrada de audio ex356, y transmite los datos de audio codificados a la unidad de multiplexación/desmultiplexación ex353.
La unidad de multiplexación/desmultiplexación ex353 multiplexa los datos de vídeo codificados suministrados desde la unidad de procesamiento de señales de vídeo ex355 y los datos de audio codificados suministrados desde la unidad de procesamiento de señales de audio ex354, usando un procedimiento predeterminado. Entonces, la unidad de modulación/desmodulación (unidad de circuito de modulación/desmodulación) ex352 realiza un procesamiento de espectro ensanchado sobre los datos multiplexados, y la unidad de transmisión y de recepción ex351 realiza una conversión de analógico a digital y una conversión en frecuencia sobre los datos con el fin de transmitir los datos resultantes por medio de la antena ex350.
Cuando se reciben datos de un archivo de vídeo que está vinculado a una página Web y otros en modo de comunicación de datos o cuando se recibe un correo electrónico con vídeo y/o audio adjunto, con el fin de descodificar los datos multiplexados recibidos por medio de la antena ex350, la unidad de multiplexación/desmultiplexación ex353 desmultiplexa los datos multiplexados en un flujo de bits de datos de vídeo y un flujo de bits de datos de audio, y abastece a la unidad de procesamiento de señales de vídeo ex355 con los datos de vídeo codificados y la unidad de procesamiento de señales de audio ex354 con los datos de audio codificados, a través del bus síncrono ex370. La unidad de procesamiento de señales de vídeo ex355 descodifica la señal de vídeo usando un procedimiento de descodificación de instantáneas en movimiento que se corresponde con el procedimiento de codificación de instantáneas en movimiento mostrado en cada una de las realizaciones (es decir, funciona como el aparato de descodificación de imágenes de acuerdo con el aspecto de la presente invención) y, entonces, la unidad de visualización ex358 visualiza, por ejemplo, el vídeo y las imágenes fijas incluidos en el archivo de vídeo vinculado a la página Web por medio de la unidad de control de LCD ex359. Además, la unidad de procesamiento de señales de audio ex354 descodifica la señal de audio, y la unidad de salida de audio ex357 proporciona el audio.
Adicionalmente, de manera similar a la televisión ex300, un terminal tal como el teléfono ex114 celular probablemente tiene 3 tipos de configuraciones de implementación que incluyen no únicamente (i) un terminal de transmisión y recepción que incluye tanto un aparato de codificación como un aparato de descodificación, sino también (ii) un terminal de transmisión que incluye únicamente un aparato de codificación y (iii) un terminal de recepción que incluye únicamente un aparato de descodificación. Aunque el sistema de difusión digital ex200 recibe y transmite los datos multiplexados obtenidos multiplexando datos de audio en datos de vídeo en la descripción, los datos multiplexados pueden ser datos obtenidos multiplexando no datos de audio sino datos de caracteres relacionados con vídeo en datos de vídeo, y pueden no ser datos multiplexados sino los mismos datos de vídeo.
En este sentido, el procedimiento de codificación de instantáneas en movimiento y el procedimiento de descodificación de instantáneas en movimiento en cada una de las realizaciones se pueden usar en cualquiera de los dispositivos y sistemas descritos. Por lo tanto, se pueden obtener las ventajas descritas en cada una de las realizaciones.
Además, la presente invención no se limita a las realizaciones, y son posibles diversas modificaciones y revisiones sin apartarse del ámbito de la presente invención.
[Realización 10]
Los datos de vídeo se pueden generar conmutando, según sea necesario, entre (i) el procedimiento de codificación de instantáneas en movimiento o el aparato de codificación de instantáneas en movimiento mostrados en cada una de realizaciones y (ii) un procedimiento de codificación de instantáneas en movimiento o un aparato de codificación de instantáneas en movimiento cumpliendo con una norma diferente, tal como MPEG-2, AVC de MPEG-4 y VC-1.
En este punto, cuando se genera una pluralidad de datos de vídeo que cumple con las diferentes normas y se descodifican a continuación, necesitan seleccionarse los procedimientos de descodificación para cumplir con las diferentes normas. Sin embargo, puesto que no puede detectarse a qué norma está conforme cada uno de la pluralidad de los datos de vídeo a descodificarse, existe un problema de que no puede seleccionarse un procedimiento de descodificación apropiado.
Para resolver el problema, los datos multiplexados obtenidos multiplexando datos de audio y otros en datos de vídeo tienen una estructura que incluye información de identificación que indica con qué norma cumplen los datos de vídeo. Se describirá en lo sucesivo la estructura específica de los datos multiplexados que incluyen los datos de vídeo generados en el procedimiento de codificación de instantáneas en movimiento y por el aparato de codificación de instantáneas en movimiento mostrados en cada una de las realizaciones. Los datos multiplexados son un flujo digital en el formato de Flujo de Transporte de MPEG-2.
La figura 52 ilustra una estructura de los datos multiplexados. Como se ilustra en la figura 52, los datos multiplexados pueden obtenerse multiplexando al menos uno de un flujo de vídeo, un flujo de audio, un flujo de gráficos de presentación (PG), y un flujo de gráficos interactivo. El flujo de vídeo representa vídeo primario y vídeo secundario de una película, el flujo de audio (IG) representa una parte de audio primario y una parte de audio secundario a mezclarse con la parte de audio primario, y el flujo de gráficos de presentación representa subtítulos de la película. En este punto, el vídeo primario es vídeo normal a visualizarse en una pantalla, y el vídeo secundario es vídeo a visualizarse en una ventana más pequeña en el vídeo primario. Adicionalmente, el flujo de gráficos interactivo representa una pantalla interactiva a generarse disponiendo los componentes de la GUI en una pantalla. El flujo de vídeo se codifica en el procedimiento de codificación de instantáneas en movimiento o por el aparato de codificación de instantáneas en movimiento mostrado en cada una de las realizaciones, o en un procedimiento de codificación de instantáneas en movimiento o por un aparato de codificación de instantáneas en movimiento cumpliendo con una norma convencional, tal como MPEG-2, AVC de MPEG-4 y VC-1. El flujo de audio se codifica de acuerdo con una norma, tal como Dolby-AC-3, Dolby Digital Plus, MLP, DTS, DTS-HD y PCM lineal.
Cada flujo incluido en los datos multiplexados se identifica por PID. Por ejemplo, se asigna 0x1011 al flujo de vídeo a usar para vídeo de una película, se asigna 0x1100 a 0x111F a los flujos de audio, se asigna 0x1200 a 0x121F flujo de gráficos de presentación, se asigna 0x1400 a 0x141F al flujo de gráficos interactivos, se asigna 0x1B00 a 0x1B1F a los flujos de vídeo a usar para vídeo secundario de la película, y se asigna 0x1A00 a 0x1A1F a los flujos de audio a usar para el audio secundario a mezclarse con el audio principal.
La figura 53 ilustra esquemáticamente cómo se multiplexan datos. En primer lugar, un flujo ex235 de vídeo compuesto por tramas de vídeo y un flujo ex238 de audio compuesto por tramas de audio se transforman en un flujo ex236 de paquetes de PES y un flujo ex239 de paquetes de PES, y adicionalmente en paquetes ex237 de TS y paquetes ex240 de TS, respectivamente. De manera similar, los datos de un flujo ex241 de gráficos de presentación y los datos de un flujo ex244 de gráficos interactivo se transforman en un flujo ex242 de paquetes de PES y un flujo ex245 de paquetes de PES, y adicionalmente en paquetes ex243 de TS y paquetes ex246 de TS, respectivamente. Estos paquetes de TS se multiplexan en un flujo para obtener datos multiplexados ex247.
La figura 54 ilustra cómo se almacena un flujo de vídeo en un flujo de paquetes de PES en más detalle. La primera barra en la figura 54 muestra un flujo de tramas de vídeo en un flujo de vídeo. La segunda barra muestra el flujo de paquetes de PES. Como se indica por las flechas indicadas como yy1, yy2, yy3 y yy4 en la figura 54, el flujo de vídeo se divide en instantáneas como instantáneas I, instantáneas B e instantáneas P cada una de las cuales es una unidad de presentación de vídeo, las instantáneas se almacenan en una cabida útil de cada uno de los paquetes de PES. Cada uno de los paquetes de PES tiene un encabezamiento de PES, y el encabezamiento de PES almacena una Indicación de Tiempo de Presentación (PTS) que indica un tiempo de visualización de la instantánea, y una Indicación de Tiempo de descodificación (DTS) que indica un tiempo de descodificación de la instantánea.
La figura 55 ilustra un formato de paquetes de TS a escribir finalmente en los datos multiplexados. Cada uno de los paquetes de TS es un paquete de longitud fija de 188 bytes que incluye un encabezamiento de TS de 4 bytes que tiene información, tal como un PID para identificar un flujo y una cabida útil de TS de 184 bytes para almacenar datos. Los paquetes de PES se dividen y se almacenan en las cabidas útiles de TS, respectivamente. Cuando se usa un BD ROM, a cada uno de los paquetes de TS se le proporciona un TP_Encabezamiento_Adicional de 4 bytes, dando como resultado por lo tanto paquetes de origen de 192 bytes. Los paquetes de origen se escriben en los datos multiplexados. El TP_Encabezamiento_Adicional almacena información tal como una Indicación_Tiempo_Llegada (ATS). La ATS muestra un tiempo de inicio de transferencia en el que se ha de transferir cada uno de los paquetes de TS a un filtro de PID. Los paquetes de origen se disponen en los datos multiplexados como se muestra en la parte inferior de la figura 55. Los números que incrementan desde la cabecera de los datos multiplexados se denominan números de paquete de origen (SPN).
Cada uno de los paquetes de TS incluidos en los datos multiplexados incluye no únicamente flujos de audio, vídeo, subtítulos y otros, sino también una Tabla de Asociación de Programa (PAT), una Tabla de Mapa de Programa (PMT), y una Referencia de Reloj de Programa (PCR). La PAT muestra qué indica un PID en una PMT usada en los datos multiplexados, y una PID de la misma PAT se registra como cero. La PMT almacena los PID de los flujos de vídeo, audio, subtítulos y otros incluidos en los datos multiplexados, y la información de atributo de los flujos que se corresponden con los PID. La PMT también tiene diversos descriptores relacionados con los datos multiplexados. Los descriptores tienen información tal como información de control de copia que muestra si se permite o no el copiado de los datos multiplexados. La PCR almacena información de tiempo de STC que se corresponde con una ATS que muestra cuándo se transfiere el paquete de PCR a un descodificador, para conseguir sincronización entre un Reloj de Tiempo de Llegada (ATC) que es el eje de tiempo de las ATS, y un Reloj de Tiempo de Sistema (STC) que es un eje de tiempo de las PTS y DTS.
La figura 56 ilustra la estructura de datos de la PMT en detalle. Un encabezamiento de PMT está dispuesto en la parte superior de la PMT. El encabezamiento de la PMT describe la longitud de datos incluidos en la PMT y otros. Una pluralidad de descriptores relacionados con los datos multiplexados están dispuestos después del encabezamiento de PMT. La información tal como la información de control de copia se describe en los descriptores. Después de los descriptores, está dispuesta una pluralidad de fragmentos de la información de flujo relacionados con los flujos incluidos en los datos multiplexados. Cada fragmento de la información de flujo incluye descriptores de flujo que cada uno describe información, tal como un tipo de flujo para identificar un códec de compresión de un flujo, un PID de flujo, e información de atributo de flujo (tal como una velocidad de tramas o una relación de aspecto). Los descriptores de flujo son iguales en número al número de flujos en los datos multiplexados.
Cuando los datos multiplexados se graban en un medio de grabación y otros, se registran juntos con ficheros de información de datos multiplexados.
Cada uno de los ficheros de información de datos multiplexados es información de gestión de los datos multiplexados como se muestra en la figura 57. Los ficheros de información de datos multiplexados están en una correspondencia uno a uno con los datos multiplexados, y cada uno de los ficheros incluye información de datos multiplexados, información de atributo de flujo y un mapa de entrada.
Como se ilustra en la figura 57, la información de datos multiplexados incluye una velocidad de sistema, un tiempo de inicio de reproducción y un tiempo de fin de reproducción. La velocidad de sistema indica la velocidad de trasferencia máxima a la que un descodificador objetivo de sistema que se va a describir más adelante transfiere los datos multiplexados a un filtro de PID. Los intervalos de las ATS incluidas en los datos multiplexados se establecen para que no sean superiores a una velocidad de sistema. El tiempo de inicio de reproducción indica una PTS en una trama de vídeo en la cabecera de los datos multiplexados. Un intervalo de una trama se añade a una PTS en una trama de vídeo al final de los datos multiplexados, y la PTS se establece al tiempo de fin de reproducción.
Como se muestra en la figura 58, se registra un fragmento de información de atributo en la información de atributo de flujo, para cada PID de cada flujo incluido en los datos multiplexados. Cada fragmento de información de atributo tiene diferente información dependiendo de si el correspondiente flujo es un flujo de vídeo, un flujo de audio, un flujo de gráficos de presentación, o un flujo de gráficos interactivo. Cada fragmento de información de atributo de flujo de vídeo lleva información que incluye qué tipo de códec de compresión se usa para comprimir el flujo de vídeo, y la resolución, relación de aspecto y velocidad de tramas de los fragmentos de datos de instantánea que se incluyen en el flujo de vídeo. Cada fragmento de información de atributo de flujo de audio lleva información que incluye qué clase de códec de compresión se usa para comprimir el flujo de audio, cuántos canales están incluidos en el flujo de audio, qué idioma soporta el flujo de audio, y cómo de alta es la frecuencia de muestreo. La información de atributo de flujo de vídeo y la información de atributo de flujo de audio se usan para inicialización de un descodificador antes de que el reproductor reproduzca la información.
En la presente realización, los datos multiplexados a usar son de un tipo de flujo incluido en la PMT. Adicionalmente, cuando los datos multiplexados se graban en un medio de grabación, se usa la información de atributo de flujo de vídeo incluida en la información de datos multiplexados. Más específicamente, el procedimiento de codificación de instantáneas en movimiento o el aparato de codificación de instantáneas en movimiento descritos en cada una de las realizaciones incluyen una etapa o una unidad para asignar información única que indica datos de vídeo generados por el procedimiento de codificación de instantáneas en movimiento o el aparato de codificación de instantáneas en movimiento en cada una de las realizaciones, al tipo de flujo incluido en la PMT o la información de atributo de flujo de vídeo. Con la configuración, los datos de vídeo generados por el procedimiento de codificación de instantáneas en movimiento o el aparato de codificación de instantáneas en movimiento descritos en cada una de las realizaciones pueden distinguirse de los datos de vídeo que se ajustan a otra norma.
Adicionalmente, la figura 59 ilustra las etapas del procedimiento de descodificación de instantáneas en movimiento de acuerdo con la presente realización. En la etapa exS100, el tipo de flujo incluido en la PMT o la información de atributo de flujo de vídeo incluido en la información de datos multiplexados se obtiene desde los datos multiplexados. A continuación, en la etapa exS101, se determina si el tipo de flujo o la información de atributo de flujo de vídeo indica o no que los datos multiplexados se generan por el procedimiento de codificación de instantáneas en movimiento o el aparato de codificación de instantáneas en movimiento en cada una de las realizaciones. Cuando se determina que el tipo de flujo o la información de atributo de flujo de vídeo indica que los datos multiplexados se generan por el procedimiento de codificación de instantáneas en movimiento o el aparato de codificación de instantáneas en movimiento en cada una de las realizaciones, en la etapa exS102, se realiza descodificación por el procedimiento de descodificación de instantáneas en movimiento en cada una de las realizaciones. Adicionalmente, cuando el tipo de flujo o la información de atributo de flujo de vídeo indica el cumplimiento de las normas convencionales, tales como MPEG-2, AVC de MPEG-4 y VC-1, en la etapa exS103, se realiza descodificación por un procedimiento de descodificación de instantáneas en movimiento cumpliendo con las normas convencionales.
En este sentido, asignar un nuevo valor único al tipo de flujo o la información de atributo de flujo de vídeo posibilita la determinación de si el procedimiento de descodificación de instantáneas en movimiento o el aparato de descodificación de instantáneas en movimiento que se describen en cada una de las realizaciones puede realizar o no la descodificación. Incluso cuando se introducen datos multiplexados que se ajustan a una norma diferente, puede seleccionarse un procedimiento o aparato de descodificación apropiado. Por lo tanto, se hace posible descodificar información sin error alguno. Adicionalmente, el procedimiento o aparato de codificación de instantáneas en movimiento, o el procedimiento o aparato de descodificación de instantáneas en movimiento en la presente realización se puede usar en los dispositivos y sistemas anteriormente descritos.
[Realización 11]
Cada uno del procedimiento de codificación de instantáneas en movimiento, el aparato de codificación de instantáneas en movimiento, el procedimiento de descodificación de instantáneas en movimiento, y el aparato de descodificación de instantáneas en movimiento en cada una de las realizaciones se consigue típicamente en forma de un circuito integrado o un circuito Integrado a Gran Escala (LSI). Como un ejemplo del LSI, la figura 60 ilustra una configuración del LSI ex500 que se hace en un chip. El LSI ex500 incluye los elementos ex501, ex502, ex503, ex504, ex505, ex506, ex507, ex508, y ex509 que se van a describir a continuación, y los elementos están conectados entre sí a través de un bus ex510. La unidad de circuito de fuente de alimentación ex505 se activa suministrando a cada uno de los elementos con potencia cuando se activa la unidad de circuito de fuente de alimentación ex505.
Por ejemplo, cuando se realiza codificación, el LSI ex500 recibe una señal de AV desde un micrófono ex117, una cámara ex113, y otros a través de una ES de AV ex509 bajo el control de una unidad de control ex501 que incluye una CPU ex502, un controlador de memoria ex503, un controlador de flujo ex504, y una unidad de control de frecuencia de accionamiento ex512. La señal de AV recibida se almacena temporalmente en una memoria externa ex511, tal como una SDRAM. Bajo el control de la unidad de control ex501, los datos almacenados se segmentan en porciones de datos de acuerdo con la cantidad de procesamiento y velocidad a transmitir a una unidad de procesamiento de señal ex507. A continuación, la unidad de procesamiento de señal ex507 codifica una señal de audio y/o una señal de vídeo. En este punto, la codificación de la señal de vídeo es la codificación descrita en cada una de las realizaciones. Adicionalmente, la unidad de procesamiento de señal ex507 multiplexa en ocasiones los datos de audio codificados y los datos de vídeo codificados, y una ES de flujo ex506 proporciona los datos multiplexados al exterior. Los datos multiplexados proporcionados se transmiten a la estación base ex107, o se escriben en el medio de grabación ex215. Cuando se multiplexan conjuntos de datos, los datos deberían almacenarse temporalmente en la memoria intermedia ex508 de modo que los conjuntos de datos se sincronizan entre sí.
Aunque la memoria ex511 es un elemento fuera del LSI ex500, puede incluirse en el LSI ex500. La memoria intermedia ex508 no se limita a una memoria intermedia, sino que puede estar compuesta por memorias intermedias. Adicionalmente, el LSI ex500 puede estar fabricado en un chip o una pluralidad de chips.
Adicionalmente, aunque la unidad de control ex501 incluye la CPU ex502, el controlador de memoria ex503, el controlador de flujo ex504, la unidad de control de frecuencia de accionamiento ex512, la configuración de la unidad de control ex501 no se limita a esto. Por ejemplo, la unidad de procesamiento de señal ex507 puede incluir adicionalmente una CPU. La inclusión de otra CPU en la unidad de procesamiento de señal ex507 puede mejorar la velocidad de procesamiento. Adicionalmente, como otro ejemplo, la CPU ex502 puede servir como o ser una parte de la unidad de procesamiento de señal ex507, y, por ejemplo, puede incluir una unidad de procesamiento de señal de audio. En un caso de este tipo, la unidad de control ex501 incluye la unidad de procesamiento de señal ex507 o la CPU ex502 que incluye una parte de la unidad de procesamiento de señal ex507.
El nombre usado en el presente documento es LSI, pero puede denominarse también CI, sistema LSI, súper LSI o ultra LSI dependiendo del grado de integración.
Además, las maneras para conseguir la integración no se limitan al LSI, y un circuito especial o un procesador de propósito general y así sucesivamente pueden conseguir también la integración. El Campo de Matriz de Puertas Programables (FPGa ) que puede programarse después de la fabricación de LSI o un procesador reconfigurable que permite la re-configuración de la conexión o configuración de un LSI puede usarse para el mismo fin.
En el futuro, con el avance de la tecnología de semiconductores, una tecnología nueva puede sustituir la LSI. Los bloques funcionales pueden integrarse usando una tecnología de este tipo. La posibilidad es que la presente invención se aplique a biotecnología.
[Realización 12]
Cuando se descodifican datos de vídeo generados en el procedimiento de codificación de instantáneas en movimiento o por el aparato de codificación de instantáneas en movimiento descritos en cada una de las realizaciones, en comparación con cuando se descodifican datos de vídeo que se ajustan a una norma convencional, tal como MPEG-2, MPEG-4 AVC, y VC-1, probablemente aumenta la cantidad de procesamiento. Por lo tanto, el LSI ex500 necesita establecer una frecuencia de accionamiento más alta que la de la CPU ex502 a usarse cuando se descodifican datos de vídeo de conformidad con la norma convencional. Sin embargo, cuando la frecuencia de accionamiento se establece más alta, existe un problema de que el consumo de potencia aumenta.
Para resolver el problema, el aparato de descodificación de instantáneas en movimiento, tal como la televisión ex300 y el LSI ex500 están configurados para determinar a qué norma se ajustan los datos de vídeo, y conmutar entre las frecuencias de accionamiento de acuerdo con la norma determinada. La figura 61 ilustra una configuración ex800 en la presente realización. Una unidad de conmutación de frecuencia de accionamiento ex803 establece una frecuencia de accionamiento a una frecuencia de accionamiento superior cuando se generan datos de vídeo por el procedimiento de codificación de instantáneas en movimiento o el aparato de codificación de instantáneas en movimiento descritos en cada una de las realizaciones. A continuación, la unidad de conmutación de frecuencia de accionamiento ex803 ordena a la unidad de procesamiento de descodificación ex801 que ejecute el procedimiento de descodificación de instantáneas en movimiento descrito en cada una de las realizaciones para descodificar los datos de vídeo. Cuando los datos de vídeo se ajustan a la norma convencional, la unidad de conmutación de frecuencia de accionamiento ex803 establece una frecuencia de accionamiento a una frecuencia de accionamiento inferior a la de los datos de vídeo generados por el procedimiento de codificación de instantáneas en movimiento o el aparato de codificación de instantáneas en movimiento descritos en cada una de las realizaciones. A continuación, la unidad de conmutación de frecuencia de accionamiento ex803 ordena a la unidad de procesamiento de descodificación ex802 que se ajusta a la norma convencional que descodifique los datos de vídeo.
Más específicamente, la unidad de conmutación de frecuencia de accionamiento ex803 incluye la CPU ex502 y la unidad de control de frecuencia de accionamiento ex512 en la figura 60. En este punto, cada una de la unidad de procesamiento de descodificación ex801 que ejecuta el procedimiento de descodificación de instantáneas en movimiento descrito en cada una de las realizaciones y la unidad de procesamiento de descodificación ex802 que se ajusta a la norma convencional se corresponden con la unidad de procesamiento de señal ex507en la figura 60. La CPU ex502 determina a qué norma se ajustan los datos de vídeo. A continuación, la unidad de control de frecuencia de accionamiento ex512 determina una frecuencia de accionamiento basándose en una señal desde la CPU ex502. Adicionalmente, la unidad de procesamiento de señal ex507 descodifica los datos de vídeo basándose en la señal desde la CPU ex502. Por ejemplo, la información de identificación descrita en la realización 10 se usa probablemente para identificar los datos de vídeo. La información de identificación no se limita a la descrita en la realización 10 sino que puede ser cualquier información siempre que la información indique a qué norma se ajustan los datos de vídeo. Por ejemplo, cuando a qué norma se ajustan los datos de vídeo puede determinarse basándose en una señal externa para determinar que los datos de vídeo se usan para una televisión o un disco, etc., la determinación puede realizarse basándose en una señal externa de este tipo. Adicionalmente, la CPU ex502 selecciona una frecuencia de accionamiento basándose en, por ejemplo, una tabla de correspondencia en la que las normas de los datos de vídeo están asociadas con las frecuencias de accionamiento como se muestra en la figura 63. La frecuencia de accionamiento puede seleccionarse almacenando la tabla de búsqueda en la memoria intermedia ex508 y en una memoria interna de un LSI, y con referencia a la tabla de búsqueda por la CPU ex502.
La figura 62 ilustra etapas para ejecutar un procedimiento en la presente realización. En primer lugar, en la etapa exS200, la unidad de procesamiento de señal ex507 obtiene información de identificación desde los datos multiplexados. A continuación, en la etapa exS201, la CPU ex502 determina si los datos de vídeo se generan o no por el procedimiento de codificación y el aparato de codificación descritos en cada una de las realizaciones, basándose en la información de identificación. Cuando los datos de vídeo se generan por el procedimiento de codificación de instantáneas en movimiento y el aparato de codificación de instantáneas en movimiento descritos en cada una de las realizaciones, en la etapa exS202, la CPU ex502 transmite una señal para establecer la frecuencia de accionamiento a una frecuencia de accionamiento superior a la de la unidad de control de frecuencia de accionamiento ex512. A continuación, la unidad de control de frecuencia de accionamiento ex512 establece la frecuencia de accionamiento a la frecuencia de accionamiento más alta. Por otra parte, cuando la información de identificación indica que los datos de vídeo se ajustan a la norma convencional, tal como MPEG-2, AVC de MPEG-4 y VC-1, en la etapa exS203, la CPU ex502 transmite una señal para establecer la frecuencia de accionamiento a una frecuencia de accionamiento inferior a la unidad de control de frecuencia de accionamiento ex512. A continuación, la unidad de control de frecuencia de accionamiento ex512 establece la frecuencia de accionamiento a la frecuencia de accionamiento inferior que la de en el caso en el que los datos de vídeo se generan por el procedimiento de codificación de instantáneas en movimiento y el aparato de codificación de instantáneas en movimiento descritos en cada una de las realizaciones.
Adicionalmente, junto con la conmutación de las frecuencias de accionamiento, el efecto de conservación de potencia puede mejorarse cambiando la tensión a aplicarse al LSI ex500 o a un aparato que incluye el LSI ex500. Por ejemplo, cuando la frecuencia de accionamiento se establece más baja, la tensión a aplicarse al LSI ex500 o al aparato que incluye el LSI ex500 probablemente se establece a una tensión inferior que en el caso en el que la frecuencia de accionamiento se establece más alta.
Adicionalmente, cuando la cantidad de procesamiento para descodificación es mayor, la frecuencia de accionamiento puede establecerse más alta, y cuando la cantidad de procesamiento para descodificación es más pequeña, la frecuencia de accionamiento puede establecerse más baja que el procedimiento para establecer la frecuencia de accionamiento. Por lo tanto, el procedimiento de ajuste no se limita a los anteriormente descritos. Por ejemplo, cuando la cantidad de procesamiento para descodificar datos de vídeo de conformidad con MPEG-4 AVC es mayor que la cantidad de procesamiento para descodificar datos de vídeo generados por el procedimiento de codificación de instantáneas en movimiento y el aparato de codificación de instantáneas en movimiento descritos en cada una de las realizaciones, la frecuencia de accionamiento probablemente se establece en orden inverso al ajuste anteriormente descrito.
Adicionalmente, el procedimiento para establecer la frecuencia de accionamiento no se limita al procedimiento para establecer la frecuencia de accionamiento más baja. Por ejemplo, cuando la información de identificación indica que los datos de vídeo se generan por el procedimiento de codificación de instantáneas en movimiento y el aparato de codificación de instantáneas en movimiento descritos en cada una de las realizaciones, la tensión a aplicarse al LSI ex500 o al aparato que incluye el LSI ex500 probablemente se establece más alta. Cuando la información de identificación indica que los datos de vídeo se ajustan a la norma convencional, tal como MPEG-2, MPEG-4 AVC, y VC-1, la tensión a aplicarse al LSI ex500 o al aparato que incluye el LSI ex500 probablemente se establece más baja. Como otro ejemplo, cuando la información de identificación indica que los datos de vídeo se generan por el procedimiento de codificación de instantáneas en movimiento y el aparato de codificación de instantáneas en movimiento descritos en cada una de las realizaciones, el accionamiento de la CPU ex502 probablemente no tiene que suspenderse. Cuando la información de identificación indica que los datos de vídeo se ajustan a la norma convencional, tal como MPEG-2, MPEG-4 AVC, y VC-1, el accionamiento de la CPU ex502 probablemente se suspende a un tiempo dado puesto que la CPU ex502 tiene capacidad de procesamiento adicional. Incluso cuando la información de identificación indica que los datos de vídeo se generan por el procedimiento de codificación de instantáneas en movimiento y el aparato de codificación de instantáneas en movimiento descritos en cada una de las realizaciones, en el caso en el que la CPU ex502 tiene capacidad de procesamiento adicional, el accionamiento de la CPU ex502 probablemente se suspende en un tiempo dado. En un caso de este tipo, el tiempo de suspensión probablemente se establece más corto que en el caso cuando la información de identificación indica que los datos de vídeo se ajustan a la norma convencional, tal como MPEG-2, MPEG-4 AVC, y VC-1.
Por consiguiente, el efecto de conservación de potencia puede mejorarse conmutando entre las frecuencias de accionamiento de acuerdo con la norma a la que se ajustan los datos de vídeo. Adicionalmente, cuando el LSI ex500 o el aparato que incluye el LSI ex500 se accionan usando una batería, la duración de la batería puede ampliarse con el efecto de conservación de potencia.
[Realización 13]
Existen casos en los que una pluralidad de datos de vídeo que se ajustan a diferentes normas, se proporcionan a los dispositivos y sistemas, tales como una televisión y un teléfono celular. Para posibilitar la descodificación de la pluralidad de datos de vídeo que se ajustan a las diferentes normas, la unidad de procesamiento de señal ex507 del LSI ex500 necesita ajustarse a las diferentes normas. Sin embargo, los problemas de aumento en la escala del circuito del LSI ex500 y el aumento en el coste surgen con el uso individual de las unidades de procesamiento de señal ex507 que se ajustan a las normas respectivas.
Para resolver el problema, lo que se concibe es una configuración en la que la unidad de procesamiento de descodificación para implementar el procedimiento de descodificación de instantáneas en movimiento descrita en cada una de las realizaciones y la unidad de procesamiento de descodificación que se ajusta a la norma convencional, tal como MPEG-2, AVC de MPEG-4 y VC-1 se comparten parcialmente. Ex900 en la figura 64A muestra un ejemplo de la configuración. Por ejemplo, el procedimiento de descodificación de instantáneas en movimiento descrito en cada una de las realizaciones y el procedimiento de descodificación de instantáneas en movimiento que se ajusta a AVC de MPEG-4 tienen, parcialmente en común, los detalles de procesamiento, tal como codificación por entropía, cuantificación inversa, filtrado por desbloqueo y predicción con compensación de movimiento. Los detalles de procesamiento a compartirse probablemente incluyen el uso de una unidad ex902 de procesamiento de descodificación que se ajusta a MPEG-4 AVC. En contraposición, una unidad ex901 de procesamiento de descodificación especializada probablemente se usa para otro procesamiento único para un aspecto de la presente invención. Debido a que el aspecto de la presente invención está caracterizado por la compensación de movimiento en particular, por ejemplo, la unidad de procesamiento de descodificación dedicada ex901 se usa para la compensación de movimiento. De otra manera, la unidad de procesamiento de descodificación probablemente se comparte para una de la descodificación por entropía, filtración de desbloqueo y cuantificación inversa, o todo el procesamiento. La unidad de procesamiento de descodificación para implementar el procedimiento de descodificación de instantáneas en movimiento descrita en cada una de las realizaciones puede compartirse para el procesamiento a compartirse, y una unidad de procesamiento de descodificación especializada puede usarse para procesamiento único al de MPEG-4 AVC.
Adicionalmente, ex1000 en la figura 64B muestra otro ejemplo en el que el procesamiento se comparte parcialmente. Este ejemplo usa una configuración que incluye una unidad de procesamiento de descodificación especializada ex1001 que soporta el procesamiento único de un aspecto de la presente invención, una unidad de procesamiento de descodificación especializada ex1002 que soporta el procesamiento único de otra norma convencional, y una unidad de procesamiento de descodificación ex1003 que soporta procesamiento a compartirse entre el procedimiento de descodificación de instantáneas en movimiento de acuerdo con el aspecto de la presente invención y el procedimiento de descodificación de instantáneas en movimiento convencional. En este punto, las unidades de procesamiento de descodificación especializadas ex1001 y ex1002 no están necesariamente especializadas para el procesamiento de acuerdo con el aspecto de la presente invención y el procesamiento de la norma convencional, respectivamente, y pueden ser las que pueden implementar procesamiento general. Adicionalmente, la configuración de la presente realización puede implementarse por el LSI ex500.
En este sentido, reducir la escala del circuito de un LSI y reducir el coste son posibles compartiendo la unidad de procesamiento de descodificación para el procesamiento a compartirse entre el procedimiento de descodificación de instantáneas en movimiento de acuerdo con el aspecto de la presente invención y el procedimiento de descodificación de instantáneas en movimiento cumpliendo con la norma convencional.
rAplicabilidad industrial!
Un procedimiento de codificación de instantáneas en movimiento y un procedimiento de descodificación de instantáneas en movimiento de acuerdo con la presente invención son aplicables a cualquier dato multimedia, pueden mejorar la eficiencia de codificación, y son útiles como un procedimiento de codificación de instantáneas en movimiento y un procedimiento de descodificación de instantáneas en movimiento en el almacenamiento, transmisión, comunicación, y similares usando teléfonos celulares, aparatos de DVD y ordenadores personales, por ejemplo.
ILista de signos de referencia!
100, 200, 500, 600 Aparato de codificación de instantáneas en movimiento
101, 501 Unidad de sustracción
102, 502 Unidad de transformada ortogonal
103, 503 Unidad de cuantificación
104, 302, 504, 702 Unidad de cuantificación inversa
105, 303, 505, 703 Unidad de transformada ortogonal inversa
106, 304, 506, 704 Unidad de adición
107, 305, 507, 705 Memoria de bloques
108, 306, 508, 706 Memoria de tramas
109, 307, 509, 707 Unidad de intra predicción
110, 308, 510, 708 Unidad de inter predicción
111, 309, 511, 709 Unidad de control de inter predicción
112, 512 Unidad de determinación de tipo de instantánea
113, 310, 513, 710 Conmutador
114, 311, 514, 711 Unidad de cálculo de candidatos de predictor de vector de movimiento
115, 312, 515, 712 Memoria de colPic
116, 516 Unidad de codificación de longitud variable
210, 410, 610, 810 Unidad de obtención de candidatos de predictor de vector de movimiento
211,411, 612, 812 Primera unidad de obtención
212, 412, 615, 815 Segunda unidad de obtención
220, 430, 620, 830 Unidad de control de predicción
230, 630 Unidad de codificación
300, 400, 700, 800 Aparato de descodificación de instantáneas en movimiento
301, 701 Unidad de descodificación de longitud variable
420, 820 Unidad de descodificación
611, 811 Unidad de determinación de número máximo
613, 813 Unidad de identificación
614, 814 Unidad de determinación

Claims (4)

REIVINDICACIONES
1. Un procedimiento de descodificación de instantáneas en movimiento para descodificar un bloque actual de una instantánea, que comprende:
establecer un número fijo de primeros candidatos de predictor de vector de movimiento, siendo dicho número fijo un número máximo de candidatos de predictor, teniendo cada candidato de predictor de vector de movimiento un vector de movimiento que se ha obtenido a partir de un bloque adyacente al bloque actual;
borrar un candidato redundante de los primeros candidatos de predictor de vector de movimiento;
borrar, de los primeros candidatos de predictor de vector de movimiento, un candidato de predictor de vector de movimiento no disponible que se ha obtenido a partir de un bloque codificado por intra predicción, un bloque ubicado fuera de un límite de un sector o una instantánea que incluye el bloque actual, o un bloque que no se ha descodificado aún;
determinar si el número total de primeros candidatos de predictor de vector de movimiento después de las etapas de borrado es menor que el número fijo;
obtener un segundo candidato de predictor de vector de movimiento que tiene un segundo vector de movimiento cuando el número total de primeros candidatos de predictor de vector de movimiento es menor que el número fijo, siendo el segundo vector de movimiento un vector nulo; y
descodificar un índice codificado que indica uno cualquiera de los primeros candidatos de predictor de vector de movimiento después de las etapas de borrado o el segundo candidato de predictor de vector de movimiento; descodificar el bloque actual usando el vector de movimiento del candidato de predictor de vector de movimiento indicado;
en el que el número fijo se usa para descodificar el índice codificado.
2. El procedimiento de descodificación de instantáneas en movimiento de acuerdo con la reivindicación 1, en el que un vector de movimiento del bloque actual es una suma de una diferencia de vector de movimiento del bloque actual y el vector de movimiento del candidato de predictor de vector de movimiento indicado.
3. El procedimiento de descodificación de instantáneas en movimiento de acuerdo con la reivindicación 1, en el que el número fijo se determina de acuerdo con una norma.
4. Un aparato de descodificación de instantáneas en movimiento que descodifica un bloque actual de una instantánea, que comprende:
una unidad de obtención configurada para
establecer un número fijo de primeros candidatos de predictor de vector de movimiento, siendo dicho número fijo un número máximo de candidatos de predictor, teniendo cada candidato de predictor de vector de movimiento un vector de movimiento que se ha obtenido a partir de un bloque adyacente al bloque actual; borrar un candidato redundante de los primeros candidatos de predictor de vector de movimiento; borrar, de los primeros candidatos de predictor de vector de movimiento, un candidato de predictor de vector de movimiento no disponible que se ha obtenido a partir de un bloque codificado por intra predicción, un bloque ubicado fuera de un límite de un sector o una instantánea que incluye el bloque actual, o un bloque que no se ha descodificado aún;
determinar si el número total de primeros candidatos de predictor de vector de movimiento después de las etapas de borrado es menor que el número fijo; y
obtener un segundo candidato de predictor de vector de movimiento que tiene un segundo vector de movimiento cuando el número total de primeros candidatos de predictor de vector de movimiento es menor que el número fijo, siendo el segundo vector de movimiento un vector nulo; y
un descodificador configurado para
descodificar un índice codificado que indica uno cualquiera de los primeros candidatos de predictor de vector de movimiento después de las etapas de borrado o el segundo candidato de predictor de vector de movimiento; descodificar el bloque actual usando el vector de movimiento del candidato de predictor de vector de movimiento indicado;
en el que el descodificador está configurado adicionalmente para usar el número fijo para descodificar el índice codificado.
ES12793588T 2011-05-31 2012-05-29 Procedimiento de descodificación de vídeo y dispositivo de descodificación de vídeo Active ES2779226T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201161491381P 2011-05-31 2011-05-31
PCT/JP2012/003496 WO2012164908A1 (ja) 2011-05-31 2012-05-29 動画像符号化方法、動画像符号化装置、動画像復号化方法、動画像復号化装置、および動画像符号化復号化装置

Publications (1)

Publication Number Publication Date
ES2779226T3 true ES2779226T3 (es) 2020-08-14

Family

ID=47258784

Family Applications (2)

Application Number Title Priority Date Filing Date
ES12793588T Active ES2779226T3 (es) 2011-05-31 2012-05-29 Procedimiento de descodificación de vídeo y dispositivo de descodificación de vídeo
ES19208547T Active ES2971526T3 (es) 2011-05-31 2012-05-29 Procedimiento de descodificación de vídeo, dispositivo de descodificación de vídeo

Family Applications After (1)

Application Number Title Priority Date Filing Date
ES19208547T Active ES2971526T3 (es) 2011-05-31 2012-05-29 Procedimiento de descodificación de vídeo, dispositivo de descodificación de vídeo

Country Status (12)

Country Link
US (9) US8989271B2 (es)
EP (3) EP3629583B1 (es)
JP (4) JP5937589B2 (es)
KR (1) KR101889582B1 (es)
CN (2) CN103548351B (es)
CA (1) CA2834191C (es)
ES (2) ES2779226T3 (es)
MX (1) MX2013012209A (es)
PL (2) PL2717579T3 (es)
RU (1) RU2614542C2 (es)
TW (1) TW201304552A (es)
WO (1) WO2012164908A1 (es)

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2487200A (en) 2011-01-12 2012-07-18 Canon Kk Video encoding and decoding with improved error resilience
US9066110B2 (en) 2011-03-08 2015-06-23 Texas Instruments Incorporated Parsing friendly and error resilient merge flag coding in video coding
WO2012140821A1 (ja) 2011-04-12 2012-10-18 パナソニック株式会社 動画像符号化方法、動画像符号化装置、動画像復号化方法、動画像復号化装置、および動画像符号化復号化装置
GB2491589B (en) * 2011-06-06 2015-12-16 Canon Kk Method and device for encoding a sequence of images and method and device for decoding a sequence of image
TWI602421B (zh) * 2011-06-13 2017-10-11 Sun Patent Trust Image decoding method and image decoding apparatus
US9866859B2 (en) * 2011-06-14 2018-01-09 Texas Instruments Incorporated Inter-prediction candidate index coding independent of inter-prediction candidate list construction in video coding
CN106791834B (zh) 2011-06-14 2020-07-10 三星电子株式会社 对图像进行解码的方法和设备
AU2015200192B2 (en) * 2011-06-14 2016-08-04 Samsung Electronics Co., Ltd. Method and apparatus for encoding motion information and method and apparatus for decoding same
EP3223523A1 (en) 2011-06-24 2017-09-27 HFI Innovation Inc. Method and apparatus for removing redundancy in motion vector predictors
RU2601180C2 (ru) 2011-06-27 2016-10-27 Самсунг Электроникс Ко., Лтд. Способ и устройство для кодирования информации движения, а также способ и устройство для ее декодирования
JP2013012905A (ja) * 2011-06-29 2013-01-17 Sony Corp 画像処理装置および方法
WO2013001749A1 (ja) * 2011-06-29 2013-01-03 パナソニック株式会社 画像符号化方法、画像復号方法、画像符号化装置、画像復号装置および画像符号化復号装置
CN105430390B (zh) * 2011-06-30 2017-04-12 Jvc建伍株式会社 图像解码装置、图像解码方法、接收装置及接收方法
MY181718A (en) 2011-06-30 2021-01-05 Sun Patent Trust Image decoding method, image encoding method, image decoding device, image encoding device, and image encoding/decoding device
EP2744202B1 (en) 2011-08-11 2020-05-27 Sun Patent Trust Image encoding method, image decoding method, image encoding apparatus, image decoding apparatus, and image encoding/decoding apparatus
KR20130030181A (ko) * 2011-09-16 2013-03-26 한국전자통신연구원 움직임 벡터 예측기를 이용한 움직임 벡터 부호화/복호화 방법 및 장치
JP5884697B2 (ja) * 2011-09-28 2016-03-15 株式会社Jvcケンウッド 動画像符号化装置、動画像符号化方法、動画像符号化プログラム、送信装置、送信方法及び送信プログラム
JP5488666B2 (ja) * 2011-09-28 2014-05-14 株式会社Jvcケンウッド 動画像復号装置、動画像復号方法、動画像復号プログラム、受信装置、受信方法及び受信プログラム
KR101809879B1 (ko) 2011-09-28 2017-12-15 가부시키가이샤 제이브이씨 켄우드 동영상 인코딩 장치, 동영상 인코딩 방법 및 동영상 인코딩 프로그램을 저장한 기록매체
IN2014CN02602A (es) 2011-10-19 2015-08-07 Panasonic Corp
JP5942782B2 (ja) * 2011-10-31 2016-06-29 株式会社Jvcケンウッド 動画像復号装置、動画像復号方法、動画像復号プログラム、受信装置、受信方法及び受信プログラム
US20130177084A1 (en) * 2012-01-10 2013-07-11 Qualcomm Incorporated Motion vector scaling in video coding
WO2013107028A1 (en) * 2012-01-19 2013-07-25 Mediatek Singapore Pte. Ltd. Methods and apparatuses of amvp simplification
JP5633597B2 (ja) * 2012-04-12 2014-12-03 株式会社Jvcケンウッド 動画像復号装置、動画像復号方法、動画像復号プログラム、受信装置、受信方法及び受信プログラム
RU2617920C9 (ru) 2012-04-12 2017-08-29 ДжейВиСи КЕНВУД КОРПОРЕЙШН Устройство кодирования движущегося изображения, способ кодирования движущегося изображения и программа кодирования движущегося изображения, а также устройство декодирования движущегося изображения, способ декодирования движущегося изображения и программа декодирования движущегося изображения
JP6020323B2 (ja) * 2012-04-12 2016-11-02 株式会社Jvcケンウッド 動画像符号化装置、動画像符号化方法、動画像符号化プログラム、送信装置、送信方法及び送信プログラム
JP6157114B2 (ja) * 2012-12-28 2017-07-05 キヤノン株式会社 画像符号化装置、画像符号化方法及びプログラム、画像復号装置、画像復号方法及びプログラム
CN104904209B (zh) 2013-01-07 2018-07-24 Lg 电子株式会社 视频信号处理方法
CN103079067B (zh) * 2013-01-09 2016-03-09 华为技术有限公司 运动矢量预测值列表构建方法和视频编解码方法及装置
CN106664405B (zh) 2015-06-09 2020-06-09 微软技术许可有限责任公司 用调色板模式对经逸出编码的像素的稳健编码/解码
US10560718B2 (en) * 2016-05-13 2020-02-11 Qualcomm Incorporated Merge candidates for motion vector prediction for video coding
WO2018181252A1 (en) * 2017-03-28 2018-10-04 Panasonic Intellectual Property Corporation Of America Encoding apparatus, decoding apparatus, encoding method, and decoding method
US10284869B2 (en) 2017-09-28 2019-05-07 Google Llc Constrained motion field estimation for hardware efficiency
US10880573B2 (en) * 2017-08-15 2020-12-29 Google Llc Dynamic motion vector referencing for video coding
CN110662056B (zh) 2018-06-29 2022-06-07 北京字节跳动网络技术有限公司 哪个查找表需要更新或不更新
GB2588531B (en) 2018-06-29 2023-02-01 Beijing Bytedance Network Tech Co Ltd Concept of using one or multiple look up tables to store motion information of previously coded in order and use them to code following blocks
CN110662053B (zh) 2018-06-29 2022-03-25 北京字节跳动网络技术有限公司 使用查找表的视频处理方法、装置和存储介质
JP7460617B2 (ja) * 2018-06-29 2024-04-02 北京字節跳動網絡技術有限公司 Lut更新条件
JP7256265B2 (ja) 2018-06-29 2023-04-11 北京字節跳動網絡技術有限公司 ルックアップテーブルの更新:fifo、制限されたfifo
KR102646649B1 (ko) 2018-06-29 2024-03-13 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 Lut에서의 모션 후보들의 검사 순서
TWI719525B (zh) 2018-06-29 2021-02-21 大陸商北京字節跳動網絡技術有限公司 Lut與amvp之間的交互
BR112020024142A2 (pt) 2018-06-29 2021-03-02 Beijing Bytedance Network Technology Co., Ltd. método para processamento de vídeo, aparelho para codificação de dados de vídeo, meio de armazenamento e meio de gravação legíveis por computador não transitório
GB2589241B (en) 2018-07-02 2023-06-07 Beijing Bytedance Network Tech Co Ltd Update of look-up tables
TW202025760A (zh) 2018-09-12 2020-07-01 大陸商北京字節跳動網絡技術有限公司 要檢查多少個hmvp候選
US11317099B2 (en) * 2018-10-05 2022-04-26 Tencent America LLC Method and apparatus for signaling an offset in video coding for intra block copy and/or inter prediction
CN111385575A (zh) 2018-12-29 2020-07-07 华为技术有限公司 帧间预测方法、装置以及相应的编码器和解码器
KR102648159B1 (ko) 2019-01-10 2024-03-18 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 Lut 업데이트의 호출
WO2020143824A1 (en) 2019-01-13 2020-07-16 Beijing Bytedance Network Technology Co., Ltd. Interaction between lut and shared merge list
WO2020147773A1 (en) 2019-01-16 2020-07-23 Beijing Bytedance Network Technology Co., Ltd. Inserting order of motion candidates in lut
WO2020192611A1 (en) 2019-03-22 2020-10-01 Beijing Bytedance Network Technology Co., Ltd. Interaction between merge list construction and other tools
WO2020224639A1 (en) * 2019-05-09 2020-11-12 Beijing Bytedance Network Technology Co., Ltd. Improvement on hmvp table
MX2021014298A (es) 2019-05-24 2022-01-04 Huawei Tech Co Ltd Un codificador, un decodificador y metodos correspondientes utilizados para lista de fusion ibc.

Family Cites Families (148)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0314018B1 (en) 1987-10-30 1993-09-01 Nippon Telegraph And Telephone Corporation Method and apparatus for multiplexed vector quantization
FR2725577B1 (fr) 1994-10-10 1996-11-29 Thomson Consumer Electronics Procede de codage ou de decodage de vecteurs mouvement et dispositif de codage ou de decodage mettant en oeuvre ledit procede
US5995080A (en) 1996-06-21 1999-11-30 Digital Equipment Corporation Method and apparatus for interleaving and de-interleaving YUV pixel data
JP3263807B2 (ja) 1996-09-09 2002-03-11 ソニー株式会社 画像符号化装置および画像符号化方法
US6148026A (en) 1997-01-08 2000-11-14 At&T Corp. Mesh node coding to enable object based functionalities within a motion compensated transform video coder
JPH10224800A (ja) 1997-02-07 1998-08-21 Matsushita Electric Ind Co Ltd 動きベクトル符号化方法および復号化方法
US6043838A (en) 1997-11-07 2000-03-28 General Instrument Corporation View offset estimation for stereoscopic video coding
JP4004653B2 (ja) 1998-08-03 2007-11-07 カスタム・テクノロジー株式会社 動きベクトル検出方法および装置、記録媒体
US6192148B1 (en) 1998-11-05 2001-02-20 Winbond Electronics Corp. Method for determining to skip macroblocks in encoding video
US6192080B1 (en) 1998-12-04 2001-02-20 Mitsubishi Electric Research Laboratories, Inc. Motion compensated digital video signal processing
US6594313B1 (en) 1998-12-23 2003-07-15 Intel Corporation Increased video playback framerate in low bit-rate video applications
JP4487374B2 (ja) 1999-06-01 2010-06-23 ソニー株式会社 符号化装置及び符号化方法並びに多重化装置及び多重化方法
US6842483B1 (en) 2000-09-11 2005-01-11 The Hong Kong University Of Science And Technology Device, method and digital video encoder for block-matching motion estimation
JP2002152750A (ja) 2000-11-10 2002-05-24 Matsushita Electric Ind Co Ltd 動きベクトル検出方法および装置
WO2003041415A1 (en) 2001-11-06 2003-05-15 Matsushita Electric Industrial Co., Ltd. Moving picture coding method and moving picture decoding method
JP4015934B2 (ja) 2002-04-18 2007-11-28 株式会社東芝 動画像符号化方法及び装置
JP2004088722A (ja) 2002-03-04 2004-03-18 Matsushita Electric Ind Co Ltd 動画像符号化方法および動画像復号化方法
KR101011849B1 (ko) 2002-04-19 2011-01-31 파나소닉 주식회사 움직임 벡터 계산방법
TWI259726B (en) 2002-04-19 2006-08-01 Matsushita Electric Ind Co Ltd Motion vector derivation method
EP3054680B1 (en) 2002-04-19 2019-06-05 Panasonic Intellectual Property Corporation of America Motion vector calculating method
US20040001546A1 (en) 2002-06-03 2004-01-01 Alexandros Tourapis Spatiotemporal prediction for bidirectionally predictive (B) pictures and motion vector prediction for multi-picture reference motion compensation
WO2004006586A1 (ja) 2002-07-02 2004-01-15 Matsushita Electric Industrial Co., Ltd. 画像符号化方法および画像復号化方法
US8406301B2 (en) 2002-07-15 2013-03-26 Thomson Licensing Adaptive weighting of reference pictures in video encoding
EP1408697A4 (en) 2002-07-11 2007-07-25 Matsushita Electric Ind Co Ltd METHOD FOR DETERMINING THE FILTRATION THICKNESS, METHOD FOR MOVING PICTOR CODING AND METHOD FOR MOVING PICTOR CODING
CN1312927C (zh) 2002-07-15 2007-04-25 株式会社日立制作所 动态图像编码方法及解码方法
US7154952B2 (en) 2002-07-19 2006-12-26 Microsoft Corporation Timestamp-independent motion vector prediction for predictive (P) and bidirectionally predictive (B) pictures
US7023921B2 (en) * 2002-08-06 2006-04-04 Motorola, Inc. Method and apparatus for determining block match quality
ES2524117T3 (es) 2002-08-08 2014-12-04 Panasonic Intellectual Property Corporation Of America Procedimiento de codificación y procedimiento de descodificación de imágenes en movimiento
KR100506864B1 (ko) * 2002-10-04 2005-08-05 엘지전자 주식회사 모션벡터 결정방법
CA2470717C (en) 2002-11-01 2013-11-26 Matsushita Electric Industrial Co., Ltd. Moving picture coding method and moving picture decoding method
EP1909505B1 (en) 2002-11-25 2013-06-19 Panasonic Corporation Motion compensation method, picture coding method and picture decoding method
WO2004075555A1 (en) 2003-02-18 2004-09-02 Nokia Corporation Picture coding method
KR100693669B1 (ko) 2003-03-03 2007-03-09 엘지전자 주식회사 피일드 매크로 블록의 레퍼런스 픽쳐 결정 방법
US7266147B2 (en) 2003-03-31 2007-09-04 Sharp Laboratories Of America, Inc. Hypothetical reference decoder
US7523234B2 (en) 2003-07-15 2009-04-21 Thomson Licensing Motion estimation with fast search block matching
US7426308B2 (en) 2003-07-18 2008-09-16 Microsoft Corporation Intraframe and interframe interlace coding and decoding
KR100579542B1 (ko) 2003-07-29 2006-05-15 삼성전자주식회사 블럭 간의 상관성을 고려한 움직임 추정 장치 및 방법
KR20060060000A (ko) 2003-08-05 2006-06-02 코닌클리케 필립스 일렉트로닉스 엔.브이. 비디오 엔코딩 및 디코딩 방법들 및 장치들
US8064520B2 (en) * 2003-09-07 2011-11-22 Microsoft Corporation Advanced bi-directional predictive coding of interlaced video
CN1225127C (zh) 2003-09-12 2005-10-26 中国科学院计算技术研究所 一种用于视频编码的编码端/解码端双向预测方法
FR2860678A1 (fr) 2003-10-01 2005-04-08 Thomson Licensing Sa Procede de codage differentiel
GB2407006A (en) 2003-10-08 2005-04-13 Sony Uk Ltd Communicating streamed payload data and packet based auxiliary data
JP3675464B2 (ja) 2003-10-29 2005-07-27 ソニー株式会社 動画像符号化装置および動画像符号化制御方法
TWI330976B (en) 2003-12-05 2010-09-21 Trident Microsystems Far East Method and apparatus for encoding/decoding dynamic graphic content
US7301482B1 (en) 2003-12-12 2007-11-27 Marvell International Ltd. Circuits, architectures, systems, methods, algorithms and software for conditional modulation coding
JP2005184042A (ja) 2003-12-15 2005-07-07 Sony Corp 画像復号装置及び画像復号方法並びに画像復号プログラム
KR100608050B1 (ko) 2004-01-14 2006-08-02 삼성전자주식회사 사용자의 요구에 의해 활성화되는 인터랙티브 그래픽스트림을 저장한 저장 매체, 재생 장치 및 그 재생 방법
US8190003B2 (en) 2004-01-14 2012-05-29 Samsung Electronics Co., Ltd. Storage medium storing interactive graphics stream activated in response to user's command, and reproducing apparatus for reproducing from the same
EP1583367A1 (en) 2004-03-30 2005-10-05 Matsushita Electric Industrial Co., Ltd. Motion estimation employing line and column vectors
DE602004030993D1 (de) * 2004-04-30 2011-02-24 Panasonic Corp Bewegungsschätzung unter Verwendung von adaptiven räumlichen Verfeinerungsvektoren
JP4145275B2 (ja) 2004-07-27 2008-09-03 富士通株式会社 動きベクトル検出・補償装置
TWI250423B (en) 2004-07-30 2006-03-01 Ind Tech Res Inst Method for processing video images
TWI268715B (en) 2004-08-16 2006-12-11 Nippon Telegraph & Telephone Picture encoding method, picture decoding method, picture encoding apparatus, and picture decoding apparatus
EP1638333A1 (en) 2004-09-17 2006-03-22 Mitsubishi Electric Information Technology Centre Europe B.V. Rate adaptive video coding
JP4375305B2 (ja) 2004-10-26 2009-12-02 ソニー株式会社 情報処理装置および情報処理方法、記録媒体、並びに、プログラム
JP4148228B2 (ja) 2005-02-10 2008-09-10 ソニー株式会社 画像記録装置、画像再生制御装置、画像記録再生制御装置、これらの装置の処理方法およびその方法をコンピュータに実行させるプログラム
US7660354B2 (en) 2005-05-11 2010-02-09 Fang Shi Temporal error concealment for bi-directionally predicted frames
US8761258B2 (en) 2005-06-17 2014-06-24 The Hong Kong University Of Science And Technology Enhanced block-based motion estimation algorithms for video compression
US9661376B2 (en) 2005-07-13 2017-05-23 Polycom, Inc. Video error concealment method
EP1753242A2 (en) 2005-07-18 2007-02-14 Matsushita Electric Industrial Co., Ltd. Switchable mode and prediction information coding
US7697783B2 (en) 2005-07-26 2010-04-13 Sony Corporation Coding device, coding method, decoding device, decoding method, and programs of same
JP4401336B2 (ja) 2005-08-31 2010-01-20 三洋電機株式会社 符号化方法
US20070025444A1 (en) 2005-07-28 2007-02-01 Shigeyuki Okada Coding Method
JP2008011455A (ja) * 2006-06-30 2008-01-17 Sanyo Electric Co Ltd 符号化方法
JP4570532B2 (ja) 2005-08-02 2010-10-27 パナソニック株式会社 動き検出装置、動き検出方法、集積回路およびプログラム
US20070030894A1 (en) 2005-08-03 2007-02-08 Nokia Corporation Method, device, and module for improved encoding mode control in video encoding
JP2007142637A (ja) 2005-11-16 2007-06-07 Matsushita Electric Ind Co Ltd 画像情報符号化装置
EP1980112B1 (en) 2006-02-02 2012-10-24 Thomson Licensing Method and apparatus for adaptive weight selection for motion compensated prediction
EP1982532A2 (en) 2006-02-02 2008-10-22 Thomson Licensing Method and apparatus for motion estimation using combined reference bi-prediction
US20070200949A1 (en) 2006-02-21 2007-08-30 Qualcomm Incorporated Rapid tuning in multimedia applications
JP4757080B2 (ja) 2006-04-03 2011-08-24 パナソニック株式会社 動き検出装置、動き検出方法、動き検出集積回路および画像符号化装置
WO2007124491A2 (en) 2006-04-21 2007-11-01 Dilithium Networks Pty Ltd. Method and system for video encoding and transcoding
CN101090491B (zh) 2006-06-16 2016-05-18 香港科技大学 用于视频压缩的增强的基于块的运动估计算法
KR20070120416A (ko) 2006-06-19 2007-12-24 엘지전자 주식회사 비디오 신호 디코딩 방법 및 장치, 비디오 신호 인코딩방법 및 장치
EP2030450B1 (en) 2006-06-19 2015-01-07 LG Electronics Inc. Method and apparatus for processing a video signal
DE102006043707A1 (de) * 2006-09-18 2008-03-27 Robert Bosch Gmbh Verfahren zur Datenkompression in einer Videosequenz
US8250618B2 (en) 2006-09-18 2012-08-21 Elemental Technologies, Inc. Real-time network adaptive digital video encoding/decoding
US8213509B2 (en) 2006-10-06 2012-07-03 Calos Fund Limited Liability Company Video coding on parallel processing systems
US8565314B2 (en) 2006-10-12 2013-10-22 Qualcomm Incorporated Variable length coding table selection based on block type statistics for refinement coefficient coding
US8599926B2 (en) 2006-10-12 2013-12-03 Qualcomm Incorporated Combined run-length coding of refinement and significant coefficients in scalable video coding enhancement layers
US8325819B2 (en) 2006-10-12 2012-12-04 Qualcomm Incorporated Variable length coding table selection based on video block type for refinement coefficient coding
US9319700B2 (en) 2006-10-12 2016-04-19 Qualcomm Incorporated Refinement coefficient coding based on history of corresponding transform coefficient values
RU2434361C2 (ru) 2006-10-30 2011-11-20 Ниппон Телеграф Энд Телефон Корпорейшн Способ генерации предсказанной опорной информации, способы кодирования и декодирования видео, устройства для этого, программы для этого и носитель данных, хранящий эти программы
JP2008199587A (ja) 2007-01-18 2008-08-28 Matsushita Electric Ind Co Ltd 画像符号化装置、画像復号化装置および方法
JP5025286B2 (ja) * 2007-02-28 2012-09-12 シャープ株式会社 符号化装置及び復号装置
TW200845758A (en) 2007-05-03 2008-11-16 Nat Univ Chung Cheng Fast intra coding algorithms for dynamic definition adjustment
KR101403341B1 (ko) 2007-03-28 2014-06-09 삼성전자주식회사 영상의 부호화, 복호화 방법 및 장치
CN101682769B (zh) 2007-04-12 2016-11-09 汤姆森特许公司 用于视频编码和解码的跳过-直接模式的取决于环境的合并的方法和装置
WO2008136178A1 (ja) 2007-04-26 2008-11-13 Panasonic Corporation 動き検出装置、動き検出方法、及び動き検出プログラム
JP2008283490A (ja) * 2007-05-10 2008-11-20 Ntt Docomo Inc 動画像符号化装置、方法及びプログラム、並びに動画像復号化装置、方法及びプログラム
JP5801054B2 (ja) 2007-06-12 2015-10-28 トムソン ライセンシングThomson Licensing スライスデータ用のマルチパスビデオのシンタックス構造をサポートする方法及び装置
KR101495886B1 (ko) 2007-07-19 2015-02-26 한국전자통신연구원 하향링크 프레임 생성 방법 및 셀 탐색 방법
JP2011501555A (ja) * 2007-10-16 2011-01-06 エルジー エレクトロニクス インコーポレイティド ビデオ信号処理方法及び装置
KR101228020B1 (ko) 2007-12-05 2013-01-30 삼성전자주식회사 사이드 매칭을 이용한 영상의 부호화 방법 및 장치, 그복호화 방법 및 장치
CN101198064A (zh) 2007-12-10 2008-06-11 武汉大学 一种分辨率分层技术中的运动矢量预测方法
KR20090095012A (ko) 2008-03-04 2009-09-09 삼성전자주식회사 연속적인 움직임 추정을 이용한 영상 부호화, 복호화 방법및 장치
JP2009218873A (ja) 2008-03-11 2009-09-24 Nec Personal Products Co Ltd デジタル放送受信機、および、プログラム
WO2009115901A2 (en) * 2008-03-19 2009-09-24 Nokia Corporation Combined motion vector and reference index prediction for video coding
KR101691199B1 (ko) 2008-04-11 2016-12-30 톰슨 라이센싱 비디오 부호화 및 복호화에서의 템플릿 매칭 예측을 위한 방법 및 장치
KR101596829B1 (ko) 2008-05-07 2016-02-23 엘지전자 주식회사 비디오 신호의 디코딩 방법 및 장치
PT104083A (pt) 2008-06-02 2009-12-02 Inst Politecnico De Leiria Método para transcodificar imagens de vídeo h.264/avc em mpeg-2
JP6088141B2 (ja) 2009-02-05 2017-03-01 トムソン ライセンシングThomson Licensing 適応型のモード・ビデオ符号化および復号を行うための方法および装置
CN102883160B (zh) 2009-06-26 2016-06-29 华为技术有限公司 视频图像运动信息获取方法、装置及设备、模板构造方法
KR101452859B1 (ko) 2009-08-13 2014-10-23 삼성전자주식회사 움직임 벡터를 부호화 및 복호화하는 방법 및 장치
US9060176B2 (en) 2009-10-01 2015-06-16 Ntt Docomo, Inc. Motion vector prediction in video coding
EP2490449A1 (en) 2009-10-16 2012-08-22 Sharp Kabushiki Kaisha Video coding device and video decoding device
TWI566586B (zh) 2009-10-20 2017-01-11 湯姆生特許公司 一序列形象的現時區塊之寫碼方法和重建方法
KR101459714B1 (ko) 2009-10-28 2014-11-13 에스케이텔레콤 주식회사 공간 분할을 이용한 움직임 벡터 부호화/복호화 방법 및 장치와 그를 이용한 영상 부호화/복호화 방법 및 장치
KR101441905B1 (ko) 2009-11-18 2014-09-24 에스케이텔레콤 주식회사 후보 예측 움직임 벡터 집합 선택을 이용한 움직임 벡터 부호화/복호화 방법 및 장치와 그를 이용한 영상 부호화/복호화 방법 및 장치
JPWO2011061880A1 (ja) 2009-11-19 2013-04-04 三菱電機株式会社 画像符号化装置、画像復号装置、画像符号化方法及び画像復号方法
US9288495B2 (en) 2009-11-24 2016-03-15 Sk Telecom Co., Ltd. Adaptive secondary prediction-based image encoding/decoding method, device and recording medium
WO2011064673A1 (en) 2009-11-30 2011-06-03 France Telecom Method of and apparatus for encoding video frames, method of and apparatus for decoding video frames
CN101860754B (zh) 2009-12-16 2013-11-13 香港应用科技研究院有限公司 运动矢量编码和解码的方法和装置
EP2514209A4 (en) 2009-12-17 2014-03-26 Ericsson Telefon Ab L M METHOD AND DEVICE FOR VIDEO CODING
US9036692B2 (en) 2010-01-18 2015-05-19 Mediatek Inc. Motion prediction method
CN102860006B (zh) 2010-02-05 2016-11-23 瑞典爱立信有限公司 管理预测运动向量候选
EP2536151A4 (en) 2010-02-10 2014-03-19 Lg Electronics Inc METHOD AND DEVICE FOR PROCESSING A VIDEO SIGNAL
US8995527B2 (en) 2010-02-19 2015-03-31 Qualcomm Incorporated Block type signalling in video coding
US20130003843A1 (en) 2010-03-12 2013-01-03 Mediatek Singapore Pte. Ltd. Motion Prediction Method
CN102210910B (zh) 2010-04-02 2013-02-13 重庆融海超声医学工程研究中心有限公司 一种超声换能器
KR101752418B1 (ko) 2010-04-09 2017-06-29 엘지전자 주식회사 비디오 신호 처리 방법 및 장치
KR102355933B1 (ko) * 2010-05-04 2022-01-25 엘지전자 주식회사 비디오 신호의 처리 방법 및 장치
US9124898B2 (en) 2010-07-12 2015-09-01 Mediatek Inc. Method and apparatus of temporal motion vector prediction
WO2012083487A1 (en) 2010-12-21 2012-06-28 Intel Corporation System and method for enhanced dmvd processing
KR101967817B1 (ko) 2010-09-02 2019-04-11 엘지전자 주식회사 영상 부호화 및 복호화 방법과 이를 이용한 장치
US10104391B2 (en) 2010-10-01 2018-10-16 Dolby International Ab System for nested entropy encoding
US20120082228A1 (en) 2010-10-01 2012-04-05 Yeping Su Nested entropy encoding
JP2012109720A (ja) 2010-11-16 2012-06-07 Panasonic Corp 画像変換装置、画像再生装置及び画像変換方法
US8824558B2 (en) 2010-11-23 2014-09-02 Mediatek Inc. Method and apparatus of spatial motion vector prediction
US8976873B2 (en) 2010-11-24 2015-03-10 Stmicroelectronics S.R.L. Apparatus and method for performing error concealment of inter-coded video frames
US8711940B2 (en) 2010-11-29 2014-04-29 Mediatek Inc. Method and apparatus of motion vector prediction with extended motion vector predictor
US9049455B2 (en) 2010-12-28 2015-06-02 Panasonic Intellectual Property Corporation Of America Image coding method of coding a current picture with prediction using one or both of a first reference picture list including a first current reference picture for a current block and a second reference picture list including a second current reference picture for the current block
KR102346666B1 (ko) 2011-01-07 2022-01-03 엘지전자 주식회사 영상 정보 부호화 방법 및 복호화 방법과 이를 이용한 장치
WO2012095467A1 (en) 2011-01-12 2012-07-19 Canon Kabushiki Kaisha Video encoding and decoding with low complexity
US9319716B2 (en) 2011-01-27 2016-04-19 Qualcomm Incorporated Performing motion vector prediction for video coding
US9066110B2 (en) * 2011-03-08 2015-06-23 Texas Instruments Incorporated Parsing friendly and error resilient merge flag coding in video coding
CN107105286B (zh) 2011-03-14 2020-01-21 寰发股份有限公司 推导运动向量预测子的方法与装置
US9648334B2 (en) 2011-03-21 2017-05-09 Qualcomm Incorporated Bi-predictive merge mode based on uni-predictive neighbors in video coding
US9143795B2 (en) 2011-04-11 2015-09-22 Texas Instruments Incorporated Parallel motion estimation in video coding
WO2012140821A1 (ja) 2011-04-12 2012-10-18 パナソニック株式会社 動画像符号化方法、動画像符号化装置、動画像復号化方法、動画像復号化装置、および動画像符号化復号化装置
EP4224861A1 (en) 2011-05-24 2023-08-09 Sun Patent Trust Image encoding method, image encoding apparatus, image decoding method, and image decoding apparatus
CN106791834B (zh) 2011-06-14 2020-07-10 三星电子株式会社 对图像进行解码的方法和设备
US9866859B2 (en) 2011-06-14 2018-01-09 Texas Instruments Incorporated Inter-prediction candidate index coding independent of inter-prediction candidate list construction in video coding
US9282338B2 (en) 2011-06-20 2016-03-08 Qualcomm Incorporated Unified merge mode and adaptive motion vector prediction mode candidates selection
CN105430390B (zh) 2011-06-30 2017-04-12 Jvc建伍株式会社 图像解码装置、图像解码方法、接收装置及接收方法
WO2013001803A1 (ja) 2011-06-30 2013-01-03 株式会社Jvcケンウッド 画像符号化装置、画像符号化方法、画像符号化プログラム、画像復号装置、画像復号方法および画像復号プログラム
AU2012323631B2 (en) 2011-10-11 2015-09-17 Mediatek Inc. Method and apparatus of motion and disparity vector derivation for 3D video coding and HEVC
JP5870047B2 (ja) 2013-01-08 2016-02-24 住友ゴム工業株式会社 空気入りタイヤ

Also Published As

Publication number Publication date
US20190124358A1 (en) 2019-04-25
US8989271B2 (en) 2015-03-24
EP4270953A3 (en) 2023-11-22
JPWO2012164908A1 (ja) 2015-02-23
JP5937589B2 (ja) 2016-06-22
RU2614542C2 (ru) 2017-03-28
MX2013012209A (es) 2013-11-01
JP6754978B2 (ja) 2020-09-16
US11917192B2 (en) 2024-02-27
JP6150189B2 (ja) 2017-06-21
CN107257483A (zh) 2017-10-17
EP2717579A1 (en) 2014-04-09
EP2717579B1 (en) 2020-01-22
TWI562622B (es) 2016-12-11
US9819961B2 (en) 2017-11-14
EP2717579A4 (en) 2014-11-05
CN107257483B (zh) 2020-01-21
CN103548351B (zh) 2017-07-11
US20160241873A1 (en) 2016-08-18
KR20140026430A (ko) 2014-03-05
PL3629583T3 (pl) 2024-03-25
US10652573B2 (en) 2020-05-12
CA2834191C (en) 2019-04-09
ES2971526T3 (es) 2024-06-05
TW201304552A (zh) 2013-01-16
US20210289228A1 (en) 2021-09-16
PL2717579T3 (pl) 2020-07-27
JP2019033529A (ja) 2019-02-28
US9609356B2 (en) 2017-03-28
US20180035130A1 (en) 2018-02-01
US20240163472A1 (en) 2024-05-16
RU2013147813A (ru) 2015-07-10
CA2834191A1 (en) 2012-12-06
US11509928B2 (en) 2022-11-22
EP4270953A2 (en) 2023-11-01
US20230033242A1 (en) 2023-02-02
JP2016174391A (ja) 2016-09-29
US20150181220A1 (en) 2015-06-25
EP3629583B1 (en) 2023-10-25
EP3629583A1 (en) 2020-04-01
US20120307903A1 (en) 2012-12-06
JP6435574B2 (ja) 2018-12-12
JP2017169224A (ja) 2017-09-21
US10645413B2 (en) 2020-05-05
KR101889582B1 (ko) 2018-08-20
CN103548351A (zh) 2014-01-29
US20190116377A1 (en) 2019-04-18
WO2012164908A1 (ja) 2012-12-06
US11057639B2 (en) 2021-07-06

Similar Documents

Publication Publication Date Title
ES2779226T3 (es) Procedimiento de descodificación de vídeo y dispositivo de descodificación de vídeo
JP6150090B2 (ja) 画像符号化方法、および画像符号化装置
JP6094983B2 (ja) 画像処理装置
JP6150190B2 (ja) 動画像符号化方法、および動画像符号化装置
ES2781868T3 (es) Procedimiento de decodificación de imágenes, procedimiento de codificación de imágenes, dispositivo de decodificación de imágenes, dispositivo de codificación de imágenes y dispositivo de codificación/decodificación de imágenes
JP6089312B2 (ja) 画像処理装置、画像符号化装置及び方法、並びに、画像復号装置及び方法
ES2693676T3 (es) Procedimiento de codificación de imagen, procedimiento de decodificación de imagen, aparato de codificación de imagen y aparato de decodificación de imagen
ES2691743T3 (es) Método de codificación de imágenes, método de decodificación de imágenes, dispositivo de codificación de imágenes y dispositivo de decodificación de imágenes
ES2961495T3 (es) Procedimiento de decodificación de imágenes y procedimiento de codificación de imágenes
ES2967129T3 (es) Método de decodificación de vídeo y decodificador de vídeo
ES2865101T3 (es) Procedimiento de codificación de imágenes, procedimiento de decodificación de imágenes, dispositivo de codificación de imágenes, dispositivo de decodificación de imágenes y dispositivo de codificación/decodificación de imágenes
JP5893570B2 (ja) 画像符号化方法および画像復号化方法
JPWO2013051209A1 (ja) 符号化方法および符号化装置
JP6304571B2 (ja) 動画像復号化方法および動画像復号化装置
JPWO2012090495A1 (ja) 画像符号化方法および画像復号方法