2016-10-09 1 views
-1

私は、n×nの行列があり、たとえば:単一の色を0より大きく1より小さい値に設定するにはどうすればよいですか?

[ 0 1 1 ; 
0.2 1 0.1; 
    0 0.4 0] 

私は行列を視覚化したいと私がしたい:

  • = 1すべての値が0の間のすべての値
  • 黒にし、 1(0 <値<1)は、白であることを表します。
  • すべての値= 0は特定の色(たとえば赤)です。以下の画像のように

Example

私はこれをどのように達成することができますか?

+0

素晴らしいことです。何か試しましたか? – rayryeng

答えて

0

以下の溶液は、カラーマップを構築し、RGB画像を作成するために、ind2rgbを使用する:「インデックス付き画像」に

  • 変換するA(256で展開し、ラウンド) - インデックス付きイメージ要素が整数でなければなりません。
  • カラーマップミーティングの範囲条件を作成します。
  • ind2rgbを使用して、作成したカラーマップを使用してXからRGBイメージに変換します。

次のコードサンプルを確認してください:

A = [ 0 1 1;... 
    0.2 1 0.1;... 
     0 0.4 0]; 

%N - Number of elements in the color map (e.g 256) applies "quantization level". 
N = 256; 

%Convert A to "indexed image" in range [0, N]. 
X = round(A*N); 

%Create color map with N elements 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
%R, G, B (Red, Green, Blue) applies three color components of color map. 
R = zeros(N, 1); 
G = zeros(N, 1); 
B = zeros(N, 1); 

%Create array of 100 values in range 0 to 1 
V = linspace(0, 1, N); 

%All values = 1 to be black 
R(V == 1) = 0; 
G(V == 1) = 0; 
B(V == 1) = 0; 

%All values between 0 and 1 (0 < value <1) to be white 
R((V > 0) & (V < 1)) = 1; 
G((V > 0) & (V < 1)) = 1; 
B((V > 0) & (V < 1)) = 1; 

%All values = 0 to be a specific color (red for example). 
R(V == 0) = 1; 
G(V == 0) = 0; 
B(V == 0) = 0; 

%Concatenate color components, and form Nx3 color map. 
cmap = [R, G, B]; 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 

%Convert A to RGB, using colormap cmap. 
RGB = ind2rgb(X, cmap); 

imshow(RGB); 

ソリューションは、最も簡単な解決策はありませんが、それは、より一般的な可視化の問題を解決するために使用することができます。

結果(拡大):
enter image description here

関連する問題