Можно использовать Perlin Noise для добавления некоторой неопределенности в набор 2D-координат (если набор представляет собой одну пару, это тоже нормально). Вы можете рассмотреть возвращенное значение шума (в диапазоне [-1, 1] для указанной библиотеки) вместе с некоторым фактором, чтобы определить, насколько сильно оно влияет на ваши входные координаты. Чем больше коэффициент, тем большее влияние шум оказывает на ваши данные. Вот один из самых простых возможных примеров:
from noise import snoise2 # Simplex noise for 2D points
x, y = 0.5, 0.3
factor = 0.1
n = snoise2(x, y)
print x + n * factor, y + n * factor
Мы также можем рассмотреть гораздо больший фактор и применить ту же идею к изображениям. Считая factor = 15
и округляя полученные координаты до ближайшего соседа, переходим от изображения слева к изображению справа:
![введите здесь описание изображения](https://i.stack.imgur.com/HI003.png)
![введите здесь описание изображения](https://i.stack.imgur.com/fbNmP.png )
Полный код для получения изображения следует. Факторы n1
и n2
использовались для получения "менее скучного" изображения.
import sys
from noise import snoise2
from PIL import Image
img = Image.open(sys.argv[1]).convert('L')
result = Image.new('L', img.size)
width, height = img.size
factor = 15
res = result.load()
im = img.load()
for x in xrange(width):
for y in xrange(height):
n1 = snoise2(x, y)
n2 = snoise2(y, x)
pt = [int(round(x + n1 * factor)), int(round(y + n2 * factor))]
pt[0] = min(max(0, pt[0]), width - 1)
pt[1] = min(max(0, pt[1]), height - 1)
res[x, y] = im[tuple(pt)]
result.save(sys.argv[2])
Конечно, это даже не касается того, как можно использовать Perlin Noise. В качестве другого примера, учитывая определенную функцию, вы можете «зашумить» входные данные и объединить их с упомянутым фактором для создания различных выходных данных. Например, вот результат выполнения этого для некоторой функции, основанной на косинусе:
![введите здесь описание изображения](https://i.stack.imgur.com/kf24I.gif)
person
mmgp
schedule
19.02.2013
random.gauss(x, noisiness)
- person voithos   schedule 19.02.2013