La compresión fractal es un método de compresión con pérdida de imágenes digitales , basado en fractales . El método es más adecuado para texturas e imágenes naturales, ya que se basa en el hecho de que partes de una imagen a menudo se parecen a otras partes de la misma imagen. [1] Los algoritmos fractales convierten estas partes en datos matemáticos llamados "códigos fractales" que se utilizan para recrear la imagen codificada.
La representación de imágenes fractales puede describirse matemáticamente como un sistema de funciones iteradas (IFS). [2]
Comenzamos con la representación de una imagen binaria , donde la imagen puede pensarse como un subconjunto de . Un IFS es un conjunto de asignaciones de contracciones ƒ 1 , ..., ƒ N ,
De acuerdo con estas funciones de mapeo, el IFS describe un conjunto bidimensional S como el punto fijo del operador de Hutchinson
Es decir, H es una asignación de operador conjuntos a los conjuntos, y S es el conjunto único que satisface H ( S ) = S . La idea es construir el IFS de manera que este conjunto S sea la imagen binaria de entrada. El conjunto S puede ser recuperado de los IFS por método del punto fijo : para cualquier no vacío compacto conjunto inicial A 0 , la iteración A k +1 = H ( A k ) converge a S .
El conjunto S es auto-similar porque H ( S ) = S implica que S es una unión de copias mapeadas de sí mismo:
Así vemos el IFS es una representación del fractal de S .
La representación IFS se puede ampliar a una imagen en escala de grises si se considera el gráfico de la imagen como un subconjunto de . Para una imagen en escala de grises u ( x , y ), considere el conjunto S = {( x , y , u ( x , y ))}. Entonces, similar al caso binario, S es descrito por un IFS usando un conjunto de mapeos de contracción ƒ 1 , ..., ƒ N , pero en ,
Un problema desafiante de la investigación en curso sobre la representación de imágenes fractales es cómo elegir ƒ 1 , ..., ƒ N de manera que su punto fijo se aproxime a la imagen de entrada, y cómo hacerlo de manera eficiente.
Un enfoque simple [2] para hacerlo es el siguiente sistema de funciones iteradas particionadas (PIFS):
En el segundo paso, es importante encontrar un bloque similar para que el IFS represente con precisión la imagen de entrada, por lo que se debe considerar un número suficiente de bloques candidatos para D i . Por otro lado, una búsqueda grande considerando muchos bloques es computacionalmente costosa. Este cuello de botella en la búsqueda de bloques similares es la razón por la que la codificación fractal PIFS es mucho más lenta que, por ejemplo, la representación de imágenes basada en DCT y ondículas .
El algoritmo inicial de partición cuadrada y búsqueda de fuerza bruta presentado por Jacquin proporciona un punto de partida para futuras investigaciones y extensiones en muchas direcciones posibles: diferentes formas de dividir la imagen en bloques de rango de varios tamaños y formas; técnicas rápidas para encontrar rápidamente un bloque de dominio de coincidencia lo suficientemente cercano para cada bloque de rango en lugar de la búsqueda por fuerza bruta, como los algoritmos de estimación de movimiento rápido ; diferentes formas de codificar el mapeo del bloque de dominio al bloque de rango; etc. [3]
Otros investigadores intentan encontrar algoritmos para codificar automáticamente una imagen arbitraria como RIFS (sistemas de funciones iteradas recurrentes) o IFS global, en lugar de PIFS; y algoritmos para compresión de video fractal que incluyen compensación de movimiento y sistemas de funciones iteradas tridimensionales. [4] [5]
La compresión de imágenes fractal tiene muchas similitudes con la compresión de imágenes por cuantificación vectorial . [6]
Con la compresión fractal, la codificación es extremadamente costosa desde el punto de vista computacional debido a la búsqueda utilizada para encontrar las auto-similitudes. La decodificación, sin embargo, es bastante rápida. Si bien esta asimetría hasta ahora ha hecho que no sea práctico para aplicaciones en tiempo real, cuando el video se archiva para su distribución desde el almacenamiento en disco o descargas de archivos, la compresión fractal se vuelve más competitiva. [7] [8]
En relaciones de compresión comunes, hasta aproximadamente 50: 1, la compresión fractal proporciona resultados similares a los algoritmos basados en DCT como JPEG . [9] A altas relaciones de compresión, la compresión fractal puede ofrecer una calidad superior. Para las imágenes de satélite, se han logrado relaciones de más de 170: 1 [10] con resultados aceptables. Se han logrado relaciones de compresión de video fractal de 25: 1–244: 1 en tiempos de compresión razonables (2.4 a 66 segundos / cuadro). [11]
La eficiencia de la compresión aumenta con una mayor complejidad de la imagen y profundidad de color, en comparación con las imágenes simples en escala de grises .
Una característica inherente de la compresión fractal es que las imágenes se vuelven independientes de la resolución [12] después de ser convertidas a código fractal. Esto se debe a que los sistemas de funciones iteradas en el archivo comprimido escalan indefinidamente. Esta propiedad de escala indefinida de un fractal se conoce como "escala fractal".
La independencia de resolución de una imagen codificada fractal se puede utilizar para aumentar la resolución de visualización de una imagen. Este proceso también se conoce como "interpolación fractal". En la interpolación fractal, una imagen se codifica en códigos fractales mediante compresión fractal y, posteriormente, se descomprime a una resolución más alta. El resultado es una imagen de muestreo ascendente en la que se han utilizado sistemas de funciones iteradas como interpolante . [13] La interpolación fractal mantiene muy bien el detalle geométrico en comparación con los métodos de interpolación tradicionales como la interpolación bilineal y la interpolación bicúbica . [14] [15] [16]Sin embargo, dado que la interpolación no puede revertir la entropía de Shannon, termina afinando la imagen agregando detalles aleatorios en lugar de significativos. No se puede, por ejemplo, ampliar una imagen de una multitud en la que el rostro de cada persona tiene uno o dos píxeles y esperar identificarlos.
Michael Barnsley dirigió el desarrollo de la compresión fractal en 1987 y se le concedieron varias patentes sobre la tecnología. [17] El algoritmo práctico de compresión fractal más conocido fue inventado por Barnsley y Alan Sloan. El estudiante graduado de Barnsley, Arnaud Jacquin, implementó el primer algoritmo automático en software en 1992. [18] [19] Todos los métodos se basan en la transformación fractal utilizando sistemas de funciones iteradas . Michael Barnsley y Alan Sloan formaron Iterated Systems Inc. [20] en 1987, que recibió más de 20 patentes adicionales relacionadas con la compresión fractal.
Un gran avance para Iterated Systems Inc. fue el proceso automático de transformación fractal que eliminó la necesidad de intervención humana durante la compresión, como fue el caso en la experimentación temprana con la tecnología de compresión fractal. En 1992, Iterated Systems Inc. recibió una subvención del gobierno de 2,1 millones de dólares [21] para desarrollar un prototipo de chip de descompresión y almacenamiento de imágenes digitales utilizando tecnología de compresión de imágenes por transformación fractal.
La compresión de imágenes fractal se ha utilizado en varias aplicaciones comerciales: onOne Software , desarrollado bajo licencia de Iterated Systems Inc., Genuine Fractals 5 [22], que es un complemento de Photoshop capaz de guardar archivos en formato FIF (Fractal Image Format) comprimido. Hasta la fecha, el uso más exitoso de la compresión de imágenes aún fractales lo ha realizado Microsoft en su enciclopedia multimedia Encarta , [23] también bajo licencia.
Iterated Systems Inc. suministró un codificador shareware (Fractal Imager), un descodificador independiente, un descodificador de complemento de Netscape y un paquete de desarrollo para usar en Windows. A medida que los métodos de compresión de imágenes basados en ondas mejoraron y los proveedores de software comerciales obtuvieron licencias con mayor facilidad, la adopción del formato de imagen fractal no pudo evolucionar. [ cita requerida ] La redistribución de la "DLL descompresora" proporcionada por el SDK de ColorBox III se regía por regímenes de licencias restrictivos por disco o año por año para los proveedores de software propietario y por un esquema discrecional que implicaba la promoción de los sistemas iterados productos para determinadas clases de otros usuarios. [24]
Durante la década de 1990, Iterated Systems Inc. y sus socios gastaron recursos considerables para llevar la compresión fractal al video. Si bien los resultados de la compresión eran prometedores, el hardware de la computadora de esa época carecía de la potencia de procesamiento para que la compresión de video fractal fuera práctica más allá de unos pocos usos selectos. Se requirieron hasta 15 horas para comprimir un solo minuto de video.
ClearVideo, también conocido como RealVideo (Fractal), y SoftVideo fueron los primeros productos de compresión de video fractal. ClearFusion fue el complemento de transmisión de video distribuido libremente de Iterated para navegadores web. En 1994, SoftVideo obtuvo la licencia de Spectrum Holobyte para su uso en sus juegos en CD-ROM , incluidos Falcon Gold y Star Trek: The Next Generation A Final Unity . [25]
En 1996, Iterated Systems Inc. anunció [26] una alianza con Mitsubishi Corporation para comercializar ClearVideo entre sus clientes japoneses. El controlador del decodificador ClearVideo 1.2 original todavía es compatible [27] por Microsoft en el Reproductor de Windows Media, aunque el codificador ya no es compatible.
Dos empresas, Total Multimedia Inc. y Dimension, afirman poseer o tener la licencia exclusiva de la tecnología de video de Iterated, pero ninguna ha lanzado un producto funcional. La base tecnológica parece ser las patentes estadounidenses 8639053 y 8351509 de Dimension, que se han analizado considerablemente. [28] En resumen, es un simple sistema de copia de bloques de cuatro árboles sin la eficiencia de ancho de banda ni la calidad PSNR de los códecs tradicionales basados en DCT. En enero de 2016, TMMI anunció que estaba abandonando por completo la tecnología basada en fractales.
Se han publicado numerosos artículos de investigación durante los últimos años en los que se discuten posibles soluciones para mejorar los algoritmos fractales y el hardware de codificación. [29] [30] [31] [32] [33] [34] [35] [36] [37]
Ullrich Hafner creó una biblioteca llamada Fiasco . En 2001, Fiasco fue cubierto en Linux Journal .[38] Según el manual Fiasco 2000-04 , Fiasco se puede utilizar para la compresión de vídeo.[39] La biblioteca Netpbm incluye la biblioteca Fiasco .[40] [41]
Femtosoft desarrolló una implementación de compresión de imágenes fractales en Object Pascal y Java .[42]