在SciPy中生成自己的色彩映射表

时间:2014-04-13 22:54:49

标签: python numpy matplotlib

我使用Python和Scipy来执行一些基本的图像处理。我已经将图像设置为灰度,并将其从高斯模糊中减去,作为边缘检测的一种形式。现在,我想在运行.imshow()命令时使其看起来很漂亮。例如,如果我使用其中一个默认色图,那么

matplotlib.pyplot.imshow(lena, cmap='binary')

其中lena是表示我所讨论图像的矩阵,图像显示为灰色背景。它看起来非常像this

我希望图像看起来更清晰,只有两种真实颜色,白色和黑色,以及非常少(或没有)灰色。

由于SciPy中没有其他默认颜色映射可以做到这一点,我想我应该自己制作。但我担心我不能完全掌握scipy提供的documentation

所以,让我说我有教程中的色彩图:

cdict = {'red': ((0.0, 0.0, 0.0),
                 (0.5, 1.0, 0.7),
                 (1.0, 1.0, 1.0)),
         'green': ((0.0, 0.0, 0.0),
                   (0.5, 1.0, 0.0),
                   (1.0, 1.0, 1.0)),
         'blue': ((0.0, 0.0, 0.0),
                  (0.5, 1.0, 0.0),
                  (1.0, 0.5, 1.0))}

my_cmap = matplotlib.colors.LinearSegmentedColormap('my_colormap', cdict, 256)
matplotlib.pyplot.imshow(lena, cmap=my_cmap)

如果我希望色彩图从0到0.5范围内仅为白色,并且从范围.5到1只有黑色,那该怎么看呢?感谢大家的帮助!

1 个答案:

答案 0 :(得分:1)

我希望这样的事情:

cdict = {'red': ((0.0, 0.0, 0.0),
                 (0.5, 0.0, 0.0),
                 (0.5, 1.0, 1.0),
                 (1.0, 1.0, 1.0)),
         'green': ((0.0, 0.0, 0.0),
                 (0.5, 0.0, 0.0),
                 (0.5, 1.0, 1.0),
                 (1.0, 1.0, 1.0)),
         'blue': ((0.0, 0.0, 0.0),
                 (0.5, 0.0, 0.0),
                 (0.5, 1.0, 1.0),
                 (1.0, 1.0, 1.0))}

另见:http://matplotlib.org/examples/pylab_examples/custom_cmap.html
如果我错了,请原谅。我从来没有像你想要的那样创造跳跃。