ES2845728T3 - Filtrado de compensación de movimiento adaptativo al contenido para codificación de vídeo de alta eficiencia - Google Patents
Filtrado de compensación de movimiento adaptativo al contenido para codificación de vídeo de alta eficiencia Download PDFInfo
- Publication number
- ES2845728T3 ES2845728T3 ES11850066T ES11850066T ES2845728T3 ES 2845728 T3 ES2845728 T3 ES 2845728T3 ES 11850066 T ES11850066 T ES 11850066T ES 11850066 T ES11850066 T ES 11850066T ES 2845728 T3 ES2845728 T3 ES 2845728T3
- Authority
- ES
- Spain
- Prior art keywords
- motion compensation
- sub
- filter
- codebook
- filters
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
- H04N19/61—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
- H04N19/615—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding using motion compensated temporal filtering [MCTF]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/117—Filters, e.g. for pre-processing or post-processing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/136—Incoming video signal characteristics or properties
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/176—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/46—Embedding additional information in the video signal during the compression process
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/46—Embedding additional information in the video signal during the compression process
- H04N19/463—Embedding additional information in the video signal during the compression process by compressing encoding parameters before transmission
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/513—Processing of motion vectors
- H04N19/517—Processing of motion vectors by encoding
- H04N19/52—Processing of motion vectors by encoding by predictive encoding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/523—Motion estimation or motion compensation with sub-pixel accuracy
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
- H04N19/61—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/70—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/80—Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/80—Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
- H04N19/82—Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/85—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
- H04N19/86—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving reduction of coding artifacts, e.g. of blockiness
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
Un método puesto en práctica por un dispositivo codificador de vídeo para codificar un conjunto de filtros de compensación de movimiento adaptativo para una pluralidad de posiciones de subpíxeles para predecir bloques en una trama de vídeo codificada, comprendiendo el método: obtener, mediante el dispositivo codificador de vídeo, un libro de códigos que comprende una multiplicidad de filtros de compensación de movimiento agrupados en una pluralidad de grupos de posiciones de subpíxeles que corresponden respectivamente a la pluralidad de posiciones de subpíxeles, comprendiendo cada uno de entre la pluralidad de grupos de posiciones de subpíxeles una pluralidad de filtros de compensación de movimiento adecuados para interpolar bloques de una imagen en una posición correspondiente de entre la pluralidad de posiciones de subpíxeles; obtener, mediante el dispositivo codificador de vídeo, una trama de vídeo no codificada para codificar mediante el dispositivo codificador de vídeo; codificar, mediante el dispositivo codificador de vídeo, al menos una parte de la trama de vídeo en un flujo binario, comprendiendo la parte de la trama de vídeo una pluralidad de bloques de contenido de imagen; y durante la codificación de al menos la parte de la trama de vídeo, el dispositivo codificador de vídeo: selecciona desde el libro de códigos un subconjunto de entre la pluralidad de filtros de compensación de movimiento como estando bien adaptados para predecir la pluralidad de bloques de contenido de imagen, comprendiendo el subconjunto seleccionado uno de cada uno de entre la pluralidad de grupos de posiciones de subpíxeles; incluyendo en el flujo binario un código de filtro de subpíxeles que identifica el subconjunto seleccionado de entre la pluralidad de filtros de compensación de movimiento dentro del libro de códigos; caracterizado porque el método comprende, además: dividir el libro de códigos en un libro de códigos base pequeño y un libro de códigos virtual más grande, comprendiendo el libro de códigos virtual de conjuntos de filtros, combinaciones de filtros seleccionados desde el libro de códigos base de conjuntos de filtros; almacenar solamente el libro de códigos base y un algoritmo para sintetizar el libro de códigos virtual.
Description
DESCRIPCIÓN
Filtrado de compensación de movimiento adaptativo al contenido para codificación de vídeo de alta eficiencia
c a m p o t é c n ic o
La presente descripción se refiere a la codificación y decodificación de señales de vídeo, y más en particular, a la codificación y decodificación basada en libro de códigos de filtros adaptativos utilizados para la predicción de movimiento compensado.
a n t e c e d e n t e s d e l a in v e n c ió n
El advenimiento de multimedia digital, tales como imágenes digitales, voz/audio, gráficos y vídeo, ha mejorado de manera significativa varias aplicaciones, así como abierto aplicaciones completamente nuevas debido a la relativa facilidad con la que ha permitido un almacenamiento, comunicación, transmisión, y búsquedas fiables y acceso al contenido. En general, las aplicaciones de multimedia digital han sido muchas, abarcando un amplio espectro que incluye entretenimiento, información, medicina y seguridad, y han beneficiado a la sociedad de muchas maneras. El contenido multimedia capturado por sensores tales como cámaras y micrófonos suele ser analógico y el proceso de digitalización en forma de modulación codificada por pulsos (PCM) lo vuelve digital. Sin embargo, inmediatamente después de la digitalización, la cantidad de datos resultantes puede ser bastante significativa, ya que es necesaria para la recreación de la representación analógica que necesitan los altavoces y/o la pantalla del televisor. Por tanto, la comunicación, el almacenamiento o la transmisión eficientes de un gran volumen de contenido multimedia digital requieren su compresión desde la forma PCM en bruto hasta una representación comprimida, y por tanto se han inventado muchas técnicas para la compresión de multimedia. A lo largo de los años, las técnicas de compresión de vídeo se han vuelto muy sofisticadas hasta el punto de que permiten lograr altos factores de compresión entre 10 y 100 mientras conservan una alta calidad psicovisual, a menudo similar al vídeo digital sin comprimir.
Si bien se ha logrado un gran progreso hasta la fecha en la técnica y ciencia de la compresión de vídeo (como lo demuestra la plétora de normas de codificación de vídeo impulsadas por organismos tales como MPEG-1, MPEG-2, H.263, MPEG-4 part2, MPEG-4 AVC/H.264, MPEG-4 SVC y MVC, así como normas patentadas impulsadas por la industria tales como Windows Media Vídeo, RealVídeo, On2 VP y similares), la demanda cada vez mayor de los consumidores por una calidad aún mayor, vídeo de alta definición, y actualmente vídeo en 3D (estéreo), disponible para acceder en cualquier momento y lugar, ha sido necesario la entrega a través de varios medios, tales como DVD/BD, transmisión por aire, cable/satélite, redes cableadas y móviles, a una diversidad de dispositivos clientes tales como PC/portátiles, televisores, decodificadores, consolas de juegos, reproductores/dispositivos multimedia portátiles y teléfonos inteligentes, lo que impulsa el deseo de niveles aún más altos de compresión de vídeo. En las normas impulsadas por los organismos normativos, lo que antecede se evidencia en el esfuerzo recientemente iniciado por ISO MPEG en Codificación de Vídeo de Alta Eficiencia (HEVC), que se espera que combine nuevas contribuciones tecnológicas y tecnología de los últimos años de trabajo exploratorio en H. 265 por el comité de normas de ITU-T.
Todas las normas antes mencionadas emplean una trama general de codificación predictiva intertramas que implica reducir la redundancia temporal compensando el movimiento intertramas (o campos) de vídeo dividiendo primero una trama en bloques y asignando vectores de movimiento a cada bloque de una trama para ser codificado, con respecto a la trama decodificada anterior; estos vectores de movimiento se transmiten a continuación al decodificador y se utilizan para generar una trama de predicción compensada por movimiento que se diferencia con una trama decodificada anterior y codificada bloque por bloque, a menudo mediante codificación de transformación. Para una mayor eficiencia de codificación, se ha reconocido que los vectores de movimiento deben tener una precisión mayor que los píxeles enteros, por lo que MPEG-1 y MPEG-2 permiten una precisión de / píxel mientras que las normas más recientes tales como MPEG-4 parte 2 (versión 2) vídeo y H.264 utilizan compensación de movimiento de precisión de % píxel. Sin embargo, puesto que los píxeles reales de una trama solamente están disponibles con una precisión de píxeles enteros, se necesitan filtros especiales para interpolar un bloque de la trama anterior a una ubicación de subpíxeles según sea necesario para generar una predicción con compensación de movimiento. La norma H.264 especifica un conjunto de filtros fijos de filtros separables que se pueden utilizar para generar las 16 fases necesarias para la interpolación de % píxel. Este conjunto de filtros fijos es teóricamente óptimo, ya que se deriva de la teoría de Weiner para obtener la máxima ganancia; sin embargo, algunos filtros en el conjunto de filtros fijos están limitados a 6 tomas, mientras que para otros se permiten hasta 9 tomas. Además, existe cierta pérdida de precisión en el proceso de integerización debido a la limitación de precisión. Si bien este tipo de predicción por lo general funciona en promedio, este o cualquier otro filtro fijo único, para imágenes o escenas específicas, puede tener una discrepancia con las características del contenido, por lo que hay margen de mejora.
En los últimos años ha existido una investigación sustancial en el área del filtrado para compensación de movimiento de % píxel, que conduce al desarrollo del filtrado de movimiento adaptativo. En el filtrado adaptativo, los coeficientes no son fijos y, por tanto, no se conocen a priori; es decir, los coeficientes se calculan a partir del contenido mismo y varían con el tiempo. El procedimiento matemático utilizado para calcular los coeficientes de filtro se basa en la ecuación de Wiener Hopf.
Aunque el procedimiento matemático de Weiner Hopf puede calcular un conjunto de coeficientes de filtro óptimo, existen problemas importantes en la integración práctica de este método en un sistema de codificación de vídeo. Por tanto, en el contexto del desarrollo de H.265 y/o HEVC, se han hecho varias propuestas para abordar las diversas deficiencias, así como para aumentar la adaptabilidad para mejorar la ganancia de codificación. Estas propuestas se pueden enumerar brevemente de la siguiente manera.
Elección entre filtros no separables o separables: el cálculo de filtros no separables puede ser más intensivo en cálculo, pero los filtros teóricamente no separables pueden dar como resultado una calidad superior. Sin embargo, los filtros no separables también requieren aproximadamente el doble de coeficientes de los filtros separables, por lo que la sobrecarga de codificación de los filtros no separables puede ser alta. En general, para el filtrado de movimiento, los filtros separables pueden proporcionar una ganancia de codificación razonable y, por lo tanto, ofrecer una mejor compensación general.
La compensación del número de iteraciones frente a la ganancia para cada iteración - La solución iterativa de la ecuación de Weiner Hopf requiere un número de iteraciones para converger y dar buenos resultados. El número de iteraciones necesarias depende de qué tan lejos esté el conjunto de filtros predeterminado (utilizado inicialmente para la primera iteración) de los resultados óptimos. Si están cerca, a menudo hasta 4 iteraciones pueden ser suficientes, pero si son muy diferentes, pueden ser necesarias de 16 a 20 iteraciones. Si la diferencia entre el filtro predeterminado y el filtro óptimo es mucha, detenerse en 4 iteraciones no dará como resultado la mayoría de las ganancias.
Precisión de varios coeficientes para la mejor compensación de coste de bit frente a calidad - Al mantener ciertos coeficientes en un filtro ajustado a una precisión más baja, pueden resultar algunos ahorros de bits. De hecho, la precisión máxima de un coeficiente de filtro a menudo puede limitarse a 8 bits y, en algunos casos excepcionales, la precisión utilizada puede limitarse a 10 bits.
Reducción del coste de los bits de coeficiente para la transmisión al decodificador (valores reales, diferencial, límites en las actualizaciones) - El número de coeficientes que se enviarán al decodificador debe ser limitado, como por ejemplo, un conjunto de filtros En condiciones normales no separables puede requerir el envío de hasta 120 coeficientes (con un coste de bits de 650-950 bits por trama) mientras que incluso un conjunto de filtros separables puede requerir el envío de 45-60 coeficientes (con un coste de bits de 400-550 bits por trama). Con codificación diferencial (codificar el conjunto de filtros de la trama actual de forma diferencial con el conjunto de filtros de la trama anterior, o incluso con respecto al conjunto de filtros predeterminado) o poniendo límites a las actualizaciones, este recuento de bits se puede reducir un poco, aunque con cierta pérdida de calidad.
Múltiples conjuntos de filtros dentro de una imagen para mejorar las ganancias generales - Mientras que incluso un conjunto de filtros Wiener calculó cada trama, puede dar ganancias sobre, digamos, el conjunto de filtros estándar H.264, al tener la opción de múltiples conjuntos de filtros dentro de una trama (tal como sobre la base de bloques o en segmentos) puede generar mayores ganancias. Sin embargo, un problema es que el coste de bits de incluso 2 conjuntos de filtros por trama puede ser excesivo en comparación con las ganancias adicionales. Por tanto, es necesario gestionar el coste de bits del coeficiente de filtro cuando se utilizan varios conjuntos de filtros.
La complejidad de la optimización de la distorsión de frecuencia ("RDO"), que puede implicar de otro modo múltiples iteraciones en el mapa de cambio de filtro para obtener los mejores resultados. Cuando se utilizan varios filtros, para obtener una alta ganancia, a menudo es necesario utilizar la optimización de la distorsión de la tasa de una manera iterativa para obtener el tamaño de bloque correcto para la selección del filtro que produce una buena compensación entre la frecuencia de cambio de filtro y las ganancias.
Coste de bits de sobrecarga del mapa de bloques cuando se utilizan múltiples filtros - Cuando se utilizan varios filtros (incluyendo el caso de cambiar entre un filtro normal y un filtro calculado), el coste del mapa de conmutación puede ser sustancial. Por ejemplo, si uno cambiara entre dos filtros sobre una base de macrobloque utilizando 1 bit para el macrobloque, entonces para una secuencia de Formato Intermedio Común ("CIF"), se añadirían 396 bits de sobrecarga adicional, además del coste de bits para posiblemente enviar dos conjuntos de filtros.
Ganancias adicionales mediante el uso de filtros de posición entera y filtros con compensaciones - Se han realizado algunos intentos para reducir las ganancias calculando un filtro para la posición entera en caso de que la mejor posición de % de píxel sea la posición entera. Además, se han realizado algunos experimentos utilizando filtros con compensaciones para obtener mayores ganancias. Ambos casos requieren bits adicionales de sobrecarga.
Tal como se señaló con anterioridad, aunque se han sugerido muchas técnicas y variaciones, la sobrecarga del recuento de bits del coeficiente de los métodos actuales, incluso después de la codificación diferencial, es demasiado alta. Además, las técnicas existentes son computacionalmente complejas debido a la necesidad de calcular sobre la marcha múltiples iteraciones de conjuntos de coeficientes. Además, la única forma de que el sistema actual sea muy adaptable es mediante el uso extensivo de RDO para múltiples filtros conmutados, lo que significa una sobrecarga y complejidad adicionales.
Se puede encontrar información adicional relacionada con el filtrado de compensación de movimiento adaptativo en las siguientes referencias, para todos los fines:
T. Wedi, "Filtro de interpolación adaptativa para predicción con compensación de movimiento", Proc. En t. Conf sobre procesamiento de imágenes (ICIP) 2002, págs. 509-511,2002.
V. Vatis et al, "Codificación de coeficientes de filtro de interpolación de Wiener adaptativo no separable bidimensional", Proc. SPIE Visual Communications and Image Processing (VCIP) 2005, julio de 2005.
V. Vatis y Joern Ostermann, "Filtro de interpolación no separable adaptable localmente para H.264/AVC", Proc. Int. Conf on Image Processing (ICIP) 2006, octubre de 2006.
S. Wittmann y T. Wedi, "Filtro de interpolación adaptable separable para codificación de vídeo", Proc. Int. Conf on Image Processing (ICIP) 2008, págs. 2500-2503, 2008.
El documento "Modelo de prueba en consideración - JCTVC-B205 (borrador 007)", 6 de octubre de 2010 Kemal Ugur et al.: "Codificación de vídeo de alto rendimiento, baja complejidad y la norma HEVC emergente", TRANSACCIONES IEEE EN CIRCUITOS Y SISTEMAS PARA TECNOLOGÍA DE VÍDEO, IEEE SERVICE CENTER, PISCATAWAY, NJ, US, vol. 20, n212, 1 de diciembre de 2010 (2010-12-01), páginas 1688-1697.
BREVE DESCRIPCIÓN DE LOS DIBUJOS
La Figura 1 muestra un diagrama de bloques general de un codificador intertramas de la técnica anterior que emplea predicción de movimiento compensado que utiliza filtrado de movimiento fijo.
La Figura 2 muestra un decodificador de la técnica anterior, correspondiente al codificador de la técnica anterior, y funciona de manera similar al bucle de decodificación local en el codificador.
La Figura 3 muestra una parte de una trama de vídeo organizada como una cuadrícula de píxeles que se divide, además, en una cuadrícula de subpíxeles, en donde se calcula un bloque de predicción de movimiento compensado. Las Figuras 4a-o muestran un mapeo de correspondencia de 6/9 tomas en una matriz de filtro de 6x6 para cada posición de subpíxel.
La Figura 5 muestra un diagrama de bloques de un codificador intertramas de la técnica anterior que emplea un predictor de movimiento compensado que utiliza filtrado de movimiento adaptativo generalizado.
La Figura 6 muestra un diagrama de bloques de un decodificador intertramas de la técnica anterior que emplea un predictor de movimiento compensado que utiliza filtrado de movimiento adaptativo generalizado.
Las Figuras 7a-f muestran varios modos de partición para dividir una imagen.
La Figura 8 muestra un diagrama de bloques de un codificador intertramas que emplea un predictor de movimiento compensado que utiliza un codificador de libro de códigos de filtrado de movimiento de conformidad con una forma de realización.
La Figura 9 muestra un diagrama de bloques de un decodificador intertramas que emplea un predictor de movimiento compensado que utiliza un decodificador de libro de códigos de filtrado de movimiento de conformidad con una forma de realización.
La Figura 10 muestra una rutina "fuera de línea" para generar un libro de códigos de filtro de movimiento o libros de códigos para ubicaciones de subpíxeles y de píxeles enteros.
La Figura 11 muestra una rutina "online" para buscar en un libro de códigos un conjunto de filtros de movimiento de conformidad con una forma de realización.
La Figura 12 ilustra una sintaxis de flujo binario, a modo de ejemplo, de conformidad con varios codificadores y descodificadores de filtro de libro de códigos de compensación de movimiento y que se describen aquí de diversas formas.
Las Figuras 13a-b ilustran una secuencia de imágenes o tramas dentro de un flujo de vídeo, de conformidad con varias formas de realización.
La Figura 14 ilustra un sistema de codificación/decodificación de vídeo, a modo de ejemplo, según una forma de realización.
La Figura 15 ilustra varios componentes de un dispositivo de codificación, a modo de ejemplo, de conformidad con una forma de realización.
La Figura 16 ilustra varios componentes de un dispositivo de decodificación, a modo de ejemplo, de conformidad con una forma de realización.
La Figura 17 ilustra una rutina de codificación de vídeo de filtrado de compensación de movimiento de libro de códigos, tal como puede realizarse mediante un dispositivo de codificación de conformidad con una forma de realización.
La Figura 18 ilustra una subrutina para obtener un libro de códigos, de conformidad con una forma de realización.
La Figura 19 ilustra una subrutina para seleccionar un subconjunto de filtros de compensación de movimiento desde el libro de códigos, de conformidad con una forma de realización.
La Figura 20 ilustra una subrutina para determinar un filtro de compensación de movimiento de posición entera para una parte de una imagen, de conformidad con una forma de realización.
La Figura 21 ilustra una rutina de decodificación de vídeo de filtrado de compensación de movimiento de libro de códigos, tal como puede realizarse mediante un dispositivo de decodificación de conformidad con una forma de realización.
d e s c r ip c ió n d e t a l l a d a d e l a in v e n c ió n
La descripción detallada que sigue está representada en gran parte en términos de procesos y representaciones simbólicas de operaciones mediante componentes informáticos convencionales, incluyendo un procesador, dispositivos de almacenamiento de memoria para el procesador, dispositivos de visualización conectados y dispositivos de entrada. Además, estos procesos y operaciones pueden utilizar componentes informáticos convencionales en un entorno informático distribuido heterogéneo, incluyendo servidores de archivos remotos, servidores informáticos y dispositivos de almacenamiento de memoria. El procesador puede acceder a cada uno de estos componentes informáticos distribuidos convencionales a través de una red de comunicación.
Las expresiones "en una forma de realización", "en varias formas de realización", "en algunas formas de realización" y similares se utilizan de manera repetida. Dichas expresiones no se refieren necesariamente a la misma forma de realización. Los términos "que comprende", "que tiene" e "que incluye" son sinónimos, a menos que el contexto indique lo contrario.
La presente invención se define en las reivindicaciones independientes. La descripción que permite la invención se encuentra en la forma de realización de las Figuras 10 y 11. Las formas de realización restantes deben entenderse como ejemplos que no describen partes de la presente invención.
Visión general
Se describen diversas formas de realización de sistemas y métodos para el filtrado de movimiento para la codificación de vídeo intertramas. Algunas de estas formas de realización pueden ofrecer una complejidad informática reducida en comparación con las soluciones existentes, ya que, en lugar de tomar muchas iteraciones para calcular iterativamente los coeficientes de filtro durante la codificación, se busca un conjunto de filtros de movimiento de un libro de códigos precalculado de conjuntos de coeficientes de filtros de movimiento.
En algunas formas de realización, la complejidad de la búsqueda puede reducirse aún más dividiendo el libro de códigos completo en un libro de códigos "base" pequeño y un libro de códigos "virtual" más grande, de modo que los cálculos principales para la búsqueda solamente necesitan realizarse en el libro de códigos base. Dichas formas de realización pueden reducir el almacenamiento (a) almacenando solamente el libro de códigos base y un algoritmo para sintetizar el libro de códigos restante; (b) almacenar, para cada conjunto de filtros, un filtro con un número apropiado de tomas de conformidad con la ubicación de filtrado de movimiento subpíxel; y (c) almacenar solamente la precisión de bits necesaria por coeficiente.
En varias formas de realización, las técnicas de libro de códigos de filtro de movimiento descritas se pueden emplear en imágenes, grupos de cortes, mapas de bloques, mapas de bloques fusionados o particiones adaptativas tales como zonas dependientes del contenido bi-tree, quad-tree o similares. La capacidad de esta técnica para trabajar con particiones dependientes del contenido también reduce la complejidad y mejora la precisión en comparación con otras técnicas que son impulsadas únicamente por la Optimización de Distorsión de Tasa ("RDO"). Se pueden utilizar varias formas de realización para el filtrado de subpíxeles solamente, el filtrado de posición entera solamente, o ambos. Además, el libro de códigos se puede sustituir o ampliar fácilmente para adaptarlo a la naturaleza del contenido.
Se describen los detalles del diseño del libro de códigos de filtros y la búsqueda eficiente del libro de códigos. Con el método descrito de diseño de libro de códigos y para el tamaño de libro de códigos sugerido, la técnica puede dar
como resultado un buen rendimiento de filtrado de movimiento, aumentando, de manera potencial, la eficiencia de predicción para un amplio espectro de contenido de vídeo.
En varias formas de realización, las técnicas descritas pueden ser eficientes en bits, ya que solamente puede ser necesario un índice en el libro de códigos para identificar un conjunto de filtros subpíxeles o un filtro de píxeles enteros seleccionados. En muchos casos, codificar un índice puede ser más eficaz que codificar coeficientes reales o enviar coeficientes de filtro codificados diferencialmente. Si bien el número de índices reales enviados depende del número de particiones, en comparación con los métodos existentes que utilizan el mismo tipo de partición, las técnicas descritas basadas en libros de códigos pueden ser más eficientes en tasa binarias.
Se pueden utilizar varias formas de realización con codificación de vídeo típica que utilizan estructuras de imagen tradicionales compuestas por codificación de imagen I, P, B. Se pueden utilizar otras formas de realización con otras estructuras en su lugar o además de las imágenes I y P, tales como imágenes B jerárquicas, imágenes B unidireccionales u otras alternativas de imagen B.
A continuación, se hace referencia en detalle a la descripción de las formas de realización ilustradas en los dibujos.
La Figura 1 muestra un diagrama de bloques general de un codificador 100 intertramas de la técnica anterior que emplea predicción de movimiento compensado que utiliza filtrado de movimiento fijo. Una o más tramas de vídeo (vidfrms) se dividen en bloques (blks) por el indexador de bloques 101. Los bloques (blks) se introducen uno a la vez al diferenciador 133 y se diferencian con los bloques de señal de predicción correspondientes (pred), y el residuo (res) se reenvía transformado por el transformador 135, lo que da como resultado un bloque de coeficientes (tcof) que luego se envía al cuantificador 138, lo que da como resultado un bloque de coeficientes cuantificados (tcofq) que se envían tanto al codificador de entropía 118 como al cuantificador inverso 140. El cuantificador inverso 140 envía un bloque de coeficientes des-cuantificados (tcof') al transformador inverso 143. En el sumador 145, el bloque de predicción (pred) del bucle de compensación de movimiento se agrega al bloque residual des-cuantificado (res’) en la salida del transformador inverso 143. En el sumador 145, el bloque de predicción (pred) del bucle de compensación de movimiento se agrega al bloque residual descuantificado (res’) en la salida del transformador inverso 743. El sumador 745 genera el bloque decodificado localmente (rec), que luego se envía al ensamblador de tramas y al procesador de filtro de desbloqueo 148, lo que reduce el bloqueo. Los bloques (recd) en la salida del ensamblador de tramas y el procesador de filtrado de desbloqueo 148 forman una trama que se utiliza como trama de referencia para el estimador de movimiento 128 y el predictor compensado por movimiento 130.
El estimador de movimiento 128 calcula vectores de movimiento (mv) entre bloques (blks) de la trama original con respecto a la trama reconstruida (recd). El proceso de cálculo del vector de movimiento incluye calcular un vector de píxeles enteros por bloque, seguido de un vector de subpíxeles (sv) (a, por ejemplo, % de resolución de píxel) que se calcula utilizando el interpolador subpíxeles 129. En condiciones normales, el interpolador subpíxeles 129 está contenido en el estimador de movimiento 128 en sí, pero para mayor claridad de la ilustración se muestra y se menciona por separado. El estimador de movimiento 128 busca la mejor coincidencia y, por tanto, el mejor vector de movimiento (mv), donde, como predictor de movimiento compensado 130, utiliza el vector de movimiento (mv) para generar un bloque de predicción por movimiento compensado (pred). El compensador de movimiento 130 también utiliza un interpolador de subpíxeles 131 (por ejemplo, a resolución de % píxel) como el interpolador de subpíxeles 129. El conjunto de filtros (fmf) utilizado por ambos interpoladores de subpíxeles 129 y 131 está preespecificado y así fijo. El codificador de entropía 118 codifica los coeficientes de transformación cuantificados (no ilustrados), vectores de movimiento diferencial (dmv) y datos generales (no ilustrados), generando un flujo binario comprimido 128.
La Figura 2 muestra un decodificador 200 de la técnica anterior, correspondiente al codificador 100 de la técnica anterior, y funciona de manera similar al bucle de decodificación local 155 en el codificador 100. Concretamente, el flujo binario comprimido 201 que se va a decodificar se introduce en el decodificador de entropía 203 que decodifica bloques de coeficientes cuantificados (tcofq), vectores de movimiento diferencial (dmv) y datos generales (no ilustrados). Los bloques de coeficientes cuantificados (tcofq) se cuantifican entonces de forma inversa mediante el cuantificador inverso 203, lo que da como resultado coeficientes des-cuantificados (tcof'), que luego se transforman de forma inversa mediante el transformador inverso 215, lo que da como resultado bloques residuales decodificados (res'). En el sumador 223, los coeficientes des-cuantificados (tcof') se agregan a los bloques de predicción compensados por movimiento (pred) obtenidos utilizando los vectores de movimiento correspondientes (mv) en el predictor de movimiento compensado 230, utilizando el vector de subpíxeles (sv) (a, por ejemplo, % píxeles de resolución), que se calcula utilizando el interpolador de subpíxeles 229. El vídeo decodificado resultante (rec) se desbloquea en el ensamblador de tramas y el filtro de desbloqueo 225, y al igual que en el codificador 100, el vídeo desbloqueado (recd) se utiliza como una trama de referencia. El predictor de movimiento compensado 230 en el decodificador 200 funciona de manera similar al predictor de movimiento compensado 130 en el codificador 100, tal como el predictor de movimiento compensado 230 utiliza un interpolador de subpíxeles 229 similar con el mismo filtro de movimiento fijo (fmf) que el utilizado por el codificador 100.
La Figura 3 muestra una parte 300 de una trama de vídeo organizada como una cuadrícula de píxeles que se divide, además, en una cuadrícula de subpíxeles, en donde se calcula un bloque de predicción por movimiento compensado. Las ubicaciones de píxeles enteros se muestran como A1-A6, B1-B6, C1-C6, D1-D6, E1-E6 y F1-F6. Las ubicaciones
de / píxel entre C3-C4 y D3-D4 se muestran mediante las posiciones {a, b, c, d, e, f, g, h, i, j, k, l, m, n, o} tales que cada bloque puede compensarse en una de estas posiciones de cuarto de píxel. La Figura 3 también muestra varias ubicaciones de / píxel en las posiciones aa, bb, cc, dd, ee, ff, gg, hh, ii y jj.
El cálculo de los conjuntos de filtros para las posiciones de subpíxeles {a, b, c, d, e, f, g, h, i, j, k, l, m, n, o} se realiza utilizando filtros de 6 tomas o filtros de 9 tomas. Los coeficientes de filtro se mapean en una matriz de 6x6 que se utiliza para calcular el valor de subpíxeles desde la proximidad de 6x6 de los píxeles circundantes (A1-F6).
Las Figuras 4a-o muestran un mapeo de 6/9 tomas en una matriz de filtro de 6x6 para cada posición de subpíxel. La Figura 4a muestra los coeficientes de filtro y los píxeles sobre los que se aplican para calcular directamente el bloque de interpolación filtrado en la posición de subpíxeles {a}; esta posición requiere 6 coeficientes de filtro.
La Figura 4b muestra los coeficientes de filtro y los píxeles en los que se aplican para calcular directamente el bloque de interpolación filtrado en la posición de subpíxeles {b}; esta posición corresponde a la posición horizontal de la mitad del píxel y requiere solamente 3 coeficientes de filtro debido a la simetría.
La Figura 4c muestra los coeficientes de filtro y los píxeles en los que se aplican para calcular directamente el bloque de interpolación filtrado en la posición de subpíxeles {c}; esta posición requiere 6 coeficientes de filtro.
La Figura 4d muestra los coeficientes de filtro y los píxeles en los que se aplican para calcular directamente el bloque de interpolación filtrado en la posición de subpíxeles {d}; esta posición requiere 6 coeficientes de filtro.
La Figura 4e muestra los coeficientes de filtro y los píxeles en los que se aplican para calcular directamente el bloque de interpolación filtrado en la posición de subpíxeles |e|; esta posición requiere 6 coeficientes de filtro.
La Figura 4f muestra los coeficientes de filtro y los píxeles en los que se aplican para calcular directamente el bloque de interpolación filtrado en la posición de subpíxeles {f}; esta posición requiere 9 coeficientes de filtro.
La Figura 4g muestra los coeficientes de filtro y los píxeles en los que se aplican para calcular directamente el bloque de interpolación filtrado en la posición de subpíxeles {g}; esta posición requiere 6 coeficientes de filtro.
La Figura 4h muestra los coeficientes de filtro y los píxeles sobre los que se aplican para calcular directamente el bloque de interpolación filtrado en la posición de subpíxeles {h}; esta posición corresponde a la posición vertical de mitad de píxel y debido a la simetría solamente requiere 3 coeficientes.
La Figura 4i muestra los coeficientes de filtro y los píxeles en los que se aplican para calcular directamente el bloque de interpolación filtrado en la posición de subpíxeles {i}; esta posición requiere 9 coeficientes de filtro.
La Figura 4j muestra los coeficientes de filtro y los píxeles en los que se aplican para calcular directamente el bloque de interpolación filtrado en la posición de subpíxeles {j}; esta posición requiere 9 coeficientes de filtro.
La Figura 4k muestra los coeficientes de filtro y los píxeles en los que se aplican para calcular directamente el bloque de interpolación filtrado en la posición de subpíxeles {k}; esta posición requiere 9 coeficientes de filtro.
La Figura 4l muestra los coeficientes de filtro y los píxeles en los que se aplican para calcular directamente el bloque de interpolación filtrado en la posición de subpíxeles {l}; esta posición requiere 6 coeficientes de filtro.
La Figura 4m muestra los coeficientes de filtro y los píxeles en los que se aplican para calcular directamente el bloque de interpolación filtrado en la posición de subpíxeles {m}; esta posición requiere 6 coeficientes de filtro.
La Figura 4n muestra los coeficientes de filtro y los píxeles en los que se aplican para calcular directamente el bloque de interpolación filtrado en la posición de subpíxeles {n}; esta posición requiere 9 coeficientes de filtro.
La Figura 4o muestra los coeficientes de filtro y los píxeles sobre los que se aplican para calcular directamente el bloque de interpolación filtrado en la posición de subpíxeles {o}; esta posición requiere 6 coeficientes de filtro.
Filtrado de Wiener adaptativo
Antes de describir los detalles de la Figura 5, se describe brevemente la teoría del filtrado óptimo, ya que esa es la base del diseño de filtro adaptativo utilizando el método de filtrado de Wiener.
Para cada una de las ubicaciones de los subpíxeles, se acumulan matrices de correlación cruzada y autocorrelación, a partir de las cuales se puede calcular el conjunto de filtros Wiener óptimo resolviendo la ecuación de Weiner Hopf tal como sigue.
Sea x(n) la señal de entrada, y(n) la salida y h(n) represente Ios coeficientes de filtro,
i v i
y(n) - Y kMk)x(n - k)
Salida de filtro: t-o
Señal de error: e(n)=d(n) - y(n)
Error cuadrático medio: J=E[e2(n)]
En donde, Pd es un escalar,
Vector de fila de correlación cruzada: Rdx=E[d(n)x(n)T]
Matriz de autocorrelación: Rxx=£[x(n)x(n)r]
Para encontrar el mínimo, se toma la derivada y se pone a cero de la siguiente manera:
A continuación, despejando h, la ecuación de Wiener Hopf es la siguiente:
La ecuación de Wiener Hopf determina los coeficientes de filtro óptimos en el error cuadrático medio, y el filtro resultante se denomina filtro "Wiener",
En la ecuación anterior, h es el vector de coeficientes de filtro (concretamente 6 o 9 coeficientes), Rxx es la matriz de autocorrelación (para datos de bloque de la trama de referencia) y Rdx es una matriz de correlación cruzada/vector de fila (entre las tramas de origen y datos de bloque de trama de referencia), Las matrices se acumulan para cada posición de subpíxeles por separado, por lo que h puede calcularse resolviendo la ecuación antes mencionada para cada posición de subpíxel, obteniendo así el conjunto de filtros adaptado de 16 filtros (para ubicaciones de % de píxel), La Figura 5 muestra un diagrama de bloques de un codificador intertramas 500 de la técnica anterior que emplea un predictor de movimiento compensado que utiliza filtrado de movimiento adaptativo generalizado, El indexador de bloques 501, la transformada directa 535, el cuantificador 538, el cuantificador inverso 540, la transformada inversa 543, el ensamblador de tramas y el procesador de filtrado de desbloqueo 548 y el codificador de entropía 518 funcionan de la misma manera que los componentes correspondientes del codificador 100, tal como se muestra en la Figura 1 y descrito con anterioridad, y sus descripciones no necesitan ahora ser reiteradas, De manera similar, el estimador de movimiento 528 y el compensador de movimiento 530 funcionan de la misma manera que el estimador de movimiento 128 y el compensador de movimiento 130, descritos con anterioridad, excepto por los conjuntos de filtros que utilizan, En este caso, el método es el filtrado de movimiento, y solamente este subsistema se analiza en detalle,
A diferencia de H.264, que utiliza un conjunto de filtros fijo, el codificador 500 calcula un conjunto de filtros a partir de los datos, Este cálculo tiene lugar en el ordenador 558 del conjunto de filtros iterativos de subpíxeles (Wiener), utilizando las ecuaciones de Wiener Hopf descritas con anterioridad, El proceso comienza con el uso de un conjunto de filtros predeterminado para calcular la posición más baja de Suma de Diferencias Absolutas ("SAD") para cada bloque, que refleja la mejor posición de coincidencia de subpíxeles, En la siguiente iteración, utilizando estas
posiciones de subpíxeles, se calcula un nuevo conjunto de filtros, que cuando se utiliza proporciona ubicaciones de subpíxeles actualizadas. El proceso es iterativo y, por lo tanto, pueden ser necesarias varias iteraciones (4-20) para que el proceso sea convergente. El proceso es intensivo en cálculo debido a la complejidad de la evaluación en cada iteración. En algunos casos, es posible limitar el número de iteraciones, intercambiando complejidad por rendimiento. El conjunto de filtros de movimiento adaptativo calculado (amf) se proporciona al interpolador de subpíxeles 531 en el predictor de movimiento compensado 530. Este conjunto de filtros (amf) también necesita codificarse y enviarse a través del flujo binario al decodificador. Puesto que el conjunto de filtros (amf) puede utilizar hasta 99 coeficientes de filtro, es importante una codificación eficaz del conjunto de filtros. Las técnicas convencionales varían desde el envío de un conjunto de filtros para las posiciones más significativas, la codificación diferencial de coeficientes (dmf) (generada por el diferenciador 560), la supresión de coeficientes que no cambiaron mucho desde la última vez que se enviaron, y similares. Suponiendo que los coeficientes de filtro se puedan codificar de manera eficiente, se pueden enviar múltiples conjuntos de filtros por imagen con el objetivo de elegir entre dos o más conjuntos de filtros para una mayor eficiencia; esta operación se realiza en el particionador espacial y el codificador de particiones 505, que genera un mapa de particiones (ptmap). El optimizador de distorsión de frecuencia 508 se utiliza a menudo para asegurar que incluso cuando se utilizan múltiples filtros y la sobrecarga asociada, la ganancia seguirá obteniéndose.
La Figura 6 muestra un diagrama de bloques de un decodificador intertramas 600 de la técnica anterior que emplea un predictor de movimiento compensado que utiliza filtrado de movimiento adaptativo generalizado. El decodificador de entropía 603, la transformada inversa 615, el cuantificador inverso 613 y el ensamblador de tramas y el procesador de filtrado de desbloqueo 625 funcionan de la misma manera que los componentes correspondientes del decodificador 200, tal como se muestra en la Figura 2 y que se describió con anterioridad, y sus descripciones no necesitan ser de nuevo reiteradas. De manera similar, el predictor de movimiento compensado 630 funciona de la misma manera que el predictor de movimiento compensado 230, descrito con anterioridad, excepto por los conjuntos de filtros utilizados. En este caso, el método es el filtrado de movimiento, y solamente este subsistema se analiza en detalle.
El decodificador de entropía 603 decodifica una palabra de código (dmf) que decodifica el valor diferencial del filtro de movimiento al que se añade un conjunto de filtros que representa la predicción en el sumador 631, dando como resultado un conjunto de filtros de coeficientes (amf). Este conjunto de filtros (amf) se proporciona al interpolador de subpíxeles 629 en el predictor de movimiento compensado 630. Además, en caso de que se utilicen varios filtros, se puede decodificar un mapa de partición (ptmap) para que el filtro (amf) se pueda aplicar a la parte correcta de la imagen.
Las Figuras 7a-f muestran varios modos de partición para dividir una imagen. Por ejemplo, la Figura 7a representa una partición basada en imágenes donde los códigos de filtro solamente se cambian imagen por imagen. La Figura 7b muestra el particionamiento basado en cortes o grupos de cortes de manera que se aplica un primer conjunto de filtros al grupo de cortes 'A', y se aplica un segundo conjunto de filtros al grupo de cortes 'B'. La Figura 7c representa un mapa de bloques que identifica qué filtro utilizar para el tipo de bloque 'A' y qué filtro utilizar para el tipo de bloque 'B'. La Figura 7d muestra la división de una imagen en mosaicos y la división adicional de mosaicos en particiones de bi-tree de modo que varios cortes de bi-tree basados en la optimización de la distorsión de la tasa ("RDO") se etiquetan como 'A' o 'B', lo que indica que pueden utilizar correspondientemente un primer o un segundo conjunto de filtros. Asimismo, la Figura 7e muestra la división de una imagen en mosaicos y la división adicional de un mosaico en dos tipos de particiones de quad-tree etiquetadas como 'A o' B ', de modo que puedan utilizar correspondientemente un primer o un segundo conjunto de filtros. Por último, la Figura 7f muestra las zonas que resultan de la fusión de cortes, la fusión de bloques, la fusión de bi-tree o la fusión de particiones de quad-tree, o simplemente por segmentación espacial.
La Figura 8 muestra un diagrama de bloques de un codificador intertramas 800 que emplea un predictor de movimiento compensado que utiliza un codificador de libro de códigos de filtrado de movimiento de conformidad con una forma de realización. El indexador de bloques 801, la transformada directa 835, el cuantificador 838, el cuantificador inverso 840, la transformada inversa 843, el ensamblador de tramas y el procesador de filtrado de desbloqueo 848 y el codificador de entropía 818 funcionan de la misma manera que los componentes correspondientes del codificador 100, tal como se muestra en la Figura 1 y descrito con anterioridad, y sus descripciones no necesitan de nuevo ser reiteradas. De manera similar, el estimador de movimiento 828 y el compensador de movimiento 830 funcionan de la misma manera que el estimador de movimiento 128 y el compensador de movimiento 130 descritos con anterioridad, excepto por los conjuntos de filtros que utilizan. En este caso, el método es el filtrado de movimiento, y solamente este subsistema se analiza en detalle.
En comparación con los codificadores de filtrado de movimiento adaptativo existentes, el codificador de filtrado de movimiento basado en libro de códigos 800 selecciona un conjunto de filtros de un libro de códigos existente en lugar de calcular el filtro de movimiento explícitamente. En una forma de realización, se utilizan dos tipos de libros de códigos, uno que almacena conjuntos de filtros de subpíxeles 860 y otro que almacena filtros de posición entera 863. El procesador de búsqueda de libro de códigos de conjunto de filtros MC 858 permite una búsqueda eficiente de los respectivos libros de códigos produciendo índices de libros de códigos de posición entera y subpíxeles, (mcfsi) y (mcfii), que se refieren correspondientemente al conjunto de filtros de subpíxeles (mcfs) y al filtro de posición entera (mcfi).
En varias formas de realización, el conjunto de filtros de subpíxeles (mcfs) y el filtro de posición entera (mcfi) se pueden enviar en una imagen (una sola vez) o en una partición espacial (varias veces por imagen). En varias formas de realización, se puede utilizar cualquier tipo de particiones espaciales, tal como, por ejemplo, corte, tamaño de bloque variable, bloque, bi-tree, quad-tree, zona, mosaico y similares (véase, por ejemplo, las Figuras 7a-f). Esta partición se realiza mediante el particionador espacial y el codificador de particiones 805. Los detalles de la partición, tal como el número de particiones que se enviarán, se deciden en función del análisis de distorsión de la tasa mediante el analizador de compensación de tasa de bits/distorsión 808, así como el analizador de contenido de escena 803. La mejor coincidencia del conjunto de filtros de subpíxeles y del conjunto de filtros de píxeles enteros se envían en el flujo binario al decodificador. El conjunto de filtros de subpíxeles (mcfs) y el filtro de posición entera (mcfi) se proporcionan al procesador de filtrado MC 865 para generar predicción de movimiento compensado en el estimador de movimiento/predictor de movimiento compensado 828. En algunas formas de realización, el proceso también puede ser eficiente en la búsqueda, así como en el coste de bits para la representación de filtros/conjuntos de filtros por índices.
La Figura 9 muestra un diagrama de bloques de un decodificador intertramas 900 que emplea un predictor de movimiento compensado que utiliza un decodificador de libro de códigos de filtrado de movimiento de conformidad con una forma de realización. El decodificador de entropía 903, la transformada inversa 915, el cuantificador inverso 913 y el ensamblador de tramas y el procesador de filtrado de desbloqueo 925 funcionan de la misma manera que los componentes correspondientes del decodificador 200, tal como se muestra en la Figura 2 y que se describió con anterioridad, y sus descripciones no necesitan de nuevo reiterarse. De manera similar, el predictor de movimiento compensado 930 funciona de la misma manera que el predictor de movimiento compensado 230, descrito con anterioridad, excepto por los conjuntos de filtros utilizados. En este caso, el método es el filtrado de movimiento, y solamente este subsistema se analiza en detalle.
El decodificador de entropía 903 decodifica la entropía del flujo binario 901 para obtener el índice de filtro de movimiento de subpíxeles del libro de códigos (mcfsi) y/o del índice de filtro de movimiento de posición entera (mcfii). Estos índices (mcfsi) y (mcfii) se utilizan para acceder al conjunto de filtros de subpíxeles deseados (mcfs) y/o al filtro de posición entera (mcfi) del libro de códigos de subpíxeles 933 y/o del libro de códigos de posición entera 935. El conjunto de filtros de subpíxeles resultante mcfs y/o el filtro de inter-píxeles mcfi se proporcionan al procesador de filtrado MC 929 que realiza la interpolación de subpíxeles y/o el filtrado de píxeles enteros para generar predicción de movimiento compensado (pred). En algunas formas de realización, los indicadores (filt_sent) y (intfilt_sent) pueden decodificarse de manera adicional mediante el decodificador de entropía 903, indicando si el flujo binario 901 incluye índice de filtro de movimiento de subpíxeles (mcfsi) e índice de filtro de movimiento de posición entera (mcfii), respectivamente.
La Tabla 1 muestra dos conjuntos de filtros de muestra (id=0 e id=1) de un libro de códigos "base" de subpíxeles a modo de ejemplo. En una forma de realización, el libro de códigos de subpíxeles "base" puede incluir 16 conjuntos de filtros de subpíxeles "base" (cada uno incluye 15 o 16 filtros de posición de subpíxeles en el caso de filtrado de % píxel). Los filtros de posición de subpíxeles individuales de los 16 conjuntos de filtros de subpíxeles "base" se pueden utilizar en diferentes combinaciones predeterminadas para crear un libro de códigos "virtual". En una forma de realización, el libro de códigos "virtual" puede incluir 256 conjuntos de filtros de subpíxeles. En otras formas de realización, los libros de códigos "base" y "virtual" pueden incluir más o menos conjuntos de filtros.
Tabla 1
De Ios conjuntos de filtros a modo de ejemplo Ilustrados en la Tabla 1, el Id de conjunto de filtros = 0 corresponde a una escena nítida, y el Id de conjunto de filtros = 1 corresponde a una escena más borrosa.
En algunas formas de realización, un libro de códigos de subpíxeles tal como el que se muestra (en parte) en la Tabla 1 se puede caracterizar de manera equivalente por incluir una multiplicidad de filtros de compensación de movimiento agrupados en una pluralidad de grupos de posiciones de subpíxeles que corresponden, respectivamente, a la pluralidad de posiciones de subpíxeles, comprendiendo cada uno de entre la pluralidad de grupos de posiciones de subpíxeles una pluralidad de filtros de compensación de movimiento adecuados para interpolar bloques de una imagen en una correspondiente de entre la pluralidad de posiciones de subpíxeles. Por ejemplo, el libro de códigos que se muestra en la Tabla 1 se puede caracterizar por incluir 15 o 16 grupos de filtros de compensación de movimiento correspondientes a las posiciones de subpíxeles (a-oj, por ejemplo:
• grupo {a} de posiciones de subpíxeles: (a0, a1, a2..a15j;
• grupo {b} de posiciones de subpíxeles: (b0, b1, b2..b15j;
• grupo (oj de posiciones de subpíxeles: (00 , 01 , 02..015}.
El libro de códigos se puede caracterizar, además, por incluir varios (p. ej., 256) subconjuntos predeterminados de filtros de compensación de movimiento, uno de cada grupo de posiciones de subpíxeles, p. ej.:
• id de subconjunto=0: (a0, b0, c0, d0, e0, f0, g0, h0, i0 , j0, k0, I0, m0, n0, 00 };
• id de subconjunto=1 :(a1, b1, c1, d1, e1, f1, g1, h1, i1, j1, k1, I1, m1, m, 01 };
• id de subconjunto=15:(a15, b15, c15, d15, e15, f15, g15, h15, i15, J15, k15, I15, m15, n15, 015};
• id de subconjunto=16: (ac, b5, c7, dg, e4, f4, g12, h6, iz, j2, k4, I11, ms, n0, 010};
• id de subconjunto=255: (a10, b6, c12, dg, e2, f2, g3, h10, i3, j5, k1, ls, mu, n6, 010}.
En algunas formas de realización, el libro de códigos puede incluir, además, un grupo de filtros de posición entera, por ejemplo, grupo de posición entera (0j: (00, 01, 02..015}. En dichas formas de realización, Ios subconjuntos predeterminados de filtros de compensación de movimiento también pueden incluir un filtro de posición entera, por
ejemplo: id de subconjunto=0: { 00, a0, b0, C0, d0, e0, f0, g0, h0, ¡0, j0, k0, I0, m0, n0, 00}; id de subconjunto=1: {0 i , ai , bi , ci , d i , e i , f i , g i , hi , ¡1, j i , ki , li , mi , ni , o i }; y así sucesivamente.
En algunas formas de realización, los filtros de posición entera pueden incluirse en un libro de códigos de posición entera. La Tabla 2 muestra dos filtros de posición entera de muestra (id=0 e id=1) de un libro de códigos de posición entera a modo de ejemplo. En una forma de realización, el libro de códigos de posición entera puede incluir 48 filtros de posición entera. En otras formas de realización, el libro de códigos de posición entera puede incluir más o menos filtros. En algunas formas de realización, los filtros de posición entera también se pueden incluir dentro de los conjuntos de filtros de subpíxeles del libro de códigos de filtros de subpíxeles, en lugar de, o además del, libro de códigos de posición entera.
Tabla 2
La Figura 10 muestra una rutina 1000 "fuera de línea" para generar un libro de códigos de filtro de movimiento o libros de códigos para ubicaciones de subpíxeles y de píxeles enteros. En el bloque 1005, la rutina 1000 obtiene un conjunto de prueba que incluye una o más secuencias de vídeo de muestra. En algunas formas de realización, las secuencias de vídeo se seleccionan para tener combinaciones de diferentes grados de movimiento y una diversidad de textura casi uniforme. En una forma de realización, las secuencias de prueba se eligen de manera que contengan zonas similares a texturas, que en condiciones normales necesiten un filtrado más preciso para lograr la ganancia de codificación deseada. En una forma de realización, se pueden emplear varias secuencias CIF estándar tal como secuencias de vídeo de muestra.
Comenzando en el bloque de bucle inicial 1010, la rutina 1000 procesa cada secuencia de vídeo en el conjunto de prueba. Comenzando en el bloque de bucle inicial 1015, la rutina 1000 procesa una o más imágenes o tramas individuales de la secuencia de vídeo actual. En el bloque 1020, la rutina 1000 aplica el filtrado de movimiento adaptativo basado en filtros de Wiener para calcular un conjunto de filtros totalmente adaptado a la imagen o trama actual. En algunas formas de realización, para obtener mejores conjuntos de filtros, se pueden realizar dos o más iteraciones, lo que significa que el cálculo de los coeficientes de filtro y la actualización de las ubicaciones de los subpíxeles se pueden realizar de forma iterativa dos o más veces (la primera vez que las colaciones de subpíxeles se establecen en resultados de filtro estándar, y en cada iteración subsiguiente las posiciones se establecen en las obtenidas con el conjunto de filtros previamente calculado). En las formas de realización de % píxel, un conjunto de filtros así generado consta de 16 filtros, puesto que se calcula un filtro por cada ubicación de % píxel. En una forma de realización, cada filtro individual en el conjunto de filtros generado tiene 6 o 9 tomas dependiendo de la ubicación de % píxel.
Al finalizar el bloque de bucle 1025, la rutina 1000 itera de nuevo al bloque 1015 para procesar otra imagen o trama individual de la secuencia de vídeo actual (si la hubiere). En el bloque 1030, la rutina 1000 selecciona un conjunto de filtros representativo para la secuencia de vídeo actual a partir de los conjuntos de filtros generados. En una forma de realización, seleccionar un conjunto de filtros representativo puede incluir aplicar todos los conjuntos de filtros calculados a cada imagen o trama de la secuencia de vídeo y seleccionar un conjunto de filtros que tenga una ganancia de codificación alta (o la más alta) (es decir, que tenga un SAD bajo o el s A d más bajo). En algunas formas de realización, el conjunto representativo puede seleccionarse de conformidad con un subconjunto de imágenes o tramas de la secuencia de vídeo actual (por ejemplo, las primeras N tramas).
Al finalizar el bloque de bucle 1035, la rutina 1000 itera de nuevo al bloque 1010 para procesar la siguiente secuencia de vídeo en el conjunto de prueba (si lo hubiere). En una forma de realización, después de que se hayan procesado todas las secuencias de vídeo, se pueden haber generado y seleccionado hasta 100 o más conjuntos de filtros representativos. En el bloque 1038, la rutina 1000 refina, de manera opcional, el grupo recogido de conjunto de filtros representativos. Por ejemplo, en una forma de realización, se puede emplear un algoritmo de recorrido aleatorio (o un algoritmo de optimización similar) para probar combinaciones aleatorias de filtros en algunas o todas las secuencias de vídeo para mejorar aún más la ganancia de codificación general proporcionada por el grupo recogido de conjunto de filtros refinados en el transcurso de horas o incluso días.
En el bloque 1040, la rutina 1000 selecciona un grupo "base" de conjuntos de filtros de subpíxeles que tienen una ganancia de codificación alta o la más alta entre el grupo, de manera opcional, refinado de conjuntos de filtros. En el bloque 1045, la rutina 1000 almacena el grupo "base" seleccionado de conjuntos de filtros en un libro de códigos de subpíxeles.
En el bloque 1050, la rutina 1000 deriva un libro de códigos "virtual" a partir de los filtros individuales del grupo "base" seleccionado de conjuntos de filtros. En una forma de realización, se puede emplear un algoritmo de recorrido aleatorio (o un algoritmo de optimización similar) para probar varias combinaciones de filtros individuales del grupo "base" seleccionado de conjuntos de filtros. En una forma de realización, se pueden derivar 256 combinaciones diferentes de filtros del grupo "base" seleccionado de conjuntos de filtros. Las combinaciones derivadas se almacenan para crear un libro de códigos "virtual" que puede derivarse de los filtros del grupo "base" seleccionado de conjuntos de filtros.
En el bloque 1055, se selecciona un grupo de filtros de posición entera de entre el grupo recogido de conjuntos de filtros opcionalmente refinados. En una forma de realización, los filtros de posición entera se pueden seleccionar para que tengan una alta ganancia de codificación y difieran entre sí. En una forma de realización, se pueden seleccionar 48 filtros de posición entera para el grupo. En el bloque 1060, el grupo seleccionado de filtros de posición entera se almacena en un libro de códigos de posición entera. Habiendo generado y almacenado un libro de códigos de subpíxeles y un libro de códigos de posición entera, la rutina 1000 finaliza en el bloque 1099.
La Figura 11 muestra una rutina 1100 "online" para buscar en un libro de códigos un conjunto de filtros de movimiento de conformidad con una forma de realización. En el bloque 1103, la rutina 1100 obtiene una imagen o trama de una secuencia de vídeo. Comenzando con la apertura del bloque de bucle 1105, la rutina 1100 procesa cada bloque de contenido de imagen de la imagen.
En el bloque 1108, la rutina 1100 determina una estimación de movimiento de posición entera para el bloque actual de contenido de imagen. En una forma de realización, un vector de movimiento de posición entera se calcula mediante búsqueda completa o reducida utilizando un tamaño de búsqueda de movimiento dado. En el bloque 1110, la rutina 1100 calcula una ganancia de codificación (por ejemplo, determina SAD) para la estimación de movimiento de posición entera determinada.
En el bloque 1113, la rutina 1100 determina una estimación de movimiento de subpíxeles utilizando un conjunto de filtros predeterminado (por ejemplo, el conjunto de filtros fijo H.264, o cualquier otro conjunto de filtros para su uso como referencia). Se buscan ubicaciones de subpíxeles interpolados para ubicar una con la ganancia de codificación más alta (SAD más baja). Dicho de otro modo, el conjunto de filtros predeterminado se aplica al bloque de contenido de imagen y se elige la ubicación que produce el SAD más pequeño. La ubicación a la que corresponde ese conjunto de filtros se utiliza como el vector de movimiento de subpíxeles estimado. En el bloque 1115, la rutina 1100 guarda (al menos temporalmente) la ganancia de codificación general para el filtro predeterminado.
En el bloque 1116, la rutina 1100 carga un libro de códigos de subpíxeles "base", que incluye, por ejemplo, 16 conjuntos de filtros, incluyendo cada conjunto de filtros, por ejemplo, 15 filtros de posición de subpíxeles (uno para cada posición de subpíxel). A partir del bloque 1118, la rutina 1100 procesa cada conjunto de filtros. En el bloque 1120, la rutina 1100 calcula una ganancia de codificación para el conjunto de filtros actual. Usando la estimación del movimiento de la posición entera como un desplazamiento, la rutina 1100 determina un SAD para cada posición de subpíxeles utilizando el filtro de posiciones de subpíxeles correspondiente del conjunto de filtros actual. Al finalizar el bloque de bucle 1023, la rutina 1100 itera de nuevo al bloque 1118 para procesar el siguiente conjunto de filtros (si lo hubiere).
En el bloque 1023, la rutina 1100 ensambla ganancias de codificación para N (p. ej., 256) conjuntos de filtros "virtuales" utilizando las ganancias de codificación calculadas para filtros de posiciones de subpíxeles individuales en cada uno de los conjuntos de filtros. En una forma de realización, los conjuntos de filtros "virtuales" incluyen varias combinaciones de filtros de posiciones de subpíxeles individuales de los conjuntos de filtros del libro de códigos de subpíxeles "base". Por tanto, las ganancias de codificación para cada conjunto de filtros "virtual" puede ensamblarse utilizando las ganancias de codificación de filtros de posición de subpíxeles individuales ya calculadas (en el bloque 1120).
En el bloque 1128, la rutina 1100 itera de nuevo al bloque 1105 para procesar el siguiente bloque de contenido de imagen (si lo hubiere) de la imagen.
En el bloque 1133, la rutina 1100 establece un modo de partición espacial. Dependiendo del modo de funcionamiento, se puede utilizar una división de la imagen basada en tramas, basada en cortes, basada en bloques, basada en segmentos o en una división similar. Comenzando en el bloque de bucle de apertura 1135, la rutina 1100 procesa cada partición espacial de la imagen. En el bloque 1138, la rutina 1100 selecciona entre los N conjuntos de filtros de subpíxeles "virtuales" un conjunto de filtros de subpíxeles que tiene una alta ganancia de codificación para la partición actual. En una forma de realización, el mejor conjunto de filtros se elige con respecto a la SAD más pequeña/la ganancia de codificación más grande. En algunas formas de realización, el modo de funcionamiento más bajo utiliza una división basada en tramas. Los siguientes dos modos utilizan cortes. El modo de corte inferior divide una trama
en cuatro bandas/cortes horizontales iguales (donde el último corte podría tener un tamaño más pequeño dependiendo del tamaño de la trama). Por otro lado, el modo de corte superior utiliza cortes de bloque de 12x4 16x16 (de nuevo, los cortes en la parte inferior y en el borde derecho pueden ser más pequeños debido al tamaño de la trama). El resto de los modos utilizan los segmentos/zonas que se derivan de la fusión de bloques en grupos de bloques donde el mismo conjunto de filtros produce un SAD bajo. Estas zonas, en cierto sentido, corresponden a particiones de movimiento. Hay dos umbrales que se utilizan en el proceso, y cada modo tiene una selección diferente de valores de umbral que pueden producir menos o más segmentos/zonas. La trama se divide primero en bloques/supermosaicos. El primer umbral se utiliza para determinar cómo dividir un supermosaico de 64x64 en mosaicos de 32x32, mientras que el segundo se utiliza para determinar cuándo fusionar los bloques de mosaicos a través de los límites del supermosaico. En ambos casos, la decisión de fusión o división se toma si la diferencia de SAD de los dos bloques/objetos en cuestión está por debajo o por encima del umbral dado. La división de un supermosaico en mosaicos se codifica con patrones 2x2. Los diferentes modos de funcionamiento admiten patrones básicos 3 o 7 ampliados. Los 3 patrones básicos son sin división, con división horizontal y con división vertical, mientras que el conjunto extendido también incluye las cuatro divisiones de 3 vías. A continuación, la siguiente etapa del proceso es fusionar mosaicos que tocan los bordes del supermosaico con los próximos si hay un conjunto de filtros común que resulte en un SAD lo suficientemente pequeño (basado en la aplicación del segundo umbral). Los bits de fusión se codifican en el flujo binario además de los códigos de patrón de longitud variable ("VLC") de modo que el decodificador pueda recuperar completamente los mismos segmentos espaciales.
Habiendo seleccionado un conjunto de filtros de subpíxeles que tiene una ganancia de codificación alta para la partición actual, en el bloque 1140, la rutina 1100 codifica en un flujo binario un índice u otro código (por ejemplo, subpelfilt_code) correspondiente al conjunto de filtros de subpíxeles seleccionado. En varias formas de realización, se puede utilizar una tabla VLC fija, una tabla de codificación de Huffman adaptativa o similar para codificar el índice u otro código. Si se utiliza Huffman adaptativa, los códigos se calculan, en una forma de realización, en función de las frecuencias de los índices de las tramas anteriores, ya que se observó en experimentos que existe una redundancia temporal, y los mismos conjuntos de filtros tienden a aparecer en las tramas próximas.
En el bloque 1141, la rutina 1100 carga un libro de códigos de posición entera que incluye un número de (por ejemplo, 48) filtros de posición entera. En el bloque de decisión 1143, la rutina 1100 determina si la estimación del movimiento de enteros (determinada en el bloque 1108) proporciona una ganancia de codificación más alta (menor que SAD) que el conjunto de filtros de subpíxeles seleccionado. Si no es así, entonces la rutina 1100 procede a finalizar el bloque de bucle 1153, donde la rutina 1100 itera de nuevo al bloque 1135 para procesar la siguiente partición espacial (si la hubiere).
Sin embargo, si la estimación del movimiento de enteros (determinada en el bloque 1108) proporciona una ganancia de codificación más alta (SAD más bajo) que el conjunto de filtros de subpíxeles seleccionado, entonces en el bloque 1145, la rutina 1100 selecciona desde el libro de códigos de posición entera un filtro de posición entera que tiene una ganancia de codificación alta (o la más alta) para la partición espacial actual. En el bloque de decisión 1148, la rutina 1100 determina si el filtro de posición entera seleccionado proporciona la ganancia de codificación más alta (SAD más pequeña). Si es así, entonces en el bloque 1150, la rutina 1100 codifica al flujo binario un índice u otro código (por ejemplo, intpelfilt_codé) correspondiente al filtro de posición entera seleccionado. En algunas formas de realización, un indicador u otra cabecera de 1 bit también se codifica en el flujo binario para especificar que el filtro de posición entera seleccionado del libro de códigos de posición entera produce una ganancia de codificación más alta que la del filtro de posición entera estándar.
Al finalizar el bloque de bucle 1153, la rutina 1100 itera de nuevo al bloque 1135 para procesar la siguiente partición espacial (si la hubiere). Una vez que se procesan todas las particiones espaciales, la rutina 1100 termina en el bloque 1199. En varias formas de realización, el método descrito puede aplicarse por imagen y un índice a un conjunto de filtros enviado para una imagen completa, una zona o un segmento, un grupo de cortes, para cada una de las particiones quad-tree o bi-tree de una trama o de un mosaico, en bloques de grupo de una trama, en mosaicos o en fragmentos de un mosaico.
La Figura 12 ilustra una sintaxis de flujo binario 1200 a modo de ejemplo, de conformidad con varios codificadores y descodificadores de filtro de libro de códigos de compensación de movimiento y que se describen aquí de diversas formas. La sintaxis de flujo binario 1200 comienza con la cabecera de 3 bits mfc_hdr 1201. El indicador 1202 de imagen de un único bit indica si el filtrado basado en imágenes tendrá lugar o no. En caso afirmativo, se omite el siguiente elemento de sintaxis opcional numpt 1203; si la respuesta es negativa, se envía el código numérico de 3 bits 1203. El campo numérico opcional de 3 bits 1203 indica un número de particiones (hasta ocho).
El indicador de envío de mapas de 1 bit opcional 1204 indica si se envía un mapa de partición para indicar dónde se aplica el filtro o no, o de forma alternativa, para cambiar entre múltiples filtros. El campo de mapa de puntos de n bits 1205 opcional incluye el mapa de partición (si lo hubiere).
El indicador de envío de ninot filtrado 1 bit 1206 indica si se incluye un código de filtro de subpíxeles en el flujo binario. Si el indicador 1206 está establecido, entonces se envía subpelfilt_code 1208 de 8 bits para identificar el conjunto de filtros de subpíxeles que se utilizará; de lo contrario, no se envía subpelfilt_code 1208.
El indicador intfilt_sent 1210 indica si un código de filtro de posición entera está incluido en el flujo binario. Cuando se establece en ' 1 intfilt_sent 1210 indica que se envía intpelfilt_code de 6 bits 1211 para identificar el filtro de posición entera que se utilizará. De lo contrario, no se envía intpelfilt_code 1211.
La secuencia de códigos filt_sent 1206, subpelfilt_code 1208, intfilt_sent 1210 e intpelfilt_code 1211 ocurre una sola vez si se utiliza solamente el modo de 1 partición (imagen solamente); de lo contrario, la secuencia se repite numpt veces 1203.
La Figura 13a ilustra una secuencia de imágenes o tramas 1301 -1308 dentro de un flujo de vídeo, que incluye l-tramas 1301, 1308 (imágenes codificadas de manera independiente); P-tramas 1304, 1306 (imágenes codificadas predichas unidireccionalmente); y B-tramas 1302-1303, 1305, 1307 (imágenes codificadas predichas bidireccionalmente), como es normal en la codificación de vídeo según cualquiera de las normas MPEG. La estructura de la imagen ilustrada también muestra un número variable de B-tramas, aunque ese hecho en sí mismo no es una clave para nuestra descripción sobre el filtrado de movimiento. Más pertinente, mientras que l-imagen 1301,1308 no necesita información de conjunto de filtros de movimiento, P-imagen 1304, 1306 necesita uno o más conjuntos de filtros, mientras que B-imagen 1302-1303, 1305, 1307 necesitan dos (debido a referencias bidireccionales) o más conjuntos de filtros.
La Tabla 3 indica un coste de bits de codificación a modo de ejemplo para codificar filtros de libro de códigos de compensación de movimiento de conformidad con varias combinaciones de tipo de imagen y número de particiones (numpt), de conformidad con varias formas de realización, incluyendo los modos de filtrado de movimiento (por ejemplo, 'subpíxel', y 'int y subpíxel'), para los tipos de imagen P y B. Para reducir el coste de bits de las imágenes B, se introducen 2 modos adicionales (por ejemplo, 'imagen subpíxel' y 'imagen int subpíxel'). En general, se puede observar que para las P-imágenes, el conjunto de filtros de señalización de subpíxeles solamente toma entre 13 y 43 bits (para hasta 4 particiones), un conjunto de filtros de señalización tanto int como subpíxeles solamente toma entre 19 y 67 bits, y B- imágenes para subpíxeles entre 22 y 79 bits, e B-imágenes para int y subpíxeles entre 34 y 127 bits. (Los costes de bits de codificación a modo de ejemplo que se muestran en la Tabla 3 excluyen los costes de bits para mapas de particiones espaciales tales como zonas, segmentos, mosaicos o fragmentos de mosaicos, imagen bi-tree o quad-tree, mosaico bi-tree o quad-tree, y/o bloques fusionados).
Tabla 3
La Figura 13b ilustra una secuencia de imágenes o tramas 1301-1308 dentro de un flujo de vídeo, incluyendo las ltramas 1301, 1308, que están divididas en tres particiones a modo de ejemplo (numpt=3); P-tramas 1304, 1306, que están divididas en tres particiones a modo de ejemplo (numpt=3); y B-tramas 1302-1303, 1305, 1307, que están divididas en dos particiones a modo de ejemplo (numpt=2). Tal como se ilustra en la Figura 13b, las particiones para el filtrado de movimiento pueden ser totalmente adaptables y, en base a una imagen, pueden operar en cualquiera de los modos (imagen, zonas, cortes, mosaicos, fragmentos fusionados de un mosaico, imagen bi-tree o mosaico fusionado bi-tree, imagen quad-tree o mosaico fusionado quad-tree, bloques fusionados o similares). Por ejemplo, la Figura 13b muestra que la primera P-imagen 1304 consta de 3 cortes, mientras que la segunda B-imagen 1303 está codificada en bi-tree y consta de 2 particiones. Además, la segunda P-imagen 1306 está dividida en una matriz de 3x3 mosaicos grandes, mientras que la tercera B-trama 1305 está codificada con una división de bi-tree. Los siguientes ejemplos de la Figura 13b, para el caso del filtrado de movimiento de libro de códigos, pueden calcularse los recuentos de bits del filtro de movimiento para cada imagen en la estructura de imagen mostrada.
La Figura 14 ilustra un sistema de codificación/decodificación de vídeo 1400 a modo de ejemplo de conformidad con una forma de realización, el sistema 1400 incluye una fuente de vídeo no codificado 1415, un dispositivo de codificación
1500 (véase Figura 15, descrito a continuación), un dispositivo de decodificación 1600 (véase Figura 16, descrito a continuación) con una pantalla externa opcional 1425 y una fuente de vídeo codificado opcional 1420. En algunas formas de realización, uno o ambos del dispositivo de codificación 1500 y/o del dispositivo de decodificación 1600 pueden estar conectados a una red 1450. En algunas formas de realización, el dispositivo de decodificación 1600 y el dispositivo de codificación 1500 pueden comprender un único dispositivo. En algunas formas de realización, puede estar presente más de un dispositivo de codificación 1500; por ejemplo, un dispositivo de codificación puede realizar procesos de generación de libros de códigos "fuera de línea", mientras que otro dispositivo de codificación puede realizar procesos de codificación "online", tal como se describe a lo largo de esta descripción.
En algunas formas de realización, también pueden estar presentes otros servidores y/o dispositivos (no ilustrados). Por ejemplo, en algunas formas de realización, un servidor de distribución (no ilustrado) puede distribuir vídeo codificado al dispositivo de decodificación 1600 a través de la red 1450.
En algunas formas de realización, el dispositivo de codificación 1500 puede comunicarse con la fuente de vídeo no codificado 1415 a través de la red 1450, una red de área de almacenamiento ("SAN"), un bus serie de alta velocidad y/o mediante otra tecnología de comunicación adecuada. De forma similar, en algunas formas de realización, el dispositivo de decodificación 1600 puede comunicarse con la fuente de vídeo codificado 1420 a través de la red 1450, de una red de área de almacenamiento ("SAN"), de un bus serie de alta velocidad y/o mediante otra tecnología de comunicación adecuada. En algunas formas de realización, el dispositivo de codificación 1500, el dispositivo de decodificación 1600, la fuente de vídeo codificado 1420 y/o la fuente de vídeo no codificado 1415 pueden comprender uno o más dispositivos físicos o lógicos replicados y/o distribuidos.
En varias formas de realización, la red 1450 puede incluir Internet, una red de área local ("LAN"), una red de área amplia ("WAN"), una red de datos celular y/u otra red de datos. En muchas formas de realización, puede haber más dispositivos de codificación 1500, dispositivos de descodificación 1600, fuentes de vídeo codificado 1420 y/o fuentes de vídeo no codificado 1415 de las que se ilustran.
La Figura 15 ilustra varios componentes de un dispositivo de codificación 1500 a modo de ejemplo, de conformidad con una forma de realización. La Figura 15 ilustra varios componentes de un dispositivo de codificación 1500 a modo de ejemplo. En algunas formas de realización, el dispositivo de codificación 1500 puede incluir muchos más componentes que los ilustrados en la Figura 15. Sin embargo, no es necesario que todos estos componentes, por lo general convencionales, se muestren para revelar una forma de realización ilustrativa. Tal como se muestra en la Figura 15, el dispositivo de codificación 1500 incluye una interfaz de red opcional 1530 para conectarse, de manera opcional, a la red 1450.
El dispositivo de codificación 1500 también incluye al menos una unidad de procesamiento 1510 (por ejemplo, una unidad de procesamiento central de uso general, una unidad de procesamiento integrada, una unidad de procesamiento de vídeo de uso especial, o similar), una memoria 1550, un dispositivo de salida opcional y/o una pantalla 1540, y un dispositivo de entrada opcional 1570 (por ejemplo, un teclado, un ratón, un control remoto, un joystick y similares), todos interconectados junto con la interfaz de red opcional 1530 a través de un bus 1520. La memoria 1550 por lo general comprende una memoria de acceso aleatorio ("RAM"), una memoria de solo lectura ("ROM") y un dispositivo de almacenamiento masivo permanente, tal como una unidad de disco. La memoria 1550 almacena un codificador de vídeo 800 con filtrado de compensación de movimiento de libro de códigos (véase la Figura 8, descrita con anterioridad); uno o ambos de un libro de códigos de conjunto de filtros de subpíxeles de compensación de movimiento 1565 y un libro de códigos de filtro de posición entera de compensación de movimiento 1570; una rutina de generación de libro de códigos "fuera de línea" 1000 opcional (véase Figura 10, descrita con anterioridad); una rutina de búsqueda de libro de códigos de filtro de compensación de movimiento 1100 (véase Figura 11, descrita con anterioridad); y una rutina de codificación de vídeo de filtrado de compensación de movimiento de libro de códigos (véase Figura 17, que se describe a continuación). Además, la memoria 1550 también almacena un sistema operativo 1555. En algunas formas de realización, estos componentes de software pueden cargarse desde un medio de almacenamiento legible por ordenador 1595 en la memoria 1550 del dispositivo de codificación 1500 utilizando un mecanismo de accionamiento (no ilustrado) asociado con un medio de almacenamiento transitorio legible por ordenador 1595, tal como un disquete, una cinta, una unidad de DVD/CD-ROM, una tarjeta de memoria o similar. En algunas formas de realización, los componentes de software también pueden cargarse a través de la interfaz de red opcional 1530, en lugar de a través de un medio de almacenamiento legible por ordenador 1595.
En algunas formas de realización, el dispositivo de codificación 1500 puede comprender, además, una interfaz especializada 1535 para comunicarse con la fuente de vídeo no codificado 1415, tal como un bus serie de alta velocidad, o similar. En otras formas de realización, el dispositivo de codificación 1500 puede comunicarse con la fuente de vídeo no codificado 1415 a través de la interfaz de red 1530. En otras formas de realización, la fuente de vídeo no codificado 1415 puede residir en la memoria 1550.
Aunque se ha descrito un dispositivo de codificación 1500, a modo de ejemplo, que por lo general se ajusta a los dispositivos informáticos de uso general convencionales, un dispositivo de codificación 1500 puede ser cualquiera de entre un gran número de dispositivos capaces de codificar vídeo, por ejemplo, un dispositivo de grabación de vídeo,
un dispositivo de coprocesador y/o acelerador, un ordenador personal, una consola de juegos, un decodificador, un ordenador portátil, un teléfono móvil o cualquier otro dispositivo adecuado.
La Figura 16 ilustra varios componentes de un dispositivo de decodificación 1600, a modo de ejemplo, de conformidad con una forma de realización. En algunas formas de realización, el dispositivo de decodificación 1600 puede incluir muchos más componentes que los ilustrados en la Figura 16. Sin embargo, no es necesario que todos estos componentes, por lo general convencionales, se muestren con el fin de revelar una forma de realización ilustrativa. Tal como se muestra en la Figura 16, el dispositivo de decodificación 1600 incluye una interfaz de red opcional 1630 para conectarse, de manera opcional, a la red 1450.
El dispositivo de decodificación 1600 también incluye al menos una unidad de procesamiento 1610 (por ejemplo, una unidad de procesamiento central de uso general, una unidad de procesamiento integrada, una unidad de procesamiento de vídeo de uso especial, o similar), una memoria 1650, un dispositivo de salida opcional y/o una pantalla 1640, y un dispositivo de entrada opcional 1670 (por ejemplo, un teclado, un ratón, un control remoto, un joystick y similares), todos interconectados junto con la interfaz de red opcional 1630 a través de un bus 1620. La memoria 1650 por lo general comprende una memoria de acceso aleatorio ("RAM"), una memoria de solo lectura ("ROM") y un dispositivo de almacenamiento masivo permanente, tal como una unidad de disco. La memoria 1650 almacena códigos de programa para un decodificador de vídeo 900 con filtrado de compensación de movimiento de libro de códigos (véase Figura 9, descrita con anterioridad); uno o ambos de entre un libro de códigos de conjunto de filtros de subpíxeles de compensación de movimiento 1665 y un libro de códigos de filtro de posición entera de compensación de movimiento 1670; y una rutina de decodificación de vídeo de filtrado de compensación de movimiento de libro de códigos (véase Figura 21, que se describe a continuación). Además, la memoria 1650 también almacena un sistema operativo 1655. En algunas formas de realización, estos componentes de software pueden cargarse desde un medio de almacenamiento legible por ordenador 1695 en la memoria 1650 del dispositivo de decodificación 1600 utilizando un mecanismo de accionamiento (no ilustrado) asociado con un medio de almacenamiento no transitorio legible por ordenador 1695, tal como un disquete, una cinta, una unidad de DVD/CD-ROM, una tarjeta de memoria o similar. En algunas formas de realización, los componentes de software también se pueden cargar a través de la interfaz de red opcional 1630, en lugar de a través de un medio de almacenamiento 1695 legible por ordenador.
En algunas formas de realización, el dispositivo de decodificación 1600 puede comprender, además, una interfaz especializada 1635 para comunicarse con la fuente de vídeo codificado 1420, tal como un bus en serie de alta velocidad o similar. En algunas formas de realización, el dispositivo de decodificación 1600 puede comunicarse con la fuente de vídeo codificado 1420 a través de la interfaz de red 1630. En otras formas de realización, la fuente de vídeo codificado 1415 puede residir en la memoria 1650.
Aunque se ha descrito un dispositivo de decodificación 1600, a modo de ejemplo, que por lo general se ajusta a los dispositivos informáticos de uso general convencionales, un dispositivo de decodificación 1600 puede ser cualquiera de entre un gran número de dispositivos capaces de decodificar vídeo, por ejemplo, un dispositivo de reproducción de vídeo, un ordenador personal, una consola de juegos, un decodificador, un ordenador portátil, un teléfono móvil o cualquier otro dispositivo adecuado.
La Figura 17 ilustra una rutina 1700 de codificación de vídeo de filtrado de compensación de movimiento de libro de códigos, tal como se puede realizar mediante el dispositivo de codificación 1500 de conformidad con una forma de realización. En el bloque de subrutina 1800 (véase Figura 18, descrito a continuación), la rutina 1700 obtiene un libro de códigos que incluye una multiplicidad de filtros de compensación de movimiento agrupados en una pluralidad de grupos de posiciones de subpíxeles que corresponden, respectivamente, a una pluralidad de posiciones de subpíxeles, Comprendiendo, cada uno de entre la pluralidad de grupos de posiciones de subpíxeles, una pluralidad de filtros de compensación de movimiento adecuados para interpolar bloques de una imagen en una correspondiente de entre la pluralidad de posiciones de subpíxeles. Por ejemplo, tal como se describió con anterioridad en referencia a la Tabla 1, un libro de códigos puede incluir una multiplicidad de filtros de compensación de movimiento (por ejemplo, ao..15, b0.15... oü...15) agrupados en grupos de posiciones de subpíxeles, tales como las siguientes:
• grupo de posiciones de subpíxeles {a}: {ao, a1, a2..15};
• grupo de posiciones de subpíxeles {b}: {bo, b1, b2..15};
• grupo de posiciones de subpíxeles {o}: {oo, o 1, o2..15}.
En el bloque 1705, la rutina 1700 obtiene una trama o imagen de vídeo sin codificar para codificar. En algunos casos, se puede determinar que la trama o la imagen de vídeo no codificados incluyen varias partes diferentes (véanse, por ejemplo, las Figuras 7a-f, que muestran varios modos de partición para dividir una imagen en partes). En otros casos, toda la trama sin codificar o la imagen de vídeo puede tratarse como una sola parte.
Durante la codificación de la trama o imagen no codificadas, la rutina 1700 procesa cada una de las una o más partes de la trama o imagen no codificadas comenzando en el bloque de bucle de inicio 1710. En el bloque de subrutina 1900
(véase Figura 19, descrita a continuación), la rutina 1700 selecciona un subconjunto de entre la multiplicidad de filtros
de compensación de movimiento del libro de códigos por estar bien adaptado para la parte actual de la trama de vídeo
o imagen, incluyendo el subconjunto seleccionado uno de cada uno de entre la pluralidad de grupos de posiciones de
subpíxeles. Por ejemplo, tal como se describió con anterioridad con referencia a la Tabla 1, un libro de códigos puede
caracterizarse, además, por incluir un número (por ejemplo, 256) de subconjuntos predeterminados de filtros de
compensación de movimiento, uno de cada grupo de posiciones de subpíxeles, por ejemplo:
• id subconjunto=0: (aü, bü, c0, dü, e0, fü, g0, hü, Í0, jü, kü, lü, m0, n0, oü);
• id subconjunto=1: (a1, b1, c1, d1, e1, f1, g1, h1, Í1, j1, k1, I1, m1, m, o1);
;
• id subconjunto=16: (aü, b5, c7, d9, e4, f4, g12, h6, Í7, j2, k4, I11, ms, nü, o1ü);
• id subconjunto=255: (a1ü, b6, c12, d9, e2, f2, g3, h1ü, Í3, j5, k1, ls, mu, n6, o1ü).
El bloque de subrutina 1900 devuelve un indicador de conjunto de filtros enviado y (si el indicador de conjunto de filtros
enviado=1) un código de conjunto de filtros de subpíxeles que identifica el subconjunto seleccionado de entre la
pluralidad de filtros de compensación de movimiento dentro del libro de códigos. Por ejemplo, en una forma de
realización, el código del conjunto de filtros de subpíxeles puede ser (o derivarse de) un número de "id subconjunto" u
otro índice en el libro de códigos. En el bloque 1720, la rutina 1700 escribe el indicador enviado del conjunto de filtros
devuelto y el código del conjunto de filtros de subpíxeles (si lo indica el indicador enviado del conjunto de filtros) en un
flujo binario codificado generado por la rutina 1700.
En el bloque de subrutina 2000, la rutina 1700 determina, de manera opcional, un filtro de compensación de
movimiento de posición entera (véase Figura 20 descrita a continuación) para la parte actual de la trama o imagen no
codificada. Al finalizar el bloque de bucle 1730, la rutina 1700 itera de nuevo al bloque 1710 para procesar la siguiente
parte de la trama o imagen no codificada (si existe). Habiendo codificado así al menos un conjunto de filtro de
compensación de movimiento establecido en el flujo binario, la rutina 1700 finaliza en el bloque 1799. En muchos
casos, la rutina 1700 se puede realizar en serie para una serie de tramas de un vídeo, siendo la rutina 1700 parte de
un proceso de codificación de vídeo más grande.
La Figura 18 ilustra una subrutina 1800 para obtener un libro de códigos, de conformidad con una forma de realización.
En algunas formas de realización, el proceso de generar un libro de códigos puede ser bastante largo (tarda horas o
incluso días), por lo que el libro de códigos puede generarse solamente una vez (o al menos con poca frecuencia) y
almacenarse para su reutilización. En el bloque de decisión 1805, la subrutina 1800 determina si un libro de códigos
generado previamente se ha almacenado para su reutilización. Si es así, en el bloque 1810, la subrutina 1800 efectúa
la lectura del libro de códigos almacenado y lo devuelve al final del bloque 1899.
Sin embargo, si un libro de códigos generado previamente no se ha almacenado para su reutilización, entonces la
subrutina 1800 comienza el proceso de generar un libro de códigos. En algunas formas de realización, los bloques
1815-1865 se pueden realizar de forma independiente, tal como una rutina de generación de libro de códigos “fuera
de línea”. Los bloques 1815-1865 pueden entenderse como una vista alternativa o una caracterización alternativa
similar a los procesos ilustrados en los bloques 1005-1050 de la Figura 10, que se describe en detalle con anterioridad.
En aras de la brevedad, el tema descrito con anterioridad en relación con la Figura 10 por lo general no se reiterará
en la descripción siguiente de la Figura 18.
Comenzando en el bloque de bucle inicial 1815, la subrutina 1800 procesa cada una de entre una serie de posiciones
de subpíxeles (por ejemplo, a-o, tal como se ilustra en la Figura 3, descrita con anterioridad).
En el bloque 1820, la subrutina 1800 determina un filtro de compensación de movimiento predeterminado para la
posición de subpíxeles actual. Por ejemplo, en una forma de realización, la subrutina 1800 puede utilizar un filtro de
compensación de movimiento de subpíxeles fijo, tal como el del conjunto de filtros fijos H.264 o cualquier otro conjunto
de filtros predeterminado adecuado.
En el bloque 1825, la subrutina 1800 refina iterativamente el filtro de compensación de movimiento predeterminado
para generar una multiplicidad de filtros de compensación de movimiento refinados para la posición de subpíxeles
actual. Por ejemplo, en una forma de realización, la subrutina 1800 puede emplear un algoritmo de recorrido aleatorio
(o un algoritmo de optimización similar) para refinar iterativamente el filtro de compensación de movimiento
predeterminado para generar una multiplicidad de filtros de compensación de movimiento refinados.
Comenzando en el bloque de bucle inicial 1830, la subrutina 1800 procesa cada uno de entre la multiplicidad refinada
de filtros de compensación de movimiento refinados. En el bloque 1835, la subrutina 1800 determina una ganancia de
codificación (por ejemplo, una medida de SAD) para el filtro de compensación de movimiento refinado actual. En el
bloque 1840, la subrutlna 1800 Itera de retorno al bloque 1830 para procesar el siguiente filtro de compensación de movimiento refinado (si lo hubiere).
En el bloque 1845, la subrutina 1800 utiliza las ganancias de codificación determinadas para seleccionar un grupo de
filtros de compensación de movimiento refinados de buen rendimiento para la posición actual de subpíxeles (por ejemplo, un grupo de filtros con ganancia de codificación alta/SAD baja), En el bloque 1850, la subrutina 1800 almacena el grupo seleccionado de filtros de compensación de movimiento refinados de buen rendimiento para la posición de subpíxeles actual, Al finalizar el bloque de bucle 1855, la subrutina 1800 itera de nuevo al bloque 1815
para procesar la siguiente posición de subpíxeles (si la hubiere), En algunas formas de realización, el grupo seleccionado de filtros de compensación de movimiento refinados de buen rendimiento se puede considerar como
filtros "base" (tal como se describió con anterioridad) para la posición de subpíxeles actual, que junto con los filtros de
"base" para otras posiciones de subpíxeles, forman un libro de códigos “base" o grupo "base" de conjuntos de filtros,
En el bloque 1860, la subrutina 1800 utiliza los grupos de filtros de compensación de movimiento refinados de buen rendimiento (un grupo para cada posición de subpíxeles) para determinar iterativamente una pluralidad de conjuntos de filtros, cada conjunto de filtros incluye una combinación distinta de filtros, un filtro para cada posición de subpíxeles,
(En algunos contextos de esta descripción, la expresión "conjuntos de filtros" también se denomina como "subconjuntos" de filtros de compensación de movimiento, por ejemplo, (aü, b5 , cz, dg, e4, f4 , g12, h6 , iz, j2, o10}. En algunas formas de realización, la subrutina 1800 puede determinar iterativamente la pluralidad de conjuntos/subconjuntos de filtros utilizando un algoritmo de recorrido aleatorio (o un algoritmo de optimización similar),
En el bloque 1865, la subrutina 1800 indica los conjuntos de filtros/subconjuntos determinados en el libro de códigos, de modo que cada uno de los conjuntos de filtros/subconjuntos determinados de filtros pueda direccionarse, seleccionarse, indexarse o identificarse de otro modo dentro del libro de códigos, Por ejemplo, en una forma de realización, la subrutina 1800 puede asignar a cada uno de los conjuntos de filtros/subconjuntos determinados un número “id) o índice,
En el bloque 1870, la subrutina 1800 almacena el libro de códigos así generado para su posterior reutilización, En el bloque 1899, la subrutina 1800 finaliza y devuelve el libro de códigos,
La Figura 19 ilustra una subrutina 1900 para seleccionar un subconjunto de filtros de compensación de movimiento
desde el libro de códigos, de conformidad con una forma de realización, La Figura 19 puede entenderse como una vista alternativa o una caracterización alternativa similar a los procesos ilustrados en la Figura 11, que se describieron
con anterioridad en detalle, En aras de la brevedad, la materia descrita con anterioridad en relación con la Figura 11
por lo general no se reiterará en la descripción siguiente de la Figura 19,
En el bloque 1903, la subrutina 1900 obtiene al menos una parte de una imagen (véanse, por ejemplo, las Figuras 7 af, que muestran varios modos de partición para dividir una imagen en partes), la parte de una imagen que incluye
varios bloques de contenido de la imagen, Comenzando en el bloque de bucle inicial 1905, la subrutina 1900 procesa
cada bloque de contenido de imagen de la parte de imagen, Comenzando en el bloque de bucle inicial 1908, la subrutina 1900 procesa cada una de varias posiciones de subpíxeles (por ejemplo, a-o, tal como se ilustra en la Figura
3, descrita con anterioridad),
En el bloque 1910, la subrutina 1900 obtiene una multiplicidad de filtros de compensación de movimiento "base" para la posición actual de subpíxeles (por ejemplo, a0, a1, a2 ,,,a15), Comenzando en el bloque de bucle inicial 1913, la subrutina 1900 procesa cada uno de los filtros de compensación de movimiento "base" para la posición actual de subpíxel, En el bloque 1915, la subrutina 1900 determina una ganancia de codificación individual (por ejemplo, calculando un SAD) para el filtro de compensación de movimiento "base" actual para la posición actual de subpíxeles
(por ejemplo, a0), Al finalizar el bloque de bucle 1918, la subrutina 1900 itera de nuevo al bloque 1913 para procesar el siguiente filtro de compensación de movimiento "base" (si lo hubiere) para la posición de subpíxeles actual,
Habiendo determinado las ganancias de codificación para cada uno de los filtros de compensación de movimiento
"base" para la posición de subpíxeles actual, en el bloque 1920, la subrutina 1900 determinó una ganancia de codificación para un filtro de compensación de movimiento "predeterminado", que es parte de un filtro predeterminado
de conjunto de filtros de compensación de movimiento, Por ejemplo, en una forma de realización, la subrutina 1900
puede determinar una ganancia de codificación para un filtro de compensación de movimiento fijo para la posición
actual de subpíxeles, tal como uno de los filtros del conjunto de filtro de compensación de movimiento fijo utilizado en
H.264 u otro conjunto adecuado de filtro de compensación de movimiento "predeterminado",
Al finalizar el bloque de bucle 1923, la subrutina 1900 itera de nuevo al bloque 1908 para procesar la siguiente posición
de subpíxeles (si la hubiere), Al finalizar el bloque de bucle 1925, la subrutina 1900 itera de nuevo al bloque 1905 para procesar el siguiente bloque de contenido de imagen de la parte de imagen (si la hubiere),
En el bloque 1928, la subrutina 1900 obtiene una pluralidad de conjuntos de filtros adaptativos, comprendiendo cada conjunto de filtros uno de los filtros de compensación de movimiento "base" para cada posición de subpíxel, Por ejemplo, en una forma de realización, la subrutina 1900 puede obtener un libro de códigos que incluye una pluralidad
de conjuntos de filtros adaptativos tales como los siguientes:
• id conjunto=0: |a0, b0, C0, d0, e0, f0, g0, h0, ¡0, j0, k0, I0, m0, n0, 00 };
• id conjunto=1 :{ai, bi, ci, di, ei, fi, gi, hi, ¡1, ji, ki, Ii, mi, ni, 01 };
• id conjunto=15: {ai5, bi5, C15, di5, ei5, fi5, gi5, hi5, ¡15, ji5, ki5, I15, mi5, ni5, oi5};
• id conjunto=16:{a0, b5, c7, dg, e4, f4, g i2, h6, ¡7, j2, k4, I11, ms, n0, o i0};
• id conjunto=255: {a i0, b6, c i2, dg, e2, f2, g3, h i0, ¡3, j5, ki, Is, m ii, n6, o i0}.
Comenzando en el bloque de bucle inicial 1930, la subrutina 1900 procesa cada uno de Ios conjuntos de filtros adaptativos obtenidos. En el bloque 1933, la subrutina 1900 determina una ganancia de codificación agregada para el conjunto de filtros adaptativos actual. Por ejemplo, en una forma de realización, la determinación de una ganancia de codificación agregada puede incluir la suma de las ganancias de codificación individuales (tal como se determina en el bloque 1915) para los filtros constituyentes del conjunto de filtros adaptativos actual. Al finalizar el bloque de bucle 1935, la subrutina 1900 itera de retorno al bloque 1930 para procesar el siguiente conjunto de filtros adaptativos (si lo hubiere).
Habiendo determinado las ganancias de codificación agregadas para cada uno de los conjuntos de filtros adaptativos, en el bloque 1938, la subrutina 1900 determina una ganancia de codificación agregada "predeterminada" para el conjunto de filtros "predeterminado" (por ejemplo, el conjunto de filtros fijos de H .264 u otro conjunto adecuado), utilizando las ganancias de codificación "predeterminadas" individuales determinadas en el bloque 1920, descrito con anterioridad.
En el bloque 1940, utilizando las ganancias de codificación agregadas determinadas en el bloque 1933, la subrutina 1900 selecciona un conjunto de filtros adaptativos con una ganancia de codificación agregada favorable para la parte de una imagen obtenida en el bloque 1903. En algunas formas de realización, el conjunto de filtros adaptativos seleccionado puede ser el conjunto de filtros adaptativos con la más alta ganancia de codificación agregada determinada.
En el bloque de decisión 1943, la subrutina 1900 compara la ganancia de codificación agregada "predeterminada" determinada en el bloque 1938 con la ganancia de codificación agregada del conjunto de filtros adaptativos favorables seleccionado. Si el conjunto de filtros "predeterminado" proporciona una ganancia de codificación más alta (menor SAD), entonces en el bloque 1950, la subrutina 1900 establece un indicador de filteret_sent en '0' o 'NO' y devuelve el indicador de filteret_sent al finalizar el bloque 1999.
Sin embargo, si el conjunto de filtros adaptativos proporciona una ganancia de codificación más alta (menor SAD), entonces en el bloque 1945, la subrutina 1900 establece un indicador de envío del conjunto de filtros en '1' o 'SÍ, y en el bloque 1948, la subrutina 1900 determina un código del conjunto de filtro de subpíxeles que identifica el conjunto de filtros adaptativos seleccionado. Por ejemplo, en una forma de realización, el código del conjunto de filtros de subpíxeles puede ser (o derivarse de) un número de "ID de subconjunto" u otro índice en un libro de códigos. La subrutina 1900 retorna el indicador de conjunto de filtros enviado y el código de conjunto de filtros de subpíxeles determinado al finalizar el bloque 1999.
La Figura 20 ¡lustra una subrutina 2000 para determinar un filtro de compensación de movimiento de posición entera para una parte de una imagen, de conformidad con una forma de realización. En el bloque 2005, la subrutina 2000 obtiene al menos una parte de una imagen (véanse, por ejemplo, las Figuras 7a-f, que muestran varios modos de partición para dividir una imagen en partes), la parte de una imagen incluye varios bloques de contenido de imagen. Comenzando en el bloque de bucle inicial 2010, la subrutina 2000 procesa cada bloque de contenido de imagen de la parte de imagen.
En el bloque 2015, la subrutina 2000 obtiene una pluralidad de filtros de compensación de movimiento de posición entera, por ejemplo, 00 , 0i, 02...047. Por ejemplo, en una forma de realización, la subrutina 2000 puede obtener un libro de códigos de posición entera, tal como el que se muestra parcialmente en la Tabla 2 anterior. En otras formas de realización, la pluralidad de filtros de compensación de movimiento de posición entera puede incluirse dentro de un libro de códigos que también incluye filtros de posiciones de subpíxeles.
Comenzando en el bloque de bucle de inicio 2020, la subrutina 2000 procesa cada uno de entre la pluralidad de filtros de compensación de movimiento de posición entera. En el bloque 2025, la subrutina 2000 determina una ganancia de codificación individual (por ejemplo, calculando un SAD) para el filtro de compensación de movimiento de posición entera actual. Al finalizar el bloque de bucle 2030, la subrutina 2000 itera de nuevo al bloque 2020 para procesar el siguiente filtro de compensación de movimiento de posición entera (si lo hubiere). Al finalizar el bloque de bucle 2035, la subrutina 2000 itera de nuevo al bloque 2010 para procesar el siguiente bloque de contenido de imagen (si lo hubiere) de la parte de imagen.
Una vez que se han determinado las ganancias de codificación para cada filtro de compensación de movimiento de posición entera y cada bloque de contenido de imagen de la parte de imagen, en el bloque 2040, la subrutina 2000 selecciona uno de entre la pluralidad de filtros de compensación de movimiento de posición entera como que tiene una ganancia de codificación favorable (SAD baja) para la parte de imagen actual.
En el bloque de decisión 2045, la subrutina 2000 compara la ganancia de codificación del filtro de compensación de movimiento de posición entera favorable seleccionado con una ganancia de codificación de un conjunto de filtros de subpíxeles también seleccionados para la misma parte de imagen (véase, por ejemplo, la descripción del bloque 2040 en la Figura 20 anterior). Si el conjunto de filtros de subpíxeles proporciona una ganancia de codificación más alta (SAD más bajo), entonces, en el bloque 2060, la subrutina 2000 establece un indicador intfilt_sent en el flujo binario a '0' o 'NO' y retorna al finalizar al bloque 2099.
Sin embargo, si el filtro de compensación de movimiento de posición entera favorable proporciona una ganancia de codificación más alta (SAD más bajo), entonces en el bloque 2050, la subrutina 2000 establece un indicador intfilt_sent en '1' o ‘SÍ’, y en el bloque 2055, la subrutina 2000 escribe en el flujo binario un código de filtro de posición entera que identifica el filtro de compensación de movimiento de posición entera favorable seleccionado. Por ejemplo, en una forma de realización, el código de filtro de posición entera puede ser (o derivarse de) un número de "id" u otro índice en un libro de códigos. La subrutina 2000 retorna al finalizar al bloque 2099.
La Figura 21 ilustra una rutina 2100 de decodificación de vídeo de filtrado de compensación de movimiento de libro de códigos, tal como puede realizarse mediante el dispositivo de decodificación 1600 de conformidad con una forma de realización. En el bloque 2105, la rutina 2100 obtiene un flujo binario codificado de una fuente de vídeo codificada, incluyendo el flujo binario codificado una o más imágenes o tramas de vídeo. Comenzando en el bloque de bucle inicial 2110, la rutina 2100 procesa cada una de las imágenes o tramas de vídeo codificadas.
En el bloque 2115, la rutina 2100 efectúa la lectura del flujo binario de uno o más códigos de parte de imagen que identifican una o más partes de imagen (véanse, por ejemplo, las Figuras 7a-f, que muestran varios modos de partición para dividir una imagen en partes) de la imagen o trama codificada actual. Por ejemplo, en una forma de realización, la rutina 2100 puede efectuar la lectura de algunos o todos los códigos tales como pict_only 1202, numpt 1203, map_sent 1204 y/o ptmap 1205, tal como se muestra en la Figura 12 y se describe con anterioridad.
Comenzando en el bloque de bucle inicial 2120, la rutina 2100 procesa cada una de las una o más partes de imagen de la imagen codificada actual o trama de vídeo.
En el bloque de decisión 2125, la rutina 2100 determina si el flujo binario codificado incluye un código de filtro de posición entera para la parte de imagen actual de la imagen o trama de vídeo codificada actual. Por ejemplo, en una forma de realización, la rutina 2100 puede determinar si el flujo binario codificado incluye un indicador intfilt_sent 1210, tal como se muestra en la Figura 12 y se describe con anterioridad.
Si la rutina 2100 determina que el flujo binario codificado incluye dicho código de filtro de posición entera, entonces en el bloque 2130, la rutina 2100 efectúa la lectura de un código de filtro de posición entera del flujo binario. Por ejemplo, en una forma de realización, la rutina 2100 puede efectuar la lectura de un código intpelfilt_code 1211 del flujo binario, tal como se muestra en la Figura 12 y se describe con anterioridad.
En el bloque 2135, la rutina 2100 obtiene una pluralidad de filtros de compensación de movimiento de posición entera, por ejemplo, 00, 01, 02...047. Por ejemplo, en una forma de realización, la subrutina 2000 puede obtener un libro de códigos de posición entera, tal como el que se muestra parcialmente en la Tabla 2 anterior. En otras formas de realización, la pluralidad de filtros de compensación de movimiento de posición entera puede incluirse dentro de un libro de códigos que también incluye filtros de posiciones de subpíxeles. En condiciones normales, la rutina 2100 efectuaría la lectura de una copia almacenada previamente de entre la pluralidad de filtros de compensación de movimiento de posición entera desde una memoria accesible a la rutina 2100.
En el bloque 2140, la rutina 2100 selecciona uno de entre la pluralidad de filtros de compensación de movimiento de posición entera tal como lo indica el código de filtro de posición entera (p. ej., código de filtro interno 1211) objeto de lectura del flujo binario en el bloque 2130. La subrutina 2100 utiliza entonces el filtro de compensación de movimiento de posición entera seleccionado en el bloque 2170 para predecir bloques de la parte de imagen actual de la imagen o trama de vídeo codificada actual.
Sin embargo, si en el bloque de decisión 2125, la rutina 2100 determina que el flujo binario codificado no incluye un código de filtro de posición entera, entonces, en el bloque de decisión 2145, la rutina 2100 determina si el flujo binario codificado incluye un código de conjunto de filtros de subpíxeles para la parte de imagen actual de la imagen codificada actual o trama de vídeo. Por ejemplo, en una forma de realización, la rutina 2100 puede determinar si el flujo binario codificado incluye un indicador 1206 de filt_sent, tal como se muestra en la Figura 12 y se describió con anterioridad. Si no es así, en el bloque 2165, la rutina 2100 seleccionó un conjunto de filtros de compensación de movimiento de subpíxeles predeterminado (por ejemplo, el conjunto de filtros de subpíxeles fijos utilizados en H.264, u otro conjunto
adecuado de filtros predeterminados}. La subrutina 2100 utiliza entonces el filtro de compensación de movimiento de subpíxeles predeterminado establecido en el bloque 2170 para predecir bloques de la parte de imagen actual de la imagen o trama de vídeo codificada actual.
Sin embargo, si la rutina 2100 determina en el bloque de decisión 2145 que el flujo binario codificado incluye un código de conjunto de filtros de subpíxeles para la parte de imagen actual de la imagen codificada actual o trama de vídeo, entonces en el bloque 2150, la rutina 2100 efectúa la lectura de un código del conjunto de filtros de subpíxeles desde el flujo binario. Por ejemplo, en una forma de realización, la rutina 2100 puede efectuar la lectura de un código subpelfilt_code 1208 desde el flujo binario, tal como se muestra en la Figura 12 y se describió con anterioridad.
En el bloque 2155, la rutina 2100 obtiene un libro de códigos de compensación de movimiento de subpíxeles, tal como el que se muestra parcialmente en la Tabla 1, descrita con anterioridad. En condiciones normales, la rutina 2100 efectuaría la lectura de una copia almacenada previamente del libro de códigos de compensación de movimiento de subpíxeles desde una memoria accesible para la rutina 2100.
En el bloque 2140, la rutina 2100 selecciona uno de entre la pluralidad de conjuntos de filtros de compensación de movimiento de subpíxeles tal como se indica por el código de conjunto de filtros de subpíxeles (por ejemplo, código subpelfilt 1208} objeto de lectura desde el flujo binario en el bloque 2150. La subrutina 2100 utiliza entonces el conjunto de filtro de compensación de movimiento de subpíxeles seleccionado en el bloque 2170 para predecir bloques de la parte de imagen actual de la imagen o trama de vídeo codificada actual.
Al finalizar el bloque de bucle 2175, la rutina 2100 itera de nuevo al bloque 2120 para procesar la siguiente parte de imagen (si la hubiere} de la imagen o trama de vídeo codificada actual.
En el bloque 2180, la rutina 2100 genera una imagen decodificada de conformidad con los bloques predichos de una o más partes de imagen predichas en varias iteraciones del bloque 2170. En el bloque 2185, la rutina 2100 representa la imagen generada en una pantalla asociada con el dispositivo que realiza la rutina 2100.
Al finalizar el bloque de bucle 2190, la rutina 2100 itera de nuevo al bloque 2110 para procesar la siguiente imagen codificada o trama de vídeo (si lo hubiere}. La rutina 2100 finaliza en el bloque 2199.
Claims (15)
1. Un método puesto en práctica por un dispositivo codificador de vídeo para codificar un conjunto de filtros de compensación de movimiento adaptativo para una pluralidad de posiciones de subpíxeles para predecir bloques en una trama de vídeo codificada, comprendiendo el método:
obtener, mediante el dispositivo codificador de vídeo, un libro de códigos que comprende una multiplicidad de filtros de compensación de movimiento agrupados en una pluralidad de grupos de posiciones de subpíxeles que corresponden respectivamente a la pluralidad de posiciones de subpíxeles, comprendiendo cada uno de entre la pluralidad de grupos de posiciones de subpíxeles una pluralidad de filtros de compensación de movimiento adecuados para interpolar bloques de una imagen en una posición correspondiente de entre la pluralidad de posiciones de subpíxeles;
obtener, mediante el dispositivo codificador de vídeo, una trama de vídeo no codificada para codificar mediante el dispositivo codificador de vídeo;
codificar, mediante el dispositivo codificador de vídeo, al menos una parte de la trama de vídeo en un flujo binario, comprendiendo la parte de la trama de vídeo una pluralidad de bloques de contenido de imagen; y
durante la codificación de al menos la parte de la trama de vídeo, el dispositivo codificador de vídeo: selecciona desde el libro de códigos un subconjunto de entre la pluralidad de filtros de compensación de movimiento como estando bien adaptados para predecir la pluralidad de bloques de contenido de imagen, comprendiendo el subconjunto seleccionado uno de cada uno de entre la pluralidad de grupos de posiciones de subpíxeles; incluyendo en el flujo binario un código de filtro de subpíxeles que identifica el subconjunto seleccionado de entre la pluralidad de filtros de compensación de movimiento dentro del libro de códigos;
caracterizado porque el método comprende, además:
dividir el libro de códigos en un libro de códigos base pequeño y un libro de códigos virtual más grande, comprendiendo el libro de códigos virtual de conjuntos de filtros, combinaciones de filtros seleccionados desde el libro de códigos base de conjuntos de filtros;
almacenar solamente el libro de códigos base y un algoritmo para sintetizar el libro de códigos virtual.
2. El método según la reivindicación 1, en donde seleccionar el subconjunto de entre la pluralidad de filtros de compensación de movimiento comprende seleccionar uno de entre una pluralidad de subconjuntos predeterminados de entre la pluralidad de filtros de compensación de movimiento.
3. El método según la reivindicación 2, en donde el código incluyendo en el flujo binario comprende un índice que identifica el subconjunto seleccionado de entre la pluralidad de subconjuntos predeterminados.
4. El método según la reivindicación 2, en donde seleccionar uno de entre la pluralidad de subconjuntos predeterminados de entre la pluralidad de filtros de compensación de movimiento comprende:
para cada uno de entre la pluralidad de bloques de contenido de imagen, determinar, respectivamente, una multiplicidad de ganancias de codificación individuales para la multiplicidad de filtros de compensación de movimiento; utilizar las multiplicidades determinadas de ganancias de codificación individuales, determinar una ganancia de codificación agregada para cada uno de entre la pluralidad de subconjuntos predeterminados de entre la pluralidad de filtros de compensación de movimiento aplicados a la pluralidad de bloques de contenido de imagen; y seleccionar uno de entre la pluralidad de subconjuntos predeterminados como teniendo una ganancia de codificación agregada favorable para la pluralidad de bloques de contenido de imagen, en particular que comprende, además: determinar una ganancia de codificación agregada predeterminado para un conjunto de filtros predeterminado aplicado a la pluralidad de bloques de contenido de imagen, comprendiendo el conjunto de imágenes predeterminado una pluralidad de filtros de compensación de movimiento de subpíxeles predeterminado correspondientes, respectivamente, a la pluralidad de posiciones de subpíxeles; y determinar que la ganancia de codificación agregada favorable es más favorable que la ganancia de codificación agregada predeterminado.
5. El método según la reivindicación 1, que comprende, además:
obtener una pluralidad de filtros de compensación de movimiento de posición entera; y
durante la codificación de al menos la parte de la trama de vídeo, el dispositivo codificador de vídeo selecciona uno de entre la pluralidad de filtros de compensación de movimiento de posición entera como estando bien adaptado para predecir la pluralidad de bloques de contenido de imagen,
6. El método según la reivindicación 5, que, además, comprende:
determinar que el seleccionado de entre la pluralidad de filtros de compensación de movimiento de posición entera proporciona una mejor ganancia de codificación que el subconjunto seleccionado de entre la pluralidad de filtros de compensación de movimiento; y
incluir en el flujo binario generado por el dispositivo codificador de vídeo:
un código de filtro de enteros que identifica el seleccionado de entre la pluralidad de filtros de compensación de movimiento de posición entera; y
un indicador de filtro de enteros que indica que el código de filtro de enteros está incluyendo en el flujo binario para al menos la parte de la trama de vídeo.
7. El método según la reivindicación 5, en donde el libro de códigos comprende, además, la pluralidad de filtros de compensación de movimiento de posición entera o en donde obtener la pluralidad de filtros de compensación de movimiento de posición entera comprende obtener un libro de códigos de posición entera.
8. El método según la reivindicación 1, en donde obtener el libro de códigos comprende:
determinar una pluralidad de filtros de compensación de movimiento predeterminado que corresponden, respectivamente, a la pluralidad de posiciones de subpíxeles;
generar una pluralidad de grupos de posiciones de subpíxeles correspondientes, respectivamente, a la pluralidad de posiciones de subpíxeles realizando al menos las etapas (i), (ii) y (iii) para cada una de entre la pluralidad de posiciones de subpíxeles:
(i) refinar iterativamente el correspondiente de entre la pluralidad de filtros de compensación de movimiento predeterminados para generar una multiplicidad de filtros de compensación de movimiento refinados correspondientes a la posición de subpíxeles actual utilizando las ecuaciones de Wiener Hopf;
(ii) determinar una multiplicidad de ganancias de codificación correspondientes, respectivamente, a la multiplicidad de filtros de compensación de movimiento refinados;
(iii) de conformidad con la multiplicidad determinada de ganancias de codificación, seleccionar desde la multiplicidad generada de filtros de compensación de movimiento refinados, un grupo de posiciones de subpíxeles de filtros de compensación de movimiento correspondiente a la posición de subpíxeles actual, en particular, que comprende, además, seleccionar una pluralidad de subconjuntos de filtros de compensación de movimiento, comprendiendo cada subconjunto un filtro de compensación de movimiento seleccionado desde cada uno de entre la pluralidad de grupos de posiciones de subpíxeles.
9. Un método puesto en práctica por un dispositivo de decodificador de vídeo para decodificar un conjunto de filtros de compensación de movimiento adaptativo para una pluralidad de posiciones de subpíxeles para predecir bloques de una trama de vídeo codificada, comprendiendo el método:
obtener, mediante el dispositivo decodificador de vídeo, un libro de códigos que comprende una multiplicidad de filtros de compensación de movimiento agrupados en una pluralidad de grupos de posiciones de subpíxeles que corresponden, respectivamente, a la pluralidad de posiciones de subpíxeles, comprendiendo cada uno de entre la pluralidad de grupos de posiciones de subpíxeles una pluralidad de filtros de compensación de movimiento adecuados para interpolar bloques de una imagen en una posición correspondiente de entre la pluralidad de posiciones de subpíxeles;
obtener un flujo binario codificado que comprende la trama de vídeo codificada y un código de filtro de subpíxeles que identifica el conjunto de filtros de compensación de movimiento adaptativo dentro del libro de códigos, comprendiendo el conjunto de filtros de compensación de movimiento adaptativo una pluralidad de filtros de compensación de movimiento correspondientes, respectivamente, a la pluralidad de posiciones de subpíxeles;
durante la decodificación de la trama de vídeo codificada, el dispositivo decodificador de vídeo selecciona desde el libro de códigos el conjunto de filtros de compensación de movimiento adaptativo identificado por el código de filtro de subpíxeles;
utilizando el conjunto de filtros de compensación de movimiento adaptativo, predecir una pluralidad de bloques de contenido de imagen, correspondiendo la pluralidad de bloques a al menos una parte de la trama de vídeo codificada; generar una imagen decodificada de conformidad con al menos la pluralidad prevista de bloques de contenido de imagen; y
efectuar la presentación de la imagen decodificada generada a una pantalla asociada con el dispositivo decodificador de vídeo;
caracterizado porque el método comprende, además;
dividir el libro de códigos en un libro de códigos base pequeño y en un libro de códigos virtual más grande, comprendiendo el libro de códigos virtual de conjuntos de filtros combinaciones de filtros seleccionados desde el libro de códigos base de conjuntos de filtros;
almacenar solamente el libro de códigos base y un algoritmo para sintetizar el libro de códigos virtual.
10. El método según la reivindicación 9, en donde el flujo binario codificado, incluye, además;
un segundo código de filtro de subpíxeles, que identifica un segundo filtro de compensación de movimiento adaptativo establecido dentro del libro de códigos; y
al menos un código de identificación de parte que permite al decodificador de vídeo identificar la parte de la trama de imagen codificada y una segunda parte de la trama de imagen codificada, que en particular comprende, además; durante la decodificación de la trama de vídeo codificada, el dispositivo decodificador de vídeo selecciona desde el libro de códigos el segundo conjunto de filtros de compensación de movimiento adaptativo identificado por el segundo código de filtro de subpíxeles;
utilizando el segundo conjunto de filtros de compensación de movimiento adaptativo, predecir una segunda pluralidad de bloques de contenido de imagen, correspondiendo la segunda pluralidad de bloques a al menos una segunda parte de la trama de imagen codificada; y
en donde la imagen decodificada se genera, además, de conformidad con la segunda pluralidad prevista de bloques de contenido de imagen.
11. El método según la reivindicación 9, que comprende, además, obtener una pluralidad de filtros de compensación de movimiento de posición entera.
12. El método según la reivindicación 11, en donde el flujo binario codificado comprende, además;
al menos un código de identificación de parte que permite al decodificador de vídeo identificar la parte de la trama de imagen codificada y una segunda parte de la trama de imagen codificada; y
un código de filtro de enteros que identifica uno de entre la pluralidad de filtros de compensación de movimiento de posición entera; y
un indicador de filtro de enteros que indica que el código de filtro de enteros está incluyendo en el flujo binario para al menos la segunda parte de la trama de vídeo, en particular que comprende, además, durante la decodificación de la trama de vídeo codificada;
la lectura del indicador de filtro de enteros y la selección, en respuesta, de entre la pluralidad de filtros de compensación de movimiento de posición entera, el filtro de compensación de movimiento de posición entera identificado por el código de filtro de enteros;
utilizando el filtro de compensación de movimiento de posición entera seleccionado, predecir una segunda pluralidad de bloques de contenido de imagen, correspondiendo la segunda pluralidad de bloques a al menos la segunda parte de la trama de imagen codificada; y
en donde la imagen decodificada se genera, además, de conformidad con la segunda pluralidad prevista de bloques de contenido de imagen.
13. El método según la reivindicación 11, en donde el libro de códigos comprende, además, la pluralidad de filtros de compensación de movimiento de posición entera o en donde obtener la pluralidad de filtros de compensación de movimiento de posición entera comprende obtener un libro de códigos de posición entera.
14. Un medio de almacenamiento no transitorio legible por ordenador que comprende instrucciones que, cuando son ejecutadas por un ordenador, hacen que el ordenador lleve a cabo el método según la reivindicación 1 o 9.
15. Un aparato de codificación de vídeo que comprende un procesador y un medio de almacenamiento que almacena instrucciones que, cuando son ejecutadas por el procesador, hacen que el aparato de codificación de vídeo lleve a cabo el método según la reivindicación 1 o un aparato de decodificación de vídeo que comprende un procesador y un medio de almacenamiento que almacena instrucciones que, cuando son ejecutadas por el procesador, hacen que el aparato de decodificación de vídeo lleve a cabo el método según la reivindicación 9.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/974,940 US8761245B2 (en) | 2010-12-21 | 2010-12-21 | Content adaptive motion compensation filtering for high efficiency video coding |
PCT/US2011/066666 WO2012088357A2 (en) | 2010-12-21 | 2011-12-21 | Content adaptive motion compensation filtering for high efficiency video coding |
Publications (1)
Publication Number | Publication Date |
---|---|
ES2845728T3 true ES2845728T3 (es) | 2021-07-27 |
Family
ID=46234397
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
ES11850066T Active ES2845728T3 (es) | 2010-12-21 | 2011-12-21 | Filtrado de compensación de movimiento adaptativo al contenido para codificación de vídeo de alta eficiencia |
Country Status (9)
Country | Link |
---|---|
US (2) | US8761245B2 (es) |
EP (2) | EP2656611B1 (es) |
JP (1) | JP5648183B2 (es) |
KR (1) | KR101535734B1 (es) |
CN (1) | CN103430545B (es) |
ES (1) | ES2845728T3 (es) |
HU (1) | HUE051906T2 (es) |
PL (1) | PL2656611T3 (es) |
WO (1) | WO2012088357A2 (es) |
Families Citing this family (55)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2360669A1 (en) * | 2010-01-22 | 2011-08-24 | Advanced Digital Broadcast S.A. | A digital video signal, a method for encoding of a digital video signal and a digital video signal encoder |
US8761245B2 (en) | 2010-12-21 | 2014-06-24 | Intel Corporation | Content adaptive motion compensation filtering for high efficiency video coding |
US10080016B2 (en) | 2011-01-14 | 2018-09-18 | Sony Corporation | Codeword space reduction for intra chroma mode signaling for HEVC |
US9232227B2 (en) | 2011-01-14 | 2016-01-05 | Sony Corporation | Codeword space reduction for intra chroma mode signaling for HEVC |
JP5670226B2 (ja) * | 2011-03-04 | 2015-02-18 | Kddi株式会社 | 動画像符号化装置、動画像符号化方法、およびプログラム |
ES2770437T3 (es) * | 2011-03-21 | 2020-07-01 | Lg Electronics Inc | Método para seleccionar un predictor de vector de movimiento y un dispositivo que lo utiliza |
US8767824B2 (en) | 2011-07-11 | 2014-07-01 | Sharp Kabushiki Kaisha | Video decoder parallelization for tiles |
US20130142251A1 (en) * | 2011-12-06 | 2013-06-06 | Sony Corporation | Syntax extension of adaptive loop filter in hevc |
US9154708B1 (en) | 2014-11-06 | 2015-10-06 | Duelight Llc | Image sensor apparatus and method for simultaneously capturing flash and ambient illuminated images |
US9167174B1 (en) | 2014-11-05 | 2015-10-20 | Duelight Llc | Systems and methods for high-dynamic range images |
US9167169B1 (en) | 2014-11-05 | 2015-10-20 | Duelight Llc | Image sensor apparatus and method for simultaneously capturing multiple images |
US9160936B1 (en) | 2014-11-07 | 2015-10-13 | Duelight Llc | Systems and methods for generating a high-dynamic range (HDR) pixel stream |
US9179085B1 (en) | 2014-11-06 | 2015-11-03 | Duelight Llc | Image sensor apparatus and method for obtaining low-noise, high-speed captures of a photographic scene |
US9137455B1 (en) * | 2014-11-05 | 2015-09-15 | Duelight Llc | Image sensor apparatus and method for obtaining multiple exposures with zero interframe time |
US9531961B2 (en) | 2015-05-01 | 2016-12-27 | Duelight Llc | Systems and methods for generating a digital image using separate color and intensity data |
US9918017B2 (en) | 2012-09-04 | 2018-03-13 | Duelight Llc | Image sensor apparatus and method for obtaining multiple exposures with zero interframe time |
US8976264B2 (en) | 2012-09-04 | 2015-03-10 | Duelight Llc | Color balance in digital photography |
US9179062B1 (en) | 2014-11-06 | 2015-11-03 | Duelight Llc | Systems and methods for performing operations on pixel data |
CN104704827B (zh) * | 2012-11-13 | 2019-04-12 | 英特尔公司 | 用于下一代视频的内容自适应变换译码 |
CN104885467B (zh) * | 2013-01-30 | 2018-08-17 | 英特尔公司 | 用于下一代视频编码的内容自适应参数变换 |
US9596481B2 (en) * | 2013-01-30 | 2017-03-14 | Ati Technologies Ulc | Apparatus and method for video data processing |
US9807322B2 (en) | 2013-03-15 | 2017-10-31 | Duelight Llc | Systems and methods for a digital image sensor |
US9819849B1 (en) | 2016-07-01 | 2017-11-14 | Duelight Llc | Systems and methods for capturing digital images |
US10558848B2 (en) | 2017-10-05 | 2020-02-11 | Duelight Llc | System, method, and computer program for capturing an image with correct skin tone exposure |
FR3016764B1 (fr) * | 2014-01-17 | 2016-02-26 | Sagemcom Broadband Sas | Procede et dispositif de transcodage de donnees video de h.264 vers h.265 |
US20160050442A1 (en) * | 2014-08-15 | 2016-02-18 | Samsung Electronics Co., Ltd. | In-loop filtering in video coding |
US10924688B2 (en) | 2014-11-06 | 2021-02-16 | Duelight Llc | Image sensor apparatus and method for obtaining low-noise, high-speed captures of a photographic scene |
US11463630B2 (en) | 2014-11-07 | 2022-10-04 | Duelight Llc | Systems and methods for generating a high-dynamic range (HDR) pixel stream |
US9589313B2 (en) * | 2015-01-09 | 2017-03-07 | Vixs Systems, Inc. | Dynamic range converter with pipelined architecture and methods for use therewith |
US9860504B2 (en) | 2015-01-09 | 2018-01-02 | Vixs Systems, Inc. | Color gamut mapper for dynamic range conversion and methods for use therewith |
US9558538B2 (en) * | 2015-01-09 | 2017-01-31 | Vixs Systems, Inc. | Dynamic range converter with frame by frame adaptation and methods for use therewith |
US9544560B2 (en) * | 2015-01-09 | 2017-01-10 | Vixs Systems, Inc. | Dynamic range converter with generic architecture and methods for use therewith |
US9560330B2 (en) * | 2015-01-09 | 2017-01-31 | Vixs Systems, Inc. | Dynamic range converter with reconfigurable architecture and methods for use therewith |
JP6642573B2 (ja) | 2015-06-24 | 2020-02-05 | ソニー株式会社 | 符号化装置、復号装置及び伝送制御方法 |
CN106331722B (zh) | 2015-07-03 | 2019-04-26 | 华为技术有限公司 | 图像预测方法和相关设备 |
RU2696314C1 (ru) | 2015-09-25 | 2019-08-01 | Хуавэй Текнолоджиз Ко., Лтд. | Устройство и способ компенсации движения в видео |
NZ741321A (en) | 2015-09-25 | 2019-10-25 | Huawei Tech Co Ltd | Adaptive sharpening filter for predictive coding |
KR102146436B1 (ko) | 2015-09-25 | 2020-08-20 | 후아웨이 테크놀러지 컴퍼니 리미티드 | 비디오 모션 보상을 위한 장치 및 방법 |
CN107925772B (zh) | 2015-09-25 | 2020-04-14 | 华为技术有限公司 | 利用可选插值滤波器进行视频运动补偿的装置和方法 |
CN108141603B (zh) | 2015-09-25 | 2020-12-15 | 华为技术有限公司 | 视频编解码方法及视频编解码器 |
EP3364653A4 (en) * | 2015-10-16 | 2019-07-10 | LG Electronics Inc. | FILTRATION METHOD AND DEVICE FOR IMPROVING THE PREDICTION IN A BILDCODING SYSTEM |
US10602176B2 (en) | 2016-04-15 | 2020-03-24 | Google Llc | Coding interpolation filter type |
CN114449163A (zh) | 2016-09-01 | 2022-05-06 | 迪尤莱特公司 | 基于焦点目标信息调整焦点的装置和方法 |
KR20200062365A (ko) * | 2016-10-04 | 2020-06-03 | 김기백 | 영상 데이터 부호화/복호화 방법 및 장치 |
WO2018123312A1 (ja) * | 2016-12-26 | 2018-07-05 | 日本電気株式会社 | 映像符号化方法、映像復号方法、映像符号化装置、映像復号装置及びプログラム |
EP3562152A4 (en) * | 2016-12-26 | 2020-01-15 | Nec Corporation | IMAGE CODING METHOD, IMAGE DECODING METHOD, IMAGE CODING DEVICE, IMAGE DECODING DEVICE AND PROGRAM |
US10455253B1 (en) * | 2017-02-28 | 2019-10-22 | Google Llc | Single direction long interpolation filter |
CN109040758A (zh) * | 2017-06-09 | 2018-12-18 | 晨星半导体股份有限公司 | 视频压缩方法及视频压缩装置 |
WO2020011024A1 (en) | 2018-07-12 | 2020-01-16 | Huawei Technologies Co., Ltd. | Boundary block partitioning in video coding |
JP7286757B2 (ja) | 2018-09-03 | 2023-06-05 | ホアウェイ・テクノロジーズ・カンパニー・リミテッド | 分割制約要素間の関係 |
KR102595146B1 (ko) | 2018-09-03 | 2023-10-26 | 후아웨이 테크놀러지 컴퍼니 리미티드 | 비디오 인코더, 비디오 디코더 및 그에 대응하는 방법 |
BR112021007681A2 (pt) | 2018-12-07 | 2021-07-27 | Samsung Electronics Co., Ltd. | método de decodificação de vídeo, aparelho de decodificação de vídeo, e método de codificação de vídeo |
EP3939275A4 (en) * | 2019-03-11 | 2022-06-22 | Telefonaktiebolaget Lm Ericsson (Publ) | VIDEO ENCODING WITH GOP-BASED TEMPORAL FILTRATION |
WO2021126017A2 (en) | 2020-04-29 | 2021-06-24 | Huawei Technologies Co., Ltd. | Method and apparatus of subsample interpolation filtering |
CN113727106B (zh) * | 2020-05-25 | 2024-03-26 | 腾讯科技(深圳)有限公司 | 视频编码、解码方法、装置、电子设备及存储介质 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6529634B1 (en) * | 1999-11-08 | 2003-03-04 | Qualcomm, Inc. | Contrast sensitive variance based adaptive block size DCT image compression |
EP1886502A2 (en) * | 2005-04-13 | 2008-02-13 | Universität Hannover | Method and apparatus for enhanced video coding |
US8208564B2 (en) * | 2005-06-24 | 2012-06-26 | Ntt Docomo, Inc. | Method and apparatus for video encoding and decoding using adaptive interpolation |
JP4516088B2 (ja) * | 2007-03-19 | 2010-08-04 | 日本電信電話株式会社 | 動き探索方法、動き探索装置、動き探索プログラムおよびそのプログラムを記録したコンピュータ読み取り可能な記録媒体 |
EP2048886A1 (en) * | 2007-10-11 | 2009-04-15 | Panasonic Corporation | Coding of adaptive interpolation filter coefficients |
US9077971B2 (en) * | 2008-04-10 | 2015-07-07 | Qualcomm Incorporated | Interpolation-like filtering of integer-pixel positions in video coding |
US8705622B2 (en) * | 2008-04-10 | 2014-04-22 | Qualcomm Incorporated | Interpolation filter support for sub-pixel resolution in video coding |
US8811484B2 (en) * | 2008-07-07 | 2014-08-19 | Qualcomm Incorporated | Video encoding by filter selection |
EP2157799A1 (en) | 2008-08-18 | 2010-02-24 | Panasonic Corporation | Interpolation filter with local adaptation based on block edges in the reference frame |
US8325796B2 (en) * | 2008-09-11 | 2012-12-04 | Google Inc. | System and method for video coding using adaptive segmentation |
US9078007B2 (en) * | 2008-10-03 | 2015-07-07 | Qualcomm Incorporated | Digital video coding with interpolation filters and offsets |
EP2262267A1 (en) * | 2009-06-10 | 2010-12-15 | Panasonic Corporation | Filter coefficient coding scheme for video coding |
US20120008686A1 (en) * | 2010-07-06 | 2012-01-12 | Apple Inc. | Motion compensation using vector quantized interpolation filters |
US9628821B2 (en) * | 2010-10-01 | 2017-04-18 | Apple Inc. | Motion compensation using decoder-defined vector quantized interpolation filters |
US8761245B2 (en) | 2010-12-21 | 2014-06-24 | Intel Corporation | Content adaptive motion compensation filtering for high efficiency video coding |
-
2010
- 2010-12-21 US US12/974,940 patent/US8761245B2/en active Active
-
2011
- 2011-12-21 ES ES11850066T patent/ES2845728T3/es active Active
- 2011-12-21 WO PCT/US2011/066666 patent/WO2012088357A2/en unknown
- 2011-12-21 EP EP11850066.9A patent/EP2656611B1/en active Active
- 2011-12-21 PL PL11850066T patent/PL2656611T3/pl unknown
- 2011-12-21 KR KR1020137017035A patent/KR101535734B1/ko active IP Right Grant
- 2011-12-21 EP EP17195262.5A patent/EP3285487A1/en active Pending
- 2011-12-21 JP JP2013544883A patent/JP5648183B2/ja active Active
- 2011-12-21 HU HUE11850066A patent/HUE051906T2/hu unknown
- 2011-12-21 CN CN201180061602.2A patent/CN103430545B/zh active Active
-
2014
- 2014-05-05 US US14/270,116 patent/US9100662B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
EP3285487A1 (en) | 2018-02-21 |
KR101535734B1 (ko) | 2015-07-24 |
PL2656611T3 (pl) | 2021-06-14 |
KR20130141630A (ko) | 2013-12-26 |
US20150078448A1 (en) | 2015-03-19 |
US9100662B2 (en) | 2015-08-04 |
WO2012088357A3 (en) | 2012-12-27 |
US20120155533A1 (en) | 2012-06-21 |
EP2656611A4 (en) | 2016-07-06 |
EP2656611A2 (en) | 2013-10-30 |
CN103430545B (zh) | 2017-03-01 |
EP2656611B1 (en) | 2020-12-02 |
JP2014504098A (ja) | 2014-02-13 |
WO2012088357A2 (en) | 2012-06-28 |
US8761245B2 (en) | 2014-06-24 |
CN103430545A (zh) | 2013-12-04 |
JP5648183B2 (ja) | 2015-01-07 |
HUE051906T2 (hu) | 2021-04-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
ES2845728T3 (es) | Filtrado de compensación de movimiento adaptativo al contenido para codificación de vídeo de alta eficiencia | |
US11729420B2 (en) | Intra-prediction method using filtering, and apparatus using the method | |
CN107710761B (zh) | 图像预测方法和相关设备 | |
JP7525178B2 (ja) | 適応的動きベクトル解像度を用いるビデオ信号処理方法及び装置 | |
KR102357575B1 (ko) | 비디오 이미지 인코딩 및 디코딩 방법, 장치 및 디바이스 | |
KR101677406B1 (ko) | 차세대 비디오용 비디오 코덱 아키텍처 | |
CN111656783B (zh) | 使用基于子块的运动补偿进行视频信号处理的方法和装置 | |
EP3087744B1 (en) | Projected interpolation prediction generation for next generation video coding | |
CN107409207B (zh) | 在内预测模式的基础上处理图像的方法及其装置 | |
KR20210093259A (ko) | 디코더측 모션 벡터 정제 | |
ES2269850T3 (es) | Redondeos del vector de movimiento de crominancia. | |
TWI520573B (zh) | 用於寫碼視訊資料之方法、器件及電腦可讀儲存媒體 | |
WO2020180685A1 (en) | Constraints on decoder-side motion vector refinement | |
TW201729595A (zh) | 針對視訊寫碼使用與位置相關之預測組合之改良視訊幀內預測 | |
TW201911863A (zh) | 用於360度視訊寫碼之參考圖推導及動作補償 | |
US20140050270A1 (en) | Method for managing a reference picture list, and apparatus using same | |
ES2905124T3 (es) | Dispositivo y método para procesar datos de video | |
EP2951998A1 (en) | Content adaptive predictive and functionally predictive pictures with modified references for next generation video coding | |
WO2015099823A1 (en) | Projected interpolation prediction generation for next generation video coding | |
KR20200005648A (ko) | 인트라 예측 모드 기반 영상 처리 방법 및 이를 위한 장치 | |
US20180359468A1 (en) | Image processing method on basis of inter prediction mode and apparatus therefor | |
JP3766686B2 (ja) | テレビ画像サブバンド両立式符号化用のコーダ |