I was trying to grab the source for CCV, but nuicode seems to be down. I’ve made an openFrameworks add-on called “Magnetic” that uses OpenCV to do tracking of blobs, outlines, peaks, and skeletons. You basically extend ofxMagneticApp instead of ofBaseApp and just call “getBlobs()” whenever you want info (has some nice features like integrated fullscreen settings and calibration). As much as we love CCV here, we’re finding we need something lightweight integrated directly into the applications we build.
But I’m not writing about Magnetic, I’m writing to ask what is the best approach to remap the camera image to the image you analyze for blobs? CCV seems to work well with both linear and lens distorted images (so long as there are more points), whereas mine sucks with a wide angle lens. Does CCV use any undistorting techniques, or are y’all just using cvFindHomography? I’m doing the latter, and just wanted to figure out which route to pursue.
My options are either:
A) Continue to use cvFindHomography() and allows users to add more points (a la CCV).
B) Stick with just four corners and then use arrow keys to adjust radial distortion values.
I’m thinking A would be the right route, as B could fail if the image is lopsided. It’s important that works for any type of screen. In fact, half of Magnetic’s whole purpose is to track limbs, etc, not touch points, so dedicated radial distortion correction is not an option.
Ideas?
A few early Magnetic videos, if interested:
More:
http://www.youtube.com/watch?v=W8kR7jbbtpY
http://www.youtube.com/watch?v=9NUa3k6cWY4
