MX2013000372A - Intraprediccion de baja comlejidad para la codificacion de video. - Google Patents

Intraprediccion de baja comlejidad para la codificacion de video.

Info

Publication number
MX2013000372A
MX2013000372A MX2013000372A MX2013000372A MX2013000372A MX 2013000372 A MX2013000372 A MX 2013000372A MX 2013000372 A MX2013000372 A MX 2013000372A MX 2013000372 A MX2013000372 A MX 2013000372A MX 2013000372 A MX2013000372 A MX 2013000372A
Authority
MX
Mexico
Prior art keywords
pixels
pixel
horizontal
vertical
limit
Prior art date
Application number
MX2013000372A
Other languages
English (en)
Inventor
Frank Jan Bossen
Thiow Keng Tan
Original Assignee
Ntt Docomo Inc
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 Ntt Docomo Inc filed Critical Ntt Docomo Inc
Publication of MX2013000372A publication Critical patent/MX2013000372A/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/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/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/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/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • H04N19/82Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop

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

La presente invención proporciona un proceso de intrapredicción única que mejora la eficiencia de codificación de video. El H.264/AVC utiliza pixeles de referencia en un límite horizontal ubicado inmediatamente por encima de un bloque objetivo que se va a predecir, y pixeles de referencia en un límite vertical ubicado inmediatamente a la izquierda del bloque objetivo. En la presente invención, se recupera al menos alguna de una matriz de pixeles de límite horizontal y una matriz de pixeles de límite vertical. Luego, los pixeles recuperados se agregan a los otros pixeles de límite para extender la matriz de los mismos. La intrapredicción se lleva a cabo solamente con base en la matriz extendida de pixeles de límite.

Description

INTRAPREDICCIÓN DE BAJA COMPLEJIDAD PARA LA CODIFICACIÓN DE VIDEO ORIGEN DE LA INVENCIÓN 1. Texto del campo técnico La presente invención se aplica a la codificación de video y, en particular, a la predicción intracuadro, en la que se predice un bloque de muestra utilizando pixeles previamente codificados y reconstruidos del mismo cuadro de video . 2. Antecedentes El video digital requiere una gran cantidad de datos para representar cada uno de los cuadros de una secuencia de video digital (p. ej . , una serie de cuadros) sin utilizar compresión. Para la mayoría de las aplicaciones, no resulta viable transmitir un video digital no comprimido a través redes informáticas debido a las limitaciones del ancho de banda. Además, el video digital no comprimido requiere una gran cantidad de espacio de almacenamiento. Por lo general, el video digital se codifica de alguna manera a fin de reducir los requisitos de almacenamiento y reducir los requisitos de ancho de banda.
Una técnica para la codificación del video digital es la predicción intercuadro o interpredicción. La interpredicción explota las redundancias temporales entre distintos cuadros. Típicamente, los cuadros de video temporalmente adyacentes incluyen bloques de pixeles que se mantienen sustancialmente iguales. Durante el proceso de codificación, un vector de movimiento correlaciona el movimiento de un bloque de pixeles en un cuadro con un bloque de pixeles similares en otro cuadro. De este modo, el sistema no necesita codificar el bloque de pixeles dos veces, sino que codifica el bloque de pixeles una vez y proporciona un vector de movimiento para predecir el otro bloque de pixeles.
Otra técnica para la codificación del video digital es la predicción intracuadro o intrapredicción. La intrapredicción codifica un cuadro o una parte de este sin tomar como referencia pixeles de otros cuadros . La intrapredicción explota las redundancias espaciales entre bloques de pixeles dentro de un cuadro. Debido ai que, por lo general, los bloques de pixeles espacialmente adyacentes tienen atributos similares, la eficiencia del: proceso de codificación mejora cuando se toma como referencia la correlación espacial entre bloques adyacentes. Esta correlación puede explotarse prediciendo un bloque objetivo en función de los modos de predicción que se utilizaron en bloques adyacentes .
COMPENDIO DE LA INVENCIÓN La presente invención proporciona un; proceso de intrapredicción único que mejora la eficiencia de la codificación de video. El estándar H.264/AVC utiliza pixeles de referencia en un límite horizontal ubicado inmediatamente arriba de un bloque objetivo que debe predecirse y pixeles de referencia en un límite vertical ubicado inmediatamente a la izquierda del bloque objetivo. En la presente invención, se recuperan, al menos, algunos de los pixeles de una matriz de pixeles del límite horizontal o de una matriz de pixeles del límite vertical. Luego, los pixeles recuperados se agregan a los pixeles del otro límite para extender la matriz de este. La intrapredicción se realiza en función, únicamente, de la matriz extendida de pixeles del límite. En una aplicación de la presente invención, se recuperan, al menos, algunos de los pixeles del límite vertical y se agregan a los 'pixeles del límite horizontal para extender la matriz de estos.
La presente invención elimina el iproceso de decisión en el cual se selecciona el límite horizontal o el límite vertical del cual se recuperan los ;pixeles de referencia. La presente invención también elimina el proceso recurrente de calcular una posición del límite vertical que interseque con una dirección de predicción, en ¦ el cual el proceso de cálculo recurrente típicamente incluye una operación de división. Eliminar estos procesos permite que el proceso de intrapredicción se implemente en arquitecturas de "instrucción única, múltiples datos" (Single-Instruction Múltiple Data, SIMD) , mejorando de este modo la eficiencia computacional de la codificación de video.
En una aplicación según la presente invención, se recuperan, al menos, algunos de los pixeles ' del límite vertical utilizando un identificador de pixeles verticales que se expresa de la siguiente manera: size x col [ ]. angle donde size (tamaño) representa el tamaño de un bloque objetivo que debe predecirse, angle (ángulo) representa, una dirección de predicción y col (columna) es un contador que disminuye de a 1 desde -1 hasta el ángulo. :Los pixeles recuperados se agregan a los pixeles horizontales en una ubicación identificada por un identificador . de pixeles horizontales [col] .
En otra aplicación, al recuperar, al menos, algunos de los pixeles del límite vertical, InvAngle (ángulo inv.) se calcula de la siguiente manera: N x size [ 1 Angle donde N es un número entero que es una potencia de 2. Luego, se recuperan, al menos, algunos de los pixeles del límite vertical, utilizando un identificador de pixeles verticales que se expresa como [col ? InvAngle » log2 N] .Los pixeles recuperados se agregan a los pixeles horizontales en una ubicación identificada por un identificador de pixeles horizontales [col]. ¦ ' En otra aplicación, InvAngle se obtiene de una tabla de búsqueda que enumera los valores de InvAngle en relación con los valores de angle. : En otra aplicación, se identifica un pixel del límite vertical utilizando un identificador de pixeles verticales [row] (fila) , donde row es un contador que aumenta de a 1 i desde 0 hasta size. El pixel recuperado se agrega a los pixeles del límite horizontal en una ubicación ! identificada por un identificador de pixeles horizontales [ini + 1] , donde int (entero) es un número entero que representa la posición de un pixel que interseca con una dirección de predicción.
La presente invención también proporciona un codificador y un decodificador que implementan una operación de intrapredicción en la que se recuperan, al menos, algunos de los pixeles de una matriz de pixeles del límite horizontal o de una matriz de pixeles del límite vertical. Luego, los pixeles recuperados se agregan a los pixeles del otro límite para extender la matriz de estos. La intrapredicción se realiza en función, únicamente, de la matriz extendida de pixeles del límite.
DESCRIPCIÓN BREVE DE LOS GRÁFICOS La FIG. 1 es un diagrama de bloques que muestra una arquitectura ejemplar de hardware en la que puede implementarse la presente invención.
La FIG. 2 es un diagrama de bloques que muestra una vista general de un codificador de video al cual puede aplicarse la presente invención.
La FIG. 3 es un diagrama de bloques que muestra una vista general de un decodificador de video aí cual puede aplicarse la presente invención.
La FIG. 4 es un diagrama de bloques qué muestra los módulos funcionales de un codificador de acuerdo con una aplicación de la presente invención.
La FIG. 5 es un diagrama de flujo que muestra un proceso de . intrapredicción realizado por un módulo de intrapredicción de la aplicación de la presente invención. : La FIG. 6 es un diagrama de bloques qué muestra los módulos funcionales de un decodificador de acuerdo con una aplicación de la presente invención.
La FIG. 7 es un diagrama que muestra las direcciones de predicción que ilustran modos de intrapredicción 4x4 que son compatibles con H.264/AVC.
La FIG. 8 es un diagrama que muestra las direcciones de predicción propuestas en el Documento N.° JCT-VC A119.
La FIG. 9 es un diagrama de flujo que muestra el proceso, propuesto en JCT-VC A119, de generar un bloque predicho a lo largo de una de las direcciones de predicción que se muestran en la FIG. 7.
La FIG. 10 es un diagrama de flujo que muestra el proceso de intrapredicción de baja complejidad realizado de acuerdo con una aplicación de la presente invención.
La FIG. HA es una vista esquemática qüe muestra un bloque de predicción y matrices de pixeles de los límites horizontal y vertical.
La FIG. 11B es una vista esquemática que muestra una matriz de pixeles del límite horizontal extendida con pixeles del límite vertical.
La FIG. 12 es un diagrama de flujo que muestra el proceso de extender una matriz de pixeles : del límite horizontal realizado de acuerdo con una aplicación de la presente invención.
La FIG. 13 es un diagrama de flujo que muestra otra aplicación de extensión de una matriz de pixeles del límite horizontal .
La FIG. 14 es un diagrama de flujo que muestra el proceso de intrapredicción de baja complejidad realizado de acuerdo con otra aplicación de la presente invención.
DESCRIPCIÓN DETALLADA DE LOS GRÁFICOS Y DE LAS APLICACIONES PREFERIDAS ACTUALMENTE La FIG. 1 muestra una arquitectura ejemplar de hardware de una computadora 100 en la que puede implementarse la presente invención. Debe tenerse en cuenta que la arquitectura de hardware que se muestra en la FIG. 1 puede ser común tanto en un codificador de video como en un decodificador de video que implementan las aplicaciones de la presente invención. La computadora 100 incluye un procesador 101, una memoria 102, un dispositivo de almacenamiento 105 y uno o más dispositivos de entrada y/o salida (input and/or output, I/O) 106 (o periféricos) que se acoplan en forma comunicativa mediante una interfaz local 107. La interfaz local 105 puede ser, por ejemplo, entre otros,, uno o más buses u otras conexiones cableadas o inalámbricas, como se conocen en el campo.
El procesador 101 es un dispositivo de hardware para ejecutar software, en particular el que se almacena en la memoria 102. El procesador 101 puede ser cualquier procesador fabricado especialmente o comercialmente disponible, una unidad central de procesamiento (central processing unit, CPU) , un procesador auxiliar entre varios procesadores asociados con la computadorá 100, un microprocesador basado en un semiconductor (en forma de un microchip o de un conjunto de chips) o, en general, cualquier dispositivo que ejecute instrucciones de software.
La memoria 102 consiste en un medio legible por la computadora, que puede incluir cualquier elemento volátil de memoria o una combinación de estos (p. ej . , memoria de acceso aleatorio [Random Access Memory, RAM], como . la memoria dinámica de acceso aleatorio [Dynamic Random Access Memory, DRAM] , la memoria estática de acceso aleatorio [Static Random Access Memory, SRAM] , la memoria síncrona dinámica de acceso aleatorio [Synchronous Dynamic Random Access Memory, SDRAM] , etc.) y cualquier elemento no volátil de la memoria (p. ej . , memoria solo de lectura [Read Only Memory, ROM] ,¦ disco duro, cinta, disco compacto con memoria solo de lectura [Compact Disk Read Only Memory, CDROM] , etc.).. Asimismo- la memoria 102 puede incorporar medios de almacenamiento electrónico, magnético, óptico, y/o de otro tipo. Un medio legible por la computadora puede ser cualquier método que pueda almacenar, comunicar, propagar o transportar el programa para que sea utilizado por el sistema, aparato o dispositivo de ejecución de instrucciones o para que se utilice en conexión con estos. Debe tenerse en cuenta que ia memoria 102 puede tener una arquitectura distribuida, en la cual diversos componentes estén situados en forma remota entre sí, pero puede accederse mediante el procesador 101.
El software 103 de la memoria 102 puede incluir un programa separado o más, cada uno de los cuales contiene un listado ordenado de instrucciones ejecutables para la implementación de funciones lógicas de la computadora 100, como se describe a continuación. En el ejemplo de la FIG. 1, el software 103 de la memoria 102 define la funcionalidad de codificación de video o decodificación de video de la computadora 100 de acuerdo con la presente invención. Además, aunque no resulte necesario, es posible que la ; memoria 102 contenga un sistema operativo (Operating System, 0/S) 104. El sistema operativo 104 controla esencialmente la ejecución de los programas informáticos y proporciona programación, control de entrada-salida, manejo de archivos y datos, manejo de memorias y control de comunicación, y de servicios relacionados.
El dispositivo de almacenamiento 105 de la computadora 100 puede ser un dispositivo de almacenamiento de muchos tipos diferentes, incluidos un dispositivo de almacenamiento estacionario o un dispositivo de almacenamiento portátil. Por ejemplo, el dispositivo de almacenamiento 105 puede ser una cinta magnética, un disco, una memoria flash, una memoria volátil o un dispositivo de almacenamiento diferente. Además, el dispositivo de almacenamiento 105 puede ser una tarjeta de memoria digital segura o cualquier otro dispositivo de almacenamiento 105 removible .
Los dispositivos de 1/0 106 pueden incluir dispositivos de entrada, por ejemplo, entre otros, pantalla táctil, teclado, mouse, escáner, micrófono u otro dispositivo de entrada. Asimismo, los dispositivos de I/O 106 también pueden incluir dispositivos de salida, por ejemplo, entre otros, una pantalla u otros dispositivos de : salida. Los dispositivos de I/O 106 pueden, asimismo, incluir dispositivos que comunican mediante entradas y salidas, por ejemplo, entre · otros, un modulador/demodulador (módem; para acceder a otro dispositivo, sistema o red) , un transceptor de radiofrecuencia (RF) , inalámbrico o de otro tipo, una interfaz telefónica, un puente, un routér u otros dispositivos que funcionen como una entrada y una salida.
Como bien saben las personas con un grado de habilidad común en la especialidad, la compresión de video se logra mediante la eliminación de información redundante en una secuencia de video. Existen muchos estándares de codificación de video diferentes, entre los que se incluyen MPEG-1, PEG-2, MPEG-4, H.261, H.263 y H.264/AVC. Debe tenerse en cuenta que no se pretende que la presente invención esté limitada a la aplicación de ningún estándar específico de codificación de video. Sin embargo, la siguiente descripción de la presente invención se proporciona utilizando el ejemplo del estándar H.264/AVC, que se incorpora en este documento por referencia. El estándar H.264/AVC es el estándar más nuevo de codificación de video y logra una mejora significativa del rendimiento con respecto a los estándares de codificación anteriores, como MPEG-1, MPEG-2, H.261 y H.263.
En el estándar H.264/AVC, cada cuadro o imagen de un video puede fragmentarse en diversos cortes. Los cortes, luego, se dividen . en bloques de pixeles de 16x16 denominados macrobloques , que a su vez también pueden ¡dividirse en bloques de pixeles de 8x16, 16x8, 8x8, 4x8, 8x4, hasta de 4x4. Hay cinco tipos de cortes compatibles con H.264/AVC. En los cortes I, todos los macrobloques se codifican utilizando intrapredicción. En los cortes P, pueden codificarse macrobloques utilizando intrapredicción o interpredicción. Los cortes , P permiten que se utilice solo una señal de predicción con compensación de movimiento ( otion Compensated Prediction, MCP) por macrobloque . En los cortes B, pueden codificarse macrobloques utilizando intrapredicción o interpredicción. Pueden utilizarse dos señales MCP por predicción. Los cortes SP permiten que se cambien los cortes P entre diferentes secuencias de video en forma eficiente. Un corte SI coincide en forma exacta con un corte SP para el acceso aleatorio o la recuperación de errores, mientras se utiliza intrapredicción únicamente.
La FIG. 2 muestra una vista general de un codificador de video al cual puede aplicarse ; la presente invención. Los bloques que se muestran en la figura representan módulos funcionales realizados por el procesador 101 que ejecuta el software 103 en la memoria 102. Se alimenta una imagen 200. de un cuadro de video a un codificador de video 201. El codificador de video trata la imagen 200 en unidades de macrobloques 200A. Cada macrobloque contiene varios pixeles de imagen 200. En cada macrobloque, se realiza una transformación a coeficientes de transformación, seguida de una cuantificación a los niveles, del coeficiente de transformación. Además, se utiliza intrapredicción o interpredicción, a fin de no realizar los pasos de codificación directamente en los datos de pixeles sino en las diferencias entre estos y los valores predichos de los pixeles, logrando de este modo valores pequeños que se comprimen con más facilidad.
Para cada corte, el codificador 201. genera una serie de elementos sintácticos, que forman una versión codificada de los macrobloques del corte correspondiente. Todos los elementos de datos residuales de los elementos sintácticos, que están relacionados con la codificación de los coeficientes de transformación —como los ¡niveles del ¡ coeficiente de transformación o un mapa de significación que indica los niveles del coeficiente de transformación que se saltaron—, se denominan elementos sintácticos de datos residuales. Además de estos elementos sintácticos de datos residuales, los elementos sintácticos generados por el codificador 201 contienen elementos sintácticos de información de control que contienen información de control sobre cómo se ha codificado cada macrobloque y cómo tiene que decodificarse , respectivamente. En otras palabras, los elementos sintácticos pueden dividirse en dos categorías. La primera categoría, los elementos sintácticos de! información de control, contiene los elementos relacionados con un tipo de macrobloque, tipo de submacrobloque e información sobre modos de predicción tanto de tipo espacial como temporal, así como información de control basada en cortes y basada en macrobloques , por ejemplo. En la segunda categoría, todos los elementos de datos residuales, como un mapa de significación que indica las ubicaciones de todos los coeficientes significativos dentro de un bloque de coeficientes de transformación cuantificados y los valores de los coeficientes significativos, que se indican en unidades de niveles que corresponden a los pasos de cuantificación, se combinan y se convierten en elementos sintácticos de datos residuales. ; El codificador 201 consiste en un' codificador entrópico que codifica los elementos sintácticos y genera palabras clave aritméticas para cada corte. Cuando se generan palabras clave aritméticas para un corte, el codificador entrópico explota las dependencias estadísticas entre los valores de datos de los elementos sintácticos en, la secuencia de bits de la señal de video. El codificador 201 produce una \ señal de video codificada para un corte de la imagen 200 a un decodificador dé video 301 que se muestra en la FIG. 3.
La FIG. 3 muestra una vista general de un decodificador de video al cual puede aplicarse! la presente invención. De la misma manera, los bloques que sé muestran en la figura representan módulos funcionales realizados por el procesador 101 que ejecuta el software 103 en la. memoria 102. El decodificador de video 301 recibe la señal de video codificada y primero decodifica la señal en forma entrópica para transformarla nuevamente en los elementos [ sintácticos . El' decodificador 301 utiliza los elementos sintácticos para reconstruir, macróbloque por macrobloque y luego corte tras corte, las muestras de imagen 300A de los pixeles de la imagen 300. ; La FIG. 4 muestra los módulos funcionales del codificador de video 201. Estos módulos funcionales son realizados por el procesador 101 que ejecuta el [ software 103 en la memoria 102. Una imagen de video de entrada es un cuadro o un campo de una imagen de video j natural (no comprimida) definida por puntos de muestra que representan componentes de colores originales, como crominancia ("croma") y luminancia ("luma") (otros componentes son posibles, por ejemplo, matiz, saturación y valor) . La imagen! de video de entrada se divide en macrobloques. 400 y cada uno representa un área de imagen cuadrada que consta de 16x16 pixeles del componente luma del color de la imagen. La imagen de video de entrada también se parte en macrobloques , cada uno de los cuales representa un fragmento de 8x8 pixeles dé cada uno de los dos componentes croma del color de la imagen. En la operación general de un codificador, los macrobloques ingresados pueden predecirse temporal o espacialmente utilizando interpredicción o intrapredicción. Sin embargo, para fines de análisis, se supone que los macrobloques 400 son todos macrobloques de tipo corte-I y están sujetos únicamente a intrapredicción.
La intrapredicción se alcanza a un módulo de intrapredicción 401, cuya operación se ánalizará a continuación en detalle. El módulo de intrapredicción 401 genera un bloque de predicción 402 a partir de pixeles de los límites horizontal y vertical de bloques vecinos, que han sido codificados, reconstruidos y almacenados previamente en una memoria de cuadro 403. Un residual 404 del bloque de predicción 402, que es la diferencia entre un bloque objetivo 400 y el bloque de predicción 402, se transforma, escala y cuantifica a un módulo de transformación/cuantificación 405 utilizando métodos y técnicas conocidos para aquellas personas con experiencia en el campo de la codificación de videos. Los coeficientes de transformación cuantificados 406 son, luego, codificados en forma entrópica -a un módulo de codificación entrópica 407 y transmitidos (junto con otra información relacionada con la intrapredicción) como una señal de video codificada 408.
El codificador de video 201 contiene una funcionalidad de decodificación para realizar la intrapredicción en bloques objetivo. La funcionalidad de decodificación consiste en un módulo inverso de cuantificación/transformación 409, que realiza cuantificaciones y transformaciones inversas sobre los coeficientes de transformación cuantificados 406, á fin de producir el residual de predicción decodificado 410, que se agrega al bloque de predicción 402. La 'suma del¡ residual dé predicción decodificado 410 y del bloque de predicción 402 es un bloque reconstruido 411, que se almacena en la memoria de cuadro 403 y el módulo de intrapredicción 401 leerá desde ahí y utilizará para generar un bloque de predicción 402 para decodificar un próximo bloque objetivo 400.
La FIG. 5 es un diagrama de flujo que muestra los procesos realizados por el módulo de intrapredicción 401. De acuerdo con el estándar H.264/AVC, la intrapredicción implica la predicción de cada pixel del bloque objetivo 400 en función de una pluralidad de modos de predicción mediante la utilización de interpolaciones de pixeles del límite ("pixeles de referencia") de bloques vecinos codificados y reconstruidos previamente. Los modos de predicción son identificados por números enteros positivos 0, 1, 2..., cada uno asociado con un algoritmo o instrucción diferente para predecir pixeles específicos del bloque objetivo 400. El módulo de intrapredicción 401 procesa la intrapredicción de acuerdo con los modos de predicción respectivos y genera diferentes bloques de predicción. Bajo un algoritmo de búsqueda completa (full search, FS) , cada uno de los bloques de predicción generados es comparado con el bloque objetivo 400, a fin de encontrar el modo de predicción óptimo, lo que minimiza el residual de predicción 404 o produce un residual de predicción 404 inferior entre los modos de predicción. La identificación del modo de predicción óptimo es comprimida y enviada al decodificador 301 con otros elementos sintácticos de información de control .
Cada modo de predicción puede describirse por una dirección . de predicción general como se describe en forma oral (es decir, horizontal hacia arriba, vertical y diagonal hacia abajo a la izquierda). Una dirección de predicción puede describirse gráficamente mediante una dirección angular, que se expresa a través de un diagrama con flechas, como el que se muestra en la FIG. 7. En este tipo de diagrama, puede considerarse que cada flecha representa una dirección de predicción o un modo de predicción. El ángulo correspondiente al modo de predicción tiene una relación general con la dirección desde la ubicación del promedio ponderado de los pixeles de referencia utilizados para predecir un pixel objetivo hasta la ubicación del pixel objetivo. Debe tenerse en cuenta que los modos de predicción incluyen un modo de predicción DC que no está asociado con ninguna dirección de predicción y, por lo tanto, a diferencia de los demás modos de predicción, no puede describirse gráficamente en el diagrama. En el modo de predicción DC, el bloque de predicción 402 es generado de forma tal que cada pixel del bloque de predicción 402 se configura de manera uniforme al valor medio de los pixeles de referencia.
Volviendo a la FIG. 5, el modo de predicción es iniciado en el Paso 501. Luego, se determina en >el Paso 502 si el modo de predicción indica la predicción DC.;Si lo hace, el flujo avanza al Paso 503, donde se genera un bloque de predicción DC 402 con el valor medio de los pixeles de referencia en el Paso 503. Si el modo de predicción indica otra cosa, se genera un bloque de predicción 402 de acuerdo con la instrucción o el algoritmo asociados con el modo de predicción en el Paso 504, cuyo proceso se analizará a continuación en detalle. Después del Paso 503 o 504, el flujo avanza hasta el Paso 505, donde se determina si los bloques de predicción son generados para todos los modos de predicción. Si la intrapredicción se procesa de: acuerdo con todos los modos de predicción, el flujo avanza hasta el Paso 506. De lo contrario, el modo de predicción se incrementa en el Paso 507 y el flujo regresa al Paso 502. En el Paso 506, cada uno de los bloques de predicción generados es comparado con el bloque objetivo 400, a fin de determinar el modo de predicción óptimo, que minimiza el residual de predicción 404.
La FIG. 6 muestra los módulos funcionales del decodificador de video 301. Estos módulos funcionales son realizados por el procesador 101 que ejecuta el ^software 103 en la memoria 102. La señal de video codificada proveniente del codificador 201 es revisada primero por un decodificador entrópico 600 y decodificada en forma entrópica para transformarla nuevamente en coeficientes de transformación cuantificados 601. Los coeficientes de transformación cuantificados 601 son transformados y cuantificados inversamente mediante un módulo de transformación/cuantificación inversa 602, a fin de generar un residual de predicción 603. Se notifica 1 el modo de predicción seleccionado por el codificador 201 a, un módulo de intrapredicción 604. De acuerdo con el modo de predicción seleccionado, el módulo de intrapredicción 604 reáliza un proceso de intrapredicción similar al realizado en los Pasos 502, 503 y 504 de la FIG. 5, a fin de generar un bloque de predicción 605 mediante la utilización de pixelés del límite de bloques vecinos reconstruidos y almacenados previamente en una memoria de cuadro 606. El bloque de predicción 605 es agregado al residual de predicción 603 para reconstruir un bloque 607 de señal de video decodificada.' El bloque reconstruido 607 es almacenado en la memoria de cuadro 606 para ser utilizado en la predicción de un próximo bloque.
A continuación, se proporcionará una descripción detallada sobre el proceso del Paso 504 realizado por los módulos de intrapredicción 401 y 604, . a fin de generar un bloque de predicción de acuerdo con uno de los modos de predicción, excepto el modo de predicción DC. ¡H.264/AVC es compatible con la intrapredicción 4x4, la intrapredicción 8x8 y la intrapredicción 16x16. La intrapredicción 4x4 se utiliza comúnmente cuando hay detalles significativos én la imagen.
La intrapredicción 4x4 predice los dieciséis bloques luma 4x4 dentro de un macrobloque en forma individual . La intrapredicción 4x4 se realiza de acuerdo con nueve modos de predicción, incluido un modo de predicción DC. Las direcciones de predicción espaciales en las cuales se realiza la intrapredicción 4x4 se muestran en la FIG. 7. La intrapredicción 8x8 se realiza de acuerdo con nueve modos de predicción, incluido un modo de predicción DC. La intrapredicción 16x16 se realiza de acuerdo con cuatro modos de predicción, incluido un modo de predicción DC.
Estudios recientes muestran que un aumento en la cantidad de direcciones de predicción, o un aumento en la cantidad de modos de predicción, por lo general, contribuyen a la mejora de la eficiencia de compresión en la codificación de videos. Consulte, por ejemplo, los Documentos N.° JCT-VC A119 ("Intrapredicción Angular") y JCT-VC A124 ( "Intradirección Arbitraria") presentados al Equipo Colaborativo Conjunto sobre Codificación de Video (Joint Collaborative Team on Video Coding, JCT-VC) , los cuales se incorporan en el presente documento por referencia. Un aumento en la cantidad de direcciones de predicción lleva a un aumento en la cantidad de intervalos angulares de direcciones de predicción disponibles y, por lo ;tanto, a un aumento en la cantidad de bloques de predicción candidatos. El aumento en la cantidad de bloques de predicción candidatos simplemente aumenta las probabilidades de tener un bloque de predicción que sea casi idéntico al bloque objetivo que debe codificarse. La FIG. 8 es un diagrama que muestra las direcciones de predicción propuestas en el Documento N.° JCT-VC A119. En la FIG. 8, los pixeles de referencia comprenden diecisiete (17) pixeles horizontales y diecisiete (17) pixeles verticales, donde el pixel superior izquierdo es común a los límites horizontal y vertical. Por lo tanto, hay 33 direcciones de predicción diferentes disponibles para generar pixeles de predicción en un bloque de 8x8. JCT-VC A124 propone la intrapredicción direccional arbitraria, en la que la cantidad de direcciones de predicción se ajuste de acuerdo con el tamaño de un bloque que debe predecirse.
La FIG. 9 es un diagrama de flujo que muestra el proceso, propuesto por JCT-VC Á119, para generar un bloque de predicción a lo largo de una de las direcciones de predicción que se muestran en la FIG. 8. En la siguiente descripción del proceso, algunos algoritmos están simplificados para facilitar la explicación. Además, el proceso descrito se limita a la intrapredicción a lo largo de una dirección de predicción que es mayormente vertical. La intrapredicción a lo largo de una dirección de predicción que es mayormente horizontal puede implementarse simétricamente al proceso que se muestra en la FIG. 9, como lo demuestra el software proporcionado por JCT-VC A119. Si bien la FIG. 8 muestra un bloque de 8x8 que debe predecirse, el proceso que se muestra en la FIG. 9 puede expandirse para aplicarse a diversas cantidades de pixeles en distintas configuraciones. Por ejemplo, un bloque que debe predecirse podría estar compuesto de una matriz de pixeles de 4x4. Un bloque de predicción también podría estar compuesto de una matriz de pixeles de 8x8, de una matriz de pixeles de 16x16 o de matrices de pixeles más grandes. Otras configuraciones de pixeles, incluidas matrices tanto cuadradas como rectangulares, también podrían integrar un bloque de predicción.
En el Paso 900 de la FIG. 9, los, pixeles de referencia de los límites horizontal y vertical, que se encuentran inmediatamente arriba y a la izquierda de un bloque objetivo, respectivamente, se leen de bloques vecinos que han sido codificados, reconstruidos y almacenados previamente en una memoria de cuadro, tal como la memoria 403 que se muestra en la FIG. 4. Los pixeles del límite horizontal se almacenan en un área de la memoria denominada "re£H" (referencia horizontal) .Los pixeles del límite vertical se almacenan en otra área de la memoria denominada "refV" (referencia vertical). Volviendo a la FIG. 8, los pixeles de referencia se identifican por sus coordenadas en un sistema de coordenadas que tiene su origen en la posición del pixel superior izquierdo del bloque de 8x8. Por lo tanto, los pixeles del limite horizontal tienen coordenadas que se expresan como p[x, y] , donde x = 0, 1...16 e y = 0. Los pixeles del límite vertical tienen coordenadas que se expresan como p [x, y], donde x = 0 e y = 0, -1, -2...-16.
Se asume que los pixeles del límite horizontal almacenados en el área de la memoria refH se identifican por una dirección lógica (x) en la cual x = 0, 1...16 y que los pixeles del límite vertical almacenados en el área de la memoria refV se identifican, asimismo, por una dirección lógica (y) en la cual y = 0, -1, -2... -16, donde cada pixel se almacena en la dirección que tiene el número en . la coordenada de la que se lo lee. Por lo tanto,1 como están representados gráficamente los pixeles horizontales y verticales en la FIG. 8, puede considerarse que las áreas de la memoria refH y refV se extienden en forma lineal y ortogonal entre sí, y que cada una tiene una longitud de 2 x size + 1, donde "size" es un parámetro que representa el tamaño del bloque objetivo. Se supone que size tiene un valor igual a un número entero que es una potencia de 2, t l como 4, 8, 16... Opcionalmente, puede aplicarse un filtro de paso bajo, como se describe en la Sección 8.3.2.2.1 de H.264/AVC, a los pixeles de refH y refV.
En el Paso 901, un contador denominado "row" se coloca en , cero ("0"). El contador row toma un valor desde 0. hasta size e indica la posición en la fila de un pixel de predicción del bloque de predicción. En el Paso 902, un parámetro denominado "pos" (posición) se calcula mediante angle (row + 1) . angle es un parámetro que tiene un número fraccionario en una representación de punto fijo. Como tal, angle está conformado por una parte entera y una parte fraccionaria, y la parte fraccionaria consta de una cantidad fija de dígitos binarios; angle representa una de las direcciones de predicción que se muestran en la^IG. 8. Por ejemplo, "angle = -size" identifica la dirección de predicción que atraviesa las coordenadas [x = 0 , y = 0] en la FIG. 8. El hecho de que angle tenga un valor positivo identifica una dirección de predicción que interseca solo el límite horizontal, mientras que el hecho de que angle tenga un valor negativo identifica una dirección de predicción que interseca los límites vertical y horizontal, angle varía dentro de un rango determinado por la cantidad de ; direcciones de predicción que se desea utilizar. Como se propone en JCT-VC A124, la cantidad de direcciones de predicción que deben utilizarse puede determinarse según el tamaño de un bloque que debe predecirse. En la siguiente descripción, se supone que angle toma un número fraccionario que varía dentro de un rango que va de "-size" a "size". Debe tenerse en cuenta que los limites del rango de angle pueden definirse con otros valores .
Al igual que angle, el parámetro pos consta de una parte entera y una parte fraccionaria, y esta parte fraccionaria consta de una cantidad fija de dígitos binarios, que es igual al logaritmo en base 2 del límite del rango de angle, que puede expresarse como log2_size conforme a la suposición antes mencionada de que el límite : del rango de angle se coloca en size. pos identifica la posición de una intersección entre el límite horizontal y la dirección de predicción representada por angle. Volviendo al Paso 902, la operación "pos» log2_size" identifica un número entero de pos, que se almacena en un parámetro "int", y la operación "pos & (size' - 1)" identifica un número fraccionario de pos, que se almacena en un parámetro "frac" (fracción) .El operador ">>" pide un desplazamiento aritmético de dígitos binarios a la derecha. El operador "&" pide una operación bit a bit "and" .
En el Paso 903, se determina si angle tiene un valor igual a cero ("0") o mayor. Si angle tiene un valor igual a cero o mayor, el flujo procede al Paso 904. En caso de lo contrario, el flujo procede al Paso 913. El hecho de que angle sea igual a cero o mayor sugiere que se puede depender solo de los pixeles de referencia ubicados en el límite horizontal, o almacenados en refH, para derivar los pixeles de predicción de un bloque de predicción. En el caso alternativo, el hecho de que angle sea inferior a cero sugiere que se necesitan los pixeles de referencia ubicados en el límite vertical, o almacenados, en refV, para derivar los pixeles de predicción del bloque de predicción.
En el Paso 904, se determina si frac no es cero. Si frac no es cero, el flujo procede al Paso 905., Si frac es cero, el flujo procede al Paso. 906. El hecho de que frac sea igual a cero sugiere que un pixel de predicción del bloque de predicción puede copiarse directamente de un pixel de referencia del límite horizontal. El hecho de que frac no sea cero sugiere que la dirección de predicción interseca el límite horizontal en una posición que no es un número entero y se necesita una interpolación de más de ún pixel de referencia para derivar un pixel de predicción del bloque de predicción.
En el Paso 905, un contador denominado "col" se coloca en cero ("0"). El contador col se utiliza para remitir a un pixel de referencia en refH. En el Paso 907, se recuperan dos pixeles de referencia identificados por "int + col + 1" e "int + col + 2" de refH. Se realiza un promedio ponderado de estos dos pixeles de referencia o se los interpola con frac para derivar un pixel de predicción v. Específicamente, un pixel de referencia en refH identificado por "int + col + 1" se multiplica por "size - frac" y se almacena en un parámetro a. Un pixel de referencia en refH identificado por "int + col + 2 se multiplica por "frac" y se almacena en un parámetro b. Luego se suman los parámetros a y b, y se dividen por size, es decir, (size - frac) + frac. La división por size puede reemplazarse con desplazamiento a la derecha por log2_size . El pixel de predicción derivado v se almacena en una matriz de áreas de la memoria denominada "pred" (predicción) , que representa un bloque de predicción para el bloque objetivo en una dirección de predicción en particular. Cada área de la memoria de pred se identifica con los parámetros row y col. Luego, col aumenta en 1 en el Paso 908 y se compara con size en el Paso 909. Mientras col sea menor que size, los Pasos 907 y 908 se repiten.! Cuando col pasa a ser igual a size, el flujo procede al Paso 920.
Si se determina que frac es cero en el Paso 904, el contador col se coloca en cero en el Paso 906. En el Paso 910, el pixel de predicción v se copia directamente de refH (int + col + 1) y luego se almacena en el área correspondiente de la memoria en pred. col se aumenta luego en 1 en el Paso 911 y se compara con size en el Paso 912. Mientras col sea menor que size, los Pasos 910 y 911 se repiten. Cuando col pasa a ser igual a size, el flujo procede al Paso 920.
Volviendo al Paso 903, un valor de angle menor de cero requiere pixeles de referencia de reíV para derivar los pixeles de predicción del bloque de predicción., El contador col se coloca en cero en el Paso 913. Luego se determina en el Paso 914 si "int + col + 1" es menor de cero.; El hecho de que "int + col + 1" sea igual a cero o mayor sugiere que solo se puede seguir dependiendo de los pixeles de referencia almacenados en refH para derivar los pixeles de predicción del bloque de predicción, y el flujo procede al .Paso 915. El proceso realizado en el Paso 915 es similar al del Paso 907, y no repetiremos aquí su descripción. Luego, col se aumenta en 1 en el Paso 916 y se compara con size en el Paso 917. Mientras col sea menor que size, los Pasos 914, 915 y 916 se repiten. Cuando col pasa a ser igual a size, el flujo procede al Paso 920.
Si se determina que "int + col + 1" es menor que cero en el Paso 914, se necesitan los pixeles de referencia almacenados en refV para derivar los pixeles de predicción del bloque de predicción. En el Paso 918, se determina primero la posición de una intersección entre el limite vertical y una dirección de predicción. En el Paso 918, la posición es representada por pos2. Debe tenerse en cuenta que en el Paso 902, pos, es decir, la posición de una intersección entre el limite horizontal y una dirección de predicción, está determinado por "angle ? (row + 1)". Dado que angle representa una relación de diferencias horizontales y verticales, se calcula "angle'1 ? (col + 1)", en lugar de "angle ? (row + 1) ", para determinar la posición de una intersección entre el límite vertical y una dirección de predicción. Como se supuso anteriormente, angle se encuentra dentro del rango de -size a size (-size = angle = size) . Por lo tanto, la relación entre angle y size está definida por: Entonces, angle'1 está definido por: size size2 angle'1 =— o — : a angle Como tal, pos2 se determina en el Paso 918 con el cuadrado de size multiplicado por col + 1 y luego se divide por el valor absoluto de angle, de la siguiente manera: pos2=size 2 x (col +1) . \angle\ Al igual que pos , pos2 tiene un número | fraccionario en una representación de punto fijo formada por una parte entera y una parte fraccionaria. La parte fraccionaria consta de la cantidad de dígitos binarios determinada por log2_size .
La parte entera de pos2 está almacenada en un parámetro int2 , y la parte fraccionaria de pos2 está almacenada en un parámetro frac2. En el Paso 919, se recuperan dos pixeles de referencia identificados por "int2 + row + 1" e "int2 + row + 2" de refV. Se realiza un promedio ponderado de estos dos pixeles de referencia o se los interpola con frac2 para derivar un pixel de predicción v. Específicamente, se multiplica un pixel de referencia de refV (int2, + row + 1) por "size - frac2" y se lo almacena en un parámetro a. Se multiplica un pixel de referencia de refV (int2, + row + 2) i por "frac2" y se lo almacena en un parámetro b. Los parámetros a y b luego se suman y se dividen po'r size o se desplazan a la derecha por log2_size . El pixel de predicción derivado v se almacena en el área correspondiente de la memoria de pred. Los Pasos 914, 918, 919 y 916 se repiten hasta que col pasa a ser igual a size en el Paso 917.
En el Paso 920, row aumenta en 1. Luego, se determina en el Paso 921 si row es menor que size. Mientras row sea menor que size, los pasos a partir del Paso 902 se repiten para derivar un pixel de predicción del bloque de predicción. Este flujo termina cuando row pasa a ser igual a size en el Paso 921.
Como se mencionó anteriormente, un aumento en la cantidad de bloques de predicción candidatos contribuye a mejorar la eficiencia de la codificación, mientras que un aumento en la cantidad de bloques de predicción candidatos provoca un aumento en la carga de trabajo computacional. Por lo tanto, a fin de aumentar la cantidad de: bloques de predicción candidatos y mejorar de esta manera la eficiencia de la codificación, debe revisarse el proceso de generación de un bloque de predicción candidato para lograr una mayor eficiencia del proceso. En la revisión del proceso que se muestra en la FIG. 9, pueden identificarse dos cuellos de botella computacionales . El primer cuello de botella computacional es la operación de comparación y bifurcación del Paso 914, que se repite dentro del bucle. El segundo cuello de botella computacional es la operación de división del Paso 918, que también se repite dentro del bucle.
Actualmente, la instrucción única, múltiples datos (SIMD) está disponible para una computación eficiente. La arquitectura SIMD permite a las computadoras con múltiples elementos de procesamiento realizar la misma operación sobre múltiples datos en forma simultánea. Sin embargo, las arquitecturas SIMD típicas no son compatibles con la implementación de división y computación/bifurcación en un bucle y, por lo tanto, no pueden utilizarse para implementar el proceso que se muestra en la FIG. 9 debido a la inclusión de los Pasos 914 y 918 en el bucle, aunque los bucles que comienzan desde los Pasos 907 y 910 son lo suficientemente sólidos como para implementarse con la arquitectura SIMD. Por lo tanto, constituye un propósito de la presente invención la remoción de los cuellos de botella computacionales del proceso que se muestra en la FIG. 9 y la provisión de intrapredicción de baja complejidad, que permite a las arquitecturas SIMD típicas implementar procesamientos paralelos en todas las direcciones de predicción que se muestran en la FIG. 8. · ¡ La FIG. 10 es un diagrama de flujo que muestra el proceso de intrapredicción de baja complejidad de acuerdo con una aplicación de la presente invención, que está diseñado para reemplazar el proceso de la FIG. 9 en la implementación del proceso en el Paso 504 de la FIG. 5. En la FIG. 10, los mismos pasos de proceso que se realizan en la FIG. 9 son identificados por los mismos números de pasos que se utilizan en la FIG. 9, como los Pasos 900, 901, 902, 904, 905, 906, 907, 908, 909, 910, 911, 912, 920 y 921. La descripción de estos pasos comunes no se repite en el presente párrafo. Los Pasos 1000 y 100L son pasos propios del proceso de la FIG. 10. Como resulta evidente de la comparación cori el proceso que se muestra en la FIG. 9, el proceso de la FIG. 10 elimina el paso de comparación del Paso 903 y todos los pasos bifurcados hacia la. izquierda desde el Paso 903, que se realizan cuando angle es menor de cero, con ,1o cual se eliminan los cuellos de botella computacionales de los Pasos 914 y 918.
En los Pasos 1000 y 1001 agregados, se determina si angle es igual a -l o mayor. Cuando angle es igual a -l o mayor, los -pixeles de referencia ubicados en; el límite horizontal son suficientes para generar un pixel de predicción del bloque de predicción y no se necesitan los pixeles de referencia en el límite vertical. Por el contrario, si angle es menor de -1, se necesitan los pixeles de referencia en el límite vertical para generar un pixel de predicción del bloque de predicción. En el Paso 1001, los pixeles de referencia almacenados en refH se extienden en dirección negativa y utilizan, al menos, algunos de los pixeles almacenados en refV. Las FIGS. 11A y 11B son representaciones esquemáticas que muestran la extensión de refH realizada en el Paso 1001. En la FIG. 11A, los pixeles de referencia 1102 almacenados en refH provienen del límite horizontal ubicado por encima del bloque objetivo 1101. Los pixeles de referencia 1103 almacenados en refV provienen del límite vertical ubicado hacia la izquierda , del bloque objetivo 1101. Como se muestra en la FIG. 11B, después del Paso 1001 de la FIG. 10, algunos de los pixeles de referencia en refV son copiados en refH, y refH tiené una parte extendida 1104 que se extiende en dirección negativa.
La FIG. 12 es un diagrama de flujo ! que muestra detalles del proceso realizado en el Paso 1001.: En el Paso 1201, el contador col se coloca en -1. col se utiliza para identificar una dirección de la parte extendida de refH. En el Paso 1202, un pixel de referencia en refV que debe copiarse en la parte extendida de refH es identificado por: size x col angle La división en la ecuación precedente es una división de números enteros y la ecuación arroja un número entero. La ecuación funciona de manera similar al proceso del Paso 918 que se muestra en la FIG. 9. En el Paso 918, un valor entero de pos2 se calcula por: (size 2 * (col + 1)) » \ogl_size. angle Debe tenerse en cuenta que el desplazamiento hacia la derecha por log2_size es equivalente a la división por size.
En el Paso 1203, col se disminuye en 1. Luego se determina en el Paso 1204 si col es igual a angle. Si col no es igual a angle, el flujo regresa al Paso 1202. Los Pasos 1202 y 1203 se repiten hasta que col sea igual a angle. Por lo tanto, los pixeles de referencia se leen desde refV en orden ascendente o de arriba hacia abajo del límite vertical y se copian también en refH en orden descendente p de derecha a izquierda del límite horizontal. Además, nó todos los pixeles de referencia en refV son copiados en refH. Solo los pixeles de referencia ubicados dentro del rango desde arriba hasta la intersección . de una dirección de predicción son copiados desde refV en refH.
Volviendo, a la FIG. 10, los pasos del proceso que comienzan en el Paso 902 son copiados de la FIG. 9 e incluyen los pasos para generar pixeles de predicción bifurcados hacia la derecha desde paso de comparación del Paso 903 en la FIG. 9. Debe tenerse en cuenta, sin embargo, que los pasos en la FIG. 10 para generar pixeles de predicción utilizan refH extendido (una suma de partes 1102 + 1104 en la FIG. 11B) , mientras que los pasos correspondientes en la FIG. 9 utilizan refH original (parte 1102 en la FIG. 10A) . Dado que refH se extiende en la dirección negativa, no se necesita una operación de intrapredicción por separado diseñada específicamente para utilizar pixeles de referencia almacenados en refV, como una bifurcación hacia la izquierda desde el Paso 903 en la FIG. 9, independientemente del signo de angle.
La FIG. 13 es un diagrama de flujo que muestra otra aplicación del proceso para extender refH, utilizando pixeles de referencia en refV. El proceso que se muestra en las FIGS . 11 y 12 elimina los pasos del cuello de botella de los Pasos 914 y 918 que se muestran en la FIG. 9 y, por lo tanto, se espera que mejore la eficiencia del proceso de intrapredicción. El proceso que se muestra en la FIG. 13 elimina la operación de división realizada en el Paso 1202 de la FIG. 12 desde el bucle para copiar pixeles de referencia desde refV en refH. Al eliminar la operación de' división del bucle, se espera que el proceso que se muestra en la FIG. 13 mejore aún más la eficiencia del proceso de intrapredicción.
El proceso que se muestra en la FIG. 13 reemplaza el Paso 1202 de la FIG. 12 por los Pasos 1301 y 1302. El Paso 1302 se encuentra dentro del bucle para copiar pixeles de referencia desde refV en refH, mientras que el Paso 1301 está fuera del bucle. El Paso 1301 introduce un nuevo parámetro denominado "InvAngle" . InvAngle se define por: size 256 , angle La multiplicación por 256 es equivalente al desplazamiento hacia la izquierda por 8 y asegura que cada! porción que resulte de la operación de "size/'angle" tenga en cuenta el cálculo de la identificación de un pixel de referencia en refV. En el Paso 1302, la dirección de un pixel de referencia en refV que debe copiarse en la parte extendida de refH es identificado por: col x InvAngle » 8.· El resultado de "col ? InvAngle" se desplaza hacia la derecha por 8 para deshacer la operación de desplazamiento hacia la izquierda realizada en el Paso 1301. Debe tenerse en cuenta que la operación de desplazamiento hacia la derecha en el Paso 1302 funciona para redondear hacia abajo el resultado de "col * InvAngle" . Para redondear hacia el número entero más próximo, puede sumarse un offset de redondeo de 128 al resultado de "col x InvAngle" antes de realizar la operación de desplazamiento hacia la derecha. Debe tenerse en cuenta que el número "256" es solo un ejemplo y que el Paso 1301 puede adoptar otro número de offset, preferentemente un número entero que es una potencia de 2, siempre y cuando el número sea lo suficientemente grande como para preservar todas las partes que resulten de la operación de "size/angle" . Por ejemplo, el número puede ser 64 en el Paso 1301, en lugar de 256, y el número de los desplazamientos ¡ hacia la derecha es 6 en el Paso 1302 en lugar jde 8. Si se adopta el número 64, el offset de redondeo debería ser 32.
El cálculo realizado en el Paso ¡ 1301 puede reemplazarse con una operación de búsqueda para reducir aún más la carga de trabajo computacional . En otras palabras, se prepara una tabla de búsqueda que almacena valores de InvAngle en relación con los valores de angle. La¡ abla 1 que se presenta a continuación es un ejemplo de una tabla de búsqueda para el Paso 1301: Tabla 1 Se asume que en la tabla anterior, size es 8, y angle toma valores enteros del 1 al 8. Sin embargo, debe tenerse en cuenta que size no está limitado a 8 y puede tomar otro valor, como 4 y 16. Además, angle podría ser un número fraccionario en una representación de punto fijo, según se definió anteriormente.
Cuando se copia un pixel de referencia de rejV a refH en el Paso 1202 de la FIG. 12 o en el Paso 1302 de la FIG. 13, el pixel de referencia puede atravesar un filtro de paso bajo para reducir el aliasing del bloque de( predicción. La potencia del filtro de paso bajo puede variar de acuerdo con el valor de angle. Por ejemplo, cuando angle es igual a -size, puede aplicarse un filtro de paso bajo débil, y cuando angle es igual a -2, puede aplicarse un filtro de paso bajo fuerte .
Como se explicó anteriormente, no todos' los pixeles de referencia de refV se copian a refH. Dado que no se copian todos los pixeles de referencia de refV, se pierde parte de la información cuando se copian los pixeles. Para mitigar la pérdida de información, puede duplicarse la resolución de los pixeles de referencia de refH y refV, de modo que refH y refV contengan no solo pixeles de bloques codificados y reconstruidos previamente, sino también un pixél entre dos pixeles reconstruidos adyacentes que sea generado por la interpolación de dos pixeles adyacentes . Se puede promediar simplemente dos pixeles adyacentes para generar un pixel de interpolación. El proceso de interpolación puede realizarse cuando se leen los pixeles de referencia en el Paso 900 de la FIG. 9. Cuando se duplica la resolución de los pixeles en refH y refVr deben escalarse las identificaciones de las direcciones de los pixeles de referencia almacenadas en refH y refV, como las que se realizan en los Pasos 907, 910, 915 y 919 de la FIG. 9 y en el Paso 1001 de la FIG . 10. Por ejemplo, "int + col + 1", que se realiza en los Pasos 907, 910 y 915, debe cambiarse a "int + 2*col + 2". "int + col + 2", que se realiza en los Pasos 907, 910 y 915, debe cambiarse a "int + 2*col + 3". "int2 + row + 1" e "int2 + row + 2", que se realizan en el Paso 919, deben cambiarse a "int2 + 2xrow + 2" e "int2 + 2xrow + 3", respectivamente.
En otra aplicación, el proceso del Pasó 1202 de la FIG. 12 puede cambiarse simplemente a "refH [col]^refV [-col] " para simplificar aún más el proceso de copiado. A pesar de que degrada la precisión de la predicción, esta aplicación proporciona el grado de complejidad más bajo a la operación de intrapredicción.
La FIG. 11B muestra la parte extendida 1104 que se agrega a refH. La parte extendida 1104 no necesita formarse con pixeles de referencia de refV. La parte extendida 1104 puede formarse con pixeles de un área del bloque ; reconstruido previamente, que se corresponda espacialmente con la ubicación de la parte extendida 1104. En la FIG. 11B, dado que se extendió en la dirección negativa, refH extendida (partes 1102 y 1104) abarca de -size + 1 hasta 2*size. El rango de refH extendida puede recuadrarse de modo que abarque de 0 a 3*size - 1 sumando el offset adecuado cuando se remite a pixeles de referencia en refH extendida. Lo. mismo se aplica cuando se recuadra el rango de refV.
En otra aplicación, puede elegirse libremente el límite del rango de angle. En las aplicaciones anteriores, se asume que angle toma un valor dentro de un rango de -size a size (-size = angle = size) . En otras palabras, en las aplicaciones anteriores, los límites del rango de angle se definen con el tamaño del bloque objetivo. Debe tenerse en cuenta que los límites del rango de angle pueden definirse independientemente del tamaño del bloque objetivo, aunque de todos modos es preferible que el limite del rango se defina con un número entero que sea una potencia de 2 , a fin de qué log2_rangelimit sea un número entero positivo y que la ecuación "rangelimit = 1 « log2_rangelimit" sea verdadera. Al elegir un número grande adecuado para rangelimit , pueden establecerse una gran cantidad de direcciones de predicción y representarse mediante valores de angle a intervalos angulares suficientemente amplios.
Si el límite del rango de angle se define independientemente del tamaño del bloque objetivo, size, que aparece en las FIGS. 9 y 10, debe reemplazarse con rangelimit y log2_size debe reemplazarse con log2_rangelimit , excepto para los Pasos 909, 912, 917 y 921. La comparación de "angle = -1" realizado en el. Pasó 1000 de la FIG. 10 ¡también debe remplazarse con "anglexsize/rangelimit >-l" o con "angle*size = - rangelimit" . Además, size, que aparece en los Pasos 1202 y 1301 en las FIGS. 12 y 13, debe reemplazarse con rangelimit y la comparación de "col = angle?" realizada en el Paso 1204 debe reemplazarse con "col = anglexsize/rangelimit?" .
Si rangelimit se introduce como un limite del rango de angle, la Tabla 1 (anteriormente proporcionada) puede cambiarse de la siguiente manera: Tabla 2 En la Tabla 2, rañgelimit se coloca en 32. Angle* es igual a la aproximación de un número entero a "rañgelimit x tan (p x angle/'8)", donde angle = 1, 2, 3, 4, 5, 6, 7 y 8. InvAngle es igual a 256 x rangelimit/angle* . Los valores que figuran en la Tabla 2 son todos números enteros que se derivan redondeando hacia arriba. En lugar de redondear hacia arriba, los números pueden redondearse hacia abajo. En la Tabla 3 que se proporciona a continuación, InvAngle es igual a 32 x rangelimit/angle* . Dado que se utiliza "32" en lugar de "256" , la exactitud de la predicción es necesariamente menor que la de la Tabla 2.
Tabla 3 La FIG. 14 es un diagrama de flujo que muestra otra aplicación que simplifica aún más el proceso qué se muestra en la FIG. 10. El proceso que se muestra en la; FIG. 10 de copiar pixeles de referencia de refv a refH se realiza antes de que el flujo ingrese en el bucle de predicción principal, mientras que el proceso de copia que se muestra en la FIG. 14 se realiza dentro del bucle de predicción principal. Además, el proceso que se muestra en la FIG. 14 elimina la variable InvAngle. Los Pasos 900, 902 y 921 que se muestran en la FIG. 14 pertenecen a los pasos correspondientes de la, FIG. 10.
En el Paso 1401, se inicializa un contador lastlnt (último entero) en -1. lastlnt representa el índice del último pixel que se agregó a refH. En el Paso | 902, pos se calcula mediante angle * (row + 1) . Como se explicó anteriormente, pos identifica la posición de una intersección entre los límites y la dirección de predicción representada por angle. En el contexto de la FIG. 9, el Paso 902 arroja pos, que identifica la posición de una intersección entre el límite horizontal y la "dirección de predicción representada por angle. Además, en el Paso 902, una parte entera de pos se almacena en int, y una parte fraccionaria de pos se almacena en un parámetro "frac". En el Paso 1402, se determina si int es menor que lastlnt. Si int es menor que lastlnt, un pixel de referencia de refV identificado por roiv se copia en refH en una dirección identificada por "int + 1" . Él Paso 1404 consta de los Pasos 904, 905, 906, 907, 908, 909, 910, 911 y 912 que se muestran en las FIGS. 9 y 10, cuya descripción no se repite aquí. En el Paso 1405, int se copia a lastlnt. La operación de copiar int a lastint puede realizarse en el Paso 1403 en lugar del Paso 1405.
La operación de copiado del Paso 1403 hace que se copie el mismo pixel que se copió en los Pasos 1202 y 1302, donde se utiliza redondeo hacia abajo en estos pasos. Él Paso 1403 puede modificarse para redondear hacia el número entero más cercano utilizando en forma condicional "row + 1", en lugar de "row" en el Paso 1403 cuando la posición fraccionaria frac computada en el Paso 902 es mayor que offset, que está definido por rangelimit +¦ (angle » 1) . Debe tenerse en cuenta que angle es -ve, y frac es +ve. Utilizar "row + 1" hace que se redondee hacia arriba. Para efectuar el aumento condicional de row en 1, el proceso realizado en el Paso 1403 se cambia a refH[int + 1] <- refV[row - ((offset -frac) >> 31)], suponiendo que en aritmética de 32 bits, el desplazamiento a la derecha de "offset - frac" da como resultado -1 cuando frac es mayor que offset y da como resultado 0 en caso de lo contrario. Por lo tanto, el identificador de la dirección "row - ((offset - frac)» 31)" se convierte en "row + 1" cuando frac es mayor que offset y se convierte en "row" en caso de lo contrario. Si offset se coloca en rangelimit , "offset - frac" será siempre positivo y, por lo tanto, no habrá redondeo.
A continuación se presenta el código fuente, desarrollado en el lenguaje de programación C++, que implementa el proceso que se muestra en la FIG. 14. El código fuente fue modificado a partir de la función TComPrediction: :xPredIntraAng que se encuentra en el archivo TComPrediction. cpp que es parte del software TMuC 0.7 desarrollado por JCT-VC, que está disponible en http : //heve . kw.bbc . co.uk/svn/j ctvc . a!24/tags/0.7 , // Función para derivar las intrapredicciones angulares simplificadas Void TComPrediction: :xPredIntraAng ( Int* pSrc, Int iSrcStride, Pel*& rpDst, Int iDstStride, Ulnt iwidth, Ulnt iHeight, Ulnt uiDirMode, Bool bAbove, Bool bLeft ) { Int k,l; Int deltalnt, deltaFract, refMainlndex; Int intraPredAngle 0; Int absAng = 0; Int signAng = 0; Int blkSize = iWidth Bobl modeDC = false Bool modeVer = false Bool modeHor = false; Pel* pDst rpDst; Asignar el índice de modo a la dirección de predicción y al ángulo principales if (uiDirMode == 0) modeDC = true; else if (uiDirMode < 18) modeVe = true else modeHor = true; intraPredftngle = modeVer ? uiDirMode - 9 : modeHor ? uiDirMode - 25 absAng = abs (intrapredAngle) ; ¦ signAng = intraPredAngle < 0 ? -1 : 1; / / Fijar desplazamientos de bits y escalar el parámetro del ángulo a size2 Int iAngTable[9) = ( 0, 2, 5, 9, 13, 17, 21, 26, 32|; absAng = iAngTable [absAng] intraPredftngle = signAng * absAng; / / Hacer la predicción DC if (modeDC) ( Pel dcval = predIntraGetPredValDC (pSrc, iSrcStride, iWidth, iHeight, bAbove, bLeft); for (k=0;k<blkSize;k++) { · for (l=0;l<blkSize;l++) ( pDst (k*iDstStride+l) = dcval; } } ) // Hacer predicciones angulares else { Peí trap Int *pSrcTL = pSrc - iSrcStride - 1; 1 Int iStepMain = (mode er) ? 1 : iSrcStride; if (intraPredAngle == 0) ( for (k=0; k<blkSize;k++) ( for (l=0;l<blkSize;l++) < pDst tk*iDstStride+l] = pSrcTLf (1+1) * iStepMain] ; ¦ ) } } elsé ( Int iStepSide = (modeVer) ? iSrcStridg 1; ; int lastDeltalnt = -1; ! Int ioffset = 32 + (intraPredAngle » l); // permite el redondeo a la referencia del lado más cercano : // Int ¡Offset )ffset = 32; // sin redondeo. ; Peí ref [2*MAX_CU_SIZE] ; Peí* refMain =¦ ref + ((intraPredAngle < 0) ? blksize : 0) ; if (intraPredAngle > 0) ( for (k = 0; ,k < 2*blkSize; k++) : refMain[k] = pSrcTLf (k+1) * iStepMain] ; } I else { for (k = -i; k < blksize; k// el resto se copia después, en el Paso 1403, según y cuando sea necesario refMain[k] = pSrcTLI (k+1) * iStepMain] ; } for (k = 0; k < blkSize k++) { Int deltaPos = (k+l) * intraPredAngle; deltalnC = deltaPos » 5; deltaFract = deltaPos S (32 - 1); if (deltalnt < lastDeltali// Paso ' step 1402 lastDeltalnt = deltalnt; refMain[deltaInt] = pSrcTL[ (k- ( (iOffset-deltaFract)»31) ) *iStepSide] / / Paso ' step 1403 // Paso ' step 1404 if (deltaFract) { / / Hacer filtración lineal for (l=0 l<blkSize;l++) { refMainlndex = l+deltalnt pDst(k*iDstStride+l] = (Peí) ( ( (32-deltaFract) * refMain [refMainlndex] + deltaFract * refMain [refMainlndex+1] + 16) » 5 ); } else I / / Simplemente copiar las muestras enteras for (l=0;l«blkSize l++) ( pDst [k*iDstStride+l] = refMain [l+deltalnt] ; } } } } / / Girar el bloque si este es el modo horizontal if (modeHor) ( for (k=0;k<blkSize-l;k++) ( for (l=k+l;l<blkSize;H-+) ( tmp = pDst [k*iDstStride+l] ; pDst (k*iDstStride+l] = pDst (l*iDstStride+k) pDst(l*iDstStride+k) = tmp; Si bien no . cabe duda . de qúe muchas alteraciones y modificaciones de la presente invención se volverán evidentes para una persona que tenga un grado de habilidad común en la especialidad después de haber leído la descripción precedente, debe comprenderse que no se pretende que ninguna de las aplicaciones particulares descritas y mostradas a modo de ilustración se: considere limitante. Por lo tanto, las referencias a detalles de diversas aplicaciones no tienen como fin limitar el alcance de las reivindicaciones, las cuales de por sí recitan solo aquellas características que se consideran esenciales para la invención.

Claims (14)

REIVINDICACIONES
1. Un método de codificación de video que consiste en pasos ejecutables por una computadora que son ejecutados por el procesador de un codificador de video para implementar: la recuperación de, al menos, algunos de los pixeles de una matriz de pixeles del límite horizontal o de una matriz de pixeles del límite vertical; el agregado de los pixeles recuperados a los pixeles del otro límite para extender la matriz de estos y la realización de una intrapredicción en función, únicamente, de la matriz extendida de pixeles del límite.
2. El método de acuerdo con la Reivindicación 1, donde la recuperación de, al menos, algunos de los pixeles de una matriz de pixeles del límite horizontal o de una matriz de pixeles del límite vertical consiste en recuperar, al menos, algunos de los pixeles del límite vertical, y el agregado de los pixeles recuperados a los. pixeles del otro: límite para extender la matriz de estos consiste en agregar los pixeles recuperados a los pixeles del límite horizontal para extender la matriz de estos.
3. El método de acuerdo con la Reivindicación 2, donde la recuperación de, al menos, algunos de los pixeles del límite vertical consiste en identificar, al menos, algunos pixeles del límite vertical, utilizando un identificador de pixeles verticales que se expresa de la siguiente manera: size x col [ ] , Angle donde size representa el tamaño de un bloque objetivo que debe predecirse, angle representa una dirección de predicción y col es un contador que disminuye de a 1 desde -1 hasta angle, y el agregado de los pixeles recuperados a los pixeles del límite horizontal consiste en agregar un pixel identificado por el identificador de pixeles verticales a los pixeles horizontales en una ubicación identificada por un identificador de pixeles horizontales [col] .
4. El método de acuerdo con la Reivindicación 2, donde la recuperación de, al menos, algunos de los pixeles del límite vertical consiste en: j calcular InvAngle a partir de N x size, Angle donde size representa el tamaño de un bloque objetivo que debe predecirse, angle representa una dirección de predicción y N es un número entero que es una potencia de 2; e identificar, al menos, algunos pixeles del límite vertical, utilizando un identificador de pixeles verticales que se expresa como [col * InvAngle » log2 N] , donde col es un contador que disminuye de a 1 desde -1 hasta angle, y el agregado de los pixeles recuperados a los pixeles del límite horizontal consiste en agregar un pixel identificado por el identificador de pixeles verticales a los pixeles horizontales en una ubicación identificada por un identificador de pixeles horizontales [col] .
5. El método de acuerdo con la Reivindicación t 2 , donde la recuperación de, al menos, algunos de los pixeleá del límite vertical consiste en: obtener InvAngle de una tabla de búsqueda que enumera los valores de InvAngle en relación con los : valores de angle, donde angle representa una dirección de predicción; e identificar, al menos, algunos pixeles del límite vertical, utilizando un identificador de pixeles verticales que se expresa como [col * InvAngle] , donde coi es un contador que disminuye de a 1 desde -1 hasta angle, y el agregado de los pixeles recuperados a los! pixeles del límite horizontal consiste en agregar un pixel identificado por el identificador de pixeles verticales a los pixeles horizontales en una ubicación identificada por un identificador de pixeles horizontales [col] .
6. El método de acuerdo con la Reivindicación 2, donde la recuperación de, al menos, algunos pixeles del límite vertical consiste en identificar un pixel del límite vertical, utilizando un identificador de pixeles verticales [row] , donde row es un contador que aumenta de a 1 desde 0 hasta size, y size representa el tamaño de un bloque objetivo que debe predecirse, y el agregado de los pixeles recuperados a los pixeles del límite horizontal consiste en agregar un pixel identificado por el identificador de pixeles verticales a los pixeles horizontales en una ubicación identificada por un identificador de pixeles horizontales que se expresa como [int + 1] , donde int es un número entero que. representa la posición de un pixel que interseca con una dirección de predicción. ;
7. Un método de decodificación de video que. consiste en pasos ejecutables por una computadora que son ejecutados por el procesador de un decodificador de video para implementar: la recuperación de, al menos, algunos de los pixeles de una matriz de pixeles del límite horizontal o de una matriz de pixeles del límite vertical; el agregado de los pixeles recuperados a los pixeles del otro límite para extender la matriz de estos; y la realización de una intrapredicción en función, únicamente, de la matriz extendida de pixeles del límite.
8. El método de acuerdo con la Reivindicación 7, donde la recuperación de, al menos, algunos de los pixeles de una matriz de pixeles del límite horizontal o de una matriz de pixeles del límite vertical consiste en recuperar, al menos, algunos de los pixeles del límite vertical, y el: agregado de los pixeles recuperados a los pixeles del otro ' límite para extender la matriz de estos consiste en agregar ; los pixeles recuperados a los pixeles del límite horizontal para extender la matriz de estos.
9. El método de acuerdo con la Reivindicación 8 , donde la recuperación de, al menos, algunos de los pixeles del límite vertical consiste en identificar, al menos, algunos pixeles del límite vertical, utilizando un identificador de pixeles verticales que se expresa de la siguiente manera: size x col l 1 , angle donde size representa el tamaño de un bloque objetivo que debe predecirse, angle representa una dirección de predicción y col es un contador que disminuye de a 1 desde -1 hasta angle, y el agregado de los pixeles recuperados a los pixeles del límite horizontal consiste en agregar un pixel identificado por el identificador de pixeles verticales a los pixeles horizontales en una ubicación identificada por un identificador de pixeles horizontales [col] .
10. El método de acuerdo con la Reivindicación 2, donde la recuperación de, al menos, algunos de los pixeles del límite vertical consiste en: calcular InvAngle a partir de N x size anglé donde size representa el tamaño de' un bloque objetivo que debe predecirse, angle representa una dirección de predicción y N es un número entero que es una potencia de 2; e identificar, al menos, algunos pixeles del límite vertical, utilizando un identificador de pixeles verticales que se expresa como [col x InvAngle » log2 N] , donde col es un contador que disminuye de a 1 desde -1 hasta angle, y el agregado de los pixeles recuperados a los pixeles del límite horizontal consiste en agregar un pixel identificado por el identificador de pixeles verticales a los pixeles horizontales en una ubicación identificada por un identificador de pixeles horizontales [col] .
11. El método de acuerdo con la Reivindicación, 8, donde la recuperación de, al menos, algunos de los pixeles del límite vertical consiste en: ' obtener InvAngle de una tabla de búsqueda ique enumera los valores de InvAngle en relación con los i valores de angle, donde angle representa una dirección de predicción; e identificar, al menos, algunos pixeles i del límite vertical, utilizando un identificador de pixeles verticales que se expresa como [col *, InvAngle] , donde col es un contador que disminuye de a 1 desde -1 hasta angle, y el agregado de los pixeles recuperados a los pixeles del límite horizontal consiste en agregar un pixel identificado por el identificador de pixeles verticales a los pixeles horizontales en una ubicación identificada por un identificador de pixeles horizontales [col] .
12. El método de acuerdo con la Reivindicación 8 , donde la recuperación de, al menos, algunos pixeles del límite vertical consiste en identificar un pixel del límite vertical, utilizando un identificador de pixeles verticales [row] , donde row es un contador que aumenta de a 1 desde 0 hasta size, y size representa el tamaño de un bloque objetivo que debe predecirse, y el agregado de los pixeles recuperados a los, pixeles del límite horizontal consiste en agregar un pixel identificado por el identificador de pixeles verticales a :los pixeles horizontales en una ubicación identificada por un identificador de pixeles horizontales que se expresa como [int + 1] , donde int es un número entero que representa la posición de un pixel que interseca con una dirección de predicción.
13. Un codificador de video que consiste en el procesador de un sistema informático y una memoria que almacena programas ejecutables por el procesador para: recuperar, al menos, algunos de los pixeles de una matriz de pixeles del límite horizontal o de uha matriz de pixeles del límite vertical; agregar los pixeles recuperados a los pixeles del otro límite para extender la matriz de estos; y realizar una intrapredicción en función, únicamente, de la matriz extendida de pixeles del límite.
14. Un decodificador de video que consiste en el procesador de un sistema informático y una memoria que almacena programas ejecutables por el procesador para : recuperar, al menos, algunos de los pixeles de una matriz de pixeles del límite horizontal o de una matriz de pixeles del límite vertical; agregar los pixeles recuperados a los pixeles del otro límite para extender la matriz de estos y realizar una intrapredicción en función, únicamente, de la matriz extendida de pixeles del límite.
MX2013000372A 2010-07-14 2011-07-14 Intraprediccion de baja comlejidad para la codificacion de video. MX2013000372A (es)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US36432210P 2010-07-14 2010-07-14
US38854110P 2010-09-30 2010-09-30
PCT/US2011/044014 WO2012009540A1 (en) 2010-07-14 2011-07-14 Low-complexity intra prediction for video coding

Publications (1)

Publication Number Publication Date
MX2013000372A true MX2013000372A (es) 2013-02-15

Family

ID=45469801

Family Applications (5)

Application Number Title Priority Date Filing Date
MX2015002858A MX344987B (es) 2010-07-14 2011-07-14 Intraprediccion de baja complejidad para la codificacion de video.
MX2013000372A MX2013000372A (es) 2010-07-14 2011-07-14 Intraprediccion de baja comlejidad para la codificacion de video.
MX2017000542A MX361484B (es) 2010-07-14 2011-07-14 Intraprediccion de baja complejidad para la codificacion de video.
MX2018014741A MX367865B (es) 2010-07-14 2011-07-14 Intrapredicción de baja complejidad para la codificación de video.
MX2019010417A MX2019010417A (es) 2010-07-14 2013-01-10 Intraprediccion de baja complejidad para la codificacion de video.

Family Applications Before (1)

Application Number Title Priority Date Filing Date
MX2015002858A MX344987B (es) 2010-07-14 2011-07-14 Intraprediccion de baja complejidad para la codificacion de video.

Family Applications After (3)

Application Number Title Priority Date Filing Date
MX2017000542A MX361484B (es) 2010-07-14 2011-07-14 Intraprediccion de baja complejidad para la codificacion de video.
MX2018014741A MX367865B (es) 2010-07-14 2011-07-14 Intrapredicción de baja complejidad para la codificación de video.
MX2019010417A MX2019010417A (es) 2010-07-14 2013-01-10 Intraprediccion de baja complejidad para la codificacion de video.

Country Status (16)

Country Link
US (6) US9225986B2 (es)
EP (7) EP3232666B1 (es)
JP (8) JP5687341B2 (es)
KR (7) KR101835460B1 (es)
CN (4) CN105227960B (es)
AU (1) AU2011279139B2 (es)
BR (1) BR112013000963B1 (es)
CA (7) CA2934184C (es)
ES (7) ES2748100T3 (es)
HU (2) HUE053802T2 (es)
MX (5) MX344987B (es)
PL (7) PL3570545T3 (es)
PT (7) PT3522535T (es)
RU (8) RU2613725C1 (es)
SG (1) SG187065A1 (es)
WO (1) WO2012009540A1 (es)

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105227960B (zh) 2010-07-14 2018-06-05 株式会社Ntt都科摩 用于视频编码的低复杂度帧内预测
KR101530284B1 (ko) * 2010-07-16 2015-06-19 삼성전자주식회사 영상의 인트라 예측 부호화, 복호화 방법 및 장치
US9008175B2 (en) * 2010-10-01 2015-04-14 Qualcomm Incorporated Intra smoothing filter for video coding
KR20120140181A (ko) * 2011-06-20 2012-12-28 한국전자통신연구원 화면내 예측 블록 경계 필터링을 이용한 부호화/복호화 방법 및 그 장치
US10645398B2 (en) * 2011-10-25 2020-05-05 Texas Instruments Incorporated Sample-based angular intra-prediction in video coding
US8811760B2 (en) * 2011-10-25 2014-08-19 Mitsubishi Electric Research Laboratories, Inc. Coding images using intra prediction modes
US9344715B2 (en) 2011-11-07 2016-05-17 Futurewei Technologies, Inc. Angular table for improving intra prediction
WO2013181821A1 (en) * 2012-06-07 2013-12-12 Mediatek Singapore Pte. Ltd. Improved intra transform skip mode
KR101307257B1 (ko) * 2012-06-28 2013-09-12 숭실대학교산학협력단 영상의 인트라 예측 장치
TWI592011B (zh) * 2012-06-29 2017-07-11 Sony Corp Image processing device and method
US9729875B2 (en) * 2013-07-08 2017-08-08 Sony Corporation Palette coding mode
US20150016516A1 (en) * 2013-07-15 2015-01-15 Samsung Electronics Co., Ltd. Method for intra prediction improvements for oblique modes in video coding
BR112016008044A8 (pt) 2013-10-14 2020-03-17 Microsoft Technology Licensing Llc codificador de vídeo ou imagem, decodificador de vídeo ou imagem e meio legível por computador
WO2015054813A1 (en) 2013-10-14 2015-04-23 Microsoft Technology Licensing, Llc Encoder-side options for intra block copy prediction mode for video and image coding
EP3058739B1 (en) 2013-10-14 2019-08-07 Microsoft Technology Licensing, LLC Features of intra block copy prediction mode for video and image coding and decoding
US10390034B2 (en) 2014-01-03 2019-08-20 Microsoft Technology Licensing, Llc Innovations in block vector prediction and estimation of reconstructed sample values within an overlap area
KR102353787B1 (ko) 2014-01-03 2022-01-19 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 비디오 및 이미지 코딩/디코딩에서의 블록 벡터 예측
US11284103B2 (en) 2014-01-17 2022-03-22 Microsoft Technology Licensing, Llc Intra block copy prediction with asymmetric partitions and encoder-side search patterns, search ranges and approaches to partitioning
US10542274B2 (en) 2014-02-21 2020-01-21 Microsoft Technology Licensing, Llc Dictionary encoding and decoding of screen content
KR20160129075A (ko) 2014-03-04 2016-11-08 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 인트라 블록 카피 예측에서의 스킵 모드 및 블록 플립핑
KR102311815B1 (ko) 2014-06-19 2021-10-13 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 통합된 인트라 블록 카피 및 인터 예측 모드
US10812817B2 (en) 2014-09-30 2020-10-20 Microsoft Technology Licensing, Llc Rules for intra-picture prediction modes when wavefront parallel processing is enabled
US9591325B2 (en) 2015-01-27 2017-03-07 Microsoft Technology Licensing, Llc Special case handling for merged chroma blocks in intra block copy prediction mode
JP6122516B2 (ja) 2015-01-28 2017-04-26 財團法人工業技術研究院Industrial Technology Research Institute エンコーディング方法及びエンコーダ
JP6492847B2 (ja) * 2015-03-24 2019-04-03 日本電気株式会社 映像符号化システム、映像符号化回路および映像符号化方法
WO2016159631A1 (ko) * 2015-03-29 2016-10-06 엘지전자(주) 비디오 신호의 인코딩/디코딩 방법 및 장치
WO2016197314A1 (en) 2015-06-09 2016-12-15 Microsoft Technology Licensing, Llc Robust encoding/decoding of escape-coded pixels in palette mode
US10602138B2 (en) 2015-08-27 2020-03-24 Lg Electronics Inc. Method and device for chroma sample intra prediction in video coding system
CN106231340B (zh) * 2016-09-23 2019-08-27 优酷网络技术(北京)有限公司 一种基于hevc的帧内预测解码方法及装置
CN117041564A (zh) * 2016-11-29 2023-11-10 成均馆大学校产学协力团 影像编码/解码方法、装置以及对比特流进行存储的记录介质
EP3535972B1 (en) * 2016-12-23 2020-11-18 Huawei Technologies Co., Ltd. An intra-prediction apparatus for extending a set of predetermined directional intra-prediction modes
US10225578B2 (en) 2017-05-09 2019-03-05 Google Llc Intra-prediction edge filtering
US10992939B2 (en) 2017-10-23 2021-04-27 Google Llc Directional intra-prediction coding
US11172221B2 (en) * 2017-06-26 2021-11-09 Interdigital Madison Patent Holdings, Sas Method and apparatus for intra prediction with multiple weighted references
US10764587B2 (en) * 2017-06-30 2020-09-01 Qualcomm Incorporated Intra prediction in video coding
JP2019041165A (ja) * 2017-08-23 2019-03-14 富士通株式会社 画像符号化装置、画像復号装置、画像処理方法、及び画像処理プログラム
WO2019059107A1 (ja) * 2017-09-20 2019-03-28 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 符号化装置、復号装置、符号化方法及び復号方法
CN109587491B (zh) * 2017-09-28 2022-09-23 腾讯科技(深圳)有限公司 一种帧内预测方法、装置及存储介质
US20190167988A1 (en) 2017-12-04 2019-06-06 CyMedica Orthopedics, Inc. Patient therapy systems and methods
WO2019124205A1 (ja) * 2017-12-18 2019-06-27 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 符号化装置、復号装置、符号化方法及び復号方法
US10986349B2 (en) 2017-12-29 2021-04-20 Microsoft Technology Licensing, Llc Constraints on locations of reference blocks for intra block copy prediction
TWI730311B (zh) * 2018-03-29 2021-06-11 弗勞恩霍夫爾協會 用以選擇內預測模式以供填補之設備
WO2021034231A2 (en) * 2019-12-19 2021-02-25 Huawei Technologies Co., Ltd. Method and apparatus of position dependent prediction combination for oblique directional intra prediction
EP4074048A4 (en) * 2019-12-31 2023-03-08 Huawei Technologies Co., Ltd. METHOD AND DEVICE FOR INTRAPREDICTION
CN116071242B (zh) * 2023-03-17 2023-07-14 山东云海国创云计算装备产业创新中心有限公司 一种图像处理方法、系统、设备以及存储介质

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6298085B1 (en) * 1997-10-23 2001-10-02 Sony Corporation Source encoding using shuffling of data to provide robust error recovery in a burst error-environment
US7936825B2 (en) 2002-02-01 2011-05-03 Panasonic Corporation Moving image coding method and moving image decoding method
CN100574450C (zh) * 2002-02-01 2009-12-23 松下电器产业株式会社 动画图象编码方法和动画图象编码装置
US7170937B2 (en) * 2002-05-01 2007-01-30 Texas Instruments Incorporated Complexity-scalable intra-frame prediction technique
US7539714B2 (en) * 2003-06-30 2009-05-26 Intel Corporation Method, apparatus, and instruction for performing a sign operation that multiplies
EP1659803A4 (en) * 2003-08-19 2008-10-29 Matsushita Electric Ind Co Ltd METHOD FOR ENCODING AND DECODING A MOVING IMAGE
EP1558039A1 (en) * 2004-01-21 2005-07-27 Deutsche Thomson-Brandt Gmbh Method and apparatus for generating/evaluating prediction information in picture signal encoding/decoding
KR101000926B1 (ko) * 2004-03-11 2010-12-13 삼성전자주식회사 영상의 불연속성을 제거하기 위한 필터 및 필터링 방법
JP4542447B2 (ja) * 2005-02-18 2010-09-15 株式会社日立製作所 画像の符号化/復号化装置、符号化/復号化プログラム及び符号化/復号化方法
KR101204788B1 (ko) * 2004-06-03 2012-11-26 삼성전자주식회사 영상의 공간 예측 부호화 방법, 부호화 장치, 복호화 방법및 복호화 장치
CN1306824C (zh) * 2004-07-29 2007-03-21 联合信源数字音视频技术(北京)有限公司 图像边界像素扩展系统及其实现方法
US7778480B2 (en) * 2004-11-23 2010-08-17 Stmicroelectronics Asia Pacific Pte. Ltd. Block filtering system for reducing artifacts and method
KR100657919B1 (ko) * 2004-12-13 2006-12-14 삼성전자주식회사 화상 데이터의 공간상 예측 장치 및 방법과 그를 이용한부호화 장치 및 방법, 화상 데이터의 공간상 예측 보상장치 및 방법과 그를 이용한 복호화 장치 및 방법
JP2007214641A (ja) 2006-02-07 2007-08-23 Seiko Epson Corp 符号化装置、復号化装置、画像処理装置及び画像処理方法をコンピュータに実行させるためのプログラム
US20070274398A1 (en) * 2006-05-23 2007-11-29 Metta Technology, Inc. Parallelization of Video Decoding on Single-Instruction, Multiple-Data Processors
WO2008042127A2 (en) * 2006-09-29 2008-04-10 Thomson Licensing Geometric intra prediction
US7991236B2 (en) * 2006-10-16 2011-08-02 Nokia Corporation Discardable lower layer adaptations in scalable video coding
WO2008140656A2 (en) * 2007-04-03 2008-11-20 Gary Demos Flowfield motion compensation for video compression
JP5261376B2 (ja) * 2007-09-21 2013-08-14 パナソニック株式会社 画像符号化装置および画像復号化装置
EP2046053A1 (en) * 2007-10-05 2009-04-08 Thomson Licensing Method and device for adaptively quantizing parameters for image coding
JP4948435B2 (ja) 2008-01-28 2012-06-06 キヤノン株式会社 映像符号化装置及び映像符号化方法
KR20090095316A (ko) 2008-03-05 2009-09-09 삼성전자주식회사 영상 인트라 예측 방법 및 장치
CN101247525B (zh) * 2008-03-24 2010-06-02 北京邮电大学 一种提高图像帧内编码速率的方法
US8681875B2 (en) * 2008-11-25 2014-03-25 Stmicroelectronics Asia Pacific Pte., Ltd. Apparatus and method for coding block boundary detection using interpolated autocorrelation
JP5238523B2 (ja) * 2009-01-13 2013-07-17 株式会社日立国際電気 動画像符号化装置、動画像復号化装置、および、動画像復号化方法
JP2010251953A (ja) * 2009-04-14 2010-11-04 Sony Corp 画像符号化装置と画像符号化方法およびコンピュータ・プログラム
KR101510108B1 (ko) * 2009-08-17 2015-04-10 삼성전자주식회사 영상의 부호화 방법 및 장치, 그 복호화 방법 및 장치
CN105227960B (zh) 2010-07-14 2018-06-05 株式会社Ntt都科摩 用于视频编码的低复杂度帧内预测
CA2907572C (en) 2013-03-29 2019-06-11 JVC Kenwood Corporation Intra-prediction mode derivation for color signals, whereby the signals may have the same or different aspect ratios than corresponding brightness signals

Also Published As

Publication number Publication date
US20160057448A1 (en) 2016-02-25
CA3014131A1 (en) 2012-01-19
CA2804762A1 (en) 2012-01-19
EP2934009A1 (en) 2015-10-21
ES2748100T3 (es) 2020-03-13
JP2017005720A (ja) 2017-01-05
US10397608B2 (en) 2019-08-27
RU2613722C1 (ru) 2017-03-21
PT3232666T (pt) 2019-06-07
JP6828199B2 (ja) 2021-02-10
US10841613B2 (en) 2020-11-17
CN103004210B (zh) 2016-01-27
EP3226560B1 (en) 2019-09-04
AU2011279139A1 (en) 2013-01-24
KR20180075706A (ko) 2018-07-04
JP6484740B2 (ja) 2019-03-13
ES2605530T3 (es) 2017-03-14
CA2804762C (en) 2016-11-08
PT2934009T (pt) 2017-08-16
EP2594076B1 (en) 2017-03-22
US10841614B2 (en) 2020-11-17
KR20180073720A (ko) 2018-07-02
PT2934008T (pt) 2016-10-18
ES2621902T3 (es) 2017-07-05
CA3014052C (en) 2020-12-15
EP3232666B1 (en) 2019-05-01
EP3522535B1 (en) 2021-03-10
EP2934008A1 (en) 2015-10-21
ES2864048T3 (es) 2021-10-13
JP2018129851A (ja) 2018-08-16
US9942565B2 (en) 2018-04-10
EP3226560A1 (en) 2017-10-04
RU2710947C1 (ru) 2020-01-14
JP2020099085A (ja) 2020-06-25
PL3232666T3 (pl) 2019-08-30
US20190335201A1 (en) 2019-10-31
EP2934008B1 (en) 2016-09-14
MX367865B (es) 2019-09-05
EP2934009B1 (en) 2017-07-12
KR101878293B1 (ko) 2018-07-13
RU2013106296A (ru) 2014-10-20
KR101927283B1 (ko) 2019-03-12
ES2637446T3 (es) 2017-10-13
MX344987B (es) 2017-01-13
CN105120263A (zh) 2015-12-02
CN105120264B (zh) 2018-06-12
PT3522535T (pt) 2021-04-06
PL3522535T3 (pl) 2021-07-05
RU2658880C1 (ru) 2018-06-25
CA3014052A1 (en) 2012-01-19
AU2011279139B2 (en) 2016-02-04
US20130114713A1 (en) 2013-05-09
CA2934184C (en) 2018-09-25
EP3570545B1 (en) 2021-05-19
US20180184120A1 (en) 2018-06-28
PT3570545T (pt) 2021-06-15
US20160021392A1 (en) 2016-01-21
JP6169554B2 (ja) 2017-07-26
RU2687031C1 (ru) 2019-05-06
MX361484B (es) 2018-12-06
ES2729031T3 (es) 2019-10-29
US10116960B2 (en) 2018-10-30
JP6663520B2 (ja) 2020-03-11
KR20170141289A (ko) 2017-12-22
MX2019010417A (es) 2019-10-15
CN105227960B (zh) 2018-06-05
CA3096445A1 (en) 2012-01-19
CA3014042A1 (en) 2012-01-19
JP2018129850A (ja) 2018-08-16
JP2013534797A (ja) 2013-09-05
JP6321091B2 (ja) 2018-05-09
CA3096445C (en) 2022-02-22
CA2934184A1 (en) 2012-01-19
ES2873847T3 (es) 2021-11-04
HUE053802T2 (hu) 2021-07-28
EP2594076A1 (en) 2013-05-22
JP2015053728A (ja) 2015-03-19
BR112013000963B1 (pt) 2019-12-03
KR101835460B1 (ko) 2018-03-08
BR112013000963A2 (pt) 2016-05-24
JP6479237B2 (ja) 2019-03-06
US20190335202A1 (en) 2019-10-31
KR20160093087A (ko) 2016-08-05
RU2710946C1 (ru) 2020-01-14
SG187065A1 (en) 2013-03-28
RU2613725C1 (ru) 2017-03-21
EP2594076A4 (en) 2014-07-30
US9225986B2 (en) 2015-12-29
KR20130088125A (ko) 2013-08-07
KR101924885B1 (ko) 2018-12-04
CA3098217C (en) 2022-02-22
PL2594076T3 (pl) 2017-07-31
JP5687341B2 (ja) 2015-03-18
CN105120264A (zh) 2015-12-02
JP2014158306A (ja) 2014-08-28
CN103004210A (zh) 2013-03-27
WO2012009540A1 (en) 2012-01-19
RU2738786C2 (ru) 2020-12-16
KR20180026788A (ko) 2018-03-13
KR20160092055A (ko) 2016-08-03
EP3232666A1 (en) 2017-10-18
CA3014131C (en) 2020-12-15
CA3098217A1 (en) 2012-01-19
PL3570545T3 (pl) 2021-09-27
RU2019112303A (ru) 2020-10-23
JP2019092208A (ja) 2019-06-13
RU2579947C2 (ru) 2016-04-10
PT2594076T (pt) 2017-04-05
PT3226560T (pt) 2019-10-14
KR101811360B1 (ko) 2017-12-22
AU2011279139A8 (en) 2013-02-21
PL2934008T3 (pl) 2017-01-31
CN105227960A (zh) 2016-01-06
KR101745928B1 (ko) 2017-06-12
JP5808839B2 (ja) 2015-11-10
EP3570545A1 (en) 2019-11-20
HUE054630T2 (hu) 2021-09-28
CN105120263B (zh) 2018-09-14
EP3522535A1 (en) 2019-08-07
PL2934009T3 (pl) 2017-10-31
RU2019112303A3 (es) 2020-10-23
CA3014042C (en) 2021-01-05
KR101927281B1 (ko) 2018-12-10
PL3226560T3 (pl) 2019-12-31

Similar Documents

Publication Publication Date Title
JP6828199B2 (ja) ビデオ符号化のための簡素化されたイントラ予測
AU2020256406B2 (en) Low-complexity intra prediction for video coding
AU2020256409B2 (en) Low-complexity intra prediction for video coding

Legal Events

Date Code Title Description
FG Grant or registration