CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  专题开发/技术/项目 >  游戏开发

求:RGB和HSL,YUV,YCbCr,Gamma等常用色系之间的转换算法.

楼主whatkindu(天啊,这里这么多人啊)2002-12-09 13:07:24 在 专题开发/技术/项目 / 游戏开发 提问

具体:  
          RGB和HSL,RGB和YUV,RGB和YCbCr,RGB和Gamma之间的互换公式或者算法(注意:是两个公式,比方说RGB转换到HSL,同时要还有HSL转化到RGB)  
  另外一定附加HSL,YUV,YCbCr,Gamma的取值范围等,  
  反正越详细越好.一经完成马上给分. 问题点数:100、回复次数:13Top

1 楼whatkindu(天啊,这里这么多人啊)回复于 2002-12-10 10:40:10 得分 0

没人UP自己UP!UP者也有分.  
  给大家在给出色系之间转换公式的同时,务必附加上取值范围,  
  因为我象在程序中调整这几个色系的数值,就象用RGB色系调整亮度一样.  
  谢谢.Top

2 楼renxiaoyu(一条直线,一个目标)回复于 2002-12-10 16:05:28 得分 0

upTop

3 楼KyosukeNo1(裕作)回复于 2002-12-10 21:45:42 得分 0

关注。  
  HSL的H取值范围是360,S和L是100。如果要在这个色彩模型中调整亮度,变亮可以调整L至100,继续变亮调整S到0(这时是白色)Top

4 楼noslopforever(天堂里的死神)回复于 2002-12-11 08:28:02 得分 0

关注upTop

5 楼whatkindu(天啊,这里这么多人啊)回复于 2002-12-11 12:14:24 得分 0

谢谢以上三位兄弟,特感谢   KyosukeNo1(裕作),我现实验以下,  
  另外大家可否给出更多转换算法Top

6 楼KyosukeNo1(裕作)回复于 2002-12-11 21:21:16 得分 70

其实可以打开Photoshop来自己找规律的。  
  其实HSL的换算我已经找到规律,不过不知道怎么用语言来描述,但又没有时间把他们写成代码......SorryTop

7 楼ghdut(傻瓜)回复于 2002-12-11 21:28:21 得分 0

upTop

8 楼lyzcom(初学者)回复于 2002-12-12 11:20:48 得分 30

我曾经在DOS下写过的一段代码,给你用用吧,在VC下编译可以会出现warnings,不过也没关系:)  
  #include   <math.h>  
   
  #define   MAX(a,   b)   (a   >   b   ?   a   :   b)  
  #define   MIN(a,   b)   (a   <   b   ?   a   :   b)  
   
  /*   hsv_to_rgb:  
    *     Converts   from   HSV   colorspace   to   RGB   values.  
    */  
  void   hsv_to_rgb(float   h,   float   s,   float   v,   int   *r,   int   *g,   int   *b)  
  {  
        float   f,   x,   y,   z;  
        int   i;  
   
        v   *=   255.0;  
   
        if   (s   ==   0.0)   {  
              *r   =   *g   =   *b   =   (int)v;  
        }  
        else   {  
              while   (h   <   0)  
          h   +=   360;  
              h   =   fmod(h,   360)   /   60.0;  
              i   =   (int)h;  
              f   =   h   -   i;  
              x   =   v   *   (1.0   -   s);  
              y   =   v   *   (1.0   -   (s   *   f));  
              z   =   v   *   (1.0   -   (s   *   (1.0   -   f)));  
   
              switch   (i)   {  
    case   0:   *r   =   v;   *g   =   z;   *b   =   x;   break;  
    case   1:   *r   =   y;   *g   =   v;   *b   =   x;   break;  
    case   2:   *r   =   x;   *g   =   v;   *b   =   z;   break;  
    case   3:   *r   =   x;   *g   =   y;   *b   =   v;   break;  
    case   4:   *r   =   z;   *g   =   x;   *b   =   v;   break;  
    case   5:   *r   =   v;   *g   =   x;   *b   =   y;   break;  
              }  
        }  
  }  
   
   
   
  /*   rgb_to_hsv:  
    *     Converts   an   RGB   value   into   the   HSV   colorspace.  
    */  
  void   rgb_to_hsv(int   r,   int   g,   int   b,   float   *h,   float   *s,   float   *v)  
  {  
        float   min,   max,   delta,   rc,   gc,   bc;  
   
        rc   =   (float)r   /   255.0;  
        gc   =   (float)g   /   255.0;  
        bc   =   (float)b   /   255.0;  
        max   =   MAX(rc,   MAX(gc,   bc));  
        min   =   MIN(rc,   MIN(gc,   bc));  
        delta   =   max   -   min;  
        *v   =   max;  
   
        if   (max   !=   0.0)  
              *s   =   delta   /   max;  
        else  
              *s   =   0.0;  
   
        if   (*s   ==   0.0)   {  
              *h   =   0.0;    
        }  
        else   {  
              if   (rc   ==   max)  
    *h   =   (gc   -   bc)   /   delta;  
              else   if   (gc   ==   max)  
    *h   =   2   +   (bc   -   rc)   /   delta;  
              else   if   (bc   ==   max)  
    *h   =   4   +   (rc   -   gc)   /   delta;  
   
              *h   *=   60.0;  
              if   (*h   <   0)  
    *h   +=   360.0;  
          }  
  }Top

9 楼whatkindu(天啊,这里这么多人啊)回复于 2002-12-12 21:14:51 得分 0

十分感谢以上几位朋友,请问大家是否有Gamma和RGB的互换公式?以及Gamma的取值范围?Top

10 楼whatkindu(天啊,这里这么多人啊)回复于 2002-12-14 14:27:27 得分 0

难道大家都没有Gamma的?Top

11 楼KyosukeNo1(裕作)回复于 2002-12-14 17:55:32 得分 0

其实Gamma是什么呢?色彩模型吗?没有听说过......Top

12 楼whatkindu(天啊,这里这么多人啊)回复于 2002-12-18 11:00:49 得分 0

ACD   SEE   5.0里面就有调整Gamma的Top

13 楼KyosukeNo1(裕作)回复于 2002-12-19 17:06:23 得分 0

你说的是那个啊。  
  它和RGB、HSL、CMYK等不一样,应该不是一种色彩模型啊!调节后感觉上有点象是在调整HSL里面的L值......Top

相关问题

  • 求:RGB和HSL,YUV,YCbCr,Gamma等常用色系之间的转换算法.
  • 哪位知道RGB->YUV / YUV2的正确转化算法??
  • 关于RGB与YUV互换的问题,急啊。。。
  • 请教:如何从YUV颜色空间转化到RGB空间?
  • 做了RGB TO YUV的转换,有颜色偏差
  • 急, RGB 怎么转换成 YV12(YUV 4:2:0)?
  • 如何进行rgb->yuv的转化(在线等)
  • 如何将HSL色彩空间转换到RGB?
  • 请问如何从RGB颜色系统变换到YUV颜色系统?
  • YUV格式的图像是不是转换成RGB格式后才能显示出来彩色图像?

关键词

  • 算法
  • 转换
  • hsl
  • ycbcr
  • rgb
  • yuv
  • gamma
  • 色系
  • 公式
  • 取值范围

得分解答快速导航

  • 帖主:whatkindu
  • KyosukeNo1
  • lyzcom

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo