代码之家  ›  专栏  ›  技术社区  ›  Hamza Yerlikaya

佛氏分形

  •  15
  • Hamza Yerlikaya  · 技术社区  · 15 年前

    我正在努力实施 buddhabrot fractal . 我不明白一件事:我检查过的所有实现都会在图像上随机选取点来计算粒子逃逸的路径。他们为什么这样做?为什么不检查所有像素?

    随机点的作用是什么?更多的点会产生更好的图片,所以我认为所有像素都会产生最好的图片-我错了吗?

    根据我的测试数据:

    正在处理400x400图片。因此,如果我遍历所有区域,需要迭代160000个像素。

    使用随机抽样, 这张照片在100万点之后才开始成形。好的结果显示了大约10亿个随机点,这需要几个小时来计算。

    5 回复  |  直到 14 年前
        1
  •  32
  •   Melinda Green    15 年前

    随机抽样优于网格抽样有两个主要原因。首先,因为网格采样将在结果图像中引入网格状瑕疵。第二个原因是网格采样可能无法为聚合的结果图像提供足够的采样。如果在完成栅格过程后,需要更多的采样,则需要使用稍微偏移的栅格进行另一个过程(以免对相同的点重新采样),或者切换到更精细的栅格,这可能会导致所做的工作超出需要。随机采样提供非常平滑的结果,您可以在图像收敛或对结果满意后立即停止该过程。

    我是这项技术的发明者,所以你可以相信我。:-)

        2
  •  3
  •   Per Alexandersson    15 年前

    所以,即使你从一个随机点开始,它也会很快收敛到这些吸引人的曲线。通常避免在迭代中绘制前10个像素,因此起点并不相关,但是,为了避免重复相同的计算,随机采样要好得多。如前所述,它消除了人工制品的风险。

    但随机抽样最重要的特点是它具有所有级别的精度(至少在理论上)。这对于分形非常重要:它们具有所有精度级别的详细信息,因此也需要所有级别的输入。

        3
  •  1
  •   Streklin    15 年前

    虽然我不是100%知道确切的原因是什么,但我认为这更多地与效率有关。如果要对每个点进行多次迭代,则需要浪费大量的处理周期才能得到 看起来不太好。通过进行随机采样,您可以减少需要完成的工作量,并且如果样本量足够大,仍然会得到难以“区分”的结果,而不是(从视觉角度)在所有像素上进行迭代。

        4
  •  0
  •   shoosh    15 年前

    Monte-Carlo method 因此,是的,检查所有像素将产生完美的结果,但会非常耗时。

    你为什么不试试看会发生什么?

        5
  •  0
  •   mark    10 年前

    随机抽样用于尽可能接近精确解,在这种情况下,由于问题的统计性质,无法精确计算精确解。

    您可以“遍历所有像素”,但由于每个像素实际上都是尺寸为dx*dy的正方形区域,因此您只能使用num_x_pixels*num_y_pixels点进行计算,并得到非常粗糙的结果。

    另一种方法是使用非常大的分辨率,并在计算后缩小渲染比例。这将提供某种“系统”渲染,其中最终渲染的每个像素被划分为等量的子像素。