मैंने एक व्याख्यान में एक प्रोफेसर का उल्लेख करने के बाद 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 हिट हैं)। –
जहां तक मुझे पता है, शोर का * रंग * दिए गए शोर के (शक्ति) स्पेक्ट्रम के बारे में कुछ कहता है। आपकी धारीदार छवि में अभी भी एक लाल शोर स्पेक्ट्रम हो सकता है। स्थानिक भिन्नता शोर लाल से संबंधित नहीं है, है ना? –
@AndrasDeak: लेकिन यह वास्तविक * शोर * (यानी यादृच्छिक) नहीं होगा। –