2017-03-10 12 views
-2

16ビットグレースケールイメージ(最大値は850)のいくつかのピクセルをカラーしたいと思います。 まず、3Dスタック(I)に変換してから、 という色を渡しましたが、画像はうまく表示されません。グレースケールのカラーリング16ビットイメージ

I = np.dstack([image, image, image]) 
    I[5:10, 5:10, :] = [200, 0 , 0] 
    plt.figure() 
    plt.imshow(I, interpolation='nearest') 

the 16 bits grayscale image after the colour changing edited それは黒を例につき、すべてでは明らかでないが、画像の表示方法のほんの一例です。私はコード内の私のイメージではありません。

+0

赤い領域の中の値は 'NaN'ですか? – berna1111

+0

これは単なるコード例のIのイメージではありません。赤い領域の中の値はNaNのものではありません –

+0

着色の方法や基盤は?グラデーションマッピングでは、最小値と最大値の両方を処理する必要があり、場合によっては値の分布も(線形マッピングまたは非線形マッピングを選択できるように)処理する必要があります。 – Spektre

答えて

1

RGB値が0と1の間にあることを確認してください。私は([200, 0, 0]にこれらのポイントを設定するときに、あなたがやっているように見える)0〜255の値を使用して上記の例を変更した場合

import matplotlib.pyplot as plt 
import numpy as np 

n_points = 100 
a = np.linspace(0, 1, n_points) 
b,c = np.meshgrid(a,a) 
image = (b+c)/2 

a_third = n_points/3. 

I = np.dstack([image, image, image])# 
I[a_third:2*a_third, a_third:2*a_third, :] = [1 , 0 , 0] 
plt.figure() 
plt.imshow(I, interpolation='nearest') 

Resulting picture with the centre in red

:しかし、私はこの例を作ったあなたのコードを使用して

import matplotlib.pyplot as plt 
import numpy as np 

n_points = 100 
a = np.linspace(0, 255, n_points) 
b,c = np.meshgrid(a,a) 
image = (b+c)/2 

a_third = n_points/3. 

I = np.dstack([image, image, image])# 
I[a_third:2*a_third, a_third:2*a_third, :] = [255 , 0 , 0] 
plt.figure() 
plt.imshow(I, interpolation='nearest') 

enter image description here

それだけwはその残りを検討する1以上の値が与えられたとき、私は思います(最後の例でimage = ((b+c)/2)%1という行を変更し、同じイメージを取得していることを確認することで確認できます)。

関連する問題