VTK虚拟切片提取
来源:互联网 发布:新网互联域名过户费用 编辑:程序博客网 时间:2024/05/17 01:34
计算机系统:Win8.1( 64 bit )
VTK版本:6.2.0
1 说明
关于三维数据的重切主要通过vtkImageReslice实现(实例:ImageSlicing),而更加方便的是通过vtkImagePlaneWidget类来实现( 实例:FourPaneViewer,或者TestImagePlaneWidget.py )。在例子ImageSlicing中,实现的是对体数数据整体切割,而在例FourPaneViewer中,可以实现对对体数据的局部切割。实例FourPaneViewer比较复杂,参考资料[5]中简单说明了vtkImagePlaneWidget的用法。在实际过程中,发现快捷键无效,根据参考资料[6]的说明可知,这是VTK本身的bug,因此为了避免使用快捷键,要自行设计button。
2 2D坐标-->3D坐标
使用上述方法获得切片后,切片的坐标是2D的,如何将其转换为对应的3D坐标呢?这是一个问题。从2D坐标到3D坐标的转换,其实是从一个坐标系到另外一个坐标系的转换(《坐标系转换》)。
vtkImagePlaneWidget函数GetResliceAxes()可以获得一个转换矩阵(vtkMatrix4x4),根据《坐标系转换》第3章的公式,将虚拟切片的2D坐标拓展到4D,其第3维和第4维分为别为0和1,然后使用转换矩阵乘以这拓展后的坐标,即可得到一个新的4D坐标(齐次坐标)。这个新的4D坐标的最前3维就是虚拟切片的2D坐标所对应的3D坐标。
具体实现代码如下:
double in[4], *out;in[0] = 274;% 将2D坐标(274,363)拓展为(274,363,0,1)in[1] = 363;in[2] = 0;in[3] = 1;vtkMatrix4x4 *mat = imagePlaneWidget->GetReslice()->GetResliceAxes(); % 获取转换矩阵out = mat->MultiplyDoublePoint(in);% out中的前3个元素即是对应的3D坐标
参考资料
[1]VTK学习笔记-2-TIFF图像数据的重切片
[2]基于VTK的任意平面切割
[3]VTK复习笔记——切割(一)——切割模型
[4]VTK鼠标交互三例
[5] 胡战利. 基于VTK的医学图像三维重建及交互研究. 哈尔滨工业大学. 2008年1月
[6]KeyPressActivation for vtkImagePlaneWidget not working
[7]显示DICOM序列文件的实例
- VTK虚拟切片提取
- VTK修炼之道26:图像基本操作_三维图像切片提取
- VTK轮廓提取
- 【VTK】VTK中设置默认的三维切片方向
- VTK: vtkImagePlaneWidget生成纹理切片相关问题
- VTK修炼之道27:图像基本操作_三维图像切片交互提取(回调函数、观察者-命令模式)
- VTK学习笔记-2-TIFF图像数据的重切片
- VTK的三维切片和三视图显示
- VTK 多平面重建(MPR)及三维切片显示
- MongoDB提取指定的切片集
- vtk 提取等值面并显示
- VTK中图像像素位置的提取
- vtk提取二维bmp图像某区域
- VTK 三维轮廓等值面的提取
- VTK学习(十二)图像切面提取
- VTK 表面重建-等值面提取
- 利用Perl切片从列表数据中提取关键…
- 切片
- Xenserver openvswitch使用经验分享
- 论Java的跨平台性
- AFNetworking 用法
- Dialogue System for Unity文档中英对照版(简雨原创翻译)第四篇(关于主流ui插件拓展相关)
- undefined reference to vtable for
- VTK虚拟切片提取
- JSP中一些简单的验证
- Unity3d数学公式之 OBB vs OBB
- git如何删除子模块
- Ubuntu配置和修改IP地址
- [Leetcode 200, Medium] Number of Islands
- 高效寻找质数——Sieve of Eratosthenes
- 读到的好文章
- 陈怡暖:大涨大跌后黄金迎来非农周,市场大多看涨本周金价