查看单个帖子
旧 2019-12-10, 20:30   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 在Matlab中将多个2D图像堆叠为3D

我有25张2D图像(大小相等),每张图像代表均匀分布的一层。每个图像都是灰度和黑色(或导入后在数据矩阵中等于0的值)是需要删除的背景。

我的问题是:
  • 如何将这25张图像合并为一张3D图像?如何在每一个之间画一些间距?
  • 如何去除背景色?是否可以创建某种色标,其中等于0的值将是透明的?
一些其他数据:
  • 这些图像为DCM格式(DICOM图像),我使用dicomread函数导入它们。
  • 每个图像(320x320 px)代表一层4毫米厚,层之间的间距为1.2毫米。我们可以假设每个图像的宽度约为120-125毫米

回答:

2D转换为3D矩阵:

>> a = magic(3) a = 8 1 6 3 5 7 4 9 2 >> b = ones(3) b = 1 1 1 1 1 1 1 1 1 >> c = zeros(3) c = 0 0 0 0 0 0 0 0 0 >> d(:,:,1)= a d = 8 1 6 3 5 7 4 9 2 >> d(:,:,2)= b d(:,:,1) = 8 1 6 3 5 7 4 9 2 d(:,:,2) = 1 1 1 1 1 1 1 1 1 >> d(:,:,3)= c d(:,:,1) = 8 1 6 3 5 7 4 9 2 d(:,:,2) = 1 1 1 1 1 1 1 1 1 d(:,:,3) = 0 0 0 0 0 0 0 0 0 透明度:

将透明体素设置为NaN的值。大多数图形只是将NaN留为空白空间。

相关项目

您可能对SliceOMatic感兴趣

我在MathWorks的第一个项目是一个与您相似的演示 。它是从平面切片(未配准)重建3-D实体。大部分工作在注册中。

这也是一个相关的项目 ,可能也很有趣。



更多&回答...
poster 当前离线   回复时引用此帖