第32卷第6期武汉理工大学学报#信息与管理工程版Vo.l32No.62010年12月JOURNALOFWUT(INFORMATIONMANAGEMENTENGINEERING)Dec.2010:1007-144X(2010)06-0918-04文献标志码:A基于VTK的恒牙三维重建冷栋1,周廷美1,杨俊2(1.武汉理工大学机电工程学院,湖北武汉430070;2.武汉大学口腔医院,湖北武汉430079)摘要:三维重建是计算机图形学的一个重要研究领域。针对牙体形态的测量问题,研究了恒牙的三维重建,采用面绘制的方法,构建了恒牙的三维可视化模型。借助三维可视化工具包VTK的强大功能,在VS2008的编程环境中,使用轮廓拼接法,完成了单颗恒牙的三维重建。关键词:三维重建;VTK;轮廓拼接法:TP391.7DO:I10.3963/.jissn.1007-144X.2010.06.016近年来,具有无损、空间分辨率高(达到微米数量级)等优点的显微CT技术逐渐应用于实验牙髓病学领域。其以优质的断层图像,为准确真实的三维重建提供了保证,使得在三维重建图形上进行定点测量成为可能,被誉为牙髓病学研究/金标准0。三维重建是计算机可视化的重要研究领域之一[1]。国外学者在这方面已经做了许多研究,LORENSEN等[2]提出了MC(marchingcube)算法;NIELSON等[3]提出了MT(marchingtetrahedra)算法;LIN[4]采用从轮廓出发的B样条插值重建算法,得到了整体光滑的表面。国内也有许多学者作了很多有益的探索。西北工业大学谢红研究了用于自由曲面的基于面片拼接的三角曲面模型重建算法[5]。三维重建的方法一般划分为面绘制和体绘制两大类。面绘制因绘制速度快于体绘制而在实际应用中采用较广。1VTK简介VTK(visualizationtoolkit)是一个用于科学计算的可视化工具包,可用于医学图像可视化的C++类库,在处理CT扫描数据方面具有强大的功能[6-8]。VTK在可视化算法、可移植性、可扩充性等方面都有着独特之处,其主要采用管道路径体系结构,在流水线的体系结构上设置了面绘制和体绘制两种绘制流程,并分别采用相应的可视化算法。VTK最显著的特点就是管道化,即一个VTK程序就是一个完整的渲染管道,渲染管道的前段称为可视化模型管道,由数据源、读取器和过滤器等部分组成。如在制作某些渲染节目时,渲染管道的后段为图形模型管道,由演员、光线、照相机、属性、映射器、绘制器和绘制窗口等组成,利用渲染管道VTK可完成点线面的三维重建[9]。由于VTK功能强大,目前已经广泛应用于可视化的各个领域。加州大学伯克利分校利用VTK开发了一个系统进行医学领域研究的实时仿真及可视化系统;斯坦福大学利用VTK开发了一个用于教学的虚拟动物资源库,学生能通过该资源库系统去探索这些动物的内部结构,从而取代传统的动物实验[10]。在国内,VTK则被广泛应用于医学领域的CT三维重建以及模拟手术。2恒牙的三维重建2.1恒牙三维重建的流程及体数据的获取采用VTK进行恒牙三维重建的流程如图1图1采用VTK进行恒牙三维重建的流程图收稿日期:2010-09-09.作者简介:冷栋(1985-),男,湖北武汉人,武汉理工大学机电工程学院硕士研究生.第32卷第6期冷栋,等:基于VTK的恒牙三维重建919所示。重建的第一步是读取断层图片数据,并将其转换为开发工具VTK所支持的一种数据表达形式;然后根据其物理结构建立起相应的模型(CT数据建立的是比较抽象的等值面模型);最后将物理组件与抽象的模型结合在一起,建立CT数据的可视化界面,以帮助用户正确理解图像数据。待处理的是结构点阵数据,其拓扑和几何都是隐含的,因此只需要知道数据的维数、数据源和数据空间,并输入读取数据对象的CT数据的一些参数,如图片之间的间距、图片上像素之间的间距以及所读取图片的起始片,如从第1张图片到第100张图片等。读者便可以利用VTK中的vtk-BMPReader很方便地读取CT图片数据,读取数据的代码如下所示:vtkBMPReader*bmpreader=vtkBMPRead-er::New();//创建一个读取对象。bmpreader->SetFilePrefix("E:\\tooth1\\a");//设置读取路径,文件名为a。bmpreader->SetFilePattern("%s%d.bmp");//系列断层图片后缀为.bmp。bmpreader->SetDataScalarTypeToUnsigned-Char();bmpreader->SetDataByteOrderToLittleEndian();bmpreader->Allow8BitBMPOn();//读取8位的系列断层BMP图片。bmpreader->SetFileNameSliceOffset(0.037);//系列CT断层图片层间距为0.037...