如何创建具有许多视觉上不同颜色的色彩图?

时间:2017-02-14 20:15:01

标签: matlab colormap

与建议重复的区别

Matlab choose random color for plotting询问如何使用随机选定颜色创建色彩映射表。我问如何为色彩图选择视觉上不同的颜色。随机选择的颜色不保证在视觉上与众不同。事实上,在我的问题中,我使用随机颜色作为反例。

如果我的问题是重复的,那么它应该是Automatically plot different colored lines的副本,因为至少one of the answers,回答了我关于视觉上不同颜色的问题,即使问题没有要求详细说明。但是Matlab choose random color for plotting的答案的是有帮助的,所以不要使用那个!

原始问题

lines色彩图以预定义的顺序交替显示视觉上不同的7种颜色。 flagprism也会这样做。颜色为lines的7种不同颜色重复,prism为6,flag为4。

这些色彩图对于区分图像中的标记段非常有用,因为标签通常具有在jetparula色彩空间中具有低视觉清晰度的连续值。

例如,使用NYUv2 dataset中的第一张图片,您可以看到洗碗机和计数器使用colormap('parula')

颜色几乎相同

Image segments colored with parula

对于使用colormap('lines')的洗碗机和柜台来说效果会更好,但对于椅子和垃圾桶更糟糕,因为垃圾桶的值是12,椅子是5. 12 mod 7 = 5,所以他们得到相同的颜色分配< / p>

Image segments colored with lines

我有 n 标签,所以我想定义一个具有 n 交替视觉上不同颜色的色彩图。然后,我可以避免两个标签共享相同模数的问题。

我知道如何创建自定义色彩图,但挑战在于使色彩在视觉上与众不同。我尝试的一件事是从喷射中随机抽取颜色(类似于建议Matlab choose random color for plotting的解决方案)。

c_jet = colormap('jet');
idx = randperm(size(c_jet, 1));
c_new = c_jet(idx(1:30),:);
colormap(c_new);

但颜色在视觉上不够明显。天花板和墙几乎完全相同。

Image segments colored with random sample from jet

可能有30种不同的颜色要求太多,但我想要一种尽可能接近的一般方法。

1 个答案:

答案 0 :(得分:1)

例如,从维基百科中,您可以获得可区分颜色的列表

Help:Distinguishable colors

引用包含指向stackexchange线程的链接,您可以在其中阅读更多内容。

使用这些颜色,您可以构建自己的色彩映射。