Matlab imshow省略了NaN

Dav*_*ave 4 matlab image-processing

imshow()用来可视化从两个灰度图像的差异获得的数据.图像被遮盖,即掩模下面的每个像素都具有该值NaN.数据由parulacolormap 表示.的问题是,imshow()treates NaN为零,因此被掩蔽的像素被表示为蓝色.是否有一种简单的方法可以省略蒙板像素或以不属于色彩图的颜色(例如白色,灰色或黑色)显示它们?

我希望解决方案基于,imshow()因为它最容易包含在我的代码中.然而,解决方案使用pcolor,imagesc或类似物也可以理解.

Sue*_*ver 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))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

如果需要特定颜色,可以打开轴并将轴的颜色设置为您想要的颜色NaN.

axis on;

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

在此输入图像描述

如果使用pcolor,则NaN值已被视为透明.