vtk相机_分别用 VTK 体绘制和面绘制来实现医学图像三维重建;

本文介绍了VTK在医学图像三维重建中的应用,包括面绘制和体绘制两种方法。面绘制利用Marching Cubes算法确定等值面,而体绘制则涉及vtkVolumeRayCastMapper和vtkVolumeProperty。面绘制适用于资源有限的场景,体绘制则提供更丰富的视觉效果,但计算资源需求较大。
摘要由CSDN通过智能技术生成
序言,VTK介绍:

VTK 全称为 The Visualization Toolkit (可视化工具),是一个开源、跨平台、自由获取、支持并行计算的图形应用函数;拥有3D 渲染的最新工具、提供3D交互模式以及2D绘图等。

VTK 包含一个C++类库,目前提供了众多语言接口,例如 Java、Python、TCL;在三维函数库OpenGL 的基础上采用面向对象设计方法发展起来

图形学基本概念和数据结构,是VTK的核心,VTK是通过 Pipline的形式来输送数据,实现预览效果。

三维重建

在 VTK 中,提供了两种重建方式:体绘制和面绘制 (一般来说用VTK做重建,医学图像领域较多,如 Dicom、mha、mhd;当然 VTK 也实现点云重建)

面绘制

利用面绘值用到VTK封装到的 Marching Cube 算法,简称 MC算法,MC 算法的实现主要分为三部分:

1,确定包含等值面的体元

首先介绍一下 体元的概念,体元是三维图像中由相邻的八个体素点组成的正方体方格,英语也叫 Cube,体元中角点函数值分为两种情况,一种是大于等于给定等值面的值 C0 ,则将角点设为 1 称该角点在等值面内部,否则设为0,在等值面之外,

一般来说,会出现一个角点在内,一个角点在外,则角点之间的连线(也就是体元的边)必然与等值面相交,根据这个原理就能判断等值面与哪些体元相交。

d733911a9ce6c0d133573432c8e6e0fd.png
bf243cdab52b8fa6f4f50c31b3e3427b.png

体元内每个角点(顶点)有两种情况:0和1,一共8个角点即分为256种( 6c5d6e40c801a2e273e4f24e2b6ca6e4.png ),根据平面对称性、中心对称性,256种最终降到15种

2,确定等值面与体元边界的交点

找到含有等值面的体元之后,接下来就是确定等值面与体元边界的交点,体元间的数值都是呈线性变化,求交点时一般采用的是线性插值,如  Case0 中等值面的两个端点 一个在外为( 标记0) ,一个在内 ( 标记为1 ) 则交点为0.5;

3,求等值面的法向量

以上步骤 1,2,3 为实现 MC 算法步骤流程,但利用 VTK ,不需要这么繁琐,主要算法步骤都已经封装到 vtkMarchingCube 类中,使用 vtkMarchingCube 时,需要设置三个参数:

  • SetValue(int i,double value) 设置第i 个等值面的值b,(提醒一下,医学图像中的灰度值范围不是 0-256 而是0-65326,但大部分取值范围都在0-1000)。

  • SetNumberofContours(int number),设置等值面的个数

  • ComputerNormalsOn() 设置计算等值面的法向量,提高渲染质量;

9b9ddf94fc9ca6fa86d1b8aaaab19631.png

上面这张图显示的就是 vtk 呈像的基本流程,下面是仿照官网写的用面绘制来对图像重建的代码部分:

#include
#include
#inc
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值