Skin type classification and clustering

2 vues (au cours des 30 derniers jours)
Adriano Romano
Adriano Romano le 22 Juin 2015
Commenté : Adriano Romano le 21 Jan 2017
Hi,
i was asked to try and classify skin types according to Fitzpatrick Scale. As a first attempt, i tried doing the following:
1) Collecting L*a*b* samples (actually only the a and b components) from skin patches of different people (collectSamples.m script) 2) Finding a Gaussian Mixture Model of 6 (number of skin types) components using the EM algorithm (training.m script) 3) Given a certain skin image as input, color it according to which clusters its a*b* samples fall into and set the dominant skin type as the id of the most used color cluster (findSkinTones() function).
Fitzpatrick scale takes into consideration other things besides color, but for the moment i'd be happy to distinguish between different color clusters. I almost never programmed in Matlab before so the code is very crude (besides being unfinished).
I'm having the following problems:
a) The clusters i get from EM seem unreasonable when plotted; b) When i try to color/cluster a given input skin image portions of the background seem to be colored too, although they should not.
I can't upload files bigger than 5 MB, so i'll just use dropbox instead: sources (dropbox host)
P.s. I was also thinking that a better strategy could be using entropy and average color features to train a support vector machine or neural network. What do you think?

Réponses (1)

Rushikesh Tade
Rushikesh Tade le 26 Juin 2015
Hi Adriano,
Try doing this:
  • Use k-NN classifier, use the Fitzpatrick Scale color ranges for the training.
  • Calculate Average color of Skin (its easy detect non_black pixels in image and average them). Use k-NN to detect skin type.
  • You can do the clustering by using same method of averaging the then doing K-Means for each sample image.
  1 commentaire
Adriano Romano
Adriano Romano le 21 Jan 2017
Hi Rushikesh,
thank you and sorry for the late answer. Since some people have asked if i managed to solve this, i'll leave a presentation here explaining what i did and that will hopefully help others on the matter.

Connectez-vous pour commenter.

Community Treasure Hunt

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

Start Hunting!

Translated by