This assignment is crafted to accomplish several goals. First, to develop coding skills associated with the application of the FFT and inverse FFT as provided in OpenCV. Second, to develop some intuition for how supression of different parts of an image's power spectrum can radically alter the result. Finally, to make a distinctive and visually interesting image by employing your talents at generating different images and then combining these image based upon Fourier Domain 'filters'.


You are to write three custom pieces of OpenCV code which take as in put either a greyscale or a color image. The first two of these should be straight forward to write given what you have already seen in class. Of these, the first must take any image as input and generate the 'low-pass' filtered version of the input image. Deciding the exact nature of the low-pass filter is for you to determine through a combination of empirical experimentation and reading on your own. The second program is very similar to the first, just replace the term 'low-pass' with 'high-pass'. For the most part, you should consider this portion of the assignment a matter of mechanics.

The third program is mechanically similar internally because it will take the FFT of an input image. Also, as before, images will be generated as the inverse FFT of the input image. However, there the similarity with the first two programs ends. In this case, you need to be creative in your application of different filters and in association with your you take the resulting output images and re-combine them into a new single color output image.

A Visually Compelling Result

Ten out of one hundred points for this assignment will be purely subjective - is your output image visually striking. With that constraint in mind, here are some things to consider. It is almost inevitable that even if you write your third program to run on any input image, it will generate a compelling output image only for some and not for other input images. Therefore, while your code should not crash when given a different input image, you will only be graded on the output produced by the single image you choose as input.

Without overly specifying what you will want to do, here are a few thoughts. At a minimum, realize you will be manipulating the blue, green and red planes of the output image seperately. For example, think of each of these resulting from a different filtering of the input image. Going a bit further, keep in mind that changing color spaces may let you play more interesting games, just for example, modulating color saturation in areas of an image where there is strong high frequency content.

Image Ownership

While principles of fair use may well entitle you to use images available from the web for this educational project, when it comes to photographs such useage is a grey-area. More important, should you wish in any way to show off your result through public release of your artistic production, you would be in trouble. For example, no posting to a website or Facebook. Therefore, I strongly suggest you pick a starting image that is covered by the Creative Commons License or similiarly un-encombuered.

Teams and Grading

You are expected to work in pairs - teams - for this project. Unless worked out between yourselves and approved by me in advance, I strongly suggest you keep your partner from Assignment 1. The grading will be done in the same fashion as for Assignment 1, in face-to-face interviews with the instructor.