colorednoise icon indicating copy to clipboard operation
colorednoise copied to clipboard

2D colored noise?

Open yxiao1996 opened this issue 2 years ago • 7 comments

Hello there,

First of all thanks for the amazing library. I have a usecase where I need 2D colored noise. I suspect that simply generating a long array and resize it into a 2D matrix is not what I want as the power spectra on the second axis may not be correct. Curious if you have any suggestion on this?

Thanks a lot, Yu

yxiao1996 avatar Mar 11 '22 00:03 yxiao1996

Hi @yxiao1996,

thank you for the interesting question! Sorry it took me so long to answer, I am quite busy ATM and I wanted to look into this case a bit before answering since I never needed it myself.

  • You are right that one cannot simple resize the output of the existing 1D function.
  • It is possible to modify the algorithm to create even n-dimensional noise with images as a special case.
  • I believe I mostly figured it out, maybe you can help me with testing. Is this going in the right direction? https://github.com/felixpatzelt/colorednoise/blob/feat-2d-noise/notebooks/2d-colored-noise.ipynb

felixpatzelt avatar Mar 13 '22 22:03 felixpatzelt

Hi Felix, thanks a lot! I will test it.

yxiao1996 avatar Mar 17 '22 17:03 yxiao1996

Thanks for the response.

I have looked into it a bit more and improved some limitations of the prototype. However, I also found a bug that isn't fixed yet: In the 1-d case, the real valued fft is used, which is faster. The rfft2 and rfftn functions of numpy, however, only do the real valued fft over the last dimension and the complex one over the others. Therefore we have to choose the size of the random amplitudes and phases that are generated accordingly. I.e. I believe that we need to generate values for twice as many frequencies but the spectrum will be symmetrical since we want a real output. This stuff is currently not my day-to-day work anymore so I have to do it carefully :)

I am unfortunately unable to work on this for the next three weeks but I would be interested to finish a 2d generator as a library feature in mid to late April.

Feel free to post some updates or to create your own prototype or a PR and share it here, I will look at it as soon as I have time.

felixpatzelt avatar Mar 17 '22 21:03 felixpatzelt

Hello! I have somehow stumbled upon the same question of generating pink noise 2d images. Have there been any updates so far?

EDIT: removed the StackOverflow question since it's already been referenced in the ipython notebook above

man-shu avatar Jan 26 '23 19:01 man-shu

Hi @man-shu, I didn't hear back anything last year and so I wasn't sure that there is much interest in the feature. I could have another look as I remember it being almost done.

felixpatzelt avatar Jan 30 '23 08:01 felixpatzelt

Yes, please! If you have some time...

man-shu avatar Jan 30 '23 13:01 man-shu

Did anything came up since then. I am also looking for 2D coloured noise generator. I believe there is an implementation in matlab, but I would of course prefer an implementation in python.

DennisDannecker avatar Mar 28 '24 17:03 DennisDannecker