Фрактальное пламя - Fractal flame
Фрактальное пламя являются членом система повторяющихся функций класс[1] из фракталы создан Скотт Дрейвс в 1992 г.[2] Открытый исходный код Draves был позже перенесен в Adobe After Effects графическое программное обеспечение[3] и переведен на Апофиз редактор фрактального пламени.[2]
Фрактальное пламя отличается от обычных систем с повторяющимися функциями по трем параметрам:
- Нелинейный функции повторяется в дополнение к аффинные преобразования.
- Отображение логарифмической плотности вместо линейного или двоичного (форма отображение тонов )
- Цвет по структуре (т.е. по выбранному рекурсивному пути), а не по монохромному или по плотности.
Отображение тонов и окраска предназначены для отображения как можно большего количества деталей фрактала, что обычно приводит к более эстетичному изображению.
Алгоритм
Алгоритм состоит из двух шагов: создание гистограмма а затем рендеринг гистограммы.
Создание гистограммы
Сначала выполняется итерация набора функций, начиная с случайно выбранной точки. P = (P.x, P.y, P.c), где третья координата указывает текущий цвет точки.
- Набор функций пламени:
На каждой итерации выбирайте одну из приведенных выше функций, где вероятность того, что Fj выбран пj. Затем вычисляется следующая итерация п применяя Fj на (P.x, P.y).
Каждая отдельная функция имеет следующий вид:
где параметр шk называется весом вариация Vk. Дрейвс предлагает[4] это все : s неотрицательны и в сумме равны единице, но реализации, такие как Apophysis, не налагают этого ограничения.
Функции Vk представляют собой набор предопределенных функций. Несколько примеров[4] находятся
- V0(Икс,у) = (Икс,у) (Линейный)
- V1(Икс,у) = (грех Иксгрех у) (Синусоидальный)
- V2(Икс,у) = (Икс,у)/(Икс2+у2) (Сферический)
Цвет ПК точки смешивается с цветом, связанным с последней примененной функцией Fj:
- P.c: = (P.c + (Fj)цвет) / 2
После каждой итерации обновляется гистограмма в точке, соответствующей (P.x, P.y). Это делается следующим образом:
гистограмма[Икс][у][ЧАСТОТА] := гистограмма[Икс][у][ЧАСТОТА]+1гистограмма[Икс][у][ЦВЕТ] := (гистограмма[Икс][у][ЦВЕТ] + п.c)/2
Поэтому цвета на изображении будут отражать, какие функции использовались для доступа к этой части изображения.
Визуализация изображения
Для повышения качества изображения можно использовать суперсэмплинг для уменьшения шума. Это включает в себя создание гистограммы большего размера, чем изображение, поэтому каждый пиксель имеет несколько точек данных для извлечения.
Например, создание гистограммы с ячейками 300 × 300, чтобы нарисовать изображение размером 100 × 100 пикселей. Каждый пиксель будет использовать группу сегментов гистограммы 3x3 для вычисления своего значения.
Для каждого пикселя (х, у) в окончательном изображении выполните следующие вычисления:
frequency_avg[Икс][у] := average_of_histogram_cells_frequency(Икс,у);color_avg[Икс][у] := average_of_histogram_cells_color(Икс,у);альфа[Икс][у] := журнал(frequency_avg[Икс][у]) / журнал(frequency_max); // frequency_max - максимальное количество итераций, попадающих в ячейку гистограммы.final_pixel_color[Икс][у] := color_avg[Икс][у] * альфа[Икс][у]^(1/гамма); // гамма - это значение больше 1.
Вышеупомянутый алгоритм использует гамма-коррекция чтобы цвета казались ярче. Это реализовано, например, в программном обеспечении Apophysis.
Чтобы еще больше повысить качество, можно использовать гамма-коррекцию для каждого отдельного цветового канала, но это очень тяжелое вычисление, поскольку журнал функция медленная.
Упрощенный алгоритм мог бы позволить яркости линейно зависеть от частоты:
final_pixel_color[Икс][у] := color_avg[Икс][у] * frequency_avg[Икс][у]/frequency_max;
но это приведет к потере деталей некоторых частей фрактала, что нежелательно.[4]
Оценка плотности
Алгоритм пламени похож на Моделирование Монте-Карло, причем качество пламени прямо пропорционально количеству итераций моделирования. Шум, возникающий в результате этой стохастической выборки, можно уменьшить, размытие изображение, чтобы получить более гладкий результат за меньшее время. Однако не следует терять разрешение в тех частях изображения, которые получают много выборок и поэтому имеют небольшой шум.
Эту проблему можно решить с помощью адаптивного оценка плотности для повышения качества изображения при минимальном времени рендеринга. FLAM3 использует упрощение методов, представленных в * Адаптивная фильтрация для прогрессивного рендеринга изображений Монте-Карло *, документ, представленный на WSCG 2000 Фрэнк Суйкенс и Ив Д. Виллемс. Идея состоит в том, чтобы изменить ширину фильтра. обратно пропорциональный к количеству имеющихся образцов.
В результате области с небольшим количеством образцов и высоким уровнем шума становятся размытыми и сглаженными, но области с большим количеством образцов и низким уровнем шума остаются нетронутыми. Увидеть https://github.com/scottdraves/flam3/wiki/Density-Estimation.
Не все реализации Flame используют оценку плотности.
Смотрите также
- Апофиз, редактор фрактального пламени с открытым исходным кодом для Microsoft Windows и Macintosh.
- Хаотика, коммерческий редактор фракталов, который поддерживает flam3, Apophysis и другие обобщения.
- JWildfire, многоплатформенный редактор фрактального пламени с открытым исходным кодом, написанный на Java.
- Электрическая овца, заставка, созданная изобретателем фрактального пламени, которая отображает и отображает их с Распределенных вычислений.
- GIMP, а свободное программное обеспечение, мульти ОС манипулирование изображениями программа, которая может генерировать фрактальное пламя.
- FraxFlame, входит в состав КПТ (Электроинструменты Кая ) 5 и одно из трех фрактальных приложений в коллекции KPT 5. KPT 5 - это плагин для Photoshop, Photo-Paint, PhotoImpact и других редакторов растровой графики.
использованная литература
- ^ Митчелл Уайтлоу (2004). Метакреация: искусство и искусственная жизнь. MIT Press. С. 155.
- ^ а б «Информация о программном обеспечении Apophysis». Архивировано из оригинал на 2008-09-13. Получено 2008-03-11.
- ^ Крис Геман и Стив Рейнке (2005). Самый острый момент: анимация в конце кино. YYZ Книги. 269 с.
- ^ а б c «Алгоритм фрактального пламени» (PDF). (22,5 МБ)