ES2834135T3 - Codificación y descodificación de vídeo con resiliencia mejorada frente a errores - Google Patents

Codificación y descodificación de vídeo con resiliencia mejorada frente a errores Download PDF

Info

Publication number
ES2834135T3
ES2834135T3 ES19171827T ES19171827T ES2834135T3 ES 2834135 T3 ES2834135 T3 ES 2834135T3 ES 19171827 T ES19171827 T ES 19171827T ES 19171827 T ES19171827 T ES 19171827T ES 2834135 T3 ES2834135 T3 ES 2834135T3
Authority
ES
Spain
Prior art keywords
predictor
predictors
motion vector
encoded
motion information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
ES19171827T
Other languages
English (en)
Inventor
Christophe Gisquet
Guillaume Laroche
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.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Application granted granted Critical
Publication of ES2834135T3 publication Critical patent/ES2834135T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • H04N19/139Analysis of motion vectors, e.g. their magnitude, direction, variance or reliability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • 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/115Selection of the code volume for a coding unit prior to coding
    • 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/146Data rate or code amount at the encoder output
    • H04N19/147Data rate or code amount at the encoder output according to rate distortion criteria
    • 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
    • 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/43Hardware specially adapted for motion estimation or 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
    • 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/65Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using error resilience
    • 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/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • H04N19/89Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving methods or arrangements for detection of transmission errors at the decoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • H04N19/89Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving methods or arrangements for detection of transmission errors at the decoder
    • H04N19/895Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving methods or arrangements for detection of transmission errors at the decoder in combination with error concealment
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
    • 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/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/192Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding the adaptation method, adaptation tool or adaptation type being iterative or recursive
    • 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
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

Procedimiento de codificación de una secuencia de imágenes en un flujo de bits utilizando interpredicción, comprendiendo el procedimiento: determinar un número objetivo para un fragmento que incluye una pluralidad de bloques de una imagen a codificar, en el que la imagen incluye una pluralidad de fragmentos; codificar en el flujo de bits información sobre el número objetivo para el fragmento; y realizar, para cada uno de uno o varios de la pluralidad de bloques en el fragmento codificado mediante un modo de interpredicción, las etapas de: generar un número de predictores de información del movimiento igual al número objetivo; seleccionar un predictor de información del movimiento del número objetivo de los predictores de información del movimiento; y codificar, en el flujo de bits, información de índice correspondiente al predictor seleccionado de información del movimiento, en el que la información de índice es codificada utilizando un código de tipo prefijo que comprende el bit "1" i veces seguido por un cero, donde i indica un valor de un índice del predictor seleccionado de información del movimiento, de modo que un número de bits en el código más largo para la información del índice depende del número objetivo.

Description

DESCRIPCIÓN
Codificación y descodificación de vídeo con resiliencia mejorada frente a errores
Sector técnico de la invención
La invención se refiere a un procedimiento y a un dispositivo para la codificación de una secuencia de imágenes digitales y a un procedimiento y a un dispositivo para la descodificación de un flujo de bits correspondiente.
La invención pertenece al sector técnico del procesamiento digital de señales y, en particular, al sector técnico de la compresión de vídeo que utiliza la compensación de movimiento para reducir las redundancias espaciales y temporales en flujos de vídeo.
Estado de la técnica anterior
Muchos formatos de compresión de vídeo, por ejemplo, H.263, H.264, MPEG-1, MPEG-2, MPEG-4, SVC, utilizan la transformada de coseno discreta (DCT, Discrete Cosine Transform) basada en bloques y la compensación de movimiento para eliminar redundancias espaciales y temporales. Se pueden denominar formatos predictivos de vídeo. Cada fotograma o imagen de la señal de vídeo se divide en fragmentos, que son codificados y pueden ser descodificados de manera independiente. Un fragmento es habitualmente una porción rectangular del fotograma, o de manera más general, una porción de un fotograma o un fotograma completo. Además, cada fragmento está dividido en macrobloques (MB), y cada macrobloque está dividido, además, en bloques, habitualmente, en bloques de 8x8 píxeles. Los fotogramas codificados son de dos tipos: fotogramas predichos temporales (predichos a partir de un fotograma de referencia denominados fotogramas P o predichos a partir de dos fotogramas de referencia denominados fotogramas B) y fotogramas predichos no temporales (denominados intrafotogramas o fotogramas I). La predicción temporal consiste en encontrar en un fotograma de referencia, bien un fotograma anterior o un fotograma futuro de la secuencia de vídeo, una porción de imagen o un área de referencia, que es la más próxima al bloque a codificar. Esta etapa es conocida como estimación del movimiento. A continuación, la diferencia entre el bloque a codificar y la porción de referencia se codifica (compensación del movimiento), junto con un elemento de información del movimiento relativo al vector de movimiento que indica el área de referencia a utilizar para la compensación del movimiento.
Con el fin de reducir más el coste de codificar la información del movimiento, se ha propuesto codificar un vector de movimiento mediante la diferencia con respecto a un predictor del vector de movimiento, calculado habitualmente a partir de los vectores de movimiento de los bloques que rodean el bloque a codificar.
En H.264, los vectores de movimiento son codificados con respecto a un predictor medio calculado a partir de los vectores de movimiento situados en una proximidad causal del bloque a codificar, por ejemplo, a partir de los bloques situados arriba y a la izquierda del bloque a codificar. Se codifica solo la diferencia, también denominada vector de movimiento residual, entre el predictor medio y el vector de movimiento del bloque actual.
La codificación utilizando los vectores de movimiento residuales ahorra algo de tasa de bits, pero requiere que el descodificador realice el mismo cálculo del predictor del vector de movimiento para descodificar el valor del vector de movimiento de un bloque a descodificar.
Recientemente, se han propuesto otras mejoras, tales como la utilización de una pluralidad de posibles predictores del vector de movimiento. Este procedimiento, denominado competición de vectores de movimiento, consiste en determinar entre diversos predictores del vector de movimiento o candidatos, qué predictor del vector de movimiento minimiza el coste de codificación, habitualmente un coste de tasa-distorsión, de la información del movimiento residual. La información del movimiento residual comprende el vector de movimiento residual, es decir, la diferencia entre el vector de movimiento real del bloque a codificar y el predictor del vector de movimiento seleccionado, y un elemento de información que indica el predictor del vector de movimiento seleccionado, tal como, por ejemplo, un valor codificado del índice del predictor del vector de movimiento seleccionado.
En la codificación de vídeo de alta eficiencia (HEVC, High Efficiency Video Coding) actualmente en vías de normalización, se ha propuesto la utilización de una pluralidad de predictores del vector de movimiento, tal como se muestra esquemáticamente en la figura 1: 3 denominados predictores espaciales del vector de movimiento V1 , V2 y V3 tomados de los bloques situados en la proximidad del bloque a codificar, un predictor medio del vector de movimiento calculado basándose en los componentes de los tres predictores espaciales del vector de movimiento V1 , V2 y V3 y un predictor temporal del vector de movimiento V0, que es el vector de movimiento del bloque ubicado en la misma posición en una imagen anterior de la secuencia (por ejemplo, el bloque de la imagen N-1 situado en la misma posición espacial que el bloque “que está siendo codificado” de la imagen N). Actualmente, en HEVC, los 3 predictores espaciales del vector de movimiento se toman del bloque situado a la izquierda del bloque a codificar (V3), del bloque situado arriba (V2) y de uno de los bloques situados en las esquinas respectivas del bloque a codificar, de acuerdo con una regla de disponibilidad predeterminada. Este esquema de selección de predictor del vector de movimiento se denomina predicción avanzada del vector de movimiento (AMVP, Advanced Motion Vector Prediction). En el ejemplo de la figura 1, se selecciona el vector V1 del bloque situado arriba a la izquierda.
Finalmente, se obtiene un conjunto de 5 candidatos a predictor del vector de movimiento que mezclan predictores espaciales y predictores temporales. Con el fin de reducir la sobrecarga de señalización del predictor del vector de movimiento en el flujo de bits, el conjunto de predictores del vector de movimiento se reduce eliminando los vectores de movimiento duplicados, es decir, los vectores de movimiento que tienen el mismo valor. Por ejemplo, en la ilustración de la figura 1, V1 y V2 son iguales, y V0 y V3 también son iguales, de modo que solo dos de ellos se deben mantener como candidatos de predicción del vector de movimiento, por ejemplo, V0 y V1. En este caso, solo es necesario un bit para indicar el índice del predictor del vector de movimiento al descodificador.
Es posible otra reducción del conjunto de predictores del vector de movimiento, basándose en los valores de los predictores. Una vez que se ha seleccionado el mejor predictor del vector de movimiento y que se ha calculado el residuo del vector de movimiento, es posible eliminar, además, del conjunto de predicción los candidatos que no habrían sido seleccionados, conociendo el residuo del vector de movimiento y el criterio de optimización del coste del codificador. Una reducción suficiente del conjunto de predictores conduce a una ganancia en la sobrecarga de señalización, dado que la indicación del predictor del vector de movimiento seleccionado puede ser codificada utilizando menos bits. En el límite, el conjunto de candidatos se puede reducir a 1, por ejemplo, si todos los predictores del vector de movimiento son iguales y, por tanto, no es necesario introducir ninguna información en relación al predictor del vector de movimiento seleccionado en el flujo de bits.
En resumen, la codificación de los vectores de movimiento mediante la diferencia con un predictor del vector de movimiento, junto con la reducción del número de candidatos a predictor del vector de movimiento, conduce a una ganancia de compresión. No obstante, tal como se ha explicado anteriormente, para un bloque a codificar determinado, la reducción del número de candidatos a predictor del vector de movimiento se basa en los valores que adoptan los predictores del vector de movimiento del conjunto, en concreto, los valores de los vectores de movimiento de los bloques de la proximidad y del vector de movimiento del bloque ubicado en la misma posición. Asimismo, el descodificador necesita poder aplicar el mismo análisis del conjunto de posibles predictores del vector de movimiento que el codificador, para poder deducir la cantidad de bits utilizados para indicar el predictor del vector de movimiento seleccionado y poder descodificar el índice del predictor del vector de movimiento y finalmente descodificar el vector de movimiento utilizando el residuo del vector de movimiento recibido. Haciendo referencia al ejemplo de la figura 1, el conjunto de predictores del vector de movimiento del bloque “que está siendo codificado” es reducido por el codificador a V0 y V1, de modo que el índice es codificado en un único bit. Si el bloque de la imagen N-1 “ubicado en la misma posición” se pierde durante la transmisión, el descodificador no puede obtener el valor de V0 y, por tanto, no puede descubrir que V0 y V3 son iguales. Por tanto, el descodificador no puede encontrar cuántos bits se utilizaron para la codificación del índice del predictor del vector de movimiento para el bloque “que está siendo codificado” y, en consecuencia, el descodificador no puede analizar sintácticamente de forma correcta los datos para el fragmento, ya que no puede encontrar dónde se detiene la codificación del índice y dónde se inicia la codificación de los datos de vídeo.
Por tanto, el hecho de que el número de bits utilizado para señalizar los predictores del vector de movimiento depende de los valores adoptados por los predictores del vector de movimiento hace que el procedimiento sea muy vulnerable a errores de transmisión, cuando se transmite el flujo de bits a un descodificador en una red de comunicación con pérdidas. De hecho, el procedimiento requiere el conocimiento de los valores de los predictores del vector de movimiento para analizar sintácticamente el flujo de bits correctamente en el descodificador. En el caso de pérdidas de paquetes, cuando se pierden algunos valores residuales del vector de movimiento, es imposible que el descodificador determine cuántos bits se utilizaron para codificar el índice que representa el predictor del vector de movimiento y, de este modo, es imposible analizar sintácticamente el flujo de bits correctamente. Un error de este tipo puede propagarse, provocando la desincronización del descodificador hasta que el descodificador recibe una siguiente imagen de sincronización, codificada sin predicción.
Sería deseable poder analizar sintácticamente, por lo menos, un flujo de bits codificado en un descodificador incluso en el caso de pérdidas de paquetes, de modo que posteriormente se puede aplicar una cierta resincronización o cancelación de errores.
Se ha propuesto, en el documento JCTVC-C166r1, “TE11: Study on motion vector coding (experiment 3.3a and 3.3c) [TE11: Estudio sobre la codificación de vectores de movimiento] (experimento 3.3a y 3.3c)]”, de K. Sato, publicado en la tercera reunión del Equipo de colaboración conjunta sobre la codificación de vídeo (JTC-VC) de Guangzhou, del 7 al 15 de octubre de 2010, utilizar solamente los predictores espaciales del vector de movimiento que provienen del mismo fragmento en el conjunto de predictores. Esta solución resuelve el problema de analizar sintácticamente en el descodificador en el caso de pérdidas de fragmentos. No obstante, la eficiencia de la codificación disminuye significativamente, dado que el predictor temporal del vector de movimiento ya no se utiliza. Por tanto, esta solución no es satisfactoria en términos de rendimiento de la compresión.
Se observa que la Patente WO 2010/146314 A1 (FRANCE TELECOM [FR]; PATEUX STEPHANE [FR]; CLARE GORDON [FR]; JUNG JOE) publicada el 23 de diciembre de 2010 da a conocer un procedimiento de codificación de vectores de movimiento que utiliza un conjunto de predictores. De este modo, la Patente da a conocer la determinación de un subconjunto de detección óptima que consiste en dos predictores candidatos para cada bloque del vídeo y la selección de un predictor.
Se ha propuesto en el documento JCTVC-C257 versión 1 (con fecha de 2 de octubre de 2010) “On motion vector competition” de Y. Su et al., publicado en la 3a reunión del Equipo de colaboración conjunta sobre la codificación de vídeo (JTC-VC) de Guangzhou, del 7 al 15 de octubre de 2010, enviar el candidato a vector de movimiento como un indicador, que señaliza si el predictor seleccionado es el bloque temporal ubicado y, posteriormente, un índice en el conjunto de predictores espaciales cuando no se selecciona el bloque temporal ubicado.
CARACTERÍSTICAS DE LA INVENCIÓN
Es deseable abordar uno o varios de los inconvenientes de la técnica anterior.
De acuerdo con un aspecto de la presente invención, se da a conocer un procedimiento de codificación, según cualquiera de las reivindicaciones 1 a 8. De acuerdo con otro aspecto de la presente invención se da a conocer un procedimiento de descodificación, según cualquiera de las reivindicaciones 9 a 13. De acuerdo con otro aspecto de la presente invención, se da a conocer un dispositivo para codificar, según la reivindicación 14. De acuerdo con aún otro aspecto de la presente invención, se da a conocer un dispositivo para descodificar, según la reivindicación 15. En otro aspecto de la presente invención, se da a conocer un programa informático, según la reivindicación 16. De acuerdo con un aspecto, se da a conocer un procedimiento de codificación de una secuencia de imágenes digitales en un flujo de bits, por lo menos, una porción de una imagen que está siendo codificada por compensación de movimiento con respecto a una porción de la imagen de referencia, comprendiendo el procedimiento: obtener para una porción de la imagen a codificar un número objetivo de predictores de información del movimiento; generar utilizando dicho número objetivo un conjunto de predictores de información del movimiento; seleccionar un predictor de información del movimiento para dicha porción de la imagen a codificar a partir de dicho conjunto generado de predictores de información del movimiento y señalizar en dicho flujo de bits dicho número objetivo e información relacionada con el predictor de información del movimiento seleccionado.
De acuerdo con otro aspecto, se da a conocer un procedimiento de descodificación de un flujo de bits que comprende una secuencia codificada de imágenes digitales, por lo menos, una porción de una imagen que está siendo codificada por compensación de movimiento con respecto a una imagen de referencia, comprendiendo el procedimiento: obtener de dicho flujo de bits un número objetivo de predictores de información del movimiento para una porción de la imagen a descodificar; generar utilizando dicho número objetivo un conjunto de predictores de información del movimiento; y determinar un predictor de información del movimiento para dicha porción de imagen a descodificar a partir del conjunto generado de predictores de información del movimiento.
De acuerdo con otro aspecto, se da a conocer un dispositivo para codificar una secuencia de imágenes digitales en un flujo de bits, por lo menos, una porción de una imagen que se está codificando por compensación de movimiento con respecto a una porción de imagen de referencia, comprendiendo el dispositivo: medios para obtener un número objetivo (Nmax) de predictores de información del movimiento; medios para generar utilizando dicho número objetivo un conjunto de predictores de información del movimiento; y medios para seleccionar un predictor de información del movimiento para dicha porción de imagen a codificar a partir de dicho conjunto generado de predictores de información del movimiento, y señalizar en dicho flujo de bits dicho número objetivo e información relacionada con el predictor de información del movimiento seleccionado.
De acuerdo con otro aspecto, se da a conocer un dispositivo para descodificar un flujo de bits que comprende una secuencia codificada de imágenes digitales, por lo menos, una porción de una imagen que está siendo codificada por compensación de movimiento con respecto a una imagen de referencia, comprendiendo el dispositivo: medios para obtener a partir de dicho flujo de bits un número objetivo (Nmax) de predictores de información del movimiento; medios para generar utilizando dicho número objetivo un conjunto de predictores de información del movimiento; y medios para determinar un predictor de información del movimiento para una porción de imagen a descodificar a partir de dicho conjunto generado de predictores de información del movimiento.
Otros aspectos de la presente invención dan a conocer programas informáticos que, cuando son ejecutados en un ordenador, hacen que el ordenador lleve a cabo un procedimiento para codificar una señal de vídeo digital, tal como se ha descrito anteriormente y un procedimiento para descodificar un flujo de bits, tal como se ha descrito anteriormente. En cada caso, el programa puede estar almacenado en un medio de almacenamiento legible por ordenador.
Es asimismo deseable dar a conocer un procedimiento que permite un análisis sintáctico correcto en el descodificador incluso en el caso de un flujo de bits que se ha corrompido por pérdidas en la transmisión mientras se mantiene una buena eficiencia de la compresión.
Con este fin, se puede dar a conocer un procedimiento de codificación de una secuencia de imágenes digitales en un flujo de bits, por lo menos, una porción de una imagen que está siendo codificada por una compensación de movimiento con respecto a una porción de la imagen de referencia. El procedimiento comprende para, por lo menos, una porción de la imagen a codificar, las etapas de:
- obtener un número objetivo de predictores de información del movimiento a utilizar para dicha porción de imagen a codificar, y
- generar un conjunto de predictores de información del movimiento que consiste en dicho número objetivo de predictores de información del movimiento, cada predictor de información del movimiento del conjunto generado siendo diferente de cualquier otro predictor de información del movimiento del conjunto generado.
Ventajosamente, el procedimiento permite la determinación sistemática de un número objetivo de los predictores de información del movimiento a utilizar para codificar información del movimiento, tal como un vector de movimiento, asociado con una porción de imagen, y la compresión es mejorada ventajosamente al generar un conjunto de predictores de información del movimiento que son todos diferentes los unos de los otros. La sobrecarga potencial de utilización de un número objetivo fijo de predictores de información del movimiento es compensada por la variedad de predictores seleccionada, que ayuda a mejorar la tasa de compresión. El número objetivo de diferentes predictores de información del movimiento se determina y fija independientemente de los valores reales de los elementos de información del movimiento, tales como los vectores de movimiento, seleccionados como predictores de información del movimiento para la porción de imagen actual a codificar.
Una realización es efectiva cuando el número de predictores de información del movimiento que se genera inicialmente es a priori desconocido, por ejemplo, como cuando se utiliza AMVP. Por ejemplo, si se lleva a cabo la reducción de un conjunto inicial, y el número de predictores inicial eliminado por el proceso de reducción es a priori desconocido, se puede utilizar una realización para garantizar que el conjunto final de predictores de información del movimiento consiste en el número objetivo de predictores de información del movimiento.
De acuerdo con una realización, el procedimiento de codificación comprende, además, las etapas de:
- seleccionar un predictor de información del movimiento para dicha porción de imagen a codificar a partir de dicho conjunto generado de predictores de información del movimiento, y
- codificar un elemento de información representativa de dicho predictor de información del movimiento seleccionado basándose en dicho número objetivo obtenido.
Ventajosamente, se puede seleccionar un predictor de información del movimiento para un bloque actual a codificar y el predictor del vector de movimiento seleccionado puede ser codificado dependiendo del número de predictores de información del movimiento determinado. El número de predictores de información del movimiento puede ser recuperado sistemáticamente por el descodificador, de modo que el flujo de bits codificado puede ser analizado sintácticamente de forma sistemática en el descodificador, incluso en caso de pérdidas.
De acuerdo con una realización, el elemento de información representativo de dicho predictor del vector de movimiento seleccionado es un índice del predictor del vector de movimiento seleccionado en el conjunto generado de predictores de información del movimiento, y el índice es codificado en un número de bits dependiente de dicho número objetivo obtenido.
De acuerdo con una realización, en la etapa de obtener un número objetivo de predictores de información del movimiento a utilizar para dicha porción de imagen a codificar, dicho número objetivo se establece igual a un valor predeterminado para cualquier porción de imagen a codificar de la secuencia de imágenes digitales.
La ventaja de esta realización es que el número objetivo de predictores de información del movimiento puede obtenerse fácilmente, sin ningún cálculo complementario o sobrecarga de señalización, tanto en el codificador como en el descodificador.
De acuerdo con otra realización, en la etapa de obtener un número objetivo de predictores de información del movimiento a utilizar para dicha porción de imagen a codificar, dicho número objetivo es determinado, para una porción de imagen determinada a codificar, dependiendo de una información de codificación de dicha porción de imagen determinada a codificar.
Ventajosamente, una información de codificación de este tipo puede ser un parámetro de codificación, tal como por ejemplo, si las imágenes están divididas en macrobloques de tamaño variable para procesar el tamaño del macrobloque al que pertenece la porción de imagen a codificar. Una información de codificación de este tipo también puede ser, por ejemplo, un modo de codificación asociado a la porción de imagen a codificar.
De acuerdo con aún otro aspecto, la invención se refiere a un dispositivo para codificar una secuencia de imágenes digitales en un flujo de bits, por lo menos, una porción de una imagen que está siendo codificada por compensación de movimiento con respecto a una porción de imagen de referencia. El dispositivo comprende para, por lo menos, una porción de imagen a codificar:
- medios para obtener un número objetivo de predictores de información del movimiento a utilizar para dicha porción de imagen a codificar, y
- medios para generar un conjunto de predictores de información del movimiento que consisten en dicho número objetivo de predictores de información del movimiento, siendo cada predictor de información del movimiento del conjunto generado diferente de cualquier otro predictor de información del movimiento del conjunto generado.
De acuerdo con aún otro aspecto, la invención también se refiere a un producto de programa informático que puede ser cargado en un aparato programable, que comprende secuencias de instrucciones para implementar un procedimiento para codificar una secuencia de imágenes digitales como se ha descrito de manera breve anteriormente, cuando el programa se carga en el aparato programable y es ejecutado por el mismo. Un programa informático de este tipo puede ser transitorio o no transitorio. En una implementación, el programa informático puede ser almacenado sobre un medio portador legible por ordenador no transitorio.
Dado que las características y ventajas concretas del dispositivo para codificar una secuencia de imágenes digitales, de los medios de almacenamiento y del producto de programa informático son similares a las del procedimiento de codificación de señales digitales de vídeo, no se repetirán aquí.
De acuerdo con aún otro aspecto, la invención se refiere asimismo a un procedimiento para descodificar un flujo de bits que comprende una secuencia codificada de imágenes digitales, por lo menos, una porción de una imagen que está siendo codificada por compensación de movimiento con respecto a una imagen de referencia. Para, por lo menos, dicha porción de imagen a descodificar, el procedimiento comprende las etapas de:
- obtener un número objetivo de predictores de información del movimiento a utilizar para dicha porción de imagen a descodificar, y
- generar un conjunto de predictores de información del movimiento que consiste en dicho número objetivo de predictores de información del movimiento, siendo cada predictor de información del movimiento del conjunto generado diferente de cualquier otro predictor de información del movimiento del conjunto generado.
El procedimiento para descodificar un flujo de bits tiene la ventaja de permitir la determinación de un número objetivo de predictores de información del movimiento y la utilización de un número de este tipo de diferentes predictores de información del movimiento. El número objetivo de predictores de información del movimiento puede ser recuperado sistemáticamente y, en consecuencia, el flujo de bits puede ser analizado sintácticamente de forma sistemática, incluso en el caso de errores de transmisión. Otra ventaja es que en todos los casos, el análisis sintáctico del flujo de bits es simple y, en concreto, más simple que con los procedimientos de la técnica anterior, que reducen de forma adaptativa el número de predictores de información del movimiento en lugar de utilizar un número objetivo predeterminado que puede obtenerse mediante el descodificador.
De acuerdo con una realización, el procedimiento comprende, además, una etapa de descodificar un elemento de información representativo de un predictor de información del movimiento seleccionado para dicha porción de imagen a descodificar basándose en dicho número objetivo obtenido.
Ventajosamente, en el caso de que se haya aplicado en el codificador una codificación que depende del número de predictores de información del movimiento, el elemento de información representativo del predictor de información del movimiento seleccionado para dicha porción de imagen a descodificar puede ser descodificado sistemáticamente, incluso en el caso de errores de transmisión.
De acuerdo con aún otro aspecto, la invención se refiere asimismo a un dispositivo para descodificar un flujo de bits que comprende una secuencia codificada de imágenes digitales, por lo menos, una porción de una imagen que está siendo codificada por compensación de movimiento con respecto a una porción de imagen de referencia. El dispositivo comprende para, por lo menos, dicha porción de imagen a descodificar:
- medios para obtener un número objetivo de predictores de información del movimiento a utilizar para dicha porción de imagen a descodificar, y
- medios para generar un conjunto de predictores de información del movimiento que consiste en dicho número objetivo de predictores de información del movimiento, siendo cada predictor de información del movimiento del conjunto generado diferente de cualquier otro predictor de información del movimiento del conjunto generado.
De acuerdo con aún otro aspecto, la invención se refiere asimismo a unos medios de almacenamiento de información que pueden ser leídos por un ordenador o un microprocesador, estos medios de almacenamiento pueden ser desmontables, y almacenar instrucciones de un programa informático para la implementación del procedimiento de descodificación de un flujo de bits, tal como se ha descrito de manera breve anteriormente.
De acuerdo con aún otro aspecto, la invención se refiere asimismo a un producto de programa informático que puede ser cargado en un aparato programable, que comprende secuencias de instrucciones para implementar un procedimiento para descodificar un flujo de bits, tal como se ha descrito de manera breve anteriormente, cuando el programa está cargado en el aparato programable y es ejecutado por el mismo. Un programa informático de este tipo puede ser transitorio o no transitorio. En una implementación, el programa informático puede ser almacenado en un medio portador legible por ordenador no transitorio.
Dado que las características y ventajas concretas del dispositivo para descodificar un flujo de bits, de los medios de almacenamiento y del producto de programa informático son similares a las del procedimiento de descodificación, no se repetirán aquí.
De acuerdo con otro aspecto de la presente invención, se da a conocer un procedimiento de codificación de una secuencia de imágenes digitales en un flujo de bits, por lo menos, una porción de una imagen que está siendo codificada por compensación de movimiento con respecto a una porción de imagen de referencia, comprendiendo el procedimiento generar un conjunto de predictores de información del movimiento teniendo diversidad controlada y seleccionar un predictor de información del movimiento para dicha porción de imagen a codificar a partir de dicho conjunto generado de predictores de información del movimiento.
Diversidad controlada significa que los predictores de información del movimiento del conjunto son diferentes los unos de los otros, pero uno o varios de ellos es estadísticamente probable que estén próximos a la información del movimiento real, de modo que un residuo (diferencia entre la información del movimiento real y el predictor implicado) es pequeño y, por tanto, compresible de forma eficiente.
El procedimiento puede comprender:
generar primeros predictores de información del movimiento;
identificar uno o varios primeros predictores de información del movimiento como predictores semilla;
generar uno o varios segundos predictores de información del movimiento basados en el predictor o predictores semilla; y
formar dicho conjunto de predictores de información del movimiento a partir de los primeros y/o los segundos predictores de información del movimiento.
En este caso, los primeros predictores de información del movimiento pueden ser predictores que se espera estadísticamente que ofrezcan buenos resultados en términos de eficiencia de la compresión. Los segundos predictores de información del movimiento, estando basados en los primeros predictores, pueden ser utilizados posteriormente para explorar de modo organizado o sistemático otros predictores en el espacio predictor adyacente a los primeros predictores. Se puede esperar asimismo que dichos predictores den buenos resultados y cuanto más predictores se examinen mayor será la oportunidad de encontrar una buena correspondencia con la información del movimiento real.
En una realización, por lo menos, un primer predictor de información del movimiento es identificado como un predictor semilla de este tipo basándose en la importancia del primer predictor de información del movimiento implicado.
La importancia puede depender de un número de veces que el primer predictor de información del movimiento implicado aparece entre los primeros predictores de información del movimiento. Cuanto mayor sea el número de veces, más importante se considera el predictor y es más probable que se utilice en el conjunto. Además de buscar predictores idénticos (duplicados), también puede ser efectivo buscar coincidencias cercanas.
Alternativamente, la importancia puede depender de una medida de cuán representativo es el primer predictor de información del movimiento implicado de los primeros predictores de información del movimiento en su conjunto. Por ejemplo, si los primeros predictores de información del movimiento se promedian, la diferencia o la distancia entre el predictor promedio y un primer predictor de información del movimiento determinado es una medida de cuán representativo es el predictor determinado de los primeros predictores de información del movimiento en su conjunto.
Un modo de controlar la diversidad es generar, por lo menos, dicho segundo predictor de información del movimiento sumando o restando un desplazamiento a uno de dichos predictores semilla. El desplazamiento puede ser fijo. Asimismo podría ser un valor pseudoaleatorio siempre que el mismo valor semilla esté disponible tanto en el descodificador como en el codificador. Si los predictores semilla son vectores, es asimismo posible controlar la diversidad sumando al predictor semilla otro vector, por ejemplo, de magnitud fija y dirección predeterminada en relación a la dirección del predictor semilla.
Una pluralidad de dichos segundos predictores de información del movimiento puede ser generada basándose en el mismo dicho predictor semilla. Si los predictores de información del movimiento son vectores que tienen cada uno componentes X e Y, la pluralidad de los segundos predictores de información del movimiento puede obtenerse sumando y/o restando desplazamientos a una o ambas componentes del mismo dicho predictor semilla. Por ejemplo, se puede sumar y restar el mismo desplazamiento al mismo predictor semilla. Si el predictor semilla es un vector que tiene componentes X e Y, existen un número de permutaciones de sumar/restar desplazamientos a una o ambas de las componentes X e Y del mismo predictor semilla. Este es un modo eficiente de generar diversidad controlada sin una gran carga de procesamiento.
Otro modo de controlar la diversidad es generar una pluralidad de segundos predictores de información del movimiento formando un promedio de diferentes pares (u otras combinaciones) de los primeros predictores de información del movimiento. Por ejemplo, si los primeros predictores de información del movimiento son V1, V2 y V3, se podrían formar tres segundos predictores de información del movimiento formados a partir de los promedios de V1 y V2, V2 y V3 y V3 y V1. Sería posible asimismo formar diferentes combinaciones ponderadas de los mismos primeros predictores de información del movimiento como diferentes segundos predictores de información del movimiento.
Los primeros predictores de información del movimiento pueden ser o incluir predictores de información del movimiento, asociado cada uno con una porción de imagen que tiene una relación espacial y/o temporal predeterminada, estando la porción de imagen codificada. Por ejemplo, los predictores de información del movimiento utilizados en AMVP pueden ser los primeros predictores de información del movimiento. Estos son una buena fuente de predictores semilla.
En otra realización, el procedimiento comprende:
generar los primeros predictores de información del movimiento;
verificar las diferencias entre los primeros predictores de información del movimiento generados; y
excluir de dicho conjunto de predictores de información del movimiento uno o varios primeros predictores de información del movimiento basándose en las diferencias.
Teniendo en cuenta las diferencias entre los primeros predictores de información del movimiento es posible controlar la diversidad de los predictores de información del movimiento del conjunto. No es necesario en este caso identificar predictores semilla entre los primeros predictores de información del movimiento y generar segundos predictores de información del movimiento basándose en los predictores semilla. Esto puede ser efectivo, por ejemplo, si un número suficientemente alto de los primeros predictores de información del movimiento están inicialmente disponibles.
Por ejemplo, se puede eliminar un primer predictor de información del movimiento que tiene la menor diferencia con respecto a otro primer predictor de información del movimiento, como modo de controlar la diversidad. El proceso se puede repetir de nuevo, para eliminar sucesivamente los predictores menos diversos.
Es importante observar que en este aspecto de la invención, un número de predictores de información del movimiento en dicho conjunto puede ser variable.
No obstante, como en el otro aspecto básico de la presente invención, el número de predictores de información del movimiento en dicho conjunto puede ser predeterminado, por lo menos, para una porción de imagen determinada a codificar o incluso para todas las porciones de imágenes (un número objetivo). Esto hace posible no solo conseguir diversidad controlada entre los predictores del conjunto sino también resolver el problema de análisis sintáctico indicado en la introducción.
Este aspecto de la invención también da a conocer un procedimiento de descodificación correspondiente y dispositivos de codificación y descodificación correspondientes, así como programas que provocan la codificación y descodificación.
De acuerdo con aún otro aspecto, la invención se refiere a un procedimiento de codificación de una secuencia de imágenes digitales en un flujo de bits siendo codificada, por lo menos, una porción de una imagen por compensación de movimiento con respecto a una porción de imagen de referencia. El procedimiento comprende para, por lo menos, una porción de imagen a codificar, las etapas de:
- obtener un primer conjunto de predictores de vector de movimiento a utilizar para dicha porción de imagen a codificar, y
- generar un segundo conjunto de predictores de vector de movimiento de dicho primer conjunto de predictores del vector de movimiento, siendo cada predictor del vector de movimiento del conjunto generado diferente de cualquier otro predictor del vector de movimiento del segundo conjunto generado de los predictores del vector de movimiento, en el que, por lo menos, un predictor del vector de movimiento del segundo conjunto es calculado a partir de un predictor del vector de movimiento seleccionado del primer conjunto.
Ventajosamente, el segundo conjunto de los predictores del vector de movimiento generado es utilizado para codificar el vector de movimiento asociado con la porción de la imagen a codificar. El segundo conjunto de predictores del vector de movimiento comprende una variedad de diferentes predictores del vector de movimiento, que son generados (y posiblemente seleccionados) para mejorar la eficiencia de la compresión.
De acuerdo con una realización, un predictor del vector de movimiento del primer conjunto es seleccionado en una etapa de selección, de acuerdo con un valor de importancia.
De acuerdo con una realización, el procedimiento de codificación comprende una etapa de cálculo de un valor de importancia asociado con cada predictor del vector de movimiento del primer conjunto.
De acuerdo con una realización, un predictor del vector de movimiento del primer conjunto es seleccionado en una etapa de selección, de acuerdo con una distancia entre los predictores del vector de movimiento del primer conjunto. Las diversas realizaciones para seleccionar un predictor del vector de movimiento para generar otros predictores del vector de movimiento adicionales o virtuales permiten aplicar una selección de diversidad controlada, que tiene la ventaja de mejorar la eficiencia de la compresión. De hecho, el uso de los predictores del vector de movimiento calculados a partir de los predictores importantes del vector de movimiento del conjunto inicial permite representar de modo más preciso el vector de movimiento de la porción de imagen actual a codificar. De nuevo, no es esencial tener un número de predictores fijo u objetivo en el conjunto final.
De acuerdo con una realización, los predictores del vector de movimiento del primer conjunto de los predictores del vector de movimiento son vectores de movimiento asociados con porciones de imagen a codificar de la imagen que está siendo codificada y/o de una imagen de referencia. El primer conjunto puede estar compuesto por los predictores utilizados en AMVP o incluir los mismos.
BREVE DESCRIPCIÓN DE LOS DIBUJOS
Otras características y ventajas resultarán evidentes en la siguiente descripción, que se ofrece solo a modo de ejemplo no limitativo y se realiza con referencia a los dibujos adjuntos, en los que:
- la figura 1, ya descrita, ilustra esquemáticamente un conjunto de predictores del vector de movimiento utilizado en un esquema de predicción del vector de movimiento;
- la figura 2 es un diagrama de un dispositivo de procesamiento adaptado para implementar una realización de la presente invención;
- la figura 3 es un diagrama de bloques de un codificador, de acuerdo con una realización de la invención;
- la figura 4 muestra un diagrama de bloques de un descodificador, de acuerdo con una realización de la invención; - la figura 5 detalla la determinación de un conjunto de predictores del vector de movimiento, de acuerdo con una primera realización;
- la figura 6 detalla la determinación de un conjunto de predictores del vector de movimiento, de acuerdo con una segunda realización;
- la figura 7 muestra, esquemáticamente, un segundo conjunto de predictores del vector de movimiento,
- la figura 8 muestra, esquemáticamente, vectores de movimiento en un sistema de coordenadas.
DESCRIPCIÓN DETALLADA DE LAS REALIZACIONES
La figura 2 muestra un diagrama de un dispositivo 1000 de procesamiento adaptado para implementar una realización de la presente invención. El aparato 1000 es, por ejemplo, un microordenador, una estación de trabajo o un dispositivo portátil ligero.
El aparato 1000 comprende un bus 1113 de comunicación al que están conectadas preferentemente:
- una unidad 1111 de procesamiento central, tal como un microprocesador, denominada CPU;
- una memoria 1107 de solo lectura capaz de contener programas informáticos para implementar la invención, denominada ROM;
- una memoria 1112 de acceso aleatorio, denominada RAM, capaz de contener el código ejecutable del procedimiento de la invención así como los registros adaptados para registrar las variables y los parámetros necesarios para implementar el procedimiento de codificación de una secuencia de imágenes digitales y/o el procedimiento de descodificación de un flujo de bits; y
- una interfaz 1102 de comunicación conectada a una red 1103 de comunicación sobre la que se transmiten los datos digitales a procesar.
Opcionalmente, el aparato 1000 puede tener asimismo los siguientes componentes:
- medios 1104 de almacenamiento de datos, tal como un disco duro, capaz de contener los programas que implementan la invención y los datos utilizados o producidos durante la implementación de la invención;
- una unidad 1105 de disco para un disco 1106, estando adaptada la unidad de disco para leer datos del disco 1106 o para escribir datos sobre dicho disco;
- una pantalla 1109 para mostrar datos y/o que sirve como interfaz gráfica con el usuario, por medio de un teclado 1110 o cualquier otro medio de puntero.
El aparato 1000 puede estar conectado a varios periféricos, tal como, por ejemplo, una cámara digital 1100 o un micrófono 1108, estando conectado cada uno a una tarjeta de entrada/salida (no mostrada) para suministrar datos multimedia al aparato 1000.
El bus de comunicación permite comunicación e interoperabilidad entre los diversos elementos incluidos en el aparato 1000 o conectados a él. La representación del bus no es limitante y, en concreto, la unidad de procesamiento central puede comunicar instrucciones a cualquier elemento del aparato 1000 directamente o por medio de otro elemento del aparato 1000.
El disco 1106 puede ser sustituido por cualquier medio de información tal como, por ejemplo, un disco compacto (CD-ROM), regrabable o no, un disco ZIP o una tarjeta de memoria y, en términos generales, mediante medios de almacenamiento de la información que pueden ser leídos por un microordenador o por un microprocesador, integrados o no en el aparato, posiblemente extraíbles y adaptados para almacenar uno o varios programas cuya ejecución permite implementar el procedimiento de codificar una secuencia de imágenes digitales y/o el procedimiento de descodificar un flujo de bits, de acuerdo con la invención.
El código ejecutable puede ser almacenado en la memoria 1107 de solo lectura, en el disco duro 1104 o en un medio digital extraíble, tal como, por ejemplo, un disco 1106, tal como se ha descrito anteriormente. De acuerdo con una variante, el código ejecutable de los programas puede ser recibido por medios de la red 1103 de comunicación, a través de la interfaz 1102, para ser almacenado en uno de los medios de almacenamiento del aparato 1000 antes de ser ejecutado, tal como el disco duro 1104.
La unidad 1111 de procesamiento central está adaptada para controlar y dirigir la ejecución de las instrucciones o porciones de código de software del programa o programas de acuerdo con la invención, instrucciones que están almacenadas en uno de los medios de almacenamiento mencionados anteriormente. Al encenderse, el programa o programas que están almacenados en una memoria no volátil, por ejemplo, en el disco duro 1104 o en la memoria 1107 de solo lectura, se transfieren a la memoria 1112 de acceso aleatorio que, a continuación, contiene el código ejecutable del programa o programas, así como registros para almacenar las variables y los parámetros necesarios para implementar la invención.
En esta realización, el aparato es un aparato programable que utiliza software para implementar la invención. No obstante, de forma alternativa, la presente invención puede ser implementada en hardware (por ejemplo, en la forma de circuito integrado específico de la aplicación o ASIC).
La figura 3 muestra un diagrama de bloques de un codificador, de acuerdo con una realización de la invención. El codificador está representado por módulos conectados, estando adaptado cada módulo para implementar, por ejemplo, en la forma de instrucciones de programación para ser ejecutadas por la CPU 1111 del dispositivo 1000, una etapa correspondiente de un procedimiento que implementa una realización de la invención.
El codificador 30 recibe como entrada una secuencia original de las imágenes digitales iü a in 301. Cada imagen digital está representada por un conjunto de muestras, conocidas como píxeles.
Un flujo de bits 310 es emitido por el codificador 30.
El flujo de bits 310 comprende una pluralidad de unidades o fragmentos de codificación, comprendiendo cada fragmento una cabecera de fragmento para codificar los valores de los parámetros de codificación utilizados para codificar el fragmento y un cuerpo del fragmento, que comprende los datos de vídeo codificados.
Las imágenes digitales de entrada son divididas en bloques (302), cuyos bloques son porciones de imagen y pueden ser de tamaños variables (por ejemplo, 4x4, 8x8, 16x16, 32x32). Se selecciona un modo de codificación para cada bloque de entrada. Existen dos familias de modos de codificación, la codificación de predicción espacial o intracodificación, y la codificación de predicción temporal o intercodificación. Se someten a prueba los posibles modos de codificación.
El módulo 303 implementa la intrapredicción, en la que el bloque determinado a codificar se predice mediante un predictor calculado a partir de los píxeles de la proximidad de dicho bloque a codificar. Una indicación del intrapredictor seleccionado y de la diferencia entre el bloque determinado y su predictor es codificada si se selecciona la intracodificación.
La predicción temporal es implementada mediante los módulos 304 y 305. En primer lugar, se selecciona una imagen de referencia entre un conjunto de imágenes 316 de referencia, y se selecciona una porción de la imagen de referencia, también denominada área de referencia, que es el área más próxima al bloque determinado a codificar, mediante el módulo 304 de estimación del movimiento. La diferencia entre el área de referencia seleccionada y el bloque determinado, también denominada un bloque residual, es calculada por el módulo 305 de compensación de movimiento. El área de referencia seleccionada es indicada mediante un vector de movimiento.
Si se selecciona la interpredicción, se codifica una información relativa al vector de movimiento y al bloque residual. Para reducir aún más la tasa de transferencia de bits, se codifica el vector de movimiento por la diferencia con respecto a un predictor del vector de movimiento. Un conjunto de predictores del vector de movimiento, también denominados predictores de información del movimiento, se obtiene a partir del campo 318 de vectores de movimiento mediante un módulo 317 de predicción y codificación del vector de movimiento.
Ventajosamente, el conjunto de predictores del vector de movimiento utilizado para seleccionar el mejor predictor del vector de movimiento para codificar un vector de movimiento actual es generado como se explica en más detalle a continuación con respecto a las figura 5 y 6. Para un bloque actual determinado a codificar, se establece un número Nmax predeterminado de predictores del vector de movimiento y, en consecuencia, el índice del predictor del vector de movimiento seleccionado, que es un elemento de información representativo del predictor del vector de movimiento seleccionado, puede ser codificado utilizando un número de bits predeterminado. Este número de bits predeterminado puede ser recuperado asimismo por el descodificador incluso en caso de pérdidas, por tanto, se garantiza que el descodificador será capaz de analizar sintácticamente el flujo de bits incluso en caso de errores o pérdidas. Los Nmax predictores del vector de movimiento son seleccionados de acuerdo con varias realizaciones de manera que todos ellos son diferentes los unos de los otros, con el fin de mejorar la eficiencia de la compresión. La selección del número predeterminado Nmax de predictores del vector de movimiento y del correspondiente número de bits para codificar el índice del predictor del vector de movimiento puede aplicarse a toda la secuencia, o a un grupo de imágenes de la secuencia, o a nivel de bloque dependiendo de unos parámetros de codificación, tales como el tamaño del bloque o el modo de codificación. Por ejemplo, un primer número predeterminado de predictores del vector de movimiento Nmax1 puede ser utilizado para los bloques codificados utilizando la interpredicción para la cual se codifica un bloque residual, y un segundo número predeterminado de predictores del vector de movimiento Nmax2 puede ser utilizado para los bloques codificados utilizando el modo SKIP, para el cual solo se codifica un vector de movimiento, pero ningún bloque residual. Los números respectivos de los predictores del vector de movimiento Nmax1 y Nmax2 pueden ser señalizados, por ejemplo, en el flujo de bits introduciéndolos en una cabecera, tal como la cabecera del fragmento, o en cualquier campo de metadatos apropiado.
El codificador 30 comprende, además, un módulo de selección del modo 306 de codificación, que utiliza un criterio de coste de codificación, tal como el criterio de tasa-distorsión, para determinar cuál es el mejor modo entre el modo de predicción espacial y el modo de predicción temporal. Se aplica una transformada 307 al bloque residual, los datos transformados obtenidos son cuantificados posteriormente por el módulo 308 y son codificados por entropía por el módulo 309. Finalmente, el bloque residual codificado del bloque actual a codificar es introducido en el flujo de bits 310, junto con la información relacionada con el predictor utilizado. Para los bloques codificados en modo “SKIP”, se codifica solo una referencia al predictor en el flujo de bits, sin ningún bloque residual.
El codificador 30 realiza, además, la descodificación de la imagen codificada con el fin de producir una imagen de referencia para la estimación de movimiento de las imágenes posteriores. El módulo 311 realiza la cuantificación inversa de los datos cuantificados, seguida de una transformación inversa 312. El módulo 313 de predicción inversa del movimiento utiliza la información de predicción para determinar qué predictor utilizar para un bloque determinado y el módulo 314 de compensación inversa del movimiento añade en realidad el residuo obtenido por el módulo 312 al área de referencia obtenida del conjunto de imágenes 316 de referencia. Opcionalmente, se aplica un filtro 315 de desbloqueo para eliminar los efectos del bloqueo y mejorar la calidad visual de la imagen descodificada. El mismo filtro de desbloqueo se aplica al descodificador, de modo que, si no existe pérdida de transmisión, el codificador y el descodificador aplican el mismo procesamiento.
La figura 4 muestra un diagrama de bloques de un descodificador, de acuerdo con una realización de la invención. El descodificador está representado por módulos conectados, estando adaptado cada módulo para implementar, por ejemplo, en la forma de instrucciones de programación para ser ejecutadas por la CPU 1111 de un dispositivo 1000, una etapa correspondiente de un procedimiento que implementa una realización de la invención.
El descodificador 40 recibe un flujo de bits 401 que comprende unidades de codificación, estando compuesta cada una por una cabecera que contiene información sobre los parámetros de codificación y un cuerpo que contiene los datos de vídeo codificados. Tal como se ha explicado con respecto a la figura 3, los datos de vídeo codificados se codifican por entropía, y se codifican los índices de los predictores del vector de movimiento, para un bloque determinado, sobre un número predeterminado de bits. Los datos de vídeo codificados recibidos son descodificados por entropía (402), descuantificados (403) y posteriormente se aplica una transformada inversa (404).
En concreto, cuando los datos de vídeo codificados recibidos corresponden a un bloque residual de un bloque actual a descodificar, el descodificador también descodifica la información de predicción del movimiento a partir del flujo de bits, para encontrar el área de referencia utilizada por el codificador.
El módulo 410 aplica la descodificación del vector de movimiento para cada bloque actual codificado por predicción de movimiento, que comprende determinar el número Nmax de predictores del vector de movimiento utilizados y recuperar el índice del predictor del vector de movimiento codificado en un número de bits que depende de Nmax. De forma similar al módulo 317 de la figura 3, el módulo 410 de descodificación del vector de movimiento genera un conjunto de Nmax predictores del vector de movimiento. Las realizaciones explicadas a continuación, con respecto a las figuras 5 y 6 se aplican de forma similar. Si el flujo de bits se recibe sin pérdidas, el descodificador genera exactamente el mismo conjunto de predictores del vector de movimiento que el codificador. En caso de pérdidas, puede no ser posible generar el conjunto de predictores del vector de movimiento y, por tanto, descodificar correctamente el vector de movimiento asociado al bloque actual. No obstante, el análisis sintáctico del flujo de bits siempre es posible, incluso en caso de pérdidas, dado que el número de bits utilizado para codificar el índice del predictor de los vectores de movimiento puede ser recuperado sistemáticamente por el descodificador.
Una vez se ha obtenido el índice del predictor del vector de movimiento para el bloque actual, si no se han producido pérdidas, el valor real del vector de movimiento asociado con el bloque actual puede ser descodificado y utilizado para aplicar la compensación inversa del movimiento (406). El área de referencia indicada por el vector de movimiento descodificado se extrae de una imagen de referencia (408) para aplicar finalmente la compensación inversa del movimiento 406.
En el caso de que se haya aplicado intrapredicción, se aplica intrapredicción inversa mediante el módulo 405.
Finalmente, se obtiene un bloque descodificado. Se aplica un filtro 407 de desbloqueo, de modo similar al filtro 315 de desbloqueo aplicado en el codificador. El descodificador 40 proporciona finalmente una señal 409 de vídeo descodificada.
La figura 5 detalla la generación del conjunto de predictores del vector de movimiento o candidatos a vector de movimiento en una primera realización de la presente invención. Todas las etapas del algoritmo representadas en la figura 5 pueden ser implementadas en software y ser ejecutadas por la unidad 1111 de procesamiento central del dispositivo 1000.
La figura 5 representa un diagrama de flujo aplicado para un bloque actual determinado a codificar, que tiene un vector de movimiento asociado que designa un área de referencia en una imagen de referencia.
En primer lugar, se obtiene en la etapa S500 un conjunto inicial de predictores L1 del vector de movimiento. El conjunto L1 está compuesto por N candidatos. En una realización, el conjunto inicial de predictores del vector de movimiento comprende los candidatos a vector de movimiento seleccionados de acuerdo con el esquema de predicción de vectores de movimiento AMVP, ya descrito con referencia a la figura 1, por ejemplo, los vectores V0 a V3 de la figura 1 y el vector medio calculado a partir de V1 , V2 y V3. En consecuencia, N es un máximo de 5.
Preferentemente, el conjunto inicial de predictores L1 del vector de movimiento contiene solo vectores de movimiento diferentes los unos de los otros. Tomando el ejemplo de la figura 1, solo se deben mantener en L1 los vectores de movimiento V0, V1 y el vector medio, y el número de predictores del vector de movimiento es N=3. En una realización alternativa, se puede aplicar cualquier otro esquema para seleccionar vectores de movimiento ya calculados y calcular otros vectores de movimiento a partir de los disponibles (es decir, promedio, medio, etc.) para formar el conjunto inicial de predictores L1 del vector de movimiento.
En aún otra realización alternativa, el conjunto inicial de los predictores L1 del vector de movimiento está vacío y N=0.
En la siguiente etapa S502, se obtiene el número objetivo Nmax de los predictores del vector de movimiento candidatos a utilizar. Nmax puede ser predeterminado bien para toda la secuencia de imágenes digitales a codificar, por ejemplo, Nmax=4, o puede ser seleccionado de acuerdo con los parámetros de codificación del bloque actual a codificar o de la unidad de codificación (por ejemplo, el fragmento) a la que pertenece el bloque actual a codificar. Por ejemplo, el número Nmax puede depender del tamaño de la transformada aplicada al macrobloque al que pertenece el bloque actual que se está procesando: por ejemplo, Nmax= p para una transformada aplicada sobre un bloque de 2p+ 1x2p+ 1.
En una realización, el número de bits k a utilizar para codificar el índice del predictor del vector de movimiento está relacionado directamente con Nmax: k=INTsup(log2(Nmax)), donde INTsup(x) es el número entero que sigue inmediatamente al valor x. Preferentemente, Nmax debe ser una potencia de 2, Nmax=2k, para utilizar todos los índices que pueden ser codificados en k bits. Ventajosamente, todos los bits utilizados para señalizar son utilizados para poder designar una variedad de predictores del vector de movimiento y para mejorar la compresión.
Alternativamente, es posible utilizar cualquier tipo de codificación de los índices representativos de los predictores del vector de movimiento, después de que el número Nmax de diferentes predictores del vector de movimiento haya sido determinado. En concreto, se puede utilizar cualquier tipo de codificación entrópica, tal como la codificación Huffman o la codificación aritmética. Asimismo, los índices también se pueden codificar utilizando un código de tipo prefijo, tal como un código de Rice-Golomb o un código unitario.
A continuación, se comprueba en la etapa S503 si el número N de los predictores del vector de movimiento del conjunto L1 es mayor que Nmax.
En caso de una respuesta positiva, a la prueba S503 le sigue la etapa S504 de selección de un candidato a predictor del vector de movimiento de L1, seguida por la eliminación del candidato a predictor del vector de movimiento seleccionado de L1 en la etapa S506 para formar un conjunto modificado de los predictores del vector de movimiento L2.
La selección de la etapa S504 se aplica de acuerdo con un criterio de eliminación, por ejemplo, un criterio de distancia. Por ejemplo, el conjunto L1 comprende predictores del vector de movimiento {V1, ..., Vn}, en el que cada predictor del vector de movimiento es un vector representado por sus componentes o coordenadas en el eje X y el eje Y en un sistema de coordenadas, tal como se representa en la figura 8.
En una realización, la etapa S504 determina la distancia entre cada vector Vk y cada uno de los otros vectores Vn de L1 distintos del propio Vk, calculando la distancia como: d(Vh Vn)=\Vkx-Vnx\+\Vky-Vny\, donde |a| representa el valor absoluto de a. Tomando el ejemplo de la figura 8, el vector V tiene las coordenadas (3,2), el vector V’ tiene las coordenadas (4,2) y V’’ tiene las coordenadas (3,3). En este ejemplo, d(V,V’)=d(V,V’’)=1, de modo que V’ y V’’ están la misma distancia del vector V, mientras que d(V’,V’’)=2.
Alternativamente, se puede aplicar cualquier otro tipo de medición para el cálculo de las distancias.
La distancia mínima encontrada d(Vp,Vq) indica los dos vectores más próximos Vp, Vq, entre el conjunto L1 y, por tanto, uno de estos dos vectores es seleccionado para su eliminación. La selección de uno de estos dos vectores puede basarse en la distancia de cada uno de ellos a los vectores de predicción de movimiento restantes en el conjunto L1 modificado: el vector entre Vp y Vq que tiene la menor distancia al otro vector del conjunto L1 es seleccionado para su eliminación.
El resultado es garantizar que la distancia entre los vectores restantes del conjunto L2 modificado es la máxima, a fin de permitir la utilización de los predictores del vector de movimiento tan variados o diversos como sea posible. Después de la eliminación del vector seleccionado, se reduce el valor de N (S508), y posteriormente N se compara con Nmax (S510). Si el valor de N no ha alcanzado aún Nmax (respuesta “no” a la prueba S510) se repiten las etapas S504 a S510. De otro modo, si N ha alcanzado Nmax, a la etapa S510 le sigue la etapa S522 que se describe más adelante.
Si la respuesta a la prueba S503 es “no”, entonces la prueba S512 comprueba si N es menor que Nmax. En caso de una respuesta negativa, es decir, si N=Nmax, a la prueba S512 le sigue la etapa S522 que se describe a continuación.
Si la respuesta a la prueba S512 es “sí”, es decir, si N es estrictamente menor que Nmax, entonces la prueba S512 es seguida por la etapa S514 de obtener o generar un candidato a predictor del vector de movimiento adicional. De hecho, comenzando a partir del conjunto inicial de los predictores del vector de movimiento L1, es posible añadir otros candidatos como predictores del vector de movimiento, en un orden predeterminado, para formar un conjunto modificado de los predictores del vector de movimiento L2. Tomando el ejemplo de la figura 7, los vectores del movimiento de los bloques 710, 720, 730 y 740 pueden ser añadidos como posibles predictores del vector de movimiento. Además, los 2 predictores entre 770, 760, 750 que no fueron seleccionados en S500 se pueden añadir como posibles predictores del vector de movimiento.
Para cada potencial candidato a predictor del vector de movimiento MV, se verifica si el predictor del vector de movimiento MV es diferente de todos los candidatos a predictor del vector de movimiento ya almacenados en el conjunto L2.
Si cada potencial candidato a vector de movimiento considerado, como, por ejemplo, los vectores de movimiento de los bloques 710, 720, 730, 740, 750, 760 y 770 de la figura 7, es igual a un predictor del vector de movimiento del conjunto L2, se calculan en la etapa S514 nuevos candidatos “virtuales” a predictor del vector de movimiento.
Dichos candidatos a predictor del vector de movimiento se denominan virtuales porque no son vectores de movimiento de otros bloques de la imagen actual o de la imagen de referencia. Los predictores virtuales del vector de movimiento son calculados a partir de predictores del vector de movimiento existentes, por ejemplo, sumando desplazamientos. Por ejemplo, a partir de un vector de movimiento MV del conjunto L2 de coordenadas (MVx, MVy), es posible calcular cuatro predictores del vector de movimiento virtuales sumando/restando un desplazamiento a sus coordenadas: MV’(MVx±desplazamiento, MVy±desplazamiento). Habitualmente, el desplazamiento puede ser igual a 1 o 2.
Alternativamente, se pueden aplicar otras modificaciones de las componentes del predictor del vector de movimiento MV para obtener predictores virtuales del vector de movimiento, con el fin de obtener diversos predictores del vector de movimiento comenzando a partir de los predictores del vector de movimiento existentes a fin de aumentar la eficiencia de la compresión.
Por ejemplo, las componentes del vector de movimiento MV pueden ser modificadas independientemente, utilizando respectivamente dos valores offx y offy, y tanto offx como offy pueden establecerse como 0.
En una realización, tanto offx como offy son proporcionales a la componente correspondiente: offx=aMVx y offy=bMVy, con a y b habitualmente menores que 0,5. Si es necesario, las coordenadas MVx y MVy modificadas se redondean al valor entero más próximo, para representar un desplazamiento en la malla de píxeles.
En una realización, un vector de movimiento complementario, de una norma predeterminada, se suma al vector MV, teniendo el vector complementario la misma dirección que el vector de movimiento MV, tal como se representa en la figura 8: el vector 850 complementario se suma al vector 820.
En aún otra realización alternativa, se calcula una varianza de los vectores de movimiento del conjunto L2:
var = X (MV* ~ M V x f (MVy - MVv) 2
MVeL2
donde MVx representa el valor medio de las coordenadas MVX de los vectores de L2 y MVy representa el valor medio de las coordenadas MVy de los vectores de L2. A continuación, se selecciona el desplazamiento off comparando el valor calculado var con un umbral T predeterminado. T puede ser igual a 50/L2. Si var es inferior a T, el valor off es pequeño, por ejemplo, off=1; si var es mayor que T, off se establece en un valor mayor, por ejemplo, off=3. Además, en esta realización también, se puede calcular un valor diferenciado offx u offy para cada componente.
Un predictor del vector de movimiento obtenido en la etapa S514 se añade al conjunto de predictores del vector de movimiento L2 en la etapa S516, y el número N se incrementa en 1 (etapa S518).
A continuación, se verifica en la etapa S520 si N es igual a Nmax. En caso de una respuesta negativa, se repiten las etapas S514 a S520.
En caso de una respuesta positiva, se ha alcanzado el número objetivo determinado de candidatos a predictor del vector de movimiento Nmax, y a la etapa S520 le sigue, en el codificador, la etapa S522 de selección de un predictor óptimo del vector de movimiento para el bloque actual del conjunto L2. Por ejemplo, se aplica un criterio de optimización tasa-distorsión para seleccionar el predictor óptimo del vector de movimiento MVi para codificar el vector de movimiento del bloque actual.
En el codificador, se codifica el residuo del movimiento, es decir, la diferencia entre el vector de movimiento del bloque actual y el predictor seleccionado del vector de movimiento, así como una indicación del predictor del vector de movimiento seleccionado en la etapa S524. Por ejemplo, el índice i puede ser codificado utilizando un código de tipo prefijo, tal como el código de Rice-Golomb, en el que cada valor i es codificado utilizando una cantidad i de “1” seguida por un “0”.
El algoritmo de la figura 5 también puede ser implementado por un descodificador para generar el conjunto de predictores del vector de movimiento o candidatos a vector de movimiento para un bloque determinado, sin las etapas S522 y S524.
En el descodificador, el índice i del predictor del vector de movimiento MVi seleccionado para el bloque determinado a descodificar se obtiene a partir del flujo de bits, conociendo Nmax y, por tanto, el número de bits k sobre los que se ha codificado el índice i. Las etapas S500 a S518 se implementan de modo similar para obtener el conjunto de predictores del vector de movimiento L2, de modo que el índice i descodificado del flujo de bits designa el predictor del vector de movimiento realmente utilizado por el codificador.
En caso de pérdidas durante la transmisión, dado que el número Nmax puede ser recuperado sistemáticamente por el descodificador, el flujo de bits recibido puede ser analizado sintácticamente de manera sistemática para extraer el índice i que designa el predictor del vector de movimiento seleccionado, incluso si, dependiendo de los paquetes perdidos, el conjunto completo de predictores del vector de movimiento L2 puede no ser obtenido en el descodificador. La figura 6 detalla la generación del conjunto de predictores del vector de movimiento o candidatos a vector de movimiento en una segunda realización de la presente invención. Todas las etapas del algoritmo representadas en la figura 6 pueden ser implementadas en software y ejecutadas por la unidad 1111 de procesamiento central del dispositivo 1000.
La figura 6 representa un diagrama de flujo aplicado a un bloque actual determinado a codificar, que tiene un vector de movimiento asociado que designa un área de referencia en una imagen de referencia.
En primer lugar, de modo similar a la etapa S502 de la figura 5, el número objetivo Nmax de candidatos a predictor del vector de movimiento a utilizar se determina en la etapa S600.
En una realización, Nmax es de la forma 2k, de modo que cada valor de índice que puede ser codificado en k bits corresponde a un posible predictor del vector de movimiento.
Por ejemplo, para utilizar todos los predictores del vector de movimiento del esquema de AMVP que propone 5 predictores del vector de movimiento, se requieren 3 bits para codificar el índice de un predictor del vector de movimiento. En este caso, preferentemente Nmax=23=8.
Un conjunto inicial de los candidatos a predictor del vector de movimiento L1 se obtiene en la etapa S602. Por ejemplo, se selecciona el conjunto inicial de N=5 predictores del vector de movimiento de AMVP.
Se aplica un proceso de reducción al conjunto inicial de predictores del vector de movimiento para eliminar duplicados, con el fin de obtener un conjunto reducido de predictores del vector de movimiento que contiene N1 elementos. Preferentemente, el número de duplicados de cada vector restante después del proceso de reducción se registra y se almacena en una memoria para su uso posterior en la etapa S612 que se describe más adelante. A continuación, se verifica (prueba S606) si N1 es mayor o igual que Nmax, el número objetivo de predictores del vector de movimiento. Cabe señalar que un resultado positivo de esta prueba solo se produce si el algoritmo se inicia con un primer conjunto de predictores del vector de movimiento con un mayor número de vectores de movimiento que Nmax. En el caso de una respuesta positiva, a la etapa S606 le sigue la etapa S630 de selección de los primeros Nmax candidatos a predictor del vector de movimiento del conjunto L1 para formar el conjunto de predictores del vector de movimiento L2.
En caso de una respuesta negativa, es decir, si N1 es menor que Nmax, el conjunto de predictores del vector de movimiento tiene que ser complementado con predictores adicionales del vector de movimiento.
Un segundo conjunto de candidatos a predictor del vector de movimiento L1 ’ se obtiene en la etapa S608.
El segundo conjunto de predictores del vector de movimiento L1’ está compuesto por los predictores del vector de movimiento restantes del primer conjunto L1 y por los vectores de movimiento adicionales, por ejemplo, correspondientes a los vectores de movimiento del bloque 710, 720, 730 y 740 de la imagen de referencia, como se representa en la figura 7. Además, los 2 predictores entre 770, 760, 750 que no fueron seleccionados en S600 se pueden añadir como posibles predictores del vector de movimiento. Cada predictor del vector de movimiento del conjunto L1 ’ tiene un índice correspondiente.
A continuación, se aplica un proceso de reducción al segundo conjunto de predictores del vector de movimiento en la etapa S610 para obtener un segundo conjunto reducido de predictores del vector de movimiento L1’’ de N2 vectores. El proceso de reducción elimina los duplicados, de modo que todos los predictores del vector de movimiento de L1’’ son diferentes los unos de los otros. El número de duplicados de cada vector mantenido en L1’’ es registrado y almacenado en una memoria para un uso posterior en la etapa S612 que se describe más adelante. A continuación se verifica en la etapa S628 si el número de predictores del vector de movimiento N2 es mayor o igual que Nmax. En el caso de una respuesta positiva, a la etapa S628 le sigue la etapa S630 ya descrita.
En el caso de una respuesta negativa, es necesario añadir más predictores del vector de movimiento al segundo conjunto reducido de los predictores del vector de movimiento L1 ’’ para obtener el conjunto final de Nmax predictores del vector de movimiento.
Siguiendo a la prueba S628, en el caso de una respuesta negativa, se asigna un valor de importancia a cada candidato a predictor del vector de movimiento restante del segundo conjunto reducido de los predictores del vector de movimiento L1 ’’ en la etapa S612.
En una realización alternativa, la etapa S612 sigue directamente a la prueba S606, en el caso de una respuesta negativa a la etapa S606.
El valor de importancia es calculado en esta realización como el número de duplicados de un predictor del vector de movimiento determinado, utilizando el número de duplicados de un predictor del vector de movimiento determinado calculado y almacenado durante las etapas S604 y S610. Tomando el ejemplo de la figura 1, dos vectores V0 y V3 son iguales, de modo que el vector V0 tiene un valor de importancia igual a 2.
En una realización alternativa, el valor de importancia puede ser calculado en función de la distancia con respecto a un vector representativo del conjunto de vectores considerado, tal como el valor promedio de los vectores del conjunto o la media de los vectores del conjunto. Entonces, la importancia puede calcularse como la inversa de la distancia de un vector determinado del conjunto Vn al vector representativo: cuanto más próximo está un vector Vn al vector representativo del conjunto, mayor es la importancia de Vn.
A continuación, los N2 candidatos a predictor del vector de movimiento restantes se ordenan en la etapa S614, de acuerdo con un orden de valor de importancia decreciente. Si varios predictores del vector de movimiento tienen el mismo valor de importancia, pueden ser ordenados, de acuerdo con el orden creciente de sus índices.
Los predictores del vector de movimiento reordenados son reasignados según los índices crecientes {V0, Vi , ..., VN2-1}. En la siguiente etapa S616, una variable n se inicializa a 0 y una variable N se inicializa a N2, que es el número actual de predictores del vector de movimiento en el conjunto reordenado.
A continuación, en la etapa S618 que sigue a la etapa S616, los candidatos virtuales a predictor del vector de movimiento se añaden al conjunto reordenado. En esta realización, los predictores virtuales del vector de movimiento se calculan a partir de los predictores del vector de movimiento restantes, ordenados de acuerdo con su importancia. Se considera el predictor del vector de movimiento de índice n del conjunto reordenado, Vn, de coordenadas (Vnx, Vny). La siguiente lista de 8 predictores virtuales del vector de movimiento, definida por sus coordenadas, puede ser calculada a partir de Vn, añadiendo sucesivamente desplazamiento y -desplazamiento a una o las dos coordenadas de Vn: {(Vnx+desplazamiento, Vny), (Vnx-desplazamiento, Vny), (Vnx+desplazamiento, Vny +desplazamiento), (Vnx+desplazamiento, Vny -desplazamiento), (Vnx-desplazamiento, Vny +desplazamiento), (Vnx-desplazamiento, Vny -desplazamiento), (Vnx, Vny desplazamiento), (Vnx, Vny-desplazamiento)}.
Se puede utilizar cualquier cálculo alternativo de los predictores virtuales del vector de movimiento comenzando a partir del predictor del vector de movimiento Vn, en particular las alternativas descritas anteriormente con respecto a la etapa S514 de la figura 5.
Esta lista de predictores virtuales del vector de movimiento se añade al conjunto actual de los predictores del vector de movimiento.
Los duplicados son eliminados en la etapa S620.
El valor N es actualizado en la etapa S622 al número restante de predictores del vector de movimiento después de la eliminación de duplicados potenciales.
A continuación, se verifica si N es mayor o igual que Nmax en la etapa S624. En caso de una respuesta negativa, a la etapa S624 le sigue la etapa S634 de incremento del valor n en 1, y se repiten las etapas S618 a S624.
En caso de una respuesta positiva a la etapa S624, se han obtenido suficientes predictores del vector de movimiento. A la etapa S624 le sigue la etapa S630 de selección de los primeros Nmax candidatos a vector de movimiento para constituir el conjunto final de los predictores del vector de movimiento L2 de Nmax vectores.
En el codificador, a la etapa S630 le sigue la etapa S632, análoga a la etapa S522 de la figura 5, de selección de un predictor óptimo del vector de movimiento MVi entre el conjunto de predictores del vector de movimiento para el bloque actual, de acuerdo a un criterio predeterminado, tal como un criterio de tasa-distorsión.
A la etapa S632 le sigue la etapa S634 de codificación del vector del movimiento del bloque actual utilizando el predictor del vector de movimiento MVi, similar a la etapa S524 de la figura 5. Por ejemplo, el índice i puede ser codificado utilizando un código de tipo prefijo, tal como el código de Rice-Golomb, en el que cada valor i es codificado utilizando una cantidad i de “1” seguida por un “0”.
El algoritmo de la figura 6 también puede implementarse mediante un descodificador para generar el conjunto de predictores del vector de movimiento o candidatos a vector de movimiento para un bloque determinado, excepto porque las etapas S632 y S634 se omiten en el lado del descodificador.
En el descodificador, el índice i del predictor seleccionado del vector de movimiento MVi para el bloque determinado a descodificar se obtiene a partir del flujo de bits, conociendo Nmax y, por tanto, el número de bits k sobre los que se ha codificado el índice i. Las etapas S600 a S630 son implementadas de modo similar para obtener el conjunto de predictores del vector de movimiento L2, de modo que el índice i descodificado a partir del flujo de bits designa el predictor del vector de movimiento realmente utilizado por el codificador.
En el caso de pérdidas durante la transmisión, dado que el número Nmax puede ser recuperado sistemáticamente por el descodificador, el flujo de bits recibido puede ser analizado sintácticamente de forma sistemática para extraer el índice i que designa el predictor seleccionado del vector de movimiento, incluso si, dependiendo de los paquetes perdidos, puede no obtenerse el conjunto completo de predictores del vector de movimiento L2 en el descodificador.
Las realizaciones descritas anteriormente están basadas en divisiones de bloque de las imágenes de entrada, pero más en general, se puede considerar cualquier tipo de porciones de la imagen a codificar o descodificar, en concreto porciones rectangulares o, más en general, porciones geométricas.
Se pueden considerar otras realizaciones alternativas, tales como, por ejemplo, empezar con un conjunto grande de candidatos a predictor del vector de movimiento, que comprende un numero de vectores N mayor que el numero objetivo de predictores del vector de movimiento determinado Nmax, y aplicar un algoritmo de tipo de agrupamiento para reducir el conjunto de vectores. Por ejemplo, se puede aplicar una partición de Vorono'í para reducir el conjunto a los Nmax vectores más representativos del conjunto, de acuerdo con una distancia predefinida entre los vectores del conjunto.

Claims (16)

REIVINDICACIONES
1. Procedimiento de codificación de una secuencia de imágenes en un flujo de bits utilizando interpredicción, comprendiendo el procedimiento:
determinar un número objetivo para un fragmento que incluye una pluralidad de bloques de una imagen a codificar, en el que la imagen incluye una pluralidad de fragmentos;
codificar en el flujo de bits información sobre el número objetivo para el fragmento; y
realizar, para cada uno de uno o varios de la pluralidad de bloques en el fragmento codificado mediante un modo de interpredicción, las etapas de:
generar un número de predictores de información del movimiento igual al número objetivo;
seleccionar un predictor de información del movimiento del número objetivo de los predictores de información del movimiento; y
codificar, en el flujo de bits, información de índice correspondiente al predictor seleccionado de información del movimiento,
en el que la información de índice es codificada utilizando un código de tipo prefijo que comprende el bit “1” i veces seguido por un cero, donde i indica un valor de un índice del predictor seleccionado de información del movimiento, de modo que un número de bits en el código más largo para la información del índice depende del número objetivo.
2. Procedimiento, según la reivindicación 1, en el que el predictor de información del movimiento es seleccionado en base a un criterio de coste de codificación.
3. Procedimiento, según la reivindicación 1, en el que el predictor de información del movimiento tiene un vector de movimiento.
4. Procedimiento, según la reivindicación 1, en el que las imágenes codificadas son capturadas por una cámara.
5. Procedimiento, según la reivindicación 1, que comprende, además, la codificación, para uno o varios de la pluralidad de bloques en el fragmento codificado mediante el modo de interpredicción, de la información relacionada con una diferencia entre un vector de movimiento de un predictor de información del movimiento asociado con uno de la pluralidad de bloques y un vector de movimiento del predictor seleccionado de información del movimiento en el flujo de bits.
6. Procedimiento, según la reivindicación 1, en el que el número objetivo es predeterminado para la secuencia.
7. Procedimiento, según la reivindicación 1, en el que el número objetivo es determinado basándose, por lo menos, en uno de los parámetros de codificación del bloque a codificar en dicho fragmento.
8. Procedimiento, según la reivindicación 1, en el que la información sobre el número objetivo es señalizada fragmento a fragmento y la información relacionada con el predictor seleccionado de información del movimiento es codificada bloque a bloque.
9. Procedimiento de descodificación de una secuencia de imágenes a partir de un flujo de bits utilizando la interpredicción, en el que la imagen incluye una pluralidad de fragmentos, comprendiendo el procedimiento: descodificar, a partir del flujo de bits, un número objetivo para un fragmento que incluye una pluralidad de bloques en una imagen a descodificar, en el que uno o varios de la pluralidad de bloques ha sido codificado mediante un modo de interpredicción;
realizar, para cada uno de uno o varios de la pluralidad de bloques en el fragmento codificado mediante un modo de interpredicción, las etapas de:
descodificar, a partir del flujo de bits un índice correspondiente a un predictor de información del movimiento, estando codificado el índice utilizando un código de tipo prefijo que comprende el bit “1” i veces seguido por un cero, donde i indica un valor de un índice de un predictor de información del movimiento, de modo que un número de bits en el código más largo para el índice depende del número objetivo;
generar un número de predictores de información del movimiento igual al número objetivo;
seleccionar un predictor de información del movimiento a partir de los predictores de información del movimiento generados que corresponde al índice descodificado; y
descodificar el bloque utilizando el predictor seleccionado de información del movimiento.
10. Procedimiento, según la reivindicación 9, en el que el predictor de información del movimiento tiene un vector de movimiento.
11. Procedimiento, según la reivindicación 9, en el que las imágenes codificadas son capturadas por una cámara.
12. Procedimiento, según la reivindicación 9, en el que el índice descodificado corresponde a un predictor de información del movimiento seleccionado por un codificador.
13. Procedimiento, según la reivindicación 9, en el que el número objetivo es descodificado fragmento a fragmento y un índice relacionado con un predictor de información del movimiento es descodificado bloque a bloque.
14. Dispositivo para codificar una secuencia de imágenes en un flujo de bits utilizando interpredicción, comprendiendo el dispositivo:
medios para determinar un número objetivo para un fragmento que incluye una pluralidad de bloques de una imagen a codificar, en el que la imagen incluye una pluralidad de fragmentos, uno o varios de la pluralidad de bloques es codificado mediante interpredicción;
medios para codificar en el flujo de bits información sobre el número objetivo para el fragmento; y
medios para realizar, para cada uno o varios de la pluralidad de bloques en el fragmento codificado mediante un modo de interpredicción, las etapas de:
generar un número de predictores de información del movimiento igual al número objetivo,
seleccionar un predictor de información del movimiento del número objetivo de los predictores de información del movimiento, y
codificar, en el flujo de bits, información de índice correspondiente al predictor seleccionado de información del movimiento,
en el que la información de índice es codificada utilizando un código de tipo prefijo que comprende el bit “1” i veces seguido por un cero, donde i indica un valor de un índice del predictor seleccionado de información del movimiento, de modo que un número de bits en el código más largo para la información de índice depende del número objetivo.
15. Dispositivo para descodificar una secuencia de imágenes a partir de un flujo de bits utilizando la interpredicción, en el que la imagen incluye una pluralidad de fragmentos, comprendiendo el dispositivo;
medios para descodificar, a partir del flujo de bits, un número objetivo para un fragmento que incluye una pluralidad de bloques en una imagen a descodificar, en el que uno o varios de la pluralidad de bloques ha sido codificado mediante un modo de interpredicción; y
medios para realizar, para cada uno de uno o varios de la pluralidad de bloques en el fragmento codificado mediante un modo de interpredicción, las etapas de
descodificar, a partir del flujo de bits, un índice correspondiente a un predictor de información del movimiento, estando codificado el índice utilizando un código de tipo prefijo que comprende el bit “1” i veces seguido por un cero, donde i indica un valor de un índice de un predictor de información del movimiento, de modo que un número de bits en el código más largo para el índice depende del número objetivo,
generar un número de predictores de información del movimiento igual al número objetivo,
seleccionar un predictor de información del movimiento a partir de los predictores de información del movimiento generados que corresponde al índice descodificado, y
descodificar el bloque utilizando el predictor seleccionado de información del movimiento.
16. Programa informático que comprende instrucciones que, cuando son ejecutadas por un ordenador, hacen que el ordenador lleve a cabo el procedimiento de cualquiera de las reivindicaciones 1 a 13.
ES19171827T 2011-01-12 2012-01-11 Codificación y descodificación de vídeo con resiliencia mejorada frente a errores Active ES2834135T3 (es)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
GB1100462.9A GB2487200A (en) 2011-01-12 2011-01-12 Video encoding and decoding with improved error resilience

Publications (1)

Publication Number Publication Date
ES2834135T3 true ES2834135T3 (es) 2021-06-16

Family

ID=43664110

Family Applications (7)

Application Number Title Priority Date Filing Date
ES12700128.7T Active ES2583407T3 (es) 2011-01-12 2012-01-11 Codificación y descodificación de video con una mejora de la diversidad de los vectores de movimiento
ES16197731T Active ES2835311T3 (es) 2011-01-12 2012-01-11 Codificación y descodificación de video con resiliencia mejorada frente a errores
ES12700129.5T Active ES2615828T3 (es) 2011-01-12 2012-01-11 Codificación y descodificación de video con resiliencia mejorada frente a errores
ES16164491T Active ES2726048T3 (es) 2011-01-12 2012-01-11 Codificación y descodificación de video con una mejora de la diversidad de los vectores de movimiento
ES19157140T Active ES2786998T3 (es) 2011-01-12 2012-01-11 Descodificación de video con una mejora de la diversidad de los vectores de movimiento
ES19171827T Active ES2834135T3 (es) 2011-01-12 2012-01-11 Codificación y descodificación de vídeo con resiliencia mejorada frente a errores
ES17165564T Active ES2753760T3 (es) 2011-01-12 2012-01-11 Codificación y descodificación de vídeo con resiliencia mejorada frente a errores

Family Applications Before (5)

Application Number Title Priority Date Filing Date
ES12700128.7T Active ES2583407T3 (es) 2011-01-12 2012-01-11 Codificación y descodificación de video con una mejora de la diversidad de los vectores de movimiento
ES16197731T Active ES2835311T3 (es) 2011-01-12 2012-01-11 Codificación y descodificación de video con resiliencia mejorada frente a errores
ES12700129.5T Active ES2615828T3 (es) 2011-01-12 2012-01-11 Codificación y descodificación de video con resiliencia mejorada frente a errores
ES16164491T Active ES2726048T3 (es) 2011-01-12 2012-01-11 Codificación y descodificación de video con una mejora de la diversidad de los vectores de movimiento
ES19157140T Active ES2786998T3 (es) 2011-01-12 2012-01-11 Descodificación de video con una mejora de la diversidad de los vectores de movimiento

Family Applications After (1)

Application Number Title Priority Date Filing Date
ES17165564T Active ES2753760T3 (es) 2011-01-12 2012-01-11 Codificación y descodificación de vídeo con resiliencia mejorada frente a errores

Country Status (13)

Country Link
US (14) US10165279B2 (es)
EP (10) EP2664152A1 (es)
JP (12) JP5847845B2 (es)
KR (15) KR101972030B1 (es)
CN (17) CN106210734B (es)
BR (2) BR122019026393B1 (es)
ES (7) ES2583407T3 (es)
GB (3) GB2487200A (es)
HU (5) HUE043611T2 (es)
PL (5) PL3174297T3 (es)
RU (6) RU2556386C2 (es)
TR (1) TR201907405T4 (es)
WO (4) WO2012095464A1 (es)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101459714B1 (ko) * 2009-10-28 2014-11-13 에스케이텔레콤 주식회사 공간 분할을 이용한 움직임 벡터 부호화/복호화 방법 및 장치와 그를 이용한 영상 부호화/복호화 방법 및 장치
KR101768207B1 (ko) 2010-01-19 2017-08-16 삼성전자주식회사 축소된 예측 움직임 벡터의 후보들에 기초해 움직임 벡터를 부호화, 복호화하는 방법 및 장치
GB2487200A (en) * 2011-01-12 2012-07-18 Canon Kk Video encoding and decoding with improved error resilience
GB2493755B (en) 2011-08-17 2016-10-19 Canon Kk Method and device for encoding a sequence of images and method and device for decoding a sequence of images
GB2511288A (en) * 2013-01-09 2014-09-03 Canon Kk Method, device, and computer program for motion vector prediction in scalable video encoder and decoder
GB2512829B (en) 2013-04-05 2015-05-27 Canon Kk Method and apparatus for encoding or decoding an image with inter layer motion information prediction according to motion information compression scheme
CN103475883B (zh) * 2013-09-26 2016-07-06 北京航空航天大学 一种基于运动区域划分的hevc运动估计提前终止方法
CN104410864B (zh) * 2014-11-07 2018-08-14 太原科技大学 Hevc中基于残差能量的错误隐藏方法
US9787987B2 (en) 2015-04-27 2017-10-10 Harmonic, Inc. Adaptive pre-filtering based on video complexity and output bit rate
US9955160B1 (en) * 2015-04-27 2018-04-24 Harmonic, Inc. Video encoding using adaptive pre-filtering
US10271064B2 (en) * 2015-06-11 2019-04-23 Qualcomm Incorporated Sub-prediction unit motion vector prediction using spatial and/or temporal motion information
JP6727791B2 (ja) * 2015-11-05 2020-07-22 キヤノン株式会社 追尾制御装置および追尾制御方法、撮像装置
CN111526361B (zh) 2016-02-06 2022-05-13 华为技术有限公司 图像编解码方法及装置
DE102016223079B4 (de) * 2016-11-23 2024-03-28 Robert Bosch Gmbh Verfahren und Vorrichtung zur Ermittlung einer Zuordnung zwischen einem Matrixelement einer Matrix und einem Vergleichsmatrixelement einer Vergleichsmatrix mittels Korrespondenztabelle
US10735761B2 (en) * 2017-05-19 2020-08-04 Mediatek Inc Method and apparatus of video coding
CN109495738B (zh) * 2017-09-12 2023-02-07 华为技术有限公司 一种运动信息的编解码方法和装置
MX2020007185A (es) 2017-10-06 2020-08-24 Nestle Sa Recipiente, maquina y sistema de preparacion que usa un codigo binario para codificar informacion de preparacion.
KR102486879B1 (ko) 2018-04-12 2023-01-11 삼성디스플레이 주식회사 디스플레이 장치 및 그 제조방법
BR112021003917A2 (pt) 2018-08-28 2021-05-18 Huawei Technologies Co., Ltd. método e aparelho para construir lista de informações de movimentos de candidatos, método de inter predição, e aparelho
CN117241039A (zh) 2018-08-28 2023-12-15 华为技术有限公司 帧间预测方法、装置以及视频编码器和视频解码器
WO2020084474A1 (en) 2018-10-22 2020-04-30 Beijing Bytedance Network Technology Co., Ltd. Gradient computation in bi-directional optical flow
CN111436228B (zh) 2018-11-12 2024-06-21 北京字节跳动网络技术有限公司 组合帧间-帧内预测的简化
EP3861742A4 (en) 2018-11-20 2022-04-13 Beijing Bytedance Network Technology Co., Ltd. DIFFERENCE CALCULATION BASED ON SPATIAL POSITION
JP7433038B2 (ja) 2018-12-19 2024-02-19 キヤノンメディカルシステムズ株式会社 医用情報匿名化システム、及び匿名化方法設定装置
JP2022521554A (ja) 2019-03-06 2022-04-08 北京字節跳動網絡技術有限公司 変換された片予測候補の利用
KR102184913B1 (ko) * 2019-03-12 2020-12-01 한양대학교 산학협력단 원형의 직교 진폭 변조 신호 성상도를 생성하는 방법 및 장치
KR102220230B1 (ko) * 2019-06-21 2021-02-25 삼성전자주식회사 주변 움직임 정보를 이용하여 움직임 정보를 부호화 및 복호화하는 장치, 및 방법
EP3981157A4 (en) 2019-07-11 2022-07-06 Huawei Technologies Co., Ltd. MOTION FIELD STORAGE OPTIMIZATION FOR LINE BUFFER
WO2023194603A1 (en) * 2022-04-08 2023-10-12 Interdigital Ce Patent Holdings, Sas Motion information candidates re-ordering

Family Cites Families (108)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB1100462A (en) 1963-10-02 1968-01-24 Automatic Telephone & Elect Improvements in or relating to magnetic core matrix data storage devices
JP3265590B2 (ja) 1991-07-24 2002-03-11 松下電器産業株式会社 画像の動きベクトル検出装置及び画像揺れ補正装置
JPH0620050A (ja) 1992-07-03 1994-01-28 Matsushita Electric Ind Co Ltd 動画像信号の復号化装置と推定動きベクトル算出方法
JPH0730896A (ja) 1993-06-25 1995-01-31 Matsushita Electric Ind Co Ltd 動きベクトル符号化及び復号化方法
US5552673A (en) 1994-10-04 1996-09-03 Kenwood; Michael Theft resistant compact fluorescent lighting system
US5675382A (en) 1996-04-08 1997-10-07 Connectix Corporation Spatial compression and decompression for video
JP3263807B2 (ja) 1996-09-09 2002-03-11 ソニー株式会社 画像符号化装置および画像符号化方法
ATE209423T1 (de) 1997-03-14 2001-12-15 Cselt Centro Studi Lab Telecom Schaltung zur bewegungsschätzung in codierern für digitalisierte videosequenzen
JP4573366B2 (ja) * 1997-09-25 2010-11-04 株式会社大宇エレクトロニクス 動きベクトル符号化方法及び符号化装置
JPH11112985A (ja) 1997-09-29 1999-04-23 Sony Corp 画像符号化装置、画像符号化方法、画像復号装置、画像復号方法、および、伝送媒体
JP3407287B2 (ja) 1997-12-22 2003-05-19 日本電気株式会社 符号化復号システム
DE69901525T2 (de) * 1998-02-13 2003-01-09 Koninklijke Philips Electronics N.V., Eindhoven Verfahren und vorrichtung zur videokodierung
JP3841132B2 (ja) * 1998-06-01 2006-11-01 株式会社ソニー・コンピュータエンタテインメント 入力位置検出装置及びエンタテインメントシステム
KR20010032337A (ko) * 1998-09-22 2001-04-16 마츠시타 덴끼 산교 가부시키가이샤 영상신호 부호화방법, 영상신호 부호화장치 및 프로그램기록매체
US7327791B1 (en) 1999-02-22 2008-02-05 Mitsubishi Denki Kabushiki Kaisha Video decoding method performing selective error concealment and resynchronization
US6738423B1 (en) 2000-01-21 2004-05-18 Nokia Mobile Phones Ltd. Method for encoding and decoding video information, a motion compensated video encoder and a corresponding decoder
US6552673B2 (en) 2000-02-25 2003-04-22 Texas Instruments Incorporated Efficient table access for reversible variable length code decoding using a hash function
EP1152621A1 (en) * 2000-05-05 2001-11-07 STMicroelectronics S.r.l. Motion estimation process and system.
US20050207663A1 (en) 2001-07-31 2005-09-22 Weimin Zeng Searching method and system for best matching motion vector
US7787746B2 (en) * 2001-10-23 2010-08-31 Thomson Licensing Fast motion trick mode using non-progressive dummy bidirectional predictive pictures
US20040125204A1 (en) 2002-12-27 2004-07-01 Yoshihisa Yamada Moving picture coding apparatus and moving picture decoding apparatus
US7248741B2 (en) * 2002-01-09 2007-07-24 Hiroshi Akimoto Video sequences correlation and static analysis and scene changing forecasting in motion estimation
CN1897702A (zh) 2002-01-18 2007-01-17 株式会社东芝 视频编码方法和装置以及视频解码方法和装置
KR100492127B1 (ko) * 2002-02-23 2005-06-01 삼성전자주식회사 적응형 움직임 추정장치 및 추정 방법
KR100474285B1 (ko) 2002-04-08 2005-03-08 엘지전자 주식회사 모션벡터결정방법
CN101631248B (zh) 2002-04-18 2011-09-14 株式会社东芝 运动图像编码/解码方法和装置
JP2004023458A (ja) * 2002-06-17 2004-01-22 Toshiba Corp 動画像符号化/復号化方法及び装置
US6925123B2 (en) * 2002-08-06 2005-08-02 Motorola, Inc. Method and apparatus for performing high quality fast predictive motion search
JP4617644B2 (ja) 2003-07-18 2011-01-26 ソニー株式会社 符号化装置及び方法
US7620106B2 (en) 2003-09-07 2009-11-17 Microsoft Corporation Joint coding and decoding of a reference field selection and differential motion vector information
US7577198B2 (en) 2003-09-07 2009-08-18 Microsoft Corporation Number of reference fields for an interlaced forward-predicted field
US8064520B2 (en) 2003-09-07 2011-11-22 Microsoft Corporation Advanced bi-directional predictive coding of interlaced video
CN1225127C (zh) * 2003-09-12 2005-10-26 中国科学院计算技术研究所 一种用于视频编码的编码端/解码端双向预测方法
CN100353768C (zh) 2003-11-26 2007-12-05 联发科技股份有限公司 在视频压缩系统中进行运动估测的方法及相关装置
AU2004310917B2 (en) 2003-12-01 2009-10-01 Samsung Electronics Co., Ltd. Method and apparatus for scalable video encoding and decoding
CA2557534A1 (en) 2004-02-27 2005-09-09 Td Vision Corporation S.A. De C.V. Method and system for digital decoding 3d stereoscopic video images
EP1578137A2 (en) * 2004-03-17 2005-09-21 Matsushita Electric Industrial Co., Ltd. Moving picture coding apparatus with multistep interpolation process
US7676722B2 (en) 2004-03-31 2010-03-09 Sony Corporation Multimedia content delivery using pre-stored multiple description coded video with restart
CN101023662B (zh) 2004-07-20 2010-08-04 高通股份有限公司 用于运动矢量处理的方法和设备
CN101005620B (zh) 2004-09-03 2011-08-10 微软公司 为隔行扫描和逐行扫描视频编码和解码宏块和运动信息中的革新
CN1256686C (zh) 2004-09-15 2006-05-17 哈尔滨工业大学 一种运动估计方法和应用该方法的运动估计电路
WO2006033227A1 (ja) * 2004-09-22 2006-03-30 Matsushita Electric Industrial Co., Ltd. 画像符号化装置
KR100679022B1 (ko) * 2004-10-18 2007-02-05 삼성전자주식회사 계층간 필터링을 이용한 비디오 코딩 및 디코딩방법과,비디오 인코더 및 디코더
US20060153300A1 (en) * 2005-01-12 2006-07-13 Nokia Corporation Method and system for motion vector prediction in scalable video coding
EP1703736A1 (en) 2005-03-14 2006-09-20 BRITISH TELECOMMUNICATIONS public limited company Global motion estimation
JPWO2006100820A1 (ja) 2005-03-22 2008-08-28 三菱電機株式会社 画像符号化記録読出装置
KR100736041B1 (ko) 2005-06-30 2007-07-06 삼성전자주식회사 에러 은닉 방법 및 장치
RU2368095C1 (ru) 2005-07-22 2009-09-20 Мицубиси Электрик Корпорейшн Кодер изображения и декодер изображения, способ кодирования изображения и способ декодирования изображения, программа кодирования изображения и программа декодирования изображения и компьютерно-считываемый носитель записи, на котором записана программа кодирования изображения, и компьютерно-считываемый носитель записи, на котором записана программа декодирования изображения
JP2007067731A (ja) 2005-08-30 2007-03-15 Sanyo Electric Co Ltd 符号化方法
JP2007074592A (ja) 2005-09-09 2007-03-22 Sony Corp 画像処理装置および方法、プログラム、並びに記録媒体
KR100712532B1 (ko) 2005-09-10 2007-04-30 삼성전자주식회사 단일표현과 다중표현 전환을 이용한 동영상 변환부호화장치 및 방법
US8165205B2 (en) 2005-09-16 2012-04-24 Sony Corporation Natural shaped regions for motion compensation
US7620108B2 (en) 2005-09-16 2009-11-17 Sony Corporation Integrated spatial-temporal prediction
US20070064805A1 (en) 2005-09-16 2007-03-22 Sony Corporation Motion vector selection
US8879856B2 (en) 2005-09-27 2014-11-04 Qualcomm Incorporated Content driven transcoder that orchestrates multimedia transcoding using content information
JP2007097028A (ja) * 2005-09-30 2007-04-12 Oki Electric Ind Co Ltd 動きベクトル検出方法および動きベクトル検出回路
US8325822B2 (en) 2006-01-20 2012-12-04 Qualcomm Incorporated Method and apparatus for determining an encoding method based on a distortion value related to error concealment
JP5004150B2 (ja) 2006-02-24 2012-08-22 Kddi株式会社 画像符号化装置
US8320450B2 (en) 2006-03-29 2012-11-27 Vidyo, Inc. System and method for transcoding between scalable and non-scalable video codecs
JP5188033B2 (ja) 2006-04-24 2013-04-24 株式会社日立製作所 記録再生装置、送出装置及び伝送システム。
CN101064849A (zh) 2006-04-29 2007-10-31 鲁海宁 动态图像编码方法、装置和计算机可读记录介质
US20080002770A1 (en) * 2006-06-30 2008-01-03 Nokia Corporation Methods, apparatus, and a computer program product for providing a fast inter mode decision for video encoding in resource constrained devices
CN100576919C (zh) 2006-08-08 2009-12-30 佳能株式会社 运动矢量检测设备及运动矢量检测方法
DE102006043707A1 (de) * 2006-09-18 2008-03-27 Robert Bosch Gmbh Verfahren zur Datenkompression in einer Videosequenz
CN101155311B (zh) 2006-09-27 2012-09-05 中兴通讯股份有限公司 一种视频通信中的视频码流错误检测和处理方法
KR101383540B1 (ko) * 2007-01-03 2014-04-09 삼성전자주식회사 복수의 움직임 벡터 프리딕터들을 사용하여 움직임 벡터를추정하는 방법, 장치, 인코더, 디코더 및 복호화 방법
JP5026092B2 (ja) 2007-01-12 2012-09-12 三菱電機株式会社 動画像復号装置および動画像復号方法
JP2008193627A (ja) 2007-01-12 2008-08-21 Mitsubishi Electric Corp 画像符号化装置、画像復号装置、および画像符号化方法、画像復号方法
TW200836130A (en) 2007-02-16 2008-09-01 Thomson Licensing Bitrate reduction method by requantization
JP5025286B2 (ja) * 2007-02-28 2012-09-12 シャープ株式会社 符号化装置及び復号装置
CN101267567A (zh) 2007-03-12 2008-09-17 华为技术有限公司 帧内预测、编解码方法及装置
CN101682769B (zh) * 2007-04-12 2016-11-09 汤姆森特许公司 用于视频编码和解码的跳过-直接模式的取决于环境的合并的方法和装置
JP2008283560A (ja) 2007-05-11 2008-11-20 Canon Inc 画像処理装置およびその方法
US8254450B2 (en) 2007-08-23 2012-08-28 Nokia Corporation System and method for providing improved intra-prediction in video coding
CN100542299C (zh) 2007-08-31 2009-09-16 广东威创视讯科技股份有限公司 视讯图像错误的掩盖方法
EP2048886A1 (en) * 2007-10-11 2009-04-15 Panasonic Corporation Coding of adaptive interpolation filter coefficients
CN100579231C (zh) 2007-12-18 2010-01-06 北京中星微电子有限公司 一种运动矢量预测方法及装置
CN101466036A (zh) 2007-12-21 2009-06-24 北京中电华大电子设计有限责任公司 基于avs的运动矢量预测流水并行设计方法
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
CN101252422B (zh) 2008-03-20 2013-06-05 中兴通讯股份有限公司 物理混合重传指示信道的分配方法
JP4990927B2 (ja) 2008-03-28 2012-08-01 三星電子株式会社 動きベクトル情報の符号化/復号化方法及び装置
US20090268821A1 (en) 2008-04-29 2009-10-29 The Hong Kong University Of Science And Technology Block parallel and fast motion estimation in video coding
JP2010028221A (ja) 2008-07-15 2010-02-04 Sony Corp 動きベクトル検出装置、動きベクトル検出方法、画像符号化装置及びプログラム
US20100020877A1 (en) * 2008-07-23 2010-01-28 The Hong Kong University Of Science And Technology Multiple reference frame motion estimation in video coding
CN101350927B (zh) 2008-07-29 2011-07-13 北京中星微电子有限公司 帧内预测选择最优预测模式的方法及装置
JP5422168B2 (ja) * 2008-09-29 2014-02-19 株式会社日立製作所 動画像符号化方法および動画像復号化方法
JP5401071B2 (ja) 2008-10-09 2014-01-29 株式会社Nttドコモ 動画像符号化装置、動画像復号装置、動画像符号化方法、動画像復号方法、動画像符号化プログラム、動画像復号プログラム、動画像処理システムおよび動画像処理方法
WO2010043806A2 (fr) * 2008-10-14 2010-04-22 France Telecom Codage et decodage avec elimination d'un ou plusieurs predicteurs predetermines
EP2357825A4 (en) 2008-12-08 2012-06-20 Panasonic Corp APPARATUS AND METHOD FOR IMAGE DECODING
KR101590511B1 (ko) * 2009-01-23 2016-02-02 에스케이텔레콤 주식회사 움직임 벡터 부호화/복호화 장치 및 방법과 그를 이용한 영상 부호화/복호화 장치 및 방법
US8737475B2 (en) 2009-02-02 2014-05-27 Freescale Semiconductor, Inc. Video scene change detection and encoding complexity reduction in a video encoder system having multiple processing devices
CN102804768B (zh) * 2009-06-19 2015-12-16 法国电信 利用在预测器之间的竞争的编码运动矢量
CN102883160B (zh) 2009-06-26 2016-06-29 华为技术有限公司 视频图像运动信息获取方法、装置及设备、模板构造方法
KR20110008653A (ko) 2009-07-20 2011-01-27 삼성전자주식회사 움직임 벡터 예측 방법과 이를 이용한 영상 부호화/복호화 장치 및 방법
US9060176B2 (en) 2009-10-01 2015-06-16 Ntt Docomo, Inc. Motion vector prediction in video coding
US20110090965A1 (en) 2009-10-21 2011-04-21 Hong Kong Applied Science and Technology Research Institute Company Limited Generation of Synchronized Bidirectional Frames and Uses Thereof
CN101860754B (zh) 2009-12-16 2013-11-13 香港应用科技研究院有限公司 运动矢量编码和解码的方法和装置
CN101777963B (zh) 2009-12-29 2013-12-11 电子科技大学 一种基于反馈模式的帧级别编码与译码方法
US9036692B2 (en) * 2010-01-18 2015-05-19 Mediatek Inc. Motion prediction method
BR112012019560B1 (pt) 2010-02-05 2021-08-24 Telefonaktiebolaget Lm Ericsson Método para gerenciar candidatos a vetor de movimento predito, e, aparelhos de codificação e de decodificação de vídeo
CN101931821B (zh) 2010-07-21 2014-12-10 中兴通讯股份有限公司 一种视频传输的差错控制方法及系统
US8736767B2 (en) 2010-09-29 2014-05-27 Sharp Laboratories Of America, Inc. Efficient motion vector field estimation
US20120082228A1 (en) * 2010-10-01 2012-04-05 Yeping Su Nested entropy encoding
US10104391B2 (en) 2010-10-01 2018-10-16 Dolby International Ab System for nested entropy encoding
US8976873B2 (en) 2010-11-24 2015-03-10 Stmicroelectronics S.R.L. Apparatus and method for performing error concealment of inter-coded video frames
JP5796289B2 (ja) 2010-11-26 2015-10-21 ソニー株式会社 二次電池セル、電池パック及び電力消費機器
GB2487200A (en) 2011-01-12 2012-07-18 Canon Kk Video encoding and decoding with improved error resilience
PL3629583T3 (pl) 2011-05-31 2024-03-25 Sun Patent Trust Sposób dekodowania obrazu, urządzenie do dekodowania obrazu

Also Published As

Publication number Publication date
RU2600530C2 (ru) 2016-10-20
RU2709158C1 (ru) 2019-12-16
EP3518544B1 (en) 2020-03-11
CN106210734A (zh) 2016-12-07
EP2664152A1 (en) 2013-11-20
KR101524394B1 (ko) 2015-05-29
JP2016054538A (ja) 2016-04-14
EP2664145A1 (en) 2013-11-20
GB201100462D0 (en) 2011-02-23
US20190098314A1 (en) 2019-03-28
ES2786998T3 (es) 2020-10-14
HUE052669T2 (hu) 2021-05-28
US20180316921A1 (en) 2018-11-01
KR20170128614A (ko) 2017-11-22
KR20130105906A (ko) 2013-09-26
EP3244613A1 (en) 2017-11-15
KR20130119468A (ko) 2013-10-31
CN103314586A (zh) 2013-09-18
CN107454423A (zh) 2017-12-08
CN103314593B (zh) 2016-12-21
US20130287112A1 (en) 2013-10-31
EP2664142A1 (en) 2013-11-20
PL3550841T3 (pl) 2021-04-06
US20210144385A1 (en) 2021-05-13
US20180352236A1 (en) 2018-12-06
US20180241999A1 (en) 2018-08-23
ES2615828T3 (es) 2017-06-08
CN103329528B (zh) 2016-12-21
PL3174297T3 (pl) 2021-03-08
JP2017201802A (ja) 2017-11-09
KR101918437B1 (ko) 2018-11-13
JP6207576B2 (ja) 2017-10-04
JP5847845B2 (ja) 2016-01-27
EP3518544A1 (en) 2019-07-31
CN107105285A (zh) 2017-08-29
CN103314586B (zh) 2017-09-22
CN107454399A (zh) 2017-12-08
KR20130119467A (ko) 2013-10-31
CN107105284A (zh) 2017-08-29
KR101953520B1 (ko) 2019-02-28
EP3598756A1 (en) 2020-01-22
US20130294521A1 (en) 2013-11-07
KR20130105907A (ko) 2013-09-26
EP2666294A1 (en) 2013-11-27
CN103314593A (zh) 2013-09-18
KR101943787B1 (ko) 2019-01-29
US9386312B2 (en) 2016-07-05
EP3550841A1 (en) 2019-10-09
RU2651181C2 (ru) 2018-04-18
EP3598756B1 (en) 2021-03-10
RU2015120774A (ru) 2015-11-20
US20190098315A1 (en) 2019-03-28
KR102019640B1 (ko) 2019-09-06
EP2666294B1 (en) 2016-05-18
TR201907405T4 (tr) 2019-06-21
US10609380B2 (en) 2020-03-31
RU2016136342A (ru) 2018-03-15
CN107483958A (zh) 2017-12-15
GB2487200A (en) 2012-07-18
ES2835311T3 (es) 2021-06-22
PL3518544T3 (pl) 2020-07-13
CN106851308A (zh) 2017-06-13
WO2012095464A1 (en) 2012-07-19
KR20190021492A (ko) 2019-03-05
KR20190044128A (ko) 2019-04-29
RU2016136342A3 (es) 2018-03-15
JP2014506439A (ja) 2014-03-13
US10506236B2 (en) 2019-12-10
EP3244613B1 (en) 2019-09-25
CN106210734B (zh) 2020-01-14
EP2664142B1 (en) 2016-12-28
EP3070944B1 (en) 2019-04-03
KR20180123186A (ko) 2018-11-14
CN106851310A (zh) 2017-06-13
HUE049745T2 (hu) 2020-10-28
WO2013041244A1 (en) 2013-03-28
GB2487261A (en) 2012-07-18
KR101972030B1 (ko) 2019-04-24
BR112013016702A2 (pt) 2016-10-04
EP3174297A1 (en) 2017-05-31
JP2014506440A (ja) 2014-03-13
CN107529063B (zh) 2020-03-31
US20130279596A1 (en) 2013-10-24
RU2013137437A (ru) 2015-02-20
CN106851307A (zh) 2017-06-13
KR101798280B1 (ko) 2017-11-15
US20190098313A1 (en) 2019-03-28
KR101797805B1 (ko) 2017-11-14
CN107454398B (zh) 2020-03-03
JP6165219B2 (ja) 2017-07-19
KR20190014111A (ko) 2019-02-11
WO2012095465A1 (en) 2012-07-19
ES2753760T3 (es) 2020-04-14
JP2015164322A (ja) 2015-09-10
HUE043611T2 (hu) 2019-08-28
BR122019026393B1 (pt) 2022-05-24
JP2014503157A (ja) 2014-02-06
ES2583407T3 (es) 2016-09-20
KR101944289B1 (ko) 2019-01-31
KR101837803B1 (ko) 2018-03-12
CN107529063A (zh) 2017-12-29
PL3244613T3 (pl) 2020-02-28
KR101524393B1 (ko) 2015-05-29
US20180242001A1 (en) 2018-08-23
PL3070944T3 (pl) 2019-09-30
RU2556386C2 (ru) 2015-07-10
KR20180030223A (ko) 2018-03-21
US10499060B2 (en) 2019-12-03
JP2014503158A (ja) 2014-02-06
RU2762933C2 (ru) 2021-12-24
US11146792B2 (en) 2021-10-12
KR20150006021A (ko) 2015-01-15
JP6513154B2 (ja) 2019-05-15
EP3550841B1 (en) 2020-10-07
JP2019024241A (ja) 2019-02-14
JP6336170B2 (ja) 2018-06-06
JP6120900B2 (ja) 2017-04-26
US20130287113A1 (en) 2013-10-31
WO2012095466A1 (en) 2012-07-19
KR20150006014A (ko) 2015-01-15
CN106851309A (zh) 2017-06-13
CN103314585A (zh) 2013-09-18
EP3070944A1 (en) 2016-09-21
KR20170128613A (ko) 2017-11-22
US20180242000A1 (en) 2018-08-23
JP2016054539A (ja) 2016-04-14
KR101999091B1 (ko) 2019-07-10
JP5847843B2 (ja) 2016-01-27
KR20150006015A (ko) 2015-01-15
CN107105272A (zh) 2017-08-29
JP6545318B2 (ja) 2019-07-17
JP5847844B2 (ja) 2016-01-27
EP3174297B1 (en) 2020-10-21
RU2688252C1 (ru) 2019-05-21
BR112013016702B1 (pt) 2022-08-16
GB2487253A (en) 2012-07-18
US20160277744A1 (en) 2016-09-22
US9979968B2 (en) 2018-05-22
KR20170128610A (ko) 2017-11-22
CN107483958B (zh) 2020-03-03
JP2017143556A (ja) 2017-08-17
KR101525341B1 (ko) 2015-06-02
JP6779954B2 (ja) 2020-11-04
CN107454398A (zh) 2017-12-08
JP2018152878A (ja) 2018-09-27
GB201104032D0 (en) 2011-04-20
HUE046362T2 (hu) 2020-03-30
US10165279B2 (en) 2018-12-25
RU2019137968A (ru) 2021-05-25
JP2018026826A (ja) 2018-02-15
ES2726048T3 (es) 2019-10-01
RU2019137968A3 (es) 2021-05-25
CN103329528A (zh) 2013-09-25
GB201111866D0 (en) 2011-08-24
HUE052346T2 (hu) 2021-04-28

Similar Documents

Publication Publication Date Title
ES2834135T3 (es) Codificación y descodificación de vídeo con resiliencia mejorada frente a errores
ES2727629T3 (es) Procedimiento y dispositivo para codificar una secuencia de imágenes y procedimiento y dispositivo para descodificar una secuencia de imágenes