Graphics & Programming

The possibilities of image processing and computer graphics are quite amazing. The combination of code and graphics has always fascinated me and during my studies I attended several courses on this topic and would like to show some results here.

Black and White Levels in Blender's Compositing Nodes

To "scratch a personal itch" I wrote a small addition to Blender's RGB curve node to add the possibility of setting black and white levels.

rgbcurves.png: 151x262 (8k)
Blender RGB Curves Node

My patch (#7891 in the patch tracker) was committed on 2008-01-07 and was my first code contribution to an open source project. Though it is a tiny bit of source code, its usefulness is substantial and I am quite proud of it.

Setting black and white levels is extremely useful for color correction work. Due to Blender's high internal color precision, it's node based image compositor is very well suited for such tasks. While I was using it to correct the green-blue color cast in underwater photos I quickly realized that the work flow could be sped up enormously with the possibility to define black and white levels in the RGB curve node. Luckily (for me) the functionality itself was already present in Blender's code, so my patch really only makes this functionality available in the node GUI.

Besides the code I also contributed the corresponding documentation in Blender's documentation wiki.

Image Processing Algorithms

harris1.png: 362x254 (5k)
Harris Corner Detector
zebra_kirsch.jpg: 256x256 (19k)
Kirsch Edge Detector
hough.jpg: 500x375 (39k)
Hough Transform (Lines)
hough_akku.jpg: 512x626 (29k)
Corresponding Hough Accumulator

During the course "Bildverarbeitung 1" (image processing 1) we implemented a number of image processing algorithms using Java and ImageJ as a framework.

The implemented algorithms ranged from basic image processing techniques such as histogram manipulations and image convolution to more interesting techniques such as edge and corner detection or feature detection using Hough transforms.

To the right you can see some example output from some of the more interesting algorithms, and the complete source code written during the course can be downloaded here (ZIP, 55KB).


Introduction to Computer Graphics

gdv_2.png: 706x630 (19k)
gdv_3.png: 706x630 (10k)
gdv_4.png: 706x630 (15k)
gdv_5.png: 706x630 (33k)

An inspiring course taught by Frieder Nake (summer term 2007) introducing the basic concepts of 3D computer graphics using OpenGL and C++. The result was a small interactive application to try out various OpenGL techniques. To the right are some sample screen shots of this application in action (because images are prettier to look at than source code).

Because the course was about very low level basics of 3D graphics such as data structures for mesh representation, the images do not look very impressive - but knowing the fundamentals is invaluable in my opinion, even if the results do not look all that "stylish".


Proseminar Image Processing - Image Acquisition

Full paper (PDF, 1275KB) The name says it all: A brief introduction to image acquisition written for the proseminar image processing held by Prof. Dr. Björn Gottfried during summer semester 2007.

Geared towards laymen in image processing I tried to give an interesting an broad overview rather than diving deeply into scientific details.