ImageData的三维可视化实例[mask, warp, normals, LookupTable]
来源:互联网 发布:multisim for mac下载 编辑:程序博客网 时间:2024/04/29 19:55
前段时间写的一个三维显示imageDate的例子,也是摸索了好久,现在发出来大家探讨一下,因为所有的filter都是我自己一边看资料一边试出来的,所以可能不是最好的解决方案,欢迎提出意见!
一,设计思路:
一,设计思路:
如下图所示:
上面有些filter都有很多参数的设置,例如vtkPolyDataNormals,我在代码中有少量注释,大家也可以自己修改相关的参数,试验一下效果!
另外,上面为了大家能够方便测试,我用的是vtkdata里面的数据(编译是可能要改变成你自己的路径),但具体应用的时候,肯定要使用我们自己的数据,下面也附上imagedata的生成方法:
//---------------------------------------------------------
//vtkImageData
//nx ny分别为行列数,space为cell的大小,ori_x和ori_y分别为x和y的起始坐标
double *data = new double[nx*ny];
//输入或者从文件中读取data
vtkDoubleArray *scalars = vtkDoubleArray::New();
scalars->SetArray(data,nx*ny,1);
vtkImageData *id = vtkImageData::New();
id->GetPointData()->SetScalars(scalars);
id->SetDimensions(nx,ny,1);
id->SetScalarTypeToDouble();
id->SetSpacing(space,space,1.0);
id->SetOrigin(ori_x,ori_y,0.0);
二,程序代码
这段代码是我刚刚跟 [尼罗河里的猫] 一起探讨vtkImageMask时的测试程序,后来也没有把相关部分删除,也可以让大家参考下mageMask的用法~而且在这里我们也遇到了一个问题,如果这张图里面我想做出一个空洞的效果(就像gif图片里的透明色),该如何完成,想到用mageMask::SetMaskAlpha(1),后来发现这个方法只是挡住了,mask的1值所在部分,并不是挖出一个圆来~这个到底如何实现呢,知道的朋友还望指教一二~
另外,在这段代码中我也用到了imageviewer来做二维显示,当然你如果只是想显示二维图像,用这个是最快捷的~但这里的交互style是用鼠标改变ColorWindow和ColorLevel,不太另人满意,当然你可以给鼠标事件添加obersver来屏蔽!显示完二维图像按'e'或者'q'就能看到三维图像了~效果还行~
另外,上面为了大家能够方便测试,我用的是vtkdata里面的数据(编译是可能要改变成你自己的路径),但具体应用的时候,肯定要使用我们自己的数据,下面也附上imagedata的生成方法:
//---------------------------------------------------------
//vtkImageData
//nx ny分别为行列数,space为cell的大小,ori_x和ori_y分别为x和y的起始坐标
double *data = new double[nx*ny];
//输入或者从文件中读取data
vtkDoubleArray *scalars = vtkDoubleArray::New();
scalars->SetArray(data,nx*ny,1);
vtkImageData *id = vtkImageData::New();
id->GetPointData()->SetScalars(scalars);
id->SetDimensions(nx,ny,1);
id->SetScalarTypeToDouble();
id->SetSpacing(space,space,1.0);
id->SetOrigin(ori_x,ori_y,0.0);
二,程序代码
这段代码是我刚刚跟 [尼罗河里的猫] 一起探讨vtkImageMask时的测试程序,后来也没有把相关部分删除,也可以让大家参考下mageMask的用法~而且在这里我们也遇到了一个问题,如果这张图里面我想做出一个空洞的效果(就像gif图片里的透明色),该如何完成,想到用mageMask::SetMaskAlpha(1),后来发现这个方法只是挡住了,mask的1值所在部分,并不是挖出一个圆来~这个到底如何实现呢,知道的朋友还望指教一二~
另外,在这段代码中我也用到了imageviewer来做二维显示,当然你如果只是想显示二维图像,用这个是最快捷的~但这里的交互style是用鼠标改变ColorWindow和ColorLevel,不太另人满意,当然你可以给鼠标事件添加obersver来屏蔽!显示完二维图像按'e'或者'q'就能看到三维图像了~效果还行~
三,结果截图
从上面两个图看那个黑色的圈都感觉是被挖去一块,我也被欺骗了,那里实际上只是被挡住,或者被替换成黑色,而不是我们想要的透明色!看下下面这个图就知道了,如果是挖去一块应该能透过去看到对面的峰。。。
四,后话
第一部分的思路本来是想用文字的,后来发现自己到vtk的理解毕竟有限,有些东西还真说不上来,就用插图了~这里用到了VTK Designer,随便向大家推荐这两个软件,主要是向新手了,可以到他的主页去下载:http://www.vcreatelogic.com/products/vtkd/ 同时推荐另外一个,叫paraView,可以到http://www.paraview.org/去下载。
从字面上理解,前者应该是用来做设计的,应该属于rad,后者可能主要用于可视化vtk数据。其实这两个软件我也用得不多,我的电脑上安装上这两个东西也就才一个月,也不好做过多评论~当然我介绍这两个东西,并不是让大家,特别是像我这样的新手们去真正用它去做开发,主要我觉得有些时候学习程序真的是一种很枯燥的事情,特别对于vtk这种国内可参考,可借鉴材料又比较少的情况下,没事玩玩那种gui类的软件能很大程度增进我们对vtk的兴趣,抑或增进我们对vtk的理解,比如看了我用VTK Designer做的那个图,vtk管道的理念是不是很清晰地就展现出来了,还有VTK Designer的右边有两个资源管理器,分别可以显示基本的vtk的Algorith,filter,function。。以及它们对应的属性和方法~而且分类很清晰明了!paraView我也就用过一次,它的好处是不用编程直接就能读取所有vtk支持的数据格式,也可以直接添加widget进去交互操作。让你对不同的数据,不同的filter和widget有更深入的理解。。。。其中的好处肯定不止这些,大家自己去发掘吧,毕竟这个比你看我上面那堆冗长的代码要有趣~~
附上VTK Designer的三个截图(这里是运行的是该软件自带的实例):
第一部分的思路本来是想用文字的,后来发现自己到vtk的理解毕竟有限,有些东西还真说不上来,就用插图了~这里用到了VTK Designer,随便向大家推荐这两个软件,主要是向新手了,可以到他的主页去下载:http://www.vcreatelogic.com/products/vtkd/ 同时推荐另外一个,叫paraView,可以到http://www.paraview.org/去下载。
从字面上理解,前者应该是用来做设计的,应该属于rad,后者可能主要用于可视化vtk数据。其实这两个软件我也用得不多,我的电脑上安装上这两个东西也就才一个月,也不好做过多评论~当然我介绍这两个东西,并不是让大家,特别是像我这样的新手们去真正用它去做开发,主要我觉得有些时候学习程序真的是一种很枯燥的事情,特别对于vtk这种国内可参考,可借鉴材料又比较少的情况下,没事玩玩那种gui类的软件能很大程度增进我们对vtk的兴趣,抑或增进我们对vtk的理解,比如看了我用VTK Designer做的那个图,vtk管道的理念是不是很清晰地就展现出来了,还有VTK Designer的右边有两个资源管理器,分别可以显示基本的vtk的Algorith,filter,function。。以及它们对应的属性和方法~而且分类很清晰明了!paraView我也就用过一次,它的好处是不用编程直接就能读取所有vtk支持的数据格式,也可以直接添加widget进去交互操作。让你对不同的数据,不同的filter和widget有更深入的理解。。。。其中的好处肯定不止这些,大家自己去发掘吧,毕竟这个比你看我上面那堆冗长的代码要有趣~~
附上VTK Designer的三个截图(这里是运行的是该软件自带的实例):
paraView的截图:
刚刚截图的过程中再一次感受到paraView的强大,忍不住又多玩了一会~
刚刚截图的过程中再一次感受到paraView的强大,忍不住又多玩了一会~
ps:最后还是向大家求助一下,到底用什么filter,能把imagedata挖空一块呢??
- ImageData的三维可视化实例[mask, warp, normals, LookupTable]
- mask-rcnn的可视化网络结构
- ImageData
- 基于OpenGL的三维地形可视化研究
- 三维水面可视化技术的原理
- Matlab数据的可视化 -- 三维特殊图形
- Matlab数据的可视化 -- 三维网格图形
- Matlab数据的可视化 -- 三维表面图
- Python科学计算三维可视化(3)——TVTK可视化实例
- warP()
- warp
- 医学影像三维可视化软件
- 基于GPU的三维数据场可视化内窥系统
- 数值模拟实时三维可视化的C#与OpenGL实现
- 虚拟现实中三维真实地形的可视化方法
- 国内三维可视化协同技术面临的机遇与挑战
- Matlab怎样令三维抽象数据可视化的显示出来
- GPU可编程渲染的矢量点要素符号三维可视化
- Android开发之旅:组件生命周期(二)
- ubuntu下安装sqlite
- Visual C++实践与提高 —— 串口通信与工程应用篇[配套源码]
- 暴雪游戏(Blizzard)的高效哈希算法
- MFC中调用WPF教程
- ImageData的三维可视化实例[mask, warp, normals, LookupTable]
- 红黑树
- 内存管理
- MS SQLSERVER中如何快速获取表的记录总数
- Linux系统调用列表
- 我
- MPEG4更改图像分辨率后编码不对的问题已经解决!
- wait,notify,sleep,join和线程同步问题
- VTK观察者和picker学习--从源码中找解决方案