

Las llamas fractales pertenecen a la clase de sistemas de funciones iteradas [ 1 ] de fractales creada por Scott Draves en 1992. [ 2 ] El código de código abierto de Draves fue posteriormente adaptado al software gráfico Adobe After Effects [ 3 ] y traducido al editor de llamas fractales Apophysis . [ 2 ]
Las llamas fractales se diferencian de los sistemas de funciones iteradas ordinarias en tres aspectos:
- Además de las transformaciones afines, se iteran funciones no lineales .
- Visualización de densidad logarítmica en lugar de lineal o binaria (una forma de mapeo de tonos ).
- Colorear según la estructura (es decir, según la ruta recursiva seguida) en lugar de utilizar monocromo o densidad.
El mapeo de tonos y la coloración están diseñados para mostrar la mayor cantidad de detalles posible del fractal, lo que generalmente da como resultado una imagen estéticamente más agradable.
Algoritmo
El algoritmo consta de dos pasos: crear un histograma y luego representarlo gráficamente.
Creación del histograma

Primero, se itera un conjunto de funciones, comenzando desde un punto elegido al azar P = (Px,Py,Pc) , donde la tercera coordenada indica el color actual del punto.
- Conjunto de funciones de llama:
En cada iteración, elija una de las funciones anteriores donde la probabilidad de que se elija F j sea p j . Luego se calcula la siguiente iteración de P aplicando F j en (Px,Py) .
Cada función individual tiene la siguiente forma:
donde el parámetro w k se denomina peso de la variación V k . Draves sugiere [ 4 ] que todosLos :s son no negativos y su suma es uno, pero implementaciones como Apophysis no imponen esa restricción.
Las funciones V k son un conjunto de funciones predefinidas. Algunos ejemplos [ 4 ] son:
- V 0 ( x , y ) = ( x , y ) (Lineal)
- V 1 ( x , y ) = (sin x ,sin y ) (sinusoidal)
- V 2 ( x , y ) = ( x , y )/( x 2 + y 2 ) (Esférica)
El color Pc del punto se mezcla con el color asociado a la última función aplicada F j :
- Pc := (Pc + (F j ) color ) / 2
Después de cada iteración, se actualiza el histograma en el punto correspondiente a (Px,Py) . Esto se hace de la siguiente manera:
histograma [ x ][ y ][ FRECUENCIA ] := histograma [ x ][ y ][ FRECUENCIA ] + 1 histograma [ x ][ y ][ COLOR ] := ( histograma [ x ][ y ][ COLOR ] + P . c ) / 2Por lo tanto, los colores de la imagen reflejarán las funciones que se utilizaron para llegar a esa parte de la imagen.
Renderizar una imagen
Para mejorar la calidad de la imagen, se puede utilizar el sobremuestreo para reducir el ruido. Esto implica crear un histograma de mayor tamaño que la imagen, de modo que cada píxel disponga de múltiples puntos de datos. Por ejemplo, para generar una imagen de 100 × 100 píxeles, se puede crear un histograma con 300 × 300 celdas ; cada píxel utilizaría un grupo de 3 × 3 celdas del histograma para calcular su valor.
Para cada píxel (x,y) de la imagen final, realice los siguientes cálculos:
frecuencia_promedio [ x ][ y ] := promedio_de_frecuencia_de_celdas_del_histograma ( x , y ); color_promedio [ x ][ y ] := promedio_de_color_de_celdas_del_histograma ( x , y );alpha [ x ][ y ] := log ( frequency_avg [ x ][ y ]) / log ( frequency_max ); //frequency_max es el número máximo de iteraciones que alcanzan una celda en el histograma.color_píxel_final [ x ][ y ] := color_promedio [ x ][ y ] * alfa [ x ][ y ] ^ ( 1 / gamma ); //gamma es un valor mayor que 1.El algoritmo anterior utiliza la corrección gamma para que los colores parezcan más brillantes. Esto se implementa, por ejemplo, en el software Apophysis.
Para mejorar aún más la calidad, se puede aplicar la corrección gamma a cada canal de color individual, pero esto supone un cálculo muy complejo, ya que la función logarítmica es lenta.
Un algoritmo simplificado consistiría en hacer que el brillo dependiera linealmente de la frecuencia:
color_píxel_final [ x ][ y ] := color_promedio [ x ][ y ] * frecuencia_promedio [ x ][ y ] / frecuencia_máxima ;pero esto haría que algunas partes del fractal perdieran detalle, lo cual es indeseable. [ 4 ]
Estimación de densidad
El algoritmo de la llama es similar a una simulación de Monte Carlo , donde la calidad de la llama es directamente proporcional al número de iteraciones. El ruido resultante de este muestreo estocástico se puede reducir difuminando la imagen para obtener un resultado más suave en menos tiempo. Sin embargo, no se desea perder resolución en las partes de la imagen que reciben muchas muestras y, por lo tanto, presentan poco ruido.
Este problema se puede resolver mediante la estimación adaptativa de la densidad para mejorar la calidad de la imagen y minimizar los tiempos de renderizado. FLAM3 utiliza una simplificación de los métodos presentados en *Adaptive Filtering for Progressive Monte Carlo Image Rendering*, un artículo presentado en WSCG 2000 por Frank Suykens e Yves D. Willems. La idea consiste en variar el ancho del filtro de forma inversamente proporcional al número de muestras disponibles.
Como resultado, las áreas con pocas muestras y mucho ruido se vuelven borrosas y suaves, pero las áreas con muchas muestras y poco ruido no se ven afectadas. [ 5 ]
No todas las implementaciones de Flame utilizan la estimación de densidad.
Véase también
- Apophysis , un editor de llamas fractales de código abierto para Microsoft Windows y Macintosh.
- Electric Sheep , un protector de pantalla creado por el inventor de las llamas fractales que las renderiza y muestra mediante computación distribuida .
- GIMP , un programa de manipulación de imágenes gratuito y compatible con múltiples sistemas operativos, que puede generar llamas fractales.
Referencias
- ↑ Mitchell Whitelaw (2004). Metacreación: Arte y vida artificial . MIT Press . pp 155.
- 1 2 "Información sobre el software Apophysis" . Archivado del original el 13 de septiembre de 2008. Consultado el 11 de marzo de 2008 .
- ↑ Chris Gehman y Steve Reinke (2005). El punto más afilado: la animación al final del cine . YYZ Books. pp 269.
- 1 2 3 "El algoritmo de la llama fractal" (PDF) . (22,5 MB)
- ↑ Véase https://github.com/scottdraves/flam3/wiki/Density-Estimation .
- fractales de sistema de funciones iteradas
- Arte psicodélico