MX2012011165A - Metodo de prediccion espacial, metodo de decodificacion de imagenes y metodo de codificacion de imagenes. - Google Patents

Metodo de prediccion espacial, metodo de decodificacion de imagenes y metodo de codificacion de imagenes.

Info

Publication number
MX2012011165A
MX2012011165A MX2012011165A MX2012011165A MX2012011165A MX 2012011165 A MX2012011165 A MX 2012011165A MX 2012011165 A MX2012011165 A MX 2012011165A MX 2012011165 A MX2012011165 A MX 2012011165A MX 2012011165 A MX2012011165 A MX 2012011165A
Authority
MX
Mexico
Prior art keywords
block
pixel
value
current block
prediction
Prior art date
Application number
MX2012011165A
Other languages
English (en)
Inventor
Takahiro Nishi
Virginie Drugeon
Hisao Sasai
Youji Shibahara
Kyoko Tanikawa
Original Assignee
Panasonic Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Panasonic Corp filed Critical Panasonic Corp
Publication of MX2012011165A publication Critical patent/MX2012011165A/es

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/11Selection of coding mode or of prediction mode among a plurality of spatial predictive coding modes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/14Coding unit complexity, e.g. amount of activity or edge presence estimation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/182Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a pixel

Landscapes

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

Abstract

Se describe un método de predicción espacial capaz de reducir la complejidad de la predicción espacial que incluye: detectar un borde (E) que se superpone al bloque actual al obtener una gradiente horizontal (Gy) y una gradiente vertical (Gx) entre pixeles dentro de un bloque adyacente al bloque actual (S10); calcular una pendiente entera del borde (Sil); determinar, para, cada posición de pixel dentro del bloque actual, una posición de sub-pel (450) que es una intersección entre (i) una línea que tiene la pendiente entera y pasa a través de la posición de pixel (440) y (ii) un límite del bloque adyacente (S12); y predecir, para cada posición de pixel, un valor de pixel en la posición de pixel con base en un valor de pixel interpolado en la posición de sub-pel (S13), en donde el límite del bloque adyacente es una hilera o una columna que es la más cercana al bloque actual, entre hileras o columnas de pixeles incluidas en el bloque adyacente.

Description

METODO DE PREDICCION ESPACIAL, METODO DE DECODIFICACION DE IMAGENES Y METODO DE CODIFICACION DE IMAGENES Campo de la Invención La presente invención se refiere a un método de predicción espacial en la codificación y decodificación de una imagen, y en particular a una interpolación espacial direccional que incluye la detección de bordes o implementación eficiente de esta interpolación.
Antecedentes de la Invención Los métodos de predicción espacial, es decir, interpolación espacial han sido empleados en muchas aplicaciones. En particular, la interpolación espacial forma una parte esencial de muchas aplicaciones de codificación y procesamiento de imágenes y video. En los algoritmos de codificación de imágenes o video híbridos, la predicción espacial se emplea típicamente para determinar una predicción para un bloque de imágenes con base en los pixeles de bloques ya codificados/decodificados . Por otro lado, la interpolación espacial también se puede usar como parte de postprocesamiento de la imagen o señal de video decodificada, en particular para ocultar errores .
La mayoría de los algoritmos de codificación de video estandarizados se basan en codificación de video híbrida. Los métodos de codificación de video híbrida REF.: 235226 típicamente combinan varios esquemas de compresión sin pérdidas y con pérdidas diferentes para poder lograr la ganancia de compresión deseada. La codificación de video híbrida también es la base para las normas ITU-T (normas H.26x tales como H.261 y H.263) así como las normas ISO/IEC (normas MPEG-X tales como MPEG-1, MPEG-2 y MPEG-4) . La norma de codificación de video más reciente y avanzada es actualmente la norma conocida como codificación de video avanzada H.264/MPEG-4 (AVC, por sus siglas en inglés) que es el resultado de los esfuerzos de estandarización por el equipo de video conjunto (JVT) , un equipo conjunto de grupos ITU-T e ISO/IEC MPEG.
Una señal de imagen (señal de entrada o señal de video de entrada) ingresada a un codificador (aparato de codificación de imágenes) es una secuencia de imágenes llamada cuadros (cuadros de video) , cada cuadro es una matriz bidimensional de pixeles . Todas las normas mencionadas arriba basadas en codificación de video híbrida incluyen subdividir cada cuadro individual en bloques más pequeños que consisten en una pluralidad de pixeles. Típicamente, un macrobloque (que indica normalmente un bloque de 16 x 16 pixeles) es el elemento de imagen básico, para el cual se lleva a cabo la codificación. Sin embargo, varias etapas de codificación particulares pueden llevarse a cabo para elementos de imagen más pequeños, conocidos como sub-bloques o simplemente bloques y que tienen el tamaño de, por ejemplo, 8 8, x 4 y 16 x 8.
En la intra codificación de acuerdo con H.264/MPEG-4 AVC, se lleva a cabo predicción espacial en sub-bloques o macrobloques de los tamaños de 8 x 8, 4 x 4, 16 x 16 para de esta manera reducir la redundancia espacial. La predicción espacial se conoce también como interpolación espacial, intra predicción o predicción intra cuadros. La predicción espacial que usa una dirección espacial se conoce como predicción espacial direccional. Además, la codificación usando esta predicción espacial se conoce como intra codificación o codificación espacial, y una imagen o un bloque que es intra-codificado es una imagen intra-codificada o un bloque intra-codificado. La predicción intra-cuadros usa un conjunto predefinido de modos de intra-predicción (modos de predicción espacial que incluyen el modo de predicción direccional) , que básicamente predicen el bloque actual (objetivo de predicción) usando los pixeles limítrofes de los bloques adyacentes ya codificados.
La figura 1 ilustra esquemáticamente los ocho modos de predicción espacial direccional usados para los sub-bloques de 4 x 4 pixeles. Los diferentes tipos (modos) de predicción espacial direccional se refieren a diferentes direcciones de borde, es decir, la dirección de la extrapolación bidimensional aplicada como se ilustra en la figura 1. Hay ocho modos de predicción direccional diferentes y un modo de predicción DC para sub-bloques de los tamaños 4 x 4 y 8 x 8, y tres modos de predicción direccional diferentes y un modo de predicción DC para los macrobloques de 16 x 16 pixeles.
Ocho de los modos de predicción espacial direccional son marcados por un valor 302 de intervalo {o, 1, 3, 4, 5, 6, 7, 8} y asociados con predicciones en ocho direcciones diferentes 301. Un modo de predicción restante (modo de predicción espacial) es marcado por un valor de 2 y llamado "modo de predicción DC" . En el modo de predicción DC, todos los pixeles en un bloque son predichos por un solo valor, que es el valor medio de los pixeles de referencia circundantes. En los ocho modos de predicción espacial direccional, el bloque actual se predice de tal manera que los pixeles de referencia sean repetidos a lo largo de las direcciones 301 correspondientes. Por ejemplo, el modo vertical que es un modo de predicción espacial direccional marcado con "0" repite verticalmente los pixeles de referencia de la hilera inmediatamente arriba del bloque actual. El modo horizontal que es un modo de predicción espacial direccional marcado con "1" repite horizontalmente los pixeles de referencia de la columna inmediatamente a la izquierda del bloque actual. Los modos de predicción espacial direccional restantes marcados con valores de 3 a 8 son modos de intra predicción diagonal, de acuerdo a lo cuales los pixeles de referencia se repiten diagonalmente en las direcciones diagonales respectivas.
En codificación de video, los bloques intra-codificados sirven para refrescar la secuencia de video y detener la propagación de errores. Sin embargo, la eficiencia de la codificación espacial es más baja que el desempeño de la codificación temporal (inter codificación) , lo cual lleva a una ganancia de compresión total más baja así como a altas variaciones de la velocidad de bits resultante.
Para incrementar la eficiencia de codificación, una predicción espacial mejorada en la cual el número de direcciones de extrapolación para predecir pixeles de un bloque no esté limitado a ocho es sugerida (véase PTL 1) . Más bien, se lleva a cabo detección de bordes dentro de los bloques adyacentes ya decodificados en PTL 1. Con base en la dirección del borde determinado como dominante, los pixeles de bloque son extrapolados o interpolados posiblemente a partir de una posición de sub-pel entre pixeles que pertenezcan a un bloque adyacente.
PTL 1 hace posible una determinación más precisa de una dirección de predicción. Esto lleva a una predicción espacial más precisa, lo cual, por otro lado, se traduce en señal de error de predicción más pequeña (diferencia entre el bloque actual y un bloque predicho) y de esta manera, en una mejor compresión.
Literatura de patente PLT 1 - Presentación de Solicitud de patente europea No. 2081386 Breve Descripción de la Invención Problema técnico Sin embargo, la detección de bordes y la extrapolación o interpolación en la dirección del borde dominante detectado requieren una pluralidad de cálculos bastante complejos tales como divisiones, lo cual incrementa la complejidad y reduce la facilidad de implementación de la codificación y/o decodificación. En demasiadas aplicaciones, es necesario que al menos el decodificador (aparato de decodificación de imágenes) tenga una complejidad tan baja como sea posible. En particular, el empleo en dispositivos con una fuente de energía limitada y/o métodos de procesamiento requiere implementaciones de baja complejidad de un codificador y/o un decodificador .
La presente invención ha sido concebida para resolver los problemas, y el objetivo de la presente invención es proporcionar un método de predicción espacial que pueda reducir la complejidad de la predicción espacial.
Solución al problema Para lograr el objetivo, un método de predicción espacial de acuerdo con un aspecto de la presente invención es un método de predicción espacial para predecir espacialmente un valor de pixel en cada posición de pixel dentro de un bloque actual incluido en una imagen, y el método incluye: detectar un borde que se superponga al bloque actual al obtener una gradiente horizontal y una gradiente vertical entre pixeles dentro de un bloque adyacente al bloque actual; calcular una pendiente entera con base en al menos una de la gradiente horizontal y la gradiente vertical, la pendiente entera indica un valor entero de una pendiente del borde detectado; determinar una posición de sub-pel para cada una de las posiciones de pixel dentro del bloque actual, la posición de sub-pel es una intersección entre (i) una línea que tiene la pendiente entera calculada y pasa a través de la posición de pixel y (ii) un límite del bloque adyacente; y predecir, para cada una de las posiciones de pixel, el valor de pixel en la posición de pixel con base en un valor de pixel interpolado en la posición de sub-pel determinada para la posición de pixel, en donde el límite del bloque adyacente es una hilera o una columna que está más cerca del bloque actual, entre una pluralidad de hileras o una pluralidad de columnas de pixeles incluidas en el bloque adyacente .
De esta manera, se calcula primero la pendiente entera del borde que se superpone al bloque actual (borde que entra en el bloque actual) , y la posición de sub-pel que corresponde a cada una de las posiciones de pixel dentro del bloque actual se determina de acuerdo con la pendiente entera. Aquí, la posición de sub-pel para cada una de las posiciones de pixel dentro del bloque actual puede determinarse usando la pendiente entera, sin una división. Así, la división puede evitarse para cada una de las posiciones de pixel dentro del bloque actual. En otras palabras, es posible evitar para cada una de las posiciones de pixel dentro del bloque actual (i) multiplicación del valor de coordenada horizontal o el vertical a la posición de pixel, por uno del componente horizontal y el componente vertical del borde, y (ii) división del resultado de la multiplicación entre el otro del componente horizontal y el componente vertical. Como resultado, incluso cuando el cálculo de la pendiente entera del borde requiere una división sólo una vez, la división para cada una de las posiciones de pixel dentro del bloque actual puede ser evitada, y se puede reducir la complejidad de la predicción espacial. En otras palabras, pueden suprimirse operaciones complej as .
En otras palabras, el método de predicción espacial de acuerdo con un aspecto de la presente invención se caracteriza por calcular una pendiente entera del borde detectado únicamente para el bloque actual con base en al menos una de una gradiente vertical y una gradiente horizontal, y determinar una intersección de la línea de la pendiente entera y una hilera o una columna de los pixeles limítrofes en los bloques adyacentes .
Además, en el cálculo, la una de la gradiente horizontal y la gradiente vertical puede ser escalada por una ca potencia de 2, y la pendiente entera puede calcularse usando una de la gradiente horizontal y la gradiente vertical escalada, c siendo un entero positivo, y en la determinación, la posición de sub-pel para la posición de pixel puede calcularse al multiplicar la pendiente entera generada por la escalada por una horizontal o vertical de valor de coordenada a la posición de pixel que será predicha dentro del bloque actual .
Ya que la pendiente entera se calcula al escalar una de la gradiente vertical y la gradiente horizontal por una ca potencia de 2, la precisión de la pendiente entera puede ser incrementada por la escalada cuando la pendiente entera se calcula por una división en la cual un valor que indique una gradiente que será escalada se use como el número que será dividido (numerador) . Además, ya que la escalada por una ca potencia de 2 es llevada a cabo, la escalada se puede llevar a cabo fácilmente al desplazar bits del valor a la izquierda. Más aún, la posición de sub-pel calculada por esta escalada puede ser fácilmente re-escalada al desplazar bits del valor a la derecha. Además, ya que la precisión de la pendiente entera es más alta, la precisión de la posición de sub-pel puede ser incrementada.
El método de predicción espacial puede incluir además calcular el valor de c usando una función de la una de la gradiente horizontal y la gradiente vertical.
En consecuencia, la escalada usando una c adecuada puede ser implementada . Por ejemplo, la pendiente entera se calcula por una división en la cual el valor que indica la gradiente que será escalada se usa como el número que será dividido (numerador) . Cuando el valor es más grande, el sobreflujo de la pendiente entera puede ser evitado al establecerse para que sea aplicada al establecerse que será aplicada la gradiente más pequeña.
Más aún, en el cálculo, un resultado de una división puede obtenerse con referencia a una tabla de división almacenada en una memoria, y la pendiente entera puede ser calculada usando el resultado de la división obtenido, la división usando, como un divisor, un valor que indica una de la gradiente horizontal y la gradiente vertical, y la tabla de división indica, para cada valor predeterminado, el valor predeterminado y un resultado de una división usando el valor predeterminado como un divisor.
En consecuencia, ya que la tabla de división que indica un resultado de la división en el cual un valor predeterminado se usa como un divisor (denominador) para cada uno de los valores es referida, el resultado puede obtenerse fácilmente sin llevar a cabo realmente una división en la cual un valor que indique una de la gradiente horizontal y la gradiente vertical se use como un divisor (denominador) . La pendiente entera puede calcularse usando el resultado de la división con facilidad, es decir, con baja complejidad.
Aquí, la memoria puede ser ya sea una memoria interna o una memoria externa de un aparato que prediga un valor de pixel (unidad intra predicción) . Más aún, en el resultado de la división indicado en la tabla de división, el número que será dividido (numerador) es adecuadamente una aa potencia de 2, a siendo un entero positivo. Aún preferiblemente, el valor de a es una función de la gradiente horizontal o vertical, en particular, una función de la gradiente aplicada como un divisor. Esto hace posible seleccionar a más alta para un divisor más grande y a más baja para un divisor más bajo, dando como resultado un incremento adicional en la precisión de predicción.
Además, un valor máximo del valor predeterminado indicado en la tabla de división puede ser una Ja potencia de 2, J siendo un entero, y en el cálculo, cuando el valor que indique una de la gradiente horizontal y la gradiente vertical usada como el divisor exceda la ba potencia de 2, una de la gradiente horizontal y la gradiente vertical puede ser escalada al desplazar bits del valor a la derecha para obtener el resultado de la división usando, como un divisor, un valor que indique una de la gradiente horizontal y la gradiente vertical escalada.
En consecuencia, cuando un valor que indica una de la gradiente horizontal y la gradiente vertical como un divisor excede una Jba potencia de 2, es decir, el valor predeterminado máximo indicado en la tabla de división, los bits del valor que indiquen la gradiente son desplazados a la derecha, y el resultado de la división usando el valor cuyos bits han sido desplazados como un divisor se obtiene a partir de la tabla de división. Así, incluso con limitación en la tabla de división, el resultado de la división puede obtenerse fácilmente sobre el límite.
Más aún, en el cálculo, la pendiente entera puede calcularse al dividir un valor que indique una de la gradiente horizontal y la gradiente vertical entre un valor que indique la otra de la gradiente horizontal y la gradiente vertical, cuando el valor de pixel en cada una de las posiciones de pixel dentro del bloque actual sea predicho, pueden establecerse pesos de acuerdo con una distancia, en el límite, entre la posición de sub-pel determinada para la posición de pixel y cada una de las posiciones de peí completo adyacentes a la posición de sub-pel, y el valor de pixel en la posición de sub-pel puede ser interpolado al establecer una de las ponderaciones correspondientes a cada valor de pixel de las posiciones de peí completo y calculando un promedio ponderado de los valores de pixel .
En consecuencia, el valor de pixel en la posición de sub-pel puede ser interpolado adecuadamente.
Además, en el cálculo, la pendiente entera puede calcularse únicamente para el bloque actual, y en la determinación, la posición de sub-pel puede determinarse para cada una de las posiciones de pixel dentro del bloque actual, usando la pendiente entera que sea común para las posiciones de pixel .
Ya que una pendiente entera se calcula para el bloque actual, la carga de cálculo puede ser suprimida.
La presente invención puede implementarse no sólo como este método de predicción espacial, sino también como un aparato y un circuito integrado cada uno de los cuales prediga un espacio por el método de predicción espacial, como un programa que haga que una computadora prediga un espacio de acuerdo con el método de predicción espacial, y con un medio de grabación que almacene el programa. Más aún, la presente invención también se puede implementar como un aparato de codificación de imágenes y un circuito integrado cada uno de los cuales codifique una imagen usando el espacio predicho por el método de predicción espacial, un método de codificación de imágenes para codificar la imagen tal cual, un programa que haga que una computadora codifique la imagen de acuerdo con el método de codificación de imágenes, y un medio de grabación que almacene el programa. Además, la presente invención también se puede implementar como un aparato de decodificación de imágenes y un circuito integrado cada uno de los cuales decodifique una imagen usando el espacio predicho por el método de predicción espacial, un método de decodificación de imágenes para decodificar la imagen tal cual, un programa que haga que una computadora decodifique la imagen de acuerdo con el método de decodificación de imágenes, y un medio de grabación que almacene el programa.
Un dispositivo de predicción espacial de acuerdo con un aspecto de la presente invención es un dispositivo de predicción espacial que predice espacialmente un valor de pixel en cada posición de pixel dentro de un bloque actual incluido en una imagen, y el dispositivo incluye: una unidad de detección configurada para detectar un borde que se superponga al bloque actual al obtener una gradiente horizontal y una gradiente vertical entre pixeles dentro de un bloque adyacente al bloque actual; una unidad de cálculo configurada para calcular una pendiente entera con base en al menos una de la gradiente horizontal y la gradiente vertical, la pendiente entera indica un valor entero de una pendiente del borde detectado; una unidad de determinación configurada para determinar una posición de sub-pel para cada una de las posiciones del pixel dentro del bloque actual, la posición de sub-pel es una intersección entre (i) una línea que tiene la pendiente entera calculada y pasa a través de la posición de pixel y (ii) un límite del bloque adyacente; y una unidad de predicción configurada para predecir, para cada una de las posiciones de pixel, el valor de pixel en la posición de pixel con base en un valor de pixel interpolado en la posición de sub-pel determinada para la posición de pixel, en donde el límite del bloque adyacente es una hilera o una columna que está más cerca del bloque actual, entre una pluralidad de hileras o una pluralidad de columnas de pixeles incluidas en el bloque adyacente.
Además, la unidad de cálculo puede configurarse para escalar una de la gradiente horizontal y la gradiente vertical por una ca potencia de 2, y calcular la pendiente entera usando una de la gradiente horizontal y la gradiente vertical escaladas, c siendo un entero positivo, y la unidad de determinación puede configurarse para calcular la posición de sub-pel para la posición de pixel al multiplicar la pendiente entera generada por la escalada por un valor de coordenada horizontal o vertical a la posición de pixel que será predicha dentro del bloque actual.
El dispositivo de predicción espacial puede incluir además una unidad de cálculo de coeficientes configurada para calcular el valor de c usando una función de una de la gradiente horizontal (Gy) y la gradiente vertical (Gx) .
Además, la unidad de cálculo puede configurarse para obtener un resultado de una división con referencia a una tabla de división almacenada en una memoria, y calcular la pendiente entera usando el resultado obtenido de la división, la división usa, como un divisor, un valor que indica una de la gradiente horizontal (Gy) y la gradiente vertical (Gx) , y la tabla de división indica, para cada valor predeterminado, el valor predeterminado y un resultado de una división usando el valor predeterminado como un divisor.
Más aún, un valor máximo del valor predeterminado indicado en la tabla de división puede ser una Ja potencia de 2, b siendo un entero, y cuando el valor que indique una de la gradiente horizontal (Gy) y la gradiente vertical (Gx) usada como el divisor exceda la a potencia de 2 , la unidad de cálculo puede configurarse para escalar una de la gradiente horizontal y la gradiente vertical al desplazar bits del valor a la derecha para obtener el resultado de la división usando, como un divisor, un valor que indique una de la gradiente horizontal y la gradiente vertical escaladas.
Además, la unidad de cálculo puede configurarse para calcular la pendiente entera la dividir un valor que indique una de la gradiente horizontal (Gy) y la gradiente vertical (Gx) entre un valor que indique la otra de la gradiente horizontal y la gradiente vertical, y la unidad de predicción puede configurarse para establecer pesos de acuerdo con una distancia, en el límite, entre la posición de sub-pel determinada para la posición de pixel y cada una de las posiciones de peí completo adyacentes a la posición de sub-pel, e interpolar el valor de pixel en la posición de sub-pel al establecer uno de los pesos correspondientes a cada valor de pixel de las posiciones de peí completo y calcular un promedio ponderado de los valores de pixel.
Más aún, la unidad de cálculo puede configurarse para calcular la pendiente entera únicamente para el bloque actual, y la unidad de determinación puede configurarse para determinar la posición de sub-pel para cada una de las posiciones de pixel dentro del bloque actual, usando la pendiente entera que sea común para las posiciones de pixel .
Efectos adecuados de la invención El método de predicción espacial de acuerdo con la presente invención puede reducir la complejidad de la predicción espacial.
Breve Descripción de las Figuras La figura 1 ilustra esquemáticamente ocho modos de predicción direccional usados para los sub-bloques de 4 x 4 pixeles .
La figura 2 es un diagrama de bloques de un aparato de codificación de imágenes de acuerdo con la modalidad 1 de la presente invención.
La figura 3 es un diagrama de bloques de un aparato de decodificación de imágenes de acuerdo con la modalidad 1.
La figura 4A ilustra un vector de borde y sus proyecciones en los ejes ortogonales X y Y de acuerdo con la modalidad 1.
La figura 4B muestra una cuadrícula de 4 x 4 pixeles del bloque que será extrapolado que es un bloque que será predicho por extrapolación de acuerdo con la modalidad l .
La figura 4C ilustra un ejemplo en el cual un borde entra en el bloque que será predicho desde el lado izquierdo de acuerdo con la modalidad 1.
La figura 4D ilustra otro ejemplo de una dirección de borde de acuerdo con la modalidad 1.
La figura 5 es un diagrama de flujo que indica procesos llevados a cabo por la unidad de intra predicción de acuerdo con la modalidad 1.
La figura 6 es un ejemplo de un sistema de acuerdo con la modalidad 1.
La figura 7 es un diagrama de flujo que indica un método de, predicción espacial de acuerdo con un aspecto de la presente invención.
La figura 8 ilustra una configuración general de un sistema de provisión de contenido para implementar servicios de distribución de contenido.
La figura 9 ilustra una configuración general de un sistema de difusión digital.
La figura 10 ilustra un diagrama de bloques de un ejemplo de una configuración de una televisión.
La figura 11 es un diagrama de bloques que ilustra un ejemplo de una configuración de una unidad de reproducción/grabación de información que lee y escribe información de o sobre un medio de grabación que es un disco óptico .
La figura 12 ilustra un ejemplo de una configuración de un medio de grabación que es un disco óptico .
La figura 13A ilustra un ejemplo de un teléfono celular .
La figura 13B ilustra un diagrama de bloques de un ejemplo de una configuración del teléfono celular.
La figura 14 ilustra una estructura de datos multiplexados .
La figura 15 ilustra esquemáticamente cómo cada flujo es multiplexado en datos multiplexados.
La figura 16 ilustra cómo un flujo de video se almacena en un flujo de paquetes PES en más detalle.
La figura 17 ilustra una estructura de paquetes TS y paquetes de origen en los datos multiplexados .
La figura 18 ilustra una estructura de datos de una PMT.
La figura 19 ilustra una estructura interna de información de datos multiplexados .
La figura 20 ilustra una estructura interna de información de atributos de flujo.
La figura 21 ilustra etapas para identificar datos de video.
La figura 22 ilustra un diagrama de bloques que ilustra un ejemplo de una configuración de un circuito integrado para implementar el método de codificación de video y el método de decodificación de video de acuerdo con cada una de las modalidades.
La figura 23 ilustra una configuración para cambiar entre frecuencias de excitación.
La figura 24 ilustra etapas para identificar datos de video y cambiar entre frecuencias de excitación.
La figura 25 ilustra un ejemplo de una tabla de consulta en la cual las normas de datos de video se asocian con las frecuencias de excitación.
La figura 26A ilustra un ejemplo de una configuración para compartir un módulo de una unidad de procesamiento de señales .
La figura 26B ilustra otro ejemplo de una configuración para compartir un módulo de una unidad de procesamiento de señales .
Descripción Detallada de la Invención Se describirán las modalidades para implementar la presente invención con referencia a las figuras.
Modalidad 1 La figura 2 es un diagrama de bloques que ilustra un ejemplo de un codificador 10G de acuerdo con la modalidad 1. El codificador 100 incluye una unidad de sustracción 105, una unidad de cuanti icación de transformación 110, una unidad de cuantificación inversa y transformación inversa 120, una unidad de adición 125, un filtro de desbloqueo 130, una memoria 140, un filtro de interpolación 150, una unidad de predicción compensada en movimiento 160, una unidad de estimación de movimiento 165, una unidad de intra predicción 160, una unidad de cambio intra/inter 175, una unidad de diseño de post filtro 180 y una unidad de codificación por entropía 190.
La unidad de sustracción 105 determina primero diferencias (señal de error de predicción, señal residual o bloque de error de predicción) entre un bloque actual que será codificado de una señal de video de entrada (señal de entrada) y un bloque predicho correspondiente (señal de predicción) predicho para el bloque actual. La señal de predicción (bloque predicho) se obtiene ya sea por una predicción temporal (inter predicción) o por una predicción espacial . El tipo de predicción puede ser variado sobre una base por cuadros, sobre una base por segmentos o sobre una base por macrobloques .
La codificación predictiva usando la predicción temporal se conoce como inter codificación, y la codificación predictiva usando la predicción espacial se conoce como intra codificación. El tipo de predicción para un cuadro de video puede establecerse por el usuario o seleccionarse por el codificador 100 para de esta manera lograr una ganancia de compresión posiblemente alta. El conmutador intra/inter 175 proporciona una señal de predicción correspondiente al sustractor 105 de acuerdo con el tipo de predicción seleccionado. La señal de predicción que usa predicción temporal se deriva a partir de las imágenes previamente codificadas que están almacenadas en la memoria 140. La señal de predicción que usa predicción espacial se deriva de los valores de pixeles limítrofes en los bloques adyacentes del mismo cuadro, los cuales han sido previamente codificados, decodificados y almacenados en la memoria 140. La memoria 140 opera entonces como una unidad de retraso que permite una comparación entre valores de señal actuales (valores de pixel) que serán codificados y los valores de señal de predicción (valores de pixel) generados a partir de valores de señal previos. La memoria 140 puede almacenar una pluralidad de cuadros previamente codificados (y decodificados) . La unidad de transformación de transformación 110 transforma las diferencias entre la señal de entrada y la señal de predicción en coeficientes (coeficientes de frecuencia), y cuantifica las diferencias. Las diferencias son representadas por una señal de error de predicción o una señal residual. La unidad de codificación por entropía 190 lleva a cabo codificación por entropía en los coeficientes cuantificados (imagen de video codificada o secuencia de video codificada) para de esta manera reducir más la cantidad de datos de una manera sin pérdidas. Esto se logra principalmente al aplicar un código a contraseñas de longitud variable en donde la longitud de una contraseña se selecciona con base en la probabilidad de que se preente. La unidad de codificación por entropía 190 envía la señal codificada (flujo de bits) que incluye el video codificado por entropía.
Las imágenes intra-codificadas (llamadas también imágenes tipo I o cuadros I) consisten únicamente en macrobloques que son intra-codificados, es decir, las imágenes intra-codificadas pueden ser decodificadas en referencia a cualquier otra imagen previamente decodificada . Las imágenes intra-codificadas proporcionan flexibilidad de error para la secuencia de video codificada (imagen de video codificada) ya que refrescan la secuencia de video codificada de errores posiblemente propagados de cuadro a cuadro debido a la predicción temporal. Además, los cuadros I hacen posible un acceso aleatorio dentro de la secuencia de imágenes de video codificadas.
La unidad de intra predicción 170 usa un conjunto predefinido de modos de intra-predicción. Algunos de los modos de intra-predicción predicen el bloque actual usando los pixeles limítrofes de los bloques adyacentes ya codificados. Otros modos de intra-predicción, como la comparación de plantillas, por ejemplo, usan un área de búsqueda hecha de pixeles ya codificados que pertenecen al mismo cuadro.
El conjunto predefinido de modos de intra-predicción incluyen algunos modos de intra-predicción espacial direccional. Los diferentes modos de intra-predicción direccional se refieren a diferentes direcciones de la predicción bidimensional aplicada. Esto permite una intra-predicción espacial eficiente en el caso de varias direcciones de borde. El sustractor 105 sustrae la señal de predicción obtenida por esta intra-predicción de la señal de entrada como se describió arriba. Además, la unidad de intra predicción 170 envía información de modo de intra-predicción (no mostrado en la figura 2) que indica el modo de intra predicción a la unidad de codificación por entropía 190. La unidad de codificación por entropía 190 codifica por entropía la información de modo de intra-predicción, y envía la información de modo de intra-predicción codificada por entropía junto con la señal codificada. La unidad de intra predicción 170 de acuerdo con la modalidad 1 lleva a cabo además la predicción espacial distintiva aparte de este procesamiento. La predicción espacial distintiva se describirá más adelante.
Dentro del codificador 100, se incorpora una unidad de decodificación para obtener una señal decodificada (señal decodificada local) . En otras palabras, el codificador 100 incluye la unidad de cuantificación inversa y transformación inversa 120 por lo que la decodificación se lleva a cabo de acuerdo con el procesamiento de codificación. La unidad de cuantificación inversa y transformación inversa 120 lleva a cabo la cuantificación inversa y transformación ortogonal inversa (transformación de frecuencia inversa) en el valor cuantificado obtenido al llevar a cabo transformación ortogonal (transformación de frecuencia) y cuantificación en la señal de error de predicción. Como resultado, la unidad de cuantificación inversa y transformación inversa 120 genera y envía una señal de error de predicción decodificada.
La señal de error de predicción decodificada difiere de la señal de error de predicción original debido al error de cuantificación llamado también ruido de cuantificación. La unidad de adición 125 añade la señal de error de predicción decodificada a la señal de predicción para obtener una señal reconstruida (imagen reconstruida) . Para mantener la compatibilidad entre el codificador 100 (aparato de codificación de imágenes) y el decodificador (aparato de decodificación de imágenes) , los elementos constituyentes del filtro de interpolación 150, la unidad de intra predicción 170 y la unidad de predicción compensada en movimiento 160 obtienen la señal de predicción con base en la señal de entrada codificada y subsecuentemente decodificada (señal decodificada) que se conoce tanto en el codificador 100 como en el decodificador . Debido a la cuantificación, el ruido de cuantificación es superpuesto en la señal reconstruida. Debido a la codificación por bloques, el ruido superpuesto comúnmente tiene características de bloqueo, lo cual resulta, en particular para cuantificación fuerte, en límites de bloques visibles en la imagen reconstruida (imagen indicada por la señal reconstruida) . Para reducir estos artefactos, el filtro de desbloqueo 130 lleva a cabo filtración de desbloqueo en cada bloque de imagen reconstruido. El filtro de desbloqueo 130 almacena la señal reconstruida en la cual la filtración de desbloqueo se ha llevado a cabo, como una señal decodificada en la memoria 140.
Para ser decodificadas, las imágenes codificadas por inter codificación (imágenes inter-codificadas) requieren una imagen previamente codificada y posteriormente decodificada (imagen indicada por la señal decodificada) . La predicción temporal (inter predicción) puede llevarse a cabo unidireccionalmente, es decir, usando sólo cuadros ordenados en tiempo antes del cuadro actual que será codificado, o bidireccionalmente, es decir, usando también cuadros que sigan al cuadro actual. La predicción temporal unidireccional resulta en las imágenes inter-codificadas llamadas cuadros P (imágenes P) ; y la predicción temporal bidireccional se traduce en imágenes inter-codificadas llamadas cuadros B (imágenes B) . En general, una imagen inter-codificada puede estar compuesta de cualquiera de macrobloques tipo P, B o incluso I. Un macrobloque inter-codificado (macrobloque P o B) se predice al emplear la unidad de predicción compensada en movimiento 160. Primero, un bloque que tenga la mejor coincidencia se busca para el bloque actual dentro de los cuadros codificados y decodificados previamente por la unidad de estimación de movimiento 165. Después, la unidad de predicción compensada en movimiento 160 envía el bloque que mejor coincida como una señal de predicción. Más aún, la unidad de estimación de movimiento 165 envía, a la unidad de predicción compensada en movimiento 160, datos de movimiento que indican desplazamiento relativo entre el bloque actual y su bloque de mejor coincidencia y son datos que tienen la forma tridimensional (un eje temporal, dos ejes espaciales) dentro de un flujo de bits. Para optimizar la precisión de predicción, el filtro de interpolación 150 transforma la resolución de una imagen de referencia (imagen decodificada) en una resolución de sub-pel espacial, por ejemplo, resolución de medio peí o cuarto de peí. En otras palabras, el filtro de interpolación 150 interpola sub-pixeles en la imagen de referencia. En consecuencia, la unidad de estimación de movimiento 165 estima un vector de movimiento de precisión de sub-pel.
La unidad de cuantificación de transformación 110 lleva a cabo transformación ortogonal (transformación de frecuencias) en y cuantifica la señal de error de predicción que indica las diferencias entre la señal de entrada actual y la señal de predicción, en los modos de intra- e inter-codificación, dando como resultado la generación del valor cuantificado que son coeficientes cuantificados (coeficientes de frecuencia) . Generalmente, una transformación ortogonal tal como una transformación de coseno discreta bidimensional (DCT, por sus siglas en inglés) o una versión entera de la misma se emplea toda vez que reduce la correlación de las imágenes de video naturales eficientemente. Después de la transformación, los componentes de baja frecuencia son normalmente más importantes para la calidad de imagen que los componentes de alta frecuencia por lo que más bits pueden ser gastados para la codificación de los componentes de baja frecuencia que aquellos de los componentes de alta frecuencia. La unidad de codificación por entropía 190 convierte la matriz bidireccional de los valores cuantificados en una disposición unidimensional. Típicamente, esta conversión se lleva a cabo por un llamado escaneo en zigzag, el cual inicia con el coeficiente DC en la esquina izquierda superior de la disposición bidimensional y escanea la disposición bidimensional en una secuencia predeterminada que concluye con un coeficiente AC en la esquina derecha inferior. Como la energía se concentra típicamente en la parte izquierda superior de la matriz bidimensional de los coeficientes, que corresponde a las frecuencias más bajas, el escaneo en zigzag se traduce en una disposición en donde normalmente los últimos valores son cero. Esto permite codificación eficiente usando códigos de longitud de corrida como una parte de/antes de la codificación por entropía real.
Además, la unidad de cuantificación de transformación 110 emplea cuantificación escalar que puede ser controlada por un parámetro de cuantificación (QP, por sus siglas en inglés) y una matriz de cuantificación personalizable (QM, por sus siglas en inglés) . La unidad de cuantificación de transformación 110 selecciona uno de 52 parámetros de cuantificación de acuerdo con los coeficientes que serán cuantificados , para cada macrobloque. Además, una matriz de cuantificación se diseña específicamente para mantener ciertas frecuencias en el origen para evitar prever calidad de imagen. La matriz de cuantificación puede ser adaptada a la secuencia de video codificada y señalizada junto con el flujo de bits.
El flujo de bits (señal codificada) incluye dos capas funcionales, una Capa de Codificación de Video (VCL, por sus siglas en inglés) y una Capa de Abstracción de Red (NAL, por sus siglas en inglés) . La VCL proporciona la funcionalidad de codificación como se describió brevemente arriba. La NAL encapsula elementos de información en unidades estandarizadas llamadas unidades NAL de acuerdo con su aplicación adicional tal como una transmisión sobre un canal o almacenamiento en almacenaje. Los elementos de información son, por ejemplo, la señal de error de predicción codificada (imagen de video codificada) u otra información necesaria para la decodificación de la imagen de video codificada (por ejemplo, tipo de predicción, parámetro de cuantificación y vectores de movimiento) . Estas son unidades VCL NAL que contienen la imagen de video codificada y la información relacionada, así como unidades no VCL que encapsulan datos adicionales tales como conjuntos de parámetros que se refieren a una secuencia de video codificada completa, o Información de Mejora Complementaria (SEI, por sus siglas en inglés) que proporciona información adicional que se puede usar para mejorar el desempeño de decodificación.
La unidad de diseño post filtro 180 diseña información de post filtro, tal como coeficientes de filtración para mejorar la calidad de imagen, con base en la señal decodificada y la señal de entrada, y envía la información de post filtración a la unidad de codificación por entropía 190. La unidad de diseño de post filtro 180 envía la información de post filtro por medio de SEI del flujo de bits (mensaje SEI) . En otras palabras, la unidad de diseño de post filtro 180 compara la señal localmente decodificada y la señal de entrada original de tal manera que el codificador 100 determine la información post filtro. En general, la información post filtro es información para permitir a un decodificador establecer un filtro adecuado. La información post filtro puede ser directamente los coeficientes de filtración u otra información que haga posible establecer los coeficientes de filtración. La información post filtro, que es enviada por la unidad de diseño post filtro 180 también es alimentada a la unidad de codificación por entropía 190 para ser codificada e insertada en la señal codificada.
La figura 3 es un diagrama de bloques que ilustra un ejemplo de un decodificador 200 que es un aparato de decodificación de imágenes de acuerdo con la modalidad 1. El decodificador 200 es un aparato que decodifica una señal codificada generada por el codificador 100, e incluye una unidad de cuantificación inversa y transformación inversa 220, una unidad de adición 225, un filtro de desbloqueo 230, una memoria 240, un filtro de interpolación 250, una unidad de predicción compensada en movimiento 260, una unidad de intra predicción 270, un conmutador intra/inter 275, un post filtro 280 y una unidad de decodificación por entropía 290. La unidad de cuantificación inversa y transformación inversa 220, la unidad de adición 225, el filtro de desbloqueo 230, la memoria 240, el filtro de interpolación 250, la unidad de predicción compensada en movimiento 260, la unidad de intra predicción 270 y el conmutador intra/inter 275 llevan a cabo el mismo procesamiento que la unidad de cuantificación inversa y transformación inversa 120, la unidad de adición 125, el filtro de desbloqueo 130, la memoria 140, el filtro de interpolación 150, la unidad de predicción compensada en movimiento 160, la unidad de intra predicción 170, la unidad de cambio intra/inter 175 que están incluidas en el codificador 100, respectivamente.
Más específicamente, la unidad de decodificación por entropía 290 obtiene un flujo de bits que es una señal codificada (señal de entrada al decodificador 200) . La unidad de decodificación por entropía 290 decodifica por entropía los valores cuantificados (imagen de video codificada) , los elementos de información necesarios para decodificar tales como datos de movimiento, modo de predicción etc., y la información post filtro. La unidad de decodificación por entropía 290 extrae, del flujo de bits, la información de modo de intra-predicción que indica el tipo/modo de la predicción espacial aplicada al bloque que será decodificado según sea necesario. La unidad de decodificación por entropía 290 envía la información de modo de intra-predicción extraída a la unidad de intra predicción 270. La unidad de cuantificación inversa y transformación inversa 220 obtienen los valores cuantificados dispuestos en una disposición unidimensional, y escanea inversamente los valores cuantificados para obtener así una matriz bidimensional . Además, la unidad de cuantificación inversa y transformación inversa 220 lleva a cabo cuantificación inversa y transformación inversa en los valores cuantificados para obtener una señal de error de predicción decodificada que corresponda a una diferencia obtenida al restar la señal de predicción de la señal de entrada del codificador 100.
La unidad de adición 225 obtiene una señal de predicción ya sea de la unidad de predicción compensada en movimiento 260 o la unidad de intra predicción 270. El conmutador intra/inter 275 cambia entre la predicción temporal llevada a cabo por la unidad de predicción compensada en movimiento 260 y la predicción espacial llevada a cabo por la unidad de intra predicción 270. En otras palabras, la predicción se cambia de acuerdo con la información de cambio para señalizar la predicción aplicada por el codificador 100. La información de cambio incluye además la información necesaria para predecir (i) un tipo de predicción en el caso de intra-predicción (información de modo de intra-predicción) , y (ii) datos de movimiento en el caso de predicción compensada en movimiento. Dependiendo del valor actual del vector de movimiento, la interpolación de valores de pixel puede requerirse para de esta manera llevar a cabo la predicción compensada en movimiento. Esta interpolación se lleva a cabo por el filtro de interpolación 250. La unidad de adición 225 añade la señal de error de predicción decodificada en el dominio espacial a la señal de predicción obtenida ya sea de la unidad de predicción compensada en movimiento 260 o la unidad intra predicción 270.
El filtro de desbloqueo 230 obtiene la imagen reconstruida (señal reconstruida) obtenida por la adición, lleva a cabo la filtración de desbloqueo en la imagen, y almacena la señal decodificada resultante en la memoria 240. La señal decodificada se aplica a la predicción temporal o espacial de los siguientes bloques. El post filtro 280 obtiene la información de post filtro para establecer post filtración. El post filtro 280 lleva a cabo después la post filtración en la señal decodificada para de esta manera mejorar más la calidad de imagen. En consecuencia, la señal de entrada que es la señal codificada es decodificada, y el resultado de decodificación es enviado como una señal de salida.
Se describirá en detalle el procesamiento distintivo llevado a cabo por las unidades de intra predicción 170 y 270 de acuerdo con la modalidad 1.
El problema debajo de la presente invención se basa en la observación de que la eficiencia de la (intra) predicción espacial aplicada a una codificación de imagen y video puede ser incrementada al mejorar la precisión de la detección y la subsecuente predicción de borde. Por otro lado, mejorar la detección y predicción de bordes requiere más potencia computacional y aplicar operaciones más complejas tales como divisiones. Esto puede causar dificultades para implementar eficientemente estos enfoques más complejos. Por ejemplo, emplear sólo aritmética entera para procesamiento de imágenes acelera la codificación y decodificación y hace posible implementaciones eficientes en procesadores de propósitos generales, procesadores de señales digitales o en hardware especializado o programable. Sin embargo, dependiendo de la precisión del entero, operaciones tales como multiplicaciones y divisiones pueden llevar a sobreflujos y/o precisión reducida.
Para incrementar el rendimiento de predicción de la intra-predicción, las unidades de intra predicción 170 y 270 emplean una intra predicción mejorada. En particular, la intra-predicción mejorada se basa en detección de bordes y calcula una intersección entre un límite de bloque (o una pluralidad de ellos) y el borde detectado como dominante. La intersección puede estar en una posición de sub-pel, y la interpolación se lleva a cabo con base en esta posición de sub-pel. Un ejemplo correspondiente de intra-predicción se describe, por ejemplo, en PTL. Las unidades de intra predicción 170 y 270 pueden llevar a cabo más eficientemente la predicción espacial direccional con baja complejidad en comparación con el método de intra-predicción descrita en PTL 1. general, los bordes en una imagen pueden detectados al determinar un campo de vector gradiente (vector gradiente o campo gradiente) de la imagen (entre pixeles) . Un vector gradiente es más grande en un borde y es perpendicular al mismo. Uno de los enfoques más populares para detectar el campo gradiente es la convolución de la imagen con los operadores de Sobel verticales y horizontales. Los operadores se expresan por las siguientes ecuaciones (ecuaciones 1 y 2) .
Ecuación 1 Ecuación 2 gradiente vertical (coordenada vertical o gradiente vertical) Gx y una coordenada de vectores de gradiente horizontal (coordenada horizontal o gradiente horizontal) Gy en un pixel particular p (x, y) se obtienen entonces al filtrar el pixel p(x, y) con la máscara de Sobel vertical Sx y la máscara de Sobel horizontal Sy, respectivamente. Muchas aplicaciones emplean un operador de Sobel para obtener el campo gradiente. Sin embargo, la presente invención no está limitada a detectar el campo gradiente por medio del operador de Sobel. En general, se puede emplear cualquier método de detección de bordes que proporcione el campo gradiente. Por ejemplo, máscaras con otros tamaños que el operador de Sobel pueden usarse tales como 2 x 2 0 4 x 4, o incluso máscaras más grandes pueden ser usadas. La selección de la máscara particular depende de los resultados deseados. Emplear máscaras más grandes puede añadir precisión de la detección de borde y suprimir la detección de pequeños bordes locales, pero por otro lado, incrementa la complejidad computacional . Como alternativa, máscaras que no sean la máscara de Sobel pueden usarse para detección de bordes, tal como un operador de Scharr, u operadores a base de derivadas más altas.
Después de obtener la coordenada vertical Gx y la coordenada horizontal Gy de la gradiente G, para una pluralidad de pixeles de bloques que rodean el bloque que será predicho, se puede determinar una gradiente dominante o un vector de borde dominante. Un vector de borde dominante (conocido simplemente como borde) E con la coordenada horizontal (componentes horizontales) Ex y la coordenada vertical (componentes verticales) Ey es perpendicular al vector de gradiente G. De manera correspondiente, los tamaños de los componentes horizontales Ex y los componentes verticales Ey del vector de borde dominante E corresponden a los tamaños de la gradiente horizontal Gy y gradiente vertical Gx, respectivamente (por ejemplo, Ex = -Gy, Ey = Gx para una rotación levógira) . Típicamente, el borde dominante para el bloque actual que será predicho se determina como un borde con una norma máxima de bordes (bordes que se superponen al bloque actual) que intersecan el bloque actual. Sin embargo, también se pueden usar otros métodos, por ejemplo, tomar un promedio ponderado de los bordes, o la dirección de borde detectada para una mayoría de pixeles, etc .
Debe notarse que el cálculo de gradientes no necesariamente se lleva a cabo para todos los pixeles de los bloques adyacentes (bloques vecinos adyacentes al bloque actual que será predicho) . En general, es adecuado sólo calcular el vector gradiente para pixeles cerca de los límites del bloque vecino adyacente al bloque que será interpolado (bloque actual que será predicho) . Al calcular el vector gradiente sólo para un subconjunto de pixeles en el bloque adyacente, se reduce la complejidad. En particular, las hileras y/o columnas directamente adyacentes al bloque actual no son muy adecuadas para la aplicación de una máscara de Sobel (u otras máscaras de detección de vectores de gradiente) ya que la máscara sólo podría superponerse parcialmente al bloque adyacente. Por lo tanto, de preferencia, la segunda y/o tercera hilera o columna más cercana de pixeles adyacentes al bloque actual se usa para calcular el vector gradiente. Sin embargo, la presente invención no está limitada a esto y se pueden usar también otros pixeles en el bloque adyacente.
Más aún, para la predicción, sólo los bordes que entren en el bloque que será predicho son de importancia, de esta manera la detección de bordes cerca de los límites reduce también el riesgo de detectar un borde falso.
La figura 4A ilustra el vector de borde E y sus proyecciones Ex y Ey (que corresponden a gradientes Gy y Cx, respectivamente) en los ejes ortogonales X y Y. La figura 4B muestra una cuadrícula de 4 x 4 pixeles del bloque que será extrapolado (predicho) . En particular, los círculos blancos y un cuadrado negro 440 representan pixeles del bloque que será extrapolado. El cuadrado negro 440 representa un pixel actual p(x,y) cuyo valor va a ser extrapolado en un ejemplo abajo. El eje ortogonal X lleva a través de una hilera inferior de pixeles que pertenecen a un bloque adyacente al bloque que será predicho en su lado superior. Los pixeles de la hilera se ilustran como triángulos negros o círculos negros. El eje ortogonal Y lleva a través de una columna más a la derecha de los pixeles que pertenecen a un bloque adyacente al bloque que será predicho en su lado izquierdo. Los pixeles de la columna se ilustran como círculos negros.
Una flecha 430 ilustra el borde detectado como un borde dominante (vector de borde dominante) E que entra en el bloque que será predicho. Una flecha punteada extrapola ilustrativamente el borde dominante hacia arriba hasta el pixel actual p(x, y). El borde dominante E entra en el bloque que será predicho a un ángulo en un sub-pel 450 entre dos pels completos (peí entero) 410 y 420 (ilustrado como dos triángulos negros) . El sub-pel 450 tiene que ser interpolado con base en su distancia a cada uno de los dos pels completos 410 y 420 más cercanos.
Para preservar el contraste, posición y dirección del borde lo más posible, el pixel actual 440 es extrapolado a lo largo de la dirección de borde con base en los valores de ambos de los pels completos 410 y 420.
Ecuación 3 p(x, ) = w, ¦ p(x - |_<S _|,0) + w2 · p(x - [d? ?) Aquí, Wi y w2 son ponderaciones, las cuales se determinan de preferencia con base en la distancia desde la intersección (sub-pel) 450 a cada uno de los pels completos 410 y 420. Se asume que el punto (0,0) descansa cerca de la esquina izquierda superior del bloque que será predicho. En la ecuación 3, el valor multiplicado por la ponderación Wi del primer lado derecho indica el valor de pixel del peí completo 420, y el valor multiplicado por la ponderación w2 del segundo lado derecho indica el valor de pixel del peí completo 410. Además, d? indica un valor positivo cuando un borde está a lo largo de una dirección desde la izquierda superior hasta la derecha inferior como el borde 430 como se ilustra en la figura 4B. Además, d? indica un valor negativo cuando un borde está a lo largo de una dirección de la derecha superior a la izquierda inferior. Por ejemplo, las ponderaciones y w2 pueden calcularse como la siguiente ecuación 4.
Ecuación 4 Aquí, d? es la distancia entre la coordenada X del pixel actual 440 y la coordenada X de la intersección 450. El operador indicado por la expresión 5 indica la operación de "piso" , que regresa para un operando real su entero más pequeño más cercano (en este ejemplo igual l) . El operador indicado por la expresión 6 indica la operación "ceil" , la cual regresa para un operando real su entero más grande más cercano (en este ejemplo igual Expresión 5 Expresión 6 Como se puede ver en la figura 4B, la pendiente k del borde 430 puede calcularse como la siguiente ecuación 7.
Ecuación 7 k = tan(a) =— =— Ex d? Así, la distancia d? puede calcularse como la siguiente ecuación 8.
Ecuación 8 y-Ex &c = Ey De esta manera, el cálculo de d? requiere una división. En general, para cada pixel del bloque que será predicho, se calcula la distancia d? desde la coordenada X del pixel que será predicho hasta la coordenada X de la intersección entre el borde y la hilera de pixeles del bloque adyacente superior (intersección que será interpolada entre los pixeles en la hilera) . Con base en la distancia calculada d?, entonces el pixel actual 440, es decir, el valor de pixel del pixel actual 440 p(x, y) se predice como p(x, y) = p(x-d?, 0) , lo cual significa que el pixel actual 440 (el valor de pixel del pixel actual 440) es extrapolado como un valor del sub-pel interpolado 450.
De acuerdo con la modalidad 1, todos los parámetros anteriores son típicamente valores enteros con una precisión dada y las operaciones aplicadas son operaciones enteras. Por ejemplo, los parámetros Ex y Ey pueden representarse por variables de 8 bits de largo correspondientes. En tal caso, la distancia d? también se calcula usando aritmética entera al llevar a cabo una multiplicación entera y x Ex y luego al dividir el resultado entre Ey. En la división aritmética entera, el resultado es también un entero, así, la división de enteros puede reducir ligeramente la precisión. En general, la reducción de precisión se hace más alta para valores más pequeños que serán divididos (y x Ex) y para valores más grandes de un divisor (Ey) .
Para reducir el número de operaciones llevadas a cabo para predecir un bloque de pixeles como se describió arriba, el número de divisiones que se tienen que llevar a cabo se reduce al calcular primero la pendiente k del borde E que es común para todos los pixeles del bloque que será predicho. La pendiente k calculada va a ser almacenada como una pendiente entera K = int (Ex/Ey) con una precisión predefinida. La pendiente entera K calculada es luego usada para calcular la distancia d? para el pixel actual que será predicho como la siguiente ecuación 9.
Ecuación 9 Aquí, la notación "int" enfatiza el hecho de que el operando es un entero con una precisión predefinida. En consecuencia, la división empleada para calcular la pendiente sólo se lleva a cabo una vez para el bloque de pixeles completo que será predicho. Además, ya que la coordenada Y de un pixel que será predicho sigue siendo la misma en la misma hilera de pixeles, la distancia d? sólo tiene que ser calculada una vez por hilera de pixeles en el bloque que será interpolado (predicho) . La precisión del entero se selecciona típicamente de acuerdo con el ambiente de implementación. Puede ser, por ejemplo 8 bits, lo cual es usual especialmente en procesamiento de imágenes toda vez que los componentes de pixel de entrada también son muestreados típicamente con 8 bits. Sin embargo, la precisión también puede ser más alta tal como 12, 16, o cualquier otro número de bits, o incluso menos de 8 bits.
Sin embargo, llevar a cabo la división de enteros Ex/Ey sólo una vez por bloque y luego obtener por hileras la distancia d? puede llevar a la reducción de la precisión con respecto a la solución en la cual la multiplicación de enteros y x Ex se lleve a cabo primero y después el resultado se divida entre Ey. Esto es causado por el hecho de que el número Ex que será dividido es más pequeño. Además, la multiplicación subsecuente de la pendiente entera por la coordenada Y se traduce en un incremento de imprecisión multiplicativo adicional diferentemente para diferentes hileras. En particular, la precisión será más baja para valores más altos de y.
Para incrementar más la precisión del cálculo mientras se mantiene aún la ventaja de una sola división por bloque ("block") la pendiente entera se obtiene al multiplicar el número que será dividido por un factor de escalada 2C, como se indica por la ecuación 10, en donde c es un entero. 6 biock indica una pendiente entera obtenida al multiplicar un factor de escalada.
Ecuación 10 _2C-Ex block ~ „ Ey De manera adecuada, c es un entero positivo. El valor de c puede ser, por ejemplo, cualquier valor tal como un valor entre 1 y 4. Sin embargo, también son posibles otros valores . El valor particular puede seleccionarse tomando en cuenta el tamaño del bloque. Por ejemplo, un valor positivo para c sería 4. El tamaño de bloque más grande es 16 x 16, dando como resultado el valor más alto de y siendo 16 (24=16) . De manera similar, el valor para c para bloques de tamaño de 4 x 4 podría ser 2, y el valor podría ser 3 para bloques de tamaño 8 8. Esta multiplicación es equivalente al desplazamiento, a la izquierda, de bits c del número Ex que será dividido. Esto amplía el valor que será dividido y, de esta manera, la división entre el divisor Ey obtendrá mayor precisión. La distancia d? puede ser después obtenida como la siguiente ecuación 11.
Ecuación 11 Sx = y - Sxblock Aquí, las ponderaciones w? y w2 respectivas pueden calcularse como las siguientes ecuaciones 12 y 13.
Ecuación 12 w1 = (((¿x + 2C ) » c) « c)- Sx Ecuación 13 w2 = Sx - ((Sx » c) « c) Como alternativa, las ponderaciones wl y w2 respectivas pueden calcularse como las siguientes ecuaciones 14 y 15.
Ecuación 14 w2 = Sx & (2 C - 1 ) Ecuación 15 w, = 2C - w2 Aquí, la operación ">>" indica desplazamiento de c bits a la derecha, que corresponde a re-escalar de nuevo al dividir el resultado entre el factor de escalada 2C aplicado. La operación "<<" indica desplazamiento de c bits a la izquierda, lo cual corresponde a multiplicar por el factor de escalada 2C. la operación indica el operador lógico por bit "AND" .
Los valores de d? y las ponderaciones Wi y w2 no son desplazados y son escalados por el factor 2C. El desplazamiento a la derecha para dividir el resultado final entre el factor de escalada 2C aplicado debe hacerse después de la interpolación del sub-pel. En otras palabras, el valor de pixel del pixel actual p(x, y) puede calcularse como la siguiente ecuación 16.
Ecuación 16 p(x,y) = (w, ·p(x -(ác » c),0) + w2¦ p(x - ((&+ 2C) » c),0) + 2c ) » c Aquí, el desplazamiento 20'1 sirve para redondear el valor final al entero más cercano. En caso de que la precisión del valor Ex se haya incrementado de antemano al multiplicarlo por 2P, p siendo un entero (6 es un buen valor) , el incremento de precisión a través del factor 2C tiene como único propósito dividir entre 2C el error introducido a través de la multiplicación por y. Por ejemplo, el valor de la pendiente entera se obtiene por la siguiente ecuación 17.
Ecuación 17 Aquí, la distancia & puede ser obtenida después como la siguiente ecuación 18. El error introducido a través de la operación de división se multiplica por y/2c y la distancia d? se escala por el factor 2P. La escalada es necesaria para calcular la distancia en aritmética de enteros mientras se mantiene la posibilidad de tener una posición de sub-pel para la intersección.
Ecuación 18 Sx = (ySxblock +2c-])»c Las ponderaciones w± y w2 pueden obtenerse como las siguientes ecuaciones 19 y 20.
Ecuación 19 w2 =Sx& (2P -)) Ecuación 20 w] = 2 p - w2 El valor de pixel del pixel actual p(x, y) que es un valor de predicción puede calcularse como la siguiente ecuación 21.
Ecuación 21 p(x,y) = (yvt -p(x-(Sx » p),0) + w,¦ p(x-((& + 2") » p),0) + 2p-])» p te cálculo de la distancia Sx a partir de la coordenada X del pixel actual 440 que será predicho hasta la coordenada X de la intersección del borde con la hilera de pixeles adyacente al bloque que será predicho en la parte superior hace posible incrementar la precisión de la división. Sin embargo, debido a la multiplicación por y, las multiplicaciones pueden dar como resultado valores bastante altos, lo cual, por otro lado, puede causar un sobreflujo, dependiendo de la posición de enteros soportada por el ambiente de cálculo.
Para mantener la precisión incrementada división mientras se evita el sobreflujo, el factor de escalada 2 se selecciona de acuerdo con el valor de la gradiente vertical Gy, que corresponde al valor de Ex como se indica por la ecuación 22. De acuerdo con la modalidad 1, cada una de las unidades de intra predicción 170 y 270 puede incluir una unidad de cálculo de coeficientes que calcule c y el factor de escalada 2C.
Ecuación 22 Aquí, la función £( ) es una función arbitraria.
Adecuadamente, el valor de c es más bajo para valores más altos de Ex. Un ejemplo para la función f( ) se expresa por la ecuación 23.
Ecuación 23 c = 8 - int(]og2 (|£J |)) En tal caso, c es igual a 8 para Ex igual a l, c es igual a 1 para Ex igual a 128 y c es igual a 0 para Ex igual a 256. Si están disponibles más bits en el sistema, se podría definir la siguiente función de la siguiente ecuación 24.
Ecuación 24 c = 6 - mt(log. (|£- |)) Aquí, ¿» es el número máximo de bits disponible en el sistema. Generalmente, la posición posible máxima debe usarse cuando Ex sea pequeño (igual a 1 por ejemplo), y la precisión máxima menos 8 bits debe usarse cuando Ex sea grande (cerca de 256) . Cuando se calcula el parámetro c, el signo de la coordenada de vector de borde Ex no es importante y de esta manera se puede, en general, calcularse también como c=f (\Ex\ ) .
De acuerdo con otra modalidad de la presente invención, la división para calcular la pendiente entera del borde se evita completamente. Esto es facilitado al reemplazar la división con referencia a una tabla (tabla de división) . En consecuencia, una tabla se almacena en una memoria. La memoria puede ser ya sea una memoria interna del sistema de cómputo por interpolación (unidad de intra predicción) o una memoria externa. La tabla está compuesta de un número limitado de divisores y un resultado de dividir un valor predefinido. Por ejemplo, la tabla puede incluir entradas con un resultado de una división de un número 2a entre varios valores de Ey como se indica por la siguiente ecuación 25.
Ecuación 25 Aquí, a es un entero positivo. Por ejemplo, a puede ser igual al valor de la precisión p descrita previamente. Para llevar a cabo procesamiento usando la tabla en lugar de la división, de preferencia, el factor de escalada de división de tabla 2a es una función del tamaño de divisor \Ey\ como se indica por la siguiente ecuación 26.
Ecuación 26 a = g(\Ey\) La función g() es una función arbitraria. Adecuadamente, el valor de parámetro de escalada a es más alto para un tamaño más alto (valor absoluto) de Ey. Un ejemplo para la función g() se expresa por la siguiente ecuación 27.
Ecuación 27 a = b + mt{log2(\Ey\)) Aquí, b se selecciona de tal manera que el valor b+8 no sobre-fluya el número de bits disponible en el sistema. Generalmente la precisión posible máxima debe usarse para Ey que sea grande (cerca de 256) y una precisión más baja debe usarse para que Ey sea pequeño (cerca de 1) . Los ejemplos anteriores de funciones f() y g() son sólo para ilustración. Los valores de estas funciones pueden ser ya sea calculados sobre la marcha o pre-almacenados en una tabla en una memoria. Las funciones f() y g() también se pueden dar por una tabla sin hacer referencia a una regla analítica.
Después, la pendiente entera escalada puede obtenerse como la siguiente ecuación 28.
Ecuación 28 Sxblock = 2a x Ex x rtfó/e|.£y|]xsign(Ey) Aquí, la operación "sign" regresa un signo del operando, y Table [ ] indica un resultado de la división entre \Ey\ recuperada en una tabla de consulta en una memoria. La distancia d? puede ser entonces obtenida de manera similar a la descrita previamente, es decir, por la siguiente ecuación 29.
Ecuación 29 Sx = {y-Sxbhck + 2 c-' ) » c En ese caso, la distancia d? es escalada por un factor 2a. Los valores de las ponderaciones y un valor de pixel predictivo del pixel que será predicho pueden deducirse a partir de las ecuaciones previas al reemplazar p por a. Otra posibilidad es mantener la distancia d? escalada por un factor 2c+a. En ese caso, la predicción final debe ser desplazada a la derecha para dividir el valor entre 2c+a. En otras palabras, estos procesos pueden expresarse por las ecuaciones 30 a 33.
Ecuación 30 & = y Sxblock Ecuación 31 w2 = Sx& (2 c+ fl - 1) Ecuación 32 w, = 2c+a - w2 Ecuación 33 P(x,y) = (w, · p(x -(d? » (c + a)),0) + w. · p(x - ((& + 2"°) » (c +a)),0) + 2C"') » (c + a) Para limitar los requerimientos de memoria para almacenar la tabla de división, de preferencia sólo entradas de tabla 2b son almacenadas. Esto significa que las entradas \Ey\ sólo existen para 0<|£'y|=2b. En otras palabras, el valor máximo de los divisores usados para la división indicada en la tabla de divisiones 2b. De preferencia, una entrada (resultado de la división) está presente en una tabla para cada valor de Ey. Sin embargo, esto no es necesario para la presente invención y, en general, la tabla puede listar una entrada sólo para cada segundo, o tercero de un valor de Ey. Si una entrada no está presente, la entrada más cercana listada en la tabla es recuperada. Sin embargo, listar sólo algunas entradas podría dar como resultado una pérdida de precisión .
Si el divisor Ey es más grande que el divisor más grande listado en la tabla, entonces, de preferencia los valores de ambas coordenadas de vector de borde Ey y Ex se desplazan a la derecha por un bit, correspondiendo a la división entre 2. En otras palabras, los procesos indicados por la ecuación 34 son llevados a cabo.
Ecuación 34 Después del desplazamiento, el resultado división se recupera de la tabla con base en el nuevo valor del divisor Ey. Si el resultado de la división se recupera exitosamente, la distancia d? se calcula como se mostró arriba. Si el valor de Ey es aún demasiado alto, el desplazamiento se repite hasta que pueda obtenerse un resultado de división. Con esta reducción del número de entrada de tabla, la resolución de la dirección de borde se reduce ligeramente. Sin embargo, de manera adecuada, los requerimientos de memoria son limitados. Al establecer el parámetro b, una compensación entre la resolución de dirección de borde y los requerimientos de memoria puede establecerse adecuadamente para el ambiente de cálculo dado así como para el tamaño del bloque que será interpolado.
El ejemplo anterior ha sido descrito para el borde 430 que entra desde el lado superior del bloque que será predicho.
La figura 4C ilustra otro ejemplo en el cual un borde 483 entra en el bloque que será predicho desde el lado izquierdo. En este ejemplo, el cálculo de una pendiente también se basa en las gradientes determinadas, sin embargo, las coordenadas X y Y (y correspondientemente, las coordenadas Ex y Ey) se intercambian como se indica por las ecuaciones 35 y 36.
Ecuación 35 Ecuación 36 En consecuencia, los cálculos específicos de la distancia d?? serán similares a aquellos de d? en el ejemplo anterior, sin embargo, el divisor es ahora Ex en lugar de Ey y en lugar de la coordenada vertical Y del pixel actual, la coordenada horizontal X del pixel actual p(x, y) es usada. Además, la distancia d?? deberá ser la misma para una columna en lugar de para una hilera de pixeles de un bloque vecino (bloque adyacente) adyacente al bloque actual que será predicho. La presente invención y modalidades pueden aplicarse a este ejemplo de una manera correspondiente.
La figura 4D ilustra otro ejemplo de una posible dirección de borde. El borde interseca el límite izquierdo del bloque que será predicho. Sin embargo, a diferencia del ejemplo descrito con referencia a la figura 4C, el borde 482 que corta el límite del bloque izquierdo continúa a través del bloque y corta un límite inferior del bloque adyacente derecho superior (flecha 481 en la figura 4D) . En este caso, la predicción es una interpolación del borde de dos direcciones . Si la presente invención se aplica a intra-predicción en un sistema por escaneo por cuadrícula de bloques para codificación/decodificación, el vecino derecho superior del bloque que será interpolado ya es codificado/decodificado y así, sus pixeles también se pueden utilizar para la predicción. En los ejemplos anteriores, la predicción se llevó a cabo ponderando dos pixeles en las posiciones de peí completo que rodean la intersección. Sin embargo, la predicción también se puede llevar a cabo al ponderar cuatro pixeles: dos pixeles que rodeen la intersección del límite del bloque izquierdo y dos pixeles que rodeen la intersección del límite derecho superior. Los factores de ponderación pueden considerar además la distancia de la intersección particular desde el pixel que será predicho .
Por simplicidad, todos los ejemplos anteriores han sido descritos para un bloque de 4 x 4 pixeles. Sin embargo, la presente invención no está limitada a estos bloques. En general, cualquier otros tamaños cuadrados y rectangulares de bloques tales como 8 x 8, 16 x 16, 8 x 16, 4 x 8, etc., pueden ser interpolados como se describió arriba.
Además, los ejemplos anteriores han sido descritos principalmente para instalación en codificadores y decodificadores de imágenes o video. Sin embargo, la presente invención no está limitada a esto. La presente invención puede aplicarse fácilmente a otras tareas de procesamiento de imágenes en las cuales se requiera extrapolación o interpolación espacial. Por ejemplo, la extrapolación/interpolación de acuerdo con la presente invención se puede usar para post-procesamiento tal como ocultación de errores.
La figura 5 resume la predicción espacial de un bloque de pixeles (bloque) de acuerdo con la presente invención empleado en codificación/decodificación de video para intra predicción. Primero, cada una de las unidades de intra predicción 170 y 270 detecta un borde (etapa S510) , y determina si el borde se detecta o no (etapa S520) . En otras palabras, un borde dominante a lo largo del cual se vaya a llevar la extrapolación o interpolación es detectado. Si no se detecta un borde ("no" en la etapa 520), significando que la vecindad del bloque que será predicho es sustancialmente lisa, cada una de las unidades de intra predicción 170 y 270 aplica una llamada interpolación DC (predicción usando un modo de predicción DC) al bloque que será predicho (etapa S530) . La interpolación DC establece todos los pixeles del bloque que serán predichos en el mismo valor dado por el valor promedio de los pixeles adyacentes. Por otro lado, si se detecta un borde ("sí" en la etapa 520), cada una de las unidades de intra predicción 170 y 270 calcula la pendiente entera del borde (etapa S540) .
Luego, cada una de las unidades de intra predicción 170 y 270 determina si el pixel actual que será predicho (siguiente pixel) está presente o no (etapa S550) . Cuando se determina la presencia, determina la intersección del borde con los límites del bloque (etapa S560) . Además, cada una de las unidades de intra predicción 170 y 270 interpola las posiciones de sub-pel intersecantes (valor de pixel del sub-pixel) si es necesario (etapa S570) , y extrapola o interpola en consecuencia al pixel en el pixel actual que será predicho, usando el valor de pixel del sub-pixel (etapa S580) . Cuando se determina que ningún pixel actual va a ser predicho ("no" en la etapa S550) , cada una de las unidades de intra predicción 170 y 270 concluye la predicción espacial para el bloque actual .
Como se ilustra en las figuras 2 y 3, la unidad de intra predicción 170 en el codificador 10O y la unidad de intra predicción 270 en el decodificador 200 llevan a cabo la predicción espacial de acuerdo con la modalidad 1. En particular, la unidad de intra predicción 170 ó 270 puede incluir además una unidad de detección de bordes (unidad de detección) , una unidad de determinación de intersección (unidad de determinación) , una unidad de interpolación que interpole las posiciones de sub-pel en bloques adyacentes y una unidad de extrapolación/interpolación (unidad de predicción) . La unidad de detección de bordes detecta un borde dominante que corte el bloque que será predicho. La unidad de determinación de intersección determina la posición de sub-pel que corresponde a la intersección del borde determinada por la unidad de detección de borde, y la hilera o columna de pixeles que pertenezcan a bloques adyacentes que rodeen el bloque que será predicho. La unidad de interpolación interpola el valor de pixel de la posición de sub-pel calculada por la unidad de determinación de intersección con base en el valor del pixel completo más cercano. La unidad de extrapolación/interpolación extrapola/interpola el valor del pixel del pixel actual (pixel dentro del bloque actual que será predicho) con base en las posiciones de sub-pel calculadas por la unidad de determinación de intersección.
En los ejemplos anteriores, una imagen es codificada y/o decodificada en un escaneo por cuadrícula de bloques. Los bloques adyacentes disponibles para predicción son siempre los bloques en la parte superior del bloque que será predicho y los bloques a la izquierda del bloque que será predicho. Sin embargo, la presente invención también funcionará para diferentes escaneos siempre y cuando haya por lo menos un bloque ya codificado/decodificado adyacente al bloque que será predicho o siempre y cuando haya un borde que corte el bloque que será predicho y pase el bloque adyacente.
Los ejemplos anteriores han sido descritos para un solo bloque de pixeles. De hecho, una imagen subdividida en una pluralidad de bloques puede ser codificada usando diferentes métodos de codificación para cada uno de los bloques. La ocultación de errores también se puede aplicar a bloques individuales. Sin embargo, la presente invención también se puede aplicar a codificar una imagen completa o cuadro de una secuencia de video.
La figura 6 ilustra un ejemplo de sistema para transferir un flujo de bits que incluye una imagen de video codificada de un codificador a un decodificador de acuerdo con la presente invención. El sistema incluye un codificador 1401, un canal 1402 y un decodificador 1403. El codificador 1401 corresponde al codificador 100, y el decodificador 1403 corresponde al decodificador 200.
El codificador (transmisor) 1401 codifica una señal de video de entrada, y transmite la señal resultante al canal 1402. El codificador 1401 lleva a cabo codificación incluyendo la predicción espacial direccional de acuerdo con cualquiera de las modalidades de la presente invención para intra predicción de por lo menos un bloque como se describió arriba. El canal 1402 es ya sea un almacenamiento o cualquier canal de transmisión. El almacenamiento puede ser, por ejemplo, cualquier memoria volátil o no volátil, cualquier medio magnético u óptico, un almacenamiento en masa, etc. El canal de transmisión puede formarse por recursos físicos de cualquier sistema de transmisión, e inalámbrica o alámbrica, fija o móvil, tal como xDSL, ISDN, WLAN, GRS, UMTS, Internet, o cualquier sistema estandarizado o privado.
El codificador 1401 puede llevar a cabo conversión de formato en la señal de video de entrada, e incluir un transmisor para transferir un flujo de bits sobre el canal 1402. Además, el codificador 1401 puede incluir una aplicación para transferir un flujo de bits al almacenamiento .
El flujo de bits es luego obtenido por el decodificador (receptor) 1403 a través del canal 1402. El decodificador 1403 implementa la predicción espacial direccional de acuerdo con la modalidad 1 de la presente invención como se describió arriba, y decodifica el flujo de bits .
El decodificador 1403 puede incluir un receptor para recibir el flujo de bits a través del canal 1402, o una aplicación para extraer el flujo de bits del almacenamiento. Más aún, el decodificador 1403 puede incluir una unidad de post-procesamiento para post-procesamiento de la señal de video decodificada, tal como conversión de formato.
En resumen, la presente invención se refiere a una implementación eficiente de predicción espacial direccional. La predicción espacial direccional incluye detectar un borde por medio de determinar una gradiente vertical y una gradiente horizontal dentro de un bloque adyacente, determinar para cada pixel que será predicho una intersección del borde detectado con una hilera o una columna de pixeles del bloque adyacente, y extrapolar o interpolar cada pixel (pixel que será predicho) en el bloque de acuerdo con la intersección determinada. La intersección puede ser una posición de sub-pel. En particular, el cálculo de la intersección incluye dividir entre una gradiente vertical o una gradiente horizontal para obtener una pendiente entera común para el bloque completo que será predicho. Esto reduce el número de divisiones a una por bloque. Para incrementar la precisión de la división, se puede aplicar una escalada por un factor de escalada dependiendo de un valor de una gradiente horizontal y una gradiente vertical. En otras palabras, procesos del método de predicción espacial de acuerdo con la presente invención se llevan a cabo como se indica en la figura 7.
La figura 7 indica el método de predicción espacial de acuerdo con un aspecto de la presente invención.
El método de predicción espacial es un método para predecir espacialmente un valor de pixel en cada posición de pixel dentro de un bloque actual incluido en una imagen. Primero, la unidad de intra predicción 170 detecta un borde E que se superpone al bloque actual al obtener la gradiente horizontal Gy y la gradiente vertical Gx entre pixeles dentro del bloque adyacente que es adyacente al bloque actual (etapa S10) . Después, la unidad de intra predicción 170 calcula una pendiente entera que indica un valor entero de una pendiente del borde detectado, con base en al menos una de la gradiente horizontal Gy y la gradiente vertical Gx obtenidas (etapa Sil) . Luego, la unidad de intra predicción 170 determina, para cada una de las posiciones de pixel dentro del bloque actual, el sub-pel 450 que es una intersección entre (i) una línea 430 que tiene la pendiente entera calculada y pasa a través de la posición de pixel 440 y (ii) un límite del bloque adyacente (etapa S12) . Después, la unidad de intra predicción 170 predice (extrapola o interpola) , para cada una de las posiciones de pixel, un valor de pixel en la posición de pixel 440, con base en un valor interpolado en la posición de sub-pel 450 determinado para la posición de pixel 440 (etapa S13) . Aquí, el límite del bloque adyacente es una hilera o una columna que está más cerca del bloque actual, entre una pluralidad de hileras o una pluralidad de columnas de pixeles incluidas en el bloque adyacente. La unidad de intra predicción 270 también lleva a cabo estos procesos.
La pendiente entera sólo tiene que ser calculada con base en al menos una de la gradiente horizontal Gy y la gradiente vertical Gx, y las dos gradientes no necesariamente tienen que ser usadas para el cálculo.
Además, aunque el aparato de codificación de imágenes 100 incluye la unidad de predicción compensada en movimiento 160 y otras como los elementos constituyentes que no son la unidad de intra predicción 170, sólo tiene que incluir al menos la unidad de sustracción 105 y la unidad de intra predicción 170, y no tiene que incluir los demás elementos constituyentes.
Más aún, aunque el aparato de decodificación de imágenes 200 incluye la unidad de predicción compensada en movimiento 260 y otras como los elementos constituyentes que no son la unidad de intra predicción 270, sólo tiene que incluir por lo menos la unidad de adición 225 y la unidad de intra predicción 270, y no tiene que incluir los demás elementos constituyentes .
De acuerdo con la modalidad 1, el aparato de codificación de imágenes 100 codifica por entropía la información de modo de intra-predicción, y envía la información de modo de intra-predicción codificada por entropía, y el aparato de decodificación de imágenes 200 decodifica por entropía la información de modo de intra-predicción. Aquí, la información de modo de intra-predicción puede ser información que indique los modos de intra-predicción direccional, y puede ser información que indique que sólo intra predicción se aplica al bloque actual que será codificado o decodificado, sin indicar los modos de intra-predicción direccional .
Modalidad 2 Un sistema de computadora independiente puede llevar a cabo fácilmente procesamiento descrito en cada una de las modalidades al grabar, en un medio de grabación, un programa para implementar la estructura del método de codificación de video (método de codificación de imágenes) o el método de decodificación de video (método de decodificación de imágenes) de acuerdo con la modalidad 1. El medio de grabación puede ser cualquiera siempre y cuando el programa puede ser grabado en el mismo, tal como un disco magnético, un disco óptico, un disco óptico magnético y una memoria semiconductora.
En adelante se describirán aplicaciones del método de codificación de video y el método de decodificación de video de acuerdo con cada una de las modalidades, y un sistema que usa esas aplicaciones.
La figura 8 ilustra una configuración general de un sistema de provisión de contenidos exlOO para implementar servicios de distribución de contenido. El área para proporcionar servicios de comunicación se divide en células de tamaño deseado, y estaciones base exl06 a exllO que son estaciones inalámbricas fijas están puestas en cada una de las células .
El sistema de provisión de contenido exlOO está conectado a dispositivos, tales como una computadora exlll, un asistente digital personal (PDA) exll2, una cámara exll3, un teléfono celular exll4 y una máquina de juegos exll5, por medio de una Internet exlOl, un proveedor de servicios de Internet exl02, una red telefónica exl04, asi como las estaciones base exl06 a exllO.
Sin embargo, la configuración del sistema de provisión de contenido exlOOno se limita a la configuración mostrada en la figura 8, y es aceptable una combinación en la cual cualquiera de los elementos estén conectados. Además, cada uno de los dispositivos puede ser conectado directamente a la red telefónica exl04, en lugar de por medio de las estaciones base exl06 a exllO que son las estaciones inalámbricas fijas. Más aún, los dispositivos pueden ser interconectados unos a otros por medio de una comunicación inalámbrica de corta distancia y otras.
La cámara exll3, tal como una cámara de video digital, es capaz de capturar imágenes en movimiento. Una cámara exll6, tal como una cámara de video digital, es capaz de capturar tanto imágenes fijas como imágenes en movimiento. Además, el teléfono celular exll4 puede ser uno que satisfaga cualquiera de las normas tales como Sistema Global para Comunicaciones Móviles (GSM, por sus siglas en inglés) , Acceso Múltiple por División de Códigos (CDMA, por sus siglas en inglés) , Acceso Múltiple por División de Códigos de Banda Ancha (W-CDMA, por sus siglas en inglés) , Evolución a Largo Plazo (LTE, por sus siglas en inglés) y Acceso por Paquetes de Alta Velocidad (HSPA, por sus siglas en inglés) . Como alternativa, el teléfono celular exll4 puede ser un Sistema Manual Personal (PHS, por sus siglas en inglés) .
En el sistema de provisión de contenido exiOO, un servidor de flujo continuo exl03 es conectado a la cámara exll3 y otras por medio de la red telefónica exl04 y la estación base exl09, que hace posible la distribución de un programa en vivo y otros. Para esta distribución, un contenido (por ejemplo, video de un programa musical en vivo) capturado por el usuario usando la cámara exll3 es codificado como se describió arriba en cada una de las modalidades, y el contenido codificado es transmitido al servidor de flujo continuo exl03. Por otro lado, el servidor de flujo continuo exl03 lleva a cabo distribución de flujos de los datos de contenido recibidos a los clientes según sus solicitudes. Los clientes incluyen la computadora exlll, el PDA exll2, la cámara exll3, el teléfono celular exll4 y la máquina de juegos exll5 que son capaces de decodificar los datos codificados mencionados arriba. Cada uno de los dispositivos que han recibido los datos distribuidos decodifica y reproduce los datos codificados.
Los datos capturados pueden ser codificados por la cámara exll3 o el servidor de flujos exl03 que transmite los datos, o los procesos de codificación pueden ser compartidos entre la cámara exll3 y el servidor de flujo continuo exl03. En forma similar, los datos distribuidos pueden ser decodificados por los clientes o el servidor de flujo continuo exl03, o los procesos de decodificación pueden ser compartidos entre los clientes y el servidor de flujo continuo exl03. Más aún, los datos de las imágenes fijas e imágenes en movimiento capturados no sólo por la cámara exll3 sino también por la cámara exll6 pueden ser transmitidos al servidor de flujo continuo exl03 a través de la computadora exlll. Los procesos de codificación se pueden llevar a cabo por la cámara exll6, la computadora exlll o el servidor de flujo continuo exl03, o compartirse entre ellos.
Además, generalmente, la computadora exlll y un LSI ex500 incluido en cada uno de los dispositivos llevan a cabo estos procesos de codificación y decodificación. El LSI ex500 puede ser configurado de un solo chip o una pluralidad de chips. El software para codificar y decodificar imágenes en movimiento puede ser integrado en cierto tipo de medio de grabación (tal como un CD-ROM, un disco flexible, un disco duro) que sea legible por la computadora exlll y otros, y los procesos de codificación y decodificación pueden llevarse a cabo usando el software. Más aún, cuando el teléfono celular exll4 está equipado con una cámara, los datos de video obtenidos por la cámara pueden ser transmitidos. Los datos de video son datos codificados por el LSI ex500 incluido en el teléfono celular exll .
Además, el servidor de flujo continuo exl03 puede estar compuesto de servidores y computadoras, y puede descentralizar datos y procesar los datos descentralizados, grabar o distribuir datos.
Como se describió arriba, los clientes pueden recibir y reproducir los datos codificados en el sistema de provisión de contenido exlOO. En otras palabras, los clientes pueden recibir y decodificar información transmitida por el usuario, y reproducir los datos decodificados en tiempo real en el sistema de provisión de contenido exlOO, de tal forma que el usuario no tenga ningún derecho particular y el equipo puede implementar difusión personal.
La presente invención no está limitada al sistema de provisión de contenido exlOO mencionado arriba, y al menos ya sea el aparato de codificación de video o el aparato de decodificación de video descritos en cada una de las modalidades puede incorporarse en un sistema de difusión digital ex200 como se muestra en la figura 9. Más específicamente, una estación de difusión ex201 comunica o transmite, por medio de ondas de radio a un satélite de difusión ex202, datos multiplexados obtenidos al multiplexar los datos de audio y los datos de video. Los datos de video son datos codificados de acuerdo con el método de codificación de video descrito en cada una de las modalidades. Después de recibir los datos de video, el satélite de difusión ex202 transmite ondas de radio para difusión. Luego, una antena de uso doméstico ex204 capaz de recibir una difusión por satélite recibe las ondas de radio. Un dispositivo, tal como una televisión (receptor ex300) y un decodificador de caja (STB, por sus siglas en inglés) ex217, decodifica los datos multiplexados recibidos y reproduce los datos .
Además, un lector/grabador ex218 que (i) lee y decodifica los datos multiplexados grabados en un medio de grabación ex215, tal como un DVD y un BD, o (ii) codifica señales de video en el medio de grabación ex215, y en algunos casos, escribe datos obtenidos al multiplexar una señal de audio en los datos codificados, puede incluir el aparato de decodif cación de video o el aparato de codificación de video como los mostrados en cada una de las modalidades . En este caso, las señales de video reproducidas son presentadas visualmente en el monitor ex219, y otro aparato o sistema puede reproducir las señales de video, usando el medio de grabación ex215 en el cual están grabados los datos multiplexados. Además, también es posible implementar el aparato de decodificación de video en el decodificador de caja ex217 conectado al cable ex203 para una televisión por cable o la antena ex204 para difusión por satélite y/o terrestre, para de esta manera presentar visualmente las señales de video en el monitor ex219 de la televisión ex300. El aparato de decodificación de video puede estar incluido no en el decodificador de caja sino en la televisión ex300.
La figura 10 ilustra la televisión (receptor) ex300 que usa el método de codificación de video y el método de decodificación de video descritos en cada una de las modalidades. La televisión ex300 incluye: un sintonizador ex301 que obtiene o proporciona datos multiplexados obtenidos al multiplexar los datos de audio y los datos de video a través de la antena ex204 o el cable ex203, etc., que recibe una difusión; una unidad de modulación/desmodulación ex302 que desmodula los datos multiplexados recibidos o modula datos en datos multiplexados que serán suministrados al exterior; y una unidad multiplexora/desmultiplexora ex303 que desmultiplexa los datos multiplexados modulados en datos de video y datos de audio, o multiplexa los datos de video y datos de audio codificados por la unidad de procesamiento de señales ex306 en datos. Más aún, la televisión ex300 incluye además: una unidad de procesamiento de señales ex306 que incluye una unidad de procesamiento de señales de audio ex304 y una unidad de procesamiento de señales de video ex305 que decodifican datos de audio y datos de video y codifican datos de audio y datos de video, respectivamente; un altavoz ex307 que proporciona la señal de audio decodificada; y una unidad de salida ex309 que incluye una unidad de presentación visual ex308 que presenta visualmente la señal de video decodificada, tal como un presentador visual. Además, la televisión ex300 incluye una unidad de interfaz ex317 que incluye una unidad de entrada de operación ex312 que recibe una entrada de una operación de usuario. Además, la televisión ex300 incluye una unidad de control ex310 que controla sobre todo cada elemento constituyente de la televisión ex300, y una unidad de circuito de fuente de energía ex311 que suministra energía a cada uno de los elementos. A diferencia de la unidad de entrada de operación ex312, la unidad de interface ex317 puede incluir: un puente ex313 que esté conectado a un dispositivo externo, tal como el lector/grabador ex218; una unidad de ranura ex314 para hacer posible la unión del medio de grabación ex216, tal como una tarjeta SD; un excitador ex315 que se conectará a un medio de grabación externo, tal como un disco duro; y un módem ex316 que se conectará a una red telefónica. Aquí, el medio de grabación ex216 puede grabar eléctricamente información usando un elemento de memoria semiconductora no volátil/volátil para almacenamiento. Los elementos constituyentes de la televisión ex300 están conectados entre sí a través de un bus sincronizado.
Primero, se describirá una configuración en la cual la televisión ex300 decodifica los datos multiplexados obtenidos del exterior a través de la antena ex204 y otras y reproduce los datos decodificados . En la televisión ex300, después de recibir una operación de usuario de un control remoto ex220 y otros, la unidad multiplexora/desmultiplexora ex303 desmultiplexa los datos multiplexados desmodulados por la unidad de modulación/desmodulación ex302, bajo control de la unidad de control ex310 que incluye una CPU. Además, la unidad de procesamiento de señales de audio ex304 decodifica los datos de audio desmultiplexados, y la unidad de procesamiento de señales de video ex305 decodifica los datos de video desmultiplexados, usando el método de decodificación descrito en cada una de las modalidades, en la televisión ex300. La unidad de salida ex309 proporciona la señal de video y señal de audio decodificadas al exterior. Cuando la unidad de salida ex309 proporciona la señal de video y la señal de audio, las señales pueden ser almacenadas temporalmente en memorias de almacenamiento temporal ex318 y ex319, y otras de tal forma que las señales sean reproducidas en sincronización unas con otras. Más aún, la televisión ex300 puede leer los datos multiplexados no a través de una difusión y otros sino de los medios de grabación ex215 y ex216, tales como un disco magnético, un disco óptico y una tarjeta SD. A continuación se describirá una configuración en la cual la televisión ex300 codifica una señal de audio y una señal de video, y transmite los datos al exterior o escribe los datos en un medio de grabación. En la televisión ex300, después de recibir de un usuario operación del control remoto ex220 y otros, la unidad de procesamiento de señales de audio ex304 codifica una señal de audio, y la unidad de procesamiento de señales de video ex305 codifica una señal de video, bajo control de la unidad de control ex310 usando el método de codificación como el descrito en cada una de las modalidades. La unidad multiplexora/desmultiplexora ex303 multiplexa la señal de video y señal de audio codificadas, y proporciona la señal resultante al exterior. Cuando la unidad multiplexora/desmultiplexora ex303 multiplexa la señal de video y la señal de audio, las señales pueden ser almacenadas temporalmente en memoria de almacenamiento temporal ex320 y ex321, y otras de tal forma que las señales sean reproducidas en sincronización unas con otras. Aquí, las memorias de almacenamiento temporal ex318 a ex321 pueden ser varias como se ilustra, o al menos una memoria de almacenamiento temporal puede ser compartida en la televisión ex300. Más aún, los datos pueden ser almacenados en una memoria de almacenamiento temporal que no sean las memorias de almacenamiento temporal ex318 a ex321 de tal forma que el sobreflujo y subflujo del sistema puedan evitarse entre la unidad de modulación/desmodulación ex302 y la unidad multiplexora/desmultiplexora ex303, por ejemplo.
Además, la televisión ex300 puede incluir una configuración para recibir una entrada de AV de un micrófono o una cámara que no sea la configuración para obtener datos de audio y video de una difusión o un medio de grabación, y puede codificar los datos obtenidos. Aunque la televisión ex300 puede codificar, multiplexar y proporcionar datos al exterior en la descripción, puede no ser capaz de llevar a cabo todos los procesos sino capaz de sólo uno de recibir, decodificar y proporcionar datos al exterior.
Más aún, cuando el lector/grabador ex218 lee o escribe los datos raultiplexados de o en un medio de grabación, uno de la televisión ex300 y el lector/grabador ex218 puede decodificar o codificar los datos multiplexados , y la televisión ex300 y el lector/grabador ex218 pueden compartir la decodificación o codificación.
Como un ejemplo, la figura 11 ilustra una configuración de una unidad de reproducción/grabación de información ex400 cuando se leen o escriben datos de o en un disco óptico. La unidad de reproducción/grabación de información ex400 incluye elementos constituyentes ex401 a ex407 que se describirán más adelante. La cabeza óptica ex401 irradia un punto de láser en una superficie de grabación del medio de grabación ex215 que es un disco óptico para escribir información, y detecta luz reflejada de la superficie de grabación del medio de grabación ex215 para leer la información. La unidad de grabación de modulación ex402 excita eléctricamente un láser semiconductor incluido en la cabeza óptica ex401, y modula la luz láser de acuerdo con datos grabados . La unidad de desmodulación de reproducción ex403 amplifica una señal de reproducción obtenida al detectar eléctricamente la luz reflejada de la superficie de grabación usando un fotodetector incluido en la cabeza óptica ex401, y desmodula la señal de reproducción al separar un componente de señal grabado en el medio de grabación ex215 para reproducir la información necesaria. La memoria de almacenamiento temporal ex404 contiene temporalmente la información que será grabada en el medio de grabación ex215 y la información reproducida del medio de grabación ex215. Un motor de disco ex405 hace girar el medio de grabación ex215. Una unidad de servo control ex406 mueve la cabeza óptica ex401 a una pista de información predeterminada mientras controla el impulso de rotación del motor de disco ex405 para de esta manera seguir el punto del láser. La unidad de control de sistema ex407 controla en general la unidad de reproducción/grabación de información ex400. Los procesos de lectura y escritura pueden implementarse por la unidad de control de sistema ex407 usando diferente información almacenada en la memoria de almacenamiento temporal ex404 y generando y añadiendo información nueva según sea necesario, y por la unidad de grabación de modulación ex402, la unidad de desmodulación de reproducción ex403 y la unidad de servo control ex406 que graban y reproducen información a través de la cabeza óptica ex401 mientras son operadas de una manera coordinada. La unidad de control de sistema ex407 incluye, por ejemplo, un microprocesador, y ejecuta procesamiento al hacer que una computadora ejecute un programa para leer y escribir.
Aunque la cabeza óptica ex401 irradia un punto de láser en la descripción, puede llevar a cabo grabación de alta densidad usando luz de campo cercano.
La figura 12 ilustra esquemáticamente el medio de grabación ex215 que es el disco óptico. En la superficie de grabación del medio de grabación ex215, ranuras de guía se forman espiralmente, y una pista de información ex230 graba, por adelantado, información de dirección que indica una posición absoluta en el disco de acuerdo con un cambio en una forma de las ranuras de guía. La información de dirección incluye información para determinar posiciones de bloques de grabación ex231 que son una unidad para grabar datos. Un aparato que graba y reproduce datos reproduce la pista de información ex230 y lee la información de dirección para de esta manera determinar las posiciones de los bloques de grabación. Además, el medio de grabación ex215 incluye un área de grabación de datos ex233, un área de circunferencia interior ex232 y un área de circunferencia exterior ex234. El área de grabación de datos ex233 es un área para usarse en la grabación de los datos de usuario. El área de circunferencia interior ex232 y el área de circunferencia exterior ex234 que están dentro y fuera del área de grabación de datos ex233, respectivamente son para uso específico excepto para grabar los datos de usuario. La unidad de reproducción/grabación de información 400 lee y escribe datos de audio codificados, datos de video codificados o datos multiplexados obtenidos al multiplexar los datos de audio codificados y los datos de video codificados, de y sobre el área de grabación de datos ex233 en el medio de grabación ex215.
Aunque un disco óptico que tiene una capa, tal como un DVD y BD se describe como un ejemplo en la descripción, el disco óptico no está limitado a esto, y puede ser un disco óptico que tenga una estructura de capas múltiples y sea capaz de ser grabado en una parte que no sea la superficie. Más aún, el disco óptico puede tener una estructura para grabación/reproducción multidimensional , tal como grabación de información usando luz de colores con diferentes longitudes de onda en la misma porción del disco óptico y grabar información que tenga diferentes capas desde varios ángulos .
Además, el automóvil ex210 que tiene la antena ex205 puede recibir datos del satélite ex202 y otros, y reproducir video en el dispositivo de presentación visual tal como el sistema de navegación de vehículos ex211 instalado en el automóvil ex210, en un sistema de difusión digital ex200. Aquí, una configuración del sistema de navegación de vehículos ex211 será una por ejemplo que incluya una unidad de recepción de GPS en la configuración ilustrada en la figura 10. Lo mismo será cierto para la configuración de la computadora exlll, el teléfono celular exll4 y otros.
La figura 13A ilustra el teléfono celular exll4 que usa el método de codificación de video y el método de decodificación de video descritos en cada una de las modalidades. El teléfono celular exll4 incluye: una antena ex350 para transmitir y recibir ondas de radio a través de la estación base exllO; una unidad de cámara ex365 capaz de capturar imágenes en movimiento y fijas; y una unidad de presentación visual ex358 tal como un presentador visual de cristal líquido para presentar visualmente los datos tales como video decodificado capturado por la unidad de cámara ex365 o recibido por la antena ex350. El teléfono celular exll4 incluye además: una unidad de cuerpo principal que incluye un conjunto de teclas de operación ex366; una unidad de salida de audio ex357 tal como un altavoz para salida de audio; una unidad de entrada de audio ex356 tal como un micrófono para entrada de audio; una unidad de memoria ex367 para almacenar video capturado o imágenes fijas, audio grabado, datos codificados o decodificados del video recibido, las imágenes fijas, correos electrónicos u otros; y una unidad de ranura ex364 que es una unidad de ínterfaz para un medio de grabación que almacena datos de la misma manera que la unidad de memoria ex367.
A continuación se describirá un ejemplo de una configuración del teléfono celular exll4 con referencia a la figura 13B. En el teléfono celular exll4, una unidad de control principal ex360 diseñada para controlar en general cada unidad del cuerpo principal que incluye la unidad de presentación visual ex358 así como las teclas de operación ex366, está conectada mutuamente, por medio de un bus sincronizado ex370, a una unidad de circuito de suministro de energía ex361, una unidad de control de entrada de operación ex362, una unidad de procesamiento de señales de video ex355, una unidad de interfaz de cámara ex363, una unidad de control de presentador visual de cristal líquido (LCD, por sus siglas en inglés) ex359, una unidad de modulación/desmodulación ex352, una unidad multiplexora/desmultiplexora ex353, una unidad de procesamiento de señales de audio ex354, la unidad de ranura ex364 y la unidad de memoria ex367.
Cuando una tecla de fin de llamada o una tecla de ENCENDIDO es activada por la operación de un usuario, la unidad de circuito de suministro de energía ex361 suministra a las unidades respectivas energía desde una batería para de esta manera activar el teléfono celular exll4.
En el teléfono celular exll4, la unidad de procesamiento de señales de audio ex354 convierte las señales de audio recolectadas por la unidad de entrada de audio ex356 en modo de conversación de voz en señales de audio digitales bajo el control de la unidad de control principal ex360 que incluye una CPU, ROM y RAM . Asimismo, en el teléfono celular exll4, la unidad de transmisión y recepción ex351 amplifica los datos recibidos por la antena ex350 en modo de conversación de voz y lleva a cabo conversión de frecuencias y la conversión análoga a digital en los datos. Después, la unidad de modulación/desmodulación ex352 lleva a cabo procesamiento de amplio espectro inverso en los datos, y la unidad de procesamiento de señales de audio ex354 los convierte en señales de audio análogas, para de esta manera enviarlos por medio de la unidad de salida de audio ex356.
Además, cuando un correo electrónico en modo de comunicación de datos es transmitido, datos de texto del correo electrónico ingresado al operar las teclas de operación ex366 y otros del cuerpo principal son enviados a la unidad de control principal ex360 por medio de la unidad de control de entrada de operación ex362. La unidad de control principal ex360 hace que la unidad de modulación/desmodulación ex352 lleve a cabo procesamiento de amplio espectro en los datos de texto, y la unidad de transmisión y recepción ex351 lleva a cabo la conversión digital a análoga y la conversión de frecuencias en los datos resultantes para transmitir los datos a la estación base exllO por medio de la antena ex350. Cuando se recibe un correo electrónico, procesamiento que es aproximadamente inverso al procesamiento para transmitir un correo electrónico se lleva a cabo en los datos recibidos, y los datos resultantes son proporcionados a la unidad de presentación visual ex358.
Cuando video, imágenes fijas o video y audio en modo de comunicación de datos es o son transmitidos, la unidad de procesamiento de señales de video ex355 comprime y codifica señales de video suministradas desde la unidad de cámara ex365 usando el método de codificación de imágenes en movimiento mostrado en cada una de las modalidades, y transmite los datos de video codificados a la unidad multiplexora/desmultiplexora ex353. En contraste, durante el tiempo cuando la unidad de cámara ex365 captura video, imágenes fijas y otros, la unidad de procesamiento de señales de audio ex354 codifica señales de audio recolectadas por la unidad de entrada de audio ex353, y transmite los datos de audio codificados a la unidad multiplexora/desmultiplexora ex353.
La unidad multiplexora/desmultiplexora ex353 multiplexa los datos de video codificados suministrados desde la unidad de procesamiento de señales de video ex355 y los datos de audio codificados suministrados desde la unidad de procesamiento de señales de audio ex354, usando un método predeterminado. Después, la unidad de modulación/desmodulación ex352 lleva a cabo procesamiento de amplio espectro en los datos multiplexados , y la unidad de transmisión y recepción ex351 lleva a cabo conversión digital a análoga y conversión de frecuencia en los datos para de esta manera transmitir los datos resultantes por medio de la antena ex350.
Cuando recibe datos de un archivo de video que está enlazado a una página web y otros en modo de comunicación de datos o cuando recibe un correo electrónico con video y/o audio adjunto, para decodificar los datos multiplexados recibidos por la antena ex350, la unidad multiplexora/desmultiplexora ex353 desmultiplexa los datos multiplexados en un flujo de bits de datos de video y un flujo de bits de datos de audio, y suministra a la unidad de procesamiento de señales de video ex355 los datos de video codificados y a la unidad de procesamiento de señales de audio ex354 los datos de audio codificados, a través del bus sincronizado ex370. La unidad de procesamiento de señales de video ex355 decodifica la señal de video usando un método de decodificación de video que corresponde al método de codificación de video mostrado en cada una de las modalidades, y después la unidad de presentación visual ex358 presenta visualmente, por ejemplo, el video e imágenes fijas incluidos en el archivo de video enlazado a la página web por medio de la unidad de control LCD ex359. Más aún, la unidad de procesamiento de señales de audio ex354 decodifica la señal de audio, y la unidad de salida de audio ex357 proporciona el audio.
Además, de manera similar a la televisión ex300, una terminal tal como el teléfono celular exll4 probablemente tiene tres tipos de configuraciones de implementación que incluye no sólo (i) una terminal de transmisión y recepción que incluye tanto un aparato de codificación como un aparato de decodificación, sino también (ii) una terminal de transmisión que incluye sólo un aparato de codificación y (iii) una terminal de recepción que incluye sólo un aparato de decodificación. Aunque el sistema de difusión digital ex200 recibe y transmite los datos multiplexados obtenidos al multiplexar datos de audio en datos de video en la descripción, los datos multiplexados pueden ser datos obtenidos al multiplexar no datos de audio sino datos de caracteres relacionados con video en datos de video, y pueden no ser datos multiplexados sino los propios datos de video.
Así, el método de codificación de video y el método de decodificación de video en cada una de las modalidades pueden usarse en cualquiera de los dispositivos y sistemas descritos. De esta manera, pueden obtenerse las ventajas descritas en cada una de las modalidades.
Más aún, la presente invención no está limitada a modalidades, y varias modificaciones y revisiones son posibles sin alejarse del alcance de la presente invención.
Modalidad 3 Datos de video pueden ser generados al cambiar, según sea necesario, entre (i) el método de codificación de imágenes en movimiento o el aparato de codificación de imágenes en movimiento mostrados en cada una de las modalidades y (ii) un método de codificación de imágenes en movimiento o un aparato de codificación de imágenes en movimiento de conformidad con una norma diferente, tal como MPEG-2 , MPEG4-AVC y VC-1.
Aquí, cuando una pluralidad de datos de video que se conforman a las diferentes normas se genera y luego se decodifican, los métodos de decodificación tienen que ser seleccionados para conformarse a las normas diferentes . Sin embargo, ya que a cuál norma se adapta cada una de la pluralidad de datos de video que serán decodificados no puede detectarse, existe un problema de que un método de decodificación adecuado no puede ser seleccionado.
Para resolver el problema, datos multiplexados obtenidos al multiplexar datos de audio y otros en datos de video tienen una estructura que incluye información de identificación que indica a qué norma se conforman los datos de video. La estructura específica de los datos multiplexados incluyendo los datos de video generados en el método de codificación de imágenes en movimiento y por el aparato de codificación de imágenes en movimiento mostrado en cada una de las modalidades se describirán en adelante. Los datos multiplexados son un flujo digital en el formato de flujo de transporte MPEG-2.
La figura 14 ilustra una estructura de datos multiplexados. Como se ilustra en la figura 14, los datos multiplexados pueden ser obtenidos al multiplexar al menos uno de un flujo de video, un flujo de audio, un flujo de gráficos de presentación (PG, por sus siglas en inglés) , y un flujo de gráficos interactivos. El flujo de video representa video primario y video secundario de una película, el flujo de audio (IG) representa una parte de audio primaria y una parte de audio secundaria que será mezclada con la parte de audio primaria, y el flujo de gráficos de presentación representa subtítulos de una película. Aquí, el video primario es video normal que se presentará visualmente en una pantalla, y el video secundario es video que será presentado visualmente en una pantalla más pequeña en el video principal. Además, el flujo de gráficos interactivos representa una pantalla interactiva que se generará al disponer los componentes GUI en una pantalla. El flujo de video es codificado en el método de codificación de video o por el aparato de codificación de video mostrado en cada una de las modalidades, o en un método de codificación de video o por un aparato de codificación de video de conformidad con una norma convencional, tal como MPEG-2, MPEG4-AVC, y VC-1. El flujo de audio es codificado de acuerdo con una norma, tal como Dolby-AC-3, Dolby Digital Plus, MLP, DTS, DTS-HD, y PCM lineal .
Cada flujo incluido en los datos multiplexados es identificado por PID. Por ejemplo, 0x1011 es asignado al flujo de video que se usará para video de una película, 0x1100 a OxlllF se asignan a los flujos de audio, 0x1200 a 0xl21F se asignan a los flujos de gráficos de presentación, 0x1400 a 0xl41F se asignan a los flujos de gráficos interactivos, OxlBOO a OxlBlF se asignan a los flujos de video que se usarán para video secundario de una película, y OxlAOO a OxlAlF se asignan a los flujos de audio que serán usados por el video secundario que se mezclará con el audio primario .
La figura 15 ilustra esquemáticamente cómo se multiplexan los datos. Primero, un flujo de video ex235 compuesto de cuadros de video y un flujo de audio ex238 compuesto de cuadros de audio se transforman en un flujo de paquetes PES ex236 y un flujo de paquetes PES ex239, y además en paquetes TS ex237 y paquetes TS ex240, respectivamente. De manera similar, datos de un flujo de gráficos de presentación ex241 y datos de un flujo de gráficos interactivos ex244 se transforman en un flujo de paquetes PES ex242 y un flujo de paquetes PES ex245, y además en paquetes TS ex243 y paquetes TS ex246, respectivamente. Estos paquetes TS se multiplexan en un flujo para obtener datos multiplexados ex247.
La figura 16 ilustra cómo se almacena un flujo de video en un flujo de paquetes PES en más detalle. La primera barra en la figura 16 muestra un flujo de cuadros de video en un flujo de video. La segunda barra muestra el flujo de paquetes PES. Como se indica por flechas indicadas como yyl, yy2, yy3 y yy4 en la figura 16, el flujo de video se divide en imágenes como imágenes I, imágenes B e imágenes P cada una de las cuales es una unidad de presentación de video, y las imágenes son almacenadas en una carga útil de cada uno de los paquetes PES. Cada uno de los paquetes PES tiene un encabezado de PES, y el encabezado de PES almacena una Marca de Tiempo de Presentación (PTS, por sus siglas en inglés) que indica una hora de presentación visual de la imagen, y una Marca de Tiempo de Decodificación (DTS, por sus siglas en inglés) que indica una hora de decodificación de la imagen.
La figura 17 ilustra un formato de paquetes TS que se escribirán finalmente en los datos multiplexados . Cada uno de los paquetes TS es un paquete de longitud fija de 188 bytes que incluye un encabezado de TS de 4 bytes que tiene información, tal como un PID para identificar un flujo y una carga útil TS de 184 bytes para almacenar datos. Los paquetes PES se dividen, y se almacenan en las cargas útiles TS, respectivamente. Cuando se usa un BD-ROM, cada uno de los paquetes TS se le da un TP_Extra_Header de 4 bytes, dando como resultado entonces paquetes de origen de 192 bytes. Los paquetes de origen son escritos en los datos multiplexados. El TP_Extra_Header almacena información tal como una Arrival_Time_Stamp (ATS) . La ATS muestra una hora de inicio de transferencia a la cual cada uno de los paquetes TS serán transferidos a un filtro PID. Los números que aumentan desde el encabezado de los datos multiplexados son llamados números de paquete de origen (SPNs , por sus siglas en inglés) como se muestra en la parte inferior de la figura 17.
Cada uno de los paquetes TS incluidos en los datos multiplexados incluye no sólo flujos de audio, video, subtítulos y otros, sino también una Tabla de Asociación de Programas (PAT, por sus siglas en inglés) , una Tabla de Mapas de Programas (PMT, por sus siglas en inglés) y una Referencia de Reloj de Programa (PCR, por sus siglas en inglés) . La PAT muestra lo que indica un PID en una PMT usada en los datos multiplexados, y una PID de la propia PAT se registra como cero. La PMT almacena PIDs de los flujos de video, audio, subtítulos y otros incluidos en los datos multiplexados, e información de atributos de los flujos que corresponden a los PIDs. La PMT tiene también varios descriptores que se refieren a los datos multiplexados. Los descriptores tienen información tal como información de control de copia que muestra si se permite o no la copia de los datos multiplexados . La PCR almacena información de tiempo STC que corresponde a una ATS que muestra cuando el paquete PCR se transfiere a un decodi icador, para lograr así sincronización entre un reloj de hora de llegada (ATC, por sus siglas en inglés) que es un eje de tiempo de ATSs, y un reloj de tiempo de sistema (STC, por sus siglas en inglés) que es un eje de tiempo de PTSs y DTSs .
La figura 18 ilustra la estructura de datos de la PMT en detalle. Un encabezado de PMT es dispuesto en la parte superior de la PMT. El encabezado de PMT describe la longitud de datos incluidos en la PMT y otros. Una pluralidad de descriptores que se refieren a los datos multiplexados son dispuestos después del encabezado de PMT. Información tal como la información de control de copia se describe en los descriptores. Después de los descriptores, se dispone una pluralidad de piezas de información de flujo que se refiere a los flujos incluidos en los datos multiplexados. Cada pieza de información de flujo incluye descriptores de flujo que describen cada uno información, tal como un tipo de flujo para identificar un códec de compresión de un flujo, un PID de flujo e información de atributos de flujo (tal como una velocidad de cuadros o una relación de aspecto) . Los descriptores de flujo son iguales en número al número de flujos en los datos multiplexados.
Cuando los datos multiplexados son grabados en un medio de grabación y otros, se graban junto con archivos de información de datos multiplexados.
Cada uno de los archivos de información de datos multiplexados son información de administración de los datos multiplexados como se muestra en la figura 19. Los archivos de información de datos multiplexados están en correspondencia uno a uno con los datos multiplexados, y cada uno de los archivos incluye información de datos multiplexados, información de atributos de flujo y un mapa de entrada .
Como se ilustra en la figura 19, la información de datos multiplexados incluye una velocidad de sistema, una hora de inicio de reproducción y una hora de fin de reproducción. La velocidad de sistema indica la velocidad de transferencia máxima a la cual el decodificador objetivo de sistema que se describirá más adelante transfiere los datos multiplexados a un filtro PID. Los intervalos de las ATSs incluidas en los datos multiplexados se establecen para no ser más altos que una velocidad de sistema. La hora de inicio de reproducción indica una PTS en un cuadro de video en el encabezado, de los datos multiplexados. Un intervalo de un cuadro se añade a una PTS en un cuadro de video al final de los datos multiplexados, y la PTS se establece en la hora de fin de reproducción.
Como se muestra en la figura 20, una pieza de información de atributos se registra en la información de atributos de flujo, para cada PID de cada flujo incluido en los datos multiplexados. Cada pieza de información de atributos tiene información diferente dependiendo de si el flujo correspondiente es un flujo de video, un flujo de audio, un flujo de gráficos de presentación o un flujo de gráficos interactivos. Cada pieza de información de atributos de flujo de video lleva información que incluye qué tipo de códec de compresión se usa para comprimir el flujo de video, y la resolución, relación de aspecto y velocidad de cuadros de las piezas de datos de imagen que se incluyen en el flujo de video. Cada pieza de información de atributos de flujo de audio porta información que incluye qué tipo de códec de compresión se usa para comprimir el flujo de audio, cuántos canales se incluyen en el flujo de audio, qué idioma soporta el flujo de audio y qué tan alta es la frecuencia de muestreo. La información de atributos de flujo de video y la información de atributos de flujo de audio se usan para inicialización de un decodificador antes de que el reproductor reproduzca la información.
En la modalidad 3, los datos multiplexados que se usarán son de un tipo de flujo incluido en la PMT. Además, cuando los datos multiplexados son grabados en un medio de grabación, se usa la información de atributos de flujo de video incluida en la información de datos multiplexados. Más específicamente, el método de codificación de video o el aparato de codificación de video descritos en cada una de las modalidades incluyen una etapa o una unidad para asignar información única que indica datos de video generados por el método de codificación de video o el aparato de codificación de video en cada una de las modalidades, al tipo de flujo incluido en la PMT o la información de atributos de flujo de video. Con la estructura, los datos de video generados por el método de codificación de video o el aparato de codificación de video descritos en cada una de las modalidades pueden distinguirse de datos de video que se conformen a otra norma.
Además, la figura 21 ilustra etapas del método de decodificación de video de acuerdo con la modalidad 3. En la etapa exSlOO, el tipo de flujo incluido en la PMT o la información de atributos de flujo de video se obtiene de los datos multiplexados . Después, en la etapa exSlOl, se determina si el tipo de flujo o la información de atributos de flujos de video indican o no que los datos multiplexados se generan por el método de codificación de video o el aparato de codificación de video en cada una de las modalidades. Cuando se determina que el tipo de flujo o la información de atributos de flujos de video indican que los datos multiplexados se generan por el método de codificación de video o el aparato de codificación de video en cada una de las modalidades, en la etapa exS102, el tipo de flujo o información de atributos de flujos de video se decodifican por el método de decodificación de video en cada una de las modalidades. Además, cuando el tipo de flujo o la información de atributos de flujos de video indican que se adaptan a las normas convencionales, tales como MPEG-2, MPEG4-AVC y VC-1, en la etapa exS103, el tipo de flujo o la información de atributos de flujos de video se decodifican por un método de decodificación de video de conformidad con las normas convencionales .
De esta forma, asignar un nuevo valor único al tipo de flujo o la información de atributos de flujos de video hace posible la determinación de si el método de decodificación de video o el aparato de decodificación de video que se describen en cada una de las modalidades pueden llevar o no a cabo decodificación. Incluso después de una entrada de datos multiplexados que se conformen a una norma diferente, un método o aparato de decodificación adecuado puede ser seleccionado. Así, se hace posible decodificar información sin ningún error. Más aún, el método o aparato de codificación de video o el método o aparato de decodificación de video de la modalidad 3 se pueden usar en los dispositivos y sistemas descritos arriba.
Modalidad 4 Cada uno del método de codificación de video, el aparato de codificación de video, el método de decodificación de video y el aparato de decodificación de video en cada una de las modalidades se logra típicamente en forma de un circuito integrado o un circuito integrado a gran escala (LSI, por sus siglas en inglés) . Como un ejemplo del LSI, la figura 22 ilustra una configuración del LSI ex500 que está hecho en un chip. El LSI ex500 incluye elementos ex501, ex502, ex503, ex504, ex505, ex506, ex507, ex508 y ex509 que se describirán abajo, y los elementos están conectados entre sí a través de un bus ex510. La unidad de circuito de suministro de energía ex505 se activa al suministrar cada uno de los elementos con energía cuando la unidad de circuito de suministro de energía ex505 es encendida.
Por ejemplo, cuando se lleva a cabo codificación, el LSI ex500 recibe una señal de AV proveniente de un micrófono exll7, una cámara exll3 y otros a través de un AV 10 ex509 bajo control de una unidad de control ex501 que incluye una CPU ex502, un controlador de memoria ex503, un controlador de flujo ex504 y una unidad de control de frecuencia de excitación ex512. La señal de AV recibida se almacena temporalmente en una memoria externa ex511, tal como una SDRAM. Bajo control de la unidad de control ex501, los datos almacenados son segmentados en porciones de datos de acuerdo con la cantidad de procesamiento y velocidad que se transmitirá a una unidad de procesamiento de señales ex507. Después, la unidad de procesamiento de señales ex507 codifica una señal de audio y/o una señal de video. Aquí, la codificación de la señal de video es la codificación descrita en cada una de las modalidades. Además, la unidad de procesamiento de señales ex507 algunas veces multiplexa los datos de audio codificados y los datos de video codificados, y un flujo 10 ex506 proporciona los datos multiplexados al exterior. Los datos multiplexados proporcionados se transmiten a la estación base exl07, o se escriben en el medio de grabación ex215. Cuando se multiplexan conjuntos de datos, los conjuntos de datos deben ser almacenados temporalmente en la memoria de almacenamiento temporal ex508 de tal forma que los conjuntos de datos sean sincronizados unos con otros .
Aunque la memoria ex511 es un elemento fuera del LSI ex500, se puede incluir en el LSI ex500. La memoria de almacenamiento temporal ex508 no está limitada a una memoria de almacenamiento temporal, sino que puede estar compuesta de memorias de almacenamiento temporal. Además, el LSI ex500 puede hacerse en un chip o una pluralidad de chips.
Más aún, aunque la unidad de control ex510 incluye la CPU ex502, el controlador de memoria ex503, el controlador de flujo ex504, la unidad de control de frecuencia de excitación ex512, la configuración de la unidad de control ex510 no está limitada a esto. Por ejemplo, la unidad de procesamiento de señales ex507 puede incluir además una CPU. La inclusión de otra CPU en la unidad de procesamiento de señales ex507 puede mejorar la velocidad de procesamiento. Además, como otro ejemplo, la CPU ex502 puede incluir la unidad de procesamiento de señales ex507, o una unidad de procesamiento de señales de audio que sea una parte de la unidad de procesamiento de señales ex507. En tal caso, la unidad de control ex501 incluye la unidad de procesamiento de señales ex507 o la CPU ex502 que incluye una parte de la unidad de procesamiento de señales ex507.
El nombre usado aquí es LSI, pero también puede ser llamado IC, LSI de sistema, súper LSI, o ultra LSI dependiendo del grado de integración.
Más aún, las formas para lograr la integración no están limitadas al LSI, y un circuito especial o un procesador de propósitos generales y así sucesivamente también puede lograr la integración. Una Disposición de Puertas Programable por Campo (FPGA, por sus siglas en inglés) que se pueda programar después de fabricar LSIs o un procesador reconfigurable que permita la reconfiguración de la conexión o configuración de un LSI se puede usar para el mismo propósito.
En el futuro, con el avance de la tecnología de semiconductores, una tecnología nueva puede reemplazar LSI. Los bloques funcionales pueden integrarse usando esta tecnología. La posibilidad es que la presente invención se aplique a biotecnología.
Modalidad 5 Cuando datos de video se decodifican por el método de codificación de video o por el aparato de codificación de video descritos en cada una de las modalidades, en comparación con cuando datos de video se conforman a una norma convencional, tal como MPEG-2, MPEG4-AVC y VC-1, la cantidad de cálculo probablemente se incrementa. Así, el LSI ex500 tiene que ser puesto en una frecuencia de excitación más alta que aquella de la CPU ex502 que se usará cuando datos de video de conformidad con la norma convencional sean decodificados . Sin embargo, cuando la frecuencia de excitación se establece más alta, existe un problema de que se incremente el consumo de energía.
Para resolver el problema, el aparato de decodificación de video, tal como la televisión ex300 y el LSI exSOO se configura para determinar a qué norma se conforman los datos de video, y cambiar entre las frecuencias de excitación de acuerdo con la norma determinada. La figura 23 ilustra una configuración ex800 en la modalidad 5. Una unidad de cambio de frecuencias de excitación ex803 establece una frecuencia de excitación a una frecuencia de excitación más alta cuando datos de video se generan por el método de codificación de video o el aparato de codificación de video descritos en cada una de las modalidades. Luego, la unidad de cambio de frecuencias de excitación ex802 instruye a una unidad de procesamiento de decodificación ex801 que ejecuta el método de decodificación de video descrito en cada una de las modalidades decodificar los datos de video. Cuando los datos de video se conforman a la norma convencional, la unidad de cambio de frecuencias de excitación ex803 establece una frecuencia de excitación a una frecuencia de excitación más baja que aquella de los datos de video generados por el método de codificación de video o el aparato de codificación de video descritos en cada una de las modalidades. Después, la unidad de cambio de frecuencias de excitación ex803 instruye a la unidad de procesamiento de decodificación ex802 que se conforma a la norma convencional decodificar los datos de video .
Más específicamente, la unidad de cambio de frecuencias de excitación ex803 incluye la CPU ex502 y la unidad de control de frecuencias de excitación ex512 en la figura 22. Aquí, cada una de la unidad de procesamiento de decodificación ex801 que ejecuta el método de decodificación de video descrito en cada una de las modalidades y la unidad de procesamiento de decodificación ex802 que se conforma a la norma convencional corresponden a la unidad de procesamiento de señales ex507 en la figura 22. La CPU ex502 determina a qué norma se conforman los datos de video. Luego, la unidad de control de frecuencias de excitación ex512 determina una frecuencia de excitación con base en una señal proveniente de la CPU ex502. Además, la unidad de procesamiento de señales ex507 decodifica los datos de video con base en una señal proveniente de la CPU ex502. Por ejemplo, la información de identificación descrita en la modalidad 3 se usa probablemente para identificar los datos de video. La información de identificación no está limitada a la descrita en la modalidad 3 sino que puede ser cualquier información siempre y cuando la información indique a qué norma se conforman los datos de video. Por ejemplo, cuando se determine a qué norma se conforman los datos de video con base en una señal externa para determinar que los datos de video se usan para una televisión o un disco, etc., la determinación puede hacerse con base en esta señal externa. Más aún, la CPU ex502 selecciona una frecuencia de excitación con base en, por ejemplo, una tabla de consulta en la cual las normas de los datos de video están asociadas con las frecuencias de excitación como se muestra en la figura 25. La frecuencia de excitación puede seleccionarse al almacenar la tabla de consulta en la memoria de almacenamiento temporal ex508 y una memoria interna de un LSI y con referencia a la tabla de consulta por la CPU ex502.
La figura 24 ilustra etapas para ejecutar un método en la modalidad 5. Primero, en la etapa exS200, la unidad de procesamiento de señales ex507 obtiene información de identificación de los datos multiplexados . Después, en la etapa exS201, la CPU ex502 determina si los datos de video se generan o no con base en la información de identificación por el método de codificación y el aparato de codificación descritos en cada una de las modalidades. Cuando los datos de video se generan por el método de codificación y el aparato de codificación descritos en cada una de las modalidades, en la etapa ex202, la CPU ex502 transmite una señal para establecer la frecuencia de excitación a una frecuencia de excitación más alta a la unidad de control de frecuencias de excitación ex512. Después, la unidad de control de frecuencias de excitación ex512 establece la frecuencia de excitación a la frecuencia de excitación más alta. Por otro lado, cuando la información de identificación indica que los datos de video se conforman a la norma convencional, tal como MPEG-2, PEG4-AVC y VC-1, en la etapa exS203, la CPU ex502 transmite una señal para establecer la frecuencia de excitación a una frecuencia de excitación más baja a la unidad de control de frecuencias de excitación ex512. Luego, la unidad de control de frecuencias de excitación ex512 establece la frecuencia de excitación a la frecuencia de excitación más baja que aquella en el caso cuando los datos de video se generan por el método de codificación y el aparato de codificación descritos en cada una de las modalidades .
Más aún, junto con el cambio de las frecuencias de excitación, el efecto de conservación de energía puede mejorarse al cambiar el voltaje que se aplicará al LSI ex500 o un aparato que incluya el LSI ex500. Por ejemplo, cuando la frecuencia de excitación se establece más baja, el voltaje que se aplicará al LSI ex500 o al aparato que incluya el LSI ex500 probablemente se establece en un voltaje más bajo que aquél en el caso cuando la frecuencia de excitación se establece más alta.
Más aún, cuando la cantidad de cálculo para decodificación es más grande, la frecuencia de excitación puede establecerse más alta, y cuando la cantidad de cálculo para decodificación sea más pequeña, la frecuencia de excitación se puede establecer más baja como el método para establecer la frecuencia de excitación. Así, el método de establecimiento no está limitado a los descritos arriba. Por ejemplo, cuando la cantidad de cálculo para decodificar datos de video de conformidad con MPEG4-AVC es más grande que la cantidad de cálculos para decodificar datos de video generados por el método de codificación de video y el aparato de codificación de video descritos en cada una de las modalidades, la frecuencia de excitación se establece probablemente en orden inverso al establecimiento descrito arriba.
Además, el método para establecer la frecuencia de excitación no está limitado al método para establecer la frecuencia de excitación no está limitado al método para establecer la frecuencia de excitación más baja. Por ejemplo, cuando la información de identificación indica que los datos de video se generan por el método de codificación de video y el aparato de codificación de video descritos en cada una de las modalidades, el voltaje que se aplicará al LSI ex500 o al aparato que incluya el LSI ex500 probablemente se establecerá más alto. Cuando la información de identificación indica que los datos de video se conforman a la norma convencional, tal como MPEG-2, MPEG4-AVC y VC-1, el voltaje se que se aplicará al LSI ex500 o al aparato que incluya el LSI ex500 probablemente se establecerá más bajo. Como otro ejemplo, cuando la información de identificación indique que los datos de video se generan por el método de codificación de video y el aparato de codificación de video descritos en cada una de las modalidades, la excitación de la CPU ex502 probablemente no tendrá que ser suspendida. Cuando la información de identificación indique que los datos de video se conforman a la norma convencional, tal como MPEG-2, MPEG4-AVC y VC-1, la excitación de la CPU ex502 probablemente se suspende en un momento dado debido a que la CPU ex502 tenga capacidad de procesamiento adicional. Incluso cuando la información de identificación indica que los datos de video se generan por el método de codificación de video y el aparato de codificación de video descritos en cada una de las modalidades, en caso de que la CPU ex502 tenga capacidad de procesamiento adicional, la excitación de la CPU ex502 probablemente se suspenderá en un momento dado. En tal caso, el tiempo de suspensión se establece probablemente más corto que aquél en el caso donde cuando la información de identificación indica que los datos de video se conforman a la norma convencional, tal como MPEG-2, MPEG4-AVC y VC-1.
En consecuencia, el efecto de conservación de energía puede mejorarse al cambiar entre las frecuencias de excitación de acuerdo con la norma a la cual se conformen los datos de video. Más aún, cuando el LSI ex500 o el aparato que incluye el LSI ex500 es excitado usando una batería, la vida de la batería puede extenderse con el efecto de conservación de energía.
Modalidad 6 Hay casos en los que una pluralidad de datos de video que se conforman a diferentes normas, se proporcionan a los dispositivos y sistemas, tales como una televisión y un teléfono celular. Para poder decodificar la pluralidad de datos de video que se conforman a las normas diferentes, la unidad de procesamiento de señales ex507 del LSI ex500 tiene que conformarse a las normas diferentes. Sin embargo, los problemas de incremento en la escala del circuito del LSI ex500 e incremento en el costo se originan con el uso individual de las unidades de procesamiento de señales ex507 que se conforman a las normas respectivas .
Para resolver el problema, lo que se concibe es una configuración en la cual la unidad de procesamiento de decodificación para implementar el método de decodificación de video descrito en cada una de las modalidades y la unidad de procesamiento de decodificación que se conforma a la norma convencional, tal como MPEG-2, MPEG4-AVC y VC-l se comparten parcialmente. Ex900 En la figura 26A muestra un ejemplo de la configuración. Por ejemplo, el método de decodificación de video descrito en cada una de las modalidades y el método de decodificación de video que se conforma a MPEG4-AVC tienen, parcialmente en común, los detalles de procesamiento, tales como codificación por entropía, cuantificación inversa, filtración de desbloqueo y predicción compensada en movimiento. Los detalles del procesamiento que se compartirá probablemente incluyen el uso de una unidad de procesamiento de decodificación ex902 que se conforma a MPEG4-AVC. En contraste, una unidad de procesamiento de decodificación dedicada ex901 probablemente se usa para otro procesamiento único para la presente invención. La unidad de procesamiento de decodificación para implementar el método de decodificación de video descrito en cada una de las modalidades puede ser compartida para el procesamiento que será compartido, y una unidad de procesamiento de decodificación dedicada puede usarse para procesamiento único a aquél de MPEG4-AVC.
Además, exlOOO en la figura 26B muestra otro ejemplo en el cual el procesamiento se comparte parcialmente. Este ejemplo usa una configuración que incluye una unidad de procesamiento de decodificación dedicada exlOOl que soporta el procesamiento único para la presente invención, una unidad de procesamiento de decodificación dedicada exl002 que soporta el procesamiento único a otra norma convencional, y una unidad de procesamiento de decodificación exl003 que soporta procesamiento que será compartido entre el método de decodificación de video en la presente invención y el método de decodificación de video convencional. Aquí, las unidades de procesamiento de decodificación dedicadas exlOOl y exl002 no necesariamente están especializadas para el procesamiento de la presente invención y el procesamiento de la norma convencional, y pueden ser aquellas capaces de implementar procesamiento general. Además, la configuración de la modalidad 6 puede ser implementada por el LSI ex500.
De esta manera, reducir la escala del circuito de un LSI y reducir el costo son posibles al compartir la unidad de procesamiento de decodificación para el procesamiento que será compartido entre el método de decodificación de video en la presente invención y el método de decodificación de video de conformidad con la norma convencional .
Aplicabilidad industrial El método de predicción espacial de acuerdo con la presente invención puede reducir la complejidad de la predicción espacial, y es aplicable a teléfonos celulares, computadoras personales, aparatos de reproducción de grabación, u otros cada uno de los cuales incluyen, por ejemplo, por lo menos uno de (i) un aparato de codificación de imágenes que codifica una imagen usando un resultado de la predicción espacial, (ii) un aparato de decodificación de imágenes que decodifica una imagen usando un resultado de la predicción espacial, y (iii) el aparato de codificación de imágenes y el aparato de decodificación de imágenes.
Lista de números de referencia 100 Aparato de codificación de imágenes (codificador) 105 Unidad de sustracción 110 Unidad de cuantificación de transformación 120 Unidad de cuantificación inversa y transformación inversa 125 Unidad de adición 130 Filtro de desbloqueo 140 Memoria 150 Filtro de interpolación 160 Unidad de predicción compensada en movimiento 165 Unidad de estimación de movimiento 170 Unidad de intra predicción 175 Unidad de cambio intra/inter 180 Unidad de diseño post filtro 190 Unidad de codificación por entropía 200 Aparato de decodificación de imágenes (decodificador) 220 Unidad de cuantificación inversa y transformación inversa 225 Unidad de adición 230 Filtro de desbloqueo 240 Memoria 250 Filtro de interpolación 260 Unidad de predicción compensada en movimiento 270 Unidad de intra predicción 275 Unidad de cambio intra/inter 280 Post filtro 290 Unidad de decodificación por entropía Se hace constar que con relación a esta fecha, el mejor método conocido por la solicitante para llevar a la práctica la citada invención, es el que resulta claro de la presente descripción de la invención.

Claims (18)

REIVINDICACIONES Habiéndose descrito la invención como antecede, se reclama como propiedad lo contenido en las siguientes reivindicaciones :
1. Un método de predicción espacial para predecir espacialmente un valor de pixel en cada posición de pixel dentro de un bloque actual incluido en una imagen, caracterizado porque comprende: calcular una pendiente entera con base en al menos una de una gradiente horizontal y una gradiente vertical cada una de las cuales es indicada por un número de modo, la pendiente entera indica un valor entero de una pendiente; determinar una posición de sub-pel que sea una intersección entre (i) una línea de la pendiente entera que pase a través de la posición de pixel dentro del bloque actual y (ii) un límite de un bloque adyacente al bloque actual; y predecir, para cada una de las posiciones de pixel, el valor de pixel en la posición de pixel con base en un valor de pixel interpolado en la posición de sub-pel determinada para la posición de pixel.
2. El método de predicción espacial de conformidad con la reivindicación 1, caracterizado porque en el cálculo, una de la gradiente horizontal y la gradiente vertical se escala por una ca potencia de 2, y la pendiente entera se calcula usando una de la gradiente horizontal y la gradiente vertical escaladas, c siendo un entero positivo, y en la determinación, la posición de sub-pel para la posición de pixel se calcula al multiplicar la pendiente entera generada por la escalada por un valor de coordenada horizontal o vertical a la posición de pixel que será predicha dentro del bloque actual.
3. El método de predicción espacial de conformidad con la reivindicación 2, caracterizado porque comprende además calcular el valor de c usando una función de una de la gradiente horizontal y la gradiente vertical.
4. El método de predicción espacial de conformidad con una de las reivindicaciones 1 a 3, caracterizado porque en el cálculo, un resultado de una división se obtiene con referencia a una tabla de división almacenada en una memoria, y la pendiente entera se calcula usando el resultado obtenido de la división, la división usa, como un divisor, un valor que indica una de la gradiente horizontal y la gradiente vertical, y la tabla de división indica, para cada valor predeterminado, el valor predeterminado y un resultado de una división usando el valor predeterminado como un divisor.
5. El método de predicción espacial de conformidad con la reivindicación 4, caracterizado porque un valor máximo del valor predeterminado indicado en la tabla de división es una ba potencia de 2 , b siendo un entero, y en el cálculo, cuando el valor que indica una de la gradiente horizontal y la gradiente vertical usada como el divisor excede la £>a potencia de 2, una de la gradiente horizontal y la gradiente vertical se escala al desplazar bits del valor a la derecha para obtener el resultado de la división usando, como un divisor, un valor que indique una de la gradiente horizontal y la gradiente vertical escalada.
6. El método de predicción espacial de conformidad con una de las reivindicaciones 1 a 5, caracterizado porque en el cálculo, la pendiente entera se calcula al dividir un valor que indica una de la gradiente horizontal y la gradiente vertical entre un valor que indica la otra de la gradiente horizontal y la gradiente vertical, cuando el valor de pixel en cada una de las posiciones de pixel dentro del bloque actual es predicho, se establecen ponderaciones de acuerdo con una distancia, en el límite, entre la posición de sub-pel determinada para la posición de pixel y cada una de las posiciones de peí completo adyacentes a la posición de sub-pel, y el valor de pixel en la posición de sub-pel es interpolado al establecer una de las ponderaciones correspondientes a cada valor de pixel de las posiciones de peí completo y calculando un promedio ponderado de los valores de pixel .
7. El método de predicción espacial de conformidad con una de las reivindicaciones 1 a 6, caracterizado porque en el cálculo, la pendiente entera se calcula únicamente para el bloque actual, y en la determinación, la posición de sub-pel se determina para cada una de las posiciones de pixel dentro del bloque actual, usando la pendiente entera que es común a las posiciones de pixel.
8. Un método para decodificar una imagen codificada por bloques, caracterizado porque comprende: predecir un valor de pixel en cada posición de pixel dentro de un bloque actual que será decodificado, usando el método de predicción espacial de conformidad con una de las reivindicaciones 1 a 7 para generar un bloque predicho; obtener un bloque de error de predicción; y añadir el bloque predicho al bloque de error de predicción.
9. Un método para codificar una imagen por bloque, caracterizado porque comprende: predecir un valor de pixel en cada posición de pixel dentro de un bloque actual que será codificado, usando el método de predicción espacial de conformidad con una de las reivindicaciones 1 a 7 para generar un bloque predicho; y sustraer el bloque predicho del bloque actual .
10. Un dispositivo de predicción espacial que predice espacialmente un valor de pixel en cada posición de pixel dentro de un bloque actual incluido en una imagen, caracterizado porque comprende: una unidad de cálculo configurada para calcular una pendiente entera con base en por lo menos una de una gradiente horizontal y una gradiente vertical cada una de las cuales se indica por un número de modo, la pendiente entera indica un valor entero de una pendiente; una unidad de determinación configurada para determinar una posición de sub-pel que es una intersección entre (i) una linea de la pendiente entera que pasa a través de la posición de pixel dentro del bloque actual y (ii) un límite de un bloque adyacente al bloque actual; y una unidad de predicción configurada para predecir, para cada una de las posiciones de pixel, el valor de pixel en la posición de pixel con base en un valor de pixel interpolado en la posición de sub-pel determinada para la posición de pixel.
11. Un aparato de decodificación de imágenes que decodifica una imagen codificada por bloques, caracterizado porque comprende : el dispositivo de predicción espacial de conformidad con la reivindicación 10 que predice un valor de pixel en cada posición de pixel dentro de un bloque actual que será decodificado, para generar un bloque predicho; y una unidad de adición configurada para obtener un bloque de error de predicción y añadir el bloque predicho al bloque de error de predicción.
12. Un aparato de codificación de imágenes que codifica una imagen por bloque, caracterizado porque comprende : el dispositivo de predicción espacial de conformidad con la reivindicación 10 que predice un valor de pixel en cada posición de pixel dentro de un bloque actual que será codificado, para generar un bloque predicho; y una unidad de sustracción configurada para sustraer el bloque predicho del bloque actual.
13. Un programa para predecir espacialmente un valor de pixel en cada posición de pixel dentro de un bloque actual incluido en una imagen, caracterizado porque hace que una computadora ejecute: calcular una pendiente entera con base en al menos una de una gradiente horizontal y una gradiente vertical cada una de las cuales es indicada por un número de modo, la pendiente entera indica un valor entero de una pendiente; determinar una posición de sub-pel que es una intersección entre (i) una línea de la pendiente entera que pasa a través de la posición de pixel dentro del bloque actual y (ii) un límite de un bloque adyacente al bloque actual; y predecir, para cada una de las posiciones de pixel, el valor de pixel en la posición de pixel con base en un valor de pixel interpolado en la posición de sub-pel determinada para la posición de pixel .
14. Un programa de decodificación de imágenes para decodificar una imagen codificada por bloques, caracterizado porque hace que una computadora ejecute: predecir un valor de pixel en cada posición de pixel dentro de un bloque actual que será decodificado, usando el programa de conformidad con la reivindicación 13 para generar un bloque predicho; obtener un bloque de error de predicción; y añadir el bloque predicho al bloque de error de predicción.
15. Un programa de codificación de imágenes para codificar una imagen por bloque, caracterizado porque hace que una computadora ejecute: predecir un valor de pixel en cada posición de pixel dentro de un bloque actual que será codificado, usando el programa de conformidad con la reivindicación 13 para generar un bloque predicho; y sustraer el bloque predicho del bloque actual.
16. Un circuito integrado que predice espacialmente un valor de pixel en cada posición de pixel dentro de un bloque actual incluido en una imagen, caracterizado porque comprende : una unidad de cálculo configurada para calcular una pendiente entera con base en al menos una de una gradiente horizontal y una gradiente vertical cada una de las cuales es indicada por un número de modo, la pendiente entera indica un valor entero de una pendiente; una unidad de determinación configurada para determinar una posición de sub-pel que es una intersección entre (i) una línea de la pendiente entera que pasa a través de la posición de pixel dentro del bloque actual y (ii) un límite de un bloque adyacente al bloque actual; y una unidad de predicción configurada para predecir, para cada una de las posiciones de pixel, el valor de pixel en la posición de pixel con base en un valor de pixel interpolado en la posición de sub-pel determinada para la posición de pixel.
17. Un circuito integrado de decodificación de imágenes que decodifica una imagen codificada por bloques, caracterizado porque comprende: el circuito integrado de conformidad con la reivindicación 16 que predice un valor de pixel en cada posición de pixel dentro de un bloque actual que será decodificado, para generar un bloque predicho; y una unidad de adición configurada para obtener un bloque de error de predicción y añadir el bloque predicho al bloque de error de predicción.
18. Un circuito integrado de codificación de imágenes que codifica una imagen por bloque, caracterizado porque comprende : el circuito integrado de conformidad con la reivindicación 16 que predice un valor de pixel en cada posición de pixel dentro de un bloque actual que será codificado, para generar un bloque predicho; y una unidad de sustracción configurada para sustraer el bloque predicho del bloque actual .
MX2012011165A 2010-04-12 2011-04-11 Metodo de prediccion espacial, metodo de decodificacion de imagenes y metodo de codificacion de imagenes. MX2012011165A (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP10003876A EP2375751A1 (en) 2010-04-12 2010-04-12 Complexity reduction of edge-detection based spatial interpolation
PCT/JP2011/002113 WO2011129084A1 (ja) 2010-04-12 2011-04-11 空間予測方法、画像復号方法、および画像符号化方法

Publications (1)

Publication Number Publication Date
MX2012011165A true MX2012011165A (es) 2012-11-06

Family

ID=42369861

Family Applications (1)

Application Number Title Priority Date Filing Date
MX2012011165A MX2012011165A (es) 2010-04-12 2011-04-11 Metodo de prediccion espacial, metodo de decodificacion de imagenes y metodo de codificacion de imagenes.

Country Status (14)

Country Link
US (5) US8824817B2 (es)
EP (3) EP2375751A1 (es)
JP (3) JP5798550B2 (es)
KR (1) KR101780084B1 (es)
CN (3) CN105338356B (es)
AU (1) AU2011241708B8 (es)
BR (1) BR112012026015B1 (es)
CA (1) CA2794351C (es)
MX (1) MX2012011165A (es)
MY (1) MY156119A (es)
RU (1) RU2571550C2 (es)
SG (1) SG184518A1 (es)
WO (1) WO2011129084A1 (es)
ZA (1) ZA201206591B (es)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101567974B1 (ko) * 2009-01-05 2015-11-10 에스케이 텔레콤주식회사 블록 모드 부호화/복호화 방법 및 장치와 그를 이용한 영상부호화/복호화 방법 및 장치
EP2375751A1 (en) 2010-04-12 2011-10-12 Panasonic Corporation Complexity reduction of edge-detection based spatial interpolation
US8787444B2 (en) * 2010-07-16 2014-07-22 Sony Corporation Differential coding of intra directions (DCIC)
JP2012169762A (ja) 2011-02-10 2012-09-06 Sony Corp 画像符号化装置と画像復号化装置およびその方法とプログラム
US8768082B2 (en) 2011-06-22 2014-07-01 Blackberry Limited Compressing image data
US8837582B2 (en) 2011-06-22 2014-09-16 Blackberry Limited Compressing image data
JP6120490B2 (ja) * 2011-11-07 2017-04-26 キヤノン株式会社 画像符号化装置、画像符号化方法及びプログラム、画像復号装置、画像復号方法及びプログラム
JP6480186B2 (ja) * 2012-01-19 2019-03-06 ヴィド スケール インコーポレイテッド ビデオコーディング量子化およびダイナミックレンジ制御のシステムおよび方法
US9743097B2 (en) * 2013-03-01 2017-08-22 Qualcomm Incorporated Spatial motion vector scaling for scalable video coding
EP3023938A1 (en) * 2014-11-21 2016-05-25 Thomson Licensing Method and apparatus for tracking the motion of image content in a video frames sequence using sub-pixel resolution motion estimation
KR20230057479A (ko) * 2015-11-11 2023-04-28 삼성전자주식회사 비디오 복호화 방법 및 그 장치 및 비디오 부호화 방법 및 그 장치
KR102345475B1 (ko) * 2016-01-05 2022-01-03 한국전자통신연구원 잔차 신호에 대한 예측 방법 및 장치
US20170244981A1 (en) 2016-02-24 2017-08-24 Mediatek Inc. Reconfigurable interpolation filter and associated interpolation filtering method
CN105791878B (zh) * 2016-03-04 2019-04-05 广东顺德中山大学卡内基梅隆大学国际联合研究院 图像错误隐藏方法与系统
US10390021B2 (en) * 2016-03-18 2019-08-20 Mediatek Inc. Method and apparatus of video coding
CN105828104A (zh) * 2016-05-11 2016-08-03 乐视控股(北京)有限公司 一种视频数据处理方法和装置
US10735725B2 (en) 2016-09-14 2020-08-04 Microsoft Technology Licensing, Llc Boundary-intersection-based deblock filtering
US10432856B2 (en) * 2016-10-27 2019-10-01 Mediatek Inc. Method and apparatus of video compression for pre-stitched panoramic contents
CN116437109A (zh) * 2017-01-31 2023-07-14 夏普株式会社 用于执行平面帧内预测视频编码的系统和方法
JP7086587B2 (ja) * 2017-02-24 2022-06-20 インターデジタル ヴイシー ホールディングス, インコーポレイテッド 復号された画像データから画像データを再構成する方法および装置
US11310532B2 (en) 2017-02-24 2022-04-19 Interdigital Vc Holdings, Inc. Method and device for reconstructing image data from decoded image data
WO2018219925A1 (en) * 2017-05-31 2018-12-06 Interdigital Vc Holdings, Inc. Method and apparatus for signalling bi-directional intra prediction in video encoding and decoding
CN109509166B (zh) * 2017-09-15 2021-05-04 凌云光技术股份有限公司 印刷电路板图像检测方法和装置
CN117478880A (zh) * 2017-10-16 2024-01-30 数字洞察力有限公司 用于将图像编码/解码的方法和存储比特流的记录介质
DE112018005899T5 (de) * 2017-12-18 2020-08-13 Arris Enterprises Llc System und Verfahren zum Konstruieren einer Ebene für planare Prädiktion
JP7315480B2 (ja) * 2018-01-30 2023-07-26 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 符号化装置、復号装置、符号化方法及び復号方法
US11611757B2 (en) * 2018-04-02 2023-03-21 Qualcomm Incorproated Position dependent intra prediction combination extended with angular modes
CN110418081B (zh) * 2018-04-27 2021-12-24 北京紫光展锐通信技术有限公司 高动态范围图像全分辨率重建方法、装置及电子设备
WO2020054591A1 (ja) * 2018-09-14 2020-03-19 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 符号化装置、復号装置、符号化方法、および復号方法
EP3854089A1 (en) * 2018-09-21 2021-07-28 Vid Scale, Inc. Complexity reduction and bit-width control for bi-directional optical flow
US10602177B1 (en) * 2018-10-01 2020-03-24 Novatek Microelectronics Corp. Frame rate up-conversion apparatus and operation method thereof
CN111209475B (zh) * 2019-12-27 2022-03-15 武汉大学 一种基于时空序列和社会嵌入排名的兴趣点推荐方法及装置

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6563953B2 (en) * 1998-11-30 2003-05-13 Microsoft Corporation Predictive image compression using a single variable length code for both the luminance and chrominance blocks for each macroblock
US6940557B2 (en) * 2001-02-08 2005-09-06 Micronas Semiconductors, Inc. Adaptive interlace-to-progressive scan conversion algorithm
FI20011610A0 (fi) * 2001-08-07 2001-08-07 Nokia Corp Menetelmä ja laite jakolaskun suorittamiseksi
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
US7523152B2 (en) 2002-12-26 2009-04-21 Intel Corporation Methods for supporting extended precision integer divide macroinstructions in a processor
JP4509104B2 (ja) * 2003-03-03 2010-07-21 エージェンシー・フォア・サイエンス・テクノロジー・アンド・リサーチ 高度動画像符号化におけるイントラ予測のための高速モード決定アルゴリズム
US7587098B2 (en) * 2005-07-14 2009-09-08 Mavs Lab. Inc. Pixel data generating method
CN101361370B (zh) * 2005-11-30 2010-12-01 株式会社东芝 图像编码/图像解码方法以及图像编码/图像解码装置
KR100750145B1 (ko) * 2005-12-12 2007-08-21 삼성전자주식회사 영상의 인트라 예측 부호화, 복호화 방법 및 장치
US7796480B2 (en) * 2006-06-05 2010-09-14 Mediatek Inc. Apparatus and methods for light spot servo signal detection
EP3410706B1 (en) 2007-06-29 2021-12-01 Velos Media International Limited Image encoding device and image decoding device
CN101217669A (zh) * 2008-01-15 2008-07-09 北京中星微电子有限公司 帧内预测方法及装置
EP2081386A1 (en) 2008-01-18 2009-07-22 Panasonic Corporation High precision edge prediction for intracoding
KR20090095316A (ko) * 2008-03-05 2009-09-09 삼성전자주식회사 영상 인트라 예측 방법 및 장치
JP2009284275A (ja) 2008-05-23 2009-12-03 Nippon Telegr & Teleph Corp <Ntt> 画像符号化方法、画像復号方法、画像符号化装置、画像復号装置、画像符号化プログラム、画像復号プログラムおよびそれらのプログラムを記録したコンピュータ読み取り可能な記録媒体
JPWO2010087157A1 (ja) * 2009-01-29 2012-08-02 パナソニック株式会社 画像符号化方法及び画像復号方法
US8379985B2 (en) * 2009-07-03 2013-02-19 Sony Corporation Dominant gradient method for finding focused objects
EP2534843A4 (en) 2010-02-08 2017-01-18 Nokia Technologies Oy An apparatus, a method and a computer program for video coding
US8879632B2 (en) * 2010-02-18 2014-11-04 Qualcomm Incorporated Fixed point implementation for geometric motion partitioning
EP2375751A1 (en) * 2010-04-12 2011-10-12 Panasonic Corporation Complexity reduction of edge-detection based spatial interpolation
US8953882B2 (en) * 2012-05-31 2015-02-10 Apple Inc. Systems and methods for determining noise statistics of image data

Also Published As

Publication number Publication date
CN105430402B (zh) 2018-08-03
US9215465B2 (en) 2015-12-15
RU2012143157A (ru) 2014-06-27
JP2015213377A (ja) 2015-11-26
SG184518A1 (en) 2012-11-29
AU2011241708B8 (en) 2015-10-08
BR112012026015A2 (pt) 2016-06-28
CA2794351C (en) 2018-01-23
MY156119A (en) 2016-01-15
EP2560388A1 (en) 2013-02-20
ZA201206591B (en) 2014-05-28
US20180220155A1 (en) 2018-08-02
EP3217664B1 (en) 2020-06-03
US20160057451A1 (en) 2016-02-25
JP6025108B2 (ja) 2016-11-16
JPWO2011129084A1 (ja) 2013-07-11
US20140334544A1 (en) 2014-11-13
WO2011129084A1 (ja) 2011-10-20
BR112012026015B1 (pt) 2021-11-30
EP3217664A1 (en) 2017-09-13
JP2017055409A (ja) 2017-03-16
CA2794351A1 (en) 2011-10-20
JP5798550B2 (ja) 2015-10-21
RU2571550C2 (ru) 2015-12-20
KR20130050288A (ko) 2013-05-15
AU2011241708A1 (en) 2012-11-01
CN102835112B8 (zh) 2018-03-06
JP6195179B2 (ja) 2017-09-13
CN105338356A (zh) 2016-02-17
CN102835112A (zh) 2012-12-19
KR101780084B1 (ko) 2017-09-19
US20130028530A1 (en) 2013-01-31
CN102835112B (zh) 2016-01-20
US20170150177A1 (en) 2017-05-25
EP2375751A1 (en) 2011-10-12
CN105430402A (zh) 2016-03-23
US9961367B2 (en) 2018-05-01
AU2011241708A2 (en) 2012-11-01
CN105338356B (zh) 2018-08-03
US9602837B2 (en) 2017-03-21
US10567797B2 (en) 2020-02-18
US8824817B2 (en) 2014-09-02
AU2011241708B2 (en) 2015-09-24
EP2560388A4 (en) 2014-05-28

Similar Documents

Publication Publication Date Title
MX2012011165A (es) Metodo de prediccion espacial, metodo de decodificacion de imagenes y metodo de codificacion de imagenes.
AU2018203520B2 (en) Image coding method, image decoding method, image coding apparatus, image decoding apparatus, and image coding and decoding apparatus
AU2016202666B2 (en) Image coding method, image decoding method, image coding apparatus, image decoding apparatus, and image coding and decoding apparatus
AU2011353415B2 (en) Moving picture decoding method, moving picture coding method, moving picture decoding apparatus, moving picture coding apparatus, and moving picture coding and decoding apparatus
AU2012329550B2 (en) Image encoding method, image decoding method, image encoding apparatus, and image decoding apparatus
AU2012291454B2 (en) Video encoding method, video encoding apparatus, video decoding method, video decoding apparatus, and video encoding/decoding apparatus
AU2012260302B2 (en) Image coding method, image coding apparatus, image decoding method, image decoding apparatus, and image coding and decoding apparatus
AU2012294053B2 (en) Image coding method, image decoding method, image coding apparatus, image decoding apparatus, and image coding and decoding apparatus
AU2017201384B2 (en) Moving picture coding method, moving picture decoding method, moving picture coding apparatus, moving picture decoding apparatus, and moving picture coding and decoding apparatus
CN102948144B (zh) 用于从周围块的统计推断出针对帧内预测的滤波模式
AU2012277160B2 (en) Image encoding method, image decoding method, image encoding device, image decoding device, and image encoding/decoding device
CN103339941B (zh) 动态图像编码方法、动态图像编码装置、动态图像解码方法、动态图像解码装置和动态图像编码解码装置
AU2012333936B9 (en) Image coding method, image coding apparatus, image decoding method and image decoding apparatus
MX2013014207A (es) Metodo de procesamiento de imagenes y aparato de procesamiento de imagenes.
MX2013012124A (es) Metodo de codificacion de video, aparato de codificacion de video, metodo de decodificacion de video, aparato de decodificacion de video y aparato de codificacion/decodificacion de video.
MX2013008943A (es) Metodo de codificacion de imagenes, metodo de decodificacion de imagenes, aparato de codificacion de imagenes, aparato de decodificacion de imagenes y aparato de codificacion y decodificacion de imagenes.
CN106851269A (zh) 图像解码方法及装置、图像编码方法及装置、编解码装置
CN103053158A (zh) 图像编码方法、图像解码方法、图像编码装置及图像解码装置
MX2013010231A (es) Metodo de codificacion de imagenes en movimiento, aparato de codificacion de imagenes en movimiento, metodo de decodificacion de imagenes en movimiento, aparato de decodificacion de imagenes en movimiento y aparato de codificacion y decodificacion de imagenes en movimiento.
MX2015002891A (es) Metodo de decodificacion de imagen, metodo de codificacion de imagen, aparato de decodificacion de imagen, aparato de codificacion de imagen y aparato de codificacion y decodificacion de imagen.
MX2013001652A (es) Metodo de codificacion de imagen, metodo de decodificacion de imagen, metodo de manejo de memoria, aparato de codificacion de imagen, aparato de decodificacion de imagen, aparato de manejo de memoria, y aparato de codificacion y decodificacion de imagen.
MX2013009439A (es) Decisiones eficientes para desbloqueo.
MX2015000630A (es) Metodo decodificador de imagen, metodo codificador de imagen, aparato decodificador de imagen, aparato codificador de imagen, y aparato codificador y decodificador de imagen.
TW201208381A (en) Encoding distortion removal method, encoding method, decoding method, encoding distortion removal device, encoding device and decoding device

Legal Events

Date Code Title Description
FG Grant or registration
GB Transfer or rights
PD Change of proprietorship

Owner name: PANASONIC INTELLECTUAL PROPERTY CORPORATION OF AME