一尘不染

HCL颜色为RGB并向后

algorithm

我需要一种算法,将HCL颜色转换为RGB并将向后RGB转换为HCL,同时要记住这些颜色空间具有不同的色域(我需要将HCL颜色限制为可以在RGB颜色空间中再现的颜色)。这是什么算法(该算法打算在仅支持RGB颜色的Wolfram
Mathematica
中实现)?我没有使用色彩空间的经验。

PS关于HCL颜色的一些文章:

M.Sarifuddin(2005)。一种新的感知上统一的色彩空间以及相关的色彩相似性度量,可用于基于内容的图像和视频检索。

Zeileis,Hornik和Murrell(2009):逃避RGBland:为统计图形选择颜色//计算统计和数据分析第53卷,第9期,2009年7月1日,第3259-3270页

更新: 正如乔纳森·詹森(JonathanJansson)所指出的那样,在以上两篇文章中,不同的色彩空间以名称“ HCL”描述:“第二篇文章使用L C h(uv)与L u v 相同,但以Polar描述坐标,其中h(uv)是u 和v 坐标的角度,而C 是该矢量的大小”。因此,实际上我需要一种将RGB转换为L u v
*并向后转换的算法。


阅读 865

收藏
2020-07-28

共1个答案

一尘不染

我也只是在讲HCL色彩空间。但是,问题中两篇文章中使用的色彩空间似乎是不同的色彩空间。

第二篇文章使用L * C * h(uv),它与L * u * v 相同,但在极坐标系中描述,其中h(uv)是u 和v 坐标系的夹角,而C
是幅度该向量。

第一篇文章中的LCH颜色空间似乎描述了另一种颜色空间,而不是使用更多的算法转换。这里还有第一篇论文的另一个版本:http
:
//isjd.pdii.lipi.go.id/admin/jurnal/14209102121.pdf

如果要使用CIE L * u * v ,则需要先将sRGB转换为CIE XYZ,然后再转换为CIE L * u * v
。在大多数情况下,RGB实际上是指sRGB,因此无需从RGB转换为sRGB。

所需的所有源代码

关于如何转换为XYZ的好文章

不错的在线转换器

但是我无法回答您有关如何将颜色限制到sRGB空间的问题。转换后,您可以丢弃超出0到1范围的RGB颜色。仅夹紧颜色会产生非常奇怪的结果。尝试转到转换器,输入颜色RGB
0 0 255,转换为L * a * b (类似于L * u * v ),然后将L *增加为70,然后将其转换回去,结果肯定是不再是蓝色。

编辑:更正了URL编辑:将另一个答案合并到此答案中

2020-07-28