教授が講義でそれを述べた後、ちょうどred noiseの記事を読んだだけです。赤いノイズはどのように実装するのですか?
私の考えは、{0、...、255}の乱数で始めることでした。次に、{0、...、255}にランダムオフセットを追加して、最初の行を左から右へ終えます。 最初の行が終了すると、上と下の要素の平均値をとり、次のピクセルのランダムオフセットを追加します。
このようにして、画像を左から右、上から下に作成します。私はこのようにそれを実装しました
:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""Create a red noise RGB image of the dimensions you want."""
import numpy
import Image
import random
def create_red_noise(outfile, width, height, r=10):
"""
Create red noise RGB image
Parameters
----------
outfile : str
width : int
height : int
r : int
Random maximum offset compared to the last pixel
"""
array = numpy.random.rand(height, width, 3) * 255
for x in range(width):
for y in range(height):
if y == 0:
if x == 0:
continue
else:
for i in range(3):
array[y][x][i] = (array[y][x-1][i] +
random.randint(-r, r))
else:
if x == 0:
for i in range(3):
array[y][x][i] = (array[y-1][x][i] +
random.randint(-r, r))
else:
for i in range(3):
array[y][x][i] = (((array[y-1][x][i] +
array[y-1][x-1][i])/2.0 +
random.randint(-r, r)))
im_out = Image.fromarray(array.astype('uint8')).convert('RGBA')
im_out.save(outfile)
def get_parser():
"""Get parser object for create_random_image.py."""
from argparse import ArgumentParser, ArgumentDefaultsHelpFormatter
parser = ArgumentParser(description=__doc__,
formatter_class=ArgumentDefaultsHelpFormatter)
parser.add_argument("-f", "--file",
dest="filename",
help="write red noise image to FILE",
default="red-noise.jpg",
metavar="FILE")
parser.add_argument("-x", "--width",
dest="width",
default=1280,
type=int,
help="width of the image")
parser.add_argument("-y", "--height",
dest="height",
default=960,
type=int,
help="height of the image")
parser.add_argument("-o", "--offset",
dest="offset",
default=10,
type=int,
help="maximum offset compared to the neighbors")
return parser
if __name__ == "__main__":
args = get_parser().parse_args()
create_red_noise(args.filename, args.width, args.height, args.offset)
を与えるそれはクールに見えます。しかし、私はそれがこのように見えるはずだと思います:https://commons.wikimedia.org/wiki/File:Red.noise.col.png
私は何をやっていますか/どうすれば修正できますか?
ウィキペディアの画像では、重いフィルタリングがはっきりとわかります。滑らかで、ざらざらしたエッジはありません。有色ノイズは、通常、少なくともオーディオ領域では、高周波成分を減衰させることによって実現されます。私はあなたのコードを "修正する"方法を見ていない、あなたは正しいアプローチを見てください(私はそこにたくさんのGoogleヒットがあると確信しています)。 –
私が知る限り、ノイズの* color *は、与えられたノイズの(パワー)スペクトルについて何かを言います。あなたのストライプ画像には依然として赤いノイズスペクトルがあります。空間的な変化は、赤色のノイズとは関係ありません。 –
@AndrasDeak:しかし、それは本当の*ノイズ*(すなわち、ランダム)ではありません。 –