Voreen(一) GPU Raycast主流程

最近看了下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体绘制的主流程就讲到这里啦~

时间: 2024-10-19 04:31:09

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

Voreen(二) 入点出点计算

继第一篇Voreen的文章介绍主流程以后,第二篇介绍Raycast的第一个绘制Pass,根据代理几何体绘制出入点出点.如上次所说,OptimizedProxyGeometry负责生成表示体数据的代理几何体,其输出是三角面片,而MeshEntryExitPoints以三角面片为输入,分别绘制出光线的起点图和终点图.体绘制的一些加速方法和剪切功能可通过生成不同形式的代理几何体实现. 最基本的方式是以体数据的长方体包围盒作为绘制的代理几何体,如下面左图所示,这样光线需要从包围盒的起点遍历到终点,很多经

GPU:并行计算利器

http://blog.jobbole.com/87849/ 首页 最新文章 IT 职场 前端 后端 移动端 数据库 运维 其他技术 - 导航条 - 首页 最新文章 IT 职场 前端 - JavaScript - HTML5 - CSS 后端 - Python - Java - C/C++ - PHP - .NET - Ruby - Go 移动端 - Android - iOS 数据库 运维 - Linux - UNIX 其他技术 - Git - 机器学习 - 算法 - 测试 - 信息安全 -

Tensorflow Windows Build with GPU Support

Step-by-step Windows build 虽然Research一直在用Caffe,而且用的飞起,但还是很关注tensorflow社区的事情,最近发现TF有windows版本的了,就自己试了试. 步骤:https://github.com/tensorflow/tensorflow/tree/master/tensorflow/contrib/cmake Pre-requisites: Microsoft Windows 10 Microsoft Visual Studio Enter

如何建立一个GPU加速的研究计算集群(一)

世界上某些最快的计算机是集群组成的.集群是有多个计算机通过高速网络连接起来的一个计算系统.集群计算机比单台计算机可以达到更高的可用性,可靠性和伸缩性.随着对基于GPU的高性能计算采用越来越广,英伟达GPU逐渐成为世界上最厉害的超级计算集群的一部分.世界前500的超级计算机中,包括差不多50个采用了英伟达的的GPU,并且目前世界上最快的计算机泰坦,使用了大约18000个英伟达开普勒GPU. 在这个帖子中,我将会一步一步的介绍设计.部署和管理一个小型的GPU集群整个过程.我会介绍GPU集群的组成部分

    MD5,MySQL,SHA解密 - 利用GPU进行密码破解

使用方法: 1 打开命令行cmd 然后切换到egb的目录,假设你的文件夹在f盘,则输入:  f:2. 在当前目录输入: egb.exe /info查看你的电脑是否支持使用CUDA3. 可以将要破解的文件放置到当前目录4. 回到命令窗口,输入: egb.exe MD5 Settings/MD5.ini password.txt5. 上面的MD5表示使用MD5解密方式,而Settings/MD5.ini则是具体的配置文件.程序内置了72中不同类型的解密配置文件,可以自己浏览一下. 而passwd.t

OpenCL入门:(二:用GPU计算两个数组和)

本文编写一个计算两个数组和的程序,用CPU和GPU分别运算,计算运算时间,并且校验最后的运算结果.文中代码偏多,原理建议阅读下面文章,文中介绍了OpenCL相关名词概念. http://opencl.codeplex.com/wikipage?title=OpenCL%20Tutorials%20-%201  (英文版) http://www.cnblogs.com/leiben/archive/2012/06/05/2536508.html (博友翻译的中文版) 一.创建工程 按照OpenCL

windows10+anaconda3+tensorflow(GPU)

2017.6.2安装时间 先装anaconda3或者在anaconda2下win+r cmd控制器 conda create -n Anaconda3 python=3.5 (上一步会在里面出现文件 我剪切到别的地方了) 在Anaconda2/envs中安装Anaconda 3版本的  会提示已经存在 我是删了重新在envs下直接安装Anaconda3 注意要安装3.5版本不要3.6网页下面有连接进去安装Anaconda3 4.2 然后把刚才的两个文件复制粘贴回来 然后调用的时候就 activa

90、Tensorflow实现分布式学习,多台电脑,多个GPU 异步试学习

''' Created on 2017年5月28日 @author: weizhen ''' import time import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data import mnist_inference BATCH_SIZE = 100 LEARNING_RATE_BASE = 0.01 TRAINING_STEPS = 1000 LEARNING_RATE_DECAY

DeepLearning4j 实战——手写体数字识别GPU实现与性能比较

在之前的博客中已经用单机.Spark分布式两种训练的方式对深度神经网络进行训练,但其实DeepLearning4j也是支持多GPU训练的.这篇文章我就总结下用GPU来对DNN/CNN进行训练和评估过程.并且我会给出CPU.GPU和多卡GPU之前的性能比较图表.不过,由于重点在于说明Mnist数据集在GPU上训练的过程,所以对于一些环境的部署,比如Java环境和CUDA的安装就不再详细说明了. 软件环境的部署主要在于两个方面,一个是JDK的安装,另外一个是CUDA.目前最新版本的DeepLearn