The PeopleKiller
The What?
The PeopleKiller is a silly project put together for my
Computational Vision class.
It detects motion between two similar images (ie. video feed) and targets motion that matches a specific target profile. My original intent was to complete this system by tracking targets between frames, even in the event a target is occluded by some other object, however I simply do not have the time to work any further on this project. And besides, the output is already neat enough.
The Algorithm
The basic algorithm is this:
1. Align two image frames within +/- 5 degree rotation and +/- 10 pixel translation in any direction.
2. Compute 2-dimensional disparity between the aligned image frames.
3. Filter out all but the most prominent velocity (and tolerable neighbours)
4. Group this pixel subset into connected blobs.
5. Compute a 75 percent bounding rectangle based on X and Y histograms.
6. Throw away any blobs that do not fit the human profile model (3:2 proportion)
7. Target centre of mass of motion, and draw the 75 percent bounding regions.
8. Repeat for remaining prominent velocities.
The results
Unfortunately, my camera just doesnt take pictures at a high enough framerate for me to gather any real input sets, so I have instead just taken one image and superimposed a couple of human-like drawings on top of them. The humanoid figures are of different sizes and are moving in opposing directions in the image. Thirdly, I have added a happy bouncing oval to the image to attempt to throw things off. The code correctly ignores this bouncing happy face since it does not fit the specified profile.
Here are the outputs of the program when processing 9 128x128 input frames in black and white.
frame 1
frame 2
frame 3
frame 4
frame 5
frame 6
frame 7
frame 8
The source code and input images are sitting in the pkiller/ directory.
back to my homepage