1

我已经完成了用于控制成像硬件(例如显微镜)的软件的工作,这些软件有时很难花时间使用。这意味着很难测试需要访问仪器的新/不同算法。我想创建一种可用于某些测试目的的合成仪器,并且我正在考虑使用某种分形图像生成来创建合成图像。关键是能够以某种确定的方式在许多不同的“放大倍数”和位置生成特征。这是因为一些正在测试的算法可能需要平移/缩放和重新定位以前“成像”的区域。然后,我可以在这些基础图像上应用任何合适的仪器“缺陷”(焦点、噪声、饱和度等)。

我对如何为基础图像选择/实现一个好的分形算法有点茫然。任何帮助,将不胜感激。最好它具有以下品质:

  1. 快速渲染新的图像区域。
  2. 在尽可能多的位置和规模上进行相当广泛的“功能”覆盖。
  3. 具有确定性(但从随机起始参数初始化)。
  4. 能够调整以使图像看起来更像“真实”图像。

第 2 项很重要,例如具有大的平滑/空白区域的 mandelbrot 集可能不好,因为控制合成范围的软件可能属于这些区域之一。

到目前为止,我已经考虑过使用类似 mandelbrot 的东西,但随机移动/旋转/缩放和合并两个或更多分形集以获得更完整的“特征”覆盖。

我还看到了分形火焰算法的图像,它们似乎生成的图像可能有用(而且看起来很漂亮)。

最后,我考虑过使用某种暂停的粒子模拟运行来生成更像细胞的图像(我当前的成像目标),但我不确定这种方法是否可以满足其他要求。

编辑:@Jeffrey - 所以听起来某种地形生成可能是要走的路,只要我完全控制 PSRNG。也许我可以使用一些存储的初始种子 + x 位置 + y 位置来生成我的随机数?但是我不确定如何跨尺度一致地生成地形,除了,正如你提到的,以最理想的尺度创建基础地形,并在某些预先确定的“放大率”下向这个基础添加新的确定性伪随机变化. 我还必须小心何时生成下一级地形,因为如果我过于激进,我必须适当地生成和整合结果以在更粗略的级别上显示......这就是我最初的原因倾向于更“传统”的分形,

4

1 回答 1

0

分形地形创建算法背后的想法是分别构建每个比例的图像。对于景观来说很简单:只需制作一个高度值的小数组,然后随机设置它们。然后将其放大到一个更大的数组,对这些值进行平均以使轮廓平滑,然后将少量随机量添加到这些值中。然后按比例放大等等。原来的小颠簸已经变成了山脉,并且充满了复杂的地形。

但是,这里提出的问题有两个特别的困难。首先,您不想存储任何这些值,因为它可能会很大。其次,每个尺度的特征与其他尺度的特征不同。

这些问题并非不可克服。

基本上,您会将图像划分为一个网格,并使用确定性伪随机数确定网格中每个正方形的关键特征。例如,每个方格可能具有一定密度的细胞类型。

在下一个放大级别,将每个正方形细分为另一个网格,在网格上应用基于包含正方形及其周围正方形的值的值梯度。然后将伪随机变化应用于包含正方形网格坐标的种子。对于随机种子,无论图像在何处裁剪,始终使用所考虑的细分的直接包含正方形的坐标,以确保在多次运行中正确重新创建它。

在一定的放大率下,随机值从粒子类型的密度变为粒子位置。然后对于每个粒子,都有特定的特征。然后是这些功能上的功能。

尽管需要任意左/右和上/下滚动,但每次移动帧时都必须计算当前场景上方所有放大级别的图像,以确保包含所有必要的特征。这样,图像可以从一个单元格滚动到另一个单元格,而不会失去一致性。部分模拟可用于确保单元或单元特征不重叠。这可以以可重复的、确定性的方式完成。

并且不要忘记在添加随机变化之前基于更高级别的周围正方形的平均值应用平滑梯度。否则,突然的变化会使方块本身出现在图像中!

这个答案有点漫无边际,可能令人困惑,但我现在最好能解释一下。我希望它有帮助!

于 2011-03-09T00:09:09.040 回答