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

Procedimiento de cálculo de vectores de movimiento Download PDF

Info

Publication number
ES2742799T3
ES2742799T3 ES16157926T ES16157926T ES2742799T3 ES 2742799 T3 ES2742799 T3 ES 2742799T3 ES 16157926 T ES16157926 T ES 16157926T ES 16157926 T ES16157926 T ES 16157926T ES 2742799 T3 ES2742799 T3 ES 2742799T3
Authority
ES
Spain
Prior art keywords
image
motion vector
block
images
motion
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
ES16157926T
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 ES2742799T3 publication Critical patent/ES2742799T3/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/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/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/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/573Motion compensation with multiple frame prediction using two or more reference frames in a given prediction direction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/577Motion compensation with bidirectional frame interpolation, i.e. using B-pictures
    • 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/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/583Motion compensation with overlapping blocks
    • 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
    • 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/184Methods 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 bits, e.g. of the compressed video stream

Abstract

Un procedimiento de codificación de imágenes para codificar un bloque actual incluido en una imagen actual usando codificación de modo directo, caracterizado porque el procedimiento de codificación de imágenes comprende: en referencia a una primera lista en la que se asignan índices más pequeños a las imágenes que preceden a la imagen actual en orden de visualización que los índices asignados a las imágenes que siguen a la imagen actual, siendo la primera lista una lista de bloques de asociación de índice incluidos en la imagen actual con cada imagen a la que hacen referencia los bloques; seleccionar, de la primera lista, como primera imagen de referencia, una imagen con el índice más pequeño de una pluralidad de imágenes a las que se refiere una pluralidad de bloques vecinos, estando la pluralidad de bloques vecinos en la vecindad del bloque actual en la imagen actual; en referencia a una segunda lista en la que se asignan índices más pequeños a las imágenes que siguen a la imagen actual en orden de visualización que los índices asignados a las imágenes que preceden a la imagen actual, siendo la segunda lista una lista de bloques de asociación de índice incluidos en la imagen actual con cada imagen a la que hacen referencia los bloques; seleccionar, de la segunda lista, como segunda imagen de referencia, una imagen con el índice más pequeño fuera de la pluralidad de imágenes a las que se refiere la pluralidad de bloques vecinos; y codificar de manera predictiva el bloque actual haciendo referencia a la primera imagen de referencia y a la segunda imagen de referencia.

Description

DESCRIPCIÓN
Procedimiento de cálculo de vectores de movimiento
Campo de la técnica
La presente invención se refiere a un procedimiento de codificación y a un procedimiento de descodificación de imágenes en movimiento y, en concreto, a un procedimiento de codificación de predicción que hace referencia a varias imágenes codificadas precedentes en orden de presentación visual o a varias imágenes codificadas siguientes en orden de presentación visual o a varias imágenes tanto precedentes como siguientes en orden de presentación visual.
Antecedentes de la técnica
En general, el volumen de información se comprime mediante la reducción de la redundancia en direcciones temporal y espacial para la codificación de imágenes en movimiento. Por lo tanto, la obtención de movimiento y la compensación 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 codificación para un valor de diferencia entre una imagen predictiva obtenida y una imagen actual para la codificación de predicción entre imágenes orientada a reducir una redundancia temporal.
En un procedimiento de codificación de imágenes en movimiento H.26L, el cual está actualmente bajo normalización, se proponen una imagen con solo codificación de predicción entre imágenes (imagen I), una imagen para la cual se lleva a cabo la codificación de predicción entre imágenes 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 codificación de predicción entre imágenes haciendo referencia a dos imágenes precedentes en orden de presentación visual o dos imágenes siguientes en orden de presentación visual o cada una de imágenes precedente y siguiente en orden de presentación visual (en lo sucesivo en el presente documento, la imagen B).
La figura 1 es una ilustración que muestra un ejemplo de una relación de referencia entre cada imagen de acuerdo con el procedimiento de codificación de imágenes en movimiento que se ha mencionado en lo que antecede e imágenes de referencia.
En la imagen I1 se lleva a cabo la codificación de predicción entre imágenes sin una imagen de referencia, y en la imagen P10 se lleva a cabo la codificación de predicción entre imágenes haciendo referencia a una imagen precedente en orden de presentación visual, P7. En una imagen B6, se lleva a cabo la codificación de predicción entre imágenes haciendo referencia a dos imágenes precedentes en orden de presentación visual, en una imagen B12 se lleva a cabo la codificación de predicción entre imágenes haciendo referencia a dos imágenes siguientes en orden de presentación visual y en una imagen B18 se lleva a cabo la codificación de predicción entre imágenes haciendo referencia a cada una de las imágenes precedente y siguiente en orden de presentación visual.
Un modo directo es un modo de predicción de bi-predicciones que llevan a cabo la codificación de predicción entre imágenes haciendo referencia a cada una de las imágenes precedente y siguiente en orden de presentación 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 compensación 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 presentación visual, y se genera un bloque predictivo.
El documento JVT-B118r2, “Working Draft Number 2, Revision 2 (WD-2)”, 2002-03.15, desvela un procedimiento de codificación de codificación de imágenes para codificar un bloque actual incluido en una imagen actual que usa codificación de modo directo.
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 presentación visual. “P” indicado por una línea 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-predicción haciendo referencia a las imágenes P82 y P84, es una imagen actual que se va a codificar. Si se supone que un bloque con codificación 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 atrás 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 aplicación de un ajuste de escala a un vector de movimiento MV81 y un intervalo de tiempo TR81 basándose en la Ecuación 1 (a) y la Ecuación 1 (b).
MV82 = MV81/TR81 * TR82 Ecuación 1 (a)
MV83 = -MV81/TR81 * TR83 Ecuación 1 (b)
En estas ecuaciones, el intervalo de tiempo TR81 muestra un intervalo entre la imagen P84 y la imagen P82, es decir, 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 predicción temporal ya explicada y la predicción espacial, y la predicción espacial se explica en lo sucesivo. En la predicción espacial en el modo directo, por ejemplo, la codificación se lleva a cabo en un macrobloque de una forma de 16 x 16 píxeles, y un vector de movimiento, el cual se obtiene haciendo referencia a una imagen lo más cercana a una imagen actual que se va a codificar en orden de presentación 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 movimientos hacen referencia a una misma imagen, se selecciona un valor medio. Si dos de tres vectores de movimiento hacen referencia a una imagen lo más cercana a una imagen actual que se va a codificar en orden de presentación 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 más cercana a una imagen actual que se va a codificar en orden de presentación 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 predicción de movimiento se lleva a cabo usando un vector de movimiento contenido en otro macrobloque.
La figura 3A es una ilustración que muestra un ejemplo de un procedimiento de predicción de vectores de movimiento en el caso de que se haga referencia a una imagen que preceda en una imagen B en orden de presentación visual usando un procedimiento de predicción espacial convencional en el modo directo. En esta figura 3A, P indica una imagen P, B indica una imagen B y los números asignados a tipos de imagen a la derecha de cuatro imágenes 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 predicción espacial en el modo directo, en primer lugar, tres macrobloques codificados (área sombreada con líneas discontinuas) se seleccionan del adyacente del macrobloque actual que se va a codificar. Se omite en el presente caso la explicación 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 imágenes para cada macrobloque incluso si los macrobloques están en una misma imagen. Los índices de referencia en las imágenes de referencia usadas para codificar cada macrobloque pueden mostrar a qué imagen hacen referencia los tres macrobloques adyacentes respectivamente de la misma. El detalle de los índices de referencia se explicará más adelante.
A continuación, 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 número de imagen 11 de “11”, y el vector de movimiento c se obtiene haciendo referencia a una imagen P con el número 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 más cercana a una imagen actual que se va a codificar en orden de tiempo de presentación 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 codificación tal como MPEG-4 puede llevar a cabo la codificación para cada macrobloque en una imagen usando una estructura de campo y una estructura de trama. Por lo tanto, en un procedimiento de codificación 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 predicción espacial que se ha mencionado en lo que antecede en el modo directo sin ningún 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 explicó. 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.
No obstante, en el procedimiento de predicción temporal en el modo directo, debido a que el macrobloque que se ha mencionado en lo anterior contiene varios vectores de movimiento para la predicción temporal en el modo directo cuando es un bloque con codificación de predicción entre imágenes, se lleva a cabo la compensación 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 cálculo del vector de movimiento por un ajuste de escala basándose en la ecuación 1. Además, existe un caso en el que la precisión del valor del vector de movimiento (precisión de medio píxel y precisión de píxel de un cuarto, por ejemplo) no satisface la predicción predeterminada debido a que la operación de división se lleva a cabo después del cálculo 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 predicción espacial, no se especifica cuál 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 invención es ofrecer un procedimiento de predicción de vectores de movimiento en dirección temporal con alta precisión 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 invención es ofrecer un procedimiento de predicción de vectores de movimiento en dirección espacial con alta precisión en el modo directo, incluso si un bloque del cual se hace referencia a un vector de movimiento pertenece a una imagen B.
Divulgación de la invención
Con el fin de lograr el objetivo anterior, se proporciona un procedimiento de codificación de imágenes según lo definido en la reivindicación 1, y se proporciona un aparato de codificación de imágenes según lo definido en la reivindicación 4.
Breve descripción de los dibujos
La figura 1 es un diagrama esquemático que muestra una relación de referencia de imágenes de un ejemplo convencional.
La figura 2 es un diagrama esquemático que muestra una operación en un modo directo convencional.
La figura 3A es una ilustración que muestra un ejemplo de un procedimiento de predicción de vectores de movimiento cuando se hace referencia a una imagen temporalmente precedente en una imagen B usando un procedimiento de predicción espacial de un modo directo convencional.
La figura 3B es una ilustración que muestra un ejemplo de una lista de referencia generada en cada imagen actual que se va a codificar.
La figura 4 es una ilustración explicativa de números de imagen e índices de referencia.
La figura 5 es una ilustración que muestra un concepto de un formato de señal de codificación de imagen de un aparato de codificación de imágenes convencional.
La figura 6 es un diagrama de bloques que muestra una operación de codificación de acuerdo con la primera y la segunda realizaciones de esta invención.
La figura 7 es un diagrama esquemático que muestra una operación 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 presentación visual.
La figura 8 en un diagrama esquemático que compara una relación de referencia de imágenes en orden de presentación visual y en orden de codificación.
La figura 9 es un diagrama esquemático que muestra una operación 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 presentación visual.
La figura 10 es un diagrama esquemático que compara una relación de referencia de imágenes en el orden de presentación visual y en el orden de codificación.
La figura 11 es un diagrama de bloques que muestra una operación de descodificación de acuerdo con la quinta y sexta realizaciones de la presente invención.
La figura 12 es un diagrama esquemático que muestra una operación 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 presentación visual.
La figura 13 es un diagrama esquemático para mostrar una operación 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 presentación visual.
La figura 14 es un diagrama esquemático para mostrar una operación 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 presentación visual.
La figura 15 es un diagrama esquemático para mostrar una operación 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 presentación visual.
La figura 16 es un diagrama esquemático para mostrar una operación 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 presentación visual.
La figura 17 es un diagrama esquemático para mostrar una operación 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 presentación visual.
La figura 18 es un diagrama esquemático para mostrar una operación 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 presentación visual.
La figura 19 es un diagrama esquemático para mostrar una operación 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 presentación visual.
La figura 20 es un diagrama esquemático para mostrar una operación 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 presentación visual.
La figura 21 es un diagrama esquemático para mostrar una operación 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 presentación visual.
La figura 22 es un diagrama esquemático para mostrar una operación 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 presentación visual.
La figura 23 es un diagrama esquemático para mostrar una operación cuando se hace referencia a un vector de movimiento de un bloque adyacente en el modo directo.
La figura 24 es una ilustración que muestra un flujo de bits.
La figura 25 es una ilustración que muestra una relación 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 ilustración 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 ilustración 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 ilustración 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 ilustración 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 ilustración 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 ilustración 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 ilustración 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 ilustración 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 ilustración que muestra un procedimiento para determinar un vector de movimiento que se va a usar en el modo directo.
La figura 35 es una ilustración que muestra una relación 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 ilustración que muestra un procedimiento para determinar un vector de movimiento de un bloque actual que se va a codificar usando un valor de un índice de referencia.
La figura 37 es una ilustración que muestra la bi-predicción en el modo directo cuando un vector de movimiento que hace referencia a una imagen almacenada en una memoria de almacenamiento intermedio de imágenes de largo plazo es solo uno.
La figura 38 es una ilustración que muestra la bi-predicción en el modo directo cuando vectores de movimiento que hacen referencia a una imagen almacenada en la memoria de almacenamiento intermedio de imágenes a largo plazo son dos.
La figura 39 es una ilustración que muestra un flujo de proceso de un procedimiento de cálculo de vectores de movimiento.
La figura 40 es un diagrama de bloques que muestra una configuración de un aparato de codificación de imágenes en movimiento 100 de acuerdo con la undécima realización de la presente invención.
La figura 41A es una ilustración que muestra un orden de tramas introducidas en el aparato de codificación de imágenes en movimiento 100 en orden de tiempo de una forma imagen a imagen.
La figura 41B es una ilustración que muestra el caso en el que el orden de tramas que se muestra en la figura 41A se reordena en el orden de codificación.
La figura 42 es una ilustración que muestra una estructura de una lista de imágenes de referencia para explicar la primera realización.
La figura 43A es un diagrama de flujo que muestra un ejemplo de un procedimiento de cálculo de vectores de movimiento usando un procedimiento de predicción 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 ilustración que muestra un ejemplo de una ubicación de pares de macrobloques adyacentes a los cuales se aplica la presente invención cuando un par de macrobloques actuales que se va a codificar se codifica en una estructura de trama.
La figura 43C es una ilustración que muestra un ejemplo de la ubicación de pares de macrobloques adyacentes a los cuales se aplica la presente invención cuando un par de macrobloques actuales que se va a codificar se codifica en una estructura de campo.
La figura 44 es una ilustración que muestra una configuración de datos de un par de macrobloques cuando la codificación se lleva a cabo en una estructura de trama, y una configuración de datos de un par de macrobloques cuando la codificación se lleva a cabo en una estructura de campo.
La figura 45 es una gráfica 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 gráfica indicadora que muestra una relación entre índices de campos de referencia e índices de tramas de referencia.
La figura 47 es una gráfica 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 ilustración que muestra una relación de posición entre un par de macrobloques adyacentes que se va a codificar y pares de macrobloques adyacentes para explicar de esta forma la primera realización. La figura 49 es una ilustración que muestra una relación de posición entre un par de macrobloques actual que se va a codificar y pares de macrobloques adyacentes para poder explicar la primera realización.
La figura 50 es una ilustración que muestra un ejemplo de una configuración de datos de un flujo de bits 700 generado por una unidad de generación de flujos de bits 104.
La figura 51 es un diagrama de bloques que muestra una configuración de un aparato de descodificación de imágenes en movimiento 800 'que descodifica el flujo de bits 700 que se muestra en la figura 50.
La figura 52A es una ilustración que muestra un ejemplo de un formato físico de un disco flexible el cual es un cuerpo de un medio de almacenamiento.
La figura 52B es una ilustración que muestra una vista externa del disco flexible visto desde delante, una configuración de la sección y el disco flexible.
La figura 52C es una ilustración que muestra una configuración 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 configuración completa del sistema de suministro de contenidos que implementa un servicio de suministro de contenidos.
La figura 54 es una ilustración que muestra un ejemplo de una aparición de un teléfono celular.
La figura 55 es un diagrama de bloques que muestra una configuración del teléfono celular.
La figura 56 es una ilustración para mostrar un dispositivo que lleva a cabo el proceso de codificación o de descodificación que se ha mostrado en realizaciones anteriores, y un sistema que usa el dispositivo.
Mejor forma para llevar a cabo la invención
La presente invención es para resolver problemas de la tecnología convencional, y tiene por objeto proponer un procedimiento de codificación y de descodificación de imágenes en movimiento que puede determinar un vector de movimiento usado para la compensación de movimiento sin contradicción, 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 índices de referencia se explican en el presente caso.
La figura 3B es una ilustración que muestra un ejemplo de una lista de imágenes de referencia 10 generada para cada imagen actual que se va a codificar. En la lista de imágenes de referencia 10 que se muestra en la figura 3B, se muestran imágenes precedentes y siguientes a una imagen B en orden de presentación visual con una imagen B en el centro, y se muestran imágenes a las cuales la imagen B puede hacer referencia, tipos de imágenes, un número de imagen 11, el primer índice de referencia 12 y el segundo índice de referencia 13. El número de imagen 11 es, por ejemplo, un número que muestra un orden en el cual se codifica cada imagen. El primer índice de referencia 12 es el primer índice que muestra una relación de posición 'relativa entre una imagen actual que se va a codificar e imágenes adyacentes, y, por ejemplo, se usa principalmente como un índice cuando una imagen actual que se va a codificar hace referencia a una imagen precedente en orden de presentación visual. Una lista del primer índice de referencia 12 se denomina “lista de índice de referencia0 (lista0)” o “la primera lista de índices de referencia”. Además, el índice de referencia se denomina índice relativo. En primer lugar, en la lista de imágenes 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 índice de referencia 12 de “0” a partir del más 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 presentación visual. A continuación, después de que se asigne un valor avanzado por “1” de “0” a todas las imágenes de referencia siguientes a una imagen actual que se va a codificar en orden de presentación visual, los valores siguientes se asignan a imágenes de referencia siguientes a la imagen actual que se va a codificar en orden de presentación visual desde el más cercano hasta la imagen actual que se va a codificar en orden de presentación visual.
El segundo índice de referencia 13 es el segundo índice que muestra una relación de posición relativa entre una imagen actual que se va a codificar e imágenes adyacentes y, por ejemplo, se usa principalmente como un índice cuando una imagen actual que se va a codificar hace referencia a una imagen siguiente en orden de presentación visual. Una lista del segundo índice de referencia 13 se denomina “lista de índices de referencia1 (lista1)” o “la segunda lista de índices de referencia”. En primer lugar, el entero que es hecho avanzar por“1” se asigna a un valor del segundo índice de referencia 13 es de “0” a partir del más cercano a una imagen actual que se va a codificar en orden de presentación visual. A continuación, después de que se asigne un valor avanzado por “1” de “0” a todas las imágenes de referencia siguientes a una imagen actual que se va a codificar en orden de presentación visual, los valores siguientes se asignan a imágenes de referencia que precedan una imagen actual que se va a codificar en orden de presentación visual desde el valor más cercano hasta una imagen actual que se va a codificar en orden de presentación visual. Por lo tanto, se encuentra en la lista de imágenes de referencia 10 que en cuanto al primer índice de referencia 12 y el segundo índice de referencia, una imagen de referencia con un valor de índice de referencia más pequeño está más cercana a la imagen actual que se va a codificar en orden de presentación visual. Un procedimiento para asignar un número de índice de referencia en estado inicial se ha explicado en lo que antecede, no obstante, el procedimiento para asignar un número de índice de referencia se puede cambiar de una forma imagen a imagen o de una forma sector a sector. En el procedimiento para asignar un número de índice de referencia, por ejemplo, un número pequeño se puede asignar a una imagen lejos en orden de presentación visual, no obstante, este índice de referencia se usa, por ejemplo, cuando la eficiencia de codificación se mejora al hacer referencia a la imagen lejana en orden de presentación visual. Dicho de otra forma, debido a que los índices de referencia en un bloque se presentan por palabras de código de longitud variable y datos con longitudes más cortas se asignan a los índices de los valores más pequeños, al asignar un índice de referencia más pequeño a la imagen de referencia que mejora la eficiencia de codificación si se hizo referencia a esta, la cantidad de códigos en los índices de referencia se reduce y se mejora una eficiencia de codificación adicional.
La figura 4 es una ilustración explicativa para números de imagen e índices de referencia. La figura 4 muestra un ejemplo de la lista de imágenes de referencia, y muestra una imagen de referencia, un número de imagen y un índice de referencia usados cuando se codifica la imagen B en el centro (indicada por una línea discontinua). La figura 4A muestra el caso de asignar índices de referencia mediante el procedimiento para asignar índices de referencia en estado inicial que se explica usando la figura 3.
La figura 5 es un diagrama conceptual de un formato de señales de codificación de imagen de un aparato de codificación de imágenes convencional. Imagen indica una señal de codificación para una imagen, Encabezado indica una señal de codificación de encabezado incluida en la cabeza de una imagen, Bloque1 indica una señal de codificación en un bloque codificado en un modo directo, Bloque2 indica una señal de codificación en un bloque codificado por una predicción de interpolación que no es el modo directo, Ridx0 y Ridx1 son el primer índice de referencia y el segundo índice 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 índices de referencia Ridx0 y Ridx1 en una señal de codificación en este orden para indicar dos imágenes de referencia que se van a usar para la compensación de movimiento. Además, el primer vector de movimiento MV1 y el segundo vector de movimiento MV2 se codifican en la señal de codificación del bloque codificado Bloque2 en este orden. Se puede evaluar mediante PredType cuál se usa de los índices 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 índice 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 índice de referencia Ridx1. Por ejemplo, cuando se indica que se hace referencia a las imágenes bidireccionalmente por los vectores de movimiento MV0 y MV1, se usan Ridx0 y Ridx1, cuando se indica que se hace referencia a las imágenes 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 índice de referencia y, en general, tiene un tiempo de presentación visual precedente a una imagen actual que se va a codificar, y la segunda imagen de referencia es especificada por el segundo índice de referencia y, en general, tiene un tiempo de presentación visual siguiente a la imagen actual que se va a codificar. No obstante, como los muestra el procedimiento para asignar índices de referencia en la figura 4, existe un caso en el que la primera imagen de referencia contiene tiempo de presentación visual siguiente a la imagen actual que se va a codificar y la segunda imagen de referencia contiene tiempo de presentación visual precedente a la imagen actual que se va a codificar. El primer índice de referencia Ridx0 es un índice 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 índice de referencia Ridx1 es un índice 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 asignación de imágenes de referencia a índices de referencia se puede cambiar de forma arbitraria indicando explícitamente el uso de una señal de control de memoria en una señal codificada (RPSL en Encabezado en la figura 5). Esto hace posible cambiar la imagen de referencia con el segundo índice de referencia “0” por una imagen de referencia arbitraria. Por ejemplo, tal como se muestra en la figura 4B, la asignación de índices de referencia a números de imagen se puede cambiar.
De esta manera, debido a que la asignación de imágenes de referencia a índices de referencia se puede cambiar de forma arbitraria y el cambio de la asignación de imágenes de referencia a índices de referencia, en general, asigna un índice de referencia más pequeño a una imagen que mejora la eficiencia de codificación si se selecciona como una imagen de referencia, la eficiencia de codificación se puede mejorar mediante el uso de un vector de movimiento, el cual haga referencia a una imagen de la cual el índice de referencia sea el más pequeño, como un vector de movimiento usado en el modo directo.
(Primera realización)
Se explica un procedimiento de codificación de imágenes en movimiento de acuerdo con la primera realización de la presente invención 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 presentación visual de una forma imagen a imagen, y se reordena en un orden de codificación. Cada imagen se divide en un grupo denominado bloque, el cual tiene un tamaño de 16 píxeles (horizontales) x 16 píxeles (verticales), por ejemplo, y los procesos siguientes se llevan a cabo de una forma bloque a bloque.
Un bloque leído de la memoria de tramas 101 se introduce en una unidad de detección 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 selección de modo 107, un modo de predicción óptimo se determina haciendo referencia a un vector de movimiento obtenido en la unidad de detección 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 predicción obtenido en la unidad de selección de modo 107 y un vector de movimiento usado en el modo obtenido se introducen en una unidad de cálculo de diferencia 109, y una imagen residual predictiva se genera calculando una diferencia de un bloque actual que se va a codificar, y la codificación se lleva a cabo en una unidad de codificación residual predictiva 102. Además, el vector de movimiento usado en el modo obtenido en la unidad de selección de modo 107 se almacena en una unidad de almacenamiento de vectores de movimiento 108 para que se pueda usar para la codificación por bloques e imágenes siguientes. Un flujo de procesamiento anterior es una operación cuando se selecciona una codificación de predicción entre imágenes, no obstante, un conmutador 111 conmuta a una codificación de predicción entre imágenes. En última instancia, la codificación de longitud variable se lleva a cabo para información de control, tal como un vector de movimiento, e información de imágenes, tal como una información de imagen enviada desde la unidad de codificación residual predictiva 102, y un flujo de bits enviado en última instancia se genera por una unidad de generación de flujos de bits 103.
Un resumen del flujo de codificación se ha explicado en lo que antecede, no obstante, el detalle del proceso en la unidad de detección de vectores de movimiento 106 y la unidad de selección de modo 107 se explica en lo sucesivo. La detección de vectores de movimiento se lleva a cabo de una forma bloque a bloque o de una forma área a área (el área es un bloque dividido). Usando imágenes codificadas precedentes y siguientes a una imagen actual que se va a codificar en orden de presentación visual como imágenes de referencia, una imagen predictiva y un modo de predicción que muestra una ubicación que es predicha como óptima en el área de búsqueda en la imagen se generan al decidir un vector de movimiento.
Un modo directo es uno de bi-predicciones que llevan a cabo la predicción por codificación de predicción entre imágenes haciendo referencia a dos imágenes precedentes y/o siguientes en orden de presentación 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 compensación 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 presentación visual, y se genera un bloque predictivo.
La figura 7 muestra una operación 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 imágenes precedentes en orden de presentación visual. Una imagen P23 es una imagen actual que se va a codificar, y lleva a cabo la bi-predicción haciendo referencia a las imágenes P22 y P24. Supóngase 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 índice 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 ecuación 1. Por lo tanto, de manera similar a como se muestra en la ecuación 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 de tiempo TR_REF en ese momento se calcula a partir del valor promedio igualmente. A continuación, 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_r Ef basándose en la ecuación 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 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. Además, 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 imágenes se pueden determinar basándose en, por ejemplo, información que indique el tiempo de presentación visual y el orden de presentación visual añadida a cada imagen, o diferencia de información. Obsérvese 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 .. .. Ecuación 2 (a)
TR_REF = (TR21 TR22)/2 . .. . Ecuación 2 (b)
MV23 = MV_REF/TR_REF * TR23 . ... Ecuación 3 (a)
MV24 = -MV_REF/TR_REF * TR24 .. .. Ecuación 3 (b)
La realización anterior muestra el procedimiento de codificación en el cual una codificación de predicción entre imágenes puede llevarse a cabo usando el modo directo sin contracción, 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 codificación, 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 presentación 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 compensación de movimiento real se determinan por ajuste de escala.
Obsérvese que, cuando se calculan dos vectores de movimiento MV23 y MV24 en la figura 7, es posible usar la ecuación 4 en lugar de la ecuación 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 ecuación 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 continuación, 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. Obsérvese 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 * TR22 . ... Ecuación 4 (a)
MV_RF = (MV21' MV22)/2 . ... Ecuación 4 (b)
TR_REF = TR22 . .. . Ecuación 4 (c)
Obsérvese 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 más cerca de una imagen P24 de la cual se hizo referencia al vector de movimiento, directamente tal como se muestra en la ecuación 5 en lugar de usar un valor promedio de dos vectores de movimiento tal como se muestra en la ecuación 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 más lejos, se pueden usar directamente tal como se muestra en la ecuación 6. Esto hace posible reducir la capacidad de una unidad de almacenamiento de vectores de movimiento en un aparato de codificación 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 compensación de movimiento al almacenar únicamente uno de dos vectores de movimiento.
MV_REF = MV22 .. . . Ecuación 5 (a)
TR_REF = TR22 . .. . Ecuación 5 (b)
MV_REF = MV21 .. . . Ecuación 6 (a)
TR_REF = TR21 . .. . Ecuación 6 (b)
Obsérvese 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 será modificada 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 ecuación 2. La figura 8A muestra una relación de referencia en orden de presentación visual de imágenes en movimiento tal como se muestra en la figura 7, y la figura 8B muestra un ejemplo, de un orden en el cual las imágenes se reordenan por orden de codificación 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 codificación. Cuando las imágenes 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 ecuación 5. De forma similar, es posible usar directamente un vector de movimiento que haga referencia a una imagen que se va a codificar más 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 ecuación 6. Esto hace posible reducir la capacidad de una unidad de almacenamiento de vectores de movimiento en un aparato de codificación 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 compensación de movimiento al almacenar solo uno de dos vectores de movimiento.
Obsérvese que en la presente realización 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 imágenes; no obstante, el vector de movimiento se puede calcular multiplicando por un número constante. En el presente caso, una constante usada para la multiplicación puede ser variable cuando la codificación o descodificación se lleve a cabo de una forma por varios bloques o de una forma por varias imágenes.
Obsérvese que en la ecuación 2 (a) o 4 (b), cuando se calcula un vector de movimiento MV_REF, después de calcular el lado derecho de la ecuación 2 (a) o 4 (b), el vector de movimiento se puede redondear a una precisión de vector de movimiento predeterminada (por ejemplo, redondear a un valor de unidad de píxel de 0,5 para un vector de movimiento con precisión de medio píxel). La precisión de un vector de movimiento no se limita a la posición de medio píxel. Además, la precisión de un vector de movimiento se puede determinar de una forma por bloques, una forma por imágenes y una forma por secuencias, por ejemplo. Además, 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 precisión predeterminada de un vector de movimiento después de calcular el lado derecho de las ecuaciones 3 (a), 3 (b) y 4 (a).
(Segunda realización)
Un diagrama general del proceso de codificación basado en la figura 6 es completamente igual a la primera realización. En el presente caso se explica una operación detallada de la bi-predicción en el modo directo usando la figura 9.
La figura 9 muestra una operación 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 imágenes siguientes en orden de presentación visual. Una imagen P43 es una imagen actual que se va a codificar, y lleva a cabo la bi-predicción haciendo referencia a las imágenes P42 y P44. Supóngase que un bloque que se va a codificar fuera un bloque MB41, entonces dos vectores de movimiento requeridos se determinarían usando un vector de movimiento de un bloque co-situado MB42 en la imagen de referencia hacia atrás codificada (la segunda imagen de referencia especificada por el segundo índice 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 ecuación 1. Por lo tanto, tal como se muestra en la ecuación 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 continuación, 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 basándose en la ecuación 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 imágenes se pueden determinar basándose en, por ejemplo, información que indique el tiempo de presentación visual y el orden de presentación visual, la cual sea añadida a cada imagen, o diferencia de información tal como se ha explicado en la primera realización. Obsérvese 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 ... Ecuación 7 (a)
TR_REF = (TR45 TR46)/2 ... Ecuación 7 (b)
MV43 = -MV_REF/TR_REF * TR43 ... Ecuación 8 (a)
MV44 = MV_REF/TR_REF * TR44 . .. Ecuación 8 (b)
La realización anterior muestra el procedimiento de codificación en el cual una codificación de predicción entre imágenes puede llevarse a cabo usando el modo directo sin contradicción, 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 codificación, 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 presentación 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 compensación de movimiento real se determina por ajuste de escala.
Obsérvese que, cuando se calculan dos vectores de movimiento MV43 y MV44 en la figura 9, es posible usar la ecuación 9 en lugar de la ecuación 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 ecuación 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 continuación, 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. Obsérvese 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 * TR45 .. . Ecuación 9 (a)
MV_REF = (MV46' MV45)/2 ... Ecuación 9 (b)
TR_REF = TR45 . .. Ecuación 9 (c)
Obsérvese 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 t R45, los cuales hacen referencia a una imagen P45 situada temporalmente más 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 ecuación 10 en lugar de usar un valor promedio de dos vectores de movimiento tal como se muestra en la ecuación 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 más lejos, se pueden usar directamente tal como se muestra en la ecuación 11. Este procedimiento hace posible reducir la capacidad de una unidad de almacenamiento de vectores de movimiento en un aparato de codificación debido a que cada bloque que pertenezca a una imagen P44 de la cual se hace referencia al vector de movimiento puede implementar la compensación de movimiento al almacenar solo uno de dos vectores de movimiento.
MV_REF = MV45 .... Ecuación 10 (a)
TR_REF = TR45 ... . Ecuación 10 (b)
MV_REF = MV46 .... Ecuación 11 (a)
TR_REF = TR46 ... . Ecuación 11 (b)
Obsérvese 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 ecuación 7. La figura 10A muestra una relación de referencia de imágenes, en orden de presentación visual de imágenes en movimiento tal como se muestra en la figura 9, y la figura 10B muestra un ejemplo de un orden en el cual las imágenes se reordenan en orden de codificación 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 codificación. Cuando las imágenes 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 ecuación 11. De forma similar, es posible usar directamente un vector de movimiento que haga referencia a una imagen que se va a codificar más 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 codificación 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 compensación de movimiento al almacenar solo uno de dos vectores de movimiento.
Obsérvese 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 imágenes siguientes en orden de presentación visual, es posible llevar a cabo la compensación 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 descodificación, y hace posible además 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.
Obsérvese 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 imágenes siguientes en orden de presentación visual, es posible inhibir la referencia a un vector de movimiento y aplicar únicamente una codificación de predicción que no sea el modo directo. Cuando se hace referencia a dos imágenes siguientes en orden de presentación visual como una imagen P44 que se muestra en la figura 9, es concebible que la correlación con una imagen precedente en orden de presentación visual sea baja, debido a que es posible generar una imagen predictiva más precisa al inhibir el modo directo y seleccionar otro modo de predicción.
Obsérvese que en la presente realización 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 imágenes; no obstante, el vector de movimiento se puede calcular al multiplicar por un número constante. En el presente caso, una constante usada para la multiplicación puede ser variable cuando se lleve a cabo la codificación y descodificación de una forma por varios bloques o de una forma por varias imágenes.
Obsérvese que en la ecuación 7 (a) o 9 (b), cuando se calcula un vector de movimiento MV_REF, después de calcular el lado derecho de la ecuación 7 (a) o 9 (b), el vector de movimiento se puede redondear a una precisión de vector de movimiento predeterminada. La precisión de un vector de movimiento incluye precisión de medio píxel, precisión de píxel de un tercio y precisión de píxel de un cuarto, o similares. Además, la precisión de un vector de movimiento se puede determinar, por ejemplo, de una forma por bloques, de una forma por imágenes y de una forma por secuencias. Además, 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 precisión predeterminada de un vector de movimiento después de calcular el lado derecho de las ecuaciones 8 (a), 8 (b) y 9 (a).
(Tercera realización)
Un procedimiento de descodificación de imágenes en movimiento de acuerdo con la tercera realización de la presente invención 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 codificación de imágenes de la primera realización.
En primer lugar, información variada tal como un modo de predicción, información de vector de movimiento y datos de codificación residual predictiva se extraen del flujo de bits introducido por un analizador de flujos de bits 601. El modo de predicción y la información del vector de movimiento son enviados a una unidad de descodificación de vectores de movimiento/modo de predicción 608 y un dato de codificación residual predictiva es enviado a una unidad de descodificación residual predictiva 602. La unidad de descodificación de compensación de movimiento/modo de predicción 608 descodifica el modo de predicción y un vector de movimiento usado en el modo de predicción. 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 predicción y vector de movimiento descodificados son enviados a una unidad de descodificación de compensación de movimiento 604. Además, 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 descodificación de compensación de movimiento 604, se genera una imagen predictiva basándose en el modo de predicción y la información 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 introducción de la imagen predictiva que se ha generado en lo que antecede en una operación de adición 606 añadiendo la imagen introducida a la imagen residual predictiva generada en una unidad de descodificación residual predictiva 602. La realización anterior muestra una operación para un flujo de bits de predicción entre imágenes, no obstante, un conmutador 607 conmuta a un proceso de descodificación para un flujo de bits de predicción entre imágenes.
En lo que antecede se ha mostrado un resumen de un flujo de descodificación, no obstante, el proceso detallado en la unidad de descodificación de compensación de movimiento 604 se explica en lo sucesivo.
La información de vector de movimiento se añade de una forma por bloque o una forma por área (un bloque dividido). Mediante el uso de imágenes descodificadas precedentes y siguientes a una imagen actual que se va a codificar en orden de presentación visual como imágenes de referencia, se genera una imagen predictiva para llevar a cabo la compensación de movimiento de las imágenes.
Un modo directo es uno de bi-predicciones que llevan a cabo la codificación de predicción entre imágenes haciendo referencia a cada una de las imágenes precedente y siguiente en orden de presentación 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 compensación 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 presentación visual, y una imagen predictiva se genera.
La figura 7 muestra una operación 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 imágenes precedentes en orden de presentación visual. Una imagen P23 es una imagen actual que se va a descodificar, y lleva a cabo la bi-predicción haciendo referencia a las imágenes 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 atrás descodificada (la segunda imagen de referencia especificada por el segundo índice 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 aplicación del ajuste de escala directo de una forma similar a la de la ecuación 1. Por lo tanto, tal como se muestra en la ecuación 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 continuación, 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 basándose en la ecuación 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 MV21, 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 imágenes se pueden determinar basándose en, por ejemplo, información que indique el tiempo de presentación visual y el orden de presentación visual añadida a cada imagen o diferencia de información. Obsérvese 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 realización anterior muestra el procedimiento de descodificación en el cual una descodificación de predicción entre imágenes puede llevarse a cabo usando el modo directo sin contradicción, incluso si un bloque del cual se hace referencia a un vector de movimiento pertenece a una imagen B. En el procedimiento de descodificación, 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 compensación de movimiento real se determinan por ajuste de escala.
Obsérvese que, cuando se calculan dos vectores de movimiento MV23 y MV24 en la figura 7, es posible usar la ecuación 4 en lugar de la ecuación 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 ecuación 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 continuación, 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. Obsérvese 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.
Obsérvese 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 más 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 ecuación 5 en lugar de usar un valor promedio de dos vectores de movimiento tal como se muestra en la ecuación 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 más lejos, se pueden usar directamente tal como se muestra en la ecuación 6. Este procedimiento hace posible reducir la capacidad de una unidad de almacenamiento de vectores de movimiento en un aparato de codificación debido a que cada bloque que pertenezca a una imagen P24 de la cual se hace referencia al vector de movimiento puede actualizar la compensación de movimiento al almacenar solo uno de dos vectores de movimiento.
Obsérvese que, cuando se calculan dos vectores de movimiento MV23 y MV24 en la figura 7, como un vector de movimiento MVJEF 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 un valor promedio de dos vectores de movimiento tal como se muestra en la ecuación 2. La figura 8A muestra una relación de referencia en orden de presentación visual de imágenes 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 descodificación. 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 descodificación. 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 ecuación 5. De forma similar, es posible usar directamente un vector de movimiento que haga referencia a una imagen que se va a descodificar más 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 ecuación 6. Esto hace posible reducir la capacidad de una unidad de almacenamiento de vectores de movimiento en un aparato de descodificación, 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 compensación de movimiento al almacenar solo uno de dos vectores de movimiento.
Obsérvese que en la presente realización, 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 imágenes; no obstante, el vector de movimiento se puede calcular al multiplicar por un número constante. En el presente caso, una constante usada para la multiplicación puede ser variable cuando se lleve a cabo la codificación o descodificación de una forma por varios bloques o de una forma por varias imágenes.
(Cuarta realización)
Un diagrama general del proceso de codificación basado en la figura 11 es completamente igual a la tercera realización. En el presente caso se explica una operación detallada de la bi-predicción en el modo directo usando la figura 9. No obstante, se supone que se introduce el flujo de bits generado en el procedimiento de codificación de imágenes de la primera realización.
La figura 9 muestra una operación 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 imágenes siguientes en orden de presentación visual. Una imagen P43 es una imagen actual que se va a codificar, y lleva a cabo la bi-predicción haciendo referencia a las imágenes 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 atrás descodificada (la segunda imagen de referencia especificada por el segundo índice 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 ecuación 1. Por lo tanto, tal como se muestra en la ecuación 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 continuación, 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 t R_REF basándose en la ecuación 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. Obsérvese 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 realización anterior muestra el procedimiento de descodificación en el cual una descodificación de predicción entre imágenes puede llevarse a cabo usando el modo directo sin contradicción, 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 descodificación, 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 presentación 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 compensación de movimiento real se determinan por ajuste de escala.
Obsérvese que, cuando se calculan dos vectores de movimiento MV43 y MV44 en la figura 9, es posible usar la ecuación 7 en lugar de la ecuación 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 ecuación 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 continuación, 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_REF. Obsérvese 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.
Obsérvese 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 t R45, los cuales hacen referencia a una imagen P45 situada temporalmente más 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 ecuación 10, en lugar de usar un valor promedio de dos vectores de movimiento tal como se muestra en la ecuación 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 más lejos, se pueden usar directamente tal como se muestra en la ecuación 11. Este procedimiento hace posible reducir la capacidad de una unidad de almacenamiento de vectores de movimiento en un aparato de descodificación debido a que cada bloque que pertenezca a una imagen P44 de la cual se hace referencia al vector de movimiento puede implementar la compensación de movimiento al almacenar solo uno de dos vectores de movimiento.
Obsérvese 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 ecuación 7. La figura 10A muestra una relación de referencia en orden de presentación visual de imágenes 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 descodificación. 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 descodificación. 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 ecuación 10. Este procedimiento hace posible reducir la capacidad de una unidad de almacenamiento de vectores de movimiento en un aparato de descodificación 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 compensación de movimiento al almacenar solo uno de dos vectores de movimiento.
Obsérvese 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 imágenes siguientes en orden de presentación visual, es posible llevar a cabo la compensación 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 descodificación, y hace posible además 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.
Obsérvese que en la presente realización 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 imágenes; no obstante, el vector de movimiento se puede calcular al multiplicar por un número constante. En el presente caso, una constante usada para la multiplicación puede ser variable cuando se lleve a cabo la codificación o descodificación de una forma por varios bloques o de una forma por varias imágenes.
(Quinta realización)
El procedimiento de codificación/descodificación puede ser actualizado no solo por el procedimiento de codificación/descodificación que se muestra en la primera a la cuarta realizaciones anteriores, sino también por un procedimiento para calcular vectores de movimiento que se muestra en lo sucesivo.
La figura 12 muestra una operación 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 imágenes precedentes en orden de presentación 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 descodificado 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 atrás codificada o descodificada (la segunda imagen de referencia especificada por el segundo índice de referencia) P24. Obsérvese 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 imágenes, y los vectores, de movimiento MV21 es el primer vector de movimiento hacia delante que la imagen de referencia es especificada por el primer índice de referencia y MV22 es el vector de movimiento hacia delante que la imagen de referencia es especificada por el segundo índice de referencia, y estos vectores de movimiento se usan para codificar o descodificar el bloque MB2 y hacer referencia a las imágenes P21 y P22 respectivamente. Las imágenes P21, P22 y P24 son imágenes 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 TR24' es un intervalo de tiempo entre la imagen P23 y la imagen P24.
En el procedimiento de cálculo 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 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 TR21TTR21
MV24' = -MV21 x TR24'/TR21
A continuación, se lleva a cabo la bi-predicción a partir de las imágenes P21 y P24 usando los vectores de movimiento MV21' y MV24'. Obsérvese 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 después 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. Además, tal como se muestra en la primera realización a la cuarta realización, 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 codificación y un aparato de descodificación. La compensación de movimiento es posible o bien cuando la imagen P21 esté en la memoria de almacenamiento intermedio de imágenes de referencia a corto plazo o bien en la memoria de almacenamiento intermedio de imágenes de referencia a largo plazo. Se dará una explicación para la memoria de almacenamiento intermedio de imágenes de referencia a corto plazo y la memoria de almacenamiento intermedio de imágenes de referencia a largo plazo.
La figura 13 muestra una operación 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 imágenes en orden de presentación visual. Una imagen P22 es una imagen actual que se va a codificar o descodificada. Cuando se supone que un bloque que se va a codificar o descodificado es un bloque MB1, dos vectores de movimiento requeridas se determinan usando un vector de movimiento de un bloque co-situado MB2 en la imagen de referencia hacia atrás codificada o descodificada (la segunda imagen de referencia) P23. Obsérvese que en la figura 13 el bloque MB1 es un bloque actual de procesamiento, los bloques MB1 y MB2 son bloques co-situados en imágenes y los vectores de movimiento MV24 y MV25 son vectores de movimiento hacia atrás usados para codificar o descodificar el bloque MB2 y hacen referencia a imágenes P21 y P22, respectivamente. Las imágenes P21, P23, P24 y P25 son imágenes 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 cálculo de vectores de movimiento como el que se muestra en la figura 13, solo se usa el vector de movimiento hacia atrás 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 continuación, se lleva a cabo la bi-predicción a partir de las imágenes P21 y P24 usando los vectores de movimiento MV21' y MV24'.
Obsérvese que, tal como se muestra en la figura 14, cuando solo se usa un vector de movimiento hacia atrás 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 TR21TTR25
MV25' = MV25 x TR25'/TR25
A continuación, se lleva a cabo la bi-predicción a partir de las imágenes P21 y P24 usando los vectores de movimiento MV21' y MV24'.
La figura 15 muestra una operación 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 presentación 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 descodificado 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 atrás codificada o descodificada (la segunda imagen de referencia especificada por el segundo índice de referencia) P24. Obsérvese 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 imágenes. 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 imágenes P21, P22 y P24 son imágenes 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 t R21' 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 cálculo 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 * TR21TTR21A
MV24' = -MV21A * TR24'/TR21A
A continuación, se lleva a cabo la bi-predicción de las imágenes P21 y P24 usando los vectores de movimiento MV21A' y MV24'.
Obsérvese 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. Además, tal como se muestra en la primera realización a la cuarta realización, 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 codificación y un aparato de descodificación. En el presente caso, el vector de movimiento codificado o descodificado de forma precedente quiere decir el primer vector de movimiento. La compensación de movimiento es posible o bien cuando la imagen P21 esté en la memoria de almacenamiento intermedio de imágenes de referencia a corto plazo o bien en la memoria de almacenamiento intermedio de imágenes de referencia a largo plazo. Más adelante se dará la explicación para la memoria de almacenamiento intermedio de imágenes de referencia a corto plazo y la memoria de almacenamiento intermedio de imágenes de referencia a largo plazo.
Obsérvese que en la presente realización 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 imágenes; no obstante, el vector de movimiento se puede calcular al multiplicar por un número constante. En el presente caso, una constante usada para la multiplicación puede ser variable cuando se lleve a cabo la codificación o descodificación de una forma por varios bloques o de una forma por varias imágenes.
Obsérvese 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 precisión predeterminada de un vector de movimiento después de calcular el lado derecho de las ecuaciones. La precisión del vector de movimiento incluye precisión de medio píxel, precisión de píxel de un tercio y precisión de píxel de un cuarto o similares. Además, la precisión de un vector de movimiento se puede determinar, por ejemplo, de una forma por bloques, una forma por imágenes y una forma por secuencias.
(Sexta realización)
En la presente sexta realización, 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 imágenes precedentes en orden de presentación 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. Obsérvese que el bloque MB1 es un bloque actual que será procesado; los bloques MB1 y MB2 son bloques co-situados en otras imágenes; 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 imágenes P21 y P22, respectivamente. Las imágenes P21, P22 y P24 son imágenes 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 presentación visual por la siguiente ecuación.
MV22' = MV22 * TR22'/TR22
A continuación, se lleva a cabo la compensación 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 está lejos de una imagen actual P23 en orden de presentación visual por la siguiente ecuación.
MV21' = MV21 x TR21TTR21
A continuación, se lleva a cabo la compensación 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 compensación de movimiento al almacenar solo uno de dos vectores de movimiento.
Obsérvese que la compensación de movimiento se puede llevar a cabo a partir de una imagen P22 cercana en orden de presentación visual, usando el vector de movimiento hacia delante MV21 al igual que en la primera realización. Un vector de movimiento MVN (que no se muestra en esta figura) usado para la compensación de movimiento se calcula por la siguiente ecuación.
MVN = MV21 x TR22'/TR21
Como el tercer procedimiento, tal como se muestra en la figura 18, un bloque de compensación de movimiento se obtiene de las imágenes 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 interpolación en la compensación de movimiento.
El tercer procedimiento incrementa la cantidad calculada, no obstante, mejora la precisión de la compensación de movimiento.
Además, es posible obtener un bloque de compensación 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 interpolación en la compensación de movimiento.
Obsérvese que en la presente realización 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 imágenes; no obstante, el vector de movimiento se puede calcular al multiplicar un vector de movimiento de referencia por un número constante. En el presente caso, una constante usada para la multiplicación puede ser variable cuando se lleve a cabo la codificación o descodificación de una forma por varios bloques o de una forma por varias imágenes.
Obsérvese 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 precisión predeterminada de un vector de movimiento después de calcular el lado derecho de las ecuaciones. La precisión del vector de movimiento incluye la precisión de medio píxel, precisión de píxel de un tercio y precisión de píxel de un cuarto o similares. Además, la precisión de un vector de movimiento se puede determinar, por ejemplo, de una forma por bloques, una forma por imágenes y una forma por secuencias.
(Séptima realización)
En la sexta realización 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 descodificado contiene dos vectores de movimiento hacia delante en el modo directo. Los dos vectores de movimiento hacia delante hacen referencia a dos imágenes precedentes en orden de presentación visual. No obstante, cuando la imagen de referencia contiene dos vectores de movimiento hacia atrás que hacen referencia a dos imágenes siguientes en orden de presentación 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 atrás (los segundos vectores de movimiento de los cuales la imagen de referencia es especificada por los segundos índices de referencia). La explicación se dará usando las figuras 17 ~ 20 en lo sucesivo. Obsérvese que el bloque MB1 es un bloque actual de proceso, los bloques MB1 y MB2 son bloques co-situados en otras imágenes y los vectores de movimiento MV24 y MV25 son vectores de movimiento hacia atrás (los segundos vectores de movimiento de los cuales la imagen de referencia es especificada por los segundos índices de referencia) usados para codificar o descodificar el bloque MB2. Las imágenes P21, P23, P24 y P25 son imágenes 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 atrás 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 atrás MV24 que hace referencia a una imagen P24 que está temporalmente cerca de una imagen actual P22 por la siguiente ecuación.
MV24' = MV24 * TR24'/TR24
A continuación, se lleva a cabo la compensación de movimiento de la imagen P24 usando el vector de movimiento MV24'.
Obsérvese que la compensación de movimiento se puede llevar a cabo a partir de una imagen P23 cercana en orden de presentación visual, usando un vector de movimiento hacia atrás MV24 igual que en la primera realización. Un vector de movimiento MVN1 (que no se muestra en esta figura) usado para la compensación de movimiento se calcula por la siguiente ecuación.
MVN1 = MV24 * TRN1/TR24
Como el segundo procedimiento, cuando un bloque MB2 de una imagen de referencia P23 contiene dos vectores de movimiento hacia atrás 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 atrás MV25 que hace referencia a una imagen P25 lejos de una imagen actual P23 en orden de presentación visual por la siguiente ecuación.
MV25' = MV25 * TR25'/TR25
A continuación, se lleva a cabo la compensación 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 compensación de movimiento al almacenar solo uno de dos vectores de movimiento.
Obsérvese que una compensación de movimiento se puede llevar a cabo a partir de una imagen P23 cercana en orden de presentación visual, usando un vector de movimiento hacia atrás MV25 al igual que en la primera realización. Un vector de movimiento MVN2 (que no se muestra en esta figura) usado para la compensación de movimiento se calcula usando la siguiente ecuación.
MVN2 = MV25 * TRN1/TR25
Como el tercer procedimiento, tal como se muestra en la figura 21, un bloque de compensación de movimiento se obtiene a partir de las imágenes 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 interpolación en una compensación de movimiento.
El tercer procedimiento incrementa la cantidad de cálculo, no obstante, mejora la precisión de la compensación de movimiento.
Obsérvese que es posible obtener un bloque de compensación 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 interpolación en la compensación de movimiento.
Además, 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 atrás que hace referencia a una imagen siguiente en orden de presentación visual, por ejemplo, un vector de movimiento MV24' se calcula usando la siguiente ecuación.
MV24' = MV24 * TR24'/TR24
A continuación, se lleva a cabo la compensación de movimiento de la imagen P24 usando el vector de movimiento MV24'.
Obsérvese que la compensación de movimiento se puede llevar a cabo a partir de una imagen P23 cercana en orden de presentación de visual, usando un vector de movimiento hacia atrás MV25 al igual que en la primera realización. Un vector de movimiento MVN3 (que no se muestra en esta figura) usado para la compensación de movimiento se calcula mediante la siguiente ecuación.
MVN3 = MV24 * TRN1/TR24
Obsérvese que en la presente realización se explica el caso en el que un vector de movimiento actual se calcula mediante el ajuste de escala del vector de movimiento hacia atrás, cuando contiene dos vectores de movimiento hacia atrás, los cuales hacen referencia a dos imágenes siguientes en orden de presentación visual, y cuando contiene un vector de movimiento hacia atrás, el cual hace referencia a una imagen siguiente en orden de presentación 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 atrás, y cuando la codificación entre imágenes 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 describirá el primer procedimiento de cálculo.
La figura 23 muestra una relación de posición 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 píxeles situados en A, B y C. Obsérvese que, cuando no se puede hacer referencia a un píxel C debido a que se sitúa fuera de una trama o no ha sido codificado/descodificado, un vector de movimiento de un bloque que incluye un píxel D se usa en lugar de un bloque que incluye el píxel C. Al calcular un valor medio de vectores de movimiento de tres bloques actuales que incluyen los píxeles 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, información adicional que muestre qué 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 compensación 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 continuación se describirá el segundo procedimiento de cálculo.
Bajo el segundo procedimiento de cálculo, un valor medio no se selecciona como el primer procedimiento de cálculo, y un vector de movimiento usado en el modo directo real se determina al seleccionar un vector de movimiento cuya eficiencia de codificación sea la más alta de vectores de movimiento de tres bloques que incluyan los píxeles A, B y C. En este caso, la compensación 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 información que indica un vector de movimiento con la eficiencia de codificación más alta es, por ejemplo tal como se muestra en la figura 24A, añadida a un área de encabezado de un bloque en un flujo de bits generado por una unidad de generación de flujos de bits 103 con la información que indica un modo directo enviada desde una unidad de selección de modo l07. Obsérvese que tal como se muestra en la figura 24B, la información que indica un vector de movimiento con la eficiencia de codificación más alta se puede añadir al área de encabezado de un macrobloque. En el presente caso, la información que indica un vector de movimiento con la eficiencia de codificación más alta es, por ejemplo, un número que identifica un bloque que incluye un píxel actual al que se va a hacer referencia, y un número de identificación dado a cada bloque. Cuando un bloque es identificado por el número de identificación, un vector de movimiento con la eficiencia de codificación más alta se puede indicar usando solo uno de los vectores de movimiento usados para codificar un bloque que se corresponda con un número de identificación, y cuando los vectores de movimiento son más de 1, un vector de movimiento con la eficiencia de codificación más alta se puede indicar mediante el uso de varios vectores de movimiento. O, un vector de movimiento con la eficiencia de codificación más alta se puede indicar usando un número de identificación 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 selección hace posible seleccionar siempre un vector de movimiento que haga a la eficiencia de codificación la más alta. No obstante, debido a que la información adicional que muestra qué vector de movimiento se selecciona se tiene que describir en un flujo de bits, es necesaria una cantidad adicional de código para la información adicional. A continuación, se explicará el tercer procedimiento de cálculo.
Bajo el tercer procedimiento de cálculo, un vector de movimiento que hace referencia a una imagen de referencia con el índice de referencia más pequeño se determina como un vector de movimiento usado en el modo directo real. El índice de referencia más pequeño quiere decir, en general, un vector de movimiento que hace referencia a una imagen cercana en orden de presentación visual o a un vector de movimiento con la eficiencia de codificación más alta. Por lo tanto, este procedimiento de selección de vectores de movimiento hace posible mejorar la eficiencia de codificación, 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 más cercana en orden de presentación visual o un vector de movimiento con la eficiencia de codificación más alta.
Obsérvese 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 índice de referencia más pequeño, 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 píxeles A, B y C respectivamente, y cuando los valores de índice de referencia de los bloques incluyen los píxeles A y B son los más pequeños, y se hace referencia a una misma imagen de referencia, un vector de movimiento en el bloque que incluye el píxel A se puede seleccionar. No obstante, cuando los valores de índice de referencia de los bloques que incluyen los píxeles A y C son los más pequeños, y se hace referencia a una misma imagen de referencia, se puede seleccionar un vector de movimiento en un bloque BL1 que incluya el píxel A situado más cerca de un bloque.
Obsérvese que el valor medio que se ha mencionado en lo que antecede puede ser un valor medio de componentes en dirección horizontal y dirección 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 píxeles A, B y C respectivamente; ++ y un bloque que incluya un píxel 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 está cerca de un píxel 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 más fácil al usar un bloque que incluya el píxel D para de esta manera hacer al número de bloques un número non. Obsérvese que, cuando varios bloques están en un área co-situada del bloque BL1 en una imagen de referencia siguiente, una compensación de movimiento puede llevarse a cabo para el bloque BL1 mediante el uso de un vector de movimiento en un bloque que ocupe el área más grande traslapada con el bloque BL1, o al dividir el bloque BL1 que se corresponda con un área del bloque plural en la siguiente imagen de referencia y una compensación de movimiento puede llevarse a cabo de una forma por bloques divididos.
A continuación se dará una explicación usando ejemplos concretos.
Tal como se muestra en las figuras 26 y 27, cuando todos los bloques que incluyen los píxeles 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 procedimientos de cálculo 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 píxeles 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 procedimientos de cálculo.
A continuación 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 píxeles 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 cálculo, un vector de movimiento hacia delante usado para la compensación de movimiento del bloque BL1 se selecciona por un valor medio de vectores de movimiento MVAf MVBf y VMCf, y un vector de movimiento hacia atrás usado para la compensación 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 píxel A, el vector de movimiento MVAb es un vector de movimiento hacia atrás de un bloque que contiene el píxel A, el vector de movimiento MVBf es un vector de movimiento hacia delante de un bloque que contiene el píxel B, el vector de movimiento MVBb es un vector de movimiento hacia atrás de un bloque que contiene el píxel B, el vector de movimiento MVCf es un vector de movimiento hacia delante de un bloque que contiene el píxel C, el vector de movimiento MVCb es un vector de movimiento hacia atrás de un bloque que contiene el píxel 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 aplicación para la siguiente explicación.
De acuerdo con el segundo procedimiento de cálculo, 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 codificación más alta de vectores de movimiento de referencia hacia delante MVAf, MVBf y MVCf, y seleccionando un vector de movimiento con la eficiencia de codificación más alta de vectores de movimiento de referencia hacia atrás MVAb, MVBb y MVCb. En este caso, la compensación de movimiento se puede llevar a cabo solo mediante la referencia hacia delante usando un vector de movimiento con la eficiencia de codificación más alta de vectores de movimiento de referencia hacia delante MVAf, MVBf y MVCf, y mediante bi-predicción usando un vector de movimiento paralelo con el vector de movimiento predeterminado. Obsérvese que, para poder lograr la eficiencia de codificación más alta, una compensación de movimiento puede llevarse a cabo al seleccionar un bloque y usar vectores de movimiento de referencia hacia delante y hacia atrás del bloque seleccionado, en lugar de seleccionar vectores de movimiento de referencia hacia delante y hacia atrás respectivamente. En este caso, debido a que la información que indica una selección se puede reducir en comparación con el caso de seleccionar información que indique un bloque que contenga un píxel que tenga un vector de movimiento hacia delante seleccionado para la más alta eficiencia de codificación y un bloque que contenga un píxel que tenga un vector de movimiento hacia atrás seleccionado para la más alta eficiencia de codificación, la eficiencia de codificación se puede mejorar. La selección del bloque puede ser a partir de los siguientes: 1. Un bloque incluye un píxel que tiene un vector de movimiento de referencia hacia delante que hace referencia a una imagen de referencia con el valor de índice de referencia más pequeño; 2. Un bloque tiene el valor más pequeño que es una suma de un valor de índice de referencia de una imagen a la que hace referencia un vector de movimiento de referencia hacia delante de un bloque que incluye cada píxel, y un valor de índice de referencia de una imagen a la que hace referencia un vector de movimiento de referencia hacia atrás de un bloque que incluye cada píxel; 3. Un bloque selecciona un valor medio de índices de referencia de una imagen a la que hace referencia un vector de movimiento de referencia hacia delante e incluye un píxel que tiene un vector de movimiento de referencia hacia delante con el valor medio seleccionado, y un vector de movimiento hacia atrás se incluye en el bloque; y 4. Un bloque selecciona un valor medio de índices de referencia en una imagen a la que hace referencia un vector de movimiento de referencia hacia atrás e incluye un píxel que tiene un vector de movimiento hacia atrás con el valor medio seleccionado, y un vector de movimiento hacia delante se incluye en el bloque. Obsérvese que, cuando cada uno de los vectores de movimiento hacia atrás hace referencia a una misma imagen, la selección del procedimiento 1 y el procedimiento 3 es adecuada.
De acuerdo con el tercer procedimiento de cálculo, uno de los vectores de movimiento de referencia hacia delante VMAf, MVBf y MVCf, el cual hace referencia a una imagen de referencia con el valor de índice de referencia más pequeño, 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 atrás MVAb, MVBb y MVCb, el cual hace referencia a una imagen de referencia con el valor de índice de referencia más pequeño, es un vector de movimiento de referencia hacia atrás (la segunda referencia) usado en el modo directo. Obsérvese que en el tercer procedimiento de cálculo, el vector de movimiento hacia delante que hace referencia a la imagen de referencia con el valor de índice de referencia más pequeño es un vector de movimiento hacia delante de un bloque BL1, y el vector de movimiento hacia atrás que hace referencia a la imagen de referencia con el índice de referencia más pequeño es un vector de movimiento hacia atrás 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 atrás que hagan referencia a una imagen de referencia con el índice de referencia más pequeño, y la compensación de movimiento se puede llevar a cabo usando el vector de movimiento obtenido.
A continuación, se explica el caso que se muestra en la figura 31. La figura 31 muestra un caso en el que el píxel 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 píxel B contiene solo un vector de movimiento que hace referencia a una imagen precedente, y el píxel C contiene solo un vector de movimiento que hace referencia a una imagen siguiente.
De esta manera, cuando existe un bloque que incluye un píxel 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 dirección sea 0, el procedimiento de cálculo de la figura 30 que se ha mencionado en lo que antecede se puede usar para la compensación de movimiento. En concreto, usando el primer o el tercer procedimiento de cálculo de la figura 30, el cálculo puede llevarse a cabo suponiendo que MVCf = MVBb = 0. Es decir, en el primer procedimiento de cálculo, cuando se calcula un vector de movimiento hacia delante del bloque BL1, suponiendo que un vector de movimiento MVCf del píxel 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 atrás del bloque BL1, suponiendo que un vector de movimiento MVBb, el cual hace referencia a una imagen siguiente, del píxel B sea cero, se calcula un valor medio de los vectores de movimiento MVAb, MVBb y MVCb.
De acuerdo con el tercer procedimiento de cálculo, suponiendo que un vector de movimiento MVCf, el cual hace referencia a una imagen precedente, del píxel C y un vector de movimiento, el cual hace referencia a una imagen siguiente, del píxel B sean 0, se calcula un vector de movimiento, el cual hace referencia a una imagen de referencia con el valor de índice de referencia más pequeño, del bloque BL1. Por ejemplo, cuando un bloque que incluye un píxel A hace referencia a una imagen con el primer índice de referencia de “0” y un bloque que incluye un píxel B hace referencia a una imagen con el primer índice de referencia de “1”, el valor más pequeño del índice 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 píxel hace referencia a una imagen con el primer índice de referencia más pequeño, el vector de movimiento MVBf se selecciona como un vector de movimiento hacia delante del bloque BL1. Además, por ejemplo, cuando ambos píxeles A y C hacen referencia a una imagen siguiente con el segundo índice de referencia más pequeño, por ejemplo “0”, suponiendo que un vector de movimiento MVBb, el cual hace referencia a una imagen siguiente, de un píxel B sea 0, se calcula un valor medio de vectores de movimiento MVAb, MVBb y MBCb. El vector de movimiento que resultó del cálculo se establece como un vector de movimiento hacia delante del bloque BL1.
A continuación se explica un caso que se muestra en la figura 32. La figura 32 muestra un caso en el que el píxel 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 píxel B solo contiene solo un vector de movimiento que hace referencia a una imagen precedente y el píxel C no contiene un vector de movimiento y se codifica entre imágenes.
Cuando un bloque que incluye un píxel actual C que se va a codificar se codifica entre imágenes, suponiendo que los vectores de movimiento que hacen referencia a las imágenes precedentes y siguientes al bloque sean ambos 0, se puede usar el procedimiento de cálculo de la figura 30 que se ha mencionado en lo que antecede para la compensación de movimiento. En concreto, el cálculo se puede llevar a cabo suponiendo que MVCf = MVCb = 0. Obsérvese que, en la figura 30, MVBb es 0.
Por último, se explica un caso que se muestra en la figura 33. La figura 33 muestra un caso en el que un píxel C se codifica por el modo directo.
Cuando los bloques que incluyen un píxel actual al que se hace referencia contienen un bloque codificado por el modo directo, la compensación 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 cálculo que se muestra en la figura 30.
Obsérvese que se determina cuál de un vector de movimiento de referencia hacia delante o hacia atrás se usa, dependiendo de una imagen a la que se va a hacer referencia, una imagen que se va a codificar y la información de tiempo incluida en cada imagen. Por lo tanto, cuando se obtiene un vector de movimiento después de diferenciar entre una referencia hacia delante y una referencia hacia atrás, un vector de movimiento de cada bloque se evalúa si una referencia hacia delante o una referencia hacia atrás a partir de la información de tiempo está contenida en cada imagen.
A continuación, se explica un ejemplo de un procedimiento de cálculo que combina los procedimientos de cálculo que se han mencionado en lo que antecede. La figura 34 es una ilustración 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 índices de referencia. Obsérvese que Ridx0 y Ridx1 que se muestran en la figura 34 son los índices 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 índice de referencia Ridx0, y la figura 34B muestra un procedimiento para determinar un vector de movimiento usando el segundo índice de referencia Ridx1. En primer lugar, se explica la figura 34A.
En una etapa S3701, hay tres bloques que incluyen píxeles A, B y C respectivamente, y se calcula el número de bloques que hacen referencia a una imagen usando el primer índice de referencia Ridx0.
Cuando el número de bloques calculado en la etapa S3701 es “0”, el número de bloques que hacen referencia a una imagen usando el segundo índice de referencia Ridx1 se calcula además en una etapa S3702. Cuando el número de bloques calculado en la etapa S3702 es “0”, la compensación 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 número de bloques calculados en la etapa S3702 es “1” o más, un vector de movimiento de un bloque actual que se va a codificar se determina en una etapa S3704 por el número de bloques que contienen el segundo índice de referencia Ridx1. Por ejemplo, la compensación de movimiento de un bloque actual que se va a codificar se lleva a cabo usando el vector de movimiento determinado por el número de bloques que contienen el segundo índice de referencia Ridx1.
Cuando el número de bloques calculado en la etapa S3701 es “1”, un vector de movimiento que contiene el primer índice de referencia Ridx0 se usa en una etapa S3705.
Cuando el número 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 índice de referencia Ridx0 contenga un vector de movimiento de MV = 0 del primer índice de referencia Ridx0.
Cuando el número 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. Obsérvese que la compensación de movimiento en la etapa S3704 se puede llevar a cabo bidireccionalmente usando un vector de movimiento. En el presente caso, la compensación de movimiento bidireccional se puede llevar a cabo después de calcular un vector de movimiento en la misma dirección que un vector de movimiento, y un vector de movimiento en la dirección 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 dirección que un vector de movimiento y un vector de movimiento de “0”. A continuación se explica la figura 34B.
El número de bloques que contienen el segundo índice de referencia Ridx1 se calcula en una etapa S3711.
Cuando el número de bloques calculado en la etapa S3711 es “0”, el número de bloques que contienen el primer índice de referencia RIxd1 se calcula adicionalmente en una etapa S3712. Cuando el número de bloques calculado en la etapa S3712 es “0”, la compensación 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 número de bloques calculado en la etapa S3712 es “1” o más, un vector de movimiento de un bloque actual que se va a codificar se determina en una etapa S3714 por el número de bloques que contienen el primer índice de referencia Ridx0. Por ejemplo, la compensación de movimiento de un bloque actual que se va a codificar se lleva a cabo usando el vector de movimiento determinado por el número de bloques que contienen el primer índice de referencia Ridx0.
Cuando el número de bloques calculado en la etapa S3711 es “1”, un vector de movimiento que contiene el segundo índice de referencia Ridx1 se usa en una etapa S3715.
Cuando el número 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 índice de referencia Ridx1 contenga un vector de movimiento de MV = 0 del segundo índice de referencia Ridx1.
Cuando el número de bloques calculado en la etapa S3711 es “3”, un vector que se corresponde con un valor medio de tres vectores de movimiento se usa en una etapa S3717. Obsérvese que la compensación de movimiento en la etapa S3714 se puede llevar a cabo bidireccionalmente usando un vector de movimiento. En el presente caso, la compensación de movimiento bidireccional se puede llevar a cabo después de calcular un vector de movimiento en la misma dirección que un vector de movimiento y un vector de movimiento en la dirección 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 dirección que un vector de movimiento y un vector de movimiento de “0”. Obsérvese 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 inició 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 después 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 después de la etapa S3712 no se usa, un vector de movimiento puede determinarse de forma única. 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 índice de referencia al que hace referencia un vector de movimiento usado para codificar el bloque codificado en el modo directo esté contenido en un bloque codificado en el modo directo y situado en el adyacente de un bloque actual que se va a codificar.
La explicación detallada de un procedimiento para determinar un vector de movimiento se dará a continuación usando ejemplos concretos de un bloque. La figura 35 es una ilustración 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 píxel A es un bloque entre imágenes codificado, y un bloque que contiene un píxel B incluye un vector de movimiento y la compensación de movimiento se lleva a cabo para el bloque usando un vector de movimiento, y un bloque que contiene un píxel C es un bloque que incluye dos vectores de movimiento y la compensación de movimiento se lleva a cabo bidireccionalmente. El bloque que contiene el píxel B contiene un vector de movimiento indicado por el segundo índice de referencia Ridx1. Debido a que el bloque que contiene el píxel A es un bloque que se va a codificar entre imágenes, no contiene un vector de movimiento. Dicho de otra forma, tampoco contiene un índice de referencia.
En la etapa S3701, se calcula el número de bloques que contienen el primer índice de referencia Ridx0. Tal como se muestra en la figura 35, debido a que el número de bloques que contienen el primer índice de referencia Ridx0 es 2, suponiendo que un bloque que no contuviera el primer índice de referencia Ridx0 contuviera un vector de movimiento de MV = 0 del primer índice 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 compensación 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 índice de referencia Ridx1 y otro vector de movimiento tal como se muestra en lo sucesivo.
En la etapa S3711, se calcula el número de bloques que contienen el segundo índice de referencia Ridx1. Tal como se muestra en la figura 35, debido a que el número de bloques que contienen el segundo índice de referencia Ridx1 es 1, un vector de movimiento que contiene el segundo índice de referencia Ridx1 se usa en la etapa S3715.
A continuación se explica un ejemplo de otro procedimiento de cálculo que combina los procedimientos de cálculo que se han mencionado en lo que antecede. La figura 38 es una ilustración que muestra un procedimiento para determinar un vector de movimiento de un bloque actual que se va a codificar usando valores de índice de referencia mostrando una imagen a la que hace referencia un vector de movimiento contenido en los bloques que incluyen los píxeles A, B y C respectivamente. Las figuras 36A y 36B son ilustraciones que muestran un procedimiento para determinar un vector de movimiento basándose en el primer índice de referencia Ridx0, y las figuras 36C y 36D son ilustraciones que muestran un procedimiento para determinar un vector de movimiento basándose en el segundo índice de referencia Ridx1. La figura 36A muestra un procedimiento basado en el primer índice de referencia Ridx0; por otro lado, la figura 36C muestra un procedimiento basado en el segundo índice de referencia Ridxl. La figura 36B muestra un procedimiento basado en el primer índice de referencia RidxO; por otro lado, la figura 36D muestra un procedimiento basado en el segundo índice de referencia Ridx1. Por consiguiente, solo se explican en lo sucesivo las figuras 36A y 36B. Se empieza por la figura 36A.
En una etapa S3801, se evalúa si se puede seleccionar el primer índice de referencia más pequeño Ridx0 de los primeros índices de referencia Ridx0s efectivos.
Cuando es posible seleccionar el primer índice de referencia Ridx0 más pequeño de los primeros índices de referencia Ridx0s efectivos, se usa el vector de movimiento seleccionado en la etapa S3802.
Cuando los primeros índices de referencia Ridx0s efectivos incluyen los varios índices de referencia más pequeños Ridx0s, en la etapa S3801, se usa un vector de movimiento contenido en un bloque seleccionado por prioridad en una etapa S3803. En el presente caso, la prioridad, por ejemplo, determina un vector de movimiento que se va a usar para la compensación de movimiento de un bloque actual que se va a codificar en orden alfabético de los píxeles contenidos en los bloques.
Cuando no existe un primer índice de referencia Ridx0 efectivo en la etapa S3801, se usa un proceso que es diferente de las etapas S3802 y S3803 en una etapa S3804. Por ejemplo, se puede usar un proceso después de una etapa S3711 que se explica en la figura 34B. A continuación, se explica la figura 36B. El punto diferente entre las figuras 36A y 36B es que un proceso en las etapas S3803 y S3804 en la figura 36A es cambiado por una etapa S3813 en la figura 36B.
En una etapa S3811, se evalúa si se puede seleccionar el primer índice de referencia Ridx0 más pequeño de los primeros índices de referencia Ridx0s efectivos.
Cuando es posible seleccionar el primer índice de referencia Ridx0 más pequeño de los primeros índices de referencia Ridx0s efectivos, se usa el vector de movimiento seleccionado en la etapa S3812.
Cuando no hay primer índice de referencia Ridx0 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 después de una etapa S3711 que se explica en la figura 34B.
Obsérvese que el primer índice de referencia Ridx0 efectivo que se ha mencionado en lo que antecede es indicado por “O” en la figura 35B, y es un índice de referencia que muestra que tiene un vector de movimiento. En la figura 35B, los lugares en los cuales “x” está escrito indican que no están asignados índices de referencia. En una etapa S3824 de la figura 36C y en una etapa S3833 de la figura 36D, se puede usar un proceso después de la etapa S3701 que se explica en la figura 34A.
A continuación se dará una explicación detallada del procedimiento para determinar un vector de movimiento usando ejemplos concretos de un bloque y la figura 35.
En una etapa S3801, se evalúa si se puede seleccionar el primer índice de referencia Ridx0 más pequeño de los primeros índices de referencia Ridx0s efectivos.
En el caso que se muestra en la figura 35, hay dos primeros índices de referencia Ridx0 efectivos; no obstante, cuando es posible seleccionar un primer índice de referencia Ridx0 más pequeño de primeros índices de referencia Ridx0s efectivos en la etapa S3801, se usa un vector de movimiento seleccionado en la etapa S3802.
Cuando los primeros índices de referencia Ridx0s efectivos incluyen los varios índices de referencia Ridx0s más pequeños en la etapa S3801, se usa un vector contenido en un bloque seleccionado por prioridad en una etapa S3803. En el presente caso, la prioridad, por ejemplo, determina un vector de movimiento que se va a usar para la compensación de movimiento de un bloque actual que se va a codificar en orden alfabético de los píxeles contenidos en los bloques. Cuando los bloques que incluyen los píxeles B y C contienen respectivamente el mismo primer índice de referencia Ridx0, el primer índice de referencia Ridx0 del bloque que incluye el píxel B es empleado por la prioridad, y la compensación 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 índice de referencia Ridx0 del bloque que contenga el píxel B. En este caso, la compensación 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 índice de referencia Ridx1 y otro vector de movimiento tal como se muestra en lo sucesivo. En una etapa S3821, se evalúa si se puede seleccionar el segundo índice de referencia Ridx1 más pequeño de segundos índices de referencia Ridx1s efectivos.
En el caso que se muestra en la figura 35, debido a que el segundo índice de referencia Ridx1 efectivo es uno, se usa un vector de movimiento que se corresponde con el segundo índice de referencia Ridx1 de un bloque que contiene el píxel C en una etapa S3822.
Obsérvese que en la explicación anterior, en cuanto al bloque que no contiene índices 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 índices de referencia se puede seleccionar.
Obsérvese que un vector de movimiento usado para la compensación 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 píxeles B - A - C, los cuales están contenidos en bloques.
De esta manera, a través de determinar un vector de movimiento usado para la compensación de movimiento de un bloque actual que se va a codificar mediante el uso de un índice de referencia, un vector de movimiento se puede determinar de forma única. Además, de acuerdo con el ejemplo que se ha mencionado en lo que antecede, la eficiencia de codificación se puede mejorar. Además, debido a que no es necesario evaluar si un vector de movimiento es una referencia hacia delante o una referencia hacia atrás usando información de tiempo, es posible simplificar un proceso para determinar un vector de movimiento. Cuando se trata de un modo de predicción para cada bloque y un vector de movimiento usado para la compensación 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 útil.
Obsérvese que en la presente realización 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 imágenes; no obstante, un cálculo puede llevarse a cabo al multiplicar por un número constante. En el presente caso, una constante usada para la multiplicación puede ser variable cuando se lleve a cabo la codificación o descodificación de una forma por varios bloques o de una forma por varias imágenes. Obsérvese que un procedimiento de cálculo usando índices de referencia Ridx0 y Ridx1 no solo es un procedimiento que usa un valor medio, y que los procedimientos de cálculo pueden combinarse con otros procedimientos de cálculo. Por ejemplo, en el tercer procedimiento de cálculo que se ha mencionado en lo que antecede, cuando los vectores de movimiento contenidos en bloques que tienen píxeles A, B y C que hacen referencia respectivamente a una misma imagen de la cual el índice de referencia es el más pequeño 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 codificación sea la más alta puede seleccionarse a partir de varios vectores de movimiento con los índices de referencia más pequeños.
Además, un vector de movimiento hacia delante y un vector de movimiento hacia atrás 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 atrás 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 atrás obtenidos ambos a partir del cálculo se puede usar como un vector de movimiento del bloque BL1.
(Octava realización)
En la presente realización, 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 imágenes a largo plazo como la primera imagen de referencia y un vector de movimiento hacia atrás (el segundo) que hace referencia a una imagen almacenada en la memoria de almacenamiento intermedio de imágenes a corto plazo como la segunda imagen de referencia.
La figura 37 es una ilustración que muestra una bi-predicción en el modo directo cuando solo una imagen de referencia está almacenada en la memoria de almacenamiento intermedio de imágenes a largo plazo.
El punto diferente de la octava realización 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 imágenes a largo plazo.
La memoria de almacenamiento intermedio de imágenes a corto plazo es una memoria de almacenamiento intermedio para almacenar imágenes de referencia temporalmente, y, por ejemplo, las imágenes se almacenan en un orden en el cual las imágenes se almacenan en una memoria de almacenamiento intermedio (es decir, orden de codificación/descodificación). Cuando imágenes son recién almacenadas en la memoria de almacenamiento intermedio y no hay capacidad de almacenamiento suficiente, las imágenes son eliminadas de una imagen almacenada más previamente en la memoria de almacenamiento intermedio.
En la memoria de almacenamiento intermedio de imágenes a largo plazo, las imágenes no siempre se almacenan en la memoria de almacenamiento intermedio de imágenes a largo plazo en orden de tiempo como en la memoria de almacenamiento intermedio de imágenes a corto plazo. Por ejemplo, como un orden de almacenar imágenes, se puede corresponder el orden de tiempo de las imágenes, y se puede corresponder el orden de direcciones en una memoria de almacenamiento intermedio en el cual las imágenes sen 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 imágenes a largo plazo basándose en un intervalo de tiempo.
Una memoria de almacenamiento intermedio de imágenes a largo plazo no es para almacenar una imagen de referencia temporalmente como en la memoria de almacenamiento intermedio de imágenes 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 imágenes a largo plazo es mucho más amplio que un intervalo de tiempo que se corresponde con un vector de movimiento almacenado en la memoria de almacenamiento intermedio de imágenes a corto plazo.
En la figura 37, un límite entre la memoria de almacenamiento intermedio de imágenes a largo plazo y la memoria de almacenamiento intermedio de imágenes a corto plazo se indica por una línea vertical punteada tal como se muestra en la figura, y la información acerca de las imágenes en el lado izquierdo de la línea vertical punteada se almacena en la memoria de almacenamiento intermedio de imágenes a largo plazo, y la información acerca de imágenes en el lado derecho de la línea vertical punteada se almacena en la memoria de almacenamiento intermedio de imágenes 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 imágenes a largo plazo como la primera imagen de referencia, y un vector de movimiento hacia atrás 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 imágenes 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 imágenes 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 imágenes a largo plazo, un intervalo de tiempo TR25 entre las imágenes P24 y P25 se corresponde con un vector de movimiento hacia atrás MV25 que hace referencia a una imagen almacenada en la memoria de almacenamiento intermedio de imágenes a corto plazo, y el intervalo de tiempo TR21 entre las imágenes P21 y P24 se puede hacerse mucho más amplio que el intervalo de tiempo TR25 entre las imágenes 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 ecuación superior muestra que el primer vector de movimiento MV21 almacenado en la memoria de almacenamiento intermedio de imágenes a largo plazo se usa directamente como el primer vector de movimiento MV21' en una imagen actual.
La ecuación 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 imágenes a corto plazo del bloque MB1 en la imagen actual para la imagen P23 es suficientemente más pequeño 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 imágenes 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 imágenes a corto plazo como la segunda imagen de referencia. En este caso, la bi-predicción se lleva a cabo usando el vector de movimiento almacenado en la memoria de almacenamiento intermedio de imágenes 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.
Obsérvese que una imagen de referencia almacenada en la memoria de almacenamiento intermedio de imágenes 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 imágenes a largo plazo puede ser un vector de movimiento hacia atrás. Además, cuando la segunda imagen de referencia se almacena en la memoria de almacenamiento intermedio de imágenes a largo plazo y la primera imagen de referencia se almacena en la memoria de almacenamiento intermedio de imágenes a corto plazo, un vector de movimiento en una imagen actual se calcula mediante el ajuste de escala de un vector de movimiento que hace referencia a la primera imagen de referencia.
Esto hace posible llevara cabo la bi-predicción sin usar tiempo que sea considerablemente grande en la memoria de almacenamiento intermedio de imágenes a largo plazo o indefinido.
Obsérvese que la bi-predicción 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 número constante.
Además, una constante usada para la multiplicación puede ser variable cuando se lleve a cabo la descodificación o codificación de una forma por varios bloques o de una forma por varias imágenes.
(Novena realización)
En la presente realización se muestra la bi-predicción 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 imágenes a largo plazo.
La figura 38 es una ilustración que muestra la bi-predicción 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 imágenes a largo plazo.
El punto diferente de la novena realización de la octava realización 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 imágenes a largo plazo.
En la figura 38, un límite entre la memoria de almacenamiento intermedio de imágenes a largo plazo y la memoria de almacenamiento intermedio de imágenes a corto plazo es indicado por una línea vertical punteada como la que se muestra en la figura, y la información acerca de las imágenes en el lado izquierdo de la línea vertical punteada se almacena en la memoria de almacenamiento intermedio de imágenes a largo plazo y la información acerca de las imágenes en el lado derecho de la línea vertical punteada se almacena en la memoria de almacenamiento intermedio de imágenes 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 imágenes 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 imágenes P22 y P24 se puede hacer mucho más amplio que el intervalo de tiempo TR25 entre las imágenes 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 imágenes a largo plazo.
En la figura 38, las imágenes se almacenan en orden de imágenes P22 - P21 en ese orden en la memoria de almacenamiento intermedio de imágenes 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 ecuación superior muestra que un vector de movimiento MV22 que hace referencia a una imagen P22 a la cual se le asigna el orden más pequeño se usa directamente como un vector de movimiento MV22' del bloque MB1 en una imagen actual P23.
La ecuación inferior muestra que, debido a que el vector de movimiento hacia atrás MV24' del bloque MB1 en la imagen actual P23 almacenada en la memoria de almacenamiento intermedio de imágenes a corto plazo es suficientemente más pequeño que el vector de movimiento MV21', MV24' es despreciable. El vector de movimiento hacia atrás 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 más pequeño de vectores de movimiento de un bloque en una imagen de referencia almacenada en la memoria de almacenamiento intermedio de imágenes a largo plazo, la bi-predicción puede hacerse sin usar tiempo que sea considerablemente grande en la memoria de almacenamiento intermedio de imágenes a largo plazo o indefinido.
Obsérvese que la bi-predicción puede hacerse no directamente usando un vector de movimiento al que se hace referencia, sino usando un vector de movimiento multiplicando por un número constante.
Además, una constante usada para la multiplicación puede ser variable cuando se lleve a cabo la codificación o descodificación de una forma por varios bloques o de una forma por varias imágenes.
Además, 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 imágenes 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.
(Décima realización)
En la presente realización se explica un procedimiento de cálculo de un vector de movimiento en el modo directo que se muestra en la quinta realización a la novena realización. Este procedimiento de cálculo de un vector de movimiento se aplica a cualquiera de codificación y descodificación de una imagen. En el presente caso, un bloque actual que se va a codificar o descodificado 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 ilustración que muestra un flujo de proceso de un procedimiento de cálculo de vectores de movimiento de la presente realización.
En primer lugar, se evalúa si un bloque de referencia MB en una imagen de referencia hacia atrás 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-predicción suponiendo que un vector de movimiento sea “0” (la etapa S2) y se completa un proceso para un cálculo de vectores de movimiento.
Si el bloque de referencia MB contiene un vector de movimiento (Si en la etapa S1), se evalúa, 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 atrás, se evalúa el número de vectores de movimiento hacia atrás (la etapa S14). Cuando el número de vectores de movimiento hacia atrás del bloque de referencia MB es “2”, se lleva a cabo la bi-predicción usando dos vectores de movimiento hacia atrás ajustados a escala basándose en uno de los procedimientos de cálculo que se mencionan en las figuras 17, 18, 19 y 20.
Por otro lado, cuando el número de vectores de movimiento hacia atrás del bloque de referencia MB es “1”, el único vector de movimiento hacia atrás contenido en el bloque de referencia MB se ajusta a escala y la compensación de movimiento se lleva a cabo usando el vector de movimiento hacia atrás ajustado a escala (la etapa S16). Después de completar la bi-predicción en la etapa S15 o S16, se completa un proceso del procedimiento de cálculo de vectores de movimiento.
Por otro lado, si el bloque de referencia MB contiene un vector de movimiento hacia delante (Si en la etapa S3), se evalúa el número de vectores de movimiento hacia delante del bloque de referencia MB (la etapa S4).
Cuando el número de vectores de movimiento hacia delante del bloque de referencia MB es “1”, se evalúa si una imagen de referencia que se corresponde con el vector de movimiento hacia delante del bloque de referencia MB está almacenada en la memoria de almacenamiento intermedio de imágenes a largo plazo o la memoria de almacenamiento intermedio de imágenes 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 está almacenada en la memoria de almacenamiento intermedio de imágenes a corto plazo, el vector de movimiento hacia delante del bloque de referencia MB se ajusta a escala y la bi-predicción 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 está almacenada en la memoria de almacenamiento intermedio de imágenes a largo plazo, se lleva a cabo la bi-predicción basándose en el procedimiento de cálculo de vectores de movimiento que se muestra en la figura 37 suponiendo que un vector de movimiento hacia atrás sea 0 y usando el vector de movimiento hacia delante del bloque de referencia MB directamente sin ajuste de escala (la etapa S7). Después de completar la bi-predicción en la etapa S6 o S7, se completa un proceso del procedimiento de cálculo de vectores de movimiento.
Cuando el número de vectores de movimiento hacia delante del bloque de referencia MB es “2”, se evalúa el número de vectores de movimiento hacia delante que se corresponde con una imagen de referencia almacenada en la memoria de almacenamiento intermedio de imágenes a largo plazo (la etapa S8).
Cuando el número de vectores de movimiento hacia delante que se corresponden con una imagen de referencia almacenada en la memoria de almacenamiento intermedio de imágenes 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-predicción se lleva a cabo usando el vector de movimiento hacia delante ajustado a escala basándose en el procedimiento de cálculo de vectores de movimiento que se muestra en la figura 14 (la etapa S9). Cuando el número de vectores de movimiento hacia delante que se corresponden con una imagen de referencia almacenada en la memoria de almacenamiento intermedio de imágenes a largo plazo es “1” en la etapa S8, un vector de movimiento en una imagen almacenada en la memoria de almacenamiento intermedio de imágenes a corto plazo se ajusta a escala, y la bi-predicción se, lleva a cabo usando el vector de movimiento ajustado a escala (la etapa S10).
Cuando el número de vectores de movimiento hacia delante que se corresponden con una imagen de referencia almacenados en la memoria de almacenamiento intermedio de imágenes a largo plazo es “2” en la etapa S8, se evalúa si se hace referencia a una misma imagen en la memoria de almacenamiento intermedio de imágenes 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 imágenes a largo plazo por ambos de los vectores de movimiento hacia delante (Si en la etapa S11), se lleva a cabo la bi-predicción 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 imágenes a largo plazo basándose en el procedimiento de cálculo de vectores de movimiento que se muestra en la figura 13 (la etapa S12).
Si no se hace referencia a una misma imagen en la memoria de almacenamiento intermedio de imágenes a largo plazo por ambos de dos vectores de movimiento hacia delante (No en la etapa S11), se lleva a cabo la bi-predicción usando un vector de movimiento hacia delante que se corresponda con una imagen a la cual se le asigne un orden pequeño en la memoria de almacenamiento intermedio de imágenes a largo plazo (la etapa S13). En la memoria de almacenamiento intermedio de imágenes a largo plazo, debido a que las imágenes de referencia se almacenan sin importar el tiempo real de las imágenes, un vector de movimiento hacia delante que se va a usar para la bipredicción se selecciona de acuerdo con un orden asignado a cada imagen de referencia. Existe un caso en el que el orden de las imágenes de referencia almacenadas en la memoria de almacenamiento intermedio de imágenes a largo plazo coincide con el tiempo de las imágenes, no obstante, esto puede ser una simple coincidencia con una dirección en la memoria de almacenamiento intermedio. Dicho de otra forma, el orden de las imágenes almacenadas en la memoria de almacenamiento intermedio de imágenes a largo plazo no necesariamente tiene que coincidir con el tiempo de las imágenes. Después de completar la bi-predicción en las etapas S12 y S13, el proceso del procedimiento de cálculo de vectores de movimiento es completado.
(Undécima realización)
La explicación detallada de la undécima realización de acuerdo con la presente invención se dará a continuación usando ilustraciones.
La figura 40 es un diagrama de bloques que muestra una configuración de un aparato de codificación de imágenes en movimiento 1100 de acuerdo con la undécima realización de la presente invención. El aparato de codificación de imágenes en movimiento 1100 es un aparato que puede codificar imágenes en movimiento mediante la aplicación de un procedimiento de predicción espacial en el modo directo incluso si se mezclan un bloque codificado en una estructura de campo y un bloque codificado en una estructura de trama, e incluye una memoria de tramas 1101, una unidad de cálculo de diferencias 1102, una unidad de codificación de diferencia predictiva 1103, una unidad de generación de flujos de bits 1104, una unidad de descodificación de diferencia predictiva 1105, una unidad de operación de adición 1106, una memoria de tramas 1107, una unidad de detección de vectores de movimiento 1108, una unidad de selección de modo 1109, una unidad de control de codificación 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 imágenes que almacena imágenes introducidas de una forma por imágenes. La unidad de cálculo de diferencias 1102 calcula el error de predicción, que es una diferencia entre una imagen introducida de la memoria de tramas 1101 y una imagen de referencia obtenida de una imagen descodificada basándose en un vector de movimiento, y la envía. La unidad de codificación de diferencias de predicción 1103 lleva a cabo la conversión de frecuencia para el error de predicción obtenido en la unidad de cálculo de diferencias 1102, lo cuantifica y lo envía. La unidad de generación de flujos de bits 1104 convierte en un formato de flujo de bits codificado de salida después de llevar a cabo la codificación de longitud variable del resultado codificado a partir de la unidad de codificación de diferencia predictiva 1103, y genera un flujo de bits que añade información adicional tal como información de encabezado en la cual se describe la información relacionada sobre el error de predicción codificado. La unidad de descodificación de diferencia predictiva 1105 lleva a cabo la codificación de longitud variable y la cuantificación inversa del resultado codificado a partir de la unidad de codificación de diferencia predictiva 1103, y después de eso lleva a cabo la conversión de frecuencia inversa tal como una conversión IDCT después de llevar a cabo, y descodifica el resultado codificado para enviar residual predictivo. La unidad de operación de adición 1106 añade 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 imágenes que almacena imágenes de referencia de una forma por imágenes.
La unidad de detección de vectores de movimiento 1108 obtiene un vector de movimiento para cada codificación de una trama actual que se va a codificar. La unidad de selección de modo 1109 selecciona si el cálculo de un vector de movimiento se lleva a cabo en el modo directo o en otro modo. La unidad de control de codificación 1110 reordena las imágenes introducidas almacenadas en la memoria de tramas 1101 en orden de entrada a orden de codificación. Además, la unidad de control de codificación 1110 evalúa cuál de una estructura de campo o una estructura de trama se usa para codificar para cada tamaño predeterminado de una trama actual que se va a codificar. En el presente caso, el tamaño predeterminado es un tamaño de dos macrobloques (por ejemplo, 16 píxeles (horizontales) x 16 píxeles (verticales) combinados verticalmente (en lo sucesivo en el presente documento, par de macrobloques). Si se usa una estructura de campo para la codificación, un valor de píxel se lee cada otra línea de escaneo horizontal que se corresponda con entrelace de la memoria de tramas 1101, si se usa una forma por tramas para la codificación, cada valor de píxel en la imagen introducida se lee secuencialmente de la memoria de tramas 1101 y cada valor de píxel leído 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 índices de referencia de tramas a los que hace referencia el vector de movimiento. Los índices de referencia se almacenan para cada macrobloque de pares de macrobloques codificados.
A continuación se explica la operación del aparato de codificación de imágenes en movimiento configurado tal como se ha mencionado en lo que antecede. Las imágenes que serán introducidas se introducen en la memoria de tramas 1101 de una forma por imágenes en orden de tiempo. La figura 41A es una ilustración que muestra un orden de tramas introducidas en el aparato de codificación de imágenes en movimiento 100 de una forma por imágenes en orden de tiempo. La figura 41B es una ilustración que muestra un orden de imágenes que reordena el orden de las imágenes que se muestran en la figura 41A a orden de codificación. En la figura 41A, las líneas verticales indican imágenes, y el número 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 números de imagen en orden de tiempo con números siguientes. La figura 42 es una ilustración que muestra una estructura de una lista de tramas de referencia 300 para explicar la undécima realización. Cada imagen introducida en la memoria de tramas 1101 se reordena en orden de codificación por la unidad de control de codificación 1110. Las imágenes se reordenan en orden de codificación basándose en la relación de referencia de una codificación de predicción entre imágenes, y en el orden de codificación, 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 imágenes I o P precedentes y adyacentes como una imagen de referencia. Por otro lado, se supone que una imagen B usa una de tres imágenes I o P precedentes y adyacentes, y una de imágenes I o P siguientes y adyacentes como una imagen de referencia. En concreto, una imagen P7 que se introduce después de las imágenes B5 y B6 en la figura 41A se reordena y se coloca antes de las imágenes b5 y B6 debido a que se hace referencia a la imagen P7 por las imágenes B5 y B6. De forma similar, una imagen P10 introducida después de las imágenes B8 y B9 se reordena y se coloca antes de las imágenes B8 y B9, y una imagen P13 se introduce después de las imágenes B11 y B12 se reordena y se coloca antes de las imágenes B11 y B12. Por consiguiente, el resultado de reordenar un orden de imágenes 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 tamaño de 16 píxeles (horizontales) x 16 píxeles (verticales). En el presente caso, un par de macrobloques combina dos macrobloques verticalmente. Por lo tanto, un par de macrobloques tiene un tamaño de 16 píxeles (horizontales) x 32 píxeles (verticales). Un proceso de codificación de una imagen B11 se explica en lo sucesivo. Obsérvese que en la presente realización se supone que la unidad de control de codificación 1110 controla índices 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 codificación de predicción entre imágenes usando referencia bidireccional. Se supone que la imagen B11 usa dos de las imágenes precedentes P10, P7, P4, y una imagen siguiente P13 como la imagen de referencia. Además, se supone que la selección de dos imágenes a partir de estas cuatro imágenes se puede especificar de una forma por macrobloques. En el presente caso, se supone que los índices de referencia se asignan usando un procedimiento de condición inicial. Dicho de otra forma, una lista de tramas de referencia 300 durante la codificación de la imagen B11 es como la que se muestra en la figura 42. En relación a una imagen de referencia en este caso, la primera imagen de referencia es especificada por el primer índice de referencia en la figura 42 y la segunda imagen de referencia es especificada por el segundo índice de referencia.
En un procese para la imagen B11, se supone que la unidad de control de codificación 1110 controla al conmutador 1113 para que esté encendido, los conmutadores 1114 y 1115 para que estén apagados. Por lo tanto, un par de macrobloques en la imagen B11 leído de la memoria de tramas 1101 se introduce en la unidad de detección de vectores de movimiento 1108, la unidad de selección de modo 109 y la unidad de cálculo de diferencias 1102. En la unidad de detección de vectores de movimiento 108, mediante el uso de datos descodificados de las imágenes 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 selección de modo 1109, un modo de codificación para un par de macrobloques se determina usando vectores de movimiento obtenidos en la unidad de detección de vectores de movimiento 1108. En el presente caso, se supone que el modo de codificación para una imagen B se puede seleccionar de, por ejemplo, codificación entre imágenes, codificación de predicción entre imágenes usando vectores de movimiento unidireccionales, codificación de predicción entre imágenes usando vectores de movimiento bidireccionales y un modo directo. Cuando se seleccionan modos de codificación que no son el modo directo, se determina cuál de una estructura de trama o una estructura de campo se usa para codificar un par de macrobloques al mismo tiempo.
A continuación, se explica un procedimiento de cálculo de vectores de movimiento que usa un procedimiento de predicción espacial en el modo directo. La figura 43A es una gráfica de flujo que muestra un ejemplo de un procedimiento de cálculo de vectores de movimiento usando un procedimiento de predicción 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 ilustración que muestra un ejemplo de una ubicación de pares de macrobloques adyacentes a los cuales se les aplica la presente invención cuando un par de macrobloques actuales que se va a codificar se codifica en una estructura de trama. La figura 43C es una ilustración que muestra un ejemplo de una ubicación de pares de macrobloques adyacentes a los cuales se les aplica la presente invención 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 predicción 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 codificación 1110 determina, en primer lugar, cuál 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 número 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 número 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 determinación de cuál 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 información sobre bloques adyacentes, no es necesario describir información que muestre qué estructura se usa para codificar un par de macrobloques actual que se va a codificar en un flujo de bits. Además, debido a que se predice una estructura de pares de macrobloques adyacentes, es posible seleccionar una estructura adecuada.
A continuación, la unidad de detección 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 determinación del control de codificación 1110. En primer lugar, la unidad de detección de vectores de movimiento 1108 revisa cuál 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 codificación, 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 codificación, 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 ilustración que muestra una configuración de datos de un par de macrobloques cuando se lleva a cabo la codificación usando una estructura de trama, y una configuración de datos de un par de macrobloques cuando se lleva a cabo la codificación usando una estructura de campo. En la figura 44, un círculo de color blanco indica un píxel en líneas de escaneo horizontales de números nones, y un círculo de color negro sombreado con un patrón de sombra de líneas oblicuas indica un píxel en líneas de escaneo horizontales de números pares. Cuando un par de macrobloques es cortado de cada trama que muestra una imagen introducida, los píxeles en las líneas de escaneo horizontales de números nones y los píxeles en las líneas de escaneo horizontales de números pares se colocan alternativamente en una dirección 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 dirección de línea de escaneo horizontal, y los dos campos forman un par de macrobloques. A continuación, se calcula un vector de movimiento para los dos campos respectivamente.
Basándose 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 gráfica de flujo que muestra un procedimiento de procesamiento detallado en una etapa S302 que se muestra en la figura 43. Obsérvese que en la figura 45 un par de macrobloques se indica como MBP, y un macrobloque se indica como MB.
La unidad de selección 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 predicción espacial en el modo directo. En primer lugar, la unidad de selección de modo 1109 calcula el valor más pequeño de los índices en imágenes a las que hacen referencia pares de macrobloques adyacentes para el primer y el segundo índices 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 únicamente un macrobloque adyacente a un macrobloque actual que se va a codificar. A continuación, se revisa si pares de macrobloques adyacentes se codifican en la estructura de campo (S502), y si la codificación se lleva a cabo usando la estructura de campo, se revisa además el número de campos a los cuales se les asigna el índice más pequeño 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 revisión de la etapa S503 muestra que el índice más pequeño se asigna a cada campo al que hacen referencia los dos macrobloques (es decir, campos a los cuales se les asigna el mismo índice), 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 basándose 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 revisión de la etapa S503 muestra que el índice más 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 índice más pequeño 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 campo a los cuales se les asignó el índice más pequeño, es posible seleccionar un vector de movimiento con eficiencia de codificación más alta. Un proceso en una etapa S505 muestra que no hay un vector de movimiento adecuado para la predicción.
Cuando el resultado de la revisión 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 selección 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 continuación, la unidad de selección de modo 1109 revisa si el número de pares de macrobloques adyacentes que hacen referencia a una trama con el índice más pequeño o un campo de la trama entre tres pares de macrobloques adyacentes es 1 (S507).
En este caso, la unidad de selección de modo 1109 unifica índices de referencia de tres pares de macrobloques adyacentes a un índice de tramas de referencia o a un índice de campos de referencia, y los compara. En una lista de tramas de referencia que se muestra en la figura 42, los índices de referencia se asignan simplemente a cada trama, no obstante, debido a que la relación entre los índices de tramas de referencia y los índices de campos de referencia a los cuales se le asignan índices 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 índices de referencia mediante cálculo. La figura 46 es una gráfica indicadora que muestra una relación entre índices de campos de referencia e índices 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 cronológico en una lista de campos de referencia, e índices de tramas de referencia tales como 0, 1 y 2 que se asignan a cada trama basándose en tramas que incluyen un bloque actual que se va a codificar (tramas que se muestran en la figura 46). Además, los índices de campos de referencia tales como 0, 1 y 2 se asignan al primer campo f1 y al segundo campo f2 de cada trama basándose 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). Obsérvese que los índices 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 índices se asignan dando prioridad al primer campo f1, y si el bloque actual que se va a codificar es el segundo campo f2, los índices 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 índice de tramas de referencia “1” y un macrobloque adyacente codificado en la estructura de campo hace referencia al primer campo f1 con un índice 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 precondición de que un índice de tramas de referencia a los que hace referencia un macrobloque adyacente sea igual a la mitad del índice de campos de referencia (redondeado a la baja después del punto decimal) asignado a un campo de referencia de otro macrobloque adyacente es satisfecha, los macrobloques adyacentes son tratados como 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 índice de campo de referencia “2,” y un macrobloque adyacente con la estructura de trama hace referencia a una trama con el índice 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 precondición que se ha mencionado en lo que antecede. Por otro lado, cuando un macrobloque adyacente hace referencia al primer campo con un índice de campo de referencia “2” y otro macrobloque adyacente hace referencia a una trama con un índice 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 precondición.
Tal como se ha mencionado en lo que antecede, si el resultado de la revisión de la etapa S507 muestra que el número es 1, un vector de movimiento de un par de macrobloques adyacente que hace referencia a un campo, una trama con el índice más pequeño 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 revisión de la etapa S507 muestra que el número no es 1, se revisa más si el número de pares de macrobloques adyacentes de tres pares de macrobloques adyacentes que se refirieron a una trama con el índice más pequeño o un campo en la trama es 2 o más (S509). A continuación, si el número es 2 o más, suponiendo que un vector de movimiento de pares de macrobloques adyacente que no hacen referencia a una trama con el índice más pequeño 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 revisión de la etapa S509 es menor que 2, debido a que el número de los pares de macrobloques adyacentes que hacen referencia a la trama con el índice más pequeño 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 cálculo para un macrobloque que forme un par de macrobloques actual que se va a codificar, por ejemplo, MB1. La unidad de selección de modo 109 lleva a cabo el proceso anterior para un vector de movimiento con el segundo índice de referencia, y lleva a cabo la compensación de movimiento mediante bi-predicción usando los dos vectores de movimiento obtenidos. No obstante, cuando ninguno de los macrobloques adyacentes contiene al primer o el segundo vector de movimiento, la compensación de movimiento se lleva a cabo no usando un vector de movimiento en la dirección indicada por un vector de movimiento no contenido en los macrobloques adyacentes, sino usando un vector de movimiento de forma unidireccional. Además, 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 compensación 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 continuación 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 gráfica de flujo que muestra un procedimiento de procesamiento detallado en una etapa S303 que se muestra en la figura 43. La unidad de selección de modo 1109 calcula un vector de movimiento MVt usando una predicción 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 selección de modo 1109 calcula el valor más pequeño de los índices en las imágenes a las que hacen referencia pares de macrobloques adyacentes (S601). No obstante, cuando los pares e 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 continuación, se revisa si los pares de macrobloques adyacentes son codificados por la estructura de trama (S602), y si la codificación se lleva a cabo usando la estructura de trama, se evalúa además si las tramas a las que hacen referencia dos macrobloques en el par de macrobloques adyacente son tramas con el índice más pequeño basándose en el valor de índice asignado a cada trama por una lista de tramas de referencia 300 (S603).
Si el resultado de la revisión de la etapa S603 muestra que el índice más pequeño 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 cálculo se determina como un vector de movimiento del par de macrobloques adyacente (S604). Si el resultado de la revisión de la etapa S603 muestra que uno o ambos de las tramas a las que se hace referencia no son tramas con el índice más pequeño, se revisa además si una trama a la que hace referencia cualquiera de los macrobloques contiene el índice más pequeño (S605). Si el resultado de la revisión muestra que el índice más pequeño está 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 revisión de la etapa S605 muestra que ninguno de los macrobloques hace referencia a una trama con el índice más pequeño, 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 índice más pequeño, es posible seleccionar un vector de movimiento con eficiencia de codificación más alta. Un proceso en una etapa S607 muestra que no hay un vector de movimiento adecuado para la predicción.
Cuando el resultado de la revisión 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 selección 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 continuación, la unidad de detección de vectores de movimiento 108 revisa si el número de pares de macrobloques adyacentes que hacen referencia a una trama con el índice más pequeño 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 índice más pequeño se determina como un vector de movimiento del macrobloque actual que se va a codificar (S610). Si el resultado de la revisión de la etapa S609 muestra que el número no es 1, se revisa más si el número de pares de macrobloques adyacentes que hacen referencia a una trama con el índice más pequeño entre tres pares de macrobloques adyacentes es dos o más (S611). A continuación, si el número es dos o más, suponiendo que un vector de movimiento de pares de macrobloques adyacentes no hacen referencia a una trama con el índice más pequeño 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 revisión de la etapa S611 es menos de 2, debido a que el número de pares de macrobloques adyacentes que hacen referencia a una trama con el índice más pequeño 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 cálculo 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 selección de modo 109 repite el proceso anterior también para el segundo vector de movimiento (que se corresponde con el segundo índice de referencia). En cuanto a un macrobloque TF, se pueden obtener dos vectores de movimiento mediante el proceso anterior, y la compensación 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 compensación de movimiento se lleva a cabo no usando un vector de movimiento en la dirección 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 codificación se haga más alta cuando un par de macrobloques adyacente haga referencia también solo a unidirección.
Además, 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 compensación 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.
Obsérvese que en los casos anteriores, cuando una estructura de codificación para un par de macrobloques actual que se va a codificar y una estructura de codificación para un par de macrobloques adyacente son diferentes, se lleva a cabo un cálculo mediante un proceso tal como el cálculo de un valor promedio de vectores de movimiento de dos macrobloques en el par de macrobloques adyacente; no obstante, la presente invención no se limita a los casos anteriores. Por ejemplo, solo cuando una estructura de codificación 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 codificación 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 codificación 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 índice más pequeño, 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 continuación, 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 índice más pequeño, 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, después de calcular un vector de movimiento de cada par de macrobloques adyacente, 3. Cuando el número de vectores de movimiento obtenido al hacer referencia a una trama con el índice más pequeño o a un campo en la trama entre estos vectores de movimiento solo es uno, el vector de movimiento se determina como un vector de movimiento de un par de macrobloques actual en el modo directo, y si el número 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.
Además, en los casos anteriores, cuál 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 basándose en la mayoría de una estructura de codificación de pares de macrobloques adyacentes codificados; no obstante, la presente invención no se limita al caso anterior. Una estructura de codificación 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 conmutación se lleva a cabo, por ejemplo, de una forma por secuencias, una forma por GOP, una forma por imágenes 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 codificación 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. Además, 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 transmisión puede estar más 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 cuál de la estructura de trama o la estructura de campo se usa, un proceso para determinar una estructura de codificación mediante el uso de información de adyacentes se hace innecesario, y se puede simplificar un proceso.
Además, en el modo directo, después de procesar un par de macrobloques actual usando tanto la estructura de trama como la estructura de campo, una estructura de codificación con una eficiencia de codificación más alta puede seleccionarse. En este caso, se puede describir cuál de la estructura de trama y la estructura de campo se selecciona en una parte de encabezado de un par de macrobloques bajo codificación. No resulta necesario indicar que, incluso en los casos anteriores, solo cuando las estructuras de codificación 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 información que muestra cuál 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 compensación de movimiento y la eficiencia de codificación se puede mejorar.
En la explicación anterior se mostró el caso en el que la compensación de movimiento se lleva a cabo para pares de macrobloques adyacentes de una forma por tamaño del macrobloque; no obstante, una compensación de movimiento se puede llevar a cabo de una forma por tamaño diferente. En este caso, tal como se muestra en las figuras 48A y 48B, un vector de movimiento que contiene píxeles 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 píxeles situados en a, b y c, y un bloque que incluye píxeles 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 píxeles a, b y c. Por ejemplo, en el caso de la figura 49A, cuando las estructuras de codificación (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 codificación (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 compensación de movimiento se lleva a cabo para macrobloques adyacentes de una forma por tamaño usando un tamaño 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.
Además, cuando la compensación de movimiento se lleva a cabo para macrobloques adyacentes de una forma por tamaño que sea diferente de un macrobloque, mediante el cálculo 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 compensación de movimiento se lleva a cabo para macrobloques adyacentes de una forma por tamaño usando un tamaño 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.
Por cierto, tal como se ha mencionado en lo que antecede, se obtiene un vector de movimiento, y se lleva a cabo la codificación de predicción entre imágenes basándose en el vector de movimiento obtenido. Como resultado, el vector de movimiento obtenido en la unidad de detección 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 índices de referencia no se describen en un flujo de bits. La figura 50 es una ilustración que muestra un ejemplo de una configuración de datos de un flujo de bits 700 generado por una unidad de generación de flujos de bits 104. Tal como se muestra en la figura 50, en el flujo de bits 700 generado por la unidad de generación de flujos de bits 104, un Encabezado está 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 asignación del primer índice de referencia 12 y el segundo índice de referencia 13 en la lista de tramas 10 se cambia con respecto a los ajustes iniciales, un procedimiento de asignación después 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 predicción espacial en el modo directo, un vector de movimiento del macrobloque no se describe en un factor Bloque1, y la información que muestra un modo de codificación 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 codificación del macrobloque. Cuando se selecciona cuál de la estructura de trama o la estructura de campo se usa para la codificación desde el punto de vista de la eficiencia de codificación que se ha mencionado en lo que antecede, se describe la información que muestra la selección entre la estructura de trama y la estructura de campo. A continuación, el error predictivo codificado se describe en un factor CodedRes. Cuando otro macrobloque es un macrobloque codificado en un modo de codificación de predicción entre imágenes, este se describe en el factor PredType en un factor Bloque2 que un modo de codificación para el macrobloque es el modo de codificación de predicción entre imágenes. En el presente caso, el factor CodeRes muestra un modo de codificación 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 índice de referencia 12 del macrobloque se describe más en un factor Ridx0, y el segundo índice de referencia 13 se describe más en un factor Ridx1 que no es el modo de codificación. Los índices de referencia en un bloque son representados por palabras de código de longitud variable, y la longitud de código más corta se asigna al valor más pequeño. A continuación, 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 atrás se describe en un factor MV1. A continuación, el error predictivo codificado se describe en el factor CodeRes.
La figura 51 es un diagrama de bloques que muestra una configuración de un aparato de descodificación de imágenes en movimiento 800 que descodifica el flujo de bits 700 que se muestra en la figura 50. El aparato de descodificación de imágenes en movimiento 800 es un aparato de descodificación de imágenes 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 análisis de flujos de bits 701, una unidad de descodificación de diferencia predictiva 702, una unidad de descodificación de modo 703, una unidad de descodificación de compensación de movimiento 705, una unidad de almacenamiento de vectores de movimiento 706, una memoria de tramas 707, una unidad de operación de adición 708, conmutadores 709 y 710, y una unidad de descodificación de vectores de movimiento 711. La unidad de análisis de flujos de bits 701 extrae varios datos de un flujo de bits introducido 700. En el presente caso, varios datos incluyen información tal como información acerca de un modo de codificación e información acerca de un vector de movimiento o similar. La información extraída en un modo de codificación es enviada a la unidad de descodificación de modo 703. Por otro lado, la información extraída en un vector de movimiento es enviada a la unidad de descodificación de vectores de movimiento 705. Además, los datos de codificación de diferencia predictiva extraídos son enviados a la unidad de descodificación de diferencia predictiva 702. La unidad de descodificación de diferencia predictiva 702 descodifica los datos de codificación 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 está conectado a una terminal b, una imagen de diferencia predictiva es enviada a la unidad de operación de adición 708.
La unidad de descodificación de modo 703 controla los conmutadores 709 y 710 haciendo referencia a una información de modo de codificación extraída de un flujo de bits. Cuando un modo de codificación es un modo de codificación entre imágenes, la unidad de descodificación de modo 703 controla para conectar el conmutador 709 con una terminal a y para conectar el conmutador 710 con una terminal c. Además, la unidad de descodificación de modo 703 emite una información de modo de codificación a la unidad de descodificación de compensación de movimiento 705 y la unidad de descodificación de vectores de movimiento 711. La unidad de descodificación de vectores de movimiento 711 descodifica un vector de movimiento codificado introducido de la unidad de análisis de flujos de bits 701. El número 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 descodificación de compensación de vectores de movimiento 705 al mismo tiempo.
Cuando un modo de codificación es el modo directo, la unidad de descodificación de modo 703 controla para conectar el conmutador 709 con la terminal b y para conectar el conmutador 710 con una terminal d. Además, la unidad de descodificación de modo 703 envía una información de modo de codificación a la unidad de descodificación de compensación de movimiento 705 y la unidad de descodificación de vectores de movimiento 711.
La unidad de descodificación 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 número de imagen de referencia almacenado en la unidad de almacenamiento de vectores de movimiento 706, cuando un modo de codificación 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 operación de la unidad de selección de modo 109 que se muestra en la figura 40, se omitirá en el presente caso la explicación.
Basándose en el número de imagen de referencia descodificada y en el vector de movimiento descodificado, la unidad de descodificación de compensación de movimiento 705 obtiene una imagen de compensación de movimiento de una forma por macrobloques de la memoria de tramas 707. La imagen de compensación de movimiento obtenida es enviada a la unidad de operación de adición 708. La memoria de tramas 707 es una memoria que almacena imágenes de descodificación de una forma por tramas. La unidad de operación de adición 708 añade una imagen de diferencia predictiva introducida a una imagen de compensación 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 realización, 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 un par de macrobloques actual que se va a codificar incluyen en un procedimiento de predicción espacial en el modo directo, un vector de movimiento se puede calcular fácilmente.
Obsérvese que en la realización 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 conmutación de una estructura de trama y una estructura de campo de una forma diferente, por ejemplo, de una forma por macrobloques.
Además, en la realización 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 compensación 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 realización 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 realización se puede cambiar por un proceso que calcule un vector de movimiento.
Además, en la realización anterior se explica el caso en el que la generación 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 número 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.
(Duodécima realización)
Al almacenar en un medio de almacenamiento tal como un disco flexible un programa para lograr una configuración del procedimiento de codificación de imágenes y el procedimiento de descodificación de imágenes que se han mencionado en la realización anterior, se hace posible llevar a cabo fácilmente el proceso que se ha mencionado en la realización anterior en un sistema informático independiente.
La figura 52 es una ilustración que explica un medio de almacenamiento que almacena un programa para lograr el procedimiento de codificación de imágenes y el procedimiento de descodificación de la primera realización a la undécima realización anteriores en un sistema informático.
La figura 52B muestra una vista externa del disco flexible visto desde delante, una configuración de una sección transversal y el disco flexible, y la figura 52A muestra un ejemplo de un formato físico de un disco flexible como un cuerpo de un medio de almacenamiento. Un disco flexible f D está contenido en un estuche F, y varias pistas Tr están formadas concéntricamente sobre la superficie del disco desde un radio exterior a uno interior, y cada pista está dividida en 16 sectores Se en dirección angular. Por lo tanto, en cuanto al disco flexible que almacena el programa que se ha mencionado en lo que antecede, un procedimiento de codificación de imágenes y un procedimiento de descodificación de imágenes como el programa anterior se almacenan en un área asignada en el disco flexible FD que se ha mencionado en lo que antecede.
La figura 52C muestra una configuración 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 codificación de imágenes y un procedimiento de descodificación de imágenes como el programa que se ha mencionado en lo que antecede son escritos por medio de una unidad de disco flexible en un sistema informático Cs. Cuando el procedimiento de codificación o descodificación anterior es construido en el sistema informático por el programa en el disco flexible, el programa se lee del disco flexible y se transfiere al sistema informático.
Obsérvese que, en la explicación anterior, se usa un disco flexible como un medio de almacenamiento; no obstante, es posible lograr el mismo desempeño usando un disco óptico. Además, 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 continuación se explicarán las aplicaciones del procedimiento de codificación de imágenes y el procedimiento de descodificación de imágenes que se muestran en la realización anterior y un sistema que usa las aplicaciones. La figura 53 es un diagrama de bloques que muestra una configuración general de un sistema de suministro de contenidos ex100 para lograr el servicio de distribución de contenidos. El área para proporcionar el servicio de comunicación está dividida en células de un tamaño deseado, y en sitios de célula ex107 ~ ex110 los cuales son estaciones inalámbricas fijas colocadas en cada célula.
En este sistema de suministro de contenidos ex100, por ejemplo, la Internet ex101 está conectada a dispositivos tales como un ordenador ex111, un PDA (P e rs o n a l D ig ita l A ss is ta n t, Asistente Digital Personal) ex112, una cámara ex113, un teléfono celular ex114 y un teléfono celular con una cámara ex115 por medio del proveedor de servicio de Internet ex102, una red telefónica ex104 y sitios de célula ex107 ~ ex110.
No obstante, el sistema de suministro de contenidos ex100 no se limita a la configuración que se muestra en la figura 53, y se puede conectar a una combinación de cualquiera de estos. De forma similar, cada dispositivo se puede conectar directamente a la red telefónica ex104, no a través de los sitios de célula ex107 ~ ex110.
La cámara ex113 es un aparato capaz de tomar imágenes en movimiento tal como una cámara de vídeo digital. El teléfono celular puede ser un teléfono celular de un sistema de PDC (P e rs o n a l D ig ita l C om m un ica tio n , Comunicación Digital Personal), un sistema de CDMA (C o d e D iv is ion M ú ltip le A ccess , Acceso Múltiple por División de Código), un sistema de W-CDMA (W id e b a n d -C o d e D iv is ion M u ltip le A ccess , Acceso Múltiple por División de Código de Banda Ancha) o un sistema de GSM (G lo b a l S ys te m fo r M ob ile C o m m un ica tio ns , Sistema Global de Comunicaciones Móviles), un sistema PHS (P e rs o n a l H a n d yp h o n e system , Sistema de Teléfono Portátil Personal) o similares.
Un servidor de transmisión por flujos ex103 está conectado a la cámara ex113 por medio del sitio de célula ex109 y la red telefónica ex104, y se hace posible la distribución en vivo o similar usando la cámara ex113 basándose en los datos codificados transmitidos desde el usuario. O bien la cámara ex113 o bien el servidor para transmitir los datos puede codificar los datos. También, los datos de imágenes en movimiento tomados por una cámara ex116 se pueden transmitir al servidor de transmisión por flujos ex103 por medio del ordenador ex111. La cámara ex116 es un dispositivo tal como una cámara digital capaz de tomar imágenes fijas y en movimiento. O bien la cámara ex116 o bien el ordenador ex111 pueden codificar los datos de imagen en movimiento. Un LSI ex117 incluido en el ordenador ex111 o la cámara ex116 lleva a cabo el procesamiento de codificación. Se puede integrar un soporte lógico para codificar y descodificar imágenes en cualquier tipo de medio de almacenamiento (tal como un CD-ROM, un disco flexible y un disco duro) que sea un medio de grabación el cual pueda ser leído por el ordenador ex111 o similar. Además, un teléfono celular con una cámara ex115 puede transmitir los datos de imágenes en movimiento. Estos datos de imágenes en movimiento son los datos codificados por el LSI incluido en el teléfono celular ex115. El sistema de suministro de contenidos ex100 codifica contenidos (tales como un vídeo musical en vivo) tomados por usuarios que usen la cámara ex113, la cámara ex116 o similares de la misma manera que la realización anterior, y los transmite al servidor de transmisión por flujos ex103, mientras que el servidor de transmisión por flujos ex103 realiza la distribución por flujos de los datos de contenido a los clientes según su solicitud. Los clientes incluyen el ordenador ex111, el PDA ex112, la cámara ex113, el teléfono celular ex114 y demás, 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 además recibir, descodificar y reproducir los datos en tiempo real para lograr de ese modo una difusión personal.
Cuando cada dispositivo en este sistema lleva a cabo la codificación o descodificación, se pueden usar el aparato de codificación de imágenes o el aparato de descodificación de imágenes que se muestra en la realización que se ha mencionado en lo que antecede. Un teléfono celular se explicará como un ejemplo.
La figura 54 es una ilustración que muestra al teléfono celular ex115 usando el procedimiento de codificación de imágenes y el procedimiento de descodificación de imágenes que se explican en las realizaciones anteriores. El teléfono celular ex115 tiene una antena ex201 para comunicarse con el sitio de célula ex110 por medio de ondas de radio, una unidad de cámara ex203 tal como una cámara CCD capaz de tomar imágenes en movimiento y fijas, una unidad de presentación visual ex202 tal como una pantalla de presentación visual de cristal líquido para desplegar los datos al descodificar imágenes y similares tomados por la unidad de cámara ex203 y recibidos por la antena ex201, una unidad de cuerpo que incluye un conjunto de teclas de operación 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 micrófono para introducir voz, un medio de almacenamiento ex207 para almacenar datos codificados o descodificados tales como datos de imágenes en movimiento o fijas tomadas por la cámara, datos de correos electrónicos recibidos y datos de imágenes en movimiento o fijas, y una unidad de ranura ex206 para unir el medio de almacenamiento ex207 al teléfono celular ex115. El medio de almacenamiento ex207 almacena en el mismo un elemento de memoria de almacenamiento intermedio, un tipo de EEPROM (E le c tr ic a lly E ra sa b le a n d P ro g ra m m a b le R e a d O n ly M em ory, Memoria de Solo Lectura Eléctricamente Borrable y Programable) que es una memoria no volátil eléctricamente borrable y reescribible, en un estuche de plástico tal como una tarjeta SD.
A continuación se explicará el teléfono celular ex115 haciendo referencia a la figura 55. En el teléfono celular ex115, una unidad de control principal ex311, diseñada para controlar de forma general cada unidad del cuerpo principal que contiene la unidad de presentación visual ex202 así como las teclas de operación ex204, está conectada a una unidad de circuito de suministro de energía ex310, una unidad de control de entrada de operación ex304, una unidad de codificación de imágenes ex312, una unidad de interfaz de cámara ex303, una unidad de control de LCD (L iq u id C ry s ta l D isp lay , Pantalla de Cristal Líquido) ex302, una unidad de descodificación de imágenes ex309, una unidad de multiplexión/separación ex308, una unidad de grabación y lectura ex307, una unidad de circuito de módem 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 operación de un usuario, la unidad de circuito de suministro de energía ex310 suministra a los componentes respectivos energía desde un paquete de batería para activar de esta manera el teléfono celular digital con una cámara ex115 para poner este en un estado latente.
En el teléfono celular ex115, la unidad de procesamiento de voz ex305 convierte las señales de voz recibidas por la unidad de entrada de voz ex205 en modo de conversación 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 módem ex306 lleva a cabo el procesamiento de amplio espectro de los datos de voz digitales, y la unidad de circuito de comunicación ex301 lleva a cabo la conversión digital a analógica y la transformación de frecuencia de los datos, para transmitir los mismos por medio de la antena ex201. De forma similar, en el teléfono celular ex115, la unidad de circuito de comunicación ex301 amplifica los datos recibidos por la antena ex201 en el modo de conversación y lleva a cabo la transformación de frecuencia y la conversión analógica a digital de los datos, la unidad de circuito de módem 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 analógicos, para que sean enviados por medio de la unidad de salida de voz ex208.
Además, cuando se transmite un correo electrónico en modo de comunicación de datos, los datos de texto del correo electrónico introducidos al operar las teclas de operación ex204 en el cuerpo principal son enviados a la unidad de control principal ex311 por medio de la unidad de control de entrada de operación ex304. En la unidad de control principal ex311, después de que la unidad de circuito de módem ex306 lleve a cabo el procesamiento de amplio espectro de los datos de texto y de que la unidad de circuito de comunicación ex301 lleve a cabo la conversión digital a analógica y la transformación de frecuencia de estos, los datos se transmiten al sitio de célula ex110 por medio de la antena ex201.
Cuando los datos de imagen se transmiten en modo de comunicación de datos, los datos de imagen tomados por la unidad de cámara ex203 son suministrados a la unidad de codificación de imágenes ex312 por medio de la unidad de interfaz de cámara ex303. Cuando no se transmiten, también es posible desplegar los datos de imagen tomados por la unidad de cámara ex203 directamente sobre la unidad de presentación visual ex202 por medio de la unidad de interfaz de cámara ex303 y la unidad de control de LCD ex302.
La unidad de codificación de imágenes ex312, la cual incluye el aparato de codificación de imágenes tal como se explica en la presente invención, comprime y codifica los datos de imagen suministrados desde la unidad de cámara ex203 usando el procedimiento de codificación empleado por el aparato de codificación de imágenes como el que se muestra en la realización que se ha mencionado en lo que antecede para transformar los mismos de esta manera en datos de imagen codificados, y los envía a la unidad de multiplexión/separación ex308. En este momento, el teléfono celular ex115 envía la voz recibida por la unidad de entrada de voz ex205 durante la toma por la unidad de cámara ex203 a la unidad de multiplexión/separación ex308 como datos de voz digitales por medio de la unidad de procesamiento de voz ex305.
La unidad de multiplexión/separación ex308 multiplexa los datos de imagen codificados y suministrados desde la unidad de codificación de imágenes ex312 y los datos de voz suministrados desde la unidad de procesamiento de voz ex305 usando un procedimiento predeterminado, a continuación, la unidad de circuito de módem ex306 lleva a cabo el procesamiento de amplio espectro de los datos multiplexados obtenidos como resultado de la multiplexión, y la unidad de circuito de comunicación ex301 lleva a cabo la conversión digital a analógica y la transformación de frecuencia de los datos para su transmisión por medio de la antena ex201.
Para recibir datos de un archivo de imágenes en movimiento que esté enlazado a una página de red o similar en el modo de comunicación de datos, la unidad de circuito de módem ex306 lleva a cabo procesamiento de amplio espectro inverso de los datos recibidos desde el sitio de célula ex110 por medio de la antena ex201, y envía los datos multiplexados obtenidos como resultado del procesamiento a la unidad de multiplexión/separación ex308. Para descodificar los datos multiplexados recibidos por medio de la antena ex201, la unidad de multiplexión/separación 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 codificación de imágenes ex309 y los datos de voz a la unidad de procesamiento de voz ex305, respectivamente por medio de la barra colectora sincronizada ex313.
A continuación, la unidad de descodificación de imágenes ex309, la cual incluye el aparato de descodificación de imágenes tal como se explica en la presente invención, descodifica el flujo de bits de datos de imagen usando el procedimiento de descodificación que se corresponde con el procedimiento de codificación 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 presentación 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 imágenes en movimiento enlazado a una página 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 analógicos, 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 imágenes en movimiento enlazado a una página de red, por ejemplo, son reproducidos.
La presente invención no se limita al sistema que se ha mencionado en lo que antecede, y al menos o bien el aparato de codificación de imágenes o bien el aparato de descodificación de imágenes en la realización que se ha mencionado en lo que antecede se pueden incorporar en un sistema de difusión digital como el que se muestra en la figura 56. Esta difusión digital por satélite o terrestre ha estado en boga recientemente. De manera más específica, un flujo de bits de información de vídeo se transmite desde una estación de difusión ex409 a, o comunicada con un satélite de difusión ex410 por medio de ondas de radio. Después de la recepción de esta, el satélite de difusión ex410 transmite ondas de radio para su difusión. A continuación, una antena de uso doméstico ex406 con una función de recepción de difusión vía satélite recibe las ondas de radio, y una televisión (receptor) ex401 o un descodificador de salón (STB, se t top bo x ) ex407 descodifica el flujo de bits codificado para su reproducción. El aparato de descodificación de imágenes como el que se muestra en la realización que se ha mencionado en lo que antecede se puede implementar en el aparato reproductor ex403 para la lectura y descodificación del flujo de bits grabado en un medio de almacenamiento ex402 que sea un medio de grabación tal como un CD y un DVD. En este caso, las señales de imágenes en movimiento reproducidas son desplegadas sobre un monitor ex404. También es concebible implementar el aparato de descodificación de imágenes en el descodificador de salón ex407 conectado a un cable ex405 para una televisión por cable o la antena ex406 para la difusión vía satélite y/o terrestre para de esta manera reproducir los datos en un monitor ex408 de la televisión ex401. El aparato de descodificación de imágenes puede estar incorporado en la televisión, no en el descodificador de salón. De forma similar, un automóvil ex412 que tenga una antena ex411 puede recibir señales que provengan del satélite ex410 o el sitio de célula ex107 para reproducir imágenes en movimiento sobre un aparato de presentación visual tal como un sistema de navegación para automóvil ex413.
Además, el aparato de codificación de imágenes como el que se muestra en la realización que se ha mencionado en lo que antecede puede codificar señales 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 señales de imágenes 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 descodificación de imágenes como el que se muestra en la realización que se ha mencionado en lo que antecede, las señales de imagen grabadas en el disco DVD ex421 o la tarjeta SD ex422 pueden ser reproducidas para su presentación visual sobre el monitor ex408.
Como la estructura del sistema de navegación para automóvil ex413, es concebible la estructura sin la unidad de cámara ex203, la unidad de interfaz de cámara ex303 y la unidad de codificación de imágenes ex312, de entre los componentes que se muestran en la figura 55. Lo mismo es de aplicación para el ordenador ex111, la televisión (receptor) ex401 y otros.
Además, se pueden concebir tres tipos de implementaciones para una terminal tal como el teléfono celular ex114 que se ha mencionado en lo que antecede; una terminal de envío/recepción implementada tanto con un codificador como con un descodificador, una terminal de envío implementada solo con un codificador, y una terminal de recepción implementada solo con un descodificador.
Tal como se ha descrito en lo que antecede, es posible usar el procedimiento de codificación de imágenes en movimiento o el procedimiento de descodificación de imágenes 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 codificación de imágenes de acuerdo con la presente invención es útil como un aparato de codificación de imágenes integrado en un ordenador personal con capacidad de comunicaciones, un PDA, una estación de difusión para la difusión digital y un teléfono celular o similar.
El aparato de descodificación de imágenes de acuerdo con la presente invención es útil como un aparato de descodificación de imágenes equipado para un ordenador personal con capacidad de comunicación, un PDA, un STB para recibir transmisiones digitales y un teléfono celular o similar.

Claims (6)

REIVINDICACIONES
1. Un procedimiento de codificación de imágenes para codificar un bloque actual incluido en una imagen actual usando codificación de modo directo, caracterizado porque el procedimiento de codificación de imágenes comprende:
en referencia a una primera lista en la que se asignan índices más pequeños a las imágenes que preceden a la imagen actual en orden de visualización que los índices asignados a las imágenes que siguen a la imagen actual, siendo la primera lista una lista de bloques de asociación de índice incluidos en la imagen actual con cada imagen a la que hacen referencia los bloques;
seleccionar, de la primera lista, como primera imagen de referencia, una imagen con el índice más pequeño de una pluralidad de imágenes a las que se refiere una pluralidad de bloques vecinos, estando la pluralidad de bloques vecinos en la vecindad del bloque actual en la imagen actual;
en referencia a una segunda lista en la que se asignan índices más pequeños a las imágenes que siguen a la imagen actual en orden de visualización que los índices asignados a las imágenes que preceden a la imagen actual, siendo la segunda lista una lista de bloques de asociación de índice incluidos en la imagen actual con cada imagen a la que hacen referencia los bloques;
seleccionar, de la segunda lista, como segunda imagen de referencia, una imagen con el índice más pequeño fuera de la pluralidad de imágenes a las que se refiere la pluralidad de bloques vecinos; y
codificar de manera predictiva el bloque actual haciendo referencia a la primera imagen de referencia y a la segunda imagen de referencia.
2. El procedimiento de codificación de imágenes de acuerdo con la reivindicación 1, que comprende, además: determinar, cuando la pluralidad de bloques vecinos tiene solo un vector de movimiento que se refiere a la primera imagen de referencia, el único vector de movimiento como un primer vector de movimiento; y determinar, cuando la pluralidad de bloques vecinos tiene solo un vector de movimiento que se refiere a la segunda imagen de referencia, el único vector de movimiento como un segundo vector de movimiento; y en el que dicha codificación predictiva del bloque actual se realiza usando el primer vector de movimiento y el segundo vector de movimiento.
3. El procedimiento de codificación de imágenes de acuerdo con la reivindicación 1, que comprende, además: determinar, cuando la pluralidad de bloques vecinos tiene una pluralidad de vectores de movimiento que se refiere a la primera imagen de referencia, un primer valor medio de la pluralidad de vectores de movimiento como un primer vector de movimiento; y
determinar, cuando la pluralidad de bloques vecinos tiene una pluralidad de vectores de movimiento que se refiere a la segunda imagen de referencia, un segundo valor medio de la pluralidad de vectores de movimiento como un segundo vector de movimiento; y
en el que dicha codificación predictiva del bloque actual se realiza usando el primer vector de movimiento y el segundo vector de movimiento.
4. Un aparato de codificación de imágenes que codifica un bloque actual incluido en una imagen actual usando codificación de modo directo, caracterizado porque el aparato de codificación de imágenes comprende:
una unidad de referencia:
operable para referirse a una primera lista en la que se asignan índices más pequeños a las imágenes que preceden a una imagen actual en orden de visualización que los índices asignados a las imágenes que siguen a una imagen actual, siendo la primera lista una lista de bloques de asociación de índice incluidos en una imagen actual con cada imagen a la que hacen referencia los bloques, y
operable para referirse a una segunda lista en la que se asignan índices más pequeños a las imágenes que siguen a una imagen actual en orden de visualización que los índices asignados a las imágenes que preceden a una imagen actual, siendo la segunda lista una lista de bloques de asociación de índice incluidos en una imagen actual con cada imagen a la que hacen referencia los bloques;
una unidad de selección:
operable para seleccionar de la primera lista, como primera imagen de referencia, una imagen con el índice más pequeño de una pluralidad de imágenes a las que se refiere una pluralidad de bloques vecinos, estando la pluralidad de bloques vecinos en la vecindad de un bloque actual en una imagen actual, y
operable para seleccionar de la segunda lista, como segunda imagen de referencia, una imagen con el índice más pequeño de la pluralidad de imágenes a las que se refiere la pluralidad de bloques vecinos; y una unidad de codificación operable para codificación predictiva del bloque actual haciendo referencia a la primera imagen de referencia y a la segunda imagen de referencia.
5. El aparato de codificación de imágenes de acuerdo con la reivindicación 4, que comprende, además:
una primera unidad de determinación operable para determinar, cuando la pluralidad de bloques vecinos tiene solo un vector de movimiento que se refiere a la primera imagen de referencia, el vector de movimiento como un primer vector de movimiento; y
una segunda unidad de determinación operable para determinar, cuando la pluralidad de bloques vecinos tiene solo un vector de movimiento que se refiere a la segunda imagen de referencia, el vector de movimiento como un segundo vector de movimiento; y
en el que dicha unidad de codificación es operable para codificación predictiva del bloque actual usando el primer vector de movimiento y el segundo vector de movimiento.
6. El aparato de codificación de imágenes de acuerdo con la reivindicación 4, que comprende, además:
una primera unidad de determinación operable para determinar, cuando la pluralidad de bloques vecinos tiene una pluralidad de vectores de movimiento que se refiere a la primera imagen de referencia, un primer valor medio de la pluralidad de vectores de movimiento como un primer vector de movimiento; y
una segunda unidad de determinación operable para determinar, cuando la pluralidad de bloques vecinos tiene una pluralidad de vectores de movimiento que se refiere a la segunda imagen de referencia, un segundo valor medio de la pluralidad de vectores de movimiento como un segundo vector de movimiento; y
en el que dicha unidad de codificación es operable para codificación predictiva del bloque actual usando el primer vector de movimiento y el segundo vector de movimiento.
ES16157926T 2002-04-19 2003-04-16 Procedimiento de cálculo de vectores de movimiento Expired - Lifetime ES2742799T3 (es)

Applications Claiming Priority (11)

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

Publications (1)

Publication Number Publication Date
ES2742799T3 true ES2742799T3 (es) 2020-02-17

Family

ID=29255790

Family Applications (5)

Application Number Title Priority Date Filing Date
ES17204569T Expired - Lifetime ES2745058T3 (es) 2002-04-19 2003-04-16 Método de cálculo de vectores de movimiento
ES17204565T Expired - Lifetime ES2745044T3 (es) 2002-04-19 2003-04-16 Método de cálculo de vectores de movimiento
ES17204555T Expired - Lifetime ES2743606T3 (es) 2002-04-19 2003-04-16 Procedimiento de cálculo de vectores de movimiento
ES17204573T Expired - Lifetime ES2745059T3 (es) 2002-04-19 2003-04-16 Método de cálculo de vectores de movimiento
ES16157926T Expired - Lifetime ES2742799T3 (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
ES17204569T Expired - Lifetime ES2745058T3 (es) 2002-04-19 2003-04-16 Método de cálculo de vectores de movimiento
ES17204565T Expired - Lifetime ES2745044T3 (es) 2002-04-19 2003-04-16 Método de cálculo de vectores de movimiento
ES17204555T Expired - Lifetime ES2743606T3 (es) 2002-04-19 2003-04-16 Procedimiento de cálculo de vectores de movimiento
ES17204573T Expired - Lifetime ES2745059T3 (es) 2002-04-19 2003-04-16 Método de cálculo de vectores de movimiento

Country Status (12)

Country Link
US (24) US7940845B2 (es)
EP (3) EP3525466B1 (es)
KR (4) KR20040099100A (es)
CN (2) CN1277419C (es)
AU (2) AU2003235174A1 (es)
CA (2) CA2451571A1 (es)
ES (5) ES2745058T3 (es)
HU (8) HUE053955T2 (es)
MX (1) MXPA03011334A (es)
MY (1) MY155930A (es)
PT (3) PT3525464T (es)
WO (2) WO2003090475A1 (es)

Families Citing this family (155)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7266150B2 (en) 2001-07-11 2007-09-04 Dolby Laboratories, Inc. Interpolation of video compression frames
US8111754B1 (en) 2001-07-11 2012-02-07 Dolby Laboratories Licensing Corporation Interpolation of video compression frames
US20030099294A1 (en) * 2001-11-27 2003-05-29 Limin Wang Picture level adaptive frame/field coding for digital video content
US7003035B2 (en) 2002-01-25 2006-02-21 Microsoft Corporation Video coding methods and apparatuses
PT3525464T (pt) 2002-04-19 2021-04-06 Panasonic Ip Corp America Método e sistema de codificação e descodificação de imagem
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
US7088776B2 (en) 2002-07-15 2006-08-08 Apple Computer, Inc. Method and apparatus for variable accuracy inter-picture timing specification for digital video encoding
CN1312927C (zh) * 2002-07-15 2007-04-25 株式会社日立制作所 动态图像编码方法及解码方法
US7154952B2 (en) 2002-07-19 2006-12-26 Microsoft Corporation Timestamp-independent motion vector prediction for predictive (P) and bidirectionally predictive (B) pictures
US6728315B2 (en) 2002-07-24 2004-04-27 Apple Computer, Inc. Method and apparatus for variable accuracy inter-picture timing specification for digital video encoding with reduced requirements for division operations
ES2653437T3 (es) 2002-08-08 2018-02-07 Godo Kaisha Ip Bridge 1 Procedimiento de descodificación de imágenes en movimiento
KR100506864B1 (ko) 2002-10-04 2005-08-05 엘지전자 주식회사 모션벡터 결정방법
ES2496979T3 (es) * 2002-11-01 2014-09-22 Panasonic Intellectual Property Corporation Of America Procedimiento de codificación de imágenes en movimiento y procedimiento de decodificación de imágenes en movimiento
KR100693669B1 (ko) * 2003-03-03 2007-03-09 엘지전자 주식회사 피일드 매크로 블록의 레퍼런스 픽쳐 결정 방법
US20050013498A1 (en) 2003-07-18 2005-01-20 Microsoft Corporation Coding of motion vector information
CN1875637A (zh) * 2003-08-26 2006-12-06 汤姆森特许公司 最小化用于相互编码的参考画面数目的方法和装置
US8064520B2 (en) 2003-09-07 2011-11-22 Microsoft Corporation Advanced bi-directional predictive coding of interlaced video
US7616692B2 (en) * 2003-09-07 2009-11-10 Microsoft Corporation Hybrid motion vector prediction for interlaced forward-predicted fields
US7724827B2 (en) 2003-09-07 2010-05-25 Microsoft Corporation Multi-layer run level encoding and decoding
US7623574B2 (en) * 2003-09-07 2009-11-24 Microsoft Corporation Selecting between dominant and non-dominant motion vector predictor polarities
US7567617B2 (en) * 2003-09-07 2009-07-28 Microsoft Corporation Predicting motion vectors for fields of forward-predicted interlaced video frames
US7400681B2 (en) * 2003-11-28 2008-07-15 Scientific-Atlanta, Inc. Low-complexity motion vector prediction for video codec with two lists of reference pictures
US7379608B2 (en) * 2003-12-04 2008-05-27 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung, E.V. Arithmetic coding for transforming video and picture data units
EP1667464B1 (en) * 2003-12-22 2013-03-06 NEC Corporation Method and apparatus for encoding moving pictures
US7480334B2 (en) * 2003-12-23 2009-01-20 Genesis Microchip Inc. Temporal motion vector filtering
CN1321534C (zh) * 2003-12-31 2007-06-13 中国科学院计算技术研究所 固定参考帧数编码方式下获取图像参考块的方法
CN1225128C (zh) * 2003-12-31 2005-10-26 中国科学院计算技术研究所 直接编码模式下确定参考图像块的方法
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
US9743078B2 (en) 2004-07-30 2017-08-22 Euclid Discoveries, Llc Standards-compliant model-based video encoding and decoding
TWI268715B (en) 2004-08-16 2006-12-11 Nippon Telegraph & Telephone Picture encoding method, picture decoding method, picture encoding apparatus, and picture decoding apparatus
KR20060043118A (ko) * 2004-10-07 2006-05-15 엘지전자 주식회사 영상 신호의 인코딩 및 디코딩 방법
US7813432B2 (en) * 2004-12-30 2010-10-12 Intel Corporation Offset buffer for intra-prediction of digital video
JP2009514592A (ja) * 2005-11-03 2009-04-09 チェフェル カンパニー リミテッド 調理容器用オーバーフロー防止蓋
JP4616765B2 (ja) * 2005-12-15 2011-01-19 富士通株式会社 動画像符号化装置
KR100904442B1 (ko) 2006-01-09 2009-06-24 엘지전자 주식회사 영상 신호의 레이어 간 예측 방법
KR20070074453A (ko) * 2006-01-09 2007-07-12 엘지전자 주식회사 영상 신호의 인코딩 및 디코딩 방법
EP1806930A1 (en) * 2006-01-10 2007-07-11 Thomson Licensing Method and apparatus for constructing reference picture lists for scalable video
US8306118B1 (en) * 2006-03-01 2012-11-06 Maxim Integrated, Inc. High quality low bitrate video coding by enabling and disabling a non-residual mode
JP4720543B2 (ja) * 2006-03-01 2011-07-13 ソニー株式会社 データ処理装置、データ処理方法およびデータ処理プログラム、記録媒体、ならびに、再生装置、再生方法および再生プログラム
JP4527677B2 (ja) * 2006-03-15 2010-08-18 富士通株式会社 動画像符号化方法、動画像符号化装置、動画像符号化プログラム
US8208553B2 (en) * 2006-05-04 2012-06-26 Altera Corporation Methods and apparatus for quarter-pel refinement in a SIMD array processor
US8559510B2 (en) * 2006-08-10 2013-10-15 Canon Kabushiki Kaisha Image decoding apparatus
US8767830B2 (en) * 2006-09-13 2014-07-01 Vixs Systems, Inc Neighbor management module for use in video encoding and methods for use therewith
AU2014210664A1 (en) * 2006-10-16 2014-08-28 Nokia Technologies Oy System and method for implementing efficient decoded buffer management in multi-view video coding
US7907217B2 (en) * 2006-10-31 2011-03-15 Siemens Medical Solutions Usa, Inc. Systems and methods of subtraction angiography utilizing motion prediction
US20080137726A1 (en) * 2006-12-12 2008-06-12 General Instrument Corporation Method and Apparatus for Real-Time Video Encoding
WO2008075663A1 (ja) * 2006-12-21 2008-06-26 Ajinomoto Co., Inc. 大腸癌の評価方法、ならびに大腸癌評価装置、大腸癌評価方法、大腸癌評価システム、大腸癌評価プログラムおよび記録媒体
JP4427086B2 (ja) * 2006-12-27 2010-03-03 パナソニック株式会社 動画像復号化装置
KR100809354B1 (ko) * 2007-02-02 2008-03-05 삼성전자주식회사 복원된 프레임의 프레임율을 업컨버팅하는 장치 및 방법
KR100906243B1 (ko) * 2007-06-04 2009-07-07 전자부품연구원 Rgb 색 공간 신호의 영상 부호화 방법
US8254455B2 (en) 2007-06-30 2012-08-28 Microsoft Corporation Computing collocated macroblock information for direct mode macroblocks
US8817878B2 (en) * 2007-11-07 2014-08-26 Broadcom Corporation Method and system for motion estimation around a fixed reference vector using a pivot-pixel approach
CN101453656B (zh) * 2007-11-29 2011-06-01 华为技术有限公司 视频编码、解码方法及装置和视频编解码系统
US20090225227A1 (en) * 2008-03-05 2009-09-10 Panasonic Corporation Motion vector detecting device
ES2812473T3 (es) 2008-03-19 2021-03-17 Nokia Technologies Oy Vector de movimiento combinado y predicción de índice de referencia para la codificación de vídeo
US8355443B2 (en) 2008-03-27 2013-01-15 CSR Technology, Inc. Recursive motion for motion detection deinterlacer
WO2010017166A2 (en) 2008-08-04 2010-02-11 Dolby Laboratories Licensing Corporation Overlapped block disparity estimation and compensation architecture
JP5578775B2 (ja) 2008-09-02 2014-08-27 富士通株式会社 符号化装置および復号装置
KR101377527B1 (ko) * 2008-10-14 2014-03-25 에스케이 텔레콤주식회사 복수 개의 참조 픽처의 움직임 벡터 부호화/복호화 방법 및장치와 그를 이용한 영상 부호화/복호화 장치 및 방법
KR101590511B1 (ko) 2009-01-23 2016-02-02 에스케이텔레콤 주식회사 움직임 벡터 부호화/복호화 장치 및 방법과 그를 이용한 영상 부호화/복호화 장치 및 방법
US8189666B2 (en) 2009-02-02 2012-05-29 Microsoft Corporation Local picture identifier and computation of co-located information
EP3567853B8 (en) 2009-03-23 2024-01-03 Ntt Docomo, Inc. Image predictive decoding device and image predictive decoding method
ES2850074T3 (es) * 2009-06-18 2021-08-25 Toshiba Kk Aparato de decodificación de vídeo y procedimiento de decodificación de vídeo
US9628794B2 (en) * 2009-06-18 2017-04-18 Kabushiki Kaisha Toshiba Video encoding apparatus and a video decoding apparatus
US9060176B2 (en) * 2009-10-01 2015-06-16 Ntt Docomo, Inc. Motion vector prediction in video coding
AU2013202014A1 (en) * 2010-01-14 2013-04-18 Samsung Electronics Co., Ltd Method and apparatus for encoding and decoding motion vector
KR101522850B1 (ko) * 2010-01-14 2015-05-26 삼성전자주식회사 움직임 벡터를 부호화, 복호화하는 방법 및 장치
JP5248632B2 (ja) 2010-01-14 2013-07-31 インテル コーポレイション 動き推定のための技術
US20110176611A1 (en) * 2010-01-15 2011-07-21 Yu-Wen Huang Methods for decoder-side motion vector derivation
CN102131091B (zh) * 2010-01-15 2013-01-23 联发科技股份有限公司 解码端运动向量导出方法
WO2011093688A2 (ko) * 2010-02-01 2011-08-04 엘지전자 주식회사 비디오 신호 처리 방법 및 장치
MX2012010863A (es) * 2010-04-01 2012-10-15 Sony Corp Dispositivo y metodo de procesamiento de imagenes.
KR101752418B1 (ko) * 2010-04-09 2017-06-29 엘지전자 주식회사 비디오 신호 처리 방법 및 장치
EP2580912B1 (en) 2010-07-09 2017-01-25 Samsung Electronics Co., Ltd Method for decoding video by using block merging
US9124898B2 (en) * 2010-07-12 2015-09-01 Mediatek Inc. Method and apparatus of temporal motion vector prediction
ES2785606T3 (es) 2010-07-20 2020-10-07 Ntt Docomo Inc Dispositivo de decodificación predictiva de imágenes, método de decodificación predictiva de imágenes
US9602813B2 (en) * 2010-08-18 2017-03-21 Sk Telecom Co., Ltd. Image encoding/decoding device and method, and reference picture indexing device and method
DK3001686T3 (da) * 2010-10-06 2020-03-23 Ntt Docomo Inc Indretning, fremgangsmåde og program til biprædiktiv billedafkodning
RU2010144450A (ru) 2010-10-29 2012-05-10 ЭлЭсАй Корпорейшн (US) Оценка движения для видео транскодера
WO2012070235A1 (ja) * 2010-11-24 2012-05-31 パナソニック株式会社 動きベクトル算出方法、画像符号化方法、画像復号方法、動きベクトル算出装置および画像符号化復号装置
US10778969B2 (en) 2010-12-17 2020-09-15 Sun Patent Trust Image coding method and image decoding method
ES2934221T3 (es) * 2010-12-22 2023-02-20 Lg Electronics Inc Método de intrapredicción y aparato que utiliza el método
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
KR102292708B1 (ko) 2011-01-07 2021-08-23 엘지전자 주식회사 영상 정보 부호화 방법 및 복호화 방법과 이를 이용한 장치
CN106851306B (zh) 2011-01-12 2020-08-04 太阳专利托管公司 动态图像解码方法和动态图像解码装置
TW201246943A (en) * 2011-01-26 2012-11-16 Panasonic Corp Video image encoding method, video image encoding device, video image decoding method, video image decoding device, and video image encoding and decoding device
JP5323273B2 (ja) * 2011-02-10 2013-10-23 パナソニック株式会社 動画像符号化方法、及び動画像符号化装置
WO2012114694A1 (ja) 2011-02-22 2012-08-30 パナソニック株式会社 動画像符号化方法、動画像符号化装置、動画像復号方法、および、動画像復号装置
US10171813B2 (en) 2011-02-24 2019-01-01 Qualcomm Incorporated Hierarchy of motion prediction video blocks
JP5883431B2 (ja) * 2011-02-25 2016-03-15 パナソニック インテレクチュアル プロパティ コーポレーション オブアメリカPanasonic Intellectual Property Corporation of America 画像符号化方法および画像復号化方法
WO2012117728A1 (ja) 2011-03-03 2012-09-07 パナソニック株式会社 動画像符号化方法、動画像復号方法、動画像符号化装置、動画像復号装置、及び動画像符号化復号装置
GB2488816A (en) * 2011-03-09 2012-09-12 Canon Kk Mapping motion vectors from a plurality of reference frames to a single reference frame
CN102685479A (zh) * 2011-03-11 2012-09-19 华为技术有限公司 视频编解码处理方法和装置
US9648334B2 (en) 2011-03-21 2017-05-09 Qualcomm Incorporated Bi-predictive merge mode based on uni-predictive neighbors in video coding
PL3136727T3 (pl) 2011-04-12 2018-11-30 Sun Patent Trust Sposób kodowania ruchomych obrazów i urządzenie do kodowania ruchomych obrazów
WO2012160803A1 (ja) 2011-05-24 2012-11-29 パナソニック株式会社 画像符号化方法、画像符号化装置、画像復号方法、画像復号装置、および、画像符号化復号装置
CA2834123C (en) 2011-05-27 2020-02-11 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
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
EP4270953A3 (en) 2011-05-31 2023-11-22 Sun Patent Trust Video decoding method, video decoding device
JP5786478B2 (ja) * 2011-06-15 2015-09-30 富士通株式会社 動画像復号装置、動画像復号方法、及び動画像復号プログラム
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
MX2013013508A (es) 2011-06-23 2014-02-27 Panasonic Corp Metodo de decodificacion de imagenes, metodo de codificacion de imagenes, aparato de decodificacion de imagenes, aparato de codificacion de imagenes y aparato de codificacion y decodificacion de imagenes.
TWI581615B (zh) 2011-06-24 2017-05-01 Sun Patent Trust A decoding method, a coding method, a decoding device, an encoding device, and a coding / decoding device
EP2725792B1 (en) 2011-06-24 2018-08-22 Sun Patent Trust Image decoding method and image decoding device
AU2012277214B2 (en) 2011-06-27 2016-05-05 Sun Patent Trust Decoding method, coding method, decoding apparatus, coding apparatus, and coding and decoding apparatus
WO2013001765A1 (ja) 2011-06-28 2013-01-03 パナソニック株式会社 画像復号方法、画像符号化方法、画像復号装置、画像符号化装置及び画像符号化復号装置
EP2728875B1 (en) 2011-06-28 2019-01-09 LG Electronics Inc. Method for setting motion vector list
WO2013001767A1 (ja) 2011-06-29 2013-01-03 パナソニック株式会社 画像復号方法、画像符号化方法、画像復号装置、画像符号化装置及び画像符号化復号装置
KR102060619B1 (ko) 2011-06-30 2019-12-30 선 페이턴트 트러스트 화상 복호 방법, 화상 부호화 방법, 화상 복호 장치, 화상 부호화 장치 및 화상 부호화 복호 장치
KR102200578B1 (ko) 2011-06-30 2021-01-11 가부시키가이샤 제이브이씨 켄우드 화상 부호화 장치, 화상 부호화 방법, 화상 부호화 프로그램, 화상 복호 장치, 화상 복호 방법 및 화상 복호 프로그램
KR102365353B1 (ko) * 2011-06-30 2022-02-23 가부시키가이샤 제이브이씨 켄우드 화상 부호화 장치, 화상 부호화 방법, 화상 부호화 프로그램, 화상 복호 장치, 화상 복호 방법 및 화상 복호 프로그램
AU2012277220B2 (en) 2011-06-30 2016-08-11 Sun Patent Trust Image decoding method, image coding method, image decoding apparatus, image coding apparatus, and image coding and decoding apparatus
KR101900986B1 (ko) 2011-06-30 2018-09-20 선 페이턴트 트러스트 화상 복호 방법, 화상 부호화 방법, 화상 복호 장치, 화상 부호화 장치, 및, 화상 부호화 복호 장치
US9232233B2 (en) * 2011-07-01 2016-01-05 Apple Inc. Adaptive configuration of reference frame buffer based on camera and background motion
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.
CN106851295B (zh) 2011-07-11 2019-10-18 太阳专利托管公司 编码方法及编码装置
EP2741499A4 (en) 2011-08-03 2014-12-10 Panasonic Ip Corp America VIDEO CODING METHOD, VIDEO CODING METHOD, VIDEO CODING DEVICE, VIDEO ENCODING DEVICE AND VIDEO ENCODING / DECODING DEVICE
CN103858428B (zh) 2011-10-19 2018-07-03 太阳专利托管公司 图像编码方法、图像编码装置、图像解码方法及图像解码装置
KR102365524B1 (ko) 2011-11-02 2022-02-23 타지반 투 엘엘씨 동화상 부호화 방법, 동화상 부호화 장치, 동화상 복호 방법, 동화상 복호 장치, 및, 동화상 부호화 복호 장치
JP5485969B2 (ja) * 2011-11-07 2014-05-07 株式会社Nttドコモ 動画像予測符号化装置、動画像予測符号化方法、動画像予測符号化プログラム、動画像予測復号装置、動画像予測復号方法及び動画像予測復号プログラム
AU2015201551B2 (en) * 2011-11-08 2015-06-18 Samsung Electronics Co., Ltd. Method and device for determining motion vector for video coding or video decoding
RU2566957C2 (ru) 2011-11-08 2015-10-27 Самсунг Электроникс Ко., Лтд. Способ и устройство для определения вектора движения в кодировании или декодировании видео
WO2013099031A1 (ja) * 2011-12-28 2013-07-04 株式会社安川電機 エンジニアリングツール
US20130177084A1 (en) * 2012-01-10 2013-07-11 Qualcomm Incorporated Motion vector scaling in video coding
TWI580259B (zh) * 2012-01-18 2017-04-21 Jvc Kenwood Corp Dynamic image decoding device, dynamic image decoding method, and dynamic image decoding program
PL2805511T3 (pl) 2012-01-20 2019-09-30 Sun Patent Trust Sposoby i urządzenie do kodowania i dekodowania wideo przy użyciu predykcji wektora ruchu w czasie
JPWO2013111596A1 (ja) * 2012-01-26 2015-05-11 パナソニック インテレクチュアル プロパティ コーポレーション オブアメリカPanasonic Intellectual Property Corporation of America 動画像符号化方法および動画像符号化装置
CA2827194C (en) 2012-02-03 2018-01-16 Panasonic Corporation Image coding method, image decoding method, image coding apparatus, image decoding apparatus, and image coding and decoding apparatus
EP2824920A4 (en) 2012-03-06 2016-02-17 Panasonic Ip Corp America VIDEO CODING METHOD, VIDEO CODING METHOD, VIDEO COORDING DEVICE, VIDEO CODING DEVICE AND VIDEO CODING / DECODING DEVICE
US10200709B2 (en) 2012-03-16 2019-02-05 Qualcomm Incorporated High-level syntax extensions for high efficiency video coding
US9247196B1 (en) * 2012-08-30 2016-01-26 Ambarella, Inc. High efficiency video coding for video with interlaced and progressive content using lookahead
CN104704827B (zh) 2012-11-13 2019-04-12 英特尔公司 用于下一代视频的内容自适应变换译码
US9106793B2 (en) 2013-01-03 2015-08-11 Cisco Technology, Inc. Method and apparatus for motion based participant switching in multipoint video conferences
EP3085085A4 (en) * 2014-01-29 2017-11-08 MediaTek Inc. Method and apparatus for adaptive motion vector precision
US10091507B2 (en) 2014-03-10 2018-10-02 Euclid Discoveries, Llc Perceptual optimization for model-based video encoding
US10097851B2 (en) 2014-03-10 2018-10-09 Euclid Discoveries, Llc Perceptual optimization for model-based video encoding
US9621917B2 (en) * 2014-03-10 2017-04-11 Euclid Discoveries, Llc Continuous block tracking for temporal prediction in video encoding
KR101635111B1 (ko) * 2014-05-15 2016-06-30 삼성전자주식회사 움직임 벡터를 부호화, 복호화하는 방법 및 장치
JP2016066922A (ja) * 2014-09-25 2016-04-28 ソニー株式会社 信号処理装置、撮像装置、および、それらにおける信号処理方法。
FR3029055B1 (fr) * 2014-11-24 2017-01-13 Ateme Procede d'encodage d'image et equipement pour la mise en oeuvre du procede
US10148965B2 (en) * 2015-03-04 2018-12-04 Panasonic Intellectual Property Management Co., Ltd. Moving image coding apparatus and moving image coding method
CN106303544B (zh) * 2015-05-26 2019-06-11 华为技术有限公司 一种视频编解码方法、编码器和解码器
US20190014326A1 (en) * 2017-07-06 2019-01-10 Intel Corporation Imu enhanced reference list management and encoding
US10602178B1 (en) * 2017-12-21 2020-03-24 Mozilla Corporation Systems and methods for frame context selection
CN116647695A (zh) 2018-09-06 2023-08-25 Lg电子株式会社 图像解码设备、图像编码设备和数据发送设备
CN111083491A (zh) 2018-10-22 2020-04-28 北京字节跳动网络技术有限公司 细化运动矢量的利用
WO2020098655A1 (en) 2018-11-12 2020-05-22 Beijing Bytedance Network Technology Co., Ltd. Motion vector storage for inter prediction
CN117319644A (zh) 2018-11-20 2023-12-29 北京字节跳动网络技术有限公司 基于部分位置的差计算
WO2020103870A1 (en) * 2018-11-20 2020-05-28 Beijing Bytedance Network Technology Co., Ltd. Inter prediction with refinement in video processing
CN117119181B (zh) * 2019-02-20 2024-03-26 北京达佳互联信息技术有限公司 用于视频编码和视频解码的方法、计算设备和存储介质
JP2022521554A (ja) 2019-03-06 2022-04-08 北京字節跳動網絡技術有限公司 変換された片予測候補の利用
US11601656B2 (en) * 2021-06-16 2023-03-07 Western Digital Technologies, Inc. Video processing in a data storage device

Family Cites Families (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US38563A (en) * 1863-05-19 Improvement jn lighting gas by electricity
US5086439A (en) * 1989-04-18 1992-02-04 Mitsubishi Denki Kabushiki Kaisha Encoding/decoding system utilizing local properties
JPH0420088A (ja) 1990-05-14 1992-01-23 Victor Co Of Japan Ltd フレーム間符号化装置
JP3031638B2 (ja) 1991-01-30 2000-04-10 富士通株式会社 蓄積用動画像符号化方式における補間フレームのベクトル探索方法
JPH05137131A (ja) 1991-11-13 1993-06-01 Sony Corp フレーム間動き予測方法
JPH0662391A (ja) 1992-08-10 1994-03-04 Nippon Telegr & Teleph Corp <Ntt> 動画像予測符号化方法
US5329365A (en) * 1993-07-07 1994-07-12 Rca Thomson Licensing Corporation Method and apparatus for providing compressed non-interlaced scanned video signal
KR0148154B1 (ko) 1994-06-15 1998-09-15 김광호 움직임크기에 따른 동영상데이타의 부호화방법 및 장치
JP3513277B2 (ja) 1995-08-29 2004-03-31 シャープ株式会社 映像符号化装置及び映像復号化装置
US5724446A (en) * 1995-04-18 1998-03-03 Advanced Micro Devices, Inc. Video decoder apparatus using non-reference frame as an additional prediction source and method therefor
US5809173A (en) * 1995-04-18 1998-09-15 Advanced Micro Devices, Inc. Method and apparatus for improved video decompression using previous frame DCT coefficients
EP1274254B1 (en) * 1995-08-29 2011-07-06 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 動画像符号化装置
JP2872109B2 (ja) * 1996-05-14 1999-03-17 株式会社グラフィックス・コミュニケーション・ラボラトリーズ 動画像符号化方法および装置
JP3344577B2 (ja) 1996-09-09 2002-11-11 ソニー株式会社 画像符号化装置および画像符号化方法、画像復号化装置および画像復号化方法、並びに記録方法
JP3263807B2 (ja) * 1996-09-09 2002-03-11 ソニー株式会社 画像符号化装置および画像符号化方法
JP3019787B2 (ja) 1996-09-20 2000-03-13 日本電気株式会社 動きベクトル検出装置
JPH10126787A (ja) 1996-10-14 1998-05-15 Nec Eng Ltd Pピクチャの予測ベクトルをオフセットベクトルとした双方向予測ベクトル検出回路
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
US6005980A (en) * 1997-03-07 1999-12-21 General Instrument Corporation Motion estimation and compensation of video object planes for interlaced digital video
JP3776735B2 (ja) 1997-04-09 2006-05-17 松下電器産業株式会社 画像予測復号化方法,画像予測復号化装置,画像予測符号化方法,画像予測符号化装置,及びデータ記憶媒体
SG65064A1 (en) * 1997-04-09 1999-05-25 Matsushita Electric Ind Co Ltd Image predictive decoding method image predictive decoding apparatus image predictive coding method image predictive coding apparatus and data storage media
DE69838281T2 (de) 1997-06-25 2008-05-15 Nippon Telegraph And Telephone Corp. Bewegungsprädiktives bildkodierungsverfahren sowie speichermedium zur speicherung des entsprechenden programms
JPH1169356A (ja) * 1997-08-25 1999-03-09 Mitsubishi Electric Corp 動画像符号化方式及び動画像復号方式
US6807231B1 (en) * 1997-09-12 2004-10-19 8×8, Inc. Multi-hypothesis motion-compensated video image predictor
US6249318B1 (en) * 1997-09-12 2001-06-19 8×8, Inc. Video coding/decoding arrangement and method therefor
US6396874B1 (en) * 1997-11-12 2002-05-28 Sony Corporation Decoding method and apparatus and recording method and apparatus for moving picture data
JP3523481B2 (ja) 1998-02-23 2004-04-26 シャープ株式会社 映像符号化装置及び映像復号化装置並びに映像符号化方法及び映像復号化方法
JP3724204B2 (ja) * 1998-03-10 2005-12-07 ソニー株式会社 符号化装置および方法、並びに記録媒体
US6274537B1 (en) * 1998-08-05 2001-08-14 Samsung Electronics Co., Ltd. Use of alkoxy N-hydroxyalkyl alkanamide as resist removing agent, composition for removing resist, method for preparing the same and resist removing method using the same
GB2360662B (en) 1999-05-13 2002-01-09 Nec Corp Picture coding apparatus
JP3329768B2 (ja) 1999-07-05 2002-09-30 日本電信電話株式会社 画像符号化データの再符号化方法およびそのプログラム記録媒体
JP2001045475A (ja) 1999-07-27 2001-02-16 Matsushita Electric Ind Co Ltd 映像信号階層化符号化装置と映像信号階層化復号化装置及びプログラム記録媒体
JP2001086508A (ja) * 1999-09-13 2001-03-30 Victor Co Of Japan Ltd 動画像復号方法及び動画像復号装置
JP3757088B2 (ja) * 1999-10-26 2006-03-22 日本電気株式会社 動画像符号化装置および方法
US7253831B2 (en) * 2000-05-10 2007-08-07 Polycom, Inc. Video coding using multiple buffers
GB2362532B (en) * 2000-05-15 2004-05-05 Nokia Mobile Phones Ltd Video coding
US7027711B2 (en) * 2000-06-26 2006-04-11 Matsushita Electric Industrial Co., Ltd. Editing apparatus for an optical disk, computer-readable storage medium, and computer program
JP4245790B2 (ja) 2000-08-29 2009-04-02 オリンパス株式会社 超音波処置具
US6738980B2 (en) * 2001-11-15 2004-05-18 Industrial Technology Research Institute Methods and systems for video streaming with VCR functionality
CA2468087C (en) * 2001-11-21 2013-06-25 General Instrument Corporation Macroblock level adaptive frame/field coding for digital video content
EP2268041A1 (en) 2001-11-21 2010-12-29 General Instrument Corporation Picture level adaptive frame/field coding for digital video content
US6980596B2 (en) * 2001-11-27 2005-12-27 General Instrument Corporation Macroblock level adaptive frame/field coding for digital video content
US7003035B2 (en) * 2002-01-25 2006-02-21 Microsoft Corporation Video coding methods and apparatuses
JP2004088722A (ja) 2002-03-04 2004-03-18 Matsushita Electric Ind Co Ltd 動画像符号化方法および動画像復号化方法
PT3525464T (pt) * 2002-04-19 2021-04-06 Panasonic Ip Corp America Método e sistema de codificação e descodificação de imagem
KR100506864B1 (ko) 2002-10-04 2005-08-05 엘지전자 주식회사 모션벡터 결정방법

Also Published As

Publication number Publication date
EP1411729A4 (en) 2007-03-07
KR20100005233A (ko) 2010-01-14
EP1411729A1 (en) 2004-04-21
US8958480B2 (en) 2015-02-17
KR20040099100A (ko) 2004-11-26
HUE045566T2 (hu) 2020-01-28
US20170048544A1 (en) 2017-02-16
HUE053922T2 (hu) 2021-07-28
US7940845B2 (en) 2011-05-10
US9693074B2 (en) 2017-06-27
AU2003231356B2 (en) 2009-10-01
EP1441537A1 (en) 2004-07-28
US10440386B2 (en) 2019-10-08
US20100202539A1 (en) 2010-08-12
US20190014341A1 (en) 2019-01-10
PT3525465T (pt) 2021-05-10
HUE044739T2 (hu) 2019-11-28
HUE044582T2 (hu) 2019-11-28
US20170324976A1 (en) 2017-11-09
US20140064376A1 (en) 2014-03-06
US20040136461A1 (en) 2004-07-15
US9723323B2 (en) 2017-08-01
US20160112716A1 (en) 2016-04-21
US9723325B2 (en) 2017-08-01
US20170085907A1 (en) 2017-03-23
US9948947B2 (en) 2018-04-17
US8964848B2 (en) 2015-02-24
US20170048546A1 (en) 2017-02-16
US20080063075A1 (en) 2008-03-13
AU2003235174A1 (en) 2003-11-03
US10404995B2 (en) 2019-09-03
PT3525467T (pt) 2021-04-08
US20170048547A1 (en) 2017-02-16
US20170302955A1 (en) 2017-10-19
US9955181B2 (en) 2018-04-24
US20180376162A1 (en) 2018-12-27
US8929453B2 (en) 2015-01-06
EP3525466A1 (en) 2019-08-14
KR20080031519A (ko) 2008-04-08
US20170302956A1 (en) 2017-10-19
CA2451568A1 (en) 2003-10-30
ES2745058T3 (es) 2020-02-27
US20140064375A1 (en) 2014-03-06
CN1518834A (zh) 2004-08-04
ES2743606T3 (es) 2020-02-20
HUE053955T2 (hu) 2021-08-30
ES2745044T3 (es) 2020-02-27
US20120328024A1 (en) 2012-12-27
US9723324B2 (en) 2017-08-01
US8290049B2 (en) 2012-10-16
EP3525466B1 (en) 2022-02-09
KR101011849B1 (ko) 2011-01-31
CN1290341C (zh) 2006-12-13
HUE044584T2 (hu) 2019-11-28
US20150172701A1 (en) 2015-06-18
HUE044616T2 (hu) 2019-11-28
MXPA03011334A (es) 2004-04-20
KR100931746B1 (ko) 2009-12-14
US8971411B2 (en) 2015-03-03
US9485519B2 (en) 2016-11-01
US20150131736A1 (en) 2015-05-14
US20170048545A1 (en) 2017-02-16
US20190020891A1 (en) 2019-01-17
US9083980B2 (en) 2015-07-14
US9729896B2 (en) 2017-08-08
KR20090086610A (ko) 2009-08-13
EP1411729B1 (en) 2016-03-23
ES2745059T3 (es) 2020-02-27
CN1518833A (zh) 2004-08-04
US20140072047A1 (en) 2014-03-13
US10097855B2 (en) 2018-10-09
PT3525464T (pt) 2021-04-06
CN1277419C (zh) 2006-09-27
CA2451568C (en) 2012-08-21
AU2003231356A1 (en) 2003-11-03
US20160100185A1 (en) 2016-04-07
US20140072046A1 (en) 2014-03-13
US10397602B2 (en) 2019-08-27
US9516338B2 (en) 2016-12-06
MY155930A (en) 2015-12-31
US9948948B2 (en) 2018-04-17
WO2003090475A1 (fr) 2003-10-30
CA2451571A1 (en) 2003-10-30
WO2003090473A1 (fr) 2003-10-30
HUE054106T2 (hu) 2021-08-30
US7733960B2 (en) 2010-06-08
KR100931750B1 (ko) 2009-12-14
US9264730B2 (en) 2016-02-16
US20170302957A1 (en) 2017-10-19
EP1441537A4 (en) 2006-06-07
US8605789B2 (en) 2013-12-10

Similar Documents

Publication Publication Date Title
ES2742799T3 (es) Procedimiento de cálculo de vectores de movimiento
ES2664855T3 (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
JP2004208259A (ja) 動きベクトル計算方法
JP2004208258A (ja) 動きベクトル計算方法
BRPI0304534B1 (pt) método e aparelho para determinar o vetor de movimento