一部の値が範囲からどれだけ離れているかを示し、結果としてそれらに色を付けるマップを作成する必要があります。一方、その範囲内にある値は別の色にする必要があります。
例: [-2 2] 以内の結果のみが有効と見なされます。他の値については、色はこれらの制限からどれだけ離れているかを示す必要があります (-5 よりも -3 明るい、暗い)カラーバー
で試しまし たが、自己定義のカラー スケールを設定できません。
何か案が??前もって感謝します!
質問する
3358 次
2 に答える
0
これは、独自のルックアップテーブルを作成し、そこから作業中の画像に値を割り当てる簡単な方法を示すためにまとめたコードです。結果は2D配列であり、ランダムに割り当てられた値を使用したと想定していますが、概念は同じです。
着色スキームとしてのHSVの強力な使用について言及します。これには、am x nx3の行列が必要であることに注意してください。最上層はH-色相、2番目はS-飽和、3番目はVまたは値(明/暗)です。HとSを好きな色に設定し、以下に示すのと同じようにVを変えるだけで、好きな明るい色と暗い色を得ることができます。
% This is just assuming a -10:10 range and randomly generating the values.
randmat = randi(20, 100);
randmat = randmat - 10;
% This should just be a black and white image. Black is negative and white is positive.
figure, imshow(randmat)
% Create your lookup table. This will illustrate having a non-uniform
% acceptable range, for funsies.
vMin = -3;
vMax = 2;
% I'm adding 10 here to account for the negative values since matlab
% doesn't like the negative indicies...
map = zeros(1,20); % initialized
map(vMin+10:vMax+10) = 1; % This will give the light color you want.
%linspace just simply returns a linearly spaced vector between the values
%you give it. The third term is just telling it how many values to return.
map(1:vMin+10) = linspace(0,1,length(map(1:vMin+10)));
map(vMax+10:end) = linspace(1,0,length(map(vMax+10:end)));
% The idea here is to incriment through each position in your results and
% assign the appropriate colorvalue from the map for visualization. You
% can certainly save it to a new matrix if you want to preserve the
% results!
for X = 1:size(randmat,1)
for Y = 1:size(randmat,2)
randmat(X,Y) = map(randmat(X,Y)+10);
end
end
figure, imshow(randmat)
于 2012-06-27T17:09:52.830 に答える
0
値の範囲のカラーマップを定義する必要があります。
カラーマップは N*3 行列で、各色の RGB 値を定義します。
範囲 -10:10 と有効な値 v1、v2 については、以下の例を参照してください。
v1=-3;
v2=+3;
a = -10:10;
graylevels=[...
linspace(0,1,abs(-10-v1)+1) , ...
ones(1, v2-v1-1) , ...
linspace(1,0,abs(10-v2)+1)];
c=repmat(graylevels , [3 1])';
figure;
imagesc(a);
colormap(c);
于 2012-06-27T16:18:57.330 に答える