Patrick Bader's Blog a blog about software development


Paper “On Language Support for Application Scalability”

I finally finished my work on a paper for the lecture "Ultra-large scale Sites". The paper is about programming language requirements for building highly scalable systems.

The paper can be downloaded here.


Upgrading PS3 Eye Camera and Blob Detection

As noted in my last posting, the images of the modified Eye camera were quite blurry. That was the case because the IR filter was missing and so the camera got out of focus. I was asking myself for the reason, since the filter is not a lense at all. Glass has a different refraction index than air resulting in diagonal rays becoming offset. I tried to visualize the effect in the following picture:


More on that can be found on wikipedia.

I have finally managed to correct this issue. I had to find a replacement for the filter. It had to be of glass or a similar material with the same width as the filter. Quite tough to find a piece of glass or plastic with a depth of about a millimeter. Suprisingly the cap of a CD case did the job as a filter replacement. I first sawed a piece off and afterwards filed it into shape.

The room was quite dark but the results are  better than without the replacement, I think:

PS3 Eye Capture with IR filter replacement

PS3 Eye Capture with IR filter replacement

Now the second part of this posting, blob detection. Blob detection is about finding bright or dark spots in an image. I used some kind of global flood fill algorithm to find the blobs. Sadly I was not able to programm this part in the pixel shader so I implemented an algorithm on the CPU. On my laptop CPU power is fairly restricted so it took me a few attempts to do blob detection at 60 fps. The algorithm is a scanline algorithm which searches for horizontal lines of bright pixels. After the complete image has been scanned, one or more connected lines become a blob. The blob center is the barycenter of the pixels, at the moment without regard of their brightness. I have to test this algorithm for robustness, but can already give you a first impression:

A first test of blob detection. The red dots are centers of detected blobs.

A first test of blob detection. The red dots are centers of detected blobs.

Hope I could help anyone with the camera focus problem. Maybe I release the source code of the project when it is out of experimental stage, or to say it straight: When it's a bit less messy. 😉

Tagged as: No Comments

Edge detection with PS3 Eye cam

I recently bought a Playstation Eye camera because I would like to get my hands on multitouch surfaces. At first, I disassembled my camera according to Peter Kirn's instruction videos to remove the IR filter. I was quite lucky since I bought the cam at Saturn in Germany and did not know that there are two versions of the cam. The filter of the one mostly sold in the USA can be removed easily, as seen in the video. The other version cannot be modified that way, so the complete lens has to be exchanged.
With the help of Alex Popovich's Driver which nicely works on Windows 7 64 bit edition and two days of learning some Direct3D programming, I was finally able to render the captured images on screen. After some experimenting with HLSL I had my very first realtime edge detector running.
The detection is quite simple, only a simple 3x3 filter matrix is applied to each frame. Here is the matrix:

0.0,   -1.0,    0.0,
F=  -1.0,    4.0,   -1.0,
0.0,   -1.0,    0.0

And some threshold operations afterwards leads to these results:

Screenshot without edge detection

Screenshot with edge detection enabled

As you can see, the picture is quite blurry which has a negative impact on corner detection. That is because of the missing IR filter, now I am unable to set the focus right, maybe I can put a piece of glass into the lens to correct the error.


… but how is it called in English?

English is not my mother tounge as you can surely guess. So I often have to translate some words from German to English and vica verse or look up words I don't know. I had a nice tool called Babylon Translator. It was just a trial version and ceased to work after the trial period. After living without a translation program for some years and having to look up words in online dictionaries I decided to write a translation program myself since I did not want to open my browser everytime I wanted to look up a word.
The result of a few C# programming hours was a little tool called Translator. At the moment it uses the dictionary at to look up words maybe some more dictionaries will follow.
You can find the tool and source code here.

Have fun testing it and don't forget to give some feedback


Hello Web2.0!

Now, I've got my own domain and blog running. Setting up everything was easier than I thought...

I know this site surely needs some customization and content so stay tuned for some news about projects that I am working on, my studies and other things I'm spending time on.

Filed under: Uncategorized 2 Comments