RGB 与HLS转换?//////////

lirengen10 2003-08-26 05:18:37
那位大哥有RGB与HLS转换的公式或函数,请告诉我.
...全文
402 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
寻开心 2003-08-27
  • 打赏
  • 举报
回复
CXIMAGE里面提供了RGBTOHSL和hsltorgb的转换
寻开心 2003-08-27
  • 打赏
  • 举报
回复
统计+逐点计算快不了。
这里有一个快速算法,http://www.37c.com.cn/literature/analecta/data/swyxgcxzz/200002/014.html

lirengen10 2003-08-26
  • 打赏
  • 举报
回复
多谢,我想通过改变s的值来调节饱和度,我原来的算法是读出一个位图,取的r,g,b的值,转换成H,S,L,然后改变s值,再转换成r,g,b的值,但速度很慢,能否告诉我通过改变s的值直接改变r,g.b的值,或有别的算法改进速度。
寻开心 2003-08-26
  • 打赏
  • 举报
回复
/*
A Fast HSL-to-RGB Transform
by Ken Fishkin
from "Graphics Gems", Academic Press, 1990
*/

#include <math.h>
#include <stdio.h>
#include "GGems.h"

/*
* RGB-HSL transforms.
* Ken Fishkin, Pixar Inc., January 1989.
*/

/*
* given r,g,b on [0 ... 1],
* return (h,s,l) on [0 ... 1]
*/
void
RGB_to_HSL (r,g,b,h,s,l)
double r,g,b;
double *h, *s, *l;
{
double v;
double m;
double vm;
double r2, g2, b2;

v = MAX(r,g);
v = MAX(v,b);
m = MIN(r,g);
m = MIN(m,b);

if ((*l = (m + v) / 2.0) <= 0.0) return;
if ((*s = vm = v - m) > 0.0) {
*s /= (*l <= 0.5) ? (v + m ) :
(2.0 - v - m) ;
} else
return;


r2 = (v - r) / vm;
g2 = (v - g) / vm;
b2 = (v - b) / vm;

if (r == v)
*h = (g == m ? 5.0 + b2 : 1.0 - g2);
else if (g == v)
*h = (b == m ? 1.0 + r2 : 3.0 - b2);
else
*h = (r == m ? 3.0 + g2 : 5.0 - r2);

*h /= 6;
}

/*
* given h,s,l on [0..1],
* return r,g,b on [0..1]
*/
void
HSL_to_RGB(h,sl,l,r,g,b)
double h,sl,l;
double *r, *g, *b;
{
double v;

v = (l <= 0.5) ? (l * (1.0 + sl)) : (l + sl - l * sl);
if (v <= 0) {
*r = *g = *b = 0.0;
} else {
double m;
double sv;
int sextant;
double fract, vsf, mid1, mid2;

m = l + l - v;
sv = (v - m ) / v;
h *= 6.0;
sextant = h;
fract = h - sextant;
vsf = v * sv * fract;
mid1 = m + vsf;
mid2 = v - vsf;
switch (sextant) {
case 0: *r = v; *g = mid1; *b = m; break;
case 1: *r = mid2; *g = v; *b = m; break;
case 2: *r = m; *g = v; *b = mid1; break;
case 3: *r = m; *g = mid2; *b = v; break;
case 4: *r = mid1; *g = m; *b = v; break;
case 5: *r = v; *g = m; *b = mid2; break;
}
}
}


4,446

社区成员

发帖
与我相关
我的任务
社区描述
图形图像/机器视觉
社区管理员
  • 机器视觉
  • 迪菲赫尔曼
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧