I started thinking about machine vision as soon as I got my Connectix QuickCam digital video camera. The QuickCam produces up to a 640x480, 24-bit color image at between 1 and 60 frames per second. The image is quite stable, but has a few CCD noise flares.
To me, motion is a critical part of vision-- it's much harder to find Waldo when he's sitting still. The first thing I worked on, then, was a motion detection and tracking system.
The images above show my head tracker in operation,
tracking motion on a QuickCam image of my head.
The green lines indicate scan lines where the program
thought it could follow some sort of motion; and
the darker lines indicate that program hasn't seen
any motion on that scan line recently.
In the above images, you see the actual head tracker in operation. The program has some simple assumptions about the size and aspect ratio of an actual human head, which it fits to the motion information obtained above. Once it has a general idea of where the head is, it guesses where the eyes might be (the white crosses) and searches down the forehead to find the eyebrows. It follows the eyebrows until they peter out, and draws them in green.
That's as far as it gets, for now. Someday, I'll add in eye, nose, and mouth tracking.
When viewing my head, the program works fairly well. With no motion in the background, it correctly finds my head and eyebrows around 95% of the time. The sucess rate could be increased substatinally by adding an inertial delay to the head position-- that is, assume the head cannot teleport across the frame instantly, then teleport back. Oddly enough, the program works best when its target is moving quickly-- it uses this motion to track the object well.
The program can't find the eyebrows of
blond-haired or dark-skinned people, and is confused
by shadows and background motion.
These problems will by tougher to get around.
It's also amusing to try to confuse the program--
it'll easily track a hand, but can't quite seem to
find its eyebrows.
The program was written for the Macintosh OS, but the algorithms are (of course) machine-independant. Once I get eyeball tracking working well, I'll post the program to this site. Of course, I haven't worked on the program since 1997, so this may not be anytime soon.