ES2834676T3 - Procedimiento y aparato para codificación de video - Google Patents

Procedimiento y aparato para codificación de video Download PDF

Info

Publication number
ES2834676T3
ES2834676T3 ES12845839T ES12845839T ES2834676T3 ES 2834676 T3 ES2834676 T3 ES 2834676T3 ES 12845839 T ES12845839 T ES 12845839T ES 12845839 T ES12845839 T ES 12845839T ES 2834676 T3 ES2834676 T3 ES 2834676T3
Authority
ES
Spain
Prior art keywords
motion vector
spatial motion
vector prediction
candidate
prediction candidate
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
ES12845839T
Other languages
English (en)
Inventor
Mehmet Oguz Bici
Jani Lainema
Kemal Ugur
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=48191432&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=ES2834676(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 ES2834676T3 publication Critical patent/ES2834676T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/521Processing of motion vectors for estimating the reliability of the determined motion vectors or motion vector field, e.g. for smoothing the motion vector field or for correcting motion vectors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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

Abstract

Un procedimiento que comprende: recibir un bloque (900) de píxeles que incluye una unidad de predicción; determinar para el bloque (900) de píxeles un conjunto de candidatos de predicción de vectores de movimiento espacial localizados debajo a la izquierda (901), izquierda (902), arriba a la izquierda (905), arriba (904) y arriba a la derecha (903) de la unidad de predicción; los candidatos de predicción de vectores de movimiento espacial están provistos de información de movimiento que comprende al menos un vector de movimiento y un índice de referencia; determinar un subconjunto de pares candidatos de predicción de vectores de movimiento espacial entre los pares candidatos de predicción de vectores de movimiento espacial existentes para la comparación entre todos los pares candidatos de predicción de vectores de movimiento espacial disponibles en el conjunto de candidatos de predicción de vectores de movimiento espacial; seleccionar un candidato de predicción de vectores de movimiento espacial del conjunto de candidatos de predicción de vectores de movimiento espacial como un candidato de predicción de vectores de movimiento espacial potencial a incluir en una lista de fusión para la unidad de predicción; examinar el subconjunto de pares candidatos de predicción de vectores de movimiento espacial para determinar qué otro candidato de predicción de vectores de movimiento espacial se define para pertenecer al mismo par candidato de predicción de vectores de movimiento espacial que el candidato de predicción de vectores de movimiento espacial seleccionado (610); comparar la información de movimiento del candidato de predicción de vectores de movimiento espacial seleccionado con la información de movimiento del otro candidato de predicción de vectores de movimiento espacial; si la comparación indica que la información del vector de movimiento del otro candidato de predicción de vectores de movimiento espacial corresponde con la información de vector de movimiento del candidato de predicción de vectores de movimiento espacial seleccionado, excluir el candidato de predicción de vectores de movimiento espacial seleccionado de la lista de fusión; en el que el procedimiento comprende además seleccionar un candidato de predicción de vectores de movimiento de la lista de fusión para representar una predicción de vectores de movimiento para el bloque de píxeles; determinar un número máximo de candidatos de predicción de vectores de movimiento espacial a incluir en una lista de fusión; limitar el número de candidatos de predicción de vectores de movimiento espacial en la lista de fusión menor o igual que el número máximo; si el número de candidatos de predicción de vectores de movimiento espacial en la lista de fusión es menor que el número máximo, examinar si una unidad de predicción a la que pertenece el candidato de predicción de vectores de movimiento espacial potencial está disponible para la predicción de movimiento; si es así, realizar al menos uno de los siguientes: si el candidato de predicción de vectores de movimiento espacial potencial (902) está localizado en el lado izquierdo de la unidad de predicción, excluir el candidato de predicción de vectores de movimiento espacial potencial (902) de la lista de fusión si se cumple alguna de las siguientes condiciones: - el bloque de píxeles recibido se divide verticalmente en una primera unidad de predicción y una segunda unidad de predicción, y la unidad de predicción es la segunda unidad de predicción en orden de codificación; - el bloque de píxeles recibido se divide horizontalmente en una primera unidad de predicción y una segunda unidad de predicción, y si la unidad de predicción es la segunda unidad de predicción en el orden de codificación, y el candidato de predicción de vectores de movimiento espacial potencial (902) tiene los mismos vectores de movimiento y los mismos índices de referencia que el candidato de predicción de vectores de movimiento espacial (904) por encima de la unidad de predicción; si el candidato de predicción de vectores de movimiento espacial potencial (904) se localiza por encima de la unidad de predicción, excluir el candidato de predicción de vectores de movimiento espacial potencial (904) de la lista de fusión si se cumple alguna de las siguientes condiciones: - el bloque de píxeles recibido se divide horizontalmente en una primera unidad de predicción y una segunda unidad de predicción, y la unidad de predicción es la segunda unidad de predicción en orden de codificación; - el candidato de predicción de vectores de movimiento espacial potencial (904) tiene los mismos vectores de movimiento y los mismos índices de referencia que el candidato de predicción de vectores de movimiento espacial (902) en el lado izquierdo de la unidad de predicción; si el candidato de predicción de vectores de movimiento espacial potencial (903) está localizado en el lado derecho del candidato de predicción de vectores de movimiento espacial (904) encima de la unidad de predicción, excluir el candidato de predicción de vectores de movimiento espacial potencial (903) de la lista de fusión si el candidato de predicción de vectores de movimiento espacial potencial (903) tiene los mismos vectores de movimiento y los mismos índices de referencia que el candidato de predicción de vectores de movimiento espacial (904) por encima de la unidad de predicción; si el candidato de predicción de vectores de movimiento espacial potencial (901) está localizado debajo del candidato de predicción de vectores de movimiento espacial (902) en el lado izquierdo de la unidad de predicción, excluir el candidato de predicción de vectores de movimiento espacial potencial (901) de la lista de fusión si el candidato de predicción de vectores de movimiento espacial potencial (901) tiene los mismos vectores de movimiento y los mismos índices de referencia que el candidato de predicción de vectores de movimiento espacial (902) en el lado izquierdo de la unidad de predicción; si el candidato de predicción de vectores de movimiento espacial potencial (905) está en la esquina superior izquierda junto a la unidad de predicción, excluir el candidato de predicción de vectores de movimiento espacial potencial (905) de la lista de fusión si se cumple alguna de las siguientes condiciones: - todos los demás candidatos de predicción de vectores de movimiento espacial (901-904) se han incluido en la lista de fusión; - el candidato de predicción de vectores de movimiento espacial potencial (905) tiene los mismos vectores de movimiento y los mismos índices de referencia que el candidato de predicción de vectores de movimiento espacial (904) por encima de la unidad de predicción; - el candidato de predicción de vectores de movimiento espacial potencial (905) tiene los mismos vectores de movimiento y los mismos índices de referencia que el candidato de predicción de vectores de movimiento espacial (902) en el lado izquierdo de la unidad de predicción.

Description

DESCRIPCIÓN
Procedimiento y aparato para codificación de video
Campo técnico
Se proporciona un procedimiento para codificar, un procedimiento para decodificar, un aparato, productos de programas de ordenador, un codificador y un decodificador.
Información de los antecedentes
Esta sección está destinada a proporcionar antecedentes o contexto a la invención que se enumera en las reivindicaciones. La descripción en la presente memoria puede incluir conceptos que podrían perseguirse, pero no son necesariamente los que se han concebido o perseguido previamente. Por lo tanto, a menos que se indique lo contrario en la presente memoria, lo que se describe en esta sección no es la técnica anterior a la descripción y las reivindicaciones de la presente solicitud y no se admite como técnica anterior por inclusión en esta sección.
Un códec de video puede comprender un codificador que transforma el video de entrada en una representación comprimida adecuada para almacenamiento y/o transmisión y un decodificador que puede descomprimir la representación de video comprimido en una forma visible, o cualquiera de ellos. El codificador puede descartar alguna información en la secuencia de video original para representar el video en una forma más compacta, por ejemplo, a una tasa de bits más baja.
Muchos códecs de video híbridos, que operan, por ejemplo, de acuerdo con los estándares de codificación ITU-T H.263 y H.264 de la Unión Internacional de Telecomunicaciones, codifican información de video en dos fases. En la primera fase, se predicen los valores de los píxeles en una determinada área de imagen o "bloque". Estos valores de píxeles pueden predecirse, por ejemplo, mediante mecanismos de compensación de movimiento, que implican encontrar e indicar un área en una de las tramas de vídeo codificadas previamente (o una trama de vídeo codificada posteriormente) que se corresponda estrechamente con el bloque que se codifica. Además, los valores de los píxeles pueden predecirse mediante mecanismos espaciales que implican encontrar e indicar una relación de región espacial, por ejemplo, usando valores de píxeles alrededor del bloque a codificar de una manera específica.
Los enfoques de predicción que usan información de imagen de una imagen anterior (o posterior) también se pueden llamar procedimientos de interpredicción, y los enfoques de predicción que usan información de imagen dentro de la misma imagen también se pueden llamar procedimientos de intrapredicción.
La segunda fase consiste en codificar el error entre el bloque de píxeles predicho y el bloque de píxeles original. Esto se puede lograr transformando la diferencia en los valores de los píxeles usando una transformación específica. 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. Al variar la fidelidad del proceso de cuantificación, el codificador puede controlar el equilibrio entre la precisión de la representación de píxeles (en otras palabras, la calidad de la imagen) y el tamaño de la representación de video codificada resultante (en otras palabras, el tamaño de archivo o velocidad de transmisión de bits).
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 el movimiento o la información espacial creada por el codificador y almacenada en la representación comprimida de la imagen) y decodificación del error de predicción (la operación inversa de la codificación del error de predicción para recuperar la señal de error de predicción cuantificada en el dominio espacial).
Después de aplicar los procesos de predicción de píxeles y decodificación de errores, el decodificador combina la predicción y las señales de error de predicción (los valores de píxeles) para formar la trama de vídeo de salida. El decodificador (y codificador) también puede aplicar procesos de filtrado adicionales para mejorar la calidad del video de salida antes de pasarlo para su visualización y/o almacenamiento como referencia de predicción para las próximas tramas en la secuencia de video.
En algunos códecs de video, tal como el borrador de trabajo de codificación de video de alta eficiencia 4, las imágenes de video se pueden dividir en unidades de codificación (CU) que cubren el área de una imagen. Una unidad de codificación consiste de una o más unidades de predicción (PU) que definen el proceso de predicción para las muestras dentro de la unidad de codificación y una o más unidades de transformación (TU) que definen el proceso de codificación del error de predicción para las muestras en la unidad de codificación. Una unidad de codificación puede consistir en un bloque cuadrado de muestras con un tamaño seleccionable de un conjunto predefinido de posibles tamaños de unidad de codificación. Una unidad de codificación con el tamaño máximo permitido se puede nombrar como una unidad de codificación más grande (LCU) y la imagen de vídeo se puede dividir en unidades de codificación más grandes que no se superponen. Una unidad de codificación más grande se puede dividir además en una combinación de unidades de codificación más pequeñas, por ejemplo, dividiendo recursivamente la unidad de codificación más grande y las unidades de codificación resultantes. Cada unidad de codificación resultante puede tener asociada al menos una unidad de predicción y al menos una unidad de transformación. Cada unidad de predicción y unidad de transformación se puede dividir en unidades de predicción y unidades de transformación más pequeñas para aumentar la granularidad de los procesos de predicción y codificación de errores de predicción, respectivamente. Cada unidad de predicción puede tener asociada información de predicción que define qué tipo de predicción se aplicará a los píxeles dentro de esa unidad de predicción (por ejemplo, información de vector de movimiento para unidades de interpredicción predichas e información de direccionalidad intrapredictiva para unidades de intrapredicción predichas). De manera similar, cada unidad de transformación puede estar asociada con información que describe el proceso de decodificación del error de predicción para muestras dentro de la unidad de transformación (que incluye, por ejemplo, información de coeficiente de transformada de coseno discreta (DCT)). Puede indicarse a nivel de unidad de codificación si se aplica o no codificación de error de predicción para cada unidad de codificación. En el caso de que no exista un error de predicción residual asociado con la unidad de codificación, se puede considerar que no existen unidades de transformación para la unidad de codificación. La división de la imagen en unidades de codificación y la división de las unidades de codificación en unidades de predicción y unidades de transformación se pueden señalar en el flujo de bits, lo que permite que el decodificador reproduzca la estructura deseada de estas unidades.
En algunos códecs de vídeo, la información de movimiento se indica mediante vectores de movimiento asociados con cada bloque de imágenes con compensación de movimiento. Estos vectores de movimiento representan el desplazamiento del bloque de imágenes en la imagen a codificar (en el codificador) o decodificar (en el decodificador) y el bloque fuente de predicción en una de las imágenes (o fotos) previamente codificadas o decodificadas. Para representar vectores de movimiento de manera eficiente, los vectores de movimiento pueden codificarse diferencialmente con respecto al vector de movimiento predicho específico del bloque. En algunos códecs de video, 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.
Otra forma de crear predicciones de vectores de movimiento es generar una lista o un conjunto de predicciones candidatas a partir de bloques en la trama actual y/o colocalizado u otros bloques en imágenes de referencia temporal y señalizar al candidato elegido como predicción de vectores de movimiento. Una predicción de vectores de movimiento espacial es una predicción obtenida solo sobre la base de la información de uno o más bloques de la misma trama que la trama actual, mientras que la predicción de vectores de movimiento temporal es una predicción obtenida sobre la base de la información de uno o más bloques de una trama diferente de la trama actual. También puede ser posible obtener predicciones de vectores de movimiento combinando la información de predicción espacial y temporal de uno o más bloques codificados. Este tipo de predicciones de vectores de movimiento se denominan predicciones de vectores de movimiento espacio-temporales.
Además de predecir los valores de vectores de movimiento, se puede predecir el índice de referencia en la lista de imágenes de referencia. El índice de referencia puede predecirse a partir de bloques en la trama actual y/o colocalizado u otros bloques en una imagen de referencia temporal. Además, algunos códecs de video de alta eficiencia emplean un mecanismo de codificación/decodificación de información de movimiento adicional, a menudo llamado modo de fusión/mezcla, donde se puede predecir toda la información del campo de movimiento, que incluye el vector de movimiento y el índice de imagen de referencia correspondiente para cada lista de imágenes de referencia disponible y se usa sin ninguna modificación o corrección. De manera similar, la predicción de la información del campo de movimiento se puede llevar a cabo usando la información del campo de movimiento de los bloques en la trama actual y/o los bloques colocalizados u otros en las imágenes de referencia temporal y la información del campo de movimiento usada se señala entre una lista de candidatos de campo de movimiento llena con información del campo de movimiento de los bloques disponibles en la trama actual y/o los bloques colocalizados u otros bloques en las imágenes de referencia temporal.
En algunos códecs de video, el residuo de predicción después de la compensación de movimiento se transforma primero con un núcleo de transformación (como DCT) y luego se codifica. La razón de esto es que a menudo todavía existe alguna correlación entre el residuo y la transformación que en muchos casos puede ayudar a reducir esta correlación y proporcionar una codificación más eficiente.
Algunos codificadores de vídeo usan funciones de costo lagrangiano 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 costo usa un factor de ponderación A para unir la distorsión de la imagen (exacta o estimada) debido a los procedimientos de codificación con pérdida y la cantidad (exacta o estimada) de información que se requiere para representar los valores de píxeles en un área de imagen:
Figure imgf000003_0001
donde C es el costo lagrangiano a minimizar, D es la distorsión de la imagen (por ejemplo, error cuadrático medio) con el modo y los vectores de movimiento considerados, y R el número de bits necesarios para representar los datos necesarios para reconstruir el bloque de imágenes en el decodificador (que incluye la cantidad de datos para representar los vectores de movimiento candidatos).
Algunos códecs de video, tal como los códecs de video híbridos, pueden generar una lista de predicciones de vectores de movimiento (MVP) que consiste de vectores de movimiento de bloques espaciales adyacentes (MVP espacial) y/o vectores de movimiento de bloques en una trama previamente decodificada (MVP temporal). Uno de los vectores de movimiento candidatos de la lista se indica para que se use como predicción de vectores de movimiento del bloque actual. Después de generar la lista, algunos de los candidatos de predicción de vectores de movimiento pueden tener la misma información de movimiento. En este caso, los candidatos de predicción de vectores de movimiento idénticos pueden eliminarse para reducir la redundancia. Durante la decodificación, si la información de predicción de vectores de movimiento temporal no está disponible debido, por ejemplo, a la pérdida de la trama de referencia, es posible que el decodificador no sepa si el candidato de predicción de vectores de movimiento temporal de la lista debe eliminarse. Esto puede dar lugar a incertidumbre para mapear el índice de candidatos decodificados con los candidatos cuya decisión de eliminación se basa en comparar la información de movimiento con la predicción de vectores de movimiento temporal. Como resultado, puede producirse una asignación falsa de candidatos de predicción de vectores de movimiento, lo que puede conducir a la degradación de la calidad de la imagen y la desviación de la información de movimiento falso a lo largo del proceso de decodificación.
El documento Nakamura "Unification of derivation process for merge mode and MVP" (JCTVC-F419) describe un sistema que selecciona los dos primeros predictores espaciales disponibles y realiza un proceso de eliminación de duplicados entre los dos candidatos predictores espaciales (S0 y S1) y un candidato predictor temporal (Col). El proceso de eliminación de duplicados no considera las localizaciones de los candidatos espaciales y las tres posibles combinaciones de S0, S1 y Col se realizan "a ciegas" como sigue: S0 se compara con S1, S0 se compara con Col y S1 se compara con Col. Puede suceder que uno o ambos de los dos predictores espaciales seleccionados no sean las mejores alternativas.
El documento Wiegand y otros "WD3 Working draft 3 of high efficiency video coding" (JCTVC-E603) descalifica a los candidatos si no están disponibles, si se codifica con el modo intra, o si el movimiento de un candidato es idéntico al movimiento de otra unidad de predicción dentro de la misma unidad de codificación. Por lo tanto, hubiera sido más eficiente representar una unidad de codificación con una segmentación más grande en lugar de dividirla en unidades de predicción más pequeñas e indicar un movimiento idéntico entre esas pequeñas unidades de predicción.
El documento Zheng y otros "Merge candidate selection in 2NxN, Nx2N, and NxN mode"(m20723) propone permitir que los candidatos de fusión adicionales sobrevivan al proceso descrito en Wiegand y otros, sección 8.4.2.1.2, basado en el índice del candidato de fusión.
Sumario
La presente invención presenta un procedimiento para generar una lista de predicción de vectores de movimiento para un bloque de imágenes. En algunas realizaciones, los códecs de vídeo emplean en la construcción de una lista de candidatos de predicción de movimiento una forma para reducir la complejidad de la implementación. Esto se puede lograr realizando un número limitado de comparaciones de información de movimiento entre pares de candidatos para eliminar los candidatos redundantes en lugar de comparar todos los pares de candidatos disponibles. La decisión de comparar dos candidatos puede depender del orden de los candidatos a considerar para la lista y/o el modo de codificación/predicción y/o la localización de los bloques asociados con los candidatos. En algunas realizaciones, un códec de vídeo emplea un proceso de fusión para la codificación de la información de movimiento y crea una lista de candidatos de predicción de movimiento de los que uno de los candidatos debe ser señalado como información de movimiento para la unidad de codificación o predicción actual. Los candidatos de predicción de movimiento pueden consistir en varias predicciones de movimiento espacial y una predicción de movimiento temporal. Los candidatos espaciales se obtienen a partir de la información de movimiento de, por ejemplo, bloques vecinos espaciales.
La invención se define en las reivindicaciones adjuntas. Cualquier ejemplo y realización de la descripción que no se encuentre dentro del ámbito de las reivindicaciones no forma parte de la invención y se proporciona únicamente con fines ilustrativos.
De acuerdo con un primer aspecto de la presente invención, se proporciona un procedimiento de acuerdo con la reivindicación adjunta 1.
De acuerdo con un segundo aspecto de la presente invención, se proporciona un procedimiento de acuerdo con la reivindicación adjunta 6. De acuerdo con un tercer aspecto de la presente invención se proporciona un aparato de acuerdo con la reivindicación adjunta 9.
De acuerdo con un cuarto aspecto de la presente invención, se proporciona un aparato de acuerdo con la reivindicación adjunta 10.
De acuerdo con un quinto aspecto de la presente invención, se proporciona un medio de almacenamiento legible por ordenador de acuerdo con la reivindicación adjunta 11.
De acuerdo con un sexto aspecto de la presente invención, se proporciona un medio de almacenamiento legible por ordenador de acuerdo con la reivindicación adjunta 12.
Descripción de los dibujos
Para una mejor comprensión de la presente invención se hará ahora referencia a manera de ejemplo solo a los dibujos adjuntos en los cuales:
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 además muestra esquemáticamente dispositivos electrónicos que emplean realizaciones de la invención conectados que usan conexiones de red inalámbricas y por cable;
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 una generación y modificación de una lista de referencia de predicción de acuerdo con algunas realizaciones de la invención;
Las Figuras 5a y 5b muestran un diagrama de flujo que muestra el funcionamiento de una realización de la invención con respecto al codificador como se muestra en la Figura 4a;
La Figura 6a ilustra un ejemplo de predicción espacial y temporal de una unidad de predicción;
La Figura 6b ilustra otro ejemplo de predicción espacial y temporal de una unidad de predicción;
La Figura 7 muestra esquemáticamente una realización de la invención incorporada dentro de un decodificador; Las Figuras 8a y 8b muestran un diagrama de flujo que muestra el funcionamiento de una realización de la invención con respecto al decodificador mostrado en la Figura 7;
La Figura 9 ilustra un ejemplo de una unidad de codificación y algunos bloques vecinos de la unidad de codificación;
La Figura 10a ilustra un ejemplo de una división horizontal de la unidad de codificación;
La Figura 10b ilustra un ejemplo de una división vertical de la unidad de codificación;
La Figura 11a ilustra localizaciones de cinco vecinos espaciales A0, A1, B0, B1, B2 para una unidad de predicción generada como la segunda unidad de predicción de una unidad de codificación dividida horizontalmente;
La Figura 11b ilustra las localizaciones de cinco vecinos espaciales para una unidad de predicción generada como la segunda unidad de predicción de una unidad de codificación dividida verticalmente; y
La Figura 12 ilustra un ejemplo de bloques entre algunos vecinos espaciales de una unidad de codificación.
Descripción detallada de algunas realizaciones ilustrativas
A continuación se describe con más detalle el aparato adecuado y los posibles mecanismos para mejorar la precisión de la predicción y, por tanto, posiblemente reducir la información a transmitir en los sistemas de codificación de vídeo. Con respecto a esto, se hace referencia en primer lugar a la Figura 1, que muestra un diagrama de bloques esquemático de un aparato o dispositivo electrónico ilustrativo 50, que puede incorporar un códec de acuerdo con una realización de la invención.
El dispositivo electrónico 50 puede ser, por ejemplo, un terminal móvil o un 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 video.
El aparato 50 puede comprender una carcasa 30 para incorporar y proteger el dispositivo. El aparato 50 puede comprender además un visualizador 32 en forma de pantalla de cristal líquido. En otras realizaciones de la invención, la pantalla puede ser cualquier tecnología de visualización adecuada para visualizar una imagen o un vídeo. El aparato 50 puede comprender además un teclado 34. En otras realizaciones de la invención se puede emplear cualquier mecanismo de interfaz del usuario o datos adecuado. Por ejemplo, la interfaz del 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 las realizaciones de la invención, puede ser cualquiera de: un auricular 38, un altavoz o una conexión de salida de audio analógica o de audio digital. El aparato 50 puede comprender además una batería 40 (o en otras realizaciones de la invención, el dispositivo puede alimentarse por cualquier dispositivo de energía móvil adecuado, tal como una celda solar, una celda de combustible o un generador de relojería). El aparato puede comprender además un puerto de infrarrojos 42 para la 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 por cable USB/Firewire.
El aparato 50 puede comprender un controlador 56 o procesador para controlar el aparato 50. El controlador 56 puede conectarse a la memoria 58 que, en las realizaciones de la invención, puede almacenar tanto datos en forma de imagen como datos 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 un circuito de códec 54 adecuado para llevar a cabo la codificación y decodificación de datos de audio y/o video 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 de tarjetas 48 y una tarjeta inteligente 46, por ejemplo un lector de UICC y UICC para proporcionar información de usuario y ser adecuado para proporcionar información de autenticación para la autenticación y autorización del usuario en una red.
El aparato 50 puede comprender un circuito de interfaz de radio 52 conectado al controlador y adecuado para generar señales de comunicación inalámbrica, por ejemplo, para la comunicación con una red de comunicaciones celular, 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 al circuito de interfaz de radio 52 para transmitir señales de radiofrecuencia generadas en el circuito de interfaz de radio 52 a otro(s) aparato(s) y para recibir señales de radiofrecuencia de otro(s) aparato(s).
En algunas realizaciones de la invención, el aparato 50 comprende una cámara capaz de grabar o detectar tramas individuales que luego se pasan al códec 54 o controlador para su procesamiento. En algunas realizaciones de la invención, el aparato puede recibir los datos de la imagen 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 mediante una conexión por cable la imagen para codificar/decodificar.
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 cableadas o inalámbricas que incluyen, pero sin limitarse a, una red de telefonía celular inalámbrica (tal como una red GSM, UMTS, CDMA, etc.), una red de área local inalámbrica (WLAN) tal como la definida 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 configuración de anillo con paso de testigo, una red de área amplia e Internet.
El sistema 10 puede incluir dispositivos o aparatos 50 de comunicación por cable e inalámbricos adecuados para implementar las realizaciones de la invención.
Por ejemplo, el sistema que se muestra en la Figura 3 muestra una red de telefonía móvil 11 y una representación de Internet 28. La conectividad a Internet 28 puede incluir, pero sin limitarse a, conexiones inalámbricas de largo alcance, conexiones inalámbricas de corto alcance y varias conexiones por cable, que incluyen, pero sin limitarse a, líneas telefónicas, líneas de cable, líneas eléctricas y vías de comunicación similares.
Los dispositivos de comunicación ilustrativos mostrados en el sistema 10 pueden incluir, pero sin limitarse a, un dispositivo o aparato electrónico 50, una combinación de un asistente digital personal (PDA) y un teléfono móvil 14, un PDA 16, un dispositivo de mensajería integrado ( IMD) 18, un ordenador de escritorio 20, un ordenador portátil 22. El aparato 50 puede ser fijo o móvil cuando lo lleva un individuo que se está moviendo. El aparato 50 también puede localizarse en un modo de transporte que incluye, pero sin limitarse a, un automóvil, un camión, un taxi, un autobús, un tren, un bote, 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 conectarse a un servidor de red 26 que permite la comunicación entre la red de telefonía móvil 11 e Internet 28. El sistema puede incluir dispositivos de comunicación adicionales y dispositivos de comunicación de varios tipos.
Los dispositivos de comunicación pueden comunicarse usando diversas tecnologías de transmisión que incluyen, pero sin limitarse a, acceso múltiple por división de código (CDMA), sistemas globales para comunicaciones móviles (GSM), sistema universal de telecomunicaciones móviles (UMTS), acceso múltiple por división de tiempo (TDMA), acceso múltiple por división de frecuencia (FDMA), protocolo de control de transmisión-protocolo de Internet (TCP-IP), servicio de mensajería corta (SMS), servicio de mensajería multimedia (MMS), correo electrónico, servicio de mensajería instantánea (IMS), Bluetooth, IEEE 802.11 y cualquier tecnología de la 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 varios medios que incluyen, pero sin limitarse a, radio, infrarrojos, láser, conexiones de cable y cualquier conexión adecuada.
Con respecto a la Figura 4a, se muestra un diagrama de bloques de un codificador de video adecuado para llevar a cabo las realizaciones de la invención. Además, con respecto a las Figuras 5a y 5b, el funcionamiento del codificador que ejemplifica las realizaciones de la invención específicamente con respecto a la construcción de la lista de predicciones candidatas se muestra como un diagrama de flujo.
La Figura 4a muestra que el codificador comprende un predictor de píxeles 302, un codificador de errores de predicción 303 y un decodificador de errores de predicción 304. La Figura 4a también muestra una realización del predictor de píxeles 302 que comprende un interpredictor 306, un intrapredictor 308, un selector de modo 310, un filtro 316 y una memoria de trama de referencia 318. En esta realización, el selector de modo 310 comprende un procesador de bloques 381 y un evaluador de costos 382. El codificador puede comprender además un codificador entrópico 330 para codificar la entropía del flujo de bits.
La Figura 4b representa una realización del interpredictor 306. El interpredictor 306 comprende un selector de tramas de referencia 360 para seleccionar trama o tramas de referencia, un definidor de vectores de movimiento 361, un modificador de lista de predicción 363 y un selector de vector de movimiento 364. Estos elementos o algunos de ellos pueden ser parte de un procesador de predicción 362 o pueden implementarse usando otros medios.
El predictor de píxeles 302 recibe la imagen 300 a modificar tanto en el interpredictor 306 (que determina la diferencia entre la imagen y una trama de referencia compensada por movimiento 318) como en el intrapredictor 308 (que determina una predicción para un bloque de imágenes basado solo en las partes ya procesadas de la trama o imagen actual). La salida tanto del predictor como del intrapredictor se puede pasar al selector de modo 310. 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 de modo 310. El selector de modo 310 también recibe una copia de la imagen 300.
El selector de modo 310 determina qué modo de codificación usar para codificar el bloque actual. Si el selector de modo 310 decide usar un modo de interpredicción, pasará la salida del predictor 306 a la salida del selector de modo 310. Si el selector de modo 310 decide usar un modo de intrapredicción, pasará la salida de uno de los modos de intrapredictor a la salida del selector de modo 310.
La salida del selector de modo se pasa a un primer dispositivo sumador 321. El primer dispositivo sumador puede restar la salida del predictor de píxeles 302 de la imagen 300 para producir una primera señal de error de predicción 320 que se introduce en el codificador de errores de predicción 303.
El predictor de píxeles 302 recibe además de un reconstructor preliminar 339 la combinación de la representación de predicción del bloque de imagen 312 y la salida 338 del decodificador de errores de predicción 304. La imagen reconstruida preliminarmente 314 se puede pasar al intrapredictor 308 y a un filtro 316. El filtro 316 que recibe la representación preliminar puede filtrar la representación preliminar y generar una imagen reconstruida final 340 que puede guardarse en una memoria de tramas de referencia 318. La memoria de trama de referencia 318 puede conectarse al interpredictor 306 para usarse como la imagen de referencia con la que se compara la imagen futura 300 en operaciones de interpredicción.
El funcionamiento del predictor de píxeles 302 puede configurarse para llevar a cabo cualquier algoritmo conocido de predicción de píxeles conocido en la técnica.
El predictor de píxeles 302 puede comprender además un filtro 385 para filtrar los valores predichos antes de emitirlos desde el predictor de píxeles 302.
El funcionamiento del codificador de errores de predicción 302 y el decodificador de errores de predicción 304 se describirá en lo adelante con más detalle. En los siguientes ejemplos, el codificador genera imágenes en términos de macrobloques de 16x16 píxeles que van a formar la imagen o foto completa. Por lo tanto, para los siguientes ejemplos, el predictor de píxeles 302 genera una serie de macrobloques predichos de tamaño 16x16 píxeles y el primer dispositivo sumador 321 genera una serie de macrobloques de datos residuales de 16x16 píxeles que pueden representar la diferencia entre un primer macrobloque en la imagen 300 contra un macrobloque predicho(salida del predictor de píxeles 302). Se apreciará que se pueden usar macrobloques de otros tamaños. El codificador de errores de predicción 303 comprende un bloque de transformación 342 y un cuantificador 344. El bloque de transformación 342 transforma la primera señal de error de predicción 320 en un dominio de transformación. La transformación es, por ejemplo, la transformada DCT. El cuantificador 344 cuantifica la señal del dominio de transformación, por ejemplo, los coeficientes DCT, para formar coeficientes cuantificados.
El decodificador de errores de predicción 304 recibe la salida del codificador de errores de predicción 303 y realiza los procesos opuestos del codificador de errores de predicción 303 para producir una señal de error de predicción decodificada 338 que cuando se combina con la representación de predicción del bloque de imágenes 312 en el segundo dispositivo sumador 339 produce la imagen reconstruida preliminarmente 314. Se puede considerar que el decodificador de errores de predicción comprende un decuantificador 346, que decuantifica los valores de los coeficientes cuantificados, por ejemplo, coeficientes DCT, para reconstruir la señal de transformación y un bloque de transformación inversa 348, que realiza la transformación inversa a la señal de transformación reconstruida en el que la salida del bloque de transformación inversa 348 contiene bloque(s) reconstruido(s). El decodificador de errores de predicción puede comprender además un filtro de macrobloque (no se muestra) que puede filtrar el macrobloque reconstruido de acuerdo con información decodificada adicional y parámetros de filtrado.
A continuación, se describirá con más detalle el funcionamiento de una realización ilustrativa del interpredictor 306. El interpredictor 306 recibe el bloque actual para la interpredicción. Se supone que para el bloque actual ya existen uno o más bloques vecinos que se han codificado y se han definido vectores de movimiento para ellos. Por ejemplo, el bloque del lado izquierdo y/o el bloque encima del bloque actual pueden ser tales bloques. Las predicciones de vectores de movimiento espacial para el bloque actual se pueden formar, por ejemplo, usando los vectores de movimiento de los bloques vecinos codificados y/o de bloques no vecinos en el mismo corte o trama, usando funciones lineales o no lineales de predicciones de vectores de movimiento espacial, usando una combinación de varios predictores de vectores de movimiento espacial con operaciones lineales o no lineales, o por cualquier otro medio apropiado que no haga uso de información de referencia temporal. También puede ser posible obtener predictores de vectores de movimiento combinando información de predicción espacial y temporal de uno o más bloques codificados. Estos tipos de predictores de vectores de movimiento también pueden denominarse predictores de vectores de movimiento espacio-temporales.
Las tramas de referencia usadas en la codificación de los bloques vecinos se han almacenado en la memoria de tramas de referencia 404. Las tramas de referencia pueden ser referencias a corto plazo o referencias a largo plazo y cada trama de referencia puede tener un índice único indicativo de la localización de la trama de referencia en la memoria de la trama de referencia. Cuando una trama de referencia ya no se usa como trama de referencia, puede eliminarse de la memoria de la trama de referencia o marcarse como una trama que no es de referencia en el que la localización de almacenamiento de esa trama de referencia puede estar ocupada para una nueva trama de referencia. Además de las tramas de referencia de los bloques vecinos, el selector de tramas de referencia 360 también puede seleccionar una o más tramas como posibles tramas de referencia y almacenarlas en la memoria de la trama de referencia.
La información del vector de movimiento de los bloques codificados también se almacena en la memoria de modo que el interpredictor 306 sea capaz de recuperar la información del vector de movimiento cuando procese los candidatos de vectores de movimiento para el bloque actual.
En algunas realizaciones, los vectores de movimiento se almacenan en una o más listas. Por ejemplo, los vectores de movimiento de tramas predichas unidireccionalmente (por ejemplo, tramas P) pueden almacenarse en una lista denominada lista 0. Para las tramas predichas bidireccionalmente (por ejemplo, tramas B) puede haber dos listas (lista 0 y lista 1) y para las tramas de predicción múltiple puede haber más de dos listas. Los índices de tramas de referencia posiblemente asociados con los vectores de movimiento también pueden almacenarse en una o más listas.
En algunas realizaciones, puede haber dos o más procedimientos de predicción de vectores de movimiento y cada procedimiento puede tener su propio proceso de creación de conjuntos de candidatos. En un procedimiento, solo se usan los valores de vectores de movimiento. En otro procedimiento, que puede llamarse como modo de fusión, cada elemento candidato puede comprender 1) La información de si 'el bloque fue uni-predicho usando solo list0' o 'el bloque fue uni-predicho usando solo listl' o 'el bloque fue bi-predicho usando list0 y list1' 2) valor de vector de movimiento para list03) Índice de imagen de referencia en list04) valor de vector de movimiento para list1 5) Índice de imagen de referencia list1. Por lo tanto, siempre que se comparen dos candidatos de predicción, no solo se comparan los valores de vectores de movimiento, sino que también se pueden comparar los cinco valores mencionados anteriormente para determinar si se corresponden entre sí o no. Por otro lado, si alguna de las comparaciones indica que los candidatos de predicción no tienen la misma información de movimiento, no es necesario realizar más comparaciones.
El definidor de vectores de movimiento 361 define vectores de movimiento candidatos para la trama actual usando uno o más de los vectores de movimiento de uno o más bloques vecinos y/u otros bloques del bloque actual en la misma trama y/o bloques colocalizados y/u otros bloques del bloque actual en una o más tramas. Estos vectores de movimiento candidatos se pueden llamar como un conjunto de predictores candidatos o como un conjunto de predictores. Cada predictor candidato representa por lo tanto el vector de movimiento de uno o más bloques ya codificados. En algunas realizaciones, el vector de movimiento del predictor candidato se establece igual al vector de movimiento de un bloque vecino para la misma lista si el bloque actual y el bloque vecino se refieren a las mismas tramas de referencia para esa lista. También para la predicción temporal, puede haber una o más tramas codificadas previamente en las que los vectores de movimiento de un bloque colocalizado u otros bloques en una trama codificada previamente pueden seleccionarse como predictores candidatos para el bloque actual. El candidato predictor de vectores de movimiento temporal se puede generar por cualquier medio que haga uso de las tramas distintas de la trama actual.
Los vectores de movimiento candidatos también pueden obtenerse usando más de un vector de movimiento de uno o más de otros bloques, tales como bloques vecinos del bloque actual y/o bloques colocalizados en una o más de otras tramas. Como ejemplo, cualquier combinación del vector de movimiento del bloque a la izquierda del bloque actual, el vector de movimiento del bloque encima del bloque actual y el vector de movimiento del bloque en la esquina superior derecha del bloque actual puede usarse (es decir, el bloque a la derecha del bloque encima del bloque actual). La combinación puede ser una mediana de los vectores de movimiento o calculada usando otras fórmulas. Por ejemplo, uno o más de los vectores de movimiento a usar en la combinación se pueden escalar mediante un factor de escala, se puede agregar un desplazamiento y/o se puede agregar un vector de movimiento constante. En algunas realizaciones, el vector de movimiento combinado se basa en vectores de movimiento temporal y espacial, por ejemplo, el vector de movimiento de uno o más de los bloques vecinos u otro bloque del bloque actual y el vector de movimiento de un bloque colocalizado u otro bloque en otra trama.
Si un bloque vecino no tiene ninguna información de vector de movimiento, se puede usar en su lugar un vector de movimiento predeterminado, tal como un vector de movimiento cero.
La Figura 9 ilustra un ejemplo de una unidad de codificación 900 y algunos bloques vecinos 901-905 de la unidad de codificación. Como puede verse en la Figura 9, si la unidad de codificación 900 representa el bloque actual, los bloques vecinos 901-905 etiquetados como A0, A1, B0, B1 y B2 podrían ser bloques vecinos que se pueden usar cuando se obtienen los vectores de movimiento candidatos.
Puede ser necesario crear predicciones de vectores de movimiento adicionales o extra en base a predictores agregados previamente cuando el número actual de candidatos es limitado o insuficiente. Este tipo de creación de candidatos adicionales se puede realizar combinando dos predicciones anteriores y/o procesando un candidato anterior escalando o agregando un desplazamiento y/o agregando un vector de movimiento cero con varios índices de referencia. Por lo tanto, el definidor de vectores de movimiento 361 puede examinar cuántos vectores de movimiento candidatos se pueden definir y cuántos candidatos de vectores de movimiento potenciales existen para el bloque actual. Si el número de candidatos de vectores de movimiento potenciales es menor que un umbral, el definidor de vectores de movimiento 361 puede crear predicciones de vectores de movimiento adicionales.
En algunas realizaciones, el vector de movimiento combinado puede basarse en vectores de movimiento en diferentes listas. Por ejemplo, un vector de movimiento se puede definir combinando un vector de movimiento de la lista 0 y un vector de movimiento de la lista 1, por ejemplo, cuando el bloque vecino o colocalizado es un bloque predicho bidireccionalmente y existe un vector de movimiento en la lista 0 y un vector de movimiento en la lista 1 para el bloque predicho bidireccionalmente.
Para distinguir el bloque actual de los bloques codificados/decodificados cuyos vectores de movimiento se usan como vectores de movimiento candidatos, esos bloques codificados/decodificados también se denominan bloques de referencia en la presente solicitud.
En algunas realizaciones, no solo se obtiene la información del vector de movimiento del bloque o bloques de referencia (por ejemplo, mediante copia) sino que también se puede copiar un índice de referencia del bloque de referencia en la lista de imágenes de referencia a la lista de candidatos. También se puede copiar la información de si el bloque fue uni-predicho usando solo list0 o el bloque fue uni-predicho usando solo list1 o el bloque fue bipredicho usando list0 y list1. La lista de candidatos también se puede llamar como un conjunto de candidatos o un conjunto de candidatos de predicción de vectores de movimiento.
La Figura 6a ilustra un ejemplo de predicción espacial y temporal de una unidad de predicción. Se representa el bloque actual 601 en la trama 600 y un bloque vecino 602 que ya se ha codificado. El definidor de vectores de movimiento 361 ha definido un vector de movimiento 603 para el bloque vecino 602 que apunta a un bloque 604 en la trama anterior 605. Este vector de movimiento puede usarse como una predicción potencial de vectores de movimiento espacial 610 para el bloque actual. La Figura 6a representa que un bloque 606 colocalizado en la trama 605 anterior, es decir, el bloque en la misma localización que el bloque actual pero en la trama anterior, tiene un vector de movimiento 607 que apunta a un bloque 609 en otra trama 608. Este vector de movimiento 607 se puede usar como una predicción potencial de vectores de movimiento espacial 611 para la trama actual.
La Figura 6b ilustra otro ejemplo de predicción espacial y temporal de una unidad de predicción. En este ejemplo, el bloque 606 de la trama anterior 605 usa predicción bidireccional en base al bloque 609 de la trama que precede a la trama 605 y en el bloque 612 que sigue a la trama actual 600. La predicción de vectores de movimiento temporal para el bloque actual 601 puede formarse usando los vectores de movimiento 607, 614 o cualquiera de ellos.
El funcionamiento del modificador de la lista de predicciones 363 se describirá ahora con más detalle con referencia al diagrama de flujo de las Figuras 5a y 5b. El modificador de la lista de predicciones 363 inicializa una lista de predicción de vectores de movimiento a los valores predeterminados en el bloque 500 de la Figura 5a. El modificador de la lista de predicciones 363 también puede inicializar un índice de lista a un valor inicial tal como cero. Luego, en el bloque 501, el modificador de la lista de predicciones comprueba si hay candidatos de vectores de movimiento para procesar. Si hay al menos un candidato de vector de movimiento en el conjunto de predictores para su procesamiento, el modificador de la lista de predicciones 363 genera el siguiente candidato de vector de movimiento que puede ser un vector de movimiento temporal o un vector de movimiento espacial. La comparación puede ser una verificación de identidad/equivalencia o comparar la diferencia (absoluta) con un umbral o cualquier otra métrica de similitud.
A continuación, se describirá con más detalle un proceso de fusión para la codificación de información de movimiento de acuerdo con una realización ilustrativa. El codificador crea una lista de candidatos de predicción de movimiento de la que se señalará a uno de los candidatos como información de movimiento para la unidad de codificación o unidad de predicción actual. Los candidatos de predicción de movimiento pueden consistir en varias predicciones de movimiento espacial y una predicción de movimiento temporal. Los candidatos espaciales se pueden obtener a partir de la información de movimiento de, por ejemplo, los bloques espaciales vecinos A0, A1, B0, B1, B2, cuya información de movimiento se usa como predicciones de movimiento de candidatos espaciales. El candidato de predicción de movimiento temporal se puede obtener procesando el movimiento de un bloque en una trama distinta a la trama actual. En esta realización ilustrativa, las operaciones del codificador para construir la lista de fusión para los candidatos espaciales pueden incluir lo siguiente. Las operaciones pueden realizarse por el modificador de la lista de predicciones 363, por ejemplo.
Puede definirse un número máximo de candidatos de predicción de movimiento espacial a incluir en la lista de fusión. Este número máximo puede haberse almacenado, por ejemplo, en la memoria 58 del aparato 50, o en otro lugar apropiado. También es posible determinar el número máximo usando otros medios, o puede determinarse en el software del codificador del aparato 50.
En algunas realizaciones, el número máximo de candidatos de predicción de movimiento espacial a incluir en la lista de fusión es cuatro, pero en algunas realizaciones el número máximo puede ser menor de cuatro o mayor de cuatro.
En este ejemplo, los candidatos de predicción de movimiento espacial son los bloques vecinos espaciales A0, A1, B0, B1, B2. El candidato de predicción de vectores de movimiento espacial A1 está localizado en el lado izquierdo de la unidad de predicción cuando el orden de codificación/decodificación es de izquierda a derecha y de arriba a abajo de la trama, corte u otra entidad a codificar/decodificar. Respectivamente, el candidato de predicción de vectores de movimiento espacial B1 se localiza encima de la unidad de predicción; el candidato de predicción de vectores de movimiento espacial B0 está en el lado derecho del candidato de predicción de vectores de movimiento espacial B1; el candidato de predicción de vectores de movimiento espacial A0 está por debajo del candidato de predicción de vectores de movimiento espacial A1; y el candidato de predicción de vectores de movimiento espacial B2 está localizado en la misma columna que el candidato de predicción de vectores de movimiento espacial A1 y en la misma fila que el candidato de predicción de vectores de movimiento espacial B1. En otras palabras, el candidato de predicción de vectores de movimiento espacial B2 es vecino en las esquinas de la unidad de predicción, como puede verse, por ejemplo, en la Figura 9.
Estos candidatos de predicción de movimiento espacial se pueden procesar en un orden predeterminado, por ejemplo, A1, B1, B0, A0 y B2. El primer candidato de predicción de movimiento espacial a seleccionar para un examen más detallado es, por lo tanto, A1. Antes de realizar un examen adicional para el candidato de predicción de movimiento espacial seleccionado, puede determinarse si la lista de fusión ya contiene un número máximo de candidatos de predicción de movimiento espacial. Por lo tanto, el modificador de la lista de predicción 363 compara 502 el número de candidatos de predicción de movimiento espacial en la lista de fusión con el número máximo, y si el número de candidatos de predicción de movimiento espacial en la lista de fusión no es menor que el número máximo, el candidato de predicción de movimiento espacial seleccionado no se incluye en la lista de fusión y el proceso de construcción de la lista de fusión puede detenerse 526. Por otro lado, si el número de candidatos de predicción de movimiento espacial en la lista de fusión es menor que el número máximo, se realiza un análisis adicional del candidato de predicción de movimiento espacial seleccionado (bloques 504-522).
Para todos los candidatos de predicción de movimiento espacial para los que se van a realizar análisis adicionales, se pueden probar algunas o todas las siguientes condiciones a continuación para determinar si incluir el candidato de predicción de movimiento espacial en la lista de fusión.
El modificador de la lista de predicciones 363 examina 504 si la unidad o bloque de predicción que cubre el bloque candidato de predicción de movimiento espacial no está disponible para la predicción de movimiento. Si es así, el candidato no se incluye en la lista de fusión. La razón por la que el bloque no está disponible puede ser que el bloque o bien está codificado en modo intra o reside en un segmento diferente o fuera del área de la imagen.
Además de las condiciones comunes anteriores, para cada candidato de predicción de movimiento espacial, si se cumple alguna de las siguientes condiciones, el candidato no se incluye en la lista de fusión; de cualquier otra manera, se incluye.
El modificador de la lista de predicciones 363 determina 506 qué candidato de predicción de movimiento espacial del conjunto de candidatos de predicción de movimiento espacial está en dudas. Si el candidato de predicción de movimiento espacial es el bloque A1, se pueden examinar 508, 510 una o más de las siguientes condiciones para determinar si incluir este candidato de predicción de movimiento espacial en la lista de fusión o no. Si la unidad de codificación actual 100 se divide verticalmente en dos unidades de predicción rectangulares 103, 104 como se representa en la Figura 10b y la unidad de predicción actual es la segunda unidad de predicción 104 en el orden de codificación/decodificación (508), este candidato de predicción de movimiento espacial no se incluye en la lista de fusión. Si la unidad de codificación actual 100 no está dividida verticalmente en dos unidades de predicción rectangulares pero está dividida horizontalmente en dos unidades de predicción rectangulares 101, 102 como se representa en la Figura 10a y la unidad de predicción actual es la segunda unidad de predicción en el orden de codificación/decodificación y el bloque A1 tiene la misma información de movimiento que el bloque B1 (510), este candidato de predicción de movimiento espacial (bloque A1) no se incluye en la lista de fusión. En el ejemplo de la Figura 10a, la segunda unidad de predicción es la unidad de predicción inferior 102 de la unidad de codificación 100 y en el ejemplo de la Figura 10b la segunda unidad de predicción es la unidad de predicción más a la derecha 104 de la unidad de codificación 100. Si no se cumple ninguna de las condiciones anteriores, el bloque A1 se incluye en la lista de fusión como candidato de predicción de movimiento espacial (524).
Si el candidato de predicción de movimiento espacial es el bloque B1, se pueden examinar 512, 514 una o más de las siguientes condiciones para determinar si incluir este candidato de predicción de movimiento espacial en la lista de fusión o no. Si la unidad de codificación actual 100 se divide horizontalmente en dos unidades de predicción rectangulares 101, 102 como se representa en la Figura 10a y la unidad de predicción actual es la segunda unidad de predicción 104 en el orden de codificación/decodificación (512), este candidato de predicción de movimiento espacial no se incluye en la lista de fusión. Si la unidad de codificación actual 100 no se divide horizontalmente en dos unidades de predicción rectangular y si el bloque B1 tiene la misma información de movimiento que el bloque A1 (514), este candidato de predicción de movimiento espacial (bloque B1) no se incluye en la lista de fusión. Si no se cumple ninguna de las condiciones anteriores, el bloque B1 se incluye en la lista de fusión como candidato de predicción de movimiento espacial (524).
Si el candidato de predicción de movimiento espacial es el bloque B0, este candidato de predicción de movimiento espacial no se incluye en la lista de fusión si el bloque B0 tiene la misma información de movimiento que el bloque B1 (516). De cualquier otra manera, si el número de candidatos de predicción de movimiento espacial en la lista de fusión es menor que el número máximo de candidatos de predicción de movimiento espacial, este candidato de predicción de movimiento espacial (bloque B0) se incluye en la lista de fusión (524).
Si el candidato de predicción de movimiento espacial es el bloque A0, este candidato de predicción de movimiento espacial no se incluye en la lista de fusión si el bloque A0 tiene la misma información de movimiento que el bloque A1 (518). De cualquier otra manera, si el número de candidatos de predicción de movimiento espacial en la lista de fusión es menor que el número máximo de candidatos de predicción de movimiento espacial, este candidato de predicción de movimiento espacial (bloque A0) se incluye en la lista de fusión (524).
Si el candidato de predicción de movimiento espacial es el bloque B2, este candidato de predicción de movimiento espacial no se incluye en la lista de fusión si el número máximo de candidatos de predicción de movimiento espacial es cuatro y los otros bloques A0, A1, B0 y B1 están todos decididos a incluirse en la lista de fusión (520). De cualquier otra manera, si el número de candidatos de predicción de movimiento espacial en la lista de fusión es menor que el número máximo de candidatos de predicción de movimiento espacial, el bloque B2 no se incluye en la lista de fusión si el bloque B2 tiene la misma información de movimiento que el bloque B1 o el bloque A1 (522).
Luego, después de procesar los bloques A1, B1, B0, A0 y B2 e incluir un subconjunto de ellos en la lista de fusión en base a las condiciones descritas anteriormente, no se realizan más verificaciones de redundancia entre estos candidatos y el candidato de predicción de movimiento temporal restante y/u otros posibles candidatos adicionales pueden procesarse.
La comparación de dos bloques, si tienen el mismo movimiento, se puede realizar comparando todos los elementos de la información de movimiento, específicamente: 1) La información de si 'la unidad de predicción se uni-predice usando solo la imagen de referencia list0' o 'la unidad de predicción es uni-predice usando solo la imagen de referencia list1' o 'la unidad de predicción se bi-predice usando tanto la imagen de referencia list0 como list1' 2) Valor del vector de movimiento correspondiente a la imagen de referencia list0 3) Índice de imagen de referencia en la imagen de referencia list04) Valor del vector de movimiento correspondiente a la imagen de referencia list15) Índice de imágenes de referencia en la imagen de referencia list1.
En algunas realizaciones, se pueden aplicar restricciones similares para comparar pares candidatos si la unidad de codificación actual se codifica/decodifica al dividirla en cuatro o cualquier número de unidades de predicción.
El número máximo de candidatos de la lista de fusión puede ser cualquier valor distinto de cero. En el ejemplo anterior, los candidatos de la lista de fusión eran los bloques vecinos espaciales A0, A1, B0, B1, B2 y el candidato de predicción de movimiento temporal, pero puede haber más de un candidato de predicción de movimiento temporal y también otros candidatos de predicción de movimiento espacial distintos de los bloques vecinos espaciales. En algunas realizaciones, también puede haber otros bloques vecinos espaciales distintos de los bloques A0, A1, B0, B1, B2.
También es posible que el número máximo de candidatos de predicción de movimiento espacial incluidos en la lista sea diferente de cuatro.
En algunas realizaciones, el número máximo de candidatos de la lista de fusión y el número máximo de candidatos de predicción de movimiento espacial incluidos en la lista pueden depender de si un candidato de vector de movimiento temporal se incluye en la lista o no.
Se puede procesar un número diferente de candidatos de predicción de movimiento espacial localizados en varias localizaciones en la trama actual. Las localizaciones pueden ser iguales o diferentes a A1, B1, B0, A0 y B2.
La decisión de qué candidatos de predicción de movimiento espacial incluir en la lista se puede realizar en dos pasos. En el primer paso, algunos de los candidatos se eliminan verificando si el bloque candidato está disponible y/o el modo de predicción del bloque candidato es intra y/o si el bloque actual es una segunda unidad de predicción de una unidad de codificación codificada con dos unidades de predicción y el candidato tiene el mismo movimiento con la primera unidad de predicción. En el segundo paso, se examinan los candidatos restantes y algunos o todos se incluyen en la lista de fusión. El examen en el segundo paso no incluye comparar la información de movimiento de cada posible par de candidatos, sino que incluye un subconjunto de las posibles combinaciones de comparación.
Las decisiones de los candidatos se pueden tomar en cualquier orden de A1, B1, B0, A0 y B2 o independientemente en paralelo.
Para cada candidato y/o un subconjunto de candidatos, también se pueden verificar las siguientes condiciones: Si el bloque candidato tiene el mismo movimiento que la primera unidad de predicción de la unidad de codificación actual cuando la unidad de codificación actual se divide en dos unidades de predicción rectangulares y la unidad de predicción actual es la segunda unidad de predicción en el orden de codificación/decodificación.
Se pueden usar condiciones adicionales relacionadas con varias propiedades de sectores actuales y/o anteriores y/o bloques actuales y/o vecinos para determinar si se incluye un candidato en la lista.
La comparación de movimiento se puede realizar comparando un subconjunto de toda la información de movimiento. Por ejemplo, sólo se pueden comparar los valores de vectores de movimiento para algunas o todas las listas de imágenes de referencia y/o índices de referencia para algunas o todas las listas de imágenes de referencia y/o un valor identificador asignado a cada bloque para representar su información de movimiento. La comparación puede ser una verificación de identidad o equivalencia o comparar la diferencia (absoluta) con un umbral o cualquier otra métrica de similitud.
Las condiciones para decidir si un candidato debe incluirse en la lista pueden incluir la comparación de información de movimiento con cualquier subconjunto de candidatos, siempre que no se comparen eventualmente todos los posibles pares de candidatos.
Decidir si un candidato de vector de movimiento temporal debe incluirse en la lista puede ser en base a comparar su información de movimiento con la información de movimiento de un subconjunto de candidatos de predicción de vectores de movimiento espacial.
Al comparar la información de movimiento de dos bloques, también se puede considerar la información de movimiento de bloques adicionales. Por ejemplo, al comparar el bloque B2 y el bloque A1, todos los bloques entre el bloque B2 y el bloque A1 (ilustrado en la Figura 12) se verifican si tienen el mismo movimiento; y al comparar el bloque B2 y el bloque B1, se verifica si todos los bloques entre el bloque B2 y el bloque B1 (ilustrado en la Figura 12) tienen el mismo movimiento. Esta realización se puede implementar de modo que el bloque más a la derecha de cada unidad de predicción o todos los bloques de cada unidad de predicción puedan almacenar la información de cuántos bloques consecutivos de los anteriores tienen la misma información de movimiento. Además, el bloque más inferior de cada unidad de predicción o todos los bloques de cada unidad de predicción pueden almacenar la información de cuántos bloques consecutivos a la izquierda tienen la misma información de movimiento. Usando esta información, la condición para no incluir a B0 en la lista se puede realizar verificando si el número de bloques consecutivos con el mismo movimiento a la izquierda de B0 es mayor que 0. La condición para no incluir A0 en la lista se puede cumplir verificando si el número de bloques consecutivos con el mismo movimiento que el anterior de A0 es mayor que 0. Las condiciones para no incluir B2 se pueden modificar de la siguiente manera:
No se examina si el bloque B2 tiene el mismo movimiento que el bloque B1 o si el bloque B2 tiene el mismo movimiento que el bloque A1, pero cuántos bloques consecutivos existen a la izquierda del bloque B1 con el mismo movimiento que el bloque B1 y/o cuántos bloques consecutivos existen por encima del bloque A1 con el mismo movimiento. Si el número de bloques consecutivos con el mismo movimiento a la izquierda del bloque B1 es mayor que el número de bloques entre B2 y B1, o si el número de bloques consecutivos con el mismo movimiento sobre el bloque A1 es mayor que el número de bloques entre el bloque B2 y el bloque A1, el bloque B2 no se incluye en la lista de fusión.
Si se usa la implementación anterior, el valor de cuántos bloques consecutivos a la izquierda/arriba tienen la misma información de movimiento se puede determinar mediante la comparación directa de la información de movimiento o verificando el modo de predicción y/o el índice de fusión si el bloque emplea un proceso de fusión.
Cuando se codifica/decodifica el índice de fusión seleccionado, se puede tener en cuenta la información de si el proceso de fusión se emplea para codificar/decodificar una unidad de codificación de modo de salto o una unidad de predicción de modo de interfusión. Por ejemplo, si se usa un codificador aritmético binario adaptativo al contexto (CABAC) para la codificación/decodificación entrópica, se pueden usar diferentes contextos para los binarios dependiendo del modo de codificación (modo de salto o modo interfusión) del bloque actual. Además, la asignación de dos contextos dependiendo de si el proceso de fusión se emplea en una unidad de codificación de modo de salto o una unidad de predicción de modos interfusión se puede aplicar solo para el intervalo más significativo del índice de fusión.
Durante el proceso de eliminación de candidatos redundantes, la comparación entre los candidatos predictores de vectores de movimiento también puede basarse en cualquier otra información que no sea los valores de vectores de movimiento. Por ejemplo, puede basarse en funciones lineales o no lineales de valores de vectores de movimiento, tipos de codificación o predicción de los bloques usados para obtener la información de movimiento, tamaño de bloque, localización espacial en la trama/unidad de codificación (más grande)/macrobloque, la información de si los bloques comparten el mismo movimiento con un bloque, la información de si los bloques están en la misma unidad de codificación/predicción, etc.
El siguiente pseudocódigo ilustra una realización ilustrativa de la invención para construir la lista de fusión.
Las entradas a este proceso son
- una localización de luma (xP, yP) que especifica la muestra de luma superior izquierda de la unidad de predicción actual en relación con la muestra superior izquierda de la imagen actual;
- variables que especifican el ancho y la altura de la unidad de predicción para luma, nPSW y nPSH; y
- una variable Partldx que especifica el índice de la unidad de predicción actual dentro de la unidad de codificación actual. Los resultados de este proceso son (con N que se reemplaza por A0, A1, B0, B1 o B2 y con X que se reemplaza por 0 o 1)
- las banderas de disponibilidad availableFlagN de las unidades de predicción vecinas,
- los índices de referencia refldxLXN de las unidades de predicción vecinas,
- las banderas de utilización de la lista de predicción predFlagLXN de las unidades de predicción vecinas, - los vectores de movimiento mvLXN de las unidades de predicción vecinas.
Para la derivación de availableFlagN, con N que es A0 , A1, B0 , B1 o B2 y (xN, yN) que es (xP-1, yP+nPSH), (xP-1, yP+nPSH-1), (xP+nPSW, yP-1), (xP+nPSW-1, yP-1) o (xP-1, yP-1), se aplica lo siguiente.
- Si se cumple una de las siguientes condiciones, availableFlagN se establece en 0, ambos componentes mvLXN se establecen en 0, refldxLXN y predFlagLX[xN, yN] de la unidad de predicción que cubre la localización de luma (xN, yN) se asignan respectivamente a mvLXN, refldxLXN y predFlagLXN.
- N es igual a B2 y availableFlagA0 + availableFlagA1 + availableFlagB0 + availableFlagB1 es igual a 4.
- La unidad de predicción que cubre la localización de luma (xN, yN) no está disponible o PredMode es MODO INTRA.
- N es igual a A1 y PartMode de la unidad de predicción actual es PART_Nx2N o PART_nLx2N o PART_nRx2N y Partldx es igual a 1.
- N es igual a A1 y PartMode de la unidad de predicción actual es PART_2NxN o PART_2NxnU o PART_2NxnD y Partldx es igual a 1 y las unidades de predicción que cubren la localización de luma (xP+nPSW-1, yP-1) (N = B1) y la localización de luma (xN, yN) (Cand. N) tienen parámetros de movimiento idénticos:
- mvLX[xP+nPSW-1, yP-1] == mvLX[xN, yN]
- refIdxLX[xP+nPSW-1, yP-1] == refldxLX[xN, yN]
- predFlagLX[xP+nPSW-1, yP-1] == predFlagLX[xN, yN]
- N es igual a B1 y PartMode de la unidad de predicción actual es 2NxN o PART_2NxnU o PART_2NxnD y Partldx es igual a 1.
- N es igual a B1 y las unidades de predicción que cubren la localización de luma (xP-1, yP+nPSH-1) (N = Al) y la localización de luma (xN, yN) (Cand. N) tienen parámetros de movimiento idénticos:
- mvLX[xP-1, yP+nPSH-1] = = mvLX[xN, yN]
- refIdxLX[xP-1, yP+nPSH-1] = = refldxLX[xN, yN]
- predFlagLX[xP-1, yP+nPSH-1] = = predFlagLX[xN, yN]
- N es igual a B0 y las unidades de predicción que cubren la localización de luma (xP+nPSW-1, yP-1) (N = B1) y la localización de luma (xN, yN) (Cand. N) tienen parámetros de movimiento idénticos:
- mvLX[xP+nPSW-1, yP-1] = = mvLX[xN, yN]
- refIdxLX[xP+nPSW-1, yP-1] = = refldxLX[xN, yN]
- predFlagLX[xP+nPSW-1, yP-1] = = predFlagLX[xN, yN]
- N es igual a A0 y las unidades de predicción que cubren la localización de luma (xP-1, yP+nPSH-1) (N = Al) y la localización de luma (xN, yN) (Cand. N) tienen parámetros de movimiento idénticos:
- mvLX[xP-1, yP+nPSH-1] = = mvLX[xN, yN]
- refIdxLX[xP-1, yP+nPSH-1] = = refldxLX[xN, yN]
- predFlagLX[xP-1, yP+nPSH-1] = = predFlagLX[xN, yN]
- N es igual a B2 y las unidades de predicción que cubren la localización de luma (xP+nPSW-1, yP-1) (N = B1) y la localización de luma (xN, yN) (Cand. N) tienen parámetros de movimiento idénticos:
- mvLX[xP+nPSW-1, yP-1] = = mvLX[xN, yN]
- refIdxLX[xP+nPSW-1, yP-1] = = refldxLX[xN, yN]
- predFlagLX[xP+nPSW-1, yP-1] = = predFlagLX[xN, yN]
- N es igual a B2 y las unidades de predicción que cubren la localización de luma (xP-1, yP+nPSH-1) (N = Al) y la localización de luma (xN, yN) (Cand. N) tienen parámetros de movimiento idénticos:
- mvLX[xP-1, yP+nPSH-1] = = mvLX[xN, yN]
- refIdxLX[xP-1, yP+nPSH-1] = = refldxLX[xN, yN]
- predFlagLX[xP-1, yP+nPSH-1] = = predFlagLX[xN, yN]
- PartMode de la unidad de predicción actual es PART NxN y Partldx es igual a 3 y las unidades de predicción que cubren la localización de luma (xP-1, yP) (Partldx = 2) y la localización de luma (xP-1, yP-1) (Partldx = 0 ) tienen parámetros de movimiento idénticos:
- mvLX[xP-1, yP] = = mvLX[xP-1, yP-1]
- refIdxLX[xP-1, yP] = = refIdxLX[xP-1, yP-1]
- predFlagLX[xP-1, yP] = = predFlagLX[xP-1, yP-1]
y las unidades de predicción que cubren la localización de luma (xP, yP-1) (Partldx = 1) y la localización de luma (xN, yN) (Cand. N) tienen parámetros de movimiento idénticos:
- mvLX[xP, yP-1] = = mvLX[xN, yN]
- refldxLX[xP, yP-1] = = refldxLX[xN, yN]
- predFlagLX[xP, yP-1] = = predFlagLX[xN, yN]
- PartMode de la unidad de predicción actual es PART NxN y PartIdx es igual a 3 y las unidades de predicción que cubren la localización de luma (xP, yP-1) (Partldx = 1) y la localización de luma (xP-1, yP-1) (Partldx = 0 ) tienen parámetros de movimiento idénticos:
- mvLX[xP, yP-1] = = mvLX[xP-1, yP-1]
- refldxLX[xP, yP-1] = = refIdxLX[xP-1, yP-1]
- predFlagLX[xP, yP-1] == predFlagLX[xP-1, yP-1]
y las unidades de predicción que cubren la localización de luma (xP-1, yP) (Partldx = 2) y la localización de luma (xN, yN) (Cand. N) tienen parámetros de movimiento idénticos:
- mvLX[xP-1, yP] = = mvLX[xN, yN]
- refIdxLX[xP-1, yP] = = refldxLX[xN, yN]
- predFlagLX[xP-1, yP] = = predFlagLX[xN, yN]
- De cualquier otra manera, availableFlagN se establece en 1 y las variables mvLX[xN, yN], refldxLX[xN, yN] y predFlagLX[xN, yN] de la unidad de predicción que cubre la localización de luma (xN, yN) se asignan respectivamente a mvLXN, refldxLXN y predFlagLXN.
Para el proceso de generación de la lista de candidatos predictores de vectores de movimiento, cada candidato de lista puede incluir más información que el valor del vector de movimiento, tales como las listas de referencia usadas, las tramas de referencia usadas en cada lista y el vector de movimiento para cada lista.
Cuando se han examinado todos los candidatos de vectores de movimiento, se selecciona un vector de movimiento para usarlo como vector de movimiento para el bloque actual. El selector de vector de movimiento 364 puede examinar diferentes vectores de movimiento en la lista y determinar qué vector de movimiento proporciona el resultado de codificación más eficiente, o la selección del vector de movimiento puede basarse también en otros criterios. La información del vector de movimiento seleccionado se proporciona al selector de modo para la codificación y transmisión al decodificador o para el almacenamiento cuando el selector de modo determina usar la interpredicción para el bloque actual. La información puede incluir el índice del vector de movimiento en la lista y/o parámetros del vector de movimiento u otra información apropiada.
El vector de movimiento seleccionado y el bloque relacionado con el vector de movimiento se usan para generar la representación de predicción del bloque de imágenes 312 que se proporciona como salida del selector de modo. La salida puede usarse por el primer dispositivo sumador 321 para producir la primera señal de error de predicción 320, como se describió anteriormente.
El candidato predictor de vectores de movimiento seleccionado puede modificarse agregando una diferencia de vector de movimiento o puede usarse directamente como vector de movimiento del bloque. Además, después de que se realiza la compensación de movimiento usando el candidato predictor de vectores de movimiento seleccionado, la señal residual del bloque puede codificarse por transformación o saltarse para codificarse.
Aunque las realizaciones anteriores se han descrito con respecto al tamaño del macrobloque de 16x16 píxeles, se apreciará que los procedimientos y aparatos descritos pueden configurarse para manejar macrobloques de diferentes tamaños de píxeles.
A continuación, el funcionamiento de una realización ilustrativa del decodificador 600 se representa con más detalle con referencia a la Figura 7.
En el lado del decodificador, se realizan operaciones similares para reconstruir los bloques de imagen. La Figura 7 muestra un diagrama de bloques de un decodificador de video 700 adecuado para emplear las realizaciones de la invención y las figuras 8a y 8b muestran un diagrama de flujo de un ejemplo de un procedimiento en el decodificador de video. El flujo de bits que se va a decodificar se puede recibir desde el codificador, desde un elemento de red, desde un medio de almacenamiento o desde otra fuente. El decodificador conoce la estructura del flujo de bits de modo que puede determinar el significado de las palabras de código codificadas por entropía y puede decodificar el flujo de bits mediante un decodificador entrópico 701 que realiza la decodificación entrópica en la señal recibida. El decodificador entrópico realiza por lo tanto la operación inversa al codificador entrópico 330 del codificador descrito anteriormente. El decodificador entrópico 701 envía los resultados de la decodificación entrópica a un decodificador de errores de predicción 702 y un predictor de píxeles 704.
En algunas realizaciones, la codificación entrópica puede no usarse pero puede estar en uso otra codificación de canal, o el flujo de bits codificado puede proporcionarse al decodificador 700 sin codificación de canal. El decodificador 700 puede comprender un decodificador de canal correspondiente para obtener las palabras de código codificadas a partir de la señal recibida.
El predictor de píxeles 704 recibe la salida del decodificador entrópico 701. La salida del decodificador entrópico 701 puede incluir una indicación sobre el modo de predicción usado para codificar el bloque actual. Un selector del predictor 714 dentro del predictor de píxeles 704 determina que se va a realizar una intrapredicción o una interpredicción. El selector del predictor 714 puede además enviar una representación predicha de un bloque de imagen 716 a un primer combinador 713. La representación predicha del bloque de imagen 716 se usa junto con la señal de error de predicción reconstruida 712 para generar una imagen reconstruida preliminarmente 718. La imagen reconstruida preliminarmente 718 puede usarse en el predictor 714 o puede pasarse a un filtro 720. El filtro 720, si se usa, aplica un filtrado que genera una señal reconstruida final 722. La señal reconstruida final 722 puede almacenarse en una memoria de trama de referencia 724, la memoria de trama de referencia 724 se conecta además al predictor 714 para operaciones de predicción.
Además, el decodificador de errores de predicción 702 recibe la salida del decodificador entrópico 701. Un decuantificador 792 del decodificador de errores de predicción 702 puede decuantificar la salida del decodificador entrópico 701 y el bloque de transformación inversa 793 puede realizar una operación de transformación inversa a la señal decuantificada emitida por el decuantificador 792. La salida del decodificador entrópico 701 también puede indicar que la señal de error de predicción no se va a aplicar y en este caso el decodificador de errores de predicción produce una señal de salida totalmente cero.
El decodificador selecciona el macrobloque residual de 16x16 píxeles para reconstruir. Este macrobloque residual también se denomina bloque actual.
El decodificador puede recibir información sobre el modo de codificación usado en la codificación del bloque actual. La indicación se decodifica, cuando es necesario, y se proporciona al procesador de reconstrucción 791 del selector de predicción 714. El procesador de reconstrucción 791 examina la indicación y selecciona uno de los modos de intrapredicción, si la indicación indica que el bloque se ha codificado usando intrapredicción o el modo de interpredicción, si la indicación indica que el bloque se ha codificado mediante interpredicción.
Para el modo de interpredicción, el procesador de reconstrucción 791 puede comprender uno o más elementos correspondientes al procesador de predicción 362 del codificador, tal como un definidor de vectores de movimiento, un modificador de lista de predicción y/o un selector de vectores de movimiento.
El procesador de reconstrucción 791 inicializa una lista de predicción de vectores de movimiento a valores predeterminados en el bloque 800. Como fue el caso en la parte de codificación, en este ejemplo los candidatos de predicción de movimiento espacial son los bloques vecinos espaciales A0, A1, B0, B1, B2 y estos candidatos de predicción de movimiento espacial se procesan en el mismo orden predeterminado que en el codificador: A1, B1, B0, A0 y B2. El primer candidato de predicción de movimiento espacial a seleccionar para un examen más detallado es, por lo tanto, A1. Antes de realizar un examen adicional para el candidato de predicción de movimiento espacial seleccionado, se examina si la lista de fusión ya contiene un número máximo de candidatos de predicción de movimiento espacial. Si el número de candidatos de predicción de movimiento espacial en la lista de fusión no es menor que el número máximo, el candidato de predicción de movimiento espacial seleccionado no se incluye en la lista de fusión y el proceso de construcción de la lista de fusión puede detenerse 826. Por otro lado, si el número de candidatos de predicción de movimiento espacial en la lista de fusión es menor que el número máximo, se realiza un análisis adicional del candidato de predicción de movimiento espacial seleccionado (bloques 804-822).
El decodificador examina 804 si la unidad de predicción o bloque que cubre el bloque candidato de predicción de movimiento espacial no está disponible para la predicción de movimiento. Si es así, el candidato no se incluye en la lista de fusión. La razón por la que el bloque no está disponible puede ser que el bloque o bien está codificado en modo intra o reside en un segmento diferente o fuera del área de la imagen.
Además de las condiciones comunes anteriores, para cada candidato de predicción de movimiento espacial, si se cumple alguna de las siguientes condiciones, el candidato no se incluye en la lista de fusión; de cualquier otra manera, se incluye.
El decodificador determina 806 qué candidato de predicción de movimiento espacial del conjunto de candidatos de predicción de movimiento espacial está en dudas. Si el candidato de predicción de movimiento espacial es el bloque A1, se pueden examinar 808, 810 una o más de las siguientes condiciones para determinar si incluir este candidato de predicción de movimiento espacial en la lista de fusión o no. Si la unidad de codificación actual 100 se divide verticalmente en dos unidades de predicción rectangulares 103, 104 como se representa en la Figura 10b y la unidad de predicción actual es la segunda unidad de predicción 104 en el orden de codificación/decodificación (808), este candidato de predicción de movimiento espacial no se incluye en la lista de fusión. Si la unidad de codificación actual 100 no está dividida verticalmente en dos unidades de predicción rectangulares pero está dividida horizontalmente en dos unidades de predicción rectangulares 101, 102 como se representa en la Figura 10a y la unidad de predicción actual es la segunda unidad de predicción en el orden de codificación/decodificación y el bloque A1 tiene la misma información de movimiento que el bloque B1 (810), este candidato de predicción de movimiento espacial (bloque A1) no se incluye en la lista de fusión. En el ejemplo de la Figura 10a, la segunda unidad de predicción es la unidad de predicción inferior 102 de la unidad de codificación 100 y en el ejemplo de la Figura 10b la segunda unidad de predicción es la unidad de predicción más a la derecha 104 de la unidad de codificación 100. Si no se cumple ninguna de las condiciones anteriores, el bloque A1 se incluye en la lista de fusión como candidato de predicción de movimiento espacial (824).
Si el candidato de predicción de movimiento espacial es el bloque B1, se pueden examinar una o más de las siguientes condiciones 812, 814 para determinar si incluir este candidato de predicción de movimiento espacial en la lista de fusión o no. Si la unidad de codificación actual 100 se divide horizontalmente en dos unidades de predicción rectangulares 101, 102 como se representa en la Figura 10a y la unidad de predicción actual es la segunda unidad de predicción 104 en el orden de codificación/decodificación (812), este candidato de predicción de movimiento espacial no se incluye en la lista de fusión. Si la unidad de codificación actual 100 no se divide horizontalmente en dos unidades de predicción rectangular y si el bloque B1 tiene la misma información de movimiento que el bloque A1 (814), este candidato de predicción de movimiento espacial (bloque B1) no se incluye en la lista de fusión. Si no se cumple ninguna de las condiciones anteriores, el bloque B1 se incluye en la lista de fusión como candidato de predicción de movimiento espacial (824).
Si el candidato de predicción de movimiento espacial es el bloque B0, este candidato de predicción de movimiento espacial no se incluye en la lista de fusión si el bloque B0 tiene la misma información de movimiento que el bloque B1 (816). De cualquier otra manera, si el número de candidatos de predicción de movimiento espacial en la lista de fusión es menor que el número máximo de candidatos de predicción de movimiento espacial, este candidato de predicción de movimiento espacial (bloque B0) se incluye en la lista de fusión (824).
Si el candidato de predicción de movimiento espacial es el bloque A0, este candidato de predicción de movimiento espacial no se incluye en la lista de fusión si el bloque A0 tiene la misma información de movimiento que el bloque A1 (818). De cualquier otra manera, si el número de candidatos de predicción de movimiento espacial en la lista de fusión es menor que el número máximo de candidatos de predicción de movimiento espacial, este candidato de predicción de movimiento espacial (bloque A0) se incluye en la lista de fusión (824).
Si el candidato de predicción de movimiento espacial es el bloque B2, este candidato de predicción de movimiento espacial no se incluye en la lista de fusión si el número máximo de candidatos de predicción de movimiento espacial es cuatro y los otros bloques A0, A1, B0 y B1 están todos decididos a incluirse en la lista de fusión (820). De cualquier otra manera, si el número de candidatos de predicción de movimiento espacial en la lista de fusión es menor que el número máximo de candidatos de predicción de movimiento espacial, el bloque B2 no se incluye en la lista de fusión si el bloque B2 tiene la misma información de movimiento que el bloque B1 o el bloque A1 (822). Luego, después de procesar los bloques A1, B1, B0, A0 y B2 e incluir un subconjunto de ellos en la lista de fusión en base a las condiciones descritas anteriormente, no se realizan más verificaciones de redundancia entre estos candidatos y el candidato de predicción de movimiento temporal restante y/u otros posibles candidatos adicionales pueden procesarse.
Cuando se ha construido la lista de fusión, el decodificador puede usar 828 la indicación del vector de movimiento recibido desde el codificador para seleccionar el vector de movimiento para decodificar el bloque actual. La indicación puede ser, por ejemplo, un índice de la lista de fusión.
Básicamente, después que el procesador de reconstrucción 791 haya construido la lista de fusión, se correspondería con la lista de fusión construida por el codificador si el procesador de reconstrucción 791 tiene la misma información disponible que la que tenía el codificador. Si se ha perdido alguna información durante la transmisión de la información del codificador al decodificador, puede afectar la generación de la lista de fusión en el decodificador 700. Los ejemplos anteriores describen el funcionamiento principalmente en el modo de fusión, pero el codificador y el decodificador también pueden funcionar en otros modos.
Las realizaciones de la invención descritas anteriormente describen el códec en términos de un aparato codificador y decodificador separados para ayudar a comprender los procesos implicados. Sin embargo, se apreciará que el aparato, las estructuras y las operaciones se pueden implementar como un único aparato/estructura/operación 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 operan dentro de un códec dentro de un dispositivo electrónico, se apreciará que la invención tal 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 video que puede implementar la codificación de video sobre rutas de comunicación fijas o cableadas.
Por lo tanto, el equipo de usuario puede comprender un códec de vídeo como los descritos anteriormente en las realizaciones de la invención.
Se apreciará que el término equipo de usuario pretende 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 red móvil pública terrestre (PLMN) también pueden comprender códecs de vídeo como se describió anteriormente.
En general, las diversas realizaciones de la invención pueden implementarse en hardware o circuitos de propósito especial, software, lógica o cualquiera de sus combinaciones. Por ejemplo, algunos aspectos pueden implementarse en hardware, mientras que otros aspectos pueden implementarse en microprogramas o software que pueden ejecutarse por un controlador, microprocesador u otro dispositivo informático, aunque la invención no se limita a estos. Si bien varios aspectos de la invención pueden ilustrarse y describirse como diagramas de bloques, diagramas de flujo o usando alguna otra representación pictórica, se entiende bien que estos bloques, aparatos, sistemas, técnicas o procedimientos descritos en la presente memoria pueden implementarse en, como ejemplos no limitantes, hardware, software, microprogramas, circuitos o lógica de propósito especial, hardware o controlador de propósito general u otros dispositivos informáticos, o alguna de sus combinaciones.
Las realizaciones de esta invención pueden implementarse mediante software de ordenador ejecutable por un procesador de datos del dispositivo móvil, tal como en la entidad procesadora, o por hardware, o por una combinación de software y hardware. Además, con respecto a esto, debe señalarse que cualquier bloque del flujo lógico como en las Figuras puede representar pasos del programa, o circuitos, bloques y funciones lógicas interconectadas, o una combinación de pasos del programa y circuitos, bloques y funciones lógicas. 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 discos duros 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ética, dispositivos y sistemas de memoria óptica, 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 ordenadores de uso general, ordenadores de propósito especial, microprocesadores, procesadores de señales digitales (DSP) y procesadores basados en arquitectura de procesador de múltiples núcleos, como ejemplos no limitantes.
Las realizaciones de las invenciones se pueden poner en práctica en varios componentes, tales como módulos de circuitos integrados. El diseño de circuitos integrados es, en general, un proceso altamente automatizado. Hay disponibles herramientas de software complejas y poderosas para convertir un diseño de nivel lógico en un diseño de circuito semiconductor listo para ser grabado y formado en un sustrato semiconductor.
Los programas, tales como los proporcionados por Synopsys, Inc. de Mountain View, California y Cadence Design, de San José, California enrutan automáticamente los conductores y localizan los componentes en un chip semiconductor usando reglas de diseño bien establecidas, así como también bibliotecas de módulos de diseño prealmacenado. Una vez que se ha completado el diseño de un circuito semiconductor, el diseño resultante, en un formato electrónico estandarizado (por ejemplo, Opus, GDSII o similar) puede transmitirse a una instalación de fabricación de semiconductores o "fábrica" para su fabricación.
La descripción anterior ha proporcionado, a manera de ejemplos ilustrativos y no limitantes, una descripción completa e informativa de la realización ilustrativa de la presente invención. Sin embargo, varias modificaciones y adaptaciones pueden resultar evidentes para los expertos en las técnicas relevantes en vista de la descripción anterior, cuando se leen junto con los dibujos acompañantes y las reivindicaciones adjuntas.

Claims (12)

REIVINDICACIONES
1. Un procedimiento que comprende:
recibir un bloque (900) de píxeles que incluye una unidad de predicción;
determinar para el bloque (900) de píxeles un conjunto de candidatos de predicción de vectores de movimiento espacial localizados debajo a la izquierda (901), izquierda (902), arriba a la izquierda (905), arriba (904) y arriba a la derecha (903) de la unidad de predicción; los candidatos de predicción de vectores de movimiento espacial están provistos de información de movimiento que comprende al menos un vector de movimiento y un índice de referencia;
determinar un subconjunto de pares candidatos de predicción de vectores de movimiento espacial entre los pares candidatos de predicción de vectores de movimiento espacial existentes para la comparación entre todos los pares candidatos de predicción de vectores de movimiento espacial disponibles en el conjunto de candidatos de predicción de vectores de movimiento espacial;
seleccionar un candidato de predicción de vectores de movimiento espacial del conjunto de candidatos de predicción de vectores de movimiento espacial como un candidato de predicción de vectores de movimiento espacial potencial a incluir en una lista de fusión para la unidad de predicción;
examinar el subconjunto de pares candidatos de predicción de vectores de movimiento espacial para determinar qué otro candidato de predicción de vectores de movimiento espacial se define para pertenecer al mismo par candidato de predicción de vectores de movimiento espacial que el candidato de predicción de vectores de movimiento espacial seleccionado (610);
comparar la información de movimiento del candidato de predicción de vectores de movimiento espacial seleccionado con la información de movimiento del otro candidato de predicción de vectores de movimiento espacial;
si la comparación indica que la información del vector de movimiento del otro candidato de predicción de vectores de movimiento espacial corresponde con la información de vector de movimiento del candidato de predicción de vectores de movimiento espacial seleccionado, excluir el candidato de predicción de vectores de movimiento espacial seleccionado de la lista de fusión;
en el que el procedimiento comprende además seleccionar un candidato de predicción de vectores de movimiento de la lista de fusión para representar una predicción de vectores de movimiento para el bloque de píxeles;
determinar un número máximo de candidatos de predicción de vectores de movimiento espacial a incluir en una lista de fusión;
limitar el número de candidatos de predicción de vectores de movimiento espacial en la lista de fusión menor o igual que el número máximo;
si el número de candidatos de predicción de vectores de movimiento espacial en la lista de fusión es menor que el número máximo, examinar si una unidad de predicción a la que pertenece el candidato de predicción de vectores de movimiento espacial potencial está disponible para la predicción de movimiento;
si es así, realizar al menos uno de los siguientes:
si el candidato de predicción de vectores de movimiento espacial potencial (902) está localizado en el lado izquierdo de la unidad de predicción, excluir el candidato de predicción de vectores de movimiento espacial potencial (902) de la lista de fusión si se cumple alguna de las siguientes condiciones:
- el bloque de píxeles recibido se divide verticalmente en una primera unidad de predicción y una segunda unidad de predicción, y la unidad de predicción es la segunda unidad de predicción en orden de codificación;
- el bloque de píxeles recibido se divide horizontalmente en una primera unidad de predicción y una segunda unidad de predicción, y si la unidad de predicción es la segunda unidad de predicción en el orden de codificación, y el candidato de predicción de vectores de movimiento espacial potencial (902) tiene los mismos vectores de movimiento y los mismos índices de referencia que el candidato de predicción de vectores de movimiento espacial (904) por encima de la unidad de predicción;
si el candidato de predicción de vectores de movimiento espacial potencial (904) se localiza por encima de la unidad de predicción, excluir el candidato de predicción de vectores de movimiento espacial potencial (904) de la lista de fusión si se cumple alguna de las siguientes condiciones:
- el bloque de píxeles recibido se divide horizontalmente en una primera unidad de predicción y una segunda unidad de predicción, y la unidad de predicción es la segunda unidad de predicción en orden de codificación; - el candidato de predicción de vectores de movimiento espacial potencial (904) tiene los mismos vectores de movimiento y los mismos índices de referencia que el candidato de predicción de vectores de movimiento espacial (902) en el lado izquierdo de la unidad de predicción;
si el candidato de predicción de vectores de movimiento espacial potencial (903) está localizado en el lado derecho del candidato de predicción de vectores de movimiento espacial (904) encima de la unidad de predicción, excluir el candidato de predicción de vectores de movimiento espacial potencial (903) de la lista de fusión si el candidato de predicción de vectores de movimiento espacial potencial (903) tiene los mismos vectores de movimiento y los mismos índices de referencia que el candidato de predicción de vectores de movimiento espacial (904) por encima de la unidad de predicción;
si el candidato de predicción de vectores de movimiento espacial potencial (901) está localizado debajo del candidato de predicción de vectores de movimiento espacial (902) en el lado izquierdo de la unidad de predicción, excluir el candidato de predicción de vectores de movimiento espacial potencial (901) de la lista de fusión si el candidato de predicción de vectores de movimiento espacial potencial (901) tiene los mismos vectores de movimiento y los mismos índices de referencia que el candidato de predicción de vectores de movimiento espacial (902) en el lado izquierdo de la unidad de predicción;
si el candidato de predicción de vectores de movimiento espacial potencial (905) está en la esquina superior izquierda junto a la unidad de predicción, excluir el candidato de predicción de vectores de movimiento espacial potencial (905) de la lista de fusión si se cumple alguna de las siguientes condiciones:
- todos los demás candidatos de predicción de vectores de movimiento espacial (901-904) se han incluido en la lista de fusión;
- el candidato de predicción de vectores de movimiento espacial potencial (905) tiene los mismos vectores de movimiento y los mismos índices de referencia que el candidato de predicción de vectores de movimiento espacial (904) por encima de la unidad de predicción;
- el candidato de predicción de vectores de movimiento espacial potencial (905) tiene los mismos vectores de movimiento y los mismos índices de referencia que el candidato de predicción de vectores de movimiento espacial (902) en el lado izquierdo de la unidad de predicción.
2. El procedimiento de acuerdo con la reivindicación 1 que comprende seleccionar candidatos de predicción de vectores de movimiento espacial del conjunto de candidatos de predicción de vectores de movimiento espacial como el candidato de predicción de vectores de movimiento espacial potencial en un orden predeterminado.
3. El procedimiento de acuerdo con la reivindicación 1 o 2, que comprende comparar la información de movimiento del candidato de predicción de vectores de movimiento espacial potencial con información de movimiento de a lo máximo otro candidato de predicción de vectores de movimiento espacial del conjunto de candidatos de predicción de vectores de movimiento espacial.
4. El procedimiento de acuerdo con cualquiera de las reivindicaciones 1 a 3, que comprende examinar si el bloque de píxeles recibido está dividido en una primera unidad de predicción y una segunda unidad de predicción en orden de codificación; y si es así, excluir el candidato de predicción de vectores de movimiento espacial potencial de la lista de fusión si la unidad de predicción es la segunda unidad de predicción.
5. El procedimiento de acuerdo con cualquiera de las reivindicaciones 1 a 4, que comprende además incluir un candidato de predicción de movimiento temporal en la lista de fusión.
6. Un procedimiento que comprende:
recibir un bloque codificado de píxeles que incluye una unidad de predicción;
determinar para el bloque codificado (900) de píxeles un conjunto de candidatos de predicción de vectores de movimiento espacial localizados debajo a la izquierda (901), izquierda (902), arriba a la izquierda (905), arriba (904) y arriba a la derecha (903) de la unidad de predicción; los candidatos de predicción de vectores de movimiento espacial están provistos de información de movimiento que comprende al menos un vector de movimiento y un índice de referencia;
determinar un subconjunto de pares candidatos de predicción de vectores de movimiento espacial entre los pares candidatos de predicción de vectores de movimiento espacial existentes para la comparación entre todos los pares candidatos de predicción de vectores de movimiento espacial disponibles en el conjunto de candidatos de predicción de vectores de movimiento espacial;
seleccionar un candidato de predicción de vectores de movimiento espacial del conjunto de candidatos de predicción de vectores de movimiento espacial como un candidato de predicción de vectores de movimiento espacial potencial a incluir en una lista de fusión para la unidad de predicción;
examinar el subconjunto de pares candidatos de predicción de vectores de movimiento espacial para determinar qué otro candidato de predicción de vectores de movimiento espacial se define para pertenecer al mismo par candidato de predicción de vectores de movimiento espacial que el candidato de predicción de vectores de movimiento espacial seleccionado;
comparar la información de movimiento del candidato de predicción de vectores de movimiento espacial seleccionado con la información de movimiento del otro candidato de predicción de vectores de movimiento espacial;
si la comparación indica que la información del vector de movimiento del otro candidato de predicción de vectores de movimiento espacial corresponde con la información del vector de movimiento del candidato de predicción de vectores de movimiento espacial seleccionado, excluir el candidato de predicción de vectores de movimiento espacial seleccionado de la lista de fusión
en el que el procedimiento comprende además seleccionar un candidato de predicción de vectores de movimiento de la lista de fusión para representar una predicción de vectores de movimiento para el bloque de píxeles codificado recibido;
determinar un número máximo de candidatos de predicción de vectores de movimiento espacial a incluir en una lista de fusión;
limitar el número de candidatos de predicción de vectores de movimiento espacial en la lista de fusión menor o igual al número máximo;
si el número de candidatos de predicción de vectores de movimiento espacial en la lista de fusión es menor que el número máximo, examinar si una unidad de predicción a la que pertenece el candidato de predicción de vectores de movimiento espacial potencial está disponible para la predicción de movimiento;
si es así, realizar al menos uno de los siguientes:
si el candidato de predicción de vectores de movimiento espacial potencial (902) está localizado en el lado izquierdo de la unidad de predicción, excluir el candidato de predicción de vectores de movimiento espacial potencial (902) de la lista de fusión si se cumple alguna de las siguientes condiciones:
- el bloque de píxeles codificado recibido se divide verticalmente en una primera unidad de predicción y una segunda unidad de predicción, y la unidad de predicción es la segunda unidad de predicción;
- el bloque de píxeles codificado recibido se divide horizontalmente en una primera unidad de predicción y una segunda unidad de predicción, y si la unidad de predicción es la segunda unidad de predicción, y el candidato de predicción de vectores de movimiento espacial potencial (902) tiene los mismos vectores de movimiento y los mismos índices de referencia que el candidato de predicción de vectores de movimiento espacial (904) por encima de la unidad de predicción;
si el candidato de predicción de vectores de movimiento espacial potencial (904) se localiza por encima de la unidad de predicción, excluir el candidato de predicción de vectores de movimiento espacial potencial (904) de la lista de fusión si se cumple alguna de las siguientes condiciones:
- el bloque de píxeles codificado recibido se divide horizontalmente en una primera unidad de predicción y una segunda unidad de predicción, y la unidad de predicción es la segunda unidad de predicción en el orden de decodificación;
- el candidato de predicción de vectores de movimiento espacial potencial (904) tiene los mismos vectores de movimiento y los mismos índices de referencia que el candidato de predicción de vectores de movimiento espacial (902) en el lado izquierdo de la unidad de predicción;
si el candidato de predicción de vectores de movimiento espacial potencial (903) está localizado en el lado derecho del candidato de predicción de vectores de movimiento espacial (904) encima de la unidad de predicción, excluir el candidato de predicción de vectores de movimiento espacial potencial (903) de la lista de fusión si el candidato de predicción de vectores de movimiento espacial potencial tiene los mismos vectores de movimiento y los mismos índices de referencia que el candidato de predicción de vectores de movimiento espacial (904) por encima de la unidad de predicción;
si el candidato de predicción de vectores de movimiento espacial potencial (901) está localizado debajo del candidato de predicción de vectores de movimiento espacial (902) en el lado izquierdo de la unidad de predicción, excluir el candidato de predicción de vectores de movimiento espacial potencial (901) de la lista de fusión si el candidato de predicción de vectores de movimiento espacial potencial (901) tiene los mismos vectores de movimiento y los mismos índices de referencia que el candidato de predicción de vectores de movimiento espacial (902) en el lado izquierdo de la unidad de predicción;
si el candidato de predicción de vectores de movimiento espacial potencial (905) está en la esquina superior izquierda junto a la unidad de predicción, excluir el candidato de predicción de vectores de movimiento espacial potencial (905) de la lista de fusión si se cumple alguna de las siguientes condiciones:
- todos los demás candidatos de predicción de vectores de movimiento espacial (901-904) se han incluido en la lista de fusión;
- el candidato de predicción de vectores de movimiento espacial potencial (905) tiene los mismos vectores de movimiento y los mismos índices de referencia que el candidato de predicción de vectores de movimiento espacial (904) por encima de la unidad de predicción;
- el candidato de predicción de vectores de movimiento espacial potencial (905) tiene los mismos vectores de movimiento y los mismos índices de referencia que el candidato de predicción de vectores de movimiento espacial (902) en el lado izquierdo de la unidad de predicción.
7. El procedimiento de acuerdo con la reivindicación 6, que comprende comparar la información de movimiento del candidato de predicción de vectores de movimiento espacial potencial con la información de movimiento de a lo máximo otro candidato de predicción de vectores de movimiento espacial del conjunto de candidatos de predicción de vectores de movimiento espacial.
8. El procedimiento de acuerdo con la reivindicación 6 o 7, que comprende examinar si el bloque de píxeles codificado recibido está dividido en una primera unidad de predicción y una segunda unidad de predicción en orden de decodificación; y si es así, excluir el candidato de predicción de vectores de movimiento espacial potencial de la lista de fusión si la unidad de predicción es la segunda unidad de predicción.
9. Un aparato que comprende medios para realizar un procedimiento de acuerdo con una cualquiera de las reivindicaciones 1 a 5.
10. Un aparato que comprende medios para realizar un procedimiento de acuerdo con una cualquiera de las reivindicaciones 6 a 8.
11. Un medio de almacenamiento legible por ordenador que tiene instrucciones legibles por ordenador en el mismo que, cuando se ejecutan por uno o más procesadores, hacen que uno o más procesadores realicen un procedimiento de una cualquiera de las reivindicaciones 1 a 5.
12. Un medio de almacenamiento legible por ordenador que tiene instrucciones legibles por ordenador en el mismo que, cuando se ejecutan por uno o más procesadores, hacen que uno o más procesadores realicen un procedimiento de una cualquiera de las reivindicaciones 6 a 8.
ES12845839T 2011-11-04 2012-11-02 Procedimiento y aparato para codificación de video Active ES2834676T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201161555703P 2011-11-04 2011-11-04
PCT/FI2012/051070 WO2013064749A1 (en) 2011-11-04 2012-11-02 Method for video coding and an apparatus

Publications (1)

Publication Number Publication Date
ES2834676T3 true ES2834676T3 (es) 2021-06-18

Family

ID=48191432

Family Applications (1)

Application Number Title Priority Date Filing Date
ES12845839T Active ES2834676T3 (es) 2011-11-04 2012-11-02 Procedimiento y aparato para codificación de video

Country Status (18)

Country Link
US (6) US9571833B2 (es)
EP (3) EP4354867A3 (es)
KR (1) KR101717475B1 (es)
CN (1) CN104054350B (es)
CA (1) CA2854495C (es)
CY (1) CY1123787T1 (es)
DK (1) DK2774375T3 (es)
ES (1) ES2834676T3 (es)
HR (1) HRP20201901T1 (es)
HU (1) HUE052162T2 (es)
IN (1) IN2014CN04092A (es)
PL (1) PL2774375T3 (es)
PT (1) PT2774375T (es)
RS (1) RS61125B1 (es)
RU (1) RU2577207C2 (es)
SI (1) SI2774375T1 (es)
TW (1) TWI549493B (es)
WO (1) WO2013064749A1 (es)

Families Citing this family (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013126182A (ja) * 2011-12-15 2013-06-24 Samsung Electronics Co Ltd 撮像装置及び画像処理方法
WO2013168407A1 (en) 2012-05-09 2013-11-14 Panasonic Corporation Method of performing motion vector prediction, encoding and decoding methods, and apparatuses thereof
CN105850126B (zh) * 2013-12-24 2019-03-26 株式会社Kt 用于对多层视频信号进行编码/解码的方法和装置
KR20150110295A (ko) 2014-03-24 2015-10-02 주식회사 케이티 멀티 레이어 비디오 신호 인코딩/디코딩 방법 및 장치
US11477477B2 (en) * 2015-01-26 2022-10-18 Qualcomm Incorporated Sub-prediction unit based advanced temporal motion vector prediction
US10187653B2 (en) * 2015-05-18 2019-01-22 Avago Technologies International Sales Pte. Limited Motor vector prediction using co-located prediction units
FR3047379A1 (fr) * 2016-01-29 2017-08-04 Orange Procede de codage et decodage de donnees, dispositif de codage et decodage de donnees et programmes d'ordinateur correspondants
KR102435500B1 (ko) * 2016-10-06 2022-08-23 세종대학교산학협력단 비디오 신호의 복호화 방법 및 이의 장치
WO2018226066A1 (ko) * 2017-06-09 2018-12-13 엘지전자 주식회사 영상 코딩 시스템에서 어파인 예측에 따른 영상 디코딩 방법 및 장치
US10602180B2 (en) 2017-06-13 2020-03-24 Qualcomm Incorporated Motion vector prediction
JP6806916B2 (ja) * 2017-09-26 2021-01-06 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカPanasonic Intellectual Property Corporation of America 復号装置及び復号方法
KR102476204B1 (ko) 2017-10-19 2022-12-08 삼성전자주식회사 멀티 코덱 인코더 및 이를 포함하는 멀티 코덱 인코딩 시스템
KR20190044533A (ko) * 2017-10-20 2019-04-30 주식회사 케이티 비디오 신호 처리 방법 및 장치
WO2019112072A1 (ko) * 2017-12-04 2019-06-13 엘지전자 주식회사 영상 코딩 시스템에서 수정된 움직임 정보 후보 리스트에 기반한 영상 디코딩 방법 및 장치
KR102656965B1 (ko) * 2018-01-29 2024-04-11 브이아이디 스케일, 인크. 낮은 복잡성을 갖는 프레임-레이트 상향 변환
US11095909B2 (en) * 2018-06-25 2021-08-17 Panasonic Intellectual Property Corporation Of America Encoder, decoder, encoding method, and decoding method
SG11202013028PA (en) 2018-06-29 2021-01-28 Beijing Bytedance Network Technology Co Ltd Interaction between lut and amvp
KR102646649B1 (ko) * 2018-06-29 2024-03-13 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 Lut에서의 모션 후보들의 검사 순서
EP3791586A1 (en) 2018-06-29 2021-03-17 Beijing Bytedance Network Technology Co. Ltd. Concept of using one or multiple look up tables to store motion information of previously coded in order and use them to code following blocks
CN114845108A (zh) 2018-06-29 2022-08-02 抖音视界(北京)有限公司 查找表的更新:fifo、约束的fifo
TWI750486B (zh) * 2018-06-29 2021-12-21 大陸商北京字節跳動網絡技術有限公司 運動資訊共用的限制
TWI724442B (zh) * 2018-06-29 2021-04-11 大陸商北京字節跳動網絡技術有限公司 用於查找表更新的編碼的運動信息的選擇
SG11202011714RA (en) 2018-06-29 2020-12-30 Beijing Bytedance Network Technology Co Ltd Partial/full pruning when adding a hmvp candidate to merge/amvp
TWI728390B (zh) 2018-06-29 2021-05-21 大陸商北京字節跳動網絡技術有限公司 查找表尺寸
JP7460617B2 (ja) 2018-06-29 2024-04-02 北京字節跳動網絡技術有限公司 Lut更新条件
TWI731364B (zh) 2018-07-02 2021-06-21 大陸商北京字節跳動網絡技術有限公司 Hmvp+非相鄰運動
KR102545728B1 (ko) * 2018-07-16 2023-06-20 엘지전자 주식회사 서브블록 단위의 시간적 움직임 정보 예측을 위한 인터 예측 방법 및 그 장치
WO2020024275A1 (zh) * 2018-08-03 2020-02-06 华为技术有限公司 一种帧间预测的方法及装置
CN111064959B (zh) 2018-09-12 2023-09-01 北京字节跳动网络技术有限公司 要检查多少个hmvp候选
US11317099B2 (en) 2018-10-05 2022-04-26 Tencent America LLC Method and apparatus for signaling an offset in video coding for intra block copy and/or inter prediction
CN113170184A (zh) 2018-11-22 2021-07-23 北京字节跳动网络技术有限公司 默认运动候选的配置方法
US11122288B2 (en) 2018-12-06 2021-09-14 Qualcomm Incorporated Spatio-temporal motion vector prediction patterns for video coding
US11470340B2 (en) * 2018-12-10 2022-10-11 Tencent America LLC Simplified merge list construction for small coding blocks
MX2021007755A (es) 2018-12-28 2021-08-05 Godo Kaisha Ip Bridge 1 Dispositivo de codificacion de imagenes en movimiento, metodo de codificacion de imagenes en movimiento, programa de codificacion de imagenes en movimiento, dispositivo de decodificacion de imagenes en movimiento, metodo de decodificacion de imagenes en movimiento y programa de decodificacion de imagenes en movimiento.
WO2020135465A1 (en) 2018-12-28 2020-07-02 Beijing Bytedance Network Technology Co., Ltd. Modified history based motion prediction
KR20230163002A (ko) 2018-12-28 2023-11-29 가부시키가이샤 제이브이씨 켄우드 동화상 복호 장치, 동화상 복호 방법, 동화상 복호 프로그램, 동화상 부호화 장치, 동화상 부호화 방법, 동화상 부호화 프로그램, 격납 방법 및 전송 방법
CN113273186A (zh) 2019-01-10 2021-08-17 北京字节跳动网络技术有限公司 Lut更新的调用
WO2020143824A1 (en) 2019-01-13 2020-07-16 Beijing Bytedance Network Technology Co., Ltd. Interaction between lut and shared merge list
WO2020147773A1 (en) 2019-01-16 2020-07-23 Beijing Bytedance Network Technology Co., Ltd. Inserting order of motion candidates in lut
CN111698506B (zh) * 2019-03-11 2022-04-26 杭州海康威视数字技术股份有限公司 运动信息候选者列表构建方法、三角预测解码方法及装置
CN113615193A (zh) 2019-03-22 2021-11-05 北京字节跳动网络技术有限公司 Merge列表构建和其他工具之间的交互
CN111462170B (zh) * 2020-03-30 2023-08-25 Oppo广东移动通信有限公司 运动估计方法、运动估计装置、存储介质与电子设备

Family Cites Families (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5122875A (en) * 1991-02-27 1992-06-16 General Electric Company An HDTV compression system
CA2079434A1 (en) 1991-09-30 1993-03-31 Derek Andrew Motion vector estimation, motion picture encoding and storage
PT1098529E (pt) 1993-03-24 2013-11-25 Sony Corp Método para codificar e descodificar vetores de movimento e respetivo dispositivo e método para codificar e descodificar sinais de imagem e respetivo dispositivo
US5594504A (en) 1994-07-06 1997-01-14 Lucent Technologies Inc. Predictive video coding using a motion vector updating routine
US6567469B1 (en) 2000-03-23 2003-05-20 Koninklijke Philips Electronics N.V. Motion estimation algorithm suitable for H.261 videoconferencing applications
ES2401991T3 (es) 2002-04-26 2013-04-26 Ntt Docomo, Inc. Dispositivo para la codificación de imágenes, procedimiento para la codificación de imágenes y programa para la codificación de imágenes
KR100865034B1 (ko) 2002-07-18 2008-10-23 엘지전자 주식회사 모션 벡터 예측 방법
FR2852179A1 (fr) 2003-03-06 2004-09-10 Thomson Licensing Sa Procede de codage d'une image video
JP2005142986A (ja) 2003-11-10 2005-06-02 Matsushita Electric Ind Co Ltd 動画像符号化方法、動画像符号化装置および動画像符号化プログラム
TW200607355A (en) 2004-05-04 2006-02-16 Qualcomm Inc Method and apparatus for motion compensated frame rate up conversion for block-based low bit rate video
FR2871018A1 (fr) 2004-05-25 2005-12-02 St Microelectronics Sa Procede et dispositif pour les systemes d'interpolation d'images par estimation et compensation de mouvement
WO2006012375A1 (en) 2004-07-20 2006-02-02 Qualcomm Incorporated Method and apparatus for motion vector processing
KR100703770B1 (ko) 2005-03-25 2007-04-06 삼성전자주식회사 가중 예측을 이용한 비디오 코딩 및 디코딩 방법, 이를위한 장치
US8913660B2 (en) 2005-04-14 2014-12-16 Fastvdo, Llc Device and method for fast block-matching motion estimation in video encoders
US7620108B2 (en) * 2005-09-16 2009-11-17 Sony Corporation Integrated spatial-temporal prediction
KR101383540B1 (ko) 2007-01-03 2014-04-09 삼성전자주식회사 복수의 움직임 벡터 프리딕터들을 사용하여 움직임 벡터를추정하는 방법, 장치, 인코더, 디코더 및 복호화 방법
US8111750B2 (en) * 2007-03-20 2012-02-07 Himax Technologies Limited System and method for 3-D recursive search motion estimation
CN101605255B (zh) 2008-06-12 2011-05-04 华为技术有限公司 一种视频编解码的方法及装置
KR101377660B1 (ko) 2008-09-30 2014-03-26 에스케이텔레콤 주식회사 복수 개의 움직임 벡터 추정을 이용한 움직임 벡터 부호화/복호화 방법 및 장치와 그를 이용한 영상 부호화/복호화 방법 및 장치
JP5401071B2 (ja) 2008-10-09 2014-01-29 株式会社Nttドコモ 動画像符号化装置、動画像復号装置、動画像符号化方法、動画像復号方法、動画像符号化プログラム、動画像復号プログラム、動画像処理システムおよび動画像処理方法
US8675736B2 (en) 2009-05-14 2014-03-18 Qualcomm Incorporated Motion vector processing
KR101671460B1 (ko) 2009-09-10 2016-11-02 에스케이 텔레콤주식회사 움직임 벡터 부호화/복호화 방법 및 장치와 그를 이용한 영상 부호화/복호화 방법 및 장치
KR101441905B1 (ko) 2009-11-18 2014-09-24 에스케이텔레콤 주식회사 후보 예측 움직임 벡터 집합 선택을 이용한 움직임 벡터 부호화/복호화 방법 및 장치와 그를 이용한 영상 부호화/복호화 방법 및 장치
KR101522850B1 (ko) 2010-01-14 2015-05-26 삼성전자주식회사 움직임 벡터를 부호화, 복호화하는 방법 및 장치
US9036692B2 (en) * 2010-01-18 2015-05-19 Mediatek Inc. Motion prediction method
US8488007B2 (en) * 2010-01-19 2013-07-16 Sony Corporation Method to estimate segmented motion
KR101768207B1 (ko) 2010-01-19 2017-08-16 삼성전자주식회사 축소된 예측 움직임 벡터의 후보들에 기초해 움직임 벡터를 부호화, 복호화하는 방법 및 장치
WO2011095259A1 (en) * 2010-02-05 2011-08-11 Telefonaktiebolaget L M Ericsson (Publ) Selecting predicted motion vector candidates
US9313526B2 (en) 2010-02-19 2016-04-12 Skype Data compression for video
WO2011115659A1 (en) 2010-03-16 2011-09-22 Thomson Licensing Methods and apparatus for implicit adaptive motion vector predictor selection for video encoding and decoding
PL3429205T3 (pl) 2010-05-04 2021-02-08 Lg Electronics Inc. Sposób i urządzenie do przetwarzania sygnału wideo
MX355733B (es) 2010-06-10 2018-04-27 Thomson Licensing Métodos y aparatos para determinar predictores de parametro de cuantificación a partir de una pluralidad de parametros de cuantificación contiguos.
US9300970B2 (en) 2010-07-09 2016-03-29 Samsung Electronics Co., Ltd. Methods and apparatuses for encoding and decoding motion vector
US8787459B2 (en) 2010-11-09 2014-07-22 Sony Computer Entertainment Inc. Video coding methods and apparatus
US8824558B2 (en) 2010-11-23 2014-09-02 Mediatek Inc. Method and apparatus of spatial motion vector prediction
US9137544B2 (en) * 2010-11-29 2015-09-15 Mediatek Inc. Method and apparatus for derivation of mv/mvp candidate for inter/skip/merge modes
US9635382B2 (en) 2011-01-07 2017-04-25 Texas Instruments Incorporated Method, system and computer program product for determining a motion vector
US9066104B2 (en) 2011-01-14 2015-06-23 Google Inc. Spatial block merge mode
US9319716B2 (en) 2011-01-27 2016-04-19 Qualcomm Incorporated Performing motion vector prediction for video coding
US9066110B2 (en) * 2011-03-08 2015-06-23 Texas Instruments Incorporated Parsing friendly and error resilient merge flag coding in video coding
US9143795B2 (en) * 2011-04-11 2015-09-22 Texas Instruments Incorporated Parallel motion estimation in video coding
JP5837575B2 (ja) * 2011-04-12 2015-12-24 パナソニック インテレクチュアル プロパティ コーポレーション オブアメリカPanasonic Intellectual Property Corporation of America 動画像符号化方法、動画像符号化装置、動画像復号化方法、動画像復号化装置、および動画像符号化復号化装置
US9247266B2 (en) * 2011-04-18 2016-01-26 Texas Instruments Incorporated Temporal motion data candidate derivation in video coding
US9485517B2 (en) * 2011-04-20 2016-11-01 Qualcomm Incorporated Motion vector prediction with motion vectors from multiple views in multi-view video coding
MX2013012020A (es) * 2011-05-24 2013-12-10 Panasonic Corp Metodo de codificacion de imagenes, aparato de codificacion de imagenes, metodo de decodificacion de imagenes, aparato de decodificacion de imagenes y aparato de codificacion /decodificacion de imagenes.
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
US9313494B2 (en) 2011-06-20 2016-04-12 Qualcomm Incorporated Parallelization friendly merge candidates for video coding
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
CN107181948B (zh) * 2011-06-30 2020-03-13 太阳专利托管公司 图像编码方法、图像编码装置及图像编码解码装置
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
US20130070855A1 (en) * 2011-09-17 2013-03-21 Qualcomm Incorporated Hybrid motion vector coding modes for video coding
US9083983B2 (en) * 2011-10-04 2015-07-14 Qualcomm Incorporated Motion vector predictor candidate clipping removal for video coding
WO2013057359A1 (en) 2011-10-21 2013-04-25 Nokia Corporation Method for video coding and an apparatus

Also Published As

Publication number Publication date
CN104054350A (zh) 2014-09-17
PT2774375T (pt) 2020-11-19
EP4354867A3 (en) 2024-05-08
US20230179792A1 (en) 2023-06-08
KR101717475B1 (ko) 2017-03-17
IN2014CN04092A (es) 2015-07-10
US20190215530A1 (en) 2019-07-11
HUE052162T2 (hu) 2021-04-28
TW201325249A (zh) 2013-06-16
RU2014120207A (ru) 2015-12-10
US20170150174A1 (en) 2017-05-25
US20200154132A1 (en) 2020-05-14
CA2854495C (en) 2018-04-24
WO2013064749A1 (en) 2013-05-10
EP2774375B1 (en) 2020-10-07
RU2577207C2 (ru) 2016-03-10
US20130114723A1 (en) 2013-05-09
US10536714B2 (en) 2020-01-14
CA2854495A1 (en) 2013-05-10
US9743105B2 (en) 2017-08-22
DK2774375T3 (da) 2020-12-07
EP2774375A1 (en) 2014-09-10
CN104054350B (zh) 2018-06-15
CY1123787T1 (el) 2022-03-24
EP3849191A1 (en) 2021-07-14
EP4354867A2 (en) 2024-04-17
HRP20201901T1 (hr) 2021-01-22
US20170347117A1 (en) 2017-11-30
SI2774375T1 (sl) 2021-01-29
PL2774375T3 (pl) 2021-04-06
US9571833B2 (en) 2017-02-14
TWI549493B (zh) 2016-09-11
EP2774375A4 (en) 2016-04-20
US10237574B2 (en) 2019-03-19
RS61125B1 (sr) 2020-12-31
US11570467B2 (en) 2023-01-31
KR20140092874A (ko) 2014-07-24

Similar Documents

Publication Publication Date Title
ES2834676T3 (es) Procedimiento y aparato para codificación de video
US11375226B2 (en) Method and apparatus of video coding with affine motion compensation
US20210409756A1 (en) Method for video coding and an apparatus
ES2963978T3 (es) Refinamiento de vectores de movimiento para predicción de referencias múltiples
ES2922238T3 (es) Predicción de movimiento en codificación de vídeo
CN111448800B (zh) 在图像编码系统中使用仿射mvp候选列表的基于仿射运动预测的图像解码方法及设备
JP2022183333A (ja) 映像符号化における幾何学的区分モード
BR112020000876A2 (pt) dispositivo codificador, dispositivo decodificador, método de codificação, e método de decodificação
ES2965083T3 (es) Terminación temprana para el refinamiento de flujo óptico
EP3890325A1 (en) Inter-frame prediction method and device
WO2017093604A1 (en) A method, an apparatus and a computer program product for encoding and decoding video