9

負の数から正の数までの範囲の差分画像をプロットしたいことがよくあります。これに関する問題は、matlab のカラーマップが最小値から最大値までしかスケーリングされず、中間値 (この場合はゼロ) は考慮されないことです。たとえば、1peaksつのピクセルが異なる画像を作成しました。

ここに画像の説明を入力

元は次のようになります。

ここに画像の説明を入力

したがって、ゼロ値は上の画像が青で、下の画像が緑です... (ジェットカラーマップを例として使用)

最小値\最大値に関係なく、ゼロ値を同じ色として自動的に表すカラーマップを作成したいと思います。どうやってやるの?

4

3 に答える 3

9

カラー マッピングは、 (現在の軸オブジェクトcaxisのプロパティを設定する) 関数を使用して制御できます。CLimもちろん、直接カラー マッピングとは対照的に、スケーリングされたカラー マッピングが使用されていることを前提としています (CDataMappingプロパティを参照)。ゼロ中心の範囲を入力として使用することで、ゼロが常に中央にあることを確認できます。

次に例を示します。

load penny
P = 4*(P./255) - 1;        %# not centered around zero
imagesc(P), axis image off
colormap(lbmap(64,'BrownBlue')), colorbar

歪んだ範囲

次に、カラー マッピングを調整して、ゼロを中心に対称にします。

c = max(abs([min(P(:)),max(P(:))]));
caxis([-c c])

対称範囲

両極端の違いを強調する発散パレットとして設計されたLight Bartlein 配色を使用していることに注意してください。

元の範囲が非常に歪んでいる場合は、カラーマップを再サンプリングして、過度に引き伸ばされたサブ範囲により多くの値を与えることができます。

于 2013-05-27T23:38:28.830 に答える