Matlab imshow 省略 NaN

标签 matlab image-processing

我正在使用 imshow() 可视化从两个灰度图像的差异中获得的数据。图像被 mask ,即“位于” mask 下的每个像素都具有值 NaN。数据由 parula 颜色图表示。问题是 imshow()NaN 视为零,因此被屏蔽的像素表示为蓝色。有没有一种简单的方法可以忽略被 mask 的像素或以不属于颜色图的颜色(例如白色、灰色或黑色)显示它们?

我更喜欢基于 imshow() 的解决方案,因为它最容易包含到我的代码中。然而,使用 pcolorimagesc 等的解决方案也将受到赞赏。

最佳答案

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

关于Matlab imshow 省略 NaN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38851267/

相关文章:

image - 如何为语义分割创建像素标记图像?

python - 从嘈杂的车牌上分割每个字符

matlab - 矢量化和嵌套矩阵乘法

matlab - 通过自动引入时间变量或以任何其他方式简化非常长的符号表达式

从命令行调用 MATLAB 并保持打开状态以进行下一步处理 - Linux

c++ - 将 OpenCV 项目升级到最新版本

opencv findChessboardCorners 失败

image-processing - 如何使用 Pixlr Editor 或 imagemagick 等在线工具在图像周围添加空白区域?

Matlabplotyy和semilogx

matlab - 如何根据已知的内在和外在参数在 Matlab 中进行透视校正?