ES2684522T3 - Realización de predicción de vector de movimiento para codificación de vídeo - Google Patents
Realización de predicción de vector de movimiento para codificación de vídeo Download PDFInfo
- Publication number
- ES2684522T3 ES2684522T3 ES12703374.4T ES12703374T ES2684522T3 ES 2684522 T3 ES2684522 T3 ES 2684522T3 ES 12703374 T ES12703374 T ES 12703374T ES 2684522 T3 ES2684522 T3 ES 2684522T3
- Authority
- ES
- Spain
- Prior art keywords
- candidate motion
- motion vectors
- motion vector
- space
- determined
- 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 title claims abstract description 815
- 239000013598 vector Substances 0.000 title claims abstract description 656
- 238000000034 method Methods 0.000 claims abstract description 104
- 230000009467 reduction Effects 0.000 claims abstract description 55
- 230000008569 process Effects 0.000 claims abstract description 25
- 238000011946 reduction process Methods 0.000 claims abstract description 24
- 230000002123 temporal effect Effects 0.000 claims abstract description 16
- 230000001052 transient effect Effects 0.000 claims description 5
- 238000004891 communication Methods 0.000 description 18
- 230000005540 biological transmission Effects 0.000 description 16
- 239000012634 fragment Substances 0.000 description 13
- 238000011002 quantification Methods 0.000 description 13
- 238000013139 quantization Methods 0.000 description 11
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 238000005192 partition Methods 0.000 description 8
- 230000006835 compression Effects 0.000 description 7
- 238000007906 compression Methods 0.000 description 7
- 238000004458 analytical method Methods 0.000 description 6
- 238000002156 mixing Methods 0.000 description 6
- 230000003044 adaptive effect Effects 0.000 description 4
- 238000013500 data storage Methods 0.000 description 4
- 238000005259 measurement Methods 0.000 description 4
- 230000002457 bidirectional effect Effects 0.000 description 3
- 238000006073 displacement reaction Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000004927 fusion Effects 0.000 description 3
- 239000011159 matrix material Substances 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 230000009466 transformation Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000009225 memory damage Effects 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000000844 transformation Methods 0.000 description 2
- 238000011144 upstream manufacturing Methods 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 1
- 208000033999 Device damage Diseases 0.000 description 1
- 241000985610 Forpus Species 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 230000008451 emotion Effects 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 239000013074 reference sample Substances 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012546 transfer 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
-
- 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/85—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
- H04N19/89—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving methods or arrangements for detection of transmission errors at the decoder
- H04N19/895—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving methods or arrangements for detection of transmission errors at the decoder in combination with error concealment
-
- 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/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using 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/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
- 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/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/70—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
Un procedimiento de codificación de datos de vídeo, comprendiendo el procedimiento: determinar vectores de movimiento candidatos espaciales asociados con una parte actual de una trama de vídeo actual, en el que los vectores de movimiento candidatos espaciales comprenden vectores de movimiento determinados para las partes vecinas de la trama de vídeo actual adyacente a la parte actual; determinar un vector de movimiento candidato temporal asociado con la parte actual de la trama de vídeo actual, en el que el vector de movimiento candidato temporal comprende un vector de movimiento determinado para una parte de una trama de vídeo de referencia; reducir solo los vectores de movimiento de candidatos espaciales para eliminar los duplicados de los vectores de movimiento candidato espaciales sin tener en cuenta el vector de movimiento candidato temporal durante el proceso de reducción; seleccionar el vector de movimiento candidato temporal o uno de los vectores de movimiento candidato espaciales restantes después de la reducción como el vector de movimiento candidato seleccionado para un proceso de predicción de vector de movimiento; determinar un índice que identifique una ubicación del seleccionado de los vectores de movimiento candidatos en una lista del vector de movimiento candidato temporal y de los vectores de movimiento candidatos espaciales que permanezcan después de la reducción; y señalar el índice en un flujo de bits usando uno de un código unario o de un código unario truncado, caracterizado por que el procedimiento comprende además determinar si cada uno de los vectores de movimiento candidatos espaciales determinados se predijo espacialmente o se predijo temporalmente, y en el que: reducir los vectores de movimiento candidatos espaciales para eliminar los duplicados de los vectores de movimiento candidatos espaciales comprende reducir solamente aquellos de los vectores de movimiento candidatos espaciales determinados que se determinaron predichos temporalmente sin reducir ninguno de los vectores de movimiento candidatos espaciales determinados que se determinaron predichos temporalmente, y seleccionar el vector de movimiento candidato temporal o uno de los vectores de movimiento candidatos espaciales restantes después de la reducción ya que el vector de movimiento candidato seleccionado comprende seleccionar el vector de movimiento candidato temporal, uno de los vectores de movimiento candidatos espaciales que se determinó predicho temporalmente o uno de los vectores de movimiento candidatos espaciales determinados predichos espacialmente restantes después de la reducción como el vector de movimiento candidato seleccionado; o el procedimiento comprende además reemplazar cualquiera de los vectores de movimiento candidatos espaciales que se determinaron predichos temporalmente con un vector de movimiento candidato predeterminado, en el que el vector de movimiento candidato predeterminado incluye información de vector de movimiento predeterminada, en el que la información de vector de movimiento predeterminada comprende una amplitud de vector de movimiento, una dirección de predicción que identifica si la trama de referencia precede o sigue temporalmente la trama actual, y un índice de referencia que identifica la trama de referencia, y reducir los vectores de movimiento candidatos espaciales para eliminar los duplicados de los vectores de movimiento candidatos espaciales comprende reducir los vectores de movimiento candidatos espaciales que incluyan uno o más de los vectores de movimiento candidatos predeterminados para eliminar los duplicados de los vectores de movimiento candidatos espaciales.
Description
5
10
15
20
25
30
35
40
45
50
55
60
65
DESCRIPCIÓN
Realización de predicción de vector de movimiento para codificación de vídeo
[0001] Esta solicitud reivindica el beneficio de la Solicitud Provisional estadounidense N.° 61/436,997, presentada el 27 de enero de 2011, de la Solicitud Provisional estadounidense N.° 61/449,985, presentada el 7 de marzo de 2011 y de la Solicitud Provisional estadounidense N.° 61/561,601, presentada el 18 de noviembre de 2011.
CAMPO TÉCNICO
[0002] La presente divulgación se refiere a la codificación de vídeo y, más particularmente, a los aspectos de compensación de movimiento de la codificación de vídeo.
ANTECEDENTES
[0003] Las capacidades de vídeo digital pueden incorporarse a una amplia gama de dispositivos, incluidos televisores digitales, sistemas de radiodifusión directa digital, sistemas de radiodifusión inalámbrica, asistentes digitales personales (PDA), ordenadores portátiles o de sobremesa, cámaras digitales, dispositivos de grabación digitales, reproductores de medios digitales, dispositivos de videojuegos, consolas de videojuegos, teléfonos móviles o de radio por satélite, dispositivos de teleconferencia y similares. Los dispositivos de vídeo digitales implementan técnicas de compresión de vídeo, tales como las descritas en las normas definidas por MPEG-2, MPEG-4, ITU-T H.263 o ITU-T H.264/MPEG-4, parte 10, Codificación Avanzada de Vídeo (AVC) y ampliaciones de dichas normas, para transmitir y recibir información de vídeo digital de manera más eficiente. Nuevas normas de codificación de vídeo, tales como la norma de Codificación de Vídeo de Alta Eficiencia (HEVC) se está desarrollando por el "Joint Collaborative Team - Video Coding" (JCT-VC), que es una colaboración entre MPEG e ITU-T. La norma HEVC emergente se denomina algunas veces H.265, aunque dicha designación no se haya formalizado.
[0004] El siguiente documento divulga una sintaxis modificada para la HEVC que permite que un decodificador analice con éxito el flujo de bits en caso de pérdida de la trama de referencia que especifique el predictor de vector de movimiento (MVP) coubicado temporalmente:
SU Y ET AL: "On motion vector competition" ["En competición de vector de movimiento"], 3. REUNIÓN DE JCT-VC; 94. REUNIÓN DE MPEG; - ; GUANGZHOU; (EQUIPO DE COLABORACIÓN CONJUNTA SOBRE CODIFICACIÓN DE VÍDEO DE ISO/IECJTC1/SC29/WG11 E ITU-T SG.16); URL:
HTTP://WFTP3.ITU.INT/ AV-ARCH / JCTVC-SITE/, n°. JCTVC-C257, 2 de octubre de 2010 (2010-10-02), XP030007964, ISSN: 0000-0019.
HTTP://WFTP3.ITU.INT/ AV-ARCH / JCTVC-SITE/, n°. JCTVC-C257, 2 de octubre de 2010 (2010-10-02), XP030007964, ISSN: 0000-0019.
RESUMEN
[0005] En general, la presente divulgación describe técnicas para especificar predictores de vector de movimiento (MVP). Los MVP se emplean comúnmente en la codificación de vídeo como una forma de mejorar la eficiencia con la que se realiza la compensación de movimiento. En lugar de realizar una búsqueda de bloques en tramas de referencia que coincidan con un bloque actual, el codificador de vídeo puede seleccionar un vector de movimiento para el bloque actual a partir de una lista de MVP. En algunos ejemplos, la lista de MVP puede incluir vectores de movimiento de cuatro bloques que sean vecinos espaciales del bloque actual, y un vector de movimiento de un bloque coubicado de una trama de referencia temporalmente antes o después de la trama actual. El seleccionado de los MVP se usa entonces para el bloque actual, reduciendo si no se elimina el proceso de compensación de movimiento.
[0006] En un ejemplo, un procedimiento de codificación de datos de vídeo comprende determinar vectores de movimiento candidatos espaciales asociados con una parte actual de una trama de vídeo actual, en el que los vectores de movimiento candidatos espaciales comprenden vectores de movimiento determinados para partes vecinas de la trama de vídeo actual adyacente a la parte actual, reducir los vectores de movimiento candidatos espaciales para eliminar al menos uno de los vectores de movimiento candidatos espaciales, y determinar un vector de movimiento candidato temporal asociado con la parte actual de la trama de vídeo actual. El vector de movimiento candidato temporal comprende un vector de movimiento determinado para una parte de una trama de vídeo de referencia. El procedimiento también comprende seleccionar el vector de movimiento candidato temporal o uno de los vectores de movimiento candidatos espaciales restantes después de la reducción como el vector de movimiento candidato seleccionado, y señalar el vector de movimiento candidato seleccionado en un flujo de bits.
[0007] En otro ejemplo, un aparato para codificar datos de vídeo comprende medios para determinar vectores de movimiento candidatos espaciales asociados con la parte actual de una trama de vídeo actual, en el que los vectores de movimiento candidatos espaciales comprenden vectores de movimiento determinados para partes vecinas de la trama de vídeo actual adyacente a la parte actual, medios para reducir los vectores de movimiento candidatos espaciales a al menos uno de los vectores de movimiento candidatos espaciales y medios para determinar un vector de movimiento candidato temporal asociado con la parte actual de la trama de vídeo actual. El vector de movimiento candidato temporal comprende un vector de movimiento determinado para una parte de una
5
10
15
20
25
30
35
40
45
50
55
60
65
trama de vídeo de referencia. El aparato comprende además medios para seleccionar el vector de movimiento candidato temporal o uno de los vectores de movimiento candidatos espaciales restantes después de la reducción como el vector de movimiento candidato seleccionado y medios para señalar el vector de movimiento candidato seleccionado en un flujo de bits.
[0008] En otro ejemplo, un aparato para codificar datos de vídeo comprende una unidad de compensación de movimiento que determina vectores de movimiento candidatos espaciales asociados con la parte actual de una trama de vídeo actual, en el que los vectores de movimiento candidatos espaciales comprenden vectores de movimiento determinados para partes vecinas de la trama de vídeo actual adyacente a la parte actual, reduce los vectores de movimiento candidatos espaciales para eliminar al menos uno de los vectores de movimiento candidatos espaciales y determina un vector de movimiento candidato temporal asociado con la parte actual de la trama de vídeo actual. El vector de movimiento candidato temporal comprende un vector de movimiento determinado para una parte de una trama de vídeo de referencia. El aparato también comprende una unidad de selección que selecciona el vector de movimiento candidato temporal o uno de los vectores de movimiento candidatos espaciales restantes después de la reducción como el vector de movimiento candidato seleccionado, y una unidad de codificación por entropía que señala el vector de movimiento candidato seleccionado en un flujo de bits.
[0009] En otro ejemplo, un medio no transitorio legible por ordenador comprende instrucciones que, cuando se ejecutan, causan que uno o más procesadores determinen vectores de movimiento candidatos espaciales asociados con la parte actual de una trama de vídeo actual, en el que los vectores de movimiento candidatos espaciales comprenden vectores de movimiento determinados para las partes vecinas de la trama de vídeo actual adyacente a la parte actual, reduzcan los vectores de movimiento candidatos espaciales para eliminar al menos uno de los vectores de movimiento candidatos espaciales, determinen un vector de movimiento candidato temporal asociado con la parte actual de la trama de vídeo actual, en el que el vector de movimiento candidato temporal comprende un vector de movimiento determinado para una parte de una trama de vídeo de referencia, seleccionen el vector de movimiento candidato temporal o uno de los vectores de movimiento candidatos espaciales restantes después de la reducción como el vector de movimiento candidato seleccionado, y señalen el vector de movimiento candidato seleccionado en un flujo de bits.
[0010] En otro ejemplo, un procedimiento de decodificación de datos de vídeo comprende determinar vectores de movimiento candidatos espaciales asociados con una parte actual de una trama de vídeo actual, en el que los vectores de movimiento candidatos espaciales comprenden vectores de movimiento determinados para partes vecinas de la trama de vídeo actual adyacente a la parte actual, y reducir los vectores de movimiento candidatos espaciales para eliminar al menos uno de los vectores de movimiento candidatos espaciales sin eliminar un vector de movimiento candidato temporal determinado para la parte actual de la trama de vídeo actual. El vector de movimiento candidato temporal comprende un vector de movimiento determinado para una parte de una trama de vídeo de referencia coubicada conjuntamente en una misma ubicación de la trama de vídeo de referencia ya que la parte actual está en la trama de vídeo actual. El procedimiento también comprende seleccionar uno de los vectores de movimiento candidatos temporales o uno de los vectores de movimiento candidatos espaciales restantes después de la reducción como el vector de movimiento candidato seleccionado basado en un índice de predictor de vector de movimiento (MVP) señalar en un flujo de bits, y realizar una compensación de movimiento basada en el vector de movimiento candidato seleccionado.
[0011] En otro ejemplo, un aparato para decodificar datos de vídeo comprende medios para determinar vectores de movimiento candidatos espaciales asociados con una parte actual de una trama de vídeo actual, en el que los vectores de movimiento candidatos espaciales comprenden vectores de movimiento determinados para partes vecinas de la trama de vídeo actual adyacente a la parte actual, y medios para reducir los vectores de movimiento de candidatos espaciales para eliminar al menos uno de los vectores de movimiento candidatos espaciales sin eliminar un vector de movimiento candidato temporal determinado para la parte actual de la trama de vídeo actual. El vector de movimiento candidato temporal comprende un vector de movimiento determinado para una parte de una trama de vídeo de referencia. El aparato también comprende medios para seleccionar uno de los vectores de movimiento candidatos temporales o uno de los vectores de movimiento candidatos espaciales restantes después de la reducción como el vector de movimiento candidato seleccionado basado en un índice de predictor de vector de movimiento (MVP) señalado en un flujo de bits, y medios para realizar la compensación de movimiento basada en el vector de movimiento candidato seleccionado.
[0012] En otro ejemplo, un aparato para decodificar datos de vídeo comprende una unidad de compensación de movimiento que determina vectores de movimiento candidatos espaciales asociados con una parte actual de una trama de vídeo actual, en el que los vectores de movimiento candidatos espaciales comprenden vectores de movimiento determinados para partes vecinas de la trama de vídeo actual adyacente a la parte actual, reduce los vectores de movimiento candidatos espaciales para eliminar al menos uno de los vectores de movimiento candidatos espaciales sin eliminar un vector de movimiento candidato temporal determinado para la parte actual de la trama de vídeo actual, en el que el vector de movimiento candidato temporal comprende un vector de movimiento determinado para una parte de una trama de vídeo de referencia, selecciona uno de los vectores de movimiento candidatos temporales o uno de los vectores de movimiento candidatos espaciales restantes después de la reducción como el vector de movimiento candidato seleccionado basado en un índice de predictor de vector de
5
10
15
20
25
30
35
40
45
50
55
60
65
movimiento (MVP) señalado en un flujo de bits, y realiza una compensación de movimiento basada en el vector de movimiento candidato seleccionado.
[0013] En otro ejemplo, un medio no transitorio legible por ordenador comprende instrucciones que, cuando se ejecutan, causan que uno o más procesadores determinen vectores de movimiento candidatos espaciales asociados con una parte actual de una trama de vídeo actual, en el que los vectores de movimiento candidatos espaciales comprenden vectores de movimiento determinados para las partes vecinas de la trama de vídeo actual adyacente a la parte actual, reduzcan los vectores de movimiento candidatos espaciales para eliminar al menos uno de los vectores de movimiento candidatos espaciales sin eliminar un vector de movimiento candidato temporal determinado para la parte actual de la trama de vídeo actual. en el que el vector de movimiento candidato temporal comprende un vector de movimiento determinado para una parte de una trama de vídeo de referencia, seleccionen uno del vector de movimiento candidato temporal o uno de los vectores de movimiento candidatos espaciales restantes después de la reducción como el vector de movimiento candidato seleccionado basado en un índice de predictor de vector de movimiento (MVP) señalado en un flujo de bits, y realicen una compensación de movimiento basada en el vector de movimiento candidato seleccionado.
[0014] Los detalles de uno o más ejemplos se exponen en los dibujos adjuntos y en la siguiente descripción. Otras características, objetivos y ventajas resultarán evidentes a partir de la descripción y de los dibujos, y a partir de las reivindicaciones. La invención se define en las reivindicaciones adjuntas.
BREVE DESCRIPCIÓN DE LOS DIBUJOS
[0015]
La FIG. 1 es un diagrama de bloques que ilustra un ejemplo de sistema de codificación y decodificación de vídeo que puede configurarse para utilizar las técnicas descritas en la presente divulgación para especificar predictores de vector de movimiento (MVP).
La FIG. 2 es un diagrama de bloques que ilustra un ejemplo de un codificador de vídeo que puede implementar las técnicas descritas en la presente divulgación para especificar predictores de vector de movimiento.
La FIG. 3 es un diagrama de bloques que ilustra un ejemplo de un decodificador de vídeo que implementa las técnicas de predicción de vector de movimiento descritas en la presente divulgación.
La FIG. 4 es un diagrama de flujo que ilustra la operación a modo de ejemplo de un codificador de vídeo al realizar las técnicas de predicción de vector de movimiento descritas en la presente divulgación.
La FIG. 5 es un diagrama de flujo que ilustra la operación a modo de ejemplo de un decodificador de vídeo en la implementación de las técnicas de predicción de vectores de movimiento descritas en la presente divulgación.
La FIG. 6 es un diagrama que ilustra una disposición a modo de ejemplo de unidades de predicción vecinas adyacentes (PU) y de una PU temporal coubicada para una PU actual.
DESCRIPCIÓN DETALLADA
[0016] Los modos de realización de las técnicas descritas en la presente divulgación permiten a los codificadores de vídeo especificar MVP de una manera robusta, pero eficiente, reduciendo los MVP espaciales redundantes sin incluir el MVP coubicado temporalmente durante el proceso de reducción. En otras palabras, las técnicas forman una lista intermedia de MVP que incluye solo los MVP espaciales, realizan una reducción con respecto a esta lista intermedia de MVP y entonces añaden el MVP coubicado temporalmente a la lista intermedia de MVP para formar la lista de reducción de MVP. De esta manera, la pérdida de la trama de referencia que especifica el MVP coubicado temporalmente puede no evitar el análisis del flujo de bits, ya que es común en los sistemas convencionales, y puede mantenerse la codificación de las ganancias de eficiencia habilitadas mediante la aplicación del proceso de reducción.
[0017] La FIG. 1 es un diagrama de bloques que ilustra un ejemplo de sistema de codificación y decodificación de
vídeo 10 que puede configurarse para utilizar las técnicas descritas en la presente divulgación para especificar predictores de vector de movimiento (MVP). Como se muestra en el ejemplo de la FIG. 1, el sistema 10 incluye un dispositivo de origen 12 que genera un vídeo codificado para decodificar por el dispositivo de destino 14. El
dispositivo de origen 12 puede transmitir el vídeo codificado al dispositivo de destino 14 a través del canal de
comunicación 16 o puede almacenar el vídeo codificado en un medio de almacenamiento 34 o en un servidor de archivos 36, de manera que el dispositivo de destino 14 pueda acceder al vídeo codificado como desee. El
dispositivo de origen 12 y el dispositivo de destino 14 pueden comprender cualquiera de una amplia gama de
dispositivos, incluidos ordenadores de sobremesa, ordenadores portátiles, tabletas, decodificadores, auriculares de teléfonos (incluidos los teléfonos móviles o auriculares y los denominados teléfonos inteligentes), televisores, cámaras, dispositivos de visualización, reproductores de medios digitales, consolas de videojuegos o similares.
5
10
15
20
25
30
35
40
45
50
55
60
65
[0018] En muchos casos, dichos dispositivos pueden estar equipados de comunicación inalámbrica. Por lo tanto, el canal de comunicación 16 puede comprender un canal inalámbrico. De forma alternativa, el canal de comunicación 16 puede comprender un canal alámbrico, una combinación de canales inalámbricos y alámbricos o cualquier otro tipo de canal de comunicación o una combinación de canales de comunicación adecuados para la transmisión de datos de vídeo codificados, tal como un espectro de radiofrecuencia (RF) o una o más líneas de transmisión físicas. En algunos ejemplos, el canal de comunicación 16 puede formar parte de una red basada en paquetes, tal como una red de área local (LAN), una red de área extensa (WAN) o una red global tal como Internet. Por lo tanto, el canal de comunicación 16 representa en general cualquier medio de comunicación, o conjunto de diferentes medios de comunicación, adecuado para transmitir datos de vídeo desde el dispositivo de origen 12 hasta el dispositivo de destino 14, incluida cualquier combinación adecuada de medios alámbricos o inalámbricos. El canal de comunicación 16 puede incluir enrutadores, conmutadores, estaciones base o cualquier otro equipo que pueda ser útil para facilitar la comunicación desde el dispositivo de origen 12 al dispositivo de destino 14.
[0019] Como se muestra además en el ejemplo de la FIG. 1, el dispositivo de origen 12 incluye una fuente de vídeo 18, un codificador de vídeo 20, un modulador/demodulador 22 ("módem 22") y un transmisor 24. En el dispositivo de origen 12, la fuente de vídeo 18 puede incluir una fuente tal como un dispositivo de captura de vídeo. El dispositivo de captura de vídeo, a modo de ejemplo, puede incluir uno o más de una videocámara, un archivo de vídeo que contenga un vídeo capturado previamente, una interfaz de entrada de vídeo para recibir vídeo desde un proveedor de contenido de vídeo y/o un sistema de gráficos de ordenador para generar datos de gráficos de ordenador como el vídeo de origen. Como un ejemplo, si la fuente de vídeo 18 es una videocámara, el dispositivo de origen 12 y el dispositivo de destino 14 pueden formar los denominados teléfonos con cámara o videoteléfonos. Las técnicas descritas en la presente divulgación, sin embargo, no se limitan a aplicaciones o configuraciones inalámbricas, sino que pueden aplicarse a dispositivos no inalámbricos que incluyan capacidades de codificación y/o de decodificación de vídeo. El dispositivo de fuente 12 y el dispositivo de destino 14 son, por lo tanto, meramente ejemplos de dispositivos de codificación que pueden soportar las técnicas descritas en el presente documento.
[0020] El codificador de vídeo 20 puede codificar el vídeo capturado, precapturado o generado por ordenador. Una vez codificado, el codificador de vídeo 20 puede transmitir este vídeo codificado al módem 22. El módem 22 puede modular entonces el vídeo codificado de acuerdo con una norma de comunicación, tal como un protocolo de comunicación inalámbrica, después de lo cual el transmisor 24 puede transmitir los datos de vídeo codificados modulados al dispositivo de destino 14. El módem 22 puede incluir diversos mezcladores, filtros, amplificadores u otros componentes diseñados para la modulación de señales. El transmisor 24 puede incluir circuitos diseñados para transmitir datos, incluidos amplificadores, filtros y una o más antenas.
[0021] El vídeo capturado, precapturado o generado por ordenador que se codifique mediante el codificador de vídeo 20 también puede almacenarse en unos medios de almacenamiento 34 o en un servidor de archivos 36 para una recuperación, una decodificación o un consumo posterior. Los medios de almacenamiento 34 pueden incluir discos Blu-ray, DVD, CD-ROM, memoria flash o cualquier otro medio de almacenamiento digital adecuado para almacenar el vídeo codificado. El dispositivo de destino 14 puede acceder al vídeo codificado almacenado en los medios de almacenamiento 34 o en el servidor de archivos 36, decodificar este vídeo codificado para generar el vídeo decodificado y reproducir este vídeo decodificado.
[0022] El servidor de archivos 36 puede ser cualquier tipo de servidor capaz de almacenar el vídeo codificado y transmitir ese vídeo codificado al dispositivo de destino 14. Los ejemplos de servidores de archivos incluyen un servidor web (por ejemplo, para una página web), un servidor FTP, unos dispositivos de almacenamiento en red (NAS), una unidad de disco local o cualquier otro tipo de dispositivo capaz de almacenar datos de vídeo codificados y transmitirlos a un dispositivo de destino. La transmisión de datos de vídeo codificados desde el servidor de archivos 36 puede ser una transmisión de difusión, una transmisión de descarga o una combinación de ambas. El dispositivo de destino 14 puede acceder al servidor de archivos 36 de acuerdo con cualquier conexión de datos estándar, incluida una conexión a Internet. Esta conexión puede incluir un canal inalámbrico (por ejemplo, una conexión WiFi o una conexión de datos móvil inalámbrica), una conexión alámbrica (por ejemplo, DSL, módem de cable, etc.), o una combinación de canales alámbricos e inalámbricos o cualquier otro tipo de canal de comunicación adecuado para acceder a datos de vídeo codificados almacenados en un servidor de archivos.
[0023] El dispositivo de destino 14, en el ejemplo de la FIG. 1, incluye un receptor 26, un módem 28, un decodificador de vídeo 30 y un dispositivo de visualización 32. El receptor 26 del dispositivo de destino 14 recibe información a través del canal 16, y el módem 28 demodula la información para producir un flujo de bits demodulado para el decodificador de vídeo 30. La información comunicada a través del canal 16 puede incluir una variedad de información sintáctica generada por el codificador de vídeo 20 para su uso por el decodificador de vídeo 30 en la decodificación de los datos de vídeo codificados asociados. Dicha sintaxis también puede incluirse con los datos de vídeo codificados, almacenados en los medios de almacenamiento 34 o en el servidor de archivos 36. Cada uno del codificador de vídeo 20 y del decodificador de vídeo 30 puede formar parte de un respectivo codificador- decodificador (CÓDEC) que sea capaz de codificar o decodificar datos de vídeo.
5
10
15
20
25
30
35
40
45
50
55
60
65
[0024] El dispositivo de visualización 32 del dispositivo de destino 14 representa cualquier tipo de pantalla capaz de presentar datos de vídeo para el consumo por un espectador. Aunque se muestra integrado con el dispositivo de destino 14, el dispositivo de visualización 32 puede estar integrado con, o ser externo a, el dispositivo de destino 14. En algunos ejemplos, el dispositivo de destino 14 puede incluir un dispositivo de visualización integrado y también estar configurado para interconectarse con un dispositivo de visualización externo. En otros ejemplos, el dispositivo de destino 14 puede ser un dispositivo de visualización. En general, el dispositivo de visualización 32 visualiza los datos de vídeo decodificados ante un usuario y puede comprender cualquiera de una variedad de dispositivos de visualización, tales como una pantalla de cristal líquido (LCD), una pantalla de plasma, una pantalla de diodos orgánicos emisores de luz (OLED) u otro tipo de dispositivo de visualización.
[0025] La presente divulgación puede referirse en general al codificador de vídeo 20 que "señala" la información de sintaxis a otro dispositivo, tal como el decodificador de vídeo 30. Sin embargo, debería entenderse que el codificador de vídeo 20 puede señalar información asociando los elementos de sintaxis con varias partes codificadas de datos de vídeo. Es decir, el codificador de vídeo 20 puede "señalar" datos almacenando ciertos elementos de sintaxis en encabezados de varias partes codificadas de datos de vídeo. En algunos casos, dichos elementos de sintaxis pueden codificarse y almacenarse (por ejemplo, almacenarse en el medio de almacenamiento 34 o en el servidor de archivos 36) antes de recibirse y decodificarse por el decodificador de vídeo 30. Por tanto, el término "señalización" puede referirse en general a la comunicación de sintaxis o a otros datos usados para decodificar datos de vídeo comprimidos, ya sea que dicha comunicación se produzca en tiempo real o casi real o en un lapso de tiempo, tal como podría ocurrir cuando se almacenan elementos de sintaxis en un medio en el momento de la codificación, que entonces puede recuperarse por un dispositivo de decodificación en cualquier momento después de almacenarse en este medio.
[0026] El codificador de vídeo 20 y el decodificador de vídeo 30 pueden funcionar de acuerdo con una norma de compresión de vídeo, tal como la norma de Codificación de Vídeo de Alta Eficacia (HEVC), actualmente en fase de elaboración, y pueden conformarse al Modelo de Prueba HEVC (HM). De forma alternativa, el codificador de vídeo 20 y el decodificador de vídeo 30 pueden funcionar de acuerdo con otras normas privadas o industriales, tales como la norma ITU-T H.264, de forma alternativa denominada MPEG-4, Parte 10, Codificación Avanzada de Vídeo (AVC), o ampliaciones de dichas normas. Sin embargo, las técnicas de la presente divulgación no están limitadas a ninguna norma de codificación particular. Otros ejemplos incluyen MPEG-2 e ITU-T H.263.
[0027] El HM se refiere a un bloque de datos de vídeo como unidad de codificación (CU). En general, una CU tiene un propósito similar a un macrobloque codificado de acuerdo con H.264, excepto que una CU no tiene la distinción de tamaño asociada con los macrobloques de H.264. Por tanto, una CU puede dividirse en subCU. En general, las referencias de la presente divulgación a una CU pueden referirse a la unidad de codificación más grande (LCU) de una imagen o a una subCU de una LCU. Por ejemplo, los datos de sintaxis dentro de un flujo de bits pueden definir la LCU, que es la unidad de codificación más grande en términos del número de píxeles. Una LCU puede dividirse en varias subCU, y cada subCU puede dividirse en varias subCU. Los datos sintácticos para un flujo de bits pueden definir un número máximo de veces en que puede dividirse una LCU, denominada profundidad máxima de Cu. Por consiguiente, un flujo de bits también puede definir una unidad de codificación de mínimo tamaño (SCU).
[0028] Una LCU puede asociarse con una estructura jerárquica de datos en árbol cuádruple. En general, una estructura de datos en árbol cuádruple incluye un nodo por CU, donde un nodo raíz corresponde a la LCU. Si una CU se divide en cuatro subCU, el nodo correspondiente a la CU incluye una referencia para cada uno de los cuatro nodos que corresponden a las subCU. Cada nodo de la estructura de datos en árbol cuádruple puede proporcionar datos sintácticos para la CU correspondiente. Por ejemplo, un nodo en el árbol cuádruple puede incluir un indicador de división, que indica si la CU correspondiente al nodo está dividida o no en varias subCU. Los elementos sintácticos para una CU pueden definirse de manera recursiva y pueden depender de si la CU está dividida en varias subCU.
[0029] Una CU que no esté dividida puede incluir una o más unidades de predicción (PU). En general, una PU representa la totalidad o una parte de la CU correspondiente e incluye datos para recuperar una muestra de referencia para la PU. Por ejemplo, cuando la PU está codificada de manera intramodal, la PU puede incluir datos que describan un modo de intrapredicción para la PU. Como otro ejemplo, cuando la PU está codificada de manera intramodal, la PU puede incluir datos que definan uno o más vectores de movimiento para la PU. Un vector de movimiento identifica en general una CU coubicada en una o más tramas de referencia, donde el término "trama de referencia" se refiere a una trama que se produce temporalmente antes o después de la trama en la que se encuentra el PU. Los datos para la CU que definan la(s) PU también pueden describir, por ejemplo, una partición de la CU en una o más PU. Los modos de partición pueden diferir en función de si la CU está sin codificar, codificada en el modo de intrapredicción o codificada en el modo de interpredicción.
[0030] Los datos que definan el vector de movimiento pueden describir, por ejemplo, un componente horizontal del vector de movimiento, un componente vertical del vector de movimiento, una resolución para el vector de movimiento (por ejemplo, precisión de un cuarto de píxel o precisión de un octavo de píxel), una trama de referencia al que apunte el vector de movimiento, una dirección de predicción que identifique si la trama de referencia identificada está antes o después de la trama actual y/o una lista de referencia (por ejemplo, lista 0 o lista 1) para el vector de
5
10
15
20
25
30
35
40
45
50
55
60
65
movimiento. De forma alternativa, los datos que definan el vector de movimiento pueden describir el vector de movimiento en términos de lo que se conoce como un predictor de vector de movimiento (MVP). Un predictor de vector de movimiento puede incluir un vector de movimiento de una PU vecina o de una PU temporalmente coubicada. Típicamente, se forma una lista de cinco MVP de una manera definida (tal como enumerando los MVP partiendo de los que tengan la amplitud más grande a los que tengan la menor amplitud, es decir, el mayor o menor desplazamiento entre la PU actual que se vaya a codificar y la referencia PU, o enumeración de los MVP basados en la ubicación, es decir, bloques superiores, bloques izquierdos, bloques de esquina, bloques temporales), donde cuatro de los cinco MVP son MVP espaciales seleccionados a partir de cuatro PU vecinas y el quinto MVP es un MVP coubicado temporalmente seleccionado a partir de una PU colocada temporalmente en la trama de referencia.
[0031] Aunque típicamente el vector de movimiento de candidato temporal está coubicado conjuntamente en la misma parte de la trama de referencia que el de la parte actual en la trama actual, las técnicas no deberían limitarse estrictamente a vectores de movimiento candidatos temporales coubicados. En cambio, las técnicas pueden implementarse con respecto a cualquier vector de movimiento candidato temporal, ya sea que esté coubicado o no. En algunos casos, el codificador de vídeo puede identificar un vector de movimiento candidato temporal que no se ubique junto con el bloque o parte actual de la trama actual y selecciona este vector de emoción candidato temporal como el MVP temporal. Comúnmente, el codificador de vídeo puede señalar que se usa un MVP temporal no coubicado o, en algunos casos, un contexto dado puede indicar que se usa un MVP temporal no coubicado conjuntamente (en cuyo caso el codificador de vídeo puede no señalar si se seleccionó o no un MVP temporal no compartido).
[0032] Después de formar la lista de cinco MVP, el codificador de vídeo 20 puede evaluar cada uno de los MVP para determinar cuál proporciona las mejores características de velocidad y distorsión que mejor coincidan con una velocidad dada y el perfil de distorsión seleccionado para codificar el vídeo. El codificador de vídeo 20 puede realizar un procedimiento de optimización de distorsión de velocidad (RDO) con respecto a cada uno de los cinco MVP, seleccionando uno de los MVP que tenga los mejores resultados de RDO. De forma alternativa, el codificador de vídeo 20 puede seleccionar uno de los cinco MVP almacenados en la lista que mejor se aproxime a un vector de movimiento determinado para la PU actual.
[0033] En cualquier caso, el codificador de vídeo 20 puede especificar el vector de movimiento que use datos que comprenda un índice que identifique el MVP seleccionado en la lista de cinco MVP, una o más tramas de referencia a los que apunte el vector de movimiento (a menudo en forma de lista) y una dirección de predicción que identifique si la predicción es unidireccional o bidireccional. De forma alternativa, los datos que definan el vector de movimiento solo pueden especificar el índice del MVP seleccionado en la lista de cinco MVP sin especificar la trama de referencia y la dirección de predicción, que señala a los decodificadores de vídeo que el MVP seleccionado se va a usar en su totalidad para la PU actual.
[0034] Además de tener una o más PU que definan uno o más vectores de movimiento, una CU puede incluir una o más unidades de transformada (TU). Después de la predicción que usa una PU, un codificador de vídeo puede calcular un valor residual para la parte de la CU que corresponda a la PU, donde este valor residual también puede denominarse datos residuales. El valor residual puede transformarse, cuantificarse y escanearse. Una TU no está necesariamente limitada al tamaño de una PU. Por tanto, las TU pueden ser más grandes o más pequeñas que las PU correspondientes para la misma CU. En algunos ejemplos, el tamaño máximo de una TU puede ser el tamaño de la CU correspondiente. La presente divulgación también usa el término "bloque" para referirse a cualquiera o a una combinación de CU, PU y/o TU.
[0035] En general, los datos de vídeo codificados pueden incluir datos de predicción y datos residuales. El codificador de vídeo 20 puede producir los datos de predicción durante un modo de intrapredicción o un modo de interpredicción. La intrapredicción implica en general la predicción de los valores de píxel en un bloque de una imagen relativa a las muestras de referencia en bloques vecinos codificados previamente de la misma imagen. La interpredicción implica en general predecir los valores de píxel en un bloque de una imagen relativa a los datos de una imagen codificada previamente.
[0036] Después de la intrapredicción o de la interpredicción, el codificador de vídeo 20 puede calcular los valores de píxel residuales para el bloque. Los valores residuales corresponden en general a diferencias entre los datos de valor de píxel predichos para el bloque y los datos de valor de píxel verdaderos del bloque. Por ejemplo, los valores residuales pueden incluir valores de diferencia de píxel que indiquen diferencias entre píxeles codificados y píxeles predictivos. En algunos ejemplos, los píxeles codificados pueden estar asociados con un bloque de píxeles que se vaya a codificar, y los píxeles predictivos pueden estar asociados con uno o más bloques de píxeles usados para predecir el bloque codificado.
[0037] Para comprimir más el valor residual de un bloque, el valor residual puede transformarse en un conjunto de coeficientes de transformada que compacten la mayor cantidad posible de datos (también denominada "energía") en el menor número de coeficientes posible. Las técnicas de transformada pueden comprender un proceso de transformada de coseno discreta (DCT) o un proceso conceptualmente similar, transformadas enteras, transformadas de ondículas u otros tipos de transformadas. La transformada convierte los valores residuales de los
5
10
15
20
25
30
35
40
45
50
55
60
65
píxeles del dominio espacial en un dominio de transformada. Los coeficientes de transformada corresponden a una matriz bidimensional de coeficientes que, de forma ordinaria, es del mismo tamaño que el bloque original. En otras palabras, hay tantos coeficientes de transformada como píxeles en el bloque original. Sin embargo, debido a la transformada, muchos de los coeficientes de transformada pueden tener valores iguales a cero.
[0038] El codificador de vídeo 20 puede cuantificar entonces los coeficientes de transformada para comprimir más los datos de vídeo. La cuantificación implica en general mapear valores dentro de un rango relativamente grande a valores en un rango relativamente pequeño, reduciendo por tanto la cantidad de datos necesarios para representar los coeficientes de transformada cuantificados. Más específicamente, la cuantificación puede aplicarse de acuerdo con un parámetro de cuantificación (QP), que puede definirse a nivel de LCU. En consecuencia, el mismo nivel de cuantificación puede aplicarse a todos los coeficientes de transformada en las TU asociadas con diferentes PU de CU dentro de una LCU. Sin embargo, en lugar de señalar el propio QP, un cambio (es decir, un delta) en el QP puede señalarse con la LCU. El QP de delta define un cambio en el parámetro de cuantificación para la LCU relativa a algún QP de referencia, tal como el QP de una LCU comunicada previamente.
[0039] Después de la cuantificación, el codificador de vídeo 20 puede escanear los coeficientes de transformada, produciendo un vector unidimensional a partir de la matriz bidimensional que incluye los coeficientes de transformada cuantificados. El codificador de vídeo 20 puede realizar entonces una codificación estadística sin pérdidas (que se denomina comúnmente "codificación por entropía") para codificar la matriz resultante para comprimir más los datos. En general, la codificación por entropía comprende uno o más procesos que comprimen colectivamente una secuencia de coeficientes de transformada cuantificados y/u otra información de sintaxis. Por ejemplo, los elementos de sintaxis, como los QP de delta, los vectores de predicción, los modos de codificación, los filtros, los desplazamientos u otra información, también se pueden incluir en el flujo de bits codificado por entropía. Los coeficientes escaneados se codifican por entropía entonces junto con cualquier información de sintaxis, por ejemplo, a través de codificación de longitud variable adaptativa de contenido (CAVLC), codificación aritmética binaria adaptativa de contexto (CABAC) o cualquier otro proceso de codificación estadística sin pérdidas.
[0040] Como se indicó anteriormente, los datos que definen los vectores de movimiento para las PU pueden tomar varias formas. El codificador de vídeo 20 puede implementar diferentes formas mediante las cuales los vectores de movimiento pueden expresarse para comprimir datos de vectores de movimiento. El codificador de vídeo 20 puede implementar lo que se denomina modo de fusión para expresar vectores de movimiento como un índice que identifique un MVP tal como se almacena en una lista de MVP construidos de una manera definida. El decodificador de vídeo 30, al implementar la inversa de este modo de fusión, recibe este índice, reconstruye la lista de cinco MVP de acuerdo con la manera definida y selecciona uno de los cinco MVP en la lista indicada por el índice. El decodificador de vídeo 30 instancia entonces el seleccionado de los MVP como un vector de movimiento para el PU asociado en la misma resolución del MVP seleccionado y apunta a la misma trama de referencia al cual apunta el MVP seleccionado. Al implementar el modo de fusión, el codificador de vídeo 20 puede no necesitar realizar una estimación de movimiento en la medida necesaria para derivar un vector de movimiento, especificar componentes horizontales y verticales del vector de movimiento, la resolución del vector de movimiento, la dirección del vector de movimiento (es decir, si el vector de movimiento apunta a una trama temporalmente antes o después de la trama actual) o el índice de la trama de referencia, lo que reduce de este modo potencialmente los ciclos del procesador requeridos para determinar un vector de movimiento y comprimir los datos del vector de movimiento.
[0041] El codificador de vídeo 20 también puede implementar un modo de predicción de vector de movimiento adaptativo (AMVP) que, similar al modo de fusión, incluye la expresión de vectores de movimiento como un índice que identifica un MVP almacenado en una lista de MVP construidos de la manera definida. Sin embargo, contrariamente al modo de fusión, el codificador de vídeo 20 también puede especificar la dirección de predicción y la trama de referencia, anulando de manera efectiva estas partes del MVP seleccionado. Al implementar el modo AMVP, el codificador de vídeo 20 puede no necesitar realizar una estimación de movimiento en la medida necesaria para derivar un vector de movimiento, especificar componentes horizontales y verticales del vector de movimiento y la resolución del vector de movimiento, reduciendo de este modo potencialmente los ciclos del procesador requeridos para determinar un vector de movimiento y comprimir los datos del vector de movimiento.
[0042] A medida que han evolucionado diversas normas de codificación, han evolucionado representaciones aún más eficientes de los vectores de movimiento. Por ejemplo, las propuestas para las normas emergentes de la HEVC han sugerido formas mediante las cuales el índice de MVP puede comprimirse a través de un proceso denominado "reducción" o "reducción de MVP". Al realizar este proceso de reducción, el codificador de vídeo 20 construye la lista de cinco MVP de la manera definida y entonces reduce o elimina cualquier MVP redundante. Es decir, el codificador de vídeo 20 puede eliminar cualquier MVP que tenga la misma amplitud en los componentes X e Y y hacer referencia a la misma trama de referencia, donde estos MVP se consideran como "MVP redundantes" en la presente divulgación. De forma alternativa, el codificador de vídeo 20 solo puede añadir MVP a la lista que sean "únicos", lo que significa que estos MVP tienen diferentes amplitudes en la dirección X e Y que cualquier otro MVP ya incluido en la lista y/o referencia una trama de referencia diferente. Ya sea que se reduzca después de añadirse a la lista o que se reduzca al crear la lista, el proceso de reducción puede reducir el tamaño de la lista con el resultado de que se pueden usar menos bits para señalar o especificar el MVP seleccionado, porque una lista más corta requiere en general un número menor de bits para expresar el mayor valor de índice.
5
10
15
20
25
30
35
40
45
50
55
60
65
[0043] Por ejemplo, supongamos, con fines de ilustración, que ninguno de los cinco MVP están reducidos. En este caso, el codificador de vídeo puede indicar un índice en esta lista de cinco MVP, para indicar que se debe seleccionar un MVP particular, usando un código unario truncado que comprenda como máximo cuatro bits. En las propuestas, el código unario truncado usado para señalar la selección del quinto MVP en la lista de cinco MVP es 1111, el cuarto MVP en la lista de cinco MVP es 1110, el tercer MVP en la lista de cinco MVP es 110, el segundo MVP en la lista de los cinco MVP es 10 y el primer MVP en la lista de los cinco MVP es 0. Sin embargo, si la lista de MVP puede reducirse a tres MVP (lo que significa que dos de los MVP son redundantes), el codificador de vídeo 20 puede usar un código unario truncado que consuma como máximo dos bits (por ejemplo, donde se puede señalar el tercer MVP usando un código de 11), ahorrando potencialmente un bit en los casos en las que no se emplee o no se pueda reducir (como cuando no hay MVP redundantes) y se selecciona el quinto o cuarto MVP en la lista de los cinco MVP. Hasta cierto punto, por lo tanto, el código depende del tamaño de la lista de MVP, donde una lista más pequeña de MVP (es decir, una lista con menos MVP) da como resultado un código más pequeño (lo que significa que el código requiere menos bits para expresar el MVP seleccionado de la lista de MVP reducidos).
[0044] Aunque la reducción puede mejorar la eficacia de codificación reduciendo las longitudes de código usadas para señalar un índice de un MVP seleccionado en la lista de MVP, esta reducción también puede afectar la capacidad del decodificador de vídeo 30 para analizar con éxito el flujo de bits. Debido a que el código depende del tamaño de la lista de MVP reducidos, el decodificador de vídeo 30 necesita saber el número de MVP que están en la lista de MVP reducidos. Sin embargo, cuando la trama de referencia desde la cual se pierde el MVP coubicado temporalmente, este MVP coubicado temporalmente no está disponible y el decodificador de vídeo 30 no puede determinar si este MVP es único o redundante. Como resultado, el decodificador de vídeo 30 no puede determinar si la lista reducida de MVP habría incluido este MVP coubicado temporalmente y, por lo tanto, no puede determinar el tamaño de la lista reducida de MVP. Al no poder determinar el tamaño de la lista reducida de MVP, el decodificador de vídeo 30 no puede determinar entonces una longitud máxima para el código, lo que a su vez impide que el decodificador de vídeo 30 pueda analizar el código a partir del flujo de bits.
[0045] De acuerdo con las técnicas descritas en la presente divulgación, el codificador de vídeo 20 puede especificar MVP de una manera potencialmente robusta, pero eficiente, reduciendo MVP espaciales redundantes sin incluir el MVP coubicado temporalmente durante el proceso de reducción. En otras palabras, el codificador de vídeo 20 puede implementar las técnicas descritas en la presente divulgación para formar una lista intermedia de MVP que incluya solo los MVP espaciales, realizar una reducción con respecto a esta lista intermedia de MVP y entonces combinar el MVP coubicado temporalmente con la lista intermedia reducida de MVP para formar la lista reducida de MVP. De esta manera, la pérdida de la trama de referencia que especifique el MVP coubicado temporalmente puede no evitar el análisis del flujo de bits, como es común en los sistemas convencionales, aunque se mantengan al menos algunas de las ganancias de eficacia de codificación habilitadas empleando el proceso de reducción.
[0046] Para ilustrar, el codificador de vídeo 20 determina primero vectores de movimiento candidatos espaciales asociados con una parte actual, tal como una CU, de una trama de vídeo actual. De nuevo, los vectores de movimiento candidatos espaciales incluyen vectores de movimiento vecinos determinados para las PU vecinas adyacentes a la PU actual asociada con la CU correspondiente. Típicamente, estas PU vecinas están situadas adyacentes a la PU actual a la izquierda, arriba y a la izquierda, directamente arriba y arriba y a la derecha, como se muestra con más detalle con respecto al ejemplo de la FIG. 6. El codificador de vídeo 20 usa estos vectores de movimiento candidatos espaciales, ya que estos vectores de movimiento candidatos espaciales ya se han determinado para estos bloques. Para cualquier bloque localizado directamente a la derecha o debajo de la PU actual, el codificador de vídeo 20 aún tiene que calcular un vector de movimiento para estos bloques teniendo en cuenta que el codificador de vídeo 20 realiza en general una estimación/compensación de movimiento de arriba a abajo, de izquierda a derecha. Sin embargo, aunque se describan con respecto a estos vectores de movimiento espaciales, las técnicas pueden implementarse en codificadores de vídeo 20 que realicen la estimación/compensación de movimiento en un orden diferente (por ejemplo, de arriba a abajo, de derecha a izquierda). Además, las técnicas pueden implementarse con respecto a vectores de movimiento más o menos espaciales o temporales.
[0047] Después de determinar estos vectores de movimiento espaciales, el codificador de vídeo 20 reduce entonces los vectores de movimiento candidatos espaciales para eliminar los duplicados de los vectores de movimiento candidatos espaciales. El codificador de vídeo 20 puede identificar vectores de movimiento candidatos espaciales duplicados como cualquiera de los vectores de movimiento espaciales candidatos que tengan la misma amplitud para los componentes tanto del eje x como del eje y de los vectores de movimiento candidatos y que procedan de la misma trama de referencia. El codificador de vídeo 20 realiza la reducción eliminando duplicados de lo que se puede denominar lista intermedia de vectores de movimiento candidatos espaciales o añadiendo solamente un vector de movimiento espacial candidato a esta lista intermedia al determinar que el vector de movimiento espacial candidato que se vaya a añadir a esta lista no es un duplicado.
[0048] Después de reducir los vectores de movimiento candidatos espaciales de esta manera, el codificador de vídeo 20 puede determinar entonces un vector de movimiento candidato temporal para la PU actual de la trama de vídeo actual. De nuevo, el vector de movimiento candidato temporal comprende un vector de movimiento
5
10
15
20
25
30
35
40
45
50
55
60
65
determinado para una PU de una trama de vídeo de referencia coubicada en una misma ubicación que la PU actual en la trama de vídeo actual. El codificador de vídeo 20 puede seleccionar entonces el vector de movimiento candidato temporal o uno de los vectores de movimiento candidatos espaciales restantes después de realizar el proceso de reducción como el vector de movimiento candidato seleccionado. El codificador de vídeo 20 señala entonces el vector de movimiento candidato seleccionado en el flujo de bits.
[0049] En algunos casos, el codificador de vídeo 20 puede determinar si cada uno de los vectores de movimiento candidatos espaciales determinados está predicho espacialmente o está predicho temporalmente. En otras palabras, los propios vectores de movimiento de candidatos espaciales determinados pueden estar predichos temporalmente desde un bloque coubicado en una trama de referencia o estar predichos espacialmente desde un bloque adyacente al bloque para el que se determina cada uno de los vectores de movimiento candidatos espaciales. El codificador de vídeo 20 puede, en respuesta a esta determinación, eliminar además uno o más de los vectores de movimiento candidatos espaciales determinados del proceso de reducción. El codificador de vídeo 20 puede, por ejemplo, eliminar aquellos de los vectores de movimiento candidatos espaciales que se determinen para estar predichos temporalmente a partir del proceso de reducción, ya que estos vectores de movimiento candidatos espaciales predichos temporalmente no estarán disponibles para el decodificador si se pierde la parte de la trama de referencia a partir del cual se predicen estos vectores de movimiento candidatos espaciales predichos temporalmente. El codificador de vídeo 20 puede seleccionar entonces los vectores de movimiento candidatos temporales, uno de los vectores de movimiento candidatos espaciales predichos temporalmente o uno de los vectores de movimiento candidatos espaciales predichos espacialmente restantes después de la reducción, y señalar este vector de movimiento candidato seleccionado en el flujo de bits.
[0050] De forma alternativa, el codificador de vídeo 20 puede, en lugar de eliminar vectores de movimiento candidatos espaciales predichos temporalmente del proceso de reducción, reemplazar estos vectores de movimiento candidatos espaciales predichos temporalmente con vectores de movimiento candidatos predeterminados que definan información de movimiento predeterminada. Esta información de vector de movimiento predeterminada puede comprender, por ejemplo, una amplitud de vector de movimiento, una dirección de predicción que identifique si la trama de referencia precede o sigue temporalmente la trama actual y un índice de referencia que identifique la trama de referencia. El codificador de vídeo 20 puede determinar esta información de vector de movimiento predeterminada tomando un promedio de esos vectores de movimiento candidatos espaciales predichos espacialmente disponibles, escogiendo el primer vector de movimiento candidato espacial predicho espacialmente disponible, o usando una información de vector de movimiento predeterminada que esté configurada estáticamente dentro de ambos codificadores de vídeo 20 y decodificadores de vídeo 30, por nombrar algunos ejemplos.
[0051] Eliminando aquellos de los vectores de movimiento candidatos espaciales que puedan perderse o no estar disponibles para el decodificador de vídeo 30 (por ejemplo, debido a errores en la transmisión de los datos de vídeo comprimidos o a errores de almacenamiento en el codificador de vídeo 20 o en el decodificador de vídeo 30) del proceso de reducción, el codificador de vídeo 20 puede señalar el vector de movimiento candidato seleccionado de tal manera que permita que el decodificador de vídeo 30 analice apropiadamente el flujo de bits en el caso de que estos vectores de movimiento candidatos espaciales predichos temporalmente se pierdan o no estén disponibles. Asimismo, como alternativa, reemplazando vectores de movimiento candidatos espaciales predichos temporalmente con un vector de movimiento candidato predeterminado, el codificador de vídeo 20 puede señalar el vector de movimiento candidato seleccionado de tal manera que permita al decodificador de vídeo 30 analizar correctamente el flujo de bits en caso de que estos vectores de movimiento candidatos espaciales predichos temporalmente se pierdan o no estén disponibles.
[0052] Típicamente, el codificador de vídeo 20 señala el vector de movimiento candidato seleccionado usando un código unario representativo de un índice del vector de movimiento candidato seleccionado como está dispuesto en una lista. El codificador de vídeo 20 puede disponer el vector de movimiento candidato temporal y los vectores de movimiento candidatos espaciales después de realizar el proceso de reducción de una manera establecida o definida (por ejemplo, de la amplitud más alta a la amplitud más baja, de la amplitud más baja a la amplitud más alta, el vector de movimiento temporal primero seguido de los vectores de movimiento espacial restantes ordenados desde la amplitud más alta a la más baja o desde la amplitud más baja a la más alta, etc.), formando una lista de vectores de movimiento candidatos. De forma alternativa, el codificador de vídeo 20 puede señalar algún identificador que indique cómo están dispuestos los vectores de movimiento en la lista. De todos modos, el codificador de vídeo 20 identifica entonces uno de los vectores de movimiento candidatos almacenados en esta lista, codificando el índice del vector de movimiento candidato seleccionado según se almacena en esta lista usando un código único de la manera descrita anteriormente.
[0053] El decodificador de vídeo 30 recibe este flujo de bits, decodifica el índice y forma la lista intermedia de vectores de movimiento candidatos espaciales, si está disponible. Como se indicó anteriormente, uno o más de los vectores de movimiento candidatos espaciales pueden no estar disponibles en casos donde el codificador de vídeo 20 empleó la predicción del vector de movimiento para codificar el vector de movimiento para el bloque vecino y seleccionó el vector de movimiento temporal, donde la trama de referencia que define este vector de movimiento temporal se perdió (por ejemplo, debido a daños en la memoria, a un error de bus o a un error de transmisión). De forma alternativa, uno o más de los vectores de movimiento candidatos espaciales pueden no estar disponibles
5
10
15
20
25
30
35
40
45
50
55
60
65
cuando el codificador de vídeo 20 empleó la predicción del vector de movimiento para codificar el vector de movimiento para esta PU vecina y seleccionó uno de los vectores de movimiento espaciales que fue el vector de movimiento predicho del vector de movimiento temporal , donde la trama de referencia que define este vector de movimiento temporal se perdió (por ejemplo, debido a daños en la memoria, a un error de bus o a un error de transmisión). El decodificador de vídeo 30 puede resolver este problema eliminando los vectores de movimiento candidatos predichos temporalmente no disponibles del proceso de reducción o, como alternativa, reemplazando estos vectores de movimiento candidatos espaciales predichos temporalmente no disponibles con un vector de movimiento candidato predeterminado. El decodificador de vídeo 30 a este respecto implementa las técnicas descritas anteriormente con respecto al codificador de vídeo 20 de una manera sustancialmente similar a fin de analizar correctamente el vector candidato de movimiento seleccionado del flujo de bits.
[0054] En cualquier caso, incluso suponiendo que se pierdan uno o más vectores de movimiento candidatos, las técnicas permiten que los MVP se señalen de una manera que facilite el análisis del flujo de bits. Garantizando que el vector de movimiento del candidato temporal siempre está presente en la lista después de la reducción, el codificador de vídeo 20 garantiza que el decodificador de vídeo 30 puede determinar el número de vectores de movimiento disponibles y de ese modo analizar el índice del flujo de bits. Asimismo, garantizando que los vectores de movimiento candidatos espaciales predichos temporalmente están siempre en la lista o reemplazados con vectores de movimiento candidatos predeterminados que el decodificador de vídeo 30 siempre puede reproducir, el codificador de vídeo 20 garantiza que el decodificador de vídeo 30 puede determinar el número de vectores de movimiento disponibles y analizar el índice del flujo de bits. De esta forma, incluso aunque se pierda el fragmento que almacena el vector de movimiento candidato temporal y/o el vector de movimiento candidato espacial predicho temporalmente, el decodificador de vídeo 30 aún puede analizar el flujo de bits independientemente de si se usan códigos unarios. En particular, el decodificador de vídeo 30 puede analizar el flujo de bits con el conocimiento de que el vector de movimiento candidato temporal y/o los vectores de movimiento candidatos espaciales predichos temporalmente siempre se incluyen en la lista de MVP y nunca se reducen de la lista de MVP. Como alternativa, donde los vectores de movimiento candidatos espaciales predichos temporalmente se reemplazan por vectores de movimiento candidatos predeterminados, el codificador de vídeo 20 garantiza efectivamente que dichos vectores de movimiento candidatos espaciales predichos temporalmente no pueden perderse, ya que el decodificador de vídeo 30 está configurado de tal manera que siempre será capaz de determinar estos vectores de movimiento usando las mismas técnicas que el codificador de vídeo 20 realizado para determinar este vector de movimiento candidato predeterminado.
[0055] Para ilustrar un caso en el que se pierde un vector de movimiento candidato temporal, tenga en cuenta un caso en el que las amplitudes de los vectores de movimiento candidatos espaciales son 1, 1, 1 y 1, y la amplitud del vector de movimiento candidato temporal es -1. El decodificador de vídeo 30 puede implementar las técnicas para formar una lista, que puede denominarse lista de MVP, con solo los vectores de movimiento candidatos espaciales, de manera que la lista de MVP sea 1, 1, 1 y 1. El decodificador reduce entonces esta lista de MVP solo espacial de manera que esta lista de MVP se define como 1. El decodificador añade entonces el vector de movimiento candidato temporal a la lista de MVP de manera que la lista de MVP se define como -1 y 1. El codificador puede señalar entonces un mvp_idx de 0 o 1 para indicar que se seleccionó uno de estos vectores de movimiento (o un mvp_idx de 0 y 10 si no se usa un código unario truncado). Con respecto a los códigos unarios descritos anteriormente, las técnicas de la presente divulgación eliminan la posibilidad de tener que inferir que solo estaba disponible un vector de movimiento candidato después de la reducción porque siempre habrá al menos un vector de movimiento candidato espacial y el vector de movimiento espacial candidato temporal.
[0056] De esta manera, las técnicas permiten que los codificadores de vídeo especifiquen MVP de una manera potencialmente robusta, pero eficiente al reducir los MVP espaciales redundantes sin considerar el MVP coubicado temporalmente durante el proceso de reducción. En otras palabras, las técnicas forman una lista intermedia de MVP que incluye solo los MVP espaciales, realizan la reducción con respecto a esta lista intermedia de MVP y luego añaden el MVP coubicado temporalmente a la lista intermedia de MVP para formar la lista de reducción de MVP. De esta manera, la pérdida de la trama de referencia que especifica el MVP coubicado temporalmente puede no evitar el análisis del flujo de bits, como es común en los sistemas convencionales, aunque se mantengan las ganancias de eficacia de codificación habilitadas empleando el proceso de reducción.
[0057] En algunos casos, las técnicas pueden aplicarse en otros contextos. Por ejemplo, una cuarta versión del modelo de prueba de HEVC (HM 4.0) propone la reducción de los MVP y entonces la adición de MVP adicionales si el número total de MVP restantes después de la reducción es inferior a cinco. En otras palabras, HM 4.0 reduciría los cinco MVP (es decir, uno temporal y cuatro espaciales) para producir una lista reducida de MVP. Si el número de MVP en esta lista reducida de MVP es menor que cinco, HM 4.0 añade MVP no redundantes hasta que el número total de MVP en la lista reducida sea igual a cinco. Estos MVP no redundantes pueden seleccionarse a partir de otros bloques espaciales o temporales o pueden generarse en base a MVP en la lista reducida de MVP (por ejemplo, seleccionar un componente y de un MVP en la lista reducida de MVP y un componente x de otro MVP diferente en la lista reducida de MVP). En este contexto, el codificador de vídeo puede implementar las técnicas descritas en la presente divulgación para seleccionar los MVP no redundantes adicionales de manera que solo se seleccionen y/o se usen MVP espaciales para generar estos MVP no redundantes adicionales.
5
10
15
20
25
30
35
40
45
50
55
60
65
[0058] Al seleccionar solamente los MVPS espaciales o al usar los MVP espaciales existentes restantes después de la reducción para generar estos MVP no redundantes adicionales, el codificador de vídeo puede garantizar que el decodificador de vídeo pueda determinar correctamente el MVP seleccionado. Es decir, al tener siempre cinco MVP, el codificador de vídeo garantiza que el decodificador de vídeo siempre pueda analizar el índice MVP del flujo de bits, pero si se pierde un MVP temporal, el decodificador de vídeo puede no ser capaz de construir con precisión la lista de MVP porque el MVP no puede determinar el orden de los MVP entre sí cuando se pierda un MVP temporal. Las técnicas descritas en la presente divulgación pueden reducir o eliminar potencialmente el impacto de perder MVP temporales al no seleccionar MVP temporales o MVP espaciales que se predijeron a partir de MVP temporales como MVP no redundantes adicionales.
[0059] Las técnicas para especificar predicciones de vector de movimiento descritas con respecto a los ejemplos de la presente divulgación pueden aplicarse a la codificación de vídeo para soportar cualquiera de una variedad de aplicaciones multimedia, tales como radiodifusiones de televisión por aire, transmisiones de televisión por cable, transmisiones de televisión por satélite, transmisiones de emisiones de vídeo, por ejemplo, a través de Internet, codificación de vídeo digital para el almacenamiento en un medio de almacenamiento de datos, decodificación de vídeo digital almacenado en un medio de almacenamiento de datos u otras aplicaciones. En algunos ejemplos, el sistema 10 puede configurarse para soportar la transmisión de vídeo unidireccional o bidireccional para aplicaciones tales como la transmisión continua de vídeo, la reproducción de vídeo, la radiodifusión de vídeo y/o la videotelefonía.
[0060] Aunque no se muestran en la FIG. 1, en algunos aspectos, cada uno del codificador de vídeo 20 y del decodificador de vídeo 30 puede estar integrado con un codificador y un decodificador de audio, y puede incluir unidades MUX-DEMUX apropiadas, u otro tipo de hardware y software, para manejar la codificación tanto de audio como de vídeo en un flujo de datos común o en flujos de datos independientes. Si procede, en algunos ejemplos, las unidades MUX-DEMUX pueden conformarse al protocolo de multiplexado ITU H.223 o a otros protocolos, tales como el protocolo de datagramas de usuario (UDP).
[0061] El codificador de vídeo 20 y el decodificador de vídeo 30 pueden implementarse como cualquiera de entre una variedad de circuitos adecuados de codificadores, tales como uno o más microprocesadores, procesadores de señales digitales (DSP), circuitos integrados específicos de la aplicación (ASIC), matrices de puertas programables de campo (FPGA), lógica discreta, software, hardware, firmware o cualquier combinación de los mismos. Cuando las técnicas se implementan parcialmente en software, un dispositivo puede almacenar instrucciones para el software en un medio adecuado no transitorio legible por ordenador y ejecutar las instrucciones en hardware usando uno o más procesadores para realizar las técnicas de esta divulgación. Cada uno del codificador de vídeo 20 y del decodificador de vídeo 30 puede estar incluido en uno o más codificadores o decodificadores, cualquiera de los cuales puede estar integrado como parte de un codificador/decodificador (CODEC) combinado en un respectivo dispositivo.
[0062] La FIG. 2 es un diagrama de bloques que ilustra un ejemplo de codificador de vídeo 20 que puede implementar técnicas para especificar predictores de vector de movimiento. El codificador de vídeo 20 puede realizar la intra y la intercodificación de bloques dentro de tramas de vídeo, incluidos macrobloques o particiones o subparticiones de macrobloques. La intracodificación se basa en la predicción espacial para reducir o eliminar la redundancia espacial en el vídeo en una trama de vídeo dada. La intercodificación se basa en la predicción temporal para reducir o eliminar la redundancia temporal en el vídeo dentro de tramas adyacentes de una secuencia de vídeo. El intramodo (modo I) puede referirse a cualquiera de varios modos de compresión con base espacial, y los intermodos tales como la predicción unidireccional (modo P) o la predicción bidireccional (modo B) pueden referirse a cualquiera de varios modos de compresión con base temporal. Aunque los componentes para la codificación de manera intermodal se representan en la FIG. 2, se entendería que el codificador de vídeo 20 puede incluir además componentes para la codificación de manera intramodal. Sin embargo, dichos componentes no se ilustran en aras de la brevedad y la claridad.
[0063] Como se muestra en la FIG. 2, el codificador de vídeo 20 recibe un bloque de vídeo actual dentro de una trama de vídeo que se vaya a codificar. En el ejemplo de la FIG. 2, el codificador de vídeo 20 incluye una unidad de compensación de movimiento 44, una unidad de estimación de movimiento 42, una memoria 64, un sumador 50, una unidad de procesamiento de transformada 52, una unidad de cuantificación 54 y una unidad de codificación por entropía 56. Para la reconstrucción de bloques de vídeo, el codificador de vídeo 20 incluye además la unidad de cuantificación inversa 58, la unidad de transformada inversa 60 y el sumador 62. También puede incluirse un filtro de desbloqueo (no mostrado en la FIG. 2) para filtrar límites de bloque para eliminar distorsiones de efecto pixelado del vídeo reconstruido. Si se desea, el filtro de desbloqueo filtrará típicamente la salida del sumador 62. Aunque se describe como que incluye una memoria 64, que en general se refiere a una memoria de acceso aleatorio (RAM), a una RAM dinámica (DRAM), a una RAM estática (SRAM), a una memoria Flash o a otro medio de almacenamiento basado en chip persistente o no persistente, puede utilizarse cualquier tipo de medio transitorio legible por ordenador, incluidos discos duros, unidades ópticas, unidades de disco y similares.
[0064] Durante el proceso de codificación, el codificador de vídeo 20 recibe una trama o un fragmento de vídeo que se vaya a codificar. La trama o el fragmento puede estar dividido en múltiples bloques de vídeo. La unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 realizan una codificación
5
10
15
20
25
30
35
40
45
50
55
60
65
interpredictiva del bloque de vídeo recibido con respecto a uno o más bloques de una o más tramas de referencia para proporcionar una compresión temporal. La unidad de intrapredicción 46 también puede llevar a cabo una codificación intrapredictiva del bloque de vídeo recibido con respecto a uno o más bloques vecinos de la misma trama o fragmento que el bloque que se vaya a codificar para proporcionar compresión espacial.
[0065] Como se muestra además en el ejemplo de la FIG. 2, el codificador de vídeo 20 también incluye una unidad de selección de modo 40. La unidad de selección de modo 40 puede seleccionar uno de los modos de codificación, intra o inter, por ejemplo, basados en los resultados de errores, y proporciona el bloque intracodificado o intercodificado resultante al sumador 50 para generar datos de bloques residuales y al sumador 62 para reconstruir el bloque codificado para su uso como una trama de referencia.
[0066] La unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 pueden estar altamente integradas, pero se ilustran por separado con fines conceptuales. La estimación de movimiento es el proceso de generar vectores de movimiento, que estimen el movimiento para los bloques de vídeo. Un vector de movimiento, por ejemplo, puede indicar el desplazamiento de un bloque predictivo de una trama de referencia predictiva (u otra unidad codificada) con respecto al bloque actual que esté codificándose en la trama actual (u otra unidad codificada). Un bloque predictivo es un bloque que se revela estrechamente coincidente con el bloque que se vaya a codificar en lo que respecta a la diferencia de píxeles, lo que puede determinarse mediante la suma de una diferencia absoluta (SAD), una suma de diferencia de cuadrados (SSD) u otras mediciones de diferencia. Un vector de movimiento también puede indicar el desplazamiento de una partición de un macrobloque. La compensación de movimiento puede implicar buscar o generar el bloque predictivo basado en el vector de movimiento determinado por la estimación de movimiento. De nuevo, la unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 pueden integrarse funcionalmente, en algunos ejemplos.
[0067] La unidad de estimación de movimiento 42 calcula un vector de movimiento para el bloque de vídeo de una trama intercodificada comparando el bloque de vídeo con los bloques de vídeo de una trama de referencia en la memoria 64. La unidad de compensación de movimiento 44 también puede interpolar píxeles subenteros de la trama de referencia, por ejemplo, una trama I o una trama P. La norma HEVC emergente (y la norma ITU H.264) almacena tramas de referencia por medio de una o más estructuras de datos de listas, que comúnmente se conocen como "listas". Por lo tanto, los datos almacenados en la memoria 64 también se pueden considerar listas. La unidad de estimación de movimiento 42 compara bloques de una o más tramas de referencia (o listas) desde la memoria 64 a un bloque que se vaya a codificar de una trama actual, por ejemplo, una trama P o una trama B. Cuando las tramas de referencia en la memoria de imágenes de referencia 64 incluyen valores para píxeles de subenteros, un vector de movimiento calculado por la unidad de estimación de movimiento 42 puede referirse a una ubicación de píxel subentero de una trama de referencia. La unidad de estimación de movimiento 42 envía el vector de movimiento calculado a la unidad de codificación por entropía 56 y a la unidad de compensación de movimiento 44. El bloque de tramas de referencia (que puede comprender una CU) identificado por un vector de movimiento se puede denominar bloque predictivo. La unidad de compensación de movimiento 44 calcula valores de error para el bloque predictivo de la trama de referencia.
[0068] La unidad de compensación de movimiento 44 puede calcular los datos de predicción en base al bloque predictivo. El codificador de vídeo 20 forma un bloque de vídeo residual sustrayendo los datos de predicción desde la unidad de compensación de movimiento 44 del bloque de vídeo original que se esté codificando. El sumador 50 representa el componente o los componentes que realizan esta operación de sustracción. La unidad de transformada 52 aplica una transformada, tal como una transformada de coseno discreta (DCT) o una transformada conceptualmente similar, al bloque residual, produciendo un bloque de vídeo que comprende valores de coeficientes de transformada residuales. La unidad de transformada 52 puede realizar otras transformadas, tales como las definidas por la norma H.264, que son conceptualmente similares a la DCT. También podrían usarse transformadas de ondículas, transformadas de enteros, transformadas de subbandas u otros tipos de transformadas. En cualquier caso, la unidad de transformada 52 aplica la transformada al bloque residual, produciendo un bloque de coeficientes de transformada residuales. La transformada puede convertir la información residual desde un dominio de valores de píxel en un dominio de transformadas, tal como un dominio de frecuencia. La unidad de cuantificación 54 cuantifica los coeficientes de transformada residuales para reducir más la tasa de bits. El proceso de cuantificación puede reducir la profundidad de bits asociada con algunos o con la totalidad de los coeficientes. El grado de cuantificación puede modificarse ajustando un parámetro de cuantificación.
[0069] Tras la cuantificación, la unidad de codificación por entropía 56 realiza la codificación por entropía de los coeficientes de transformada cuantificados. Por ejemplo, la unidad de codificación por entropía 56 puede realizar una codificación de longitud variable adaptativa al contenido (CAVLC), una codificación aritmética binaria adaptativa al contexto (CABAC) u otra técnica de codificación por entropía. Tras la codificación por entropía realizada por la unidad de codificación por entropía 56, el vídeo codificado puede transmitirse a otro dispositivo o archivarse para su transmisión o recuperación posterior. En el caso de una codificación aritmética binaria adaptativa de contexto, el contexto puede basarse en macrobloques vecinos.
[0070] En algunos casos, la unidad de codificación por entropía 56 u otra unidad de codificador de vídeo 20 puede estar configurada para realizar otras funciones de codificación, además de la codificación por entropía. Por ejemplo,
5
10
15
20
25
30
35
40
45
50
55
60
65
la unidad de codificación por entropía 56 puede estar configurada para determinar los valores CBP para los macrobloques y las particiones. También, en algunos casos, la unidad de codificación por entropía 56 puede realizar una codificación de longitud de ejecución de los coeficientes en un macrobloque o partición del mismo. En particular, la unidad de codificación por entropía 56 puede aplicar un escaneado en zigzag u otro patrón de escaneado para escanear los coeficientes de transformada en un macrobloque o partición y codificar secuencias de ceros para una mayor compresión. La unidad de codificación por entropía 56 también puede construir la información de cabecera con los elementos sintácticos apropiados para la transmisión en el flujo de bits de vídeo codificado.
[0071] La unidad de cuantificación inversa 58 y la unidad de transformada inversa 60 aplican la cuantificación inversa y la transformada inversa, respectivamente, para reconstruir el bloque residual en el dominio de píxeles, por ejemplo, para su uso posterior como un bloque de referencia. La unidad de compensación de movimiento 44 puede calcular un bloque de referencia añadiendo el bloque residual a un bloque predictivo de una de las tramas de una memoria de tramas de referencia 64. La unidad de compensación de movimiento 44 también puede aplicar uno o más filtros de interpolación al bloque residual reconstruido para calcular valores de píxeles subenteros para su uso en la estimación de movimiento. El sumador 62 añade el bloque residual reconstruido al bloque de predicción compensado por movimiento, producido por la unidad de compensación de movimiento 44 para generar un bloque de vídeo reconstruido para su almacenamiento en la memoria de tramas de referencia 64. El bloque de vídeo reconstruido puede usarse por la unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 como un bloque de referencia para intercodificar un bloque en una trama de vídeo siguiente.
[0072] Como se indicó anteriormente, la unidad de estimación de movimiento 42 puede, en algunos casos, no calcular un vector de movimiento sino, en su lugar, determinar una lista de predictores de vector de movimiento, cuatro de los cuales son vectores de movimiento candidatos espaciales y uno de los cuales es un vector de movimiento candidato temporal. Típicamente, la unidad de estimación de movimiento 42 renuncia al cálculo del vector de movimiento a fin de reducir la complejidad de cálculo de la estimación de movimiento y de ese modo mejorar la velocidad con la que pueden codificarse los datos de vídeo mientras también se reduce el consumo de energía. De acuerdo con las técnicas descritas en la presente divulgación, la unidad de estimación de movimiento 42 puede determinar una lista intermedia de cuatro vectores de movimiento candidatos espaciales (o menos al determinar que uno o más de los vectores de movimiento candidatos espaciales están predichos temporalmente, donde dichos vectores de movimiento candidatos espaciales predichos temporalmente se eliminan del proceso de reducción), reducir esta lista de vectores de movimiento candidatos espaciales (potencialmente solo predichos espacialmente) y añadir el vector de movimiento candidato temporal (y potencialmente los vectores de movimiento candidatos espaciales predichos temporalmente) a la lista reducida de (potencialmente solo predichos temporalmente) vectores de movimiento de candidatos espaciales. De forma alternativa, la unidad de estimación de movimiento 42 puede determinar una lista intermedia de cuatro (cuando reemplazan estos vectores de movimiento candidatos espaciales predichos temporalmente con vectores de movimiento candidatos predeterminados) vectores de movimiento candidatos espaciales, reducir esta lista de vectores de movimiento candidatos espaciales (incluyendo uno o más de los vectores de movimiento candidatos predeterminados) y añadir el vector de movimiento candidato temporal a la lista reducida de vectores de movimiento candidatos espaciales. La unidad de estimación de movimiento 42 puede emitir esta lista que incluye el candidato de vector de movimiento temporal y el candidato de vector de movimiento espacial reducido a la unidad de compensación de movimiento 44.
[0073] La unidad de compensación de movimiento 44 puede identificar entonces un bloque de tramas de referencia (que, de nuevo, puede denominarse bloque de predicción) para cada vector de movimiento candidato incluido en la lista. La unidad de compensación de movimiento 44 puede calcular entonces datos de predicción basados en el bloque predictivo determinado para cada uno de los vectores de movimiento candidatos. El codificador de vídeo 20 puede determinar entonces los datos residuales para cada uno de los datos de predicción calculados para uno correspondiente de los vectores de movimiento candidatos, transformar los datos residuales, cuantificar los datos residuales transcodificados y entonces codificar en entropía los datos residuales cuantificados de la manera descrita anteriormente. El codificador de vídeo 20 puede realizar entonces operaciones inversas para decodificar estos datos residuales codificados por entropía generados con respecto a la enseñanza de los vectores de movimiento candidatos restantes después de la reducción para reproducir los datos de referencia en forma de bloques de vídeo reconstruidos. La unidad de selección de modo 40 puede analizar cada uno de los bloques de vídeo reconstruidos generados con respecto a cada uno de los vectores de movimiento candidatos para seleccionar uno de los vectores de movimiento candidatos. La unidad de selección de modo 40 puede seleccionar uno de los vectores de movimiento candidatos que proporcione la mejor relación de "velocidad-distorsión" a través de un proceso comúnmente denominado "optimización de la velocidad-distorsión, que se abrevia típicamente como "RDO".
[0074] RDO implica en general comparar una trama reconstruida, fragmento o bloque comprimido para lograr una cierta velocidad (que se refiere en general a una tasa de bits a la que pueden enviarse los datos de vídeo comprimidos que incluyan la trama comprimida, fragmento o bloque) con el trama, fragmento o bloque original y determinar una cantidad de distorsión entre la trama original, el fragmento o el bloque y la trama reconstruida, fragmento o bloque a la velocidad dada. La unidad de selección de modo 40 puede codificar los mismos datos de vídeo usando múltiples mediciones diferentes que logren o intenten alcanzar una velocidad dada, realizando el proceso de optimización de la distorsión con respecto a estas diversas mediciones. En este caso, la unidad de
5
10
15
20
25
30
35
40
45
50
55
60
65
selección de modo 40 puede comparar la salida RD de cada bloque de vídeo reconstruido y seleccionar el que proporcione la menor distorsión a la velocidad objetivo.
[0075] La unidad de selección de modo 40 puede indicar entonces esta selección a la unidad de estimación de movimiento 42, que procede a interconectarse con la unidad de codificación por entropía 56 para informar a la unidad de codificación por entropía 56 de la selección. Típicamente, la unidad de estimación de movimiento 42 se interconecta con la unidad de codificación por entropía 56 para indicar que la predicción de vector de movimiento se realizó junto con el índice que identifica el vector de movimiento candidato seleccionado. Como se indicó anteriormente, la unidad de estimación de movimiento 42 puede disponer vectores de movimiento candidatos de una manera definida, tal como por la amplitud más alta a la amplitud más baja o la amplitud más baja a la amplitud más alta o de cualquier otra manera definida. De forma alternativa, la unidad de estimación de movimiento 42 también puede señalar a la unidad de codificación por entropía 56 de una forma en la que los vectores de movimiento candidatos se dispusieron en esta lista, que también se puede denominar lista de MVP. La unidad de codificación por entropía 56 puede codificar este índice usando un código unario o un código unario truncado junto con cualquier otra información que pueda ser necesaria para indicar que el MVP se realizó para codificar datos de movimiento. La unidad de codificación por entropía 56 puede emitir el índice codificado como un elemento de sintaxis (que puede designarse como "mvp_idx") en un flujo de bits, que puede almacenarse o transmitirse de la manera descrita anteriormente con respecto al ejemplo de la FIG. 1.
[0076] En algunos casos, la unidad de codificación por entropía 56 realiza una forma de codificación por entropía denominada codificación aritmética binaria adaptativa al contexto (CABAC). Al realizar la CABAC, la unidad de codificación por entropía 56 puede seleccionar uno de una pluralidad de los denominados contextos (que son tablas de códigos diferentes especificadas para diferentes contextos para comprimir más eficientemente datos de vídeo asociados con el contexto correspondiente) y codifica los datos residuales comprimidos de acuerdo con la tabla de códigos definida para el contexto seleccionado. La unidad de codificación por entropía 56 puede seleccionar uno de los contextos basados en información de contexto, que puede incluir el índice de referencia determinado al realizar la predicción de vector de movimiento, el número de candidatos de vectores de movimiento únicos y la dirección de predicción determinada al realizar la predicción de vector de movimiento.
[0077] La FIG. 3 es un diagrama de bloques que ilustra un ejemplo del decodificador de vídeo 30, que decodifica una secuencia de vídeo codificada. En el ejemplo de la FIG. 3, el decodificador de vídeo 30 incluye una unidad de decodificación por entropía 70, una unidad de compensación de movimiento 72, una unidad de intrapredicción 74, una unidad de cuantificación inversa 76, una unidad de transformada inversa 78, una memoria 82 y un sumador 80. El decodificador de vídeo 30 puede, en algunos ejemplos, realizar un paso de decodificación en general recíproca al paso de codificación descrito con respecto a un codificador de vídeo, tal como el codificador de vídeo 20 mostrado en los ejemplos de las FIGS. 1 y 2. Aunque es en general recíproco, el decodificador 30, puede, en algunos casos, realizar técnicas similares a las realizadas por el codificador de vídeo 20. En otras palabras, el decodificador de vídeo 30 puede realizar procesos sustancialmente similares a los realizados por el codificador de vídeo 20. Además, como se describió anteriormente, el codificador de vídeo 20 puede realizar la decodificación de vídeo en el proceso de realizar la codificación de vídeo. Para ilustrar, la unidad de cuantificación inversa 58, la unidad de transformada inversa 60 y el sumador 62 del codificador de vídeo 20 pueden realizar operaciones sustancialmente similares a la unidad de cuantificación inversa 76, a la unidad de transformada inversa 78 y al sumador 80 del decodificador de vídeo 30.
[0078] Como se muestra en el ejemplo de la FIG. 3, la unidad de decodificación de entropía 70 recibe un flujo de bits codificado, que se supone que incluye un índice unario o unario truncado codificado que identifica un vector de movimiento candidato seleccionado (donde, de nuevo, estos vectores de movimiento candidatos pueden denominarse predictores de vector de movimiento o MVP). La unidad decodificadora por entropía 70 puede, al realizar un proceso en general recíproco a la unidad de codificación por entropía 56 del codificador de vídeo 20, recibir un elemento sintáctico u otros datos de codificación para la PU actual indicando que la predicción de vector de movimiento se realizó para determinar un vector de movimiento para la PU actual. En respuesta a este elemento de sintaxis o a otros datos de codificación, la unidad decodificadora por entropía 70 determina las técnicas descritas en la presente divulgación para determinar el número de vectores de movimiento candidatos restantes después de la reducción para analizar correctamente el código unario o unario truncado del flujo de bits.
[0079] Para determinar el número de vectores de movimiento candidatos, la unidad de codificación por entropía 70 puede interconectarse con la unidad de compensación de movimiento 72, instruir la unidad de compensación de movimiento 72 para determinar el número de vectores de movimiento candidatos de acuerdo con las técnicas descritas en la presente divulgación. La unidad de compensación de movimiento 72 recupera vectores de movimiento candidatos espaciales para PU adyacentes a la PU actual y un vector de movimiento candidato temporal para una PU coubicada en la trama de referencia. La unidad de codificación por entropía 70 puede proporcionar la unidad de compensación de movimiento 72 con la trama de referencia identificada para la PU actual (típicamente como otro elemento de sintaxis en el flujo de bits). De forma alternativa, la unidad de compensación de movimiento 72 puede configurarse con respecto al modo AMVP o fusionarse para recuperar el vector de movimiento candidato temporal de una trama de referencia identificada de una manera establecida (por ejemplo, tal como uno, dos o cualquier otro número hacia atrás o hacia adelante desde la trama actual en la que se encuentre la PU actual).
5
10
15
20
25
30
35
40
45
50
55
60
65
[0080] La unidad de compensación de movimiento 72 puede construir entonces la lista intermedia que incluye los cuatro vectores de movimiento candidatos espaciales (o menos al determinar que uno o más de los vectores de movimiento candidatos espaciales están predichos temporalmente, donde dichos vectores de movimiento candidatos espaciales predichos temporalmente se eliminan del proceso de reducción), reducir esta lista de vectores de movimiento candidatos espaciales (potencialmente solo predichos espacialmente) y combinar el vector de movimiento candidato temporal (y vectores de movimiento candidatos espaciales predichos temporalmente) con esta lista reducida de vectores de movimiento candidatos espaciales (potencialmente solo predichos espacialmente) de una manera sustancialmente similar a la descrita anteriormente con respecto a la unidad de compensación de movimiento 44 del codificador de vídeo 20. De forma alternativa, la unidad de compensación de movimiento 72 puede determinar una lista intermedia de cuatro vectores de movimiento candidatos espaciales (reemplazando vectores de movimiento candidatos espaciales predichos temporalmente con vectores de movimiento candidatos predeterminados), reducir esta lista de vectores de movimiento candidatos espaciales (incluyendo uno o más de los vectores de movimiento candidatos predeterminados) y combinar el vector de movimiento candidato temporal con la lista reducida de vectores de movimiento candidatos espaciales de una manera sustancialmente similar a la descrita anteriormente con respecto a la unidad de compensación de movimiento 44 del codificador de vídeo 20. En cada caso, la unidad de compensación de movimiento 72 emite esta lista de vectores de movimiento candidatos determinados después de realizar la reducción como una lista reducida de MVP. Después de generar esta lista reducida de MVP, la unidad de compensación de movimiento 72 cuenta el número de vectores de movimiento candidatos en esta lista y señala este número a la unidad de codificación por entropía 70. La unidad de codificación por entropía 70 puede analizar entonces apropiadamente el índice codificado unario o unario truncado a partir del flujo de bits proporcionado por las razones descritas anteriormente. [bueno]
[0081] Después de analizar el índice codificado unario o unario truncado, la unidad de codificación por entropía 70 puede decodificar entonces el índice codificado unario o unario truncado para generar un índice en la lista de MVP. La unidad de codificación por entropía 70 pasa entonces este índice a la unidad de compensación de movimiento 72, que selecciona entonces uno de los vectores de movimiento candidatos de la lista reducida de MVP identificada por el índice. Para un bloque intercodificado, la unidad de compensación de movimiento 72 puede generar entonces datos de interpredicción basados en el vector de movimiento identificado. La unidad de compensación de movimiento 72 puede usar este vector de movimiento para identificar un bloque de predicción en tramas de referencia almacenados en la memoria 82. Para bloques intracodificados, la unidad de intrapredicción 74 puede usar modos de intrapredicción recibidos en el flujo de bits para formar un bloque de predicción a partir de bloques adyacentes espacialmente. La unidad de cuantificación inversa 76 cuantifica de manera inversa, es decir, descuantifica, los coeficientes de bloque cuantificados proporcionados en el flujo de bits y decodificados por la unidad de decodificación por entropía 70. El proceso de cuantificación inversa puede incluir un proceso convencional, por ejemplo, como el definido por la norma de decodificación H.264. El proceso de cuantificación inversa también puede incluir el uso de un parámetro de cuantificación QP y calculado por un sumador 50 para que cada macrobloque determine el grado de cuantificación y, asimismo, un grado de cuantificación inversa que debería aplicarse.
[0082] La unidad de transformada inversa 60 aplica una transformada inversa, por ejemplo, una DCT inversa, una transformada inversa entera o un proceso de transformada inversa conceptualmente similar a los coeficientes de transformada, a fin de producir bloques residuales en el dominio de píxeles. La unidad de compensación de movimiento 72 genera bloques compensados por movimiento, posiblemente realizando una interpolación basada en filtros de interpolación. Los identificadores de los filtros de interpolación que vayan a usarse para la estimación de movimiento con una precisión de subpíxel pueden incluirse en los elementos sintácticos. La unidad de compensación de movimiento 72 puede usar filtros de interpolación como los usados por el codificador de vídeo 20 durante la codificación del bloque de vídeo para calcular valores interpolados para subenteros de píxeles de un bloque de referencia. La unidad de compensación de movimiento 72 puede determinar los filtros de interpolación usados por el codificador de vídeo 20 de acuerdo con la información sintáctica recibida y usar los filtros de interpolación para generar bloques predictivos.
[0083] La unidad de compensación de movimiento 72 usa parte de la información de sintaxis para determinar los tamaños de las CU usadas para codificar trama(s) de la secuencia de vídeo codificada, información de partición que describe cómo se divide cada CU de una trama de la secuencia de vídeo codificada, modos que indican cómo cada CU está codificada, una o más tramas de referencia (o listas) para cada CU intercodificada, y otra información para decodificar la secuencia de vídeo codificada.
[0084] El sumador 80 suma los bloques residuales a los bloques de predicción correspondientes generados por la unidad de compensación de movimiento 72 o por la unidad de intrapredicción para generar bloques decodificados. Si se desea, también puede aplicarse un filtro de desbloqueo para filtrar los bloques decodificados con el fin de eliminar distorsiones de efecto pixelado. Los bloques de vídeo decodificados se almacenan entonces en un almacén de tramas de referencia en la memoria 82, que puede denominarse memoria intermedia decodificada en la norma HEVC, que proporciona bloques de referencia para la compensación de movimiento posterior y también produce el vídeo decodificado para su presentación en un dispositivo de visualización (tal como el dispositivo de visualización 32 de la FIG. 1).
5
10
15
20
25
30
35
40
45
50
55
60
65
[0085] En algunos casos, el vector de movimiento candidato temporal puede no estar disponible, tal como cuando se pierde un fragmento que especifica el vector de movimiento candidato temporal, es decir, no se recupera ni se recibe en el flujo de bits codificado como un ejemplo. Cuando este vector de movimiento candidato temporal no está disponible, la unidad de compensación de movimiento 72 puede establecer este vector de movimiento candidato temporal en un valor predeterminado o determinar por el contrario la información de vector de movimiento predeterminada para este vector de movimiento candidato temporal. En algunos casos, esta información de vector de movimiento predeterminada para el vector de movimiento candidato temporal se puede reconstruir dependiendo de si la trama de referencia estaba intracodificada. Cuando se determina que la trama de referencia está intracodificada, la unidad de compensación de movimiento 72 puede derivar la información de vector de movimiento predeterminada para un vector de movimiento candidato predeterminado basado en vectores de movimiento espaciales determinados para la parte de la trama de referencia coubicada en la misma ubicación de la trama de referencia ya que la parte actual está en la trama actual. Asimismo, uno o más de los vectores de movimiento candidatos espaciales predichos temporalmente pueden no estar disponibles o perderse y pueden derivar la información de vector de movimiento predeterminada para un vector de movimiento candidato predeterminado basado en vectores de movimiento espaciales determinados para la parte de la trama de referencia coubicada en la misma ubicación de la trama de referencia que la parte actual en la trama actual.
[0086] Diversos aspectos de las técnicas expuestas en la presente divulgación también pueden abordar los problemas que se produzcan cuando se realice la CABAC o cualquier otro proceso de codificación estadística sin pérdida de contexto como resultado de vectores de movimiento candidatos espaciales que se predijeron a partir de vectores de movimiento temporales perdidos o desaparecidos. La unidad de codificación por entropía 70 puede, de acuerdo con estos aspectos de las técnicas, superar este problema desactivando el vector de movimiento de candidato espacial perdido. De forma alternativa, la unidad de codificación por entropía 70 puede reemplazar este vector de movimiento de candidato espacial perdido con información de movimiento predeterminada. La unidad de codificación por entropía 70 puede interactuar con la unidad de compensación de movimiento 72 para determinar esta información de movimiento predeterminada. Esta información de movimiento predeterminada puede especificar un vector de movimiento predeterminado, una dirección de predicción y un índice de referencia. En algunos casos, la unidad de compensación de movimiento 72 genera esta información de movimiento de reemplazo basada en un tipo de fragmento (que indica si el fragmento actual está intra o interpredicho, etc.), una profundidad de CU actual (como en una profundidad de la CU en la jerarquía en árbol cuádruple indicada anteriormente en la que reside la PU actual), un tamaño de PU actual o cualquier otra información disponible. La unidad de compensación de movimiento 72 puede proporcionar entonces esta información de movimiento predeterminada a la unidad de codificación por entropía 70. Al utilizar esta información de movimiento predeterminada, la unidad de codificación por entropía 70 aún puede realizar el proceso de CABAC.
[0087] Las técnicas descritas en la presente divulgación, en algunos ejemplos, también pueden resolver problemas que surjan cuando la unidad de compensación de movimiento 72 no pueda determinar si un vector de movimiento candidato espacial se predijo a partir de un vector de movimiento candidato espacial o de un vector de movimiento candidato temporal (como cuando se perdió su vector de movimiento candidato temporal). En estos casos cuando uno de los vectores de movimiento candidatos espaciales no está disponible, la unidad de compensación de movimiento 72 puede implementar las técnicas de la presente divulgación para desactivar la predicción de vector de movimiento espacial (y de este modo utilizar el vector de movimiento candidato temporal coubicado independientemente de lo señalado por el codificador). De forma alternativa, la unidad de compensación de movimiento 72 puede determinar la información de movimiento predeterminada de la manera descrita anteriormente.
[0088] Las técnicas pueden superar además los problemas que se produzcan cuando la unidad de compensación de movimiento 72 no pueda determinar si un vector de movimiento candidato espacial se predijo a partir de un vector de movimiento candidato temporal (como cuando se perdió su vector de movimiento candidato temporal). En estos casos, cuando uno de los vectores candidatos de movimiento espacial no está disponible, la unidad de compensación de movimiento 72 puede implementar las técnicas de la presente divulgación para desactivar la predicción de vector de movimiento espacial (y utilizar de este modo el vector de movimiento candidato temporal coubicado independientemente de lo que se señaló por el codificador). De forma alternativa, la unidad de compensación de movimiento 72 puede determinar información de movimiento predeterminada de la manera descrita anteriormente, ya sea realizando la reducción con respecto a esta información de movimiento predeterminada del vector de movimiento candidato predeterminado o eliminando de la reducción por completo este vector de movimiento candidato predeterminado (pero especificándolo por separado para habilitar el análisis del flujo de bits).
[0089] Como se señaló anteriormente, hay dos tipos de predicción de vectores de movimiento: modo de fusión y AMVP. Para el modo de fusión, la unidad de compensación de movimiento 72 determina la amplitud del vector de movimiento, la dirección de predicción y el índice de referencia cuando se determina la información de movimiento predeterminada. Para la AMVP, la unidad de compensación de movimiento 72 determina una amplitud de vector de movimiento pero no necesita determinar la dirección de predicción y el índice de referencia ya que estos se señalan por separado en el flujo de bits para la PU actual. Por tanto, la unidad de compensación de movimiento 72 puede
5
10
15
20
25
30
35
40
45
50
55
60
65
basar la determinación de la información de movimiento predeterminada basada en el modo señalado para realizar la predicción de vector de movimiento, es decir, si el tipo de predicción de vector de movimiento señalado es el modo de fusión o la AMVP para la PU actual.
[0090] La FIG. 4 es un diagrama de flujo que ilustra el funcionamiento a modo de ejemplo de un codificador de vídeo, tal como el codificador de vídeo 20 mostrado en el ejemplo de la FIG. 2, al realizar las técnicas de predicción del vector de movimiento descritas en la presente divulgación. Inicialmente, la unidad de estimación de movimiento 42 puede, como se describió anteriormente, determinar vectores de movimiento candidatos espaciales para una PU actual correspondiente a una CU actual (90). La unidad de estimación de movimiento 42 puede crear una instancia de lo que puede denominarse lista intermedia o lista de MVP espacial intermedia que almacene estos vectores de movimiento candidatos espaciales. La unidad de estimación de movimiento 42 puede reducir entonces vectores de movimiento candidatos espaciales redundantes en una de las formas descritas anteriormente (92). En este sentido, la unidad de estimación de movimiento 42 puede generar una lista MVP espacial intermedia de los vectores de movimiento candidatos espaciales restantes.
[0091] Después de generar esta lista de MVP espacial intermedia de vectores de movimiento candidatos espaciales restantes, la unidad de estimación de movimiento 42 puede determinar un vector de movimiento candidato temporal para la PU actual de una PU coubicada en una trama de referencia, nuevamente, como se describió anteriormente (94). A continuación, la unidad de estimación de movimiento 42 puede formar una lista de MVP para incluir los vectores de movimiento candidatos espaciales restantes y el vector de movimiento candidato temporal (96). La unidad de estimación de movimiento 42 puede proporcionar esta lista de MVP a la unidad de compensación de movimiento 44, que realiza la compensación de movimiento de la manera descrita anteriormente con respecto a cada vector de movimiento candidato incluido en la lista de MVP. El codificador de vídeo 20 genera entonces datos residuales basados en los datos de predicción generados por medio de la compensación de movimiento realizada con respecto a cada uno de los vectores de movimiento candidatos incluidos en la lista de MVP. El codificador de vídeo 20 aplica una o más transformadas a los datos residuales, cuantifica los datos residuales transformados y entonces reconstruye los datos residuales. Los datos residuales reconstruidos se aumentan entonces por datos de predicación generados basados en cada uno de los vectores de movimiento candidatos incluidos en la lista de MVP para generar datos de vídeo reconstruidos.
[0092] La unidad de selección de modo 40 puede seleccionar entonces uno de los vectores de movimiento candidatos de la lista de MVP para la PU actual basada en los datos de vídeo reconstruidos (98). Por ejemplo, la unidad de selección de modo 40 puede realizar alguna forma de análisis de distorsión de velocidad sobre los datos de vídeo reconstruidos con respecto a cada uno de los vectores de movimiento candidatos en la lista de MVP y seleccionar uno de los vectores de movimiento candidatos de la lista que proporcione la mejor medición velocidad- distorsión. La unidad de selección de modo 40 puede interactuar entonces con la unidad de estimación de movimiento 42 para indicar su selección de vector de movimiento candidato. La unidad de estimación de movimiento 42 puede determinar entonces un índice en la lista de MVP que identifique el seleccionado de los vectores de movimiento candidatos, como se describió anteriormente (100). La unidad de estimación de movimiento 42 puede proporcionar entonces este índice a la unidad de codificación por entropía 56. La unidad de codificación por entropía 56 puede codificar entonces el índice que identifique el seleccionado de los vectores de movimiento candidatos en la lista de MVP, como se describió con más detalle anteriormente (102). La unidad de codificación por entropía 56 inserta entonces el índice codificado en el flujo de bits (104).
[0093] La FIG. 5 es un diagrama de flujo que ilustra el funcionamiento a modo de ejemplo de un decodificador de vídeo, tal como el decodificador de vídeo 30 mostrado en el ejemplo de la FIG. 3, en la implementación de las técnicas de predicción de vector de movimiento descritas en la presente divulgación. Como se describió anteriormente, la unidad de decodificación por entropía 70 del decodificador de vídeo 30 recibe inicialmente un flujo de bits que incluye un índice codificado, que comúnmente se denomina por su nombre de elemento de sintaxis "mvpjdx" o "índice de MVP" (110). La unidad de decodificación por entropía 70 también decodifica otros elementos sintácticos antes o después de este índice de MVP que indica que la PU actual tiene vectores de movimiento expresados como predicciones de vector de movimiento. Para analizar este índice de MVP del flujo de bits, la unidad de decodificación por entropía 70 primero debe determinar el número de vectores de movimiento candidatos restantes después de realizar el proceso de reducción. Para determinar el número de vectores de movimiento candidatos, la unidad de decodificación por entropía 70 se interconecta con la unidad de compensación de movimiento 72, pidiendo que la unidad de compensación de movimiento 72 proporcione este número de vectores de movimiento candidatos para la PU actual.
[0094] En respuesta a esta petición, la unidad de compensación de movimiento 72 determina vectores de movimiento candidatos espaciales para la PU actual de la manera descrita anteriormente (112). Si uno o más de los vectores de movimiento candidatos espaciales no están disponibles por las razones expuestas con más detalle anteriormente ("SÍ" 114), la unidad de compensación de movimiento 72 puede generar información de movimiento (tal como información de movimiento predeterminada) de cualquiera de las formas descritas anteriormente y realizar una compensación de movimiento basada en la información de movimiento generada (116, 118). Si todos los vectores de movimiento candidatos espaciales están disponibles ("NO" 114), la unidad de compensación de
5
10
15
20
25
30
35
40
45
50
55
60
65
movimiento 72 reduce vectores de movimiento candidatos redundantes como se describe con más detalle anteriormente (120).
[0095] Después de reducir los vectores de movimiento candidatos espaciales redundantes, la unidad de compensación de movimiento 72 determina entonces un vector de movimiento candidato temporal para la PU actual de una PU coubicada en una trama de referencia como se describió anteriormente (122). Si este vector de movimiento candidato temporal no está disponible por las razones descritas anteriormente ("SÍ" 124), la unidad de compensación de movimiento 72 genera información de movimiento y realiza la compensación de movimiento basada en la información de movimiento generada (116, 118). Sin embargo, si el vector de movimiento candidato temporal está disponible ("NO" 124), la unidad de compensación de movimiento 72 forma una lista de MVP para incluir los vectores de movimiento candidatos espaciales restantes y el vector de movimiento candidato temporal (126). La unidad de compensación de movimiento 72 puede determinar entonces el número de vectores de movimiento candidatos en la lista de MVP (128), pasando este número a la unidad de decodificación por entropía 70.
[0096] La unidad de decodificación por entropía 70 puede analizar entonces el índice de MVP del flujo de bits basado en el número determinado (130). La unidad de decodificación por entropía 70 decodifica entonces el índice MVP codificado (131). La unidad de decodificación por entropía 70 pasa el índice de MVP decodificado a la unidad de compensación de movimiento 72, que selecciona uno de los vectores de movimiento candidatos de la lista de MVP basada en el índice MVP decodificado, como se describió anteriormente (132). La unidad de compensación de movimiento 72 realiza entonces la compensación de movimiento de la manera descrita anteriormente basada en el seleccionado de los vectores de movimiento candidatos (134). La unidad de compensación de movimiento 72 puede realizar una compensación de movimiento de acuerdo con el modo de fusión o la AMVP dependiendo de qué modo se señala en el flujo de bits o se determina mediante la unidad de compensación de movimiento 72.
[0097] La FIG. 6 es un diagrama que ilustra una disposición a modo de ejemplo de las PU vecinas adyacentes 140A-140D y una PU 142A coubicada temporalmente para una PU actual 144. Como se muestra en el ejemplo de la FIG. 6, la PU actual 144 está incluida dentro de una trama actual 146A. Temporalmente, la trama actual 146A está precedida primero por una trama de referencia 146B y entonces por una trama de referencia 146C. La PU vecina adyacente 140A reside adyacente espacialmente a la izquierda de la PU actual 144. La PU vecina adyacente 140B reside adyacente espacialmente a la esquina superior izquierda de la PU actual 144. La PU vecina adyacente 140C reside espacialmente adyacente a la parte superior de la PU actual 144. La PU vecina adyacente 140D reside espacialmente adyacente a la esquina superior derecha de la PU actual 144. La PU coubicada temporalmente 142A precede temporalmente a la PU actual 144 y está ubicada dentro de la trama de referencia 146B en la misma ubicación en que la PU actual 144 está ubicada dentro de la trama actual 146A.
[0098] Cada una de las PU 140A-140D vecinas adyacentes almacena o proporciona por el contrario un vector de movimiento candidato espacial para la PU actual 144, mientras que la PU 142A almacena temporalmente o proporciona por el contrario un vector de movimiento candidato temporal para la PU actual 144. Unidades de compensación de movimiento de decodificadores de vídeo, tales como la unidad de compensación de movimiento 72 del decodificador de vídeo 30 mostrado en el ejemplo de la FIG. 2, pueden recuperar estos vectores de movimiento candidatos espaciales y temporales de las PU 140A-140D y 142A, respectivamente. Debido a que la PU 142A coubicada temporalmente se incluye dentro de una trama de referencia 146B diferente a la de la PU actual 144, esta PU 142A coubicada temporalmente se asocia típicamente con una parte decodificable independiente diferente (que a menudo se refiere a una parte en la norma de HEVC emergente). Este fragmento de la trama de referencia 146B puede perderse (por ejemplo, en transmisión o debido a daños en la memoria o en un dispositivo de almacenamiento) y la unidad de compensación de movimiento 72 puede no ser capaz de recuperar esta PU coubicada temporalmente 142A almacenando el vector de movimiento candidato temporal para la PU actual 144. Perder este vector de movimiento de candidato temporal puede evitar que la unidad de decodificación por entropía 70 analice el flujo de bits por las razones indicadas anteriormente. Las técnicas descritas en la presente divulgación pueden permitir que la unidad de compensación de movimiento 72 resuelva este problema al no incluir el vector de movimiento candidato temporal en el proceso de reducción.
[0099] Asimismo, los vectores de movimiento candidatos espaciales para la PU actual 144 pueden perderse cuando el MVP se realice para determinar el vector de movimiento para una de las PU 140A-140D vecinas adyacentes con el resultado de que se selecciona el vector de movimiento candidato temporal y se pierde su PU coubicada temporalmente que almacena el vector de movimiento candidato temporal. Para ilustrar, tenga en cuenta la PU vecina adyacente 140A cuya PU coubicada temporalmente se identifica en el ejemplo de la FIG. 6 como PU 142B temporalmente coubicada. Si se pierde la PU 142b y se selecciona el vector de movimiento para la PU vecina espacial 140A como el vector de movimiento candidato temporal asociado con la PU 142B, no hay información de vector de movimiento para la PU 140A. Como resultado, el vector de movimiento candidato espacial para la PU actual 144 también se pierde. Para superar potencialmente este vector de movimiento candidato espacial perdido, las técnicas permiten que la unidad de compensación de movimiento 72 genere información de movimiento (tal como información de movimiento predeterminada), que puede usarse como un vector de movimiento candidato espacial para la PU actual 144.
5
10
15
20
25
30
35
40
45
50
55
60
65
[0100] Además, este vector de movimiento candidato espacial perdido (o, para el caso, el vector de movimiento candidato temporal perdido) puede surgir cuando se realice el MVP y se seleccione el vector de movimiento candidato temporal para múltiples PU coubicadas temporalmente. Para ilustrar, supongamos que el MVP se realiza para determinar un vector de movimiento para la PU 142B, que está coubicada temporalmente con la PU 140A, y se pierde su PU coubicada temporalmente, es decir, la PU 142C en el ejemplo de la FIG. 6. Esta pérdida, sin las técnicas descritas en la presente divulgación, no solo impediría potencialmente que el índice MVP se analizara a partir del flujo de bits sino que también daría como resultado la pérdida del vector de movimiento para la PU 142B. La pérdida del vector de movimiento para la PU 142B, en ausencia de las técnicas descritas en la presente divulgación, da como resultado la pérdida del vector de movimiento para la PU 140A, suponiendo que se realizó el MVP para determinar el vector de movimiento para la PU 140A y se seleccionó la PU temporalmente coubicada 142B. La pérdida de este vector de movimiento impacta con la PU actual 144 en que un vector de movimiento candidato espacial no está disponible. Por esta razón, las técnicas permiten a la unidad de compensación de movimiento 72 generar información de movimiento (o, en algunos casos, regenerar la información de movimiento perdida) para impedir lo que se puede denominar efecto de pérdida múltiple.
[0101] Mientras que los ejemplos descritos anteriormente se refieren a la eliminación de vectores de movimiento candidatos espaciales duplicados, las técnicas pueden no requerir necesariamente que solo se eliminen vectores de movimiento candidatos espaciales duplicados. Las técnicas pueden implementarse para realizar la reducción para eliminar en general al menos uno de los vectores de movimiento candidatos espaciales. Por ejemplo, el codificador de vídeo puede señalar a la imagen, trama, fragmento o nivel de bloque con el que se vaya a reducir el vector de movimiento candidato espacial, para nombrar unos pocos ejemplos, la amplitud más grande o la amplitud más pequeña. De forma alternativa, el codificador de vídeo puede indicar en el flujo de bits cualquier criterio, tal como un umbral, mediante el cual los MVP pueden especificarse como criterios para la reducción. En algunos ejemplos, el codificador de vídeo y el decodificador de vídeo pueden aceptar un cierto perfil u otra configuración mediante la cual los vectores candidatos de movimiento puedan reducirse. En algunos casos, el decodificador de vídeo puede implicar cuándo ciertos vectores de movimiento candidatos se van a reducir basados en el contexto u otra información. Las técnicas, por lo tanto, no deberían limitarse estrictamente a realizar la reducción solo para eliminar vectores de movimiento candidatos espaciales duplicados, sino para abarcar cualquier técnica que pueda implementarse para reducir al menos un vector de movimiento candidato espacial.
[0102] En uno o más ejemplos, las funciones descritas pueden implementarse en hardware, software, firmware o cualquier combinación de estos. Si se implementan en software, las funciones se pueden almacenar en, o transmitir a través de una o más instrucciones o de un código en un medio legible por ordenador. Los medios legibles por ordenador pueden incluir medios de almacenamiento de datos informáticos o medios de comunicación, incluido cualquier medio que facilite la transferencia de un programa informático desde un lugar a otro. Los medios de almacenamiento de datos pueden ser cualquier medio disponible a los que se puede acceder desde uno o más ordenadores o uno o más procesadores para recuperar instrucciones, código y/o estructuras de datos para la implementación de las técnicas descritas en la presente divulgación. A modo de ejemplo, y no de limitación, dichos medios legibles por ordenador pueden comprender RAM, ROM, EEPROM, CD-ROM u otro almacenamiento de disco óptico, almacenamiento de disco magnético u otros dispositivos de almacenamiento magnético, memoria flash o cualquier otro medio que pueda usarse para transportar o almacenar un código de programa deseado en forma de instrucciones o estructuras de datos y al que pueda accederse mediante un ordenador. Además, cualquier conexión recibe debidamente la denominación de medio legible por ordenador. Por ejemplo, si el software se transmite desde un sitio web, un servidor u otra fuente remota, mediante un cable coaxial, un cable de fibra óptica, un par trenzado, una línea de abonado digital (DSL) o unas tecnologías inalámbricas tales como infrarrojos, radio y microondas, entonces el cable coaxial, el cable de fibra óptica, el par trenzado, la DSL o las tecnologías inalámbricas, tales como infrarrojos, radio y microondas, se incluyen en la definición de medio. Los discos, como se usan en el presente documento, incluyen un disco compacto (CD), un disco láser, un disco óptico, un disco versátil digital (DVD), un disco flexible y un disco Blu-ray donde algunos discos reproducen usualmente los datos magnéticamente, mientras que otros discos reproducen los datos ópticamente con láseres. Las combinaciones de los anteriores deberían incluirse también dentro del alcance de los medios legibles por ordenador.
[0103] El código puede ejecutarse por uno o más procesadores, tales como uno o más procesadores de señales digitales (DSP), microprocesadores de uso general, circuitos integrados específicos de la de aplicación (ASIC), matrices lógicas programables de campo (FPGA) u otro circuito lógico integrado o discreto equivalente. Por consiguiente, el término "procesador", como se usa en el presente documento, puede referirse a cualquiera de las estructuras anteriores o a cualquier otra estructura adecuada para la implementación de las técnicas descritas en el presente documento. Además, en algunos aspectos, la funcionalidad descrita en el presente documento puede proporcionarse dentro de módulos de hardware y/o software dedicados configurados para la codificación y la decodificación, o incorporarse en un códec combinado. Además, las técnicas podrían implementarse completamente en uno o más circuitos o elementos lógicos.
[0104] Las técnicas de la presente divulgación se pueden implementar en una amplia variedad de dispositivos o aparatos, incluidos un teléfono inalámbrico, un circuito integrado (IC) o un conjunto de IC (por ejemplo, un conjunto de chips). Diversos componentes, módulos o unidades se describen en la presente divulgación para enfatizar aspectos funcionales de dispositivos configurados para realizar las técnicas divulgadas, pero no requieren
necesariamente su realización mediante diferentes unidades de hardware. En cambio, como se ha descrito anteriormente, diversas unidades pueden combinarse en una unidad de hardware de códec o proporcionarse por medio de un grupo de unidades de hardware interoperativas, incluidos uno o más procesadores como los descritos anteriormente, conjuntamente con software y/o firmware adecuados.
5
[0105] Se han descrito diversos ejemplos.
Claims (1)
- 5101520253035404550556065REIVINDICACIONESUn procedimiento de codificación de datos de vídeo, comprendiendo el procedimiento:determinar vectores de movimiento candidatos espaciales asociados con una parte actual de una trama de vídeo actual, en el que los vectores de movimiento candidatos espaciales comprenden vectores de movimiento determinados para las partes vecinas de la trama de vídeo actual adyacente a la parte actual;determinar un vector de movimiento candidato temporal asociado con la parte actual de la trama de vídeo actual, en el que el vector de movimiento candidato temporal comprende un vector de movimiento determinado para una parte de una trama de vídeo de referencia;reducir solo los vectores de movimiento de candidatos espaciales para eliminar los duplicados de los vectores de movimiento candidato espaciales sin tener en cuenta el vector de movimiento candidato temporal durante el proceso de reducción;seleccionar el vector de movimiento candidato temporal o uno de los vectores de movimiento candidato espaciales restantes después de la reducción como el vector de movimiento candidato seleccionado para un proceso de predicción de vector de movimiento;determinar un índice que identifique una ubicación del seleccionado de los vectores de movimiento candidatos en una lista del vector de movimiento candidato temporal y de los vectores de movimiento candidatos espaciales que permanezcan después de la reducción; yseñalar el índice en un flujo de bits usando uno de un código unario o de un código unario truncado, caracterizado por que el procedimiento comprende además determinar si cada uno de los vectores de movimiento candidatos espaciales determinados se predijo espacialmente o se predijo temporalmente, y en el que:reducir los vectores de movimiento candidatos espaciales para eliminar los duplicados de los vectores de movimiento candidatos espaciales comprende reducir solamente aquellos de los vectores de movimiento candidatos espaciales determinados que se determinaron predichos temporalmente sin reducir ninguno de los vectores de movimiento candidatos espaciales determinados que se determinaron predichos temporalmente, y seleccionar el vector de movimiento candidato temporal o uno de los vectores de movimiento candidatos espaciales restantes después de la reducción ya que el vector de movimiento candidato seleccionado comprende seleccionar el vector de movimiento candidato temporal, uno de los vectores de movimiento candidatos espaciales que se determinó predicho temporalmente o uno de los vectores de movimiento candidatos espaciales determinados predichos espacialmente restantes después de la reducción como el vector de movimiento candidato seleccionado; o el procedimiento comprende además reemplazar cualquiera de los vectores de movimiento candidatos espaciales que se determinaron predichos temporalmente con un vector de movimiento candidato predeterminado, en el que el vector de movimiento candidato predeterminado incluye información de vector de movimiento predeterminada, en el que la información de vector de movimiento predeterminada comprende una amplitud de vector de movimiento, una dirección de predicción que identifica si la trama de referencia precede o sigue temporalmente la trama actual, y un índice de referencia que identifica la trama de referencia, y reducir los vectores de movimiento candidatos espaciales para eliminar los duplicados de los vectores de movimiento candidatos espaciales comprende reducir los vectores de movimiento candidatos espaciales que incluyan uno o más de los vectores de movimiento candidatos predeterminados para eliminar los duplicados de los vectores de movimiento candidatos espaciales.El procedimiento según la reivindicación 1 o la reivindicación 6, que comprende además determinar uno o más vectores de movimiento candidatos espaciales adicionales que no estén predichos temporalmente y que sean diferentes de cualquiera del vector de movimiento candidato temporal y de los vectores de movimiento candidato espaciales restantes después de la reducción,en el que seleccionar el vector de movimiento candidato temporal o uno de los vectores de movimiento candidatos espaciales restantes después de la reducción comprende seleccionar el vector de movimiento candidato temporal, uno de los vectores de movimiento candidato eventuales restantes después de la reducción o uno de los vectores de movimiento candidatos espaciales adicionales como el vector de movimiento candidato seleccionado.Un aparato para codificar datos de vídeo, comprendiendo el aparato:medios para determinar vectores de movimiento candidatos espaciales asociados con la parte actual de una trama de vídeo actual, en el que los vectores de movimiento candidatos espaciales comprenden5101520253035404550556065vectores de movimiento determinados para las partes vecinas para la trama de vídeo actual adyacente a la parte actual;medios para determinar un vector de movimiento candidato temporal asociado con la parte actual de la trama de vídeo actual, en el que el vector de movimiento candidato temporal comprende un vector de movimiento determinado para una parte de una trama de vídeo de referencia;medios para reducir solo los vectores de movimiento de candidatos espaciales para eliminar los duplicados de los vectores de movimiento candidatos espaciales sin tener en cuenta el vector de movimiento candidato temporal durante el proceso de reducción;medios para seleccionar el vector de movimiento candidato temporal o uno de los vectores de movimiento candidatos espaciales restantes después de la reducción como un vector de movimiento candidato seleccionado para un proceso de predicción de vector de movimiento;medios para determinar un índice que identifique una ubicación del seleccionado de los vectores de movimiento candidatos en una lista del vector de movimiento candidato temporal y de los vectores de movimiento candidatos espaciales que permanezcan después de la reducción; ymedios para señalar el índice en un flujo de bits usando uno de un código unario o de un código unario truncado, caracterizado por que el aparato comprende además medios para determinar si cada uno de los vectores de movimiento candidatos espaciales determinados se predijo espacialmente o se predijo temporalmente, en el que:los medios para reducir los vectores de movimiento candidatos espaciales para eliminar los duplicados de los vectores de movimiento candidatos espaciales comprenden medios para reducir solamente aquellos de los vectores de movimiento candidatos espaciales determinados que se determinaron predichos espacialmente sin reducir ninguno de los vectores de movimiento candidatos espaciales determinados que se determinaron predichos temporalmente, y en los que los medios para seleccionar el vector de movimiento candidato temporal o uno de los vectores de movimiento candidatos espaciales restantes después de la reducción como el vector de movimiento candidato seleccionado comprende medios para seleccionar el vector de movimiento candidato temporal, uno de los vectores de movimiento candidatos espaciales que se determinaron predichos temporalmente o uno de los vectores de movimiento candidatos espaciales que se determinaron predichos espacialmente restantes después de la reducción como el vector de movimiento candidato seleccionado; o el aparato comprende además medios para reemplazar cualquiera de los vectores de movimiento candidatos espaciales que se determinaron predichos temporalmente con un vector de movimiento candidato predeterminado, en el que el vector de movimiento candidato predeterminado incluye información de vector de movimiento predeterminada, en el que la información de vector de movimiento predeterminada comprende una amplitud de vector de movimiento, una dirección de predicción que identifica si la trama de referencia precede o sigue a la trama actual temporalmente, y un índice de referencia que identifica la trama de referencia, y en el que los medios para reducir los vectores de movimiento candidatos espaciales para eliminar los duplicados de los vectores de movimiento candidatos espaciales comprenden medios para reducir los vectores de movimiento candidatos espaciales que incluyen uno o más de los vectores de movimiento candidatos predeterminados para eliminar los duplicados de los vectores de movimiento candidatos espaciales.Aparato según la reivindicación 3 o la reivindicación 7, que comprende además medios para determinar uno o más vectores de movimiento candidatos espaciales adicionales que no están predichos temporalmente y que son diferentes de cualquiera del vector de movimiento candidato temporal y de los vectores de movimiento candidatos espaciales restantes después de la reducción,en el que los medios para seleccionar el vector de movimiento candidato temporal o uno de los vectores de movimiento candidatos espaciales restantes después de la reducción comprenden medios para seleccionar el vector de movimiento candidato temporal, uno de los vectores de movimiento candidatos espaciales restantes después de la reducción o uno de los vectores de movimiento candidatos espaciales adicionales como el vector de movimiento candidato seleccionado.Un medio no transitorio legible por ordenador que comprende instrucciones que, cuando se ejecutan, causan que uno o más procesadores ejecuten las etapas de cualquiera de las reivindicaciones 1, 2 o 6.Un procedimiento de decodificación de datos de vídeo, comprendiendo el procedimiento:determinar vectores de movimiento candidatos espaciales asociados con una parte actual de una trama de vídeo actual, en el que los vectores de movimiento candidatos espaciales comprenden vectores de5101520253035404550556065movimiento vecinos determinados para partes vecinas adyacentes espacialmente a la parte actual dentro de la trama de vídeo actual;reducir solamente los vectores de movimiento candidatos espaciales para eliminar los duplicados de los vectores de movimiento candidatos espaciales sin tener en cuenta un vector de movimiento candidato temporal determinado para la parte actual de la trama de vídeo actual durante el proceso de reducción, en el que el vector de movimiento candidato temporal comprende un vector de movimiento determinado para una parte de una trama de vídeo de referencia;seleccionar el vector de movimiento candidato temporal o uno de los vectores de movimiento candidatos espaciales restantes después de la reducción como el vector de movimiento candidato seleccionado para un proceso de predicción de vector de movimiento basado en un índice predictor de vector de movimiento (MVP) señalado en un flujo de bits usando uno de un código unario o de un código unario truncado; yrealizar compensación de movimiento basada en el vector de movimiento candidato seleccionado, caracterizado por que el procedimiento comprende además determinar si cada uno de los vectores de movimiento candidatos espaciales determinados se predijo espacialmente o se predijo temporalmente, y en el que:reducir los vectores de movimiento candidatos espaciales para eliminar los duplicados de los vectores de movimiento candidatos espaciales comprende reducir solamente aquellos de los vectores de movimiento candidatos espaciales determinados que se determinaron predichos temporalmente sin reducir ninguno de los vectores de movimiento candidatos espaciales determinados que se determinaron predichos temporalmente, y seleccionar el vector de movimiento candidato temporal o uno de los vectores de movimiento candidatos espaciales restantes después de la reducción como el vector de movimiento candidato seleccionado comprende seleccionar el vector de movimiento candidato temporal, uno de los vectores de movimiento candidatos espaciales que se determinaron predichos temporalmente o uno de los vectores de movimiento candidatos espaciales determinados predichos espacialmente restantes después de la reducción como el vector de movimiento candidato seleccionado; o el procedimiento comprende además reemplazar cualquiera de los vectores de movimiento candidatos espaciales que se determinaron predichos temporalmente con un vector de movimiento candidato predeterminado, en el que el vector de movimiento candidato predeterminado incluye información de vector de movimiento predeterminada, en el que la información de vector de movimiento predeterminada comprende una amplitud de vector de movimiento, una dirección de predicción que identifica si la trama de referencia precede o sigue temporalmente la trama actual, y un índice de referencia que identifica la trama de referencia, y reducir los vectores de movimiento candidatos espaciales para eliminar los duplicados de los vectores de movimiento candidatos espaciales que comprende reducir los vectores de movimiento candidatos espaciales que incluyan uno o más de los vectores de movimiento candidatos predeterminados para eliminar los duplicados de los vectores de movimiento candidatos espaciales.Un aparato para codificar datos de vídeo, comprendiendo el aparato:medios para determinar vectores de movimiento candidatos espaciales asociados con una parte actual de una trama de vídeo actual, en el que los vectores de movimiento candidatos espaciales comprenden vectores de movimiento determinados para las partes vecinas de la trama de vídeo actual adyacente a la parte actual;medios para reducir solamente los vectores de movimiento candidatos espaciales para eliminar los duplicados de los vectores de movimiento candidatos espaciales sin tener en cuenta un vector de movimiento candidato temporal determinado para la parte actual de la trama de vídeo actual durante el proceso de reducción, en el que el vector de movimiento candidato temporal comprende un movimiento vector determinado para una parte de una trama de vídeo de referencia;medios para seleccionar uno de los vectores de movimiento candidatos temporales o uno de los vectores de movimiento candidatos espaciales restantes después de la reducción como el vector de movimiento candidato seleccionado para un proceso de predicción de vector de movimiento basado en un índice de vector de movimiento de movimiento (MVP) señalado en un flujo de bits usando uno de un código unario o de un código unario truncado; ymedios para realizar una compensación de movimiento basada en el vector de movimiento candidato seleccionado,caracterizado por que el aparato comprende además medios para determinar si cada uno de los vectores de movimiento candidatos espaciales determinados se predijo espacialmente o se predijo temporalmente, en el que:los medios para reducir los vectores de movimiento candidato espaciales para eliminar los duplicados de los vectores de movimiento candidatos espaciales comprenden medios para reducir solamente aquellos de los vectores de movimiento candidatos espaciales determinados que se determinaron predichos 5 espacialmente sin reducir ninguno de los vectores de movimiento candidatos espaciales determinadosque se determinaron predichos temporalmente, y en el que los medios para seleccionar el vector de movimiento candidato temporal o uno de los vectores de movimiento candidatos espaciales restantes después de la reducción como el vector de movimiento candidato seleccionado comprenden medios para seleccionar el vector de movimiento candidato temporal, uno los vectores de movimiento candidatos 10 espaciales que se determinaron predichos temporalmente o uno de los vectores de movimientocandidatos espaciales que se determinaron predichos espacialmente después de la reducción como el vector de movimiento candidato seleccionado; oel aparato comprende además medios para reemplazar cualquiera de los vectores de movimiento 15 candidatos espaciales que se determinaron predichos temporalmente con un vector de movimientocandidato predeterminado, en el que el vector de movimiento candidato predeterminado incluye información de vector de movimiento predeterminada, en el que la información de vector de movimiento predeterminada comprende una amplitud de vector de movimiento predeterminada, una dirección de predicción que identifica si la trama de referencia precede o sigue temporalmente la trama actual, y un 20 índice de referencia que identifica la trama de referencia, y en el que los medios para reducir los vectoresde movimiento candidatos espaciales para eliminar los duplicados de los vectores de movimiento candidatos espaciales comprenden medios para reducir los vectores de movimiento candidatos espaciales que incluyen uno o más de los vectores de movimiento candidatos predeterminados para eliminar los duplicados de los vectores de movimiento candidatos espaciales.25
Applications Claiming Priority (9)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US201161436997P | 2011-01-27 | 2011-01-27 | |
| US201161436997P | 2011-01-27 | ||
| US201161449985P | 2011-03-07 | 2011-03-07 | |
| US201161449985P | 2011-03-07 | ||
| US201161561601P | 2011-11-18 | 2011-11-18 | |
| US201161561601P | 2011-11-18 | ||
| US201213351980 | 2012-01-17 | ||
| US13/351,980 US9319716B2 (en) | 2011-01-27 | 2012-01-17 | Performing motion vector prediction for video coding |
| PCT/US2012/021742 WO2012102927A1 (en) | 2011-01-27 | 2012-01-18 | Performing motion vector prediction for video coding |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| ES2684522T3 true ES2684522T3 (es) | 2018-10-03 |
Family
ID=46577354
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| ES12703374.4T Active ES2684522T3 (es) | 2011-01-27 | 2012-01-18 | Realización de predicción de vector de movimiento para codificación de vídeo |
Country Status (21)
| Country | Link |
|---|---|
| US (1) | US9319716B2 (es) |
| EP (1) | EP2668784B1 (es) |
| JP (1) | JP5813784B2 (es) |
| KR (1) | KR101574866B1 (es) |
| CN (1) | CN103339938B (es) |
| AU (1) | AU2012209403B2 (es) |
| BR (1) | BR112013018816B1 (es) |
| CA (1) | CA2825154C (es) |
| DK (1) | DK2668784T3 (es) |
| ES (1) | ES2684522T3 (es) |
| HU (1) | HUE039019T2 (es) |
| IL (1) | IL227287A (es) |
| MY (1) | MY164598A (es) |
| PH (1) | PH12013501470A1 (es) |
| PL (1) | PL2668784T3 (es) |
| PT (1) | PT2668784T (es) |
| RU (1) | RU2550554C2 (es) |
| SG (1) | SG191824A1 (es) |
| SI (1) | SI2668784T1 (es) |
| WO (1) | WO2012102927A1 (es) |
| ZA (1) | ZA201306423B (es) |
Families Citing this family (114)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US10474875B2 (en) | 2010-06-07 | 2019-11-12 | Affectiva, Inc. | Image analysis using a semiconductor processor for facial evaluation |
| KR102080449B1 (ko) | 2010-11-24 | 2020-02-21 | 벨로스 미디어 인터내셔널 리미티드 | 움직임 벡터 산출 방법, 화상 부호화 방법, 화상 복호 방법, 움직임 벡터 산출 장치 및 화상 부호화 복호 장치 |
| GB2487197B (en) * | 2011-01-11 | 2015-06-17 | Canon Kk | Video encoding and decoding with improved error resilience |
| KR101820997B1 (ko) | 2011-01-12 | 2018-01-22 | 선 페이턴트 트러스트 | 동화상 부호화 방법 및 동화상 복호화 방법 |
| WO2012114694A1 (ja) * | 2011-02-22 | 2012-08-30 | パナソニック株式会社 | 動画像符号化方法、動画像符号化装置、動画像復号方法、および、動画像復号装置 |
| MX2013009864A (es) | 2011-03-03 | 2013-10-25 | Panasonic Corp | Metodo de codificacion de imagenes en movimiento, metodo de decodificacion de imagenes en movimiento, aparato de codificacion de imagenes en movimiento, aparato de decodificacion de imagenes en movimiento y aparato de codificacion y decodificacion de imagenes en movimiento. |
| US9066110B2 (en) | 2011-03-08 | 2015-06-23 | Texas Instruments Incorporated | Parsing friendly and error resilient merge flag coding in video coding |
| US9866859B2 (en) * | 2011-06-14 | 2018-01-09 | Texas Instruments Incorporated | Inter-prediction candidate index coding independent of inter-prediction candidate list construction in video coding |
| US9143795B2 (en) | 2011-04-11 | 2015-09-22 | Texas Instruments Incorporated | Parallel motion estimation in video coding |
| ES2621231T3 (es) | 2011-04-12 | 2017-07-03 | Sun Patent Trust | Método de codificación de video de movimiento, aparato de codificación de video de movimiento, método de decodificación de video de movimiento, aparato de decodificación de video de movimiento y aparato de codificación/decodificación de video de movimiento |
| US9485518B2 (en) | 2011-05-27 | 2016-11-01 | Sun Patent Trust | Decoding method and apparatus with candidate motion vectors |
| ES2769378T3 (es) | 2011-05-27 | 2020-06-25 | Sun Patent Trust | Procedimiento de codificación de imágenes y aparato de codificación de imágenes |
| SG194746A1 (en) | 2011-05-31 | 2013-12-30 | Kaba Gmbh | Image encoding method, image encoding device, image decoding method, image decoding device, and image encoding/decoding device |
| ES2971526T3 (es) | 2011-05-31 | 2024-06-05 | Sun Patent Trust | Procedimiento de descodificación de vídeo, dispositivo de descodificación de vídeo |
| KR20140004209A (ko) * | 2011-06-15 | 2014-01-10 | 미디어텍 인크. | 3d 비디오 코딩에서의 텍스처 이미지 압축 방법 및 장치 |
| EP2728878B1 (en) | 2011-06-30 | 2020-02-19 | Sun Patent Trust | Image decoding method, image encoding method, image decoding device, image encoding device, and image encoding/decoding device |
| EP3487178A1 (en) | 2011-08-03 | 2019-05-22 | Sun Patent Trust | Video encoding method, video encoding apparatus, video decoding method, video decoding apparatus, and video encoding/decoding apparatus |
| GB2493755B (en) * | 2011-08-17 | 2016-10-19 | Canon Kk | Method and device for encoding a sequence of images and method and device for decoding a sequence of images |
| CN107483928B (zh) | 2011-09-09 | 2020-05-12 | 株式会社Kt | 用于解码视频信号的方法 |
| MX2014003991A (es) | 2011-10-19 | 2014-05-07 | Panasonic Corp | Metodo de codificacion de imagenes, aparato de codificacion de imagenes, metodo de decodificacion de imagenes y aparato de decodificacion de imagenes. |
| EP4472208A3 (en) * | 2011-10-21 | 2025-02-19 | Nokia Technologies Oy | Method for coding and an apparatus |
| US9571833B2 (en) | 2011-11-04 | 2017-02-14 | Nokia Technologies Oy | Method for coding and an apparatus |
| US9088796B2 (en) * | 2011-11-07 | 2015-07-21 | Sharp Kabushiki Kaisha | Video decoder with enhanced CABAC decoding |
| BR112014011123B1 (pt) * | 2011-11-08 | 2022-07-12 | Kt Corporation | Método de decodificação de vídeo realizado por um aparelho de decodificação |
| WO2013068562A1 (en) | 2011-11-11 | 2013-05-16 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Effective wedgelet partition coding |
| PT2777283T (pt) * | 2011-11-11 | 2018-04-18 | Ge Video Compression Llc | Predição eficaz utilizando codificação de partição |
| WO2013099288A1 (ja) * | 2011-12-28 | 2013-07-04 | 株式会社Jvcケンウッド | 動画像符号化装置、動画像符号化方法及び動画像符号化プログラム、並びに動画像復号装置、動画像復号方法及び動画像復号プログラム |
| JP5617834B2 (ja) * | 2011-12-28 | 2014-11-05 | 株式会社Jvcケンウッド | 動画像復号装置、動画像復号方法、及び動画像復号プログラム、並びに、受信装置、受信方法、及び受信プログラム |
| JP2013141077A (ja) * | 2011-12-28 | 2013-07-18 | Jvc Kenwood Corp | 動画像符号化装置、動画像符号化方法及び動画像符号化プログラム |
| JP5747816B2 (ja) * | 2011-12-28 | 2015-07-15 | 株式会社Jvcケンウッド | 動画像符号化装置、動画像符号化方法、動画像符号化プログラム、送信装置、送信方法及び送信プログラム |
| JP2013141078A (ja) * | 2011-12-28 | 2013-07-18 | Jvc Kenwood Corp | 動画像復号装置、動画像復号方法及び動画像復号プログラム |
| BR112014013969B1 (pt) * | 2011-12-28 | 2022-05-10 | JVC Kenwood Corporation | Dispositivo de codificação de vídeo, método de codificação de vídeo, programa de codificação de vídeo, dispositivo de decodificação de vídeo, método de decodificação de vídeo, programa de decodificação de vídeo |
| WO2013107028A1 (en) * | 2012-01-19 | 2013-07-25 | Mediatek Singapore Pte. Ltd. | Methods and apparatuses of amvp simplification |
| PL2806637T3 (pl) * | 2012-01-19 | 2021-05-04 | Electronics And Telecommunications Research Institute | Sposób kodowania/dekodowania obrazu |
| US9729873B2 (en) | 2012-01-24 | 2017-08-08 | Qualcomm Incorporated | Video coding using parallel motion estimation |
| US9451277B2 (en) | 2012-02-08 | 2016-09-20 | Qualcomm Incorporated | Restriction of prediction units in B slices to uni-directional inter prediction |
| US9426463B2 (en) | 2012-02-08 | 2016-08-23 | Qualcomm Incorporated | Restriction of prediction units in B slices to uni-directional inter prediction |
| JPWO2013136678A1 (ja) * | 2012-03-16 | 2015-08-03 | パナソニックIpマネジメント株式会社 | 画像復号装置および画像復号方法 |
| US9584802B2 (en) * | 2012-04-13 | 2017-02-28 | Texas Instruments Incorporated | Reducing context coded and bypass coded bins to improve context adaptive binary arithmetic coding (CABAC) throughput |
| US9838685B2 (en) * | 2012-06-15 | 2017-12-05 | Google Technology Holdings LLC | Method and apparatus for efficient slice header processing |
| US20140079135A1 (en) * | 2012-09-14 | 2014-03-20 | Qualcomm Incoporated | Performing quantization to facilitate deblocking filtering |
| US10178410B2 (en) * | 2012-10-03 | 2019-01-08 | Mediatek Inc. | Method and apparatus of motion information management in video coding |
| CN102883163B (zh) | 2012-10-08 | 2014-05-28 | 华为技术有限公司 | 用于运动矢量预测的运动矢量列表建立的方法、装置 |
| US9894383B2 (en) | 2012-10-09 | 2018-02-13 | Hfi Innovation Inc. | Method and apparatus for motion information prediction and inheritance in video coding |
| 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 |
| CN103079067B (zh) * | 2013-01-09 | 2016-03-09 | 华为技术有限公司 | 运动矢量预测值列表构建方法和视频编解码方法及装置 |
| JP5983430B2 (ja) * | 2013-01-25 | 2016-08-31 | 富士通株式会社 | 動画像符号化装置、動画像符号化方法及び動画像復号装置ならびに動画像復号方法 |
| FR3011429A1 (fr) * | 2013-09-27 | 2015-04-03 | Orange | Codage et decodage video par heritage d'un champ de vecteurs de mouvement |
| JP6359101B2 (ja) | 2013-10-14 | 2018-07-18 | マイクロソフト テクノロジー ライセンシング,エルエルシー | ビデオ及び画像の符号化及び復号のためのイントラブロックコピー予測モードの特徴 |
| CN105659602B (zh) | 2013-10-14 | 2019-10-08 | 微软技术许可有限责任公司 | 用于视频和图像编码的帧内块复制预测模式的编码器侧选项 |
| US10506254B2 (en) | 2013-10-14 | 2019-12-10 | Microsoft Technology Licensing, Llc | Features of base color index map mode for video and image coding and decoding |
| US10390034B2 (en) | 2014-01-03 | 2019-08-20 | Microsoft Technology Licensing, Llc | Innovations in block vector prediction and estimation of reconstructed sample values within an overlap area |
| CN105917650B (zh) | 2014-01-03 | 2019-12-24 | 微软技术许可有限责任公司 | 视频和图像编/解码的方法、计算设备及计算机可读介质 |
| US11284103B2 (en) | 2014-01-17 | 2022-03-22 | Microsoft Technology Licensing, Llc | Intra block copy prediction with asymmetric partitions and encoder-side search patterns, search ranges and approaches to partitioning |
| US10542274B2 (en) | 2014-02-21 | 2020-01-21 | Microsoft Technology Licensing, Llc | Dictionary encoding and decoding of screen content |
| MX361228B (es) | 2014-03-04 | 2018-11-29 | Microsoft Technology Licensing Llc | Inversión de bloque y modo de omisión en predicción de intracopia de bloque. |
| US9479788B2 (en) * | 2014-03-17 | 2016-10-25 | Qualcomm Incorporated | Systems and methods for low complexity encoding and background detection |
| CN105493505B (zh) | 2014-06-19 | 2019-08-06 | 微软技术许可有限责任公司 | 统一的帧内块复制和帧间预测模式 |
| JP5874790B2 (ja) * | 2014-09-08 | 2016-03-02 | 株式会社Jvcケンウッド | 動画像復号装置、動画像復号方法、及び動画像復号プログラム、並びに、受信装置、受信方法、及び受信プログラム |
| JP5874793B2 (ja) * | 2014-09-08 | 2016-03-02 | 株式会社Jvcケンウッド | 動画像復号装置、動画像復号方法、及び動画像復号プログラム、並びに、受信装置、受信方法、及び受信プログラム |
| JP5874792B2 (ja) * | 2014-09-08 | 2016-03-02 | 株式会社Jvcケンウッド | 動画像復号装置、動画像復号方法、及び動画像復号プログラム、並びに、受信装置、受信方法、及び受信プログラム |
| JP5874791B2 (ja) * | 2014-09-08 | 2016-03-02 | 株式会社Jvcケンウッド | 動画像復号装置、動画像復号方法、及び動画像復号プログラム、並びに、受信装置、受信方法、及び受信プログラム |
| CA2959682C (en) | 2014-09-30 | 2022-12-06 | Microsoft Technology Licensing, Llc | Rules for intra-picture prediction modes when wavefront parallel processing is enabled |
| US9992512B2 (en) * | 2014-10-06 | 2018-06-05 | Mediatek Inc. | Method and apparatus for motion vector predictor derivation |
| US9591325B2 (en) | 2015-01-27 | 2017-03-07 | Microsoft Technology Licensing, Llc | Special case handling for merged chroma blocks in intra block copy prediction mode |
| JP5975146B2 (ja) * | 2015-05-14 | 2016-08-23 | 株式会社Jvcケンウッド | 動画像符号化装置、動画像符号化方法、動画像符号化プログラム、送信装置、送信方法及び送信プログラム |
| US10187653B2 (en) * | 2015-05-18 | 2019-01-22 | Avago Technologies International Sales Pte. Limited | Motor vector prediction using co-located prediction units |
| MX379248B (es) | 2015-05-21 | 2025-03-10 | Huawei Tech Co Ltd | Aparato y método de compensación de movimiento de video. |
| EP3308540B1 (en) | 2015-06-09 | 2020-04-15 | Microsoft Technology Licensing, LLC | Robust encoding/decoding of escape-coded pixels in palette mode |
| CN109274974B (zh) | 2015-09-29 | 2022-02-11 | 华为技术有限公司 | 图像预测的方法及装置 |
| US10225572B2 (en) * | 2015-09-30 | 2019-03-05 | Apple Inc. | Configurable motion estimation search systems and methods |
| US10477233B2 (en) * | 2015-09-30 | 2019-11-12 | Apple Inc. | Predictor candidates for motion estimation search systems and methods |
| JP6037061B2 (ja) * | 2016-01-18 | 2016-11-30 | 株式会社Jvcケンウッド | 動画像復号装置、動画像復号方法、及び動画像復号プログラム、並びに、受信装置、受信方法、及び受信プログラム |
| JP5962876B1 (ja) * | 2016-04-26 | 2016-08-03 | 株式会社Jvcケンウッド | 動画像符号化装置、動画像符号化方法、動画像符号化プログラム、送信装置、送信方法及び送信プログラム |
| JP5962877B1 (ja) * | 2016-04-26 | 2016-08-03 | 株式会社Jvcケンウッド | 動画像符号化装置、動画像符号化方法、動画像符号化プログラム、送信装置、送信方法及び送信プログラム |
| JP5962875B1 (ja) * | 2016-04-26 | 2016-08-03 | 株式会社Jvcケンウッド | 動画像符号化装置、動画像符号化方法、動画像符号化プログラム、送信装置、送信方法及び送信プログラム |
| JP6183505B2 (ja) * | 2016-06-29 | 2017-08-23 | 株式会社Jvcケンウッド | 動画像符号化装置 |
| US10567461B2 (en) * | 2016-08-04 | 2020-02-18 | Twitter, Inc. | Low-latency HTTP live streaming |
| CN109644271B (zh) * | 2016-09-06 | 2021-04-13 | 联发科技股份有限公司 | 用于二叉树分割块的确定候选集的方法及装置 |
| KR20180103733A (ko) * | 2017-03-09 | 2018-09-19 | 주식회사 케이티 | 영상 부호화 또는 복호화 방법 및 장치 |
| EP3410717A1 (en) * | 2017-05-31 | 2018-12-05 | Thomson Licensing | Methods and apparatus for candidate list pruning |
| WO2019054591A1 (ko) | 2017-09-13 | 2019-03-21 | 삼성전자 주식회사 | 기본 움직임 벡터를 이용하여 움직임 벡터를 부호화하는 장치 및 방법, 및 복호화 장치 및 방법 |
| JP6406408B2 (ja) * | 2017-09-28 | 2018-10-17 | 株式会社Jvcケンウッド | 動画像復号装置、動画像復号方法、及び、動画像復号プログラム |
| JP6406409B2 (ja) * | 2017-09-28 | 2018-10-17 | 株式会社Jvcケンウッド | 動画像復号装置、動画像復号方法、及び、動画像復号プログラム |
| KR102347598B1 (ko) * | 2017-10-16 | 2022-01-05 | 삼성전자주식회사 | 영상 부호화 장치 및 인코더 |
| KR102476204B1 (ko) * | 2017-10-19 | 2022-12-08 | 삼성전자주식회사 | 멀티 코덱 인코더 및 이를 포함하는 멀티 코덱 인코딩 시스템 |
| EP3709650A4 (en) * | 2017-11-09 | 2021-07-14 | Samsung Electronics Co., Ltd. | DEVICE AND METHOD FOR CODING MOVEMENT INFORMATION AND DECODING DEVICE AND METHOD |
| US10986349B2 (en) | 2017-12-29 | 2021-04-20 | Microsoft Technology Licensing, Llc | Constraints on locations of reference blocks for intra block copy prediction |
| KR102929091B1 (ko) * | 2018-03-27 | 2026-02-20 | 주식회사 케이티 | 비디오 신호 처리 방법 및 장치 |
| EP4322533A3 (en) | 2018-06-29 | 2024-03-06 | Beijing Bytedance Network Technology Co., Ltd. | Checking order of motion candidates in lut |
| CN110662052B (zh) | 2018-06-29 | 2022-07-08 | 北京字节跳动网络技术有限公司 | 更新查找表(lut)的条件 |
| KR102627814B1 (ko) | 2018-06-29 | 2024-01-23 | 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 | 룩업 테이블의 업데이트: fifo, 제약된 fifo |
| KR102680903B1 (ko) * | 2018-06-29 | 2024-07-04 | 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 | Hmvp 후보를 병합/amvp에 추가할 때의 부분/풀 프루닝 |
| SG11202013028PA (en) | 2018-06-29 | 2021-01-28 | Beijing Bytedance Network Technology Co Ltd | Interaction between lut and amvp |
| WO2020003265A1 (en) * | 2018-06-29 | 2020-01-02 | Beijing Bytedance Network Technology Co., Ltd. | Conditions of usage of luts |
| JP7295230B2 (ja) | 2018-06-29 | 2023-06-20 | 北京字節跳動網絡技術有限公司 | スライス/タイル/lcuの行ごとのルックアップテーブルのリセット |
| KR102840294B1 (ko) | 2018-06-29 | 2025-07-30 | 두인 비전 컴퍼니 리미티드 | 하나 또는 다수의 룩업 테이블들을 사용하여 이전에 코딩된 모션 정보를 순서대로 저장하고 이를 사용하여 후속 블록들을 코딩하는 개념 |
| WO2020003282A1 (en) | 2018-06-29 | 2020-01-02 | Beijing Bytedance Network Technology Co., Ltd. | Managing motion vector predictors for video coding |
| CN110677669B (zh) | 2018-07-02 | 2021-12-07 | 北京字节跳动网络技术有限公司 | 具有lic的lut |
| CN112055970B (zh) | 2018-08-28 | 2024-04-09 | 华为技术有限公司 | 候选运动信息列表的构建方法、帧间预测方法及装置 |
| CN117241039A (zh) | 2018-08-28 | 2023-12-15 | 华为技术有限公司 | 帧间预测方法、装置以及视频编码器和视频解码器 |
| CN119071504A (zh) * | 2018-09-11 | 2024-12-03 | 有限公司B1影像技术研究所 | 图像编码/解码方法和图像传输方法 |
| WO2020053798A1 (en) | 2018-09-12 | 2020-03-19 | Beijing Bytedance Network Technology Co., Ltd. | Conditions for starting checking hmvp candidates depend on total number minus k |
| KR102608615B1 (ko) | 2018-11-02 | 2023-12-05 | 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 | Hmvp 후보 저장을 위한 표 유지 |
| KR102696385B1 (ko) * | 2018-11-26 | 2024-08-20 | 프라운호퍼 게젤샤프트 쭈르 푀르데룽 데어 안겐반텐 포르슝 에. 베. | 타일 독립성 제약을 이용하는 인터 예측 개념 |
| KR102648159B1 (ko) | 2019-01-10 | 2024-03-18 | 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 | Lut 업데이트의 호출 |
| WO2020143824A1 (en) | 2019-01-13 | 2020-07-16 | Beijing Bytedance Network Technology Co., Ltd. | Interaction between lut and shared merge list |
| CN113330739B (zh) | 2019-01-16 | 2025-01-10 | 北京字节跳动网络技术有限公司 | Lut中的运动候选的插入顺序 |
| US10979716B2 (en) * | 2019-03-15 | 2021-04-13 | Tencent America LLC | Methods of accessing affine history-based motion vector predictor buffer |
| CN113615193B (zh) | 2019-03-22 | 2024-06-25 | 北京字节跳动网络技术有限公司 | Merge列表构建和其他工具之间的交互 |
| CN111741304A (zh) * | 2019-03-25 | 2020-10-02 | 四川大学 | 一种基于运动矢量细化的帧率上变换与hevc相结合的方法 |
| CN113812165B (zh) | 2019-05-09 | 2023-05-23 | 北京字节跳动网络技术有限公司 | 对hmvp表的改进 |
| WO2020248925A1 (en) | 2019-06-08 | 2020-12-17 | Beijing Bytedance Network Technology Co., Ltd. | History-based motion vector prediction with default parameters |
| US12143592B2 (en) * | 2022-09-02 | 2024-11-12 | Tencent America LLC | Systems and methods for temporal motion vector prediction candidate derivation |
Family Cites Families (15)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6968008B1 (en) * | 1999-07-27 | 2005-11-22 | Sharp Laboratories Of America, Inc. | Methods for motion estimation with adaptive motion accuracy |
| US6671321B1 (en) | 1999-08-31 | 2003-12-30 | Mastsushita Electric Industrial Co., Ltd. | Motion vector detection device and motion vector detection method |
| JP2001251632A (ja) | 1999-12-27 | 2001-09-14 | Toshiba Corp | 動きベクトル検出方法および装置並びに動きベクトル検出プログラム |
| 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 |
| US7408986B2 (en) | 2003-06-13 | 2008-08-05 | Microsoft Corporation | Increasing motion smoothness using frame interpolation with motion analysis |
| US7471724B2 (en) | 2003-06-23 | 2008-12-30 | Vichip Corp. Limited | Method and apparatus for adaptive multiple-dimensional signal sequences encoding/decoding |
| US7567617B2 (en) | 2003-09-07 | 2009-07-28 | Microsoft Corporation | Predicting motion vectors for fields of forward-predicted interlaced video frames |
| US20080144716A1 (en) | 2004-03-11 | 2008-06-19 | Gerard De Haan | Method For Motion Vector Determination |
| KR100587562B1 (ko) | 2004-04-13 | 2006-06-08 | 삼성전자주식회사 | 비디오 프레임에 대한 움직임 추정 방법 및 비디오 인코더 |
| EP2266318B1 (en) * | 2008-03-19 | 2020-04-22 | Nokia Technologies Oy | Combined motion vector and reference index prediction for video coding |
| US9100535B2 (en) | 2008-10-22 | 2015-08-04 | Entropic Communications, Llc | Device and method for motion estimation and compensation |
| WO2011095259A1 (en) * | 2010-02-05 | 2011-08-11 | Telefonaktiebolaget L M Ericsson (Publ) | Selecting predicted motion vector candidates |
| KR102066543B1 (ko) | 2011-01-07 | 2020-01-15 | 가부시키가이샤 엔.티.티.도코모 | 움직임 벡터의 예측 부호화 방법, 예측 부호화 장치, 및 예측 부호화 프로그램, 그리고 움직임 벡터의 예측 복호 방법, 예측 복호 장치, 및 예측 복호 프로그램 |
| JP2012151576A (ja) | 2011-01-18 | 2012-08-09 | Hitachi Ltd | 画像符号化方法、画像符号化装置、画像復号方法及び画像復号装置 |
| JP2013141077A (ja) | 2011-12-28 | 2013-07-18 | Jvc Kenwood Corp | 動画像符号化装置、動画像符号化方法及び動画像符号化プログラム |
-
2012
- 2012-01-17 US US13/351,980 patent/US9319716B2/en active Active
- 2012-01-18 ES ES12703374.4T patent/ES2684522T3/es active Active
- 2012-01-18 AU AU2012209403A patent/AU2012209403B2/en active Active
- 2012-01-18 CN CN201280006666.7A patent/CN103339938B/zh active Active
- 2012-01-18 WO PCT/US2012/021742 patent/WO2012102927A1/en not_active Ceased
- 2012-01-18 PH PH1/2013/501470A patent/PH12013501470A1/en unknown
- 2012-01-18 MY MYPI2013002546A patent/MY164598A/en unknown
- 2012-01-18 RU RU2013139569/08A patent/RU2550554C2/ru active
- 2012-01-18 BR BR112013018816-2A patent/BR112013018816B1/pt active IP Right Grant
- 2012-01-18 EP EP12703374.4A patent/EP2668784B1/en active Active
- 2012-01-18 SG SG2013051313A patent/SG191824A1/en unknown
- 2012-01-18 JP JP2013552014A patent/JP5813784B2/ja active Active
- 2012-01-18 PL PL12703374T patent/PL2668784T3/pl unknown
- 2012-01-18 SI SI201231338T patent/SI2668784T1/en unknown
- 2012-01-18 CA CA2825154A patent/CA2825154C/en active Active
- 2012-01-18 KR KR1020137022566A patent/KR101574866B1/ko active Active
- 2012-01-18 PT PT12703374T patent/PT2668784T/pt unknown
- 2012-01-18 HU HUE12703374A patent/HUE039019T2/hu unknown
- 2012-01-18 DK DK12703374.4T patent/DK2668784T3/en active
-
2013
- 2013-07-01 IL IL227287A patent/IL227287A/en active IP Right Grant
- 2013-08-26 ZA ZA2013/06423A patent/ZA201306423B/en unknown
Also Published As
| Publication number | Publication date |
|---|---|
| BR112013018816A2 (pt) | 2017-07-25 |
| BR112013018816B1 (pt) | 2022-07-19 |
| SG191824A1 (en) | 2013-08-30 |
| WO2012102927A1 (en) | 2012-08-02 |
| PH12013501470A1 (en) | 2017-01-06 |
| AU2012209403A1 (en) | 2013-08-01 |
| KR101574866B1 (ko) | 2015-12-04 |
| RU2550554C2 (ru) | 2015-05-10 |
| JP2014509480A (ja) | 2014-04-17 |
| IL227287A0 (en) | 2013-09-30 |
| SI2668784T1 (en) | 2018-08-31 |
| PL2668784T3 (pl) | 2018-12-31 |
| PT2668784T (pt) | 2018-10-09 |
| MY164598A (en) | 2018-01-30 |
| CN103339938A (zh) | 2013-10-02 |
| ZA201306423B (en) | 2014-04-30 |
| HUE039019T2 (hu) | 2018-12-28 |
| CA2825154C (en) | 2016-10-04 |
| US9319716B2 (en) | 2016-04-19 |
| JP5813784B2 (ja) | 2015-11-17 |
| CN103339938B (zh) | 2016-10-05 |
| IL227287A (en) | 2016-10-31 |
| EP2668784B1 (en) | 2018-05-30 |
| CA2825154A1 (en) | 2012-08-02 |
| DK2668784T3 (en) | 2018-08-20 |
| EP2668784A1 (en) | 2013-12-04 |
| RU2013139569A (ru) | 2015-03-10 |
| KR20130126691A (ko) | 2013-11-20 |
| AU2012209403B2 (en) | 2015-10-01 |
| US20120195368A1 (en) | 2012-08-02 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| ES2684522T3 (es) | Realización de predicción de vector de movimiento para codificación de vídeo | |
| KR102010097B1 (ko) | 일원화된 병합 모드 및 적응적 모션 벡터 예측 모드 후보 선택 | |
| JP5960309B2 (ja) | マッピングされた変換と走査モードとを使用するビデオコード化 | |
| JP5823526B2 (ja) | ビデオ符号化のための適応動きベクトル解像度信号伝達 | |
| JP5778299B2 (ja) | 動きベクトル予測 | |
| ES2856051T3 (es) | Candidatos de fusión favorables a la paralelización para codificación de vídeo | |
| CA2858979C (en) | Performing motion vector prediction for video coding | |
| US20130177084A1 (en) | Motion vector scaling in video coding | |
| JP2019534626A (ja) | ビデオコーディングのための適応的な動きベクトル精度 | |
| US9807407B2 (en) | Reference picture selection | |
| BR112014010046B1 (pt) | Método para decodificar dados de vídeo, método e dispositivo para codificar dados de vídeo e memória legível por computador | |
| JP2017508346A (ja) | ビデオコーディングのための適応的な動きベクトル分解シグナリング | |
| JP2014525170A (ja) | ビデオコード化のための複数領域走査順序 | |
| HK1186892A (en) | Performing motion vector prediction for video coding | |
| HK1186892B (en) | Performing motion vector prediction for video coding |