Problems with using a rough greyscale algorithm?

前端 未结 7 2095
生来不讨喜
生来不讨喜 2021-02-06 20:43

So I\'m designing a few programs for editing photos in python using PIL and one of them was converting an image to greyscale (I\'m avoiding the use of

7条回答
  •  生来不讨喜
    2021-02-06 20:55

    There are many formulas for the Luminance, depending on the R,G,B color primaries:

    Rec.601/NTSC: Y = 0.299*R + 0.587*G + 0.114*B , 
    
    Rec.709/EBU:  Y = 0.213*R + 0.715*G + 0.072*B , 
    
    Rec.2020/UHD: Y = 0.263*R + 0.678*G + 0.059*B . 
    

    This is all because our eyes are less sensitive to blue than to red than to green.

    That being said, you are probably calculating Luma, not Luminance, so the formulas are all wrong anyway. For Constant-Luminance you must convert to linear-light

    R = R' ^ 2.4 , G = G' ^ 2.4 , B = B' ^ 2.4 , 
    

    apply the Luminance formula, and convert back to the gamma domain

    Y' = Y ^ (1/2.4) . 
    

    Also, consider that converting a 3D color space to a 1D quantity loses 2/3 of the information, which can bite you in the next processing steps. Depending on the problem, sometimes a different formula is better, like V = MAX(R,G,B) (from HSV color space).

    How do I know? I'm a follower and friend of Dr. Poynton.

提交回复
热议问题