The vast majority of the software I write doesn’t interact with the physical world outside of a mouse, keyboard, and monitor. I think part of this is because I’m a lazy coder, and the digital world is so much easier to deal with – everything is a 1 or 0, True or False. There’s very little wiggle room or slop. In the real world, things are analog and messy. Nothing is ever really perfect, so I’m never sure if something is done or correct. I think another reason for the digital focus of my work is that it deals mostly with things that are already in the computer. My programs generally deal with shuffling around or modifying pre-existing data. At any rate, there’s always a human sitting between the computer and meatspace, which is why I was so intrigued when GRPUG regular Dave Brondsema hooked us up with our recent guest presenter.
Nate Oostendorp is an Ann Arbor resident hanging out in Holland for the summer to pimp his new company Ingenuitas and the open source software on which it’s based. The company is creating SimpleCV, an easy to use Python wrapper around various other enigmatic open source machine vision libraries such as OpenCV. Their aim is to make it easy for anyone to hook a camera up to a computer and start using machine vision in their projects.
Nate took the GRPUG through some simple code examples for using SimpleCV and then gave us a demo using a Kinect plugged into his laptop to detect when something had moved or been occluded. It took some time and fiddling to calibrate – apparently it’s very picky about lighting – but eventually it worked. The trick is to understand some of the rather complicated algorithms behind motion detection to discover which one will work for your particular application. At this point, it’s a lot of trial and error to find a good algorithm and then to tune it to your environment.
SimpleCV has already made machine vision more accessible to the lay-programmer, but it still has a ways to go. There ‘s a lot of arcane, mathematical knowledge you need to understand to get the most out of the system, or you’ll spend a lot of time fiddling with options. Nate and Ingenuitas are really diving into the very technical machine vision community so they can create a simple system for the rest of us.
There were a lot of people interested in the presentation who couldn’t make it out to the GRPUG meeting, so I’m trying to arrange another presentation from Nate. My plan is to bring together the GRLUG, the WMLUG, and The Geek Group for big ole geekout around open source, Linux, and machine vision. Stay tuned to your favorite mailing list for details.