Matlab imshow省略了NaN

时间:2016-08-09 12:50:27

标签: matlab image-processing

我正在使用imshow()来显示从两个灰度图像的差异中获得的数据。图像被掩盖,即每个像素被放置在'掩码的值为NaN。数据由parula色彩映射表示。问题是imshow()NaN视为零,因此屏蔽的像素表示为蓝色。是否有一种简单的方法可以省略屏蔽像素或以不属于色彩图的颜色显示它们(例如白色,灰色或黑色)?

我希望解决方案基于imshow(),因为最简单的方法是将其包含在我的代码中。但是,使用pcolorimagesc等的解决方案也将受到赞赏。

1 个答案:

答案 0 :(得分:8)

您可以将图像对象的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值已被视为透明。