2D座標のコレクションに不確実性を追加するためにPerlinNoiseを使用することができます(コレクションが単一のペアである場合、それも問題ありません)。返されたノイズ値(指定されたライブラリの場合は[-1、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
して最近傍に丸め、左の画像から右の画像に移動します。

画像を取得するための完全なコードは次のとおりです。要因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])
もちろん、これはPerlinNoiseの使用方法を損なうものではありません。別の例として、特定の機能が与えられた場合、入力を「ノイズ化」し、前述の要素と組み合わせてさまざまな出力を作成できます。たとえば、これはコサインに基づく関数でそれを行った結果です。
