Chamas Fractais: Algoritmos e Geração de Imagens
Pontos principais
- Criado por Scott Draves em 1992 como uma evolução dos sistemas de funções iteradas (IFS).
- Diferencia-se dos IFS tradicionais pelo uso de funções não lineares e mapeamento de densidade logarítmica.
- A renderização utiliza a técnica de supersampling e correção de gama para otimizar a qualidade visual.
- A estimação de densidade adaptativa é usada em softwares como o FLAM3 para reduzir o ruído sem perder a resolução.
As chamas fractais (do inglês fractal flames) representam uma evolução dos sistemas de funções iteradas (IFS - Iterated Function Systems), sendo uma classe de fractais desenvolvida por Scott Draves em 1992. Diferente dos fractais IFS tradicionais, as chamas fractais introduzem a possibilidade de utilizar funções não lineares, mapeamento de densidade logarítmica e coloração baseada na estrutura recursiva, resultando em imagens com maior complexidade visual e apelo estético.
O código original de Draves foi disponibilizado como código aberto, o que permitiu que a tecnologia fosse portada para softwares de computação gráfica, como o Adobe After Effects, e servisse de base para a criação de editores especializados, como o Apophysis.
Diferenças em Relação aos Sistemas de Funções Iteradas (IFS)
As chamas fractais distinguem-se dos sistemas de funções iteradas convencionais por três características principais:
- Funções Não Lineares: Além das transformações afins, as chamas fractais permitem a iteração de funções não lineares.
- Exibição de Densidade Logarítmica: Em vez de utilizar uma representação linear ou binária, utiliza-se um mapeamento de tons logarítmicos, o que permite a visualização de detalhes em áreas de alta e baixa densidade.
- Coloração Estrutural: A cor é atribuída com base no caminho recursivo percorrido pelo ponto, e não apenas pela densidade ou de forma monocromática.

Funcionamento do Algoritmo
O processo de geração de uma chama fractal é dividido em duas etapas fundamentais: a criação de um histograma e a renderização final da imagem.
Criação do Histograma
O algoritmo inicia a iteração a partir de um ponto aleatório $P = (P.x, P.y, P.c)$, onde a terceira coordenada representa a cor atual do ponto. A cada iteração, uma função $F_j$ é escolhida com base em uma probabilidade $p_j$. O novo ponto é calculado aplicando-se a função escolhida às coordenadas $(P.x, P.y)$.

Cada função individual é composta por uma soma ponderada de variações $V_k$, onde $w_k$ é o peso da variação. Exemplos comuns de variações incluem:
- Linear: $V_0(x,y) = (x,y)$
- Sinusoidal: $V_1(x,y) = (\sin x, \sin y)$
- Esférica: $V_2(x,y) = (x,y)/(x^2+y^2)$

A cor do ponto $P.c$ é mesclada com a cor associada à função $F_j$ aplicada. Após cada iteração, o histograma é atualizado no ponto correspondente, fazendo com que as cores da imagem final reflitam as funções utilizadas para alcançar aquela região do espaço.
Renderização da Imagem
Para reduzir o ruído e aumentar a qualidade, utiliza-se a técnica de supersampling, criando-se um histograma maior que a imagem final. Por exemplo, um histograma de $300\times300$ células pode ser usado para gerar uma imagem de $100\times100$ pixels, onde cada pixel final é a média de um grupo de $3\times3$ células do histograma.
A renderização frequentemente utiliza a correção de gama para tornar as cores mais brilhantes, técnica implementada em softwares como o Apophysis. Embora a dependência linear da luminosidade em relação à frequência seja computacionalmente mais simples, ela resulta na perda de detalhes em certas partes do fractal, o que é evitado pelo uso de funções logarítmicas.
Estimação de Densidade
O algoritmo de chamas fractais funciona de forma análoga a uma simulação de Monte Carlo, onde a qualidade da imagem é proporcional ao número de iterações. O ruído resultante da amostragem estocástica pode ser reduzido através de desfoque (blurring), porém, isso pode comprometer a resolução em áreas com alta densidade de amostras.
Para solucionar isso, algumas implementações, como o FLAM3, utilizam a estimação de densidade adaptativa. Baseada em métodos de filtragem progressiva, essa técnica varia a largura do filtro inversamente à quantidade de amostras disponíveis: áreas com poucas amostras são mais suavizadas, enquanto áreas com alta densidade de amostras permanecem nítidas.
Perguntas frequentes
O que são chamas fractais?
São uma classe de fractais baseados em sistemas de funções iteradas (IFS) que utilizam funções não lineares e mapeamento de densidade logarítmica para criar imagens complexas e esteticamente agradáveis.
Quem criou as chamas fractais?
As chamas fractais foram criadas por Scott Draves em 1992.
Qual a diferença entre chamas fractais e fractais IFS comuns?
As chamas fractais utilizam funções não lineares, cores baseadas na estrutura recursiva e exibição de densidade logarítmica, enquanto os IFS comuns geralmente usam transformações afins e cores simples.
Como é reduzido o ruído nas imagens de chamas fractais?
O ruído é the resultado da amostragem estocástica. Ele pode ser reduzido via supersampling, desfoque ou, de forma mais avançada, através da estimação de densidade adaptativa, que suaviza apenas as áreas com poucas amostras.