我想对一个一维颜色列表进行排序,以便人们通常认为相似的颜色彼此靠近。
显然,这是一个难以或者说不可能完美解决的问题,因为颜色通常用三个维度来描述,但这并不意味着没有一些排序方法比其他方法更自然。
例如,按照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也存在一些问题;人们认为是“黑色”的物品可能被远离彼此地分开,同样被人们认为是“白色”的物品也可能被远离彼此地分开。
再次强调,我知道我必须接受会有一些这样的分裂;我只是想知道是否有人发现比HLS/HSL更好的方法。我也知道“更好”在某种程度上是主观的,我的意思是“对于普通人来说更自然”。
例如,我有一个模糊的想法,但还没有尝试过,即“当L非常高或非常低时,它是最重要的”,但在其他情况下它是最不重要的。有人尝试过吗?效果如何?具体来说,“非常低”和“非常高”意味着什么?等等。或者是否有人发现其他可以改进HSL的东西?
我也应该注意到,我知道可以通过立方色块定义一种填充空间的曲线,并按照沿着该曲线行进时遇到的顺序进行一维排序。这将消除感知上的不连续性。然而,这不是我真正想要的;我更希望得到良好的整体大规模分组,而不是完美的小规模分组。
提前感谢任何帮助。