一个 HSV 是(351, 120, 60), saturation 超出范围了(0-100),这样如何转换成正常的 HSV 范围。
希望有大佬说下算法或者指条方向🙏。
因为 V 站没有图像处理的节点,只能发在这里了。。。
补充一下这个问题的背景,最近想做个东西,根据一张彩色图提取其中红色的深浅图,目前也就想出来一种实现方法,就是给定一个最浅的红色值 minRed
,然后根据一个 标量
和 minRed
来计算相应的颜色,于是使用了 HSV 颜色模型,这样起码都是红色色域,但是根据标量计算的时候仅仅更改饱和度和亮度会导致这两个值会超出100%...
标量目前想了两种方法,一种是分离 RGB 通道,根据 R 通道的灰度去做;一种是归一化,取 R 值,不知道大佬有没有别的处理方法
1
Muniesa 2019-10-10 10:35:01 +08:00
没懂什么意思,超出范围了这个颜色在 hsv 里不就不存在了吗
|
2
blindie 2019-10-10 10:35:28 +08:00
我以前做 cubic 插值,出的值是可能超范围的,行业里一般抹平就可以。
饱和度定义就是 0-100%。你这个也超域了。最简单就抹平。如果你有做 hdr 之类的需求那另说,可以保留超域的数值,仅在显示的时候抹平。 |
3
blindie 2019-10-10 10:36:19 +08:00
抹平就是超过最大值的设为最大值,小于最小值的设为最小值
|
4
Alives OP @Muniesa 理论上是的,但是 Photoshop 有个机制,如果超出了打印色域,会更改 Hue 转化成可打印色,并且前后肉眼可见差别不大,大佬可以试试。PS 给出的是 HSV(354, 100, 68) => HSV(358, 81, 64)。
|
5
Alives OP @blindie 感谢回复,抹平的话有个问题就是没有颜色层次感了,我想自己做个东西,就是根据一张彩色图提取其中红色的深浅图,目前也就想出来一种实现方法,就是给定一个最浅的红色值 minRed,然后根据一个标量和 minRed 来计算相应的颜色,于是使用了 HSV 颜色模型,这样起码都是红色色域,但是根据标量计算的时候有些饱和度超出了 100%
|
6
Alives OP @blindie 标量目前想了两种方法,一种是分离 RGB 通道,根据 R 通道的灰度去做,一种是归一化,取 R 值,不知道大佬有没有别的处理方法
|
8
maplerecall 2019-10-10 11:20:11 +08:00 via Android
肉眼差距不大是因为非广色域显示器根本显示不出超过 srgb 范围的颜色,硬件上被抹平了,如果使用更高的目标色域比如 dci p3 和 adobe rgb,并且硬件支持,那是可以显示目标颜色的。不过这也很奇怪,按照标准 rgb 转 hue 不应该出现这种色域差距这么多的情况,是不是转的方法有问题…
|
9
Alives OP @maplerecall 感谢回复,大佬说的更广色域上根据 PS 的转换确实是可以看到差距,但是并不影响在结果中有层次的显示,可以看看第一条附言的问题背景描述,不知道大佬对这种需求有没有其他的可行方法?
|