My first blog in a while.

9th September 2013


How Poverty Taxes the Brain →

I read this too!

21st August 2013


I’m like the Minotaur. Or maybe the dog.

I’m like the Minotaur. Or maybe the dog.

14th March 2011

Post with 9 notes

Fiducial tracking

For an art project, I am thinking of making a variation on the idea of manipulating objects, detecting them with a camera, and using their position and orientation to control a program (such as generating music). This is called fiducial tracking. This post surveys software available for this task.

I initially thought I could just detect QR codes. I found the ZXing library, which enjoys support from Google, apparently. It includes a website to generate QR codes. However, big problem: detection is too slow. 

I looked into ARToolKit and similar, which are strangely abandoned projects. I tried to compile some in Xcode 4 but they were too old. I also found ArUco, which uses OpenCV. It compiled but it was too slow. The fiducial markers for these look like simplified QR codes.

Then I ran into reacTIVison. I ran it and it worked great, it was really fast. The fiducial markers are custom designed, and there is a paper on their development. However, the license is strange and unsuitable. The reading software is GPL but the software to generate markers is closed source and the markers provided can only be used with reacTIVision.

I found that Karsten Schmidt (toxi) wrote a Processing program to generate fiducials: Fid.gen. Apparently these fiducials will work with reacTIVision. Then I found ofxFiducialFinder, part of ofxding written by Alain Ramos (ding), which is an addon for openFrameworks. This program is GPL and will probably work with the Fid.gen fiducials. I think that the combination of Fid.gen and ofxFiducialFinder will work for me.

The final thing that fits into this is Community Core Vision (CCV) from the NUI Group. They’ve gotten Google Summer of Code interns in the past, which is always a good sign. They don’t seem to have a recent build for OS X, so I started to play with the version from the repository, but I realized that they were using the same code as ofxFiducialFinder (I think). What CCV adds is finger tracking + fiducial support, and TUIO support.

To start I am ok with a desktop application (e.g. in openFrameworks) but I would like to run this in a browser. I am thinking of porting ofxFiducialFinder to Google Chrome’s Native Client, and using Flash to get the webcam data (until support for webcams lands in Google Chrome). Regarding Flash, I tried CamCanvas and the jQuery webcam plugin. Both are Actionscript 2, but I bet I can get better performance out of Actionscript 3, so I will probably write my own. There is an experimental Firefox plugin called Rainbow that supports webcams in Firefox 4, but then I would have to port ofxFiducialFinder to JavaScript, which might not be high performance enough, and besides, I like Google Chrome.

Finally, I need a suitable webcam, though the ones I have will work. Apparently the PS3 Eye is the best for tracking, since it supports a high framerate (125fps).

Anyway, that’s it, I will report on progress.

Tagged: fiducialopenframeworkscomputer vision

18th December 2010



Yesterday I got a UPS notice on my door. I didn’t recognize the sender…did I dare to hope?…I went to the UPS office. After what seemed like 30 minutes of searching, they found the package. Nicely laptop-sized box. Was it…tearing the tape…graphics that I’ve seen before, somewhere…yes, yes, YES!

A Google Chrome OS Cr-48 laptop.

After the air-punching had subsided, I found myself here at Jet’s Espressoria on Pearl Street in Boulder, coffee in hand, with my new toy. So how is it?

It’s got some problems with the keyboard (hard to repeat letters, like tt) and the trackpad is a little strange to use. So I can see why they might not want to sell this :) It’re really quite cute, moreso than the photos. It does look a lot like the black Macbooks. And the box it came in is cool. It’s totally silent, which is new to me. Software wise, it’s the Chrome web browser, which I have been using for a while, but it lets you keep your Google Talk on top, which is great.

I am a software developer, and there aren’t good ways to write software using a browser right now (i.e. like Google docs). For my PhD research, I am developing a 3D graphical simulator for sensornets using Python. Right now it’s a desktop app, but I want to make it into a web app with WebGL and Native Client, and let people write Python programs for the simulator in the browser and run them right there. I said that in my application to the Pilot program, and I think that’s why I got the notebook. Right now WebGL and Native Client are not enabled in Chrome OS, as far as I can tell, but WebGL should be coming down the pipe any day now since it’s in Chrome 9, and Native Client will arrive…someday, but it will arrive.