views:

2984

answers:

4

After asking here and trying both SURF and SIFT, none of them seams to be efficient enough to generate interest points fast enough to track a stream from the camera.

SURF, for example, takes around 3 seconds to generate interest points for an image, that's way too slow to track a video coming from a web cam, and it'll be even worse when using it on a mobile phone.

I just need an algorithm that tracks a certain area, its scale, tilt, etc.. and I can build on top of that.

Thanks,

God bless

+1  A: 

You can use a simpler algorithm if you would make stricter restrictions on the area you would like to be tracked. As you surely know, ARToolKit is pretty fast, but only tracks black and white markers with a very distinct frame.

If you want a (somewhat) general purpose tracker, you may want to check PTAM. The site (http://www.robots.ox.ac.uk/~gk/PTAM/) is currently down, but here's a snazzy video of it working on an iPhone (http://www.youtube.com/watch?v=pBI5HwitBX4)

r0u1i
I didn't know about PTAM, but from the videos it looks really good. I guess I'll just have to wait till it's up again. I tried searching Google Code Search but.. nothing.
Leo Jweda
+5  A: 

I suspect your SURF usage may need some alteration?

Here is a link to an MIT paper on using SURF for augmented reality applications on mobile devices.

Excerpt:

In this section, we present our implementation of the SURF al- gorithm and its adaptation to the mobile phone. Next, we discuss the impact that accuracy has on the speed of the nearest-neighbor search and show that we can achieve an order of magnitude speed- up with minimal impact on matching accuracy. Finally, we dis- cuss the details of the phone implementation of the image matching pipeline. We study the performance, memory use, and bandwidth consumption on the phone.

You might also want to look into OpenCV's algorithms because they are tried and tested.

Depending on the constraints of your application, you may be able to reduce the genericness of those algorithms to look for known POIs and markers within the image.

Part of tracking a POI is estimating its vector from one point in the 2D image to another, and then optionally confirming that it still exists there (through pixel characteristics). The same approach can be used to track (not re-scan the entire image) for POI and POI group/object perspective and rotation changes.

There are tons of papers online for tracking objects on a 2D projection (up to a servere skew in many cases).

Good Luck!

Aiden Bell
The only thing I can think of that might slow it down is the fact that it's in Java. Other than that, it's clear that generating interest points is what's taking long.
Leo Jweda
+1  A: 

You should try FAST detector

http://svr-www.eng.cam.ac.uk/~er258/work/fast.html

mirror2image
A: 

We are using SURF for a project and we found OpenSURF to outmatch OpenCV's SURF implementation in raw speed and performance. We still haven´t tested repeatability and accuracy, but it is way faster.

Diego