Post APJDXrdIeTVVx2NdXU by s_gruppetta@qoto.org
 (DIR) More posts by s_gruppetta@qoto.org
 (DIR) Post #APJDXlUvShFAvKPrea by s_gruppetta@qoto.org
       2022-11-05T21:36:29Z
       
       0 likes, 0 repeats
       
       What's an image made of?There are many correct answers.But the most fascinating one is: << sines & cosines >>Read on if you're intrigued👇🧵🪡#python #images #fourier/1
       
 (DIR) Post #APJDXlyhfz3yPgLe4G by s_gruppetta@qoto.org
       2022-11-05T21:37:55Z
       
       0 likes, 0 repeats
       
       Any image can be reconstructed from a series of sinusoidal gratings.A sinusoidal grating looks like this…#sinusoidal #grating/2
       
 (DIR) Post #APJDXmPI58KXk8msVc by s_gruppetta@qoto.org
       2022-11-05T21:38:54Z
       
       0 likes, 0 repeats
       
       It’s called a sinusoidal grating because the grayscale values vary according to the sine function.If you plot the values along a horizontal line of the grating, you’ll get a plot of a sine function/3
       
 (DIR) Post #APJDXmqaReAH6nYg3U by s_gruppetta@qoto.org
       2022-11-05T21:39:27Z
       
       0 likes, 0 repeats
       
       Sinusoidal gratings can have different orientations…/4
       
 (DIR) Post #APJDXnGos79GQ9pcwa by s_gruppetta@qoto.org
       2022-11-05T21:39:59Z
       
       0 likes, 0 repeats
       
       …different amplitudes…
       
 (DIR) Post #APJDXnipBzY9p0vzay by s_gruppetta@qoto.org
       2022-11-05T21:40:52Z
       
       0 likes, 0 repeats
       
       …and different frequencies—these are spatial frequencies, not temporal ones/6
       
 (DIR) Post #APJDXo6Dn0GUzZsg40 by s_gruppetta@qoto.org
       2022-11-05T21:41:19Z
       
       0 likes, 0 repeats
       
       There's one more parameter that defines a sinusoidal grating: the phase. Gratings with a different phase are shifted with respect to each other…/7
       
 (DIR) Post #APJDXoXAApoeL8UC3c by s_gruppetta@qoto.org
       2022-11-05T21:42:37Z
       
       0 likes, 0 repeats
       
       You can create a 2D sinusoidal grating in #Python using #NumPy and display it using #matplotlib /8
       
 (DIR) Post #APJDXozAUiDXjzaYi0 by s_gruppetta@qoto.org
       2022-11-05T21:43:21Z
       
       0 likes, 0 repeats
       
       Or even better, you can use a function of both x and y to make any grating/9
       
 (DIR) Post #APJDXpTefMbVGXquEC by s_gruppetta@qoto.org
       2022-11-05T21:44:00Z
       
       0 likes, 0 repeats
       
       You can find the parameters of a sinusoidal grating by using the 2D #FourierTransform.The dots shown contain the amplitude and phase of the grating. Their position from the centre gives the frequency, and their orientation represents the orientation of the grating./10
       
 (DIR) Post #APJDXpxQseQIktmgds by s_gruppetta@qoto.org
       2022-11-05T21:44:21Z
       
       0 likes, 0 repeats
       
       Now, if you have lots of gratings superimposed on each other, the #FourierTransform gives you a pair of dots for each of the components/11
       
 (DIR) Post #APJDXqKTUyr3uMZ5Ye by s_gruppetta@qoto.org
       2022-11-05T21:45:07Z
       
       0 likes, 0 repeats
       
       Now, here’s the “magical” part of #Fourier theory.Any image is made up of lots of sinusoidal gratings. So, the 2D Fourier Transform of an image gives you thousands of pairs of dots, and each pair represent a sinusoidal grating./12
       
 (DIR) Post #APJDXqnBmDp7LQ01JY by s_gruppetta@qoto.org
       2022-11-05T21:45:35Z
       
       0 likes, 0 repeats
       
       And therefore, you can reconstruct the image by adding all of those sinusoidal gratings together.The more gratings you add, the closer the result is to the actual image/13
       
 (DIR) Post #APJDXrCMGdxMbTm7Xs by s_gruppetta@qoto.org
       2022-11-05T21:46:06Z
       
       0 likes, 0 repeats
       
       Here's another example/14
       
 (DIR) Post #APJDXrdIeTVVx2NdXU by s_gruppetta@qoto.org
       2022-11-05T21:46:35Z
       
       0 likes, 0 repeats
       
       and another one…
       
 (DIR) Post #APJDXs5IyLuPLtU0Bs by s_gruppetta@qoto.org
       2022-11-05T21:47:01Z
       
       0 likes, 0 repeats
       
       There's a lot more than can fit in a single thread.If you want to read more detail, and go through the step-by-step writing of the code to decompose & recostruct *any* image, read full article here: #coding #2dfourierimages #2dfouriertransform #fourier /16https://thepythoncodingbook.com/2021/08/30/2d-fourier-transform-in-python-and-fourier-synthesis-of-images/
       
 (DIR) Post #APJDXsTPWjBuYelFlQ by s_gruppetta@qoto.org
       2022-11-05T21:48:08Z
       
       0 likes, 0 repeats
       
       So, this thread could serve as my  my #introductionI'm Stephen. I used to be a physicist (as you can guess from the thread above) but now I focus on communicating about Python and programming and teaching codingYou can expect more varied content from me, all related to #programming in #Python, from science-y stuff like this, to fun animations using the `turtle` module (no not those boring ones!) and general Python for those learning to code at beginner and intermediate levels
       
 (DIR) Post #APJDXszJc6iC9bgjUe by s_gruppetta@qoto.org
       2022-11-05T21:49:10Z
       
       0 likes, 0 repeats
       
       You'll find me easily on Twitter too if you're on there as well. That's a bigger account and get's a lot of interesting conversations going with others in the #Python worldYou can see the sort of things I'm interested it there (until this timeline fills up a bit): https://twitter.com/s_gruppetta_ct