Skip to content

An exploration of the FFT algorithm and some applications of it.

Notifications You must be signed in to change notification settings

Sn00pyW00dst0ck/project_freedom

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

47 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Project Freedom : Merging Audio & Images With FFT

Build Status Reports Build Status

Project Freedom is a easy to use CLI program that users can interact with in order to perform their own experiments with the Fast Fourier Transform (FFT) and related operations on both images and audio files.

Basic filtering operations are supported for images and audio, and there are numerous ways to visualize how the files have changed and preview those changes.

This project is implemented in Python, and supports building on Python versions 3.9-3.12 (though it was only tested on version 3.12). It relies on Numpy, Matplotlib, Scipy, and PyGame.

To Use

Ensure that a Python version between 3.9 and 3.12 is installed and that the pip package manager is installed.

To install this program, execute the following commands from a terminal on a Linux machine: git clone https://github.com/Sn00pyW00dst0ck/Carpool-Creator.git cd project_freedom pip3 install -r requirements.txt

To run the program, execute the following command from within a Linux terminal in the root of the repository: python3 ./src/main.py

Then, follow the prompts within the terminal to experiment with the FFT.

Do not, under ANY circumstances, run this program from anywhere other than the root directory of the repository; otherwise files may be read from invalid locations causing the program to crash.

While this program should work on a Windows machine, it was developed for and tested on Linux in Python version 3.12 and that is the environment to expect best results for.

Some Sample Image Outputs

Project Freedom was utilized to create the following visualizations image mergings and audio transformations. For more information about these mergings, see the Extended Report.

Alt text Alt text Alt text
Alt text Alt text Alt text
Alt text Alt text Alt text
Alt text Alt text Alt text

To Setup For Development

To setup for development, follow the same directions for installation listed above.

To run unit tests, use: python3 -m unittest

Currently, unit testing is minimal.

Potential Development Opportunities

  1. Make a similar processor class for video files, potentially with an application for hybridizing them similar to images.
  2. It may be possible to create a hybridizer for audio files similar to the one for the images, though my testing was unsuccessful on this front.
  3. Utilize machine learning to automatically detect the best methods to hybridize images and combine audio files.
  4. Improve the robustness of the unit tests.

Inspirations & Accredations:

The following resources inspired this project:

  1. https://kryakin.site/am2/Stein-Shakarchi-1-Fourier_Analysis.pdf
  2. https://jeremykun.com/2014/09/29/hybrid-images/
  3. https://cmtext.indiana.edu/synthesis/chapter4_convolution.php#:~:text=Convolution%20is%20a%20method%20of,not%20share%20will%20be%20minimized.

The following resources were utilized during the development of this project:

  1. https://pixabay.com/sound-effects/search/ir/
  2. https://www.pygame.org/docs/
  3. https://numpy.org/doc/stable/index.html
  4. https://docs.scipy.org/doc/scipy/reference/main_namespace.html
  5. https://ccrma.stanford.edu/~jos/st/Matrix_Formulation_DFT.html
  6. https://en.wikipedia.org/wiki/Parseval%27s_theorem
  7. https://users.metu.edu.tr/ccandan/pub_dir/Eig_Structure_DFT_IEEE_SPM_Column_March2011.pdf
  8. https://vanhunteradams.com/FFT/FFT.html#The-Cooley-Tukey-FFT
  9. https://faculty.washington.edu/seattle/physics541/%202010-Fourier-transforms/history-3.pdf

About

An exploration of the FFT algorithm and some applications of it.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published