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区域,可以任意方向移动切片;当位于橘黄色数字所代表区域,可以拉伸或缩短该边界;当位于红色数字所代表的区域,可以拉伸或缩短该角所组成的边界
常用的属性值设置函数:
实际使用的出现的问题:
内存释放问题:
在给切片设置体数据后(建立了体数据与vtkImagePlaneWidget连接),再删除体数据和vtkImagePlaneWidget对象时候,发现读入的体数据无法得到释放,
解决办法:
删除tkImagePlaneWidget对象之前,先断开与体数据之间的连接,
作为交互部件,其工作在当前交互器风格下(也就是说,交互部件会从交互器中截取自己所能响应的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);
相关文章推荐
- BMP文件格式
- DL学习笔记【7】caffe参数调节-Pooling层
- XCode 7 官方直接下载地址
- C语言单链表实现11个功能完全详解
- Window下Apache 源代码编译
- 闭包
- 求学Android——3.创建对象代码执行顺序
- Android 自定义PopupWindow 显示提示帮助信息
- Java实现顺序队列
- self.edgesForExtendedLayout=UIRectEdgeBottom;
- Android弹框使用:Dialog&Toast&Snackbar
- 双目测距(五)--匹配算法对比
- word文档生成目录
- 索引与优化like查询
- 流媒体服务器开源软件
- 基于matlab的图像hough变换
- 华为上机:五子棋
- 函数的定义和用处
- You must not call setTag() on a view Glide is targeting的解决方案
- 怎么才能看懂程序设计的书