Take the 2-minute tour ×

Can anyone recommend a motion detection library that's trainable via a supervised learning algorithm?

I have an IP webcam that I'm trying to detect motion from. I'm been using the motion software detector project to do this, but I'm getting a lot of false positives, despite weeks of tinkering with hundreds of settings. A cloud casting a shadow through a window or changing brightness will be classified as motion.

I've found numerous examples using OpenCV to do motion detection, but as far as I can tell, they essentially use the same methods that the motion software detector uses (i.e. it's not trainable, so it inevitably suffers from a lot of false positives).

I'm considering rolling my own, but I don't want to reinvent the wheel.

share|improve this question
add comment

2 Answers

For such tasks (do you have a concrete task? motion detection is a very vast term...) the requirements largely vary according to:

  • Camera calibration, coordinate transformations, pose estimation
  • Feature extraction (Scale/Rotation/Translation/Colorization Invariance)
  • Concept drift (according to the given features)
  • ...

For a simple application things are often specialized and simplified to make the task more developer-friendly and less error-prone. Therefore I think, there is no wheel (in the sense of a convenient all-purpose solution) that you would reinvent.

But have you noticed TLD? Apparantly it's an object tracking library that uses supervised learning to handle concept drift and such. There are some really cool demonstrations available, for example this.

share|improve this answer
Specifically, I'm interested in detecting motion from people. The camera is in a fixed position, with a relatively unchanging background, but people can appear in nearly any place in nearly any orientation or shape. Unfortunately, "people detection" algorithms are even less accurate than motion detection algorithms. –  Cerin Jan 11 '13 at 15:27
add comment

if you know how to do motion detection using opencv, maybe you can use this Darwin framework to do supervised learning.

share|improve this answer
add comment

Your Answer


