Hello Mat

 找回密码
 立即注册
查看: 5906|回复: 0

RGB与HSL颜色空间的转化

[复制链接]

1323

主题

1551

帖子

0

金钱

管理员

Rank: 9Rank: 9Rank: 9

积分
22647
发表于 2017-2-4 22:05:51 | 显示全部楼层 |阅读模式
       HSL颜色空间类似于HSV颜色空间,HSL颜色空间一直被Tektronix公司所使用。由于HSL空间的三个分量能在较大范围内满足彩色图像处理的要求,而且它们与人眼的颜色感觉相对应,因此可以借助于HSL颜色空间可以有目的地进行处理,因而在彩色图像处理中具有比其它颜色空间更好的优越性。
       HSL颜色空间,H表示色调(Hue)S表示饱和度(Saturation)L表示亮度(Lightness)。色调(H)是一种颜色区别于另一种颜色的要素,如通常所说的红(R)、绿(G)、蓝(B)、黄(Y)等,饱和度(S)就是颜色纯度,亮度(L)即光的强度。

RGB —> HSL
  1. var_R = ( R / 255 )                     //RGB from 0 to 255
  2. var_G = ( G / 255 )
  3. var_B = ( B / 255 )

  4. var_Min = min( var_R, var_G, var_B )    //Min. value of RGB
  5. var_Max = max( var_R, var_G, var_B )    //Max. value of RGB
  6. del_Max = var_Max - var_Min             //Delta RGB value

  7. L = ( var_Max + var_Min ) / 2

  8. if ( del_Max == 0 )                     //This is a gray, no chroma...
  9. {
  10.    H = 0                                //HSL results from 0 to 1
  11.    S = 0
  12. }
  13. else                                    //Chromatic data...
  14. {
  15.    if ( L < 0.5 ) S = del_Max / ( var_Max + var_Min )
  16.    else           S = del_Max / ( 2 - var_Max - var_Min )

  17.    del_R = ( ( ( var_Max - var_R ) / 6 ) + ( del_Max / 2 ) ) / del_Max
  18.    del_G = ( ( ( var_Max - var_G ) / 6 ) + ( del_Max / 2 ) ) / del_Max
  19.    del_B = ( ( ( var_Max - var_B ) / 6 ) + ( del_Max / 2 ) ) / del_Max

  20.    if      ( var_R == var_Max ) H = del_B - del_G
  21.    else if ( var_G == var_Max ) H = ( 1 / 3 ) + del_R - del_B
  22.    else if ( var_B == var_Max ) H = ( 2 / 3 ) + del_G - del_R

  23.    if ( H < 0 ) H += 1
  24.    if ( H > 1 ) H -= 1
  25. }
复制代码
HSL —> RGB
  1. if ( S == 0 )                       //HSL from 0 to 1
  2. {
  3.    R = L * 255                      //RGB results from 0 to 255
  4.    G = L * 255
  5.    B = L * 255
  6. }
  7. else
  8. {
  9.    if ( L < 0.5 ) var_2 = L * ( 1 + S )
  10.    else           var_2 = ( L + S ) - ( S * L )

  11.    var_1 = 2 * L - var_2

  12.    R = 255 * Hue_2_RGB( var_1, var_2, H + ( 1 / 3 ) )
  13.    G = 255 * Hue_2_RGB( var_1, var_2, H )
  14.    B = 255 * Hue_2_RGB( var_1, var_2, H - ( 1 / 3 ) )
  15. }

  16. Hue_2_RGB( v1, v2, vH )             //Function Hue_2_RGB
  17. {
  18.    if ( vH < 0 ) vH += 1
  19.    if ( vH > 1 ) vH -= 1
  20.    if ( ( 6 * vH ) < 1 ) return ( v1 + ( v2 - v1 ) * 6 * vH )
  21.    if ( ( 2 * vH ) < 1 ) return ( v2 )
  22.    if ( ( 3 * vH ) < 2 ) return ( v1 + ( v2 - v1 ) * ( ( 2 / 3 ) - vH ) * 6 )
  23.    return ( v1 )
  24. }
复制代码









算法QQ  3283892722
群智能算法链接http://halcom.cn/forum.php?mod=forumdisplay&fid=73
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Python|Opencv|MATLAB|Halcom.cn ( 蜀ICP备16027072号 )

GMT+8, 2024-11-22 17:57 , Processed in 0.212961 second(s), 26 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表