基于VTK的三维重建实现平面剪切.docVIP

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于VTK的三维重建实现平面剪切.doc

基于VTK的三维重建实现平面剪切   摘 要 在进行三维医学可视化系统的研究中, 为了对重建物体内部的特定目标进行分析,往往需要进行剪切。讨论了在VC开发环境中,应用三维可视化类库VTK,利用平面对三维物体进行平面剪切的方法,并给出了剪切后的结果。   【关键词】VTK 三维重建 平面剪切   1 引言   可视化工具包(VTK)是一个开放源码的自由软件。它可以进行图象处理、计算机图形学和科学计算可视化,尤其在三维重建如面绘制和体绘制上有强大的功能,因此,它被广泛应用到医学图象领域。   在对医学图象的三维重建进行研究时,需要分析的内部器官往往被外部目标所遮挡,如肝脏、肺叶、肾等重要器官被皮肤遮盖。此外,医学图象中的床板也会影响对重建物体的观察,对处于身体内部的病灶或肿瘤,也需要进行观察和分析。因此,需要对医学图象的三维重建结果进行切割,来满足医学影象处理的要求。   2 VTK中医学图象的三维重建剪切   医学图象的三维重建是采用可视化软件VTK[1,2],利用获得的二维CT或MRI等断层切片,重构有关器官和组织的三维图象。而为了满足临床影象分析的要求,需要对重建物体进行相应的切割。   在VTK中,对重建物体的切割主要有两种[3,4]。一种是利用平面进行剪切,另一种是利用立方体进行切割。本文主要讨论的是第一种方法,即对医学三维重建的面绘制和体绘制进行平面剪切[5]。它的具体实现分为三步:   医学图象的三维重建;利用VTK中的面绘制和体绘制算法,对读入的CT切片进行三维重建;定义剪切平面;利用VTK中的vtkPlane类定义剪切平面,并设置该平面的初始位置和方向;三维重建的平面剪切建立切割函数,对三维重建物体进行平面剪切。   2.1 基于面绘制的平面剪切   vtkClipPolyData *clipper = vtkClipPolyData::New();   clipper-SetInputConnection(skinNormals-GetOutputPort());   clipper-SetClipFunction(plane);   clipper-GenerateClipScalarsOn();   clipper-GenerateClippedOutputOn();   clipper-SetValue(0.3);   vtkPolyDataMapper *clipMapper = vtkPolyDataMapper::New();   cutEdges-SetCutFunction(plane);//设置绝对函数来执行它   cutEdges-GenerateCutScalarsOn();//输出标量值将要被vtkImplicitFunction给修改   cutEdges-SetValue(0, 1.0); //设定特殊轮廓值   vtkStripper *cutStrips = vtkStripper::New();   cutStrips-SetInputConnection(cutEdges-GetOutputPort());   cutStrips-Update();   renWin-Render();   iren-Initialize();   iren-Start();   iren-AddObserver(vtkCommand::UserEvent,cmd);   剪切函数:   void Cut(vtkObject *caller, unsigned long eid, void *clientdata, void *calldata,double val)   { m_viewer = reinterpret_cast(clientdata );   plane-SetNormal(0, -1, -1);   plane-SetOrigin(150.0, 120.0, 120.0);   cutEdges-SetCutFunction(plane);   clipper-SetValue( val );   cutEdges-SetValue(1, val);   cutStrips-Update();   cutPoly-SetPoints(cutStrips-GetOutput()-GetPoints());   cutPoly-SetPolys(cutStrips-GetOutput()-GetLines());   cutMapper-Update();   renWin-Render(); }   2.2 基于体绘制的平面剪切   vtkImageReader *reader =

文档评论(0)

guan_son + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档