用体素标注Matlab编写STL文件
我在使用Matlab时遇到以下问题:我有一个二进制卷和一个包含体素维度的1x3向量,我想写一个包含体素维度的STL文件。从二值图像中,我使用isosurface命令:查找面和顶点,然后使用stlwrite函数写入stl文件:。问题是,在此工作流中,我无法添加体素维度的信息,因为等值面函数将体素视为一个向量。你知道我如何从包含体素尺寸信息的二值图像中编写STL文件吗 尺寸向量是x、y和z轴的,对吗?如果在保存模型之前或之后尝试缩放该模型会怎么样。您可以使用用体素标注Matlab编写STL文件,matlab,file,3d,voxel,Matlab,File,3d,Voxel,我在使用Matlab时遇到以下问题:我有一个二进制卷和一个包含体素维度的1x3向量,我想写一个包含体素维度的STL文件。从二值图像中,我使用isosurface命令:查找面和顶点,然后使用stlwrite函数写入stl文件:。问题是,在此工作流中,我无法添加体素维度的信息,因为等值面函数将体素视为一个向量。你知道我如何从包含体素尺寸信息的二值图像中编写STL文件吗 尺寸向量是x、y和z轴的,对吗?如果在保存模型之前或之后尝试缩放该模型会怎么样。您可以使用S=makehgtform('scale'
S=makehgtform('scale',[sx,sy,sz])
创建矩阵,然后newVertices=S*oldVertices
,面索引应该保持不变。谢谢您的回答。是的,尺寸向量用于x、y和z轴。我已经尝试过您的解决方案,并将结果作为4x4矩阵。“等值面”命令可创建面的Nx3矩阵和顶点的Mx3矩阵。如果我将顶点的Mx3矩阵和4x4 S矩阵相乘,Matlab会给我一个错误:内部矩阵的尺寸必须一致。我如何解决这个问题?是的,那是因为你必须转换到齐次坐标(意思是[x,y,z]
变成[x,y,z,1]
)。但是,如果只进行缩放,则可以省略S的最后一行和最后一列并将其相乘(添加的1用于平移)。因此,要修复我之前的代码,它将是newVertices=S(1:3,1:3)*oldVertices
好的,非常感谢!它起作用了!