ES2540583T3 - Método para interpolación de valor de subpíxeles - Google Patents
Método para interpolación de valor de subpíxeles Download PDFInfo
- Publication number
- ES2540583T3 ES2540583T3 ES02758498.6T ES02758498T ES2540583T3 ES 2540583 T3 ES2540583 T3 ES 2540583T3 ES 02758498 T ES02758498 T ES 02758498T ES 2540583 T3 ES2540583 T3 ES 2540583T3
- Authority
- ES
- Spain
- Prior art keywords
- unit
- pixel
- sub
- vertical
- horizontal
- 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.)
- Expired - Lifetime
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
- H04N19/59—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial sub-sampling or interpolation, e.g. alteration of picture size or resolution
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T3/00—Geometric image transformations in the plane of the image
- G06T3/40—Scaling of whole images or parts thereof, e.g. expanding or contracting
- G06T3/4007—Scaling of whole images or parts thereof, e.g. expanding or contracting based on interpolation, e.g. bilinear 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/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/80—Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Image Processing (AREA)
- Television Systems (AREA)
- Editing Of Facsimile Originals (AREA)
- Compression Of Band Width Or Redundancy In Fax (AREA)
Abstract
Un método de interpolación de una imagen, comprendiendo la imagen píxeles (A) dispuestos en filas y columnas y representados por valores que tienen un intervalo dinámico especificado, residiendo los píxeles (A) de las filas en posiciones horizontales de unidad y residiendo los píxeles (A) de las columnas en posiciones verticales de unidad, para generar valores para subpíxeles (b, c, d, e, f, g, h, i), estando situado un subpíxel (b, c, d, e, f, g, h, i) en al menos uno de una posición horizontal fraccionada y vertical fraccionada, pudiéndose representar las posiciones verticales fraccionarias y horizontales fraccionarias de acuerdo con la notación matemática 1/2X, donde x es un número entero positivo en el intervalo de 1 a N, representando 1/2X un nivel particular de interpolación de subpíxel y N representando un nivel máximo de interpolación de subpíxel, comprendiendo el método: a) interpolar valores para subpíxeles (b) situados en posiciones horizontales 1/2N-1 de unidad y verticales de unidad, y para subpíxeles (b) situados en las posiciones horizontales de unidad y verticales 1/2N-1 de unidad utilizando sumas ponderadas de píxeles (A) que residen en respectivas posiciones horizontales de unidad y verticales de unidad; b) interpolar un valor para un subpíxel (c) situado en una posición horizontal 1/2N-1 de unidad y vertical 1/2N-1 de unidad utilizando una primera suma ponderada de los valores interpolados para subpíxeles (b) que residen en posiciones horizontales 1/2N-1 de unidad y verticales de unidad o una segunda suma ponderada de los valores interpolados para subpíxeles (b) que residen en las posiciones horizontales de unidad y verticales 1/2N-1 de unidad obtenidas en la etapa a); y c) interpolar un valor para un subpíxel (h, i) situado en una posición horizontal 1/2N de unidad y vertical 1/2N de unidad utilizando: - una media ponderada del valor de un primer subpíxel (b) situado en una posición horizontal 1/2N-m de unidad y vertical 1/2N-n de unidad y el valor de un segundo subpíxel (b) situado en una posición horizontal 1/2N-p de unidad y vertical 1/2N-q de unidad, o - una media ponderada del valor de un píxel (A) situado en una de posición horizontal de unidad y vertical de unidad y el valor de un subpíxel (c) situado en una posición horizontal 1/2N-m de unidad y vertical 1/2N-n de unidad, tomando las variables m, n, p y q valores enteros en el intervalo de 1 a N, tal que los respectivos primer y segundo subpíxeles (b) o el respectivo píxel (A) y subpíxel (c) se encuentran en diagonal con respecto al subpíxel (h, i) en la posición horizontal 1/2N de unidad y vertical 1/2N de unidad que se interpola.
Description
DESCRIPCIÓN
Método para interpolación de valor de subpíxeles
La presente invención se refiere a un método para interpolación de valor de subpíxeles en la codificación y 5 decodificación de datos. Se refiere particularmente, pero no exclusivamente, a la codificación y decodificación de vídeo digital.
Antecedentes de la Invención
10
Las secuencias de video digital, como las imágenes en movimiento ordinarias grabadas en película, comprenden una secuencia de imágenes quietas, creándose la ilusión de movimiento por la exhibición de las imágenes una después de la otra a una velocidad de trama relativamente rápida, normalmente de 15 a 30 tramas por segundo. Debido a la velocidad de trama relativamente rápida, las imágenes en las tramas consecutivas tienden a ser muy similares y, por lo tanto, contienen una cantidad considerable de información redundante. Por ejemplo, una escena 15 típica puede comprender algunos elementos estacionarios, tales como el escenario de fondo, y algunas áreas en movimiento, que pueden adoptar muchas formas diferentes, por ejemplo, la cara de una persona que lee un periódico, tránsito en movimiento y así sucesivamente. Alternativamente, la cámara que graba la escena por sí misma puede estar en movimiento, en cuyo caso todos los elementos de la imagen tienen el mismo tipo de movimiento. En muchos casos, esto significa que el cambio global entre una trama de video y la siguiente es más 20 bien pequeño. Desde luego, esto depende de la naturaleza del movimiento. Por ejemplo, mientras más rápido es el movimiento, mayor es el cambio de una trama a la siguiente. De manera similar, si una escena contiene un número de elementos en movimiento, el cambio de una trama a la siguiente es probable que sea mayor que en una escena en donde sólo un elemento está en movimiento.
25
Se debe apreciar que cada trama de una secuencia de video digital original, es decir no comprimida, comprende una cantidad muy grande de información de imagen. Cada trama de la secuencia de video digital no comprimida está formada por una disposición de píxeles de imagen. Por ejemplo, en un formato de video digital comúnmente usado, conocido como el formato de intercambio común de un cuarto (QCIF), una trama comprende una disposición de 176 x 144 píxeles, en cuyo caso cada trama tiene 25.344 píxeles. A su vez, cada píxel está representado por cierto 30 número de bits, que llevan información acerca del contenido de luminancia y/o color de la región de la imagen correspondiente al píxel. Comúnmente, un denominado modelo de color YUV se usa para representar el contenido de luminancia y crominancia de la imagen. El componente de luminancia, o Y, representa la intensidad (brillo) de la imagen, mientras que el contenido de color de la imagen está representado por dos componentes de crominancia, marcados como U y V. 35
Los modelos de color basados en una representación de imagen/crominancia del contenido de imagen proporcionan ciertas ventajas comparadas con modelos de color que se basan en una representación que implica colores primarios (es decir, rojo, verde y azul, RGB). El sistema visual humano es más sensible a la variación de intensidad que a las variaciones de color; los modelos de color YUV explotan esta propiedad al usar una resolución espacial 40 más baja para los componentes de crominancia (U, V) que para el componente de luminancia (Y). De esta manera, la cantidad de información necesaria para codificar la información de color en una imagen puede reducirse con una reducción aceptable en calidad de imagen.
La resolución espacial más baja de los componentes de crominancia generalmente se logra por submuestreo. 45 Normalmente, un bloque de 16 x 16 píxeles de imagen está representado por un bloque de 16 x 16 píxeles que comprenden información de luminancia, y los componentes de crominancia correspondientes está representados cada uno por un bloque de 8 x 8 píxeles que representan un área de la imagen equivalente a los 16 x 16 píxeles del componente de luminancia. Los componentes de crominancia, por lo tanto, son submuestreados espacialmente por un factor de 2 en las direcciones x e y. El conjunto resultante de un bloque de luminancia de 16 x 16 píxeles y dos 50 bloques de crominancia de 8 x 8 píxeles comúnmente se refiere como un macrobloque de YUV o macrobloque, para brevedad.
Una imagen de QCIF comprende 11 x 9 macrobloques. Si los bloques de luminancia y los bloques de crominancia están representados con una resolución de 8 bits (es decir por números en el intervalo de 0 a 255), el número total 55 de bits requeridos para el macrobloque es (16 x 16 x 8) + 2 x (8 x 8 x 8) = 3072 bits. El número de bits necesarios para representar una trama de video en formato QCIF es, por lo tanto, de 99 x 3072 = 304.128 bits. Esto significa que la cantidad de datos requeridos para transmitir/grabar/exhibir una secuencia de video en formato QCIF, representado mediante el uso de un modelo de color YUV, a una velocidad de 30 tramas por segundo, es más de 9 Mbps (millones de bits por segundo). Esta es una velocidad de datos extremadamente alta y no es práctica para 60 usarse en aplicaciones de grabación, transmisión y exhibición de video debido a la capacidad de almacenamiento muy grande, la capacidad de canal de transmisión y el rendimiento de hardware requerido.
Si los datos de video han de ser transmitidos en tiempo real en una red de línea fija tal como una ISDN (Red Digital de Servicios Integrados) o una PSTN convencional (Red de Telefonía de Servicios Públicos), la amplitud de banda 65 de transmisión de datos disponible es normalmente del orden de 64kbits/s. En videotelefonía móvil, donde la
transmisión tiene lugar por lo menos en parte sobre un enlace de comunicaciones de radio, la amplitud de banda disponible puede ser tan baja como de 20kbits/s. Esto significa que una reducción significativa en la cantidad de información usada para representar datos de video se debe lograr para permitir la transmisión de secuencias de video digital en redes de comunicación de baja amplitud de banda. Por esta razón, se han desarrollado técnicas de compresión de video que reducen la cantidad de información transmitida mientras retienen una calidad de imagen 5 aceptable.
Los métodos de compresión de video se basan en la reducción de las partes redundantes y perceptualmente irrelevantes de secuencias de video. La redundancia en secuencias de video se puede categorizar en redundancia espacial, temporal y espectral. La "redundancia espacial" es el término usado para describir la correlación entre 10 píxeles vecinos dentro de una trama. El término "redundancia temporal" expresa el hecho de que los objetos que aparecen en una trama de una secuencia probablemente aparezcan en tramas posteriores, mientras que la "redundancia espectral" se refiere a la correlación entre diferentes componentes de color de la misma imagen.
La compresión suficientemente eficiente generalmente no se puede lograr reduciendo simplemente las formas 15 diversas de redundancia en una secuencia de imágenes dada. Por lo tanto, la mayoría de los codificadores de video actuales reducen la calidad de aquellas partes de la frecuencia de video que son subjetivamente las menos importantes. Además, la redundancia de la corriente de bits de video comprimido es por sí misma reducida mediante codificación de menos pérdida eficiente. Normalmente, esto se logra mediante el uso de una técnica conocida como "codificación de longitud variable" (VLC). 20
Estándares de compresión de video modernos, tales como las recomendaciones H.261, H.263 (+) (++), H.26L de la ITU-T y la recomendación MPEG-4 del Grupo de Expertos de Imágenes en Movimiento hacen uso de la "predicción temporal compensada en movimiento". Esta es una forma de reducción de redundancia temporal en la cual el contenido de algunas tramas (con frecuencia muchas) en una secuencia de video se "predice" a partir de otras 25 tramas en la secuencia al rastrear el movimiento de objetos o regiones de imágenes entre tramas.
Las imágenes comprimidas que no hacen uso de reducción de redundancia temporal generalmente se denominan tramas INTRA-codificadas o tramas-I, mientras que las imágenes temporalmente predichas se denominan tramas INTER-codificadas o tramas-P. En el caso de las tramas intercodificadas, la imagen predicha (compensada en 30 cuanto a movimiento) es rara vez lo suficientemente precisa para representar el contenido de imagen con cantidad suficiente y, por lo tanto, un error de predicción (PE) espacialmente comprimido está también asociado con cada trama intercodificada. Muchos esquemas de compresión de video también pueden hacer uso de tramas bidireccionalmente predichas, que comúnmente son denominadas como imágenes-B o tramas-B. Las imágenes-B son insertadas entre pares de imágenes de referencia o denominadas "de anclaje" (imágenes I o P) y son predichas 35 a partir de cualquiera o ambas de las imágenes de anclaje. Las imágenes-B no son usadas por sí mismas como imágenes de anclaje, es decir no predicen otras tramas a partir de las mismas, y por lo tanto pueden ser descartadas de la secuencia de video sin causar un deterioro en la calidad de imágenes futuras.
Los diferentes tipos de trama que se producen en una secuencia de video comprimida típica se ilustran en la figura 3 40 de los dibujos adjuntos. Como se puede ver a partir de la figura, la secuencia empieza con la trama intracodificada o trama I, 30. En la figura 3, las flechas 33 indican el proceso de predicción "hacia adelante", por el cual se forman las tramas-P (marcadas 34). El proceso de predicción bidireccional por el cual se forman las tramas B (36) se indica mediante las flechas 31a y 31b, respectivamente.
45
Un diagrama esquemático de un sistema de codificación de video de ejemplo que usa predicción compensada en cuanto a movimiento se muestra en las figuras 1 y 2. La figura 1 ilustra un codificador 10 que emplea compensación de movimiento y la figura 2 ilustra un decodificador 20 correspondiente. El codificador 10 mostrado en la figura 1 comprende un bloque de estimación de campo de movimiento 11, un bloque de codificación de campo de movimiento 12, un bloque de predicción compensada en cuanto a movimiento 13, un bloque de codificación de error 50 de predicción 14, un bloque de codificación de error de predicción 15, un bloque de multiplexión 16, una memoria de trama 17 y un agregador 19. El decodificador 20 comprende un bloque de predicción compensada en cuanto a movimiento 21. Un bloque de codificación de error de predicción 22, un bloque de desmultiplexión 23 y una memoria de trama 24.
55
El principio de operación de los codificadores de video que usan compensación de movimiento es reducir al mínimo la cantidad de información en una trama de error de predicción En(x,y), que es la diferencia entre una trama actual In(x,y) que se codificada y una trama de predicción Pn(x,y). La trama de error de predicción es, por lo tanto:
60
La trama de predicción Pn(x,y) se construye mediante el uso de valores de píxeles de una trama de referencia Rn(x,y), que es generalmente una de las tramas previamente codificadas y transmitidas, por ejemplo, la trama que precede inmediatamente a la trama actual y está disponible de la memoria de trama 17 del codificador 10. Más específicamente, la trama de predicción Pn(x,y) se construye al encontrar los llamados "píxeles de predicción" en la 65
trama de referencia Rn(x,y) que corresponden sustancialmente con píxeles en la trama actual. La información de movimiento, que describe la relación (por ejemplo, localización relativa, rotación, escala, etc.) entre píxeles en la trama actual y sus píxeles de predicción correspondientes en la trama de referencia se deriva y la trama de predicción se construye al mover los píxeles de predicción de acuerdo con la información de movimiento. De esta manera, la trama de predicción se construye como una representación aproximada de la trama actual, mediante el 5 uso de valores de píxeles en la trama de referencia. La trama de error de predicción referida anteriormente, por lo tanto, representa la diferencia entre la representación aproximada de la trama actual proporcionada por la trama de predicción y la trama misma actual. La ventaja básica proporcionada por los codificadores de video que usan predicción compensada en cuanto a movimiento surge del hecho de que la descripción comparativamente compacta de la trama actual se puede obtener al representarlo en términos de la información de movimiento requerida para 10 formar su predicción junto con la información de error de predicción asociada en la trama de error de predicción.
Sin embargo, debido al número muy grande de píxeles en una trama, generalmente no es eficiente transmitir información de movimiento separada para cada píxel al decodificador. En lugar de ello, en la mayoría de los esquemas de codificación de video, la trama actual se divide en grandes segmentos de imagen Sk y la información 15 de movimiento relacionada con los segmentos es transmitida al decodificador. Por ejemplo, la información de movimiento se proporciona normalmente mediante cada monobloque de una trama y la misma información de movimiento se usa después para todos los píxeles dentro del macrobloque. En algunos estándares de codificación de video, tales como H.26L, un macrobloque se puede dividir en bloques más pequeños, cada bloque más pequeño estando provisto de su propia información de movimiento. 20
La información de movimiento generalmente adopta la forma de vectores de movimiento [x(x,y), y(x,y)]. El par de números x(x,y) y y(x,y) representan los desplazamientos horizontal y vertical de un píxel en el sitio (x,y) en la trama actual ln(x,y) con respecto a un píxel en la trama de referencia Rn(x,y). Los vectores de movimiento [x(x,y), y(x,y)] se calculan en el bloque de estimación de campo de movimiento 11 y el conjunto de vectores de movimiento 25 de la trama actual [x(·), y(·)] se refiere como el campo de vector de movimiento.
Normalmente, la posición de un macrobloque en una trama de video actual se especifica mediante la coordenada (x,y) de su esquina izquierda superior. Por lo tanto, en un esquema de codificación de video en el cual la información de movimiento está asociada con cada macrobloque de una trama, cada vector de movimiento describe el 30 desplazamiento horizontal y vertical x(x,y) y y(x,y) de un píxel que representa la esquina superior izquierda de un macrobloque en la trama actual ln(x,y) con respecto a un píxel en la esquina superior izquierda de un bloque sustancialmente correspondiente de píxeles de predicción en la trama de referencia Rn(x,y) (como se muestra en la figura 4b).
35
La estimación de movimiento es una tarea computacionalmente intensiva. Dada una trama de referencia Rn(x,y) y, por ejemplo, un macrobloque cuadrado que comprende N x N píxeles en una trama actual (como se muestra en la figura 4a), el objetivo de estimación de movimiento es encontrar un bloque de N x N píxeles en la trama de referencia que coincida con las características del macrobloque en la imagen actual de acuerdo con cierto criterio. El criterio puede ser, por ejemplo, una suma de diferencias absolutas (SAD) entre los píxeles del macrobloque en la 40 trama actual y el bloque de píxeles en la trama de referencia con la que se compara. Este proceso es generalmente conocido como "coincidencia de bloques". Debe indicarse que, en general, la geometría del bloque que ha de coincidir y la de la trama de referencia no tienen que ser la misma, ya que los objetos del mundo real pueden sufrir cambios de escala, así como rotación y trama. Sin embargo, en estándares de codificación de video internacionales actuales, sólo se usa un modelo de movimiento de translación (véase más adelante) y, por lo tanto, la geometría 45 rectangular fija es suficiente.
De manera ideal, para lograr la mejor probabilidad de encontrar una coincidencia, se debe buscar la trama de referencia en conjunto. Sin embargo, esto no es práctico, ya que impone una carga computacional demasiado alta sobre el codificador de video. En lugar de ello, la región de búsqueda se restringe a la región [-p,p] alrededor de la 50 posición original del macrobloque en la trama actual, como se muestra en la figura 4c.
Para reducir la cantidad de información de movimiento que ha de ser transmitida desde el codificador 10 al codificador 20, el campo de vector de movimiento es codificado en el bloque de codificación de campo de movimiento 12 del codificador 10, representándolo con un modelo de movimiento. En este proceso, los vectores de 55 movimiento de segmentos de imagen son expresados nuevamente mediante el uso de ciertas funciones predeterminadas o, en otras palabras, el campo de vector de movimiento representado con un modelo. Casi todos los modelos de campo de vector de movimiento actualmente usados son modelos de movimiento aditivos, que cumplen con la siguiente fórmula general:
60
donde los coeficientes ai y bi se denominan coeficientes de movimiento. Los coeficientes de movimiento son transmitidos al decodificador 20 (corriente de información 2 en las figuras 1 y 2). Las funciones fi y gi se denominan funciones de base de campo de movimiento, y se conocen tanto para el codificador como para el decodificador. Un 5 campo de vector de movimiento aproximado se puede construir mediante el uso de coeficientes y las funciones de base. Puesto que las funciones de base se conocen (es decir, almacenadas en) para el codificador 10 y el decodificador 20, sólo los coeficientes de movimiento necesitan ser transmitidos al codificador, lo que reduce así la cantidad de información requerida para representar la información de movimiento de la trama.
10
El modelo de movimiento más simple es el modelo de movimiento de traslación que requiere sólo dos coeficientes para describir los vectores de movimiento de cada segmento. Los valores de vectores de movimiento están dados por:
15
Este modelo se usa ampliamente en varios estándares internacionales (ISO MPEG-1, MPEG-2, MPEG-4, recomendaciones H.261 y H.263) de ITU-T) para describir los bloques de 16 x 16 y 8 x 8 píxeles. Los sistemas que usan un modelo de movimiento de traslación normalmente realizan una estimación de movimiento a una resolución de píxeles completa o alguna fracción integral de resolución de píxeles completa, por ejemplo, a la mitad o a un 20 cuarto de la resolución de píxeles.
La trama de predicción Pn(x,y) se construye en el bloque de predicción compensado en cuanto a movimiento 13 en el codificador 10 y está dada por:
25
En el bloque de codificación de error de predicción 14, la trama de error de predicción En(x,y) es normalmente comprimida al representarla como una serie finita (transformada) de algunas funciones bidimensionales. Por ejemplo, se puede usar una transformada de coseno discreta bidimensional (DTC). Los coeficientes de la 30 transformada se cuantifican y la entropía (por ejemplo, de Huffman) se codifican antes de que sean transmitidas al decodificador (corriente de información 1 en las figuras 1 y 2). Debido al error introducido por cuantificación, esta operación generalmente produce cierta degradación (pérdida de información) en la trama de error de predicción En(x,y). Para compensar esta degradación, el codificador 10 también comprende un bloque de codificación de error de predicción 15, donde una trama de error de predicción decodificada se construye mediante el uso de 35 coeficientes de transformación. La trama de error de predicción localmente decodificada se añade a la trama de predicción Pn(x,y) en el agregador 19 y la trama actual decodificada resultante se almacena en la memoria de trama 17 para su uso posterior como la siguiente trama de referencia Rn+1(x,y).
La corriente de información 2 que lleva información acerca de los vectores de movimiento se combina con 40 información acerca del error de predicción en el multiplexor 16 y una corriente de información 3 que contiene normalmente por lo menos esos dos tipos de información es enviada al decodificador 20.
La operación del decodificador de video 20 correspondiente se describirá ahora. La memoria de trama 24 del decodificador 20 almacena una trama de referencia Rn(x,y) previamente reconstruida. La trama de predicción Pn(x,y) 45 se construye en el bloque de predicción compensado en cuanto a movimiento 21 del decodificador 20 de acuerdo con la ecuación 5, mediante el uso de información de coeficiente de movimiento recibida y valores de píxeles de la trama de referencia previamente reconstruida Rn(x,y). Los coeficientes de transformación transmitidos de la trama de error de predicción En(x,y) se usan en el bloque de decodificación de error de predicción 22 para construir la trama de error de predicción decodificada Los píxeles de la trama actual decodificada son después 50 reconstruidos al agregar la trama de predicción Pn(x,y) y la trama de error de predicción decodificado
Esta trama actual decodificada puede ser almacenada en la memoria de trama 24 como la siguiente trama de referencia Rn+1(x,y).
En la descripción de codificación y decodificación compensada en cuanto a movimiento de video digital presentado anteriormente, el vector de movimiento [x(x,y), y(x,y)] que describe el movimiento de un macrobloque en la trama 5 actual con respecto a la trama de referencia Rn(x,y) puede indicar a cualquiera de los píxeles en la trama de referencia. Esto significa que el movimiento entre tramas de una secuencia de video digital sólo puede ser representado a una resolución que se determina por los píxeles de imagen en la trama (denominada resolución de píxeles completa). Sin embargo, el movimiento real tiene precisión arbitraria y, por lo tanto, el sistema anteriormente descrito sólo puede proporcionar una modelación aproximada del movimiento entre tramas sucesivas de una 10 secuencia de video digital. Normalmente, el modelaje de movimiento entre tramas de video con resolución de píxeles completa no es suficientemente exacta para permitir una reducción al mínimo eficiente de la información de error de predicción (PE) asociada con cada macrobloque/trama. Por lo tanto, para permitir un modelaje más exacto del movimiento real y para ayudar a reducir la cantidad de información de PE que debe ser transmitida desde el codificador al decodificador, muchos estándares de codificación de video, tales como H.263 (+)(++) y H.2611, 15 permiten que los vectores de movimiento indiquen "entre" píxeles de imagen. En otras palabras, los vectores de movimiento pueden tener resolución de "subpíxeles". El permitir que los vectores de movimiento tengan resolución de subpíxeles se agrega a la complejidad de las operaciones de codificación y de decodificación que deben realizarse, por lo que es aún ventajoso limitar el grado de resolución espacial que pueda tener un vector de movimiento. Por lo tanto, los estándares de codificación de video, tales como aquellos anteriormente mencionados, 20 normalmente sólo permiten vectores de movimiento que tienen resolución de píxel completo, medio píxel o un cuarto de píxel.
La estimación de movimiento con resolución de subpíxeles generalmente se realiza como un proceso de dos etapas, como se ilustra en la figura 5, para un esquema de codificación de video que permite que los vectores de 25 movimiento tengan resolución de píxel completo o de medio píxel. En la primera etapa, un vector de movimiento que tiene resolución de píxel completo se determina usando cualquier esquema de estimación de movimiento apropiado, tal como el proceso de coincidencia de bloques descrito anteriormente. El vector de movimiento resultante, que tiene resolución de píxel completo se muestra en la figura 5.
30
En la segunda etapa, el vector de movimiento determinado en la primera etapa se refina para obtener la resolución de medio píxel deseada. En el ejemplo ilustrado en la figura 5, esto se hace al formar ocho bloques de búsqueda nuevos de 16 x 16 píxeles, la posición de la esquina superior izquierda de cada bloque es marcada con una X en la figura 5. Estas posiciones se indican como [x+ m/2, y + n/2], en donde m y n pueden adoptar los valores de -1, 0 y +1, pero no pueden ser cero al mismo tiempo. Como sólo se conocen los valores de píxeles de píxeles de imagen 35 original, los valores (por ejemplo valores de luminancia y/o crominancia) de los subpíxeles que residen en posiciones de medio píxel se deben estimar para cada uno de los ocho bloques de búsqueda nuevos, al usar alguna forma de esquema de interpolación.
Una vez que se han interpolado los valores de los subpíxeles a una resolución de medio píxel, cada uno de los ocho 40 bloques de búsqueda se compara con el macrobloque cuyo vector de movimiento se busca. Como en el procedimiento de coincidencia de bloques realizado para determinar el vector de movimiento con resolución de píxel completo, el macrobloque se compara con cada uno de los ocho bloques de búsqueda de acuerdo con cierto criterio, por ejemplo, un SAD. Como resultado de las comparaciones, generalmente se obtendrá un valor de SAD mínimo. Según la naturaleza del movimiento en la secuencia de video, este valor mínimo puede corresponder a la posición 45 especificada por el vector de movimiento original (que tiene resolución de píxel completo) o puede corresponder a una posición que tiene una resolución de medio píxel. Por lo tanto, es posible determinar si un vector de movimiento debe indicar a una posición de píxel completo o subpíxel y si una resolución de subpíxel es apropiada, para determinar el vector de movimiento de resolución de subpíxel correcto. También se debe apreciar que el esquema apenas descrito se puede extender a otras resoluciones de subpíxel (por ejemplo, una resolución de un cuarto de 50 píxel) de una manera completamente análoga.
En la práctica, la estimación de un valor de subpíxel en la trama de referencia se realiza al interpolar el valor del subpíxel a partir de los valores de píxel circundantes. En general, la interpolación de un valor de subpíxel F(x,y) situado en una posición no entera (x, y) = (n + x, m + y), se puede formular como una operación bidimensional, 55 representada matemáticamente como:
donde f(k,l) son coeficientes de filtro y n y m se obtienen al truncar x e y, respectivamente, a valores enteros. 60 Normalmente, los coeficientes de filtro dependen de los valores de x e y, y los filtros de interpolación generalmente se denominan "filtros separables", en cuyo caso el valor de subpíxel F(x,y) se puede calcular como sigue:
Los vectores de movimiento se calculan en el codificador. Una vez que los coeficientes de movimiento correspondientes son transmitidos al decodificador, es un asunto directo interpolar los subpíxeles requeridos mediante el uso de un método de interpolación idéntico al usado en el codificador. De esta manera, una trama que 5 sigue a una trama de referencia en la memoria de trama 24, puede ser reconstruido a partir de la trama de referencia y los vectores de movimiento.
La manera más simple de aplicar interpolación de valor de subpíxel en un codificador de video es interpolar cada valor de subpíxel cada vez que es necesario. Sin embargo, esta no es una solución eficiente en un codificador de 10 video, ya que es probable que el mismo valor de subpíxel se requerirá varías veces y por lo tanto los cálculos para interpolar el mismo valor de subpíxel se realizará múltiples veces. Esto da por resultado un incremento innecesario de complejidad/carga computacional en el codificador.
Un enfoque alternativo, que limita la complejidad del codificador, es calcular previamente y almacenar todos los 15 valores de subpíxel en una memoria asociada con el codificador. Esta solución se denomina interpolación "de antemano" de aquí en adelante en este documento. Aunque se limita la complejidad, la interpolación de antemano tiene el inconveniente de incrementar el uso de memoria en un gran margen. Por ejemplo, si la exactitud del vector de movimiento es un cuarto de píxel tanto en dimensión horizontal como vertical, el almacenamiento de valores de subpíxel precalculados para una imagen completa da por resultado un uso de memoria que es 16 veces la requerida 20 para almacenar imagen no interpolada original. Además, implica el cálculo de algunos subpíxeles que podrían no ser realmente requeridos en el cálculo de vectores de movimiento en el codificador. La interpolación de antemano también es particularmente ineficiente en un decodificador de video, ya que la mayoría de los valores de subpíxelse calculas previamente nunca serán requeridos por el decodificador. Por lo tanto, es ventajoso no usar cálculo previo en el decodificador. 25
La denominada interpolación "bajo demanda" se puede usar para reducir requerimientos de memoria en el codificador. Por ejemplo, si la precisión de píxeles deseada es una resolución de un cuarto de píxel, sólo subpíxeles a una resolución de unidad de un medio se interpolarán de antemano para la trama completa y se almacenarán en la memoria. Los valores de subpíxeles de resolución de un cuarto de píxel sólo se calculan durante el proceso de 30 estimación/compensación de movimiento según y cuando se requiera. En este caso, el uso de memoria es sólo 4 veces el requerido para almacenar la imagen original, no interpolada.
Debe indicarse que cuando se usa la interpolación de antemano, el proceso de interpolación constituye sólo una pequeña fracción de la complejidad/carga computacional total del codificador, ya que cada píxel es interpolado 35 apenas una vez. Por lo tanto, en el codificador, la complejidad del proceso de interpolación mismo no es muy crítica cuando se usa la interpolación de valor de subpíxeles de antemano. Por otra parte, la interpolación bajo demanda posee una carga computacional mucho mayor en el codificador, ya que los subpíxeles pueden ser interpolados muchas veces. Por lo tanto, la complejidad de proceso de interpolación, que se puede considerar en términos del número de operaciones computacionales o ciclos operacionales que se deban realizar para interpolar los valores de 40 subpíxeles, se vuelven una consideración importante.
En el decodifícador, los mismos valores de subpíxeles se usan unas cuantas veces cuando mucho y algunos no son necesarios en absoluto. Por lo- tanto en el decodificador es ventajoso no usar interpolación de antemano en absoluto, es decir, es ventajoso no calcular previamente cualesquiera valores de subpíxeles. 45
Dos esquemas de interpolación han sido desarrollados como parte del trabajo en curso en el Sector de Estandarización de Telecomunicaciones de ITU-T, Grupo de Estudio 16, Grupo de Expertos de Codificación de Video (VCEG), Preguntas 6 y 15. Estos enfoques se proponen para incorporar en la recomendación H.26L de ITU-T y se han implementado en valores de prueba (TML) para los propósitos de evaluación y desarrollo posterior. El 50 modelo de prueba correspondiente a la Pregunta 15 se refiere como Modelo de Prueba 5 (TML5), el que resulta de la Pregunta 6 se conoce como Modelo de Prueba 6 (TML6). Los esquemas de interpolación propuestos en TML5 y TML6 no se describirán.
En toda la descripción del esquema de interpolación de valores de subpíxel usado en el modelo de prueba TML5, se 55 hará referencia a la figura 12a, que define una notación para describir posiciones de píxeles y subpíxeles específicas para TML5. Una notación separada, definida en la figura 13a, se usará en la discusión del esquema de interpolación de valor de subpíxeles usado en TML6. Una notación adicional, ilustrada en la figura 14a, se usará posteriormente en el texto en conexión con el método de interpolación de valor de subpíxeles de acuerdo con la invención. Se apreciará que las tres notaciones diferentes usadas en el texto pretenden ayudar a entender cada método de 60 interpolación y ayudar a distinguir diferencias entre los mismos. Sin embargo, en todas las tres figuras, la letra A se usa para indicar píxeles de imagen original (resolución de píxeles completos). De manera más específica, la letra A representa la posición de píxeles en los datos de imagen que representan una imagen de una secuencia de video, los valores de píxeles de los píxeles A son recibidos como trama actual In(x,y) de una fuente de video, o
reconstruidos y almacenados como una trama de referencia Rn(x,y) en la Memoria de Trama 17, 24 del codificador 10 o el decodificador 20. Todas las demás letras representan posiciones de subpíxeles, los valores de los subpíxeles situados en las posiciones de subpíxeles se obtienen por interpolación.
Algunos otros términos también se usarán de una manera consistente en todo el texto para identificar posiciones 5 particulares de píxeles y subpíxeles. Estas son las siguientes:
El término "posición horizontal de unidad" se usa para describir la posición de cualquier subpíxel que se construye en una columna de los datos de imagen original. Los subpíxeles c y e en las figuras 12a y 13a, así como los subpíxeles b y e en la figura 14a tienen posiciones horizontales de unidad. 10
El término "posición vertical de unidad" se usa para describir cualquier subpíxel que es construido en una fila de los datos de imagen original. Los subpíxeles b y d en las figuras 12a y 13a así como los subpíxeles b y d en la figura 14a tienen posiciones verticales de unidad.
15
Por definición, los píxeles A tienen posiciones horizontales de unidad y verticales de unidad.
El término "posición horizontal de medio" se usa para describir la posición de cualquier subpíxel que es construido en una columna que está a una resolución de medio píxel. Los subpíxeles b, c, y e mostrados en las figuras 12a y 13a caen en esta categoría, y también los subpíxeles b, c y f de la figura 14a. De una manera similar el término 20 "posición vertical de medio" se usa para describir la posición de cualquier subpíxel que es construido en una fila que está a una resolución de medio píxel, tal como los subpíxeles c y d en las figuras 12a y 13a, así como los subpíxeles b, c y g en la figura 14a.
Además, el término "posición horizontal de un cuarto" se refiere a cualquier subpíxel que es construido en una 25 columna que está a una resolución de un cuarto de píxel, tal como subpíxeles e y d en la figura 12a, subpíxeles d y g en la figura 13a y subpíxeles d, g y h en la figura 14a. De manera análoga, el término "posición vertical de un cuarto" se refiere a subpíxeles que están construidos en una fila que está a una resolución de un cuarto de píxel. En la figura 12a, los subpíxeles e y f caen en esta categoría y también lo son los subpíxeles e, f y g en la figura 13a y los subpíxeles e, f y h en la figura 14a. 30
La definición de cada uno de los términos anteriormente descritos se muestra mediante "sobres" dibujados en las figuras correspondientes.
Debe indicarse además que a menudo es conveniente indicar un píxel particular con una referencia bidimensional. 35 En este caso, la referencia bidimensional apropiada se puede obtener al examinar la intersección de los sobres en las figuras 12a, 13a y 14a. Al aplicar este principio, el píxel d en la figura 12a, por ejemplo, tiene una posición horizontal de medio y vertical de medio y el subpíxel e tiene una posición horizontal de unidad y vertical de un cuarto. Además y para facilidad de referencia, los subpíxeles que residen en posiciones horizontales de mitad de unidad y verticales de unidad, posiciones horizontales de unidad y verticales de mitad de unidad así como 40 posiciones horizontales de mitad de unidad y verticales de mitad de unidad, se referirán como subpíxeles de resolución de 1/2. Los subpíxeles que residen en cualquier posición horizontal de un cuarto de unidad y/o posición vertical de un cuarto de unidad se referirán como subpíxeles de resolución de 1/4.
Debe indicarse también que las descripciones de los dos modelos de prueba y en la descripción detallada de la 45 invención misma, se supondrá que los píxeles tienen un valor mínimo de cero y un valor máximo de 2n - 1 donde n es el número de bits reservados para un valor de píxel. El número de bits es normalmente de 8. Después de que un subpíxel ha sido interpolado, si el valor del subpíxel interpolado excede el valor de 2n - 1 se restringe al intervalo de [0, 2n – 1], es decir, valores menores que el valor permitido mínimo serán el valor mínimo (0) y valores mayores que el máximo serán el valor máximo (2n - 1). Esta operación se denomina de recorte. 50
El esquema de interpolación de valor de subpíxel de acuerdo con TML5 se describirá ahora con detalle con referencia a las figuras 12a, 12b y 12c.
1. El valor para el subpíxel en una posición horizontal de media unidad y posición vertical de unidad, es decir 55 subpíxel (b) de resolución 1 en la figura 12a, se calcula mediante el uso de un filtro de seis ramas. El filtro interpola un valor para subpíxel b de resolución de .1 con los valores de los 6 píxeles (A1 a A6) situados en una fila en posiciones horizontales de unidad y posiciones verticales de unidad simétricamente alrededor de b, como se muestra en la figura 12b, de acuerdo con la fórmula b = (A1 - 5A2 + 20A3 + 20A4 - 5A5 + A6 + 16)/32. El operador / indica división con truncamiento. El resultado es recortado para quedar en el intervalo [0, 60 2n - 1].
2. Los valores para subpíxeles de resolución de marcados con c se calculan mediante el uso del mismo filtro de de seis ramas que se usa en la etapa 1 y los seis píxeles o subpíxeles más cercanos (A o b) en la dirección vertical. Con referencia ahora a la figura 12c, el filtro interpola un valor para el subpíxel c de 65 resolución de ½ ubicada en la posición horizontal de unidad y la posición vertical de medio con base en los
valores de los 6 píxeles (A1 a A6) situados en una columna en posiciones horizontales de unidad y posiciones verticales de unidad simétricamente alrededor de c, de acuerdo con la fórmula c = (A1 - 5A2 + 20A3 + 20A4 - 5A5 + A6 +16)/32. De manera similar un valor para el subpíxel c de resolución de en la posición horizontal de medio y vertical de medio se calcula de acuerdo con c = (b1 - 5b2 + 20b3 + 20b4 - 5b5 + b6 + 16)/32. Nuevamente, el operador / indica división con truncamiento. Los valorse calculas para los subpíxeles c son 5 además recortados para quedar en el intervalo [0, 2n - 1].
En este punto en el proceso de interpolación los valores de todos los subpíxeles de resolución ½ se han calculado y el proceso procede al cálculo de valores de subpíxeles de resolución 1/4.
3. Los valores para los subpíxeles de resolución 1/4 marcados con la letra d se calculan mediante el uso de 10 interpolación lineal y los valores de los píxeles más cercanos / o subpíxeles de resolución ½ en la dirección horizontal. De manera más específica, los subpíxeles de resolución 1/4 en las posiciones horizontales de un cuarto y verticales de unidad, se calculan al tomar el promedio del píxel inmediatamente vecino en una posición de unidad y vertical de unidad (píxel A) y el subpíxel de resolución ½ inmediatamente vecino en la posición horizontal de medio y horizontal de unidad (subpíxel b), es decir, de acuerdo con d = (A + b)/2. Los 15 valores para subpíxeles d de resolución ¼ ubicados en posiciones horizontales de un cuarto y verticales de medio, se calculan al tomar un medio de los subpíxeles c de resolución 1/2 inmediatamente vecinos que están en una posición horizontal de unidad y vertical, media y en posiciones horizontales de medio y verticales de medio respectivamente, es decir, de acuerdo con d = (c1 + c2)/2. Nuevamente, el operador / indica división con truncamiento. 20
4. Los valores para los subpíxeles de resolución de 1/4 marcados con la letra e se calculan usando interpolación lineal y los valores de los subpíxeles más cercanos y / o subpíxeles de resolución de 1/2 en la dirección vertical. En
particular, los subpíxeles e de resolución 1/4 en posiciones horizontales de unidad y verticales de un cuarto 25 se calculan al tomar el promedio del píxel inmediatamente vecino en la posición horizontal de unidad y posición vertical de unidad (píxel A) y el subpíxel inmediatamente vecino en la posición horizontal de unidad y vertical de medio (subpíxel c) de acuerdo con e = (A + c)/2. Los subpíxeles e3 de resolución ¼ en las posiciones horizontales de medio y verticales de un cuarto se calculan al tomar el promedio del subpíxel inmediatamente vecino y en la posición horizontal de medio y vertical de unidad (subpíxel b) y el subpíxel 30 inmediatamente vecino en la posición horizontal de medio y vertical de medio (subpíxel c), de acuerdo con e = (b + c)/2. Además, los subpíxeles e de resolución de 1/4 en posiciones horizontales de un cuarto y verticales de un cuarto se calculan al tomar el promedio de los subpíxeles inmediatamente vecinos en la posición horizontal de un cuarto y vertical de unidad y el subpíxel correspondiente en la posición horizontal de un cuarto y vertical de medio (subpíxeles d), de acuerdo con e = (d1 + d2)/2. Una vez más, el operador / indica 35 división con truncamiento.
5. El valor para el subpíxel f de resolución de 1/4 es interpolado al promediar los valores de los 4 valores de píxeles más cercanos en las posiciones horizontales y verticales de unidad, de acuerdo con f = (A1 + A2 + A3 + A4 + 2)/4, donde los píxeles A1, A2, A3 y A4 son los cuatro píxeles originales más cercanos. 40
Un inconveniente de TML5 es que el decodificador es computacionalmente complejo. Esto resulta del hecho de que TML5 utiliza un enfoque en el cual la interpolación de valores de subpíxeles de resolución de 1/4 depende de la interpolación de valores de subpíxeles de resolución de 1/2. Esto significa que para interpolar los valores de los subpíxeles de resolución 1/4, los valores de los subpíxeles de resolución 1/2 de los cuales se determinaron se deben 45 calcular primero. Además, dado que los valores de algunos de los subpíxeles de resolución 1/4 dependen de los valores interpolados obtenidos por otros subpíxeles de resolución de 1/4, el truncamiento de los valores de subpíxeles de resolución 1(4 tiene un efecto negativo sobre la precisión de algunos de los valores de subpíxeles de resolución de 1/4. Específicamente, los valores de subpíxeles de resolución de 1/4 son menos precisos de lo que sería si se calculara a partir de los valores que no han sido truncados y recortados. Otro inconveniente de TML5 es 50 que es necesario almacenar los valores de los subpíxeles de resolución de 1/2 para interpolar los valores de subpíxeles de resolución de 1/4. Por lo tanto, se requiere un exceso de memoria para almacenar un resultado que no es finalmente requerido.
El esquema de interpolación de valor de subpíxel de acuerdo con TML6, referido aquí como interpolación directa, se 55 describirá ahora. En el codificador del método de interpolación de acuerdo con TML6 funciona como el método de interpolación de TML5 descrito anteriormente, excepto que la precisión máxima es retenida en todas partes. Esto se logra al usar valores intermedios que no son redondeados ni recortados. Una descripción paso a paso del método de interpolación de acuerdo con TML6 como se aplica en el codificador se da más adelante con referencia a las figuras 13a, 13b y 13c. 60
1. El valor para el subpíxel en la posición horizontal y media unidad y vertical de unidad, es decir, el subpíxel b de resolución M en la figura 13a, se obtiene al calcular primero un valor calculado b mediante el uso de un filtro de seis ramas. El filtro calcula b, con base en los valores de los 6 píxeles (A1 a A6) situados en una fila en posiciones horizontales de unidad y posiciones verticales de unidad simétricamente alrededor de b, como se 65 muestra en la figura 13b, de acuerdo con la fórmula b = (A1 - 5A2 + 20A3 + 20A4 - 5A5 + A6). El valor final de b
se calcula entonces como b (b + 16)/32 y se recorta para estar en el intervalo [0, 2n -1]. Igual que antes, el operador / indica división con truncamiento.
2. Los valores para los subpíxeles de resolución marcados con la letra c se obtienen de calcular primero los valores intermedios c. Con referencia a la figura 13c, un valor intermedio c para el subpíxel c de resolución 1/2 ubicado en la posición horizontal de unidad y vertical de medio se calcula con base en los valores de 6 píxeles 5 (A1 a A5) situados en una columna en posiciones horizontales de unidad y posiciones verticales de unidad simétricamente alrededor de c, de acuerdo con la fórmula c = (A1 - 5A2 + 20A3 + 20A4 - 5A5 + A6). El valor final para el subpíxel c de resolución de ½ ubicado en una posición horizontal de unidad y vertical de medio se calcula de acuerdo con c = (c + 16)/32. De manera similar, un valor intermedio c para el subpíxel c de resolución de en la posición horizontal de medio y vertical de medio de acuerdo con c = (b1 - 5b2 + 20b3 + 20b4 10 - 5b5 + b6). Un valor final para este subpíxel c de resolución de ½ se calcula después de acuerdo con (c + 512)/1024. Nuevamente, el operador / indica división con truncamiento y los valorse calculas para subpíxeles c de resolución ½ son después recortados para estar en el intervalo de [0, 2n - 1].
3. Los valores para subpíxeles de resolución ¼ marcados con la letra d se calculan como sigue. Los valores 15 para subpíxeles d de resolución de 1/4 ubicados en posiciones horizontales de un cuarto y verticales de unidad, se calculan a partir del valor del píxel inmediatamente vecino en la posición horizontal de unidad y posición vertical de unidad (píxel A) y el valor b intermedio calculado en la etapa (1) para el subpíxel de resolución de 1/2 inmediatamente vecino en la posición horizontal de medio y vertical de unidad (subpíxel b de resolución ½), de acuerdo con d = (32A + b + 32)/64. Los valores para subpíxeles d de resolución de 1/4 ubicado en 20 posiciones horizontales de un cuarto y verticales de medio, son interpolados mediante el uso de valores intermedios c calculados para los subpíxeles c de resolución de 1/2 inmediatamente vecinos que están en la posición horizontal de unidad y vertical de medio y las posiciones horizontales de medio y verticales de medio respectivamente, de acuerdo con d = (32c1 + c2 + 1024)/2048. Nuevamente el operador / indica división con truncamiento y los valores de subpíxel d de resolución de 1/4 y finalmente obtenidos son recortados para estar 25 en el intervalo [0, 2n - 1].
4. Los valores para los subpíxeles de resolución de 1/4 marcado con la letra e se calculan como sigue. Los valores para subpíxeles e de resolución 1/4 ubicados en posiciones horizontales de unidad y verticales de un cuarto se calculan a partir del valor del píxel inmediatamente vecino en la posición horizontal de unidad y 30 vertical de unidad (píxel A) y el valor c intermedio calculado en la etapa (2) para el subpíxel de resolución de 1/4 inmediatamente vecino en la posición horizontal de unidad y vertical de unidad, de acuerdo con e = (32A + c + 32)/64. Los valores para subpíxeles e de resolución de 1/4 ubicados en posiciones horizontales de medio y verticales de un cuarto se calculan a partir del valor b intermedio calculado en la etapa (1) para el subpíxel de resolución de 1/2 inmediatamente vecino en la posición horizontal de medio y vertical de unidad y el valor c 35 intermedio calculado en la etapa (2) para el subpíxel de resolución de 1/2 inmediatamente vecino en posición horizontal de medio y vertical de medio, de acuerdo con e = (32b + c + 1024)/2048. Una vez más, el operador / indica división con truncamiento y los valores e de subpíxeles de resolución de 1/4 finalmente obtenidos son recortados para estar en el intervalo [0, 2n - 1].
40
5. Los valores para subpíxeles de resolución de 1/4 marcados con la letra g son calculados mediante el uso del valor del siguiente píxel A original más cercano y los valores intermedios de los tres subpíxeles de resolución de ½ vecinos más cercanos, de acuerdo con g = (1024A + 32b + 32c1 + c2 + 2048)/4096. Igual que antes, el operador / indica división con truncamiento y los valores g de subpíxel de resolución de 1/4 son recortados para estar en el invervalo [0, 2n - 1]. 45
6. El valor para el subpíxel f de resolución de 1/4 es interpolado al promediar los valores de los 4 píxeles más cercanos en posiciones horizontales y verticales de unidad de acuerdo con f = (A1 + A2 + A3 + A4 + 2)/4, donde las posiciones de los píxeles A1, A2, A3 y A4 son los cuatro píxeles originales más cercanos.
50
En el decodificador, de valores de subpíxel se pueden obtener directamente al aplicar filtros de seis ramas en direcciones horizontal y vertical. En el caso de resolución de subpíxel de 1/4, con referencia a la figura 13a, los coeficientes de filtro aplicados a los píxeles y subpíxeles en la posición vertical de unidad son [0, 0, 64, 0, 0, 0] para un conjunto de seis píxeles A, [1, -5, 52, 20, -5, 1] para un conjunto de seis subpíxeles d, [2, -10, 40, 40, -10, 2] para un conjunto de seis subpíxeles b, y [1, -5, 20, 52, -5, 1] para un conjunto de seis subpíxeles d. Estos coeficientes de 55 filtro se aplican a conjuntos de píxeles o subpíxeles respectivos en la misma fila que los valores de subpíxeles que son interpolados.
Después de aplicar los filtros en las direcciones 25 horizontal y vertical, el valor interpolado c es normalizado de acuerdo con c = (c + 2048)/4096 y recortado para estar en el intervalo [0, 2n - 1]. Cuando un vector de movimiento 60 indica a una posición de píxel integral ya sea en la dirección horizontal o vertical, muchos coeficientes cero se usan. En una implementación práctica de TML6, se usan diferentes ramas en el software que son optimizadas para los diferentes casos de subpíxeles por lo que no hay multiplicaciones por coeficientes cero.
Debe indicarse que en TML6, los valores de subpíxel de resolución de 1/4 se obtienen directamente al usar los 65 valores intermedios referidos anteriormente y no se derivan de valores redondeados y recortados para subpíxeles de
resolución de 1/2. Por lo tanto, en la obtención de valores de subpíxeles de resolución de 1/4, no es necesario calcular valores finales para ninguno de los subpíxeles de resolución de 1/2. Específicamente, no es necesario llevar a cabo operaciones de truncamiento y recorte asociadas con el cálculo de valores finales para los subpíxeles de resolución de 1/2. Tampoco no es necesario tener almacenados valores finales para subpíxeles de resolución de 1/2 para usarse en el cálculo de los valores de subpíxeles de resolución de 1/4. Por lo tanto, TML6 es 5 computacionalmente menos complejo que TML5, ya que se requieren menos operaciones de truncamiento y recorte. Sin embargo, un inconveniente de TML6 es que se requiere alta aritmética de precisión en el codificador y en el decodificador. La interpolación de alta precisión requiere más área de silicio en ASICs y requiere más cálculos en algunas CPUs. Además, la implementación de interpolación directa como se especifica en TML6 de una manera bajo demanda tiene un requerimiento de memoria alto. Este es un factor importante, particularmente en dispositivos 10 integrados.
En vista de la descripción anteriormente presentada, se debe apreciar que debido a los diferentes requerimientos del codificador y decodificador de video con respecto a interpolación de subpíxeles, existe un problema significativo en desarrollar un método de interpolación de valores de subpíxeles capaz de proveer rendimiento satisfactorio tanto en 15 el codificador como en el decodificador. Además, ninguno de los modelos de prueba actuales (TML5, TML6) descritos anteriormente pueden proveer una solución que sea óptima para la aplicación tanto en el codificador como en el decodificador.
La patente US 5.521.642 divulgar un sistema de descodificación simplificada para proporcionar una trama de imagen 20 reducida a un receptor de televisión de alta definición con una pantalla de tamaño pequeño a través del uso de coeficientes de transformación de CC. El sistema de decodificación decodifica selectivamente y cuantifica de manera inversa coeficientes de transformación de CC para producir un conjunto de datos de diferencia, cada uno de los cuales representa un promedio de las diferencias de píxeles entre un bloque de píxeles bidimensionales de una trama actual y un bloque correspondiente de su trama anterior. Cada uno de los vectores de movimiento en dos 25 dimensiones también se decodifica y modifica para derivar los datos de píxeles de la trama de imagen reducida anterior. Los datos de píxeles derivados y el valor medio de diferencia de píxel se combinan sucesivamente para generar la trama reducida.
La solicitud de patente europea publicada EP 0 576 290 se refiere a métodos de codificación y decodificación de 30 señal de imagen que eliminan una situación tal que, cuando una imagen codificada de un sistema de televisión de alta definición se hace más fina a la mitad en cada una de las direcciones vertical y horizontal y se muestran en un receptor de televisión de un sistema de definición inferior, la imagen mostrada no exhibe un movimiento suave debido a la pérdida de una estructura entrelazada. En un codificador, los datos de elementos de imagen son procesados mediante procesamiento DCT para obtener 8 x 8 datos de coeficiente, y los datos de coeficiente se 35 transmiten. En un descodificador, de los 8 x 8 datos de coeficiente, sólo 4 x 4 datos de coeficiente en la esquina superior izquierda se muestrean y se procesan mediante procesamiento IDCT para obtener datos de elementos de imagen originales. En el procesamiento IDCT, aquellos de los 4 x 4 datos de coeficiente que pertenecen a la cuarta fila se sustituyen por los de los datos de coeficientes de la octava fila de los 8 x 8 datos de coeficiente.
40
Sumario de la Invención
De acuerdo con un primer aspecto de la invención, se proporciona un método de interpolación en codificación de video en el cual una imagen que comprende píxeles dispuestos en filas y columnas y representados por valores que tienen un intervalo dinámico especificado, los píxeles en las filas residen en posiciones horizontales de unidad y los 45 píxeles en las columnas residen en posiciones verticales de unidad, es interpolada para generar valores para subpíxeles en posiciones horizontales y verticales fraccionadas, las posiciones horizontales y verticales fraccionadas son definidas de acuerdo con 1/2x, en donde x es un entero positivo que tiene un valor máximo N, comprendiendo el método:
50
a) cuando se requieren los valores para los subpíxeles en posiciones horizontales de 1/2N-1 de unidad y verticales de unidad y en posiciones horizontales de unidad y verticales de 1/2N-1 de unidad, la interpolación de estos valores es directamente con el uso de sumas de píxeles ponderadas que residen en posiciones horizontales de unidad y verticales de unidad;
b) cuando se requieren los valores para los subpíxeles en posiciones horizontales de 1/2N-1 de unidad y 55 verticales de 1/2N-1 de unidad, la interpolación de esos valores es directamente con el uso de una elección de una primera suma ponderada de valores para subpíxeles que residen en las posiciones horizontales de 1/2N-1 de unidad y verticales de unidad y una segunda suma ponderada de valores para subpíxeles que residen en posiciones horizontales de unidad y verticales de 1/2N-1 de unidad, la primera y segunda sumas ponderadas de valores se calculan de acuerdo con la etapa (a); y 60
c) cuando se requiere un valor para un subpíxel situado en una posición horizontal 1/2N de unidad y vertical de 1/2N de unidad, la interpolación de ese valor al tomar un promedio de grado de valor de un primer subpíxel situado en la posición horizontal de 1/2N-m de unidad y vertical de 1/2N-n de unidad y el valor de un segundo subpíxel ubicado en una posición horizontal de 1/2N-p de unidad y vertical de 1/2N-q de unidad, las variables m, n, p y q toman valores enteros en el intervalo de 1 a N, de tal manera que el primer y segundo subpíxeles o 65 píxeles están ubicados diagonalmente con respecto al subpíxel en la posición horizontal de 1/2N de unidad y
vertical de 1/2N.
Preferiblemente, una primera y segunda ponderación se usan en el promedio ponderado referido en (c), las magnitudes relativas de las ponderaciones son inversamente proporcionales a la proximidad (diagonal en línea recta) del primer y segundo subpíxel o píxel para el subpíxel en la posición horizontal de 1/2N de unidad y vertical de 5 1/2N.
En una situación donde el primer y segundo subpíxel o píxel están ubicados simétricamente con respecto al (equidistante del) subpíxel en la posición horizontal de 1/2N de unidad y vertical de 1/2N, la primera y segunda ponderaciones pueden tener valores iguales. 10
La primera suma ponderada de valores para subpíxeles que residen en posiciones horizontales de 1/2N-1 de unidad y verticales de unidad en la etapa b) se puede usar cuando se requiere un subpíxel en la posición horizontal de 1/2N-1 de unidad y vertical de 1/2N de unidad.
15
La segunda suma ponderada de valores de subpíxeles residen en las posiciones horizontales de unidad y verticales de 1/2N-1 de unidad en la etapa b) se pueden usar cuando se requiere un subpíxel en la posición horizontal de 1/2N-1 de unidad y vertical de 1/2N-1 de unidad.
En una realización, cuando se requieren los valores para subpíxeles en las posiciones horizontales de 1/2N de 20 unidad y verticales de unidad, y las posiciones horizontales de 1/2N y verticales de 1/2N-1, esos valores son interpolados al sacar el promedio de los valores de un primer píxel o subpíxel ubicado en una posición vertical correspondiente a la del subpíxel que se calcula y la posición horizontal de unidad y un segundo píxel o subpíxel ubicado en una posición vertical correspondiente a la del píxel que se calcula y la posición horizontal de 1/2N-1 de unidad. 25
Cuando se requieren los valores para subpíxeles en las posiciones horizontales de unidad y verticales de 1/2N de unidad, y las posiciónes horizontal de 1/2N-1 de unidad y vertical de 1/2N de unidad, pueden ser interpolados al sacar el promedio de los valores de un primer píxel o subpíxel ubicado en una posición horizontal correspondiente a la del subpíxel que se calcula y una posición vertical de unidad y un segundo píxel o subpíxel ubicado en una posición 30 horizontal correspondiente a la del subpíxel que se calcula y la posición vertical de 1/2N-1 de unidad.
Los valores para subpíxeles en las posiciones horizontales de 1/2N de unidad y verticales de 1/2N de unidad pueden ser interpoladas al sacar el promedio de los valores de un píxel ubicado en una posición horizontal de unidad y vertical de unidad, y un píxel ubicado en una posición horizontal de 1/2N-1 de unidad y vertical de 1/2N-1 de unidad. 35
Los valores para subpíxeles en posiciones horizontales de 1/2N de unidad y verticales de 1/2N de unidad se pueden interpolar sacando el promedio de valores de un subpíxel ubicado en una posición horizontal de 1/2N-1 de unidad y vertical de unidad, y un subpíxel ubicado en una posición horizontal de unidad y vertical de 1/2N-1 de unidad.
40
Los valores para la mitad de subpíxeles en las posiciones horizontales de 1/2N de unidad y verticales de 1/2N de unidad pueden ser interpolados sacando el promedio de un primer par de valores de un subpíxel ubicado en una posición horizontal de 1/2N-1 de unidad y vertical de unidad y un subpíxel ubicado en una posición horizontal de unidad y vertical de 1/2N-1 de unidad y valores para la otra mitad de los subpíxeles en posiciones horizontales de 1/2N de unidad y verticales de 1/2N de unidad se interpolan al sacar el promedio de un segundo par de valores de un 45 píxel ubicado en una posición horizontal de unidad y vertical de unidad, y un subpíxel ubicado en una posición horizontal de 1/2N-1 de unidad y vertical de 1/2N-1 de unidad.
Los valores para subpíxeles en posiciones horizontales de 1/2N de unidad y verticales de 1/2N de unidad son alternativamente interpolados para un subpíxel al sacar el promedio de un primer par de valores de un subpíxel 50 ubicado en una posición horizontal de 1/2N de unidad y vertical de unidad, y un subpíxel ubicado en una posición horizontal de unidad y vertical de 1/2N-1 de unidad y los valores para un subpíxel vecino al sacar el promedio de un segundo par de valores de un píxel ubicado en la posición horizontal de unidad y vertical de unidad, y un subpíxel ubicado en una posición horizontal de 1/2N-1 de unidad y vertical de 1/2N-1 de unidad.
55
Los subpíxeles de posiciones horizontales de 1/2N de unidad y verticales de 1/2N de unidad pueden ser alternativamente interpolados en una dirección horizontal.
Cuando se requieren los valores para algunos subpíxeles en posiciones horizontales de 1/2N de unidad y verticales de 1/2N de unidad, esos valores pueden ser interpolados al sacar el promedio de una pluralidad de píxeles vecinos 60 más cercanos.
Por lo menos una de la etapa a) y de la etapa b) que interpolan valores de subpíxeles directamente al usar sumas ponderadas puede implicar el cálculo de un valor intermedio para los valores de subpíxeles que tienen un intervalo dinámico mayor que el intervalo dinámico especificado. 65
El valor intermedio para un subpíxel que tiene resolución de subpíxel 1/2N-1 se puede usar en el cálculo de un valor de subpíxel que tiene una resolución de subpíxel 1/2N.
De acuerdo con un segundo aspecto de la invención, se proporciona un método de interpolación en codificación de video en el cual una imagen que comprende píxeles dispuestos en filas y columnas y representada por valores que 5 tienen un intervalo dinámico especificado , los píxeles en las filas que residen en posiciones horizontales de unidad y los píxeles en las columnas que residen en posiciones verticales de unidad, se interpola para generar valores para subpíxeles en posiciones horizontales y verticales fraccionadas, comprendiendo el método:
a) cuando los valores para subpíxeles en posiciones horizontales de media unidad y verticales de unidad, y en 10 posiciones horizontales de unidad y verticales de media unidad se requieren, la interpolación de esos valores usa directamente sumas ponderadas de píxeles que residen en posiciones horizontales de unidad y verticales de unidad;
b) cuando los valores para subpíxeles en posiciones horizontales de media unidad y verticales de media unidad se requieren, la interpolación de esos valores directamente usa una suma ponderada de valores para 15 subpíxeles que residen en posiciones horizontales de media unidad y verticales de unidad calculadas de acuerdo con la etapa a); y
c) cuando los valores para subpíxeles en posiciones horizontales de un cuarto de unidad y verticales de un cuarto de unidad se requieren, se interpolan esos valores al sacar el promedio de por lo menos un par de un primer par de valores de un subpíxel ubicado en una posición horizontal de media unidad y vertical de unidad, y 20 un subpíxel ubicado en una posición horizontal de unidad y vertical de media unidad y un segundo par de valores de un píxel ubicado en una posición horizontal de unidad y vertical de unidad, y un subpíxel ubicado y una posición horizontal de media unidad y vertical de media unidad.
De acuerdo con un tercer aspecto de la invención, se proporciona un método de interpolación en codificación de 25 video en el cual una imagen que comprende píxeles dispuestos en filas y columnas y representado por valores que tienen un intervalo dinámico especificado, los píxeles en las filas que residen en posiciones horizontales de unidad y los píxeles en las columnas que residen en posiciones verticales de unidad, se interpola para generar valores para subpíxeles en posiciones horizontales y verticales fraccionadas, las posiciones horizontales y verticales fraccionadas se definen de acuerdo con 1/2x donde x es un entero positivo que tiene un valor máximo N, comprendiendo el 30 método:
a) cuando los valores para los subpíxeles en las posiciones horizontales de 1/2N-1 de unidad y verticales de unidad, y las posiciones horizontales de unidad y verticales de 1/2N-1 de unidad se requieren, se interpolan esos valores directamente al usar sumas ponderadas de píxeles que residen en posiciones horizontales de unidad y 35 verticales de unidad;
b) cuando un valor para un subpíxel en una posición horizontal de subpíxel y vertical de subpíxel se requiere, se interpola ese valor directamente al usar una elección de una primera suma de valores ponderada para subpíxeles ubicados en una posición vertical correspondiente a la del subpíxel que se calcula y una segunda suma de valores ponderada de subpíxeles ubicados en un lugar horizontal correspondiente al del subpíxel que 40 se calcula.
Los subpíxeles usados en la primera suma ponderada pueden ser subpíxeles que residen en posiciones horizontales de 1/2N-1 de unidad y verticales de unidad y la primera suma ponderada se puede usar para interpolar un valor para un subpíxel en la posición horizontal de 1/2N-1 de unidad y vertical de 1/2N de unidad. 45
Los subpíxeles usados en la segunda suma ponderada pueden ser subpíxeles que residen en posiciones horizontales de unidad y verticales de 1/2N-1 de unidad y la segunda suma ponderada se puede usar para interpolar un valor para un subpíxel en posiciones horizontales de 1/2N de unidad y verticales de 1/2N-1 de unidad.
50
Cuando los valores para subpíxeles en las posiciones horizontales de 1/2N de unidad y verticales de 1/2N de unidad se requieren, se pueden interpolar al sacar el promedio de por lo menos un par de un primer par de valores de un subpíxel ubicado- en una posición horizontal de 1/2N-1 de unidad y vertical de unidad, y un subpíxel ubicado en una posición horizontal de unidad y vertical de 1/2N-1 de unidad y un segundo par de valores de un píxel ubicado en una posición horizontal de unidad y vertical de unidad, y un subpíxel ubicado en una posición horizontal de 1/2N-1 de 55 unidad y vertical de 1/2N-1 de unidad.
Anteriormente, N puede ser igual a un entero seleccionado de una lista que consiste de valores 2, 3, y 4.
Los subpíxeles en la posición horizontal de un cuarto de unidad se han de interpretar como subpíxeles que tienen 60 como su vecino más cercano a la izquierda un píxel en una posición horizontal de unidad y su vecino más cercano a la derecha un subpíxel en la posición horizontal de media unidad así como subpíxeles que tienen como su vecino más cercano a la izquierda un subpíxel en una posición horizontal de unidad y como su vecino más cercano a la derecha un píxel en una posición horizontal de unidad. De manera correspondiente, los subpíxeles en la posición de un cuarto de unidad se han de interpretar como subpíxeles que tienen corno vecino más cercano superior un píxel 65 en una posición vertical de unidad y como su vecino más cercano inferior un subpíxel en una posición vertical de
media unidad así como subpíxeles que tienen como su vecino más cercano superior un subpíxel en una posición vertical de media unidad y como su vecino más cercano inferior un píxel en una posición vertical de unidad.
El término intervalo dinámico se refiere al intervalo de valores que puede tomar los valores de subpíxel y las sumas ponderadas. 5
Al cambiar preferiblemente el intervalo dinámico, ya sea al extenderlo o reducirlo, se cambia el número de bits que se usa para representar el intervalo dinámico.
En una realización de la invención, el método se aplica a una imagen que es subdividida en un número de bloques de imagen. Preferiblemente, cada bloque de imagen comprende cuatro esquinas, cada esquina es definida por un 10 píxel ubicado en una posición horizontal de unidad y vertical de unidad. Preferiblemente, el método se aplica a cada bloque de imagen a medida que el bloque queda disponible para interpolación de valor de subpíxel. Alternativamente, la interpolación de valor de subpíxel de acuerdo con el método de la invención se realiza una vez que todos los bloques de imagen de una imagen se han vuelto disponibles para interpolación de valor de subpíxel.
15
Preferiblemente, el método se usa en codificación de video. Preferiblemente, el método se usa en decodificación de video.
En una realización de la invención, cuando se usa en codificación, el método se lleva a cabo como interpolación de antemano, en la cual los valores para todos los píxeles en posiciones de media unidad y valores para todos los 20 píxeles en posiciones de cuarto de unidad se calculan y se almacenan antes de usarse posteriormente en la determinación en un trama de predicción durante la codificación predictiva de movimiento. En realizaciones alternativas, el método se lleva a cabo a una combinación de interpolación de antemano y bajo demanda. En este caso, una cierta proporción o categoría de valores de subpíxeles se calcula y se almacena antes de ser usada en la determinación de una trama de predicción y algunos otros valores de subpíxeles se calculan solo cuando se 25 requieren durante la codificación de predicción de movimiento.
Preferiblemente, cuando el método se usa en decodificación, los subpíxeles solo son interpolados cuando su necesidad es indicada por un vector de movimiento.
30
De acuerdo con un cuarto aspecto de la invención, se proporciona un codificador de video para codificar una imagen que comprende píxeles dispuestos en filas y columnas y representados por valores que tienen un intervalo dinámico especificado, los píxeles en las filas residen en posiciones horizontales de unidad y los píxeles en las columnas residen en posiciones verticales de unidad, el codificador de video comprende un interpolador adaptado para generar valores para subpíxeles en posiciones horizontales y verticales fraccionadas, las posiciones horizontales y 35 verticales fraccionadas se definen de acuerdo con 1/2x, en donde x es un entero positivo que tiene un valor máximo N, el interpolador está adaptado para:
a) interpolar valores para sus píxeles en posiciones horizontales de 1/2N-1 de unidad y verticales de unidad y posiciones horizontales de unidad y verticales de 1/2N-1 de unidad directamente al usar sumas ponderadas de 40 píxeles que residen en posiciones horizontales de unidad y verticales de unidad;
b) interpolar valores para subpíxeles en posiciones horizontales de 1/2N-1 de unidad y verticales de 1/2N-1 de unidad directamente al usar una elección de una primera suma ponderada de valores para subpíxeles que residen en posiciones horizontales de 1/2N-1 de unidad y verticales de unidad y una segunda suma ponderada de valores para subpíxeles que residen en posiciones horizontales de unidad y verticales de 1/2N-1 de unidad, 45 la primera y segunda sumas ponderadas de valores se calculan de acuerdo con la etapa (a); y
c) interpolar un valor para un subpíxel situado en una posición horizontal de 1/2N de unidad y vertical de 1/2N de unidad al sacar un promedio ponderado del valor de un primer subpíxel o píxel situado en una posición horizontal de 1/2N-m de unidad y vertical de 1/2N-m de unidad y el valor de un segundo subpíxel o píxel ubicado en una posición horizontal de 1/2N-p de unidad y vertical de 1/2N-q.de unidad, las variables m, n, p y q toman 50 valores enteros en el intervalo de 1 a N de tal manera que el primer y segundo subpíxeles o píxeles están ubicados diagonalmente con respecto al subp1xel en la posición horizontal de 1/2N de unidad y vertical de 1/2N.
El codificador de video puede comprender un codificador de vídeo. Puede comprender un decodificador de video. Puede haber un códec que comprenda tanto un codificador como un decodificador de video. 55
De acuerdo con un quinto aspecto de la invención, se proporciona una terminal de comunicaciones que comprende un codificador de video para codificar una imagen que comprende píxeles dispuestos en filas y columnas y representado por valores que tienen un intervalo dinámico especificado, los píxeles en las filas residen en posiciones horizontales de unidad y los píxeles en las columnas residen en posiciones verticales de unidad, el codificador de 60 video comprende un interpolador adaptado para generar valores para subpíxeles en posiciones horizontales y verticales fraccionadas, las posiciones horizontales y verticales fraccionadas están definidas de acuerdo con 1/2x, en donde x es un entero positivo que tiene un valor N máximo, el interpolador está adaptado para:
a) interpolar valores para sus píxeles en posiciones horizontales de 1/2N-1 de unidad y verticales de unidad y 65 posiciones horizontales de unidad y verticales de 1/2N-1 de unidad directamente al usar sumas ponderadas de
píxeles que residen en posiciones-horizontal de unidad y vertical de unidad;
b) interpolar valores para subpíxeles en posiciones horizontales de 1/2N-1 de unidad y verticales de 1/2N-1 de unidad directamente al usar una elección de una primera suma ponderada de valores para subpíxeles que residen en posiciones horizontales de 1/2N-1 de unidad y verticales de unidad y una segunda suma ponderada de valores para subpíxeles que residen en posiciones horizontales de unidad y verticales de 1/2N-1 de unidad, 5 la primera y segunda sumas ponderadas de valores se calculan de acuerdo con la etapa (a); y
c) interpolar un valor para un subpíxel situado en una posición horizontal de 1/2N de unidad y vertical de 1/2N de unidad al sacar un promedio ponderado del valor de un primer subpíxel o píxel situado en una posición horizontal de 1/2N-m de unidad y vertical de 1/2N-n de unidad y el valor de un segundo subpíxel o píxel ubicado en una posición horizontal de 1/2N-p de unidad y vertical de 1/2N-q de unidad, las variables m, n, p y q toman 10 valores enteros en el intervalo de 1 a N de tal manera que el primer y segundo subpíxeles o píxeles están ubicados diagonalmente con respecto al subpíxel en la posición horizontal de 1/2N de unidad y vertical de 1/2N.
La terminal de comunicaciones puede comprender un codificador de video. Puede comprender un decodificador de video. Preferiblemente, comprende un codee de video que comprende un codificador de video y un decodificador de 15 video.
Preferiblemente, la terminal de comunicaciones que comprende una interfaz de usuario, un procesador y por lo menos uno de un bloque de transmisión y un bloque receptor, y un códec de video de acuerdo con por lo menos uno del tercer y cuarto aspectos de la invención. Preferiblemente, el procesador controla la operación del bloque de 20 transmisión y/o el bloque receptor y el codificador de video.
De acuerdo con un sexto aspecto de la invención, se proporciona un sistema de telecomunicaciones que comprende una terminal de comunicaciones y una red, la red de telecomunicaciones y la terminal de comunicaciones están conectadas por un enlace de comunicaciones sobre el cual se puede transmitir video codificado, la terminal de 25 comunicaciones comprende un codificador de video para codificar una imagen que comprende píxeles dispuestos en filas y columnas y representado por valores que tienen un intervalo dinámico especificado, los píxeles en las filas residen en posiciones horizontales de unidad y los píxeles en las columnas residen en posiciones verticales de unidad, el codificador de video comprende un interpolador adaptado para generar valores para subpíxeles en posiciones horizontales y verticales fraccionadas, las posiciones horizontales y verticales fraccionadas están 30 definidas de acuerdo con 1/2x, en donde x es un entero positivo que tiene un valor N máximo, el interpolador está adaptado para:
a) interpolar valores para sus píxeles en posiciones horizontales de 1/2N-1 de unidad y verticales de unidad y posiciones horizontales de unidad y verticales de 1/2N-1 de unidad directamente al usar sumas ponderadas de 35 píxeles que residen en posiciones horizontales de unidad y verticales de unidad;
b) interpolar valores para subpíxeles en posiciones horizontales de 1/2N-1 de unidad y verticales de 1/2N-1 de unidad directamente al usar una elección de una primera suma ponderada de valores para subpíxeles que residen en posiciones horizontales de 1/2N-1 de unidad y verticales de unidad y una segunda suma ponderada de valores para subpíxeles que residen en posiciones horizontales de unidad y verticales de 1/2N-1 de unidad, 40 la primera y segunda sumas ponderadas de valores se calculan de acuerdo con la etapa (a); y
c) interpolar un valor para un subpíxel situado en una posición horizontal de 1/2N de unidad y vertical de 1/2N de unidad al sacar un promedio ponderado del valor de un primer subpíxel o píxel situado en una posición horizontal de. 1/2N-m de unidad y vertical de 1/2N-n de unidad y el valor de un segundo subpíxel o píxel ubicado en una posición horizontal de 1/2N-p de unidad y vertical de 1/2N-q de unidad, las variables m, n, p y q tornan 45 valores enteros en el intervalo de 1 a N de tal manera que el primer y segundo subpíxeles o píxeles están ubicados diagonalmente con respecto al subpíxel en la posición horizontal de 1/2N de unidad y vertical de 1/2N.
Preferiblemente, el sistema de telecomunicaciones es un sistema de telecomunicaciones móvil que comprende una terminal de comunicaciones móvil y una red inalámbrica, la conexión entre la terminal de comunicaciones móvil y la 50 red inalámbrica está formada por un enlace de radio. Preferiblemente, la red permite que la terminal de comunicaciones comunique con otras terminales de comunicaciones conectadas a la red sobre enlaces de comunicaciones entre las otras terminales de comunicaciones y la red.
De acuerdo con un séptimo aspecto de la invención, se proporciona un sistema de telecomunicaciones que 55 comprende una terminal de comunicaciones y una red, la red de telecomunicaciones y la terminal de comunicaciones están conectadas por un enlace de comunicaciones sobre el cual se puede transmitir video codificado, la red comprende un codificador de video para codificar una imagen que comprende píxeles dispuestos en filas y columnas y representado por valores que tienen un intervalo dinámico especificado, los píxeles en las filas residen en posiciones horizontales de unidad y los píxeles en las columnas residen en posiciones verticales de 60 unidad, el codificador de video comprende un interpolador adaptado para generar valores para subpíxeles en posiciones horizontales y verticales fraccionadas, las posiciones horizontales y verticales fraccionadas están definidas de acuerdo con 1/2x, donde x es un entero positivo que tiene un valor N máximo, el interpolador está adaptado para:
65
a) interpolar valores para sus píxeles en posiciones horizontales de 1/2N-1 de unidad y verticales de unidad y
posiciones horizontales de unidad y verticales de 1/2N-1 de unidad directamente al usar sumas ponderadas de píxeles que residen en posiciones horizontales de unidad y verticales de unidad;
b) interpolar valores para subpíxeles en posiciones horizontales de 1/2N-1 de unidad y verticales de 1/2N-1 de unidad directamente al usar una elección de una primera suma ponderada de valores para subpíxeles que residen en posiciones horizontales de 1/2N-1 de unidad y verticales de unidad y una segunda suma ponderada 5 de valores para subpíxeles que residen en posiciones horizontales de unidad y verticales de 1/2N-1 de unidad, la primera y segunda sumas ponderadas de valores se calculan de acuerdo con la etapa (a); y
c) interpolar un valor para un subpíxel situado en una posición horizontal de 1/2N de unidad y vertical de 1/2N de unidad al sacar un promedio ponderado del valor de un primer subpíxel o píxel situado en una posición horizontal de 1/2N-m de unidad y vertical de 1/2N de unidad y el valor de un segundo subpíxel o píxel ubicado en 10 una posición horizontal de 1/2N-p de unidad y vertical de 1/2N-q de unidad, las variables m, n, p y q toman valores enteros en el intervalo de 1 a N de tal manera que el primer y segundo subpíxeles o píxeles están ubicados diagonalmente con respecto al subpíxel en la posición horizontal de 1/2N de unidad y vertical de 1/2N.
De acuerdo con un octavo aspecto de la invención, se proporciona un codificador de vídeo para codificar una 15 imagen que comprende píxeles dispuestos en filas y columnas y representado por valores que tienen un intervalo dinámico especificado, los píxeles en las filas residen en posiciones horizontales de unidad y los píxeles en las columnas residen en posiciones verticales de unidad, el codificador comprende un interpolador adaptado para generar valores para subpíxeles en posiciones horizontales y verticales fraccionadas, la resolución de los subpíxeles está determinada por un entero positivo N, el interpolador está adaptado para: 20
a) interpolar valores para sus píxeles en posiciones horizontales de 1/2N-1 de unidad y verticales de unidad y posiciones horizontales de unidad y verticales de 1/2N-1 de unidad directamente al usar sumas ponderadas de píxeles que residen en posiciones horizontales de unidad y verticales de unidad;
b) interpolar un valor para subpíxeles en una posición horizontal de subpíxel y posición vertical de subpíxel se 25 requiere directamente al usar una elección de una primera suma ponderada de valores para subpíxeles ubicados en una posición vertical correspondiente a la del subpíxel que se calcula y una segunda suma ponderada de valores para subpíxeles ubicados en una posición horizontal correspondiente a la del subpíxel que se calcula.
30
El interpolador puede estar adaptado además para formar la primera suma ponderada de valores de subpíxeles que residen en posiciones horizontales de 1/2N-1 de unidad y verticales de unidad y usar la primera suma ponderada para interpolar un valor para un subpíxel en una posición horizontal de 1/2N-1 de unidad y una posición vertical de 1/2N-1 de unidad.
35
El interpolador puede estar adaptado además para formar la segunda suma ponderada de valores de subpíxeles que residen en posiciones horizontales de unidad y verticales de 1/2N-1 de unidad y para usar un subpíxel en una posición horizontal de 1/2N-1 de unidad y una posición vertical de 1/2N-1 de unidad.
El interpolador puede estar adaptado además para interpolar valores para subpíxeles en posiciones horizontales de 40 1/2N-1 de unidad y verticales de 1/2N-1 de unidad al sacar el promedio de por lo menos un par de un primer par de valores de subpíxel ubicado en una posición horizontal de 1/2N de unidad y vertical de unidad, y un subpíxel ubicado en una posición horizontal de unidad y vertical de 1/2N-1 de unidad y un segundo par de valores de un píxel ubicado en una posición horizontal de unidad y vertical de unidad, y un subpíxel ubicado en una posición horizontal de 1/2N de unidad y vertical de 1/2N-1 de unidad. 45
De acuerdo con un noveno aspecto de la invención, se proporciona una terminal de comunicaciones que comprende un codificador de video para codificar una imagen que comprende píxeles dispuestos en filas y columnas y representado por valores que tienen un intervalo dinámico especificado, los píxeles en las filas residen en posiciones horizontales de unidad y los píxeles en las columnas residen en posiciones verticales de unidad, el codificador 50 comprende un interpolador adaptado para generar valores para subpíxeles en posiciones horizontales y verticales fraccionadas, la resolución de los subpíxeles está determinada por un entero positivo N, el interpolador está adaptado para:
a) interpolar valores para sus píxeles en posiciones horizontales de 1/2N-1 de unidad y verticales de unidad y 55 posiciones horizontales de unidad y verticales de 1/2N-1 de unidad directamente al usar sumas ponderadas de píxeles que residen en posiciones horizontales de unidad y verticales de unidad;
b) interpolar un valor para subpíxeles en una posición horizontal de subpíxel y vertical de subpíxel directamente al usar una elección de una primera suma ponderada de valores para subpíxeles ubicados en una posición vertical correspondiente a la del subpíxel que se calcula y una segunda suma ponderada de valores para 60 subpíxeles ubicados en una posición horizontal correspondiente a la del subpíxel que se calcula.
De acuerdo con un décimo aspecto de la invención, se proporciona un sistema de telecomunicaciones que comprende una terminal-de comunicaciones y una red, la red de telecomunicaciones y la terminal de comunicaciones están conectadas por un enlace de comunicaciones sobre el cual se puede transmitir video 65 codificado, la terminal de comunicaciones comprende un codificador de video para codificar una imagen que
comprende píxeles dispuestos en filas y columnas y representado por valores que tienen un intervalo dinámico especificado, los píxeles en las filas residen en posiciones horizontales de unidad y los píxeles en las columnas residen en posiciones verticales de unidad, el codificador de video comprende un interpolador adaptado para generar valores para subpíxeles en posiciones horizontales y verticales fraccionadas, la resolución de los subpíxeles está determinada por un entero positivo N, el interpolador está adaptado para: 5
a) interpolar valores para sus píxeles en posiciones horizontales de 1/2N-1 de unidad y verticales de unidad y posiciones horizontales de unidad y verticales de 1/2N-1 de unidad directamente al usar sumas ponderadas de píxeles que residen en posiciones horizontales de unidad y verticales de unidad;
b) interpolar un valor para subpíxeles en una posición horizontal de subpíxel y posición vertical de subpíxel 10 directamente al usar una elección de una primera suma ponderada de valores para subpíxeles ubicados en una posición vertical correspondiente a la del subpíxel que se calcula y una segunda suma ponderada de valores para subpíxeles ubicados en una posición horizontal correspondiente a la del subpíxel que se calcula.
De acuerdo con un décimo primer aspecto de la invención, se proporciona un sistema de telecomunicaciones que 15 comprende una terminal de comunicaciones y una red, estando la red de telecomunicaciones y la terminal de comunicaciones conectadas por un enlace de comunicaciones sobre el cual se puede transmitir video codificado, la red comprende un codificador de video para codificar una imagen que comprende píxeles dispuestos en filas y columnas y representado por valores que tienen un intervalo dinámico especificado, los píxeles en las filas residen en posiciones horizontales de unidad y los píxeles en las columnas residen en posiciones verticales de unidad, el 20 codificador comprende un interpolador adaptado para generar valores para subpíxeles en posiciones horizontales y verticales fraccionadas, la resolución de los subpíxeles está determinada por un entero positivo N, el interpolador está adaptado para:
a) interpolar valores para sus píxeles en posiciones horizontales de 1/2N-1 de unidad y verticales de unidad y 25 posiciones horizontales de unidad y verticales de 1/2N-1 de unidad directamente al usar sumas ponderadas de píxeles que residen en posiciones horizontales de unidad y verticales de unidad;
b) interpolar un valor para subpíxeles en una posición horizontal de subpíxel y posición vertical de subpíxel se requiere directamente al usar una elección de una primera suma ponderada de valores para subpíxeles ubicados en una posición vertical correspondiente a la del subpíxel que se calcula y una segunda suma 30 ponderada de valores para subpíxeles ubicados en una posición horizontal correspondiente a la del subpíxel que se calcula.
Breve descripción de las figuras
35
Una realización de la invención se describirá ahora a modo de ejemplo sólo con referencia a los dibujos adjuntos, en los cuales:
La figura 1 muestra un codificador de video de acuerdo con la técnica anterior;
La figura 2 muestra un decodificador de video de acuerdo con la técnica anterior; 40
La figura 3 muestra los tipos de tramas usadas en codificación de video;
Las figuras 4a, 4b y 4c muestran las etapas en la coincidencia de bloques;
La figura 5 ilustra el proceso de estimación de movimiento para resolución de subpíxeles;
La figura 6 muestra un dispositivo de terminal que comprende codificación de video y equipo de codificación en el cual se puede implementar el método de la invención; 45
La figura 7 muestra un codificador de video de acuerdo con una realización de la presente invención;
La figura 8 muestra un decodificador de video de acuerdo con una realización de la presente invención;
Las figuras 9 y 10 no se han usado y cualquiera de esas figuras se debe desechar;
La figura 11 muestra un diagrama esquemático de una red de telecomunicaciones móvil de acuerdo con una realización de la presente invención; 50
La figura 12a muestra una notación para describir posiciones de píxeles y subpíxeles específicas para TML5;
La figura 12b muestra interpolación de subpíxeles de media resolución;
La figura 12c muestra interpolación de subpíxeles de media resolución;
La figura 13a muestra una notación para describir posiciones de píxel y subpíxel específicas para TML6;
La figura 13b muestra interpolación de subpíxeles de media resolución; 55
La figura 13c muestra interpolación de subpíxeles de media resolución;
La figura 14 muestra una notación para describir posiciones de píxel y subpíxel específicas para la invención;
La figura 14b muestra interpolación de subpíxeles de media resolución de acuerdo con la invención;
La figura 14c muestra interpolación de subpíxeles de media resolución de acuerdo con la invención;
La figura 15 muestra posibles elecciones de interpolación diagonal para subpíxeles; 60
La figura 16 muestra los valores de subpíxeles de media resolución requeridos para calcular otros valores de subpíxeles de media resolución;
La figura 17a muestra los valores de subpíxeles de media resolución que se deben calcular para interpolar valores para subpíxeles de un cuarto de resolución en un bloque de imagen que usa el método de interpolación de TML5; 65
La figura 17b muestra los valores de subpíxeles de media resolución que se deben calcular para interpolar
valores para subpíxeles de un cuarto de resolución en un cuarto de imagen mediante el uso del método de interpolación de acuerdo con la invención;
La figura 18a muestra los números de subpíxeles de media resolución que se deben calcular para obtener valores para subpíxeles de un cuarto de resolución dentro de un bloque de imagen mediante el uso del método de interpolación de valor de subpíxel de acuerdo con TML5; 5
La figura 18b muestra los números de subpíxeles de media resolución que se deben calcular para obtener valores para subpíxeles de un cuarto de resolución dentro de un bloque de imagen mediante el uso del método de interpolación de valor de subpíxel de acuerdo con la invención;
La figura 19 muestra un esquema de numeración para cada una de las posiciones de subpíxeles;
La figura 20 muestra la nomenclatura usada para describir píxeles, subpíxeles de media resolución, subpíxeles 10 de un cuarto de resolución y subpíxeles de un octavo de resolución;
La figura 21a muestra la dirección diagonal para usarse en la interpolación de cada subpíxel de un octavo de 10 resolución en una realización de la invención;
La figura 21b muestra la dirección diagonal para ser usada en la interpolación de cada subpíxel de un octavo de resolución en otra realización de la invención; y 15
La figura 22 muestra la nomenclatura usada para describir 15 subpíxeles de un octavo de resolución dentro de un bloque de imagen.
Descripción detallada de la invención
20
Las figuras 1 a 5, 12a, 12b, 12c, 13a, 13b, y 13c se han descrito anteriormente.
La figura 6 presenta un dispositivo terminal que comprende equipo de codificación y decodificación de video que se puede adaptar para operar de acuerdo con la presente invención. De manera más precisa, la figura ilustra una terminal multimedia 60 implementada de acuerdo con la recomendación H.324 de ITU-T. La terminal puede 25 considerarse como un dispositivo transceptor multimedia. Incluye elementos que capturan, codifican y multiplexan corriente de datos multimedia para transmisión a través de una red de comunicaciones, así como elementos que reciben, desmultiplexan, decodifican y exhiben contenido multimedia recibido. La recomendación H.324 de ITU-T define la operación global de la terminal y se refiere a otras recomendaciones que gobiernan la operación de sus diversas partes constituyentes. Este tipo de terminal multimedia se puede usar en aplicaciones de tiempo real tal 30 como videotelefonía de conversación o aplicaciones que no son de tiempo real tales corno la recuperación/transmisión en paquetes de video clips, por ejemplo de un seguidor de contenido multimedia en Internet.
En el contexto de la presente invención, se debe apreciar que la terminal H.324 mostrada en la figura 6 es 35 solamente una de un número de implementaciones terminales multimedia alternativas adecuadas para la aplicación del método de la invención. También debe indicarse que existe un número de alternativas relacionadas con la posición e implementación del equipo terminal. Como se ilustra en la figura 6, la terminal multimedia se puede localizar en equipo de comunicaciones conectado a una red de telefonía de línea fija tal como una red de telefonía de computación pública (PSTAT) análoga. En este caso, la terminal multimedia está equipada con un módem 71, de 40 acuerdo con las recomendaciones V.8, V.34 de ITU-T y opcionalmente V.8bis. En forma alternativa, la terminal multimedia se puede conectar un módem externo. El módem permite la conversión de los datos digitales multiplexados y señales de control producidas por la terminal multimedia en una forma análoga adecuada para transmisión en la PSTN. Además permite que la terminal multimedia reciba datos y señales de control en forma análoga de la PSTN y las convierta en una corriente de datos digitales que pueden ser desmultiplexados y 45 procesados de una manera apropiada por la terminal.
Una terminal multimedia H.324 también se puede implementar de tal manera que pueda ser conectada directamente a una red de línea fija digital, tal como una red digital de servicios integrados (ISDN). En este caso, el módem 71 es reemplazado por una interfaz de red de usuario ISDN. En la figura 6, esta interfaz de usuario-red de ISDN está 50 representada por el bloque 72 alternativo.
Las terminales multimedia H.324 también se pueden adaptar para usarse en comunicaciones móviles. Se usa con un enlace de comunicación inalámbrico, el módem 71 puede ser reemplazado por cualquier interfaz inalámbrica apropiada, como se representa mediante el bloque 73 en la figura 6. Por ejemplo, una terminal multimedia H.324/M 55 puede incluir un transceptor de radio que permite conexión a la red de telefonía móvil GSM de 2a generación actual, o al sistema de telefonía móvil universal (UMTS) de tercera generación.
Debe indicarse que en terminales multimedia diseñadas para comunicación en dos sentidos, es decir, para transmisión y recepción de datos de video, es ventajoso proveer tanto un codificador de video como un decodificador 60 de video implementado de acuerdo con la presente invención. Ese par de codificador y decodificador con frecuencia es implementado como una unidad funcional combinada individual, referida como un “códec”.
Como un codificador de video de acuerdo con la invención realiza codificación de video compensada en cuanto a movimiento a una resolución de subpíxel mediante el uso de un esquema de interpolación específico y una 65 combinación particular de interpolación de valor de subpíxel de antemano y sobredemanda, es generalmente
necesario un decodificador de video de una terminal receptora sea implementado de una manera compatible con el codificador de la terminal de transmisión que formó la corriente de datos de video comprimidos. El no asegurar esta compatibilidad puede tener un efecto adverso sobre la calidad de la compensación en movimiento y la exactitud de tramas de video reconstruidos.
5
Una terminal multimedia H.324 típica se describirá ahora con detalle adicional con referencia a la figura 6.
La terminal multimedia 60 incluye varios elementos referidos como “equipo terminal”. Este incluye dispositivos de video, audio y telemáticos, indicados generalmente por los números de referencia 61, 52 y 63, respectivamente. El equipo de video 61 puede incluir, por ejemplo, una cámara de video para capturar imágenes de video, un monitor 10 para exhibir contenido de video recibido y un equipo de procesamiento de video opcional. El equipo de audio 62 normalmente incluye un micrófono, por ejemplo para capturar mensajes hablados, y una bocina para reproducir contenido de audio recibido. El equipo de audio también puede incluir unidades de procesamiento de audio adicionales. El equipo telemático 63, puede incluir una terminal de datos, teclado, pizarrón electrónico o un transceptor de imagen quieta, tal como una unidad de fax. 15
El equipo de video 61 está acoplado a un códec de video 65. El códec de video 65 comprende un codificador de video y un decodificador de video correspondiente ambos implementados de acuerdo con la invención. Dicho codificador y decodificador se describirán a continuación. El códec de video 65 es responsable de codificar datos de video capturados en una forma apropiada para transmisión adicional en un enlace de comunicaciones y decodificar 20 contenido de video comprimido recibido de la red de comunicaciones. En el ejemplo ilustrado en la figura 6, el códec de video es incrementado de acuerdo con la recomendación H.324 de ITU-T, con modificaciones apropiadas a implementar el método de interpolación de valor de subpíxel de acuerdo con la invención tanto en el codificador como en el decodificador del códec de video.
25
De manera similar, el equipo de audio de la terminal está acoplado a un códec de audio, indicado en la figura 6 por el número de referencia 66. Igual que el códec de video, el códec de audio comprende un par de codificador/decodificador. Convierte los datos de audio capturados por el equipo de audio terminal en una forma adecuada para transmisión en la red de comunicaciones y transforma los datos de audio codificados recibidos de la red de nuevo a una forma adecuada para reproducción, por ejemplo un altavoz de la terminal. La salida del códec de 30 audio pasa a un bloque de demora 67. Esto compensa las demoras introducidas por el proceso de codificación de video y por lo tanto asegura la sincronización de contenido de audio y video.
El bloque de control de sistema 64 de la terminal multimedia controla la señalización de extremo a red que usa un protocolo de control apropiado (bloque de señalización 68) para establecer un modo común de, operación entre una 35 terminal de transmisión y una de recepción. El bloque de señalización 68 intercambia información acerca de las capacidades de codificación y decodificación de las terminales de transmisión y recepción y se puede usar para permitir los diversos modos de codificación del codificador de video. El bloque de control del sistema 64 también controla el uso de cifrado de datos. Información referente al tipo de cifrado para usarse en la transmisión de datos se hace pasar del bloque de cifrado 69 al múltiplexor/desmultiplexor (unidad MUX/DMUX) 70. 40
Durante la transmisión de datos desde la terminal multimedia, la unidad de MUX/DMUX 70 combina corrientes de video y audio codificadas y sincronizadas con entrada de datos desde el equipo telemático 63 y posibles datos de control, para formar una sola corriente de bits. .La información referente al tipo de cifrado de datos (si acaso la hay) se puede aplicar a la corriente de bits, provista por el bloque de cifrado 69, se usa para seleccionar un modo de 45 cifrado. De manera correspondiente, cuando una corriente de bits multimedia multiplexada posiblemente cifrada es recibida, la unidad MUX/DMUX 70 es responsable del cifrado de la corriente de bits, la divide en sus componentes multimedia constituyentes y hace pasar esos componentes al códec(s) apropiado(s) y/o el tipo de terminal la decodificación y reproducción.
50
Debe indicarse que los elementos funcionales de la terminal multimedia, codificador de video, decodificador y códec de video de acuerdo con la invención se pueden implementar como software o hardware dedicado, o una combinación de los dos. Los métodos de codificación y decodificación de video de acuerdo con la invención son particularmente adecuados para la implementación en forma de un programa de ordenador que comprende instrucciones legibles por máquina para realizar las etapas funcionales de la invención. Como tales, el codificador y 55 decodificador de acuerdo con la invención se pueden implementar como un código de software almacenado en un medio de almacenamiento y ejecutado en un ordenador, tal como un ordenador personal, para proveer a la computadora de funcionalidad de codificación/decodíficación de video.
Si la terminal multimedia 60 es una terminal móvil, es decir si está equipada con un transceptor de radio 73, los 60 expertos en la técnica entenderán que también puede comprender elementos adicionales. En una realización, comprende una interfaz de usuario que tiene una pantalla y un teclado, que permiten la operación de la terminal multimedia 60 por parte de un usuario, junto con bloques funcionales necesarios que incluyen una unidad de procesamiento central, tal como un microprocesador, que controla los bloques responsables para diferentes funciones en la terminal multimedia, una memoria de acceso aleatorio RAM, una memoria de solo lectura ROM, y 65 una cámara digital. Las instrucciones de operación del microprocesador, es decir un código de programa
correspondiente a las funciones básicas de la terminal multimedia 60, es almacenado en la memoria de sólo lectura ROM y puede ser ejecutado según se requiera por el microprocesador, por ejemplo bajo el control del usuario. De acuerdo con el código de programa, el microprocesador usa el transceptor de radio 73 para formar una conexión con la red de comunicación móvil, lo que permite a la terminal multimedia 60 transmitir información y recibir información de la red de comunicación móvil en una trayectoria de radio. 5
El microprocesador monitoriza el estado de la interfaz del usuario que controla la cámara digital. En respuesta a un comando de usuario, el microprocesador instruye a la cámara para grabar imágenes digitales en la RAM. Una vez que la imagen es capturada, o alternativamente durante el procedimiento de captura, el microprocesador segmenta la imagen en segmentos de imagen (por ejemplo macrobloques. Y usa el codificador para realizar codificación 10 compensada en movimiento para los segmentos para generar una secuencia de imágenes comprimidas como se explica en la descripción anterior. Un usuario puede ordenar a la terminal multimedia 60 que exhiba las imágenes capturadas en su pantalla o envíe la secuencia de imágenes comprimidas mediante el uso del transceptor de radio 73 a otra terminal multimedia, un teléfono de video conectado a una red de línea fija (PSTN) o algún otro dispositivo de telecomunicaciones. En una realización preferida, la transmisión de datos de imagen se inicia tan pronto como el 15 primer segmento es codificado, por lo que el receptor puede iniciar un proceso de decodificación correspondiente con una demora mínima.
La figura 11 es un diagrama esquemático de una red de telecomunicaciones móvil de acuerdo con una realización de la invención. Las terminales multimedia MS están en comunicación con las estaciones de base BTS por medio de 20 un enlace de radio. Las estaciones de radio BTS son posiblemente conectadas, a través de una denominada interfaz de Abis, a un controlador de estación de base BSC, que controla y administra varias estaciones de base.
La entidad formada por un número de estaciones de base BTS (normalmente por algunas decenas de estaciones de base) y un solo controlador de estación de base BSC, que controla las estaciones de base, se denomina un 25 subsistema de estación de base BSS. Particularmente, el controlador de estación de base BSC administra canales de comunicación de radio y traspasos. El controlador de estación de base BSC también está conectado, a través de una denominada interfaz A, a un centro de conmutación de servicios móviles MSC, que coordina la formación de conexiones hacia y desde estaciones móviles. Se hace una conexión adicional a través del centro de conmutación de servicios móviles MSC, al exterior de la red de comunicaciones móviles. Fuera de la red de comunicaciones 30 móviles puede residir otra red(es) conectada a la red de comunicaciones móviles mediante una pasarela(s) GTW, por ejemplo Internet o una red de telefonía computada pública (PSTN). En esa red externa, o dentro de la red de telecomunicaciones, puede haber estaciones de decodificación o codificación de video localizadas, tales como computadoras PC. En una realización de la invención, la red de telecomunicaciones móviles comprende un servidor de video VSRVR para proveer datos de video a un MS que suscribe a ese servicio. Los datos de video se 35 comprimen mediante el uso del método de compresión de video compensado en movimiento como se describe anteriormente. El servidor de video puede funcionar como una pasarela a una fuente de video en línea o puede comprender video clips previamente grabados. Las aplicaciones de video telefonía pueden implicar, por ejemplo, dos estaciones móviles o una estación móvil MS y un videoteléfono conectado a la PSTN, una PC conectada a Internet o una terminal compatible con H.261 conectada ya sea a Internet o a la PSTN. 40
La figura 7 muestra un codificador de video 700 de conformidad con una realización de la invención. La figura 8 muestra un decodificador de video 800 de acuerdo con una realización de la invención.
El codificador 700 comprende una entrada 701 para recibir una señal de video de una cámara u otra fuente de video 45 (no mostrada). Además comprende un transformador de DCT 705, un cuantificador 706, un cuantificador inverso 709, un transformador de DCT inverso 710, combinadores 712 y 716, un bloque de incorporación de subpíxeles de antemano 730, un almacén de tramas 740 y un bloque de interpolación de subpíxeles sobredemanda 750, implementado en combinación con un bloque de estimación de movimiento 760. El codificador también comprende un bloque de codificación de campo de movimiento 770 y un bloque de predicción compensado en movimiento 780. 50 Los conmutadores 702 y 714 son operados cooperativamente por un administrador de control 720 para conmutar el codificador entre un modo INTRA de codificación de video y un modo INTER de codificación de Video. El codificador 700 también comprende una unidad múltiplexora (MUX/RMUX) 790 para formar una sola corriente de bits es de numerosos tipos de información producidos por el codificador 700 para transmisión posterior a una terminal receptora remota, o por ejemplo para almacenamiento en un medio de almacenamiento masivo tal como una unidad 55 de disco duro de ordenador (no mostrada).
Debe indicarse que la presencia y las implementaciones de bloque de interpolación de subpíxeles de antemano 730 y bloque de interpolación de valor de subpíxeles sobredemanda 750 en la arquitectura del codificador dependen de la forma en la cual el método de interpolación de subpíxeles de conformidad con la invención se aplica. En 60 realizaciones de la invención en las cuales no se realiza interpolación de valor de subpíxeles de antemano, el codificador 700 no comprende bloque de interpolación de valor de subpíxeles de antemano 730. En otras realizaciones de la invención, solo la interpolación de subpíxeles de antemano se realiza y por lo tanto el codificador no incluye bloque de interpolación de valor de subpíxeles sobredemanda 750. En realizaciones en las cuales se realiza interpolación de valor de subpíxeles de antemano y sobredemanda, ambos bloques 730 y 750 están 65 presentes en el codificador 700.
La operación del codificador 700 de acuerdo con la invención se describirá ahora con detalle, En la descripción, se supondrá que cada trama de video no comprimido, recibido desde la fuente de video en la entrada 701, es recibida y procesada sobre una base de macrobloque por bloque, preferiblemente en un orden de escaneo de fondo. Se supondrá además que cuando la codificación de una nueva secuencia de video empieza, la primera trama de la 5 secuencia se codifica en modo INTRA. Posteriormente, el codificador está programado para codificar cada trama en formato INTER, a menos que se cumpla una de las siguientes condiciones: 1) se juzgue que la trama actual que es codificado es tan diferente de la trama de referencia usada en su predicción que se produce información de error de producción excesiva; 2) un intervalo de repetición INTRA trama predefinido a estirado; o 3) la retroalimentación es recibida desde una terminal receptora que indica una solicitud para una trama que ha de ser codificado en trama 10 INTRA..
La aparición de la condición 1) se detecta al monitorizar la salida del combinador 716. El combinador 716 forma una diferencia entre el macrobloque actual de la trama que es codificado y su predicción, producido en el bloque de predicción compensado en movimiento 780. Si una medición de esta diferencia (por ejemplo una suma de 15 diferencias absolutas de valores de píxel) excede un umbral predeterminado, el combinador 716 informa al administrador de control 720 mediante una línea de control 717 y el administrador de control 720 opera los conmutadores 702 y 714 para conmutar el codificador 700 en modo de codificación INTRA. La aparición de la condición 2) es monitoreada por medio de un controlador de tiempo o contador de tramas implementado en el administrador de control 720, de tal manera que si el controlador de tiempo expira, o el contador de trama alcanza 20 un número predeterminado de tramas, el administrador de control 720 opera los conmutadores 702 y 714 para conmutar el codificador en modo de codificación INTRA. La condición 3) es activada si el administrador de control 720 recibe una señal de retroalimentación desde, por ejemplo, una terminal receptora, a través de una línea de control 718 que indica que una renovación de trama INTRA es requerida por la terminal receptora. Esa condición podría surgir, por ejemplo, si una trama previamente transmitida fuera corrompida por interferencia durante su 25 transmisión, haciendo imposible decodificar en el receptor. En esta situación, el receptor emitiría una solicitud para que -el siguiente-trama fuera codificado el formato INTRA, con lo que se reinicializaría la secuencia de codificación.
Se supondrá además que el codificador y decodificador son implementados de tal manera que permiten la determinación de vectores de movimiento con una resolución espacial de una resolución de hasta un cuarto de píxel. 30 Como se verá a continuación, también son posibles niveles más finos de resolución.
La operación del codificador 700 en modo de codificación INTRA se describirá ahora. En el modo INTRA, el administrador de control 720 opera el conmutador 702 para aceptar entrada de vídeo desde la línea de entrada 719. La entrada de serial de video es recibida macrobloque por macrobloque desde la entrada 701 a través de la línea de 35 entrada 719 y cada macrobloque de píxeles de imagen original es transformado a coeficientes de DCT por el transformador DCT 705. Los coeficientes de DCT después se hacen pasar al cuantificador 706, donde son cuantificados mediante el uso de un parámetro de cuantificación QP. La selección del parámetro de cuantificación QP es controlado por el administrador de control 720 a través de la línea de control 722. Cada macrobloque transformado y cuantificado por DCT que constituye la información de imagen codificada por INTRA 723 de la trama 40 se hace pasar desde el cuantificador 706 hasta el MUX/DMUX' 790. El MUX/DMUX 790 combina la información de imagen codificada por INTRA con información de control posible (por ejemplo datos de encabezamiento, información de parámetros de cuantificación, datos de corrección de errores, etc.) para formar una sola corriente de bits de información de imagen codificadas 725. La codificación de longitud variable (VLC) se usa para reducir la redundancia de la corriente de bits de video comprimido, como lo conocen los expertos en la técnica. 45
Una imagen localmente decodificada se forma en el codificador 700 al pasar la salida de datos por el cuantificador 706 a través del codificador inverso 709 y aplicar una transformación de DCT inversa 710 a los datos cuantificados inversos. Los datos resultantes son después introducidos al combinador 712. En el modo INTRA, el conmutador 714 se fija de manera que la entrada al combinador 712 a través del conmutador 714 se fije a cero. De esta manera la 50 operación realizada por el combinador 712 es equivalente a pasar los datos de imagen decodificados formados por el cuantificador inverso 709 y la transformación de DCT inversa 710 no alterada.
En realizaciones de la invención en las cuales se realiza interpolación de valor de subpíxel de antemano, la salida del combinador 712 se aplica al bloque de interpolación de subpíxeles de antemano 730. La entrada al bloque de 55 interpolación de valor de subpíxeles de antemano 730 toma la forma de bloque de imagen decodificada. En el bloque de interpolación de valor de subpíxel de antemano 730, cada macrobloque decodificado es sometido a interpolación de subpíxel de tal manera que un subconjunto predeterminado de valores de subpíxeles de resolución de subpíxel se calcula de acuerdo con el método de interpolación de la invención y se almacena junto con los valores de píxel decodificados en el almacén de tramas 740. 60
En realizaciones en las cuales no se realiza la interpolación de subpíxeles de antemano, el bloque de interpolación de subpíxeles de antemano no está presente en la arquitectura del codificador y la salida del combinador 710, que comprende bloques de imagen decodificadas, se aplica directamente al almacén de tramas 740.
65
A medida que los macrobloques posteriores de la trama actual son recibidos y pasan por las etapas de codificación y
decodificación anteriormente descritas en los bloques 705, 706, 709, 710, 712, una versión decodificada de las tramas INTRA se acumula en el almacén de trama 740. Cuando el último macrobloque de la trama actual ha sido INTRA codificado y posteriormente decodificado, el almacén de tramas 740 contiene una trama completamente decodificado, disponible para usarse como una trama de referencia de predicción en la codificación de una trama de video posteriormente recibido en el formato INTER. En realizaciones de la invención en las cuales se realiza 5 interpolación de valor de subpíxel de antemano, la trama de referencia mantenido en el almacén de trama 740 es por lo menos parcialmente interpolado a resolución de subpíxel.
La operación del codificador 70 en el modo de codificación INTER se describirá ahora. En el modo de codificación INTER, el administrador de control 720 opera el conmutador 702 para recibir su entrada desde la línea 721, que comprende la salida del combinador 716. El combinador 716 forma información de error de predicción que 10 representa la diferencia entre el macrobloque actual de la trama que es codificado y su predicción, producida en el bloque de predicción compensado en movimiento 780. La información de error de predicción es transformada por DCT en el bloque 705 y cuantificada en el bloque 706 para formar un macrobloque de la información de error de predicción transformada por DCT y cuantificada. Cada macrobloque de información de error de predicción transformada por DCT y cuantificada se hace pasar desde el cuantificador 706 hasta la unidad MUX/DMUX 790. La 15 unidad MUX/DMUX 790 combina la información de error de predicción 723 con coeficientes de movimiento 724 (descritos a continuación) e información de control (por ejemplo datos de encabezamiento, información de parámetros de cuantificación, datos de corrección de errores, etc.) para formar una sola corriente de bits de información de imagen codificada 725.
20
La información de error de predicción localmente decodificada para cada macrobloque de la trama INTER-codificado es después formado en el codificador 700 al hacer pasar la información de error de predicción codificada 723 enviada por el cuantificador 706 a través del cuantificador inverso 709 y aplicar una transformación por DCT en el bloque 710. El macrobloque localmente decodificado resultante de la información de error de predicción es después introducido al combinador 712. En el modo INTER, el conmutador 714 se fija de modo que el combinador 712 25 también reciba macrobloques predichos en movimiento para el INTER-trama actual, producido en el bloque de predicción carpeteado en movimiento 780. El combinador 712 combina estas dos piezas de información para producir bloques de imagen reconstruidas del INTER-trama actual.
Como se describió antes, cuando se consideran las INTRA-tramas codificadas, en realizaciones de la invención en 30 los cuales se realiza interpolación de valor de subpíxel de antemano, la salida del combinador 712, se aplica al bloque de interpolación de subpíxel de antemano 730. Por lo tanto, la entrada al bloque de interpolación de valor de subpíxel de antemano 730 en el modo de codificación INTER también adopta la forma de bloques de imagen decodificados. En el bloque de interpolación de valor de subpíxel de antemano 730, cada macrobloque decodificado es sometido a interpolación de subpíxel de tal manera que un subconjunto predeterminado de valores de subpíxel se 35 calcula de acuerdo con el método de interpolación de la invención y se almacena junto con los valores de píxel decodificados en el almacén de trama 740. En realizaciones en las cuales no se realiza interpolación de subpíxel de antemano, el bloque de interpolación de subpíxel de antemano no está presente en la arquitectura del codificador y la salida del combinador 12, que comprende bloques de imagen decodíficadas, se aplica directamente al almacén de trama 740. 40
A medida que los macrobloques posteriores de la señal de video son recibidos desde la fuente de video y pasan por las etapas de codificación y decodificación previamente descritas en los bloques 705, 706, 709, 710, 712, una versión codificada del INTER-trama se construye en el almacén de tramas 740. Cuando el último macrobloque de la trama ha sido INTER-codificado y posteriormente decodificado, el almacén de tramas 740 contiene una trama 45 completamente decodificado, disponible para usarse como una trama de referencia de predicción en la codificación de una trama de video posteriormente recibida en formato INTER. En las realizaciones de la invención en las cuales se realiza interpolación de valor de subpíxel de antemano, la trama de referencia mantenido en el almacén de trama 740 es por lo menos parcialmente interpolado a resolución de subpíxel.
50
La formación de una predicción de un macrobloque de la trama actual se describirá ahora.
Cualquier trama codificada en formato INTER requiere una trama de referencia para predicción compensada en movimiento. Esto significa, entre otras cosas, que cuando se codifica una secuencia de video, la primera trama que ha de ser codificada, ya sea la primera trama en la secuencia o alguna otra trama, debe ser codificada en formato 55 INTRA. Esto, a su vez, significa que cuando el codificador de video 700 es conmutado en modo de codificación INTER por el administrador de control 720, una trama de 'referencia completo, formado al decodificar localmente una trama previamente codificada, ya está disponible en el almacén de trama 740 del codificador. En general, la trama de referencia se forma por decodificación local ya sea de una trama INTRA-codificada o de una trama INTER-codificada. 60
La primera etapa en la formación de una predicción para un macrobloque de la trama actual se realiza mediante el bloque de estimación de movimiento 760. El bloque de estimación de movimiento 760 recibe el macrobloque actual de la trama que es codificado a través de la línea 727 y realiza una operación de coincidencia de bloques para identificar una región en la trama de referencia que corresponda sustancialmente al macrobloque actual. De acuerdo 65 con la invención, el proceso de coincidencia de bloques se realiza a resolución de subpíxel de una manera que
depende de la implementación del codificador 700 y el grado de interpolación de subpíxel de antemano realizado. Sin embargo, el principio básico en que se basa el proceso de coincidencia de bloque es similar en todos los casos. Específicamente, el bloque de estimación de movimiento 760 realiza coincidencia de bloques al calcular los valores de diferencia (por ejemplo, la suma de las diferencias absolutas) que representa la diferencia en valores de píxel entre el macrobloque de la trama actual bajo examen y las regiones de mejor coincidencia candidatas de 5 píxeles/subpíxeles en la trama de referencia. Un valor de diferencia se produce para todos los posibles desplazamientos (por ejemplo, desplazamientos x, y en precisión de un cuarto o un octavo de subpíxel) entre el macrobloque de la trama actual y la región de prueba candidata dentro de una región de búsqueda predefinida de la trama de referencia y el bloque de estimación de movimiento 760 determina el valor de diferencia calculado más pequeño. El desplazamiento entre el macrobloque en la trama actual y la región de prueba candidata de valores de 10 píxel/valores de subpíxel en la trama de referencia que produce el valor de diferencia más pequeño define el vector de movimiento para el macrobloque en cuestión. En ciertas realizaciones de la invención, una estimación inicial para el vector de movimiento que tiene precisión de píxel de unidad se determina primero y después se refina a un nivel más fino de precisión de subpíxel, como se describe anteriormente.
15
En realizaciones del codificador en el cual no se realiza interpolación de valor de subpíxel de antemano, todos los valores de subpíxeles requeridos en el proceso de coincidencia de bloques se calcula en el bloque de interpolación de valor de subpíxel bajo demanda 750. El bloque de estimación de movimiento 760 controla al bloque de interpolación de valor de subpíxel bajo demanda 750 para calcular cada valor de subpíxel necesario en el proceso de coincidencia de bloques de una manera bajo demanda, siempre y cuando se requiera. En este caso, el bloque de 20 estimación de movimiento 760 se puede implementar para realizar coincidencia de bloques como un proceso de una etapa, en cuyo caso un vector de movimiento con la resolución de subpíxeles deseada se busca directamente, o se puede implementar para realizar coincidencia de bloques como un proceso de dos etapas. Si se adopta el proceso de dos etapas, la primera etapa puede comprender una búsqueda, por ejemplo, de un vector de movimiento de resolución de píxel completo o medio píxel y la segunda etapa se realiza para refinar el vector de movimiento de la 25 resolución de subpíxel deseada. Puesto que la coincidencia de bloques es un proceso exhaustivo, en el cual los bloques de n x m píxeles en la trama actual son comparados uno por uno con los bloques de n x m píxeles o subpíxeles en la trama de referencia interpolados, se debe apreciar que un subpíxel calculado de una manera bajo demanda por el bloque de interpolación de píxel bajo demanda 750 puede necesitar ser calculado muchas veces a medida que se determinan los valores de diferencia sucesivos. En un codificador de video, este enfoque no es el 30 más eficiente posible en términos de complejidad/carga computacional.
En realizaciones del codificador que usa sólo interpolación de valor de subpíxel de antemano, la coincidencia de bloque se puede realizar como un proceso de una etapa, ya que todos los valores de subpíxeles de la trama de referencia requeridos para determinar un vector de movimiento con la resolución de subpíxel deseada se calculan de 35 antemano en el bloque 730 y se almacenan en el almacén de tramas 740. Por lo tanto, están directamente disponibles para usarse en el proceso de coincidencia de bloques y pueden recuperarse según se requiera del almacén de trama 740 mediante el bloque de estimación de movimiento 760. Sin embargo, aún en el caso en donde todos los valores de subpíxel están disponibles del almacén de trama 740, es más eficiente computacionalmente realizar coincidencia de bloques como un proceso de dos etapas, ya que se requieren menos cálculos de diferencia. 40 Cabe apreciar que aunque la interpolación de valor de subpíxel de antemano completa reduce la complejidad computacional en el codificador, no es el enfoque más eficiente en términos de consumo de memoria.
En realizaciones del codificador en las cuales se usa interpolación de valor de subpíxel de antemano y bajo demanda, el bloque de estimación de movimiento 760 se implementa de tal manera que pueda recuperar valores de 45 subpíxel previamente calculados en bloque de interpolación de valor de subpíxel de antemano 730 y almacenar en el almacén de tramas 740 y además controlar el bloque de interpolación de valores de subpíxel bajo demanda 750 para calcular cualesquiera valores de subpíxel adicionales que pudieran ser requeridos. El proceso de coincidencia de bloques se puede realizar como un proceso de una sola etapa o de dos etapas. Si se usa una implementación de dos etapas, los valores de subpíxel calculados de antemano recuperados del almacén de tramas 740 se puede usar 50 en la primera etapa del proceso y la segunda etapa se puede implementar para usar valores de subpíxel calculados por el bloque de interpolación de valor de subpíxel bajo demanda 750. En este caso, ciertos valores de subpíxel usados en la segunda etapa del proceso de coincidencia de bloques pueden necesitar calcular muchas veces a medida que se hacen comparaciones sucesivas, pero el número de esos cálculos duplicados es significativamente menor que si no se usara cálculo de valor de subpíxeles de antemano. Además, el consumo de memoria se reduce 55 con respecto a realizaciones en las cuales se usa sólo interpolación de valor de subpíxel de antemano.
Una vez que el bloque de estimación de movimiento 760 ha producido un vector de movimiento del macrobloque de la trama actual bajo examen, envía el vector de movimiento al bloque de codificación de campo 770. El bloque de codificación de campo de movimiento 770 entonces se aproxima al vector de movimiento recibido del bloque de 60 estimación de movimiento 760 mediante el uso de un modelo de movimiento. El modelo de movimiento generalmente comprende un conjunto de funciones básicas. De manera más específica, el bloque de codificación de campo de movimiento 770 representa al vector de movimiento como un conjunto de valores de coeficiente (conocidos como coeficientes de movimiento) que, cuando se multiplican por las funciones básicas, forman una aproximación del vector de movimiento. Los coeficientes de movimiento 724 se hacen pasar desde el bloque de 65 codificación de campo de movimiento 770 al bloque de predicción compensado en movimiento 780. El bloque de
predicción compensado en movimiento 780 también recibe el valor de píxel/subpíxel de la región de prueba candidata de mejor coincidencia de la trama de referencia identificado por el bloque de estimación de movimiento 760. En la figura 7, se muestra que estos valores se hacen pasar a través de la línea 729 desde el bloque de interpolación de subpíxeles bajo demanda 750. En realizaciones alternativas de la invención, los valores de píxeles en cuestión se proporcionan desde el propio bloque de estimación de movimiento 760. 5
Mediante el uso de la representación aproximada del vector de movimiento generado por el bloque de codificación de campo de movimiento 770 y los valores de píxel/subpíxel de la región de prueba candidata de mejor coincidencia, el bloque de predicción compensado en movimiento 780 produce un macrobloque de valores de píxel predichos. El macrobloque de valores de píxel predichos representa una predicción de los valores de píxel del macrobloque actual 10 generado desde la trama de referencia interpolado. El macrobloque de valores de píxel predichos se hace pasar al combinador 716 donde es sustraído de la trama actual nuevo para producir información de error de predicción 723 desde el macrobloque, como se describió anteriormente.
Los coeficientes del movimiento 724 formados por el bloque de codificación de campo de movimiento también se 15 hacen pasar a la unidad MUX/DMUX 790, en donde se combinan con información de error de predicción 723 del macrobloque en cuestión y posible información de control desde el administrador de control 720 para formar una corriente de video codificada 725 para transmisión a una terminal receptora.
La operación-de un decodificador de video 800 de acuerdo con la invención se describirá ahora. Con referencia a la 20 figura 8, el decodificador 800 comprende una unidad desmultiplexora (MUX/DMUX) 810, que recibe la corriente de video codificada 725 del codificador 700 y la desmultiplexa, un cuantificador inverso 820, un transformador de DCT inverso 830, un bloque de predicción compensado en movimiento 840, un almacén de tramas 850, un combinador 860, un administrador de control 870, una salida 880, un bloque de interpolación de valor de subpíxel de antemano 845 y un bloque de interpolación de subpíxel bajo demanda 890 asociado con el bloque de predicción compensado 25 en movimiento 840. En la práctica, el administrador de control 870 del codificador 800 y el administrador de control 720 del codificador 700 pueden ser el mismo procesador. Este puede ser el caso si el codificador 700 y el decodificador 800 son parte del mismo codeo de video.
La figura 8 muestra una realización en la cual una combinación de interpolación de valor de subpíxel de antemano y 30 bajo demanda se usa en el decodificador. En otras realizaciones, sólo se usa la interpolación de valor de subpíxel de antemano, en cuyo caso el decodificador 800 no incluye bloque de interpolación de valor de subpíxel bajo demanda 809. En una realización preferida de la invención, no se usa interpolación de valor de subpíxel de antemano en el decodificador y, por lo tanto, el bloque de interpolación de valor de subpíxel de antemano 845 se omite desde la arquitectura del decodificador. Si se realiza tanto la interpolación de valor de subpíxel de antemano y bajo demanda, 35 el decodificador comprende los bloques 845 y 990.
El administrador de control 870 controla la operación del decodificador 800 en respuesta a si se decodifica un INTRA-trama o un INTER-trama. Una señal de control de activación INTRA/INTER, que hace que el decodificador conmute entre modos de decodificación se deriva, por ejemplo, de a información de tipo de imagen provista en la 40 porción de encabezamiento de cada trama de video comprimida recibida del codificador. La señal de control de activación de INTRA/INTER se hace al administrador de control 870 mediante la línea de control 815, junto con otras señales de control de codee de video desmultiplexadas de la corriente de video codificada 725 por la unidad MUX/DMUX 810.
45
Cuando una INTRA-trama se decodifica, la corriente de video codificada 725 es desmultiplexada en macrobloques INTRA-codificados e información de control. No se incluyen vectores de movimiento en la corriente de video codificada 725 para una trama INTRA-codificada. El proceso de decodificación se realiza macrobloque por macrobloque. Cuando la información codificada 723 para un macrobloque es extraída de la corriente de video 725 por la unidad de MUX/DMUX 810, se hace pasar al cuantifícador inverso 820. El administrador de.control controla el-50 cuantíficador inverso 820 para aplicar un nivel adecuado de cuantificación inversa al macrobloque de información codificada, de acuerdo con información de control provista en la corriente de video 725. El macrobloque cuantificado inverso es después inversamente transformado en el transformador de DCT inverso 830 para formar un bloque decodificado de información de imagen. El administrador de control 870 controla el combinados 860 para evitar que cualquier información de referencia sea usada en la decodificación de macrobloque INTRA-codificado. El bloque 55 decodificado de información de imagen se hace pasar a la salida de video 880 del decodificador.
En realizaciones del decodificador que emplean interpolación de valor de subpíxel de antemano, el bloque decodificado de información de imagen (es decir, valores de píxel) producidos como operaciones de cuantificación inversa y transformada inversa realizadas en los bloques 820 y 830 se hace pasar al bloque de interpolación de de 60 antemano 845. Aquí, la interpolación de se realiza de acuerdo con el método de la invención, el grado de interpolación de valor de subpíxel de antemano aplicado que es determinado por los detalles de implementación del decodificador. En realizaciones de la invención en las cuales no se realiza interpolación de valor de subpíxel bajo demanda, el bloque de interpolación de valor de subpíxel de antemano 845 interpola todos los valores de subpíxel. En realizaciones que usan una combinación de interpolación de valor de subpíxel de antemano y bajo demanda, el 65 bloque de interpolación de valor de subpíxel de antemano 845 interpola un cierto subconjunto de valores de
subpíxel. Esto puede comprender, por ejemplo, todos los subpíxeles en posiciones de medio píxel, o una combinación de subpíxeles en posiciones de medio píxel o un cuarto de píxel. En cualquier caso, después de la interpolación de valores de subpíxel de antemano, los valores de subpíxel interpolados se almacenan en el almacén de tramas 850, junto con los valores de píxel decodificados originales. A medida que los macrobloques posteriores son decodificados, interpolados de antemano y almacenados, - una trama decodificado, por lo menos parcialmente 5 interpolado a resolución de subpíxel es progresivamente ensamblado en el almacén de tramas 850 y se vuelve disponible para usarse como una trama de referencia para predicción compensada en movimiento.
En realizaciones del decodificador que no emplean interpolación de valor de subpíxel de antemano, el bloque decodificado de información de imagen (es decir, valores de píxel) producidos como resultado de la cuantificación inversa y operaciones de transformación inversa realizadas en el macrobloque en los bloques 820 y 830 se hace 10 pasar directamente al almacén de tramas 850. A medida que los macrobloques posteriores son decodificados y almacenados, una trama decodificado, que tiene una resolución de píxel de unidad es progresivamente ensamblado en el almacén de tramas 850 y se vuelve disponible para usarse como una trama de referencia para predicción compensada en movimiento.
15
Cuando una INTER-trama es decodificada, la corriente de video codificada 725 es desmultiplexada en información de error de predicción codificada 723 para cada macrobloque en la trama, coeficientes de movimiento asociados 724 e información de control. Nuevamente, el proceso de decodificación se realiza macrobloque por macrobloque. Cuando la información de error de predicción codificada 723 para un macrobloque es extraída de la corriente de video 725 por la unidad MUX/DMUX 810, se hace pasar al cuantificador inverso 820. El administrador de control 870 20 controla al cuantificador inverso 820 para aplicar un nivel adecuado de cuantificación inversa al macrobloque de información de error de predicción codificada, de acuerdo con la información de control recibida en la corriente de video 725. El macrobloque cuantificado inverso de información de error de predicción es después inversamente transformado en el transformador de DCT inverso 830 para producir información de error de predicción decodificada para el macrobloque. 25
Los coeficientes de movimiento 724 asociados con el macrobloque en cuestión son extraídos de la corriente de video 725 por la unidad de MUX/DMUX 810 y se hacen pasar al bloque de predicción compensado en movimiento 840, que reconstruye un vector de movimiento para el macrobloque mediante el uso del mismo modelo de movimiento que el usado para codificar el macrobloque INTER-codificado en el codificador 700. El vector de 30 movimiento reconstruido se aproxima al vector de movimiento originalmente determinado por el bloque de estimación de movimiento 760 del codificador. El bloque de predicción compensado en movimiento 840 del decodificador usa el vector de movimiento reconstruido para identificar la posición de un bloque de valores de píxel/subpíxel en una trama de referencia de predicción almacenado en el almacén de tramas 850. La trama de referencia puede ser, por ejemplo, una DTPA-trama previamente decodificada, o una INTER-trama previamente 35 decodificada. En cualquier caso, el bloque de valores de píxel/subpíxel indicados por el vector de movimiento reconstruido, representa la predicción del macrobloque en cuestión.
El vector de movimiento reconstruido puede indicar a cualquier píxel o subpíxel. Si el vector de movimiento indica que la predicción para el macrobloque actual se forma a partir de valores de píxel (es decir, los valores de píxel en 40 las posiciones de píxel de unidad), estos simplemente pueden ser recuperados del almacén de tramas 850, ya que los valores en cuestión son obtenidos directamente durante la decodificación de cada trama. Si el vector de movimiento indica que la predicción para el macrobloque actual se forma a partir de valores de subpíxel, estos deben ser recuperados del almacén de tramas 850, o calculados en el bloque de interpolación de subpíxel bajo demanda 890. El que los valores de subpíxel deban ser calculados, o simplemente puedan ser recuperados del 45 almacén de tramas, depende del grado de interpolación de valor de subpíxel antemano usado en el decodificador.
En realizaciones del decodificador que no emplean interpolación de valor de subpíxel de antemano, los valores de subpíxel requeridos son calculados todos en el bloque de interpolación de valore de subpíxel bajo demanda 890. Por otra parte, en realizaciones en las cuales todos los valores de subpíxel son interpolados de antemano, el bloque de 50 predicción compensado en movimiento 840 puede recuperar los valores de subpíxel requeridos directamente del almacén de tramas 850. En realizaciones que usan una combinación de antemano y una interpolación de valor de subpíxel bajo demanda, la acción requerida para obtener los valores de subpíxel requeridos depende de qué valores de subpíxel son 'interpolados de antemano. Al tomar como un ejemplo una realización en la cual todos los valores de subpíxel en posiciones de medio píxel se calculan de antemano, es evidente que si un vector de movimiento 55 reconstruido para un macrobloque indica a un píxel en una posición de unidad o un subpíxel en una posición de medio píxel, todos los valores de píxel o subpíxel requeridos para formar la predicción para el macrobloque están presentes en el almacén de tramas 850 y pueden ser recuperados por el bloque de predicción compensado en movimiento 840. Sin embargo, si el vector de movimiento indica un subpíxel en una posición de un cuarto de píxel, los píxeles requeridos para formar la predicción para los macrobloques no están presentes en el almacén de tramas 60 850 y por lo tanto se calculan en el bloque de interpolación de valor de subpíxel bajo demanda 890. En este caso, el bloque de interpolación de valor de subpíxel bajo demanda 890 recupera cualquier píxel o subpíxel requerido para formar la interpolación del almacén de tramas 850 y aplica el método de interpolación descrito más adelante. Los valores de subpíxel calculados en el bloque de interpolación de valor de subpíxel bajo demanda 890 se hacen pasar al bloque de predicción compensado en el bloque de predicción 840. 65
Una vez que se ha obtenido una predicción de un macrobloque, la predicción (es decir, un macrobloque de valores de píxel predicho) se hace pasar desde el bloque de predicción compensado en movimiento 840 hasta el combinador 860 donde se combina con la información de error de predicción decodificada para que el macrobloque forme un bloque de imagen reconstruida que, a su vez, se hace pasar a la salida de video 880 del decodificador.
5
Cabe apreciar que en implementaciones prácticas de codificador 700 y decodificador 800, el grado al cual las tramas son valores de subpíxel interpolados de antemano, y por lo tanto la cantidad de interpolación de valor de subpíxel bajo demanda que se realiza se puede escoger de acuerdo con o determinarse por la implementación de hardware del codificador de video 700, o el ambiente en el cual se ha de usar. Por ejemplo, si la memoria disponible para el codificador de video es limitada, o la memoria debe ser reservada para otras funciones, es apropiado limitar la 10 cantidad de interpolación de valor de subpíxel de antemano que se realiza. En otros casos, donde el microprocesador que realiza la operación de codificación de video tiene capacidad de procesamiento limitada, por ejemplo, el número de operaciones por segundo que se pueden ejecutar es comparativamente baja, es más apropiada para restringir la cantidad de interpolación de valor de subpíxel bajo demanda que se realiza. En un ambiente de comunicaciones móviles, por ejemplo, cuando la funcionalidad de codificación y decodificación de video 15 se incorpora en un teléfono móvil o una terminal inalámbrica similar para comunicación con una red de telefonía móvil, tanto la memoria como la potencia de procesamiento pueden ser limitadas. En este caso, una combinación de interpolación de valor de subpíxel de antemano y bajo demanda puede ser la mejor elección para obtener una implementación eficiente en el codificador de vídeo. En el decodificador de video 800, el uso de un valor de subpíxel de antemano generalmente no es preferido, ya que normalmente da por resultado el cálculo de muchos valores de 20 subpíxel que realmente no se usan en el proceso de decodificación. Sin embargo, cabe apreciar que aunque se pueden usar diferentes cantidades de interpolación de antemano y bajo demanda en el codificador y decodificador para optimizar la operación de cada uno, tanto el codificador como el decodificador se pueden implementar para usar la misma división entre interpolación de valor de subpíxel de antemano y bajo demanda.
25
Aunque la descripción anterior no describe la construcción de tramas bidireccionalmente predichas (tramas B) en el codificador 700 y el decodificador 800, se debe entender que en realizaciones de la invención esa capacidad se puede proveer. El proveer esa capacidad se considera dentro de la capacidad de un experto en la técnica.
Un codificador 700 o un decodificador 800 de conformidad con la invención pueden utilizarse mediante el uso de 30 hardware o software, o mediante el uso de una combinación adecuada de ambos. Un codificador o decodificador implementado en software puede ser, por ejemplo, un programa separado o un bloque de construcción de software que puede ser usado por varios programas. En la descripción anterior y en los dibujos, los bloques funcionales están representados como unidades separadas, pero la funcionalidad de estos bloques puede ser implementada, por ejemplo, en una unidad de programa de software. 35
El codificador 700 y decodificador 800 se pueden combinar para formar un códec de video que tenga funcionalidad de codificación como de decodificación. Además de implementarse en una terminal multimedia, el códec también se
5 puede implementar en una red. Un códec de acuerdo con la invención puede ser un programa de ordenador o un elemento de programa de ordenador, o puede implementarse por lo menos parcialmente mediante el uso de 40 hardware.
El método de interpolación de subpíxeles usado en el codificador 700 y el decodificador 800 de acuerdo con la invención se describirán ahora con detalle. El método primero será introducido a un nivel conceptual general y después se describirán dos realizaciones preferidas. En la primera realización preferida, la incorporación de valor de 45 subpíxeles se realiza a una resolución de 1/4 de píxel y en el segundo método es una resolución de 1/8 de píxel.
Debe indicarse que la interpolación debe producir valores idénticos en el codificador y el decodificador, pero su implementación debe ser optimizada para ambas entidades por separado. Por ejemplo, en un codificador de acuerdo con la primera realización de la invención en el cual la interpolación de valores de subpíxeles se realiza a 50 una resolución de 1/4 de píxel, lo más eficiente es calcular píxeles de una resolución de ½ de antemano y calcular valores para subpíxeles de una resolución de 1/4 de una manera sobre demanda, sólo cuando sea necesario durante la estimación de movimiento. Esto tiene el efecto de limitar el uso de memoria mientras se mantiene la complejidad/carga computacional a un nivel aceptable. El decodificador, por otra parte, es ventajoso no calcular previamente ninguno de los subpíxeles. Por lo tanto, cabe apreciar que una realización preferida del decodificador 55 no incluye bloque de interpolación de valor de subpíxel de antemano 845 y toda la interpolación de valor de subpíxel se realiza en un bloque de interpolación de valor de subpíxel bajo demanda 890.
En la descripción del método de interpolación que se proporciona más adelante, se hacen referencias a las posiciones de píxel ilustradas en la figura 14a. En esta figura, los píxeles marcados con la letra A representan 60 píxeles originales (es decir, píxeles que residen en posiciones horizontales y verticales). Los píxeles marcados con otras letras representan subpíxeles que han de ser interpolados. La descripción siguiente se añadirá a las convenciones previamente introducidas referentes a la descripción de posición de píxeles y subpíxeles.
A continuación, se describirán las etapas requeridas para interpolar todas las posiciones de subpíxeles: 65
Los valores para los subpíxeles de resolución 1/2 marcados con la letra b se obtienen al calcular primero un valor b intermedio con el uso de un filtro de orden K-ésimo, de acuerdo con:
5
donde XI es un vector de coeficientes de filtro, Al es un vector correspondiente de valores de píxel originales A situados en posiciones horizontales de unidad y verticales de unidad y K es un entero que define el orden del filtro. Por lo tanto, la ecuación 9 se puede expresar nuevamente como:
10
Los valores de los coeficientes de filtro XI y el orden del filtro K pueden variar de una realización a otra. Igualmente, valores de coeficientes diferentes se pueden usar en el cálculo de diferentes subpíxeles dentro de una realización. En otras realizaciones, los valores de coeficientes de filtro XI y el orden del filtro pueden depender de cuál de los subpíxeles de resolución b de 1/2 es interpolada. Los píxeles AI están dispuestos simétricamente con respecto al 15 subpíxel b de resolución de 1/2 que es interpolada y son los vecinos más cercanos de ese subpíxel. En el caso del subpíxel b de resolución de 1/2 situado en una posición horizontal de medio y una posición vertical de unidad, los píxeles Al están dispuestos horizontalmente con respecto a b (como se muestra en la figura 14b). Si el subpíxel b de resolución 1/2 situado en una posición horizontal de unidad y una posición vertical de medio es interpolado, los subpíxeles Al están dispuestos verticalmente con respecto a b (como se muestra en la figura 14c). 20
Un valor final para el subpíxel b de resolución de 1/2 se calcula al dividir el valor b intermedio entre una escala constante, que lo trunca para obtener un número entero y ajustando el resultado para que quede en el intervalo [0, 2n - 1]. En realizaciones alternativas de la invención, el redondeo se puede realizar en lugar del truncamiento. Preferiblemente, la escala' constante se escoge para que sea igual a la suma de los coeficientes de filtro XI. 25
Un valor para el subpíxel de resolución de 1/2 marcado con la letra c también se obtiene al calcular un valor intermedio c mediante el uso de un filtro de orden M-ésimo, de aduerdo con:
30
donde yI es .un vector de coeficientes de filtro, bI es un vector correspondiente de valores intermedios bI en la dirección horizontal o vertical, es decir:
35
Los valores de los coeficientes de filtro yI y el orden del filtro M pueden variar de una realización a otra. Igualmente, los valores de coeficientes diferentes se pueden usar en el cálculo de diferentes subpíxeles dentro de una realización. Preferiblemente, los valores de b son valores intermedios para subpíxeles b de resolución de ½ que están dispuestos simétricamente con respecto al subpíxel c de resolución de 1/2 y son los vecinos más cercanos del 40 subpíxel c. En una realización de la invención, los subpíxeles b de resolución de 1/2 están dispuestos horizontalmente con respecto al subpíxel c, en una realización alternativa, están dispuestos verticalmente con respecto al subpíxel c.
Un valor final del subpíxel c de resolución de 1/2 se calcula al dividir el valor c intermedio entre una escala2 45 constante, al truncarlo para obtener un número entero y ajustando el resultado para que quede en el intervalo [0, 2n - 1]. En realizaciones alternativas de la invención, se puede realizar redondeo en lugar de truncamiento. Preferiblemente, la escala2 constante es igual a la escala1 * escala1.
Debe indicarse que el uso de valores b intermedios en la dirección horizontal conduce al mismo resultado que si se 50 usaran valores b intermedios en la dirección vertical.
Existen dos alternativas para interpolar valores para los subpíxeles de resolución de 1/4 marcados con la letra h. Ambas implican interpolación lineal a lo largo de una línea diagonal que enlaza subpíxeles de resolución de 1/2 vecinos al subpíxel h de resolución de 1/4 que es interpolado. En una primera realización, un valor para subpíxel h 55 se calcula al promediar los valores de los dos subpíxeles b de resolución de ½ más cercanos al subpíxel h. En una segunda realización, un valor para el subpíxel h se calcula al promediar los valores del píxel A más cercano y el subpíxel c de resolución de ½ más cercano. Cabe apreciar que esto proporciona la posibilidad de usar diferentes combinaciones de interpolaciones diagonales para determinar los valores para subpíxeles h dentro de los confines de diferentes grupos de 4 píxeles A de imagen. Sin embargo, también cabe apreciar que la misma combinación se 60 debe usar tanto en el codificador como en el decodifícador para producir resultados de interpolación idénticos. La
figura 15 ilustra 4 posibles elecciones de interpolación diagonal para subpíxeles h en grupos adyacentes de 4 píxeles dentro de una imagen. Las simulaciones en el ambiente TML han verificado que ambas realizaciones dan por resultado una eficiencia de compresión similar. La segunda realización tiene mayor complejidad, ya que el cálculo del subpíxel c requiere el cálculo de varios valores intermedios. Por lo tanto, se prefiere la primera realización. 5
Los valores para subpíxeles de resolución de 1/4 marcados con la letra d y g se calculan a partir de los valores de sus vecinos horizontales más cercanos mediante el uso de interpolación lineal. En otras palabras, un valor para el subpíxel de resolución de 1/4 se obtiene al promediar valores de sus vecinos horizontales más cercanos, el píxel A de imagen original y el subpíxel b de resolución de 1/2. De manera similar, un valor para un subpíxel g de resolución 10 de 1/4 se obtiene al sacar el promedio de sus dos vecinos horizontales más cercanos, los subpíxeles b y c de resolución de 1/2.
Los valores para subpíxeles de resolución de 1/4 marcados con la letra e, f e i se calculan a partir de los valores de sus vecinos más cercanos en su dirección vertical mediante el uso de interpolación lineal. De manera más 15 específica, un valor para subpíxel e de resolución de 1/4 se obtiene al promediar los valores de sus dos vecinos verticales más cercanos, el píxel A de imagen original y el subpíxel b de resolución de 1/2. De manera similar, un valor para el subpíxel f de resolución de 1/4 se obtiene al sacar el promedio de sus dos vecinos verticales más cercanos, los subpíxeles b y c de resolución de 1/2. En una realización de la invención, un valor para el subpíxel i de resolución de 1/4 se obtiene de una manera idéntica a la que se acaba de describir en conexión con el subpíxel f de 20 resolución de 1/4. Sin embargo, en una realización alternativa de la invención, y en común con los modelos de prueba TML5 y TML6 de H.26 previamente descritos, el subpíxel i de resolución de 1/4 se determina mediante el uso de los valores de los cuatro píxeles de imagen originales más cercanos de acuerdo con (A1 + A2 + A3 + A4 + 2)/4.
Debe indicarse también que en todos los casos en donde un promedio que implique valores de píxel y/o subpíxel se 25 determina, el promedio se puede formar de cualquier manera apropiada. Por ejemplo, el valor para el subpíxel d de resolución de 1/4 se puede definir como d = (A + b)/2 o como d = (A + b + 1)/2. La adición de 1 a la suma de valores para el píxel A y el subpíxel b de resolución de tiene el efecto de causar cualquier operación de redondeo o truncamiento posteriormente aplicada para redondear o truncar el valor para d al siguiente valor entero más alto. Esto es cierto para cualquier suma de valores enteros y se puede aplicar a cualquiera de las operaciones de 30 promedio realizadas de acuerdo con el método de la invención para controlar los efectos de redondeo o truncamiento.
Debe indicarse que el método de interpolación de valor de subpíxel de acuerdo con la invención proporciona ventajas sobre cada uno de TML5 y TML6. 35
A diferencia de TML5, en el cual los valores de algunos de los subpíxeles de resolución de 1/4 dependen de valores previamente interpolados obtenidos para otros subpíxeles de resolución de 1/4, y en el método de acuerdo con la invención, todos los subpíxeles de resolución de 1/4 se calculan a partir de píxeles de imagen original o posiciones de subpíxel de resolución de mediante el uso de interpolación lineal. Por lo tanto, la reducción en precisión de esos 40 valores de subpíxel de resolución de 1/4 se produce en TML5 debido al truncamiento y al ajuste intermedio de los otros subpíxeles de resolución de 1/4 a partir de los cuales se calculan, no tiene lugar en el método de acuerdo con la invención. En particular, con referencia a la figura 14a, los subpíxeles h de resolución de 1/4 (y el subpíxel i en una realización de la invención) se interpolan diagonalmente para reducir la dependencia de los otros subpíxeles de 1/4. Además, en el método de acuerdo con la invención, el número de cálculos (y por lo tanto el número de ciclos de 45 procesador) requeridos para obtener un valor para aquellos subpíxeles de resolución de 1/4 en el decodificador se reducen en comparación con TML5. Además, el cálculo de cualquier valor de subpíxel de resolución de 1/4 requiere un número de cálculos que es sustancialmente similar al número de cálculos requeridos para determinar cualquier otro valor de subpíxel de resolución 1/4. De manera más específica, en una situación en donde los valores de subpíxel de resolución de ½ requeridos ya están disponibles, por ejemplo, han sido calculados de antemano, el 50 número de cálculos requeridos para interpolar un valor de subpíxel de resolución de 1/4 a partir de los valores de subpíxel de resolución de 1/2 precalculados es el mismo que el número de cálculos requeridos para calcular cualquier otro valor de subpíxel de resolución de 1/4 a partir de los valores de subpíxel de resolución de 1/2 disponibles.
55
En comparación con TML6, el método de acuerdo con la invención no requiere aritmética de precisión alta para usarse en el cálculo de todos los subpíxeles. Específicamente, puesto que todos los valores de subpíxel de resolución de 1/4 se calculan a partir de píxeles de imagen original o valores de subpíxel de resolución de ½ usando interpolación lineal, se puede usar aritmética de precisión inferior en su interpolación. Consecuentemente, implementaciones de hardware del método de la invención, por ejemplo en un Circuito Integrado Especifico de 60 Aplicación, (ASIC), el uso de aritmética de precisión más baja reduce el número de componentes (por ejemplo, compuertas) que deben ser dedicadas al cálculo de valores de subpíxel de resolución de 1/4. Esto, a su vez, reduce el área global de silicio que se debe dedicar a la función de interpolación. Puesto que la mayoría de los subpíxeles son de hecho subpíxeles de resolución de 1/4 (12 de los 15 subpíxeles ilustrados en la figura 14a), la ventaja proporcionada por la invención a este respecto es particularmente significativa. En implementaciones de software, 65 donde la interpolación de subpíxel se realiza mediante el uso del conjunto de instrucciones estándares de una
unidad de procesador central (CPU) para propósitos generales o mediante el uso de un Procesador de Señal Digital (DSP), una reducción en la precisión de la aritmética requerida generalmente conduce a un incremento en la velocidad a la cual se pueden realizar los cálculos. Esto es particularmente ventajoso en implementaciones de "bajo coste", en las cuales es conveniente usar una CPU para propósitos generales más que cualquier forma de ASIC.
5
El método de acuerdo con la invención proporciona ventajas adicionales comparadas con TML5. Como se mencionó anteriormente, en el decodificador sólo una de las 15 posiciones de subpíxel se requiere en cualquier tiempo dado, a saber, aquella que se indica por información de vector de movimiento recibida. Por lo tanto, es ventajoso si el valor de un subpíxel en cualquier posición de subpíxel puede calcularse con el número mínimo de etapas que dan como resultado un valor correctamente interpolado. El método de acuerdo con la invención provee esta capacidad. Como 10 se menciona en la descripción detallada anteriormente dada, el subpíxel c de resolución de 1/2 se puede interpolar al filtrar ya sea en la dirección vertical u horizontal del mismo valor que se obtiene para c independientemente de que filtro horizontal o vertical se use. El decodificador por lo tanto puede sacar ventaja de esta propiedad al calcular valores para subpíxeles f y g de resolución de 1/4, de tal manera que reduzca al mínimo el número de operaciones requeridas para obtener los valores requeridos. Por ejemplo, si el decodificador requiere un valor para subpíxel f de 15 resolución de 1/4, el subpíxel c de resolución de 1/2 debe ser interpolado en la dirección vertical. Si se requiere un valor para el subpíxel g de resolución de 1/4, es ventajoso interpolar un valor para c en la dirección horizontal. Por lo tanto, en general, se puede decir que el método de acuerdo con la invención provee flexibilidad en la forma en la cual los valores son derivados de ciertos subpíxeles de resolución de 1/4. No se proporciona tal flexibilidad en TML5.
20
Dos realizaciones específicas se describirán ahora con detalle. La primera representa una realización preferida para calcular subpíxeles hasta con una resolución de de píxel, mientras que en la segunda, el método de acuerdo con la invención se extiende al cálculo de valores para subpíxeles que tienen una resolución de píxel de hasta 1/8. Para ambas realizaciones se proporciona una comparación entre la flexibilidad/carga computacional que resulta de usar el método de acuerdo con la invención y que resultaría del uso de los métodos de interpolación de acuerdo con TML5 y 25 TML6 en circunstancias equivalentes.
La realización preferida para interpolar subpíxeles a resolución .de píxel de 1/4 se describirá con referencia a las figuras 14a, 14b y 14c. A continuación, se supondrá que todos los píeles de imagen y valores interpolados finales para subpíxeles están representados con 8 bits. 30
Cálculo de subpíxeles de resolución de 1/2 en i) posición horizontal de media unidad y posición vertical de unidad ií) posición horizontal de unidad y posición vertical de media unidad.
1. Un valor para el supíxel en una posición horizontal de media unidad y vertical de unidad, es decir, subpíxel b 35 de resolución de 1/2 en la figura 14a, se obtiene al calcular primero el valor intermedio b = (A1 - 5A2 + 20A3 + 20A4 - 5A5 + A5) mediante el uso de valores de seis píxeles (A1 a A6) que están situados en posiciones horizontales de unidad y verticales de unidad ya sea en la fila o en la columna de píxeles que contienen b y que están dispuestos simétricamente alrededor de b, como se muestra en las figuras 14b y 14c. Un valor final para su píxel b de resolución de 1/2 se calcula como (b + 16)/32 donde el operador / indica división con 40 truncamiento. El resultado es ajustado para quedar en el intervalo [0, 255].
Cálculo de subpíxeles de resolución de 1/2 en la posición horizontal de media unidad y posición vertical de media unidad.
2. Un valor para el subpíxel en la posición horizontal de media unidad y posición vertical de media unidad, es decir subpíxel c de resolución de 1/2 en la figura 14a, se calcula como c = (b1 - 5b2 + 20b3 + 20b4 - 5b5 + b6 + 45 512)/1024 mediante el uso de valores intermedios b para los seis subpíxeles de resolución de 1/2 más cercanos que están situados ya sea en la fila o la columna de subpíxeles que contienen c y que están dispuestos simétricamente alrededor de c. Nuevamente, el operador / indica división con truncamiento y el resultado se ajusta para quedar en el intervalo de [0, 255]. Como se explicó anteriormente, el uso de valores intermedios para subpíxeles b de resolución .de 1/2 en la dirección horizontal conduce al mismo resultado que 50 el uso de valores intermedios b para subpíxeles b de resolución de 1/2 en la dirección vertical. Por lo tanto, en un codificador de acuerdo con la invención, la dirección para interpolar subpíxeles b de resolución de 1/2 se puede escoger de acuerdo con un modo de implementación preferido. En un decodificador de acuerdo con la invención, la dirección para interpolar subpíxeles b se escoge de acuerdo con cuáles subpíxeles, si acaso hay alguno, de resolución de 1/4 serán interpolados mediante el uso del resultado obtenido para el sub:píxel c de 55 resolución de 1/2.
Cálculo de subpíxeles de resolución de 1/4 en i) posición horizontal de un cuarto de unidad y posición vertical de unidad; ii) posición horizontal de un cuarto de unidad y posición vertical de media unidad; iii) posición horizontal de unidad y posición vertical de un cuarto de unidad; y iv) posición horizontal de media unidad y posición vertical de un cuarto de unidad. 60
3. Los valores para subpíxeles de resolución de 1/4, situados en posición horizontal de un cuarto de unidad y posición vertical de unidad se calculan de acuerdo con d = (A + b)/2 mediante el uso del píxel A de imagen original más cercano y el subpíxel b de resolución de 1/2, más cercano en la dirección horizontal. De manera similar, los valores para subpíxeles g de resolución de 1/4, situados en una posición horizontal de un cuarto de unidad y una posición vertical de media unidad se calculan de acuerdo con g = (b + c)/2 mediante el uso de los 65 dos subpíxeles de resolución de 1/2 más cercanos en la dirección horizontal. De manera similar, los valores
para subpíxeles e de resolución de 1/4, situados en una posición horizontal de unidad y una posición vertical de un cuarto de unidad, se calculan de acuerdo con e = (A + b)/2 mediante el uso del píxel A de imagen original más cercano y el subpíxel b de resolución de 1/2 más cercano en la dirección vertical. Los valores para subpíxeles f de resolución de 1/4, situados en una posición horizontal de media unidad y una posición vertical de un cuarto de unidad, se determinarla partir de f = (b + c)/2 mediante el uso de los dos subpíxeles de 5 resolución de 1/2 más cercanos en la dirección vertical. En todos los casos, el operador / indica división con truncamiento.
Cálculo de subpíxeles de resolución de 1/4 en una posición horizontal de un cuarto de unidad y una posición vertical de un cuarto de unidad.
4. Los valores para subpíxeles h de resolución de 1/4 situados en una posición horizontal de un cuarto de 10 unidad y una posición vertical de un cuarto de unidad se calculan de acuerdo con h = (b1 + b2)/2, mediante el uso de los dos subpíxeles b de resolución de 1/2 más cercanos en la dirección diagonal. Nuevamente, el operador / indica división con truncamiento.
5. Un valor para el subpíxel de resolución de 1/4 marcado con la letra i se calcula a partir de i = (A1 + A2 + A3 + A4 +2)/4 mediante el uso de los cuatro subpíxeles A originales más cercanos. Una vez más, el operador / indica 15 división con truncamiento.
Un análisis de la complejidad computacional de la primera realización preferida de la invención se presentará ahora.
En el codificador, es probable que los mismos valores de subpíxel se calculen múltiples veces. Por lo tanto, y como 20 se explicó anteriormente, la complejidad del codificador se puede reducir al calcular previamente todos los valores de subpíxel y almacenarlos en memoria. Sin embargo, esta solución incrementa el uso de memoria por un margen. En una realización preferida de la invención, en la cual la precisión de vector de movimiento es resolución de píxel de 1/4 tanto en la dimensión horizontal como en la vertical, el almacenamiento de valores de subpíxel calculados previamente para la imagen completa requiere 16 veces la memoria requerida para almacenar la imagen no 25 interpolada original. Para reducir el uso de memoria, todos los subpíxeles de resolución de 1/2 se pueden interpolar de antemano y los subpíxeles de resolución de 1/4 se pueden calcular bajo demanda, es decir, sólo cuando sean necesarios. De acuerdo con el método de la invención, la interpolación bajo demanda de valores para subpíxeles de resolución de 1/4 sólo requiere la interpolación lineal de subpíxeles de resolución de 1/2. Cuatro veces la memoria de imagen original se requiere para almacenar subpíxeles de resolución de 3 precalculados, ya que sólo 8 bits son 30 necesarios para representarlos.
Sin embargo, si la misma estrategia de calcular previamente todos los subpíxeles de resolución de 1/2 al usar interpolación de antemano se usa junto con el esquema de interpolación director de TML6, los requerimientos de memoria incrementan hasta 9 veces la memoria requerida para almacenar la imagen no interpolada original. Esto 35 resulta del hecho de que un número mayor de bits se requiere para almacenar los valores intermedios de alta precisión asociados con cada subpíxel de resolución de 1/2 en TML6. Además, la complejidad de interpolación de subpíxel durante la estimación de movimiento es mayor en TML6, ya que el escalado y el ajuste se tienen que realizar para cada posición de subpíxel de 1/2 y 1/4.
40
A continuación, la complejidad del método de interpolación de valor de subpíxel de acuerdo con la invención, cuando se aplica en un decodíficador de video, se compara con el de los esquemas de interpolación usados en TML5 y TML6. En todo el análisis que sigue, se supone que en cada método la interpolación de cualquier valor de subpíxel se realiza mediante el uso únicamente del número mínimo de etapas requeridas para obtener un valor correctamente interpolado. Además, se supone que cada método es implementado de una manera basada en 45 bloques, es decir, valores intermedios comunes para todos los subpíxeles para ser interpolados en el bloque N x M particular se calculan sólo una vez. Un ejemplo ilustrativo se proporciona en la figura 16. Con referencia a la figura 16, se puede ver que para calcular un bloque 4 x 4 de subpíxeles c de resolución de 1/2 primero se calcula un bloque de 9 x 4 de subpíxeles b de resolución de 1/2.
50
En comparación con el método de interpolación de valor de subpíxel en TML5, el método de acuerdo con la invención tiene una complejidad computacional más baja por las siguientes razones:
1. A diferencia del esquema de interpolación de valor de subpíxel usado en TML5, de acuerdo con el método de la invención, un valor para subpíxel c de resolución de 1/2 se puede obtener al filtrar ya sea en la dirección 55 vertical u horizontal. Por lo tanto, para reducir el número de operaciones, el subpíxel c de resolución de 1/2 se puede interpolar en la dirección vertical si se requiere un valor para subpíxel f de resolución de 1/4 y en la dirección horizontal si se requiere un valor para un píxel g de subpíxel de resolución de 1/4. Como un ejemplo, la figura 17 muestra todos los valores de subpíxel de resolución de 1/2 que se deben calcular para interpolar valores para subpíxeles g de resolución de 1/4 en un bloque de imagen definido por píxeles de imagen 60 originales de 4 x 4 mediante el uso del método de interpolación TML5 (figura 17a) y mediante el uso del método de acuerdo con la invención (figura 17b). En este ejemplo, el método de interpolación de valor de subpíxel de acuerdo con TML5 requiere un total de 88 subpíxeles de resolución de 1/2 para ser interpolada, mientras que el método de acuerdo con la invención requiere el cálculo de 72 subpíxeles de resolución de 1/2. Como se puede ver a partir de la figura 17b, de acuerdo con la invención, los subpíxeles c de resolución de 1/2 son interpolados 65 en la dirección horizontal para reducir el número de cálculos requeridos.
2. De acuerdo con el método de la invención, el subpíxel h de resolución de 1/4 se calcula por interpolación lineal a partir de sus dos subpíxeles de resolución de 1/2 vecinos más cercanos en la dirección diagonal. Los números respectivos de subpíxeles de resolución de que se deben calcular para obtener valores para subpíxeles h de resolución de 1/4 dentro de un bloque de 4 x 4 de píxeles de imagen original mediante el uso del método de interpolación de valor de subpíxel de acuerdo con TML5 y el método de acuerdo con la 5 invención se muestra en las figuras 18(a) y 18(b), respectivamente. Al usar el método de acuerdo conTML5, es necesario interpolar un total de 56 subpíxeles de resolución de 1/2, mientras que de acuerdo con el método de la invención, es necesario interpolar 40 subpíxeles de resolución de 1/2.
La tabla 1 resume las complejidades de decodificador de los tres métodos de interpolación de valor de subpíxel 10 considerados aquí, que de acuerdo con TML5, el método de interpolación directo usado en TML6 y el método de acuerdo con la invención. La complejidad se mide en términos del número de operaciones de interpolación de filtro de seis ramas y lineal realizadas. Se supone que la interpolación de subpíxel i de resolución de 1/4 se calcula de acuerdo con i = (A1 + A2 + A3 + A4 +2)/4 que es interpolación bilineal y efectivamente comprende dos operaciones de interpolación lineal. Las operaciones necesarias para interpolar los valores del subpíxel con un bloque de 4 x 4 de 15 los píxeles de imagen original se listan para cada una de las 15 posiciones de subpíxel, por conveniencia de referencia, están numeradas de acuerdo con el esquema mostrado en la figura 19. Con referencia a la figura 19, la posición 1 es la posición en un píxel A de imagen original y las posiciones 2 a 16 son posiciones de subpíxel. La posición 16 es la posición de subpíxel i de resolución de 1/4. Para calcular el número promedio de operaciones se ha supuesto que la probabilidad de un vector de movimiento que indica a cada posición de subpíxel es la misma. La 20 complejidad promedio por lo tanto es el promedio de las 15 sumas calculadas para cada posición de subpíxel y la posición de píxel completo individual.
Tabla 1: Complejidad de interpolación de subpíxel de resolución de 1/4 en TML5, TML6 y el método de acuerdo con la invención 25
- TML5 TML6 Método de la invención
- Posición
- lineal 6 ramas Lineal 6 ramas lineal 6 ramas
- 1
- 0 0 0 0 0 0
- 3,9
- 0 16 0 16 0 16
- 2,4,5,13
- 16 16 0 16 16 16
- 11
- 0 52 0 52 0 52
- 7,15
- 16 52 0 52 16 52
- 10,12
- 16 68 0 52 16 52
- 6,8,14
- 48 68 0 52 16 32
- 16
- 32 0 32 0 32 0
- Promedio
- 19 37 2 32 13 28,25
Se puede ver a partir de la Tabla 1 que el método de acuerdo con la invención requiere menos operaciones de filtro de seis ramas que el método de interpolación de valor de subpíxel de acuerdo con TML6 y sólo unas cuantas operaciones de interpolación lineal adicionales. Puesto que las operaciones de filtro de seis ramas son mucho más 30 complejas que las operaciones de interpolación lineal, la complejidad de los dos métodos es similar. El método de interpolación de valor de subpíxel de acuerdo con TML5 tiene una complejidad considerablemente más alta.
La realización preferida para interpolar subpíxeles hasta con una resolución de píxel de 1/8 se describirá ahora con referencia a las figuras 20, 21 y 22. 35
La figura 20 presenta la nomenclatura usada para describir píxeles, subpíxeles de resolución de 1/2, subpíxeles de resolución de 1/4 y subpíxeles de resolución de 1/8 en esta aplicación extendida al método de acuerdo con la invención.
40
1. Los valores para subpíxeles de resolución de 1/2 y resolución de 1/4 marcados con las letras b1, b2 y b3 en la figura 20 se obtienen al calcular primero los valores intermedios b1 = (-3A1 + 12A2 - 37A3 + 229A4 + 71A5 + 21A6 + 6A7 – A8) ; b2 = (-3A1 + 12A2 - 39A3 + 158A4 + 158A5 - 39A6 + 12A7 – 3A8); y b3 = (-A1 + 6A2 - 21A3 + 71A4 + 229A5 - 37A6 + 13A7 - 3A8); mediante el uso de los valores de los ocho píxeles de imagen más cercanos (A1 a A8) situados en una posición horizontal de unidad y una posición vertical de unidad ya sea en la fila o la 45 columna que contiene b1, b2 y b3 y dispuestos simétricamente alrededor del subpíxel b2 de resolución de 1/2. Las asimetrías en sus coeficientes usados para obtener valores intermedios b1 y b3 explican el hecho, de que los píxeles A1 a A8 no están simáricamente ubicados con respecto a los subpíxeles b1 y b3 de resolución de 1/4. Los valores finales para los subpíxeles bi, i =1, 2, 3 se calculan de acuerdo con bi = (bi + 128)/256 donde el operador / indica división con truncamiento. El resultado se ajusta para quedar en el intervalo [0, 255]. 50
2. Los valores para los subpíxeles de resolución de 1/2 y resolución de 1/4 marcados con cij, i, j = 1, 2, 3, se calculan de acuerdo con c1j = (-3b1j + 12b2j - 37b3j + 229b4j + 71b5j - 21b6j + 6b7j – b8j + 32768)/65536, c2j = (-3b1j + 12b2j – 39b3j + 158b4j + 158b5j + 39b6j + 12b7j – 3b8j + 32768)/65536 y c3j = (-b1j + 6b2j – 21b3j + 71b4j - 229b5j
– 37b6j + 13b7j - 3b8j + 32768)/65536 mediante el uso de los valores intermedios b1, b2 y b3 calculados para los ocho subpíxeles más cercanos (b1j a b8j) en la dirección vertical, los subpíxeles b3 están situados en la columna que comprende los subpíxeles de resolución de y resolución de 1/2 que son interpolados y están dispuestos simétricamente alrededor del subpíxel c2j de resolución de 1/4. Las asimetrías en los coeficientes de filtro usados para obtener valores para subpíxeles c1j y c3j explican el hecho de que los subpíxeles b1j a b8j no están 5 simétricamente ubicados con respecto a los subpíxeles c1j y c3j de resolución de 1/4. Una vez más, el operador / indica división con truncamiento. Antes de que los valores interpolados para los subpíxeles sean almacenados en la memoria de trama son ajustados para quedar en [0, 255]. En una realización alternativa de la invención, los subpíxeles de resolución de 1/2 y de resolución de 1/4 se calculan mediante el uso de una manera análoga de valores intermedios b1, b2 y b3 en la dirección horizontal. 10
3. Los valores para subpíxeles de resolución de 1/8 marcados con la letra d se calculan usando interpolación lineal a partir de los valores de su píxel de imagen vecino más cercano, subpíxeles de resolución de 1/2 o resolución de 1/4 en la dirección horizontal o vertical. Por ejemplo, el subpíxel d de resolución de 1/8 que está más a la izquierda superior se calcula de acuerdo con d = (A + b1 + 1)/2. Igual que antes, el operador / indica 15 división con truncamiento.
4. Los valores para subpíxeles de resolución de 1/8 marcados con las letras e y f se calculan al usar la interpolación lineal a partir de los valores de píxeles de imagen, subpíxeles de resolución de 1/2 o de resolución de 1/4 en la dirección diagonal. Por ejemplo, con referencia a la figura 20, el subpíxel e de resolución de 1/8 20 más a la izquierda superior se calcula de acuerdo con e = (b1 + b1 + 1)/2. La dirección diagonal que se ha de usar en la interpolación de cada subpíxel de resolución de 1/8 en una primera realización de la invención, de aquí en adelante referido como "método preferido 1", se indica en la figura 21(a). Los valores para subpíxeles de resolución de 1/8 marcados con la letra g se calculan de acuerdo con g = (A + 3c22 + 3)/4. Como siempre, el operador / indica división con truncamiento. En una realización alternativa de la invención, de aquí en adelante 25 referida como "método preferido 2", la complejidad computacional se reduce además por interpolación de subpíxeles f de resolución de 1/8 mediante el uso de interpolación a partir de subpíxeles b2 de resolución de 1/8, es decir, de acuerdo con la relación f = (3b2 + b2 + 2)/4. El subpíxel b2 que es más cercano a f se multiplica por 3. El esquema de interpolación diagonal usado en esta realización alternativa de la invención se ilustra en la figura 21(b). En realizaciones alternativas adicionales, se pueden contemplar esquemas de interpolación 30 diagonal diferentes.
Debe indicarse que en todos los casos en donde un promedio que implique valores de píxel y/o subpíxel se usa en la determinación de subpíxeles de resolución de 1/8, el promedio se puede formar de cualquier manera apropiada. La adición de 1 a la suma de valores usados para calcular un promedio tiene el efecto de calcular cualquier 35 operación de redondeo o truncamiento posteriormente aplicado para redondear o truncar el promedio en cuestión al siguiente valor entero más alto. En realizaciones alternativas de la invención, la adición de 1 no se usa.
Como en el caso de interpolación de valor de subpíxel a resolución de píxel de 1/4 previamente descrito, los requerimientos de memoria en el codificador se pueden reducir al calcular previamente sólo una parte de los valores 40 de subpíxel que han de ser interpolados. En el caso de interpolación de valor de subpíxel a resolución de píxel de 1/8, es ventajoso calcular todos los subpíxeles de resolución de 1/2 y de resolución de 1/4 de antemano para calcular los valores de subpíxeles de resolución de 1/8 de una manera sobredemanda, sólo cuando sean requeridos. Cuando se tome este enfoque, tanto el método de interpolación de acuerdo con TML5 y de acuerdo con la invención requieren 16 veces la memoria de imagen original para almacenar los valores de subpíxel de resolución de 1/2 y de 45 resolución de 1/4. Sin embargo, si el método de interpolación directo de acuerdo con TML6 se usa de la misma manera, los valores intermedios para los subpíxeles de resolución de 1/2 y de resolución de 1/4 se deben almacenar. Estos valores intermedios están representados con una precisión de 32 bits y esto da por resultado un requerimiento de memoria 64 veces el de la imagen no interpolada original.
50
A continuación, la complejidad del método de interpolación de valor de subpíxel de acuerdo con la invención, cuando se aplica en un decodificador de video para calcular valores para subpíxeles a una resolución de píxel de hasta 1/8, se compara con la de los esquemas de interpolación usados en TML5 y TML6. Como en el análisis equivalente para interpolación de valor de subpíxel de resolución de 141 de píxel anteriormente descrita, se supone que en cada método la interpolación de cualquier valor de subpíxel se analiza mediante el uso de sólo un número mínimo de 55 etapas requeridas para obtener un valor correctamente interpolado. También se supone que cada método es implementado de una manera basada en bloques, de tal manera que los valores intermedios comunes para todos los subpíxeles que han de ser interpolados en un bloque de N x M se calculan sólo una vez.
La tabla 2 resume las complejidades de los tres métodos de interpolación. La complejidad se mide en términos del 60 número de filtro de 8 ramas y operaciones de interpolación lineal realizadas en cada método. La tabla presenta el número de operaciones requeridas para interpolar cada uno de los 63 subpíxeles de resolución de 1/8 con un bloque de 4 x 4 de píxeles de imagen originales, cada posición de subpíxel está identificada con un número correspondiente, como se ilustra en la figura 22. En la figura 22, la posición 1 es la posición de un píxel de imagen original y las posiciones de 2 a 64 son posiciones de subpíxel. Cuando se calcula el número promedio de 65 operaciones, se ha supuesto que la probabilidad de un vector de movimiento que indica a cada posición de subpíxel
es la misma. La complejidad promedio es por lo tanto en promedio de las 63 sumas calculadas para cada posición de subpíxel y la posición de píxel completo individual.
Tabla 2: Complejidad de interpolación de subpíxel de resolución de 1/8 en TML5, TML6 y el método de acuerdo con la invención. (Los resultados se muestran por separado para el método preferido 1 y el método preferido 2) 5
- TML5 TML6 Método preferido 1 Método preferido 2
- Posición
- Lineal 8 ramas Lineal 8 ramas Lineal 8-tap Lineal 8 ramas
- 1
- 0 0 0 0 0 0 0 0
- 3,5,7,17,33,49
- 0 16 0 16 0 16 0 16
- 19,21,23,35,37,39, 51,53,55
- 0 60 0 60 0 60 0 60
- 2,8,9,57
- 16 16 0 16 16 16 16 16
- 4,6,25,41
- 16 32 0 16 16 32 16 32
- 10,16,58,64
- 32 76 0 60 16 32 16 32
- 11,13,15,59,61,63
- 16 60 0 60 16 60 16 60
- 18,24,34,40,50,56
- 16 76 0 60 16 60 16 60
- 12,14,60,62
- 32 120 0 60 16 32 16 32
- 26,32,42,48
- 32 108 0 60 16 32 16 32
- 20,22,36,38,52,54
- 16 120 0 60 16 76 16 76
- 27,29,31,43,45,47
- 16 76 0 60 16 76 16 76
- 28,30,44,46
- 32 152 0 60 16 60 16 60
- Promedio
- 64 290,25 0 197,75 48 214,75 48 192,75
Como se puede ver a partir de la tabla 2, el número de operaciones de filtro de 8 ramas realizadas de acuerdo con los métodos preferidos 1 y 2 son, respectivamente, 26 % y 34 % menores que el número de operaciones de filtración de 8 ramas realizadas en el método de interpolación de valor de subpíxel de TML5. El número de operaciones 10 lineales es 25 % menor, tanto en el método preferido 1 como en el método preferido 2, en comparación con TML5, pero esta mejora es de menor importancia en comparación con la reducción de las operaciones de filtración de 8 ramas. Se puede ver además que el método de interpolación directa usado en TML6 tiene una complejidad comparable con la de los métodos preferidos 1 y 2 cuando se usan para interpolar valores para subpíxeles de resolución de 1/8. 15
Claims (39)
- REIVINDICACIONES1. Un método de interpolación de una imagen, comprendiendo la imagen píxeles (A) dispuestos en filas y columnas y representados por valores que tienen un intervalo dinámico especificado, residiendo los píxeles (A) de las filas en posiciones horizontales de unidad y residiendo los píxeles (A) de las columnas en posiciones verticales de unidad, 5 para generar valores para subpíxeles (b, c, d, e, f, g, h, i), estando situado un subpíxel (b, c, d, e, f, g, h, i) en al menos uno de una posición horizontal fraccionada y vertical fraccionada, pudiéndose representar las posiciones verticales fraccionarias y horizontales fraccionarias de acuerdo con la notación matemática 1/2X, donde x es un número entero positivo en el intervalo de 1 a N, representando 1/2X un nivel particular de interpolación de subpíxel y N representando un nivel máximo de interpolación de subpíxel, comprendiendo el método: 10a) interpolar valores para subpíxeles (b) situados en posiciones horizontales 1/2N-1 de unidad y verticales de unidad, y para subpíxeles (b) situados en las posiciones horizontales de unidad y verticales 1/2N-1 de unidad utilizando sumas ponderadas de píxeles (A) que residen en respectivas posiciones horizontales de unidad y verticales de unidad; 15b) interpolar un valor para un subpíxel (c) situado en una posición horizontal 1/2N-1 de unidad y vertical 1/2N-1 de unidad utilizando una primera suma ponderada de los valores interpolados para subpíxeles (b) que residen en posiciones horizontales 1/2N-1 de unidad y verticales de unidad o una segunda suma ponderada de los valores interpolados para subpíxeles (b) que residen en las posiciones horizontales de unidad y verticales 1/2N-1 de unidad obtenidas en la etapa a); y 20c) interpolar un valor para un subpíxel (h, i) situado en una posición horizontal 1/2N de unidad y vertical 1/2N de unidad utilizando:- una media ponderada del valor de un primer subpíxel (b) situado en una posición horizontal 1/2N-m de unidad y vertical 1/2N-n de unidad y el valor de un segundo subpíxel (b) situado en una 25 posición horizontal 1/2N-p de unidad y vertical 1/2N-q de unidad, o- una media ponderada del valor de un píxel (A) situado en una de posición horizontal de unidad y vertical de unidad y el valor de un subpíxel (c) situado en una posición horizontal 1/2N-m de unidad y vertical 1/2N-n de unidad,tomando las variables m, n, p y q valores enteros en el intervalo de 1 a N, tal que los respectivos 30 primer y segundo subpíxeles (b) o el respectivo píxel (A) y subpíxel (c) se encuentran en diagonal con respecto al subpíxel (h, i) en la posición horizontal 1/2N de unidad y vertical 1/2N de unidad que se interpola.
- 2. Un método de acuerdo con la reivindicación 1, en el que una primera y una segunda ponderaciones se utilizan en 35 la media ponderada que se hace referencia en la etapa c), siendo las magnitudes relativas de las ponderaciones proporcionales a la proximidad en la línea recta diagonal del subpíxel (h, i) en posición horizontal 1/2N de unidad y vertical 1/2N de unidad en los respectivos primer y segundo subpíxeles (b) o el respectivo píxel (A) y subpíxel (c) utilizado en la etapa c).40
- 3. Un método de acuerdo con la reivindicación 2, en el que en una situación donde los respectivos primer y segundo subpíxeles (b) o el respectivo píxel (A) y subpíxel (c) utilizado en la etapa c) están situados simétricamente con respecto al subpíxel (h, i) en la posición horizontal 1/2N de unidad y vertical 1/2N de unidad que se interpola, teniendo la primera y la segunda ponderaciones valores iguales.45
- 4. Un método de acuerdo con la reivindicación 1, en el que la primera suma ponderada de los valores de subpíxeles (b) que residen en posiciones horizontales 1/2N-1 de unidad y verticales de unidad en la etapa b) se utiliza cuando se interpola un valor para un subpíxel (f) en la posición horizontal 1/2N de unidad y vertical 1/2N de unidad.
- 5. Un método de acuerdo con la reivindicación 1, en el que la segunda suma ponderada de los valores de subpíxeles 50 (b) que residen en las posiciones horizontales de unidad y verticales 1/2N de unidad en la etapa b) se utiliza cuando se interpola un valor para un subpíxel (g) en la posición horizontal 1/2N de unidad y vertical 1/2N-1 de unidad.
- 6. Un método de acuerdo con la reivindicación 1, que comprende interpolar valores para subpíxeles (h, i) en las posiciones horizontales 1/2N de unidad y verticales 1/2N de unidad tomando un promedio del valor de un píxel (A) 55 que está situado en una posición horizontal de unidad y vertical de unidad y el valor de un subpíxel (c) situado en una posición horizontal 1/2N-1 de unidad y vertical 1/2N-1 de unidad.
- 7. Un método de acuerdo con la reivindicación 1, que comprende interpolar valores para subpíxeles (h, i) en posiciones horizontales 1/2N de unidad y verticales 1/2N de unidad tomando un promedio del valor de un subpíxel (b) 60 situado en una posición horizontal 1/2N-1 de unidad y vertical de unidad y el valor de un subpíxel (b) situado en una posición horizontal de unidad y vertical 1/2N-1 de unidad.
- 8. Un método de acuerdo con la reivindicación 1, en el que N es uno de los valores enteros 2, 3, y 4.65
- 9. Un método de acuerdo con la reivindicación 1, en el que en al menos una de la etapa a) y de la etapa b),interpolando un valor de subpíxel usando una suma ponderada implica el cálculo de un valor intermedio para el valor de subpíxel, teniendo dicho valor intermedio un intervalo dinámico mayor que el intervalo dinámico especificado.
- 10. Un método de acuerdo con la reivindicación 9, en el que el valor intermedio para un subpíxel que tiene una resolución de subpíxel 1/2N-1 se utiliza en la interpolación de un valor de subpíxel para un subpíxel que tiene una 5 resolución de subpíxel 1/2N.
- 11. Un método de acuerdo con la reivindicación 1, en el que el intervalo dinámico especificado corresponde al intervalo de valores que dichos píxeles (A) puede tomar.10
- 12. Un método de acuerdo con la reivindicación 11, que comprende representar un valor de subpíxel interpolado en la etapa a) utilizando un primer valor intermedio, teniendo dicho primer valor intermedio un intervalo dinámico igual al intervalo dinámico especificado de los valores de los píxeles respectivos utilizados en la suma ponderada de la etapa a) multiplicado por un valor igual a la suma de las respectivas ponderaciones utilizadas en la suma ponderada de la etapa a). 15
- 13. Un método de acuerdo con la reivindicación 12, en el que el intervalo dinámico de dicho primer valor intermedio se define por el número de bits utilizados para representar los valores de los píxeles respectivos utilizados en la suma ponderada de la etapa a) más el número de bits necesarios para representar la suma de las respectivas ponderaciones utilizadas en la suma ponderada de la etapa a). 20
- 14. Un método de acuerdo con la reivindicación 12, que comprende truncar el primer valor intermedio dividiendo matemáticamente el primer valor intermedio por un primer factor de escala, teniendo dicho primer factor de escala un valor igual a la suma de las respectivas ponderaciones utilizadas en la suma ponderada de la etapa a), formando de este modo un valor de subpíxel con un intervalo dinámico igual al intervalo dinámico especificado de dichos 25 valores de píxel.
- 15. Un método según la reivindicación 12, que comprende el uso de primeros valores intermedios de subpíxel calculados en la etapa a) como los valores interpolados en las respectivas sumas ponderadas de la etapa b), y que representan un valor de subpíxel interpolado en la etapa b) utilizando un segundo valor intermedio, teniendo dicho 30 segundo valor intermedio un intervalo dinámico igual al intervalo dinámico de los valores de subpíxeles respectivos utilizados en la suma ponderada de la etapa b) multiplicado por un valor igual a la suma de las respectivas ponderaciones utilizadas en la suma ponderada de la etapa b).
- 16. Un método según la reivindicación 15, que comprende truncar el segundo valor intermedio dividiendo 35 matemáticamente el segundo valor intermedio por un segundo factor de escala, teniendo dicho segundo factor de escala un valor igual a la suma de las respectivas ponderaciones utilizadas en la suma ponderada de la etapa a) multiplicado por la suma de las respectivas ponderaciones utilizadas en la suma ponderada de la etapa b), formando de este modo un valor de subpíxel con un intervalo dinámico igual al intervalo dinámico especificado de dichos valores de píxel. 40
- 17. Un método de acuerdo con la reivindicación 14, que comprende el uso de unos primeros valores de subpíxel truncados intermedios cuando se interpola un valor para un subpíxel (h, i) que tiene una resolución de subpíxel 1/2N en la etapa c).45
- 18. Un método de acuerdo con la reivindicación 16, que comprende el uso de unos segundos valores de subpíxel truncados intermedios cuando se interpola un valor para un subpíxel (h, i) que tiene una resolución de subpíxel 1/2N en la etapa c).
- 19. Un interpolador (730, 750, 845, 890) para interpolar una imagen, comprendiendo la imagen píxeles (A) 50 dispuestos en filas y columnas y representados por valores que tienen un intervalo dinámico especificado, los píxeles (A) en las filas residiendo en posiciones horizontales de unidad y los píxeles (A) en las columnas residiendo en posiciones verticales de unidad, estando el interpolador (730, 750, 845, 890) adaptados para generar valores para subpíxeles (b, c, d, e, f, g, h , i), estando un subpíxel (b, c, d, e, f, g, h, i) situado en al menos uno de una posición horizontal fraccionada y una vertical fraccionada, pudiéndose representar las posiciones verticales 55 fraccionarias y horizontales fraccionarias de acuerdo con la notación matemática 1/2X, donde x es un número entero positivo en el intervalo de 1 a N, representando 1/2X un nivel particular de interpolación de subpíxel y representando N un nivel máximo de interpolación de subpíxel, estando el interpolador (730, 750, 845, 890) adaptado para:a) interpolar valores para subpíxeles (b) situados en posiciones horizontales 1/2N-1 de unidad y verticales de 60 unidad, y por subpíxeles (b) situados en posiciones horizontales 1/2N-1 de unidad y verticales utilizando sumas ponderadas de píxeles (A) que residen en respectivas posiciones horizontales de unidad y verticales de unidad;b) interpolar un valor para un subpíxel (c) situado en una posición horizontal 1/2N-1 de unidad y vertical 1/2N-1 de unidad utilizando una primera suma ponderada de los valores interpolados para subpíxeles (b) que 65 residen en posiciones horizontales 1/2N-1 de unidad y verticales de unidad o una segunda suma ponderadade los valores interpolados para subpíxeles (b) que residen en posiciones horizontales 1/2N-1 de unidad y verticales de unidad obtenidas en la etapa a); yc) interpolar un valor para un subpíxel (h, i) situado en una posición horizontal 1/2N de unidad y vertical 1/2N de unidad utilizando:5- una media ponderada del valor de un primer subpíxel (b) situado en una posición horizontal 1/2N-m de unidad y vertical 1/2N-n de unidad y el valor de un segundo subpíxel (b) situado en una posición horizontal 1/2N-p de unidad y vertical 1/2N-q de unidad, o- una media ponderada del valor de un píxel (A) situado en una de posición horizontal de unidad y vertical de unidad y el valor de un subpíxel (c) situado en una posición horizontal 1/2N-m de unidad 10 y vertical 1/2N-n de unidad,tomando las variables m, n, p y q valores enteros en el intervalo de 1 a N, tal que los respectivos primer y segundo subpíxeles (b) o el respectivo píxel (A) y subpíxel (c) se encuentran en diagonal con respecto al subpíxel (h, i) en la posición horizontal 1/2N de unidad y vertical 1/2N de unidad que se interpola. 15
- 20. Un interpolador (730, 750, 845, 890) de acuerdo con la reivindicación 19, en donde el interpolador (730, 750, 845, 890) está configurado para utilizar una primera y una segunda ponderaciones en la media ponderada que se hace referencia en la etapa c), siendo las magnitudes relativas de las ponderaciones proporcionales a la proximidad en la línea recta diagonal del subpíxel (h, i) en posición horizontal 1/2N de unidad y vertical 1/2N de unidad en los 20 respectivos primer y segundo subpíxeles (b) o el respectivo píxel (A) y subpíxel (c) utilizado en la etapa c).
- 21. Un interpolador (730, 750, 845, 890) de acuerdo con la reivindicación 20, en donde el interpolador (730, 750, 845, 890) está configurado para utilizar una primera y una segunda interpolaciones que tienen valores iguales en una situación donde los respectivos primer y segundo sub -píxeles (b) o el correspondiente píxel (A) y subpíxel (c) 25 que se utiliza en la etapa c) están colocados simétricamente con respecto al subpíxel (h, i) en posición horizontal 1/2N de unidad y vertical 1/2N de unidad que se interpola.
- 22. Un interpolador (730, 750, 845, 890) de acuerdo con la reivindicación 19, en donde el interpolador (730, 750, 845, 890) está configurado para utilizar la primera suma ponderada de los valores de subpíxeles (b) que residen en 30 posiciones horizontales 1/2N-1 de unidad y verticales de unidad en la etapa b) cuando se interpola un valor para un subpíxel (f) en posición horizontal 1/2N-1 de unidad y vertical 1/2N de unidad.
- 23. Un interpolador (730, 750, 845, 890) de acuerdo con la reivindicación 19, en donde el interpolador (730, 750, 845, 890) está configurado para utilizar la segunda suma ponderada de los valores de subpíxeles (b) que residen en 35 las posiciones horizontales de unidad y verticales 1/2N-1 de unidad en la etapa b) cuando se interpola un valor para un subpíxel (g) en posición horizontal 1/2N de unidad y vertical 1/2N-1 de unidad.
- 24. Un interpolador (730, 750, 845, 890) de acuerdo con la reivindicación 19, en donde el interpolador (730, 750, 845, 890) está configurado para interpolar valores de subpíxeles (h, i) en posiciones horizontales 1/2N de unidad y 40 verticales 1/2N de unidad tomando un promedio del valor de un píxel (A) situado en una posición horizontal de unidad y vertical de unidad y el valor de un subpíxel (c) situado en una posición horizontal 1/2N-1 de unidad y vertical 1/2N-1 de unidad.
- 25. Un interpolador (730, 750, 845, 890) de acuerdo con la reivindicación 19, en donde el interpolador (730, 750, 45 845, 890) está configurado para interpolar valores de subpíxeles (h, i) en posiciones horizontales 1/2N de unidad y verticales 1/2N de unidad tomando un promedio del valor de un subpíxel (b) situado en una posición horizontal 1/2N-1 de unidad y vertical de unidad, y el valor de un subpíxel (b) situado en una posición horizontal de unidad y vertical 1/2N-1 de unidad.50
- 26. Un interpolador (730, 750, 845, 890) de acuerdo con la reivindicación 19, en el que N es uno de los valores enteros 2, 3, y 4.
- 27. Un interpolador (730, 750, 845, 890) de acuerdo con la reivindicación 19, en donde en al menos una de la etapa a) y de la etapa b), el interpolador (730, 750, 845, 890) está configurado para interpolar un valor de subpíxel usando 55 una suma ponderada que implica el cálculo de un valor intermedio para el valor de subpíxel, teniendo dicho valor intermedio un intervalo dinámico mayor que el intervalo dinámico especificado.
- 28. Un interpolador (730, 750, 845, 890) de acuerdo con la reivindicación 27, en donde el interpolador (730, 750, 845, 890) está configurado para utilizar el valor intermedio para un subpíxel que tiene una resolución de subpíxel 60 1/2N-1 en la interpolación de un valor de subpíxel para un subpíxel que tiene una resolución de subpíxel 1/2N.
- 29. Un interpolador (730, 750, 845, 890) de acuerdo la reivindicación 19, en el que el intervalo dinámico especificado corresponde al intervalo de valores que dichos píxeles (A) pueden tomar.65
- 30. Un interpolador (730, 750, 845, 890) de acuerdo con la reivindicación 29, en donde el interpolador (730, 750,845, 890) está configurado para representar un valor de subpíxel interpolado en la etapa a) utilizando un primer valor intermedio, teniendo dicho primer valor intermedio un intervalo dinámico igual al intervalo dinámico especificado de los valores de los píxeles respectivos utilizados en la suma ponderada de la etapa a) multiplicado por un valor igual a la suma de las respectivas ponderaciones utilizadas en la suma ponderada de la etapa a).5
- 31. Un interpolador (730, 750, 845, 890) de acuerdo con la reivindicación 30, en el que el intervalo dinámico de dicho primer valor intermedio se define por el número de bits utilizados para representar los respectivos valores de los píxeles utilizados en la suma ponderada de la etapa a) más el número de bits requeridos para representar la suma de las respectivas ponderaciones utilizadas en la suma ponderada de la etapa a).10
- 32. Un interpolador (730, 750, 845, 890) de acuerdo con la reivindicación 30, en donde el interpolador (730, 750, 845, 890) está configurado para truncar el primer valor intermedio dividiendo matemáticamente el primer valor intermedio por un primer factor de escala, teniendo dicho primer factor de escala un valor igual a la suma de las respectivas ponderaciones utilizadas en la suma ponderada de la etapa a), formando de este modo un valor de subpíxel con un intervalo dinámico igual al intervalo dinámico especificado de dichos valores de píxel. 15
- 33. Un interpolador (730, 750, 845, 890) de acuerdo con la reivindicación 30, en donde el interpolador (730, 750, 845, 890) está configurado para utilizar los primeros valores de subpíxel intermedios calculados en la etapa a) como los valores interpolados en las respectivas sumas ponderadas de la etapa b), y para representar un valor de subpíxel interpolado en la etapa b) utilizando un segundo valor intermedio, teniendo dicho segundo valor intermedio un 20 intervalo dinámico igual al intervalo dinámico de los valores de subpíxeles respectivos utilizados en la suma ponderada de la etapa b) multiplicado por un valor igual a la suma de las respectivas ponderaciones utilizadas en la suma ponderada de la etapa b).
- 34. Un interpolador (730, 750, 845, 890) de acuerdo con la reivindicación 33, en donde el interpolador (730, 750, 25 845, 890) está configurado para truncar el segundo valor intermedio dividiendo matemáticamente el segundo valor intermedio por un segundo factor de escala, teniendo dicho segundo factor de escala un valor igual a la suma de las respectivas ponderaciones utilizadas en la suma ponderada de la etapa a) multiplicado por la suma de las respectivas ponderaciones utilizadas en la suma ponderada de la etapa b), formando de este modo un valor de subpíxel con un intervalo dinámico igual al intervalo dinámico especificado de dichos valores de píxel. 30
- 35. Un interpolador (730, 750, 845, 890) de acuerdo con la reivindicación 32, en donde el interpolador (730, 750, 845, 890) está configurado para utilizar los primeros valores truncados intermedios de subpíxel cuando se interpola un valor para un subpíxel (h, i) que tiene una resolución de subpíxel 1/2N en la etapa c).35
- 36. Un interpolador (730, 750, 845, 890) de acuerdo con la reivindicación 34, en donde el interpolador (730, 750, 845, 890) está configurado para utilizar los segundos valores truncados intermedios de subpíxel cuando se interpola un valor para un subpíxel (h, i) que tiene resolución de subpíxel 1/2N en la etapa c).
- 37. Un codificador de vídeo (700), un decodificador de vídeo (800) o un códec de vídeo (700, 800) que comprende 40 un interpolador (730, 750, 845, 890) de acuerdo con cualquiera de las reivindicaciones 19 a 36.
- 38. Un terminal de comunicaciones (60, MS) que comprende un codificador de vídeo, un decodificador de vídeo o un códec de vídeo de acuerdo con la reivindicación 37.45
- 39. Un programa de ordenador para interpolar una imagen, comprendiendo la imagen píxeles (A) dispuestos en filas y columnas y representados por valores que tienen un intervalo dinámico especificado, residiendo los píxeles (A) de las filas en posiciones horizontales de unidad y los píxeles (A) de las columnas residiendo en posiciones verticales de unidad, para generar valores para subpíxeles (b, c, d, e, f, g, h, i), estando situado un subpíxel (b, c, d, e, f, g, h, i) en al menos uno de una posición horizontal fraccionada y una vertical fraccionada, pudiéndose representar las 50 posiciones verticales fraccionarias y horizontales fraccionarias de acuerdo con la notación matemática 1/2X, donde x es un número entero positivo en el intervalo de 1 a N, representando 1/2X un nivel particular de interpolación de subpíxel y N representando un nivel máximo de interpolación de subpíxel, comprendiendo el programa de ordenador:55a) un código de programa para interpolar valores para subpíxeles (b) situados en posiciones horizontales 1/2N-1 de unidad y verticales de unidad, y para subpíxeles (b) situados en posiciones horizontales de unidad y verticales 1/2N-1 de unidad utilizando sumas ponderadas de píxeles (A) que residen en respectivas posiciones horizontales de unidad y verticales de unidad;b) un código de programa para interpolar un valor para un subpíxel (c) situado en una posición horizontal 60 1/2N-1 de unidad y vertical 1/2N-1 de unidad utilizando una primera suma ponderada de los valores interpolados para subpíxeles (b) que residen en posiciones horizontales 1/2N-1 de unidad y verticales de unidad o una segunda suma ponderada de los valores interpolados para subpíxeles (b) que residen en las posiciones horizontales de unidad y verticales 1/2N-1 de unidad obtenidas en la etapa a); yc) un código de programa para interpolar un valor para un subpíxel (h, i) situado en una posición horizontal 65 1/2N de unidad y vertical 1/2N de unidad utilizando:- una media ponderada del valor de un primer subpíxel (b) situado en una posición horizontal 1/2N-m de unidad y vertical 1/2N-n de unidad y el valor de un segundo subpíxel (b) situado en una posición horizontal 1/2N-p de unidad y vertical 1/2N-q de unidad, o- una media ponderada del valor de un píxel (A) situado en una de posición horizontal de unidad y 5 vertical de unidad y el valor de un subpíxel (c) situado en una posición horizontal 1/2N-m de unidad y vertical 1/2N-n de unidad,tomando las variables m, n, p y q valores enteros en el intervalo de 1 a N, tal que los respectivos primer y segundo subpíxeles (b) o el respectivo píxel (A) y subpíxel (c) se encuentran en diagonal con respecto al subpíxel (h, i) en la posición horizontal 1/2N de unidad y vertical 1/2N de unidad que 10 se interpola.
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US954608 | 2001-09-17 | ||
| US09/954,608 US6950469B2 (en) | 2001-09-17 | 2001-09-17 | Method for sub-pixel value interpolation |
| PCT/FI2002/000729 WO2003026296A1 (en) | 2001-09-17 | 2002-09-11 | Method for sub-pixel value interpolation |
Publications (3)
| Publication Number | Publication Date |
|---|---|
| ES2540583T3 true ES2540583T3 (es) | 2015-07-10 |
| ES2540583T7 ES2540583T7 (es) | 2017-07-10 |
| ES2540583T9 ES2540583T9 (es) | 2018-02-22 |
Family
ID=25495681
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| ES02758498.6T Active ES2540583T7 (es) | 2001-09-17 | 2002-09-11 | Método para interpolación de valor de subpíxeles |
Country Status (17)
| Country | Link |
|---|---|
| US (3) | US6950469B2 (es) |
| EP (1) | EP1433316B9 (es) |
| JP (3) | JP4698947B2 (es) |
| KR (3) | KR100972850B1 (es) |
| CN (2) | CN1331353C (es) |
| AU (1) | AU2002324085C1 (es) |
| BR (1) | BR0211263A (es) |
| CA (1) | CA2452632C (es) |
| EE (1) | EE05594B1 (es) |
| ES (1) | ES2540583T7 (es) |
| HU (1) | HU228954B1 (es) |
| MX (1) | MXPA04000203A (es) |
| PT (1) | PT1433316E (es) |
| RU (2) | RU2317654C2 (es) |
| SG (1) | SG167662A1 (es) |
| WO (1) | WO2003026296A1 (es) |
| ZA (1) | ZA200308785B (es) |
Families Citing this family (238)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6983018B1 (en) | 1998-11-30 | 2006-01-03 | Microsoft Corporation | Efficient motion vector coding for video compression |
| KR100311482B1 (ko) | 1999-10-21 | 2001-10-18 | 구자홍 | 보간 영상의 화질 개선을 위한 필터링 제어방법 |
| US7266150B2 (en) * | 2001-07-11 | 2007-09-04 | Dolby Laboratories, Inc. | Interpolation of video compression frames |
| US7082450B2 (en) | 2001-08-30 | 2006-07-25 | Nokia Corporation | Implementation of a transform and of a subsequent quantization |
| US6950469B2 (en) * | 2001-09-17 | 2005-09-27 | Nokia Corporation | Method for sub-pixel value interpolation |
| WO2003030556A1 (en) * | 2001-09-18 | 2003-04-10 | Matsushita Electric Industrial Co., Ltd. | Image encoding method and image decoding method |
| US7630566B2 (en) * | 2001-09-25 | 2009-12-08 | Broadcom Corporation | Method and apparatus for improved estimation and compensation in digital video compression and decompression |
| US20030059089A1 (en) * | 2001-09-25 | 2003-03-27 | Quinlan James E. | Block matching at the fractional pixel level for motion estimation |
| US7181070B2 (en) * | 2001-10-30 | 2007-02-20 | Altera Corporation | Methods and apparatus for multiple stage video decoding |
| EP1315124A3 (en) * | 2001-11-13 | 2004-08-18 | Trusight Ltd. | Image compression with dynamic programming |
| CN101448162B (zh) * | 2001-12-17 | 2013-01-02 | 微软公司 | 处理视频图像的方法 |
| EP1469682A4 (en) * | 2002-01-24 | 2010-01-27 | Hitachi Ltd | SIGNAL CODING METHOD FOR MOVABLE IMAGES, DECODING METHOD, CODING DEVICE AND DECODING DEVICE |
| US8175159B2 (en) * | 2002-01-24 | 2012-05-08 | Hitachi, Ltd. | Moving picture signal coding method, decoding method, coding apparatus, and decoding apparatus |
| US7003035B2 (en) * | 2002-01-25 | 2006-02-21 | Microsoft Corporation | Video coding methods and apparatuses |
| US8284844B2 (en) | 2002-04-01 | 2012-10-09 | Broadcom Corporation | Video decoding system supporting multiple standards |
| US7620109B2 (en) * | 2002-04-10 | 2009-11-17 | Microsoft Corporation | Sub-pixel interpolation in motion estimation and compensation |
| US7116831B2 (en) | 2002-04-10 | 2006-10-03 | Microsoft Corporation | Chrominance motion vector rounding |
| US7110459B2 (en) | 2002-04-10 | 2006-09-19 | Microsoft Corporation | Approximate bicubic filter |
| US7305034B2 (en) * | 2002-04-10 | 2007-12-04 | Microsoft Corporation | Rounding control for multi-stage interpolation |
| US20040001546A1 (en) | 2002-06-03 | 2004-01-01 | Alexandros Tourapis | Spatiotemporal prediction for bidirectionally predictive (B) pictures and motion vector prediction for multi-picture reference motion compensation |
| US7280700B2 (en) | 2002-07-05 | 2007-10-09 | Microsoft Corporation | Optimization techniques for data compression |
| US7154952B2 (en) * | 2002-07-19 | 2006-12-26 | Microsoft Corporation | Timestamp-independent motion vector prediction for predictive (P) and bidirectionally predictive (B) pictures |
| KR100472476B1 (ko) * | 2002-08-31 | 2005-03-10 | 삼성전자주식회사 | 움직임 보상을 위한 보간 방법 및 그 장치 |
| US7400774B2 (en) * | 2002-09-06 | 2008-07-15 | The Regents Of The University Of California | Encoding and decoding of digital data using cues derivable at a decoder |
| US7231090B2 (en) * | 2002-10-29 | 2007-06-12 | Winbond Electronics Corp. | Method for performing motion estimation with Walsh-Hadamard transform (WHT) |
| US7408988B2 (en) * | 2002-12-20 | 2008-08-05 | Lsi Corporation | Motion estimation engine with parallel interpolation and search hardware |
| US7212676B2 (en) * | 2002-12-30 | 2007-05-01 | Intel Corporation | Match MSB digital image compression |
| JP3997171B2 (ja) * | 2003-03-27 | 2007-10-24 | 株式会社エヌ・ティ・ティ・ドコモ | 動画像符号化装置、動画像符号化方法、動画像符号化プログラム、動画像復号装置、動画像復号方法、及び動画像復号プログラム |
| US9330060B1 (en) | 2003-04-15 | 2016-05-03 | Nvidia Corporation | Method and device for encoding and decoding video image data |
| US8660182B2 (en) * | 2003-06-09 | 2014-02-25 | Nvidia Corporation | MPEG motion estimation based on dual start points |
| US7609763B2 (en) | 2003-07-18 | 2009-10-27 | Microsoft Corporation | Advanced bi-directional predictive coding of video frames |
| US7738554B2 (en) | 2003-07-18 | 2010-06-15 | Microsoft Corporation | DC coefficient signaling at small quantization step sizes |
| US10554985B2 (en) | 2003-07-18 | 2020-02-04 | Microsoft Technology Licensing, Llc | DC coefficient signaling at small quantization step sizes |
| US20050013498A1 (en) | 2003-07-18 | 2005-01-20 | Microsoft Corporation | Coding of motion vector information |
| US7426308B2 (en) * | 2003-07-18 | 2008-09-16 | Microsoft Corporation | Intraframe and interframe interlace coding and decoding |
| US7499495B2 (en) | 2003-07-18 | 2009-03-03 | Microsoft Corporation | Extended range motion vectors |
| US7620106B2 (en) | 2003-09-07 | 2009-11-17 | Microsoft Corporation | Joint coding and decoding of a reference field selection and differential motion vector information |
| US7567617B2 (en) | 2003-09-07 | 2009-07-28 | Microsoft Corporation | Predicting motion vectors for fields of forward-predicted interlaced video frames |
| US7317839B2 (en) | 2003-09-07 | 2008-01-08 | Microsoft Corporation | Chroma motion vector derivation for interlaced forward-predicted fields |
| US7599438B2 (en) | 2003-09-07 | 2009-10-06 | Microsoft Corporation | Motion vector block pattern coding and decoding |
| US7724827B2 (en) | 2003-09-07 | 2010-05-25 | Microsoft Corporation | Multi-layer run level encoding and decoding |
| US7577200B2 (en) | 2003-09-07 | 2009-08-18 | Microsoft Corporation | Extended range variable length coding/decoding of differential motion vector information |
| US8064520B2 (en) | 2003-09-07 | 2011-11-22 | Microsoft Corporation | Advanced bi-directional predictive coding of interlaced video |
| US7623574B2 (en) | 2003-09-07 | 2009-11-24 | Microsoft Corporation | Selecting between dominant and non-dominant motion vector predictor polarities |
| US7616692B2 (en) | 2003-09-07 | 2009-11-10 | Microsoft Corporation | Hybrid motion vector prediction for interlaced forward-predicted fields |
| US7253374B2 (en) * | 2003-09-15 | 2007-08-07 | General Motors Corporation | Sheet-to-tube welded structure and method |
| JP4206886B2 (ja) * | 2003-09-29 | 2009-01-14 | ソニー株式会社 | Itrデータ再生装置、記録再生システムおよび補間フィルタ |
| NO319629B1 (no) * | 2003-11-28 | 2005-09-05 | Tandberg Telecom As | Fremgangsmate for korrigering av interpolerte pikselverdier |
| NO320114B1 (no) * | 2003-12-05 | 2005-10-24 | Tandberg Telecom As | Forbedret utregning av interpolerte pixelverdier |
| EP1578137A2 (en) * | 2004-03-17 | 2005-09-21 | Matsushita Electric Industrial Co., Ltd. | Moving picture coding apparatus with multistep interpolation process |
| JP4419062B2 (ja) * | 2004-03-29 | 2010-02-24 | ソニー株式会社 | 画像処理装置および方法、記録媒体、並びにプログラム |
| EP1733562A1 (en) * | 2004-03-31 | 2006-12-20 | Koninklijke Philips Electronics N.V. | Motion estimation and segmentation for video data |
| US8284835B2 (en) * | 2004-04-21 | 2012-10-09 | Panasonic Corporation | Motion compensating apparatus |
| KR100605105B1 (ko) * | 2004-05-28 | 2006-07-26 | 삼성전자주식회사 | 영상 보간 장치 |
| US7565020B2 (en) * | 2004-07-03 | 2009-07-21 | Microsoft Corp. | System and method for image coding employing a hybrid directional prediction and wavelet lifting |
| CN100377599C (zh) * | 2004-09-03 | 2008-03-26 | 北京航空航天大学 | 一种快速亚像素运动估计方法 |
| US20060088104A1 (en) * | 2004-10-27 | 2006-04-27 | Stephen Molloy | Non-integer pixel sharing for video encoding |
| US7792192B2 (en) * | 2004-11-19 | 2010-09-07 | Analog Devices, Inc. | System and method for sub-pixel interpolation in motion vector estimation |
| JP4277793B2 (ja) * | 2004-12-17 | 2009-06-10 | ソニー株式会社 | 画像処理装置、符号化装置およびそれらの方法 |
| US7668455B2 (en) * | 2004-12-20 | 2010-02-23 | Fujifilm Corporation | Image capturing apparatus, image capturing method, reproducing apparatus, reproducing method and program |
| US7653132B2 (en) | 2004-12-21 | 2010-01-26 | Stmicroelectronics, Inc. | Method and system for fast implementation of subpixel interpolation |
| US20060165162A1 (en) * | 2005-01-24 | 2006-07-27 | Ren-Wei Chiang | Method and system for reducing the bandwidth access in video encoding |
| JP4736456B2 (ja) * | 2005-02-15 | 2011-07-27 | 株式会社日立製作所 | 走査線補間装置、映像表示装置、映像信号処理装置 |
| US8175168B2 (en) | 2005-03-18 | 2012-05-08 | Sharp Laboratories Of America, Inc. | Methods and systems for picture up-sampling |
| EP1867171A1 (en) * | 2005-04-06 | 2007-12-19 | Thomson Licensing | Method and apparatus for encoding enhancement layer video data |
| JP4081103B2 (ja) * | 2005-05-11 | 2008-04-23 | 株式会社東芝 | 動画像符号化装置 |
| US7526419B2 (en) * | 2005-05-24 | 2009-04-28 | International Business Machines Corporation | Methods for reconstructing data from simulation models |
| EP1908295A2 (en) * | 2005-07-28 | 2008-04-09 | Thomson Licensing | Method and apparatus for video motion process optimization using a hierarchical cache |
| US20070040837A1 (en) * | 2005-08-19 | 2007-02-22 | Seok Jin W | Motion vector estimation method and continuous picture generation method based on convexity property of sub pixel |
| KR100623036B1 (ko) * | 2005-09-22 | 2006-09-13 | 삼익전자공업 주식회사 | 다이나믹 보간 주사에 의해 해상도를 향상시킨 전광판시스템 |
| CN1859576A (zh) * | 2005-10-11 | 2006-11-08 | 华为技术有限公司 | 对空间分层编码视频图象的上采样方法及其系统 |
| US8265151B1 (en) * | 2005-12-14 | 2012-09-11 | Ambarella Taiwan Ltd. | Mode decision using approximate 1/2 pel interpolation |
| US8731071B1 (en) | 2005-12-15 | 2014-05-20 | Nvidia Corporation | System for performing finite input response (FIR) filtering in motion estimation |
| US20070146242A1 (en) * | 2005-12-22 | 2007-06-28 | Eastman Kodak Company | High resolution display for monochrome images with color highlighting |
| CN1794821A (zh) * | 2006-01-11 | 2006-06-28 | 浙江大学 | 可分级视频压缩中插值的方法与装置 |
| JP4677351B2 (ja) * | 2006-02-17 | 2011-04-27 | キヤノン株式会社 | 動き補償器、動き補償処理方法、コンピュータプログラム及び記憶媒体 |
| US8724702B1 (en) * | 2006-03-29 | 2014-05-13 | Nvidia Corporation | Methods and systems for motion estimation used in video coding |
| WO2007114368A1 (ja) * | 2006-03-30 | 2007-10-11 | Kabushiki Kaisha Toshiba | 画像符号化装置及び方法並びに画像復号化装置及び方法 |
| WO2007116551A1 (ja) | 2006-03-30 | 2007-10-18 | Kabushiki Kaisha Toshiba | 画像符号化装置及び画像符号化方法並びに画像復号化装置及び画像復号化方法 |
| US8208553B2 (en) * | 2006-05-04 | 2012-06-26 | Altera Corporation | Methods and apparatus for quarter-pel refinement in a SIMD array processor |
| JP4682384B2 (ja) * | 2006-07-11 | 2011-05-11 | 株式会社メガチップス | 1/4画素輝度用動き予測機構、組合せ輝度用動き予測機構、及び組合せ輝度・色差用動き予測機構 |
| US8253752B2 (en) * | 2006-07-20 | 2012-08-28 | Qualcomm Incorporated | Method and apparatus for encoder assisted pre-processing |
| US8155454B2 (en) * | 2006-07-20 | 2012-04-10 | Qualcomm Incorporated | Method and apparatus for encoder assisted post-processing |
| US8660380B2 (en) | 2006-08-25 | 2014-02-25 | Nvidia Corporation | Method and system for performing two-dimensional transform on data value array with reduced power consumption |
| KR100804451B1 (ko) * | 2006-09-25 | 2008-02-20 | 광운대학교 산학협력단 | 영상처리의 1/4 픽셀 보간 방법 및 그의 프로세서 |
| US9307122B2 (en) * | 2006-09-27 | 2016-04-05 | Core Wireless Licensing S.A.R.L. | Method, apparatus, and computer program product for providing motion estimation for video encoding |
| KR100827093B1 (ko) * | 2006-10-13 | 2008-05-02 | 삼성전자주식회사 | 영상 부호화 방법 및 장치 |
| KR100800761B1 (ko) * | 2006-10-19 | 2008-02-01 | 삼성전자주식회사 | 계산량을 최소화하는 색차 신호의 보간 방법 및 장치 |
| KR101354659B1 (ko) * | 2006-11-08 | 2014-01-28 | 삼성전자주식회사 | 멀티 코덱을 지원하는 움직임 보상 방법 및 장치 |
| KR100874949B1 (ko) | 2006-11-15 | 2008-12-19 | 삼성전자주식회사 | 단일 명령 다중 자료 프로세서 및 그것을 위한 메모리어레이 구조 |
| JP4753204B2 (ja) * | 2006-11-17 | 2011-08-24 | 株式会社ソニー・コンピュータエンタテインメント | 符号化処理装置および符号化処理方法 |
| US8411709B1 (en) | 2006-11-27 | 2013-04-02 | Marvell International Ltd. | Use of previously buffered state information to decode in an hybrid automatic repeat request (H-ARQ) transmission mode |
| JP2008165381A (ja) * | 2006-12-27 | 2008-07-17 | Ricoh Co Ltd | 画像処理装置及び画像処理方法 |
| KR101411315B1 (ko) * | 2007-01-22 | 2014-06-26 | 삼성전자주식회사 | 인트라/인터 예측 방법 및 장치 |
| US8296662B2 (en) * | 2007-02-05 | 2012-10-23 | Brother Kogyo Kabushiki Kaisha | Image display device |
| US8275041B2 (en) | 2007-04-09 | 2012-09-25 | Nokia Corporation | High accuracy motion vectors for video coding with low encoder and decoder complexity |
| US8756482B2 (en) | 2007-05-25 | 2014-06-17 | Nvidia Corporation | Efficient encoding/decoding of a sequence of data frames |
| US9118927B2 (en) | 2007-06-13 | 2015-08-25 | Nvidia Corporation | Sub-pixel interpolation and its application in motion compensated encoding of a video signal |
| KR101380615B1 (ko) * | 2007-06-28 | 2014-04-14 | 삼성전자주식회사 | 영상 동적 범위 향상 방법 및 장치 |
| US8254455B2 (en) | 2007-06-30 | 2012-08-28 | Microsoft Corporation | Computing collocated macroblock information for direct mode macroblocks |
| US8509567B2 (en) | 2007-07-09 | 2013-08-13 | Analog Devices, Inc. | Half pixel interpolator for video motion estimation accelerator |
| US8873625B2 (en) | 2007-07-18 | 2014-10-28 | Nvidia Corporation | Enhanced compression in representing non-frame-edge blocks of image frames |
| KR101396365B1 (ko) | 2007-08-28 | 2014-05-30 | 삼성전자주식회사 | 영상의 시공간적 움직임 추정/보상 방법 및 장치 |
| KR100909390B1 (ko) * | 2007-09-18 | 2009-07-24 | 한국과학기술원 | 고속 움직임 보상 장치 및 방법 |
| JP4461165B2 (ja) * | 2007-09-26 | 2010-05-12 | 株式会社東芝 | 画像処理装置、方法およびプログラム |
| JP4900175B2 (ja) * | 2007-10-04 | 2012-03-21 | セイコーエプソン株式会社 | 画像処理装置及び方法並びにプログラム |
| MX2010003531A (es) * | 2007-10-05 | 2010-04-14 | Nokia Corp | Codificacion de video con filtros direccionales de interpolacion adaptable alineados a pixeles. |
| US8416861B2 (en) | 2007-10-14 | 2013-04-09 | Nokia Corporation | Fixed-point implementation of an adaptive image filter with high coding efficiency |
| US8897393B1 (en) | 2007-10-16 | 2014-11-25 | Marvell International Ltd. | Protected codebook selection at receiver for transmit beamforming |
| US8542725B1 (en) | 2007-11-14 | 2013-09-24 | Marvell International Ltd. | Decision feedback equalization for signals having unequally distributed patterns |
| TWI389573B (zh) * | 2007-12-06 | 2013-03-11 | Mstar Semiconductor Inc | 僅依據水平方向之影像區塊執行影像處理運作的影像處理方法及其相關裝置 |
| KR101456487B1 (ko) * | 2008-03-04 | 2014-10-31 | 삼성전자주식회사 | 부화소 단위의 움직임 예측을 이용한 영상 부호화, 복호화방법 및 그 장치 |
| US8565325B1 (en) | 2008-03-18 | 2013-10-22 | Marvell International Ltd. | Wireless device communication in the 60GHz band |
| US9967590B2 (en) | 2008-04-10 | 2018-05-08 | Qualcomm Incorporated | Rate-distortion defined interpolation for video coding based on fixed filter or adaptive filter |
| US20090257499A1 (en) * | 2008-04-10 | 2009-10-15 | Qualcomm Incorporated | Advanced interpolation techniques for motion compensation in video coding |
| US8705622B2 (en) | 2008-04-10 | 2014-04-22 | Qualcomm Incorporated | Interpolation filter support for sub-pixel resolution in video coding |
| US9077971B2 (en) | 2008-04-10 | 2015-07-07 | Qualcomm Incorporated | Interpolation-like filtering of integer-pixel positions in video coding |
| US8804831B2 (en) | 2008-04-10 | 2014-08-12 | Qualcomm Incorporated | Offsets at sub-pixel resolution |
| US8971412B2 (en) * | 2008-04-10 | 2015-03-03 | Qualcomm Incorporated | Advanced interpolation techniques for motion compensation in video coding |
| US8462842B2 (en) | 2008-04-10 | 2013-06-11 | Qualcomm, Incorporated | Symmetry for interpolation filtering of sub-pixel positions in video coding |
| RU2479941C2 (ru) * | 2008-04-10 | 2013-04-20 | Квэлкомм Инкорпорейтед | Технологии прогнозирования для интерполяции при кодировании видео |
| US8831086B2 (en) * | 2008-04-10 | 2014-09-09 | Qualcomm Incorporated | Prediction techniques for interpolation in video coding |
| ES2558693T3 (es) * | 2008-07-01 | 2016-02-08 | Orange | Procedimiento y dispositivo de codificación de imágenes que implementa una predicción mejorada, procedimiento y dispositivo de decodificación, señal y programas informáticos correspondientes |
| US8811484B2 (en) * | 2008-07-07 | 2014-08-19 | Qualcomm Incorporated | Video encoding by filter selection |
| EP2310981B1 (en) * | 2008-07-08 | 2012-01-04 | Nortech International (PTY) Limited | Apparatus and method of classifying movement of objects in a monitoring zone |
| JP2010028220A (ja) * | 2008-07-15 | 2010-02-04 | Sony Corp | 動きベクトル検出装置、動きベクトル検出方法、画像符号化装置及びプログラム |
| CN102132342B (zh) * | 2008-07-29 | 2014-05-28 | 法国电信 | 一种通过内插滤波器更新编码器的方法 |
| US8761261B1 (en) * | 2008-07-29 | 2014-06-24 | Marvell International Ltd. | Encoding using motion vectors |
| US8498342B1 (en) | 2008-07-29 | 2013-07-30 | Marvell International Ltd. | Deblocking filtering |
| CN102113326A (zh) | 2008-08-04 | 2011-06-29 | 杜比实验室特许公司 | 重叠块差异估计和补偿体系结构 |
| US8345533B1 (en) | 2008-08-18 | 2013-01-01 | Marvell International Ltd. | Frame synchronization techniques |
| US8750378B2 (en) * | 2008-09-23 | 2014-06-10 | Qualcomm Incorporated | Offset calculation in switched interpolation filters |
| US8131056B2 (en) * | 2008-09-30 | 2012-03-06 | International Business Machines Corporation | Constructing variability maps by correlating off-state leakage emission images to layout information |
| US8681893B1 (en) | 2008-10-08 | 2014-03-25 | Marvell International Ltd. | Generating pulses using a look-up table |
| JP4404943B1 (ja) * | 2008-11-27 | 2010-01-27 | コデン株式会社 | 無人ボート自動観測システムおよび無人ボート自動観測方法 |
| US8666181B2 (en) | 2008-12-10 | 2014-03-04 | Nvidia Corporation | Adaptive multiple engine image motion detection system and method |
| US20100166076A1 (en) * | 2008-12-30 | 2010-07-01 | Tandberg Telecom As | Method, apparatus, and computer readable medium for calculating run and level representations of quantized transform coefficients representing pixel values included in a block of a video picture |
| US20100165078A1 (en) * | 2008-12-30 | 2010-07-01 | Sensio Technologies Inc. | Image compression using checkerboard mosaic for luminance and chrominance color space images |
| JP2010161747A (ja) * | 2009-01-09 | 2010-07-22 | Toshiba Corp | サブピクセル生成装置及び方法並びに動き補償装置 |
| US8189666B2 (en) | 2009-02-02 | 2012-05-29 | Microsoft Corporation | Local picture identifier and computation of co-located information |
| JP5580541B2 (ja) * | 2009-03-06 | 2014-08-27 | パナソニック株式会社 | 画像復号化装置および画像復号化方法 |
| US8520771B1 (en) | 2009-04-29 | 2013-08-27 | Marvell International Ltd. | WCDMA modulation |
| US7991245B2 (en) * | 2009-05-29 | 2011-08-02 | Putman Matthew C | Increasing image resolution method employing known background and specimen |
| RU2405127C1 (ru) * | 2009-06-08 | 2010-11-27 | Михаил Валерьевич Соловьёв | Способ регистрации пакетов навигационных данных, передаваемых глобальной системой навигации и характеризующих местоположение движущегося объекта |
| JP2011030184A (ja) * | 2009-07-01 | 2011-02-10 | Sony Corp | 画像処理装置、及び、画像処理方法 |
| JP5325745B2 (ja) * | 2009-11-02 | 2013-10-23 | 株式会社ソニー・コンピュータエンタテインメント | 動画像処理プログラム、装置および方法、動画像処理装置を搭載した撮像装置 |
| KR101601848B1 (ko) * | 2009-12-01 | 2016-03-10 | 에스케이 텔레콤주식회사 | 인터 예측 프레임 생성장치 및 그 생성방법, 및 거기에 이용되는 참조 프레임 보간장치 및 그 방법 |
| US8406537B2 (en) * | 2009-12-17 | 2013-03-26 | General Electric Company | Computed tomography system with data compression and transfer |
| CA2784515A1 (en) * | 2009-12-17 | 2011-06-23 | Telefonaktiebolaget L M Ericsson (Publ) | Method and arrangement for video coding |
| US20110200108A1 (en) * | 2010-02-18 | 2011-08-18 | Qualcomm Incorporated | Chrominance high precision motion filtering for motion interpolation |
| JP2011199396A (ja) * | 2010-03-17 | 2011-10-06 | Ntt Docomo Inc | 動画像予測符号化装置、動画像予測符号化方法、動画像予測符号化プログラム、動画像予測復号装置、動画像予測復号方法、及び動画像予測復号プログラム |
| KR101847072B1 (ko) * | 2010-04-05 | 2018-04-09 | 삼성전자주식회사 | 영상 부호화 방법 및 장치, 비디오 복호화 방법 및 장치 |
| KR101682147B1 (ko) * | 2010-04-05 | 2016-12-05 | 삼성전자주식회사 | 변환 및 역변환에 기초한 보간 방법 및 장치 |
| US9219921B2 (en) * | 2010-04-12 | 2015-12-22 | Qualcomm Incorporated | Mixed tap filters |
| RS63059B1 (sr) | 2010-04-13 | 2022-04-29 | Ge Video Compression Llc | Kodiranje videa primenom podele sa više stabala na slikama |
| TWI575887B (zh) | 2010-04-13 | 2017-03-21 | Ge影像壓縮有限公司 | 在樣本陣列多元樹細分中之繼承技術 |
| KR101626688B1 (ko) | 2010-04-13 | 2016-06-01 | 지이 비디오 컴프레션, 엘엘씨 | 샘플 영역 병합 |
| BR122020007923B1 (pt) | 2010-04-13 | 2021-08-03 | Ge Video Compression, Llc | Predição interplano |
| US8963996B2 (en) * | 2010-05-05 | 2015-02-24 | Samsung Electronics Co., Ltd. | Communication of stereoscopic three-dimensional (3D) video information including an uncompressed eye view video frames |
| TWI423164B (zh) * | 2010-05-07 | 2014-01-11 | Silicon Motion Inc | 用來產生一高品質放大影像之方法及相關裝置 |
| KR101389919B1 (ko) | 2010-05-07 | 2014-04-30 | 니폰덴신뎅와 가부시키가이샤 | 동화상 부호화 제어 방법, 동화상 부호화 장치 및 동화상 부호화 프로그램 |
| EP2571268B1 (en) * | 2010-05-12 | 2019-11-27 | Nippon Telegraph And Telephone Corporation | Video coding control method, video coding device and video coding program |
| US8447105B2 (en) * | 2010-06-07 | 2013-05-21 | Microsoft Corporation | Data driven interpolation using geodesic affinity |
| RU2436043C1 (ru) * | 2010-07-08 | 2011-12-10 | Открытое акционерное общество "Завод им. В.А. Дегтярева" | Способ согласования осей инерциальной навигационной системы с осью наземного транспортного средства и измерительный комплекс для его осуществления |
| MY182191A (en) * | 2010-07-09 | 2021-01-18 | Samsung Electronics Co Ltd | Image interpolation method and apparatus |
| US8817771B1 (en) | 2010-07-16 | 2014-08-26 | Marvell International Ltd. | Method and apparatus for detecting a boundary of a data frame in a communication network |
| US20120027081A1 (en) * | 2010-07-30 | 2012-02-02 | Cisco Technology Inc. | Method, system, and computer readable medium for implementing run-level coding |
| RU2436044C1 (ru) * | 2010-08-16 | 2011-12-10 | Открытое акционерное общество "Завод им. В.А. Дегтярева" | Способ контроля работоспособности и точностных характеристик навигационной аппаратуры топопривязчика и комплект средств для его реализации |
| US20120063515A1 (en) * | 2010-09-09 | 2012-03-15 | Qualcomm Incorporated | Efficient Coding of Video Parameters for Weighted Motion Compensated Prediction in Video Coding |
| CN102402781B (zh) * | 2010-09-13 | 2014-05-14 | 慧荣科技股份有限公司 | 用来产生一高品质放大图像的方法 |
| RU2440558C1 (ru) * | 2010-10-11 | 2012-01-20 | Открытое акционерное общество "Завод им. В.А. Дегтярева" | Способ автоматизированного определения геодезических данных с помощью универсального топопривязчика (утп) |
| US10045046B2 (en) * | 2010-12-10 | 2018-08-07 | Qualcomm Incorporated | Adaptive support for interpolating values of sub-pixels for video coding |
| PT3370420T (pt) * | 2010-12-21 | 2019-10-31 | Ntt Docomo Inc | Codificação com intra-predição melhorada utilizando representações planares |
| US9445126B2 (en) | 2011-01-05 | 2016-09-13 | Qualcomm Incorporated | Video filtering using a combination of one-dimensional switched filter and one-dimensional adaptive filter |
| EP2661892B1 (en) | 2011-01-07 | 2022-05-18 | Nokia Technologies Oy | Motion prediction in video coding |
| CN102595118B (zh) * | 2011-01-14 | 2015-04-08 | 华为技术有限公司 | 一种编解码中的预测方法和预测器 |
| US8797391B2 (en) * | 2011-01-14 | 2014-08-05 | Himax Media Solutions, Inc. | Stereo image displaying method |
| US9049454B2 (en) | 2011-01-19 | 2015-06-02 | Google Technology Holdings Llc. | High efficiency low complexity interpolation filters |
| US20120224639A1 (en) * | 2011-03-03 | 2012-09-06 | General Instrument Corporation | Method for interpolating half pixels and quarter pixels |
| US20120230407A1 (en) | 2011-03-11 | 2012-09-13 | General Instrument Corporation | Interpolation Filter Selection Using Prediction Index |
| JP5768491B2 (ja) * | 2011-05-17 | 2015-08-26 | ソニー株式会社 | 画像処理装置および方法、プログラム、並びに記録媒体 |
| CA2997877C (en) * | 2011-06-24 | 2020-08-04 | Ntt Docomo, Inc. | Method and apparatus for motion compensation prediction with multiple fractional sample interpolations |
| WO2012178178A2 (en) * | 2011-06-24 | 2012-12-27 | General Instrument Corporation | Selection of phase offsets for interpolation filters for motion compensation |
| EP3448025B1 (en) * | 2011-06-28 | 2020-01-08 | Samsung Electronics Co., Ltd. | Image interpolation using asymmetric interpolation filter |
| CN102857752B (zh) * | 2011-07-01 | 2016-03-30 | 华为技术有限公司 | 一种像素预测方法和装置 |
| BR112013033743A2 (pt) | 2011-07-01 | 2019-09-24 | Motorola Mobility Inc | filtro de interpolação de subpixel conjunto para predição temporal |
| US9129411B2 (en) * | 2011-07-21 | 2015-09-08 | Luca Rossato | Upsampling in a tiered signal quality hierarchy |
| LT2744204T (lt) * | 2011-09-14 | 2019-01-10 | Samsung Electronics Co., Ltd. | Prognozės vieneto (pu) dekodavimo būdas, pagrįstas jo dydžiu |
| US20130070091A1 (en) * | 2011-09-19 | 2013-03-21 | Michael Mojaver | Super resolution imaging and tracking system |
| US9137433B2 (en) | 2011-09-19 | 2015-09-15 | Michael Mojaver | Super resolution binary imaging and tracking system |
| US10924668B2 (en) | 2011-09-19 | 2021-02-16 | Epilog Imaging Systems | Method and apparatus for obtaining enhanced resolution images |
| RU2473124C1 (ru) * | 2011-09-23 | 2013-01-20 | Общество С Ограниченной Ответственностью "Виси Рус" | Способ обнаружения порнографии на цифровых изображениях (варианты) |
| US20130083845A1 (en) | 2011-09-30 | 2013-04-04 | Research In Motion Limited | Methods and devices for data compression using a non-uniform reconstruction space |
| MX2014003707A (es) * | 2011-10-24 | 2014-07-28 | Intercode Pte Ltd | Metodo y aparato para la decodificacion del modo de prediccion intra. |
| EP2595382B1 (en) | 2011-11-21 | 2019-01-09 | BlackBerry Limited | Methods and devices for encoding and decoding transform domain filters |
| JP5911166B2 (ja) * | 2012-01-10 | 2016-04-27 | シャープ株式会社 | 画像処理装置、画像処理方法、画像処理プログラム、撮像装置、及び画像表示装置 |
| US9325991B2 (en) | 2012-04-11 | 2016-04-26 | Qualcomm Incorporated | Motion vector rounding |
| US8819525B1 (en) | 2012-06-14 | 2014-08-26 | Google Inc. | Error concealment guided robustness |
| US9041834B2 (en) | 2012-09-19 | 2015-05-26 | Ziilabs Inc., Ltd. | Systems and methods for reducing noise in video streams |
| JP5697649B2 (ja) * | 2012-11-27 | 2015-04-08 | 京セラドキュメントソリューションズ株式会社 | 画像処理装置 |
| JP5730274B2 (ja) * | 2012-11-27 | 2015-06-03 | 京セラドキュメントソリューションズ株式会社 | 画像処理装置 |
| US9432690B2 (en) * | 2013-01-30 | 2016-08-30 | Ati Technologies Ulc | Apparatus and method for video processing |
| US9225979B1 (en) * | 2013-01-30 | 2015-12-29 | Google Inc. | Remote access encoding |
| US20140269943A1 (en) * | 2013-03-12 | 2014-09-18 | Tandent Vision Science, Inc. | Selective perceptual masking via downsampling in the spatial and temporal domains using intrinsic images for use in data compression |
| US20140267916A1 (en) * | 2013-03-12 | 2014-09-18 | Tandent Vision Science, Inc. | Selective perceptual masking via scale separation in the spatial and temporal domains using intrinsic images for use in data compression |
| CA2900488C (en) * | 2013-05-01 | 2018-01-02 | Lg Electronics Inc. | Apparatus and method of transmitting and receiving signal |
| AU2013213660A1 (en) * | 2013-08-06 | 2015-02-26 | Canon Kabushiki Kaisha | Method for printing an upscaled image |
| US9774881B2 (en) | 2014-01-08 | 2017-09-26 | Microsoft Technology Licensing, Llc | Representing motion vectors in an encoded bitstream |
| US9942560B2 (en) | 2014-01-08 | 2018-04-10 | Microsoft Technology Licensing, Llc | Encoding screen capture data |
| US9749642B2 (en) | 2014-01-08 | 2017-08-29 | Microsoft Technology Licensing, Llc | Selection of motion vector precision |
| CN103793917B (zh) * | 2014-02-24 | 2017-02-01 | 哈尔滨工程大学 | 一种结合两种插值算法的遥感图像亚像元定位方法 |
| US10462480B2 (en) * | 2014-12-31 | 2019-10-29 | Microsoft Technology Licensing, Llc | Computationally efficient motion estimation |
| US10291932B2 (en) * | 2015-03-06 | 2019-05-14 | Qualcomm Incorporated | Method and apparatus for low complexity quarter pel generation in motion search |
| US10283031B2 (en) * | 2015-04-02 | 2019-05-07 | Apple Inc. | Electronic device with image processor to reduce color motion blur |
| US10275863B2 (en) | 2015-04-03 | 2019-04-30 | Cognex Corporation | Homography rectification |
| US9542732B2 (en) * | 2015-04-03 | 2017-01-10 | Cognex Corporation | Efficient image transformation |
| US10009622B1 (en) | 2015-12-15 | 2018-06-26 | Google Llc | Video coding with degradation of residuals |
| US10116957B2 (en) | 2016-09-15 | 2018-10-30 | Google Inc. | Dual filter type for motion compensated prediction in video coding |
| CN106658024B (zh) * | 2016-10-20 | 2019-07-16 | 杭州当虹科技股份有限公司 | 一种快速的视频编码方法 |
| DE102016225140B3 (de) * | 2016-12-15 | 2017-12-07 | Audi Ag | Verfahren zum Bestimmen einer relativen Position eines Kraftfahrzeugs, Positionsbestimmungssystem für ein Kraftfahrzeug und Kraftfahrzeug |
| KR20190112776A (ko) * | 2017-01-31 | 2019-10-07 | 샤프 가부시키가이샤 | 평면 내적 예측 비디오 코딩을 수행하기 위한 시스템들 및 방법들 |
| US10499078B1 (en) | 2017-02-07 | 2019-12-03 | Google Llc | Implicit motion compensation filter selection |
| CN106998437B (zh) * | 2017-03-31 | 2020-07-31 | 武汉斗鱼网络科技有限公司 | 一种重建视频图像的方法及装置 |
| US12058309B2 (en) * | 2018-07-08 | 2024-08-06 | Mellanox Technologies, Ltd. | Application accelerator |
| US11252464B2 (en) | 2017-06-14 | 2022-02-15 | Mellanox Technologies, Ltd. | Regrouping of video data in host memory |
| US20200014945A1 (en) * | 2018-07-08 | 2020-01-09 | Mellanox Technologies, Ltd. | Application acceleration |
| CN109922329B (zh) * | 2017-12-13 | 2021-02-26 | 北京传送科技有限公司 | 虚拟现实影像数据的压缩方法、解压缩方法及装置 |
| US11044518B2 (en) * | 2018-03-20 | 2021-06-22 | At&T Mobility Ii Llc | Video access master platform |
| US11051058B2 (en) * | 2018-09-24 | 2021-06-29 | Hewlett Packard Enterprise Development Lp | Real-time wireless video delivery system using a multi-channel communications link |
| CN109348234B (zh) * | 2018-11-12 | 2021-11-19 | 北京佳讯飞鸿电气股份有限公司 | 一种高效亚像素运动估计方法及系统 |
| JP7190661B2 (ja) * | 2019-02-06 | 2022-12-16 | パナソニックIpマネジメント株式会社 | 画像処理装置、画像処理方法および画像処理システム |
| KR20220092962A (ko) | 2019-11-08 | 2022-07-04 | 오피 솔루션즈, 엘엘씨 | 적응적 크롭핑을 위한 방법들 및 시스템들 |
| US12238273B2 (en) | 2019-12-03 | 2025-02-25 | Mellanox Technologies, Ltd | Video coding system |
| KR102702094B1 (ko) | 2019-12-17 | 2024-09-04 | 삼성전자주식회사 | 다이나믹 비전 센서 시스템 |
| TWI790600B (zh) * | 2021-04-21 | 2023-01-21 | 宏芯科技股份有限公司 | 區域式視訊影像插補裝置及其方法 |
| US12339902B2 (en) | 2021-10-05 | 2025-06-24 | Mellanox Technologies, Ltd | Hardware accelerated video encoding |
| EP4686195A1 (en) * | 2023-06-29 | 2026-01-28 | Samsung Electronics Co., Ltd. | Method and display device for correcting distortion caused by lenticular lens |
| US20250260831A1 (en) * | 2024-02-14 | 2025-08-14 | Tencent America LLC | Implicit sub-pel position derivation for template matching-based intra prediction |
Family Cites Families (34)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| GB8713454D0 (en) | 1987-06-09 | 1987-07-15 | Sony Corp | Television standards converters |
| EP0294958B1 (en) * | 1987-06-09 | 1995-08-23 | Sony Corporation | Motion compensated interpolation of digital television images |
| US4816913A (en) * | 1987-11-16 | 1989-03-28 | Technology, Inc., 64 | Pixel interpolation circuitry as for a video signal processor |
| US4937666A (en) | 1989-12-04 | 1990-06-26 | Bell Communications Research, Inc. | Circuit implementation of block matching algorithm with fractional precision |
| GB2249906B (en) * | 1990-11-15 | 1994-04-27 | Sony Broadcast & Communication | Motion compensated interpolation of images |
| JP2861462B2 (ja) | 1991-04-12 | 1999-02-24 | ソニー株式会社 | 動きベクトル検出装置 |
| US5337088A (en) | 1991-04-18 | 1994-08-09 | Matsushita Electric Industrial Co. Ltd. | Method of correcting an image signal decoded in block units |
| US5430811A (en) | 1991-12-25 | 1995-07-04 | Matsushita Electric Industrial Co., Ltd. | Method for interpolating missing pixels and an apparatus employing the method |
| US5594813A (en) | 1992-02-19 | 1997-01-14 | Integrated Information Technology, Inc. | Programmable architecture and methods for motion estimation |
| JP2636622B2 (ja) | 1992-03-13 | 1997-07-30 | 松下電器産業株式会社 | ビデオ信号の符号化方法及び復号化方法ならびにビデオ信号の符号化装置及び復号化装置 |
| US5461423A (en) * | 1992-05-29 | 1995-10-24 | Sony Corporation | Apparatus for generating a motion vector with half-pixel precision for use in compressing a digital motion picture signal |
| JP2723199B2 (ja) | 1992-06-03 | 1998-03-09 | シャープ株式会社 | 光ディスクプレーヤのトラッキングサーボ引き込み回路装置 |
| KR100283343B1 (ko) * | 1992-06-25 | 2001-03-02 | 이데이 노부유끼 | 화상신호 부호화방법 및 복호화방법과 화상신호 부호화장치 및 복호화장치 |
| JPH06197334A (ja) * | 1992-07-03 | 1994-07-15 | Sony Corp | 画像信号符号化方法、画像信号復号化方法、画像信号符号化装置、画像信号復号化装置及び画像信号記録媒体 |
| KR970000761B1 (ko) | 1992-10-07 | 1997-01-18 | 대우전자 주식회사 | 소형 디지탈 방식 고선명 텔레비젼 |
| DE69430877T2 (de) * | 1993-04-09 | 2003-02-06 | Sony Corp., Tokio/Tokyo | Bildkodierungsverfahren und -vorrichtung |
| JP2967014B2 (ja) | 1993-05-24 | 1999-10-25 | キヤノン株式会社 | 画像処理装置 |
| KR100318786B1 (ko) | 1993-06-01 | 2002-04-22 | 똥송 멀티메디아 에스. 에이. | 움직임보상된보간방법및장치 |
| US5684538A (en) | 1994-08-18 | 1997-11-04 | Hitachi, Ltd. | System and method for performing video coding/decoding using motion compensation |
| JP3392564B2 (ja) * | 1995-02-27 | 2003-03-31 | 三洋電機株式会社 | 単板式カラービデオカメラ |
| JPH09102954A (ja) * | 1995-10-04 | 1997-04-15 | Matsushita Electric Ind Co Ltd | 1つまたは2つの予測ブロックからブロックの画素値を計算する方法 |
| US5991463A (en) | 1995-11-08 | 1999-11-23 | Genesis Microchip Inc. | Source data interpolation method and apparatus |
| KR100192270B1 (ko) * | 1996-02-03 | 1999-06-15 | 구자홍 | 에이치디티브이 비데오 디코더 회로 |
| KR100226684B1 (ko) * | 1996-03-22 | 1999-10-15 | 전주범 | 반화소 움직임 추정장치 |
| JP3224514B2 (ja) * | 1996-08-21 | 2001-10-29 | シャープ株式会社 | 動画像符号化装置および動画像復号装置 |
| RU2131172C1 (ru) * | 1996-12-10 | 1999-05-27 | Полыковский Андрей Маркович | Интерполяционный способ сжатия телевизионного сигнала |
| DE19730305A1 (de) | 1997-07-15 | 1999-01-21 | Bosch Gmbh Robert | Verfahren zur Erzeugung eines verbesserten Bildsignals bei der Bewegungsschätzung von Bildsequenzen, insbesondere eines Prädiktionssignals für Bewegtbilder mit bewegungskompensierender Prädiktion |
| DE19746214A1 (de) * | 1997-10-21 | 1999-04-22 | Bosch Gmbh Robert | Verfahren zur bewegungskompensierenden Prädiktion von Bewegtbildfolgen |
| US6122017A (en) * | 1998-01-22 | 2000-09-19 | Hewlett-Packard Company | Method for providing motion-compensated multi-field enhancement of still images from video |
| JP2002506600A (ja) | 1998-04-29 | 2002-02-26 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | 画像補間法 |
| US6252576B1 (en) | 1998-08-06 | 2001-06-26 | In-System Design, Inc. | Hardware-efficient system for hybrid-bilinear image scaling |
| EP1083752A1 (en) * | 1999-09-08 | 2001-03-14 | STMicroelectronics S.r.l. | Video decoder with reduced memory |
| JP4599672B2 (ja) | 1999-12-21 | 2010-12-15 | 株式会社ニコン | 補間処理装置および補間処理プログラムを記録した記録媒体 |
| US6950469B2 (en) * | 2001-09-17 | 2005-09-27 | Nokia Corporation | Method for sub-pixel value interpolation |
-
2001
- 2001-09-17 US US09/954,608 patent/US6950469B2/en not_active Expired - Lifetime
-
2002
- 2002-09-11 CA CA2452632A patent/CA2452632C/en not_active Expired - Lifetime
- 2002-09-11 KR KR1020047001304A patent/KR100972850B1/ko not_active Expired - Lifetime
- 2002-09-11 WO PCT/FI2002/000729 patent/WO2003026296A1/en not_active Ceased
- 2002-09-11 KR KR1020117023185A patent/KR101176903B1/ko not_active Expired - Lifetime
- 2002-09-11 ES ES02758498.6T patent/ES2540583T7/es active Active
- 2002-09-11 EP EP02758498.6A patent/EP1433316B9/en not_active Expired - Lifetime
- 2002-09-11 JP JP2003529764A patent/JP4698947B2/ja not_active Expired - Lifetime
- 2002-09-11 RU RU2004101290/09A patent/RU2317654C2/ru active
- 2002-09-11 HU HU0400295A patent/HU228954B1/hu unknown
- 2002-09-11 CN CNB028150856A patent/CN1331353C/zh not_active Expired - Lifetime
- 2002-09-11 CN CN2007101008867A patent/CN101232622B/zh not_active Expired - Lifetime
- 2002-09-11 BR BR0211263-9A patent/BR0211263A/pt active IP Right Grant
- 2002-09-11 EE EEP200400046A patent/EE05594B1/xx unknown
- 2002-09-11 KR KR1020077028126A patent/KR20080007276A/ko not_active Withdrawn
- 2002-09-11 PT PT2758498T patent/PT1433316E/pt unknown
- 2002-09-11 AU AU2002324085A patent/AU2002324085C1/en not_active Expired
- 2002-09-11 MX MXPA04000203A patent/MXPA04000203A/es active IP Right Grant
- 2002-09-11 SG SG200603150-4A patent/SG167662A1/en unknown
-
2003
- 2003-11-11 ZA ZA200308785A patent/ZA200308785B/en unknown
-
2005
- 2005-03-25 US US11/090,717 patent/US7280599B2/en not_active Expired - Lifetime
-
2007
- 2007-08-15 US US11/839,205 patent/US8036273B2/en not_active Expired - Fee Related
- 2007-09-11 RU RU2007133925/07A patent/RU2477575C2/ru active
-
2008
- 2008-02-28 JP JP2008048390A patent/JP4700704B2/ja not_active Expired - Lifetime
-
2011
- 2011-01-06 JP JP2011001023A patent/JP5502765B2/ja not_active Expired - Lifetime
Also Published As
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| ES2540583T3 (es) | Método para interpolación de valor de subpíxeles | |
| AU2003201069B2 (en) | Coding dynamic filters | |
| AU2002324085A1 (en) | Method for sub-pixel value interpolation | |
| GB2379820A (en) | Interpolating values for sub-pixels | |
| AU2007237319B2 (en) | Method for sub-pixel value interpolation |