【问题标题】:Display 3D matrix with its thickness information显示 3D 矩阵及其厚度信息
【发布时间】:2014-04-29 01:14:04
【问题描述】:

我有一个关于绘制 3D 矩阵的问题。假设我有一张尺寸为 384x384 的图像。在循环函数中,我将创建大约 10 个相同大小的图像并将它们存储到一个 3D 矩阵中,并在循环中绘制 3D 矩阵。每个尺寸之间的厚度尺寸为 0.69(两个切片之间的距离)。所以我想通过z坐标显示它的厚度。但它不能很好地工作。问题是切片距离可视化不正确。它呈现蓝色。我想调整可视化并移除颜色。你能帮我用matlab代码修复它吗?非常感谢

    for slice = 1 : 10

       Img = getImage(); %  get one 2D image.
       if slice == 1
         image3D = Img;
       else
         image3D = cat(3, image3D, Img);
      end
      %Plot image
       figure(1)
       [x,y,z] = meshgrid(1:384,1:384,1:slice);
       scatter3(x(:),y(:),z(:).*0.69,90,image3D(:),'filled')

    end

【问题讨论】:

  • image3D=zeros(384,384,0); 是一个空矩阵。可能还有其他问题。
  • 谢谢。我删除它。但问题是一样的

标签: image-processing matlab matlab-figure


【解决方案1】:

可以通过更改颜色图来修复蓝色。现在,您正在将每个绘图点的颜色设置为 image3D 中的值,并使用默认的 jet 颜色图将较低的值显示为蓝色。在您绘制或您想要的任何颜色图之后尝试添加colormap gray;

我不确定您所说的“问题是切片距离可视化不正确”是什么意思。如果每个切片的厚度为 0.69,则图像值是每个厚度为 0.69 的体素内所有值的积分。因此,您显示的是每个体素质心处的一个点,它表示该体素内值的积分。您的 z 比例似乎是正确的,因为每个体素质心将相距 0.69,尽管它不会从零开始。

我认为更准确的 z 比例是使用 (0:slice-1)+0.5*0.69 作为 z 向量。这会将最低切片的边缘置于零并将每个点的中心直接放在体素的质心上。

我仍然认为这不会为您提供所需的可视化效果。通过查看切片最容易查看 3D 数据。您可以查看matlab's slice,它可以让您制作出像这样漂亮的显示器:

slice view http://people.rit.edu/pnveme/pigf/ThreeDGraphics/thrd_threev_slice_1.gif

【讨论】:

    猜你喜欢
    • 2020-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多