【问题标题】:Matlab 3D dose array visualizationMatlab 3D 剂量阵列可视化
【发布时间】:2014-07-04 11:51:27
【问题描述】:

我在 Matlab 中有一个 3D 矩阵,它对应于能量剂量传递矩阵。我正在尝试可视化和表示矩阵。目前我正在执行以下操作 (thanks to another post)。

diff = double(squeeze(diff));
h = slice(diff, [], [], 1:size(diff,3));
set(h, 'EdgeColor','none', 'FaceColor','interp')
alpha(.1)

这给了我一个很好的 3D 图,但是仍然很难正确地看到它,我必须不断旋转图形才能正确地看到它。我也用过:

isosurface(diff,'isovalue')

但还是很难看到任何东西。

我想知道是否有办法摆脱实际剂量表示周围的蓝色区域,因为蓝色区域对应于0 值。也许摆脱它可以帮助我看到更清晰的画面。

【问题讨论】:

    标签: matlab matlab-figure


    【解决方案1】:

    您可以将零设置为nan,以便它们不会被绘制

    diff = double(squeeze(diff));
    diff(diff==0)=nan;                              % added line
    h = slice(diff, [], [], 1:size(diff,3));
    set(h, 'EdgeColor','none', 'FaceColor','interp')
    alpha(.1)
    

    示例

    使用上一题的 MRI 数据

    load mri
    D = double(squeeze(D));
    D(D==0)=nan;
    h = slice(D, [], [], 1:size(D,3));
    set(h, 'EdgeColor','none', 'FaceColor','interp')
    alpha(.1)
    

    输出

    用 nan 替换零
    不用 nan 替换零

    【讨论】:

      【解决方案2】:

      执行此操作的一种方法是使用您不希望用 NaN 表示的值制作数据的副本。例如,这里是来自other post的原始示例图片

      现在,如果我们采用相同的图像数据集,将零替换为 NaN 并使用相同的方法进行绘图:

      D(D==0)=NaN;
      h = slice(D, [], [], 1:size(D,3));
      set(h, 'EdgeColor','none', 'FaceColor','interp')
      alpha(.1)
      

      【讨论】:

      • 快点!甚至到地块
      • 谈论“双解决方案”:) +1 给双方。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-13
      • 2020-05-09
      • 2015-06-27
      • 2019-09-15
      • 2019-07-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多