您的位置:首页 > 其它

VTK:VTKImagePlaneWidget 使用说明

2016-07-26 13:24 302 查看
VTKImagePlaneWidget 是一个3D交互部件,用来重切图像数据。

    作为交互部件,其工作在当前交互器风格下(也就是说,交互部件会从交互器中截取自己所能响应的VTK事件并做出处理,对于不能响应的事件,该事件会继续油其他注册栏的观察响应处理)。因此 要先使用该部件,必须先调用 SetInteractor()函数设置交互器。也可以通过SetCurrentRenderer()设置渲染器,默认情况下渲染器都会从你所设置的交互器重获取。

该部件的核心功能是由vtkImageReslice类提供的,该类能够快速获取体数据的切片。通过获得该类的数据输出到纹理映射管道上,可以获取其切面的纹理贴图。

为了能够获取的切片的纹理贴图,需要通过setInputConnection()函数来给部件设置体数据,此时体素的拾取功能才会被激活。如果没有设置体数据,请调用SetTextureVisibility(int)函数关闭纹理映射。

VTKImagePlaneWidget 样式如下图:

                                                                                                


  该部件主要通过鼠标来完成对部件的交互,具体操作如下:

 (1)  按下鼠标中键(滚轮)+移动光标 用来控制部件方向和位置。

             如图中4条蓝色的线将VTKImagePlaneWidget分为9个区域,其中将光标移到红色数字所代表的的区域,可以将切片沿着垂直于平面法向量的方向旋转;当把光标移到橘黄色光数字所代表的区域,可以改变平面法向量从而翻转整个平面;当把光标移动到center区域,可以沿着当前平面法向量的方向平移切片。

 (2)按下鼠标左键+移动光标 可以拾取切片的坐标值和体素值(显示在渲染窗口的左下角)

          当光标位于切片内,按下鼠标左键,会出现十字交叉线来锁定你所拾取的体素。

 (3 ) 按下鼠标右键+移动光标 改变切片的窗位窗宽(显示在渲染窗口的左下角)。

 (4)Shift键+鼠标中键  缩放切片

           向上移动光标放大切片,向下移动光标缩小切片

 (5)Ctri键+鼠标中键

          当光标位于center区域,可以任意方向移动切片;当位于橘黄色数字所代表区域,可以拉伸或缩短该边界;当位于红色数字所代表的区域,可以拉伸或缩短该角所组成的边界

 常用的属性值设置函数:     


 GetCursorProperty()->SetColor(0,1,0);//设置十指交叉线颜色

 GetMarginProperty()->SetColor(0,1,1);//设置分界线的颜色


 GetPlaneProperty()->SetColor(0,0,1);//设置切片边框为蓝色(未选择状态)

 GetSelectedPlaneProperty()->SetColor(1,0,0);//设置切片边框为红色(选择状态)

 GetTextProperty()->SetColor(1,0,0);//设置文本显示颜色为红色


实际使用的出现的问题:

内存释放问题:

在给切片设置体数据后(建立了体数据与vtkImagePlaneWidget连接),再删除体数据和vtkImagePlaneWidget对象时候,发现读入的体数据无法得到释放,

解决办法:

删除tkImagePlaneWidget对象之前,先断开与体数据之间的连接,

<pre name="code" class="cpp">m_ImagePlaneWidget->SetInputData(nullptr);
m_ImagePlaneWidget->SetInputConnection(nullptr);


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: