How to do skin color modeling and classification using histogram model.

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.

Risposte (1)

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 Commenti

Thanks for ur reply,
if threshold does not work perfectly for skin color. Can i use Bayesian probabilities from the histogram bins for building a model for skin color segmentation. Does Bayesian Probability applied on 2D or 3D histogram.
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.
i have prepared a dataset of approx. 830 images by manually cropping the skin color areas from the original images of different peoples with different races, color, background, illumination. The background has been set to black. now i want to use all these images to train a classifier for skin color identification from the input video/images so as to use it as a first step for my face detection problem. The point i want to understand is, how to use all these images for 2d/3d histogram plot and read bin values for probability estimation. also i want to understand how to use these images for building a single gaussian or gaussian mixture model.
Fig. Sample image from my dataset of skin color images

Accedi per commentare.

Richiesto:

il 14 Feb 2015

Modificato:

il 20 Feb 2015

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by