Fourier and Images is a project that tries to draw images with circles.
Python 3.x
Matplotlib
OpenCV
Scipy
Numpy
ImageMagick # Only if you want to save to a gif!
Getting one set of circles with one image:
im = Image("pikachu.png", (200, 200))
path = im.sort()
Fourier(path).draw(1000, speed = 8, mode = 1, save = False)
Pikachu
Getting two sets of circles with one image:
im = Image("einstein.jpg", (200, 200))
path = im.sort()
Fourier(path).draw(1000, speed = 8, mode = 2, save = False)
Note that the circle on the bottom left is NOT drawing any particular image.
Einstein
Getting two set of circles with two image:
im_1 = Image("images/formula.jpeg", (200, 200))
im_2 = Image("images/dickbutt.jpg", (200, 200))
path_1 = im_1.sort()
path_2 = im_2.sort()
# Note setting mode to 2 here doesn't change anything
Fourier(path_1, path_2).draw(1000, speed = 8, mode = 1, save = False)
Dickbutt and Euler's Formula
Getting visualization of how number of Fourier Series terms affects the image:
im = Image("images/obama.jpg", (200, 200))
path = im.sort()
Fourier(path).visualize(save = False)
Obama
Too big of an image might cause your computer to freeze! Resizing the image to (200, 200) is a safe choice and anything above (500, 500) starts to get a bit sketchy.
Anything above 1000 n_approximations takes a bit of time to animate. Recommend speed = 8. In this setting, saving the animation takes about 10 minutes.
- Use FFT to calculate the Fourier Series coefficients
- Improve edge detection algorithm
- Improve the function(s) that order the points from the edge detection algorithm
Have fun!