gpt4 book ai didi

graphics - 对一维颜色列表进行排序?

转载 作者:行者123 更新时间:2023-12-02 13:10:54 26 4
gpt4 key购买 nike

我想对一维颜色列表进行排序,以便典型人类认为彼此“相似”的颜色彼此接近。

显然,这是一个很难或可能不可能“完美”解决的问题,因为颜色通常是用三个维度来描述的,但这并不意味着没有一些排序方法看起来明显比其他方法更自然。

例如,按 RGB 排序效果不太好,因为它会按以下顺序排序,例如:

(1) R=254 G=0 B=0(2) R=254 G=255 B=0(3) R=255 G=0 B=0(4) R=255 G=255 B=0

也就是说,它将交替出现红色、黄色、红色、黄色这些颜色,这两种“红色”彼此之间存在本质上难以察觉的不同,并且两种黄色彼此之间也存在难以察觉的不同。

但是一般来说,通过 HLS 排序效果要好得多,而且我认为 HSL 甚至比这更好;无论使用哪种,红色将彼此相邻,黄色将彼此相邻。

但是 HLS/HSL 也存在一些问题;人们认为“黑色”的事物可能彼此相距甚远,人们认为“白色”的事物也可能彼此相距甚远。

再次,我明白我必须接受会有一些像这样的 split ;我只是想知道是否有人找到了比 HLS/HSL 更好的方法。我知道“更好”有些武断。我的意思是“对于典型的人类来说更自然”。

例如,我曾经有过但尚未尝试过的一个模糊想法可能是“如果 L 非常高或非常低,则它是最重要的”,但除此之外,它是最不重要的。有人试过这个吗?效果好吗?您认为“非常低”和“非常高”具体意味着什么?等等。或者有没有人发现任何其他可以改进 HSL 的东西?

我还应该注意,我知道我可以通过颜色立方体定义一条空间填充曲线,并按照沿着该曲线行进时遇到的情况对它们进行一维排序。这将消除感知到的不连续性。然而,这并不是我真正想要的;比起完美的小规模分组,我更想要体面的整体大规模分组。

预先感谢您的帮助。

最佳答案

如果您想在一维中对颜色列表进行排序,您首先必须决定要按什么指标对它们进行排序。对我来说最有意义的是感知亮度( related question )。

我遇到了 4 种按亮度对颜色进行排序的算法,并对它们进行了比较。这是结果。

我循环生成颜色,大约每 400 种颜色才会被使用一次。每种颜色由 2x2 像素表示,颜色从最深到最亮(从左到右,从上到下)排序。

第一张图片 - Luminance (relative)

0.2126 * R + 0.7152 * G + 0.0722 * B

第二张图片 - http://www.w3.org/TR/AERT#color-contrast

0.299 * R + 0.587 * G + 0.114 * B

第三张图片 - HSP Color Model

sqrt(0.299 * R^2 + 0.587 * G^2 + 0.114 * B^2)

4td 图片 - WCAG 2.0 SC 1.4.3 relative luminancecontrast ratio公式

有时会在第一张和第二张图片上发现图案,具体取决于一行中的颜色数量。我从未在第三或第四算法的图片上发现任何图案。

如果我必须选择,我会选择第 3 号算法,因为它更容易实现,并且比第 4 号算法快约 33%

Perceived brightness algorithm comparison

关于graphics - 对一维颜色列表进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3014402/

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