gpt4 book ai didi

colors - 如何通过 HSL 颜色着色?

转载 作者:行者123 更新时间:2023-12-01 15:53:45 27 4
gpt4 key购买 nike

我有一个复杂的问题,但可以通过这个小问题解决。我想制作一个按像素工作的着色器。

我为图片定义了一个基色(图片中有一些像素具有这种颜色,还有很多其他像素接近这种颜色):

Hex: #188DD9
HSL: 204° 80% 47%
RGB: 24 141 217

我知道我的目标基色:

Hex: #23752E
HSL: 128° 54% 30%
RGB: 35 117 46

所以,我想给图像上色。

我的假设是,如果我找到这两个 HSL 值的相关性,我可以逐个像素地为我的图片着色。

目前我发现,如果我将基色色调移动为 (target hue - base hue) = -76,色调会很好。

你能告诉我饱和度和亮度之间的联系在哪里来解决这个问题吗?

最佳答案

我假设,无论您最终使用什么映射,您都希望将黑色映射到黑色、白色映射到白色以及灰色映射到灰色。

加法映射

H' = H + (Htarget - Hbase)

(wrap-around)你用于 hue 确实可能没问题。对于饱和度,需要保留灰度值建议乘法映射

S' = S * (Starget / Sbase),

超过 100% 饱和度的值被剪掉。但是,对于亮度,线性贴图是行不通的,因为您希望在调整中间值的同时固定 0% 和 100% 的亮度。一个自然的选择可能是 gamma -类型 map ,即

L' = pow( L, log(Ltarget) / log(Lbase) ) = exp( log(L) * log(Ltarget) / log(Lbase) ).

其中亮度值缩放到 0 到 1 之间。(注意:要针对大量像素有效地计算此 map ,您可能需要预先计算一个包含 256 个条目的查找表。)

当然,您还可以使用许多其他 map ,但我会先从这些 map 着手,看看它们是否能提供足够好的结果。请注意,最终,您的结果质量也可能受到 HSL 色彩空间的感知不均匀性的限制;有关详细信息,请参阅 this Wikipedia page .

关于colors - 如何通过 HSL 颜色着色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6845374/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com