The FLfeature program : Feature based Scene Recognition/Management
What are we looking at?
The above pic is a screenshot from the FLfeature program. It is running at
the framerate of the camera. In this case it is 10fps for the $20 USB camera
used since thats as fast as it can supply images, but it does run 30 fps or
higher if the camera can support it. On the left is the video image is of a bunch of bins holding coffee beans in a coffee shop. On the right is the "Scene Manager" GUI (in openvidia-0.8.1).
What does it do?
In a nutshell FLfeature is a program that uses the camera to recognize a
known scene. This is achieved by first asking the program to record a scene's
features as a reference. Then, in each frame of video, the current features are
matched to this saved reference. If its looking at the same scene, it should
find a number of feature matches and output that it has detected the recorded
reference.
How to use it?
Here's a few simple steps to get started:
- Point your camera at the scene you want to recognize. Then press the "Take
New Reference" Button. This stores the current scene features in memory.
- Type in a file name and save it to a file by clicking the "Save" button.
- To track/recognize it
again, enter the filename you saved and click the "Load" button. The program
will start comparing the curent video frame to your saved reference.
In the image below, we've saved the scene and loaded it to be recognized.
Then, the camera was moved. The yellow lines in the video image show the
correspondences between features linkin their current position to their
position in the reference image.
The "Remove" Button can be used to remove a scene from the list of loaded
scenes.
At the top, there are two statistics. In the screenshot above it has
matched 44 features to the reference, out of a total of 93 features detected in
the current video image.
At the bottom of the Scene Manager window, the "Matched Scene" box displays which scene has been recognized, and the framerate of the program. The bottom line is a status line which shows some feedback from the program as you click on things.
Going further
Currently we hope to allow recognized scenes to trigger events such as
overlaying a registered graphic onto the video. For those familiar with C/C++
this should be straightforward to customize by lookin at the code. Currently it recovers a projective coordinate transformation suitable to for 3D-projection of a plane onto the scene.
The algorithm searches for groups of features that move with a planar projection. So, it works best on planes, or near planar static scenes.
|