ES2922238T3 - Predicción de movimiento en codificación de vídeo - Google Patents

Predicción de movimiento en codificación de vídeo Download PDF

Info

Publication number
ES2922238T3
ES2922238T3 ES12731927T ES12731927T ES2922238T3 ES 2922238 T3 ES2922238 T3 ES 2922238T3 ES 12731927 T ES12731927 T ES 12731927T ES 12731927 T ES12731927 T ES 12731927T ES 2922238 T3 ES2922238 T3 ES 2922238T3
Authority
ES
Spain
Prior art keywords
precision
block
prediction value
prediction
value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
ES12731927T
Other languages
English (en)
Inventor
Kemal Ugur
Jani Lainema
Antti Hallapuro
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nokia Technologies Oy
Original Assignee
Nokia Technologies Oy
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=46457280&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=ES2922238(T3) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Nokia Technologies Oy filed Critical Nokia Technologies Oy
Application granted granted Critical
Publication of ES2922238T3 publication Critical patent/ES2922238T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/523Motion estimation or motion compensation with sub-pixel accuracy
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/577Motion compensation with bidirectional frame interpolation, i.e. using B-pictures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/182Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a pixel
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/184Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being bits, e.g. of the compressed video stream

Landscapes

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

Abstract

Hay aparatos revelados, métodos y programas de computadora para utilizar la predicción de movimiento en la codificación de video. Se lee un bloque de píxeles de una representación de video codificada en una corriente de bits, y se determina un tipo de bloque. Si la determinación indica que el bloque es un bloque predicho mediante el uso de dos o más bloques de referencia, se determina una primera ubicación de píxel de referencia en un primer bloque de referencia y se determina una segunda ubicación de píxel de referencia en un segundo bloque de referencia. La primera ubicación de píxeles de referencia se utiliza para obtener una primera predicción. Dicha primera predicción tiene una segunda precisión, que es más alta que la primera precisión. La segunda ubicación de píxel de referencia se utiliza para obtener una segunda predicción, que también tiene la segunda precisión. La primera predicción y la segunda predicción se combinan para obtener una predicción combinada; y la precisión de la predicción combinada se reduce a la primera precisión. (Traducción automática con Google Translate, sin valor legal)

Description

DESCRIPCIÓN
Predicción de movimiento en codificación de vídeo
Campo técnico
La presente invención se refiere a un aparato, a un método y a un programa informático para producir y usar información de predicción de movimiento en la codificación y decodificación de vídeo.
Información de antecedentes
Un códec de vídeo puede comprender un codificador que transforma vídeo de entrada en una representación comprimida adecuada para su almacenamiento y/o transmisión y un decodificador que puede descomprimir la representación de vídeo comprimida para obtener de vuelta a una forma visualizable, o uno cualquiera de los mismos. El codificador puede descartar algo de información en la secuencia de vídeo original para representar el vídeo en una forma más compacta, por ejemplo, a una tasa de bits menor.
Muchos códecs de vídeo híbridos, que funcionan, por ejemplo, según las normas de codificación ITU-T H.263 y H.264 de la Unión Internacional de Telecomunicaciones, codifican información de vídeo en dos fases. En la primera fase, se predicen valores de píxel en una determinada zona de imagen o “ bloque” . Estos valores de píxel pueden predecirse, por ejemplo, mediante mecanismos de compensación de movimiento, que implican encontrar e indicar una zona en una de las tramas de vídeo anteriormente codificadas (o una trama de vídeo codificada posterior) que corresponde estrechamente al bloque que se está codificando. Adicionalmente, pueden predecirse valores de píxel mediante mecanismos espaciales que implican encontrar e indicar una relación de región espacial, por ejemplo, usando valores de píxel alrededor del bloque que va a codificarse de una manera especificada.
Los enfoques de predicción que usan información de imagen de una imagen anterior (o una posterior) también se pueden denominar métodos de interpredicción, y los enfoques de predicción que usan información de imagen dentro de la misma imagen también se pueden denominar métodos de intrapredicción.
La segunda fase es una de codificación del error entre el bloque predicho de píxeles y el bloque original de píxeles. Esto se logra normalmente transformando la diferencia en valores de píxel usando una transformada especificada. Esta transformada puede ser, por ejemplo, una transformada de coseno discreta (DCT) o una variante de la misma. Después de transformar la diferencia, la diferencia transformada puede cuantificarse y codificarse por entropía.
Variando la fidelidad del procedimiento de cuantificación, el codificador puede controlar el equilibrio entre la precisión de la representación de píxel (dicho de otro modo, la calidad de la imagen) y el tamaño de la representación de vídeo codificada resultante (dicho de otro modo, el tamaño de archivo o tasa de bits de transmisión).
En la figura 1 use ilustra un ejemplo del procedimiento de codificación.
El decodificador reconstruye el vídeo de salida aplicando un mecanismo de predicción similar al usado por el codificador para formar una representación predicha de los bloques de píxeles (usando la información de movimiento o espacial creada por el codificador y almacenada en la representación comprimida de la imagen) y la decodificación de error de predicción (la operación inversa a la codificación de error de predicción para recuperar la señal de error de predicción cuantificada en el dominio espacial).
Después de aplicar los procedimientos de predicción de píxel y decodificación de error, el decodificador combina las señales de predicción y de error de predicción (los valores de píxel) para formar la trama de vídeo de salida.
El decodificador (y codificador) también puede aplicar procedimientos de filtrado adicionales para mejorar la calidad del vídeo de salida antes de pasarlo por su visualización y/o almacenarlo como referencia de predicción para las siguientes tramas en la secuencia de vídeo.
En la figura 2 use ilustra un ejemplo del procedimiento de decodificación.
La predicción con compensación de movimiento (MCP) es una técnica usada por normas de compresión de vídeo para reducir el tamaño de un flujo de bits codificado. En MCP, se forma una predicción para una trama actual usando una(s) trama(s) anteriormente codificada(s), en donde sólo se codifica la diferencia entre las señales original y de predicción, representativas de las tramas actual y predicha, y se envía a un decodificador. Una señal de predicción, representativa de una trama de predicción, se forma dividiendo en primer lugar una trama actual en bloques, por ejemplo, macrobloques, y buscando una mejor coincidencia en una trama de referencia para cada bloque. De esta manera, se determina el movimiento de un bloque con respecto a la trama de referencia y esta información de movimiento se codifica para dar un flujo de bits como vectores de movimiento. Un decodificador puede reconstruir la trama de predicción exacta decodificando los datos de vector de movimiento codificados en el flujo de bits.
En la figura 8 se presenta un ejemplo de una estructura de predicción. Los recuadros indican imágenes, las letras mayúsculas dentro de los recuadros indican tipos de codificación, los números dentro de los recuadros son números de imagen (en orden de decodificación) y las flechas indican dependencias de predicción. En este ejemplo, las imágenes I son imágenes de intrapredicción que no usan ninguna imagen de referencia y, por lo tanto, pueden decodificarse independientemente de la decodificación de otras imágenes. Las imágenes P son las denominadas imágenes de unipredicción, es decir, hacen referencia a una imagen de referencia, y las imágenes B son imágenes de bipredicción que usan otras dos imágenes como imágenes de referencia, o dos bloques de predicción dentro de una imagen de referencia. Dicho de otro modo, los bloques de referencia relacionados con la imagen B pueden estar en la misma imagen de referencia (como se ilustra con las dos flechas de la imagen P7 a la imagen B8 en la figura 8) o en dos imágenes de referencia diferentes (como se ilustra, por ejemplo, con las flechas de la imagen P2 y de la imagen B3 a la imagen B4 en la figura 8).
También debe observarse aquí que una imagen puede incluir diferentes tipos de bloques, es decir, bloques de una imagen pueden ser bloques de intrapredicción, bloques de unipredicción y/o bloques de bipredicción. Los vectores de movimiento se refieren con frecuencia a bloques en donde puede existir una pluralidad de vectores de movimiento para una imagen.
En algunos sistemas, las imágenes de unipredicción también se denominan imágenes predichas unidireccionalmente y las imágenes de bipredicción se denominan imágenes predichas bidireccionalmente.
Los vectores de movimiento no se limitan a tener una precisión de píxel completo, sino que también pueden tener una precisión de píxel fraccionario. Es decir, los vectores de movimiento pueden apuntar a posiciones/ubicaciones de píxel fraccionario de la trama de referencia, en donde las ubicaciones de píxeles fraccionarios pueden referirse, por ejemplo, a ubicaciones “entre” píxeles de imagen. Para obtener muestras en ubicaciones de píxeles fraccionarios, se pueden usar filtros de interpolación en el procedimiento de MCP. Las normas de codificación de vídeo convencionales describen cómo un decodificador puede obtener muestras con precisión de píxel fraccionario definiendo un filtro de interpolación. En MPEG-2, por ejemplo, los vectores de movimiento pueden tener como máximo una precisión de medio píxel, en donde las muestras en ubicaciones de medio píxel se obtienen mediante un cálculo de promedio simple de muestras vecinas en ubicaciones de píxeles completos. La norma de codificación de vídeo H.264/AVC soporta vectores de movimiento con una precisión de hasta un cuarto de píxel. Además, en la norma de codificación de vídeo H.264/AVC, se obtienen muestras de medio píxel mediante el uso de filtros de 6 derivaciones simétricos y separables, mientras que las muestras de cuarto de píxel se obtienen calculando el promedio las muestras más cercanas de medio píxel o de píxel completo.
En códecs de vídeo típicos, la información de movimiento se indica mediante vectores de movimiento asociados con cada bloque de imágenes con compensación de movimiento. Cada uno de estos vectores de movimiento representa el desplazamiento del bloque de imagen en la imagen que va a codificarse (en el codificador) o que va a decodificarse (en el decodificador) y el bloque de origen de predicción en una de las imágenes previamente codificadas o decodificadas. Para representar vectores de movimiento de manera eficiente, normalmente se codifican vectores de movimiento de manera diferencial con respecto a un vector de movimiento predicho específico de bloque. En un códec de vídeo típico, los vectores de movimiento predichos se crean de una manera predefinida, por ejemplo, calculando la mediana de los vectores de movimiento codificados o decodificados de los bloques adyacentes.
En códecs de vídeo típicos, el residuo de predicción después de la compensación del movimiento se transforma en primer lugar con un núcleo de transformada (como DCT) y, a continuación, se codifica. La razón de esto es que, a menudo, existe alguna correlación entre el residuo y la transformada que, en muchos casos, puede ayudar a reducir esta correlación y proporcionar una codificación más eficiente.
La solicitud de patente US 2010/111182A1 describe técnicas para codificar datos de vídeo digital usando filtros de interpolación y desviaciones. Un codificador selecciona filtros de interpolación para estimación de movimiento con una precisión de subpíxel basándose en resultados históricos de interpolación obtenidos para unidades de vídeo anteriormente codificadas, tales como tramas o segmentos, y calcula y asigna desviaciones a las posiciones de subpíxel después de la interpolación basándose en diferencias entre una unidad de referencia y la unidad que va a codificarse. La estimación de movimiento puede refinarse de modo que la búsqueda de movimiento considera posiciones de subpíxel a las que se les han añadido anteriormente desviaciones y evalúa las posiciones de subpíxel que tienen una desviación distinta de cero.
Los codificadores de vídeo típicos usan funciones de coste de Lagrange para encontrar modos de codificación óptimos, por ejemplo, el modo de macrobloque deseado y los vectores de movimiento asociados. Este tipo de función de coste usa un factor de ponderación o A para vincular la distorsión de imagen exacta o estimada debido a métodos de codificación con pérdidas y la cantidad exacta o estimada de información requerida para representar los valores de píxel en una zona de imagen.
Esto puede representarse mediante la ecuación:
C=D+ AR (1)
donde C es el coste de Lagrange que va a minimizarse, D es la distorsión de imagen (por ejemplo, error cuadrático medio entre los valores de píxel en el bloque de imagen original y en el bloque de imagen codificado) con el modo y los vectores de movimiento considerados actualmente, A es el coeficiente de Lagrange y R es el número de bits necesarios para representar los datos requeridos para reconstruir el bloque de imagen en el decodificador (incluida la cantidad de datos para representar los vectores de movimiento candidatos).
Algunos códecs de vídeo híbridos, tales como H.264/AVC, usan predicción bidireccional con compensación de movimiento para mejorar la eficiencia de codificación. En la predicción bidireccional, la señal de predicción del bloque puede formarse combinando, por ejemplo calculando el promedio de, dos bloques de predicción con compensación de movimiento. Esta operación de cálculo del promedio puede incluir además un redondeo o bien ascendente o bien descendente, lo que puede introducir errores de redondeo.
La acumulación de errores de redondeo en la predicción bidireccional puede provocar una degradación en la eficiencia de codificación. Esta acumulación de errores de redondeo puede eliminarse o disminuirse mediante la señalización de si se ha usado redondeo ascendente o descendente cuando se han combinado las dos señales de predicción para cada trama. Alternativamente, el error de redondeo puede controlarse alternando el uso de redondeo ascendente y redondeo descendente para cada trama. Por ejemplo, puede usarse redondeo ascendente para una de cada dos tramas y, de manera correspondiente, puede usarse redondeo descendente para una de cada dos tramas.
En la figura 9 se ilustra un ejemplo de cálculo del promedio de dos bloques de predicción con compensación de movimiento usando redondeo. Se introducen 902 valores de muestra de la primera referencia de predicción en un primer filtro 904 en el que se usan en el filtrado valores de dos o más píxeles completos cerca del punto al que hace referencia el vector de movimiento. Se puede añadir una desviación de redondeo 906 al valor filtrado. El valor filtrado con la desviación de redondeo añadida se desplaza a la derecha 908 x bits, es decir, se divide entre 2x para obtener una primera señal de predicción P1. Se realiza una operación similar en la segunda referencia de predicción como se ilustra con los bloques 912, 914, 916 y 918 para obtener una segunda señal de predicción P2. Se combinan la primera señal de predicción P1 y la segunda señal de predicción P2, por ejemplo, sumando las señales de predicción P1, P2. Se puede añadir una desviación de redondeo 920 a la señal combinada después de lo cual se desplaza el resultado a la derecha y bits, es decir, se divide entre 2y. El redondeo puede ser ascendente, si la desviación de redondeo es positiva, o descendente, si la desviación de redondeo es negativa. El sentido del redondeo puede ser siempre el mismo, o puede alterar de vez en cuando, por ejemplo, para cada trama. El sentido del redondeo puede señalizarse en el flujo de bits de modo que en el procedimiento de decodificación se pueda usar el mismo sentido de redondeo.
Sin embargo, estos métodos aumentan en cierta medida la complejidad ya que se necesita escribir dos ramificaciones de código independientes para el cálculo de promedio bidireccional. Además, puede necesitarse duplicar las rutinas de estimación de movimiento en el codificador para los casos tanto de redondeo como de truncamiento.
Sumario
La presente invención introduce un método que permite reducir el efecto de los errores de redondeo en la predicción bidireccional y multidireccional. Según algunas realizaciones de la invención, se mantienen señales de predicción en una mayor precisión durante el cálculo de predicción y se reduce la precisión después de haberse combinado entre sí las dos o más señales de predicción.
En algunos ejemplos de realización, las señales de predicción se mantienen en mayor precisión hasta que se han combinado las señales de predicción para obtener la señal de predicción bidireccional o multidireccional. Entonces puede reducirse la precisión de la señal de predicción bidireccional o multidireccional hasta una precisión apropiada para propósitos de procesamiento posterior. Entonces, no es necesario incluir ni leer ningún indicador de sentido de redondeo en el flujo de bits
La invención se expone en el conjunto de reivindicaciones adjuntas.
Esta invención elimina la necesidad de señalizar la desviación de redondeo o usar diferentes métodos para el redondeo para diferentes tramas. Esta invención puede mantener la señal de predicción con compensación de movimiento de cada una de las predicciones a la mayor precisión posible después de la interpolación y realizar el redondeo al intervalo de profundidad de bits de la señal de vídeo después de añadirse ambas señales de predicción.
Descripción de los dibujos
Para una mejor comprensión de la presente invención, ahora se hará referencia a modo de ejemplo a los dibujos adjuntos, en los que:
la figura 1 muestra esquemáticamente un dispositivo electrónico que emplea algunas realizaciones de la invención; la figura 2 muestra esquemáticamente un equipo de usuario adecuado para emplear algunas realizaciones de la invención; La Figura 3 muestra además dispositivos electrónicos de forma esquemática que emplean realizaciones de la invención conectados usando conexiones de red inalámbricas y alámbricas;
la figura 4a muestra esquemáticamente una realización de la invención incorporada dentro de un codificador;
la figura 4b muestra esquemáticamente una realización de un interpredictor según algunas realizaciones de la invención; la figura 5 muestra un diagrama de flujo que muestra el funcionamiento de una realización de la invención con respecto al codificador mostrado en la figura 4a;
la figura 6 muestra un diagrama esquemático de un decodificador según algunas realizaciones de la invención; la figura 7 muestra un diagrama de flujo que muestra el funcionamiento de una realización de la invención con respecto al decodificador mostrado en la figura 6;
la figura 8 ilustra un ejemplo de una estructura de predicción en una secuencia de vídeo;
la figura 9 representa un ejemplo de un flujo de bits de una imagen;
la figura 10 representa un ejemplo de predicción bidireccional usando redondeo;
la figura 11 representa un ejemplo de predicción bidireccional según un ejemplo de realización de la presente invención; y la figura 12 ilustra un ejemplo de algunos sentidos de predicción posibles para un vector de movimiento.
Descripción detallada de algunos ejemplos de realización
A continuación se describe en más detalle un aparato adecuado y posibles mecanismos para proporcionar reducción de información que va a transmitirse en sistemas de codificación de vídeo y mapeos de palabras de código más óptimos en algunas realizaciones. Con respecto a esto, en primer lugar se hace referencia a la figura 1, que muestra un diagrama de bloques esquemático de un aparato a modo de ejemplo o dispositivo 50 electrónico, que puede incorporar un códec según una realización de la invención.
El dispositivo electrónico 50 puede ser, por ejemplo, un terminal móvil o equipo de usuario de un sistema de comunicación inalámbrica. Sin embargo, se apreciará que las realizaciones de la invención pueden implementarse dentro de cualquier dispositivo o aparato electrónico que pueda requerir codificación y decodificación o codificación o decodificación de imágenes de vídeo.
El aparato 50 puede comprender un alojamiento 30 para incorporar y proteger el dispositivo. El aparato 50 puede comprender además una pantalla 32 en forma de una pantalla de cristal líquido. En otras realizaciones de la invención, la pantalla puede ser cualquier tecnología de visualización adecuada para mostrar una imagen o vídeo. El aparato 50 puede comprender además un teclado numérico 34. En otras realizaciones de la invención se puede emplear cualquier mecanismo de interfaz de datos o de usuario adecuado. Por ejemplo, la interfaz de usuario puede implementarse como un teclado virtual o un sistema de entrada de datos como parte de una pantalla sensible al tacto. El aparato puede comprender un micrófono 36 o cualquier entrada de audio adecuada que puede ser una entrada de señal digital o analógica. El aparato 50 puede comprender además un dispositivo de salida de audio que, en realizaciones de la invención, puede ser uno cualquiera de: un auricular 38, un altavoz o una conexión de salida de audio analógico o de audio digital. El aparato 50 también puede comprender una batería 40 (o, en otras realizaciones de la invención, el dispositivo puede ser alimentado por cualquier dispositivo de energía móvil adecuado tal como célula solar, célula de combustible o generador autómata). El aparato puede comprender además un puerto 42 de infrarrojos para comunicación de línea de visión de corto alcance con otros dispositivos. En otras realizaciones, el aparato 50 puede comprender además cualquier solución de comunicación de corto alcance adecuada tal como, por ejemplo, una conexión inalámbrica Bluetooth o una conexión alámbrica USB/firewire.
El aparato 50 puede comprender un controlador 56 o procesador para controlar el aparato 50. El controlador 56 puede estar conectado a la memoria 58 que, en realizaciones de la invención, puede almacenar ambos datos en forma de datos de imagen y de audio y/o también puede almacenar instrucciones para la implementación en el controlador 56. El controlador 56 puede conectarse además a circuitos 54 de códec adecuados para llevar a cabo la codificación y decodificación de datos de audio y/o vídeo o ayudar en la codificación y decodificación llevada a cabo por el controlador 56.
El aparato 50 puede comprender además un lector 48 de tarjetas y una tarjeta inteligente 46, por ejemplo, un UICC y lector de UICC para proporcionar información de usuario y ser adecuado para proporcionar información de autenticación para autenticación y autorización del usuario en una red.
El aparato 50 puede comprender circuitos 52 de interfaz de radio conectados al controlador y adecuados para generar señales de comunicación inalámbrica, por ejemplo, para comunicación con una red de comunicaciones celulares, un sistema de comunicaciones inalámbricas o una red de área local inalámbrica. El aparato 50 puede comprender además una antena 44 conectada a los circuitos 52 de interfaz de radio para transmitir señales de radiofrecuencia generadas en los circuitos 52 de interfaz de radio a otro u otros aparatos y para recibir señales de radiofrecuencia de otro u otros aparatos.
En algunas realizaciones de la invención, el aparato 50 comprende una cámara capaz de grabar o detectar tramas individuales que después se pasan al códec 54 o al controlador para su procesamiento. En algunas realizaciones de la invención, el aparato puede recibir los datos de imágenes de vídeo para su procesamiento desde otro dispositivo antes de la transmisión y/o almacenamiento. En algunas realizaciones de la invención, el aparato 50 puede recibir de manera inalámbrica o por una conexión por cable la imagen para su codificación/decodificación.
Con respecto a la Figura 3, se muestra un ejemplo de un sistema dentro del cual se pueden utilizar realizaciones de la presente invención. El sistema 10 comprende múltiples dispositivos de comunicación que pueden comunicarse a través de una o más redes. El sistema 10 puede comprender cualquier combinación de redes alámbricas o inalámbricas que incluyen, aunque no de forma limitativa, una red de telefonía celular inalámbrica (tal como una red GSM, UMTS, CDMA, etc.), una wireless local area network (red de área local inalámbrica -WLAN) tal como se define por cualquiera de los estándares IEEE 802.x, una red de área personal Bluetooth, una red de área local Ethernet, una red de área local en anillo con paso de testigo, una red de área amplia e internet.
El sistema 10 puede incluir dispositivos o aparatos 50 de comunicación tanto inalámbrica como por cable adecuados para implementar realizaciones de la invención.
Por ejemplo, el sistema mostrado en la Figura 3 muestra una red 11 de telefonía móvil y una representación de internet 28. La conectividad a internet 28 puede incluir, aunque no de forma limitativa, conexiones inalámbricas de largo alcance, conexiones inalámbricas de corto alcance y diversas conexiones alámbricas que incluyen, aunque no de forma limitativa, líneas telefónicas, líneas de cable, líneas eléctricas y rutas de comunicación similares.
Los dispositivos de comunicación de ejemplo mostrados en el sistema 10 pueden incluir, aunque no de forma limitativa, un dispositivo o aparato electrónico 50, una combinación de un personal digital assistant (asistente digital personal - PDA) y un teléfono móvil 14, un PDA 16, un integrated messaging device (dispositivo de mensajería integrada - IMD) 18, un ordenador 20 de sobremesa, una computadora portátil 22. El aparato 50 puede ser estacionario o móvil cuando se transporta por un individuo que está en movimiento. El aparato 50 también puede estar ubicado en un modo de transporte incluyendo, pero sin limitarse a, un automóvil, un camión, un taxi, un autobús, un tren, un barco, un avión, una bicicleta, una motocicleta o cualquier modo de transporte adecuado similar.
Algunos o más aparatos pueden enviar y recibir llamadas y mensajes y comunicarse con proveedores de servicios a través de una conexión inalámbrica 25 a una estación base 24. La estación base 24 puede estar conectada a un servidor de red 26 que permite la comunicación entre la red 11 de telefonía móvil e internet 28. El sistema puede incluir dispositivos de comunicación y dispositivos de comunicación adicionales de diversos tipos.
Los dispositivos de comunicación pueden comunicarse usando diversas tecnologías de transmisión que incluyen, aunque no de forma limitativa, code division multiple access (acceso múltiple por división de código - CDMA), global systems for mobile communications (sistemas globales para comunicaciones móviles - GSM), universal mobile telecommunications system (sistema universal de telecomunicaciones móviles - UMTS), time divisional multiple access (acceso múltiple por división de tiempo - TDMA), frequency division multiple access (acceso múltiple por división de frecuencia - FDMA), transmission control protocol-internet protocol (protocolo de control de transmisión-protocolo de internet - TCP-IP), short messaging service (servicio de mensajería corta - SMS), multimedia messaging service (servicio de mensajería multimedia (MMS), correo electrónico, instant messaging service (servicio de mensajería instantánea - IMS), Bluetooth, IEEE 802.11 y cualquier tecnología de comunicación inalámbrica similar. Un dispositivo de comunicaciones involucrado en la implementación de diversas realizaciones de la presente invención puede comunicarse usando diversos medios que incluyen, aunque no de forma limitativa, conexiones de radio, infrarrojos, láser, cables y cualquier conexión adecuada.
Diversas realizaciones pueden extender algoritmos convencionales de interpolación de subpíxeles de dos etapas, tales como el algoritmo usado en la norma de codificación de vídeo H.264/AVC, sin la necesidad de aumentar la complejidad del decodificador. Debe observarse aquí que la figura 11 ilustra sólo algunos valores de píxel completo que son los vecinos más cercanos al bloque de píxeles de ejemplo, pero en la interpolación también puede ser posible usar valores de píxel completo ubicados más lejos del bloque que está considerándose. Además, la presente invención no se limita sólo a implementaciones que usan interpolación unidimensional, sino que las muestras de píxeles fraccionarios también se pueden obtener usando interpolación o filtrado más complejo.
Debe observarse que varias realizaciones pueden implementarse mediante, y/o junto con, otras normas de codificación de vídeo además de la norma de codificación de vídeo H.264/AVC.
Con respecto a la figura 4a, se muestra un diagrama de bloques de un codificador de vídeo adecuado para llevar a cabo realizaciones de la invención. Además, con respecto a la figura 5, se muestra como un diagrama de flujo el funcionamiento de los ejemplos de realización de codificador de la invención, específicamente con respecto al uso del cálculo de mayor precisión de señales de predicción.
La figura 4a muestra que el codificador comprende un predictor 302 de píxeles, un codificador 303 de error de predicción y un decodificador 304 de error de predicción. La figura 4 también muestra una realización del predictor 302 de píxeles que comprende un interpredictor 306, un intrapredictor 308, un selector 310 de modo, un filtro 316 y una memoria 318 de trama de referencia. El selector 310 de modo comprende un procesador 381 de bloques y un evaluador 382 de coste. La figura 4b también representa una realización del interpredictor 306 que comprende un selector 360 de bloque y un elemento 361 de definición de vector de movimiento, que puede implementarse, por ejemplo, en un procesador 362 de predicción. El interpredictor 306 también puede tener acceso a una memoria 404 de parámetros. El selector 310 de modo también puede comprender un cuantificador 384.
El predictor 302 de píxeles recibe la imagen 300 que va a codificarse tanto en el interpredictor 306 (que determina la diferencia entre la imagen y una trama 318 de referencia con compensación de movimiento) como en el intrapredictor 308 (que determina una predicción para un bloque de imagen basándose únicamente en las partes ya procesadas de la trama o imagen actual). La salida tanto del interpredictor como del intrapredictor se pasan al selector 310 de modo. El intrapredictor 308 puede tener más de un modo de intrapredicción. Por lo tanto, cada modo puede realizar la intrapredicción y proporcionar la señal predicha al selector 310 de modo. El selector 310 de modo también recibe una copia de la imagen 300.
El procesador 381 de bloques determina qué modo de codificación usar para codificar el bloque actual. Si el procesador 381 de bloques decide usar un modo de interpredicción, pasará la salida del interpredictor 306 a la salida del selector 310 de modo. Si el procesador 381 de bloques decide usar un modo de intrapredicción, pasará la salida de uno de los modos intrapredictor a la salida del selector 310 de modo.
Según algunos ejemplos de realización, el predictor 302 de píxeles funciona de la siguiente manera. El interpredictor 306 y los modos 308 de intrapredicción realizan la predicción del bloque actual para obtener valores de píxel predichos del bloque actual. El interpredictor 306 y los modos 308 de intrapredicción pueden proporcionar los valores de píxel predichos del bloque actual al procesador 381 de bloques para analizar qué predicción seleccionar. Además de los valores predichos del bloque actual, el procesador 381 de bloques puede recibir, en algunas realizaciones, una indicación de un modo de intrapredicción direccional de los modos de intrapredicción.
El procesador 381 de bloques examina si seleccionar el modo de interpredicción o el modo de intrapredicción. El procesador 381 de bloques puede usar funciones de coste tales como la ecuación (1) o algunos otros métodos para analizar qué método de codificación proporciona el resultado más eficiente con respecto a un determinado criterio o criterios. Los criterios seleccionados pueden incluir la eficiencia de codificación, los costes de procesamiento y/o algunos otros criterios. El procesador 381 de bloques puede examinar la predicción para cada direccionalidad, es decir, para cada modo de intrapredicción y modo de interpredicción y calcular el valor de coste para cada modo de intrapredicción y modo de interpredicción, o el procesador 381 de bloques puede examinar sólo un subconjunto de todos los modos de predicción disponibles en la selección del modo de predicción.
En algunas realizaciones, el interpredictor 306 funciona de la siguiente manera. El selector 360 de bloque recibe un bloque actual que va a codificarse (bloque 504 en la figura 5) y examina si una imagen anteriormente codificada contiene un bloque que puede usarse como referencia para el bloque actual (bloque 505). Si se encuentra un bloque de este tipo a partir de la memoria 318 de trama de referencia, el estimador 365 de movimiento puede determinar si el bloque actual puede predecirse usando uno o dos (o más) bloques de referencia, es decir, si el bloque actual puede ser un bloque de unipredicción o un bloque de bipredicción (bloque 506). Si el estimador 365 de movimiento ha determinado usar unipredicción, el estimador 365 de movimiento puede indicar el bloque de referencia al elemento 361 de definición de vector de movimiento. Si el estimador 365 de movimiento ha seleccionado usar bipredicción, el estimador 365 de movimiento puede indicar ambos bloques de referencia, o si se han seleccionado más de dos bloques de referencia, todos los bloques de referencia seleccionados al elemento 361 de definición de vector de movimiento. El elemento 361 de definición de movimiento de movimiento usa la información de bloque de referencia y define un vector de movimiento (bloque 507) para indicar la correspondencia entre píxeles del bloque actual y el/los bloque(s) de referencia.
En algunas realizaciones, el interpredictor 306 calcula un valor de coste tanto para la predicción unidireccional como para la bidireccional y puede seleccionar entonces qué clase de predicción usar con el bloque actual.
En algunas realizaciones, el vector de movimiento puede apuntar a una muestra de píxel completo o a una muestra de píxel fraccionario, es decir, a medio píxel, a un cuarto de píxel o a una octava parte de píxel. El elemento 361 de definición de vector de movimiento puede examinar el tipo del bloque actual para determinar si el bloque es un bloque de bipredicción u otro tipo de bloque (bloque 508). El tipo puede determinarse mediante la indicación 366 de tipo de bloque que puede proporcionarse por el selector 360 de bloque u otro elemento del codificador. Si el tipo del bloque es un bloque de bipredicción, se definen dos (o más) vectores de movimiento por el elemento 361 de definición de vector de movimiento (bloque 509). De lo contrario, si el bloque es un bloque de unipredicción, se definirá un vector de movimiento (bloque 510).
También es posible que el tipo del bloque se determine antes de calcularse el vector de movimiento.
El elemento 361 de definición de vector de movimiento proporciona información de vector de movimiento al procesador 381 de bloques que usa esta información para obtener la señal de predicción.
Cuando se ha calculado el coste con respecto al modo de intrapredicción y posiblemente con respecto al/a los modo(s) de interpredicción, el procesador 381 de bloques selecciona un modo de intrapredicción o el modo de interpredicción para codificar el bloque actual.
Cuando se seleccionó el modo de interpredicción, los valores de píxel predichos o los valores de píxel predichos cuantificados por el cuantificador 384 opcional se proporcionan como salida del selector de modo.
La salida del selector de modo se pasa a un primer dispositivo 321 de suma. El primer dispositivo de suma puede restar la salida del predictor 302 de píxeles a partir de la imagen 300 para producir una primera señal 320 de error de predicción que se introduce en el codificador 303 de error de predicción.
El predictor 302 de píxeles recibe además de un reconstructor 339 preliminar la combinación de la representación de predicción del bloque 312 de imagen y la salida 338 del decodificador 304 de error de predicción. La imagen 314 reconstruida preliminar puede pasarse al intrapredictor 308 y a un filtro 316. El filtro 316 que recibe la representación preliminar puede filtrar la representación preliminar y emitir una imagen 340 reconstruida final que puede guardarse en una memoria 318 de trama de referencia. La memoria 318 de trama de referencia puede estar conectada al interpredictor 306 para usarse como imagen de referencia con la cual se compara la imagen 300 futura en operaciones de interpredicción.
El funcionamiento del predictor 302 de píxeles puede estar configurado para llevar a cabo cualquier algoritmo de predicción de píxeles conocido en la técnica.
El predictor 302 de píxeles también puede comprender un filtro 385 para filtrar los valores predichos antes de enviarlos desde el predictor 302 de píxeles.
El funcionamiento del codificador 303 de error de predicción y el decodificador 304 de error de predicción se describirán con más detalle a continuación en el presente documento. En los siguientes ejemplos, el codificador genera imágenes en cuanto a macrobloques de 16 x 16 píxeles que pasan a formar la imagen completa. Por lo tanto, para los siguientes ejemplos, el predictor 302 de píxeles emite una serie de macrobloques predichos con un tamaño de 16 x 16 píxeles y el primer dispositivo 321 de suma emite una serie de macrobloques de datos residuales de 16 x 16 píxeles que pueden representar la diferencia entre un primer macrobloque en la imagen 300 frente a un macrobloque predicho (salida del predictor 302 de píxeles). Se apreciará que pueden usarse macrobloques de otros tamaños.
El codificador 303 de error de predicción comprende un bloque 342 de transformada y un cuantificador 344. El bloque 342 de transformada transforma la primera señal 320 de error de predicción a un dominio de transformada. La transformada es, por ejemplo, la transformada DCT. El cuantificador 344 cuantifica la señal de dominio de transformada, por ejemplo, los coeficientes de DCT, para formar coeficientes cuantificados.
El codificador 330 de entropía recibe la salida del codificador de error de predicción y puede realizar una codificación de entropía/codificación de longitud variable adecuada en la señal para proporcionar capacidad de detección y corrección de errores. Se puede emplear cualquier algoritmo de codificación de entropía adecuado.
El decodificador 304 de error de predicción recibe la salida del codificador 303 de error de predicción y realiza los procedimientos opuestos del codificador 303 de error de predicción para producir una señal 338 de error de predicción decodificada que, cuando se combina con la representación de predicción del bloque 312 de imagen en el segundo dispositivo 339 de suma, produce la imagen 314 reconstruida preliminar. Se puede considerar que el decodificador de error de predicción comprende un descuantificador 346, que descuantifica los valores de coeficientes cuantificados, por ejemplo, coeficientes de DCT, para reconstruir la señal de transformada y un bloque 348 de transformación inversa, que realiza la transformación inversa a la señal de transformada reconstruida en donde la salida del bloque 348 de transformación inversa contiene el/los bloque(s) reconstruido(s). El decodificador de error de predicción también puede comprender un filtro de macrobloque (no mostrado) que puede filtrar el macrobloque reconstruido según información decodificada adicional y parámetros de filtro.
El funcionamiento y la implementación del selector 310 de modo se muestran con más detalle con respecto a la figura 5. Basándose en las señales de predicción de la salida del interpredictor 306, la salida del intrapredictor 308 y/o la señal 300 de imagen, el procesador 381 de bloques determina qué modo de codificación usar para codificar el bloque de imagen actual. Esta selección se representa como el bloque 500 en la figura 5. El procesador 381 de bloques puede calcular un valor de coste de tasa-distorsión (RD) u otro valor de coste para las señales de predicción que se introducen en el selector 310 de modo y seleccionar un modo 503, 504 de codificación de este tipo para el cual el coste determinado es el más pequeño.
El selector 310 de modo proporciona una indicación del modo de codificación del bloque (501) actual. La indicación puede codificarse e insertarse en un flujo de bits o almacenarse en una memoria junto con la información de imagen.
Si se selecciona el modo de intrapredicción, el bloque se predice mediante un método (503) de intrapredicción. Respectivamente, si se selecciona el modo de interpredicción, el bloque se predice mediante un método (504­ 510) de interpredicción.
Un ejemplo del funcionamiento del selector de modo cuando se selecciona el modo de interpredicción y el tipo del bloque es un bloque de bipredicción, se ilustra como un diagrama de bloques en la figura 11. La información de vector de movimiento proporcionada por el elemento 361 de definición de vector de movimiento contiene una indicación de un primer bloque de referencia y un segundo bloque de referencia. En aplicaciones de multipredicción, la información de vector de movimiento puede contener indicación de más de dos bloques de referencia. El procesador 381 de bloques usa la información de vector de movimiento para determinar qué bloque se usa como primer bloque de referencia para el bloque actual y qué bloque se usa como segundo bloque de referencia para el bloque actual. Entonces, el procesador 381 de bloques usa algunos valores de píxel del primer bloque de referencia para obtener primeros valores de predicción y algunos valores de píxel del segundo bloque de referencia para obtener segundos valores de predicción. Por ejemplo, si un primer vector de movimiento apunta a una fracción de un píxel (un subpíxel) ilustrado por el cuadrado b en el ejemplo de la figura 12, el procesador 381 de bloques puede usar valores de píxel de varios píxeles completos en la misma fila, por ejemplo, que dicha fracción del píxel para obtener un valor de píxel de referencia. El procesador 381 de bloques puede usar, por ejemplo, un filtro P derivaciones tal como un filtro de seis derivaciones en el que se usan P valores de píxel del bloque de referencia para calcular el valor de predicción. En el ejemplo de la figura 12 estos valores de píxel pueden ser los píxeles E, F, G, H, I y J. Las derivaciones del filtro pueden ser, por ejemplo, valores enteros. Un ejemplo de un filtro de seis derivaciones de este tipo es [1 -5 20 20 -5 1] / 32. Por tanto, el filtro 1102 recibirá 1101 los valores de píxel de los píxeles E, F, G, H, I yd J y filtrará estos valores mediante la ecuación P1 = (Er5*F1+20*G1+20*Hr5*h+J1), en la que E1 es el valor del píxel E en el primer bloque de referencia, F1 es el valor del píxel F en el primer bloque de referencia, G1 es el valor del píxel G en el primer bloque de referencia, H1 es el valor del píxel H en el primer bloque de referencia, h es el valor del píxel I en el primer bloque de referencia, y J1 es el valor del píxel J en el primer bloque de referencia. En el primer bloque 1103 de inserción de desviación de redondeo se puede añadir una primera desviación de redondeo al valor P1, es decir, P1 desviación de redondeo. Entonces, puede desplazarse la suma por el primer bloque 1104 de desplazamiento a la derecha de modo que la precisión de la suma pasa a ser de M bits. La precisión M es mayor que la precisión del valor de predicción esperado. Por ejemplo, los valores de píxel y los valores de predicción pueden representarse por N bits en donde M > N. En algunos ejemplos de implementación N es 8 bits y M es 16 bits pero resulta evidente que también pueden usarse otras longitudes de bits con la presente invención.
La segunda predicción puede obtenerse de manera similar por el segundo filtro 1106, que recibe 1105 algunos valores de píxel del segundo bloque de referencia. Estos valores de píxel se determinan basándose en el segundo vector de movimiento. El segundo vector de movimiento puede apuntar al mismo píxel (o una fracción del píxel) en el segundo bloque de referencia al que apunta el primer vector de movimiento en el primer bloque de referencia (usando el ejemplo anterior, ese píxel es el subpíxel b) o a otro píxel completo o un subpíxel en el segundo bloque de referencia. El segundo filtro 1106 usa un filtro similar al primer filtro 1102 y emite el segundo resultado de filtrado P2. Según el ejemplo anterior, el filtro es un filtro de seis derivaciones [1 -5 20 20 -5 1] / 32, en donde P2 = (E2-5*F2+20*G2+20*H2-5H2+J2), en el que E2 es el valor del píxel E en el segundo bloque de referencia, F2 es el valor del píxel F en el segundo bloque de referencia, G2 es el valor del píxel G en el segundo bloque de referencia, H2 es el valor del píxel H en el segundo bloque de referencia, I2 es el valor del píxel I en el segundo bloque de referencia, y J2 es el valor del píxel J en el segundo bloque de referencia. En el segundo bloque 1107 de inserción de desviación de redondeo se puede añadir la primera desviación de redondeo al valor P2, es decir, P2 desviación de redondeo. Entonces, puede desplazarse la suma por el segundo bloque 1108 de desplazamiento a la derecha de modo que la precisión de la suma pasa a ser de M bits.
En el bloque 1109 de combinación se combinan los dos valores de predicción P1, P2, por ejemplo, mediante suma y se añade el valor combinado a un segundo valor de redondeo en el tercer bloque 1110 de inserción de valor de redondeo. El resultado se convierte a una precisión más pequeña, por ejemplo, desplazando bits del resultado a la derecha y veces en el tercer bloque 1111 de desplazamiento. Esto corresponde a dividir el resultado entre 2y. Después de la conversión, la precisión de la señal de predicción corresponde a la precisión de los valores de píxel de entrada. Sin embargo, los resultados intermedios tienen una mayor precisión, en donde posibles errores de redondeo tienen un efecto más pequeño para la señal de predicción en comparación con métodos existentes tales como el método ilustrado en la figura 10.
En una realización alternativa, la desviación de redondeo no se añade por separado a los resultados del primer 1102 y el segundo filtro 1106, sino después de combinar los resultados en el bloque 1110 de combinación. En este caso, el valor de la desviación de redondeo es el doble del valor de la primera desviación de redondeo porque, en la realización de la figura 11, la primera desviación de redondeo se añade realmente dos veces, una vez a P1 y una vez a P2.
En algunas realizaciones, tampoco se necesitan el primer bloque 1105 de desplazamiento y el segundo bloque 1109 de desplazamiento cuando la precisión de los registros que almacenan los resultados de filtración es suficiente sin reducir la precisión de los resultados de filtración. En ese caso, el tercer bloque de desplazamiento puede necesitar desplazar el resultado de predicción más de y bits a la derecha para que el valor desplazado a la derecha P tenga la misma predicción que los valores de píxel de entrada, por ejemplo 8 bits.
Algunos otros ejemplos de realización pueden diferir parcialmente de lo anterior. Por ejemplo, si un vector de movimiento de una de las direcciones de predicción apunta a una muestra entera, la profundidad de bits de las muestras de predicción con precisión entera puede aumentarse desplazando las muestras a la izquierda de modo que el filtrado puede realizarse con valores que tienen la misma precisión.
Las muestras de cada una de las direcciones de predicción pueden redondearse en una etapa intermedia a una profundidad de bits que es aún mayor que la profundidad de bits de entrada para garantizar que todos los valores intermedios se ajustan a registros de cierta longitud, por ejemplo, registros de 16 bits. Por ejemplo, considérese el mismo ejemplo anterior pero usando las derivaciones de filtro: {3, -17, 78, 78, -17, 3}. Entonces P1 y P2 se obtienen como:
P1 = (3*Er 17*F1+78*G1+78*Hr 17*h+3*J1 1) >> 1
P2 = (3*E2-17*F2+78*G2+78*H2-17*I2+3*J2 1) >> 1
Entonces, la señal de predicción bidireccional puede obtenerse usando:
P = (P1 P2 32) >> 6.
Cuando un vector de movimiento apunta entre dos píxeles completos, es decir, a una fracción del píxel, el valor para ese valor de píxel de referencia puede obtenerse de varias maneras. Algunas posibilidades se describieron anteriormente, pero a continuación se proporcionarán algunos ejemplos no limitativos adicionales con referencia a la figura 12.
Si un vector de movimiento apunta al bloque marcado j, el valor de píxel de referencia correspondiente puede obtenerse usando valores de píxel completo en la misma diagonal que j, o mediante un procedimiento de dos fases en el que, por ejemplo, se usan valores de píxel de filas alrededor del bloque j para calcular un conjunto de resultados intermedios y luego estos resultados intermedios pueden filtrarse para obtener el valor de píxel de referencia. En un ejemplo de realización, pueden usarse los valores de píxel completo A y B para calcular un primer resultado intermedio para representar un valor de píxel fraccionario aa, pueden usarse los valores de píxel completo C y D para calcular un segundo resultado intermedio para representar un valor de píxel fraccionario bb, y pueden usarse los valores de píxel completo E a J para calcular un tercer resultado intermedio para representar un valor de píxel fraccionario b. De manera similar, pueden calcularse valores intermedios cuarto, quinto y sexto para representar valores de píxel fraccionario s, gg, hh, basándose en los valores de píxel completo K a Q; R, S; y T, U. Entonces pueden filtrarse estos resultados intermedios mediante un filtro de seis derivaciones, por ejemplo.
No se necesita proporcionar la señal de predicción P obtenida mediante las operaciones descritas anteriormente a un decodificador, pero el codificador usa esta información para obtener bloques predichos y error de predicción. El error de predicción puede proporcionarse al decodificador de modo que el decodificador puede usar operaciones correspondientes para obtener los bloques predichos mediante predicción y corregir los resultados de predicción basándose en el error de predicción. El codificador también puede proporcionar información de vector de movimiento al decodificador.
En un ejemplo de realización, como se representa en la figura 9, el flujo de bits de una imagen comprende una indicación del comienzo de una imagen 910, información de imagen de cada bloque de la imagen 920 e indicación del final de la imagen 930. La información de imagen de cada bloque de la imagen 920 puede incluir un indicador 932 de tipo de bloque e información 933 de vector de movimiento. Resulta evidente que el flujo de bits también puede comprender otra información. Además, esto sólo es una imagen simplificada del flujo de bits y, en implementaciones prácticas, el contenido del flujo de bits puede ser diferente de lo que se representa en la figura 9.
El flujo de bits puede codificarse además por el codificador 330 de entropía.
Aunque las realizaciones anteriores se han descrito con respecto a un tamaño del macrobloque que es de 16 x 16 píxeles, se apreciará que los métodos y aparatos descritos pueden configurarse para gestionar macrobloques de diferentes tamaños de píxeles.
A continuación se representa el funcionamiento de un ejemplo de realización del decodificador 600 con más detalle con referencia a la figura 6.
En el lado del decodificador, se realizan operaciones similares para reconstruir los bloques de imagen. La figura 6 muestra un diagrama de bloques de un decodificador de vídeo adecuado para emplear realizaciones de la invención y la figura 7 muestra un diagrama de flujo de un ejemplo de un método en el decodificador de vídeo. El decodificador muestra un decodificador 600 de entropía que realiza una decodificación de entropía en la señal recibida. Por tanto, el decodificador de entropía realiza la operación inversa al codificador 330 de entropía del codificador descrito anteriormente. El decodificador 600 de entropía emite los resultados de la decodificación de entropía a un decodificador 602 de error de predicción y un predictor 604 de píxel.
El predictor 604 de píxel recibe la salida del decodificador 600 de entropía. La salida del decodificador 600 de entropía puede incluir una indicación sobre el modo de predicción usado en la codificación del bloque actual. Un selector 614 de predictor dentro del predictor 604 de píxel determina que se debe llevar a cabo una intrapredicción, una interpredicción o una operación de interpolación. El selector de predictor puede emitir además una representación predicha de un bloque 616 de imagen a un primer combinador 613. La representación predicha del bloque 616 de imagen se usa junto con la señal 612 de error de predicción reconstruida para generar una imagen 618 reconstruida preliminar. La imagen 618 reconstruida preliminar puede usarse en el predictor 614 o puede pasarse a un filtro 620. El filtro 620 aplica un filtrado que emite una señal 622 reconstruida final. La señal reconstruida final 622 puede almacenarse en una memoria 624 de trama de referencia, estando la memoria 624 de trama de referencia conectada además al predictor 614 para operaciones de predicción.
El decodificador 602 de error de predicción recibe la salida del decodificador 600 de entropía. Un descuantificador 692 del decodificador 602 de error de predicción puede descuantificar la salida del decodificador 600 de entropía y el bloque 693 de transformada inversa puede realizar una operación de transformada inversa en la señal descuantificada emitida por el descuantificador 692. La salida del decodificador 600 de entropía también puede indicar que no debe aplicarse la señal de error de predicción y, en este caso, el decodificador de error de predicción produce una señal de salida de todo ceros.
El decodificador selecciona el macrobloque residual de 16 x 16 píxeles para reconstruir. La selección del macrobloque residual de 16 x 16 píxeles que va a reconstruirse se muestra en la etapa 700.
El decodificador recibe información sobre el modo de codificación usado cuando se ha codificado el bloque actual. La indicación se decodifica, cuando es necesario, y se proporciona al procesador 691 de reconstrucción del selector 614 de predicción. El procesador 691 de reconstrucción examina la indicación (bloque 701 en la figura 7) y selecciona uno de los modos de intrapredicción (bloque 703), si la indicación indica que el bloque se ha codificado usando intrapredicción, o un modo de interpredicción (bloques 704-711), si la indicación indica que el bloque se ha codificado usando interpredicción.
Si el bloque actual se ha codificado usando interpredicción, el predictor 604 de píxel puede funcionar de la siguiente manera. El predictor 604 de píxel recibe información de vector de movimiento (bloque 704). El predictor 604 de píxel también recibe (bloque 705) información de tipo de bloque y examina si el bloque es un bloque de bipredicción o no (bloque 706). Si el tipo de bloque es un bloque de bipredicción, el predictor 604 de píxel examina la información de vector de movimiento para determinar qué tramas de referencia y bloque de referencia en las tramas de referencia se han usado en la construcción de la información de vector de movimiento. El procesador 691 de reconstrucción calcula los vectores de movimiento (709) y usa el valor (de la fracción) del píxel de los bloques de referencia a los que apuntan los vectores de movimiento para obtener una predicción con compensación de movimiento (710) y combina el error de predicción con el valor para obtener un valor reconstruido de un píxel del bloque actual (bloque 711).
Si el tipo de bloque es un bloque de unipredicción, el predictor 604 de píxel examina la información de vector de movimiento para determinar qué trama de referencia y bloque de referencia en la trama de referencia se ha usado en la construcción de la información de vector de movimiento. El procesador 691 de reconstrucción calcula el vector de movimiento (707) y usa el valor (de la fracción) del píxel del bloque de referencia al que apunta el vector de movimiento para obtener una predicción con compensación de movimiento (708) y combina el error de predicción con el valor para obtener un valor reconstruido de un píxel del bloque actual (bloque 711).
Cuando el vector de movimiento no apunta a una muestra de píxel completo en el bloque de referencia, el procesador 691 de reconstrucción realiza el cálculo usando, por ejemplo, una interpolación unidireccional o filtrado de P derivaciones (por ejemplo, filtrado de seis derivaciones) para obtener los valores de los píxeles fraccionarios. Básicamente, las operaciones pueden realizarse de la misma manera que en el codificador, es decir, manteniendo los valores de mayor precisión durante el filtrado hasta que, en la operación de redondeo final, la precisión puede reducirse a la precisión de los píxeles de entrada. Por lo tanto, el efecto de posibles errores de redondeo puede no ser tan grande para los valores predichos como en métodos conocidos.
Los procedimientos descritos anteriormente pueden repetirse para cada píxel del bloque actual para obtener todos los valores de píxel reconstruidos para el bloque actual.
En algunas realizaciones, el procesador 691 de reconstrucción usa el interpolador 694 para realizar el cálculo de los valores de píxel fraccionario.
En algunas realizaciones, el procesador 691 de reconstrucción proporciona los valores de píxel fraccionario al predictor 695, que combina los valores de píxel fraccionario con un error de predicción para obtener los valores reconstruidos de los píxeles del bloque actual.
En algunas realizaciones, la interpolación también puede realizarse usando valores de píxel completos, valores de medio píxel y/o valores de cuarto de píxel que pueden haberse almacenado en una memoria de trama de referencia. Por ejemplo, el codificador o el decodificador pueden comprender una memoria de trama de referencia en la que se pueden almacenar las muestras de píxeles completos, valores de medio píxel y valores de cuarto de píxel.
Además, en algunas realizaciones, el tipo del bloque también puede ser un bloque de multipredicción en donde la predicción de un bloque puede basarse en más de dos bloques de referencia.
Las realizaciones de la invención descritas anteriormente describen el códec en términos de un aparato codificador y decodificador separado para ayudar al entendimiento de los procesos implicados. Sin embargo, se apreciará que el aparato, las estructuras y las operaciones pueden implementarse como un único aparato/estructura/operación de codificador-decodificador. Además, en algunas realizaciones de la invención el codificador y el decodificador pueden compartir algunos o todos los elementos comunes.
Aunque los ejemplos anteriores describen realizaciones de la invención que funcionan dentro de un códec dentro de un dispositivo electrónico, se apreciará que la invención, como se describe a continuación, puede implementarse como parte de cualquier códec de vídeo. Por lo tanto, por ejemplo, las realizaciones de la invención pueden implementarse en un códec de vídeo que puede implementar la codificación de vídeo a través de rutas de comunicación fijas o por cable.
Por lo tanto, el equipo de usuario puede comprender un códec de vídeo tal como los descritos en las realizaciones de la invención anteriores.
Se apreciará que el término equipo de usuario está destinado a cubrir cualquier tipo adecuado de equipo de usuario inalámbrico, tal como teléfonos móviles, dispositivos portátiles de procesamiento de datos o navegadores web portátiles.
Además, los elementos de una public land mobile network (red móvil pública terrestre - PLMN) también pueden comprender códecs de vídeo como se ha descrito anteriormente.
En general, las diversas realizaciones de la invención pueden implementarse en hardware o circuitos de propósito especial, software, lógica o cualquier combinación de los mismos. Por ejemplo, algunos aspectos pueden implementarse en hardware, mientras que otros aspectos pueden implementarse en firmware o software que puede ejecutarse por un controlador, microprocesador u otro dispositivo informático, aunque la invención no se limita a los mismos. Aunque diversos aspectos de la invención pueden ilustrarse y describirse como diagramas de bloques, diagramas de flujo, o usando alguna otra representación gráfica, se entiende que estos bloques, aparatos, sistemas, técnicas o métodos descritos en la presente memoria pueden implementarse, como ejemplos no limitativos, en hardware, software, firmware, circuitos o lógica de propósito especial, hardware de propósito general o controlador u otros dispositivos informáticos, o alguna combinación de los mismos.
Las realizaciones de esta invención pueden implementarse mediante software informático ejecutable por un procesador de datos del dispositivo móvil, tal como en la entidad de procesador, o mediante hardware, o mediante una combinación de software y hardware. Además, en este sentido, cabe señalar que cualesquiera bloques del flujo lógico como en las Figuras puede representar etapas del programa, o circuitos lógicos interconectados, bloques y funciones, o una combinación de etapas de programa y circuitos lógicos, bloques y funciones. El software puede almacenarse en medios físicos tales como chips de memoria, o bloques de memoria implementados dentro del procesador, medios magnéticos tales como disco duro o disquetes, y medios ópticos tales como, por ejemplo, DVD y sus variantes de datos, CD.
La memoria puede ser de cualquier tipo adecuado para el entorno técnico local y puede implementarse usando cualquier tecnología de almacenamiento de datos adecuada, tal como dispositivos de memoria basados en semiconductores, dispositivos y sistemas de memoria magnéticos, dispositivos y sistemas de memoria ópticos, memoria fija y memoria extraíble. Los procesadores de datos pueden ser de cualquier tipo adecuado para el entorno técnico local, y pueden incluir uno o más de ordenadores de propósito general, ordenadores de propósito especial, microprocesadores, digital signal processors (procesadores de señales digitales - DSP) y procesadores basados en arquitectura de procesador de múltiples núcleos, como ejemplos no limitativos.
Las realizaciones de las invenciones pueden ponerse en práctica en diversos componentes tales como módulos de circuito integrado. El diseño de circuitos integrados es, en gran medida, un proceso altamente automatizado. Hay herramientas de software complejas y potentes disponibles para convertir un diseño de nivel lógico en un diseño de circuito de semiconductores listo para grabarse y formarse en un sustrato semiconductor.
Los programas, tales como los proporcionados por Synopsys, Inc. de Mountain View, California y Cadence Design, de San Jose, California, enrutan automáticamente conductores y localizan componentes en un chip de semiconductor usando reglas de diseño bien establecidas, así como bibliotecas de módulos de diseño previamente almacenados. Una vez que se ha completado el diseño para un circuito de semiconductor, el diseño resultante, en un formato electrónico normalizado (p. ej., Opus, GDSII o similar) puede transmitirse a una instalación de fabricación de semiconductores o “fab” para su fabricación.

Claims (1)

  1. REIVINDICACIONES
    Un método de predicción con compensación de movimiento en codificación de vídeo, comprendiendo el método:
    determinar un bloque de píxeles de una representación de vídeo codificada en un flujo de bits, teniendo valores de dichos píxeles una primera precisión, en donde la primera precisión es un primer número de bits,
    determinar un tipo del bloque;
    si la determinación indica que el bloque es un bloque predicho usando dos o más bloques de referencia, teniendo los bloques de referencia dicha primera precisión:
    determinar una primera ubicación de píxel de referencia en un primer bloque de referencia y una segunda ubicación de píxel de referencia en un segundo bloque de referencia;
    usar dicha primera ubicación de píxel de referencia para obtener un primer valor de predicción, teniendo dicho primer valor de predicción una segunda precisión, que es mayor que dicha primera precisión;
    en donde los valores de píxel de dicho primer bloque de referencia se filtran (1102) para obtener dicho primer valor de predicción;
    usar dicha segunda ubicación de píxel de referencia para obtener un segundo valor de predicción, teniendo dicho segundo valor de predicción la segunda precisión, que es mayor que dicha primera precisión, en donde la segunda precisión es un segundo número de bits;
    en donde los valores de píxel de dicho segundo bloque de referencia se filtran (1106) para obtener dicho segundo valor de predicción;
    reducir (1104, 1108) la precisión de dicho primer valor de predicción que tiene dicha segunda precisión y de dicho segundo valor de predicción que tiene dicha segunda precisión hasta una precisión intermedia desplazando dicho primer valor de predicción que tiene dicha segunda precisión y dicho segundo valor de predicción que tiene dicha segunda precisión a la derecha, siendo dicha precisión intermedia más alta que dicha primera precisión;
    sumar (1109) dicho primer valor de predicción que tiene dicha precisión intermedia y dicho segundo valor de predicción que tiene dicha precisión intermedia y un valor de desviación de redondeo (1110) para obtener un valor de predicción combinado; y disminuir (1111) la precisión de dicho valor de predicción combinado hasta dicha primera precisión desplazando bits del valor de predicción combinado a la derecha.
    El método según la reivindicación 1, que comprende además:
    añadir un primer valor de desviación de redondeo a dicho primer valor de predicción y dicho segundo valor de predicción antes de reducir la precisión.
    El método según cualquiera de las reivindicaciones 1 a 2, en donde dicho bloque se predice usando predicción bidireccional.
    Un aparato para la predicción con compensación de movimiento en codificación de vídeo, comprendiendo el aparato:
    medios para determinar un bloque de píxeles de una representación de vídeo codificada en un flujo de bits, teniendo valores de dichos píxeles una primera precisión, en donde la primera precisión es un primer número de bits;
    medios para determinar un tipo del bloque
    medios para, cuando la determinación indica que el bloque se predice usando dos o más bloques de referencia, teniendo los bloques de referencia dicha primera precisión, realizar lo siguiente:
    determinar una primera ubicación de píxel de referencia en un primer bloque de referencia y una segunda ubicación de píxel de referencia en un segundo bloque de referencia;
    usar dicha primera ubicación de píxel de referencia para obtener un primer valor de predicción, teniendo dicho primer valor de predicción una segunda precisión, que es mayor que dicha primera precisión;
    en donde los valores de píxel de dicho primer bloque de referencia se filtran (1102) para obtener dicho primer valor de predicción;
    usar dicha segunda ubicación de píxel de referencia para obtener un segundo valor de predicción, teniendo dicho segundo valor de predicción la segunda precisión, que es mayor que dicha primera precisión, en donde la segunda precisión es un segundo número de bits;
    en donde los valores de píxel de dicho segundo bloque de referencia se filtran (1106) para obtener dicho segundo valor de predicción;
    reducir (1104, 1108) la precisión de dicho primer valor de predicción que tiene dicha segunda precisión y de dicho segundo valor de predicción que tiene dicha segunda precisión hasta una precisión intermedia desplazando dicho primer valor de predicción que tiene dicha segunda precisión y dicho segundo valor de predicción que tiene dicha segunda precisión a la derecha, siendo dicha precisión intermedia más alta que dicha primera precisión;
    sumar (1109) dicho primer valor de predicción que tiene dicha precisión intermedia y dicho segundo valor de predicción que tiene dicha precisión intermedia y un valor de desviación de redondeo (1110) para obtener un valor de predicción combinado; y disminuir (1111) la precisión de dicho valor de predicción combinado hasta dicha primera precisión desplazando bits del valor de predicción combinado a la derecha.
    El aparato según la reivindicación 4, que comprende además:
    medios para añadir un primer valor de desviación de redondeo a dicho primer valor de predicción y dicho segundo valor de predicción antes de reducirse la precisión.
    El aparato según cualquiera de las reivindicaciones 4 a 5, en donde dicho bloque se predice usando predicción bidireccional.
    Un medio de almacenamiento legible por ordenador almacenado con código en el mismo para su uso por un aparato, que, cuando se ejecuta por un procesador, hace que el aparato:
    determine un bloque de píxeles de una representación de vídeo codificada en un flujo de bits, teniendo valores de dichos píxeles una primera precisión, en donde la primera precisión es un primer número de bits,
    determine un tipo del bloque;
    si la determinación del tipo indica que el bloque es un bloque predicho usando dos o más bloques de referencia, teniendo los bloques de referencia dicha primera precisión:
    determine una primera ubicación de píxel de referencia en un primer bloque de referencia y una segunda ubicación de píxel de referencia en un segundo bloque de referencia;
    use dicha primera ubicación de píxel de referencia para obtener un primer valor de predicción, teniendo dicho primer valor de predicción una segunda precisión, que es mayor que dicha primera precisión;
    en donde los valores de píxel de dicho primer bloque de referencia se filtran (1102) para obtener dicho primer valor de predicción;
    use dicha segunda ubicación de píxel de referencia para obtener un segundo valor de predicción, teniendo dicho segundo valor de predicción la segunda precisión, que es mayor que dicha primera precisión, en donde la segunda precisión es un segundo número de bits;
    en donde los valores de píxel de dicho segundo bloque de referencia se filtran (1106) para obtener dicho segundo valor de predicción;
    reduzca (1104, 1108) la precisión de dicho primer valor de predicción que tiene dicha segunda precisión y de dicho segundo valor de predicción que tiene dicha segunda precisión a una precisión intermedia desplazando dicho primer valor de predicción que tiene dicha segunda precisión y dicho segundo valor de predicción que tiene dicha segunda precisión a la derecha, siendo dicha precisión intermedia más alta que dicha primera precisión;
    sume (1109) dicho primer valor de predicción que tiene dicha precisión intermedia y dicho segundo valor de predicción que tiene dicha precisión intermedia y un valor de desviación de redondeo (1110) para obtener un valor de predicción combinado; y disminuya (1111) la precisión de dicho valor de predicción combinado hasta dicha primera precisión desplazando bits del valor de predicción combinado a la derecha.
    Un software informático, que, cuando se ejecuta por un procesador, hace que un aparato:
    determine un bloque de píxeles de una representación de vídeo codificada en un flujo de bits, teniendo valores de dichos píxeles una primera precisión, en donde la primera precisión es un primer número de bits,
    determine un tipo del bloque;
    si la determinación del tipo indica que el bloque es un bloque predicho usando dos o más bloques de referencia, teniendo los bloques de referencia dicha primera precisión:
    determine una primera ubicación de píxel de referencia en un primer bloque de referencia y una segunda ubicación de píxel de referencia en un segundo bloque de referencia;
    use dicha primera ubicación de píxel de referencia para obtener un primer valor de predicción, teniendo dicho primer valor de predicción una segunda precisión, que es mayor que dicha primera precisión;
    en donde los valores de píxel de dicho primer bloque de referencia se filtran (1102) para obtener dicho primer valor de predicción;
    use dicha segunda ubicación de píxel de referencia para obtener un segundo valor de predicción, teniendo dicho segundo valor de predicción la segunda precisión, que es mayor que dicha primera precisión, en donde la segunda precisión es un segundo número de bits;
    en donde los valores de píxel de dicho segundo bloque de referencia se filtran (1106) para obtener dicho segundo valor de predicción;
    reduzca (1104, 1108) la precisión de dicho primer valor de predicción que tiene dicha segunda precisión y de dicho segundo valor de predicción que tiene dicha segunda precisión a una precisión intermedia desplazando dicho primer valor de predicción que tiene dicha segunda precisión y dicho segundo valor de predicción que tiene dicha segunda precisión a la derecha, siendo dicha precisión intermedia más alta que dicha primera precisión;
    sume (1109) dicho primer valor de predicción que tiene dicha precisión intermedia y dicho segundo valor de predicción que tiene dicha precisión intermedia y un valor de desviación de redondeo (1110) para obtener un valor de predicción combinado; y disminuya (1111) la precisión de dicho valor de predicción combinado hasta dicha primera precisión desplazando bits del valor de predicción combinado a la derecha.
ES12731927T 2011-01-07 2012-01-06 Predicción de movimiento en codificación de vídeo Active ES2922238T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201161430694P 2011-01-07 2011-01-07
PCT/IB2012/050089 WO2012093377A1 (en) 2011-01-07 2012-01-06 Motion prediction in video coding

Publications (1)

Publication Number Publication Date
ES2922238T3 true ES2922238T3 (es) 2022-09-12

Family

ID=46457280

Family Applications (1)

Application Number Title Priority Date Filing Date
ES12731927T Active ES2922238T3 (es) 2011-01-07 2012-01-06 Predicción de movimiento en codificación de vídeo

Country Status (8)

Country Link
US (7) US9432693B2 (es)
EP (3) EP4250732B1 (es)
KR (1) KR20130099242A (es)
CN (1) CN103503458B (es)
ES (1) ES2922238T3 (es)
PL (1) PL2661892T3 (es)
RU (1) RU2565363C2 (es)
WO (1) WO2012093377A1 (es)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
PL2658263T3 (pl) * 2010-12-22 2023-03-13 Lg Electronics Inc. Sposób predykcji wewnątrzramkowej i urządzenie wykorzystujące ten sposób
EP4250732B1 (en) 2011-01-07 2024-03-20 Nokia Technologies Oy Motion prediction in video coding
JP2013098899A (ja) * 2011-11-04 2013-05-20 Sony Corp 符号化装置および符号化方法、並びに、復号装置および復号方法
US9641836B2 (en) * 2012-08-07 2017-05-02 Qualcomm Incorporated Weighted difference prediction under the framework of generalized residual prediction
US9185437B2 (en) 2012-11-01 2015-11-10 Microsoft Technology Licensing, Llc Video data
US20140119446A1 (en) * 2012-11-01 2014-05-01 Microsoft Corporation Preserving rounding errors in video coding
US9762920B2 (en) * 2013-06-07 2017-09-12 Qualcomm Incorporated Dynamic range control of intermediate data in resampling process
US10356428B2 (en) 2015-04-13 2019-07-16 Qualcomm Incorporated Quantization parameter (QP) update classification for display stream compression (DSC)
US10244255B2 (en) 2015-04-13 2019-03-26 Qualcomm Incorporated Rate-constrained fallback mode for display stream compression
US10284849B2 (en) 2015-04-13 2019-05-07 Qualcomm Incorporated Quantization parameter (QP) calculation for display stream compression (DSC) based on complexity measure
US9936203B2 (en) * 2015-04-13 2018-04-03 Qualcomm Incorporated Complex region detection for display stream compression
KR20180043787A (ko) * 2015-08-23 2018-04-30 엘지전자 주식회사 인터 예측 모드 기반 영상 처리 방법 및 이를 위한 장치
KR102390162B1 (ko) * 2015-10-16 2022-04-22 삼성전자주식회사 데이터 인코딩 장치 및 데이터 인코딩 방법
US10743023B2 (en) * 2015-12-04 2020-08-11 Sony Corporation Image processing apparatus and image processing method
WO2018008905A1 (ko) * 2016-07-05 2018-01-11 주식회사 케이티 비디오 신호 처리 방법 및 장치
MX2019003549A (es) * 2016-09-30 2019-08-12 Huawei Tech Co Ltd Metodo y aparato para codificacion y decodificacion de imagenes a traves de inter-prediccion.
CN107959855B (zh) * 2016-10-16 2020-02-14 华为技术有限公司 运动补偿预测方法和设备
US10362332B2 (en) * 2017-03-14 2019-07-23 Google Llc Multi-level compound prediction
EP3649780A1 (en) 2017-07-03 2020-05-13 Vid Scale, Inc. Motion-compensation prediction based on bi-directional optical flow
CN109756739B (zh) * 2017-11-07 2022-09-02 华为技术有限公司 图像预测方法和装置
CN109996080B (zh) * 2017-12-31 2023-01-06 华为技术有限公司 图像的预测方法、装置及编解码器
JP2021520710A (ja) 2018-04-06 2021-08-19 ヴィド スケール インコーポレイテッド 簡易化された勾配導出による双方向オプティカルフロー方法
CN111050176B (zh) * 2018-10-15 2021-10-15 腾讯科技(深圳)有限公司 视频编码、视频解码方法、装置、计算机设备和存储介质
CN113302938A (zh) * 2019-01-11 2021-08-24 北京字节跳动网络技术有限公司 整数mv运动补偿
CN112954329B (zh) * 2019-03-11 2022-08-26 杭州海康威视数字技术股份有限公司 一种编解码方法、装置及其设备
KR20220112864A (ko) * 2019-03-15 2022-08-11 베이징 다지아 인터넷 인포메이션 테크놀로지 컴퍼니 리미티드 양방향 광 흐름을 위한 비트-폭 제어를 위한 방법 및 디바이스
WO2020208327A1 (en) 2019-04-10 2020-10-15 BYWORTH, Ian James Downhole cleaning apparatus

Family Cites Families (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU1941797A (en) 1997-03-17 1998-10-12 Mitsubishi Denki Kabushiki Kaisha Image encoder, image decoder, image encoding method, image decoding method and image encoding/decoding system
US6539058B1 (en) 1998-04-13 2003-03-25 Hitachi America, Ltd. Methods and apparatus for reducing drift due to averaging in reduced resolution video decoders
US6512523B1 (en) * 2000-03-27 2003-01-28 Intel Corporation Accurate averaging of elements using integer averaging
WO2003007619A1 (en) 2001-07-10 2003-01-23 Koninklijke Philips Electronics N.V. Method and device for generating a scalable coded video signal from a non-scalable coded video signal
US6950469B2 (en) 2001-09-17 2005-09-27 Nokia Corporation Method for sub-pixel value interpolation
US7620109B2 (en) 2002-04-10 2009-11-17 Microsoft Corporation Sub-pixel interpolation in motion estimation and compensation
JP2005167976A (ja) * 2003-11-14 2005-06-23 Victor Co Of Japan Ltd 動きベクトル検出装置及び動きベクトル検出プログラム
EP1578137A2 (en) 2004-03-17 2005-09-21 Matsushita Electric Industrial Co., Ltd. Moving picture coding apparatus with multistep interpolation process
WO2005104564A1 (ja) 2004-04-21 2005-11-03 Matsushita Electric Industrial Co., Ltd. 動き補償装置
US7580456B2 (en) 2005-03-01 2009-08-25 Microsoft Corporation Prediction-based directional fractional pixel motion estimation for video coding
KR100703770B1 (ko) 2005-03-25 2007-04-06 삼성전자주식회사 가중 예측을 이용한 비디오 코딩 및 디코딩 방법, 이를위한 장치
JP5044415B2 (ja) 2005-11-30 2012-10-10 株式会社東芝 画像符号化/画像復号化方法及び画像符号化/画像復号化装置
EP1980112B1 (en) 2006-02-02 2012-10-24 Thomson Licensing Method and apparatus for adaptive weight selection for motion compensated prediction
WO2007116551A1 (ja) * 2006-03-30 2007-10-18 Kabushiki Kaisha Toshiba 画像符号化装置及び画像符号化方法並びに画像復号化装置及び画像復号化方法
US9307122B2 (en) 2006-09-27 2016-04-05 Core Wireless Licensing S.A.R.L. Method, apparatus, and computer program product for providing motion estimation for video encoding
US9014280B2 (en) 2006-10-13 2015-04-21 Qualcomm Incorporated Video coding with adaptive filtering for motion compensated prediction
CN100551073C (zh) 2006-12-05 2009-10-14 华为技术有限公司 编解码方法及装置、分像素插值处理方法及装置
US8488668B2 (en) 2007-06-15 2013-07-16 Qualcomm Incorporated Adaptive coefficient scanning for video coding
KR101403343B1 (ko) 2007-10-04 2014-06-09 삼성전자주식회사 부화소 움직임 추정을 이용한 인터 예측 부호화, 복호화방법 및 장치
EP2234404A4 (en) 2008-01-09 2011-06-22 Mitsubishi Electric Corp IMAGE ENCODING DEVICE, IMAGE DECODING DEVICE, IMAGE ENCODING METHOD, AND IMAGE DECODING METHOD
CN101965733B (zh) 2008-03-09 2013-08-07 Lg电子株式会社 用于编码或解码视频信号的方法和设备
US20090257499A1 (en) 2008-04-10 2009-10-15 Qualcomm Incorporated Advanced interpolation techniques for motion compensation in video coding
US8971412B2 (en) * 2008-04-10 2015-03-03 Qualcomm Incorporated Advanced interpolation techniques for motion compensation in video coding
JPWO2010001832A1 (ja) 2008-06-30 2011-12-22 株式会社東芝 動画像予測符号化装置および動画像予測復号化装置
US8811484B2 (en) * 2008-07-07 2014-08-19 Qualcomm Incorporated Video encoding by filter selection
US8750378B2 (en) 2008-09-23 2014-06-10 Qualcomm Incorporated Offset calculation in switched interpolation filters
US9078007B2 (en) 2008-10-03 2015-07-07 Qualcomm Incorporated Digital video coding with interpolation filters and offsets
US8831087B2 (en) * 2008-10-06 2014-09-09 Qualcomm Incorporated Efficient prediction mode selection
US9161057B2 (en) 2009-07-09 2015-10-13 Qualcomm Incorporated Non-zero rounding and prediction mode selection techniques in video encoding
US8995526B2 (en) 2009-07-09 2015-03-31 Qualcomm Incorporated Different weights for uni-directional prediction and bi-directional prediction in video coding
WO2011086672A1 (ja) 2010-01-13 2011-07-21 株式会社 東芝 動画像符号化装置および復号装置
US9369712B2 (en) * 2010-01-14 2016-06-14 Dolby Laboratories Licensing Corporation Buffered adaptive filters
US20110200108A1 (en) 2010-02-18 2011-08-18 Qualcomm Incorporated Chrominance high precision motion filtering for motion interpolation
US9237355B2 (en) 2010-02-19 2016-01-12 Qualcomm Incorporated Adaptive motion resolution for video coding
KR101682147B1 (ko) 2010-04-05 2016-12-05 삼성전자주식회사 변환 및 역변환에 기초한 보간 방법 및 장치
KR101847072B1 (ko) 2010-04-05 2018-04-09 삼성전자주식회사 영상 부호화 방법 및 장치, 비디오 복호화 방법 및 장치
US8660174B2 (en) 2010-06-15 2014-02-25 Mediatek Inc. Apparatus and method of adaptive offset for video coding
US20120051431A1 (en) 2010-08-25 2012-03-01 Qualcomm Incorporated Motion direction based adaptive motion vector resolution signaling for video coding
US20120063515A1 (en) 2010-09-09 2012-03-15 Qualcomm Incorporated Efficient Coding of Video Parameters for Weighted Motion Compensated Prediction in Video Coding
EP4250732B1 (en) 2011-01-07 2024-03-20 Nokia Technologies Oy Motion prediction in video coding

Also Published As

Publication number Publication date
WO2012093377A1 (en) 2012-07-12
CN103503458B (zh) 2017-09-22
EP2661892B1 (en) 2022-05-18
US9432693B2 (en) 2016-08-30
EP4250732C0 (en) 2024-03-20
US10523960B2 (en) 2019-12-31
US20120189057A1 (en) 2012-07-26
US20170223373A1 (en) 2017-08-03
US9877037B2 (en) 2018-01-23
US20210281869A1 (en) 2021-09-09
US9628816B2 (en) 2017-04-18
KR20130099242A (ko) 2013-09-05
US11805267B2 (en) 2023-10-31
PL2661892T3 (pl) 2022-08-16
US20240064326A1 (en) 2024-02-22
RU2565363C2 (ru) 2015-10-20
US20180146207A1 (en) 2018-05-24
EP2661892A1 (en) 2013-11-13
EP2661892A4 (en) 2016-06-08
CN103503458A (zh) 2014-01-08
RU2013136693A (ru) 2015-02-20
US20170054998A1 (en) 2017-02-23
EP4250732A3 (en) 2023-10-25
US20200137407A1 (en) 2020-04-30
US11019354B2 (en) 2021-05-25
EP4250732B1 (en) 2024-03-20
EP4099700A1 (en) 2022-12-07
EP4250732A2 (en) 2023-09-27

Similar Documents

Publication Publication Date Title
ES2922238T3 (es) Predicción de movimiento en codificación de vídeo
US20220303556A1 (en) Apparatus, a method and a computer program for video coding
ES2834676T3 (es) Procedimiento y aparato para codificación de video
TWI533667B (zh) 用於視訊編碼之裝置、方法及電腦程式
TWI587685B (zh) 用於視訊處理之裝置、方法及電腦程式
US9280835B2 (en) Method for coding and an apparatus based on a DC prediction value
US9432699B2 (en) Methods, apparatuses and computer programs for video coding
US20120243606A1 (en) Methods, apparatuses and computer programs for video coding