tracking of naked hands
My problem is to track naked hands in a video where the signer sits in front of a uniform background exposing upper half of his body. Separation of the whole body from the background is easy but separation of hands from the body is giving real pain. When I googled, I came across topics like 'model based approach', 'appearance based approach', CCMSPF, haar, HOG, optical flow, etc and I'm getting lost.
I'm quite impressed by the performance achieved in this http://thepaintballworld.info/play/W801F97DSfI/hand_detection.html (video).
What could be the best approach 开发者_开发知识库to solve my problem?
You actually have two separate problems at hand (heh).
- Detecting the hands in the first place
- Keeping track of the hands once you've found them.
1 Is the harder of the two. At first you don't know where the hands are, what colour they have, how they are positioned and how big they are. Once you've found them there are all kinds of constraints that help you find them in subsequent frames. They won't jump around the image, they will stay roughly the same colour, they won't suddenly become very large or very small, etc. Depending on your use case, there are a few approaches here:
- You could require the owner of the hands to hold them up with the open palms to the camera for a little while at the start of a video, allowing you to detect them based on skin colour and the shape (five fingers)
- you could search for skin coloured sections in your image. This places some restrictions on the clothing of your hand-owners and requires you to detect the head in some way, or eliminate it based on position. (which requires more assumptions about the position of the hand-owner).
- The model based approach assumes stuff about the way hands can move. A hand is basically a blob with a certain colour attached to a stick (the underarm) by a hinge (the wrist). Just the combination hand-wrist-underarm provides a constrained but slightly morphing shape that can be tracked.
OpenCV is a high-level computer vision library that will help you with a lot of the tasks required for any of these approaches. Once you have found the hands goodFeaturesToTrack in just the hand region will help you keep track of them. And some of the functionality in the motion analysis and object tracking section will also help you.
Detecting the hands is the more difficult problem as I said. I don't know much about the model based approaches. If you can require the hand-owner to hold his hands up to the camera for a while at the start of the frame (and you can guarantee the hands will stay in the frame the rest of the video) you can use a template matching function on the edge image with a hand outline image to find the hands.
As for skin detection, this is some sample code which might help you, but you need to create the skin/non skin histograms for that. Just googeling "opencv skin detection" also yields tons of useful links.
As you can see this is a pretty broad topic. I hope this helps to get you started.
You can try using OpenCV to do object detection. Check out http://sourceforge.net/projects/opencvlibrary/ and http://en.wikipedia.org/wiki/OpenCV
精彩评论