2012-01-12 91 views
3

我有一个网络,其中节点分层次定义(通过UN SITC coding)。在我的应用程序中,每个节点都有四个具有递增层次特性的标识数字(例如,请参阅产品7431),但我定义的网络不仅仅是明显的层级结构。我想要做的是按层次对节点进行着色,但根据我的网络计算将它们排列出来,看看两者的重合程度。算法到颜色节点分层

一般来说,我正在寻找一种方法来生成N个颜色调色板,它们尽可能在视觉上与一个和另一个显然不同(显然N效果越来越差),然后将它们分成子调色板,直到我达到了期望的分层深度。

具体来说,这意味着要为第一个数字选择10个基色,并为其中的每个生成K < = 10个颜色的调色板,其中K是第二个数字可以采用的可能值的数量,以及第三个和第四位数字,直到我根据其分层信息结束所有节点的着色。绿色是一种类型,在其内部的某些绿色色调定义了与视觉相似的某些节点族。

看起来像“Analagous”是我想要实现的颜色属性。只需在HSV/HSL方案中定期分解色调参数即可完成此操作,还是有更好的方法?

我将在Python中实现它,但任何算法应基本上是语言不可知的。

+0

您是否可以发布一个较小的视觉示例来显示您正在拍摄的内容? – Richard 2012-12-08 16:17:47

回答

0

我解决了一个类似的问题(可能与您正在做的相反),我在比较各种图像的光谱输出以确定基于相似性的排序。

在经历了数周的RGB彩色立方体摆弄之后,我放弃了并转移到单纯疱疹病毒 - 并从未回头。我会识别那些定义颜色的色相,然后根据这些颜色进行排列,这样就不会有两种有点黄的颜色 - 相反,您会开始斧头然后添加k的倍数,以便您拥有像这样的东西:

x is red 
x+k is yellow 
x+2k is green 
... so forth 

其中,我将细分和可能通过少量排列'值'和'饱和度'来增加可用颜色的数量。

如果你最终在系统之间转换,我用colorsys没有问题。