Ask Your Question
0

Proper ways of detection and tracking. I am confused.

asked 2018-12-10 05:07:52 -0500

Orelox gravatar image

updated 2018-12-10 13:53:46 -0500

 Could someone explain to me what is the purpose of tracker algorithms and when I should use them? My current thinking is that if I need tracking an object I can use for example thresh + contours + moments to obtain its position, but for most robust applications I would go with some detection algorithm neural network based like CNN.

 And here is my question, what the purpose of a tracker, I know I can use it to track the object in a supervised mode when I specify ROI to track.
 Does it have any sense to combine tracker with an object detector to I guess accelerate tracking, so first I detect an object and pass coordinates to the tracker?
 What is even purpose of cv:: calcOpticalFlowPyrLK then. I could extract good features of an object and then use it to track it, and the result for some applications will be still suitable?

 So what are ways of detection, tracking and gathering an orientation of tracked objects?
For example, if I track good features using a Lucas-Kanade method, I assume there is a way to calculate average rotation from all their points using the correlation between them.
Do object descriptors like moment or ORB descriptor might help me in detection and tracking?

 Everything is mixing in my head, feature vectors, descriptor, feature detection, feature extraction, moments, an object detector, trackers algorithms.
Can someone help put me back on the right track?

Thanks for your help, I appreciate that.

edit retag flag offensive close merge delete

Comments

detection can be quite expensive, so you do that only now & then, and in the meantime, use a tracker to follow it

berak gravatar imageberak ( 2018-12-10 05:13:12 -0500 )edit

That's exactly what I figured out. I could do detection only when my tracker gets lost or every specific amount of frames to make sure it's accurate.
Thanks.
Here I found an interesting video showing implemented real-time tracking using key points. https://www.youtube.com/watch?v=PVWyZ...

Orelox gravatar imageOrelox ( 2018-12-10 05:22:45 -0500 )edit

i think, you should not build your own lk based tracker, but use one of those in opencv_contrib/tracking

berak gravatar imageberak ( 2018-12-10 05:49:10 -0500 )edit

@berek sorry it doesn't help me ;/

Orelox gravatar imageOrelox ( 2018-12-10 08:44:29 -0500 )edit

@berek I've already known that the thing is how to track a recognized object. I wrote this whole question about it.

Orelox gravatar imageOrelox ( 2018-12-10 09:33:29 -0500 )edit

Thanks for help guys, wrote the question here was worth it...

Orelox gravatar imageOrelox ( 2018-12-10 13:52:25 -0500 )edit

Answer my own question... So yeah I am right, tracking and detection are two different topics. Detection, in most cases are in general high CPU-consuming where trackerrs are consider less cpu consuming i.e.simply centroid tracker, or other implementation you can find in opencv_contrib/tracking like kcf, moose, or much more advanced that uses neural network GOTURN, are for tracking problem, you can detect object with object detector like Haar cascades, HOG + Linear SVM, or just thresh, countor it does't make difference. The main thing iis that you init tracker with ROI or box(points) and for updated frame it return new bounded box, that shuld contain your tracked object. Tracker can get make mistakes over time, so it is good practise to supervise is again with new ROI of object provided..

Orelox gravatar imageOrelox ( 2018-12-10 18:07:15 -0500 )edit

..by object detector algorithms, or any other way like even simply selection ROI on image. I hope that helps and not only me had that problem. ;)

Orelox gravatar imageOrelox ( 2018-12-10 18:08:25 -0500 )edit

1 answer

Sort by » oldest newest most voted
1

answered 2018-12-12 05:43:52 -0500

Orelox gravatar image

updated 2018-12-12 08:30:28 -0500

Answer my own question... Tracking and detection are two different topics. Detection, in most cases, are in general high CPU-consuming where trackers are considered less CPU consuming i.e.simply centroid tracker, or other implementation you can find in opencv_contrib/tracking like kcf, moose, or much more advanced that uses neural network GO TURN, are for tracking problem, you can detect an object with object detector like Haar cascades, HOG + Linear SVM, or just thresholding, contour it doesn't make difference. The main thing is that you init tracker with ROI or box(points) and for the updated frame, it returns new bounding box, that should contain your tracked object. A tracker can get make mistakes over time, so it is good practice to seed it again with new ROI of an object provided by object detector algorithms, or any other way like even simply selection ROI on an image. I hope that helps and not only me had that problem. ;)

edit flag offensive delete link more

Comments

1

Answer my own question...

that's entirely ok ;)

berak gravatar imageberak ( 2018-12-12 08:44:31 -0500 )edit
Login/Signup to Answer

Question Tools

1 follower

Stats

Asked: 2018-12-10 05:06:10 -0500

Seen: 607 times

Last updated: Dec 12 '18