Let's Make Robots!

My Computer Found it's BellyButton

Yeah, it doesn't look like much... but I'm excited.  I've been meaning to do this a while, just didn't have the time.  I'll be doing a variety of tests to see how it preforms.  It has several "Match" algorithms to play with (CV_TM_CCOEFF_NORMED, CV_TM_SQDIFF, etc) - and I think there are several normalization routines.

This match algorithm seems fairly fast @ 120 ms - Haar Face Detection takes longer...

The template used is this  and I manually created it by cropping a piece out with gimp.

The next step is to "select" the object of interest out using the mouse through the screen.

The next step after that would be dynamically/programmatically select an area of interest and store it.

End goal would be to have something which works like these 2 videos

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.


that you no longer need to draw smiley faces around your power sockets?

It will be exciting to get into the "associative matching area" of images.  Right now there's just a % value of matching, and its done on a frame by frame evaluation, with no feedback.  The functions I'm using now cvMatchTemplate & cvMinMaxLoc , (I believe) don't support scale and rotation - The Haar training does support scaling.  I think dynamic Haar training could be possible, although OpenCV in its current state does not lend itself easily to this process.

I believe the "Predator Algorithm" uses Lucas Kanade Optical tracking to fix a point - and around that point it pulls off a "good" template.  It then grabs some other random template off the same frame and weights this as "not good".  As these templates are built up, it allows an associative memory of what "is" and "is not" the appropriate object to track.  This was a total guess, but I think that is how its done..  I really like this idea and it is what I will be focusing on.  Memory & association is fascinating. Radio-Lab has a great show on this.  They describe human memory as a creative process not a "storage".  Every time you access your memory you are re-building and re-creating it.  The act of doing this actually changes the memory - they said your most accurate memories are the ones you never think about (how ironic is that!)

The Kinect learning is pretty straight forward.  Because the Kinect allows for depth data, objects (such as Bears, Balls, other Thingys) can be efficiently isolated.  He has a "on voice prompt" give me the outline template of any object between 3' and 4' .  Compare it with stored templates - if it > some% matches return the associated word, if not wait for name & associate.  This would be very useful, but I don't think it lends itself to finding wall sockets.

I'm glad to hear your computers belly button will be lint free from now on :p

Still need the servo finger, for cleaning...