2016-08-09 19 views
3

私はimshow()を使用して、2つのグレースケール画像の差から得られたデータを視覚化しています。画像はマスクされ、すなわちマスクの下に位置する各ピクセルは値NaNを有する。データはparulaカラーマップで表されます。問題は、imshow()が0であるため、NaNが0であるため、マスクされたピクセルは青色で表されます。マスクされたピクセルを省略したり、カラーマップの一部ではない色(例えば、白、灰色、黒)でそれらを表示する簡単な方法はありますか?MatlabはNaNを省略します

私のコードに含めることが最も簡単なので、私はimshow()に基づいて解決することをお勧めします。しかし、pcolor,imagescなどを使用する解決策も理解されるであろう。

答えて

7

画像オブジェクトのAlphaData~isnan(data)と等しく設定すると、NaNが透過値として表示されます。

R = rand(10); 
R(R < 0.25) = NaN; 

him = imshow(R, 'InitialMagnification', 10000); 
colormap parula 
set(him, 'AlphaData', ~isnan(R)) 

enter image description here

あなたが特定の色をしたい場合、あなたはNaN値がなりたいものは何でも色に軸をオンにし、軸の色を設定することができます。

axis on; 

% Make a red axis 
set(gca, 'XColor', 'none', 'yColor', 'none', 'xtick', [], 'ytick', [], 'Color', 'r') 

enter image description here

あなたがpcolorを使用する場合は、NaN値がすでに透明として扱われます。

+0

恐ろしい!まさに私が探していたもの。ありがとう、男! – Dave

関連する問題