ES2644005T3 - Procedimiento de cálculo de vectores de movimiento - Google Patents

Procedimiento de cálculo de vectores de movimiento Download PDF

Info

Publication number
ES2644005T3
ES2644005T3 ES16157923.0T ES16157923T ES2644005T3 ES 2644005 T3 ES2644005 T3 ES 2644005T3 ES 16157923 T ES16157923 T ES 16157923T ES 2644005 T3 ES2644005 T3 ES 2644005T3
Authority
ES
Spain
Prior art keywords
image
motion vector
block
motion
encoded
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.)
Expired - Lifetime
Application number
ES16157923.0T
Other languages
English (en)
Inventor
Satoshi Kondo
Shinya Kadono
Makoto Hagai
Kiyofumi Abe
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Intellectual Property Corp of America
Original Assignee
Panasonic Intellectual Property Corp of America
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Panasonic Intellectual Property Corp of America filed Critical Panasonic Intellectual Property Corp of America
Application granted granted Critical
Publication of ES2644005T3 publication Critical patent/ES2644005T3/es
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

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/577Motion compensation with bidirectional frame interpolation, i.e. using B-pictures
    • 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
    • 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/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/109Selection of coding mode or of prediction mode among a plurality of temporal predictive coding modes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/127Prioritisation of hardware or computational resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/16Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter for a given display mode, e.g. for interlaced or progressive display mode
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/172Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/573Motion compensation with multiple frame prediction using two or more reference frames in a given prediction direction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/58Motion compensation with long-term prediction, i.e. the reference frame for a current frame not being the temporally closest one
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards

Abstract

Un procedimiento de descodificación para descodificar datos codificados de un bloque actual incluido en una imagen actual, comprendiendo el procedimiento de descodificación; especificar un bloque co-situado que es un bloque incluido en una segunda imagen que es diferente de la imagen actual, estando el bloque co-situado situado en la segunda imagen en la misma posición en la que está situado el bloque actual en la imagen actual; y determinar los primeros y segundos vectores de movimiento del bloque actual para llevar a cabo la compensación de movimiento en el bloque actual, usando un tercer vector de movimiento que es un vector de movimiento del bloque co-situado; generar una primera imagen predictiva del bloque actual usando el primer vector de movimiento del bloque actual y una segunda imagen predictiva del bloque actual usando el segundo vector de movimiento del bloque actual; generar una imagen predictiva del bloque actual en base a la primera imagen predictiva y la segunda imagen predictiva; descodificar los datos codificados del bloque actual para obtener una imagen de diferencia del bloque actual; y reconstruir el bloque actual añadiendo la imagen de diferencia del bloque actual y la imagen predictiva del bloque actual, caracterizado porque, en el caso en que una imagen de referencia a la que hace referencia el tercer vector de movimiento se almacena en una memoria de almacenamiento intermedio de imágenes a largo plazo, (i) el primer vector de movimiento, que se refiere a la imagen de referencia almacenada en la memoria de almacenamiento intermedio de imágenes a largo plazo, se determina que es igual al tercer vector de movimiento, y (ii) el segundo vector de movimiento, que se refiere a la segunda imagen que es diferente de la imagen actual, se determina que es igual a un valor de 0.

Description

5
10
15
20
25
30
35
40
45
50
55
DESCRIPCION
Procedimiento de calculo de vectores de movimiento Campo tecnico
La presente invencion se refiere a un procedimiento de codificacion y a un procedimiento de descodificacion de imagenes en movimiento y, en concreto, a un procedimiento de codificacion de prediccion que hace referencia a varias imagenes codificadas precedentes en orden de presentacion visual o a varias imagenes codificadas siguientes en orden de presentacion visual o a varias imagenes tanto precedentes como siguientes en orden de presentacion visual.
Antecedentes de la tecnica
En general, el volumen de informacion se comprime mediante la reduccion de la redundancia en direcciones temporal y espacial para la codificacion de imagenes en movimiento. Por lo tanto, la obtencion de movimiento y la compensacion de movimiento se llevan a cabo de una forma bloque a bloque haciendo referencia a una imagen precedente o siguiente, y se lleva a cabo una codificacion para un valor de diferencia entre una imagen predictiva obtenida y una imagen actual para la codificacion de prediccion entre imagenes orientada a reducir una redundancia temporal.
En un procedimiento de codificacion de imagenes en movimiento H.26L, el cual esta actualmente bajo normalizacion, se proponen una imagen con solo codificacion de prediccion entre imagenes (imagen I), una imagen para la cual se lleva a cabo la codificacion de prediccion entre imagenes haciendo referencia a una imagen (en lo sucesivo en el presente documento, imagen P) y una imagen para la cual se lleva a cabo la codificacion de prediccion entre imagenes haciendo referencia a dos imagenes precedentes en orden de presentacion visual o dos imagenes siguientes en orden de presentacion visual o cada una de imagenes precedente y siguiente en orden de presentacion visual (en lo sucesivo en el presente documento, la imagen B).
La figura 1 es una ilustracion que muestra un ejemplo de una relacion de referencia entre cada imagen de acuerdo con el procedimiento de codificacion de imagenes en movimiento que se ha mencionado en lo que antecede e imagenes de referencia.
En la imagen I1 se lleva a cabo la codificacion de prediccion entre imagenes sin una imagen de referencia, y en la imagen P10 se lleva a cabo la codificacion de prediccion entre imagenes haciendo referencia a una imagen precedente en orden de presentacion visual, P7. En una imagen B6, se lleva a cabo la codificacion de prediccion entre imagenes haciendo referencia a dos imagenes precedentes en orden de presentacion visual, en una imagen B12 se lleva a cabo la codificacion de prediccion entre imagenes haciendo referencia a dos imagenes siguientes en orden de presentacion visual y en una imagen B18 se lleva a cabo la codificacion de prediccion entre imagenes haciendo referencia a cada una de las imagenes precedente y siguiente en orden de presentacion visual.
Un modo directo es un modo de prediccion de bi-predicciones que llevan a cabo la codificacion de prediccion entre imagenes haciendo referencia a cada una de las imagenes precedente y siguiente en orden de presentacion visual. En el modo directo, los vectores de movimiento para un bloque que se va a codificar no se codifican en el flujo de bits directamente, y dos vectores de movimiento para la compensacion de movimiento real se calculan haciendo referencia a un vector de movimiento de un bloque co-situado en una imagen codificada cercana a la imagen que incluye el bloque que se va a codificar en orden de presentacion visual, y se genera un bloque predictivo.
El Borrador de trabajo numero 2, Revision 2 (WD-2), Documento JVT-B118r2, de JVT od ISO/IEC MPEG e ITU-T VCEG, generado en la fecha , paginas 1-106 desvela la descodificacion de una imagen diana de una secuencia de imagenes en modo directo en el contexto de prediccion de imagen de referencia multiple. La figura 2 muestra un ejemplo de que una imagen codificada a la que se hace referencia para poder determinar un vector de movimiento en el modo directo contiene un vector de movimiento que hace referencia a una imagen precedente en orden de presentacion visual. “P” indicado por una lmea vertical en la figura 2 no tiene nada que ver con un tipo de imagen y muestra una simple imagen. En la figura 2, por ejemplo, una imagen P83, en la cual se lleva a cabo la bi- prediccion haciendo referencia a las imagenes P82 y P84, es una imagen actual que se va a codificar. Si se supone que un bloque con codificacion en la imagen P83 es un bloque MB81, un vector de movimiento del bloque MB81 se determina usando un vector de movimiento de un bloque co-situado MB82 en la imagen P84 que es una imagen de referencia hacia atras codificada. Debido a que el bloque MB82 solo contiene un vector de movimiento MV81 como un vector de movimiento, dos vectores de movimiento MV82 y MV83 que se van a obtener se calculan directamente mediante la aplicacion de un ajuste de escala a un vector de movimiento MV81 y un intervalo de tiempo TR81 basandose en la Ecuacion 1 (a) y la Ecuacion 1 (b).
MV82 = MV81/TR81 x TR82 Ecuacion 1 (a)
MV83 = -MV81/TR81 x TR83 Ecuacion 1 (b)
5
10
15
20
25
30
35
40
45
50
55
60
En estas ecuaciones, el intervalo de tiempo TR81 muestra un intervalo entre la imagen P84 y la imagen P82, es dedr, un intervalo de tiempo entre la imagen P84 y una imagen de referencia indicada por el vector de movimiento MV81. El intervalo de tiempo TR82 muestra un intervalo de tiempo entre la imagen P83 y una imagen de referencia indicada por el vector de movimiento MV82. El intervalo de tiempo TR83 muestra un intervalo de tiempo entre la imagen P83 y una imagen de referencia indicada por el vector de movimiento MV83.
El modo directo incluye dos procedimientos, la prediccion temporal ya explicada y la prediccion espacial, y la prediccion espacial se explica en lo sucesivo. En la prediccion espacial en el modo directo, por ejemplo, la codificacion se lleva a cabo en un macrobloque de una forma de 16 x 16 pfxeles, y un vector de movimiento, el cual se obtiene haciendo referencia a una imagen lo mas cercana a una imagen actual que se va a codificar en orden de presentacion visual, se selecciona de vectores de movimiento en tres macrobloques en el adyacente del macrobloque actual que se va a codificar, y el vector de movimiento seleccionado es un vector de movimiento para el macrobloque actual que se va a codificar. Si tres vectores de movimiento hacen referencia a una misma imagen, se selecciona un valor medio. Si dos de tres vectores de movimiento hacen referencia a una imagen lo mas cercana a una imagen actual que se va a codificar en orden de presentacion visual, el resto se considera como vector “0”, y se selecciona un valor medio de estos valores. Si solo un vector de movimiento hace referencia a una imagen lo mas cercana a una imagen actual que se va a codificar en orden de presentacion visual, se selecciona este vector de movimiento. De esta manera, un vector de movimiento no se codifica para un macrobloque actual que se va a codificar en el modo directo, y la prediccion de movimiento se lleva a cabo usando un vector de movimiento contenido en otro macrobloque.
La figura 3A es una ilustracion que muestra un ejemplo de un procedimiento de prediccion de vectores de movimiento en el caso de que se haga referencia a una imagen que preceda en una imagen B en orden de presentacion visual usando un procedimiento de prediccion espacial convencional en el modo directo. En esta figura 3A, P indica una imagen P, B indica una imagen B y los numeros asignados a tipos de imagen a la derecha de cuatro imagenes indican un orden en el cual se codifica cada imagen. Se debe suponer que un macrobloque sombreado en diagonal en una imagen B4 es un macrobloque actual que se va a codificar. Cuando un vector de movimiento de un macrobloque actual que se va a codificar se calcula usando un procedimiento de prediccion espacial en el modo directo, en primer lugar, tres macrobloques codificados (area sombreada con lmeas discontinuas) se seleccionan del adyacente del macrobloque actual que se va a codificar. Se omite en el presente caso la explicacion de un procedimiento para seleccionar tres macrobloques adyacentes. Ya se han calculado y almacenado los vectores de movimiento en tres macrobloques codificados. Existe un caso en el que el vector de movimiento se obtiene haciendo referencia a diferentes imagenes para cada macrobloque incluso si los macrobloques estan en una misma imagen. Los indices de referencia en las imagenes de referencia usadas para codificar cada macrobloque pueden mostrar a que imagen hacen referencia los tres macrobloques adyacentes respectivamente de la misma. El detalle de los indices de referencia se explicara mas adelante.
A continuacion, por ejemplo, se supone que tres macrobloques adyacentes se seleccionan para un macrobloque actual que se va a codificar que se muestra en la figura 3A, y los vectores de movimiento en cada macrobloque codificado son un vector de movimiento a, b y c respectivamente. En el presente caso, se supone que el vector de movimiento a y el vector de movimiento b se obtienen haciendo referencia a una imagen P con un numero de imagen 11 de “11”, y el vector de movimiento c se obtiene haciendo referencia a una imagen P con el numero de imagen 11 de “8”. En este caso, entre estos vectores de movimiento, a, b y c, los vectores de movimiento a y b que hacen referencia a una imagen lo mas cercana a una imagen actual que se va a codificar en orden de tiempo de presentacion visual son candidatos para un vector de movimiento de un macrobloque actual que se va a codificar. En este caso, el vector de movimiento c se considera como “0”, y un valor medio de estos tres vectores de movimiento a, b y c se selecciona y se determina como un vector de movimiento del macrobloque actual que se va a codificar.
No obstante, un procedimiento de codificacion tal como MPEG-4 puede llevar a cabo la codificacion para cada macrobloque en una imagen usando una estructura de campo y una estructura de trama. Por lo tanto, en un procedimiento de codificacion tal como MPEG-4, existe un caso en el que un macrobloque codificado en la estructura de campo y un macrobloque codificado en la estructura de trama se mezclen en una trama de una trama de referencia. Incluso en tal caso, si tres macrobloques en la zona adyacente de un macrobloque actual que se va a codificar se codifican en la misma estructura que el macrobloque actual que se va a codificar, es posible obtener un vector de movimiento del macrobloque actual que se va a codificar usando el procedimiento de prediccion espacial que se ha mencionado en lo que antecede en el modo directo sin ningun problema. Es decir, un caso en el que tres macrobloques adyacentes se codifican en la estructura de trama para un macrobloque actual que se va a codificar en la estructura de trama, o un caso en el que tres macrobloques adyacentes se codifican en la estructura de campo para un macrobloque actual que se va a codificar en la estructura de campo. El primer caso es como el que ya se explico. En el segundo caso, mediante el uso de tres vectores de movimiento que se corresponden con campos superiores de tres macrobloques adyacentes para un campo superior de un macrobloque actual que se va a codificar, y mediante el uso de tres vectores de movimiento que se corresponden con campos inferiores de tres macrobloques adyacentes para un campo inferior del macrobloque actual que se va a codificar, un vector de movimiento del macrobloque actual que se va a codificar se puede obtener para el campo superior y el campo inferior respectivamente usando el procedimiento que se ha mencionado en lo que antecede.
5
10
15
20
25
30
35
40
45
50
55
60
No obstante, en el procedimiento de prediccion temporal en el modo directo, debido a que el macrobloque que se ha mencionado en lo anterior contiene varios vectores de movimiento para la prediccion temporal en el modo directo cuando es un bloque con codificacion de prediccion entre imagenes, se lleva a cabo la compensacion de movimiento en el modo directo, si un bloque del cual se hace referencia al vector de movimiento pertenece a una imagen B tal como B6 que se muestra en la figura 1, ocurre directamente un problema de que no puede aplicarse un calculo del vector de movimiento por un ajuste de escala basandose en la ecuacion 1. Ademas, existe un caso en el que la precision del valor del vector de movimiento (precision de medio pixel y precision de pixel de un cuarto, por ejemplo) no satisface la prediccion predeterminada debido a que la operacion de division se lleva a cabo despues del calculo de vector de movimiento.
Cuando un macrobloque actual que se va a codificar y uno de los macrobloques adyacentes se codifican en una estructura diferente para una prediccion espacial, no se especifica cual de una estructura de campo o una estructura de trama se usa para codificar el macrobloque actual que se va a codificar, y un procedimiento para seleccionar un vector de movimiento del macrobloque actual que se va a codificar a partir de vectores de movimiento de macrobloques adyacentes codificados tanto en la estructura de campo como en la estructura de trama no es especificado.
El primer objetivo de la presente invencion es ofrecer un procedimiento de prediccion de vectores de movimiento en direccion temporal con alta precision en el modo directo, incluso si un bloque del cual se hace referencia a un vector de movimiento pertenece a una imagen B.
El segundo objetivo de la presente invencion es ofrecer un procedimiento de prediccion de vectores de movimiento en direccion espacial con alta precision en el modo directo, incluso si un bloque del cual se hace referencia a un vector de movimiento pertenece a una imagen B.
Divulgacion de la invencion
Con el fin de lograr el objetivo anterior, como se define en la reivindicacion 1 se proporciona un procedimiento de descodificacion y se proporciona un aparato de descodificacion como se define en la reivindicacion 3.
Breve descripcion de los dibujos
La figura 1 es un diagrama esquematico que muestra una relacion de referencia de imagenes de un ejemplo convencional.
La figura 2 es un diagrama esquematico que muestra una operacion en un modo directo convencional.
La figura 3A es una ilustracion que muestra un ejemplo de un procedimiento de prediccion de vectores de movimiento cuando se hace referencia a una imagen temporalmente precedente en una imagen B usando un procedimiento de prediccion espacial de un modo directo convencional.
La figura 3B es una ilustracion que muestra un ejemplo de una lista de referencia generada en cada imagen actual que se va a codificar.
La figura 4 es una ilustracion explicativa de numeros de imagen e indices de referencia.
La figura 5 es una ilustracion que muestra un concepto de un formato de senal de codificacion de imagen de un aparato de codificacion de imagenes convencional.
La figura 6 es un diagrama de bloques que muestra una operacion de codificacion de acuerdo con la primera y la segunda realizaciones de esta invencion.
La figura 7 es un diagrama esquematico que muestra una operacion cuando un bloque del cual se hace referencia al vector de movimiento en el modo directo contiene dos vectores de movimiento que hacen referencia a un tiempo precedente en orden de presentacion visual.
La figura 8 en un diagrama esquematico que compara una relacion de referencia de imagenes en orden de presentacion visual y en orden de codificacion.
La figura 9 es un diagrama esquematico que muestra una operacion cuando un bloque del cual se hace referencia al vector de movimiento en el modo directo contiene dos vectores de movimiento que hacen referencia a un tiempo siguiente en orden de presentacion visual.
La figura 10 es un diagrama esquematico que compara una relacion de referencia de imagenes en el orden de presentacion visual y en el orden de codificacion.
La figura 11 es un diagrama de bloques que muestra una operacion de descodificacion de acuerdo con la quinta y sexta realizaciones de la presente invencion.
La figura 12 es un diagrama esquematico que muestra una operacion cuando un bloque del cual se hace referencia al vector de movimiento en el modo directo contiene dos vectores de movimiento que hacen referencia a un tiempo precedente en orden de presentacion visual.
La figura 13 es un diagrama esquematico para mostrar una operacion cuando un bloque del cual se hace referencia al vector de movimiento en el modo directo contiene dos vectores de movimiento que hacen referencia a un tiempo siguiente en orden de presentacion visual.
La figura 14 es un diagrama esquematico para mostrar una operacion cuando un bloque del cual se hace referencia al vector de movimiento en el modo directo contiene dos vectores de movimiento que hacen referencia a un tiempo siguiente en orden de presentacion visual.
La figura 15 es un diagrama esquematico para mostrar una operacion cuando un bloque del cual se hace
5
10
15
20
25
30
35
40
45
50
55
60
65
referencia al vector de movimiento en el modo directo contiene dos vectores de movimiento que hacen referencia a un tiempo precedente en orden de presentacion visual.
La figura 16 es un diagrama esquematico para mostrar una operacion cuando un bloque del cual se hace referencia al vector de movimiento en el modo directo contiene dos vectores de movimiento que hacen referencia a un tiempo precedente en orden de presentacion visual.
La figura 17 es un diagrama esquematico para mostrar una operacion cuando un bloque del cual se hace referencia al vector de movimiento en el modo directo contiene dos vectores de movimiento que hacen referencia a un tiempo precedente en orden de presentacion visual.
La figura 18 es un diagrama esquematico para mostrar una operacion cuando un bloque del cual se hace referencia al vector de movimiento en el modo directo contiene dos vectores de movimiento que hacen referencia a un tiempo precedente en orden de presentacion visual.
La figura 19 es un diagrama esquematico para mostrar una operacion cuando un bloque del cual se hace referencia al vector de movimiento en el modo directo contiene dos vectores de movimiento que hacen referencia a un tiempo siguiente en orden de presentacion visual.
La figura 20 es un diagrama esquematico para mostrar una operacion cuando un bloque del cual se hace referencia al vector de movimiento en el modo directo contiene dos vectores de movimiento que hacen referencia a un tiempo siguiente en orden de presentacion visual.
La figura 21 es un diagrama esquematico para mostrar una operacion cuando un bloque del cual se hace referencia al vector de movimiento en el modo directo contiene dos vectores de movimiento que hacen referencia a un tiempo siguiente en orden de presentacion visual.
La figura 22 es un diagrama esquematico para mostrar una operacion cuando un bloque del cual se hace referencia al vector de movimiento en el modo directo contiene dos vectores de movimiento que hacen referencia a un tiempo siguiente en orden de presentacion visual.
La figura 23 es un diagrama esquematico para mostrar una operacion cuando se hace referencia a un vector de movimiento de un bloque adyacente en el modo directo.
La figura 24 es una ilustracion que muestra un flujo de bits.
La figura 25 es una ilustracion que muestra una relacion entre un bloque actual que se va a codificar y un bloque en la zona adyacente del bloque actual que se va a codificar.
La figura 26
es una ilustracion que muestra un vector de movimiento contenido en un bloque en la zona
adyacente de
un bloque actual que se va a codificar.
La figura 27
es una ilustracion que muestra un vector de movimiento contenido en un bloque en la zona
adyacente de
un bloque actual que se va a codificar.
La figura 28
es una ilustracion que muestra un vector de movimiento contenido en un bloque en la zona
adyacente de
un bloque actual que se va a codificar.
La figura 29
es una ilustracion que muestra un vector de movimiento contenido en un bloque en la zona
adyacente de
un bloque actual que se va a codificar.
La figura 30
es una ilustracion que muestra un vector de movimiento contenido en un bloque en la zona
adyacente de
un bloque actual que se va a codificar.
La figura 31
es una ilustracion que muestra un vector de movimiento contenido en un bloque en la zona
adyacente de
un bloque actual que se va a codificar.
La figura 32
es una ilustracion que muestra un vector de movimiento contenido en un bloque en la zona
adyacente de
un bloque actual que se va a codificar.
La figura 33
es una ilustracion que muestra un vector de movimiento contenido en un bloque en la zona
adyacente de un bloque actual que se va a codificar.
La figura 34 es una ilustracion que muestra un procedimiento para determinar un vector de movimiento que se va a usar en el modo directo.
La figura 35 es una ilustracion que muestra una relacion entre un bloque actual que se va a codificar y un bloque en la zona adyacente del bloque actual que se va a codificar.
La figura 36 es una ilustracion que muestra un procedimiento para determinar un vector de movimiento de un bloque actual que se va a codificar usando un valor de un mdice de referencia.
La figura 37 es una ilustracion que muestra la bi-prediccion en el modo directo cuando un vector de movimiento que hace referencia a una imagen almacenada en una memoria de almacenamiento intermedio de imagenes de largo plazo es solo uno.
La figura 38 es una ilustracion que muestra la bi-prediccion en el modo directo cuando vectores de movimiento que hacen referencia a una imagen almacenada en la memoria de almacenamiento intermedio de imagenes a largo plazo son dos.
La figura 39 es una ilustracion que muestra un flujo de proceso de un procedimiento de calculo de vectores de movimiento.
La figura 40 es un diagrama de bloques que muestra una configuracion de un aparato de codificacion de imagenes en movimiento 100 de acuerdo con la undecima realizacion de la presente invencion.
La figura 41A es una ilustracion que muestra un orden de tramas introducidas en el aparato de codificacion de imagenes en movimiento 100 en orden de tiempo de una forma imagen a imagen.
La figura 41B es una ilustracion que muestra el caso en el que el orden de tramas que se muestra en la figura 41A se reordena en el orden de codificacion.
La figura 42 es una ilustracion que muestra una estructura de una lista de imagenes de referencia para explicar la primera realizacion.
5
10
15
20
25
30
35
40
45
50
55
60
La figura 43A es un diagrama de flujo que muestra un ejemplo de un procedimiento de calculo de vectores de movimiento usando un procedimiento de prediccion espacial en el modo directo cuando se mezclan un par de macrobloques que se van a codificar en una estructura de campo y un par de macrobloques que se van a codificar en una estructura de trama.
La figura 43B es una ilustracion que muestra un ejemplo de una ubicacion de pares de macrobloques adyacentes a los cuales se aplica la presente invencion cuando un par de macrobloques actuales que se va a codificar se codifica en una estructura de trama.
La figura 43C es una ilustracion que muestra un ejemplo de la ubicacion de pares de macrobloques adyacentes a los cuales se aplica la presente invencion cuando un par de macrobloques actuales que se va a codificar se codifica en una estructura de campo.
La figura 44 es una ilustracion que muestra una configuracion de datos de un par de macrobloques cuando la codificacion se lleva a cabo en una estructura de trama, y una configuracion de datos de un par de macrobloques cuando la codificacion se lleva a cabo en una estructura de campo.
La figura 45 es una grafica de flujo que muestra un procedimiento de procesamiento detallado en una etapa
5302 que se muestra en la figura 43.
La figura 46 es una grafica indicadora que muestra una relacion entre indices de campos de referencia e indices de tramas de referencia.
La figura 47 es una grafica de flujo que muestra un procedimiento de procesamiento detallado en una etapa
5303 que se muestra en la figura 43.
La figura 48 es una ilustracion que muestra una relacion de posicion entre un par de macrobloques adyacentes que se va a codificar y pares de macrobloques adyacentes para explicar de esta forma la primera realizacion.
La figura 49 es una ilustracion que muestra una relacion de posicion entre un par de macrobloques actual que se va a codificar y pares de macrobloques adyacentes para poder explicar la primera realizacion.
La figura 50 es una ilustracion que muestra un ejemplo de una configuracion de datos de un flujo de bits 700 generado por una unidad de generacion de flujos de bits 104.
La figura 51 es un diagrama de bloques que muestra una configuracion de un aparato de descodificacion de imagenes en movimiento 800 que descodifica el flujo de bits 700 que se muestra en la figura 50.
La figura 52A es una ilustracion que muestra un ejemplo de un formato ffsico de un disco flexible el cual es un cuerpo de un medio de almacenamiento.
La figura 52B es una ilustracion que muestra una vista externa del disco flexible visto desde delante, una configuracion de la seccion y el disco flexible.
La figura 52C es una ilustracion que muestra una configuracion para grabar y leer el programa que se ha mencionado en lo que antecede en un disco flexible, FD.
La figura 53 es un diagrama de bloques que muestra una configuracion completa del sistema de suministro de contenidos que implementa un servicio de suministro de contenidos.
La figura 54 es una ilustracion que muestra un ejemplo de una aparicion de un telefono celular.
La figura 55 es un diagrama de bloques que muestra una configuracion del telefono celular.
La figura 56 es una ilustracion para mostrar un dispositivo que lleva a cabo el proceso de codificacion o de descodificacion que se ha mostrado en realizaciones anteriores, y un sistema que usa el dispositivo.
Mejor forma para llevar a cabo la invencion
La presente invencion es para resolver problemas de la tecnologfa convencional, y tiene por objeto proponer un procedimiento de codificacion y de descodificacion de imagenes en movimiento que puede determinar un vector de movimiento usado para la compensacion de movimiento sin contradiccion, incluso si un bloque del cual se hace referencia al vector de movimiento en un modo directo es una imagen B. En primer lugar, los indices de referencia se explican en el presente caso.
La figura 3B es una ilustracion que muestra un ejemplo de una lista de imagenes de referencia 10 generada para cada imagen actual que se va a codificar. En la lista de imagenes de referencia 10 que se muestra en la figura 3B, se muestran imagenes precedentes y siguientes a una imagen B en orden de presentacion visual con una imagen B en el centro, y se muestran imagenes a las cuales la imagen B puede hacer referencia, tipos de imagenes, un numero de imagen 11, el primer mdice de referencia 12 y el segundo mdice de referencia 13. El numero de imagen 11 es, por ejemplo, un numero que muestra un orden en el cual se codifica cada imagen. El primer mdice de referencia 12 es el primer mdice que muestra una relacion de posicion relativa entre una imagen actual que se va a codificar e imagenes adyacentes, y, por ejemplo, se usa principalmente como un mdice cuando una imagen actual que se va a codificar hace referencia a una imagen precedente en orden de presentacion visual. Una lista del primer mdice de referencia 12 se denomina “lista de mdice de referencia0 (lista0)” o “la primera lista de indices de referencia”. Ademas, el mdice de referencia se denomina mdice relativo. En primer lugar, en la lista de imagenes de referencia 10 que se muestra en la figura 3B, un entero que es hecho avanzar por “1” se asigna a un valor del primer mdice de referencia 12 de “0” a partir del mas cercano a una imagen actual que se va a codificar en una secuencia de tiempo para una imagen de referencia que preceda una imagen actual que se va a codificar en orden de presentacion visual. A continuacion, despues de que se asigne un valor avanzado por “1” de “0” a todas las imagenes de referencia siguientes a una imagen actual que se va a codificar en orden de presentacion visual, los valores siguientes se asignan a imagenes de referencia siguientes a la imagen actual que se va a codificar en orden de presentacion visual desde el mas cercano hasta la imagen actual que se va a codificar en orden de presentacion
5
10
15
20
25
30
35
40
45
50
55
60
visual.
El segundo mdice de referencia 13 es el segundo mdice que muestra una relacion de posicion relativa entre una imagen actual que se va a codificar e imagenes adyacentes y, por ejemplo, se usa principalmente como un mdice cuando una imagen actual que se va a codificar hace referencia a una imagen siguiente en orden de presentacion visual. Una lista del segundo mdice de referencia 13 se denomina “lista de indices de referencial (listal)” o “la segunda lista de indices de referencia”. En primer lugar, el entero que es hecho avanzar por“1” se asigna a un valor del segundo mdice de referencia 13 es de “0” a partir del mas cercano a una imagen actual que se va a codificar en orden de presentacion visual. A continuacion, despues de que se asigne un valor avanzado por “1” de “0” a todas las imagenes de referencia siguientes a una imagen actual que se va a codificar en orden de presentacion visual, los valores siguientes se asignan a imagenes de referencia que precedan una imagen actual que se va a codificar en orden de presentacion visual desde el valor mas cercano hasta una imagen actual que se va a codificar en orden de presentacion visual. Por lo tanto, se encuentra en la lista de imagenes de referencia 10 que en cuanto al primer mdice de referencia 12 y el segundo mdice de referencia, una imagen de referencia con un valor de mdice de referencia mas pequeno esta mas cercana a la imagen actual que se va a codificar en orden de presentacion visual. Un procedimiento para asignar un numero de mdice de referencia en estado inicial se ha explicado en lo que antecede, no obstante, el procedimiento para asignar un numero de mdice de referencia se puede cambiar de una forma imagen a imagen o de una forma sector a sector. En el procedimiento para asignar un numero de mdice de referencia, por ejemplo, un numero pequeno se puede asignar a una imagen lejos en orden de presentacion visual, no obstante, este mdice de referencia se usa, por ejemplo, cuando la eficiencia de codificacion se mejora al hacer referencia a la imagen lejana en orden de presentacion visual. Dicho de otra forma, debido a que los indices de referencia en un bloque se presentan por palabras de codigo de longitud variable y datos con longitudes mas cortas se asignan a los indices de los valores mas pequenos, al asignar un mdice de referencia mas pequeno a la imagen de referencia que mejora la eficiencia de codificacion si se hizo referencia a esta, la cantidad de codigos en los indices de referencia se reduce y se mejora una eficiencia de codificacion adicional.
La figura 4 es una ilustracion explicativa para numeros de imagen e indices de referencia. La figura 4 muestra un ejemplo de la lista de imagenes de referencia, y muestra una imagen de referencia, un numero de imagen y un mdice de referencia usados cuando se codifica la imagen B en el centro (indicada por una lmea discontinua). La figura 4A muestra el caso de asignar indices de referencia mediante el procedimiento para asignar indices de referencia en estado inicial que se explica usando la figura 3.
La figura 5 es un diagrama conceptual de un formato de senales de codificacion de imagen de un aparato de codificacion de imagenes convencional. Imagen indica una senal de codificacion para una imagen, Encabezado indica una senal de codificacion de encabezado incluida en la cabeza de una imagen, Bloque1 indica una senal de codificacion en un bloque codificado en un modo directo, Bloque2 indica una senal de codificacion en un bloque codificado por una prediccion de interpolacion que no es el modo directo, Ridx0 y Ridx1 son el primer mdice de referencia y el segundo mdice de referencia respectivamente, y MV0 y MV1 son el primer vector de movimiento y el segundo vector de movimiento respectivamente. El bloque codificado Bloque2 tiene dos indices de referencia Ridx0 y Ridx1 en una senal de codificacion en este orden para indicar dos imagenes de referencia que se van a usar para la compensacion de movimiento. Ademas, el primer vector de movimiento MV1 y el segundo vector de movimiento MV2 se codifican en la senal de codificacion del bloque codificado Bloque2 en este orden. Se puede evaluar mediante PredType cual se usa de los indices de referencia Ridx0 y/o Ridx1. Una imagen (la primera imagen de referencia) a la que hace referencia el primer vector de movimiento MV0 es indicada por el primer mdice de referencia Ridx0, y una imagen (la segunda imagen de referencia) a la que hace referencia el segundo vector de movimiento MV1 es indicada por el segundo mdice de referencia Ridx1. Por ejemplo, cuando se indica que se hace referencia a las imagenes bidireccionalmente por los vectores de movimiento MV0 y MV1, se usan Ridx0 y Ridx1, cuando se indica que se hace referencia a las imagenes unidireccionalmente por uno de los vectores de movimiento MV0 o MV1, se usa uno de Ridx0 o Ridx1 que se corresponda con el vector de movimiento, y cuando se indica el modo directo, no se usan ni Ridx0 ni Ridx1. La primera imagen de movimiento es especificada por el primer mdice de referencia y, en general, tiene un tiempo de presentacion visual precedente a una imagen actual que se va a codificar, y la segunda imagen de referencia es especificada por el segundo mdice de referencia y, en general, tiene un tiempo de presentacion visual siguiente a la imagen actual que se va a codificar. No obstante, como los muestra el procedimiento para asignar indices de referencia en la figura 4, existe un caso en el que la primera imagen de referencia contiene tiempo de presentacion visual siguiente a la imagen actual que se va a codificar y la segunda imagen de referencia contiene tiempo de presentacion visual precedente a la imagen actual que se va a codificar. El primer mdice de referencia Ridx0 es un mdice de referencia que indica la primera imagen de referencia a la que hace referencia el primer vector de movimiento MV0 del bloque Bloque2, y el segundo mdice de referencia Ridx1 es un mdice de referencia que indica la segunda imagen de referencia a la que hace referencia el segundo vector de movimiento MV1 del bloque Bloque2.
Por otro lado, una asignacion de imagenes de referencia a indices de referencia se puede cambiar de forma arbitraria indicando explfcitamente el uso de una senal de control de memoria en una senal codificada (RPSL en Encabezado en la figura 5). Esto hace posible cambiar la imagen de referencia con el segundo mdice de referencia “0” por una imagen de referencia arbitraria. Por ejemplo, tal como se muestra en la figura 4B, la asignacion de indices de referencia a numeros de imagen se puede cambiar.
5
10
15
20
25
30
35
40
45
50
55
De esta manera, debido a que la asignacion de imagenes de referencia a indices de referencia se puede cambiar de forma arbitraria y el cambio de la asignacion de imagenes de referencia a indices de referencia, en general, asigna un mdice de referencia mas pequeno a una imagen que mejora la eficiencia de codificacion si se selecciona como una imagen de referencia, la eficiencia de codificacion se puede mejorar mediante el uso de un vector de movimiento, el cual haga referencia a una imagen de la cual el mdice de referencia sea el mas pequeno, como un vector de movimiento usado en el modo directo.
(Primera realizacion)
Se explica un procedimiento de codificacion de imagenes en movimiento de acuerdo con la primera realizacion de la presente invencion usando el diagrama de bloques que se muestra en la figura 6.
Una imagen en movimiento actual que se va a codificar se introduce en una memoria de tramas 101 en un orden de presentacion visual de una forma imagen a imagen, y se reordena en un orden de codificacion. Cada imagen se divide en un grupo denominado bloque, el cual tiene un tamano de 16 pfxeles (horizontales) x 16 pfxeles (verticales), por ejemplo, y los procesos siguientes se llevan a cabo de una forma bloque a bloque.
Un bloque lefdo de la memoria de tramas 101 se introduce en una unidad de deteccion de vectores de movimiento 106. En el presente caso, un vector de movimiento de un bloque actual que se va a codificar se detecta usando una imagen descodificada de una imagen codificada almacenada en la memoria de tramas 105 como una imagen de referencia. En este caso, en una unidad de seleccion de modo 107, un modo de prediccion optimo se determina haciendo referencia a un vector de movimiento obtenido en la unidad de deteccion de vectores de movimiento 106 y un vector de movimiento usado en una imagen codificada almacenada en una unidad de almacenamiento de vectores de movimiento 108. Un modo de prediccion obtenido en la unidad de seleccion de modo 107 y un vector de movimiento usado en el modo obtenido se introducen en una unidad de calculo de diferencia 109, y una imagen residual predictiva se genera calculando una diferencia de un bloque actual que se va a codificar, y la codificacion se lleva a cabo en una unidad de codificacion residual predictiva 102. Ademas, el vector de movimiento usado en el modo obtenido en la unidad de seleccion de modo 107 se almacena en una unidad de almacenamiento de vectores de movimiento 108 para que se pueda usar para la codificacion por bloques e imagenes siguientes. Un flujo de procesamiento anterior es una operacion cuando se selecciona una codificacion de prediccion entre imagenes, no obstante, un conmutador 111 conmuta a una codificacion de prediccion entre imagenes. En ultima instancia, la codificacion de longitud variable se lleva a cabo para informacion de control, tal como un vector de movimiento, e informacion de imagenes, tal como una informacion de imagen enviada desde la unidad de codificacion residual predictiva 102, y un flujo de bits enviado en ultima instancia se genera por una unidad de generacion de flujos de bits 103.
Un resumen del flujo de codificacion se ha explicado en lo que antecede, no obstante, el detalle del proceso en la unidad de deteccion de vectores de movimiento 106 y la unidad de seleccion de modo 107 se explica en lo sucesivo.
La deteccion de vectores de movimiento se lleva a cabo de una forma bloque a bloque o de una forma area a area (el area es un bloque dividido). Usando imagenes codificadas precedentes y siguientes a una imagen actual que se va a codificar en orden de presentacion visual como imagenes de referencia, una imagen predictiva y un modo de prediccion que muestra una ubicacion que es predicha como optima en el area de busqueda en la imagen se generan al decidir un vector de movimiento.
Un modo directo es uno de bi-predicciones que llevan a cabo la prediccion por codificacion de prediccion entre imagenes haciendo referencia a dos imagenes precedentes y/o siguientes en orden de presentacion visual. En el modo directo, un bloque actual que se va a codificar no contiene un vector de movimiento directamente, y dos vectores de movimiento para la compensacion de movimiento real se calculan haciendo referencia a un vector de movimiento de un bloque co-situado en una imagen codificada cercana en orden de presentacion visual, y se genera un bloque predictivo.
La figura 7 muestra una operacion cuando un bloque codificado al que se hace referencia para poder determinar un vector de movimiento en el modo directo contiene dos vectores de movimiento que hacen referencia a dos imagenes precedentes en orden de presentacion visual. Una imagen P23 es una imagen actual que se va a codificar, y lleva a cabo la bi-prediccion haciendo referencia a las imagenes P22 y P24. Supongase que un bloque que se va a codificar fuera un bloque MB21; y dos vectores de movimiento requeridos se determinaron usando un vector de movimiento contenido en un bloque MB22, el cual es un bloque co-situado en la imagen de referencia siguiente codificada (la segunda imagen de referencia especificada por el segundo mdice de referencia) P24. Debido a que el bloque MB22 contiene vectores de movimiento MV21 y MV22 como un vector de movimiento, es imposible calcular dos vectores de movimiento requeridos MV23 y MV24 mediante ajuste de escala directamente de una forma similar a la ecuacion 1. Por lo tanto, de manera similar a como se muestra en la ecuacion 2, un vector de movimiento MV_REF se calcula como un vector de movimiento que se va a ajustar a escala a partir de un valor promedio de dos vectores de movimiento contenidos en el bloque MB22, y un intervalo detiempo TR_REF en ese momento se calcula a partir del valor promedio igualmente. A continuacion, los vectores de movimiento MV23 y MV24 se calculan mediante el ajuste de escala del vector de movimiento MV_REF y el intervalo de tiempo TR_REF basandose en la ecuacion 3. En este caso, el intervalo de tiempo TR21 indica un intervalo de tiempo entre la imagen P24 y la imagen P21, es decir, una
10
15
20
25
30
35
40
45
imagen a la que hace referencia el vector de movimiento MV21, y el intervalo de tiempo TR22 indica un intervalo de tiempo hasta una imagen a la que hace referencia el vector en movimiento MV22. Ademas, el intervalo de tiempo TR23 es un intervalo de tiempo hasta una imagen a la que hace referencia el vector de movimiento MV23, y el intervalo de tiempo TR24 es un intervalo de tiempo hasta una imagen a la que hace referencia el vector de movimiento MV24. Los intervalos de tiempo entre estas imagenes se pueden determinar basandose en, por ejemplo, informacion que indique el tiempo de presentacion visual y el orden de presentacion visual anadida a cada imagen, o diferencia de informacion. Observese que una imagen actual que se va a codificar hace referencia a una imagen siguiente en el ejemplo de la figura 7, no obstante, el caso de referencia a una imagen que no sea la siguiente puede tratarse de la misma manera.

MV_REF = (MV21 + MV22)/2 Ecuacion 2 (a)

TR_REF = (TR21 + TR22)/2 Ecuacion 2 (b)

MV23 = MV_REF/TR_REF x TR23 Ecuacion 3 (a)

MV24 = -MV_REF/TR_REF x TR24 Ecuacion 3 (b)
La realizacion anterior muestra el procedimiento de codificacion en el cual una codificacion de prediccion entre imagenes puede llevarse a cabo usando el modo directo sin contraccion, incluso si un bloque del cual se hace referencia al vector de movimiento en el modo directo pertenece a una imagen B. En el procedimiento de codificacion, cuando un bloque del cual se hace referencia al vector de movimiento en el modo directo contiene varios vectores de movimiento que hacen referencia a una imagen precedente en orden de presentacion visual, un vector de movimiento es generado usando los varios vectores de movimiento, y dos vectores de movimiento que se van a usar para la compensacion de movimiento real se determinan por ajuste de escala.
Observese que, cuando se calculan dos vectores de movimiento MV23 y MV24 en la figura 7, es posible usar la ecuacion 4 en lugar de la ecuacion 2 como un procedimiento para promediar vectores de movimiento MV21 y MV22, y para promediar intervalos de tiempo TR21 y TR22 para de esta manera calcular el vector de movimiento Mv_REF y el intervalo de tiempo TR_REF que se van a ajustar a escala.
En primer lugar, tal como se muestra en la ecuacion 4 (a), el vector de movimiento MV21' se calcula mediante el ajuste de escala de MV21 para igualar el intervalo de tiempo con el vector de movimiento MV22. A continuacion, el vector de movimiento MV_REF se determina al promediar vectores de movimiento MV21' y MV22. En el presente caso, el intervalo de tiempo TR22 se usa directamente como el intervalo de tiempo TR_RF. Observese que el caso de calcular un vector de movimiento MV22' mediante el ajuste de escala del vector de movimiento MV22 en lugar de calcular el vector de movimiento MV21' mediante el ajuste de escala de un vector de movimiento MV21 se puede tratar de la misma manera.
MV21' = MV21/TR21 x TR22 ___Ecuacion 4 (a)
MV_RF = (MV21' + MV22)/2 ___Ecuacion 4 (b)
TR_REF = TR22 ___Ecuacion 4 (c)
Observese que, cuando se calculan dos vectores de movimiento MV23 y MV24 en la figura 7, como un vector de movimiento MV_REF y un intervalo de tiempo TR_REF que se ajustan a escala, se pueden usar un vector de movimiento MV22 y un intervalo de tiempo TR22, los cuales hacen referencia a una imagen P22 situada temporalmente mas cerca de una imagen P24 de la cual se hizo referencia al vector de movimiento, directamente tal como se muestra en la ecuacion 5 en lugar de usar un valor promedio de dos vectores de movimiento tal como se muestra en la ecuacion 2. De forma similar, como un vector de movimiento MV_REF y un intervalo de tiempo TR_REF, un vector de movimiento MV21 y un intervalo de tiempo TR21, los cuales hacen referencia a una imagen P21 situada temporalmente mas lejos, se pueden usar directamente tal como se muestra en la ecuacion 6. Esto hace posible reducir la capacidad de una unidad de almacenamiento de vectores de movimiento en un aparato de codificacion debido a que cada bloque que pertenece a una imagen P24 de la cual se hizo referencia al vector de movimiento puede llevar a cabo la compensacion de movimiento al almacenar unicamente uno de dos vectores de movimiento.

MV_REF = MV22 Ecuacion 5 (a)

TR_REF = TR22 Ecuacion 5 (b)

MV_REF = MV21 Ecuacion 6 (a)

TR_REF = TR21 Ecuacion 6 (b)
Observese que, cuando se calculan dos vectores de movimiento MV23 y MV24 en la figura 7, como un vector de movimiento MV_REF y un intervalo de tiempo TR_REF que se ajustan a escala, un vector de movimiento que haga referencia a una imagen que sera modificada de forma precedente se puede usar directamente en lugar de usar un
5
10
15
20
25
30
35
40
45
50
55
60
valor promedio de dos vectores de movimiento tal como se muestra en la ecuacion 2. La figura 8A muestra una relacion de referencia en orden de presentacion visual de imagenes en movimiento tal como se muestra en la figura 7, y la figura 8B muestra un ejemplo, de un orden en el cual las imagenes se reordenan por orden de codificacion en la memoria de tramas 101 que se muestra en la figura 6. En el presente caso, una imagen P23 indica una imagen que se va a codificar en el modo directo, y una imagen P24 indica una imagen de la cual se hizo referencia al vector de movimiento para la codificacion. Cuando las imagenes se reordenan tal como se muestra en la figura 8B, debido a que un vector de movimiento que hace referencia a una imagen que se va a codificar de forma precedente se usa directamente, un vector de movimiento MV22 y un intervalo de tiempo TR22 se usan directamente como un vector de movimiento MV_REF y un intervalo de tiempo TR_REF como el que se muestra en la ecuacion 5. De forma similar, es posible usar directamente un vector de movimiento que haga referencia a una imagen que se va a codificar mas adelante. En este caso, un vector de movimiento MV21 y un intervalo de tiempo TR21 se aplican directamente como un vector de movimiento MV_REF y un intervalo de tiempo TR_REF tal como se muestra en la ecuacion 6. Esto hace posible reducir la capacidad de una unidad de almacenamiento de vectores de movimiento en un aparato de codificacion debido a que cada bloque que pertenezca a una imagen P24 de la cual se hace referencia al vector de movimiento puede llevar a cabo la compensacion de movimiento al almacenar solo uno de dos vectores de movimiento.
Observese que en la presente realizacion se explica el caso en el que un vector de movimiento usado en el modo directo se calcula mediante el ajuste de escala de un vector de movimiento referenciado usando un intervalo de tiempo entre imagenes; no obstante, el vector de movimiento se puede calcular multiplicando por un numero constante. En el presente caso, una constante usada para la multiplicacion puede ser variable cuando la codificacion o descodificacion se lleve a cabo de una forma por varios bloques o de una forma por varias imagenes.
Observese que en la ecuacion 2 (a) o 4 (b), cuando se calcula un vector de movimiento MV_REF, despues de calcular el lado derecho de la ecuacion 2 (a) o 4 (b), el vector de movimiento se puede redondear a una precision de vector de movimiento predeterminada (por ejemplo, redondear a un valor de unidad de pixel de 0,5 para un vector de movimiento con precision de medio pixel). La precision de un vector de movimiento no se limita a la posicion de medio pixel. Ademas, la precision de un vector de movimiento se puede determinar de una forma por bloques, una forma por imagenes y una forma por secuencias, por ejemplo. Ademas, en las ecuaciones 3 (a), 3 (b) y 4 (a), cuando se calculan los vectores de movimiento MV23, MV24 y MV21', los vectores de movimiento se pueden redondear a una precision predeterminada de un vector de movimiento despues de calcular el lado derecho de las ecuaciones 3 (a), 3(b) y 4 (a).
(Segunda realizacion)
Un diagrama general del proceso de codificacion basado en la figura 6 es completamente igual a la primera realizacion. En el presente caso se explica una operacion detallada de la bi-prediccion en el modo directo usando la figura 9.
La figura 9 muestra una operacion cuando un bloque al que se hace referencia para poder determinar un vector de movimiento en el modo directo contiene dos vectores de movimiento que hacen referencia a dos imagenes siguientes en orden de presentacion visual. Una imagen P43 es una imagen actual que se va a codificar, y lleva a cabo la bi-prediccion haciendo referencia a las imagenes P42 y P44. Supongase que un bloque que se va a codificar fuera un bloque MB41, entonces dos vectores de movimiento requeridos se determinanan usando un vector de movimiento de un bloque co-situado MB42 en la imagen de referencia hacia atras codificada (la segunda imagen de referencia especificada por el segundo mdice de referencia) P44. Debido a que el bloque MB42 contiene dos vectores de movimiento MV45 y MV46 como vectores de movimiento, dos vectores de movimiento requeridos MV43 y MV44 no se pueden calcular aplicando directamente el ajuste de escala de una forma similar a la ecuacion 1. Por lo tanto, tal como se muestra en la ecuacion 7, un vector de movimiento MV_REF se determina como un vector de movimiento que se va a ajustar a escala a partir de un valor promedio de dos vectores de movimiento del bloque MB42, y un intervalo de tiempo TR_REF en ese momento se determina a partir de un valor promedio de forma similar. A continuacion, los vectores de movimiento MV43 y MV44 se calculan mediante el ajuste de escala de un vector de movimiento MV_REF y un intervalo de tiempo TR_REF basandose en la ecuacion 8. En este caso, un intervalo de tiempo TR45 indica un intervalo de tiempo entre una imagen P44 y P45, es decir, hasta una imagen a la que hace referencia un vector de movimiento MV45; y un intervalo de tiempo TR46 indica un intervalo de tiempo hasta una imagen a la que hace referencia el vector de movimiento MV46. Un intervalo de tiempo TR43 indica un intervalo de tiempo hasta una imagen a la que hace referencia un vector de movimiento MV43; y un intervalo de tiempo TR44 indica un intervalo de tiempo hasta una imagen a la que hace referencia un vector de movimiento MV44. Los intervalos de tiempo entre estas imagenes se pueden determinar basandose en, por ejemplo, informacion que indique el tiempo de presentacion visual y el orden de presentacion visual, la cual sea anadida a cada imagen, o diferencia de informacion tal como se ha explicado en la primera realizacion. Observese que una imagen actual que se va a codificar hace referencia a una imagen siguiente en el ejemplo de la figura 9, no obstante, el caso de hacer referencia a una imagen que no sea la siguiente puede tratarse de la misma manera.
MV_REF = (MV45 + MV46)/2 ... Ecuacion 7 (a)
TR_REF = (TR45 + TR46)/2 ... Ecuacion 7 (b)
5
10
15
20
25
30
35
40
45
50
55
MV43 = -MV_REF/TR_REF x TR43 . . . Ecuacion 8 (a)
MV44 = MV_REF/TR_REF x TR44 ... Ecuacion 8 (b)
La realizacion anterior muestra el procedimiento de codificacion en el cual una codificacion de prediccion entre imagenes puede llevarse a cabo usando el modo directo sin contradiccion, incluso si un bloque del cual se hace referencia al vector de movimiento en el siguiente modo directo pertenece a una imagen B. En el procedimiento de codificacion, cuando un bloque del cual se hizo referencia al vector de movimiento en el modo directo contiene varios vectores de movimiento que hacen referencia a una imagen siguiente en orden de presentacion visual, un vector de movimiento se genera usando los varios vectores de movimiento, y dos vectores de movimiento que se van a usar para la compensacion de movimiento real se determinan por ajuste de escala.
Observese que, cuando se calculan dos vectores de movimiento MV43 y MV44 en la figura 9, es posible usar la ecuacion 9 en lugar de la ecuacion 7 como un procedimiento para promediar vectores de movimiento MV45 y MV46 y para promediar intervalos de tiempo TR45 y TR46 para calcular de esta manera el vector de movimiento MV_REF y el intervalo de tiempo TR_REF que se van a ajustar a escala. En primer lugar, tal como se muestra en la ecuacion 9 (a), el vector de movimiento MV46' se calcula mediante el ajuste de escala de MV46 para igualar el intervalo de tiempo con el vector de movimiento MV45. A continuacion, el vector de movimiento MV_REF se determina al promediar los vectores de movimiento MV46' y MV45. En el presente caso, el intervalo de tiempo TR41 se usa directamente como el intervalo de tiempo TR_REF. Observese que el caso de calcular un vector de movimiento MV45' mediante el ajuste de escala del vector de movimiento MV45 en lugar de calcular el vector de movimiento MV46' mediante el ajuste de escala de un vector de movimiento MV46 se puede tratar de la misma manera.
MV46' = MV46/TR46 x TR45 ... Ecuacion 9 (a)
MV_REF = (MV46' + MV45)/2 ... Ecuacion 9 (b)
TR_REF = TR45 ... Ecuacion 9 (c)
Observese que, cuando se calculan dos vectores de movimiento MV43 y MV44 en la figura 9, como un vector de movimiento MV_REF y un intervalo de tiempo TR_REF que se ajustan a escala, un vector de movimiento MV45 y un intervalo de tiempo tR45, los cuales hacen referencia a una imagen P45 situada temporalmente mas cerca de una imagen P44 de la cual se hizo referencia al vector de movimiento, se pueden usar directamente tal como se muestra en la ecuacion 10 en lugar de usar un valor promedio de dos vectores de movimiento tal como se muestra en la ecuacion 7. De forma similar, como un vector de movimiento MV_REF y un intervalo de tiempo TR_REF, un vector de movimiento MV46 y un intervalo de tiempo TR46, los cuales hacen referencia a una imagen P46 situada temporalmente mas lejos, se pueden usar directamente tal como se muestra en la ecuacion 11. Este procedimiento hace posible reducir la capacidad de una unidad de almacenamiento de vectores de movimiento en un aparato de codificacion debido a que cada bloque que pertenezca a una imagen P44 de la cual se hace referencia al vector de movimiento puede implementar la compensacion de movimiento al almacenar solo uno de dos vectores de movimiento.

MV_REF = MV45 Ecuacion 10 (a)

TR_REF = TR45 Ecuacion 10 (b)

MV_REF = MV46 Ecuacion 11 (a)

TR_REF = TR46 Ecuacion 11 (b)
Observese que, cuando se calculan dos vectores de movimiento MV43 y MV44 en la figura 9, como un vector de movimiento MV_REF y un intervalo de tiempo TR_REF los cuales se ajustan a escala, un vector de referencia que haga referencia a una imagen que se va a codificar de forma precedente se puede usar directamente en lugar de usar un valor promedio de dos vectores de movimiento tal como se muestra en la ecuacion 7. La figura 10A muestra una relacion de referencia de imagenes, en orden de presentacion visual de imagenes en movimiento tal como se muestra en la figura 9, y la figura 10B muestra un ejemplo de un orden en el cual las imagenes se reordenan en orden de codificacion en la memoria de tramas 101 que se muestra en la figura 6. En el presente caso, una imagen P43 indica una imagen que se va a codificar en el modo directo, y una imagen P44 indica una imagen de la cual se hace referencia al vector de movimiento para la codificacion. Cuando las imagenes se reordenan tal como se muestra en la figura 10B, debido a que un vector de movimiento que hace referencia a una imagen que se va a codificar de forma precedente se usa directamente, un vector de movimiento MV46 y un intervalo de tiempo TR46 se usan directamente como un vector de movimiento MV_REF y un intervalo de tiempo TR_REF tal como se muestra en la ecuacion 11. De forma similar, es posible usar directamente un vector de movimiento que haga referencia a una imagen que se va a codificar mas adelante. En este caso, un vector de movimiento MV45 y un intervalo de tiempo TR45 se aplican directamente como un vector de movimiento MV_REF y un intervalo de tiempo TR_REF. Este procedimiento hace posible reducir la capacidad de una unidad de almacenamiento de vectores de movimiento en un aparato de codificacion debido a que cada bloque que pertenezca a una imagen P44 de la cual se hace referencia al vector de movimiento puede llevar a cabo la compensacion de movimiento al almacenar solo uno de
5
10
15
20
25
30
35
40
45
50
55
dos vectores de movimiento.
Observese que, cuando una imagen a la que se hace referencia para poder determinar un vector de movimiento en el modo directo contiene dos vectores de movimiento que hacen referencia a dos imagenes siguientes en orden de presentacion visual, es posible llevar a cabo la compensacion de movimiento suponiendo que dos vectores de movimiento requeridos MV43 y MV44 sean “0”. Este procedimiento hace posible reducir la capacidad de una unidad de almacenamiento de vectores de movimiento en un aparato de descodificacion, y hace posible ademas omitir un proceso de calcular un vector de movimiento, debido a que cada bloque que pertenezca a una imagen P44 de la cual se hace referencia al vector de movimiento no tiene que almacenar un vector de movimiento.
Observese que, cuando una imagen a la que se hace referencia para poder determinar un vector de movimiento en el modo directo contiene dos vectores de movimiento que hacen referencia a dos imagenes siguientes en orden de presentacion visual, es posible inhibir la referencia a un vector de movimiento y aplicar unicamente una codificacion de prediccion que no sea el modo directo. Cuando se hace referencia a dos imagenes siguientes en orden de presentacion visual como una imagen P44 que se muestra en la figura 9, es concebible que la correlacion con una imagen precedente en orden de presentacion visual sea baja, debido a que es posible generar una imagen predictiva mas precisa al inhibir el modo directo y seleccionar otro modo de prediccion.
Observese que en la presente realizacion se explica el caso en el que un vector de movimiento usado en el modo directo se calcula mediante el ajuste de escala de un vector de movimiento referenciado usando un intervalo de tiempo entre imagenes; no obstante, el vector de movimiento se puede calcular al multiplicar por un numero constante. En el presente caso, una constante usada para la multiplicacion puede ser variable cuando se lleve a cabo la codificacion o descodificacion de una forma por varios bloques o de una forma por varias imagenes.
Observese que en la ecuacion 7 (a) o 9 (b), cuando se calcula un vector de movimiento MV_REF, despues de calcular el lado derecho de la ecuacion 7 (a) o 9 (b), el vector de movimiento se puede redondear a una precision de vector de movimiento predeterminada. La precision de un vector de movimiento incluye precision de medio pixel, precision de pixel de un tercio y precision de pixel de un cuarto, o similares. Ademas, la precision de un vector de movimiento se puede determinar, por ejemplo, de una forma por bloques, de una forma por imagenes y de una forma por secuencias. Ademas, en las ecuaciones 8 (a), 8 (b) y 9 (a), cuando se calculan los vectores de movimiento MV43, MV44 y MV46', los vectores de movimiento se pueden redondear a una precision predeterminada de un vector de movimiento despues de calcular el lado derecho de las ecuaciones 8 (a), 8 (b) y 9 (a).
(Tercera realizacion)
Un procedimiento de descodificacion de imagenes en movimiento de acuerdo con la tercera realizacion de la presente invencion se explica usando el diagrama de bloques que se muestra en la figura 11. No obstante, se supone que se introduce el flujo de bits generado en el procedimiento de codificacion de imagenes de la primera realizacion.
En primer lugar, informacion variada tal como un modo de prediccion, informacion de vector de movimiento y datos de codificacion residual predictiva se extraen del flujo de bits introducido por un analizador de flujos de bits 601.
El modo de prediccion y la informacion del vector de movimiento son enviados a una unidad de descodificacion de vectores de movimiento/modo de prediccion 608 y un dato de codificacion residual predictiva es enviado a una unidad de descodificacion residual predictiva 602. La unidad de descodificacion de compensacion de movimiento/modo de prediccion 608 descodifica el modo de prediccion y un vector de movimiento usado en el modo de prediccion. Cuando se descodifica el vector de movimiento, se usa un vector de movimiento descodificado almacenado en la unidad de almacenamiento de vectores de movimiento 605. El modo de prediccion y vector de movimiento descodificados son enviados a una unidad de descodificacion de compensacion de movimiento 604. Ademas, el vector de movimiento descodificado se almacena en la unidad de almacenamiento de vectores de movimiento 605 para usarse para descodificar vectores de movimiento de bloques siguientes. En la unidad de descodificacion de compensacion de movimiento 604, se genera una imagen predictiva basandose en el modo de prediccion y la informacion de vector de movimiento introducidos usando una imagen descodificada almacenada en una memoria de tramas 603 como una imagen de referencia. Una imagen descodificada se genera mediante la introduccion de la imagen predictiva que se ha generado en lo que antecede en una operacion de adicion 606 anadiendo la imagen introducida a la imagen residual predictiva generada en una unidad de descodificacion residual predictiva 602. La realizacion anterior muestra una operacion para un flujo de bits de prediccion entre imagenes, no obstante, un conmutador 607 conmuta a un proceso de descodificacion para un flujo de bits de prediccion entre imagenes.
En lo que antecede se ha mostrado un resumen de un flujo de descodificacion, no obstante, el proceso detallado en la unidad de descodificacion de compensacion de movimiento 604 se explica en lo sucesivo.
La informacion de vector de movimiento se anade de una forma por bloque o una forma por area (un bloque dividido). Mediante el uso de imagenes descodificadas precedentes y siguientes a una imagen actual que se va a codificar en orden de presentacion visual como imagenes de referencia, se genera una imagen predictiva para llevar a cabo la compensacion de movimiento de las imagenes.
5
10
15
20
25
30
35
40
45
50
55
60
Un modo directo es uno de bi-predicciones que llevan a cabo la codificacion de prediccion entre imagenes haciendo referencia a cada una de las imagenes precedente y siguiente en orden de presentacion visual. En el modo directo, debido a que un bloque actual que se va a codificar introduce un flujo de bits que no contiene un vector de movimiento directamente, dos vectores de movimiento para la compensacion de movimiento real se calculan haciendo referencia a un vector de movimiento de un bloque co-situado en una imagen descodificada cercana en orden de presentacion visual, y una imagen predictiva se genera.
La figura 7 muestra una operacion cuando una imagen descodificada a la que se hace referencia para determinar un vector de movimiento en el modo directo contiene dos vectores de movimiento que hacen referencia a dos imagenes precedentes en orden de presentacion visual. Una imagen P23 es una imagen actual que se va a descodificar, y lleva a cabo la bi-prediccion haciendo referencia a las imagenes P22 y P24. Cuando se supone que un bloque que se va a codificar es un bloque MB21, dos vectores de movimiento requeridos se determinan usando un vector de movimiento de un bloque co-situado MB22 en la imagen de referencia hacia atras descodificada (la segunda imagen de referencia especificada por el segundo mdice de referencia) P24. Debido a que el bloque MB22 contiene dos vectores de movimiento MV21 y MV22 como los vectores de movimiento, dos vectores de movimiento requeridos MV23 y MV24 no se pueden calcular mediante la aplicacion del ajuste de escala directo de una forma similar a la de la ecuacion 1. Por lo tanto, tal como se muestra en la ecuacion 2, un vector de movimiento MV_REF se determina como un vector de movimiento que se va a ajustar a escala a partir de un valor promedio de dos vectores de movimiento del bloque MB22, y un intervalo de tiempo TR_REF en ese momento se determina a partir de un valor promedio igualmente. A continuacion, los vectores de movimiento MV23 y MV24 se calculan mediante el ajuste de escala de un vector de movimiento MV_REF y un intervalo de tiempo TR_REF basandose en la ecuacion 3. En este caso, un intervalo de tiempo TR21 indica un intervalo de tiempo entre una imagen P24 y P21, es decir, hasta una imagen a la que hace referencia un vector de movimiento MV2l, y un intervalo de tiempo TR22 indica un intervalo de tiempo hasta una imagen a la que hace referencia un vector de movimiento MV22. Un intervalo de tiempo TR23 indica un intervalo de tiempo hasta una imagen a la que hace referencia un vector de movimiento MV23; y un intervalo de tiempo TR24 indica un intervalo de tiempo hasta una imagen a la que hace referencia un vector de movimiento MV24. Los intervalos de tiempo entre estas imagenes se pueden determinar basandose en, por ejemplo, informacion que indique el tiempo de presentacion visual y el orden de presentacion visual anadida a cada imagen o diferencia de informacion. Observese que una imagen actual que se va a codificar hace referencia a una siguiente imagen en el ejemplo de la figura 7, no obstante, el caso que hace referencia a una imagen que no sea la siguiente puede tratarse de la misma manera.
La realizacion anterior muestra el procedimiento de descodificacion en el cual una descodificacion de prediccion entre imagenes puede llevarse a cabo usando el modo directo sin contradiccion, incluso si un bloque del cual se hace referencia a un vector de movimiento pertenece a una imagen B. En el procedimiento de descodificacion, cuando un bloque del cual se hace referencia al vector de movimiento en el modo directo contiene varios vectores de movimiento que hacen referencia a una imagen precedente, se genera un vector de movimiento usando los varios vectores de movimiento, y dos vectores de movimiento que se van a usar para la compensacion de movimiento real se determinan por ajuste de escala.
Observese que, cuando se calculan dos vectores de movimiento MV23 y MV24 en la figura 7, es posible usar la ecuacion 4 en lugar de la ecuacion 2 como un procedimiento para promediar vectores de movimiento MV21 y MV22 y para promediar intervalos de tiempo TR21 y TR22 para calcular de esta manera el vector de movimiento MV_REF y el intervalo de tiempo TR_REF que se van a ajustar a escala. En primer lugar, tal como se muestra en la ecuacion 4 (a), el vector de movimiento MV21' se calcula mediante el ajuste de escala de MV21 para igualar el intervalo de tiempo con el vector de movimiento MV22. A continuacion, el vector de movimiento MV_REF se determina al promediar vectores de movimiento MV21' y MV22. En el presente caso, el intervalo de tiempo TR22 se usa directamente como el intervalo de tiempo TR_REF. Observese que el caso de calcular un vector de movimiento MV22' mediante el ajuste de escala del vector de movimiento MV22 en lugar de calcular el vector de movimiento MV21' mediante el ajuste de escala de un vector de movimiento MV21 se puede tratar de la misma manera.
Observese que, cuando se calculan dos vectores de movimiento MV23 y MV24 en la figura 7, como un vector de movimiento MV_REF y un intervalo de tiempo TR_REF los cuales se ajustan a escala, un vector de movimiento MV22 y un intervalo de tiempo TR22, los cuales hagan referencia a una imagen P22 situada temporalmente mas cerca de una imagen P24 de la cual se hace referencia al vector de movimiento, se pueden usar directamente tal como se muestra en la ecuacion 5 en lugar de usar un valor promedio de dos vectores de movimiento tal como se muestra en la ecuacion 2. De forma similar, como un vector de movimiento MV_REF y un intervalo de tiempo TR_REF, un vector de movimiento MV21 y un intervalo de tiempo TR21, los cuales hacen referencia a una imagen P21 situada temporalmente mas lejos, se pueden usar directamente tal como se muestra en la ecuacion 6. Este procedimiento hace posible reducir la capacidad de una unidad de almacenamiento de vectores de movimiento en un aparato de codificacion debido a que cada bloque que pertenezca a una imagen P24 de la cual se hace referencia al vector de movimiento puede actualizar la compensacion de movimiento al almacenar solo uno de dos vectores de movimiento.
Observese que, cuando se calculan dos vectores de movimiento MV23 y MV24 en la figura 7, como un vector de movimiento MV_REF y un intervalo de tiempo TR_REF que se ajustan a escala, un vector de movimiento que haga referencia a una imagen que se va a descodificar de forma precedente se puede usar directamente, en lugar de usar
5
10
15
20
25
30
35
40
45
50
55
60
un valor promedio de dos vectores de movimiento tal como se muestra en la ecuacion 2. La figura 8A muestra una relacion de referencia en orden de presentacion visual de imagenes en movimiento tal como se muestra en la figura 7, y la figura 8B muestra un orden en el cual se introduce un flujo de bits, es decir, un orden de descodificacion. En el presente caso, una imagen P23 indica una imagen descodificada en el modo directo, y una imagen P24 indica una imagen de la cual se hace referencia al vector de movimiento para la descodificacion. Cuando se considera un orden como el que se muestra en la figura 8B, debido a que un vector de movimiento que hace referencia a una imagen que se va a descodificar de forma precedente se usa directamente, un vector de movimiento MV22 y un intervalo de tiempo TR22 se aplican directamente como un vector de movimiento MV_REF y un intervalo de tiempo TR_REF, tal como se muestra en la ecuacion 5. De forma similar, es posible usar directamente un vector de movimiento que haga referencia a una imagen que se va a descodificar mas adelante. En este caso, un vector de movimiento MV21 y un intervalo de tiempo TR21 se aplican directamente como un vector de movimiento MV_REF y un intervalo de tiempo TR_REF tal como se muestra en la ecuacion 6. Esto hace posible reducir la capacidad de una unidad de almacenamiento de vectores de movimiento en un aparato de descodificacion, toda vez que cada bloque que pertenezca a una imagen P24 de la cual se hace referencia al vector de movimiento puede llevar a cabo la compensacion de movimiento al almacenar solo uno de dos vectores de movimiento.
Observese que en la presente realizacion, se explica el caso en el que un vector de movimiento usado en el modo directo se calcula mediante el ajuste de escala de un vector de movimiento referenciado usando un intervalo de tiempo entre imagenes; no obstante, el vector de movimiento se puede calcular al multiplicar por un numero constante. En el presente caso, una constante usada para la multiplicacion puede ser variable cuando se lleve a cabo la codificacion o descodificacion de una forma por varios bloques o de una forma por varias imagenes.
(Cuarta realizacion)
Un diagrama general del proceso de codificacion basado en la figura 11 es completamente igual a la tercera realizacion. En el presente caso se explica una operacion detallada de la bi-prediccion en el modo directo usando la figura 9. No obstante, se supone que se introduce el flujo de bits generado en el procedimiento de codificacion de imagenes de la primera realizacion.
La figura 9 muestra una operacion cuando una imagen a la que se hace referencia para poder determinar un vector de movimiento en el modo directo contiene dos vectores de movimiento que hacen referencia a dos imagenes siguientes en orden de presentacion visual. Una imagen P43 es una imagen actual que se va a codificar, y lleva a cabo la bi-prediccion haciendo referencia a las imagenes P42 y P44. Cuando se supone que un bloque que se va a codificar es un bloque MB41, dos vectores de movimiento requeridos se determinan usando un vector de movimiento de un bloque co-situado MB42 en la imagen de referencia hacia atras descodificada (la segunda imagen de referencia especificada por el segundo mdice de referencia) P44. Debido a que el bloque MB42 contiene dos vectores de movimiento MV45 y MV46 como vectores de movimiento, dos vectores de movimiento requeridos MV43 y MV44 no se pueden calcular mediante ajuste de escala directamente de una forma similar a la ecuacion 1. Por lo tanto, tal como se muestra en la ecuacion 7, un vector de movimiento MV_REF se determina como un vector de movimiento que se va a ajustar a escala a partir de un valor promedio de dos vectores de movimiento del bloque MB42, y un intervalo de tiempo TR_REF en ese momento se determina a partir de un valor promedio igualmente. A continuacion, los vectores de movimiento MV43 y MV44 se calculan mediante el ajuste de escala de un vector de movimiento MV_REF y un intervalo de tiempo tR_REF basandose en la ecuacion 8. En este caso, un intervalo de tiempo TR45 indica un intervalo de tiempo entre una imagen P44 y P45, es decir, hasta una imagen a la que hace referencia un vector de movimiento MV45; y un intervalo de tiempo TR46 indica un intervalo de tiempo hasta una imagen a la que hace referencia el vector de movimiento MV46. Un intervalo de tiempo TR43 indica un intervalo de tiempo hasta una imagen a la que hace referencia un vector de movimiento MV43 y un intervalo de tiempo TR44 indica un intervalo de tiempo hasta una imagen a la que hace referencia un vector de movimiento MV44. Observese que una imagen actual que se va a codificar hace referencia a una imagen siguiente en el ejemplo de la figura 9, no obstante, el caso de hacer referencia a una imagen que no sea adyacente puede tratarse de la misma manera.
La realizacion anterior muestra el procedimiento de descodificacion en el cual una descodificacion de prediccion entre imagenes puede llevarse a cabo usando el modo directo sin contradiccion, incluso si un bloque del cual se hace referencia al vector de movimiento en el modo directo pertenece a una imagen B. En el procedimiento de descodificacion, cuando un bloque del cual se hace referencia al vector de movimiento en el modo directo contiene varios vectores de movimiento que hacen referencia a una imagen siguiente en orden de presentacion visual, un vector de movimiento se genera usando los varios vectores de movimiento, y dos vectores de movimiento que se van a usar para la compensacion de movimiento real se determinan por ajuste de escala.
Observese que, cuando se calculan dos vectores de movimiento MV43 y MV44 en la figura 9, es posible usar la ecuacion 7 en lugar de la ecuacion 9 como un procedimiento para promediar vectores de movimiento MV45 y MV46 y para promediar intervalos de tiempo TR45 y TR46 para calcular de esta manera el vector de movimiento MV_REF y el intervalo de tiempo TR_REF que se van a ajustar a escala. En primer lugar, tal como se muestra en la ecuacion 9 (a), el vector de movimiento MV46' se calcula mediante el ajuste de escala de MV46 para igualar el intervalo de tiempo con el vector de movimiento MV45. A continuacion, el vector de movimiento MV_REF se determina al promediar los vectores de movimiento MV46' y MV45. En el presente caso, el intervalo de tiempo TR45 se usa directamente como el intervalo de tiempo TR_RF. Observese que el caso de calcular un vector de movimiento
5
10
15
20
25
30
35
40
45
50
55
60
MV45' mediante el ajuste de escala del vector de movimiento MV45 en lugar de calcular el vector de movimiento MV46' mediante el ajuste de escala de un vector de movimiento MV46 se puede tratar de la misma manera.
Observese que, cuando se calculan dos vectores de movimiento MV43 y MV44 en la figura 9, como un vector de movimiento MV_REF y un intervalo de tiempo TR_REF que se ajustan a escala, un vector de movimiento MV45 y un intervalo de tiempo tR45, los cuales hacen referencia a una imagen P45 situada temporalmente mas cerca de una imagen P44 de la cual se hace referencia al vector de movimiento, se pueden usar directamente tal como se muestra en la ecuacion 10, en lugar de usar un valor promedio de dos vectores de movimiento tal como se muestra en la ecuacion 7. De forma similar, como un vector de movimiento MV_REF y un intervalo de tiempo TR_REF, un vector de movimiento MV46 y un intervalo de tiempo TR46, los cuales hacen referencia a una imagen P46 situada temporalmente mas lejos, se pueden usar directamente tal como se muestra en la ecuacion 11. Este procedimiento hace posible reducir la capacidad de una unidad de almacenamiento de vectores de movimiento en un aparato de descodificacion debido a que cada bloque que pertenezca a una imagen P44 de la cual se hace referencia al vector de movimiento puede implementar la compensacion de movimiento al almacenar solo uno de dos vectores de movimiento.
Observese que, cuando se calculan dos vectores de movimiento MV43 y MV44 en la figura 9, como un vector de movimiento MV_REF y un intervalo de tiempo TR_REF los cuales se ajustan a escala, un vector de referencia que haga referencia a una imagen que se va a codificar de forma precedente se puede usar directamente, en lugar de usar un valor promedio de dos vectores de movimiento tal como se muestra en la ecuacion 7. La figura 10A muestra una relacion de referencia en orden de presentacion visual de imagenes en movimiento tal como se muestra en la figura 9, y la figura 10B muestra un orden en el cual se introduce un flujo de bits, es decir, un orden de descodificacion. En el presente caso, una imagen P43 indica una imagen que es descodificada en el modo directo, y una imagen P44 indica una imagen de la cual se hace referencia al vector de movimiento para la descodificacion. Cuando se considera un orden como el que se muestra en la figura 10B, debido a que un vector de movimiento que hace referencia a una imagen que se va a descodificar de forma precedente se usa directamente, un vector de movimiento MV46 y un intervalo de tiempo TR46 se usan directamente como un vector de movimiento MV_REF y un intervalo de tiempo TR_REF tal como se muestra en la ecuacion 10. Este procedimiento hace posible reducir la capacidad de una unidad de almacenamiento de vectores de movimiento en un aparato de descodificacion debido a que cada bloque que pertenezca a una imagen P44 de la cual se hace referencia al vector de movimiento puede llevar a cabo la compensacion de movimiento al almacenar solo uno de dos vectores de movimiento.
Observese que, cuando un bloque al que se hace referencia para poder determinar un vector de movimiento en el modo directo contiene dos vectores de movimiento que hacen referencia a dos imagenes siguientes en orden de presentacion visual, es posible llevar a cabo la compensacion de movimiento suponiendo que dos vectores de movimiento requeridos MV43 y MV44 sean “0”. Este procedimiento hace posible reducir la capacidad de una unidad de almacenamiento de vectores de movimiento en un aparato de descodificacion, y hace posible ademas omitir un proceso de calcular un vector de movimiento, debido a que cada bloque que pertenezca a una imagen P44 de la cual se hace referencia al vector de movimiento no tiene que almacenar un vector de movimiento.
Observese que en la presente realizacion se explica el caso en el que un vector de movimiento usado en el modo directo se calcula mediante el ajuste de escala de un vector de movimiento referenciado usando un intervalo de tiempo entre imagenes; no obstante, el vector de movimiento se puede calcular al multiplicar por un numero constante. En el presente caso, una constante usada para la multiplicacion puede ser variable cuando se lleve a cabo la codificacion o descodificacion de una forma por varios bloques o de una forma por varias imagenes.
(Quinta realizacion)
El procedimiento de codificacion/descodificacion puede ser actualizado no solo por el procedimiento de codificacion/descodificacion que se muestra en la primera a la cuarta realizaciones anteriores, sino tambien por un procedimiento para calcular vectores de movimiento que se muestra en lo sucesivo.
La figura 12 muestra una operacion cuando un bloque codificado o descodificado al que se hace referencia para calcular un vector de movimiento en el modo directo contiene dos vectores de movimiento que hacen referencia a dos imagenes precedentes en orden de presentacion visual. Una imagen P23 es una imagen actual que se va a codificar o descodificada. Cuando se supone que un bloque que se va a codificar o descodificar es un bloque MB1, dos vectores de movimiento requeridos se determinan usando un vector de movimiento de un bloque co-situado MB2 en la imagen de referencia hacia atras codificada o descodificada (la segunda imagen de referencia especificada por el segundo mdice de referencia) P24. Observese que en la figura 12, el bloque MB1 es un bloque actual de proceso, los bloques MB1 y MB2 son bloques co-situados en otras imagenes, y los vectores, de movimiento MV21 es el primer vector de movimiento hacia delante que la imagen de referencia es especificada por el primer mdice de referencia y MV22 es el vector de movimiento hacia delante que la imagen de referencia es especificada por el segundo mdice de referencia, y estos vectores de movimiento se usan para codificar o descodificar el bloque MB2 y hacer referencia a las imagenes P21 y P22 respectivamente. Las imagenes P21, P22 y P24 son imagenes codificadas o descodificadas. Un intervalo de tiempo TR21 es un intervalo de tiempo entre la imagen P21 y la imagen P24; un intervalo de tiempo TR22 es un intervalo de tiempo entre la imagen P22 y la imagen P24; un intervalo de tiempo TR21' es un intervalo de tiempo entre P21 y la imagen P23; y un intervalo de
5
10
15
20
25
30
35
40
45
50
tiempo TR24' es un intervalo de tiempo entre la imagen P23 y la imagen P24.
En el procedimiento de calculo de vectores de movimiento, tal como se muestra en la figura 12, solo el vector de movimiento hacia delante (el primer vector de movimiento) MV21 codificado o descodificado de forma precedente se usa de entre vectores de movimiento del bloque MB2 en la imagen de referencia P24; y vectores de movimiento MV21' y MV24' del bloque MB1 se calculan por las siguientes ecuaciones.
MV21' = MV21 x TR21'/TR21
MV24' = -MV21 x TR24'/TR21
A continuacion, se lleva a cabo la bi-prediccion a partir de las imagenes P21 y P24 usando los vectores de movimiento MV21' y MV24'. Observese que un vector de movimiento del bloque MB1 se puede calcular usando solo un vector de movimiento (el segundo vector de movimiento) MV22 codificado o descodificado despues de vectores de movimiento del bloque MB2 en la imagen de referencia P24, en lugar de calcular vectores de movimiento MV21' y MV24' del bloque MB1 usando solo el vector de movimiento MV21. Ademas, tal como se muestra en la primera realizacion a la cuarta realizacion, un vector de movimiento del bloque MB1 se puede determinar usando ambos vectores de movimiento MV21 y MV22. Cuando se selecciona uno de los vectores de movimiento MV21 y MV22, un vector de movimiento de un bloque codificado o descodificado anteriormente se puede seleccionar, y este se puede ajustar de forma arbitraria en un aparato de codificacion y un aparato de descodificacion. La compensacion de movimiento es posible o bien cuando la imagen P21 este en la memoria de almacenamiento intermedio de imagenes de referencia a corto plazo o bien en la memoria de almacenamiento intermedio de imagenes de referencia a largo plazo. Se dara una explicacion para la memoria de almacenamiento intermedio de imagenes de referencia a corto plazo y la memoria de almacenamiento intermedio de imagenes de referencia a largo plazo.
La figura 13 muestra una operacion cuando un bloque codificado o descodificado al que se hace referencia para poder calcular un vector de movimiento en el modo directo contiene dos vectores de movimiento que hacen referencia a las siguientes dos imagenes en orden de presentacion visual. Una imagen P22 es una imagen actual que se va a codificar o descodificar. Cuando se supone que un bloque que se va a codificar o descodificar es un bloque MB1, dos vectores de movimiento requeridos se determinan usando un vector de movimiento de un bloque co-situado MB2 en la imagen de referencia hacia atras codificada o descodificada (la segunda imagen de referencia) P23. Observese que en la figura 13 el bloque MB1 es un bloque actual de procesamiento, los bloques MB1 y MB2 son bloques co-situados en imagenes y los vectores de movimiento MV24 y MV25 son vectores de movimiento hacia atras usados para codificar o descodificar el bloque MB2 y hacen referencia a imagenes P21 y P22, respectivamente. Las imagenes P21, P23, P24 y P25 son imagenes codificadas o descodificadas. Un intervalo de tiempo TR24 es un intervalo de tiempo entre la imagen P23 y la imagen P24, un intervalo de tiempo TR25 es un intervalo de tiempo entre la imagen P23 y la imagen P25, un intervalo de tiempo TR24' es un intervalo de tiempo entre P22 y la imagen P24, y un intervalo de tiempo TR21' es un intervalo de tiempo entre la imagen P21 y la imagen P22.
En un procedimiento de calculo de vectores de movimiento como el que se muestra en la figura 13, solo se usa el vector de movimiento hacia atras MV24, el cual hace referencia a la imagen P24 del bloque MB2 en la imagen de referencia P23, y los vectores de movimiento MV21' y MV24' se calculan mediante las siguientes ecuaciones.
MV21' = -MV24 x TR21'/TR24
MV24' = MV24 x TR24'/TR24
A continuacion, se lleva a cabo la bi-prediccion a partir de las imagenes P21 y P24 usando los vectores de movimiento MV21' y MV24'.
Observese que, tal como se muestra en la figura 14, cuando solo se usa un vector de movimiento hacia atras MV25, el cual apunta a la imagen P25 del bloque MB2 en la imagen de referencia P23, los vectores de movimiento MV21' y MV24' se calculan mediante las siguientes ecuaciones. En el presente caso, un intervalo de tiempo TR24 es un intervalo de tiempo entre la imagen P23 y la imagen P24; un intervalo de tiempo TR25 es un intervalo de tiempo entre la imagen P23 y la imagen P25; un intervalo de tiempo TR25' es un intervalo de tiempo entre la imagen P22 y la imagen P25 y un intervalo de tiempo TR21' es un intervalo de tiempo entre la imagen P21 y la imagen P22.
MV21' = -MV25 x TR21'/TR25
MV25' = MV25 x TR25'/TR25
A continuacion, se lleva a cabo la bi-prediccion a partir de las imagenes P21 y P24 usando los vectores de movimiento MV21' y MV24'.
La figura 15 muestra una operacion cuando un bloque codificado o descodificado al que se hace referencia para calcular un vector de movimiento en el modo directo contiene dos vectores de movimiento que hacen referencia a una imagen precedente en orden de presentacion visual. Una imagen P23 es una imagen actual que se va a
5
10
15
20
25
30
35
40
45
50
55
codificar o descodificar. Cuando se supone que un bloque que se va a codificar o descodificar es un bloque MB1, dos vectores de movimiento requeridos se determinan usando un vector de movimiento de un bloque co-situado MB2 en la imagen de referencia hacia atras codificada o descodificada (la segunda imagen de referencia especificada por el segundo mdice de referencia) P24. Observese que en la figura 15, el bloque MB1 es un bloque actual de procesamiento, los bloques MB1 y MB2 son bloques co-situados en otras imagenes. Los vectores de movimiento MV21A y MV21B son vectores de movimiento hacia delante usados para codificar o descodificar el bloque MB2, y ambos hacen referencia a la imagen P21. Las imagenes P21, P22 y P24 son imagenes codificadas o descodificadas. Los intervalos de tiempo TR21A y TR21B son un intervalo de tiempo entre la imagen P21 y la imagen P24; un intervalo de tiempo TR21' es un intervalo de tiempo entre la imagen P21 y la imagen P23 y un intervalo de tiempo TR24' es un intervalo de tiempo entre P23 y la imagen P24.
En un procedimiento de calculo de vectores de movimiento como el que se muestra en la figura 15, solo se usa el vector de movimiento hacia delante MV21A, el cual apunta a la imagen P21 del bloque MB2 en la imagen de referencia P24, y los vectores de movimiento MV21A' y MV24' se calculan por las siguientes ecuaciones.
MV21A' = MV21A x TR21'/TR21A
MV24' = -MV21A x TR24'/TR21A
A continuacion, se lleva a cabo la bi-prediccion de las imagenes P21 y P24 usando los vectores de movimiento MV21A' y MV24'.
Observese que un vector de movimiento del bloque MB1 se puede calcular usando solo un vector de movimiento hacia delante MV21B, el cual apunta a la imagen P21 del bloque MB2 en la imagen de referencia P24. Ademas, tal como se muestra en la primera realizacion a la cuarta realizacion, un vector de movimiento del bloque MB1 se puede determinar usando ambos vectores de movimiento hacia delante MV21A y MV21B. Cuando se selecciona uno de los vectores de movimiento hacia delante MV21A y MV21B, un vector de movimiento de un bloque codificado o descodificado de forma precedente (que se ha descrito anteriormente en un flujo de bits) se puede seleccionar, y se puede ajustar de forma arbitraria por un aparato de codificacion y un aparato de descodificacion. En el presente caso, el vector de movimiento codificado o descodificado de forma precedente quiere decir el primer vector de movimiento. La compensacion de movimiento es posible o bien cuando la imagen P21 este en la memoria de almacenamiento intermedio de imagenes de referencia a corto plazo o bien en la memoria de almacenamiento intermedio de imagenes de referencia a largo plazo. Mas adelante se dara la explicacion para la memoria de almacenamiento intermedio de imagenes de referencia a corto plazo y la memoria de almacenamiento intermedio de imagenes de referencia a largo plazo.
Observese que en la presente realizacion se explica el caso en el que un vector de movimiento usado en el modo directo se calcula mediante el ajuste de escala de un vector de movimiento referenciado usando un intervalo de tiempo entre imagenes; no obstante, el vector de movimiento se puede calcular al multiplicar por un numero constante. En el presente caso, una constante usada para la multiplicacion puede ser variable cuando se lleve a cabo la codificacion o descodificacion de una forma por varios bloques o de una forma por varias imagenes.
Observese que, en las ecuaciones que se han mencionado en lo que antecede para calcular vectores de movimiento MV21', MV24', MV25' y MV21A', los vectores de movimiento se pueden redondear a una precision predeterminada de un vector de movimiento despues de calcular el lado derecho de las ecuaciones. La precision del vector de movimiento incluye precision de medio pixel, precision de pixel de un tercio y precision de pixel de un cuarto o similares. Ademas, la precision de un vector de movimiento se puede determinar, por ejemplo, de una forma por bloques, una forma por imagenes y una forma por secuencias.
(Sexta realizacion)
En la presente sexta realizacion, se explica usando las figuras 14, 15 y 16 un procedimiento para calcular un vector de movimiento actual mediante el ajuste de escala de solo uno de dos vectores de movimiento hacia delante, los cuales hacen referencia a dos imagenes precedentes en orden de presentacion visual. En este caso, una imagen de referencia usada para determinar un vector de movimiento actual en el modo directo contiene los dos vectores de movimiento hacia delante. Observese que el bloque MB1 es un bloque actual que sera procesado; los bloques MB1 y MB2 son bloques co-situados en otras imagenes; y los vectores de movimiento MV21 y MV22 son vectores de movimiento hacia delante usados para codificar o descodificar el bloque MB2, y hacen referencia a las imagenes P21 y P22, respectivamente. Las imagenes P21, P22 y P24 son imagenes codificadas o descodificadas. Un intervalo de tiempo TR21 es un intervalo de tiempo entre la imagen P21 y la imagen P24; un intervalo de tiempo TR22 es un intervalo de tiempo entre la imagen P22 y la imagen P24; un intervalo de tiempo TR21' es un intervalo de tiempo entre P21 y la imagen P23; y un intervalo de tiempo TR22' es un intervalo de tiempo entre P22 y la imagen P23.
Como el primer procedimiento, cuando un bloque MB2 en una imagen de referencia P24 contiene un vector de movimiento hacia delante MV21 que hace referencia a una imagen P22 y un vector de movimiento hacia delante MV22 que hace referencia a una imagen P23 tal como se muestra en la figura 16, un vector de movimiento MV22' del bloque MB1 se calcula usando solo un vector de movimiento MV22 que hace referencia a una imagen P22 cercana a una imagen actual P23 en orden de presentacion visual por la siguiente ecuacion.
5
10
15
20
25
30
35
40
45
50
MV22' = MV22 x TR22'/TR22
A continuacion, se lleva a cabo la compensacion de movimiento a partir de la imagen P22 usando el vector de movimiento MV22'.
Como el segundo procedimiento, cuando un bloque MB2 de una imagen de referencia P24 contiene un vector de movimiento hacia delante MV21 que hace referencia a una imagen P21 y un vector de movimiento hacia delante MV22 que hace referencia a una imagen P22 tal como se muestra en la figura 17, un vector de movimiento MV21' del bloque MB1 se calcula usando solo un vector de movimiento MV21 que hace referencia a una imagen P21 que esta lejos de una imagen actual P23 en orden de presentacion visual por la siguiente ecuacion.
MV21' = MV21 x TR21'/TR21
A continuacion, se lleva a cabo la compensacion de movimiento a partir de la imagen P21 usando el vector de movimiento MV21'.
El primer y el segundo procedimientos hacen posible reducir la capacidad de una unidad de almacenamiento de vectores de movimiento debido a que el bloque MB2 que pertenece a una imagen P24 de la cual se hace referencia al vector de movimiento puede actualizar la compensacion de movimiento al almacenar solo uno de dos vectores de movimiento.
Observese que la compensacion de movimiento se puede llevar a cabo a partir de una imagen P22 cercana en orden de presentacion visual, usando el vector de movimiento hacia delante MV21 al igual que en la primera realizacion. Un vector de movimiento MVN (que no se muestra en esta figura) usado para la compensacion de movimiento se calcula por la siguiente ecuacion.
MVN = MV21 x TR22'/TR21
Como el tercer procedimiento, tal como se muestra en la figura 18, un bloque de compensacion de movimiento se obtiene de las imagenes P21 y P22 respectivamente usando los vectores de movimiento MV21' y MV22' que se han calculado en lo que antecede, y una imagen promedio se usa como una imagen de interpolacion en la compensacion de movimiento.
El tercer procedimiento incrementa la cantidad calculada, no obstante, mejora la precision de la compensacion de movimiento.
Ademas, es posible obtener un bloque de compensacion de movimiento a partir de la imagen P22 usando los vectores de movimiento MVN y MV22' que se han mencionado en lo que antecede, y usar una imagen promedio como una imagen de interpolacion en la compensacion de movimiento.
Observese que en la presente realizacion se explica el caso en el que un vector de movimiento usado en el modo directo se calcula mediante el ajuste de escala de un vector de movimiento referenciado usando un intervalo de tiempo entre imagenes; no obstante, el vector de movimiento se puede calcular al multiplicar un vector de movimiento de referencia por un numero constante. En el presente caso, una constante usada para la multiplicacion puede ser variable cuando se lleve a cabo la codificacion o descodificacion de una forma por varios bloques o de una forma por varias imagenes.
Observese que, en las ecuaciones que se han mencionado en lo que antecede para calcular los vectores de movimiento MV21', MV22' y MVN, los vectores de movimiento se pueden redondear a una precision predeterminada de un vector de movimiento despues de calcular el lado derecho de las ecuaciones. La precision del vector de movimiento incluye la precision de medio pixel, precision de pixel de un tercio y precision de pixel de un cuarto o similares. Ademas, la precision de un vector de movimiento se puede determinar, por ejemplo, de una forma por bloques, una forma por imagenes y una forma por secuencias.
(Septima realizacion)
En la sexta realizacion anterior se ha descrito el caso de cuando una imagen de referencia usada para determinar un vector de movimiento de un bloque actual que se va a codificar o descodificar contiene dos vectores de movimiento hacia delante en el modo directo. Los dos vectores de movimiento hacia delante hacen referencia a dos imagenes precedentes en orden de presentacion visual. No obstante, cuando la imagen de referencia contiene dos vectores de movimiento hacia atras que hacen referencia a dos imagenes siguientes en orden de presentacion visual, es posible calcular de forma similar un vector de movimiento actual mediante el ajuste de escala de solo uno de dos vectores de movimiento hacia atras (los segundos vectores de movimiento de los cuales la imagen de referencia es especificada por los segundos indices de referencia). La explicacion se dara usando las figuras 17 ~ 20 en lo sucesivo. Observese que el bloque MB1 es un bloque actual de proceso, los bloques MB1 y MB2 son bloques co- situados en otras imagenes y los vectores de movimiento MV24 y MV25 son vectores de movimiento hacia atras (los segundos vectores de movimiento de los cuales la imagen de referencia es especificada por los segundos indices de referencia) usados para codificar o descodificar el bloque MB2. Las imagenes P21, P23, P24 y P25 son imagenes
5
10
15
20
25
30
35
40
45
50
codificadas o descodificadas. Un intervalo de tiempo TR24 es un intervalo de tiempo entre la imagen P23 y la imagen P24; un intervalo de tiempo TR25 es un intervalo de tiempo entre la imagen P23 y la imagen P25; un intervalo de tiempo TR24' es un intervalo de tiempo entre P22 y la imagen P25; y un intervalo de tiempo TR25' es un intervalo de tiempo entre P22 y la imagen P25.
Como el primer procedimiento, cuando un bloque MB2 de una imagen de referencia P23 contiene dos vectores de movimiento hacia atras MV24 que hace referencia a una imagen P24 y MV25 que hace referencia a una imagen P25 tal como se muestra en la figura 19, un vector de movimiento MV24' del bloque MB1 se calcula usando solo un vector de movimiento hacia atras MV24 que hace referencia a una imagen P24 que esta temporalmente cerca de una imagen actual P22 por la siguiente ecuacion.
MV24' = MV24 x TR24'/TR24
A continuacion, se lleva a cabo la compensacion de movimiento de la imagen P24 usando el vector de movimiento MV24'.
Observese que la compensacion de movimiento se puede llevar a cabo a partir de una imagen P23 cercana en orden de presentacion visual, usando un vector de movimiento hacia atras MV24 igual que en la primera realizacion. Un vector de movimiento MVN1 (que no se muestra en esta figura) usado para la compensacion de movimiento se calcula por la siguiente ecuacion.
MVN1 = MV24 x TRN1/TR24
Como el segundo procedimiento, cuando un bloque MB2 de una imagen de referencia P23 contiene dos vectores de movimiento hacia atras MV24 que hace referencia a una imagen P24 y MV25 que hace referencia a una imagen P25 tal como se muestra en la figura 20, un vector de movimiento MV25' del bloque MB1 se calcula usando solo un vector de movimiento hacia atras MV25 que hace referencia a una imagen P25 lejos de una imagen actual P23 en orden de presentacion visual por la siguiente ecuacion.
MV25' = MV25 x TR25'/TR25
A continuacion, se lleva a cabo la compensacion de movimiento a partir de la imagen P25 usando el vector de movimiento MV25'.
El primer y el segundo procedimientos hacen posible reducir la capacidad de una unidad de almacenamiento de vectores de movimiento debido a que el bloque MB2 que pertenece a una imagen P23 de la cual se hace referencia al vector de movimiento puede implementar la compensacion de movimiento al almacenar solo uno de dos vectores de movimiento.
Observese que una compensacion de movimiento se puede llevar a cabo a partir de una imagen P23 cercana en orden de presentacion visual, usando un vector de movimiento hacia atras MV25 al igual que en la primera realizacion. Un vector de movimiento MVN2 (que no se muestra en esta figura) usado para la compensacion de movimiento se calcula usando la siguiente ecuacion.
MVN2 = MV25 x TRN1/TR25
Como el tercer procedimiento, tal como se muestra en la figura 21, un bloque de compensacion de movimiento se obtiene a partir de las imagenes P24 y P25 respectivamente, usando los vectores de movimiento MV24' y MV25' que se han calculado en lo que antecede, y una imagen promedio se usa como una imagen de interpolacion en una compensacion de movimiento.
El tercer procedimiento incrementa la cantidad de calculo, no obstante, mejora la precision de la compensacion de movimiento.
Observese que es posible obtener un bloque de compensacion de movimiento a partir de la imagen P24 usando los vectores de movimiento MVN1 y MVN2 que se han mencionado en lo que antecede, y usar una imagen promedio como una imagen de interpolacion en la compensacion de movimiento.
Ademas, tal como se muestra en la figura 22, cuando una imagen de referencia a la que se hace referencia para determinar un vector de movimiento de un vector de movimiento actual en el modo directo contiene un vector de movimiento hacia atras que hace referencia a una imagen siguiente en orden de presentacion visual, por ejemplo, un vector de movimiento MV24' se calcula usando la siguiente ecuacion.
MV24' = MV24 x TR24'/TR24
A continuacion, se lleva a cabo la compensacion de movimiento de la imagen P24 usando el vector de movimiento MV24'.
5
10
15
20
25
30
35
40
45
50
55
60
Observese que la compensacion de movimiento se puede llevar a cabo a partir de una imagen P23 cercana en orden de presentacion de visual, usando un vector de movimiento hacia atras MV25 al igual que en la primera realizacion. Un vector de movimiento MVN3 (que no se muestra en esta figura) usado para la compensacion de movimiento se calcula mediante la siguiente ecuacion.
MVN3 = MV24 x TRN1/TR24
Observese que en la presente realizacion se explica el caso en el que un vector de movimiento actual se calcula mediante el ajuste de escala del vector de movimiento hacia atras, cuando contiene dos vectores de movimiento hacia atras, los cuales hacen referencia a dos imagenes siguientes en orden de presentacion visual, y cuando contiene un vector de movimiento hacia atras, el cual hace referencia a una imagen siguiente en orden de presentacion visual. No obstante, un vector de movimiento actual se puede calcular haciendo referencia a un vector de movimiento de un bloque adyacente en una misma imagen sin usar un vector de movimiento hacia atras, y cuando la codificacion entre imagenes se lleva a cabo, un vector de movimiento actual se puede calcular haciendo referencia a un vector de movimiento de un bloque adyacente en una misma imagen.
Para empezar se describira el primer procedimiento de calculo.
La figura 23 muestra una relacion de posicion entre un vector de movimiento al que se va a hacer referencia y un bloque actual. Un bloque MB1 es un bloque actual, y hace referencia a un vector de movimiento de un bloque que incluye tres pfxeles situados en A, By C. Observese que, cuando no se puede hacer referencia a un pixel C debido a que se situa fuera de una trama o no ha sido codificado/descodificado, un vector de movimiento de un bloque que incluye un pixel D se usa en lugar de un bloque que incluye el pixel C. Al calcular un valor medio de vectores de movimiento de tres bloques actuales que incluyen los pfxeles A, B y C a los que se va a hacer referencia, un vector de movimiento usado realmente en el modo directo se determina. Al calcular un valor medio de vectores de movimiento de tres bloques, no es necesario describir, en un flujo de bits, informacion adicional que muestre que vector de movimiento se selecciona. Por consiguiente, es posible obtener un vector de movimiento que exprese movimiento cercano al movimiento real del bloque MB1. En este caso, la compensacion de movimiento se puede llevar a cabo solo mediante referencia hacia delante (referencia a la primera imagen de referencia) usando el vector de movimiento determinado y mediante referencia bidireccional (referencia a la primera imagen de referencia y la segunda imagen de referencia) usando un vector de movimiento paralelo con el vector de movimiento determinado.
A continuacion se describira el segundo procedimiento de calculo.
Bajo el segundo procedimiento de calculo, un valor medio no se selecciona como el primer procedimiento de calculo, y un vector de movimiento usado en el modo directo real se determina al seleccionar un vector de movimiento cuya eficiencia de codificacion sea la mas alta de vectores de movimiento de tres bloques que incluyan los pfxeles A, B y C. En este caso, la compensacion de movimiento puede llevarse a cabo solo mediante referencia hacia delante (referencia a la primera imagen de referencia), usando el vector de movimiento determinado y mediante referencia bidireccional (referencia a la primera imagen de referencia y la segunda imagen de referencia) usando un vector de movimiento paralelo con el vector de movimiento determinado. La informacion que indica un vector de movimiento con la eficiencia de codificacion mas alta es, por ejemplo tal como se muestra en la figura 24A, anadida a un area de encabezado de un bloque en un flujo de bits generado por una unidad de generacion de flujos de bits 103 con la informacion que indica un modo directo enviada desde una unidad de seleccion de modo l07. Observese que tal como se muestra en la figura 24B, la informacion que indica un vector de movimiento con la eficiencia de codificacion mas alta se puede anadir al area de encabezado de un macrobloque. En el presente caso, la informacion que indica un vector de movimiento con la eficiencia de codificacion mas alta es, por ejemplo, un numero que identifica un bloque que incluye un pixel actual al que se va a hacer referencia, y un numero de identificacion dado a cada bloque. Cuando un bloque es identificado por el numero de identificacion, un vector de movimiento con la eficiencia de codificacion mas alta se puede indicar usando solo uno de los vectores de movimiento usados para codificar un bloque que se corresponda con un numero de identificacion, y cuando los vectores de movimiento son mas de 1, un vector de movimiento con la eficiencia de codificacion mas alta se puede indicar mediante el uso de varios vectores de movimiento. O, un vector de movimiento con la eficiencia de codificacion mas alta se puede indicar usando un numero de identificacion dado a cada bloque a cada vector de movimiento de forma bidireccional (referencia a la primera imagen de referencia y la segunda imagen de referencia). Este procedimiento de seleccion hace posible seleccionar siempre un vector de movimiento que haga a la eficiencia de codificacion la mas alta. No obstante, debido a que la informacion adicional que muestra que vector de movimiento se selecciona se tiene que describir en un flujo de bits, es necesaria una cantidad adicional de codigo para la informacion adicional. A continuacion, se explicara el tercer procedimiento de calculo.
Bajo el tercer procedimiento de calculo, un vector de movimiento que hace referencia a una imagen de referencia con el mdice de referencia mas pequeno se determina como un vector de movimiento usado en el modo directo real. El mdice de referencia mas pequeno quiere decir, en general, un vector de movimiento que hace referencia a una imagen cercana en orden de presentacion visual o a un vector de movimiento con la eficiencia de codificacion mas alta. Por lo tanto, este procedimiento de seleccion de vectores de movimiento hace posible mejorar la eficiencia de codificacion, debido a que un vector de movimiento usado en el modo directo se genera usando un vector de movimiento que hace referencia a una imagen lo mas cercana en orden de presentacion visual o un vector de
5
10
15
20
25
30
35
40
45
50
55
movimiento con la eficiencia de codificacion mas alta.
Observese que, cuando la totalidad de los tres vectores de movimiento hacen referencia a una misma imagen de referencia, se puede usar un valor medio de los tres vectores de movimiento. Por otro lado, cuando dos de tres vectores de movimiento hacen referencia a una imagen de referencia con el valor de mdice de referencia mas pequeno, por ejemplo, el mismo uno de los dos vectores de movimiento se puede seleccionar siempre. Como un ejemplo, haciendo referencia a la figura 23, hay tres bloques que incluyen los pfxeles A, B y C respectivamente, y cuando los valores de mdice de referencia de los bloques que incluyen los pfxeles A y B son los mas pequenos, y se hace referencia a una misma imagen de referencia, un vector de movimiento en el bloque que incluye el pixel A se puede seleccionar. No obstante, cuando los valores de mdice de referencia de los bloques que incluyen los pfxeles A y C son los mas pequenos, y se hace referencia a una misma imagen de referencia, se puede seleccionar un vector de movimiento en un bloque BL1 que incluya el pixel A situado mas cerca de un bloque.
Observese que el valor medio que se ha mencionado en lo que antecede puede ser un valor medio de componentes en direccion horizontal y direccion vertical de cada vector de movimiento, y puede ser un valor medio del valor (valor absoluto) de cada vector de movimiento.
En el caso que se muestra en la figura 25, un valor medio de vectores de movimiento puede ser un valor medio de vectores de movimiento contenidos en cinco bloques: un bloque co-situado de un bloque BL1 en una imagen de referencia siguiente; bloques que incluyan pfxeles A, B y C respectivamente; +++ y un bloque que incluya un pixel D que se muestra en la figura 25. Tal como se ha descrito en lo que antecede, cuando se usa un bloque co-situado, el cual esta cerca de un pixel actual que se va a codificar, del bloque BL1 en una imagen de referencia siguiente, un proceso de calcular un valor medio de vectores de movimiento se hace mas facil al usar un bloque que incluya el pixel D para de esta manera hacer al numero de bloques un numero non. Observese que, cuando varios bloques estan en un area co-situada del bloque BL1 en una imagen de referencia siguiente, una compensacion de movimiento puede llevarse a cabo para el bloque BL1 mediante el uso de un vector de movimiento en un bloque que ocupe el area mas grande traslapada con el bloque BL1, o al dividir el bloque BL1 que se corresponda con un area del bloque plural en la siguiente imagen de referencia y una compensacion de movimiento puede llevarse a cabo de una forma por bloques divididos.
A continuacion se dara una explicacion usando ejemplos concretos.
Tal como se muestra en las figuras 26 y 27, cuando todos los bloques que incluyen los pfxeles A, B y C contienen un vector de movimiento que hace referencia a una imagen precedente a una imagen actual que se va a codificar, se puede usar cualquiera del primer al tercer procedimiento de calculo que se han mencionado en lo que antecede.
De forma similar, tal como se muestra en las figuras 28 y 29, cuando todos los bloques que incluyen los pfxeles A, B y C contienen un vector de movimiento que hace referencia a una imagen siguiente a una imagen actual que se va a codificar, se puede usar cualquiera del primer al tercer procedimiento de calculo.
A continuacion se explica el caso que se muestra en la figura 30. La figura 30 muestra el caso en el que cada uno de los bloques que incluyen los pfxeles A, B y C, respectivamente contienen cada uno de los vectores de movimiento, uno hace referencia a una imagen precedente a una imagen actual que se va a codificar y otro hace referencia a una imagen siguiente a una imagen actual que se va a codificar.
De acuerdo con el primer procedimiento de calculo, un vector de movimiento hacia delante usado para la compensacion de movimiento del bloque BL1 se selecciona por un valor medio de vectores de movimiento MVAf MVBf y MVCf, y un vector de movimiento hacia atras usado para la compensacion de movimiento del bloque BL1 se selecciona por un valor medio de vectores de movimiento MVAb, MVBb y MVCb. En el presente caso, el vector de

movimiento MVAf es un vector de movimiento hacia delante de un bloque que contiene el pixel A, el vector de

movimiento MVAb es un vector de movimiento hacia atras de un bloque que contiene el pixel A, el vector de

movimiento MVBf es un vector de movimiento hacia delante de un bloque que contiene el pixel B, el vector de

movimiento MVBb es un vector de movimiento hacia atras de un bloque que contiene el pixel B, el vector de

movimiento MVCf es un vector de movimiento hacia delante de un bloque que contiene el pixel C, el vector de

movimiento MVCb es un vector de movimiento hacia atras de un bloque que contiene el pixel C. Los vectores de
movimiento tales como el vector de movimiento MVAf no se limitan al caso que hace referencia a una imagen tal como se muestra en la figura. Lo mismo es de aplicacion para la siguiente explicacion.
De acuerdo con el segundo procedimiento de calculo, un vector de movimiento que se va a usar en el modo directo real se determina al seleccionar un vector de movimiento con la eficiencia de codificacion mas alta de vectores de movimiento de referencia hacia delante MVAf, MVBf y MVCf, y seleccionando un vector de movimiento con la eficiencia de codificacion mas alta de vectores de movimiento de referencia hacia atras MVAb, MVBb y MVCb. En este caso, la compensacion de movimiento se puede llevar a cabo solo mediante la referencia hacia delante usando un vector de movimiento con la eficiencia de codificacion mas alta de vectores de movimiento de referencia hacia delante MVAf, MVBf y MVCf, y mediante bi-prediccion usando un vector de movimiento paralelo con el vector de movimiento predeterminado. Observese que, para poder lograr la eficiencia de codificacion mas alta, una compensacion de movimiento puede llevarse a cabo al seleccionar un bloque y usar vectores de movimiento de
5
10
15
20
25
30
35
40
45
50
55
60
referencia hacia delante y hacia atras del bloque seleccionado, en lugar de seleccionar vectores de movimiento de referencia hacia delante y hacia atras respectivamente. En este caso, debido a que la informacion que indica una seleccion se puede reducir en comparacion con el caso de seleccionar informacion que indique un bloque que contenga un pixel que tenga un vector de movimiento hacia delante seleccionado para la mas alta eficiencia de codificacion y un bloque que contenga un pixel que tenga un vector de movimiento hacia atras seleccionado para la mas alta eficiencia de codificacion, la eficiencia de codificacion se puede mejorar. La seleccion del bloque puede ser a partir de los siguientes: 1. Un bloque incluye un pixel que tiene un vector de movimiento de referencia hacia delante que hace referencia a una imagen de referencia con el valor de mdice de referencia mas pequeno; 2. Un bloque tiene el valor mas pequeno que es una suma de un valor de mdice de referencia de una imagen a la que hace referencia un vector de movimiento de referencia hacia delante de un bloque que incluye cada pixel, y un valor de mdice de referencia de una imagen a la que hace referencia un vector de movimiento de referencia hacia atras de un bloque que incluye cada pixel; 3. Un bloque selecciona un valor medio de indices de referencia de una imagen a la que hace referencia un vector de movimiento de referencia hacia delante e incluye un pixel que tiene un vector de movimiento de referencia hacia delante con el valor medio seleccionado, y un vector de movimiento hacia atras se incluye en el bloque; y 4. Un bloque selecciona un valor medio de indices de referencia en una imagen a la que hace referencia un vector de movimiento de referencia hacia atras e incluye un pixel que tiene un vector de movimiento hacia atras con el valor medio seleccionado, y un vector de movimiento hacia delante se incluye en el bloque. Observese que, cuando cada uno de los vectores de movimiento hacia atras hace referencia a una misma imagen, la seleccion del procedimiento 1 y el procedimiento 3 es adecuada.
De acuerdo con el tercer procedimiento de calculo, uno de los vectores de movimiento de referencia hacia delante MVAf, MVBf y MVCf, el cual hace referencia a una imagen de referencia con el valor de mdice de referencia mas pequeno, es un vector de movimiento de referencia hacia delante (la primera referencia) usado en el modo directo. O, uno de los vectores de movimiento de referencia hacia atras MVAb, MVBb y MVCb, el cual hace referencia a una imagen de referencia con el valor de mdice de referencia mas pequeno, es un vector de movimiento de referencia hacia atras (la segunda referencia) usado en el modo directo. Observese que en el tercer procedimiento de calculo, el vector de movimiento hacia delante que hace referencia a la imagen de referencia con el valor de mdice de referencia mas pequeno es un vector de movimiento hacia delante de un bloque BL1, y el vector de movimiento hacia atras que hace referencia a la imagen de referencia con el mdice de referencia mas pequeno es un vector de movimiento hacia atras del bloque BL1; no obstante, dos vectores de movimiento BL1 y BL2 se pueden obtener usando uno de un vector de movimiento hacia delante o un vector de movimiento hacia atras que hagan referencia a una imagen de referencia con el mdice de referencia mas pequeno, y la compensacion de movimiento se puede llevar a cabo usando el vector de movimiento obtenido.
A continuacion, se explica el caso que se muestra en la figura 31. La figura 31 muestra un caso en el que el pixel A contiene cada uno de los vectores de movimiento, uno hace referencia a una imagen precedente y otro hace referencia a una imagen siguiente, el pixel B contiene solo un vector de movimiento que hace referencia a una imagen precedente, y el pixel C contiene solo un vector de movimiento que hace referencia a una imagen siguiente.
De esta manera, cuando existe un bloque que incluye un pixel que contiene solo un vector de movimiento que hace referencia a una imagen unidireccionalmente, suponiendo que un vector de movimiento que haga referencia a una imagen en otra direccion sea 0, el procedimiento de calculo de la figura 30 que se ha mencionado en lo que antecede se puede usar para la compensacion de movimiento. En concreto, usando el primer o el tercer procedimiento de calculo de la figura 30, el calculo puede llevarse a cabo suponiendo que MVCf = MVBb = 0. Es decir, en el primer procedimiento de calculo, cuando se calcula un vector de movimiento hacia delante del bloque BL1, suponiendo que un vector de movimiento MVCf del pixel C que hace referencia a una imagen precedente sea 0, se calcula un valor medio de vectores de movimiento MVAf, MVBf y MVCf. Por otro lado, cuando se calcula un vector de movimiento hacia atras del bloque BL1, suponiendo que un vector de movimiento MVBb, el cual hace referencia a una imagen siguiente, del pixel B sea cero, se calcula un valor medio de los vectores de movimiento MVAb, MVBb y MVCb.
De acuerdo con el tercer procedimiento de calculo, suponiendo que un vector de movimiento MVCf, el cual hace referencia a una imagen precedente, del pixel C y un vector de movimiento, el cual hace referencia a una imagen siguiente, del pixel B sean 0, se calcula un vector de movimiento, el cual hace referencia a una imagen de referencia con el valor de mdice de referencia mas pequeno, del bloque BL1. Por ejemplo, cuando un bloque que incluye un pixel A hace referencia a una imagen con el primer mdice de referencia de “0” y un bloque que incluye un pixel B hace referencia a una imagen con el primer mdice de referencia de “1”, el valor mas pequeno del mdice de referencia es “0”. Por lo tanto, debido a que solo el vector de movimiento MVBf, el cual hace referencia a una imagen precedente, del bloque que incluye el pixel hace referencia a una imagen con el primer mdice de referencia mas pequeno, el vector de movimiento MVBf se selecciona como un vector de movimiento hacia delante del bloque BL1. Ademas, por ejemplo, cuando ambos pfxeles A y C hacen referencia a una imagen siguiente con el segundo mdice de referencia mas pequeno, por ejemplo “0”, suponiendo que un vector de movimiento MVBb, el cual hace referencia a una imagen siguiente, de un pixel B sea 0, se calcula un valor medio de vectores de movimiento MVAb, MVBb y MBCb. El vector de movimiento que resulto del calculo se establece como un vector de movimiento hacia delante del bloque BL1.
5
10
15
20
25
30
35
40
45
50
55
A continuacion se explica un caso que se muestra en la figura 32. La figura 32 muestra un caso en el que el pixel A contiene cada uno de los vectores de movimiento; uno hace referencia a una imagen precedente y otro hace referencia a una imagen siguiente. El pixel B solo contiene solo un vector de movimiento que hace referencia a una imagen precedente y el pixel C no contiene un vector de movimiento y se codifica entre imagenes.
Cuando un bloque que incluye un pixel actual C que se va a codificar se codifica entre imagenes, suponiendo que los vectores de movimiento que hacen referencia a las imagenes precedentes y siguientes al bloque sean ambos 0, se puede usar el procedimiento de calculo de la figura 30 que se ha mencionado en lo que antecede para la compensacion de movimiento. En concreto, el calculo se puede llevar a cabo suponiendo que MVCf = MVCb = 0. Observese que, en la figura 30, MVBb es 0.
Por ultimo, se explica un caso que se muestra en la figura 33. La figura 33 muestra un caso en el que un pixel C se codifica por el modo directo.
Cuando los bloques que incluyen un pixel actual al que se hace referencia contienen un bloque codificado por el modo directo, la compensacion de movimiento del bloque BL1 se puede llevar a cabo usando un vector de movimiento usado para codificar un bloque codificado por el modo directo y usando el procedimiento de calculo que se muestra en la figura 30.
Observese que se determina cual de un vector de movimiento de referencia hacia delante o hacia atras se usa, dependiendo de una imagen a la que se va a hacer referencia, una imagen que se va a codificar y la informacion de tiempo incluida en cada imagen. Por lo tanto, cuando se obtiene un vector de movimiento despues de diferenciar entre una referencia hacia delante y una referencia hacia atras, un vector de movimiento de cada bloque se evalua si una referencia hacia delante o una referencia hacia atras a partir de la informacion de tiempo esta contenida en cada imagen.
A continuacion, se explica un ejemplo de un procedimiento de calculo que combina los procedimientos de calculo que se han mencionado en lo que antecede. La figura 34 es una ilustracion que muestra un procedimiento para determinar un vector de movimiento que se va a usar en el modo directo. La figura 34 es un ejemplo de un procedimiento para determinar un vector de movimiento usando indices de referencia. Observese que Ridx0 y Ridxl que se muestran en la figura 34 son los indices de referencia que se han explicado en lo que antecede. La figura 34A muestra un procedimiento para determinar un vector de movimiento usando el primer mdice de referencia Ridx0, y la figura 34B muestra un procedimiento para determinar un vector de movimiento usando el segundo mdice de referencia Ridxl. En primer lugar, se explica la figura 34A.
En una etapa S3701, hay tres bloques que incluyen pfxeles A, B y C respectivamente, y se calcula el numero de bloques que hacen referencia a una imagen usando el primer mdice de referencia Ridx0.
Cuando el numero de bloques calculado en la etapa S3701 es “0”, el numero de bloques que hacen referencia a una imagen usando el segundo mdice de referencia Ridxl se calcula ademas en una etapa S3702. Cuando el numero de bloques calculado en la etapa S3702 es “0”, la compensacion de movimiento se lleva a cabo bidireccionalmente para un bloque actual que se va a codificar suponiendo que un bloque de movimiento del bloque actual que se va a codificar sea “0” en una etapa S3703. Por otro lado, cuando el numero de bloques calculados en la etapa S3702 es “1” o mas, un vector de movimiento de un bloque actual que se va a codificar se determina en una etapa S3704 por el numero de bloques que contienen el segundo mdice de referencia Ridxl. Por ejemplo, la compensacion de movimiento de un bloque actual que se va a codificar se lleva a cabo usando el vector de movimiento determinado por el numero de bloques que contienen el segundo mdice de referencia Ridxl.
Cuando el numero de bloques calculado en la etapa S3701 es “1”, un vector de movimiento que contiene el primer mdice de referencia Ridx0 se usa en una etapa S3705.
Cuando el numero de bloques calculado en la etapa S3701 es “2”, un vector de movimiento que se corresponde con un valor medio de tres vectores de movimiento se usa en una etapa S3706, suponiendo que un bloque que no contenga el primer mdice de referencia Ridx0 contenga un vector de movimiento de MV = 0 del primer mdice de referencia Ridx0.
Cuando el numero de bloques calculado en la etapa S3701 es “3”, un vector de movimiento que se corresponde con un valor medio de tres vectores de movimiento se usa en una etapa S3707. Observese que la compensacion de movimiento en la etapa S3704 se puede llevar a cabo bidireccionalmente usando un vector de movimiento. En el presente caso, la compensacion de movimiento bidireccional se puede llevar a cabo despues de calcular un vector de movimiento en la misma direccion que un vector de movimiento, y un vector de movimiento en la direccion opuesta a un vector de movimiento, por ejemplo, mediante el ajuste de escala de un vector de movimiento, o se puede llevar a cabo usando un vector de movimiento en la misma direccion que un vector de movimiento y un vector de movimiento de “0”. A continuacion se explica la figura 34B.
El numero de bloques que contienen el segundo mdice de referencia Ridxl se calcula en una etapa S3711.
5
10
15
20
25
30
35
40
45
50
55
Cuando el numero de bloques calculado en la etapa S3711 es “0”, el numero de bloques que contienen el primer mdice de referencia RIxd1 se calcula adicionalmente en una etapa S3712. Cuando el numero de bloques calculado en la etapa S3712 es “0”, la compensacion de movimiento se lleva a cabo bidireccionalmente para un bloque actual que se va a codificar suponiendo que un bloque de movimiento del bloque actual que se va a codificar sea “0” en una etapa S3713. Por otro lado, el numero de bloques calculado en la etapa S3712 es “1” o mas, un vector de movimiento de un bloque actual que se va a codificar se determina en una etapa S3714 por el numero de bloques que contienen el primer mdice de referencia RidxO. Por ejemplo, la compensacion de movimiento de un bloque actual que se va a codificar se lleva a cabo usando el vector de movimiento determinado por el numero de bloques que contienen el primer mdice de referencia RidxO.
Cuando el numero de bloques calculado en la etapa S3711 es “1”, un vector de movimiento que contiene el segundo mdice de referencia Ridxl se usa en una etapa S3715.
Cuando el numero de bloques calculado en la etapa S3711 es “2”, se usa un vector de movimiento que se corresponde con un valor medio de los tres vectores de movimiento se usa en una etapa S3716, suponiendo que un bloque que no contenga el segundo mdice de referencia Ridxl contenga un vector de movimiento de MV = 0 del segundo mdice de referencia Ridxl.
Cuando el numero de bloques calculado en la etapa S3711 es “3”, un vector de movimiento que se corresponde con un valor medio de tres vectores de movimiento se usa en una etapa S3717. Observese que la compensacion de movimiento en la etapa S3714 se puede llevar a cabo bidireccionalmente usando un vector de movimiento. En el presente caso, la compensacion de movimiento bidireccional se puede llevar a cabo despues de calcular un vector de movimiento en la misma direccion que un vector de movimiento y un vector de movimiento en la direccion opuesta a un vector de movimiento, por ejemplo, mediante el ajuste de escala de un vector de movimiento, o se puede llevar a cabo usando un vector de movimiento en la misma direccion que un vector de movimiento y un vector de movimiento de “0”.
Observese que las figuras 34Ay 34B se explican respectivamente, pero se pueden usar ambos procedimientos o se puede usar uno de los procedimientos. No obstante, cuando uno de estos procedimientos se usa, por ejemplo, cuando se usa un proceso que se inicio a partir de la etapa 3704 que se muestra en la figura 34A y se usa un proceso hasta la etapa S3704, se puede usar un proceso despues de la etapa S3711 que se muestra en la figura 34B. Cuando se usa un proceso hasta la etapa S3704, debido a que un proceso despues de la etapa S3712 no se usa, un vector de movimiento puede determinarse de forma unica. Cuando se usan ambos procesos de las figuras 34A y 34B, cualquier proceso se puede usar en primer lugar, o los dos procesos se pueden usar juntos. Cuando un bloque en la zona adyacente de un bloque actual que se va a codificar se codifica en el modo directo, se puede suponer que un mdice de referencia al que hace referencia un vector de movimiento usado para codificar el bloque codificado en el modo directo este contenido en un bloque codificado en el modo directo y situado en el adyacente de un bloque actual que se va a codificar.
La explicacion detallada de un procedimiento para determinar un vector de movimiento se dara a continuacion usando ejemplos concretos de un bloque. La figura 35 es una ilustracion que muestra tipos de vectores de movimiento contenidos en cada bloque al que hace referencia un bloque actual BL1 que se va a codificar. En la figura 35A, un bloque que contiene un pixel A es un bloque entre imagenes codificado, y un bloque que contiene un pixel B incluye un vector de movimiento y la compensacion de movimiento se lleva a cabo para el bloque usando un vector de movimiento, y un bloque que contiene un pixel C es un bloque que incluye dos vectores de movimiento y la compensacion de movimiento se lleva a cabo bidireccionalmente. El bloque que contiene el pixel B contiene un vector de movimiento indicado por el segundo mdice de referencia Ridxl. Debido a que el bloque que contiene el pixel A es un bloque que se va a codificar entre imagenes, no contiene un vector de movimiento. Dicho de otra forma, tampoco contiene un mdice de referencia.
En la etapa S3701, se calcula el numero de bloques que contienen el primer mdice de referencia Ridx0. Tal como se muestra en la figura 35, debido a que el numero de bloques que contienen el primer mdice de referencia Ridx0 es 2, suponiendo que un bloque que no contuviera el primer mdice de referencia Ridx0 contuviera un vector de movimiento de MV = 0 del primer mdice de referencia Ridx0, un vector de movimiento que se corresponda con un valor medio de los tres vectores de movimiento se usa en una etapa S3706. La compensacion de movimiento bidireccional se puede llevar a cabo para un bloque actual que se va a codificar usando solo el vector de movimiento anterior, o puede llevarse a cabo usando el segundo mdice de referencia Ridxl y otro vector de movimiento tal como se muestra en lo sucesivo.
En la etapa S3711, se calcula el numero de bloques que contienen el segundo mdice de referencia Ridxl. Tal como se muestra en la figura 35, debido a que el numero de bloques que contienen el segundo mdice de referencia Ridxl es 1, un vector de movimiento que contiene el segundo mdice de referencia Ridxl se usa en la etapa S3715.
A continuacion se explica un ejemplo de otro procedimiento de calculo que combina los procedimientos de calculo que se han mencionado en lo que antecede. La figura 38 es una ilustracion que muestra un procedimiento para determinar un vector de movimiento de un bloque actual que se va a codificar usando valores de mdice de referencia mostrando una imagen a la que hace referencia un vector de movimiento contenido en los bloques que incluyen los
5
10
15
20
25
30
35
40
45
50
p^xeles A, B y C respectivamente. Las figuras 36A y 36B son ilustraciones que muestran un procedimiento para determinar un vector de movimiento basandose en el primer mdice de referencia RidxO, y las figuras 36C y 36D son ilustraciones que muestran un procedimiento para determinar un vector de movimiento basandose en el segundo mdice de referencia Ridxl. La figura 36A muestra un procedimiento basado en el primer mdice de referencia RidxO; por otro lado, la figura 36C muestra un procedimiento basado en el segundo mdice de referencia Ridxl. La figura 36B muestra un procedimiento basado en el primer mdice de referencia RidxO; por otro lado, la figura 36D muestra un procedimiento basado en el segundo mdice de referencia Ridxl. Por consiguiente, solo se explican en lo sucesivo las figuras 36A y 36B. Se empieza por la figura 36A.
En una etapa S3801, se evalua si se puede seleccionar el primer mdice de referencia mas pequeno RidxO de los primeros indices de referencia RidxOs efectivos.
Cuando es posible seleccionar el primer mdice de referencia RidxO mas pequeno de los primeros indices de referencia RidxOs efectivos, se usa el vector de movimiento seleccionado en la etapa S3802.
Cuando los primeros indices de referencia RidxOs efectivos incluyen los varios indices de referencia mas pequenos RidxOs, en la etapa S38O1, se usa un vector de movimiento contenido en un bloque seleccionado por prioridad en una etapa S38O3. En el presente caso, la prioridad, por ejemplo, determina un vector de movimiento que se va a usar para la compensacion de movimiento de un bloque actual que se va a codificar en orden alfabetico de los pfxeles contenidos en los bloques.
Cuando no existe un primer mdice de referencia RidxO efectivo en la etapa S38O1, se usa un proceso que es diferente de las etapas S38O2 y S38O3 en una etapa S38O4. Por ejemplo, se puede usar un proceso despues de una etapa 53711 que se explica en la figura 34B. A continuacion, se explica la figura 36B. El punto diferente entre las figuras 36A y 36B es que un proceso en las etapas S38O3 y S38O4 en la figura 36A es cambiado por una etapa S3813 en la figura 36B.
En una etapa S3811, se evalua si se puede seleccionar el primer mdice de referencia RidxO mas pequeno de los primeros indices de referencia RidxOs efectivos.
Cuando es posible seleccionar el primer mdice de referencia RidxO mas pequeno de los primeros indices de referencia RidxOs efectivos, se usa el vector de movimiento seleccionado en la etapa S3812.
Cuando no hay primer mdice de referencia RidxO efectivo en la etapa S3811, se usa un proceso que es diferente de S3812 en la etapa S3813. Por ejemplo, se puede usar un proceso despues de una etapa S3711 que se explica en la figura 34B.
Observese que el primer mdice de referencia RidxO efectivo que se ha mencionado en lo que antecede es indicado por “O” en la figura 35B, y es un mdice de referencia que muestra que tiene un vector de movimiento. En la figura 35B, los lugares en los cuales “x” esta escrito indican que no estan asignados indices de referencia. En una etapa S3824 de la figura 36C y en una etapa S3833 de la figura 36D, se puede usar un proceso despues de la etapa S37O1 que se explica en la figura 34A.
A continuacion se dara una explicacion detallada del procedimiento para determinar un vector de movimiento usando ejemplos concretos de un bloque y la figura 35.
En una etapa S38O1, se evalua si se puede seleccionar el primer mdice de referencia RidxO mas pequeno de los primeros indices de referencia RidxOs efectivos.
En el caso que se muestra en la figura 35, hay dos primeros indices de referencia RidxO efectivos; no obstante, cuando es posible seleccionar un primer mdice de referencia RidxO mas pequeno de primeros indices de referencia RidxOs efectivos en la etapa S38O1, se usa un vector de movimiento seleccionado en la etapa S38O2.
Cuando los primeros indices de referencia RidxOs efectivos incluyen los varios indices de referencia RidxOs mas pequenos en la etapa S38O1, se usa un vector contenido en un bloque seleccionado por prioridad en una etapa S38O3. En el presente caso, la prioridad, por ejemplo, determina un vector de movimiento que se va a usar para la compensacion de movimiento de un bloque actual que se va a codificar en orden alfabetico de los pfxeles contenidos en los bloques. Cuando los bloques que incluyen los pfxeles B y C contienen respectivamente el mismo primer mdice de referencia RidxO, el primer mdice de referencia RidxO del bloque que incluye el pixel B es empleado por la prioridad, y la compensacion de movimiento se lleva a cabo para un bloque BL1 actual que se va a codificar usando un vector de movimiento que se corresponda con el primer mdice de referencia RidxO del bloque que contenga el pixel B. En este caso, la compensacion de movimiento puede llevarse a cabo para el bloque BL1 actual que se va a codificar bidireccionalmente usando solo el vector de movimiento determinado, o se puede llevar a cabo usando el segundo mdice de referencia Ridxl y otro vector de movimiento tal como se muestra en lo sucesivo.
En una etapa S3821, se evalua si se puede seleccionar el segundo mdice de referencia Ridxl mas pequeno de segundos indices de referencia Ridxls efectivos.
5
10
15
20
25
30
35
40
45
50
55
En el caso que se muestra en la figura 35, debido a que el segundo mdice de referencia Ridxl efectivo es uno, se usa un vector de movimiento que se corresponde con el segundo mdice de referencia Ridx1 de un bloque que contiene el pixel C en una etapa S3822.
Observese que en la explicacion anterior, en cuanto al bloque que no contiene indices de referencia, suponiendo que el bloque contenga un vector de movimiento de “0”, se selecciona un valor medio de los tres vectores de movimiento; no obstante, suponiendo que el bloque contenga un vector de movimiento de “0”, se selecciona un valor promedio de tres vectores, o un valor promedio de vectores de movimiento de bloques que contengan indices de referencia se puede seleccionar.
Observese que un vector de movimiento usado para la compensacion de movimiento de un bloque actual que se va a codificar se puede determinar por prioridad de forma diferentes a lo que se ha explicado en lo que antecede, por ejemplo, en orden de pfxeles B - A - C, los cuales estan contenidos en bloques.
De esta manera, a traves de determinar un vector de movimiento usado para la compensacion de movimiento de un bloque actual que se va a codificar mediante el uso de un mdice de referencia, un vector de movimiento se puede determinar de forma unica. Ademas, de acuerdo con el ejemplo que se ha mencionado en lo que antecede, la eficiencia de codificacion se puede mejorar. Ademas, debido a que no es necesario evaluar si un vector de movimiento es una referencia hacia delante o una referencia hacia atras usando informacion de tiempo, es posible simplificar un proceso para determinar un vector de movimiento. Cuando se trata de un modo de prediccion para cada bloque y un vector de movimiento usado para la compensacion de movimiento o similar, existen demasiados patrones, no obstante, tal como se ha mencionado en lo que antecede debido a que un proceso se lleva a cabo por una serie de flujos, es util.
Observese que en la presente realizacion se explica el caso en el que se calcula un vector de movimiento usado en el modo directo mediante el ajuste de escala de un vector de movimiento al que se hace referencia usando un intervalo de tiempo entre imagenes; no obstante, un calculo puede llevarse a cabo al multiplicar por un numero constante. En el presente caso, una constante usada para la multiplicacion puede ser variable cuando se lleve a cabo la codificacion o descodificacion de una forma por varios bloques o de una forma por varias imagenes. Observese que un procedimiento de calculo usando indices de referencia RidxO y Ridxl no solo es un procedimiento que usa un valor medio, y que los procedimientos de calculo pueden combinarse con otros procedimientos de calculo. Por ejemplo, en el tercer procedimiento de calculo que se ha mencionado en lo que antecede, cuando los vectores de movimiento contenidos en bloques que tienen pfxeles A, B y C que hacen referencia respectivamente a una misma imagen de la cual el mdice de referencia es el mas pequeno son varios, no es necesario calcular un valor medio de estos vectores de movimiento, y un vector de movimiento obtenido a partir de promediar estos vectores de movimiento se puede usar como un vector de movimiento del bloque BL1 usado en el modo directo. O, por ejemplo, un vector de movimiento del cual la eficiencia de codificacion sea la mas alta puede seleccionarse a partir de varios vectores de movimiento con los indices de referencia mas pequenos.
Ademas, un vector de movimiento hacia delante y un vector de movimiento hacia atras del bloque BL1 se puede calcular de forma independiente o dependiente. Por ejemplo, un vector de movimiento hacia delante y un vector de movimiento hacia atras se pueden calcular a partir de un mismo vector de movimiento.
Por otro lado, cualquiera de un vector de movimiento hacia delante o un vector de movimiento hacia atras obtenidos ambos a partir del calculo se puede usar como un vector de movimiento del bloque BL1.
(Octava realizacion)
En la presente realizacion, un bloque de referencia MB en una imagen de referencia contiene un vector de movimiento hacia delante (el primero) que hace referencia a una imagen de referencia almacenada en la memoria de almacenamiento intermedio de imagenes a largo plazo como la primera imagen de referencia y un vector de movimiento hacia atras (el segundo) que hace referencia a una imagen almacenada en la memoria de almacenamiento intermedio de imagenes a corto plazo como la segunda imagen de referencia.
La figura 37 es una ilustracion que muestra una bi-prediccion en el modo directo cuando solo una imagen de referencia esta almacenada en la memoria de almacenamiento intermedio de imagenes a largo plazo.
El punto diferente de la octava realizacion de las realizaciones que se han mencionado en lo que antecede es que un vector de movimiento hacia delante MV21 de un bloque MB2 en una imagen de referencia hace referencia a una imagen de referencia almacenada en la memoria de almacenamiento intermedio de imagenes a largo plazo.
La memoria de almacenamiento intermedio de imagenes a corto plazo es una memoria de almacenamiento intermedio para almacenar imagenes de referencia temporalmente, y, por ejemplo, las imagenes se almacenan en un orden en el cual las imagenes se almacenan en una memoria de almacenamiento intermedio (es decir, orden de codificacion/descodificacion). Cuando las imagenes son recien almacenadas en la memoria de almacenamiento intermedio y no hay capacidad de almacenamiento suficiente, las imagenes son eliminadas de una imagen almacenada mas previamente en la memoria de almacenamiento intermedio.
5
10
15
20
25
30
35
40
45
50
55
En la memoria de almacenamiento intermedio de imagenes a largo plazo, las imagenes no siempre se almacenan en la memoria de almacenamiento intermedio de imagenes a largo plazo en orden de tiempo como en la memoria de almacenamiento intermedio de imagenes a corto plazo. Por ejemplo, como un orden de almacenar imagenes, se puede corresponder el orden de tiempo de las imagenes, y se puede corresponder el orden de direcciones en una memoria de almacenamiento intermedio en el cual las imagenes se almacenen. Por lo tanto, es imposible realizar el ajuste de escala de un vector de movimiento MV21 que haga referencia a una imagen almacenada en la memoria de almacenamiento intermedio de imagenes a largo plazo basandose en un intervalo de tiempo.
Una memoria de almacenamiento intermedio de imagenes a largo plazo no es para almacenar una imagen de referencia temporalmente como en la memoria de almacenamiento intermedio de imagenes a corto plazo, sino para almacenar una imagen de referencia continuamente. Por lo tanto, un intervalo de tiempo que se corresponda con un vector de movimiento almacenado en la memoria de almacenamiento intermedio de imagenes a largo plazo es mucho mas amplio que un intervalo de tiempo que se corresponde con un vector de movimiento almacenado en la memoria de almacenamiento intermedio de imagenes a corto plazo.
En la figura 37, un lfmite entre la memoria de almacenamiento intermedio de imagenes a largo plazo y la memoria de almacenamiento intermedio de imagenes a corto plazo se indica por una lmea vertical punteada tal como se muestra en la figura, y la informacion acerca de las imagenes en el lado izquierdo de la lmea vertical punteada se almacena en la memoria de almacenamiento intermedio de imagenes a largo plazo, y la informacion acerca de imagenes en el lado derecho de la lmea vertical punteada se almacena en la memoria de almacenamiento intermedio de imagenes a corto plazo. En el presente caso, un bloque MB1 en una imagen P23 es un bloque actual. Un bloque MB2 es un bloque de referencia co-situado del bloque MB1 en una imagen P24. Un vector de movimiento hacia delante MV21 del bloque MB2 en la imagen de referencia P24 es el primer vector de movimiento que hace referencia a una imagen P21 almacenada en la memoria de almacenamiento intermedio de imagenes a largo plazo como la primera imagen de referencia, y un vector de movimiento hacia atras MV25 del bloque MB2 en la imagen de referencia P24 es el segundo vector de movimiento que hace referencia a una imagen P25 almacenada en la memoria de almacenamiento intermedio de imagenes a corto plazo como la segunda imagen de referencia.
Tal como se ha mencionado en lo que antecede, un intervalo de tiempo TR21 entre las imagenes P21 y P24 se corresponde con un vector de movimiento hacia delante MV21 que hace referencia a una imagen almacenada en la memoria de almacenamiento intermedio de imagenes a largo plazo, un intervalo de tiempo TR25 entre las imagenes P24 y P25 se corresponde con un vector de movimiento hacia atras MV25 que hace referencia a una imagen almacenada en la memoria de almacenamiento intermedio de imagenes a corto plazo, y el intervalo de tiempo TR21 entre las imagenes P21 y P24 puede hacerse mucho mas amplio que el intervalo de tiempo TR25 entre las imagenes P24 y P25 o puede ser indefinido.
Por lo tanto, un vector de movimiento del bloque MB1 en la imagen actual P23 no se calcula mediante el ajuste de escala de un vector de movimiento del bloque MB2 en la imagen de referencia P24 como realizaciones anteriores, sino que el vector de movimiento se calcula usando el siguiente procedimiento.
MV21 = MV21'
MV24' = 0
La ecuacion superior muestra que el primer vector de movimiento MV21 almacenado en la memoria de almacenamiento intermedio de imagenes a largo plazo se usa directamente como el primer vector de movimiento MV21' en una imagen actual.
La ecuacion inferior muestra que, debido a que el segundo vector de movimiento MV24', el cual hace referencia a la imagen 24 almacenada en la memoria de almacenamiento intermedio de imagenes a corto plazo del bloque MB1 en la imagen actual para la imagen P23 es suficientemente mas pequeno que el primer vector de movimiento MV21', MV24' es despreciable. El segundo vector de movimiento MV24' se trata como “0”.
Tal como se ha descrito en lo que antecede, un bloque de referencia MB contiene un vector de movimiento que hace referencia a una imagen de referencia almacenada en la memoria de almacenamiento intermedio de imagenes a largo plazo como la primera imagen de referencia; y un vector de movimiento que hace referencia a una imagen de referencia almacenada en la memoria de almacenamiento intermedio de imagenes a corto plazo como la segunda imagen de referencia. En este caso, la bi-prediccion se lleva a cabo usando el vector de movimiento almacenado en la memoria de almacenamiento intermedio de imagenes a largo plazo de entre vectores de movimiento del bloque en la imagen de referencia directamente como un vector de movimiento de un bloque en una imagen actual.
Observese que una imagen de referencia almacenada en la memoria de almacenamiento intermedio de imagenes a largo plazo puede ser o bien la primera imagen de referencia o bien la segunda imagen de referencia, y un vector de movimiento MV21 que haga referencia a una imagen de referencia almacenada en la memoria de almacenamiento intermedio de imagenes a largo plazo puede ser un vector de movimiento hacia atras. Ademas, cuando la segunda imagen de referencia se almacena en la memoria de almacenamiento intermedio de imagenes a largo plazo y la primera imagen de referencia se almacena en la memoria de almacenamiento intermedio de imagenes a corto plazo, un vector de movimiento en una imagen actual se calcula mediante el ajuste de escala de un vector de movimiento
5
10
15
20
25
30
35
40
45
50
que hace referencia a la primera imagen de referencia.
Esto hace posible llevara cabo la bi-prediccion sin usartiempo que sea considerablemente grande en la memoria de almacenamiento intermedio de imagenes a largo plazo o indefinido.
Observese que la bi-prediccion puede llevarse a cabo no directamente usando un vector de movimiento al que se hace referencia, sino usando un vector de movimiento al multiplicar por un numero constante.
Ademas, una constante usada para la multiplicacion puede ser variable cuando se lleve a cabo la descodificacion o codificacion de una forma por varios bloques o de una forma por varias imagenes.
(Novena realizacion)
En la presente realizacion se muestra la bi-prediccion en el modo directo. En este caso, un bloque de referencia MB en una imagen de referencia contiene dos vectores de movimiento hacia delante que hacen referencia a una imagen de referencia almacenada en una memoria de almacenamiento intermedio de imagenes a largo plazo.
La figura 38 es una ilustracion que muestra la bi-prediccion en el modo directo cuando un bloque de referencia MB en una imagen de referencia contiene dos vectores de movimiento hacia delante que hacen referencia a una imagen de referencia almacenada en la memoria de almacenamiento intermedio de imagenes a largo plazo.
El punto diferente de la novena realizacion respecto a la octava realizacion es que ambos vectores de movimiento MV21 y MV22 de un bloque MB2 en una imagen de referencia hacen referencia a una imagen almacenada en la memoria de almacenamiento intermedio de imagenes a largo plazo.
En la figura 38, un lfmite entre la memoria de almacenamiento intermedio de imagenes a largo plazo y la memoria de almacenamiento intermedio de imagenes a corto plazo es indicado por una lmea vertical punteada como la que se muestra en la figura, y la informacion acerca de las imagenes en el lado izquierdo de la lmea vertical punteada se almacena en la memoria de almacenamiento intermedio de imagenes a largo plazo y la informacion acerca de las imagenes en el lado derecho de la lmea vertical punteada se almacena en la memoria de almacenamiento intermedio de imagenes a corto plazo. Los vectores de movimiento MV21 y MV22 del bloque MB2 en una imagen de referencia P24 hacen referencia ambos a una imagen almacenada en la memoria de almacenamiento intermedio de imagenes a largo plazo. El vector de movimiento MV21 se corresponde con una imagen de referencia P21, y el vector de movimiento MV22 se corresponde con una imagen de referencia P22.
Un intervalo de tiempo TR22 entre las imagenes P22 y P24 se puede hacer mucho mas amplio que el intervalo de tiempo TR25 entre las imagenes P24 y P25 o puede ser indefinido correspondiendo al vector de movimiento MV22 que hace referencia a la imagen P22 almacenada en la memoria de almacenamiento intermedio de imagenes a largo plazo.
En la figura 38, las imagenes se almacenan en orden de imagenes P22 - P21 en ese orden en la memoria de almacenamiento intermedio de imagenes a largo plazo. En el presente caso, la imagen P21 se corresponde con un vector de movimiento MV21 y la imagen P22 se corresponde con un vector de movimiento MV22. En la figura 38, un vector de movimiento de un bloque MB1 en una imagen actual se calcula tal como sigue.
MV22' = MV22
MV24' = 0
La ecuacion superior muestra que un vector de movimiento MV22 que hace referencia a una imagen P22 a la cual se le asigna el orden mas pequeno se usa directamente como un vector de movimiento MV22' del bloque MB1 en una imagen actual P23.
La ecuacion inferior muestra que, debido a que el vector de movimiento hacia atras MV24' del bloque MB1 en la imagen actual P23 almacenada en la memoria de almacenamiento intermedio de imagenes a corto plazo es suficientemente mas pequeno que el vector de movimiento MV21', MV24' es despreciable. El vector de movimiento hacia atras MV24' es tratado como “0”.
Tal como se ha descrito en lo que antecede, al usar directamente un vector de movimiento que haga referencia a una imagen a la cual se le asigne el orden mas pequeno de vectores de movimiento de un bloque en una imagen de referencia almacenada en la memoria de almacenamiento intermedio de imagenes a largo plazo, la bi-prediccion puede hacerse sin usartiempo que sea considerablemente grande en la memoria de almacenamiento intermedio de imagenes a largo plazo o indefinido.
Observese que la bi-prediccion puede hacerse no directamente usando un vector de movimiento al que se hace referencia, sino usando un vector de movimiento multiplicando por un numero constante.
Ademas, una constante usada para la multiplicacion puede ser variable cuando se lleve a cabo la codificacion o descodificacion de una forma por varios bloques o de una forma por varias imagenes.
5
10
15
20
25
30
35
40
45
50
55
Ademas, cuando los vectores de movimiento MV21 y MV22 del bloque MB2 en una imagen de referencia hacen referencia ambos a una imagen almacenada en la memoria de almacenamiento intermedio de imagenes a largo plazo, se puede seleccionar un vector de movimiento que haga referencia a la primera imagen de referencia. Por ejemplo, cuando MV21 es un vector de movimiento que hace referencia a la primera imagen de referencia y MV22 es un vector de movimiento que haga referencia a la segunda imagen de referencia, el vector de movimiento MV21 que hace referencia a una imagen P21 y un vector de movimiento “0” que hace referencia a una imagen P24 se usan como vectores de movimiento de un bloque MB1.
(Decima realizacion)
En la presente realizacion se explica un procedimiento de calculo de un vector de movimiento en el modo directo que se muestra en la quinta realizacion a la novena realizacion. Este procedimiento de calculo de un vector de movimiento se aplica a cualquiera de codificacion y descodificacion de una imagen. En el presente caso, un bloque actual que se va a codificar o descodificar se denomina bloque MB actual. Un bloque co-situado del bloque Mb actual en una imagen de referencia se denomina bloque de referencia.
La figura 39 es una ilustracion que muestra un flujo de proceso de un procedimiento de calculo de vectores de movimiento de la presente realizacion.
En primer lugar, se evalua si un bloque de referencia MB en una imagen de referencia hacia atras a la que hace referencia un bloque MB actual contiene un vector de movimiento (la etapa S1). Si el bloque de referencia MB no contiene un vector de movimiento (No en la etapa S1), se lleva a cabo la bi-prediccion suponiendo que un vector de movimiento sea “0” (la etapa S2) y se completa un proceso para un calculo de vectores de movimiento.
Si el bloque de referencia MB contiene un vector de movimiento (Sf en la etapa S1), se evalua si el bloque de referencia contiene un vector de movimiento hacia delante (la etapa S3).
Si el bloque de referencia no contiene un vector de movimiento hacia delante (No en la etapa S3), debido a que el bloque de referencia MB contiene solo un vector de movimiento hacia atras, se evalua el numero de vectores de movimiento hacia atras (la etapa S14). Cuando el numero de vectores de movimiento hacia atras del bloque de referencia MB es “2”, se lleva a cabo la bi-prediccion usando dos vectores de movimiento hacia atras ajustados a escala basandose en uno de los procedimientos de calculo que se mencionan en las figuras 17, 18, 19 y 20.
Por otro lado, cuando el numero de vectores de movimiento hacia atras del bloque de referencia MB es “1”, el unico vector de movimiento hacia atras contenido en el bloque de referencia MB se ajusta a escala y la compensacion de movimiento se lleva a cabo usando el vector de movimiento hacia atras ajustado a escala (la etapa S16). Despues de completar la bi-prediccion en la etapa S15 o S16, se completa un proceso del procedimiento de calculo de vectores de movimiento.
Por otro lado, si el bloque de referencia MB contiene un vector de movimiento hacia delante (Sf en la etapa S3), se evalua el numero de vectores de movimiento hacia delante del bloque de referencia MB (la etapa S4).
Cuando el numero de vectores de movimiento hacia delante del bloque de referencia MB es “1”, se evalua si una imagen de referencia que se corresponde con el vector de movimiento hacia delante del bloque de referencia MB esta almacenada en la memoria de almacenamiento intermedio de imagenes a largo plazo o la memoria de almacenamiento intermedio de imagenes a corto plazo (la etapa S5).
Cuando la imagen de referencia que se corresponde con el vector de movimiento hacia delante del bloque de referencia MB esta almacenada en la memoria de almacenamiento intermedio de imagenes a corto plazo, el vector de movimiento hacia delante del bloque de referencia MB se ajusta a escala y la bi-prediccion se lleva a cabo usando el vector de movimiento hacia delante ajustado a escala (la etapa S6).
Cuando la imagen de referencia que se corresponde con el vector de movimiento hacia delante del bloque de referencia MB esta almacenada en la memoria de almacenamiento intermedio de imagenes a largo plazo, se lleva a cabo la bi-prediccion basandose en el procedimiento de calculo de vectores de movimiento que se muestra en la figura 37 suponiendo que un vector de movimiento hacia atras sea 0 y usando el vector de movimiento hacia delante del bloque de referencia MB directamente sin ajuste de escala (la etapa S7). Despues de completar la bi-prediccion en la etapa S6 o S7, se completa un proceso del procedimiento de calculo de vectores de movimiento.
Cuando el numero de vectores de movimiento hacia delante del bloque de referencia MB es “2”, se evalua el numero de vectores de movimiento hacia delante que se corresponde con una imagen de referencia almacenada en la memoria de almacenamiento intermedio de imagenes a largo plazo (la etapa S8).
Cuando el numero de vectores de movimiento hacia delante que se corresponden con una imagen de referencia almacenada en la memoria de almacenamiento intermedio de imagenes a largo plazo es “0” en la etapa S8, un vector de movimiento que es temporalmente cercano a una imagen actual que contiene el bloque MB actual se ajusta a escala, y la bi-prediccion se lleva a cabo usando el vector de movimiento hacia delante ajustado a escala basandose en el procedimiento de calculo de vectores de movimiento que se muestra en la figura 14 (la etapa S9).
5
10
15
20
25
30
35
40
45
50
55
60
Cuando el numero de vectores de movimiento hacia delante que se corresponden con una imagen de referencia almacenada en la memoria de almacenamiento intermedio de imagenes a largo plazo es “1” en la etapa S8, un vector de movimiento en una imagen almacenada en la memoria de almacenamiento intermedio de imagenes a corto plazo se ajusta a escala, y la bi-prediccion se lleva a cabo usando el vector de movimiento ajustado a escala (la etapa S10).
Cuando el numero de vectores de movimiento hacia delante que se corresponden con una imagen de referencia almacenados en la memoria de almacenamiento intermedio de imagenes a largo plazo es “2” en la etapa S8, se evalua si se hace referencia a una misma imagen en la memoria de almacenamiento intermedio de imagenes a largo plazo por ambos de dos vectores de movimiento hacia delante (la etapa S11). Si se hace referencia a la misma imagen en la memoria de almacenamiento intermedio de imagenes a largo plazo por ambos de los vectores de movimiento hacia delante (Sf en la etapa S11), se lleva a cabo la bi-prediccion usando un vector de movimiento codificado o descodificado previamente en la imagen a la que hacen referencia dos vectores de movimiento hacia delante en la memoria de almacenamiento intermedio de imagenes a largo plazo basandose en el procedimiento de calculo de vectores de movimiento que se muestra en la figura 13 (la etapa Sl2).
Si no se hace referencia a una misma imagen en la memoria de almacenamiento intermedio de imagenes a largo plazo por ambos de dos vectores de movimiento hacia delante (No en la etapa S11), se lleva a cabo la bi-prediccion usando un vector de movimiento hacia delante que se corresponda con una imagen a la cual se le asigne un orden pequeno en la memoria de almacenamiento intermedio de imagenes a largo plazo (la etapa S13). En la memoria de almacenamiento intermedio de imagenes a largo plazo, debido a que las imagenes de referencia se almacenan sin importar el tiempo real de las imagenes, un vector de movimiento hacia delante que se va a usar para la bi- prediccion se selecciona de acuerdo con un orden asignado a cada imagen de referencia. Existe un caso en el que el orden de las imagenes de referencia almacenadas en la memoria de almacenamiento intermedio de imagenes a largo plazo coincide con el tiempo de las imagenes, no obstante, esto puede ser una simple coincidencia con una direccion en la memoria de almacenamiento intermedio. Dicho de otra forma, el orden de las imagenes almacenadas en la memoria de almacenamiento intermedio de imagenes a largo plazo no necesariamente tiene que coincidir con el tiempo de las imagenes. Despues de completar la bi-prediccion en las etapas S12 y S13, el proceso del procedimiento de calculo de vectores de movimiento es completado.
(Undecima realizacion)
La explicacion detallada de la undecima realizacion de acuerdo con la presente invencion se dara a continuacion usando ilustraciones.
La figura 40 es un diagrama de bloques que muestra una configuracion de un aparato de codificacion de imagenes en movimiento 1100 de acuerdo con la undecima realizacion de la presente invencion. El aparato de codificacion de imagenes en movimiento 1100 es un aparato que puede codificar imagenes en movimiento mediante la aplicacion de un procedimiento de prediccion espacial en el modo directo incluso si se mezclan un bloque codificado en una estructura de campo y un bloque codificado en una estructura detrama, e incluye una memoria detramas 1101, una unidad de calculo de diferencias 1102, una unidad de codificacion de diferencia predictiva 1103, una unidad de generacion de flujos de bits 1104, una unidad de descodificacion de diferencia predictiva 1105, una unidad de operacion de adicion 1106, una memoria detramas 1107, una unidad de deteccion de vectores de movimiento 1108, una unidad de seleccion de modo 1109, una unidad de control de codificacion 110, un conmutador 1111, un conmutador 1112, un conmutador 1113, un conmutador 1114, un conmutador 1115 y una unidad de almacenamiento de vectores de movimiento 1116.
La memoria de tramas 1101 es una memoria de imagenes que almacena imagenes introducidas de una forma por imagenes. La unidad de calculo de diferencias 1102 calcula el error de prediccion, que es una diferencia entre una imagen introducida de la memoria de tramas 1101 y una imagen de referencia obtenida de una imagen descodificada basandose en un vector de movimiento, y la envfa. La unidad de codificacion de diferencias de prediccion 1103 lleva a cabo la conversion de frecuencia para el error de prediccion obtenido en la unidad de calculo de diferencias 1102, lo cuantifica y lo envfa. La unidad de generacion de flujos de bits 1104 se convierte en un formato de flujo de bits codificado de salida despues de llevar a cabo la codificacion de longitud variable del resultado codificado a partir de la unidad de codificacion de diferencia predictiva 1103, y genera un flujo de bits que anade informacion adicional tal como informacion de encabezado en la cual se describe la informacion relacionada sobre el error de prediccion codificado. La unidad de descodificacion de diferencia predictiva 1105 lleva a cabo la codificacion de longitud variable y la cuantificacion inversa del resultado codificado a partir de la unidad de codificacion de diferencia predictiva 1103, y despues de eso lleva a cabo la conversion de frecuencia inversa tal como una conversion IDCT despues de llevar a cabo, y descodifica el resultado codificado para enviar residual predictivo. La unidad de operacion de adicion 1106 anade un residual predictivo como un resultado descodificado, a la imagen de referencia que se ha mencionado en lo que antecede, y emite una imagen de referencia que muestra una misma imagen como una imagen introducida por datos de imagen codificados y descodificados. La memoria de tramas 1107 es una memoria de imagenes que almacena imagenes de referencia de una forma por imagenes.
La unidad de deteccion de vectores de movimiento 1108 obtiene un vector de movimiento para cada codificacion de una trama actual que se va a codificar. La unidad de seleccion de modo 1109 selecciona si el calculo de un vector
5
10
15
20
25
30
35
40
45
50
55
60
de movimiento se lleva a cabo en el modo directo o en otro modo. La unidad de control de codificacion 1110 reordena las imagenes introducidas almacenadas en la memoria de tramas 1101 en orden de entrada a orden de codificacion. Ademas, la unidad de control de codificacion 1110 evalua cual de una estructura de campo o una estructura de trama se usa para codificar para cada tamano predeterminado de una trama actual que se va a codificar. En el presente caso, el tamano predeterminado es un tamano de dos macrobloques (por ejemplo, 16 pfxeles (horizontales) x 16 pfxeles (verticales) combinados verticalmente (en lo sucesivo en el presente documento, par de macrobloques). Si se usa una estructura de campo para la codificacion, un valor de pixel se lee cada dos imeas de escaneo horizontal que se corresponden con entrelazado de la memoria de tramas 1101, si se usa una forma por tramas para la codificacion, cada valor de pixel en la imagen introducida se lee secuencialmente de la memoria de tramas 1101 y cada valor de pixel lefdo se coloca en la memoria para configurar de esta manera un par de macrobloques actual que se va a codificar que se corresponda con la estructura de campo o la estructura de trama. La unidad de almacenamiento de vectores de movimiento 1116 almacena un vector de movimiento de un macrobloque codificado e indices de referencia de tramas a los que hace referencia el vector de movimiento. Los indices de referencia se almacenan para cada macrobloque de pares de macrobloques codificados.
A continuacion se explica la operacion del aparato de codificacion de imagenes en movimiento configurado tal como se ha mencionado en lo que antecede. Las imagenes que seran introducidas se introducen en la memoria de tramas 1101 de una forma por imagenes en orden de tiempo. La figura 41A es una ilustracion que muestra un orden de tramas introducidas en el aparato de codificacion de imagenes en movimiento 100 de una forma por imagenes en orden de tiempo. La figura 41B es una ilustracion que muestra un orden de imagenes que reordena el orden de las imagenes que se muestran en la figura 41A a orden de codificacion. En la figura 41A, las lmeas verticales indican imagenes, y el numero indicado en el lado derecho inferior de cada imagen muestra los tipos de imagen (I, P y B) con las primeras letras del alfabeto y los numeros de imagen en orden de tiempo con numeros siguientes. La figura 42 es una ilustracion que muestra una estructura de una lista de tramas de referencia 300 para explicar la undecima realizacion. Cada imagen introducida en la memoria de tramas 1101 se reordena en orden de codificacion por la unidad de control de codificacion 1110. Las imagenes se reordenan en orden de codificacion basandose en la relacion de referencia de una codificacion de prediccion entre imagenes, y en el orden de codificacion, una imagen usada como una imagen de referencia se codifica anteriormente a una imagen que haga referencia a una imagen.
Por ejemplo, se supone que una imagen P usa una de tres imagenes I o P precedentes y adyacentes como una imagen de referencia. Por otro lado, se supone que una imagen B usa una de tres imagenes I o P precedentes y adyacentes, y una de imagenes I o P siguientes y adyacentes como una imagen de referencia. En concreto, una imagen P7 que se introduce despues de las imagenes B5 y B6 en la figura 41A se reordena y se coloca antes de las imagenes b5 y B6 debido a que se hace referencia a la imagen P7 por las imagenes B5 y B6. De forma similar, una imagen P10 introducida despues de las imagenes B8 y B9 se reordena y se coloca antes de las imagenes B8 y B9, y una imagen P13 introducida despues de las imagenes B11 y B12 se reordena y se coloca antes de las imagenes B11 y B12. Por consiguiente, el resultado de reordenar un orden de imagenes que se muestran en la figura 41A es tal como se muestra en la figura 41B.
Se supone que cada imagen reordenada por la memoria de tramas 1101 se lee de una forma por pares de macrobloques, y cada par de macrobloques tiene un tamano de 16 pfxeles (horizontales) x 16 pfxeles (verticales). En el presente caso, un par de macrobloques combina dos macrobloques verticalmente. Por lo tanto, un par de macrobloques tiene un tamano de 16 pfxeles (horizontales) x 32 pfxeles (verticales). Un proceso de codificacion de una imagen B11 se explica en lo sucesivo. Observese que en la presente realizacion se supone que la unidad de control de codificacion 1110 controla indices de referencia, es decir, una lista de tramas de referencia.
Debido a que la imagen B11 es una imagen B, se lleva a cabo la codificacion de prediccion entre imagenes usando referencia bidireccional. Se supone que la imagen B11 usa dos de las imagenes precedentes P10, P7, P4, y una imagen siguiente P13 como la imagen de referencia. Ademas, se supone que la seleccion de dos imagenes a partir de estas cuatro imagenes se puede especificar de una forma por macrobloques. En el presente caso, se supone que los indices de referencia se asignan usando un procedimiento de condicion inicial. Dicho de otra forma, una lista de tramas de referencia 300 durante la codificacion de la imagen B11 es como la que se muestra en la figura 42. En relacion a una imagen de referencia en este caso, la primera imagen de referencia es especificada por el primer mdice de referencia en la figura 42 y la segunda imagen de referencia es especificada por el segundo mdice de referencia.
En un proceso para la imagen B11, se supone que la unidad de control de codificacion 1110 controla el conmutador 1113 para que este encendido, y los conmutadores 1114 y 1115 para que esten apagados. Por lo tanto, un par de macrobloques en la imagen B11 lefdo de la memoria de tramas 1101 se introduce en la unidad de deteccion de vectores de movimiento 1108, la unidad de seleccion de modo 109 y la unidad de calculo de diferencias 1102. En la unidad de deteccion de vectores de movimiento 108, mediante el uso de datos descodificados de las imagenes P10, P7 y P4 almacenadas en la memoria de tramas 1107 como una imagen de referencia, se obtiene el primer vector de movimiento y el segundo vector de movimiento de cada macrobloque contenido en un par de macrobloques. En la unidad de seleccion de modo 1109, un modo de codificacion para un par de macrobloques se determina usando vectores de movimiento obtenidos en la unidad de deteccion de vectores de movimiento 1108. En el presente caso, se supone que el modo de codificacion para una imagen B se puede seleccionar de, por ejemplo, codificacion entre imagenes, codificacion de prediccion entre imagenes usando vectores de movimiento unidireccionales, codificacion
5
10
15
20
25
30
35
40
45
50
55
60
de prediccion entre imagenes usando vectores de movimiento bidireccionales y un modo directo. Cuando se seleccionan modos de codificacion que no son el modo directo, se determina cual de una estructura de trama o una estructura de campo se usa para codificar un par de macrobloques al mismo tiempo.
A continuacion, se explica un procedimiento de calculo de vectores de movimiento que usa un procedimiento de prediccion espacial en el modo directo. La figura 43A es una grafica de flujo que muestra un ejemplo de un procedimiento de calculo de vectores de movimiento usando un procedimiento de prediccion espacial en el modo directo cuando se mezclan un par de macrobloques que se va a codificar en una estructura de campo y un par de macrobloques que se va a codificar en una estructura de trama.
La figura 43B es una ilustracion que muestra un ejemplo de una ubicacion de pares de macrobloques adyacentes a los cuales se les aplica la presente invencion cuando un par de macrobloques actuales que se va a codificar se codifica en una estructura de trama. La figura 43C es una ilustracion que muestra un ejemplo de una ubicacion de pares de macrobloques adyacentes a los cuales se les aplica la presente invencion cuando un par de macrobloques actual que se va a codificar se codifica en una estructura de campo. Un par de macrobloques sombreado en diagonal en las figuras 43B y 43C es un par de macrobloques actual que se va a codificar.
Cuando un par de macrobloques actual que se va a codificar se codifica usando una prediccion espacial en el modo directo, se seleccionan tres pares de macrobloques codificados en el adyacente del par de macrobloques actual que se va a codificar. En este caso, el par de macrobloques actual se puede codificar en cualquiera de una estructura de campo y una estructura de trama. Por lo tanto, la unidad de control de codificacion 1110 determina, en primer lugar, cual de una estructura de campo o una estructura de trama se usa para codificar un par de macrobloques actual que se va a codificar. Por ejemplo, cuando el numero de pares de macrobloques adyacentes codificados en una estructura de campo es grande, un par de macrobloques actual se codifica en una estructura de campo, y si el numero de pares de macrobloques adyacentes codificados en una estructura de trama es grande, un par de macrobloques actual se codifica en una estructura de campo. De esta manera, mediante la determinacion de cual de una estructura de campo o una estructura de trama se usa para codificar un par de macrobloques actual que se va a codificar mediante el uso de informacion sobre bloques adyacentes, no es necesario describir informacion que muestre que estructura se usa para codificar un par de macrobloques actual que se va a codificar en un flujo de bits. Ademas, debido a que se predice una estructura de pares de macrobloques adyacentes, es posible seleccionar una estructura adecuada.
A continuacion, la unidad de deteccion de vectores de movimiento 1108 calcula un vector de movimiento de un par de macrobloques actual que se va a codificar de acuerdo con la determinacion del control de codificacion 1110. En primer lugar, la unidad de deteccion de vectores de movimiento 1108 revisa cual de una estructura de campo o una estructura de trama se determina para usarse para codificar por la unidad de control 110 (S301), y cuando se determina que la estructura de trama se va a usar para la codificacion, un vector de movimiento de un par de macrobloques actual que se va a codificar se obtiene usando la estructura de trama (S302), y cuando se determina que la estructura de campo se va a usar para la codificacion, un vector de movimiento del par de macrobloques actual que se va a codificar se obtiene usando la estructura de campo (S303).
La figura 44 es una ilustracion que muestra una configuracion de datos de un par de macrobloques cuando se lleva a cabo la codificacion usando una estructura de trama, y una configuracion de datos de un par de macrobloques cuando se lleva a cabo la codificacion usando una estructura de campo. En la figura 44, un cfrculo de color blanco indica un pixel en lmeas de escaneo horizontales de numeros nones, y un cfrculo de color negro sombreado con un patron de sombra de lmeas oblicuas indica un pixel en lmeas de escaneo horizontales de numeros pares. Cuando un par de macrobloques es cortado de cada trama que muestra una imagen introducida, los pfxeles en las lmeas de escaneo horizontales de numeros nones y los pfxeles en las lmeas de escaneo horizontales de numeros pares se colocan alternativamente en una direccion vertical tal como se muestra en la figura 44. Cuando el par de macrobloques que se ha mencionado en lo que antecede se codifica en la estructura de trama, se lleva a cabo un proceso cada macrobloque MB1 y cada macrobloque MB2 para el par de macrobloques, y un vector de movimiento se calcula para cada uno de los macrobloques MB1 y MB2 formando un par de macrobloques. Cuando el par de macrobloques se codifica en la estructura de campo, el par de macrobloques se divide en macrobloques TF y BF. En el presente caso, el macrobloque TF indica un campo superior y, entonces, el macrobloque BF indica un campo inferior cuando se entrelaza un par de macrobloques en una direccion de lmea de escaneo horizontal, y los dos campos forman un par de macrobloques. A continuacion, se calcula un vector de movimiento para los dos campos respectivamente.
Basandose en este par de macrobloques, el caso en el que un par de macrobloques actual que se va a codificar se codifica en una estructura de trama se explica tal como se muestra en la figura 43B. La figura 45 es una grafica de flujo que muestra un procedimiento de procesamiento detallado en una etapa S302 que se muestra en la figura 43. Observese que en la figura 45 un par de macrobloques se indica como MBP, y un macrobloque se indica como MB.
La unidad de seleccion de modo 1109 calcula, en primer lugar, un vector de movimiento de un macrobloque MB1 (un macrobloque superior), el cual es uno de los macrobloques que forman un par de macrobloques actual que se va a codificar, usando una prediccion espacial en el modo directo. En primer lugar, la unidad de seleccion de modo 1109 calcula el valor mas pequeno de los indices en imagenes a las que hacen referencia pares de macrobloques
5
10
15
20
25
30
35
40
45
50
55
adyacentes para el primer y el segundo mdices respectivamente (S501). En este caso, no obstante, cuando un par de macrobloques adyacente se codifica en la estructura de trama, el valor se determina usando unicamente un macrobloque adyacente a un macrobloque actual que se va a codificar. A continuacion, se revisa si pares de macrobloques adyacentes se codifican en la estructura de campo (S502), y si la codificacion se lleva a cabo usando la estructura de campo, se revisa ademas el numero de campos a los cuales se les asigna el mdice mas pequeno en campos a los que hacen referencia dos macrobloques que formen los pares de macrobloques adyacentes a partir de una lista de tramas de referencia en la figura 42 (S503).
Cuando el resultado de la revision de la etapa S503 muestra que el mdice mas pequeno se asigna a cada campo al que hacen referencia los dos macrobloques (es decir, campos a los cuales se les asigna el mismo mdice), se calcula un valor promedio de vectores de movimiento de dos macrobloques y se le hace un vector de movimiento del par de macrobloques adyacente. Esto es debido a que, cuando se considera basandose en una estructura entrelazada, dos macrobloques de pares de macrobloques adyacentes con la estructura de campo son adyacentes a un macrobloque actual que se va a codificar con la estructura de trama.
Cuando el resultado de la revision de la etapa S503 muestra que el mdice mas bajo se asigna solo a un campo al que hace referencia un macrobloque, un vector de movimiento del macrobloque se determina como un vector de movimiento del par de macrobloques adyacente (S504A). Cuando el mdice mas pequeno se asigna a ninguno de los campos a los que se hace referencia, un vector de movimiento del par de macrobloques adyacente se supone que es “0” (S505).
En los casos anteriores, a partir de vectores de movimiento de los macrobloques adyacentes, mediante el uso de solo vectores de movimiento que hacen referencia a campos a los cuales se les asigno el mdice mas pequeno, es posible seleccionar un vector de movimiento con eficiencia de codificacion mas alta. Un proceso en una etapa S505 muestra que no hay un vector de movimiento adecuado para la prediccion.
Cuando el resultado de la revision de la etapa S502 muestra que los pares de macrobloques adyacentes se codifican en una estructura de trama, entre los pares de macrobloques adyacentes, un vector de movimiento de un macrobloque adyacente a un macrobloque actual que se va a codificar se determina como un vector de movimiento del par de macrobloques adyacente (S506).
La unidad de seleccion de modo 1109 repite procesos a partir de las etapas S501 a S506 anteriores para tres pares de macrobloques adyacentes seleccionados. Como resultado, se calcula un vector de movimiento para cada uno de los tres pares de macrobloques adyacentes al igual que para un macrobloque de un par de macrobloques actual que se va a codificar, por ejemplo, un macrobloque MB1.
A continuacion, la unidad de seleccion de modo 1109 revisa si el numero de pares de macrobloques adyacentes que hacen referencia a una trama con el mdice mas pequeno o un campo de la trama entre tres pares de macrobloques adyacentes es 1 (S507).
En este caso, la unidad de seleccion de modo 1109 unifica indices de referencia de tres pares de macrobloques adyacentes a un mdice de tramas de referencia o a un mdice de campos de referencia, y los compara. En una lista de tramas de referencia que se muestra en la figura 42, los indices de referencia se asignan simplemente a cada trama, no obstante, debido a que la relacion entre los indices de tramas de referencia y los indices de campos de referencia a los cuales se le asignan indices cada campo son constantes, es posible convertir uno de la lista de tramas de referencia o la lista de tramas de campos de referencia en otros indices de referencia mediante calculo.
La figura 46 es una grafica indicadora que muestra una relacion entre indices de campos de referencia e indices de tramas de referencia.
Tal como se muestra en la figura 46, hay varias tramas indicadas por el primer campo f1 y el segundo campo f2 en orden cronologico en una lista de campos de referencia, e indices de tramas de referencia tales como 0, 1 y 2 que se asignan a cada trama basandose en tramas que incluyen un bloque actual que se va a codificar (tramas que se muestran en la figura 46). Ademas, los indices de campos de referencia tales como 0, 1 y 2 se asignan al primer campo f1 y al segundo campo f2 de cada trama basandose en el primer campo f1 de una trama que incluya un bloque actual que se va a codificar (cuando el primer campo sea un campo actual que se va a codificar). Observese que los indices de campo de referencia se asignan del primer campo f1 y el segundo campo f2 de una trama cercana a un campo actual que se va a codificar. En el presente caso, si el bloque actual que se va a codificar es el primer campo f1, los indices se asignan dando prioridad al primer campo f1, y si el bloque actual que se va a codificar es el segundo campo f2, los indices se asignan dando prioridad al segundo campo f2.
Por ejemplo, cuando un macrobloque adyacente codificado en la estructura de trama hace referencia a una trama con un mdice de tramas de referencia “1” y un macrobloque adyacente codificado en la estructura de campo hace referencia al primer campo f1 con un mdice de campo de referencia “2”, los macrobloques adyacentes que se han mencionado en lo que antecede son tratados como si se refirieran a la misma imagen. Dicho de otra forma, cuando una precondicion de que un mdice de tramas de referencia a los que hace referencia un macrobloque adyacente sea igual a la mitad del mdice de campos de referencia (redondeado a la baja despues del punto decimal) asignado a un campo de referencia de otro macrobloque adyacente es satisfecha, los macrobloques adyacentes son tratados como
5
10
15
20
25
30
35
40
45
50
55
60
si se refirieran a una misma imagen.
Por ejemplo, cuando un bloque actual que se va a codificar incluido en el primer campo f1 indicado por A en la figura 46 hace referencia al primer campo f1 con el mdice de campo de referencia “2,” y un macrobloque adyacente con la estructura de trama hace referencia a una trama con el mdice de tramas de referencia “1”, los bloques adyacentes que se han mencionado en lo que antecede se tratan como si se refirieran a una misma imagen toda vez que se satisface la precondicion que se ha mencionado en lo que antecede. Por otro lado, cuando un macrobloque adyacente hace referencia al primer campo con un mdice de campo de referencia “2” y otro macrobloque adyacente hace referencia a una trama con un mdice de tramas de referencia “3”, los bloques adyacentes se tratan como si no se refirieran a una misma imagen toda vez que no se ha satisfecho la precondicion.
Tal como se ha mencionado en lo que antecede, si el resultado de la revision de la etapa S507 muestra que el numero es 1, un vector de movimiento de un par de macrobloques adyacente que hace referencia a un campo, una trama con el mdice mas pequeno o un campo en la trama se determina como un vector de movimiento de un macrobloque actual que se va a codificar (S508). Si el resultado de la revision de la etapa S507 muestra que el numero no es 1, se revisa ademas si el numero de pares de macrobloques adyacentes de tres pares de macrobloques adyacentes que se refirieron a una trama con el mdice mas pequeno o un campo en la trama es 2 o mas (S509). A continuacion, si el numero es 2 o mas, suponiendo que un vector de movimiento de pares de macrobloques adyacente que no hacen referencia a una trama con el mdice mas pequeno o un campo en la trama sea “0” (S510), un valor medio de tres vectores de movimiento de los pares de macrobloques adyacentes se determina como un vector de movimiento de un macrobloque actual que se va a codificar (S511). Si el resultado de la revision de la etapa S509 es menor que 2, debido a que el numero de los pares de macrobloques adyacentes que hacen referencia a la trama con el mdice mas pequeno o el campo en la trama es “0”, un vector de movimiento de un macrobloque actual que se va a codificar se determina como “0” (S512).
Como resultado del proceso anterior, un vector de movimiento MV1 se puede obtener como un resultado de calculo para un macrobloque que forme un par de macrobloques actual que se va a codificar, por ejemplo, MB1. La unidad de seleccion de modo 109 lleva a cabo el proceso anterior para un vector de movimiento con el segundo mdice de referencia, y lleva a cabo la compensacion de movimiento mediante bi-prediccion usando los dos vectores de movimiento obtenidos. No obstante, cuando ninguno de los macrobloques adyacentes contiene el primer o el segundo vector de movimiento, la compensacion de movimiento se lleva a cabo no usando un vector de movimiento en la direccion indicada por un vector de movimiento no contenido en los macrobloques adyacentes, sino usando un vector de movimiento de forma unidireccional. Ademas, el mismo proceso se repite para el otro macrobloque en el par de macrobloques actual que se va a codificar, por ejemplo, MB2. Como resultado, es igual llevar a cabo la compensacion de movimiento en el modo directo para cada uno de los dos macrobloques en un par de macrobloques actual que se va a codificar.
A continuacion se explica el caso en el que un par de macrobloques actual que se va a codificar se codifica en la estructura de campo tal como se muestra en la figura 43C. La figura 47 es una grafica de flujo que muestra un procedimiento de procesamiento detallado en una etapa S303 que se muestra en la figura 43. La unidad de seleccion de modo 1109 calcula un vector de movimiento MVt usando una prediccion espacial en el modo directo para un macrobloque que forme un par de macrobloques actual que se va a codificar, por ejemplo, un macrobloque TF que se corresponda con un campo superior del par de macrobloques. En primer lugar, la unidad de seleccion de modo 1109 calcula el valor mas pequeno de los indices en las imagenes a las que hacen referencia pares de macrobloques adyacentes (S601). No obstante, cuando los pares de macrobloques son procesados por la estructura de campo, solo se considera un macrobloque de un campo (un campo superior o un campo inferior) igual que el macrobloque actual que se va a codificar. A continuacion, se revisa si los pares de macrobloques adyacentes son codificados por la estructura de trama (S602), y si la codificacion se lleva a cabo usando la estructura de trama, se evalua ademas si las tramas a las que hacen referencia dos macrobloques en el par de macrobloques adyacente son tramas con el mdice mas pequeno basandose en el valor de mdice asignado a cada trama por una lista de tramas de referencia 300 (S603).
Si el resultado de la revision de la etapa S603 muestra que el mdice mas pequeno se asigna a cualquiera de las tramas a las que hacen referencia los dos macrobloques, se calcula un valor promedio de vectores de movimiento de los dos macrobloques, y el resultado del calculo se determina como un vector de movimiento del par de macrobloques adyacente (S604). Si el resultado de la revision de la etapa S603 muestra que una o ambas de las tramas a las que se hace referencia no son tramas con el mdice mas pequeno, se revisa ademas si una trama a la que hace referencia cualquiera de los macrobloques contiene el mdice mas pequeno (S605). Si el resultado de la revision muestra que el mdice mas pequeno esta asignado a una trama a la que hace referencia uno de los macrobloques, un vector de movimiento del macrobloque se determina como un vector de movimiento del par de macrobloques adyacente (S606). Por otro lado, si el resultado de la revision de la etapa S605 muestra que ninguno de los macrobloques hace referencia a una trama con el mdice mas pequeno, un vector de movimiento del par de macrobloques adyacente se determina como “0” (S607). En los casos anteriores, a partir de vectores de movimiento de los macrobloques adyacentes, mediante el uso de solo vectores de movimiento que hagan referencia a tramas a las cuales se les asigna el mdice mas pequeno, es posible seleccionar un vector de movimiento con eficiencia de codificacion mas alta. Un proceso en una etapa S607 muestra que no hay un vector de movimiento adecuado para la prediccion.
5
10
15
20
25
30
35
40
45
50
55
60
Cuando el resultado de la revision de la etapa S602 muestra que los pares de macrobloques adyacentes se codifican en la estructura de campo, en el par de macrobloques adyacente, los vectores de movimiento del par de macrobloques adyacente completo se determinan como un vector de movimiento del par de macrobloques que se corresponde con un macrobloque actual en un par de macrobloques actual que se va a codificar (S608). La unidad de seleccion de modo 109 repite los procesos de las etapas S601 a S608 anteriores para tres pares de macrobloques adyacentes seleccionados. Como resultado, es igual obtener un vector de movimiento para tres pares de macrobloques adyacentes respectivamente, al igual que para un macrobloque del par de macrobloques actual que se va a codificar, por ejemplo, un macrobloque TF.
A continuacion, la unidad de deteccion de vectores de movimiento 108 revisa si el numero de pares de macrobloques adyacentes que hacen referencia a una trama con el mdice mas pequeno entre los tres pares de macrobloques adyacentes es 1 (S609). Si es 1, un vector de movimiento de un par de macrobloques adyacente que hace referencia a una trama con el mdice mas pequeno se determina como un vector de movimiento del macrobloque actual que se va a codificar (S610). Si el resultado de la revision de la etapa S609 muestra que el numero no es 1, se revisa mas si el numero de pares de macrobloques adyacentes que hacen referencia a una trama con el mdice mas pequeno entre tres pares de macrobloques adyacentes es dos o mas (S611). A continuacion, si el numero es dos o mas, suponiendo que un vector de movimiento de pares de macrobloques adyacentes no hacen referencia a una trama con el mdice mas pequeno sea “0” (S612), un valor medio de tres vectores de movimiento de pares de macrobloques adyacentes se determina como un vector de movimiento del macrobloque actual que se va a codificar (S613). Si el resultado de la revision de la etapa S611 es menos de 2, debido a que el numero de pares de macrobloques adyacentes que hacen referencia a una trama con el mdice mas pequeno es “0”, un vector de movimiento del macrobloque actual que se va a codificar se determina como “0” (S614).
Como resultado del proceso anterior, un vector de movimiento MVt se puede obtener como un resultado de calculo para un macrobloque que forme un par de macrobloques actual que se va a codificar, por ejemplo, un macrobloque TF que se corresponda con un campo superior. La unidad de seleccion de modo 109 repite el proceso anterior tambien para el segundo vector de movimiento (que se corresponde con el segundo mdice de referencia). En cuanto a un macrobloque TF, se pueden obtener dos vectores de movimiento mediante el proceso anterior, y la compensacion de movimiento se lleva a cabo usando los dos vectores de movimiento. No obstante, cuando ninguno de los macrobloques adyacentes contiene el primer o el segundo vector de movimiento, la compensacion de movimiento se lleva a cabo no usando un vector de movimiento en la direccion indicada por un vector de movimiento no contenido en los macrobloques adyacentes, sino usando un vector de movimiento de forma unidireccional. Esto es debido a que, cuando un par de macrobloques adyacente hace referencia solo a unidireccionalmente, es concebible que la eficiencia de codificacion se haga mas alta cuando un par de macrobloques adyacente haga referencia tambien solo a unidireccion.
Ademas, el mismo proceso se repite para otro macrobloque en el par de macrobloques actual que se va a codificar, por ejemplo, BF que se corresponde con un campo inferior. Como resultado, es igual llevar a cabo la compensacion de movimiento en el modo directo para cada uno de dos macrobloques en el par de macrobloques actual que se va a codificar, por ejemplo, los macrobloques TF y BF.
Observese que en los casos anteriores, cuando una estructura de codificacion para un par de macrobloques actual que se va a codificar y una estructura de codificacion para un par de macrobloques adyacente son diferentes, se lleva a cabo un calculo mediante un proceso tal como el calculo de un valor promedio de vectores de movimiento de dos macrobloques en el par de macrobloques adyacente; no obstante, la presente invencion no se limita a los casos anteriores. Por ejemplo, solo cuando una estructura de codificacion para un par de macrobloques adyacente que se va a codificar y un par de macrobloques adyacente son las mismas, se puede usar un vector de movimiento del par de macrobloques adyacente, y cuando una estructura de codificacion para un par de macrobloques actual que se va a codificar y un par de macrobloques adyacente son diferentes, un vector de movimiento del par de macrobloques adyacente del cual la estructura de codificacion es diferente no se usa. En concreto, 1. Cuando un par de macrobloques actual que se va a codificar se codifica en la estructura de trama, solo se usa un vector de movimiento de un par de macrobloques adyacente codificado en estructura de trama. En este caso, cuando ninguno de los vectores de movimiento del par de macrobloques adyacente codificado en la estructura de trama hace referencia a una trama con el mdice mas pequeno, un vector de movimiento del par de macrobloques actual que se va a codificar se determina como “0”. Cuando un par de macrobloques adyacente se codifica en la estructura de campo, un vector de movimiento del par de macrobloques adyacente se determina como “0”.
A continuacion, 2. Cuando un par de macrobloques actual que se va a codificar se codifica en la estructura de campo, solo se usa un vector de movimiento de un par de macrobloques adyacente codificado en una estructura de campo. En este caso, cuando ninguno de los vectores de movimiento del par de macrobloques adyacente codificado en la estructura de campo hace referencia a una trama con el mdice mas pequeno, un vector de movimiento del par de macrobloques actual que se va a codificar se determina como “0”. Cuando un par de macrobloques adyacente se codifica en la estructura de trama, un vector de movimiento del par de macrobloques adyacente se determina como “0”. De esta manera, despues de calcular un vector de movimiento de cada par de macrobloques adyacente, 3. Cuando el numero de vectores de movimiento obtenido al hacer referencia a una trama con el mdice mas pequeno o a un campo en la trama entre estos vectores de movimiento solo es uno, el vector de movimiento se determina como
5
10
15
20
25
30
35
40
45
50
55
60
un vector de movimiento de un par de macrobloques actual en el modo directo, y si el numero no es 1, un valor medio de los tres vectores de movimiento se determina como un vector de movimiento del par de macrobloques actual en el modo directo.
Ademas, en los casos anteriores, cual de una estructura de campo o una estructura de trama se usa para codificar un par de macrobloques actual que se va a codificar se determina basandose en la mayona de una estructura de codificacion de pares de macrobloques adyacentes codificados; no obstante, la presente invencion no se limita al caso anterior. Una estructura de codificacion puede ser fija, por ejemplo, una estructura de trama se usa siempre para codificar en el modo directo, o una estructura de campo se usa siempre para codificar en el modo directo. En este caso, por ejemplo, cuando la estructura de campo y la estructura de trama se conmutan por cada uno de las tramas actuales que se van a codificar, se puede describir en un encabezado de flujo de bits completo o en un encabezado de trama de cada trama. La conmutacion se lleva a cabo, por ejemplo, de una forma por secuencias, una forma por GOP, una forma por imagenes y una forma por sectores y, en este caso, se puede describir en un encabezado correspondiente de un flujo de bits o similar. No resulta necesario indicar que, incluso en los casos anteriores, solo cuando las estructuras de codificacion usadas para un par de macrobloques actual que se va a codificar y un par de macrobloques adyacente a las mismas, un vector de movimiento del par de macrobloques actual que se va a codificar en el modo directo se puede calcular por un procedimiento, usando un vector de movimiento del par de macrobloques adyacente. Ademas, cuando se transmite en una forma tal como paquetes, una parte de encabezado y una parte de datos se pueden separar y transmitir respectivamente. En este caso, la parte de encabezado y la parte de datos nunca se incluyen en un flujo de bits. No obstante, en cuanto a los paquetes, aunque un orden de transmision puede estar mas o menos fuera de secuencia, una parte de encabezado que se corresponda con una parte de datos correspondiente se transmite en otro paquete, y no hay diferencia incluso si no se incluye en un flujo de bits. De esta manera, al fijar cual de la estructura de trama o la estructura de campo se usa, un proceso para determinar una estructura de codificacion mediante el uso de informacion de adyacentes se hace innecesario, y se puede simplificar un proceso.
Ademas, en el modo directo, despues de procesar un par de macrobloques actual usando tanto la estructura de trama como la estructura de campo, una estructura de codificacion con una eficiencia de codificacion mas alta puede seleccionarse. En este caso, se puede describir cual de la estructura de trama y la estructura de campo se selecciona en una parte de encabezado de un par de macrobloques bajo codificacion. No resulta necesario indicar que, incluso en los casos anteriores, solo cuando las estructuras de codificacion usadas para un par de macrobloques actual que se va a codificar y un par de macrobloques adyacente son las mismas, un vector de movimiento del par de macrobloques actual que se va a codificar en el modo directo se puede calcular mediante un procedimiento que usa un vector de movimiento del par de macrobloques adyacente. Mediante el uso de este procedimiento, la informacion que muestra cual se usa de la estructura de trama o la estructura de campo se hace innecesaria en un flujo de bits; no obstante, es posible reducir los datos residuales para la compensacion de movimiento y la eficiencia de codificacion se puede mejorar.
En la explicacion anterior, se mostro el caso en el que la compensacion de movimiento se lleva a cabo para pares de macrobloques adyacentes de una forma por tamano del macrobloque; no obstante, una compensacion de movimiento se puede llevar a cabo de una forma por tamano diferente. En este caso, tal como se muestra en las figuras 48A y 48B, un vector de movimiento que contiene pfxeles situados en a, b y c se usa como un vector de movimiento del par de macrobloques adyacente para cada macrobloque de un par de macrobloques actual que se va a codificar. La figura 48A muestra el caso de procesar un macrobloque superior, y la figura 48B muestra el caso de procesar un macrobloque inferior. Cuando las estructuras (una estructura de trama/una estructura de campo) para un par de macrobloques actual y pares de macrobloques adyacentes son diferentes, se lleva a cabo un proceso usando un bloque que incluye pfxeles situados en a, b y c, y un bloque que incluye pfxeles situados en a', b' y c' tal como se muestra en las figuras 49A y 49B. En el presente caso, las ubicaciones a', b' y c' son un bloque incluido en otro macrobloque en el mismo par de macrobloques que se corresponde con las ubicaciones de los pfxeles a, b y c. Por ejemplo, en el caso de la figura 49A, cuando las estructuras de codificacion (una estructura de trama/una estructura de campo) para un par de macrobloques actual y pares de macrobloques adyacentes son diferentes, un vector de movimiento de un bloque sobre el lado izquierdo de un macrobloque actual superior que se va a codificar se determina usando vectores de movimiento de BL1 y BL2. En el caso de la figura 49B, cuando las estructuras de codificacion (una estructura de trama/una estructura de campo) para un par de macrobloques actual y pares de macrobloques adyacentes son diferentes, un vector de movimiento de un bloque sobre el lado izquierdo de un macrobloque actual superior que se va a codificar se determina usando vectores de movimiento de BL3 y BL4. Mediante el uso de este procedimiento de procesamiento, incluso si la compensacion de movimiento se lleva a cabo para macrobloques adyacentes de una forma por tamano usando un tamano diferente de un macrobloque, un proceso en el modo directo puede llevarse a cabo considerando la diferencia de la estructura de trama y la estructura de campo.
Ademas, cuando la compensacion de movimiento se lleva a cabo para macrobloques adyacentes de una forma por tamano que sea diferente de un macrobloque, mediante el calculo de un valor promedio de vectores de movimiento de un bloque incluido en el macrobloque, el valor calculado puede ser un vector de movimiento del macrobloque. Incluso si la compensacion de movimiento se lleva a cabo para macrobloques adyacentes de una forma por tamano usando un tamano diferente de un macrobloque, un proceso en el modo directo puede llevarse a cabo considerando la diferencia de una estructura de trama y una estructura de campo.
5
10
15
20
25
30
35
40
45
50
55
60
Por cierto, tal como se ha mencionado en lo que antecede, se obtiene un vector de movimiento, y se lleva a cabo la codificacion de prediccion entre imagenes basandose en el vector de movimiento obtenido. Como resultado, el vector de movimiento obtenido en la unidad de deteccion de vectores de movimiento 108 y la imagen de error predictiva codificada se almacenan en un flujo de bits de una forma por macrobloques. No obstante, en cuanto a un vector de movimiento de un macrobloque codificado en el modo directo, se describe simplemente que se codifica en el modo directo, y el vector de movimiento e indices de referencia no se describen en un flujo de bits. La figura 50 es una ilustracion que muestra un ejemplo de una configuracion de datos de un flujo de bits 700 generado por una unidad de generacion de flujos de bits 104. Tal como se muestra en la figura 50, en el flujo de bits 700 generado por la unidad de generacion de flujos de bits 104, un Encabezado esta provisto para cada Imagen. El Encabezado contiene, por ejemplo, factores tales como un factor RPSL que muestra el cambio de una lista de tramas de referencia 10, y un factor que muestra un tipo de imagen de la imagen y que no se muestra en esta figura, y cuando un procedimiento de asignacion del primer mdice de referencia 12 y el segundo mdice de referencia 13 en la lista de tramas 10 se cambia con respecto a los ajustes iniciales, un procedimiento de asignacion despues del cambio se describe en el factor RPSL.
Por otro lado, el error predictivo codificado es registrado de una forma por macrobloques. Por ejemplo, cuando un macrobloque se codifica usando una prediccion espacial en el modo directo, un vector de movimiento del macrobloque no se describe en un factor Bloque1, y la informacion que muestra un modo de codificacion en el modo directo se describe en un factor PredType. En el presente caso, el factor Bloque1 es un factor en el cual se describe un error predictivo que se corresponde con el macrobloque, y el factor PredType muestra un modo de codificacion del macrobloque. Cuando se selecciona cual de la estructura de trama o la estructura de campo se usa para la codificacion desde el punto de vista de la eficiencia de codificacion que se ha mencionado en lo que antecede, se describe la informacion que muestra la seleccion entre la estructura de trama y la estructura de campo. A continuacion, el error predictivo codificado se describe en un factor CodedRes. Cuando otro macrobloque es un macrobloque codificado en un modo de codificacion de prediccion entre imagenes, este se describe en el factor PredType en un factor Bloque2 que un modo de codificacion para el macrobloque es el modo de codificacion de prediccion entre imagenes. En el presente caso, el factor CodeRes muestra un modo de codificacion descrito y el factor PredType es un factor en el cual se describe un error predictivo que se corresponde con el macrobloque. En este caso, el primer mdice de referencia 12 del macrobloque se describe mas en un factor Ridx0, y el segundo mdice de referencia 13 se describe mas en un factor Ridx1 que no es el modo de codificacion. Los indices de referencia en un bloque son representados por palabras de codigo de longitud variable, y la longitud de codigo mas corta se asigna al valor mas pequeno. A continuacion, un vector de movimiento del macrobloque durante la referencia a la trama hacia delante se describe en un factor MV0, y un vector de movimiento durante la referencia a la trama hacia atras se describe en un factor MV1. A continuacion, el error predictivo codificado se describe en el factor CodeRes.
La figura 51 es un diagrama de bloques que muestra una configuracion de un aparato de descodificacion de imagenes en movimiento 800 que descodifica el flujo de bits 700 que se muestra en la figura 50. El aparato de descodificacion de imagenes en movimiento 800 es un aparato de descodificacion de imagenes en movimiento que descodifica el flujo de bits 700 en el cual se describe un error predictivo que incluye un macrobloque codificado en el modo directo, e incluye una unidad de analisis de flujos de bits 701, una unidad de descodificacion de diferencia predictiva 702, una unidad de descodificacion de modo 703, una unidad de descodificacion de compensacion de movimiento 705, una unidad de almacenamiento de vectores de movimiento 706, una memoria de tramas 707, una unidad de operacion de adicion 708, conmutadores 709 y 710, y una unidad de descodificacion de vectores de movimiento 711. La unidad de analisis de flujos de bits 701 extrae varios datos de un flujo de bits introducido 700. En el presente caso, varios datos incluyen informacion tal como informacion acerca de un modo de codificacion e informacion acerca de un vector de movimiento o similar. La informacion extrafda en un modo de codificacion es enviada a la unidad de descodificacion de modo 703. Por otro lado, la informacion extrafda en un vector de movimiento es enviada a la unidad de descodificacion de vectores de movimiento 705. Ademas, los datos de codificacion de diferencia predictiva extrafdos son enviados a la unidad de descodificacion de diferencia predictiva 702. La unidad de descodificacion de diferencia predictiva 702 descodifica los datos de codificacion de diferencia predictiva introducidos y genera una imagen de diferencia predictiva. La imagen de diferencia predictiva generada es enviada al conmutador 709. Por ejemplo, cuando el conmutador 709 esta conectado a una terminal b, una imagen de diferencia predictiva es enviada a la unidad de operacion de adicion 708.
La unidad de descodificacion de modo 703 controla los conmutadores 709 y 710 haciendo referencia a una informacion de modo de codificacion extrafda de un flujo de bits. Cuando un modo de codificacion es un modo de codificacion entre imagenes, la unidad de descodificacion de modo 703 controla para conectar el conmutador 709 con una terminal a y para conectar el conmutador 710 con una terminal c. Ademas, la unidad de descodificacion de modo 703 emite una informacion de modo de codificacion a la unidad de descodificacion de compensacion de movimiento 705 y la unidad de descodificacion de vectores de movimiento 711. La unidad de descodificacion de vectores de movimiento 711 descodifica un vector de movimiento codificado introducido de la unidad de analisis de flujos de bits 701. El numero de imagen de referencia descodificada y un vector de movimiento descodificado se almacenan en la unidad de almacenamiento de vectores de movimiento 706 y son enviados a la unidad de descodificacion de compensacion de vectores de movimiento 705 al mismo tiempo.
5
10
15
20
25
30
35
40
45
50
55
Cuando un modo de codificacion es el modo directo, la unidad de descodificacion de modo 703 controla para conectar el conmutador 709 con la terminal b y para conectar el conmutador 710 con una terminal d. Ademas, la unidad de descodificacion de modo 703 envfa una informacion de modo de codificacion a la unidad de descodificacion de compensacion de movimiento 705 y la unidad de descodificacion de vectores de movimiento 711. La unidad de descodificacion de vectores de movimiento 711 determina un vector de movimiento que se va a usar en el modo directo usando un vector de movimiento de un par de macrobloques adyacente y un numero de imagen de referencia almacenado en la unidad de almacenamiento de vectores de movimiento 706, cuando un modo de codificacion es el modo directo. Debido a que el procedimiento para determinar un vector de movimiento es el mismo que los contenidos que se explican para la operacion de la unidad de seleccion de modo 109 que se muestra en la figura 40, se omitira en el presente caso la explicacion.
Basandose en el numero de imagen de referencia descodificada y en el vector de movimiento descodificado, la unidad de descodificacion de compensacion de movimiento 705 obtiene una imagen de compensacion de movimiento de una forma por macrobloques de la memoria de tramas 707. La imagen de compensacion de movimiento obtenida es enviada a la unidad de operacion de adicion 708. La memoria de tramas 707 es una memoria que almacena imagenes de descodificacion de una forma por tramas. La unidad de operacion de adicion 708 anade una imagen de diferencia predictiva introducida a una imagen de compensacion de movimiento, y genera una imagen descodificada. La imagen descodificada generada es enviada a la memoria de tramas 707.
Tal como se ha mencionado en lo que antecede, de acuerdo con la presente realizacion, incluso si un par de macrobloques adyacente codificado por una estructura de trama y un par de macrobloques adyacente codificado por una estructura de campo se mezclan en pares de macrobloques adyacentes codificados que corresponden a un par de macrobloques actual que se va a codificar incluyen un procedimiento de prediccion espacial en el modo directo, un vector de movimiento se puede calcular facilmente.
Observese que en la realizacion anterior se explica el caso en el que cada imagen es procesada en un par de macrobloques (conectar dos macrobloques verticalmente) usando o bien una estructura de trama o bien una estructura de campo; no obstante, un proceso puede llevarse a cabo mediante la conmutacion de una estructura de trama y una estructura de campo de una forma diferente, por ejemplo, de una forma por macrobloques.
Ademas, en la realizacion anterior se explica el caso en el que un macrobloque en una imagen B es procesado en el modo directo; no obstante, un macrobloque en una imagen P puede procesarse de forma similar. Cuando se codifica y descodifica una imagen P, cada bloque lleva a cabo la compensacion de movimiento solo a partir de una imagen, y una lista de tramas de referencia es solo una. Por lo tanto, para llevar a cabo el proceso igual que la presente realizacion en una imagen P, el proceso de calcular dos vectores de movimiento de un bloque actual que se va a codificar/descodificar (la primera trama de referencia y la segunda trama de referencia) en la presente realizacion se puede cambiar por un proceso que calcule un vector de movimiento.
Ademas, en la realizacion anterior se explica el caso en el que la generacion predictiva de un vector de movimiento usado en el modo directo se lleva a cabo usando vectores de movimiento de tres pares de macrobloques adyacentes, no obstante, el numero de pares de macrobloques adyacentes que se va a usar puede ser diferente. Por ejemplo, es concebible un caso de usar solo un vector de movimiento de un par de macrobloques adyacente situado sobre el lado izquierdo.
(Duodecima realizacion)
Al almacenar en un medio de almacenamiento tal como un disco flexible un programa para lograr una configuracion del procedimiento de codificacion de imagenes y el procedimiento de descodificacion de imagenes que se han mencionado en la realizacion anterior, se hace posible llevar a cabo facilmente el proceso que se ha mencionado en la realizacion anterior en un sistema informatico independiente.
La figura 52 es una ilustracion que explica un medio de almacenamiento que almacena un programa para lograr el procedimiento de codificacion de imagenes y el procedimiento de descodificacion de la primera realizacion a la undecima realizacion anteriores en un sistema informatico.
La figura 52B muestra una vista externa del disco flexible visto desde delante, una configuracion de una seccion transversal y el disco flexible, y la figura 52A muestra un ejemplo de un formato ffsico de un disco flexible como un cuerpo de un medio de almacenamiento. Un disco flexible fD esta contenido en un estuche F, y varias pistas Tr estan formadas concentricamente sobre la superficie del disco desde un radio exterior a uno interior, y cada pista esta dividida en 16 sectores Se en direccion angular. Por lo tanto, en cuanto al disco flexible que almacena el programa que se ha mencionado en lo que antecede, un procedimiento de codificacion de imagenes y un procedimiento de descodificacion de imagenes como el programa anterior se almacenan en un area asignada en el disco flexible FD que se ha mencionado en lo que antecede.
La figura 52C muestra una configuracion para grabar y leer el programa que se ha mencionado en lo que antecede en, y a partir de, un disco flexible FD. Cuando el programa que se ha mencionado en lo que antecede se almacena en el disco flexible FD, el procedimiento de codificacion de imagenes y un procedimiento de descodificacion de imagenes como el programa que se ha mencionado en lo que antecede son escritos por medio de una unidad de
5
10
15
20
25
30
35
40
45
50
55
disco flexible en un sistema informatico Cs. Cuando el procedimiento de codificacion o descodificacion anterior es construido en el sistema informatico por el programa en el disco flexible, el programa se lee del disco flexible y se transfiere al sistema informatico.
Observese que, en la explicacion anterior, se usa un disco flexible como un medio de almacenamiento; no obstante, es posible lograr el mismo desempeno usando un disco optico. Ademas, un medio de almacenamiento no se limita a un disco flexible y medios capaces de almacenar un programa tales como un CD-ROM, una tarjeta de memoria y un casete de ROM pueden actuar de la misma forma.
A continuacion se explicaran las aplicaciones del procedimiento de codificacion de imagenes y el procedimiento de descodificacion de imagenes que se muestran en la realizacion anterior y un sistema que usa las aplicaciones.
La figura 53 es un diagrama de bloques que muestra una configuracion general de un sistema de suministro de contenidos ex100 para lograr el servicio de distribucion de contenidos. El area para proporcionar el servicio de comunicacion esta dividida en celulas de un tamano deseado, y en sitios de celula ex107 ~ ex110 los cuales son estaciones inalambricas fijas colocadas en cada celula.
En este sistema de suministro de contenidos ex100, por ejemplo, la Internet ex101 esta conectada a dispositivos tales como un ordenador ex111, un PDA (Personal Digital Assistant, Asistente Digital Personal) ex112, una camara ex113, un telefono celular ex114 y un telefono celular con una camara ex115 por medio del proveedor de servicio de Internet ex102, una red telefonica ex104 y sitios de celula ex107 ~ ex110.
No obstante, el sistema de suministro de contenidos ex100 no se limita a la configuracion que se muestra en la figura 53, y se puede conectar a una combinacion de cualquiera de estos. De forma similar, cada dispositivo se puede conectar directamente a la red telefonica ex104, no a traves de los sitios de celula ex107 ~ ex110.
La camara ex113 es un aparato capaz de tomar imagenes en movimiento tal como una camara de video digital. El telefono celular puede ser un telefono celular de un sistema de PDC (Personal Digital Communication, Comunicacion Digital Personal), un sistema de CDMA (Code Division Multiple Access, Acceso Multiple por Division de Codigo), un sistema de W-CDMA (Wideband-Code Division Multiple Access, Acceso Multiple por Division de Codigo de Banda Ancha) o un sistema de GSM (Global System for Mobile Communications, Sistema Global de Comunicaciones Moviles), un sistema PHS (Personal Handyphone system, Sistema de Telefono Portatil Personal) o similares.
Un servidor de transmision por flujos ex103 esta conectado a la camara ex113 por medio del sitio de celula ex109 y la red telefonica ex104, y se hace posible la distribucion en vivo o similar usando la camara ex113 basandose en los datos codificados transmitidos desde el usuario. O bien la camara ex113 o bien el servidor para transmitir los datos puede codificar los datos. Tambien, los datos de imagenes en movimiento tomados por una camara ex116 se pueden transmitir al servidor de transmision por flujos ex103 por medio del ordenador ex111. La camara ex116 es un dispositivo tal como una camara digital capaz de tomar imagenes fijas y en movimiento. O bien la camara ex116 o bien el ordenador ex111 pueden codificar los datos de imagen en movimiento. Un LSI ex117 incluido en el ordenador ex111 o la camara ex116 lleva a cabo el procesamiento de codificacion. Se puede integrar un soporte logico para codificar y descodificar imagenes en cualquier tipo de medio de almacenamiento (tal como un CD-ROM, un disco flexible y un disco duro) que sea un medio de grabacion el cual pueda ser lefdo por el ordenador ex111 o similar. Ademas, un telefono celular con una camara ex115 puede transmitir los datos de imagenes en movimiento. Estos datos de imagenes en movimiento son los datos codificados por el LSI incluido en el telefono celular ex115.
El sistema de suministro de contenidos ex100 codifica contenidos (tales como un video musical en vivo) tomados por usuarios que usen la camara ex113, la camara ex116 o similares de la misma manera que la realizacion anterior, y los transmite al servidor de transmision por flujos ex103, mientras que el servidor de transmision por flujos ex103 realiza la distribucion por flujos de los datos de contenido a los clientes segun su solicitud. Los clientes incluyen el ordenador ex111, el PDA ex112, la camara ex113, el telefono celular ex114 y demas, capaces de descodificar los datos codificados que se han mencionado en lo que antecede. En el sistema de suministro de contenidos ex100, los clientes pueden entonces recibir y reproducir los datos codificados, y pueden ademas recibir, descodificar y reproducir los datos en tiempo real para lograr de ese modo una difusion personal.
Cuando cada dispositivo en este sistema lleva a cabo la codificacion o descodificacion, se pueden usar el aparato de codificacion de imagenes o el aparato de descodificacion de imagenes que se muestra en la realizacion que se ha mencionado en lo que antecede. Un telefono celular se explicara como un ejemplo.
La figura 54 es una ilustracion que muestra al telefono celular ex115 usando el procedimiento de codificacion de imagenes y el procedimiento de descodificacion de imagenes que se explican en las realizaciones anteriores. El telefono celular ex115 tiene una antena ex201 para comunicarse con el sitio de celula ex110 por medio de ondas de radio, una unidad de camara ex203 tal como una camara CCD capaz de tomar imagenes en movimiento y fijas, una unidad de presentacion visual ex202 tal como una pantalla de presentacion visual de cristal liquido para desplegar los datos al descodificar imagenes y similares tomados por la unidad de camara ex203 y recibidos por la antena ex201, una unidad de cuerpo que incluye un conjunto de teclas de operacion ex204, una unidad de salida de voz ex208 tal como una bocina para emitir voz, una unidad de entrada de voz ex205 tal como un microfono para
5
10
15
20
25
30
35
40
45
50
55
introducir voz, un medio de almacenamiento ex207 para almacenar datos codificados o descodificados tales como datos de imagenes en movimiento o fijas tomadas por la camara, datos de correos electronicos recibidos y datos de imagenes en movimiento o fijas, y una unidad de ranura ex206 para unir el medio de almacenamiento ex207 al telefono celular ex115. El medio de almacenamiento ex207 almacena en el mismo un elemento de memoria de almacenamiento intermedio, un tipo de EEPROM (Electrically Erasable and Programmable Read Only Memory, Memoria de Solo Lectura Electricamente Borrable y Programable) que es una memoria no volatil electricamente borrable y reescribible, en un estuche de plastico tal como una tarjeta SD.
A continuacion se explicara el telefono celular ex115 haciendo referencia a la figura 55. En el telefono celular ex115, una unidad de control principal ex311, disenada para controlar de forma general cada unidad del cuerpo principal que contiene la unidad de presentacion visual ex202 asf como las teclas de operacion ex204, esta conectada a una unidad de circuito de suministro de energfa ex310, una unidad de control de entrada de operacion ex304, una unidad de codificacion de imagenes ex312, una unidad de interfaz de camara ex303, una unidad de control de LCD (Liquid Crystal Display, Pantalla de Cristal Lfquido) ex302, una unidad de descodificacion de imagenes ex309, una unidad de multiplexion/separacion ex308, una unidad de grabacion y lectura ex307, una unidad de circuito de modem ex306 y una unidad de procesamiento de voz ex305 unas con otras por medio de una barra colectora sincronizada ex313.
Cuando una tecla de fin de llamada o una tecla de encendido es activada por la operacion de un usuario, la unidad de circuito de suministro de energfa ex310 suministra a los componentes respectivos energfa desde un paquete de batena para activar de esta manera el telefono celular digital con una camara ex115 para poner este en un estado latente.
En el telefono celular ex115, la unidad de procesamiento de voz ex305 convierte las senales de voz recibidas por la unidad de entrada de voz ex205 en modo de conversacion en datos de voz digitales bajo el control de la unidad de control principal ex311 que incluye una CPU, ROM y RAM, la unidad de circuito de modem ex306 lleva a cabo el procesamiento de amplio espectro de los datos de voz digitales, y la unidad de circuito de comunicacion ex301 lleva a cabo la conversion digital a analogica y la transformacion de frecuencia de los datos, para transmitir los mismos por medio de la antena ex201. De forma similar, en el telefono celular ex115, la unidad de circuito de comunicacion ex301 amplifica los datos recibidos por la antena ex201 en el modo de conversacion y lleva a cabo la transformacion de frecuencia y la conversion analogica a digital de los datos, la unidad de circuito de modem ex306 lleva a cabo el procesamiento de amplio espectro inverso de los datos, y la unidad de procesamiento de voz ex305 los convierte en datos de voz analogicos, para que sean enviados por medio de la unidad de salida de voz ex208.
Ademas, cuando se transmite un correo electronico en modo de comunicacion de datos, los datos de texto del correo electronico introducidos al operar las teclas de operacion ex204 en el cuerpo principal son enviados a la unidad de control principal ex311 por medio de la unidad de control de entrada de operacion ex304. En la unidad de control principal ex311, despues de que la unidad de circuito de modem ex306 lleve a cabo el procesamiento de amplio espectro de los datos de texto y de que la unidad de circuito de comunicacion ex301 lleve a cabo la conversion digital a analogica y la transformacion de frecuencia de estos, los datos se transmiten al sitio de celula ex110 por medio de la antena ex201.
Cuando los datos de imagen se transmiten en modo de comunicacion de datos, los datos de imagen tomados por la unidad de camara ex203 son suministrados a la unidad de codificacion de imagenes ex312 por medio de la unidad de interfaz de camara ex303. Cuando no se transmiten, tambien es posible desplegar los datos de imagen tomados por la unidad de camara ex203 directamente sobre la unidad de presentacion visual 202 por medio de la unidad de interfaz de camara ex303 y la unidad de control de LCD ex302.
La unidad de codificacion de imagenes ex312, la cual incluye el aparato de codificacion de imagenes tal como se explica en la presente invencion, comprime y codifica los datos de imagen suministrados desde la unidad de camara ex203 usando el procedimiento de codificacion empleado por el aparato de codificacion de imagenes como el que se muestra en la realizacion que se ha mencionado en lo que antecede para transformar los mismos de esta manera en datos de imagen codificados, y los envfa a la unidad de multiplexion/separacion ex308. En este momento, el telefono celular ex115 envfa la voz recibida por la unidad de entrada de voz ex205 durante la toma por la unidad de camara ex203 a la unidad de multiplexion/separacion ex308 como datos de voz digitales por medio de la unidad de procesamiento de voz ex305.
La unidad de multiplexion/separacion ex308 multiplexa los datos de imagen codificados y suministrados desde la unidad de codificacion de imagenes ex312 y los datos de voz suministrados desde la unidad de procesamiento de voz ex305 usando un procedimiento predeterminado, a continuacion, la unidad de circuito de modem ex306 lleva a cabo el procesamiento de amplio espectro de los datos multiplexados obtenidos como resultado de la multiplexion, y la unidad de circuito de comunicacion ex301 lleva a cabo la conversion digital a analogica y la transformacion de frecuencia de los datos para su transmision por medio de la antena ex201.
Para recibir datos de un archivo de imagenes en movimiento que este enlazado a una pagina de red o similar en el modo de comunicacion de datos, la unidad de circuito de modem ex306 lleva a cabo un procesamiento de amplio espectro inverso de los datos recibidos desde el sitio de celula ex110 por medio de la antena ex201, y envfa los datos multiplexados obtenidos como resultado del procesamiento a la unidad de multiplexion/separacion ex308.
5
10
15
20
25
30
35
40
45
50
55
Para descodificar los datos multiplexados recibidos por medio de la antena ex201, la unidad de multiplexion/separacion ex308 separa los datos multiplexados en un flujo de bits de datos de imagen y un flujo de bits de datos de voz, y suministra los datos de imagen codificados a la unidad de codificacion de imagenes ex309 y los datos de voz a la unidad de procesamiento de voz ex305, respectivamente por medio de la barra colectora sincronizada ex313.
A continuacion, la unidad de descodificacion de imagenes ex309, la cual incluye el aparato de descodificacion de imagenes tal como se explica en la presente invencion, descodifica el flujo de bits de datos de imagen usando el procedimiento de descodificacion que se corresponde con el procedimiento de codificacion como el que se muestra en las realizaciones que se han mencionado en lo que antecede para generar datos de imagen en movimiento reproducidos, y suministra estos datos a la unidad de presentacion visual ex202 por medio de la unidad de control de LCD ex302, y de esta manera los datos de imagen en movimiento incluidos en un archivo de imagenes en movimiento enlazado a una pagina de red, por ejemplo, son desplegados. Al mismo tiempo, la unidad de procesamiento de voz ex305 convierte los datos de voz en datos de voz analogicos, y suministra estos datos a la unidad de salida de voz ex208, y de esta manera los datos de voz incluidos en un archivo de imagenes en movimiento enlazado a una pagina de red, por ejemplo, son reproducidos.
La presente invencion no se limita al sistema que se ha mencionado en lo que antecede, y al menos o bien el aparato de codificacion de imagenes o bien el aparato de descodificacion de imagenes en la realizacion que se ha mencionado en lo que antecede se pueden incorporar en un sistema de difusion digital como el que se muestra en la figura 56. Esta difusion digital por satelite o terrestre ha estado en boga recientemente. De manera mas especifica, un flujo de bits de informacion de video se transmite desde una estacion de difusion ex409 a, o comunicada con un satelite de difusion ex410 por medio de ondas de radio. Despues de la recepcion de esta, el satelite de difusion ex410 transmite ondas de radio para su difusion. A continuacion, una antena de uso domestico ex406 con una funcion de recepcion de difusion via satelite recibe las ondas de radio, y una television (receptor) ex401 o un descodificador de salon (STB, set top box) ex407 descodifica el flujo de bits codificado para su reproduccion. El aparato de descodificacion de imagenes como el que se muestra en la realizacion que se ha mencionado en lo que antecede se puede implementar en el aparato reproductor ex403 para la lectura y descodificacion del flujo de bits grabado en un medio de almacenamiento ex402 que sea un medio de grabacion tal como un CD y un DVD. En este caso, las senales de imagenes en movimiento reproducidas son desplegadas sobre un monitor ex404. Tambien es concebible implementar el aparato de descodificacion de imagenes en el descodificador de salon ex407 conectado a un cable ex405 para una television por cable o la antena ex406 para la difusion via satelite y/o terrestre para de esta manera reproducir los datos en un monitor ex408 de la television ex401. El aparato de descodificacion de imagenes puede estar incorporado en la television, no en el descodificador de salon. De forma similar, un automovil ex412 que tenga una antena ex411 puede recibir senales que provengan del satelite ex410 o el sitio de celula ex107 para reproducir imagenes en movimiento sobre un aparato de presentacion visual tal como un sistema de navegacion para automovil ex413.
Ademas, el aparato de codificacion de imagenes como el que se muestra en la realizacion que se ha mencionado en lo que antecede puede codificar senales de imagen y grabar las mismas en un medio de almacenamiento. Como un ejemplo concreto, se pueden citar una grabadora ex420 tal como una grabadora de DVD para grabar senales de imagenes en un disco DVD ex421 y una grabadora de discos para grabar las mismas en un disco duro. Estas se pueden grabar en una tarjeta SD ex422. Si la grabadora ex420 incluye el aparato de descodificacion de imagenes como el que se muestra en la realizacion que se ha mencionado en lo que antecede, las senales de imagen grabadas en el disco DVD ex421 o la tarjeta SD ex422 pueden ser reproducidas para su presentacion visual sobre el monitor ex408.
Como la estructura del sistema de navegacion para automovil ex413, es concebible la estructura sin la unidad de camara ex203, la unidad de interfaz de camara ex303 y la unidad de codificacion de imagenes ex312, de entre los componentes que se muestran en la figura 55. Lo mismo es de aplicacion para el ordenador ex111, la television (receptor) ex401 y otros.
Ademas, se pueden concebir tres tipos de implementaciones para una terminal tal como el telefono celular ex114 que se ha mencionado en lo que antecede; una terminal de envfo/recepcion implementada tanto con un codificador como con un descodificador, una terminal de envfo implementada solo con un codificador, y una terminal de recepcion implementada solo con un descodificador.
Tal como se ha descrito en lo que antecede, es posible usar el procedimiento de codificacion de imagenes en movimiento o el procedimiento de descodificacion de imagenes en movimiento en las realizaciones que se han mencionado en lo que antecede en cualquiera de los dispositivos y sistemas que se han mencionado en lo que antecede y, usando este procedimiento, se pueden obtener los efectos que se han descrito en las realizaciones anteriores.
Aplicabilidad industrial
El aparato de codificacion de imagenes de acuerdo con la presente invencion es util como un aparato de codificacion de imagenes integrado en un ordenador personal con capacidad de comunicaciones, un PDA, una estacion de
difusion para la difusion digital y un telefono celular o similar.
El aparato de descodificacion de imagenes de acuerdo con la presente invencion es util como un aparato de descodificacion de imagenes equipado para un ordenador personal con capacidad de comunicacion, un PDA, un STB para recibir transmisiones digitales y un telefono celular o similar.

Claims (3)

  1. 5
    10
    15
    20
    25
    30
    35
    40
    45
    50
    REIVINDICACIONES
    1. Un procedimiento de descodificacion para descodificar datos codificados de un bloque actual incluido en una imagen actual, comprendiendo el procedimiento de descodificacion;
    especificar un bloque co-situado que es un bloque incluido en una segunda imagen que es diferente de la imagen actual, estando el bloque co-situado situado en la segunda imagen en la misma posicion en la que esta situado el bloque actual en la imagen actual; y
    determinar los primeros y segundos vectores de movimiento del bloque actual para llevar a cabo la compensacion de movimiento en el bloque actual, usando un tercer vector de movimiento que es un vector de movimiento del bloque co-situado;
    generar una primera imagen predictiva del bloque actual usando el primer vector de movimiento del bloque actual y una segunda imagen predictiva del bloque actual usando el segundo vector de movimiento del bloque actual; generar una imagen predictiva del bloque actual en base a la primera imagen predictiva y la segunda imagen predictiva;
    descodificar los datos codificados del bloque actual para obtener una imagen de diferencia del bloque actual; y reconstruir el bloque actual anadiendo la imagen de diferencia del bloque actual y la imagen predictiva del bloque actual, caracterizado porque, en el caso en que una imagen de referencia a la que hace referencia el tercer vector de movimiento se almacena en una memoria de almacenamiento intermedio de imagenes a largo plazo, (i) el primer vector de movimiento, que se refiere a la imagen de referencia almacenada en la memoria de almacenamiento intermedio de imagenes a largo plazo, se determina que es igual al tercer vector de movimiento, y (ii) el segundo vector de movimiento, que se refiere a la segunda imagen que es diferente de la imagen actual, se determina que es igual a un valor de 0.
  2. 2. El procedimiento de descodificacion segun la reivindicacion 1,
    en el que, en el caso en que el bloque co-situado tiene dos vectores de movimiento, uno de los dos vectores de movimiento se usa como el tercer vector de movimiento,
    en el que dicho uno de los dos vectores de movimiento es un vector de movimiento que se refiere a una imagen de referencia seleccionada de una lista de imagenes de referencia en la que los numeros de identificacion mas bajos se asignan con prioridad a una imagen de referencia que se muestra antes que la imagen actual.
  3. 3. Un aparato de descodificacion para descodificar datos codificados de un bloque actual incluido en una imagen actual, comprendiendo el aparato de descodificacion:
    una unidad de especificacion operable para especificar un bloque co-situado que es un bloque incluido en una segunda imagen que es diferente de la imagen actual, estando el bloque co-situado situado en la segunda imagen en la misma posicion en la que esta situado el bloque actual en la imagen actual;
    una unidad de determinacion de vectores de movimiento operable para determinar vectores de movimiento
    primero y segundo del bloque actual para llevar a cabo la compensacion de movimiento en el bloque actual,
    usando un tercer vector de movimiento que es un vector de movimiento del bloque co-situado,
    una unidad de generacion de primeras y segundas imagenes predictivas operable para generar una primera
    imagen predictiva del bloque actual usando el primer vector de movimiento del bloque actual y una segunda
    imagen predictiva del bloque actual usando el segundo vector de movimiento del bloque actual;
    una unidad de generacion de imagen predictiva operable para generar una imagen predictiva del bloque actual
    en base a la primera imagen predictiva y la segunda imagen predictiva;
    una unidad de descodificacion de imagen de diferencia operable para descodificar los datos codificados del bloque actual para obtener una imagen de diferencia del bloque actual; y
    una unidad de reconstruccion de imagen de bloque operable para reconstruir el bloque actual anadiendo la imagen de diferencia del bloque actual y la imagen predictiva del bloque actual, caracterizado porque, en el caso en que una imagen de referencia a la que hace referencia el tercer vector de movimiento se almacena en una memoria de almacenamiento intermedio de imagenes a largo plazo, (i) el primer vector de movimiento, que se refiere a la imagen de referencia almacenada en la memoria de almacenamiento intermedio de imagenes a largo plazo, se determina que es igual al tercer vector de movimiento, y (ii) el segundo vector de movimiento, que se refiere a la segunda imagen que es diferente de la imagen actual, se determina que es igual a un valor de 0.
ES16157923.0T 2002-04-19 2003-04-16 Procedimiento de cálculo de vectores de movimiento Expired - Lifetime ES2644005T3 (es)

Applications Claiming Priority (22)

Application Number Priority Date Filing Date Title
JP2002118598 2002-04-19
JP2002118598 2002-04-19
JP2002121053 2002-04-23
JP2002121053 2002-04-23
US37864302P 2002-05-09 2002-05-09
US378643P 2002-05-09
US37895402P 2002-05-10 2002-05-10
US378954P 2002-05-10
JP2002156266 2002-05-29
JP2002156266 2002-05-29
JP2002177889 2002-06-19
JP2002177889 2002-06-19
JP2002193027 2002-07-02
JP2002193027 2002-07-02
JP2002204713 2002-07-12
JP2002204713 2002-07-12
JP2002262151 2002-09-06
JP2002262151 2002-09-06
JP2002290542 2002-10-02
JP2002290542 2002-10-02
JP2002323096 2002-11-06
JP2002323096 2002-11-06

Publications (1)

Publication Number Publication Date
ES2644005T3 true ES2644005T3 (es) 2017-11-27

Family

ID=32739031

Family Applications (5)

Application Number Title Priority Date Filing Date
ES10181711.2T Expired - Lifetime ES2592810T3 (es) 2002-04-19 2003-04-16 Método de cálculo de vectores de movimiento
ES10182272.4T Expired - Lifetime ES2588388T3 (es) 2002-04-19 2003-04-16 Método de cálculo de vectores de movimiento
ES16157928.9T Expired - Lifetime ES2664855T3 (es) 2002-04-19 2003-04-16 Procedimiento de cálculo de vectores de movimiento
ES03725587.4T Expired - Lifetime ES2576629T3 (es) 2002-04-19 2003-04-16 Método de cálculo de vectores de movimiento
ES16157923.0T Expired - Lifetime ES2644005T3 (es) 2002-04-19 2003-04-16 Procedimiento de cálculo de vectores de movimiento

Family Applications Before (4)

Application Number Title Priority Date Filing Date
ES10181711.2T Expired - Lifetime ES2592810T3 (es) 2002-04-19 2003-04-16 Método de cálculo de vectores de movimiento
ES10182272.4T Expired - Lifetime ES2588388T3 (es) 2002-04-19 2003-04-16 Método de cálculo de vectores de movimiento
ES16157928.9T Expired - Lifetime ES2664855T3 (es) 2002-04-19 2003-04-16 Procedimiento de cálculo de vectores de movimiento
ES03725587.4T Expired - Lifetime ES2576629T3 (es) 2002-04-19 2003-04-16 Método de cálculo de vectores de movimiento

Country Status (5)

Country Link
US (1) US20040146109A1 (es)
EP (12) EP3324623B1 (es)
KR (2) KR101068707B1 (es)
CN (7) CN1992895B (es)
ES (5) ES2592810T3 (es)

Families Citing this family (106)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040125204A1 (en) * 2002-12-27 2004-07-01 Yoshihisa Yamada Moving picture coding apparatus and moving picture decoding apparatus
JP4447197B2 (ja) * 2002-01-07 2010-04-07 三菱電機株式会社 動画像符号化装置および動画像復号装置
US7003035B2 (en) 2002-01-25 2006-02-21 Microsoft Corporation Video coding methods and apparatuses
KR100491530B1 (ko) * 2002-05-03 2005-05-27 엘지전자 주식회사 모션 벡터 결정 방법
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
US7289674B2 (en) * 2002-06-11 2007-10-30 Nokia Corporation Spatial prediction based intra coding
US7280700B2 (en) * 2002-07-05 2007-10-09 Microsoft Corporation Optimization techniques for data compression
WO2004008775A1 (ja) 2002-07-15 2004-01-22 Hitachi, Ltd. 動画像符号化方法及び復号化方法
KR100865034B1 (ko) * 2002-07-18 2008-10-23 엘지전자 주식회사 모션 벡터 예측 방법
US7154952B2 (en) 2002-07-19 2006-12-26 Microsoft Corporation Timestamp-independent motion vector prediction for predictive (P) and bidirectionally predictive (B) pictures
CN100591138C (zh) * 2002-11-25 2010-02-17 松下电器产业株式会社 图像编码方法及其装置、图像解码方法及其装置
KR100693669B1 (ko) * 2003-03-03 2007-03-09 엘지전자 주식회사 피일드 매크로 블록의 레퍼런스 픽쳐 결정 방법
US8064520B2 (en) 2003-09-07 2011-11-22 Microsoft Corporation Advanced bi-directional predictive coding of interlaced video
US7599435B2 (en) 2004-01-30 2009-10-06 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Video frame encoding and decoding
US8036271B2 (en) * 2004-02-24 2011-10-11 Lsi Corporation Method and apparatus for determining a second picture for temporal direct-mode block prediction
US7586924B2 (en) 2004-02-27 2009-09-08 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Apparatus and method for coding an information signal into a data stream, converting the data stream and decoding the data stream
US20050207490A1 (en) * 2004-03-18 2005-09-22 Wang Jason N Stored picture index for AVC coding
US7561620B2 (en) * 2004-08-03 2009-07-14 Microsoft Corporation System and process for compressing and decompressing multiple, layered, video streams employing spatial and temporal encoding
KR20060043118A (ko) * 2004-10-07 2006-05-15 엘지전자 주식회사 영상 신호의 인코딩 및 디코딩 방법
US8363730B2 (en) 2004-12-16 2013-01-29 Intel Corporation Local macroblock information buffer
US7813432B2 (en) * 2004-12-30 2010-10-12 Intel Corporation Offset buffer for intra-prediction of digital video
KR100751407B1 (ko) * 2005-03-09 2007-08-23 엘지전자 주식회사 영상 부호화 장치 및 움직임 추정 방법
JP2007067731A (ja) * 2005-08-30 2007-03-15 Sanyo Electric Co Ltd 符号化方法
JP4702943B2 (ja) * 2005-10-19 2011-06-15 キヤノン株式会社 画像処理装置及びその方法
US8208553B2 (en) * 2006-05-04 2012-06-26 Altera Corporation Methods and apparatus for quarter-pel refinement in a SIMD array processor
WO2008018626A2 (en) * 2006-08-10 2008-02-14 Canon Kabushiki Kaisha Image decoding apparatus
US7907217B2 (en) * 2006-10-31 2011-03-15 Siemens Medical Solutions Usa, Inc. Systems and methods of subtraction angiography utilizing motion prediction
JP5746811B2 (ja) * 2006-12-21 2015-07-08 味の素株式会社 大腸癌の評価方法、ならびに大腸癌評価装置、大腸癌評価方法、大腸癌評価システム、大腸癌評価プログラムおよび記録媒体
JP4427086B2 (ja) * 2006-12-27 2010-03-03 パナソニック株式会社 動画像復号化装置
US8411734B2 (en) 2007-02-06 2013-04-02 Microsoft Corporation Scalable multi-thread video decoding
US9100038B2 (en) * 2007-06-29 2015-08-04 Orange Decoding function selection distributed to the decoder
US8265144B2 (en) * 2007-06-30 2012-09-11 Microsoft Corporation Innovations in video decoder implementations
US8254455B2 (en) 2007-06-30 2012-08-28 Microsoft Corporation Computing collocated macroblock information for direct mode macroblocks
US9648325B2 (en) 2007-06-30 2017-05-09 Microsoft Technology Licensing, Llc Video decoding implementations for a graphics processing unit
US8238427B2 (en) * 2008-01-17 2012-08-07 Texas Instruments Incorporated Rate distortion optimized adaptive intra refresh for video coding
JP2010063092A (ja) * 2008-08-05 2010-03-18 Panasonic Corp 画像符号化装置、画像符号化方法、画像符号化集積回路およびカメラ
WO2010041856A2 (en) * 2008-10-06 2010-04-15 Lg Electronics Inc. A method and an apparatus for processing a video signal
US8189666B2 (en) 2009-02-02 2012-05-29 Microsoft Corporation Local picture identifier and computation of co-located information
US8855205B2 (en) * 2010-05-26 2014-10-07 Newratek Inc. Method of predicting motion vectors in video codec in which multiple references are allowed, and motion vector encoding/decoding apparatus using the same
US9124898B2 (en) * 2010-07-12 2015-09-01 Mediatek Inc. Method and apparatus of temporal motion vector prediction
KR20120009861A (ko) * 2010-07-22 2012-02-02 에스케이 텔레콤주식회사 확장된 스킵모드를 이용한 영상 부호화/복호화 방법 및 장치
CN105338364B (zh) * 2010-10-06 2018-07-24 株式会社Ntt都科摩 图像预测解码装置、图像预测解码方法
US8824558B2 (en) * 2010-11-23 2014-09-02 Mediatek Inc. Method and apparatus of spatial motion vector prediction
KR101825768B1 (ko) * 2010-11-24 2018-02-05 벨로스 미디어 인터내셔널 리미티드 움직임 벡터 산출 방법, 화상 부호화 방법, 화상 복호 방법, 움직임 벡터 산출 장치 및 화상 부호화 복호 장치
US8885729B2 (en) 2010-12-13 2014-11-11 Microsoft Corporation Low-latency video decoding
US9706214B2 (en) 2010-12-24 2017-07-11 Microsoft Technology Licensing, Llc Image and video decoding implementations
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
CN106878742B (zh) 2011-01-12 2020-01-07 太阳专利托管公司 动态图像编解码装置
WO2012102021A1 (ja) 2011-01-25 2012-08-02 パナソニック株式会社 動画像符号化方法および動画像復号化方法
KR20220070072A (ko) 2011-02-09 2022-05-27 엘지전자 주식회사 움직임 정보 저장 방법 및 이를 이용한 시간적 움직임 벡터 예측자 유도 방법
KR20120095814A (ko) * 2011-02-21 2012-08-29 한밭대학교 산학협력단 복수 참조 영상을 이용한 영상 부복호화 방법 및 이러한 방법을 사용하는 장치
WO2012114694A1 (ja) * 2011-02-22 2012-08-30 パナソニック株式会社 動画像符号化方法、動画像符号化装置、動画像復号方法、および、動画像復号装置
MX2013009864A (es) 2011-03-03 2013-10-25 Panasonic Corp Metodo de codificacion de imagenes en movimiento, metodo de decodificacion de imagenes en movimiento, aparato de codificacion de imagenes en movimiento, aparato de decodificacion de imagenes en movimiento y aparato de codificacion y decodificacion de imagenes en movimiento.
JP5979405B2 (ja) * 2011-03-11 2016-08-24 ソニー株式会社 画像処理装置および方法
FR2972878B1 (fr) * 2011-03-15 2014-01-10 Cassidian Sas Procede d'encodage correcteur d'erreur, procede de decodage et dispositifs associes.
PL2698999T3 (pl) 2011-04-12 2017-10-31 Sun Patent Trust Sposób kodowania ruchomych obrazów, urządzenie do kodowania ruchomych obrazów, sposób dekodowania ruchomych obrazów, urządzenie do dekodowania ruchomych obrazów, oraz urządzenie do kodowania/dekodowania ruchomych obrazów
CA2833893C (en) 2011-05-24 2024-02-27 Panasonic Corporation Image coding method, image coding apparatus, image decoding method, image decoding apparatus, and image coding and decoding apparatus
US9485518B2 (en) 2011-05-27 2016-11-01 Sun Patent Trust Decoding method and apparatus with candidate motion vectors
PL3614665T3 (pl) 2011-05-27 2022-07-04 Sun Patent Trust Sposób kodowania obrazów, urządzenie do kodowania obrazów, sposób dekodowania obrazów, urządzenie do dekodowania obrazów, i urządzenie do kodowania i dekodowania obrazów
SG194746A1 (en) 2011-05-31 2013-12-30 Kaba Gmbh Image encoding method, image encoding device, image decoding method, image decoding device, and image encoding/decoding device
CA2834191C (en) 2011-05-31 2019-04-09 Panasonic Corporation Video encoding method, video encoding device, video decoding method, video decoding device, and video encoding/decoding device
JP5786478B2 (ja) * 2011-06-15 2015-09-30 富士通株式会社 動画像復号装置、動画像復号方法、及び動画像復号プログラム
JP5318292B2 (ja) 2011-06-23 2013-10-16 パナソニック株式会社 画像復号方法及び画像復号装置
USRE47366E1 (en) 2011-06-23 2019-04-23 Sun Patent Trust Image decoding method and apparatus based on a signal type of the control parameter of the current block
WO2012176464A1 (ja) 2011-06-24 2012-12-27 パナソニック株式会社 画像復号方法、画像符号化方法、画像復号装置、画像符号化装置及び画像符号化復号装置
CN106878723B (zh) 2011-06-24 2019-11-12 太阳专利托管公司 编码方法及编码装置
WO2012176450A1 (ja) * 2011-06-24 2012-12-27 パナソニック株式会社 画像符号化方法、画像復号方法、画像符号化装置、画像復号装置および画像符号化復号装置
RU2608244C2 (ru) 2011-06-27 2017-01-17 Сан Пэтент Траст Способ кодирования изображений, способ декодирования изображений, устройство кодирования изображений, устройство декодирования изображений и устройство кодирования и декодирования изображений
BR112013030181B1 (pt) 2011-06-28 2022-09-27 Sun Patent Trust Método de decodificação para decodificar um parâmetro de controle para controlar decodificação de uma imagem, e método de codificação para codificar um parâmetro de controle para controlar codificação de uma imagem
WO2013001767A1 (ja) 2011-06-29 2013-01-03 パナソニック株式会社 画像復号方法、画像符号化方法、画像復号装置、画像符号化装置及び画像符号化復号装置
KR102060619B1 (ko) 2011-06-30 2019-12-30 선 페이턴트 트러스트 화상 복호 방법, 화상 부호화 방법, 화상 복호 장치, 화상 부호화 장치 및 화상 부호화 복호 장치
KR20150088909A (ko) * 2011-06-30 2015-08-03 가부시키가이샤 제이브이씨 켄우드 화상 부호화 장치, 화상 부호화 방법, 화상 부호화 프로그램, 화상 복호 장치, 화상 복호 방법 및 화상 복호 프로그램
TWI533677B (zh) 2011-06-30 2016-05-11 微軟技術授權有限責任公司 用於減少視訊編碼及解碼中之延遲的方法、系統及電腦可讀取媒體
JP5905884B2 (ja) 2011-06-30 2016-04-20 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカPanasonic Intellectual Property Corporation of America 復号方法及び復号装置
KR101900986B1 (ko) 2011-06-30 2018-09-20 선 페이턴트 트러스트 화상 복호 방법, 화상 부호화 방법, 화상 복호 장치, 화상 부호화 장치, 및, 화상 부호화 복호 장치
MX2014000159A (es) * 2011-07-02 2014-02-19 Samsung Electronics Co Ltd Metodo y aparato para la codificacion de video, y metodo y aparato para la decodificacion de video acompañada por inter prediccion utilizando imagen co-localizada.
CA2838575C (en) 2011-07-11 2018-06-12 Panasonic Corporation Image decoding method, image coding method, image decoding apparatus, image coding apparatus, and image coding and decoding apparatus
US9819963B2 (en) 2011-07-12 2017-11-14 Electronics And Telecommunications Research Institute Inter prediction method and apparatus for same
IN2014CN00729A (es) 2011-08-03 2015-04-03 Panasonic Corp
US8731067B2 (en) 2011-08-31 2014-05-20 Microsoft Corporation Memory management for video decoding
US9338474B2 (en) * 2011-09-23 2016-05-10 Qualcomm Incorporated Reference picture list construction for video coding
JP5698644B2 (ja) * 2011-10-18 2015-04-08 株式会社Nttドコモ 動画像予測符号化方法、動画像予測符号化装置、動画像予測符号化プログラム、動画像予測復号方法、動画像予測復号装置及び動画像予測復号プログラム
KR101999869B1 (ko) 2011-10-19 2019-07-12 선 페이턴트 트러스트 화상 부호화 방법, 화상 부호화 장치, 화상 복호 방법, 및, 화상 복호 장치
LT3416387T (lt) * 2011-11-02 2024-01-10 Tagivan Ii Llc Vaizdo kodavimo būdas ir vaizdo kodavimo įrenginys
US20140307783A1 (en) 2011-11-08 2014-10-16 Samsung Electronics Co., Ltd. Method and apparatus for motion vector determination in video encoding or decoding
US9819949B2 (en) 2011-12-16 2017-11-14 Microsoft Technology Licensing, Llc Hardware-accelerated decoding of scalable video bitstreams
WO2013099244A1 (ja) * 2011-12-28 2013-07-04 株式会社Jvcケンウッド 動画像符号化装置、動画像符号化方法及び動画像符号化プログラム、並びに動画像復号装置、動画像復号方法及び動画像復号プログラム
WO2013099031A1 (ja) * 2011-12-28 2013-07-04 株式会社安川電機 エンジニアリングツール
CN108235032B (zh) * 2012-01-18 2022-01-07 Jvc 建伍株式会社 动图像解码装置以及动图像解码方法
ES2865101T3 (es) * 2012-02-03 2021-10-15 Sun Patent Trust 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
AU2013285749B2 (en) * 2012-07-02 2016-06-16 Samsung Electronics Co., Ltd. Method and apparatus for predicting motion vector for coding video or decoding video
US9584804B2 (en) 2012-07-10 2017-02-28 Qualcomm Incorporated Coding SEI NAL units for video coding
US9106793B2 (en) * 2013-01-03 2015-08-11 Cisco Technology, Inc. Method and apparatus for motion based participant switching in multipoint video conferences
US9800857B2 (en) * 2013-03-08 2017-10-24 Qualcomm Incorporated Inter-view residual prediction in multi-view or 3-dimensional video coding
JP6986721B2 (ja) 2014-03-18 2021-12-22 パナソニックIpマネジメント株式会社 復号装置及び符号化装置
US20150271514A1 (en) * 2014-03-18 2015-09-24 Panasonic Intellectual Property Management Co., Ltd. Prediction image generation method, image coding method, image decoding method, and prediction image generation apparatus
GB2531003A (en) * 2014-10-06 2016-04-13 Canon Kk Method and apparatus for vector encoding in video coding and decoding
US10148965B2 (en) * 2015-03-04 2018-12-04 Panasonic Intellectual Property Management Co., Ltd. Moving image coding apparatus and moving image coding method
US10602157B2 (en) 2015-09-11 2020-03-24 Facebook, Inc. Variable bitrate control for distributed video encoding
US10506235B2 (en) 2015-09-11 2019-12-10 Facebook, Inc. Distributed control of video encoding speeds
US10063872B2 (en) * 2015-09-11 2018-08-28 Facebook, Inc. Segment based encoding of video
US10375156B2 (en) 2015-09-11 2019-08-06 Facebook, Inc. Using worker nodes in a distributed video encoding system
US10602153B2 (en) 2015-09-11 2020-03-24 Facebook, Inc. Ultra-high video compression
US10499070B2 (en) 2015-09-11 2019-12-03 Facebook, Inc. Key frame placement for distributed video encoding
US10341561B2 (en) 2015-09-11 2019-07-02 Facebook, Inc. Distributed image stabilization
CN109996075B (zh) * 2017-12-29 2022-07-12 华为技术有限公司 一种图像解码方法及解码器

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5398078A (en) * 1991-10-31 1995-03-14 Kabushiki Kaisha Toshiba Method of detecting a motion vector in an image coding apparatus
JPH05137131A (ja) * 1991-11-13 1993-06-01 Sony Corp フレーム間動き予測方法
EP2129133A3 (en) * 1995-08-29 2012-02-15 Sharp Kabushiki Kaisha Video coding device and video decoding device with a motion compensated interframe prediction
JP2001224036A (ja) * 1995-10-18 2001-08-17 Sharp Corp 動画像符号化装置
JP3344577B2 (ja) * 1996-09-09 2002-11-11 ソニー株式会社 画像符号化装置および画像符号化方法、画像復号化装置および画像復号化方法、並びに記録方法
JP3263807B2 (ja) * 1996-09-09 2002-03-11 ソニー株式会社 画像符号化装置および画像符号化方法
JP3344576B2 (ja) * 1996-09-09 2002-11-11 ソニー株式会社 画像符号化装置および画像符号化方法、画像復号化装置および画像復号化方法
US6005980A (en) * 1997-03-07 1999-12-21 General Instrument Corporation Motion estimation and compensation of video object planes for interlaced digital video
US5991447A (en) * 1997-03-07 1999-11-23 General Instrument Corporation Prediction and coding of bi-directionally predicted video object planes for interlaced digital video
CN1297147C (zh) * 1997-03-07 2007-01-24 通用仪器公司 对交错数字视频的双向预测的视频目标平面的预测和编码
JPH1169356A (ja) * 1997-08-25 1999-03-09 Mitsubishi Electric Corp 動画像符号化方式及び動画像復号方式
KR100523908B1 (ko) * 1997-12-12 2006-01-27 주식회사 팬택앤큐리텔 격행주사 영상에 대한 영상신호 부호화 장치 및 그 방법
CA2265089C (en) * 1998-03-10 2007-07-10 Sony Corporation Transcoding system using encoding history information
DE69801209T2 (de) * 1998-03-20 2001-11-08 St Microelectronics Srl Hierarchischer rekursiver Bewegungsschätzer für Bewegtbildkodierer
GB2362532B (en) * 2000-05-15 2004-05-05 Nokia Mobile Phones Ltd Video coding
JP2002121053A (ja) 2000-10-11 2002-04-23 Koyu Sangyo Kk セメント、コンクリート混和材及びその製造方法
JP4557411B2 (ja) 2000-11-17 2010-10-06 大阪瓦斯株式会社 流体流量計測システム
JP2002177889A (ja) 2000-12-12 2002-06-25 Iseki & Co Ltd 回転式穀粒選別装置
JP4526700B2 (ja) 2000-12-27 2010-08-18 株式会社エクォス・リサーチ 配光制御装置
JP2002204713A (ja) 2001-01-11 2002-07-23 Taishou:Kk ヘアーグリップ
JP2002262151A (ja) 2001-03-01 2002-09-13 Konica Corp デジタルカメラ、ネットワークプリントシステム、情報記録媒体、読取装置、及び電子機器
JP4369070B2 (ja) 2001-03-27 2009-11-18 東芝テック株式会社 通信端末装置および通信端末装置の制御方法
JP2002323096A (ja) 2001-04-24 2002-11-08 Aisin Ai Co Ltd 歯車式変速機
JP2002118598A (ja) 2001-08-06 2002-04-19 Nippon Telegr & Teleph Corp <Ntt> 輻輳検出方法、輻輳防止方法、およびパケット通信システム
ES2545213T3 (es) * 2001-11-21 2015-09-09 Google Technology Holdings LLC Codificación de cuadro/campo adaptativa de nivel de macrobloques para contenido de vídeo digital
EP2285120A1 (en) * 2001-11-21 2011-02-16 General Instrument Corporation Picture level adaptive frame/field coding for digital video content

Also Published As

Publication number Publication date
ES2664855T3 (es) 2018-04-23
EP3324624B1 (en) 2019-06-12
EP3054681B1 (en) 2018-02-28
EP3324626B1 (en) 2019-06-12
CN1992895B (zh) 2010-12-08
EP3059952B1 (en) 2017-07-19
KR101068707B1 (ko) 2011-09-28
EP2271106A2 (en) 2011-01-05
CN1976457A (zh) 2007-06-06
CN1976456A (zh) 2007-06-06
EP3324626A1 (en) 2018-05-23
CN101018329A (zh) 2007-08-15
EP2271106B1 (en) 2016-05-25
CN1976457B (zh) 2011-10-12
EP3525465B1 (en) 2021-03-17
KR20100093581A (ko) 2010-08-25
CN101115199A (zh) 2008-01-30
EP3324625B1 (en) 2019-06-12
EP3054681A1 (en) 2016-08-10
EP2271105B1 (en) 2016-06-29
EP3525465A1 (en) 2019-08-14
KR101031423B1 (ko) 2011-04-26
EP2271105A2 (en) 2011-01-05
EP3525464B1 (en) 2021-03-03
EP3525467A1 (en) 2019-08-14
EP3324623B1 (en) 2019-06-12
CN101115199B (zh) 2010-05-12
EP3054680B1 (en) 2019-06-05
CN1976456B (zh) 2011-06-08
EP3054680A1 (en) 2016-08-10
CN1992895A (zh) 2007-07-04
EP3324624A1 (en) 2018-05-23
EP3059952A1 (en) 2016-08-24
EP2271105A3 (en) 2011-08-10
EP3324623A1 (en) 2018-05-23
KR20040096414A (ko) 2004-11-16
ES2588388T3 (es) 2016-11-02
ES2576629T3 (es) 2016-07-08
CN1976454A (zh) 2007-06-06
US20040146109A1 (en) 2004-07-29
ES2592810T3 (es) 2016-12-01
CN1976454B (zh) 2011-05-11
EP3525467B1 (en) 2021-02-24
CN1976455B (zh) 2011-12-07
EP3525464A1 (en) 2019-08-14
EP2271106A3 (en) 2011-08-10
EP3324625A1 (en) 2018-05-23
CN101018329B (zh) 2014-05-14
CN1976455A (zh) 2007-06-06

Similar Documents

Publication Publication Date Title
ES2644005T3 (es) Procedimiento de cálculo de vectores de movimiento
ES2743606T3 (es) Procedimiento de cálculo de vectores de movimiento
ES2489490T3 (es) Método de codificación de imágenes en movimiento y método de decodificación de imágenes en movimiento
ES2495440T3 (es) Procedimiento de codificación de fotogramas de movimiento y procedimiento de decodificación de fotogramas de movimiento
ES2410533T3 (es) Procedimiento de decodificación de vectores de movimiento
JP2004208259A (ja) 動きベクトル計算方法
JP2004208258A (ja) 動きベクトル計算方法
BRPI0304534B1 (pt) método e aparelho para determinar o vetor de movimento