ES2599848T3 - Codificación y descodificación de video - Google Patents
Codificación y descodificación de video Download PDFInfo
- Publication number
- ES2599848T3 ES2599848T3 ES12709016.5T ES12709016T ES2599848T3 ES 2599848 T3 ES2599848 T3 ES 2599848T3 ES 12709016 T ES12709016 T ES 12709016T ES 2599848 T3 ES2599848 T3 ES 2599848T3
- Authority
- ES
- Spain
- Prior art keywords
- block
- motion vector
- predictor
- predictors
- decoded
- 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
Links
- 230000033001 locomotion Effects 0.000 claims abstract description 285
- 239000013598 vector Substances 0.000 claims abstract description 253
- 238000000034 method Methods 0.000 claims abstract description 58
- 230000002123 temporal effect Effects 0.000 claims description 47
- 230000008569 process Effects 0.000 description 25
- 238000005056 compaction Methods 0.000 description 22
- 238000004422 calculation algorithm Methods 0.000 description 17
- 238000007906 compression Methods 0.000 description 16
- 230000009467 reduction Effects 0.000 description 16
- 230000006835 compression Effects 0.000 description 15
- 230000004927 fusion Effects 0.000 description 12
- 238000010586 diagram Methods 0.000 description 11
- 239000011159 matrix material Substances 0.000 description 10
- 230000006872 improvement Effects 0.000 description 9
- 230000001629 suppression Effects 0.000 description 8
- 230000011664 signaling Effects 0.000 description 7
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 description 6
- 238000004891 communication Methods 0.000 description 6
- 238000005192 partition Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 6
- 238000001914 filtration Methods 0.000 description 5
- 238000011002 quantification Methods 0.000 description 5
- 238000000354 decomposition reaction Methods 0.000 description 4
- 238000013507 mapping Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000002441 reversible effect Effects 0.000 description 3
- 230000003044 adaptive effect Effects 0.000 description 2
- 238000009795 derivation Methods 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 230000008707 rearrangement Effects 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 238000012800 visualization Methods 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001364 causal effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000002860 competitive effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000013467 fragmentation Methods 0.000 description 1
- 238000006062 fragmentation reaction Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/103—Selection of coding mode or of prediction mode
- H04N19/105—Selection 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/513—Processing of motion vectors
- H04N19/521—Processing of motion vectors for estimating the reliability of the determined motion vectors or motion vector field, e.g. for smoothing the motion vector field or for correcting motion vectors
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods 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/136—Incoming video signal characteristics or properties
- H04N19/137—Motion inside a coding unit, e.g. average field, frame or block difference
- H04N19/139—Analysis of motion vectors, e.g. their magnitude, direction, variance or reliability
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods 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/157—Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/17—Methods 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/176—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods 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/43—Hardware specially adapted for motion estimation or compensation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/44—Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/46—Embedding additional information in the video signal during the compression process
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/46—Embedding additional information in the video signal during the compression process
- H04N19/463—Embedding additional information in the video signal during the compression process by compressing encoding parameters before transmission
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/513—Processing of motion vectors
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/513—Processing of motion vectors
- H04N19/517—Processing of motion vectors by encoding
- H04N19/52—Processing of motion vectors by encoding by predictive encoding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/593—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
- H04N19/61—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/103—Selection of coding mode or of prediction mode
- H04N19/107—Selection of coding mode or of prediction mode between spatial and temporal predictive coding, e.g. picture refresh
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
Procedimiento de generación de un conjunto de predictores de vectores de movimiento para un bloque a descodificar que forma parte de un fotograma de video actual que debe ser descodificado, en el que el número de predictores de vectores de movimiento temporales en el conjunto es uno, y el número de predictores de vectores de movimiento espacial en el conjunto es al menos uno, comprendiendo el procedimiento la determinación del predictor temporal del conjunto como predictor temporal del vector de movimiento en una posición superior izquierda, en un bloque del fotograma de referencia vecino y en diagonal por debajo y a la derecha de un bloque del fotograma de referencia contiguo a dicho bloque a descodificar, teniendo dicho bloque del fotograma de referencia la misma posición y el mismo tamaño que el bloque a descodificar.
Description
5
10
15
20
25
30
35
40
45
50
55
60
65
DESCRIPCION
Codificacion y descodificacion de video Sector tecnico de la invencion
La invencion se refiere a un procedimiento y un dispositivo para la descodificacion de una secuencia de bits que comprende una secuencia codificada de imagenes digitales y a un procedimiento y un dispositivo para la generacion de un conjunto de predictores de vectores de movimiento para un bloque a descodificar.
La invencion pertenece al sector del proceso de senales digitales y, en concreto, al sector de la compresion de video utilizando compensacion del movimiento para reducir las redundancias espaciales y temporales en las secuencias de video.
Descripcion de la tecnica anterior
Muchos formatos de compresion de video, por ejemplo, H.263, H.264, MPEG-1, MPEG-2, MPEG-4, SVC, utilizan la transformada discreta del coseno (DCT, Discrete Cosine Transform) basada en bloques y la compensacion del movimiento para eliminar redundancias espaciales y temporales. Estos se pueden denominar formatos predictivos de video. Cada fotograma o imagen de la senal de video esta dividido en segmentos que estan codificados y pueden ser descodificados de manera independiente. Un segmento es habitualmente una porcion rectangular del fotograma o, de manera mas general, una porcion de un fotograma o un fotograma entero. Ademas, cada segmento esta dividido en macrobloques (MB) y cada macrobloque esta ademas dividido en bloques, habitualmente bloques de 8x8 pixeles. En la mas reciente Codificacion de video de alta eficiencia (HEVC, High Efficiency Video Coding) actualmente en proceso de estandarizacion, cada segmento esta dividido en Unidades maximas de codificacion (LCU, Largest Coding Units) no superpuestas, generalmente bloques de 64 pixeles x 64 pixeles de tamano. Cada LCU se puede, a su vez, dividir iterativamente en Unidades de codificacion (CU - Coding Units) menores de tamano variable utilizando descomposicion en arbol cuaternario. Cada CU se puede partir asimismo en un maximo de 2 Unidades de particion rectangulares simetricas. Los fotogramas codificados son de dos tipos: fotogramas predichos temporales (predichos a partir de un fotograma de referencia llamados fotogramas P, o predichos a partir de dos fotogramas de referencia llamados fotogramas B) y fotogramas predichos no temporales (llamados Intra fotogramas o fotogramas I).
La prediccion temporal consiste en encontrar en un fotograma de referencia, bien un fotograma anterior o un fotograma futuro de la secuencia de video, una porcion de imagen o una zona de referencia que sea la mas proxima al bloque a codificar. Esta etapa se conoce como estimacion del movimiento. A continuacion, la diferencia entre el bloque a codificar y la porcion de referencia es codificada (compensacion del movimiento), junto con un elemento de informacion del movimiento relativo al vector de movimiento, que indica la zona de referencia que se debe utilizar para la compensacion del movimiento.
Con el fin de reducir mas el coste de la codificacion de la informacion 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 al bloque a codificar.
En H.264, los vectores de movimiento son codificados con respecto a un predictor medio calculado a partir de vectores de movimiento situados en un entorno causal con el bloque a codificar, por ejemplo, de los bloques situados encima y a la izquierda del bloque a codificar. Solo se codifica la diferencia, tambien llamada vector de movimiento residual, entre el predictor medio y el vector de movimiento del bloque actual.
La codificacion utilizando vectores de movimiento residuales ahorra tasa de bits, pero requiere que el decodificador efectue el mismo calculo 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 utilizacion de una serie de posibles predictores del vector de movimiento. Este procedimiento, denominado competicion de vectores de movimiento, comprende la determinacion entre varios predictores del vector de movimiento o candidatos de que predictor del vector de movimiento minimiza el coste de la codificacion, habitualmente un coste de distorsion de la velocidad, de la informacion residual del movimiento. La informacion residual del movimiento se compone del 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 informacion que indica el predictor del vector de movimiento seleccionado, tal como por ejemplo un valor codificado del indice del predictor del vector de movimiento seleccionado.
En la Codificacion de video de alta eficiencia (HEVC, High Efficiency Video Coding) actualmente en proceso de estandarizacion, se ha propuesto la seleccion de un primer predictor del vector de movimiento espacial de un grupo de bloques predeterminado por encima del bloque actual a codificar, y un segundo predictor del vector de
5
10
15
20
25
30
35
40
45
50
55
60
65
movimiento espacial de otro grupo de bloques predeterminado a la izquierda del bloque actual, y un predictor del vector de movimiento temporal de un bloque contiguo en un fotograma de referencia. Un bloque contiguo es un bloque situado en la misma posicion que el bloque a codificar, pero en otra imagen. Este esquema de seleccion del predictor del vector de movimiento se denomina Prediccion avanzada de vectores de movimiento (AMVP, Advanced Motion Vector Prediction).
Como resultado de la seleccion de predictor del vector de movimiento, se obtiene un conjunto de candidatos de predictor del vector de movimiento que mezclan predictores espaciales y predictores temporales, comprendiendo el conjunto en candidatos 0, 1, 2 o 3 dependiendo de la disponibilidad de los diferentes predictores del vector de movimiento espaciales y temporales. Con el fin de reducir mas la sobrecarga de senalizacion del predictor del vector de movimiento en la secuencia de bits, el conjunto de predictores del vector de movimiento se reduce mediante la aplicacion de un proceso de supresion que elimina vectores de movimiento duplicados, es decir, vectores de movimiento que tienen el mismo valor. Por ejemplo, si el primer y el segundo predictores del vector de movimiento espaciales mencionados anteriormente son iguales, solo uno de ellos, asi como el predictor del vector de movimiento temporal, se deben mantener como candidatos para la prediccion del vector de movimiento. En este caso, solo es necesario un bit para indicar el indice del predictor del vector de movimiento al descodificador.
Los candidatos de predictor del vector de movimiento pueden ser asimismo ordenados para situar el predictor del vector de movimiento mas probable en la primera posicion, dado que la minima sobrecarga se produce si el primer candidato se elige como el mejor predictor.
Una reduccion suficiente del conjunto de predictores conduce a una ganancia en la sobrecarga de la senalizacion, dado que la indicacion del predictor del vector de movimiento seleccionado se puede codificar utilizando menos bits. En el limite, el conjunto de candidatos se puede reducir a 1, por ejemplo, si todos los predictores del vector de movimiento son iguales y, por lo tanto, no es necesario introducir ninguna informacion relativa al predictor del vector de movimiento seleccionado en la secuencia de bits.
Tal como se ha descrito anteriormente, en la propuesta de HEVC actual, los vectores de movimiento son descodificados mediante codificacion predictiva, utilizando una serie de predictores del vector de movimiento que podrian ser predictores espaciales o temporales. Por lo tanto, para cada fotograma que se utiliza como fotograma de referencia para la obtencion del predictor del vector de movimiento contiguo, es necesario almacenar junto al codificador y al descodificador sus vectores de movimiento correspondientes. Por defecto, el tamano de la memoria de vectores de movimiento es importante, considerando en primer lugar la granularidad del mapeo del movimiento (en el diseno de la HEVC actual el tamano minimo Inter-bloques es 4x4) y, en segundo lugar, que existen hasta dos vectores por bloque de movimiento para un SEGMENTO_B. Se estima que para imagenes con resolucion de 4Kx2K, y utilizando una granularidad de un conjunto de vectores de movimiento por bloque de 4x4 pixeles, son necesarios 26 bits por fotograma.
La publicacion de Yeping Su y Andrew Segall, “On motion vector competition”, (“Sobre la competicion de los vectores de movimiento”) JCTVC-C257, Guangzhou, CN, 7-15 de octubre de 2010, y la publicacion de Yeping Su y Andrew Segall “CE9: Reduced resolution storage of motion vector data” (“CE9: Almacenamiento de resolucion reducida de los datos de los vectores de movimiento”), JCTVC-D072, Daegu, KR, 20-28 de enero de 2011, propone la reduccion del tamano de la memoria de vectores de movimiento necesaria en el lado del descodificador para el almacenamiento de vectores contiguos en el tiempo e indices de referencia. La solucion propuesta comprende una simple compactacion por bloques de los vectores de movimiento, tal como se muestra en la figura 1. En la implementacion actual de la HEVC, se mantiene un vector de movimiento de entre 16 en cada cuadrado de 64x64 pixeles, y se considera el vector de movimiento del bloque de 4x4 superior izquierdo. Esto reduce las necesidades de memoria en un factor 16. Este factor de reduccion se senaliza en el conjunto de parametros de secuencia. El proceso de compresion de la memoria de vectores de movimiento se realiza tras un proceso de filtrado de bucle adaptativo, y antes de que la imagen descodificada se coloque en la memoria temporal de imagenes descodificadas (DPB, Decoded Picture Buffer).
Esta solucion permite una reduccion significativa de la memoria de vectores de movimiento, con una penalizacion en la eficiencia de la codificacion. Sin embargo, esta solucion no considera la diversidad de los predictores en el conjunto para la compactacion por bloques en la compresion de la memoria de MV (Vectores de movimiento, Motion Vector). Por otra parte, se probaron varios criterios, pero sin considerar la diversidad. Por otra parte, esta solucion no es ni adaptativa ni flexible. Ademas, cuando es necesaria mas compresion, es necesaria una mayor relacion de reduccion en la eliminacion de vectores de movimiento, lo que puede conducir a una perdida significativa de eficiencia en la codificacion.
El documento WO 2004/012459A describe otra propuesta para limitar el numero de vectores de movimiento almacenados. La informacion de limitacion se codifica como informacion de cabecera (posiblemente a un nivel global, tal como SPS, a nivel de imagen, tal como PPS o a nivel de segmento, tal como cabecera de segmento). Esta informacion de limitacion indica el numero de imagenes o el numero de macrobloques para los que estan almacenados vectores de movimiento. Si un bloque codificado hace referencia a un vector de movimiento que esta
5
10
15
20
25
30
35
40
45
50
55
60
65
almacenado, entonces se utiliza este vector de movimiento; de lo contrario, se utiliza un vector de movimiento nulo (ambos componentes son iguales a 0). No obstante, esta solucion no considera la compactacion por bloques.
Aparte de las propuestas para reducir las necesidades de almacenamiento de vectores de movimiento, otras propuestas de la tecnica anterior han perseguido mejoras en los predictores para AMVP.
Por ejemplo, Jung, G. Clare, (Orange Labs), “Temporal MV predictor modification for MV-Comp, Skip, Direct and Merge” (“Modificacion de predictores temporales de MV para esquemas de MV-comp, Salto, Direccion y Fusion”), JCTVC-D164, Daegu, KR, 20-28 de enero de 2011, propone utilizar un predictor temporal centrado; vease tambien el documento WO 2011/001077 A. En esta propuesta, el bloque contiguo se encuentra mediante el mapeo del centro del bloque a un fotograma de referencia contiguo, en lugar de al origen (parte superior izquierda) del bloque del bloque (tal como la version previa de HEVC). Los vectores de movimiento central y superior izquierdo tienen el mismo valor si el bloque contiguo tiene el mismo tamano o un tamano mayor que el bloque actual. La figura 2 muestra un bloque contiguo subdividido en 64 bloques de 4x4, que tienen cada uno su propio vector de movimiento. Este bloque contiguo se utiliza para un bloque actual de 32x32 a codificar, y el predictor temporal seleccionado es el vector de movimiento del bloque de 4x4 sombreado en el centro del bloque contiguo.
El objetivo de seleccionar el centro de la particion en lugar de la parte superior izquierda es encontrar una mejor representacion del movimiento del bloque contiguo. Teoricamente, el centro del bloque es una representacion mejor del bloque, debido a que es el baricentro del bloque. Pero el predictor temporal a partir del bloque contiguo no es el unico predictor del conjunto de predictores AMVP.
Jian-Liang Lin, Yu-Pao Tsai, Yu-Wen Huang, Shawmin Lei, (Media Tek Inc.), en “Improved Advanced Motion Vector Prediction” (“Prediccion avanzada mejorada de vectores de movimiento”), JCTVC-D125, Daegu, KR, 20-28 de enero de 2011, proponen anadir varios bloques temporales tal como se representa en la figura 3. Se proponen 4 predictores, el superior izquierdo contiguo temporal (T) y otras tres esquinas (inferior izquierdo (I), inferior derecho (H), superior derecho (E)). De esta manera, se anaden predictores al conjunto de predictores y compiten entre si segun el criterio de distorsion de velocidad.
Ninguna de las dos propuestas anteriores para mejorar el conjunto de predictores del vector de movimiento implica la compresion de la memoria de vectores de movimiento.
Es deseable solucionar uno o varios de los inconvenientes de la tecnica anterior.
Es deseable asimismo reducir las necesidades de la memoria de vectores de movimiento. Preferentemente, esta reduccion se deberia conseguir sin ninguna, o sin ninguna significativa, penalizacion adicional en la eficiencia de la codificacion. Incluso mas Preferentemente, esta reduccion se deberia conseguir en combinacion con mejoras en la eficiencia de la codificacion.
Es deseable asimismo conseguir mejoras en la eficiencia de la codificacion. Preferentemente, estas mejoras se deberian conseguir sin ninguna penalizacion, o sin ninguna significativa, en las necesidades de la memoria de vectores de movimiento. Incluso, mas Preferentemente, estas mejoras se deberian conseguir en combinacion con reducciones en las necesidades de la memoria de vectores de movimiento.
Es deseable asimismo encontrar buenos vectores de movimiento representativos en un fotograma de referencia para utilizar como predictores, no obstante, estos vectores de movimiento representativos se utilizan, es decir, incluso si se utilizan con propositos diferentes a reducir las necesidades de la memoria de vectores de movimiento y/o a la mejora de la eficiencia de la codificacion.
CARACTERISTICAS DE LA INVENCION
Segun un primer aspecto de la presente invencion, se da a conocer un procedimiento de generacion de un conjunto de predictores del vector de movimiento para un bloque a descodificar que forma parte de un fotograma de video actual que debe ser descodificado, en el que el numero de predictores del vector de movimiento temporales en el conjunto es uno, y el numero de predictores del vector de movimiento espaciales en el conjunto es de al menos uno, comprendiendo el procedimiento determinar el predictor temporal del conjunto mediante la seleccion como el predictor temporal del vector de movimiento en la posicion superior izquierda, en un bloque del fotograma de referencia vecino, y diagonalmente por debajo y a la derecha de un bloque del fotograma de referencia contiguo a dicho bloque a descodificar, teniendo dicho bloque del fotograma de referencia la misma posicion y el mismo tamano que el bloque a descodificar.
Esto puede proporcionar mejoras en la eficiencia de la codificacion. En este aspecto de la invencion es posible almacenar todos los vectores de movimiento, es decir, no es necesario reducir el numero de vectores de movimiento almacenados, aunque esto, por supuesto, es preferible.
5
10
15
20
25
30
35
40
45
50
55
60
65
En un segundo aspecto de la presente invencion, el procedimiento del primer aspecto se puede utilizar tambien en un procedimiento de descodificacion de una secuencia de bits que comprende una secuencia codificada de imagenes digitales, siendo por lo menos una porcion de una imagen codificada mediante compensacion del movimiento con respecto a una imagen de referencia.
Segun un tercer aspecto de la presente invencion, se da a conocer un dispositivo para la generacion de un conjunto de predictores del vector de movimiento para un bloque a descodificar, que forma parte de un fotograma de video actual que se debe descodificar, en el que el numero de predictores del vector de movimiento temporales en el conjunto es uno, y el numero de predictores del vector de movimiento espaciales es al menos uno, comprendiendo dicho dispositivo medios dispuestos para determinar el predictor temporal mediante la seleccion como predictor temporal del vector de movimiento en una posicion superior izquierda en un bloque del fotograma de referencia vecino, y diagonalmente por debajo y a la derecha de un bloque del fotograma de referencia contiguo a dicho bloque a descodificar, teniendo dicho bloque del fotograma de referencia la misma posicion y el mismo tamano que el bloque a descodificar.
Segun un cuarto aspecto de la presente invencion, se da a conocer un dispositivo para la descodificacion de una secuencia de bits que comprende una secuencia codificada de imagenes digitales, estando al menos una porcion de una imagen codificada mediante compensacion del movimiento con respecto a una imagen de referencia, comprendiendo el dispositivo para la generacion un conjunto de predictores del vector de movimiento del tercer aspecto de la presente invencion.
La presente invencion se extiende asimismo a programas que, cuando son ejecutados en un ordenador o procesador, hacen que el ordenador o procesador lleve a cabo cualquiera de los procedimientos descritos anteriormente o que, cuando se cargan en un dispositivo programable, hacen que el dispositivo sea cualquiera de los dispositivos descritos anteriormente. Se puede proporcionar el propio programa, o este contenido en un medio portador. El medio portador puede ser un medio de almacenamiento o de grabacion, o puede ser un medio de transmision tal como una senal. Un programa que realiza la presente invencion puede ser transitorio o no transitorio.
Tal como se ha descrito anteriormente, en las realizaciones de la presente invencion se tienen en cuenta las posiciones de los predictores espaciales para producir diversidad en el conjunto de predictores, en lugar de utilizar la mejor representacion del conjunto de predictores.
La invencion se puede asimismo utilizar para el proceso de obtencion de vectores de movimiento con el fin de crear diversidad en el conjunto de predictores.
Por extension, las realizaciones de la invencion pueden mejorar la eficiencia de la codificacion del esquema de AMVP y del modo de Fusion.
BREVE DESCRIPCION DE LOS DIBUJOS
A continuacion se hara ahora referencia, a modo de ejemplo, a los dibujos adjuntos, en los que:
- la figura 1, descrita anteriormente en esta memoria, es un diagrama esquematico para su utilizacion en la explicacion de una propuesta de la tecnica anterior para reducir las necesidades de la memoria de vectores de movimiento;
- la figura 2, descrita tambien anteriormente en esta memoria, es un diagrama esquematico para su utilizacion en la explicacion de una propuesta de la tecnica anterior para mejorar el conjunto de predictores del vector de movimiento;
- la figura 3, descrita tambien anteriormente en esta memoria, es un diagrama esquematico para su utilizacion en la explicacion de otra propuesta de la tecnica anterior para mejorar el conjunto de predictores del vector de movimiento;
- la figura 4 muestra partes del dispositivo adecuadas para implementar un codificador o para implementar un descodificador segun una realizacion de la presente invencion;
- la figura 5 muestra un diagrama de bloques de partes de un codificador;
- la figura 6 muestra una secuencia de imagenes procesada mediante el codificador de la figura 5;
- la figura 7 muestra un diagrama de bloques de partes de un descodificador segun una realizacion de la invencion;
- la figura 8 es un diagrama esquematico para su utilizacion en la explicacion de un procedimiento de determinacion de un conjunto de predictores del vector de movimiento que pueden ser utilizados por el codificador de la figura 5 y el descodificador de la figura 7;
5
10
15
20
25
30
35
40
45
50
55
60
65
- la figura 9 es un diagrama de flujo de las etapas llevadas a cabo por el codificador de la figura 5 cuando se utiliza el procedimiento de la figura 8;
- la figura 10 es un diagrama de flujo de las etapas llevadas a cabo por el descodificador de la figura 7 cuando se utiliza el procedimiento de la figura 8;
- la figura 11 es un diagrama de flujo de un procedimiento de compactacion por bloques del vector de movimiento utilizable por el codificador de la figura 5 y el descodificador de la figura 7;
- la figura 12 es un diagrama esquematico para utilizar en la explicacion de un principio que subyace al procedimiento de la figura 11; y
- las figuras 13A a 13C muestran matrices de distancias respectivas adecuadas para su utilizacion en el procedimiento de la figura 11.
DESCRIPCION DETALLADA DE LAS REALIZACIONES
La figura 4 muestra un diagrama del dispositivo -1000- adaptado para implementar un codificador o para implementar un descodificador segun una realizacion de la presente invencion. El dispositivo -1000- es, por ejemplo, un micro ordenador, una estacion de trabajo o un dispositivo portatil ligero.
El dispositivo -1000- comprende un bus de comunicaciones -1113- al que se conectan preferentemente:
- una unidad central de proceso -1111-, tal como un microprocesador, indicada como CPU;
- una memoria de solo lectura (ROM, Read Only Memory) -1107- que almacena uno o mas programas informaticos para implementar la invencion;
- una memoria de acceso aleatorio (RAM, Random Access Memory) -1112- que almacena codigo ejecutable del procedimiento de la invencion y proporciona registros adaptados para grabar las variables y los parametros necesarios para implementar el procedimiento de codificacion de una secuencia de imagenes digitales y/o el procedimiento de descodificacion de una secuencia de bits; y
- una interfaz de comunicacion -1102- conectada a una red de comunicacion -1103- sobre la que se transmiten los datos digitales a procesar.
Una memoria de vectores de movimiento (MVM, Motion Vector Memory) -1112a- forma parte de la RAM -1112- y se utiliza para almacenar los vectores de movimiento de fotogramas de referencia.
Opcionalmente, el dispositivo -1000- puede tener tambien los siguientes componentes:
- un medio de almacenamiento de datos -1104- tal como un disco duro, capaz de contener los programas que implementan la invencion y los datos utilizados o producidos durante la implementacion de la invencion;
- una unidad de disco -1105- para un disco -1106-, estando la unidad de disco adaptada para leer datos del disco -1106- o para escribir datos en dicho disco;
- una pantalla -1109- para mostrar y/o servir como interfaz grafica con el usuario, por medio de un teclado -1110- o de cualquier otro medio de senalizacion.
El dispositivo -1000- puede ser conectado a diversos perifericos, tales como por ejemplo una camara digital -1100- o un microfono -1108-, siendo cada uno conectado a una tarjeta de entrada/salida (no mostrada) con el fin de proporcionar datos multimedia al dispositivo -1000-.
El bus de comunicacion permite la comunicacion e interoperatividad entre los diferentes elementos incluidos en el dispositivo -1000- o conectados al mismo. El mapeo del bus no es limitativo y, en particular, la unidad central de proceso es capaz de comunicar instrucciones a cualquier elemento del dispositivo -1000-, directamente o por medio de otro elemento del dispositivo -1000-.
El disco -1106- puede ser reemplazado por cualquier medio de informacion tal como, por ejemplo, un disco compacto (CD-ROM), regrabable o no, un disco ZIP o una tarjeta de memoria y, en terminos generales, por medios de almacenamiento de informacion que pueden ser leidos por un microordenador o por un microprocesador, integrados o no en el dispositivo, opcionalmente extraible y adaptado para almacenar uno o varios programas cuya ejecucion permita la implementacion del procedimiento de codificacion de una secuencia de imagenes digitales y/o del procedimiento de descodificacion de una secuencia de bits segun la invencion.
5
10
15
20
25
30
35
40
45
50
55
60
65
El codigo ejecutable puede ser almacenado bien en una memoria de solo lectura -1107-, en el disco duro -1104- o en un medio digital extraible tal como por ejemplo un disco -1106- tal como se ha descrito anteriormente. Segun una variante, el codigo ejecutable de los programas puede ser recibido por medio de la red de comunicacion -1103-, a traves de la interfaz -1102-, con el fin de ser almacenado en uno de los medios de almacenamiento del dispositivo -1000- antes de ser ejecutado, tal como el disco duro -1104-.
La unidad central de proceso -1111- esta adaptada para controlar y dirigir la ejecucion de las instrucciones o porciones de codigo del software del programa o programas segun la invencion, instrucciones que estan almacenadas en uno de los medios de almacenamiento mencionados anteriormente. Cuando se conecta el equipo, el programa o programas que estan almacenados en una memoria no volatil, por ejemplo, en el disco duro -1104- o en la memoria de solo lectura -1107-, son transferidos a la memoria de acceso aleatorio -1112-, que contiene entonces el codigo ejecutable del programa o programas, asi como los registros para almacenar las variables y parametros necesarios para la implementacion de la invencion.
En esta realizacion, el dispositivo es un dispositivo programable que utiliza software para implementar la invencion. Sin embargo, de manera alternativa, la presente invencion puede ser implementada en hardware (por ejemplo, en forma de un circuito integrado de aplicacion especifica, o ASIC, Application Specific Integrated Circuit).
La figura 5 muestra un diagrama de bloques de un codificador -30-. El codificador esta representado por modulos conectados, estando cada modulo adaptado para implementar, por ejemplo, en forma de instrucciones de programacion para ser ejecutadas por la CPU -1111- del dispositivo -1000-, una etapa correspondiente de un procedimiento.
Una secuencia original de imagenes digitales b a in -301- es recibida como entrada por el codificador -30-. Cada imagen digital esta representada por un conjunto de muestras, conocidas como pixeles.
Una secuencia de bits -310- es emitida por el codificador -30-.
La secuencia de bits -310- comprende una serie de unidades de codificacion o segmentos, comprendiendo cada segmento una cabecera de segmento para la codificacion de los valores de los parametros de codificacion utilizados para codificar el segmento y el cuerpo del segmento, que comprende datos de video codificados. En HEVC, estos segmentos estan divididos en Unidades maximas de codificacion (LCU, Largest Coding Units) no superpuestas, generalmente bloques de tamano 64 pixeles x 64 pixeles. Cada LCU puede, a su vez, ser dividida iterativamente en Unidades de codificacion (CU, Coding Units) menores de tamano variable, utilizando una descomposicion de arbol cuaternario. Cada CU puede ser ademas dividida en un maximo de 2 Unidades de particion (PU, Partition Units) rectangulares simetricas.
La figura 6 muestra la secuencia -301- de imagenes digitales i, segmentos -103-, LCU -104-, CU -105-, PU -106- y TU -107-. Una TU (Unidad transformada, Transform Unit) se define independientemente de la PU para transformacion y cuantificacion en la CU.
Se debe observar que, en la siguiente descripcion se utiliza el termino “bloque” en lugar de la terminologia especifica CU y PU utilizada en HeVCA. CU o PU es un bloque de pixeles.
Volviendo a la figura 5, las imagenes digitales de entrada i son divididas en bloques mediante el modulo -302-. Estos bloques son porciones de imagen y pueden ser de tamanos variables (por ejemplo, 4x4, 8x8, 16x16, 32x32, 64x64).
Mediante el modulo -306-, se selecciona un modo de codificacion para cada bloque de entrada. El modulo -306- se describe mas adelante.
Existen dos familias de modos de codificacion, codificacion de prediccion espacial o Intra-codificacion, y codificacion de prediccion temporal o Inter-codificacion. Los modos de codificacion posibles estan probados.
El modulo -303- implementa la Intra-prediccion, en la que el bloque determinado a codificar es predicho por medio de un predictor “Intra”, un bloque de pixeles construido a partir de la informacion ya codificada, por ejemplo, calculada a partir de los pixeles del entorno de dicho bloque a codificar. Una indicacion del predictor Intra seleccionado y la diferencia entre el bloque determinado y su predictor se codifica si se selecciona la Intra-codificacion mediante el modulo -306-.
La prediccion temporal se implementa mediante los modulos -304- y -305-. En primer lugar, se selecciona una imagen de referencia entre un conjunto de imagenes de referencia -316-, y se selecciona una porcion de la imagen de referencia, llamada tambien zona de referencia, que es la zona mas proxima al bloque determinado que se debe codificar, mediante el modulo -304- de estimacion del movimiento. Generalmente, el modulo de estimacion del movimiento -304- utiliza un algoritmo de ajuste de bloques (BMA, Block Matching Algorithm).
5
10
15
20
25
30
35
40
45
50
55
60
65
Con respecto a la “Inter” codificacion, son posibles dos tipos de prediccion. La Mono-prediccion (tipo P) consiste en predecir el bloque haciendo referencia a una zona de referencia de una imagen de referencia. La Bi-prediccion (tipo B) consiste en predecir el bloque haciendo referencia a dos zonas de referencia de una o dos imagenes de referencia. En el modulo -304- se realiza una estimacion del movimiento entre el bloque actual y las imagenes de referencia -316- con el fin de identificar, en una o varias de estas imagenes de referencia, un bloque de pixeles (tipo P), o varios (tipo B), para su utilizacion como predictores de este bloque actual. En el caso en que se utilicen varios predictores de bloque (tipo B), estos son fusionados para generar un solo bloque de prediccion. Las imagenes de referencia utilizadas son imagenes en la secuencia de video que han sido ya codificadas y despues reconstruidas (mediante descodificacion).
La diferencia entre la zona de referencia seleccionada y el bloque determinado, llamado tambien bloque residual, se calcula mediante el modulo de compensacion del movimiento -305-. La zona de referencia seleccionada se indica mediante un vector de movimiento.
La informacion relativa al vector de movimiento y al bloque residual se codifica si se selecciona Inter-prediccion mediante el modulo -306-. Para reducir mas la tasa de bits, el vector de movimiento es codificado por diferencia con respecto a un predictor del vector de movimiento. Se obtiene un conjunto de predictores del vector de movimiento, llamados tambien predictores de informacion del movimiento, a partir del campo de vectores de movimiento -318- mediante una prediccion del vector de movimiento y del modulo de codificacion -317-. La operacion del modulo -317- se describira a continuacion con detalle, con respecto a las figuras 8 y 9.
El modulo de seleccion del modo de codificacion -306- utiliza un criterio de coste de codificacion, tal como un criterio de distorsion de velocidad, para determinar cual es el mejor modo entre los modos de prediccion Intra e Inter. Se aplica una transformada -307- al bloque residual, los datos transformados obtenidos se cuantifican a continuacion mediante el modulo -308- y se codifican por entropia mediante el modulo -309-. La transformada se aplica a la Unidad de transformada (TU) mencionada anteriormente que esta incluida en un bloque. Una TU puede ser dividida ademas en varias TU mas pequenas utilizando una llamada descomposicion de Arbol cuaternario residual (RQT, Residual Arbol cuaternario), tal como se muestra en la figura 6. En HEVC, generalmente se utilizan 2 o 3 niveles de descomposiciones, y los tamanos autorizados de transformadas son de 32x32, 16x16, 8x8 y 4x4. La base de la transformada se deriva a partir de una transformada del coseno discreta, DCT (Discrete Cosine Transform).
Finalmente, el bloque residual codificado del bloque actual a codificar es introducido en la secuencia de bits -310-, junto con la informacion relativa al predictor utilizado. Para los bloques codificados en modo ‘SALTO’, solo se codifica una referencia al predictor en la secuencia de bits, sin ningun bloque residual.
Para calcular los predictores “Intra” o realizar una estimacion del movimiento para los predictores “Inter”, el codificador realiza una descodificacion de los bloques ya codificados por medio de un llamado bucle de
“descodificacion” -311-----315-. Este bucle de descodificacion hace posible la reconstruccion de los bloques e
imagenes a partir de residuos transformados cuantificados.
El residuo transformado cuantificado es descuantificado en el modulo -311- mediante la aplicacion de la cuantificacion inversa a la proporcionada por el modulo -308-, y es reconstruido en el modulo -312- mediante la aplicacion de la transformada inversa a la del modulo -307-.
Si el residuo procede de una codificacion “Intra”, entonces en el modulo -313- el predictor “Intra” utilizado se anade a este residuo con el fin de obtener un bloque reconstruido correspondiente al bloque original modificado por las perdidas resultantes de una transformacion con perdidas, en este caso, operaciones de cuantificacion.
Si el residuo, por otro lado, procede de una codificacion “Inter”, los bloques senalados por los vectores de movimiento actuales (estos bloques pertenecen a las imagenes de referencia -316- indicadas por los indices de imagen actuales) son fusionados y, anadidos a continuacion a este residuo descodificado en el modulo -314-. De esta manera, se obtiene el bloque original, modificado por las perdidas resultantes de las operaciones de cuantificacion.
Un filtro de bucle -315- final se aplica a la senal reconstruida con el fin de reducir los efectos creados por la fuerte cuantificacion de los residuos obtenidos, y para mejorar la calidad de la senal. El filtro de bucle comprende dos etapas, un filtro de “desbloqueo” y un filtrado lineal. El filtrado de desbloqueo suaviza los limites entre los bloques con el fin de atenuar visualmente estas altas frecuencias creadas por la codificacion. El filtrado lineal mejora ademas la senal utilizando coeficientes de filtro determinados adaptativamente en el codificador. El filtrado mediante el modulo -315- se aplica, de este modo, a una imagen cuando todos los bloques de pixeles de esta imagen han sido descodificados.
Las imagenes filtradas, tambien llamadas imagenes reconstruidas, se almacenan a continuacion como imagenes de referencia -316- con el fin de permitir la realizacion de predicciones “Inter” sucesivas durante la compresion de las imagenes siguientes de la secuencia de video actual.
5
10
15
20
25
30
35
40
45
50
55
60
65
En el contexto de HEVC, es posible utilizar varias imageries de referencia -316- para la estimacion y la compensacion del movimiento de la imagen actual. En otras palabras, la estimacion del movimiento se realiza sobre N imagenes. De este modo, los mejores predictores “Inter” del bloque actual, para la compensacion del movimiento, se seleccionan en algunas de las multiples imagenes de referencia. En consecuencia, dos bloques adyacentes pueden tener dos bloques de predictores que proceden de dos imagenes de referencia distintas. Esta es, en concreto, la razon por la que, en la secuencia de bits comprimida, se indica el indice de la imagen de referencia (ademas del vector de movimiento) utilizado para el bloque del predictor.
La utilizacion de multiples imagenes de referencia es tanto una herramienta para evitar los errores como una herramienta para mejorar la eficacia de la compresion. El grupo VCEG recomienda limitar el numero de imagenes de referencia a cuatro.
La figura 7 muestra un diagrama de bloques de un descodificador -40- segun una realizacion de la invencion. El descodificador se representa mediante modulos conectados, estando cada modulo adaptado para implementar, por ejemplo, en forma de instrucciones de programacion para ser ejecutadas por la CPU -1l11- del dispositivo -1000-, una etapa correspondiente de un procedimiento que implementa una realizacion de la invencion.
El descodificador -40- recibe una secuencia de bits -401- que comprende unidades de codificacion, estando cada unidad compuesta por una cabecera que contiene informacion sobre los parametros de codificacion y un cuerpo que contiene los datos de video codificados. Tal como se ha explicado anteriormente con respecto a la figura 5, los datos de video codificados se codifican por entropia, y los indices de los predictores del vector de movimiento se codifican, para un bloque determinado, en un numero de bits predeterminado. Los datos de video codificados recibidos son descodificados por entropia mediante un modulo -402-, descuantificados mediante un modulo -403- y a continuacion se aplica una transformada inversa mediante un modulo -404-.
En concreto, cuando los datos del video codificado recibidos corresponden a un bloque residual de un bloque actual a codificar, el descodificador descodifica tambien la informacion de la prediccion del movimiento a partir de la secuencia de bits, con el fin de encontrar la zona de referencia utilizada por el codificador.
Un modulo -410- aplica la descodificacion del vector de movimiento para cada bloque actual codificado mediante la prediccion de movimiento. De manera similar al modulo -317- del descodificador de la figura 5, el modulo de descodificacion -410- del vector de movimiento utiliza informacion (el campo de los vectores de movimiento -411-, que es similar al campo de los vectores de movimiento -318- de la figura 5) relativa a los vectores de movimiento del fotograma actual y de los fotogramas de referencia para generar un conjunto de predictores de vectores de movimiento. La operacion del modulo -410- se describira con mas detalle a continuacion, haciendo referencia a la figura 10. Si la secuencia de bits se recibe sin perdidas, el descodificador genera exactamente el mismo conjunto de predictores de vectores de movimiento que el codificador. Una vez que se ha obtenido el indice del predictor del vector de movimiento para el bloque actual, si no se han producido perdidas, el valor real del vector de movimiento asociado con el bloque actual puede ser descodificado y proporcionado a un modulo -406- que aplica compensacion del movimiento inverso. La zona de referencia indicada por el vector de movimiento descodificado es extraida de una imagen de referencia entre las imagenes de referencia almacenadas -408-, y proporcionada tambien al modulo -406- para que este pueda aplicar la compensacion del movimiento inversa.
En caso de que se haya aplicado Intra-prediccion, un modulo -405- aplica una Intra-prediccion inversa.
Como resultado de la descodificacion voy segun el modo Inter o Intra, se obtiene un bloque descodificado. Se aplica un filtro de desbloqueo mediante un modulo -407-, de manera similar al filtro de desbloqueo -315- aplicado en el codificador. Finalmente, el descodificador -40- proporciona una senal de video descodificada -409-.
La figura 8 es un diagrama esquematico para su utilizacion en la explicacion de la generacion del conjunto de predictores de vectores de movimiento o de candidatos de vector de movimiento en la implementacion de HEVC actual.
En el diseno de HEVC actual, los vectores de movimiento son codificados mediante codificacion predictiva, utilizando una serie de vectores de movimiento. Este procedimiento se denomina Prediccion avanzada del vector de movimiento (AMVP, Advanced Motion Vector Prediction) y ha sido adaptado para considerar el nuevo contexto de HEVC con una estructura de bloque grande. Este esquema se aplica a los modos de Salto, Inter y Fusion.
El procedimiento permite la seleccion del mejor predictor para un conjunto determinado, en el que el conjunto esta compuesto de vectores de movimiento espaciales y vectores de movimiento temporales. El numero optimo de predictores espaciales y temporales se esta evaluando todavia en el proceso de estandarizacion de HEVC. No obstante, en la fecha de presentacion de la presente solicitud, la implementacion actual incluye 2 predictores espaciales y un predictor temporal contiguo para los modos Salto e Inter, y 4 predictores espaciales y un predictor temporal para el modo Fusion. La presente invencion no esta limitada a ser utilizada con la implementacion actual de AMVP. La implementacion de AMVP puede cambiar con respecto a la actual que se describe a continuacion, pero
5
10
15
20
25
30
35
40
45
50
55
60
65
se considera que las realizaciones de la presente invencion que se van a describir a continuacion proporcionaran los mismos efectos y resultados ventajosos con otras implementaciones que pueden ser adaptadas.
En el conjunto de predictores representado en la figura 8, ambos vectores de movimiento espaciales se eligen entre los bloques de arriba, y los de la izquierda, incluyendo los bloques de las esquinas superiores y el bloque de la esquina izquierda.
El predictor izquierdo se selecciona entre los bloques I, H, G, F. El predictor del vector de movimiento se considera disponible si el vector existe, y si el indice del fotograma de referencia es el mismo que el indice del fotograma de referencia del bloque actual (lo que quiere decir que el vector de movimiento utilizado como predictor apunta al mismo fotograma de referencia que el vector de movimiento del bloque actual). La seleccion se realiza por medio de una busqueda de abajo (I) arriba (F). El primer predictor que cumple los criterios de disponibilidad anteriores se selecciona como predictor izquierdo (solo se anade un predictor izquierdo al conjunto de predictores). Si ningun predictor cumple los criterios, el predictor izquierdo se considera no disponible.
Un inter-bloque puede ser mono-predictivo (tipo P) o bi-predictivo (tipo B). En un fotograma-P, los inter-bloques son solo de tipo P. En un fotograma-B, los inter-bloques son de tipo P o B. En un inter-bloque de tipo P, se utiliza una lista L0 de fotogramas de referencia. Su vector de movimiento hace referencia a un fotograma de referencia de esta lista. Un indice de referencia se asocia, por lo tanto, con el vector de movimiento. En un inter-bloque de tipo P, se utilizan dos listas L0 y L1 de los fotogramas de referencia. Uno de sus dos vectores de movimiento hace referencia a un fotograma de referencia de la lista L0, y el otro de sus dos vectores de movimiento hace referencia a un fotograma de referencia de la lista L1. Un indice de referencia se asocia por lo tanto con cada uno de ambos vectores de movimiento.
La no existencia de un vector de movimiento significa que el bloque relacionado estaba Intra-cod ificado o que no existe ningun vector de movimiento en la lista con el que este asociado el vector de movimiento codificado. Por ejemplo, para un bloque en un fotograma B, si un bloque vecino tiene solo un vector de movimiento en la lista ‘L1 ’ y el vector de movimiento actual esta en ‘L0’, el vector de movimiento vecino se considera no existente para la prediccion del vector de movimiento actual.
El predictor superior se selecciona entre los bloques E, D, C, B, A, de nuevo como resultado de una busqueda, en este caso de derecha a izquierda. El primer vector de movimiento, de derecha a izquierda, que cumple los criterios de disponibilidad definidos anteriormente (si el predictor existe y tiene el mismo fotograma de referencia que el vector de movimiento actual) se selecciona como predictor superior. Si ningun predictor cumple los criterios, el predictor superior se considera no disponible.
El predictor del vector de movimiento temporal procede del fotograma de referencia mas cercano cuando los fotogramas no estan ordenados de manera diferente para la codificacion y para la visualizacion (estan codificados sucesivamente sin reordenacion). Esta configuracion corresponde a una configuracion de bajo retardo (no hay retardo entre el proceso de descodificacion y el proceso de visualizacion). En el caso de los fotogramas B, se consideran 2 vectores de movimiento para el bloque contiguo. Uno esta en la primera lista “L0” de imagenes de referencia y otro en la segunda lista “L1” de imagenes de referencia. Si ambos vectores de movimiento existen, se selecciona el movimiento que tiene la distancia temporal mas corta. Si ambos predictores tienen la misma distancia temporal, se selecciona el movimiento forma de “L0”. El vector de movimiento contiguo seleccionado, a continuacion, se escala, si es necesario, segun la distancia temporal entre la imagen de referencia y la imagen que contiene el fotograma que se va a codificar. Si no existe ningun predictor contiguo, el predictor se considera no disponible.
Para la codificacion de fotogramas B jerarquicos, que implica la reordenacion de los fotogramas y, por lo tanto, mas retardo de descodificacion, se pueden considerar 2 vectores de movimiento contiguos. Ambos proceden del fotograma de referencia futuro. Se selecciona el vector de movimiento que atraviesa el fotograma actual. Si ambos predictores atraviesan el fotograma actual, se selecciona el bloque que contiene el vector de movimiento que tiene la distancia temporal mas corta. Si ambos predictores tienen la misma distancia temporal, entonces se selecciona el vector de movimiento de la primera lista “L0”. A continuacion, el vector de movimiento contiguo seleccionado como predictor del vector de movimiento temporal se dispone si es necesario, segun la distancia temporal entre la imagen de referencia y la imagen que contiene el bloque a descodificar. Si no existe ningun predictor contiguo, el predictor se considera no disponible.
Para los casos tanto de bajo retardo como jerarquicos, cuando el bloque contiguo esta dividido en una serie de particiones (potencialmente, el bloque contiguo contiene una serie de vectores de movimiento), el vector de movimiento seleccionado procede de la particion central, tal como se ha mencionado en la introduccion a la presente memoria, vease Jung, G. Clare, (Orange Labs), “Temporal MV predictor modification for MV-Comp, Skip, Direct and Merge schemes” (“Modificacion de predictores temporales de MV para esquemas de MV-Comp, salto, direccion y fusion”), JCTVC-S164, Daegu, KR, 20-28 de enero de 2011, que propone utilizar un predictor temporal centrado, y el documento WO 2011/001077 A.
5
10
15
20
25
30
35
40
45
50
Como resultado de este procedimiento de generacion de predictores de vectores de movimiento, el conjunto de predictores generado puede contener 0, 1, 2 o 3 predictores. Si no se ha podido incluir ningun predictor en el conjunto, el vector de movimiento no se predice. Las componentes tanto vertical como horizontal se codifican sin prediccion. (Esto corresponde a una prediccion mediante un predictor igual al valor cero). En la implementacion de HEVC actual, el indice del predictor es igual a 0.
El modo Fusion es una Inter-codificacion concreta, similar al modo Salto habitual bien conocido por los expertos en la materia. La principal diferencia en comparacion con el modo Salto habitual es que el modo Fusion propaga el valor del indice del fotograma de referencia, la direccion (Bi-direccional o uni-direccional) y la lista (con la direccion uni-direccional) de los predictores de vectores de movimiento al bloque predicho. El modo Fusion utiliza un predictor del vector de movimiento y su indice del fotograma de referencia, a menos que el predictor sea un predictor temporal en el que el fotograma de referencia considerado es siempre el fotograma de referencia inmediatamente anterior, llamado tambien Ref0 (y siempre prediccion bi para fotogramas B). De esta manera, los predictores de bloques (los bloques copiados) proceden de los fotogramas de referencia senalados por los predictores del vector de movimiento.
La ordenacion de candidatos en el conjunto es importante para reducir la sobrecarga de senalizar el mejor predictor del movimiento en el conjunto de predictores. La ordenacion del conjunto se adapta en funcion del modo de prediccion actual para situar el predictor mas probable del movimiento en la primera posicion, dado que se produce una minima sobrecarga si el primer candidato se elige como mejor predictor. En la implementacion actual de HEVC, el predictor temporal es la primera posicion.
La sobrecarga de senalizar el indice del mejor predictor se puede reducir mas minimizando el numero de candidatos en el conjunto. Los vectores de movimiento duplicados simplemente se eliminan del conjunto.
Para el caso concreto del modo Fusion, el proceso de supresion tiene en cuenta los valores del vector de movimiento y su fotograma de referencia. Segun esto, para determinar si dos predictores son predictores duplicados, las dos componentes del vector de movimiento y su indice de referencia se comparan para ambos predictores y, solo si estos tres valores son iguales, se elimina un predictor del conjunto. Para un fotograma B, este criterio de igualdad se extiende a la direccion y las listas. Asi que dos predictores se consideran predictores duplicados si ambos utilizan la misma direccion, las mismas listas (L0, L1 o L0 y L1), los indices del fotograma de referencia y tienen los mismos valores de los vectores de movimiento (MV_L0 y MV_L1 para prediccion bi).
En AMVP, la senalizacion del indice depende del resultado del proceso de supresion de predictores del vector de movimiento descrito anteriormente. De hecho, el numero de bits asignados a la senalizacion depende del numero de vectores de movimiento que quedan tras la supresion. Por ejemplo, si al final del proceso de supresion solo queda un vector de movimiento, no es necesario ninguna sobrecarga para senalizar el indice del predictores del vector de movimiento, dado que el indice puede ser obtenido facilmente por el descodificador. La Tabla 1 que sigue muestra la palabra de codigo para cada codificacion de indice segun el numero de predictores tras el proceso de supresion.
Tabla 1
- Palabra de codigo segun el numero N de predictores en el conjunto
- Indice
- N=1 N=2 N=3 N=4 N=5
- 0
- (inferido)
- 0
- 0
- 0
- 0
- 1
- 1 10 10 10
- 2
- 11 110 110
- 3
- 111 1110
- 4
- 1111
La figura 9 es un diagrama de flujo para su utilizacion en la explicacion del esquema de operacion de la AMVP en el lado del codificador. Las operaciones de la figura 9 se llevan a cabo mediante el modulo -317- de la figura 5, excepto donde se indique otra cosa, y se puede considerar que este modulo -317- comprende los modulos -603-, -605-, -607-, -610- y -615- de la figura 9. El campo de los vectores de movimiento -601- en la figura 9 corresponde al campo de los vectores de movimiento -318- de la figura 5. El modulo de codificador entropico -612- en la figura 9 corresponde al modulo de codificador entropico -309- en la figura 5. Todas las operaciones en la figura 9 pueden ser implementadas en software y ejecutadas por la unidad central de proceso -1111- del dispositivo -1000-.
Un modulo de generacion de predictores del vector de movimiento -603- recibe un indice del fotograma de referencia -613- del vector de movimiento actual a codificar, y recibe tambien el campo de los vectores de movimiento -601-. El modulo -603- genera un conjunto de predictores del vector de movimiento -604- tal como se ha descrito anteriormente haciendo referencia a la figura 8, teniendo en cuenta el indice del fotograma de referencia -613-. A continuacion, el proceso de supresion es aplicado por un modulo -605-, tal como se ha descrito tambien
5
10
15
20
25
30
35
40
45
50
55
60
65
anteriormente haciendo referenda a la figura 8. El modulo -605- produce un conjunto reducido de predictores del vector de movimiento -606-. Se entrega asimismo el numero de predictores del vector de movimiento -616- en el conjunto reducido -606-. Un modulo -607- recibe el vector de movimiento a codificar -602- y aplica una seleccion de distorsion de velocidad (RD, Rate Distortion) del mejor predictor del conjunto reducido de predictores de vectores de movimiento -606-. Si se selecciona un mejor predictor, el modulo-607- produce un indice de predictor del vector de movimiento -608- y el predictor del vector de movimiento seleccionado -609-. A continuacion, un modulo -610- forma la diferencia entre el vector de movimiento a codificar -602- y el predictor del vector de movimiento seleccionado -609-. Esta diferencia es un vector de movimiento residual -611-. Este vector de movimiento residual es a continuacion codificado entropicamente en un modulo -612-. Un modulo -614- convierte el indice del predictor del vector de movimiento -608- en una palabra de codigo -615- segun el numero de predictores -616- en el conjunto reducido de predictores del vector de movimiento -606-, tal como se ha descrito anteriormente haciendo referencia a la Tabla 1. Tal como se ha descrito anteriormente, si este conjunto contiene solo un predictor, no se transmite ningun indice al lado del descodificador y no se genera ninguna palabra de codigo. Si el conjunto contiene uno o mas predictores, la palabra de codigo se genera en el modulo -614- y, a continuacion, se codifica por entropia en el modulo -612-.
La figura 10 es un diagrama de flujo para su utilizacion explicando el funcionamiento del esquema de la AMVP en el lado del descodificador. Las operaciones de la figura 10 son realizadas mediante el modulo -410- en la figura 7, excepto donde se indique otra cosa, y se puede considerar que este modulo -410- comprende los modulos -702-, -704-, -711- y -715- en la figura 10. Un campo de vectores de movimiento -701- en la figura 10 corresponde al campo de vectores de movimiento -411- en la figura 7. Un modulo descodificador entropico -706- en la figura 10 corresponde al modulo descodificador entropico -402- en la figura 7. Todas las operaciones en la figura 10 pueden ser implementadas en software y ejecutadas por la unidad central de proceso -1111- del dispositivo -1000.
Un modulo-702- recibe el campo de vectores de movimiento -701- del fotograma actual y de los fotogramas descodificados anteriormente. El modulo -702- recibe tambien un indice del fotograma de referencia -713- del vector de movimiento actual a descodificar. El modulo -702- genera un conjunto de predictores de movimiento -703- en base al campo de vectores de movimiento -701- y al indice del fotograma de referencia -713-. Este proceso es el mismo que el descrito en relacion con el modulo -603- en el lado del codificador. A continuacion, un modulo -704- aplica un proceso de supresion. Este proceso es el mismo que el descrito en relacion con el modulo -605- en el lado del codificador. El modulo -704- produce un conjunto reducido de predictores de vectores de movimiento -708-. Se entrega asimismo el numero de predictores del vector de movimiento -716- en el conjunto reducido -708-.
El modulo de descodificador entropico -706- extrae un vector de movimiento residual -707- de la secuencia de bits -705- y lo descodifica. El numero de predictores -716- en el conjunto reducido -708- es utilizado a continuacion por el modulo -706- para extraer (si es necesario) la palabra de codigo del predictor del vector de movimiento -714-. Esta palabra de codigo (si existe) es transformada por el modulo -715- en un valor de indice de predictor -709- segun el numero de los predictores -716- en el conjunto reducido, utilizando la Tabla 1 anterior para la conversion. El predictor del vector de movimiento -710- se extrae a continuacion del conjunto reducido -708- segun el valor del indice del predictor -709-. Un modulo -711- anade el predictor del vector de movimiento al residuo del movimiento -707- con el fin de producir el vector de movimiento descodificado -712-.
A partir de lo anterior, es evidente que para cada fotograma que se utiliza como fotograma de referencia para la obtencion del predictor del vector de movimiento contiguo, es necesario almacenar junto al codificador y el descodificador sus vectores de movimiento correspondientes. Esto conduce a que el tamano de la memoria de vectores de movimiento sea importante, considerando en primer lugar la granularidad del mapeo del movimiento (en el diseno de HEVC actual, el tamano minimo de bloque en el modo Inter es 4x4) y, en segundo lugar, que existen dos vectores por bloque de movimiento para el SEGMENTO_B. Se estima que para imagenes de 4Kx2K de resolucion, y utilizando una granularidad de un conjunto de vectores de movimiento por bloque de 4x4, son necesarios 26 Mbits por fotograma. Esta memoria de vectores de movimiento tiene que ser una memoria rapida, y forma parte habitualmente de la RAM, por ejemplo, la RAM -1112- en la figura 4. Esto es costoso, sobre todo para dispositivos portatiles.
A continuacion, se describen varios ejemplos que no realizan de manera directa la presente invencion. No obstante, una descripcion de los ejemplos puede ser de ayuda para la compresion de las realizaciones de la presente invencion, descritas asimismo a continuacion.
Primer ejemplo
A continuacion, se describira un primer ejemplo de la presente invencion.
En el primer ejemplo, tal como en las propuestas JCTVC-C257 y JCTVC-D072 mencionadas en la introduccion y mostradas en la figura 1, la posicion de un bloque se utiliza para la compactacion por bloques de un conjunto de NxN vectores de movimiento. El vector de movimiento del bloque correspondiente a esta posicion de un bloque es almacenado como vector de movimiento representativo para todo el conjunto de NxN. Estas propuestas de la tecnica anterior utilizan exclusivamente la posicion del bloque superior izquierdo, tal como se muestra en la figura 1.
5
10
15
20
25
30
35
40
45
50
55
60
65
No obstante, esta manera de compactacion no tiene en cuenta que el predictor del vector de movimiento contiguo se utiliza en un esquema competitivo con otros predictores espaciales. Como resultado, aunque estas propuestas de la tecnica anterior ofrecen una importante reduccion en las necesidades de la memoria de vectores de movimiento (por ejemplo, un factor de reduccion de 16 en el ejemplo de la figura 1), implican una penalizacion en terminos de eficiencia de la codificacion. Por ejemplo, se estima que la utilizacion de una reduccion de 16 veces en las necesidades de memoria tiene como resultado una perdida de 0,5% en la eficiencia de la codificacion en TMuC v0.9. Esto ocurre porque a menudo el vector de movimiento en la posicion del bloque superior izquierdo del bloque contiguo es similar a los predictores espaciales de los bloques vecinos del bloque actual a codificar. Esto significa que el predictor del vector de movimiento contiguo no aporta suficiente diversidad al conjunto de predictores en conjunto.
Utilizando una posicion de bloque diferente dentro del bloque contiguo, o incluso utilizando una posicion de bloque en otro bloque vecino del bloque contiguo, se puede obtener un mayor grado de diversidad. El efecto de esto es que, a pesar de seguir consiguiendo la misma reduccion en las necesidades de memoria del vector de movimiento que las propuestas de la tecnica anterior mencionadas anteriormente, el presente ejemplo no incurre en ninguna penalizacion, o en ninguna importante, en la eficiencia de la codificacion en comparacion con un sistema en el que se almacenan todos los vectores de movimiento y no se utiliza ninguna compactacion por bloques.
Las realizaciones de la presente invencion reconocen que la diversidad del conjunto de predictores que incluye una mezcla de predictores espaciales y temporales depende de las posiciones relativas de los bloques de los que proceden los predictores. Cuanto mayor sea la distancia de un predictor a otro, mayor es la probabilidad de que los predictores sean diferentes. De este modo, puede ser preferible seleccionar como posicion del bloque en el bloque contiguo una posicion de bloque mas alejada de las posiciones de bloque de los predictores espaciales. Por supuesto, la distancia no debe ser tan grande que el predictor temporal ya no sea representativo de los vectores de movimiento en el bloque contiguo. Despues de todo, el bloque contiguo se selecciona como fuente del predictor temporal precisamente porque es contiguo al bloque actual. Segun esto, lo que se necesita es elegir una posicion de bloque para el predictor temporal que permita diversidad controlada entre ese predictor y los predictores espaciales.
Sera evidente que en AMVP los predictores espaciales se seleccionan entre ciertas posiciones (las posiciones A I mostradas en la figura 8) segun los criterios de disponibilidad. Esto significa que, dependiendo de la disponibilidad, se pueden seleccionar 0, 1 o 2 predictores espaciales. La posicion del bloque a elegir para la compactacion por bloques del bloque contiguo no puede tener en cuenta la seleccion o selecciones de predictores espaciales reales, dado que se lleva a cabo antes que la seleccion o selecciones de predictores espaciales. Para posibilitar tener en cuenta la seleccion o selecciones del predictores espaciales cuando se elige la posicion de bloque del bloque contiguo seria necesario almacenar los vectores de movimiento en todas las posiciones de bloque en el bloque contiguo, lo que es incompatible con la reduccion de las necesidades de la memoria de vectores de movimiento.
A este respecto, no obstante, cuando el objetivo no es reducir las necesidades de memoria sino mejorar la eficiencia en la codificacion, es posible tener en cuenta la seleccion o selecciones de predictores espaciales cuando se elige la posicion de bloque del bloque contiguo, tal como se describira en los ejemplos siguientes.
En la implementacion actual del modelo de prueba de HEVC, para un bloque de Salto o Inter actual, se utilizan dos predictores espaciales, tal como se ha descrito anteriormente haciendo referencia a la figura 8, mientras que se utilizan cuatro predictores espaciales para el modo de Fusion. No obstante, el modo de Fusion se selecciona con menor frecuencia que los modos Salto e Inter. Segun esto, en el presente ejemplo se supone que se tienen 2 predictores espaciales, por ejemplo, el predictor izquierdo y los predictores superiores, tal como se muestra en la figura 8. El presente ejemplo se puede extender facilmente cuando se utilizan mas o menos predictores en el conjunto de predictores espaciales. Ademas, la descripcion de este ejemplo se refiere a la compresion de la memoria de vectores de movimiento sobre la base de una compactacion por bloques de 4x4. Esto se puede extender facilmente a todos los demas tamanos utilizados para la compactacion por bloques.
La figura 11 muestra las etapas de un procedimiento de determinacion de la posicion de un bloque 4x4 cuyo vector de movimiento se seleccionara como el unico vector de movimiento en el proceso de compresion de la memoria de vectores de movimiento de los primeros ejemplos. Tal como se ha explicado anteriormente, esto se puede considerar un proceso de compactacion por bloques, dado que tiene como resultado que se selecciona un vector de movimiento como representacion del bloque como conjunto. Los vectores de movimiento no seleccionados del bloque (por ejemplo 15 vectores de movimiento en el caso presente), que tienen posiciones de bloque distintas de la posicion de bloque determinada, no necesitan ser almacenados, lo que tiene como resultado una significativa compresion de la memoria de vectores de movimiento (por ejemplo, en un factor de 16 en el presente caso).
A este respecto, ademas de los propios vectores de movimiento (que tienen cada uno componentes vertical y horizontal y un indice de fotograma de referencia), la seleccion de la posicion del bloque se podria aplicar a todos los demas datos necesarios para el proceso de derivacion del predictor contiguo (la implementacion actual de la compresion de la memoria de MV no tiene en cuenta los otros datos). Estos datos son: el modo (Inter/Intra), el indice del fotograma de referencia del vector de movimiento, la lista ‘L0’ ‘L1’ de imagenes de referencia y la direccion Bi o uni-direccional.
5
10
15
20
25
30
35
40
45
50
55
60
En una primera etapa S1001, se recibe una lista de posiciones potenciales de los predictores espaciales. Estas posiciones son posiciones relativas con respecto al bloque actual. Con el proposito de compactacion por bloques, se puede considerar que el tamano (en pixeles) del bloque actual es 16x16 cuando se aplica la compactacion del bloque de 4x4 de vectores de movimiento tal como se representa en la figura 1. De este modo, las posiciones potenciales A, B, C, D, E para el predictor superior y las posiciones potenciales F, G, H, I para el predictor izquierdo de la figura 8 se reciben mediante el algoritmo. Por sencillez, se puede considerar que los bloques vecinos tienen un tamano de CU minimo igual a 4x4 (en pixeles) tal como se representa en la figura 12. En ese caso, todos los bloques de predictores espaciales tienen el mismo tamano, que es el tamano de los bloques que se compactaran en la compresion de la memoria MV. Tal como se representa en la figura 12, las posiciones potenciales del predictor superior son TP1-TP6, y las posiciones potenciales del predictor izquierdo son LP1-LP5. A continuacion, en la etapa S1002, el algoritmo determina la posicion media para cada predictor espacial. En el presente ejemplo simplificado de la figura 12, la posicion media para el predictor izquierdo es la posicion del bloque LP3, y la posicion media para el predictor superior es la frontera entre los bloques TP3 y TP4. Dado que la posicion media para el predictor superior es la frontera entre los bloques TP3 y TP4, las posiciones de ambos bloques TP3 y TP4 se consideran en el proceso siguiente, mientras que para el predictor izquierdo solo se considera la posicion del bloque LP3 en el proceso siguiente. A continuacion, se genera una matriz de distancias para cada predictor en la etapa S1003. Esta matriz tiene una celda para cada posicion posible de bloque del bloque que se compacta y contiene en cada celda la distancia minima entre la posicion media del predictor correspondiente (el predictor superior o el predictor izquierdo, segun sea el caso) y la posicion de bloque posible de la celda correspondiente. Las posiciones de bloque posibles se numeran de 1 a 16 en la figura 12, segun una representacion en zigzag adoptada para la memoria de vectores de movimiento. La construccion de esta matriz se explica a continuacion haciendo referencia a las figuras 13A a 13C. A continuacion, en la etapa S1004 las matrices de distancia de ambos predictores se suman celda a celda con el fin de obtener una unica matriz de distancias global. En la etapa S1005, se identifica el valor maximo en esta matriz de distancias global. La posicion correspondiente a este valor maximo es la posicion utilizada para la compactacion por bloques de la compresion de la memoria de MV (1006).
Para generar la matriz de distancias minima entre la posicion media y cada posicion de bloque posible numerada de 1 a 16 en la figura 12, se puede considerar el numero de bloques a ser atravesados para llegar a la posicion de bloque cuando se empieza desde la posicion media para el predictor correspondiente. Por ejemplo, con esta medida, tal como se representa en la figura 13A, que muestra la matriz de distancias para el predictor izquierdo, la distancia minima entre la posicion media correspondiente LP3 y la posicion de bloque numerada 7 en la figura 12 es 4. Esto es consecuencia de que, para alcanzar esta posicion, se necesita atravesar las posiciones de bloque numeradas 9, 3, 4 y 7, que son 4 bloques. En esta medida, no se ha considerado el caso diagonal para calcular la distancia, pero dicho caso se podria utilizar si se desea. Ademas, se podrian utilizar otras medidas de distancia en el presente algoritmo.
Las figuras 13A y 13B muestran respectivamente las matrices de distancias calculadas con esta medida para los predictores izquierdo y superior. Ademas, la figura 13C muestra la matriz de distancias global formada sumando celda a celda estas dos matrices de las figuras 13A y 13B.
Se puede observar que el valor maximo es 10 para la posicion de bloque numerada 16 (vease la figura 12), que es la posicion de bloque inferior derecha. Esta es la posicion de bloque identificada mediante el algoritmo en el caso de que se utilicen los predictores superior e izquierdo.
En el primer ejemplo, se ejecuta el mismo algoritmo tambien mediante el descodificador, y el descodificador selecciona la misma posicion de bloque que el codificador y evita almacenar los vectores de movimiento de las posiciones de bloque no seleccionadas. De este modo, se consigue una reduccion similar en las necesidades de la memoria de vectores de movimiento tambien en el descodificador.
Segundo ejemplo
En el primer ejemplo, no se tiene en cuenta la probabilidad de seleccion de los predictores espaciales en las diferentes posiciones TP1-TP6 y LP1-LP5. No obstante, en el proceso de AMVP, la busqueda del predictor superior se inicia a partir de la posicion mas a la derecha y se desplaza hasta la posicion mas a la izquierda, tal como ya se ha descrito haciendo referencia a la figura 8. De este modo, se espera que el predictor en la posicion TP6 sea seleccionado con mayor frecuencia que el predictor en la posicion TP5, y asi sucesivamente, de derecha a izquierda en la figura 12. Ocurre lo mismo para el predictor izquierdo, para el que la busqueda se inicia en la posicion inferior y se desplaza hacia arriba hasta la posicion superior. Teniendo en cuenta las frecuencias de seleccion relativas, puede ser preferible ajustar la posicion media para el predictor superior hacia la derecha y la posicion media para el predictor inferior hacia abajo. La posicion media para cada predictor se podria calcular como una media ponderada de las posiciones potenciales, reflejando los pesos las frecuencias de seleccion relativas.
5
10
15
20
25
30
35
40
45
50
55
Tercer ejemplo
En los ejemplos primero y segundo descritos anteriormente, el codificador utiliza dos predictores espaciales (los predictores superior e izquierdo). En el tercer ejemplo, el codificador utiliza solo un predictor espacial en el conjunto de predictores espaciales. Por ejemplo, si solo se utiliza el predictor izquierdo, se utiliza la matriz de distancias del predictor izquierdo proporcionada en la figura 13A para encontrar la mejor posicion. En ese caso, la posicion seleccionada es la posicion de bloque numero 6, el bloque superior derecho. Si solo se utiliza el predictor superior, dos posiciones de bloque tienen al valor maximo (posicion de bloque numero 11 y posicion de bloque numero 16). En ese caso, si se utiliza AMVP, tal como se ha descrito haciendo referencia a la figura 8, teoricamente los predictores del lado derecho se seleccionan con mayor frecuencia que los predictores del lado izquierdo (tal como se ha explicado, los predictores se seleccionan de E a A en el proceso de derivacion de HEVC). De este modo, el algoritmo puede considerar la utilizacion del bloque numerado 11, dado que seria el bloque mas lejano.
Cuarto ejemplo
En los ejemplos primero, segundo y tercero descritos anteriormente, se supone que todos los bloques a codificar pueden tener dos predictores espaciales (los predictores superior e izquierdo). Segun esto, no se realiza ninguna distincion entre bloques para la compactacion por bloques.
En el cuarto ejemplo, al menos un bloque se trata de manera diferente de otro bloque para la compactacion por bloques.
Por ejemplo, el codificador y el descodificador pueden conocer alguna zona de la imagen en la que existe solamente un predictor espacial, o ninguno. En concreto, el codificador y el descodificador conocen la frontera del fotograma (la frontera del fotograma tiene la misma posicion para todos los fotogramas). De este modo, el algoritmo puede tener en cuenta este conocimiento especifico. Por ejemplo, para el bloque superior izquierdo del fotograma, no existen predictores disponibles. En ese caso, el algoritmo puede encontrar que la mejor posicion de bloque para la compactacion por bloques es el centro del bloque. Para bloques a lo largo de la frontera superior, podria estar disponible solamente el predictor izquierdo, y la posicion de bloque seleccionada por el algoritmo es la posicion de bloque superior derecha numerada 6 (tal como en el tercer ejemplo). Para bloques a lo largo de la frontera izquierda, solo estan disponibles algunos predictores superiores. El algoritmo puede encontrar que la posicion es el numero de bloque 11, es decir, la posicion inferior izquierda. De hecho, la posicion TP1 en la figura 12 nunca esta disponible para la frontera izquierda, de modo que la media de las posiciones es TP4 (no la frontera entre TP3 y TP4) y, en consecuencia, el algoritmo encuentra el numero de bloque 11 como la posicion mas lejana.
Este ejemplo se puede extender para la frontera del segmento si todos los fotogramas en la secuencia de bits tienen exactamente la misma fragmentacion (es decir, si cada segmento tiene exactamente la misma posicion para todos los fotogramas).
Quinto ejemplo
En los ejemplos anteriores, el descodificador lleva a cabo el mismo proceso que el codificador para determinar la posicion de bloque para la compactacion por bloques.
En el quinto ejemplo, solo el codificador utiliza el algoritmo, y la posicion del bloque utilizado para la compactacion por bloques se transmite al descodificador en la secuencia de bits (Secuencia/imagen/cabecera de segmento).
Sexto ejemplo
En los ejemplos anteriores, el codificador (y, excepto para el quinto ejemplo, el descodificador) ejecuta el algoritmo de la figura 11 para determinar la posicion del bloque.
En el sexto ejemplo, el codificador y el descodificador hacen referencia a una tabla que contiene la posicion del bloque segun la utilizacion o no de los predictores espaciales. Un ejemplo de tal tabla se proporciona en la Tabla 2 siguiente. Esta tabla se determina por adelantado utilizando el mismo algoritmo que el de la figura 11. Esta solucion es menos compleja que aplicar el algoritmo todo el tiempo. La siguiente tabla muestra esta tabla concreta para el ejemplo descrito anteriormente. Las posiciones hacen referencia a la figura 12.
- Predictores espaciales disponibles
- Posiciones de bloque para la compactacion con N=4
- X
- 4 (centro)
- Izquierdo
- 6 (Superior derecha)
- Superior
- 11 (Inferior izquierda)
- Izquierdo y superior
- 16 (inferior derecho)
5
10
15
20
25
30
35
40
45
50
55
60
65
Septimo ejemplo
Este ejemplo extiende aun mas la idea del sexto ejemplo. La posicion de bloque inferior derecha se utiliza siempre para la compactacion por bloques cualquiera que sea el bloque espacial utilizado para AMVP o modo de fusion. Esto ahorra carga de proceso y no hay necesidad de senalizar al descodificador que posicion de predictor ha sido determinada.
Octavo ejemplo
Los ejemplos anteriores suponen que la compactacion por bloques se aplica de manera uniforme a todos los bloques. No obstante, en HEVC, se permiten bloques de diferentes tamanos. Las posiciones de bloque para un tamano de bloque pueden no ser optimas para otro tamano de bloque. Por ejemplo, se ha encontrado que las posiciones de bloque mostradas en la Tabla 2 funcionan bien para un bloque pequeno, por ejemplo, un bloque de 4x4, pero en el caso de un bloque grande puede ser mejor utilizar otras posiciones de bloque.
En el octavo ejemplo, es posible tener en cuenta el tamano del bloque cuando se determina la posicion del bloque. Esto se puede conseguir teniendo una matriz de distancias similar a la de la figura 13C para cada tamano de bloque diferente.
Noveno ejemplo
Es posible simplificar el octavo ejemplo simplemente cambiando de una posicion de bloque predeterminada para un primer tamano de bloque a otra posicion de bloque predeterminada para un segundo tamano de bloque. Por ejemplo, cuando el tamano del bloque es pequeno, por ejemplo, menor o igual que 16x16 (pixeles), se podria seleccionar siempre la posicion de bloque inferior derecha, mientras que cuando el tamano del bloque es grande, por ejemplo, un 32x32 (pixeles), o mayor, se podria seleccionar siempre la posicion de bloque central, vease la posicion de bloque sombreada en la figura 2.
Los resultados de la simulacion para este ejemplo son prometedores. Se consiguio un ahorro en tasa de bits (mejora en la eficiencia de la codificacion), en comparacion con utilizar la posicion de bloque central en todas las ocasiones, tal como en la propuesta anterior JCT-VC D164 mencionada en la introduccion.
Si se desea, se puede disponer una tabla del tipo mostrado en la Tabla 2 para cada tamano de bloque, que contenga las posiciones de bloque adecuadas para cada permutacion de los predictores disponibles.
Se considera que para bloques mayores la posicion de bloque central funciona mejor que la posicion inferior derecha, porque la posicion inferior derecha en el caso de un bloque grande no puede ser tan representativa del bloque como conjunto como el bloque central. Este no es el caso con bloques pequenos, para los que la posicion inferior derecha sigue siendo representativa del bloque como conjunto debido a las menores distancias implicadas, pero sigue introduciendo una diversidad controlada con respecto a los predictores espaciales.
Decimo ejemplo
En el decimo ejemplo, la posicion o posiciones de los bloques utilizadas en JCT-VC D164 se utilizan para bloques grandes, y la posicion de bloque inferior derecha se utiliza para bloques pequenos.
Undecimo ejemplo
En los ejemplos anteriores, la posicion de bloque seleccionada para la compactacion por bloques ha sido una de las posiciones de bloque en el bloque contiguo. No obstante, no es necesario limitar la posicion de bloque seleccionada a una en el bloque contiguo. Por ejemplo, en lugar de la posicion inferior derecha del bloque contiguo seria posible utilizar una posicion de bloque en la proximidad de la posicion inferior derecha de otro bloque en el mismo fotograma de referencia vecino del bloque contiguo. Como ejemplos, la posicion del bloque podria ser la posicion inferior izquierda en el bloque inmediatamente a la derecha del bloque contiguo, o la posicion superior derecha en el bloque inmediatamente por debajo del bloque contiguo, o la posicion superior izquierda en el bloque diagonalmente por debajo y a la derecha del bloque contiguo.
Duodecimo ejemplo
En el documento JCT-VC D125, descrito en la introduccion, se utilizan 4 predictores temporales, uno (T) del bloque contiguo y otros tres (E, H e I) exteriores al bloque contiguo en las esquinas superior izquierda, inferior izquierda e inferior derecha del bloque contiguo. En lugar de utilizar T como uno de los predictores temporales seria posible utilizar la posicion de bloque inferior derecha en el bloque contiguo. Esto probablemente no proporciona un buen compromiso en terminos de diversidad, pero en esto el centro seria lo mejor. Pero en terminos de codificacion del indice del predictor esto tiene una ventaja, porque la inferior derecha puede con mas frecuencia ser igual al predictor
5
10
15
20
25
30
35
40
45
H (a menudo se elimina un predictor). De hecho, en la contribucion del documento JCT-VC D125 se utilizan demasiados predictores, de modo que D125 aumenta el coeficiente dedicado al fndice del predictor.
Realizacion
En los ejemplos anteriores la posicion del bloque se ha seleccionado con el proposito de reducir las necesidades de la memoria de vectores de movimiento.
En la presente realizacion, la posicion del bloque se selecciona con el proposito de mejorar la eficiencia en la codificacion. Esto es posible dado que, si se elige el predictor temporal del fotograma de referencia, por ejemplo, de una posicion de bloque adecuada en el bloque contiguo para conseguir una diversidad controlada con los predictores espaciales, entonces el predictor temporal tiende a ser un buen competidor para el predictor espacial, cuando se realiza la seleccion de distorsion de coeficiente del predictor. Si el predictor temporal es un predictor mejor que los predictores espaciales, como es a menudo el caso en la practica, entonces, mejorar este predictor (en el sentido de hacerlo mas proximo al vector de movimiento requerido para el bloque a codificar, y por ello minimizar el residuo) es bueno para la eficiencia de la codificacion.
En principio, se pueden utilizar todos los ejemplos anteriores, del primero al duodecimo, para seleccionar la posicion del bloque con el proposito de mejorar la eficiencia en la codificacion. Lo que se reivindica en la presente patente es utilizar (tal como se ha descrito en relacion con el ejemplo undecimo) la posicion de un bloque en la proximidad de dicha posicion inferior derecha respecto de otro bloque en el mismo fotograma de referencia proximo al bloque contiguo. Preferentemente, la posicion del bloque es la posicion superior izquierda en el bloque diagonalmente por debajo y a la derecha del bloque contiguo.
En la presente realizacion, aun pueden ser almacenados todos los vectores de movimiento, es decir, no es necesario emplear reduccion de la memoria de vectores de movimiento. No obstante, tal reduccion es deseable en muchos casos.
Decimotercer ejemplo
Si se almacenan los vectores de movimiento en todas las posiciones de bloque, es posible tener en cuenta el resultado real de la seleccion de los predictores espaciales cuando se selecciona la mejor posicion de bloque. Por ejemplo, en la figura 12, si solo esta disponible el predictor superior y se selecciona la posicion TP6, se podrfa seleccionar la posicion de bloque numerada 11. Si, por otro lado, solo esta disponible el predictor superior y se selecciona la posicion TP1, entonces se podrfa seleccionar la posicion de bloque numerada 16. Otras posiciones de bloque serfan mejores si estuviese disponible una combinacion de los predictores superior e izquierdo, de nuevo en funcion de las posiciones de los predictores superior e izquierdo seleccionados. En general para cada posible resultado de la seleccion de predictor espacial se puede determinar una mejor posicion de bloque. Las mejores posiciones de bloque se podrfan almacenar en una tabla de consulta que tiene una entrada para cada resultado diferente.
Los ejemplos y realizaciones descritos anteriormente se basan en particiones de bloques de imagenes de entrada, pero, de manera mas general, se puede considerar cualquier tipo de porciones de imagen para codificar o descodificar, en concreto porciones rectangulares, o de manera mas general porciones geometricas.
Claims (7)
- 510152025303540REIVINDICACIONES1. Procedimiento de generacion de un conjunto de predictores de vectores de movimiento para un bloque a descodificar que forma parte de un fotograma de video actual que debe ser descodificado, en el que el numero de predictores de vectores de movimiento temporales en el conjunto es uno, y el numero de predictores de vectores de movimiento espacial en el conjunto es al menos uno, comprendiendo el procedimiento la determinacion del predictor temporal del conjunto como predictor temporal del vector de movimiento en una posicion superior izquierda, en un bloque del fotograma de referencia vecino y en diagonal por debajo y a la derecha de un bloque del fotograma de referencia contiguo a dicho bloque a descodificar, teniendo dicho bloque del fotograma de referencia la misma posicion y el mismo tamano que el bloque a descodificar.
- 2. Procedimiento, segun la reivindicacion 1, en el que el por lo menos uno de dichos predictores espaciales se selecciona antes de la determinacion del predictor temporal, y la determinacion del predictor temporal se lleva a cabo dependiendo del predictor o predictores espaciales seleccionados.
- 3. Procedimiento de descodificacion de una secuencia de bits que comprende una secuencia codificada de imagenes digitales, siendo codificada al menos una porcion de una imagen mediante compensacion del movimiento con respecto a una imagen de referencia, que comprende el procedimiento de generacion de un conjunto de predictores de vectores de movimiento segun una de las reivindicaciones 1 o 2.
- 4. Dispositivo de generacion de un conjunto de predictores de vectores de movimiento para un bloque a descodificar que forma parte de un fotograma de video actual que debe ser descodificado, en el que el numero de predictores de vectores de movimiento temporales en el conjunto es uno, y el numero de predictores de vectores de movimiento espaciales en el conjunto es al menos uno, comprendiendo dicho dispositivo medios dispuestos para determinar el predictor temporal seleccionando, como predictor temporal, el vector de movimiento situado en una posicion superior izquierda, en un bloque del fotograma de referencia vecino y diagonalmente hacia abajo y a la derecha de un bloque del fotograma de referencia contiguo a dicho bloque a descodificar, teniendo dicho bloque del fotograma de referencia la misma posicion y el mismo tamano que el bloque a descodificar.
- 5. Dispositivo, segun la reivindicacion 4, que comprende medios para seleccionar al menos dicho predictor espacial antes de que se determine el predictor temporal, pudiendo funcionar el medio de determinacion para determinar el predictor temporal en funcion del predictor o predictores espaciales seleccionados.
- 6. Dispositivo para la descodificacion de una secuencia de bits que comprende una secuencia codificada de imagenes digitales siendo codificada por lo menos una parte de una imagen mediante compensacion del movimiento con respecto a una imagen de referencia, comprendiendo el dispositivo de generacion un conjunto de predictores de vectores de movimiento segun cualquiera de las reivindicaciones 4 o 5.
- 7. Programa que, cuando es ejecutado en un ordenador o un procesador, hace que el ordenador o el procesador lleven a cabo un procedimiento segun una cualquiera de las reivindicaciones 1 a 3.
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| GB201104033 | 2011-03-09 | ||
| GB1104033.4A GB2488815C (en) | 2011-03-09 | 2011-03-09 | Video decoding |
| PCT/EP2012/001041 WO2012119776A1 (en) | 2011-03-09 | 2012-03-08 | Video encoding and decoding |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| ES2599848T3 true ES2599848T3 (es) | 2017-02-03 |
Family
ID=43923467
Family Applications (5)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| ES12709016.5T Active ES2599848T3 (es) | 2011-03-09 | 2012-03-08 | Codificación y descodificación de video |
| ES18184826T Active ES2755357T3 (es) | 2011-03-09 | 2012-03-08 | Codificación y descodificación de video |
| ES19193203T Active ES2875939T3 (es) | 2011-03-09 | 2012-03-08 | Codificación y descodificación de video |
| ES16175112T Active ES2710782T3 (es) | 2011-03-09 | 2012-03-08 | Codificación y descodificación de video |
| ES18184827T Active ES2755730T3 (es) | 2011-03-09 | 2012-03-08 | Codificación y descodificación de video |
Family Applications After (4)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| ES18184826T Active ES2755357T3 (es) | 2011-03-09 | 2012-03-08 | Codificación y descodificación de video |
| ES19193203T Active ES2875939T3 (es) | 2011-03-09 | 2012-03-08 | Codificación y descodificación de video |
| ES16175112T Active ES2710782T3 (es) | 2011-03-09 | 2012-03-08 | Codificación y descodificación de video |
| ES18184827T Active ES2755730T3 (es) | 2011-03-09 | 2012-03-08 | Codificación y descodificación de video |
Country Status (13)
| Country | Link |
|---|---|
| US (5) | US8824555B2 (es) |
| EP (5) | EP3099070B1 (es) |
| KR (5) | KR101875250B1 (es) |
| CN (6) | CN107105232B (es) |
| BR (5) | BR112013022774B1 (es) |
| DK (1) | DK2684362T3 (es) |
| ES (5) | ES2599848T3 (es) |
| GB (3) | GB2501836B (es) |
| HU (4) | HUE046353T2 (es) |
| PL (4) | PL3422713T3 (es) |
| RU (5) | RU2564252C2 (es) |
| TR (1) | TR201820537T4 (es) |
| WO (1) | WO2012119776A1 (es) |
Families Citing this family (59)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2011501555A (ja) * | 2007-10-16 | 2011-01-06 | エルジー エレクトロニクス インコーポレイティド | ビデオ信号処理方法及び装置 |
| US8711940B2 (en) * | 2010-11-29 | 2014-04-29 | Mediatek Inc. | Method and apparatus of motion vector prediction with extended motion vector predictor |
| AU2011361644A1 (en) | 2011-03-09 | 2013-09-19 | Kabushiki Kaisha Toshiba | Image encoding method and image decoding method |
| GB2501836B (en) | 2011-03-09 | 2014-08-06 | Canon Kk | Video encoding |
| HUE067847T2 (hu) * | 2011-05-31 | 2024-11-28 | Jvckenwood Corp | Mozgókép kódoló eszköz, mozgókép kódolási eljárás és mozgókép kódoló program, valamint mozgókép dekódoló eszköz, mozgókép dekódoló eljárás és mozgókép dekódoló program |
| WO2013074964A1 (en) | 2011-11-16 | 2013-05-23 | Vanguard Software Solutions, Inc. | Video compression for high efficiency video coding |
| CN104704836B (zh) | 2012-10-03 | 2018-04-17 | 寰发股份有限公司 | 三维视频、多视图视频及可缩放视频的编码方法及装置 |
| US9106922B2 (en) * | 2012-12-19 | 2015-08-11 | Vanguard Software Solutions, Inc. | Motion estimation engine for video encoding |
| US9491460B2 (en) * | 2013-03-29 | 2016-11-08 | Qualcomm Incorporated | Bandwidth reduction for video coding prediction |
| JP5680778B2 (ja) * | 2014-03-31 | 2015-03-04 | 株式会社東芝 | 動画像符号化方法及び動画像復号化方法 |
| JP5893178B2 (ja) * | 2015-01-06 | 2016-03-23 | 株式会社東芝 | 動画像符号化方法及び動画像復号化方法 |
| US20180249176A1 (en) * | 2015-03-11 | 2018-08-30 | Lg Electronics Inc. | Method and apparatus for encoding and decoding video signal |
| US10200716B2 (en) * | 2015-06-25 | 2019-02-05 | Sony Interactive Entertainment Inc. | Parallel intra-prediction encoding/decoding process utilizing PIPCM and/or PIDC for selected sections |
| CN106331724B (zh) * | 2015-06-26 | 2019-05-24 | 北京君正集成电路股份有限公司 | 一种hevc中的运动矢量预测方法及装置 |
| JP2016106494A (ja) * | 2016-02-12 | 2016-06-16 | 株式会社東芝 | 動画像符号化方法及び動画像復号化方法 |
| US9866862B2 (en) | 2016-03-18 | 2018-01-09 | Google Llc | Motion vector reference selection through reference frame buffer tracking |
| US10819951B2 (en) | 2016-11-30 | 2020-10-27 | Microsoft Technology Licensing, Llc | Recording video from a bitstream |
| JP6503014B2 (ja) * | 2017-06-16 | 2019-04-17 | 株式会社東芝 | 動画像符号化方法及び動画像復号化方法 |
| US20190020888A1 (en) * | 2017-07-11 | 2019-01-17 | Google Llc | Compound intra prediction for video coding |
| US10880573B2 (en) | 2017-08-15 | 2020-12-29 | Google Llc | Dynamic motion vector referencing for video coding |
| WO2019036080A1 (en) * | 2017-08-15 | 2019-02-21 | Google Llc | ESTIMATION OF CONSTRAINED MOTION FIELD FOR INTERPRETING |
| US10284869B2 (en) | 2017-09-28 | 2019-05-07 | Google Llc | Constrained motion field estimation for hardware efficiency |
| EP3474225B1 (en) * | 2017-10-18 | 2019-09-25 | Axis AB | Method and encoder for encoding a video stream in a video coding format supporting auxiliary frames |
| CN109905714B (zh) * | 2017-12-08 | 2022-12-27 | 华为技术有限公司 | 帧间预测方法、装置及终端设备 |
| JP6510084B2 (ja) * | 2018-01-05 | 2019-05-08 | 株式会社東芝 | 動画像復号化方法及び電子装置 |
| WO2019151297A1 (ja) | 2018-01-30 | 2019-08-08 | パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ | 符号化装置、復号装置、符号化方法及び復号方法 |
| WO2020003271A1 (en) * | 2018-06-29 | 2020-01-02 | Beijing Bytedance Network Technology Co., Ltd. | Interaction between lut and merge: insert hmvp as a merge candidate, position of hmvp |
| KR102648120B1 (ko) | 2018-06-29 | 2024-03-18 | 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 | 슬라이스/타일/lcu 행마다의 룩업 테이블 리셋 |
| CN110662059B (zh) | 2018-06-29 | 2021-04-20 | 北京字节跳动网络技术有限公司 | 使用查找表存储先前编码的运动信息并用其编码后续块的方法和装置 |
| EP4322533A3 (en) | 2018-06-29 | 2024-03-06 | Beijing Bytedance Network Technology Co., Ltd. | Checking order of motion candidates in lut |
| MX392418B (es) | 2018-06-29 | 2025-03-24 | Beijing Bytedance Network Tech Co Ltd | Poda parcial/total cuando se añade un candidato a hmvp para fusión/amvp. |
| KR102660666B1 (ko) | 2018-06-29 | 2024-04-26 | 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 | Lut들을 업데이트하기 위한 조건들 |
| WO2020003265A1 (en) | 2018-06-29 | 2020-01-02 | Beijing Bytedance Network Technology Co., Ltd. | Conditions of usage of luts |
| WO2020003270A1 (en) | 2018-06-29 | 2020-01-02 | Beijing Bytedance Network Technology Co., Ltd. | Number of motion candidates in a look up table to be checked according to mode |
| AU2019293670B2 (en) | 2018-06-29 | 2023-06-08 | Beijing Bytedance Network Technology Co., Ltd. | Update of look up table: FIFO, constrained FIFO |
| KR20240005239A (ko) | 2018-06-29 | 2024-01-11 | 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 | Lut와 amvp 사이의 상호작용 |
| WO2020008346A1 (en) | 2018-07-02 | 2020-01-09 | Beijing Bytedance Network Technology Co., Ltd. | Rules on updating luts |
| TWI820211B (zh) | 2018-09-12 | 2023-11-01 | 大陸商北京字節跳動網絡技術有限公司 | 取決於總數減去k的開始檢查hmvp候選的條件 |
| CN112806010B (zh) * | 2018-10-02 | 2024-11-05 | 交互数字Vc控股公司 | 使用预测子候选列表进行视频编码和解码的方法和装置 |
| KR20240024335A (ko) | 2018-11-22 | 2024-02-23 | 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 | 서브 블록 기반 인터 예측을 위한 조정 방법 |
| CN113261292B (zh) * | 2018-12-29 | 2023-12-05 | 北京字节跳动网络技术有限公司 | 基于子块的帧间预测中默认运动候选的构造方法 |
| CN111713105B (zh) * | 2019-01-03 | 2022-07-15 | 北京大学 | 一种视频图像处理方法、设备及存储介质 |
| WO2020143741A1 (en) | 2019-01-10 | 2020-07-16 | Beijing Bytedance Network Technology Co., Ltd. | Invoke of lut updating |
| WO2020143824A1 (en) | 2019-01-13 | 2020-07-16 | Beijing Bytedance Network Technology Co., Ltd. | Interaction between lut and shared merge list |
| WO2020147773A1 (en) | 2019-01-16 | 2020-07-23 | Beijing Bytedance Network Technology Co., Ltd. | Inserting order of motion candidates in lut |
| SG11202108103WA (en) * | 2019-01-28 | 2021-08-30 | Op Solutions Llc | Inter prediction in geometric partitioning with an adaptive number of regions |
| US10979716B2 (en) * | 2019-03-15 | 2021-04-13 | Tencent America LLC | Methods of accessing affine history-based motion vector predictor buffer |
| US12041241B2 (en) * | 2019-03-15 | 2024-07-16 | Interdigital Madison Patent Holdings, Sas | Method and device for image encoding and decoding with a shifted position |
| CN113615193B (zh) | 2019-03-22 | 2024-06-25 | 北京字节跳动网络技术有限公司 | Merge列表构建和其他工具之间的交互 |
| CN110213590B (zh) * | 2019-06-25 | 2022-07-12 | 浙江大华技术股份有限公司 | 时域运动矢量获取、帧间预测、视频编码的方法及设备 |
| EP3973708A4 (en) | 2019-06-25 | 2023-02-22 | Zhejiang Dahua Technology Co., Ltd. | INTERFRAME PREDICTION SYSTEMS AND METHODS |
| KR102808776B1 (ko) | 2019-08-13 | 2025-05-15 | 두인 비전 컴퍼니 리미티드 | 서브 블록 기반 인터 예측의 모션 정밀도 |
| WO2021052505A1 (en) | 2019-09-22 | 2021-03-25 | Beijing Bytedance Network Technology Co., Ltd. | Reference picture resampling in video processing |
| JP7359653B2 (ja) * | 2019-11-06 | 2023-10-11 | ルネサスエレクトロニクス株式会社 | 動画像符号化装置 |
| JP6871343B2 (ja) * | 2019-11-28 | 2021-05-12 | 株式会社東芝 | 動画像符号化方法及び動画像復号化方法 |
| JP6871442B2 (ja) * | 2020-01-21 | 2021-05-12 | 株式会社東芝 | 動画像符号化方法及び動画像復号化方法 |
| JP6871447B2 (ja) * | 2020-02-03 | 2021-05-12 | 株式会社東芝 | 動画像符号化方法及び動画像復号化方法 |
| WO2023055298A2 (en) * | 2021-09-29 | 2023-04-06 | Alibaba Singapore Holding Private Limited | Improved temporal merge candidates in merge candidate lists in video coding |
| CN116156174B (zh) * | 2023-02-23 | 2024-02-13 | 格兰菲智能科技有限公司 | 数据编码处理方法、装置、计算机设备和存储介质 |
Family Cites Families (41)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| ATE297099T1 (de) * | 2001-02-13 | 2005-06-15 | Koninkl Philips Electronics Nv | Verfahren zur codierung und decodierung von bewegungsschätzungen |
| JP2002281505A (ja) * | 2001-03-16 | 2002-09-27 | Toshiba Corp | 動画像圧縮装置、同装置のカット検出用データ作成方法およびカット位置データ作成方法ならびにカット検出装置および同装置のカット検出方法 |
| US7801215B2 (en) * | 2001-07-24 | 2010-09-21 | Sasken Communication Technologies Limited | Motion estimation technique for digital video encoding applications |
| US20040001546A1 (en) | 2002-06-03 | 2004-01-01 | Alexandros Tourapis | Spatiotemporal prediction for bidirectionally predictive (B) pictures and motion vector prediction for multi-picture reference motion compensation |
| KR100865034B1 (ko) * | 2002-07-18 | 2008-10-23 | 엘지전자 주식회사 | 모션 벡터 예측 방법 |
| KR100902315B1 (ko) * | 2002-07-25 | 2009-06-12 | 삼성전자주식회사 | 디인터레이싱장치 및 방법 |
| EP1422946A4 (en) | 2002-07-26 | 2008-04-02 | Matsushita Electric Industrial Co Ltd | MOVING IMAGE PROCEDURE, MOVABLE IMAGE DECODING METHOD AND RECORD MEDIUM |
| US7450642B2 (en) * | 2002-11-13 | 2008-11-11 | Sony Corporation | Fast motion vector prediction method |
| US7020201B2 (en) * | 2002-11-20 | 2006-03-28 | National Chiao Tung University | Method and apparatus for motion estimation with all binary representation |
| US7567617B2 (en) * | 2003-09-07 | 2009-07-28 | Microsoft Corporation | Predicting motion vectors for fields of forward-predicted interlaced video frames |
| US7724827B2 (en) * | 2003-09-07 | 2010-05-25 | Microsoft Corporation | Multi-layer run level encoding and decoding |
| US8064520B2 (en) * | 2003-09-07 | 2011-11-22 | Microsoft Corporation | Advanced bi-directional predictive coding of interlaced video |
| US7362809B2 (en) * | 2003-12-10 | 2008-04-22 | Lsi Logic Corporation | Computational reduction in motion estimation based on lower bound of cost function |
| US8861589B2 (en) * | 2004-01-30 | 2014-10-14 | Broadcom Corporation | Detection and phase lock of pull-down video |
| GB0500174D0 (en) * | 2005-01-06 | 2005-02-16 | Kokaram Anil | Method for estimating motion and occlusion |
| CN101156450A (zh) * | 2005-04-12 | 2008-04-02 | 皇家飞利浦电子股份有限公司 | 利用区域的动态高宽比的基于区域的3drs运动估计 |
| US8369406B2 (en) * | 2005-07-18 | 2013-02-05 | Electronics And Telecommunications Research Institute | Apparatus of predictive coding/decoding using view-temporal reference picture buffers and method using the same |
| US7620108B2 (en) * | 2005-09-16 | 2009-11-17 | Sony Corporation | Integrated spatial-temporal prediction |
| US8320450B2 (en) * | 2006-03-29 | 2012-11-27 | Vidyo, Inc. | System and method for transcoding between scalable and non-scalable video codecs |
| US8111750B2 (en) * | 2007-03-20 | 2012-02-07 | Himax Technologies Limited | System and method for 3-D recursive search motion estimation |
| US20080285651A1 (en) * | 2007-05-17 | 2008-11-20 | The Hong Kong University Of Science And Technology | Spatio-temporal boundary matching algorithm for temporal error concealment |
| JP2011501555A (ja) * | 2007-10-16 | 2011-01-06 | エルジー エレクトロニクス インコーポレイティド | ビデオ信号処理方法及び装置 |
| CN101163244A (zh) * | 2007-11-22 | 2008-04-16 | 上海交通大学 | 视频解码器运动补偿过程中的像素缓存方法及系统 |
| WO2009115901A2 (en) | 2008-03-19 | 2009-09-24 | Nokia Corporation | Combined motion vector and reference index prediction for video coding |
| US20090304293A1 (en) * | 2008-06-08 | 2009-12-10 | Te-Hao Chang | Motion estimation method and related apparatus for efficiently selecting motion vector |
| CN101365137B (zh) * | 2008-09-12 | 2010-08-25 | 华为技术有限公司 | 运动补偿参考数据载入方法和装置及解码器和编解码系统 |
| KR101279573B1 (ko) * | 2008-10-31 | 2013-06-27 | 에스케이텔레콤 주식회사 | 움직임 벡터 부호화 방법 및 장치와 그를 이용한 영상 부호화/복호화 방법 및 장치 |
| WO2010119945A1 (ja) * | 2009-04-16 | 2010-10-21 | 三鷹光器株式会社 | 太陽光集光システム |
| CN101931803B (zh) * | 2009-06-26 | 2013-01-09 | 华为技术有限公司 | 视频图像运动信息获取方法、装置及设备、模板构造方法 |
| RU2520425C2 (ru) | 2009-07-03 | 2014-06-27 | Франс Телеком | Предсказание вектора движения текущего раздела изображения, указывающего на опорную зону, которая перекрывает несколько разделов опорного изображения, кодирование и декодирование с использованием такого предсказания |
| CN102498718B (zh) * | 2009-07-03 | 2016-01-20 | 法国电信公司 | 具有与至少一个相邻参考图像分区的几何形状或尺寸不同的几何形状或尺寸的当前图像分区的移动向量的预测以及使用一个这种预测的编码和解码 |
| KR101522850B1 (ko) * | 2010-01-14 | 2015-05-26 | 삼성전자주식회사 | 움직임 벡터를 부호화, 복호화하는 방법 및 장치 |
| CN101827269B (zh) * | 2010-01-15 | 2012-10-17 | 香港应用科技研究院有限公司 | 视频编码方法和装置 |
| CN101815218B (zh) * | 2010-04-02 | 2012-02-08 | 北京工业大学 | 基于宏块特征的快速运动估计视频编码方法 |
| US8711940B2 (en) * | 2010-11-29 | 2014-04-29 | Mediatek Inc. | Method and apparatus of motion vector prediction with extended motion vector predictor |
| US9137544B2 (en) * | 2010-11-29 | 2015-09-15 | Mediatek Inc. | Method and apparatus for derivation of mv/mvp candidate for inter/skip/merge modes |
| GB2487197B (en) * | 2011-01-11 | 2015-06-17 | Canon Kk | Video encoding and decoding with improved error resilience |
| CN107181954B (zh) * | 2011-02-09 | 2020-11-06 | Lg 电子株式会社 | 一种通过编解码装置进行的帧间预测方法和数字信息存储介质 |
| GB2501836B (en) | 2011-03-09 | 2014-08-06 | Canon Kk | Video encoding |
| HUE067847T2 (hu) * | 2011-05-31 | 2024-11-28 | Jvckenwood Corp | Mozgókép kódoló eszköz, mozgókép kódolási eljárás és mozgókép kódoló program, valamint mozgókép dekódoló eszköz, mozgókép dekódoló eljárás és mozgókép dekódoló program |
| US9826244B2 (en) * | 2013-01-08 | 2017-11-21 | Qualcomm Incorporated | Device and method for scalable coding of video information based on high efficiency video coding |
-
2011
- 2011-03-09 GB GB1313295.6A patent/GB2501836B/en active Active
- 2011-03-09 GB GB1104033.4A patent/GB2488815C/en active Active
- 2011-03-09 GB GB1313294.9A patent/GB2501835B/en active Active
-
2012
- 2012-03-08 CN CN201611258111.8A patent/CN107105232B/zh active Active
- 2012-03-08 BR BR112013022774-5A patent/BR112013022774B1/pt active IP Right Grant
- 2012-03-08 KR KR1020137027767A patent/KR101875250B1/ko active Active
- 2012-03-08 WO PCT/EP2012/001041 patent/WO2012119776A1/en not_active Ceased
- 2012-03-08 PL PL18184827T patent/PL3422713T3/pl unknown
- 2012-03-08 HU HUE18184827A patent/HUE046353T2/hu unknown
- 2012-03-08 HU HUE19193203A patent/HUE055245T2/hu unknown
- 2012-03-08 EP EP16175112.8A patent/EP3099070B1/en active Active
- 2012-03-08 ES ES12709016.5T patent/ES2599848T3/es active Active
- 2012-03-08 BR BR122020002133-0A patent/BR122020002133B1/pt active IP Right Grant
- 2012-03-08 BR BR122020002123-3A patent/BR122020002123B1/pt active IP Right Grant
- 2012-03-08 CN CN201611256664.XA patent/CN106878711B/zh active Active
- 2012-03-08 PL PL18184826T patent/PL3422712T3/pl unknown
- 2012-03-08 RU RU2013145089/08A patent/RU2564252C2/ru active
- 2012-03-08 BR BR122020002120-9A patent/BR122020002120B1/pt active IP Right Grant
- 2012-03-08 RU RU2015134857A patent/RU2642329C1/ru active
- 2012-03-08 KR KR1020197017058A patent/KR102090437B1/ko active Active
- 2012-03-08 PL PL19193203T patent/PL3609180T3/pl unknown
- 2012-03-08 HU HUE16175112A patent/HUE041213T2/hu unknown
- 2012-03-08 KR KR1020137025739A patent/KR101409145B1/ko active Active
- 2012-03-08 ES ES18184826T patent/ES2755357T3/es active Active
- 2012-03-08 KR KR1020197017062A patent/KR102090438B1/ko active Active
- 2012-03-08 KR KR1020187018665A patent/KR101991074B1/ko active Active
- 2012-03-08 ES ES19193203T patent/ES2875939T3/es active Active
- 2012-03-08 CN CN201280012474.7A patent/CN103416058B/zh active Active
- 2012-03-08 EP EP19193203.7A patent/EP3609180B1/en active Active
- 2012-03-08 PL PL16175112T patent/PL3099070T3/pl unknown
- 2012-03-08 TR TR2018/20537T patent/TR201820537T4/tr unknown
- 2012-03-08 ES ES16175112T patent/ES2710782T3/es active Active
- 2012-03-08 US US14/003,564 patent/US8824555B2/en active Active
- 2012-03-08 ES ES18184827T patent/ES2755730T3/es active Active
- 2012-03-08 EP EP12709016.5A patent/EP2684362B9/en active Active
- 2012-03-08 EP EP18184827.6A patent/EP3422713B1/en active Active
- 2012-03-08 HU HUE18184826A patent/HUE046357T2/hu unknown
- 2012-03-08 BR BR122020002121A patent/BR122020002121B8/pt active IP Right Grant
- 2012-03-08 CN CN201611258597.5A patent/CN107087166B/zh active Active
- 2012-03-08 DK DK12709016.5T patent/DK2684362T3/en active
- 2012-03-08 CN CN201611255387.0A patent/CN107071414B/zh active Active
- 2012-03-08 EP EP18184826.8A patent/EP3422712B1/en active Active
- 2012-03-08 CN CN201611255167.8A patent/CN107087165B/zh active Active
-
2014
- 2014-08-11 US US14/456,678 patent/US10057592B2/en active Active
-
2018
- 2018-01-15 RU RU2018101282A patent/RU2701455C2/ru active
- 2018-07-18 US US16/039,206 patent/US10764597B2/en active Active
- 2018-07-18 US US16/039,235 patent/US10554996B2/en active Active
-
2019
- 2019-07-03 RU RU2019120683A patent/RU2732534C1/ru active
- 2019-12-23 US US16/725,898 patent/US10812821B2/en active Active
-
2020
- 2020-09-10 RU RU2020129872A patent/RU2740783C1/ru active
Also Published As
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| ES2599848T3 (es) | Codificación y descodificación de video | |
| US11936896B2 (en) | Video encoding and decoding | |
| CN113055682B (zh) | 一种编解码方法、装置及其设备 | |
| CN112055220B (zh) | 一种编解码方法、装置及其设备 |