Image Processing

Following are the results from some of the 12 weekly projects done as part of the Digital Image class (Fall 2015) which focussed on a number of 2D image processing techniques. Most of the projects were done in C++ and a couple of them in Processing.

Manipulation of color channels in an image

The RGB channels of the source image are manipulated by means of interpolating cubic curves. As part of this project, I also wrote a code to visualize the parametric curve using OpenGL. It can be seen that the results from my implementation are very close to the results from Adobe Photoshop using the 'curves' feature.

Source image

After manipulation in green channel

Curve used for manipulation (generated from user inputs)

Similar attempt in photoshop

Video synthesis

The video below is created from a sequence of images generated by a code. The code generates concentric circles which enlarge over time. Then it applies different image processing techniques - motion blur and compositing operations such as color multiplication, color difference, maximum and minimum over two source images. The type of operation is particular for different areas between the concentric circles.

Output

Source images

Game of life – 2D cellular automata

John Conway’s – Game of Life. Based on the value of 2D Cellular Automata at each frame, the color value of output image’s pixel is alternated between two source images.

Output

Source images

Filtering with non-stationary kernels

John Conway’s – Game of Life. Based on the value of 2D Cellular Automata at each frame, the color value of output image’s pixel is alternated between two source images.

Motion blur

Dilation filter

Source images

Linear and affine transformations

For this project, simple transformations such as rotation, scaling, translation, bilinear warping, etc., using matrix operations in C++. Below are the results for sheer operation and perspective view of the image.

Perspective

Sheer

Source image