How to track skin tone?

I’m curious how fast I’ll bleach out now that the sun here is done for the season. There are quite a few skincare apps, but they seem to focus more on tracking blemishes than changes to your skin tone.

Pantone sells a $700 device that can accurately capture your skin tone, but this seems like overkill… Their color palette however seems useful:

I can take pictures with white and black reference cards and correct the white balance, but am not sure how to properly correct the brightness of a picture in a reproducible manner. Any ideas?

1 Like

Maybe something along these lines (normalize the histograms of a series of images in Python) might work?

Or maybe there is a way to extract brightness data from the image’s EXIF info?

Stretching the histogram is what I need to do, but it’s not obvious how much exactly to stretch in each direction… What might work is first averaging areas of black, white and skin, then using a white or black area to correct the white balance, and finally pushing the whites and blacks to the extremes:

i don’t know, color accuracy is really important and $700 pantone device seems like the easiest way to do this for tracking.

if you are looking for a more affordable way to do this i would just buy their skin tone guide, https://www.pantone.com/products/fashion-home-interiors/pantone-skintone-guide

it’s about 100 dollars but color accurate and lighting conditions looking at the piece of paper compared to your skin will be the same, so accurate but more tedious.

The color swatch is a great idea. Only, I know I would spend an hour every time agonizing over which color is the closest match :slight_smile:

I’m still missing something…

Here are two pictures that were taken on the same day, in natural (A) and artificial (B) light, from the raw image (1), to an image with averaged colors (2), and the corrected image (3):


This is the histogram before and after correcting an image by using the white area to set the white balance, and auto-adjusting whites and blacks to “stretch” the histogram:

OK, looks like the trick is to correct the white balance before doing any averaging (and adjust the whites and blacks only after averaging):

1 Like

Nice - you did it… this is a neat discovery in the sense that I think it is impossible to look up the answer, you have to fiddle!

Interesting info, thanks!

Two more things I’ve learned while trying to track changes to my skin tone:

  1. Color correction can’t fully compensate for how the skin absorbs/reflects different kinds of light, so you need to use the same (preferably indirect) light source as well as the same camera exposure settings every time.
  2. Skin tone is determined not just by the amount of melanin, but also by the amount of blood flow (“erythema”), so it’s best to always take the pictures first thing in the morning. Converting RGB values to the CIELab color space can help as well, as the L* and b* dimensions have been shown to correlate with changes to the “melanin index”, whereas the a* dimension correlates with changes to the “erythema index”.

Turns out you need to place the calibration cards in front of the object being photographed, so the cards aren’t reflecting light bounced off the object…

Have you checked out these folks? They are dealing with similar computer vision/calibration challenges to accurately read color values from urinalysis dipsticks.

Looks like they don’t even try to calibrate, but instead match the nearest color on the calibration card. But it’s also a much tougher problem (small color areas, need to distinguish different hues, random devices etc).

I’m tempted to see how well one of the apps/devices for checking the color of paint works for this, e.g. Color Muse

Gave up on the image processing approach, and got the Color Muse mentioned above… Here are some test measurements I took at either the upper arm or the upper thigh (latter should always be lighter than former), and on myself or on one other person (who should always be lighter than me). Each measurement was repeated 3 times, and is plotted against L* and a* in the CIELab color space (which should reflect the melanin index and bloodflow, respectively).

Some notes:

  • Need to re-calibrate the device after each session (just a few taps, so not a big deal).
  • Need to manually transcribe the color values from the app (ugh).
  • Only a small spot is measured, so need to do multiple measurements and average the values.
  • Probably a good idea to take the measurements in a dark room.
  • Showering or exercising doesn’t appear to affect the a* significantly; guess I don’t flush much?

I’ll continue to take weekly measurements, and maybe do one “intra-day” measurement series.

1 Like

Here is the “lightness” of my skin as measured by the Color Muse over the past few months (upper arm in light blue, upper thigh “control” in dark blue):

Didn’t get much sun exposure until July. Should be reaching peak tan any week now :grin:

3 Likes

…and the tan is almost gone again :sob:

For most of July and August I had no trouble reaching the maximum sun exposure recommended by dminder at least 5x a week. September, this dropped to maybe 2x a week, and in October I haven’t reached the maximum even once, so far.

1 Like