'Bald detection using image processing

I was wondering if someone can provide me a guideline to detect if a person in a picture is bald or not, or even better, how much hair s\he has. So far I tried to detect the face and the eyes position. From that information, I roughly estimate the forehead and bald area by cutting the area above the eyes as high as some portion of the face.

Then I extract HOG features and train the system with bald and not-bald images using SVM.

Now when I'm looking at the test results, I see some pictures classified as bald but some of them actually have blonde hair or long forehead that hair is not visible after the cutting process. I'm using MATLAB for these operations.

So I know the method seems to be a bit naive, but can you suggest a way of finding out the bald area or extracting the hair, if exists. What method would be the most appropriate for that kind of problem?



Solution 1:[1]

very general, so answer is general unless further info provided

  1. Use Computer Vision (e.g MATLAB Computer Vision toolkit) to detect face/head
  2. head has analogies (for human faces), using these one can get the area of the head where hair or baldness is (it seems you already have these)
  3. Calculate the (probabilistic color space model) range where the skin of the person lies (most peorple have similar skin collor space range)
  4. Calculate percentage of skin versus other color (meaning hair) in that area
  5. You have it!

To estimate a skin color model check following papers:

  1. http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.56.8637&rep=rep1&type=pdf
  2. http://infoscience.epfl.ch/record/135966
  3. http://www.eurasip.org/Proceedings/Eusipco/Eusipco2010/Contents/papers/1569293757.pdf
  4. Link

If an area does not fit well with skin model it can be taken as non-skin (meaning hair, assuming no hats etc are present in samples)

Solution 2:[2]

Head region is very small, hence, using HOG for classification doesn't make much sense.

You can use prior information - like detect faces; baldness/hair is certain to be found on the area above the face. Also, use some denser feature descriptors.

You are probably ending up with very sparse representation or equivalently less information because of which your classifier is not able to classify correctly.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Glorfindel
Solution 2 maverick