Skip to content

Skin Color Validation

Yuri Pourre edited this page Mar 7, 2014 · 1 revision

For years I was looking for a good algorithm to identify color pixels.

First Attempt - Waterdrop

I started trying with waterdrop-like methods where you manually select the pixel and update the filter to find for the selected color.

Second Attempt - Looking for Blood

Thinking about the human skin I remembered something: all humans have blood. That was a good step forward. I made some tests to find pixels where red was bigger than blue or green pixels or has just a little difference. It works very well but wasn't perfect.

Third Attempt - Skin Graphic

I tried something desperate. I took 50 photos of people in webcam and using the waterdrop method, I selected many points some was skin and some don't.

To represent RGB values in a 2-dimensional Graphic I use 2 axis, R and B+(G-B). For my surprise, it has a kind of a pattern. Take a look:

Skin Graphic

Legend:

Red - it is not a skin color.
Blue - it is a sking color and the blue value is higher than green's.
Green - it is a sking color and the green value is higher than blue's.

See the code at: SkinColorStrategy