我已经完成了用于控制成像硬件的软件的工作,例如显微镜,有时很难有时间。这意味着很难测试需要访问仪器的新/不同算法。我想创建一个可用于某些测试目的的合成仪器,我正在考虑使用某种分形图像生成来创建合成图像。关键是能够以某种确定的方式在许多不同的“放大率”和位置生成特征。这是因为正在测试的一些算法可能需要平移/缩放并重新定位先前“成像”的区域。在这些基础图像上,我可以应用任何适当的仪器“缺陷”(焦点,噪声,饱和度等)。
我对如何为基本图像选择/实现良好的分形算法感到有点失落。任何帮助,将不胜感激。优选地,它具有以下品质:
第2项很重要,例如一个具有大光滑/空白区域的mandelbrot集可能不太好,因为控制合成范围的软件可能属于这些区域之一。
到目前为止,我已经想过使用类似mandelbrot的东西,但随机移动/旋转/缩放并合并两个或更多分形集以获得更完整的“特征”覆盖。
我还看过分形火焰算法的图像,它们似乎生成了可能有用的图像(很好看)。
最后,我想过使用某种暂停粒子模拟运行来生成更像细胞的图像(我当前的成像目标),但我不确定这种方法是否可以用于其他要求。
编辑: @Jeffrey - 只要我完全控制PSRNG,听起来某种地形生成可能就是这样。也许我可以使用一些存储的初始种子+ x位置+ y位置来生成我的随机数?但是,我不确定如何始终如一地生成跨越尺度的地形,除了你提到的,在最大尺度上创建基础地形,并且在某些预定的“放大率”下,为这个基础添加新的确定性伪随机变化。 。我还必须要小心何时生成下一级地形,因为如果我过于激进,我必须适当地生成和整合结果以便在较粗糙的水平显示...这就是为什么我最初倾向于更“传统”的分形,因为这种更精细尺度的整合将更加隐含地处理(我认为)。
答案 0 :(得分:0)
分形地形创建算法背后的想法是分别在每个尺度上构建图像。对于风景来说,这很简单:只需制作一小组高度值,然后随机设置它们。然后将其缩放到更大的数组,对值进行平均以使轮廓平滑,然后将小的随机量添加到这些值。然后将它放大,等等。原来的小疙瘩变成了山脉,它们充满了复杂的地形。
但是,这里提出的问题存在两个特殊困难。首先,您不希望存储任何这些值,因为它可能是巨大的。其次,每个尺度的特征与其他尺度的特征不同。
这些问题并非不可克服。
基本上,您可以将图像划分为网格,并使用确定性psedorandom数字建立网格中每个方块的关键特征。例如,每个方格可能具有一定密度的细胞类型。
在下一个放大级别,将每个方块细分为另一个网格,在网格上应用基于包含方形及其周围方块的值的渐变值。然后将伪随机变量应用于包含方形的网格坐标的种子。对于随机种子,无论图像被裁剪的位置如何,始终使用正在考虑的细分的直接包含正方形的坐标,以确保在多次运行中正确地重新创建它。
在某种放大水平下,随机值来自于粒子类型的密度到粒子位置。然后对于每个粒子,都有部分特征。然后介绍这些功能。
虽然需要任意左/右和上/下滚动,但每次移动帧时都必须计算当前场景上方所有放大级别的图像,以确保包含所有必要的功能。这样,图像可以从一个单元格滚动到另一个单元格而不会失去一致性。可以使用部分模拟来确保细胞或细胞特征不重叠。这可以以可重复的,确定的方式完成。
在添加随机变量之前,不要忘记在较高级别应用基于周围平方的平均值的平滑梯度。否则,突然的变化将使正方形本身出现在图像中!
这个答案有些漫无边际,可能令人困惑,但我现在最好解释一下。我希望它有所帮助!