我正在使用 imshow()
可视化从两个灰度图像的差异中获得的数据。图像被 mask ,即“位于” mask 下的每个像素都具有值 NaN
。数据由 parula
颜色图表示。问题是 imshow()
将 NaN
视为零,因此被屏蔽的像素表示为蓝色。有没有一种简单的方法可以忽略被 mask 的像素或以不属于颜色图的颜色(例如白色、灰色或黑色)显示它们?
我更喜欢基于 imshow()
的解决方案,因为它最容易包含到我的代码中。然而,使用 pcolor
、imagesc
等的解决方案也将受到赞赏。
最佳答案
您可以将图像对象的 AlphaData
设置为等于 ~isnan(data)
,这样 NaN 将显示为透明值。
R = rand(10);
R(R < 0.25) = NaN;
him = imshow(R, 'InitialMagnification', 10000);
colormap parula
set(him, 'AlphaData', ~isnan(R))
如果您想要特定的颜色,您可以打开轴并将轴的颜色设置为您希望 NaN
值的颜色。
axis on;
% Make a red axis
set(gca, 'XColor', 'none', 'yColor', 'none', 'xtick', [], 'ytick', [], 'Color', 'r')
如果您使用 pcolor
,则 NaN
值已被视为透明。
关于Matlab imshow 省略 NaN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38851267/