Unity入门,求推荐书目?

身份认证 购VIP最低享 7 折!

Aragorn 从亚马逊,京东等图书网站获取书目信息,并整理给买书者以参考,比价购买。

Matlab图像处理代码合集

资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!

}

  医学图像三维重建的方法主要有两大类:一类是三维面绘制,另一类是三维体绘制。体绘制能够更真实地反映物体结构,但由于其运算量大,即使利用高性能的计算机也无法满足实际应用中交互操作的需要。因此,面绘制是目前医学图像三维重建的主流算法。MarchingCubes(MC)算法是面绘制算法中的经典算法。在实际应用中,利用遥感硬件或者各种探测仪器,可以获得表征现实世界中物体的三维图像。比如利用CT机扫描人体得到人体断层扫描图像,就是一个表征人体内部组织器官形状的一个三维图像。其中的感兴趣的组织器官通过体素的颜色和背景加以区别。如下图的人体头骨扫描图像。医生通过观察这样的图像可以分析病人头骨的特征,从而对症下药。

 本文主要介绍以面绘制方式的经典MC算法,通过自己的理解来使用vtk简单的利用这一算法实现两个可视化的小demo,代码在最后,一个demo为上图头骨和皮肤的模型,一个demo为通过交互来控制等值面的大小从而显示头骨和皮肤。如下图:

  从图像到网格的算法并非只有MC算法,但是MC算法相比其他的算法,具有生成网格的质量好,同时具有很高的可并行性的优点。所以在众多的行业应用中,MC算法以及各种类型的基于其思想的改进算法的使用频率是非常高的。

  首先基于MC的一系列算法需要明确一个“体元(Cell)”的概念。体元是在三维图像中由相邻的8个体素(voxel)构成的方格,而每个体素(除了边界上的之外)都为8个体元所共享。

  为了给每个体元定位,对于一个特定的体元,使用这个体元x、y、z方向上坐标都是最小的那个体素(见上图)作为基准体素,以它的x、y、z索引作为这个体元的x、y、z索引。这样我们可以把这个体元中的体素进行编号如下表所示:

体素偏移(相对基准体素)
0

  这样就可以为整个三维图像的体元和体素定位,同时为MC算法的实现做准备。同时根据下文的MC算法需要,用相同的思路为体元的边也进行编号定位:

  MC算法的主要思路是以体元为单位来寻找三维图像中内容部分与背景部分的边界,在体元抽取三角片来拟合这个边界。每个体元有八的体素,每个体素有两种状态(实点或虚点),总共有256种,可以制作一个查找表(look up table),但由于反转状态不变,所以可以减少一半,为128种。再根据旋转不变形,又可以减少到15种情况。MC算法的核心思想就是利用这256种可以枚举的情况来进行体元内的等值三角面片抽取。

  由于计算机内的位0,1字节位(bit)可以用来对应表示一个体素点是否是实点,这样可以正好使用一个字节中的8个位来分别对应一个体元中八个体素的分布情况。上文中的表已经把每个体素点所对应的字节位的位置表述清楚了,编号0~7的体素点的虚实情况分别对应一个字节中从右往左第1~8个位。比如一个字节二进制为,则可以用来表示0,1,2,4,5,6号体素为实点,3,7,8号体素为虚点的体素配置。

  从图中可以看出,组成等值面的三角形的三个顶点一定是穿过体元的边的,所以可以用三条边的索引来表示一个三角形。如下图的体元配置:

  其实点为1,2,3,6,则其字节形式来表示8个体素的虚实情况为,转为十进制为78。其等值面由4个三角形T1、T2、T3、T4组成这四个三角形的顶点分别所在边如下表所示:

  那么对于78这个体元配置,我们在表中就可有如下的记录(注意该表完整应该有256行而这里只写了78这一行):

(3,11,6),(0,3,6),(0,6,5),(0,5,9)

  实际上,MC算法的三角形表就是将这样的方式简化后转化成二维数组来组织的,下面的代码就是MC的三角形表,具体是来源于网络流传,这张表应该不是计算机生成的,应该是在较早的时候有人手动统计的,考察了所有256种情况的体元配置并画出其中的三角形,然后写在表里,这个活儿工作量不小,之后网上很多版本的MC算法都用到了和这个表一模一样的表,只是可能用了不同的语言去表达。所以我们应该抱着对算法先辈们的万分感激之情去使用这张宝贵的三角形表。

demo1:通过键盘‘a’ , ‘s’ 控制等值线的大小来控制渲染头骨还是皮肤。

demo2:头骨和皮肤模型。

//等值线500为皮肤
}

层层拆解Unity3D游戏客户端架构,深入剖析各个模块技术方案,详细讲解游戏客户端的渲染原理。

}

我要回帖

更多关于 文学入门必读书籍 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信