Фрактал Буддхаброта

Я пытаюсь реализовать buddhabrot fractal. Я не могу понять одно: все реализации, которые я проверял, выбирают случайные точки на изображении для вычисления пути выхода частиц. Почему они это делают? Почему бы не перебрать все пиксели?

Какую цель выполняют слуховые точки? Больше очков делает лучшие снимки, поэтому я думаю, что перебирать все пиксели делает лучшую картинку - я здесь не прав?

Из моих тестовых данных:

Работа на 400x400 картинах. Таким образом, 160 000 пикселей для повторения, если я все время перейду.

Используя случайную выборку, Картинка только начинает формироваться после 1 миллиона очков. Хорошие результаты показывают около 1 миллиарда случайных точек, для вычисления которых требуется несколько часов.

Ответы

Ответ 1

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

Я изобретатель техники, поэтому вы можете мне доверять.: -)

Ответ 2

То же самое справедливо и для фракталов пламени: курица Будды - это поиск "аттракторов", поэтому, даже если вы начинаете со случайной точки, предполагается, что она довольно быстро сходится к этим привлекательным кривым. Обычно вы избегаете рисования первых 10 пикселей на итерации или так или иначе, поэтому исходная точка не имеет особого значения, НО, чтобы избежать повторения одного и того же вычисления дважды, случайная выборка намного лучше. Как уже упоминалось, это устраняет риск возникновения артефактов.

Но наиболее важной особенностью случайной выборки является то, что она имеет все уровни точности (теоретически, по крайней мере). Это очень важно для фракталов: они имеют детали на всех уровнях точности и, следовательно, требуют ввода всех уровней.

Ответ 3

Хотя я не 100% осознаю, какова будет точная причина, я бы предположил, что это больше связано с эффективностью. Если вы собираетесь перебирать каждую точку несколько раз, она будет тратить много циклов обработки, чтобы получить картину, которая может выглядеть не намного лучше. Выполняя случайную выборку, вы можете уменьшить объем работы, которую необходимо выполнить, и при достаточно большом размере выборки получить результат, который трудно "отличить" от итерации по всем пикселям (с визуальной точки зрения).

Ответ 4

Возможно, это какой-то метод метод Монте-Карло, так что да, перешагнув все пиксели, получится идеальный результат, но будет ужасно время потребляя.

Почему бы вам просто не попробовать и не посмотреть, что происходит?

Ответ 5

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

Вы можете "перебирать все пиксели", но поскольку каждый пиксель на самом деле является некоторой квадратной областью с размерами dx * dy, вы будете использовать только num_x_pixels * num_y_pixels для расчета и получать очень зернистые результаты.

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