1

I am trying to use a KLT tracker for human tracking in a CCTV footage. The people are very close to the CCTV. I noticed that some time people change the orientation of the heads and also the frame rate is slightly slow. I have read from Rodrigues et al. paper Section 3.4 that the:

"This simple procedure (KLT tracking procedure) is extremely robust and can establish matches between head detections where the head HAS NOT BEEN continuously detected continuously detected due to pose variation or partial occlusions due to other members of the crowd".

Paper can be found in this link : Rodriguez et al.

1). I understood that the KLT tracker is robust to pose variations and occlusions. Am I right?

I was trying to track one single person in footage till now by using the MATLAB KLT as in :

MATLAB KLT

However, the points were not being found after JUST 3 frames.

2). Can someone explain why this is happening or else a better solution to this. Maybe using a particle/Kalman filter should be better?

Dima
  • 38,860
  • 14
  • 75
  • 115
Sambas23
  • 683
  • 1
  • 13
  • 27

2 Answers2

1

I do not recommend using a KLT tracker for close CCTV cameras due to the following reasons: 1. CCTV frame rate is typically low, so people change their appearance significantly between frames 2. Since the camera is close to the people, they also change their appearance over time due to perspective effects (e.g. face can be seen when person is far from camera, but as he/she gets closer, only the top of the head is seen). 3. Due to closeness, people also significantly change scale and aspect ratio, which is a challenge for some head detectors.

KLT only works well when the neighborhood of the pixel, including both foreground and background, remains similar. The above properties make this less likely for most pixels. I can only recommend KLT as an additional motion based hint for tracking, as a vector of field of part motions.

Most single person trackers do not adapt well to scale change. I suggest you start with some state of the art tracker, like Struck (C++ code by Sam Hare available here), and modify the search routine to work with scale change.

killogre
  • 1,730
  • 15
  • 26
1

KLT by itself only works for short-term tracking. The problem is that you lose points because of tracking errors, 3D rotation, occlusion, or objects leaving the field of view. For long-term tracking you need some way of replenishing the points. In the multiple face tracking example the new points are acquired by periodically re-detecting the faces.

Your particular case sounds a little strange. You should not be losing all the points after just 3 frames. If this happens than either the object is moving too fast, or your frame rate is too low.

Dima
  • 38,860
  • 14
  • 75
  • 115
  • I understand Dima. I have both a slow frame rate and sometimes people tend to walk fast. – Sambas23 Feb 25 '15 at 12:30
  • One thing you might want to try, is to increase the number of pyramid levels. That can help increase the "range" of the tracker. Another thing would be to increase `MaxBidirectionalError` to make the tracker less likely to discard points. – Dima Feb 25 '15 at 14:16
  • I already tried them both but I am currently trying a different approach. I asked another question which is related to affinity measures since you is the master of such topics. Here is the link: [link](http://stackoverflow.com/questions/28723670/intersection-over-union-between-two-detections) Much appreciated. – Sambas23 Feb 25 '15 at 16:00
  • sorry for interrupting again. But I posted a new question where you might be very helpful. [link](http://stackoverflow.com/questions/28782111/image-histogram-comparison). Sorry it is a little long but I tried to make it as clear as possible as I need to see it work as soon as possible. Thank you in advance.:) – Sambas23 Feb 28 '15 at 13:17