【发布时间】:2021-01-21 21:22:42
【问题描述】:
我有一张热图
并希望将此 2D 矩阵转换为 3D 体积/形状/表面数据点以进行进一步处理。不只是使用surf 以 3D 形式显示它。
什么是这样做的好方法?
在这个社区的大力帮助下,我可以走得更近:
为了简单起见,我将尺寸缩小到 45x45 像素。
I = (imread("TESTGREYPLASTIC.bmp"))./2+125;
Iinv = 255-(imread("TESTGREYPLASTIC.bmp"))./2-80;%
for i = 1:45
for j = 1:45
A(i, j, I(i,j) ) = 1;
A(i, j, Iinv(i,j) ) = 1;
end
end
volshow(A)
它并不理想,但矩阵是我现在想要的。在处理 1200x1200 点时,也许可以改进循环以更快地运行。
我现在如何创建一个真正的封闭曲面?
【问题讨论】:
-
我强烈建议针对不同的问题提出不同的问题。这就是 SO 的工作方式,这样做你会得到更好的结果。对于您的性能问题,请再次阅读我的答案。您所需要的只是沿 3 维的不同索引。您将它们保存在一个新变量中,然后让
sub2ind为您完成剩下的工作。 -
相邻体素之间的断开直接来自您的数据。当原始图像中的两个相邻像素的强度相差不止一个级别时,就会发生这种情况。您可以使用平滑过滤器来减少它,但这不是可以在离散数据中完全去除的东西。
标签: matlab plot 3d visualization