Matlab 显示图像时忽略 NaN。

5
我正在使用imshow()来可视化从两个灰度图像差异中得到的数据。这些图像被掩蔽,即每个'位于'掩蔽下的像素具有值NaN。数据由parula色图表示。问题在于imshow()NaN视为零,因此掩蔽像素表示为蓝色。是否有一种简单的方法可以省略掩蔽像素或以不是色图一部分的颜色(例如白色、灰色或黑色)显示它们?
我更喜欢基于imshow()的解决方案,因为它最容易包含到我的代码中。但是,使用pcolorimagesc或类似方法的解决方案也将受到赞赏。
1个回答

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 值已经被视为透明。

好主意!这对我非常有帮助。 - Luis Mendo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接