SciELO - Scientific Electronic Library Online

 
vol.17 número1Computadora de Vuelo Triplex de Diseño y Manufactura Mexicana para el Microsatélite SatexConfiguración Óptima de Redes de Distribución Primaria.: Método Simplex índice de autoresíndice de materiabúsqueda de artículos
Home Pagelista alfabética de revistas  

Servicios Personalizados

Revista

Articulo

Indicadores

Links relacionados

Compartir


Información tecnológica

versión On-line ISSN 0718-0764

Inf. tecnol. v.17 n.1 La Serena  2006

http://dx.doi.org/10.4067/S0718-07642006000100010 

 

Información Tecnológica-Vol. 17 N°1-2005, págs.: 77-84

ARTICULOS VARIOS

Arquitectura Simple y Modular para Compresión Fractal de Imágenes utilizando Árbol Cuádruple Multi-Resolución

Simple and Modular Architecture for Fractal Image Compression using Quad-Tree Multi-Resolution

Alejandro Martínez (1), Alejandro Díaz (1), Mónico Linares (1) y Javier Vega (2)
(1) Instituto Nacional de Astrofísica, Óptica y Electrónica, Luis Enrique Erro Nº 1, 72840 Tonantzintla, Puebla-México (e-mail: aramirez@inaoep.mx)
(2) Instituto Tecnológico de Chihuahua, Av. Tecnológico Nº 2909, 31310 Chihuahua, Chih.-México
 


Resumen

En este trabajo se presenta una arquitectura simple y rápida para compresión fractal de imágenes basada en un método para compresión fractal multi-resolución de imagen, utilizando particionamiento en árbol cuádruple piramidal y un esquema de clasificación de bloques de acuerdo a su tamaño y a su contraste. El uso de bloques rangos expandidos, bloques dominios no contraídos, y decimación de bloques tipo tablero de ajedrez compensa pérdidas en la calidad de imagen y permite obtener los parámetros fractales en imágenes de baja resolución sin recalcularlos. La arquitectura propuesta aprovecha la sencillez del método para obtener una estructura modular. Debido a que todos los bloques rango son del mismo tamaño a través de la estructura piramidal multi-resolución de la imagen, únicamente un tipo de módulo realiza completamente la codificación fractal en árbol cuádruple.

Palabras claves: fractales, compresión de imagen, codificación multi-resolución, arquitectura modular


Abstract

This work presents a simple and rapid architecture for fractal image compression based on a multi-resolution fractal image compression method, using pyramidal quad-tree partition and a block classification scheme based on image size and contrast. The use of expanded range blocks, non-contracted domain blocks, and chessboard-type block decimation compensated for loss of image quality and allowed obtaining the fractal parameters at low image resolution without recalculating them. The proposed architecture takes advantage of the simplicity of the method to obtain a modular structure. Because all the range blocks are equal-sized through multi-resolution image pyramid structure, a single type of fractal-coding module can carry out the all the quad-tree fractal encoding.

Keywords: fractals, image compression, multi-resolution coding, modular architecture


 INTRODUCCIÓN

Actualmente, la mayoría de los codificadores fractales de imagen que se han implementado se basan en el método de Jacquin, al cual se han añadido técnicas o métodos que permiten mejorar sus características de desempeño.

La codificación fractal de una imagen I en escala de grises mediante el método de Jacquin (Jacquin, 1992), separa la imagen en NR×NR bloques rangos ri,j de n×n píxeles, como se indica en la ecuación (1).

(1)

Cada uno de los bloques rangos es aproximado por un bloque dominio dk,l, el cual es obtenido de la misma imagen I mediante una transformación contractiva wu:

(2)

donde (x, y) son puntos en un bloque dominio y (x’, y’) pertenecen a un bloque dominio transformado. El valor de z es la luminancia del píxel en el punto (x, y) en el bloque dominio, mientras es la correspondiente al punto (x’, y’) del bloque dominio transformado. Cada bloque dominio tiene 2n×2n píxeles los cuales se traslapan por la mitad.

Para cada uno de los bloques rangos se selecciona el bloque dominio transformado que mejor se le asemeje. El parámetro su controla el contraste, mientras el parámetro ou se usa para ajustar el brillo. El índice h escoge el conjunto de parámetros au, bu, cu y du, los cuales seleccionan conjuntamente a una de 8 transformaciones isométricas. Los parámetros eu y fu, desplazan al bloque dominio hasta la posición del bloque rango que asemeja.

Debido al gran número de operaciones involucradas en la búsqueda de similitud entre bloques rangos y dominios y a que cada uno de los parámetros que intervienen en la ecuación (2) debe ser calculado en cada comparación entre bloques, el método de Jacquin tiene un tiempo de codificación inconvenientemente grande. Para reducir ese número de operaciones se han utilizado adicionalmente técnicas como: reducción del conjunto de bloques dominios, restricción del valor del parámetro de ajuste de contraste (Lu, 1997), codificación en niveles inferiores de resolución (Gharavi et al., 1997), codificación en árbol cuádruple a través de niveles múltiples de resolución (Lin y Venetsanopoulos, 1996; Rinaldo y Calvagno, 1995), y clasificación de bloques rangos (Fisher, 1995; Lee y Ra, 1998), entre otros. A pesar de las ventajas aportadas por estos métodos, algunos de ellos no se han implementado como circuitos electrónicos debido a su complejidad; y los que se han implementado resultan en circuitos que obtienen baja razón de compresión; o en circuitos con un gran número de elementos de procesamiento.

En este trabajo se presenta una arquitectura simple y rápida para compresión fractal de imágenes, basada en un método que utiliza particionamiento en árbol cuádruple, un esquema de clasificación de bloques de acuerdo a su tamaño y contraste, y codificación fractal predictiva multiresolución (Martínez et al., 2004). La arquitectura aprovecha las características del método de compresión para obtener una implementación sencilla y modular.

MÉTODO DE CODIFICACIÓN

El método de codificación fractal implementado en este trabajo combina diferentes técnicas, con modificaciones a las mismas, para lograr una arquitectura simple y rápida, adecuada para su realización física en circuito integrado.

Reducción del conjunto de bloques dominio: Para reducir el número de comparaciones realizadas al codificar cada bloque rango de p×p píxeles, la búsqueda de similitud es limitada a una ventana con (2L+1)×(2L+1) bloques dominio, centrada en la misma posición que el bloque rango a codificar, teniendo 0£L<(NR/2). De esta forma, el número de comparaciones por cada bloque rango es de 8(2L+1)2. El número de comparaciones entre píxeles, necesarias para codificar la imagen I, es 8(2L+1)2p2. Aún cuando la calidad de la imagen se reduce, es suficiente para valores L ³ 3.

Codificación en resolución menor: Los bloques que tienen contraste bajo se aproximan bien en los niveles de resolución inferior, lo cual permite codificarlos rápidamente debido a que se tienen bloques con menor número de píxeles, y no es necesario recalcular los parámetros fractales de esos bloques (Martínez et al., 2003). Este aspecto será de gran importancia al presentar la arquitectura propuesta.

Aplicación a niveles múltiples de resolución: La partición en árbol cuádruple es utilizada para aumentar la razón de compresión (Fisher, 1995). Sin embargo, a diferencia del método tradicional (donde los bloques grandes de la partición en árbol cuádruple tienen un gran número de píxeles), el método aquí utilizado realiza la codificación de los bloques con bajo contraste en niveles inferiores de resolución (en donde el número de píxeles es menor). Además, la partición en árbol cuádruple es aplicada a través de los diferentes niveles de resolución de una pirámide de imágenes obtenidas a partir de la decimación de la imagen original I. Este procedimiento se ilustra en la figura 1 usando tres niveles de resolución de imagen.

Considérese una imagen I, con P×P píxeles de resolución, y sus decimaciones Is1 e Is2 con resoluciones de (P/2)×(P/2) y (P/4)×(P/4) píxeles respectivamente. La imagen Is1 es obtenida sub-muestreando en 2 a los renglones y a las columnas de la imagen I, mientras la imagen Is2 se obtiene sub-muestreando en 2 a los renglones y las columnas de Is1.

Para formar los bloques rangos en la imagen original I, se aplica sobre ella una partición en árbol cuádruple de tres niveles, teniendo el primer nivel bloques con 4n×4n píxeles, el segundo nivel bloques con 2n×2n píxeles y el tercer nivel bloques con n×n píxeles.

Los bloques del particionamiento en árbol cuádruple son distribuidos en la pirámide de imágenes formada por I, Is1 e Is2, por medio un mapeo que asigna los bloques del primer nivel de particionamiento a la imagen Is2 (que es la de menor resolución); los bloques del segundo nivel del particionamiento los asigna a la imagen Is1 (de resolución intermedia); y los bloques del primer nivel de particionamiento los asigna a la imagen original I. Esta clasificación a través de los múltiples niveles de resolución de la pirámide de imágenes permite que todos los bloques del particionamiento en árbol cuádruple tengan el mismo número de píxeles en la imagen que les fue asignada,  ya  que  el mapeo  hace la  decimación de los renglones y las columnas de los bloques del particionamiento en un factor de 2 por cada nivel de menor resolución en la pirámide. El siguiente paso consiste en obtener un código fractal para los bloques de la partición en árbol cuádruple asignados a cada nivel de resolución.

Fig. 1: Codificación fractal a través de una pirámide multi-resolución de imágenes.

Los códigos de los bloques rango asignados  a las sub-imágenes Is1 e Is2, junto con los códigos de los bloques asignados a la imagen original I, son usados para formar el código fractal completo. Durante la decodificación, este código se itera en una misma resolución, utilizando un decodificador fractal en árbol cuádruple normal. En el método empleado se utiliza siempre un mismo tamaño de bloque para realizar la codificación en los diferentes niveles de resolución, por ello, un mismo tipo de módulo de procesamiento puede realizar la codificación de cada nivel de resolución.

Clasificación de Bloques: Los diferentes métodos existentes (Rinaldo y Calvagno, 1995; Lee y Ra, 1998), requieren de elementos de procesamiento adicionales para llevar a cabo tal clasificación, como el uso de filtros de onditas. En el método utilizado, se realiza una asignación de los umbrales de contraste para cada nivel de particionamiento del árbol cuádruple (Martínez et al., 2003). Así, si se codifica una imagen I usando un árbol cuádruple de N+1 niveles de particionamiento, en el primer nivel son codificados los bloques de p2N×p2N píxeles, siempre que su nivel de contraste sea menor o igual que U1, definido éste como umbral superior. El bloque rango es dividido en cuatro bloques con p2N-1×p2N-1 píxeles, si su contraste de bloque es mayor a U1, y son asignados al segundo nivel del árbol cuádruple. Si un bloque rango del segundo nivel tiene un contraste menor o igual que U2, entonces el bloque rango es codificado en este nivel de particionamiento. Si, el contraste del bloque rango considerado es mayor que U2, entonces el bloque rango será partido en cuatro bloques rangos con p2N-2×p2N-2 píxeles cada uno. En general, si un bloque rango del i-ésimo nivel de particionamiento tiene un contraste menor o igual que Ui, entonces el bloque rango se codifica en este nivel de particionamiento, o en caso de ser mayor que Ui, es dividido en cuatro bloques rangos conteniendo a p2N-i×p2N-i píxeles cada uno, hasta que i = N. En este último nivel son codificadas todas las regiones que no lo hayan sido en los niveles anteriores. Ninguna zona se codifica en dos niveles diferentes.

El proceso antes descrito requiere de un módulo para estimar el contraste del bloque como la diferencia entre los valores de luminancia máximo y mínimo. Los procesos de particionamiento y clasificación de bloques en niveles de contraste se realizan antes o simultáneamente con el proceso de codificación fractal. La Figura 1 ilustra, de manera general, el proceso de codificación fractal mediante la clasificación de bloques rangos en múltiples niveles de resolución de acuerdo con su nivel de contraste.

ARQUITECTURA DEL CODIFICADOR

Organización de la arquitectura: Como punto de partida, la imagen a ser codificada se divide en M×M sectores de 32×32 píxeles, los cuales a su vez se dividirán en K×K subsectores. Cada unidad de procesamiento tendrá a su vez K×K módulos de codificación fractal, los cuales se encargan de codificar cada uno de los subsectores de la imagen. En la figura 2 se muestra un ejemplo de un sector de imagen, en el cual K = 2. El conjunto de los códigos generados por los K´K módulos de codificación forman los códigos fractales que cada unidad de procesamiento entrega como resultado. Cada módulo codifica a bloques rangos de 2´2 píxeles.

Fig. 2: Cuatro bancos de registros de un sector de imagen de 32´32 píxeles.

La unidad de procesamiento: La arquitectura a bloques de la unidad de procesamiento se muestra en la Figura 3. La imagen a codificar es almacenada en M×M bancos de registros, de 32×32 bytes cada uno. Cada unidad de procesamiento cuenta con 4 módulos de codificación fractal, los cuales realizan en forma paralela la codificación de 4 bloques rango, pertenecientes a los sub-sectores de imagen asignados a ellos. Un decodificador de direcciones se encarga de seleccionar cada píxel, para extraer ya sea un bloque rango, procedente de un solo sub-sector de imagen, o un bloque dominio, integrado por píxeles de cuatro subsectores. Los datos de cada bloque imagen se transmiten píxel a píxel, desde los subsectores de imagen hacia los módulos de codificación fractal, una vez que se indica su dirección dentro del sector de imagen. La dirección de cada píxel dentro del banco de registros de la unidad de procesamiento está dividida en dos partes. La primera especifica en cual de los subsectores se encuentra el píxel deseado, mientras la otra especifica la ubicación relativa del píxel en el subsector. De esta forma, son necesarios dos decodificadores de direcciones: uno para los subsectores de la imagen (Figura 3), y otro para la posición relativa del píxel dentro del subsector de imagen (Figura 4).

El módulo de codificación fractal: constituye la unidad básica encargada de realizar el conjunto de operaciones de codificación: recepción de un bloque rango, recepción de bloques dominio, clasificación de bloques rango, cálculo de valores promedio de los bloques rango y dominio, transformación espacial y de luminancia  de bloques dominio, comparación del bloque rango con el bloque dominio transformado, cálculo del error MAD (mean absolute difference), y selección de la mejor transformación. En la figura 5 se muestra la arquitectura propuesta para el módulo de codificación fractal.

Fig. 3: Arquitectura de la Unidad de Procesamiento Fractal.

Las unidades de procesamiento adquieren el bloque rango accediendo a los píxeles de uno de los cuatro subsectores de imagen que les corresponde procesar. Los módulos de codificación fractal solo pueden recibir los datos de 8×8  bloques rango. Cada uno de los bloques rango de la imagen del subsector debe compararse con todos los bloques dominios contenidos en un sector de imagen, junto con sus 8 transformaciones isométricas. Los bloques dominios son proporcionados a los módulos de codificación por medio de las unidades de procesamiento, las cuales tienen acceso a todos y a cada uno de los datos dentro del sector de imagen.

Cada módulo de codificación fractal recibe, por parte de la unidad de procesamiento, un bloque rango diferente al de otros módulos. Los cuatro módulos de codificación fractal reciben por parte de la unidad de procesamiento un solo bloque dominio, el cual puede ser rotado o reflejado por el módulo de codificación. A medida que son recibidos los píxeles de un bloque rango o un bloque dominio, se calculan los valores promedio de luminancia, tras lo cual se transforma la luminancia del bloque dominio. La transformación de contraste de los bloques dominio se realiza sin multiplicadores, ya que se ha establecido un valor de s = 0.5 para el parámetro de ajuste de contraste. Debe notarse que los píxeles de un bloque dominio son almacenados en 8 registros, y no en 4 como sucede en los métodos tradicionales de dominio decimado.

Fig. 4: Decodificadores de acceso a los píxeles en un subsector de imagen.


Fig. 5: Arquitectura del módulo de codificación fractal.

El método utilizado utiliza una decimación de muestras de imagen similar a la disposición de casillas negras de un tablero de ajedrez. De esta forma, el bloque dominio se reduce, pues consideran solamente los píxeles cuya suma del renglón y la columna en la que se encuentra el píxel produce un número par (Martínez et al., 2004).

El objetivo de este tipo de decimación es obtener mejor calidad de imagen que la lograda en los métodos de dominio decimado, así como mayor rapidez de procesamiento comparada con la del método de dominio expandido, obteniendo calidad de imagen intermedia.

El error absoluto medio MAD se obtiene de la comparación de un bloque rango y un bloque dominio, y después de obtenerlo se compara este error con el obtenido en comparaciones anteriores de ese mismo bloque rango. Si el error MAD de la transformación actual es menor al de transformaciones anteriores, se registran los parámetros fractales de la transformación actual. Si el error MAD de la transformación actual resulta mayor o igual al obtenido en las transformaciones anteriores, se desecha la transformación actual y se procede a realizar otra transformación espacial o a capturar los píxeles de otro bloque dominio.

En la figura 5 se observa que el módulo de codificación cuenta con dos sumadores. Ellos permiten ejecutar en pipeline la diferencia entre píxeles de un bloque rango y de un bloque dominio, y la acumulación de esta diferencia para realizar el cálculo de la MAD de cada bloque rango, disminuyendo casi a la mitad el tiempo que se requiere si se utiliza un solo sumador.

El primer sumador es parte de un acumulador, de dos entradas, las cuales son conectadas a la salida de dos multiplexores que seleccionan las posibles fuentes de datos. El segundo sumador forma parte de un bloque cuya tarea específica es calcular el error absoluto medio de cada bloque dominio transformado, con respecto al bloque rango con que se le compara.

El módulo de codificación fractal cuenta también con un módulo comparador, que sirve para la comparación del error medio absoluto y obtención del menor error medio absoluto al comparar un bloque rango contra todos los dominios transformados; así como la clasificación de un bloque cuando se realiza el particionamiento en árbol cuádruple.

RESULTADOS

La figura 6 muestra las gráficas de la razón señal a ruido pico (PSNR, por sus siglas en inglés) vs contraste, obtenidas para los bloques codificados en cada nivel de resolución. En la obtención de las gráficas se ha usado un grupo de imágenes de prueba. Con base en los datos de las gráficas se fijan los umbrales de contraste de cada nivel de resolución, que se usan en la clasificación de los bloques rangos en el método utilizado. La calidad de la imagen obtenida en el método utilizado no puede ser mayor que la que se obtiene usando solamente el nivel de mayor resolución, ni menor que la que se obtiene usando el nivel de menor resolución. Suponiendo que se desea obtener una PSNR de 30 dB, los bloques rangos deberán tener contraste menor que 40, y en consecuencia, los umbrales de contraste para los niveles de particionamiento serán de 40. Con estos valores de umbral de contraste se obtiene para la imagen de Lena un código fractal de 6538 transformaciones, con PSNR = 31.86 dB y razón de compresión CR = 16.18 (CR, por sus siglas en inglés). Los umbrales de contraste no son fijos y pueden ajustarse para obtener diferentes valores de PSNR y de CR. En la arquitectura que se propone se utilizan los valores de umbrales: U1 = 40, U2 = 80 y U3 = 160, como punto de partida, debido a que con las imágenes de prueba se obtiene PSNR » 27 dB y CR » 40.

La comparación de cada bloque rango contra un bloque dominio y ocho transformaciones isométricas se hace en 90 ciclos de reloj. Empleando ventanas de 15×15 bloques dominios (L=7) para codificar a los bloques rangos pertenecientes al tercer nivel de resolución (el de más alta resolución y mas alta frecuencia), cada módulo de codificación fractal compara 8×8 bloques rangos contra 15×15 bloques dominios, así  que la  codificación de  un  sub-sector de imagen se realiza en un tiempo de 8×8×15×15×90 = 1.296×106 ciclos de reloj. En el segundo nivel de resolución se emplean ventanas  de 7×7  bloques  dominios  (L=3),  y cada módulo compara 4×4 bloques rango con 7×7 bloques dominios, utilizando 4×4×7×7×90 = 70 560 ciclos de reloj. En el primer nivel de resolución (el de mas baja resolución) se emplean ventanas de 3×3 bloques dominios (L=1), así que cada modulo de codificación fractal compara 2×2 bloques rangos contra 3×3 bloques dominios, por lo que se emplean 2×2×3×3×90 = 3 240 ciclos de reloj en la codificación de todos los bloques rangos pertenecientes a este nivel de resolución. Para codificar los tres niveles de resolución se ocupan 1 369 800 ciclos de reloj. Con un reloj de 50 MHz la codificación se realiza en 27.4 ms, lo cual es suficiente para hacer la codificación de secuencias de video en tiempo real.

Fig. 6: Gráfica del parámetro PSNR vs Contraste de bloque

La tabla 1 muestra la frecuencia de reloj necesaria para que el codificador se desempeñe como un codificador de cuadros de video en tiempo real usando ventanas de bloques dominios de igual tamaño para cada nivel de resolución. La frecuencia de reloj necesaria es una función del método empleado, del grado de paralelismo utilizado (el número de módulos de codificación en cada unidad de procesamiento), y del tamaño de la ventana de búsqueda L´L (el número de bloques dominio). La primera columna muestra los valores del parámetro L que determina el número de bloques dominios entre los que se busca similitud. La segunda columna de la tabla muestra la frecuencia de reloj necesaria cuando se tiene un solo módulo de codificación fractal en cada unidad de procesamiento. La tercera columna muestra el caso cuando se tienen cuatro módulos de codificación en cada unidad de procesamiento. La cuarta columna muestra el caso cuando cada unidad de procesamiento tiene los mismos recursos que en la columna 3,  pero en  cada módulo de codificación fractal se tienen dos sumadores en pipeline; mientras en la quinta se usan cuatro módulos de codificación fractal, doble sumador y decimación tipo tablero ajedrez en los bloques rangos y dominios. La sexta columna utiliza los mismos recursos que la quinta, excepto que en lugar de la decimación en tablero de ajedrez se utiliza reducción de bloques dominios mediante decimación y promedio de píxeles. Los resultados se muestran para diferentes tamaños ventanas de búsqueda local de similitud (controlada por el parámetro L). En este trabajo se ha usado L=7.

Tabla 1: Frecuencia de reloj (en MHz) necesaria para obtener procesamiento de video en tiempo real.

L

Un

MCF

Cuatro

MCF

Doble

Suma

Decimación

Ajedrez

Decimación

promedio

7

1716

429

214

119

61

6

1320

330

165

91

47

5

953

238

119

66

34

4

635

158

79

44

22

3

265

91

45

25

13

2

189

47

23

13

6.7

1

68

17

8

4.7

2.4

0

6.9

1.7

0.9

0.5

0.3

La arquitectura propuesta ha sido simulada utilizando Active VHDL e iSE4.2 HDL. Se ha sintetizado la arquitectura de una unidad de procesamiento fractal para su implementación en una tarjeta FPGA Virtex, siendo necesarias 39 527 compuertas.

CONCLUSIONES

Se ha presentado una arquitectura para compresión fractal de imágenes, que implementa un método de codificación que utiliza particionamiento en árbol cuádruple a través de múltiples niveles de resolución. Debido a que se usan bloques de procesamiento similares y estructuras regulares, sin importar el nivel de particionamiento ni el nivel de resolución de la imagen correspondiente a ese nivel, la arquitectura presentada resulta  simple y modular, y por ello es apropiada para implementarla en tarjetas FPGA o en circuitos integrados VLSI.

La arquitectura puede configurarse para obtener diferentes razones de compresión, mediante el ajuste de los umbrales de contraste. Además, puede ser utilizada para el procesamiento de video en tiempo real, aprovechando la rapidez del método de codificación.

AGRADECIMIENTOS

Los autores agradecen al CONACYT por el apoyo otorgado a través de los proyectos 37470-A y 34557-A.

REFERENCIAS

Fisher, Y., Fractal encoding with quadtrees, in: “Fractal Image Compression: Theory and Applications”, Springer-Verlag, Y.Fisher (ed.),  New York, USA, 55-77 (1995).        [ Links ]

Gharavi M., R. De Nardo, Y. Tenda y T. Huang, Resolution Enhancement of Images using Fractal Coding, Visual Com. and Image Processing ’97, vol. 3024 of SPIE Proceedings, (1997).        [ Links ]

Jacquin, A. E., Image Coding Based on a Fractal Theory of Iterated Contractive Image Transformations, IEEE Trans. on Image Proc., Vol. 1, No. 1, 18–30 (1992).        [ Links ]

Lee, S. M., y S. W. Ra, Fast fractal encoding algorithm using variances of image blocks, Electronics Letters, Vol. 34, No. 10, (May 1998).        [ Links ]

Lin, H. y A. N. Venetsanopoulos, “Fast Pyramid Search for Perceptually Lossless Fractal Image Compression”, Proc. ICIP 96 IEEE International Conference on Image Processing, Laussane, (Sept. 1996).        [ Links ]

Lu, N., “Fractal Imaging”, Academic Press, pp. 152 -159, San Diego, U.S.A., (1997).        [ Links ]

Martínez, A., A. Díaz, M. Linares y J. Vega, “Diseño e Implementación de un Procesador Digital de Imágenes para aplicaciones en Comunicaciones”, Tesis Doctoral, Dpto. de Electrónica, INAOE, Tonantzintla Puebla-México, (2004).        [ Links ]

Martínez, A., A. Díaz, M. Linares y J. Vega, “Simple and Fast Fractal Image Compression for VLSI Circuits”, Proc. International Symposium on Image and Signal Processing and Analysis, ISPA 2003, Rome Italy, (Septiembre 2003).        [ Links ]

Rinaldo, R. y G. Calvagno, Image Coding by Block Prediction of Multiresolution Subimages, IEEE Trans. on Image Proc., vol. 4, no. 7, (1995).        [ Links ]

Creative Commons License Todo el contenido de esta revista, excepto dónde está identificado, está bajo una Licencia Creative Commons