【发布时间】:2016-04-18 03:29:50
【问题描述】:
我目前必须从一堆 2D 切片(MATLAB 中的 2D 矩阵,代表 2D 灰度图像)创建一个球体。我使用下面的代码创建了一堆切片。为了创建球体,我反复创建了不断增加的圆形切片,直到 100,然后逐渐减小。所有这些切片都添加到 3D 矩阵中。
Circle = ones(200,400,400);
for i = 1:100
[rr cc] = meshgrid(1:400);
C = sqrt((rr-200).^2+(cc-200).^2)<=i;
for j = 1:400
for k = 1:400
Circle(i,j,k) = C(j,k);
end
end
end
index = 100;
for i = 1:100
[rr cc] = meshgrid(1:400);
C = sqrt((rr-200).^2+(cc-200).^2)<=index;
for j = 1:400
for k = 1:400
Circle(i+100,j,k) = C(j,k);
end
end
index = index - 1;
end
viewer3d(Circle);
viewer3d 是第 3 部分库,可帮助您将切片的 3D 图像堆栈视为 3D 对象。一旦我将这个“假定的”球体形象化,我意识到它是一个菱形的顶部,而不是一个球体。
因此,我不明白如何在 y 平面上改变圆的大小直到球体的中心点,然后用相同的算法减小它。
感谢您的回答,请随时要求我澄清此问题中的任何内容。
【问题讨论】:
-
我从您的问题中删除了不相关的[slice] 标签。请在发布前阅读标签说明,以确保标签表示您认为的含义:) 此外,您可以使用
for i=100:-1:1创建一个递减 for 循环,更一般地查看100:-1:1是什么。跨度> -
@AndrasDeak 我忘记了
for i=100:-1:1!谢谢你提醒我!我说的是标签描述的粗略意义上的切片,而是科学切片。然而,标签删除是合理的! -
对不起,如果我误解了,欢迎您重新标记您的问题:)这也是我发表评论的原因:您可以判断它的正确性。
-
我还想指出,您的提问技巧和 MATLAB 技巧都有很大提高:) 很高兴看到您不断进步,并继续努力!
-
@AndrasDeak,你记得我!顺便说一句,谢谢你,我一直在大学做研究员,并且一直在使用很多 MATLAB 进行图像处理。在 SO 上的所有功劳归功于 MATLAB 社区,这一直在帮助我!
标签: matlab image-processing 3d