2017-06-02 6 views
1

256グレースケール画像を仮定します。予約済みの偽色で灰色のcmapを修正するには?

カラーマップplt.cm.grayを修正して、指定されたグレー値のピクセルが特定の色(赤、青...)で表示されるようにします。例えば、値= 1のピクセルを赤、値= 2のピクセルを緑に設定する方法は?

私はmasked array exampleを認識しています。しかし、この例では、1つの色しか設定できないようです。

私は(失敗した)カスタムCMAP「agrey」を生成してみてください:

## try to make a custom cmap 
Ngrey = 256 
a = np.linspace(0,1,num=Ngrey, endpoint=True) 
A = np.array((a,a,a)).transpose() 

#Set pixel with greylevel=1 to red 
A[1,1:3]=0 

col_dict = {'red':A,'green':A, 'blue':A} 
print col_dict['blue'].shape 
agrey = LinearSegmentedColormap('mygray', col_dict) 

答えて

2

とにかく離散グレースケールで扱っているため、代わりにLinearSegmentedColormapを使用して、あなたはあなたListedColormapを、使用することができます256のグレー値を定義し、色付けする値を上書きします。ランダムな絵で、最小限の例下:Python 3.5

でテスト random grey scale image with certain, discrete values coloured in red, green, and blue

from matplotlib import pyplot as plt 
from matplotlib.colors import ListedColormap 
import numpy as np 

pic = np.random.randint(256, size=(100,100)) 

Ngrey = 256 
greys = np.linspace(0,1,Ngrey) 

colors = [[g,g,g] for g in greys] 

red = [1,0,0] 
green = [0,1,0] 
blue = [0,0,1] 

colors[5] = red 
colors[100] = blue 
colors[200] = green 

mymap=ListedColormap(colors) 

plt.matshow(pic, cmap=mymap) 
plt.show() 

結果は次のようになります

関連する問題