How do I determine if a color is closer to white or black?

前端 未结 4 1618
别那么骄傲
别那么骄傲 2021-02-01 07:26

I am dealing with images and would like to determine if a set of pixels are closer to white or black.

So given a set of colors/pixles, how does one det

4条回答
  •  时光取名叫无心
    2021-02-01 07:40

    There are two potential meanings of white and black:

    • Colour spectrum of visible light
    • Human skin tones as determined by race, amount of tan etc.

    The former is easy: convert to greyscale range 0-255. 127 or less is closer to black (0), 128 or above is closer to white (255).

    I use the following function to convert to greyscale using luminance values (assuming an int ARGB format for input colour):

    public static int getLuminance(int argb) {
        int lum= (   77  * ((argb>>16)&255) 
                   + 150 * ((argb>>8)&255) 
                   + 29  * ((argb)&255))>>8;
        return lum;
    }
    

    The latter definition (human skin tones) is impossible to do with a simple algorithm as it depends on light condition, camera settings, exposure etc. An RGB vlaue of (190,115,60) is probably approximately the midpoint in typical conditions

提交回复
热议问题