Fourier and Images is a project that tries to draw images with circles.
pip3 install -r requirements.txt
- Modify
main.py
to reflect where your images are. python3 main.py
Note that you'll need ImageMagick only if you want to save stuff to a gif.
Getting one set of circles with one image:
im = Image("pikachu.png", (200, 200))
path = im.sort()
period, tup_circle_rads, tup_circle_locs = Fourier(n_approx = 1000, coord_1 = path).get_circles()
Plot(period, tup_circle_rads, tup_circle_locs, speed = 8).plot()
Pikachu
Getting two sets of circles with one image:
im = Image("einstein.jpg", (200, 200))
path = im.sort()
period, tup_circle_rads, tup_circle_locs = Fourier(n_approx = 1000, coord_1 = path).get_circles(mode=2)
Plot(period, tup_circle_rads, tup_circle_locs, speed = 8).plot()
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()
period, tup_circle_rads, tup_circle_locs = Fourier(n_approx = 1000, coord_1 = path_1, coord_2 = path_2).get_circles()
Plot(period, tup_circle_rads, tup_circle_locs, speed = 8).plot()
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()
period, tup_circle_rads, tup_circle_locs = Fourier(coord_1 = path).get_circles()
Plot(period, tup_circle_rads, tup_circle_locs, visualize = True).plot()
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!