VTK重切

http://www.docin.com/p-733179951.html基于VTK的交互式三维颌面截骨手术实现
http://www.docin.com/p-1442785614.html三维物体的任意方向二维断面图像提取
http://www.doc88.com/p-90726223725.html三维物体的交互切割与显示
http://www.docin.com/p-600412144.html基于VTK的任意平面CT图像二维交互分割初步研究
http://blog.csdn.net/jean7155/article/details/7556260VTK复习笔记——切割(一)——切割模型
https://max.book118.com/html/2017/0121/85923330.shtm基于VTK的三维重建实现平面剪切

看了一天的重切,还是很茫然。先把看过的资料放进来,大致要用到几个函数,vtkPlaneWidget、observer和Command设计模式。过几天熟悉了后再继续添加内容.

http://www.docin.com/p-48748178.html

实现步骤:
(1)图像数据的读入以及绘制过程如图所示:
VTK重切_第1张图片
首先Reader开完成读入;
(2)图像数据读入成功后按光线投影体绘制法重建三维图像;
(3)使用vtkPlaneWidget构建三维切割平面,vtkPlaneWidget在三维空间中显示为一个带方向的平面。网格平面表明该三维平面的当前位置,箭头的方向表示该平面的法线方向。用户可以通过拖动平面的位置和箭头的方向来控制切割平面的位置和平面。
(4)设置回调函数vtkPlaneCallback,该回调函数用于拦截事件(如vtkCommand::InteractionEvent)和指定该事件对应的响应。当vtkPlaneCallback被调用时,将自动获取切割平面的最新位置,调用函数的父类为vtkCommand。


关于新学到的内容,有看到vtkImagereslice和vtkImagePlaneWidget去做重切面的。
下面这个帖子可以去理解重切的概念吧。
int *ext = pData_orz->GetExtent();
double *origin = pData_orz->GetOrigin();
vtkSmartPointer pReslice = vtkSmartPointer::New();
pReslice->SetOutputOrigin(origin);
pReslice->SetOutputExtent(ext);
pReslice->SetAutoCropOutput(1);//!!!一定要加这句话
pReslice->SetInput(pData);
pReslice->Update();

http://tieba.baidu.com/p/3947852001?pid=73061174205&cid=0#73061174205

这个帖子是用vtkImagePlaneWidget做的,

http://tieba.baidu.com/p/5022966060
显然,我在vtk7.1中调试不出来,用官网的例子,可以
http://www.vtk.org/gitweb?p=VTK.git;a=blob_plain;f=Interaction/Widgets/Testing/Cxx/TestResliceCursorWidget2.cxx

只有修改一点点,吧int 后面的函数修改为main,因为在vs下面编译的,最后的return也要做修改,改为0,即可编译通过。

再回过头来仔细看水灵的vtk进阶书的第九章,MFC中有段话:

交互式图像切分:交互式图像切分,切片图像提取。
vtkResliceCursorWidget和vtkResliceCursor类实现交互式图像切分,vtkResliceCursorWidget对象中需要定义相对应的vtkResliceCursor对象。vtkResliceCursorWidget定义十字坐标轴为用户提供便捷的切分和交互方式,支持坐标轴的旋转和平移;当坐标轴发生改变时,调用vtkResliceCursor来进行图像切分并更新到vtkRenderer对象中。

vtkImagePlaneWidget实现切片图像提取。该类内部定义一个vtkImageReslice对象,利用vtkResliceCursor中定义的切分平面来切分图像。在其内部通过纹理映射绘制到平面上,通过用户指定的vtkRenderer进行显示。
没有定义vtkActor,主要是在显示图像时,通过相关的widget来实现,为widget设置vtkRenderer即可在其内部生成相应的vtkActor来实现。

你可能感兴趣的:(VTK)