2017-03-10 3 views
-2

16 비트 그레이 스케일 이미지 (최대 값은 850)의 일부 픽셀을 색칠하고 싶습니다. 먼저 3D 스택으로 변환 한 다음 색상 을 전달했지만 이미지가 좋은 방식으로 표시되지 않습니다. 그것은 이미지가 표시되는 방법을 단지 예입니다그레이 스케일 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 는 검은 예에 따라 전혀 명확하지 않다. 그것은 코드에있는 I의 이미지가 아닙니다.

+0

붉은 색 영역 안의 값은 NaN입니까? – berna1111

+0

그것은 단지 코드의 I 이미지가 아닙니다. 빨간색 영역 안의 값은 NaN이 아닙니다. –

+0

착색을 위해 원하는 방법이나 근거는 무엇입니까? 그라디언트 매핑의 경우 최소값과 최대 값을 모두 처리해야하며 경우에 따라 값의 분산도 필요합니다 (선형 또는 비선형 매핑을 선택할 수 있음). – Spektre

답변

1

RGB 값이 0과 1 사이에 있습니까?

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

하지만 (당신이 [200, 0, 0]에 그 포인트를 설정할 때 일을 할 것) 0에서 255 사이의 값을 사용하는 위의 예제를 변경하는 경우 :

나는이 예제를 만든 코드를 사용하여
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

에만 승의 나머지 부분을 고려할 것 1보다 큰 값을 부여 할 때 내가 생각 암탉을 하나씩 나눈 것입니다 (마지막 예제에서 image = ((b+c)/2)%1 줄을 변경하고 동일한 이미지를 얻는 지 확인하면됩니다).

관련 문제