Sunday, May 20th, 2012, 394 days ago
The question raised about hsv colour values
Several days ago I got an email from a developer who asked why there were differences in the hsv threshold values between my example and the theoretical values from a paper. Well, my answer is that my example was designed to fit with the specific environment the application was implemented, which could be somehow smaller or larger than the theoretical range.
A simple demonstration
As recently I am working on a hand posture/gesture recognition project, I am curious about how the range of the hand colour would be different from the previous example. So I wrote a little piece of code and followed the hsv value from a paper which talks about the statistical skin colour ranges between different populations. A range of H for asian population was used, as it was specified to be between 0-50, and the range of S was between 0.23-0.68.
I had a quick run-out, and the results were showed as the first picture said, which seemed quite nice. But, as I moved my hands close to the window with rich sunshine, the palms became white and the colour range cannot recognise accurately any more.
Using hsv colour to extract skin areas in the picture is, indeed, an efficient way, based on current dominant computers it is a good way to have real-time results.
using hsv is not a very stable way that can be relied on to detect hand gestures, as demonstrated clearly above, the contextual environments had significant influence on the accuracy of the results.
Fortunately, only if, the environment the applications aim to use in, the hsv can be a good way to achieve your goal by carefully configuring the colour range.