0

I am working on a project for tracking objects with many textures with many color variations. Unlike normal tracking using color masking, my target object is vastly different since it contains several dominant color distribution.

I want to detect the object and start tracking. For tracking there are methods like Kalman Filter but however, to track textured object, I need to track the local keypoints I suppose. If I compute SURF descriptor in every frame, than this will forfeit the use of tracking I think(maybe I am wrong here).

I feel that I should just use SURF in the first frame to initialised the target object and than thereafter track it. My problem here is how do I track the features of the textured object. I done some research but I seem not to get how to go about solving that.

It would be great if I can get some suggestion or paper links to read and implement it.

4
  • You have to detect the object in every frame to track it. Why not use SURF for that? Or haar detector? Commented Nov 24, 2013 at 16:25
  • I want to do it in real time but in Windows it take around 10seconds to compute SURF for a single frame. Commented Nov 25, 2013 at 5:39
  • You can try binary descriptors, they are much more efficient then SURF in both extracting and comparing. Perhaps using less keypoints and describing them with a binary descriptor will work in real time. Also, when tracking you'll have an estimate of the object's positions, so maybe you don't have to compute descriptors in the entire image, but only at the estimated object's position. Let me know if you need more information about binary descriptors. Commented Nov 25, 2013 at 10:54
  • Thank you very much. yes it would be great if you could give me more idea on implementation of binary descriptors. I find it hard to understand how the features are formed. Commented Nov 26, 2013 at 4:26

1 Answer 1

1

You can try binary descriptors, they are much more efficient then SURF in both extracting and comparing. Perhaps using less keypoints and describing them with a binary descriptor will work in real time. Also, when tracking you'll have an estimate of the object's positions, so maybe you don't have to compute descriptors in the entire image, but only at the estimated object's position.

I wrote a tutorial about binary descriptors.

part 1 - Introduction: http://gilscvblog.wordpress.com/2013/08/26/tutorial-on-binary-descriptors-part-1/

part 2 - the BRIEF descriptor: http://gilscvblog.wordpress.com/2013/09/19/a-tutorial-on-binary-descriptors-part-2-the-brief-descriptor/

part 3 - the ORB descriptor: http://gilscvblog.wordpress.com/2013/10/04/a-tutorial-on-binary-descriptors-part-3-the-orb-descriptor/

part 4 - the BRISK descriptor: http://gilscvblog.wordpress.com/2013/11/08/a-tutorial-on-binary-descriptors-part-4-the-brisk-descriptor/

Sign up to request clarification or add additional context in comments.

3 Comments

Just one question, is BRIEF, ORB and BRISK all binary descriptors or should have to implement it separately since i don't like binary descriptors are not implemented in OpenCV. Secondly, what you feel about HOG. Is it good for object recognition? Besides than for the links those are helpful
They are all implemented in openCV, and also FREAK that I'll wrote about in my next post. HOG is indeed a good choice for object recognition but I fear will have expensive running times.
Actually, I was trying to implement HOG but I realised that HOG in OpenCV is just for people detect. or am I wrong. So I ended up writing the whole code for hog but I am just got stuck again how to determine the bounding box around the object. I am working on that too. Sorry don't mind I am still learning so I have so so much confusion and question. Thank you again for your help

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.