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.

kcc__
  • 1,638
  • 4
  • 30
  • 59
  • You have to detect the object in every frame to track it. Why not use SURF for that? Or haar detector? – GilLevi Nov 24 '13 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. – kcc__ Nov 25 '13 at 05: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. – GilLevi Nov 25 '13 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. – kcc__ Nov 26 '13 at 04:26

1 Answers1

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/

GilLevi
  • 2,117
  • 5
  • 22
  • 38
  • 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 – kcc__ Nov 26 '13 at 10:54
  • 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. – GilLevi Nov 26 '13 at 11:01
  • 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 – kcc__ Nov 26 '13 at 11:10