Hello everyone,
I am looking for people interested in bringing some intelligence in the ccv module…
For the moment the tracking as I understood from the source is based upon a shader pipe.
I am interested in bringing some intelligent recognition and learning into the software by implementing some simple heuristics.
For instance, gestures constraints are determinated by the speed of the gesture as well as the kinetic properties of the human body.
Kinetic properties of the human body
A finger movement going from up to down with a certain speed will most likely always go into a certain direction,
due to the kinetic energy of this movement it is rather unlikely that the movement will pop up somewhere else on the screen in a certain laps of time.
So you can say “if the movement has this acceleration, and is going in this direction, predict a blob in Cur(x,y) + DistPos(blob(n-1))/2 where Cur(x,y) is the current position and DistPos(blob(n-1)) is the distance achieved between the last two camera frames.
If we generalize this and couple it to a database of heuristic constraints on gestures, for example a gesture with this identity will have this behavior we can actually enhance the recognition of speedy gestures and interpolate this movement by sending predictive blobs into the network pipe, enhancing hereby the applications behavior.
Blob guessing, false blob elimination, adaptive calibration for DI
When making calibration very sensitive to blobs you make them as well very sensitive for other unpredicted events, especially when DI is used.
For instance when putting your finger you may as well get your other fingers even when not touching the acrylic illuminated an seen as unstable blobs in the way that most of the time they dissapear and appear making event based tracking difficult.
By normalizing, like for gesture recognition, the distance between the detected blobs, which will always be within a distance given by the proportions of the human body, we can come to the conclusion that it is actually a finger that we’re tracking, an inference database can actually store the finger patterns by counting the number of positive finger patterns, finger patterns that made it above a certain number of frames tresshold, this way we now that we can eliminate all blobs around in a certain neigbourhood around the blob.
Now imagine we have the sunshine coming in, the luminosity increases and shadows of the users are projected on the screen with a certain intensity.
Rear illumination is not usefull anymore, the light sensor that comes with some infared illuminators switches the light off, we know that the camera automaticly increases shutter speed to avoid saturation, if we monitor this and define a tresshold we can actually ( to start ) invert the CCV settings to track dark blobs.
By implementing these couple of simple heuristics I believe we could give the app a better behavior in semi-sunshine conditions with variations of ambient light conditions, increasing the domain of applications of image analysis multi touch based applications, enhancing stability, making it possible to create industry standard applications…
Bonne journée,
Pixelpower
