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