As the project currently stands I have integrated into my framework 2 Algorithms for detecting objects: SURF and Ada boost using HAAR-like features, i am also well on my way to applying FERNS.
The entire HAAR algorithm was already implemented in Open CV 2.0, all that was needed was to provide the training data. I made a small modification to the application, taking a hint from face recognition, and implemented sub classifiers that are capable of detecting object specific items (like the tide logo alone, or another area of interest for the color histogram).
The algorithm runs very very fast, it takes mere milliseconds to detect, but its not terribly
It still detects tide reasonably well, rejecting only a handful of frames (less than 20%).
SURF is a keypoint detector similar to SIFT. I use open CV's implementation to extract keypoints and then feed them into the fast linear approximate nearest neighbor library to speed up detection. A keypoint is recognized if the distance between the 2 nearest neighbors is less than .6. This technique was traditionally applied to SIFT features, and works quite well to the SURF features.
The algorithm runs really slow(ironically), but has a FP rate of 0.0 on the data set I'm using.
Another neat thing is that most of the time you get a good homography to go along with it. This could surely help with tracking.
I am also currently trying to apply Ferns, essentially another keypoint detector using simplified randomized trees. All the following images are from their demo software.
It performs well enough in my tests, but i have to mess with the algorithm to get it working in my framework
Note that this algorithm runs fast, but has some problems. Its detection phase runs fast, but still slows down to about 2 fps in detection. In the below pictures, the circles represent features picked out by the algorithm, darker circles represent recognized keypoints, lighter are not recognized.
Also notice that the homography isn't always as fantastic as with surf,
Still on the whole it shows promise for being fast and pretty accurate.