tracking proximity with camera

alberto-bernal's icon

Hi all,
I'm trying to use the live input of a camera to track the proximity of persons in an installation environment in order to use this data to trigger other actions. I wonder if someone already tried it. I did some tries using some cv.jit objects, but with no really satisfying results.
In fact, is rather obviou,s from a perceptual point of view, when someone is approaching the camera, by means of his or her face becoming upper and bigger... the question is how to express it in a patch. So, if someone already did it or has a clear idea on it, I would be pleased to hear about it.
Thank you in advance,
Alberto Bernal

AlexHarker's icon

Be good to know what you've already tried and why it didn't work.

Working backwards I'd probably want to do this:

Sum (cv.jit.sum) a black and white image in which black is person/face and white is not person/face

So now you have a new problem which is deriving a suitable image from your input. You could look at the face tracking stuff in cv.jit.

A simple (and possibly overly crude approach) would be to do background subtraction in a manner that only parts of the image that are static over a reasonably long time period are subtracted and assume everything else is person. How suitable this would be sort of depends on the space and the expected proximity of the person and whether other people may be in shot etc. etc.

One potential problem of the above is that a full image of a body at distance may be similar in size to a close-up face. Another is getting the timing so it is unlikely to subtract the face if people stand in front of it for a long time....

Alex

MIB's icon
Max Patch
Copy patch and select New From Clipboard in Max.

You mention the cv.jit objects and smaller/bigger faces... That makes it easy (at least initially). Use cv.jit.faces to find a face. Then get the bounding rect of the face, do some math to get the area of that rect and voila, you have an idea how far away a face is to the camera. Of course this will need some fine-tuning, but should get you started...

dodgeroo's icon

depends what type of interaction you're looking for but you can use cv.fit.framesub to detect motion and then you can use that to trigger stuff... ie. having a camera above and when it detects motion in a certain area then it sends a bang and you can uses algorithms from there...
I'm doing an installation that uses this in a month in Vancouver.

Parmerud's icon

U could save yourself a bit of work by having a look at the softVNS tools that have great tracking objects that does basically all u need. The "camera from top" approach is most likely the one that works most reliably. I used it myself in this installation http://parmerud.com/MediaArtist/LostAngel.html

MIB's icon

I'm in Vancouver myself. Let me know where and when the installation is so I can come and check it out!!