VTK笔记20160726(1)
2016-07-26 08:11
232 查看
最近又拾起《VTK图形图像进阶》这本书,之前本来看过一阵子,因为忙于上课,就耽误了,现在有时间从头学习,把一些理解记录下来。
因为我觉得自己的记忆真是越来越差了,本来之前都懂了某些程序,几个星期不看,就忘得一干二净。
我不会把所有有用的都记下来,就记一些关键的吧~~
-------------------------------------------------------------------------------------------------------------------
环境Windows10+QT5.5+VS2010+VTK7.0+ITK4.9
-------------------------------------------------------------------------------------------------------------------
定义一个类型为Actor的对象,这是VTK类实例化对象的基本用法,因为VTK每个类的构造函数都定义为保护成员。
之前看了很多程序,只知道应该这么做,现在知道原因了。
或者用:
-------------------------------------------------------------------------------------------------------------------
从书上照下来的,比较直观理解Renderer;renderwindow;actor等关系,看说明真是很罗嗦。
还有这个管道图,之前看过很多遍,就觉得很复杂,现在理解了,这也是为什么一个简单的显示图片的VTK程序要那么多New();的原因
每一个部分都要实例一个对象,然后SetInputConnection等等。
-------------------------------------------------------------------------------------------------------------------
设置窗位和窗宽,对于CT等医学图像,体素值范围在[-1000,2000],-1000是纯黑色,2000应该是纯白,但好像上限不一定是2000,甚至更多,但下限我可以确定是-1000.
所以可以设置窗位500,窗宽1500,或者2000也行吧,能显示的更全面
比较疑惑的是这个值和灰度图像0-255有什么关联。
-------------------------------------------------------------------------------------------------------------------
还有一个关于vtkImageView2的小笔记
View2中封装了Actor,Render,RenderWindow等渲染引擎,就是把上面管道的每一个部分集合在了一起,不用麻烦的每次都NEW一个新的小组件。所以用View2的时候,是可以没有具体的Actor的。
现在在做一个项目,一个学长问我你的Actor是哪几个,我找了半天也没找到,原来我这里写的是View2,所以没有显示Actor。
还有一个VTK7.0里用的是SetInputData,旧版本是SetInput.
这里我测试了一下
这个是设置鼠标交互,在不注释的情况下,鼠标是可以按住左键在图像上移动的,移动后整个灰度值乱变!!(左右)
把上面的交互那句注销掉后:
再按住鼠标左键移动,实现了旋转功能,不过单张图片这个功能也没什么卵用。
应该是可以把这个鼠标交互彻底屏蔽的,不过我还没找到方法~~
今天的笔记暂时这么多吧
因为我觉得自己的记忆真是越来越差了,本来之前都懂了某些程序,几个星期不看,就忘得一干二净。
我不会把所有有用的都记下来,就记一些关键的吧~~
-------------------------------------------------------------------------------------------------------------------
环境Windows10+QT5.5+VS2010+VTK7.0+ITK4.9
-------------------------------------------------------------------------------------------------------------------
vtkSmartPointer<vtkActor> xxxActor = vtkSmartPointer<vtkActor>::New();
定义一个类型为Actor的对象,这是VTK类实例化对象的基本用法,因为VTK每个类的构造函数都定义为保护成员。
之前看了很多程序,只知道应该这么做,现在知道原因了。
或者用:
vtkActor* xxxActor = vtkActor::New();
-------------------------------------------------------------------------------------------------------------------
从书上照下来的,比较直观理解Renderer;renderwindow;actor等关系,看说明真是很罗嗦。
还有这个管道图,之前看过很多遍,就觉得很复杂,现在理解了,这也是为什么一个简单的显示图片的VTK程序要那么多New();的原因
每一个部分都要实例一个对象,然后SetInputConnection等等。
-------------------------------------------------------------------------------------------------------------------
imageViewer->SetColorLevel(500); imageViewer->SetColorWindow(2000);
设置窗位和窗宽,对于CT等医学图像,体素值范围在[-1000,2000],-1000是纯黑色,2000应该是纯白,但好像上限不一定是2000,甚至更多,但下限我可以确定是-1000.
所以可以设置窗位500,窗宽1500,或者2000也行吧,能显示的更全面
比较疑惑的是这个值和灰度图像0-255有什么关联。
-------------------------------------------------------------------------------------------------------------------
还有一个关于vtkImageView2的小笔记
View2中封装了Actor,Render,RenderWindow等渲染引擎,就是把上面管道的每一个部分集合在了一起,不用麻烦的每次都NEW一个新的小组件。所以用View2的时候,是可以没有具体的Actor的。
现在在做一个项目,一个学长问我你的Actor是哪几个,我找了半天也没找到,原来我这里写的是View2,所以没有显示Actor。
vtkSmartPointer<vtkImageViewer2> m_pImageViewer; m_pImageViewer->SetInputData(reader->GetOutput()); m_pImageViewer->UpdateDisplayExtent(); m_pImageViewer->SetRenderWindow(m_qvtkWidget->GetRenderWindow()); m_pImageViewer->SetRenderer(m_pRenderder); //m_pImageViewer->SetupInteractor(m_qvtkWidget->GetRenderWindow()->GetInteractor()); m_pImageViewer->SetColorLevel(0); m_pImageViewer->SetColorWindow(2000); m_pImageViewer->SetSliceOrientationToXY(); //默认就是这个方向的 m_pImageViewer->GetImageActor()->InterpolateOff(); m_pRenderder->ResetCamera(); m_pRenderder->DrawOn(); m_qvtkWidget->GetRenderWindow()->Render();最上面是声明;
还有一个VTK7.0里用的是SetInputData,旧版本是SetInput.
这里我测试了一下
m_pImageViewer->SetupInteractor(m_qvtkWidget->GetRenderWindow()->GetInteractor());
这个是设置鼠标交互,在不注释的情况下,鼠标是可以按住左键在图像上移动的,移动后整个灰度值乱变!!(左右)
把上面的交互那句注销掉后:
再按住鼠标左键移动,实现了旋转功能,不过单张图片这个功能也没什么卵用。
应该是可以把这个鼠标交互彻底屏蔽的,不过我还没找到方法~~
今天的笔记暂时这么多吧
相关文章推荐
- linux中 qt5 的环境搭建
- Ubuntu上安装Qt5
- 第24章 VTK(一)
- 第24章 VTK(二)
- vtkGPUVolumeRayCastMapper (Examples)
- vtk中实现裁剪
- VTK输出AVI录像文件要点
- VTK中文解决方案
- vtk学习笔记 --- 显示label之vtkLabelPlacementMapper
- 实现图像的缩放
- VTK类视频 切片移动直线获取灰度值
- vtk实现保存窗口为图像
- QT与VTK的结合开发(2)
- VTK学习笔记之图像处理
- 利用VTK显示文件读取进度模态对话框
- vtk交互
- vtk计算Polydata的面积和体积
- vtk获取内存中图像数据
- VTK拾取相关的类
- vtk 图像处理 多种 操作