COMPUTACIÓN: Fractales e imágenes recursivas

viernes, 24 de septiembre de 2004 · 01:00
México, D F, 23 de septiembre (apro)- En mis tiempos de preparatoria llevaba una asignatura denominada “Lógica matemática” En alguna ocasión se nos dijo que, de acuerdo con los más antiguos axiomas, lo definido no podía entrar en la definición Esto quiere decir que no podemos definir “mesa” diciendo que “es una mesa” Pero si somos un poquito inquisitivos podemos pensar en este ejercicio: tómese una palabra del diccionario y véase su definición Tómese ahora cada palabra de dicha definición y búsquese la definición de cada una de ellas Procédase igual con cada definición de cada una de las palabras buscadas Eventualmente caeremos en palabras que contienen definiciones circulares, esto es, la definición de la primera llama a la segunda y la segunda a la primera Todo esto me puso a pensar que quizás no era tan cierto aquello que me dijeron en la clase Gertrude Stein terminó por dar al traste con este concepto cuando dijo “una rosa es una rosa es una rosa” Más adelante, estudiando la carrera de física, fui sorprendido cuando me expusieron las funciones recursivas en matemáticas Son objetos matemáticos que se definen a sí mismos Hay muchísimas funciones en matemáticas que pueden expresarse recursivamente Muchos pensarán que estas cosas solamente se usan en las matemáticas pero, casualmente, cuando irrumpí en el mundo de la programación me encontré de nuevo con las funciones recursivas, ese viejo amigo con un nuevo disfraz: los procedimientos y rutinas recursivas En este caso hay un elemento fundamental Todo procedimiento recursivo tiene dos rutinas: la primera es la condición terminal del mismo procedimiento, y la segunda, es el “bucle” infinito Así, el programa que llama al procedimiento recursivo se ejecuta hasta que se cumple la condición terminal Mientras eso no sucede el “bucle” se ejecuta rabiosamente Cuando la condición de salida (o terminal) aparece, entonces se detiene Podemos ver que la recursión está en más de una parte La naturaleza, en muchos sentidos, es recursiva Por ejemplo, un árbol está compuesto de un tronco y sus ramas Cada rama puede verse como un pequeño tronco que, a su vez, contiene sus propias ramas, en escala desde luego Este es el esquema recursivo que Mandelbrot descubrió para iniciar la teoría de los fractales De hecho, los fractales son entes recursivos por definición Retomando este modelo, se me ocurrió que podría escribirse un software que generara imágenes recursivas, es decir, fotos descritas a partir de las mismas fotos Puse manos a la obra y en menos de 24 horas quedó una versión funcional El programa toma una imagen y la pasa a tonos de gris Genera 30 imágenes idénticas pero con un grado diferente de brillo en cada una (de más claro a más oscuro) Esas imágenes forman una colección y, al procesar la foto, éstas se colocan de acuerdo al brillo de cada región de la original Una vez que la fotografía es procesada, se usa un segundo programa que arma la imagen fractal de manera inmediata y permite salvarla en formato JPEG El software que genera las imágenes fractales puede obtenerse aquí En mi opinión (y qué mejor opinión que la del autor del programa), el efecto final es muy interesante Sin embargo, no pasarían muchos meses para que pensara cómo hacer para que las fotos recursivas pudiesen verse en color A diferencia de los tonos de gris, en donde 30 fotos con diferente brillo (de mayor a menos), son suficientes para que el programa funcione, en color necesitaría muchísimas fotos más (la PC puede desplegar hasta 16 millones de colores) No obstante la aparente insalvable dificultad, se me ocurrió que podría usarse un subconjunto de colores Se me ocurrió que la paleta de colores web (la que se definió como estándar para que cualquier navegador de la red despliegue exactamente lo mismo sin importar la computadora donde se despliega la información), era la indicada Así entonces, sólo tuve que generar 216 imágenes con diferentes tonos de color Un par de días después armé una nueva versión colorizada de la original en tonos de grises Ahora el efecto es –en mi opinión, claro está– aún más espectacular Código ejecutable de ambas aplicaciones recursivas puede pedirse a mi cuenta (de manera gratuita): morsa@la-morsacom Prácticamente toda la aplicación trabaja de manera automática, una vez que se ha alimentado de la imagen a procesar El código fuente está disponible pidiéndomelo expresamente por correo electrónico

Comentarios