Thoughts on Hand Detection (Kinect / openCV / Blob Detection )
in
Contributed Library Questions
•
1 year ago
Hi Forum...
I'm trying to build a sensor interface where I have a camera (Kinect) positioned above a table, and I am sensing if a hand is positioned overtop of a 'zone' for a certain length of time, then triggering an event.
It's pretty much done, but I'm trying to weed out a number of false positives I am getting...
Currently, I am using 1.5.1 (because it is a client project, so I need stability, AND I need to use XML, and the documentation in 2.0 is missing..), and the SimpleOpenNI library for the Kinect (0.26 but will try 0.27 presently).
I can't use the Hand tracking gestures or the Psi pose, as it's a top-down perspective, and we don't want to mess with calibration, so I'm thinking of passing the resulting depth image through openCV (which would require a haar cascade or background detection) and/or a blob tracking routine (which would require the dynamic creation of a PImage), so am worried about expensive camera operations on top of the Kinect already...
One major concern with the openCV is that I'm finding it really difficult to get a stable HAAR cascade for hands. The Blob Scanner and JavaCVPro both have fingertip detection, but that requires background detection - which may not be so bad - and JCP is only running on 2.0 for OS X... I'm also quite worried about the resolution of a hand, as my camera will be quite far above (approx. 9 feet or so) the table, as the table itself is quite large... ???
For Blob Detection, I can use the existing depth image that SimpleOpenNI gives me, but that will return more that the pixels between the two thresholds I am testing for. To use the resulting pixels from in between those thresholds, I have to create a PImage dynamically (correct me if I'm wrong ?!?), which gets SLLLOOOOOWWWWWW... I guess I could use the average XY position from the pixels in between the two thresholds and test distance to a blob ???
I've still to implement this and really see how slow it gets, or finally test in situ, but am wondering about anyone's experience / thoughts on this...
Thanks & sorry for rambling ;-)
~ Jesse
1