Compresi on Fractal de Im agenes · miento de datos son dos de los par ametros fundamenta-les en el...

7
Compresi´on Fractal de Im´ agenes S. P´ erez-Becker Facultad de Ciencias, Universidad Nacional Aut´onoma de M´ exico En este art´ ıculo se estudia de manera te´ orica y pr´ actica la compresi´ on fractal de im´ agenes. Se explican las bases te´ oricas de su funcionamiento y se esboza un algoritmo para comprimir y descom- primir im´ agenes con dicha t´ ecnica. La idea es presentar el m´ etodo de forma clara y sencilla para su mejor apreciaci´ on. INTRODUCCI ´ ON Este art´ ıculo trata sobre el m´ etodo de compresi´ on frac- tal de im´ agenes. La motivaci´ on principal de estudiar este etodo fue entender el c´ omo las t´ ecnicas matem´ aticas de los a˜ nos recientes se pueden aplicar a problemas de la vida cotidiana, como lo es la compresi´ on de im´ agenes. La vida digital actual no la podr´ ıamos concebir sin in- ternet, e internet no ser´ ıa lo mismo sin t´ ecnicas de com- pres´ on y descompresi´ on de datos. Esto es as´ ı, ya que la velocidad de transmisi´ on y la capacidad de almacena- miento de datos son dos de los par´ ametros fundamenta- les en el funcionamiento de la red. Estas t´ ecnicas hacen mucho m´ as eficientes los conceptos antes mencionados, reduciendo enormemente los gastos que conllevan. La re- levancia de la compresi´ on de im´ agenes no se limita al internet. Otros campos como la exploraci´ on espacial y las aplicaciones tanto en sat´ elites geoestacionarios como en im´ agenes m´ edicas son ejemplos en donde contar con estas t´ ecnicas es fundamental [1]. Una de las t´ ecnicas de compresi´ on de im´ agenes es la compresi´ on fractal (ver [2] para un resumen de otros ti- pos de compresi´ on), que fue inventada y refinada por Michael F. Barnsley a finales de los a˜ nos ochenta [9]. Esta t´ ecnica se basa en comprimir im´ agenes utilizando el hecho de que muchas im´ agenes “naturales” presentan autosemejanza. Una de las diferencias fundamentales de este tipo de t´ ecnicas es que el c´ odigo de compresi´ on no guarda pixeles, por lo que es libre de escalas. De esta for- ma se puede descomprimir a cualquier escala sin tener problemas de resoluci´ on. La meta de este texto es explicar la teor´ ıa que sus- tenta el m´ etodo y mostrar un algoritmo ilustrativo que ejemplifica su implementaci´ on. MARCO TE ´ ORICO A continuaci´ on presentamos las herramientas ma- tem´ aticas y teoremas necesarios para entender el funcio- namiento del m´ etodo. Mapeos y sus atractores Las bases matemem´ aticas para este m´ etodo son los ma- peos de subconjuntos de R 2 en s´ ı mismos que utilizan transformaciones afines. Una transformaci´ on af´ ın en un punto del subconjunto S tiene la forma w i x y = a i b i c i d i x y . (1) Si le aplicamos el mapeo a todos los puntos de S, decimos que le aplicamos el mapeo a S. Estos mapeos pueden ro- tar, trasladar y reescalar dichos subconjuntos. Al volver a aplicar el mapeo al subconjunto S previamente mapeado, hicimos una iteraci´ on del mapeo. Usualmente trabajamos con varios mapeos que act´ uan sobre nuestro subconjun- to, si adem´ as lo hacen de forma iterativa decimos que tenemos un sistema de funciones iteradas (IFS, por sus siglas en ingl´ es) [4]. El primer resultado importante de estos sistemas es el llamado teorema de los puntos fijos en mapeos contrac- tivos. Este teorema asegura que al aplicar una serie de mapeos contractivos a un subconjunto S R 2 de forma iterativa, dicho subconjunto se ir´ a a al atractor (o punto fijo) S W de los mapeos. Esto pasa siempre y cuando los mapeos sean contractivos. Cabe resaltar que el atractor es independiente de las condiciones iniciales. Un ejemplo muy famoso es el helecho de Barnsley, en donde un IFS compuesto por s´ olo cuatro mapeos tiene como atractor la imagen de un helecho (ver Fig. 1). Fishe (a) (b) (c) (d) Figura 1: Esquema del IFS para el helecho de Barnsley. (a) El subconjunto S esta marcado con una “L” para ver rotaciones del mismo. (b) el IFS para el helecho, consiste en cuatro ma- peos que contraen a S. (c) el atractor para el IFS: el helecho de Barnsley. (d) un acercamiento al helecho muestra su na- turaleza fractal, ya que es autosemejante. Figura tomada de [5]

Transcript of Compresi on Fractal de Im agenes · miento de datos son dos de los par ametros fundamenta-les en el...

Page 1: Compresi on Fractal de Im agenes · miento de datos son dos de los par ametros fundamenta-les en el funcionamiento de la red. Estas t ecnicas hacen mucho mas e cientes los conceptos

Compresion Fractal de Imagenes

S. Perez-Becker

Facultad de Ciencias, Universidad Nacional Autonoma de Mexico

En este artıculo se estudia de manera teorica y practica la compresion fractal de imagenes. Seexplican las bases teoricas de su funcionamiento y se esboza un algoritmo para comprimir y descom-primir imagenes con dicha tecnica. La idea es presentar el metodo de forma clara y sencilla para sumejor apreciacion.

INTRODUCCION

Este artıculo trata sobre el metodo de compresion frac-tal de imagenes. La motivacion principal de estudiar estemetodo fue entender el como las tecnicas matematicasde los anos recientes se pueden aplicar a problemas de lavida cotidiana, como lo es la compresion de imagenes.

La vida digital actual no la podrıamos concebir sin in-ternet, e internet no serıa lo mismo sin tecnicas de com-preson y descompresion de datos. Esto es ası, ya que lavelocidad de transmision y la capacidad de almacena-miento de datos son dos de los parametros fundamenta-les en el funcionamiento de la red. Estas tecnicas hacenmucho mas eficientes los conceptos antes mencionados,reduciendo enormemente los gastos que conllevan. La re-levancia de la compresion de imagenes no se limita alinternet. Otros campos como la exploracion espacial ylas aplicaciones tanto en satelites geoestacionarios comoen imagenes medicas son ejemplos en donde contar conestas tecnicas es fundamental [1].

Una de las tecnicas de compresion de imagenes es lacompresion fractal (ver [2] para un resumen de otros ti-pos de compresion), que fue inventada y refinada porMichael F. Barnsley a finales de los anos ochenta [9].Esta tecnica se basa en comprimir imagenes utilizandoel hecho de que muchas imagenes “naturales” presentanautosemejanza. Una de las diferencias fundamentales deeste tipo de tecnicas es que el codigo de compresion noguarda pixeles, por lo que es libre de escalas. De esta for-ma se puede descomprimir a cualquier escala sin tenerproblemas de resolucion.

La meta de este texto es explicar la teorıa que sus-tenta el metodo y mostrar un algoritmo ilustrativo queejemplifica su implementacion.

MARCO TEORICO

A continuacion presentamos las herramientas ma-tematicas y teoremas necesarios para entender el funcio-namiento del metodo.

Mapeos y sus atractores

Las bases matemematicas para este metodo son los ma-peos de subconjuntos de R2 en sı mismos que utilizantransformaciones afines. Una transformacion afın en unpunto del subconjunto S tiene la forma

wi

(xy

)=

(ai bici di

)(xy

). (1)

Si le aplicamos el mapeo a todos los puntos de S, decimosque le aplicamos el mapeo a S. Estos mapeos pueden ro-tar, trasladar y reescalar dichos subconjuntos. Al volver aaplicar el mapeo al subconjunto S previamente mapeado,hicimos una iteracion del mapeo. Usualmente trabajamoscon varios mapeos que actuan sobre nuestro subconjun-to, si ademas lo hacen de forma iterativa decimos quetenemos un sistema de funciones iteradas (IFS, por sussiglas en ingles) [4].

El primer resultado importante de estos sistemas es elllamado teorema de los puntos fijos en mapeos contrac-tivos. Este teorema asegura que al aplicar una serie demapeos contractivos a un subconjunto S ∈ R2 de formaiterativa, dicho subconjunto se ira a al atractor (o puntofijo) SW de los mapeos. Esto pasa siempre y cuando losmapeos sean contractivos. Cabe resaltar que el atractores independiente de las condiciones iniciales. Un ejemplomuy famoso es el helecho de Barnsley, en donde un IFScompuesto por solo cuatro mapeos tiene como atractorla imagen de un helecho (ver Fig. 1).

Fisher(a) (b) (c) (d)

Figura 1: Esquema del IFS para el helecho de Barnsley. (a) Elsubconjunto S esta marcado con una “L” para ver rotacionesdel mismo. (b) el IFS para el helecho, consiste en cuatro ma-peos que contraen a S. (c) el atractor para el IFS: el helechode Barnsley. (d) un acercamiento al helecho muestra su na-turaleza fractal, ya que es autosemejante. Figura tomada de[5]

Page 2: Compresi on Fractal de Im agenes · miento de datos son dos de los par ametros fundamenta-les en el funcionamiento de la red. Estas t ecnicas hacen mucho mas e cientes los conceptos

2

Esto tambien es la idea basica de la compresion fractalde imagenes: es mas compacto guardar las transforma-ciones cuyo atractor es la imagen que queremos, que lospixeles de dicha imagen. Siguiendo el ejemplo del helecho,si guardamos la imagen como una coleccion de pixeles re-querirıamos 65536 bits, mientras que si la guardamos co-mo una coleccion de transformaciones solo requerirıamos768 bits (por los seis numeros que definen los cuatro ma-peos).

Usualmente, las imagenes reales son un poco mas com-plicadas que un helecho en blanco y negro, por lo que unIFS no sera suficiente. El siguiente paso es considerar unsistema de funciones iteradas en donde cada mapeo wiactua sobre un subconjunto Di ∈ R2 (ver Fig. 2). A es-

Welstead

Figura 2: Un sistema particionado de funciones iteradas. So-bre un subconjunto Di ∈ R2 actua un unico mapeo wi que lolleva al rango Ri. Figura tomada de [8]

te sistema se le llama sistema particionado de funcionesiteradas (PIFS por sus siglas en ingles) [3].

Imagenes y PIFSs

Una vez definido un PIFS, pasamos a ver la definicionmatematica de una imagen. Para este artıculo solamenteconsideraremos imagenes en escalas de grises. Podemosver a una imagen de este tipo como una funcion f enR2 que nos regresa un valor entero dentro de una escalapredeterminada (escala de grises):

f(x, y) → (1, 2, ..., N) ⊂ R, (x, y) ∈ I2. (2)

Por sencillez, suponemos que la imagen esta confinadaal cuadrado unitario (I2). Tambien queremos definir ladistancia entre 2 imagenes, ya que esto nos dira que tantose parecen estas entre si. Nosotros tomamos la distanciaRMS como la adecuada, aunque nada nos impide utilizarotras distancias.

dRMS(f, g) =

n∑i=1

m∑j=1

(f(xi, yj)− g(xi, yj)

)2 12

. (3)

Aquı ya estamos suponiendo que el dominio de nuestrasimagenes es discreto, puesto que estamos hablando de

pixeles. Aquı n y m son el numero de pixeles horizontalesy verticales de las imagenes.

Ahora bien, siguiendo la idea del helecho, queremos en-contrar un PIFS cuyo atractor se parezca mucho a unaimagen (es decir, que la dRMS entre el atractor y la ima-gen sea pequena). Dada una imagen, comenzamos par-tiendola en una serie de celdas rango {Ri}. Estas celdasrango deben cubrir por completo a la imagen y no sedeben traslapar. A cada Ri le asociamos una transfor-macion wi que mapea los puntos de cierto dominio Di aRi (ver Fig 3). Formalmente, las wi’s se definen como

Welstead

Figura 3: El PIFS relacionado a una imagen. Los mapeos wi

actuan en su dominio Di (estos se pueden traslapar) y lo llevaa su rango Ri (que cubren por completo el cuadrado unitariosin que haya traslape). Figura tomada de [8]

wi(f(x, y)) = sif(w−1i (x, y)) + oi. (4)

Aquı, w−1i (x, y) es la transformacion que me lleva de Ri

a Di. Por lo que nuestra wi (que se define aplicandola af evaluada en los puntos de Ri) es la funcion f evaluadaen los puntos del dominio Di, multiplicado por un factorsi y recorrido por un factor oi. Cabe notar que la parteespacial de wi mapea el dominio en el rango, por lo quela transformacion total toma a f evaluada en puntos deldominio Di, la multiplica por si, le suma oi y la lleva alrango Ri. Como estamos hablando de imagenes, si con-trae o expande los valores de f , por lo que podemos decirque se trata del contraste. Por otro lado, oi recorre losvalores de f , por lo que le asociamos el brillo de dichaimagen. En la pactica, los dominios siempre seran ma-yores que los rangos, por lo que las wi’s siempre seranmapeos contractivos.

Para nosotros, el PIFS interesante (W que actua sobref) va a ser la union de todas las wi’s. Como los rangoscubren toda la imagen, tambien lo hara nuestro PIFS.Ademas, como se trata de una transformacion contracti-va, tiene un punto fijo.

Ası que lo que nosotros buscamos es el PIFS W cuyopunto fijo (fW ), se parezca mucho a la imagen original f .Puede sonar complicado y poco practico buscar los atrac-tores de diferentes PIFS y ver si se parecen a la imagenoriginal (sobre todo por que los atractores aparecen des-pues de muchas iteraciones del PIFS). Pero un teoremanos facilita considerablemente el trabajo.

Page 3: Compresi on Fractal de Im agenes · miento de datos son dos de los par ametros fundamenta-les en el funcionamiento de la red. Estas t ecnicas hacen mucho mas e cientes los conceptos

3

Un teorema util

Un teorema que nos da una idea de como encontar aW es el teorema del collage. Este dice que si la distan-cia entre una imagen f y la imagen transformada por W(W (f)) se parecen mucho, entonces el atractor deW tam-bien se parecera mucho a f . Matematicamente nos diceque si dRMS(f,W (f)) ≤ ε, entonces dRMS(f, fW ) ≤ ε

1−s .Aqui s es el factor de contractividad de W (ver [8]).

El teorema nos asegura lo siguiente: solamente reque-rimos que una iteracion de W se pareza a f para que suatractor fW tambien lo haga. Por lo que nuestra busque-da de un W se facilita bastante.

Una vez que encontramos a la W indicada, la deco-dificacion consiste simplemente en aplicarle W muchasveces a una imagen inicial g. Esto basta puesto que fWes independiente de la imagen inicial y por el teorema delcollage sabemos que se parecera mucho a f . El problemase reduce entonces a encontrar W .

EL ALGORITMO

El algoritmo que utilizamos para encontrar a W se leconoce como el de quadtree partitioning [5]. Consiste enlo siguiente: Dada una imagen f que queremos codificar,

Partimos a f en una serie de celdas rango {Ri}.Estas celdas deben cubrir por completo a f y no sedeben traslapar.

Cubrimos a f con un conjunto de celdas dominio{Di}. Usualmente son muchas celdas dominio y setraslapan. Entre mayor sea el numero de las Di’smejor sera el resultado final, pero la compresionsera mas tardada.

Para cada Ri, buscamos en el conjunto de las {Di}la celda dominio y la transformacion wi que mejorla cubran. Las wi consisten en una rotacion, unareduccion y un ajuste de brillo y contraste. Decimosque una celda Di cubre a una Ri si la dRMS entreambas es menor a una tolerancia dada.

Si el ajuste no fue lo suficientemente bueno segunla tolerancia, dividimos a la celda Ri en cuatro sub-celdas y repetimos el punto anterior para cada sub-celda.

Continuamos repitiendo estos pasos hasta que todas lasceldas Ri esten cubiertas o que hayamos alcanzado el ta-mano mınimo de las celdas rango que intentamos cubrir(a esto le llamamos profundidad del quadtree). En casoque lleguemos al tamano mınimo de la celda rango, toma-mos la celda dominio que mejor la cubre y la marcamoscomo cubierta.

Cuando decimos que el resultado una compresion es“mejor” que otro, cuantitativamente nos referimos a que

la suma de las dRMS de todas celdas Ri y sus respectivasDi es menor que la suma del otro. Es decir, el error decompresion es menor.

El codigo fractal como tal, consiste en una lista con unrenglon para cada Ri. Ahı escribimos el ındice de quadtreepara la Ri, el indice de rotacion (de 0 a 7, solo hay ochoposibles rotaciones de 90◦ en el plano, considerando lareflexion como una), el ındice de la celda Di que la cubrio,el valor del contraste y el del brillo.

El ındice de quadtree es una forma sencilla de ubicarla posicion de cada Ri utilizando vectores de dimensionigual a la de la profundidad del quadtree. Los detalles sonbastante tenicos y poco importantes para este texto, porlo que los omitiremos aunque el lector interesado puedebuscarlos en la bibliografıa [8], en donde se explica muybien. La ventaja del ındice de quadtree es que es libre deescalas y se puede utilizar para descomprimir imagenesde mayor tamano.

Un ejemplo ilustrativo

Supongamos que queremos comprimir la imagen Lena(ver Fig 4). Siguiendo los pasos del algoritmo, dividimos

Figura 4: La imagen a comprimir: Lena

inicialmente la imagen en cuatro celdas rango y al mismotiempo creamos una base grande de dominios que sonparte de la misma imagen (ver Fig. 5). La base de lasDi’s contiene de preferencia subconjuntos de la imagenque se sobrelapan y que sean de muchos tamanos (esdecir, tamanos mas pequenos). De esta forma sera masfacil encontrar una celda dominio que cubra bien la celdarango en cuestion.

La primera iteracion de nuestro algorimo no encon-trara ninguna Di que cubra satisfactoriamente alguna de

Page 4: Compresi on Fractal de Im agenes · miento de datos son dos de los par ametros fundamenta-les en el funcionamiento de la red. Estas t ecnicas hacen mucho mas e cientes los conceptos

4

D1 D2 D3 D4

D5

D9

Ri’s Di’s

Figura 5: Los primeros pasos del algoritmo. Partimos la ima-gen en cuatro celdas rango Ri’s y al mismo tiempo hacemosuna base de celdas dominio Di. La base de las Di’s debe sermuy grande, por lo que hacemos que las celdas se sobrelapen.Dicha base debe contener celdas de todos los tamanos, parapoder estar seguros de que siempre encontremos una Di quecubra a una celda rango dada.

nuestras cuatro Ri’s, puesto que una condicion que leimponemos al algoritmo es que el tamano de las celdasdominio sea mayor al de las celdas rango, para asi tenerefectivamente un mapeo contractivo.

Al no cubrir satisfactoriamente las Ri’s, el algoritmosubdivide la primera celda rango (la celda color rojo en laFig. 5) y para cada una de las subceldas generadas repiteel proceso. Continuara subdividiendo las Ri’s hasta quehaya cubierto satisfactoriamente todas ellas.

La figura 6 muestra una celda dominio que, bajo unmapeo bien escogido, podrıa cubrir la celda rango mar-cada. Por un lado cumple la condicion de que la Di tienemayor tamano que la Ri, ademas concuerdan bien los to-nos claros y los obscuros en ambas celdas. Faltarıa versi una rotacion y un ajuste de contraste y brillo mejorala cobertura (esto serıa la eleccion del mapeo que mejorcubre a la Ri.) Una forma grafica de como el algoritmoelige el mejor mapeo se muestra en la a figura 7. Teniendola Ri y Di candidatas, rotamos a la Di las ocho posiblesrotaciones en el plano. Aquı consideramos unicamenterotaciones de 90◦ y la reflexion sobre un eje como otrarotacion. Por lo que tenemos cuatro posibles rotacionesde la celda original mas otras cuatro de la celda reflejada(ocho en total). De esas rotaciones escogemos la que me-jor se ajusta a la Ri y la comprimimos para que ambasqueden del mismo tamano. Finalmente ajustamos los va-lores del contraste y brillo mediante un procedimiento demınimos cuadrados para obtener los valores optimos yminimizar ası la dRMS entre ambas celdas (ver [6]). Sila distancia es menor a una tolerancia dada, considera-mos la Ri como cubierta. Si no lo fue, subdividimos laRi en cuatro nuevas subceldas y para cada una volvemosa buscar.

La naturaleza del metodo lo hace adaptativo al detallede cada parte la imagen. Los ojos de Lena por ejemplo

Di

Ri

wi

Figura 6: Un candidato para cubrir celda rango. Tarde o tem-prano en el algoritmo de particion quadtree se llega a unacelda rango como esta Ri. Al algoritmo busca en la base deceldas dominio y encuentra que esta Di la cubre bien.

Di

Ri

(a) (b) (c) (d)

Figura 7: Procedimiento para encontrar el mapeo. (a) tene-mos la celda rango y la dominio que queremos comparar. (b)rotamos a Di en una de las ocho posibles formas (cada 90◦ esuna, tambien reflejamos y rotamos otras cuatro veces) y es-cojemos la mejor. Aquı solamente mostramos cuatro posiblesrotaciones. (c) comprimimos a Di para que coincida con el ta-mano de Ri. (d) ajustamos el contraste y el brillo por mediode mınimos cuadrados para obtener sus valores optimos.

requeriran celdas rango mucho mas pequenas que seg-mentos de la pared de fondo. Con este metodo siempretendremos el tamano adecuado de celda segun el detalle.

Como habıamos mencionado, en la practica ponemosun cota inferior al tamano de las Ri’s mas pequenas. Delo contrario el tiempo de compresion serıa muy grande yel factor de compresion bajo. Esta cota es justo la pro-fundidad de quadtree.

Page 5: Compresi on Fractal de Im agenes · miento de datos son dos de los par ametros fundamenta-les en el funcionamiento de la red. Estas t ecnicas hacen mucho mas e cientes los conceptos

5

DE LA TEORIA A LA PRACTICA

Una vez que entendimos como funciona el algoritmo,procedemos a explicar como se debe hacer un programaque codifique y decodifique una imagen.

Codificando

La forma mas clara de proceder con el programa esprimero crear las funciones que hacen lo que uno re-quiere y luego escribir el programa mismo. Una de lasfunciones mas importantes es aquella que crea la ba-se de las celdas dominio. Esta funcion toma una seriede parametros (numero de celdas “columna”, numero deceldas “renglon”, traslape horizontal, traslape vertical yniveles de tamano: cada nivel implica celdas de la mitadde tamano que tambien cubren la imagen traslapando-se). Con esto hacemos que la funcion sea suficientementeflexible y a la vez practica, puesto que solo requerimosun ındice para tener acceso a cualquier celda de la base.El resultado es un lista de celdas en la que cada entradaes una celda dominio. (por ejemplo la primera entrada dela lista corresponde a la celda D1, etcetera.)

Otra funcion importante es aquella que registra las cel-das rango. En este caso tambien trabajamos con una lis-ta de celdas rango. La funcion registro controla que cadacelda rango de la lista tenga su ındice quadtree correctoy una “bandera” que indique si esta cubierta o no. Es-tos elementos los guardamos en otra lista. Ambas listassiempre deben ir sincronizadas.

Las funciones “operativas” consisten en dividir una cel-da (rango), rotar una celda un cierto angulo, reflejarla yreducir el tamano de la celda. Las utlimas tres funcionesson importantes para el proceso de comparacion de cel-das, puesto que eso se hace para cada celda dominio ala hora de compararla con la celda rango. La forma enque se reduce el tamano de una celda es promediando unpixel con sus vecinos mas cercanos y tomar dicho valorpromedio para ese pixel. Otras funciones importantes sonla que calcula los valores optimos del contraste y brillo(ver [6] para los detalles) y la que calcula la dRMS entreuna celda rango y una de dominio.

Todas estas funciones las utilizamos en la funcion“maestra” que compara las celdas. Esta funcion tomauna celda dominio y una rango, a la celda dominio larota en cada una de las ocho posibilidades, la reduce altamano de la celda rango y calcula los mejores valores decontraste y brillo. Para cada rotacion mide la distanciaentre las celdas y al final regresa la mejor distancia, jun-to con el valor de contraste, brillo e indice de rotacioncorrespondiente.

El programa como tal empieza creando los dominios yla lista inicial de rangos. Aquı particionamos hasta que lalongitud de las celdas rango sea menor a la longitud de lasceldas dominio mas grandes, para asegurarnos que siem-

pre haya un mapeo contractivo. Todas las modificacionesque le vamos haciendo a las celdas rango las anotamosen nuestra funcion registro.

Mientras que no haya cubierto todas las celdas rango,el programa va analizando las Ri’s no cubiertas y paracada una busca en todos los dominios aquel que distemenos de esa celda rango. Si la distancia es menor a latolerancia, escribe en el archivo del codigo fractal el ındi-ce de quadtree, el ındice de rotacion, el ındice de la celdadominio, el valor del contraste y el del brillo. Marca comocubierta esta Ri y pasa a la siguiente. Si la distancia nofue menor a la tolerancia, parte la celda en cuatro e in-serta en el lugar de la celda las cuatro subceldas nuevas.Hace lo mismo con la funcion registro para que siempreeste sicronizada. En caso de que no haya una celda do-minio que cubra a una Ri que ya esta en la profundidadmaxima del quadtree, el programa toma la celda domi-nio que mejor la cubrio, escribe esos valores al archivoy la marca como cubierta. El programa acaba cuandohayamos cubierto todas las celdas rango. La toleranciala definimos como el 2.5 % del error total entre las dosceldas.

Para agilizar la compresion podemos hacer que unavez que se haya encontrado una celda dominio que cubrauna celda rango, escriba los datos y se pase a la siguien-te celda rango, ignorando las demas celdas dominio. Deesta forma ahorramos tiempo de compresion, aunque elresultado final tendra mayor error.

El codigo fractal

El codigo fractal consiste en un archivo que contienelos datos relevantes. Dicho archivo contiene un renglonpor cada celda rango que se cubrio. Este numero es va-riable, segun el detalle de la imagen o la tolerancia quese haya impuesto. En cada renglon escribimos el ındicede quadtree, el ındice de rotacion, el ındice de la celdadominio, el valor del contraste y el del brillo. Un ejemplode un archivo con la imagen comprimida se muestra en lafigura 8. En este ejemplo utilizamos una profundidad dequadtree de seis, por lo que los primeros seis valores decada reglon corresponden al ındice quadtree. El septimoelemento es el ındice de rotacion, el octavo el ındice dela celda dominio (con los parametros que escogimos eneste ejemplo, tenemos 1186 celdas dominio), el noveno esel valor del contraste y el decimo elemento el valor delbrillo.

Para maximizar el factor de compreson se deberıa utili-zar un codigo fractal en donde el ındice quadtree se guardeen numeros binarios en lugar de numeros ASCII, que fuelo que hicimos en este ejemplo. De esta forma se reducirıael tamano del archivo de compresion, ya que cada numerodel tipo ASCII ocupa ocho bits y uno binario solamenteuno. Si se hace correctamente se requerirıa 24 bits porcada elemento del ındice quadtree en lugar de los 48 que

Page 6: Compresi on Fractal de Im agenes · miento de datos son dos de los par ametros fundamenta-les en el funcionamiento de la red. Estas t ecnicas hacen mucho mas e cientes los conceptos

6

1 1 1 1 0 0 5 214 -0.972271 143,701

1 1 1 2 1 0 1 1025 -0.181081 155.425

1 1 1 2 2 0 6 1000 0.128092 118.402

1 1 1 2 3 1 6 906 -0.6473713 238.301

1 1 1 2 3 2 6 708 -0.997927 224.18

índice quadtree rot. dom. contraste brillo

R1

R2

R3

.

.

.

.

.

.

R4

R5

Figura 8: Ejemplo del codigo fractal. En el archivo se escribeun renglon por cada celda rango cubierta. En cada renglon seescribe el ındice quadtree (primeras seis columnas), el ındicede rotacion, el ındice de la celda dominio, el valor del contrastey el valor del brillo.

nosotros requerimos. La diferencia es que el programa dedescompresion serıa algo mas complicado para recuperarel ındice quadtree “comprimido”.

En este artıculo nos enfocamos en exponer la tecnica decompresion y no en hacerla eficiente, por lo que nuestroarchivo de compresion contiene el ındice quadtree tipoASCII. Si el lector esta interesado en hacer un codigoeficiente, se expone muy claro en la referencia [8].

Decodificando

El programa de decodificacion esta escructurado demanera analoga al de codificacion. Tambien tiene las fun-ciones de crear dominio, rotar una celda, y reducir unacelda. Las funciones nuevas que requerimos son una quede la posicion en la imagen de una celda rango dado suındice quadtree. Nosotros usamos como parametro la lon-gitud de la imagen base para la decodificacion (la imageninicial que al aplicarle el PIFS se vera como el atractor),que puede ser mayor o menor que la codificada. Aquı po-demos apreciar el hecho que este metodo es libre de es-calas. Este parametro tambien lo utilizamos en la fun-cion crear rangos, que crea una lista de celdas rango enla posicion adecuada en la imagen base segun su ındicequadtree.

Las funciones “maestras” son una que itera y otra quemuestra el resultado. En la primera le aplicamos una ite-racion del mapeo guardado en nuestro codigo fractal a lasceldas dominio adecuadas y le asignamos el resultado alas celdas rango correspondientes. En la funcion mostrarcolocamos a las celdas rango en su lugar apropiado en laimagen (segun su ındice quadtree) y los mostramos en lapantalla.

El programa como tal solamente carga los datos delcodigo fractal, se los asigna a listas correspondientes ycrea la lista de dominios y la de los rangos. De esta formase le deja al usuario iterar las veces que quiera e ir viendo

el resultado.Un ejemplo del proceso de decodificado se muestra en

la figura 9. Aquı tenemos la imagen base para decodificar

Imagen inicial 1.ra iteración 2.da iteración 6.ta iteración

a)

b)

Figura 9: Ejemplo del proceso de decodificacion. a) La imagenbase (imagen inicial) es un cuadrado negro, despues de algu-nas iteraciones se va pareciendo mas y mas al atractor, quepor el teorema del collage sabemos que se parecera mucho a laimagen inicial. b) Mismo procedimiento con otra imagen ba-se. Vemos que el proceso es independiente de la imagen base,lo cual confirma que el atractor de un PIFS es independientede la condicion inicial.

(a) en su estado original, despues de la primera, segunday sexta iteracion. Vemos que las primeras dos iteracionesson todavıa muy burdas, pero ya la sexta iteracion se pa-rece mucho a Lena. Sabemos que el atractor de nuestroPIFS se parecera mucho a la imagen original, ya que elteorema del collage nos lo asegura. Para enfatizar nue-vamente, lo unico que estamos haciendo con la imageninicial es a ciertos segmentos de ella, les cambiamos elcontraste y el brillo, los rotamos y reducimos para lue-go asignarselos a otros segmentos de la imagen. Es poreso que la primera iteracion consta solamente de cuadra-dos de diferentes escalas de gris. La segunda imagen (b)es el mismo procedimiento, pero con otra imagen inicial.Podemos apreciar que el resutado final es el mismo. Estehecho resalta el atractor de nuestro PIFS es independien-te de la condicion (imagen) inicial.

Es muy importante que los dominios creados en la par-te de codificacion sean los mismos que en la parte dedecodificacion, porque si no, no coinciden los ındices enel codigo y no se vera el resultado deseado. Es por esoque en principio de deberıan escribir los parametros dela funcion que crea las celdas dominio en la cabecera delarchivo con el codigo fractal.

CONCLUSIONES

Con estos programas logramos codificar y decodificarla imagen de Lena. El tiempo de compresion en unamaquina con procesador de 2.83GHz fue de aproxima-damente media hora para el programa que se queda conla primera celda dominio que cubre la celda rango y de

Page 7: Compresi on Fractal de Im agenes · miento de datos son dos de los par ametros fundamenta-les en el funcionamiento de la red. Estas t ecnicas hacen mucho mas e cientes los conceptos

7

aproximadamente dos horas para el que busca la mejordistancia en todas las celdas dominio. En el programa dedecodificacion se puede cambiar el tamano de la imageninicial facilmente y ver como se crea la imagen “libre deescalas”. Como hubo una tolerancia a la hora de com-parar dominios con rangos, la imagen final tiene ciertoserrores en comparacion con la original, dichos errores semagnifican si descomprimimos a mayores escalas.

Este metodo, aunque lento, tiene la ventaja de ser librede escalas y se puede usar para obtener imagenes relati-vamente grandes. Esto a su vez lleva a que, dependiendodel tamano de la imagen descomprimida, se lleguen a te-ner razones de compresion muy buenas. Como nota, elalgoritmo que utilizamos para comprimir es uno muy ru-dimentario. Existen algoritmos mucho mas eficientes quereducen el tiempo de compresion a segundos (ver [8]).

Podemos extender la compresion de imagenes a image-nes con color haciendo algunas ligeras modificaciones delas tecnicas aquı presentadas. Basicamente tendrıamosque tratar a nuestra imagen como una funcion de R2 aR3, en donde cada entrada del rango de la funcion corres-ponde a un valor de rojo, verde y azul respectivamente.Eso y un ligero cambio en la definicion de las distan-cia entre imagenes serıa suficiente para codificarlas. Lacompresion de imagenes a color no solo tiene ventajasesteticas. El poder manejar este tipo de imagenes permi-te guardar informacion adicional mediante un codigo decolor, que en areas como la medicina es de suma impor-tancia.

Espero que este artıculo haya mostrado que no es tancomplicado entender y hacer un programa que codifiqueimagenes con este metodo tan fascinante, que de hechosirve para mas que solo comprimir [7]. Se podrıa decirque este es un ejemplo concreto de como el avance de

la ciencia nos ha permitido disfrutar de una vida digitalmas completa.

[1] T. Acharya and A. K. Ray. Image Processing: Principlesand Applications. John Wiley and Sons, 2005.

[2] Mauro Barni. Document and Image Compression. CRC,2006.

[3] Michael Barnsley. Fractals Everywhere. Academic Press,1989.

[4] Michael Barnsley. Fractal image compression. Notices ofthe AMS, 43(6), 1996.

[5] Yuval Fisher. Fractal image compression. In SIGGRAPH’92 Course Notes, 1992.

[6] David Jeff Jackson and Greg Scott Tinney. Performanceanalysis of distributed implementations of a fractal imagecompression algorithm. Concurrency - Practice and Expe-rience, 8:357–386, 1996.

[7] Joan Puate and Fred Jordan. Using fractal compressionscheme to embed a digital signature into an image. In Tes-cher, AG and Chiueh, TC, editor, Video techniques andsoftware for full-service network, volume 2915 of Procee-

dings of the society of photo-optical instrumentation engi-neers (SPIE), pages 108–118, 1997.

[8] Stephen Welstead. Fractal and Wavelet Image Compres-sion Techniques. SPIE, 1999.

[9] Barnsley patento varios de estos metodos y fundo la com-panıa Iterated Systems Incorporated (La primera patentede Barnsley y Sloan con respecto a compresion de image-nes usando sistemas de funciones iteradas, fue U.S. Pa-tent 4,941,193, registrada en Octubre de 1987). Este hechoejemplifica que a partir de una idea relativamente sencillay una aplicacion de los fractales, una companıa ha sidocapaz de generar recursos economicos considerables.