Atitit 从 RGB 到 HSL 或 HSV 的转换
2016-11-05 01:08
477 查看
Atitit 从 RGB
到 HSL
或 HSV
的转换
1.1.
从 RGB
到 HSL
或 HSV
的转换公式与原理1
1.2.
public static HSV
RGB2HSV(Color clr) {2
1.3.
参考资料2
1.1. 从 RGB
设 (r, g, b)
分别是一个颜色的红、绿和蓝坐标,它们的值是在 0
到 1
之间的实数。设 max 等价于 r, g 和 b 中的最大者。设 min 等于这些值中的最小者。要找到在
HSL 空间中的
(h, s, l)
值,这里的 h ∈ [0, 360)是角度的色相角,而 s, l ∈
[0,1] 是饱和度和亮度,计算为:
h 的值通常规范化到位于
0 到
360°之间。而 h =
0 用于 max = min 的(就是灰色)时候而不是留下 h 未定义。
HSL
和 HSV 有同样的色相定义,但是其他分量不同。HSV
颜色的 s 和 v 的值定义如下:
1.2. public static HSV
float r =
(float)
clr.getRed();
float g =
(float)
clr.getGreen();
float b =
(float)
clr.getBlue();
float max =
max(r,
g,
b);
float min =
min(r,
g,
b);
float h =
0;
if (max ==
min)
h = 0;
else if (r ==
max &&
g >=
b)
h = (g -
b) / (max -
min) * 60;
else if (r ==
max &&
g <
b)
h = (g -
b) / (max -
min) + 360;
else if (g ==
max)
h = (b -
r) / (max -
min) * 60 + 120;
else if (b ==
max)
h = (r -
g) / (max -
min) * 60 + 240;
float s =
(max -
min) /
max;
if (max ==
0)
s = 0;
HSV hsv =
new HSV(h,
s,
max);
return hsv;
}
- jiangxinyu的专栏
- 博客频道
- CSDN.NET.html
作者:: 绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 )
汉字名:艾提拉(艾龙), EMAIL:1466519819@qq.com
转载请注明来源: http://blog.csdn.net/attilax
Atiend
到 HSL
或 HSV
的转换
1.1.
从 RGB
到 HSL
或 HSV
的转换公式与原理1
1.2.
public static HSV
RGB2HSV(Color clr) {2
1.3.
参考资料2
1.1. 从 RGB
到 HSL
或 HSV
的转换公式与原理
设 (r, g, b)分别是一个颜色的红、绿和蓝坐标,它们的值是在 0
到 1
之间的实数。设 max 等价于 r, g 和 b 中的最大者。设 min 等于这些值中的最小者。要找到在
HSL 空间中的
(h, s, l)
值,这里的 h ∈ [0, 360)是角度的色相角,而 s, l ∈
[0,1] 是饱和度和亮度,计算为:
h 的值通常规范化到位于
0 到
360°之间。而 h =
0 用于 max = min 的(就是灰色)时候而不是留下 h 未定义。
HSL
和 HSV 有同样的色相定义,但是其他分量不同。HSV
颜色的 s 和 v 的值定义如下:
1.2. public static HSV
RGB2HSV(Color clr) {
float r =(float)
clr.getRed();
float g =
(float)
clr.getGreen();
float b =
(float)
clr.getBlue();
float max =
max(r,
g,
b);
float min =
min(r,
g,
b);
float h =
0;
if (max ==
min)
h = 0;
else if (r ==
max &&
g >=
b)
h = (g -
b) / (max -
min) * 60;
else if (r ==
max &&
g <
b)
h = (g -
b) / (max -
min) + 360;
else if (g ==
max)
h = (b -
r) / (max -
min) * 60 + 120;
else if (b ==
max)
h = (r -
g) / (max -
min) * 60 + 240;
float s =
(max -
min) /
max;
if (max ==
0)
s = 0;
HSV hsv =
new HSV(h,
s,
max);
return hsv;
}
1.3. 参考资料
颜色空间RGB与HSV(HSL)的转换- jiangxinyu的专栏
- 博客频道
- CSDN.NET.html
作者:: 绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 )
汉字名:艾提拉(艾龙), EMAIL:1466519819@qq.com
转载请注明来源: http://blog.csdn.net/attilax
Atiend
相关文章推荐
- Atitit 从 RGB 到 HSL 或 HSV 的转换
- Atitit rgb yuv hsv HSL 模式和 HSV(HSB) 图像色彩空间的区别
- Atitit rgb yuv hsv HSL 模式和 HSV(HSB) 图像色彩空间的区别
- 颜色空间RGB与HSV(HSL)的转换
- 【OpenCV】颜色空间RGB与HSV(HSL)的转换
- RGB,HSL,HSV相互转换
- 【OpenCV】颜色空间RGB与HSV(HSL)的转换
- 【C#/算法】RGB、HSV、HSL颜色模型的互相转换
- 颜色空间RGB与HSV(HSL)的转换
- 颜色空间RGB与HSV(HSL)的转换
- 颜色空间RGB与HSV(HSL)的转换
- 颜色空间RGB与HSV(HSL)的转换
- 颜色空间RGB与HSV(HSL)的转换
- 颜色空间RGB与HSV(HSL)的转换
- 颜色空间RGB与HSV(HSL)的转换
- 颜色空间RGB与HSV(HSL)的转换
- 颜色空间RGB与HSV(HSL)的转换
- 从 RGB 到 HSL 或 HSV 的转换
- RGB、HSB\HSV、HSL三种颜色空间的原理理解与转换
- 色彩转换——RGB & HSL