Фрактальное пламя

редактировать
Фрактальное пламя, созданное Electric Овца. Фрактальное пламя, созданное в Апофизис.

Фрактальное пламя, является членом системы повторяющихся функций класса фракталов, созданного Скоттом Дрейвсом в 1992 году. Открытый исходный код Дрейвса был позже перенесен в графическое ПО Adobe After Effects и переведен в редактор фрактального пламени Apophysis.

Фрактальное пламя отличаются от обычных систем повторяющихся функций по трем причинам:

Отображение тонов и окраска предназначены для отображения как можно большего количества деталей фрактала, которые обычно приводит к более эстетичный образ.

Содержание
  • 1 Алгоритм
    • 1.1 Создание гистограммы
    • 1.2 Визуализация изображения
  • 2 Оценка плотности
  • 3 См. Также
  • 4 Ссылки
Алгоритм

Алгоритм состоит из двух шагов: создание гистограммы и последующее отображение гистограммы.

Создание гистограммы

Сначала выполняется итерация набора функций, начиная со случайно выбранной точки P = (Px, Py, Pc), где третья координата указывает текущий цвет точка.

Набор функций пламени: {F 1 (x, y), p 1 F 2 (x, y), p 2… F n (x, y), pn {\ displaystyle {\ begin {cases) } F_ {1} (x, y), \ quad p_ {1} \\ F_ {2} (x, y), \ quad p_ {2} \\\ точки \\ F_ {n} (x, y), \ quad p_ {n} \ end {cases}}}{\ begin {cases} F_ { 1} (x, y), \ quad p_ {1} \\ F_ {2} (x, y), \ quad p_ {2} \\\ точки \\ F_ {n} (x, y), \ quad p_ {n} \ end {case}}

На каждой итерации выберите одну из функций, приведенных выше, для которой вероятность того, что выбрано F j, равна p j. Затем вычисляют следующую итерацию P, применяя F j к (P.x, P.y).

Каждая отдельная функция имеет следующий вид:

F j (x, y) = ∑ V k ∈ V ariationswk ⋅ V k (ajx + bjy + cj, djx + ejy + fj) {\ displaystyle F_ {j} (x, y) = \ sum _ {V_ {k} \ in Variations} w_ {k} \ cdot V_ {k} (a_ {j} x + b_ {j} y + c_ {j}, d_ {j} x + e_ {j} y + f_ {j})}F_ {j} (x, y) = \ sum _ {{V_ {k} \ in Variations}} w_ {k} \ cdot V_ {k} (a_ {j} x + b_ {j} y + c_ {j}, d_ {j} x + e_ {j} y + f_ {j})

, где параметр w k называется весом вариации Vk. Дрейвс предполагает, что все w k {\ displaystyle w_ {k}}w_k : s неотрицательны и в сумме равны единице, но реализации, такие как Apophysis, не налагают этого ограничения.

Функции V k представляют собой набор предварительно определенных функций. Вот несколько примеров:

  • V0(x, y) = (x, y) (Linear)
  • V1(x, y) = (sin x, sin y) (Sinusoidal)
  • V2(x, y) = ( x, y) / (x + y) (Сферический)

Цвет Pc точки смешивается с цветом, связанным с последней примененной функцией F j:

Pc: = (Pc + (F j)color) / 2

После каждой итерации обновляется гистограмма в точке, соответствующей (Px, Py). Это делается следующим образом:

histogram [x] [y] [FREQUENCY]: = histogram [ x] [y] [ЧАСТОТА] +1 гистограмма [x] [y] [ЦВЕТ]: = (гистограмма [x] [y] [ЦВЕТ] + Pc) / 2

Таким образом, цвета на изображении будут отражать то, что Для перехода к этой части изображения использовались функции.

Визуализация изображения

Чтобы повысить качество изображения, можно использовать суперсэмплинг для уменьшения шума. Это включает в себя создание гистограммы больше, чем изображение, поэтому каждый пиксель имеет несколько точек данных для извлечения.

Например, создание гистограммы с ячейками 300 × 300, чтобы нарисовать изображение размером 100 × 100 пикселей. Каждый пиксель будет использовать группу гистограмм 3 × 3 ведра для расчета его стоимости.

Для каждого пикселя (x, y) в конечном изображении выполните следующие вычисления:

frequency_avg [x] [y]: = average_of_histogram_cells_frequency (x, y); color_avg [x] [y]: = средний_цвет_гистограммы_ячейки (x, y); альфа [x] [y]: = журнал (средн_частота [x] [y]) / журнал (частота_макс); // frequency_max - это максимальное количество итераций, попадающих в ячейку гистограммы. final_pixel_color [x] [y]: = color_avg [x] [y] * альфа [x] [y] ^ (1 / гамма); // гамма - это значение больше 1.

В приведенном выше алгоритме используется гамма-коррекция, чтобы цвета казались ярче. Это реализовано, например, в программном обеспечении Apophysis.

Чтобы еще больше повысить качество, можно использовать гамма-коррекцию для каждого отдельного цветового канала, но это очень тяжелое вычисление, поскольку функция регистрации работает медленно.

В упрощенном алгоритме яркость будет линейно зависеть от частоты:

final_pixel_color [x] [y]: = color_avg [x] [y] * frequency_avg [x] [y] / frequency_max;

, но это приведет к потере деталей некоторых частей фрактала, что нежелательно.

Оценка плотности
Демонстрация оценки плотности. В приведенной выше половине вы можете увидеть шум и отдельные образцы. На нижней половине, визуализированной с помощью оценки плотности, шум сглаживается без разрушения острых краев.

Алгоритм пламени похож на симуляцию Монте-Карло, где качество пламени прямо пропорционально количеству итерации моделирования. Шум, возникающий в результате этой стохастической выборки, можно уменьшить за счет размытия изображения, чтобы получить более гладкий результат за меньшее время. Однако не следует терять разрешение в тех частях изображения, которые получают много выборок и поэтому имеют небольшой шум.

Эта проблема может быть решена с помощью адаптивной оценки плотности для повышения качества изображения при минимальном времени визуализации. FLAM3 использует упрощение методов, представленных в документе * Adaptive Filtering for Progressive Monte Carlo Image Rendering *, представленном в 2000 году Фрэнком Суйкенсом и Ивом Д. Виллемсом. Идея состоит в том, чтобы изменить ширину фильтра обратно пропорционально количеству доступных выборок.

В результате области с небольшим количеством образцов и высоким уровнем шума становятся размытыми и сглаженными, но области с большим количеством образцов и низким уровнем шума остаются нетронутыми. См. https://github.com/scottdraves/flam3/w/Density-Estimation.

Не все реализации Flame используют оценку плотности.

См. Также
  • Apophysis, редактор фрактального пламени с открытым исходным кодом для Microsoft Windows и Macintosh.
  • Chaotica, коммерческий редактор фракталов, который поддерживает flam3, Apophysis и другие обобщения.
  • , многоплатформенный редактор фрактального пламени с открытым исходным кодом, написанный на Java.
  • Electric Sheep, экранная заставка, созданная изобретателем фрактального пламени, которая отображает и отображает их с помощью Distributed вычисления.
  • GIMP, бесплатное программное обеспечение, программа для обработки изображений с несколькими ОС , которая может генерировать фрактальное пламя.
  • , часть KPT (Kai's Power Tools ) 5 и одно из трех фрактальных приложений в коллекции KPT 5. KPT 5 - плагин для Photoshop, Photo-Paint, PhotoImpact и других редакторов растровой графики.
Ссылки
  1. ^Mitchell Whitelaw (2004). Метакреация: искусство и искусственная жизнь. MIT Press. С. 155.
  2. ^ «Информация о программном обеспечении Apophysis». Архивировано с оригинала 13.09.2008. Проверено 11 марта 2008 г.
  3. ^Крис Геман и Стив Рейнке (2005). Самый острый момент: анимация в конце кино. YYZ Книги. стр. 269.
  4. ^ «Алгоритм фрактального пламени» (PDF). (22,5 МБ)
Викискладе есть материалы, связанные с фрактальным пламенем.
Последняя правка сделана 2021-05-20 13:13:11
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте