How to do skin color modeling and classification using histogram model.
14 views (last 30 days)
Show older comments
I have 800 image skin color dataset which i want to use for skin color classification. how can i see the distribution of skin color pixels in matlab so as to decide the thresholds for skin color segmentation.
0 Comments
Answers (1)
Image Analyst
on 14 Feb 2015
You need to build a 3 dimensional gamut for color segmentation. The problem is that the gamut of skin, if you're going to consider all skin tones for all races, is not a shape that can be easily thresholded in any color space. It's a banana or boomerang shape which is a strange shape to carve out - you can't use a high and low threshold on color space planes and be perfectly accurate, because then you'd be saying gray things in the image are skin. But you need neutral colored regions being called skin for some cases like very pale people or very dark people, but just not L or V values that are in between. However if you know you don't have grays you might be able to get something that works. See attached demos.
3 Comments
Image Analyst
on 16 Feb 2015
How would that work? You'd have to have classes defined and then for some arbitrarily colored pixel determine the probability that it belonged to each of the classes and then assign it to the nearest, most likely one. Well, that all comes down to having the skin gamut defined. If you want you can use the LAB values I gave above - those are experimentally determined points from a subset of thousands of real people that we actually measured with a spectrophotometer. You can see in the image above how well it works. You can adjust the thresholds to capture more of the skin. Keep in mind that in general, in some arbitrary photo, there may be pixels in there that aren't skin but are the same color as skin, such as brown colors, etc.
See Also
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!