最近看了下Voreen这个开源体绘制快速原型开发包。Voreen里面集合了不少体绘制的基本算法,还是值得研究和试验图像显示效果的。今天第一篇以它自带工程为例,介绍下DICOM数据读取和GPU Raycast的基本流程。

打开standard.vws工程,界面是以下这样的:每个灰色小方块都是一个Processor,这些Processor由不同类型的Port相连接,组成一个完整的绘制流程,最终输出到最下方Canvas这一特殊的Processor上进行显示。 图中用不同的颜色区分了Port的类型,其中体数据的Port是红色,三角面片的Port颜色是黄色,而图像的Port是蓝色,不同类型的Port不能直接连线。

接下来逐个分析每个Processor子模块 。最上方VolumeSouce是数据读取Processor,例子中读取的是自带Raw数据,我们可通过CMAKE时指定gdcm三方库,从而引入DICOM数据读取功能,如下图所示,选取Volume Source这个processor,右边点下按钮Load Volume,选择单张DICOM,即读取了整个dicom目录。

下面的三个processor是Raycast的主要环节,OptimizedProxyGeometry是计算生成代理几何体Mesh结构的模块,默认生成的几何结构是体数据的长方体包围盒;MeshEntryExitPoint是对代理几何面进行绘制的模块,输出是前表面一张纹理和后表面一张纹理。前后表面的纹理作为SingleVolumeRaycaster的输入传入,限定了光线投射的起点和终点,SingleVolumeRaycaster进行光线累积,得到最终结果图像。这里光线用“绘制”的方式替代了传统的求交计算,如果这一步骤不理解 ,建议读取以下文章:

https://www.cg.tuwien.ac.at/research/publications/2005/scharsach-2005-adv/scharsach-2005-adv-PDF.pdf

下面这幅图我拖入了两个Canvas,可方便直观地显示出前后表面的样子,旋转平移等每次交互,前后表面都会进行刷新显示。唯一不足的是,这前后表面显示的Canvas和光线投射的效果窗口大小不一致,拖动放大一个窗口时,其他窗口不会实时刷新。是不是每个Canvas都要分别设置一样的大小呢? 其实Voreen提供了很方便的Link Property功能可解决以上问题,按下红圈标注的按键,会发现不同Processor用白线进行了连接,不同Processor内部相同的Property可以进行关联,当一个发生改变是另一个也跟着改变。把Canvas大小连上,问题轻松解决了~

好了,第一节Voreen体绘制的主流程就讲到这里啦~

Voreen (一) GPU Raycast主流程的更多相关文章

  1. Voreen (二) 入点出点计算

    继第一篇Voreen的文章介绍主流程以后,第二篇介绍Raycast的第一个绘制Pass,根据代理几何体绘制出入点出点.如上次所说,OptimizedProxyGeometry负责生成表示体数据的代理几 ...

  2. GPU:并行计算利器

    http://blog.jobbole.com/87849/     首页 最新文章 IT 职场 前端 后端 移动端 数据库 运维 其他技术 - 导航条 - 首页 最新文章 IT 职场 前端 - Ja ...

  3. 高级渲染技巧和代码示例 GPU Pro 7

    下载代码示例 移动设备正呈现着像素越来越高,屏幕尺寸越来越小的发展趋势. 由于像素着色的能耗非常大,因此 DPI 的增加以及移动设备固有的功耗受限环境为降低像素着色成本带来了巨大的压力. MSAA 有 ...

  4. [Unity3D]利用Raycast实现物体的选择与操作

    本文系作者原创 转载请注明出处 如果是一个2D的平面项目或者说需要在三维空间选择一个物体时(经常表现为抓取物件),我们需要用到Raycast事件 那么首先先说说什么是Raycast 按照字面上来理解的 ...

  5. 【腾讯优测干货分享】安卓专项测试之GPU测试探索

    本文来自于Dev Club 开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57c7ffdc0569a1191bce8a63 作者:章未哲——腾讯SNG质 ...

  6. CSharpGL(25)一个用raycast实现体渲染VolumeRender的例子

    CSharpGL(25)一个用raycast实现体渲染VolumeRender的例子 本文涉及的VolumeRendering相关的C#代码是从(https://github.com/toolchai ...

  7. [译]基于GPU的体渲染高级技术之raycasting算法

    [译]基于GPU的体渲染高级技术之raycasting算法 PS:我决定翻译一下<Advanced Illumination Techniques for GPU-Based Volume Ra ...

  8. Microsoft Windows* SDK May 2010 或较新版本(兼容 2010 年 6 月 DirectX SDK)GPU Detect

    原文链接 下载代码样本 特性/描述 日期: 2016 年 5 月 5 日 GPU Detect 是一种简短的示例,演示了检测系统中主要显卡硬件(包括第六代智能英特尔® 酷睿™ 处理器产品家族)的方式. ...

  9. 基于GPU的高分一号影像正射校正的设计与实现

    一 RPC正射校正的原理 影像正射校正的方法有很多,主要包含两大类:一类是严格的几何纠正模型,另一类是近似几何纠正模型.当遥感影像的成像模型和有关参数已知时,可以根据严格的成像模型来校正图像,这种方法 ...

随机推荐

  1. MySql学习 (一) —— 基本数据库操作语句、三大列类型

    注:该MySql系列博客仅为个人学习笔记. 在使用MySql的时候,基本都是用图形化工具,如navicat.最近发现连最基本的创建表的语法都快忘了... 所以,想要重新系统性的学习下MySql,为后面 ...

  2. JSP自定义标签/自定义标签打包

    有这样一个业务需求: 当我们在编辑某个用户时,需要设置该用户的角色,在转到编辑页面时,就需要自动勾选上该用户已经选择的角色,如下图: 当我们点击编辑时,会查询用户详细信息,以及角色集合传到编辑页面. ...

  3. vue 中使用 AJAX获取数据的方法

    在VUE开发时,数据可以使用jquery和vue-resource来获取数据.在获取数据时,一定需要给一个数据初始值. 看下例: <script type="text/javascri ...

  4. easyui的textbox赋值小结

    使用的系统中有个后台,需要填充单号,如下图: 每次往框里面填充都是一样的数据,复制.粘贴,而且当人数颇多的时候,就是体力活. 于是就想到通过执行js代码,自动填充这些数据. chrome下F12,查看 ...

  5. SQL Server系列

    这里整理了我学习SQL Server的全部文章,包括从基础到高级,做一个目录,方便以后查找. SQL Server数据类型 SQL Server中开发常用的数据类型 单表查询和多表查询 一个单表查询的 ...

  6. 个人c语言编程风格总结

    总结一下我个人的编程风格及这样做的原因吧,其实是为了给实验室写一个统一的C语言编程规范才写的.首先声明,我下面提到的编程规范,是自己给自己定的,不是c语言里面规定的. 一件事情,做成和做好中间可能隔了 ...

  7. JAVA基础----java中E,T,?的区别?

    http://825635381.iteye.com/blog/2017650 遇到<A>,<B>,<K,V>等,是用到了java中的泛型. 一般使用<T&g ...

  8. sass安装记录

    之前曾经安装过一次sass,不过可惜没使用,现在换了电脑重新安装,又上网找了些资料,终于安装成功,现在就当做个记录方便下次安装. 首先 到官网下载个最新版的ruby :http://rubyinsta ...

  9. NPOI 导出Excel2007版本时出现流已关闭问题

    NPOI生产.xlsx文件件时,在使用book.Write(ms);后,会关闭流,这样导致再次使用Respons输出流的时候就出错了. 我看到一些网友提供的解决办法是: public class NP ...

  10. 一张关于docker版本的图

    今天安装了windows内测版的docker,的确是是把vitualbox换成了hyper-v,如左图,server的os 还是linux.不过之前在nanoserver上装的docker 也的确是原 ...