其他分享
首页 > 其他分享> > 【MATLAB】3D牙列模型的读取以及轮廓线绘制

【MATLAB】3D牙列模型的读取以及轮廓线绘制

作者:互联网

原模型如下:
在这里插入图片描述
从mathworks下载stltools工具包:https://ww2.mathworks.cn/matlabcentral/fileexchange/51200-stltools,并将其添加到path。

%读取文件格式是binary还是ascii
stlGetFormat('dentition.stl')
%选择相应的读取器
[v, f, n, name] = stlReadBinary('dentition.stl');
%读取相应的x,y,z值
x=v(:,1);
y=v(:,2);
z=v(:,3);

散点图绘制

%在xy平面做散点图,颜色以z表示
scatter(x,y,5,'fill','cdata',z);
colormap(jet);

在这里插入图片描述

轮廓线绘制

首先利用griddata命令将z值平面补全:

[X,Y]=meshgrid(min(x):0.1:max(x),min(y):0.1:max(y));
Z = griddata(x,y,z,X,Y);
meshz(Z)

在这里插入图片描述
注意此时牙列中央的部位也被补全了,该处是我们不想要的,应该删除。

k=boundary(x,y);
in=inpolygon(X,Y,x(k),y(k));
in=logical(1-in);
Z(in)=NaN;
meshz(Z)

在这里插入图片描述
此时可以制作轮廓线:

contour(Z,75);
colormap(jet);

在这里插入图片描述
本文主要介绍了3D牙列模型的读取以及轮廓线绘制,其中涉及到利用boundary和inpolygon对griddata补间的凹洞进行去除的技术。

标签:griddata,读取,散点图,MATLAB,轮廓线,绘制,牙列,3D
来源: https://blog.csdn.net/weixin_45412458/article/details/100690038