1

(我在理论计算机科学论坛上发布了同样的问题,但我怀疑它会得到很多关注,因为它更实用而不是理论)

我正在寻找一种算法,它可以让我生成一条线,就好像它是手工绘制的一样,给定一条样本线。

换句话说,我有一条线(一幅画)需要重新创建几次,就像人类在描图纸上描摹原始画作时所做的那样。

自然地,人类会将绘图与原件非常接近,但会出现一些小错误。所以我想知道是否存在会扭曲绘图的算法,以使结果看起来像一个人制作的追踪原件。

这是用于动画绘图的程序。

4

2 回答 2

2

唔。这是一个有趣的问题。我不知道 Perlin 噪音看起来有多逼真,

但在这里我已经包含了布朗运动类型噪声的测试用例(例如,当给定点的直线扰动 = 先前扰动的总和 + 具有零中心和某个 sigma 的高斯随机数时:

不同程度的摇晃

图像从左到右显示作为 sigma 函数的绘图(从左到右递减)

这是代码:

import numpy as np, numpy.random
import matplotlib.pyplot as plt
np.random.seed(1)
N = 1000
xs = np.arange(N)
thi =  6
sig =  0.00045
def getrand():
        return np.cumsum(np.random.normal(0, sig, size=len(xs)))
        # returns the cumulative sum of the set of random 
        # normally distributed numbers
plt.figure(1)
plt.plot(xs, getrand() * N, linewidth=thi, color='black')
plt.plot(xs, N + getrand() * N, linewidth=thi, color='black')
plt.plot(N + getrand() * N, xs, linewidth=thi, color='black')
plt.plot(getrand() * N, xs, linewidth=thi, color='black')
于 2012-09-17T18:15:52.433 回答
1

一种方法是使用 Perlin Noise。您可以在此处的答案中找到有用的链接:Perlin Noise for 1D?

于 2012-09-17T15:24:53.300 回答