如何避免渐变中出现明显的色带?


13

因此,这比图形设计更科学地可视化,但是我认为理论是相同的。在用于可视化数据的色图中,通常会有一些色带在不应显示的位置突出。我相信他们是马赫乐队的一种形式?

例如,我使用了这种双极性色彩图,它会生成如下图像:

在此处输入图片说明

它几乎像是一圈约0.2的霓虹灯橙色,以及类似的约-0.2的蓝色戒指。这是RGB分量的图,以及黑色的相对亮度的计算:

在此处输入图片说明

我手动对其进行了调整,以尝试摆脱乐队的束缚,但取得了一些成功,但我并不真正了解其背后的理论:

在此处输入图片说明

在此处输入图片说明

更好,但是我仍然看到乐队。

再举一个例子,对于炎热的色彩图,我想也许我必须对亮度图进行线性化处理以防止出现条纹,但实际上并没有奏效:

在此处输入图片说明 在此处输入图片说明

黄色和橙色的乐队仍然在那里,他们只是被移动并涂抹了一点。因此,亮度图中的不连续性不是问题的原因。

如何在没有条纹的情况下平滑过渡颜色?是否有通过Lab色彩空间制作平滑曲线的规则?(编辑:哦,我为此找到了一个示例:“色标是使用L a b *颜色空间计算的。它沿着L *方向遵循均匀的斜率,并且遵循a * -b中的半圆路径*飞机。”)

更新:这是此颜色图在RGB多维数据集中的绘图,显示user568458所谈论的锐角:

在此处输入图片说明


1
请注意,我在下面对感官频段做出了评论,但这是在我真正研究问题之前。我看到您正在谈论两种特定颜色范围如何脱颖而出。
horatio

1
不错的图!这正是我的意思是尖角,我想象一个颜色立方体像这一个像这样。我已经添加了一个粗略但希望有用的例子来说明我要回答的问题。(当然,在红色路径添加绿色以达到白色,而蓝色路径添加红色以达到白色的位置处也有第二对尖角)
user56reinstatemonica13 2013年

Answers:


6

不要忘记,即使您使用的是LAB颜色值,也必须输出RGB值才能在屏幕上显示它。在某个时候,它必须告诉屏幕的红色,绿色和蓝色像素该怎么做。

用RGB术语来看,产生波段的原因实际上很简单。

抓住一个颜色选择器并查看渐变,您会注意到这些带围绕着渐变性质发生变化的点周围:

  • 在红色处,它是从平滑增加RGB中的R到添加G变为黄色的周围-在#FF0000到#FF2500之间
  • 在蓝色处,它是从平滑增加RGB中的B到添加G变为青色的地方-在#0000FF到#0025FF之间

同样,在底部绘制时,将黄色添加到白色:它们实际上是将三个渐变连接在一起。以红色渐变为例:

  • 它是#000000至#FF0000(以HSB术语增加亮度,以RGB增加红色通道)
  • 然后#FF0000至#FFFF00(以HSB方式更改色相,以RGB增加绿色通道)
  • 然后#FFFF00至#FFFFFF(以HSB项更改饱和度,以RGB增加蓝色通道)

在此处输入图片说明

因此,如果是这样建立的,那么总会有一个可见的联接。通常,以精度和线性度为主要目标,最好保持渐变简单,不断改变一个特征(除非您想要进行条带化,例如在某些类型的脑部扫描中)。


也就是说,如果您确定要遍历更广的频谱(看起来确实不错),那么我会考虑在第一个通道完成之前开始添加第二个通道,在梯度之间形成桥接部分,或者轻微倒S形曲线到第二个通道添加的速率(可能两个都有)。

所以代替:

  • 000000至#FF0000,黑色100%至红色100%

  • FF0000至#FFFF00,100%红色至100%黄色

  • FFFF00至#FFFFFF,100%黄色至100%白色

...可能是(只是猜测,我需要调整):

  • 000000至#E90000,100%黑色至亮红色

  • E90000至#FF2500,(短桥)鲜红色(暗)至鲜红色(略橙)

  • FF2500至#FFE900,鲜红色(略橙色)到鲜黄色(略橙色)

  • FFE900至#FFFF25,(短桥)亮黄色(浅橙色)至亮黄色(浅色)

  • FFFF25至#FFFFFF,亮黄色(浅)至100%白色

...然后根据口味调整每个部分的曲线:-)


编辑:这是“偷工减料”建议的演示。它不是完美的-相当精细,只是我使用Illustrator混合工具在几分钟内就将它们放在一起(底部未混合的对象以显示色点)。每个色点之间的梯度的每个部分都是100%线性的,而您可能想要更圆滑的结果-因此,如果仔细看,您可以发现色带。

监视器之间的结果自然会有所不同:在我的“好”监视器上,它很平滑;在我用来检查网络图像弹性的“不良”监视器上(原始条带显示不清晰),橙色总是显得柔和,使红色和黄色的区域看上去比加入的橙色要明亮,过分强调红色和黄色区域-但您仍然可以看到原始乐队的“边缘”已经消失。

无论哪种方式,与原始渐变相比,您都可以清楚看到差异。(至于其背后的数学-不知道,我不是数学家,但希望这有助于确定问题和解决方案)

在此处输入图片说明

另一个优点是,您可以自由使用更清晰的黑色>一个通道过渡。


或在RGB颜色立方体上有相同的想法(请原谅粗暴,其目的是为了演示不准确...):

在此处输入图片说明

这可能更清楚地说明了我所说的示例渐变可以通过使从主要片段到切角片段的过渡平滑而不是有角度的过渡来改善的意思。


如此 避免将R,G,B频道(?)的值
设为

2
@horatio不是真的不行,更像是tldr; 避免在渐变的各个部分之间出现尖角
user56reinstatemonica8 2013年

这完全取决于用于输出的色彩空间-如果您具有从纯白色到纯品红色到纯紫罗兰色(100%品红色和青色)到纯黑色(例如,由100%C,m,k制成)
user56reinstatemonica13'2

更像“在HSB空间中移动时避免出现尖角”?但是,如果我尝试执行三次插值之类的操作,最终我会走到HSB空间之外,这会限制值并反而会导致不良情况。在第二个示例中,我正在按照您的建议执行有关添加桥接部分的建议,但是效果并不理想。它看起来仍然像是一团黄色的斑点,在一个橘红色的斑点中,周围有一个光环,而不是平滑变化的颜色变化。
endlith 2013年

1
以下是尝试使用贝塞尔 曲线的方法:flic.kr/p/e1bcFf flic.kr/p/e15wik
endolith 2013年

1

也许这可以帮到您,它对我有用,但我不知道手动完成此操作的方法。

http://nomorebanding.com/


那不是同一类型的带,无论如何在这种情况下都不可能进行抖动处理。我想我正在谈论更多关于感官带的平滑渐变,而您的链接是关于色彩量化带来的条纹?
endlith 2013年

1
的感知频带从彩色量化。每像素8位表示存在问题。我对插件一无所知,但是在生成渐变时使用16bpp RGB,然后下采样到8bpp将产生比在8bpp中构建它们更好的结果,并且带区更少。
horatio

@horatio:不,这些色带来自曲线,因为它在感知的色彩空间中移动时呈锐角。具体来说,在我的示例中,是在这些角上达到峰值的色度。
Endlith 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.