科学研究
 

针灸铜人三维可视化研究与应用


要:

针对针灸铜人这类文化遗产数字化保护手段单一、体验性差和传播力不强等问题, 提出了一种综合利用三维激光扫描、三维可视化和虚拟现实等技术的数字化方法。以湖北省博物馆珍藏的腧穴针灸铜人为对象, 首先采用三维激光扫描技术进行数据采集和三维建模;然后使用XML语言对其承载的传统中医知识进行存储与表达, 重点利用基于改进的二次误差度量和递进网格算法实现铜人多分辨率简化模型的自动生成;最后利用Unity引擎开发了一套针灸铜人虚拟交互展示系统, 实现了穴位、经络和常见疾病等传统中医知识在三维场景下的快速可视化与交互查询, 为历史文物与非物质文化遗产的数字化保护及传播提供了借鉴。

关键词:

针灸铜人; 文化遗产; 三维可视化; 模型简化; 虚拟现实;

 

引言

中华民族积淀了丰富多彩且文化底蕴深厚的文化遗产资源,针灸铜人就是其中一例。针灸铜人是中国古代医学家发明的一种用青铜浇铸而成的人体经络腧穴模型,始于北宋天圣年间,明清时期也有少量制作。当前流传下来的明清及以前的针灸铜人数量极少,而且大多都被收藏在博物馆,被公众了解甚少。作为中国传统医学史上的稀世奇珍,针灸铜人具有较高的历史、文化和艺术价值[1]2017年1月18日,习近平主席在瑞士日内瓦向世界卫生组织 (WHO) 赠送中国针灸铜人雕塑,就彰显了其重要地位和医学价值。针灸教学目前比较常用的是雕版印刷的二维平面图。二维图纸难以准确地反映人体复杂的经络和腧穴。针灸铜人是一种直观有效的针灸教学工具,如果能将收藏在博物馆中的针灸铜人利用三维可视化技术和新媒体展示给大众,不仅有利于促进中医传统文化的广泛传播,而且也是对文化遗产的一种有效保护与传承。

近年来,计算机、地理信息系统、三维可视化和虚拟现实等技术在文化遗产数字化保护与传播方面应用越来越广泛[2,3]。例如,李德仁院士[4]介绍了虚拟现实技术在香港志莲净苑和敦煌莫高窟等文化遗产数字化保护中的应用。宗立成等人[5]采用三维激光扫描技术研究了文物的三维重建和虚拟展示方法。孔黎明等人[6]认为增强现实技术 (augmented reality, AR) 在革新文化遗产展示手段方面大有可为,并列举了AR技术在建筑遗址、壁画、历史街区、博物馆文化展示等多方面的应用案例。黄永林等人[7]提出数字化采集与存储、数字化复原和再现、数字化展示与传播、虚拟现实等技术在我国非物质文化遗产保护与传承方面能发挥重要作用。

尽管国内外有关文化遗产数字化与可视化的研究与应用非常多,但大多是针对古建筑、历史遗迹等物质文化遗产,针对针灸铜人及传统中医知识这类特殊遗产的三维可视化研究和应用较少[8]。本文以馆藏针灸铜人为例,利用三维可视化和虚拟现实等技术研究针灸铜人及其所承载的传统中医知识虚拟展示方法,为文化遗产数字化保护和传播提供新途径。

1 针灸铜人三维模型构建方法

本文以湖北省博物馆珍藏的腧穴针灸铜人为对象,该铜人造像为明代风格,全身共有659个腧穴,单侧355个腧穴,标注了354个穴位名称。馆藏针灸铜人将人体经脉和穴位等信息直观形象地展现出来,是研究和传播传统中医知识的一种重要工具。为了实现中医针灸知识的三维虚拟交互展示,创建精准的铜人三维模型和中医知识表达模型是基础。

1.1 针灸铜人三维建模

三维激光扫描技术可快速获取目标物高密度的三维点云数据,具有非接触、扫描速度快、精度高等特点,在文物保护领域应用广泛[9,10]。本文采用手持式三维激光扫描仪对湖北省博物馆所藏的腧穴针灸铜人 (图1 (a) ) 进行非接触式扫描,获取针灸铜人表面高密度的三维点云数据。在扫描时尽量保证模型各部位的光线均匀,并对表面复杂区域进行多次扫描;扫描完成后对获得的点云数据使用专业软件进行配准和去噪等处理,处理完成后保存为Wavefront OBJ (*.obj) 这种通用3D模型文件格式,以方便导入其他三维建模软件进行精细建模,如图1 (b) 所示。针灸铜人模型表面有着较为复杂的经络和穴位信息,为此,利用高清相机对针灸铜人实物从不同角度拍照,获得其表面高质量图片;然后将这些照片导入Photoshop软件进行裁剪、拉伸等操作,形成铜人模型的纹理材质文件;在此基础上将上一步处理得到的针灸铜人几何模型导入Autodesk3DS Max三维建模软件中进行较为精细的纹理贴图处理;贴图完成后在Autodesk 3DS Max中使用render to textures工具对模型进行烘焙处理,将光照和阴影等使用贴图方式预先贴附到模型上,从而减少后期三维模型可视化时光照和阴影的实时计算,提高渲染效率,最终结果如图1 (c) 所示。

1 针灸铜人三维模型

1.2 中医知识表达模型设计

湖北省博物馆珍藏的针灸铜人是传统中医知识教学的一种载体。为了实现传统中医知识的可视化传播,本文采用知识本体 (ontology) [11]方法来构建中医知识表达模型,并将知识表达模型与针灸铜人三维模型通过空间位置建立关联,便于后续虚拟交互应用的实现。为了实现知识之间关系的表达以及知识模型与三维模型的映射,本文选取自由度较高的原生XML进行中医知识的组织与表达。中医针灸知识主要涉及穴位、经络和疾病三种基本术语,它们之间的关系如图2所示。穴位是基础和核心,与经络和疾病相互关联。经络与穴位之间是一对多关系,而疾病与穴位则是多对多关系。

2 疾病、穴位、经络E-R图

根据中医领域知识的特点来确定各类实体的固有属性。以穴位为例,主要包含编码、名称、功能和所在位置等属性,如表1所示。

1 穴位属性信息    

属性确定后,采用XML对穴位知识按如下方式进行结构化描述:

对于疾病知识的表达,除了考虑疾病知识本身的特点以及疾病与穴位的关联关系之外,还要考虑到可视化时针灸铜人三维模型的姿态信息,以便于三维交互场景的快速定位。因此,疾病本体的属性定义如表2所示。

2 疾病属性信息  

疾病本体模型设计如下:

其中,Associated Acupoint子节点建立了疾病与穴位之间一对多的关联关系。

经络的本体设计与疾病类似,也是通过Associated Acupoint子节点建立经络与相应穴位的关联。以手太阴肺经为例,其知识模型设计如下:

采用XML实现了针灸铜人所承载的所有穴位、经络和常见疾病等知识的表示与存储之后,采用W3C (World Wide Web Consortium) 组织推荐的DOM解析方式可快速对知识模型进行解析,从而获得穴位、疾病或经络任意节点的属性信息。

2 针灸铜人三维模型简化算法

本文设计的针灸铜人三维模型需要在Web浏览器和智能手机等移动终端上显示,因此拟采用LOD (level of details,层次细节模型) 技术对三维模型进行简化,以提高可视化效率。LOD技术是由Clark[12]提出的一种具有代表性的模型简化算法,其主要思想是化繁为简,即通过简化算法将原来的模型简化为近似模型,从而获得高效的渲染速度,增加三维场景的流畅度,并节省计算机资源。

2.1 QEM算法

在使用LOD技术进行模型简化策略方面,本文主要采用基于边折叠的简化算法来自动生成针灸铜人的连续LOD模型。其中,由Garland等人[13]提出的基于二次误差度量 (quadric error metrics, QEM) 的边折叠算法不仅计算速度快,而且简化质量较高,是一种经典的格网简化算法。

QEM算法的基本思想是先确定每个顶点的误差矩阵,再根据顶点误差矩阵来计算边折叠的代价。在边折叠的执行过程中每次都选择代价最小的边进行折叠,直到模型达到所要求的分辨率为止。边折叠代价的具体计算方法如下:

假如v是三维空间空间中的一点,v=[vx, vy, vz, 1]T, p是三维空间与v相关联三角形所在的一个平面,p由方程ax+by+cz+d=0定义,其中a2+b2+c2=1,令p=[a, b, c, d]T,那么顶点v到平面p的距离平方可表示为

其中:

Kp称做平面p的基本误差二次型,用来求解空间中任意一点到该平面距离的平方。假设与顶点v相关联的三角形平面集合为P (v) ,那么该顶点的二次误差度量被定义为它到这些三角形平面的距离平方之和。

设顶点v的二次误差测度矩阵为Q' (v) ,则有

该矩阵是一个4阶的对称矩阵,是集合P (v) 中面的二次矩阵Kp之和。若边 (vi, vj) 通过边折叠到新顶点v珋,则通过上述公式可计算得到边折叠代价为

其中:Q'k=Q'i+Q'j用于近似表示新顶点v珋的二次误差矩阵。

2.2 QEM算法改进

虽然经典的QEM算法能够对模型进行快速简化,但是由于只考虑距离度量,在大规模简化后模型表面较为尖锐的棱角等重要几何特征会丢失[14]。所以,不少学者对其进行了改进研究[15,16,17],但是部分改进算法仍然存在尖端特征消失、边界收缩、计算复杂等不足。为了实现在模型简化的同时尽可能地保留原始模型的尖端特征,本文对QEM算法进行了改进。

文献[18]证实绝对曲率相比于高斯曲率、平均曲率更适用于三角网格模型的简化。考虑到一个自适应权值与二次误差矩阵的乘积不会改变二次误差矩阵的基本性质,只会使边折叠的顺序发生改变[14],为此本文的改进策略为:在QEM算法中将顶点的二次误差矩阵与顶点的绝对曲率的乘积作为新的误差测度矩阵。改进算法的具体实现如下:

假设有如图3所示的几何体,则其平均曲率H定义为

其中:H表示相邻的三角形面片的弯曲程度;A是与顶点v关联的三角形的面积总和;m (ei) 为与边ei相邻的两个三角形面的法向量夹角。

几何体的高斯曲率为

该高斯曲率表示曲面的弯曲程度,其中θi表示与顶点v相关的顶角。假设k1k2为顶点v处的两个主曲率,那么有

H2-K<0时,令H2-K=0,由此便可得到顶点v处的绝对曲率Kabs

假设边 (vi, vj) 折叠到新顶点v珋,则改进后的边折叠代价为

其中:‖vivj‖为顶点vivj间的距离;KiabsKjabs分别为vivj的绝对曲率;Q'iQ'j分别为vivj的误差矩阵。

由式 (11) 可知,新顶点的位置不同会产生不同的边折叠代价,从而影响边折叠顺序,并最终影响简化模型的精度。在边折叠时,目前对于如何选取新顶点v珋主要有两种策略:a) 分别计算边的两个端点和中点的Δ″ (v珋) ,从中选取折叠代价值最小的作为新顶点,某些改进算法就是通过这种半边折叠的思路来提高计算效率;b) 针对每条边选取Δ″ (v珋) 最小的点作为新顶点,这种方法简化效果较好,但计算量较大。本文采用这两种策略的综合,对于非模型边界的边,首先求解Δ″ (v珋) 的最小值。如果能获取,就用对应的点作为新顶点;如果不能得到最小值,就采用策略a) ,从端点或中点中选择二次误差最小的点。对于处于边界的三角边,则直接采用策略1来选取新顶点。

2.3 基于改进QEM的递进网格算法实现

常规网格简化算法只能构造静态LOD模型。在三维可视化过程中,需要预先构造多个细节层次模型,以便在不同视距下加载不同LOD模型,实现平滑过渡。递进网格 (progressive mesh, PM) 算法可以根据系统需求快速生成不同层次的网格模型,即任意两个LOD模型之间可以互相转换[19]PM算法是以边折叠和点分裂为基本操作的模型简化算法,其原理是每次在对网格进行简化的同时记录下本次简化操作的序列,而基于这组操作序列就可以还原初始模型。PM算法的基本操作如图4所示。

3 顶点曲率示意图

4 PM算法中的边折叠和点分裂操作

从图4中可以看出,PM算法必须在每次进行边折叠时保存必要的信息,这些信息包括需要折叠的边的两个顶点vfromvto;被删掉的三角形Tremove;边折叠后需要改变顶点的三角形Teffect。因此,采用改进后的边折叠代价函数和PM算法生成多细节层次模型的具体过程如下:

a) 导入模型,对模型进行初始化。

b) 计算原始模型中每个顶点的二次误差矩阵Q' (v) 和绝对曲率Kabs

c) 根据式 (11) 分别计算出每个顶点折叠到邻近顶点的代价cost,并存储代价最小的值和新顶点的位置。

d) 对步骤c) 中计算出的值进行比较,将顶点依据cost值升序排列,创建一个顶点队列。

e) 从顶点队列中取出第一个顶点进行边折叠操作。假设要折叠的边为 (vfrom, vto) ,该操作将把点vfrom折叠到点vto,同时会移除点vfrom和与该边相关的三角形,用点vto代替点vfrom,从顶点队列中移除vfrom

f) 重新计算点vto及其邻近点的边折叠代价,并更新顶点队列。

g) 记录本次边折叠操作。

h) 如果顶点为空或达到用户要求,则跳转到步骤i) ;否则跳转到步骤e) 。

i) 结束。

3 实验与分析

基于改进QEM的递进网格算法采用Visual C++语言和Open GL库编程实现,在Windows 10操作系统,Intel Core i7-4770 3.40 GHz CPU、8 GB内存和NVIDIA Ge Force GTX 1050 Ti显卡配置计算机上进行针灸铜人三角网模型的多尺度简化实验,利用开源Mesh Lab[20]软件进行可视化所得简化结果如图5所示。在Mesh Lab软件中采用QEM简化算法所得结果如图6所示。

5 本文算法模型简化结果

6 传统QEM算法模型简化结果

从两种算法结果对比可以看出,随着简化程度的递增,本文算法在保留模型尖端特征方面明显优于QEM算法,如铜人的手指、鼻子、耳朵等重要轮廓特征在简化率达到90%以上时依然保持较好。这是因为本文算法在计算边折叠代价时不仅考虑了顶点的二次误差矩阵,而且还充分利用了顶点的绝对曲率,而绝对曲率能够更好地表达模型表面的尖端特征。

7展示了分别使用顶点的平均曲率、高斯曲率和绝对曲率对原始模型进行颜色渲染结果。从图中可以看出,铜人的手指、鼻子、眼睛、耳朵、额头等部位的绝对曲率特征比其他曲率特征体现更明显,绝对曲率与顶点的二次误差矩阵相乘可以使这些区域的顶点误差测度增大,从而改变边折叠次序,使得原始模型的重要特征在简化结果中较好地保留下来。

7 针灸铜人模型采用不同离散曲率渲染结果

针灸铜人三角网模型由15 926个顶点和31 857个三角面组成。使用上述两种算法进行不同程度简化后的顶点、三角面数和耗时信息如表3所示。从表3可以看出,当模型简化95%时,模型顶点数由原来的15 926个减少到798个,而三角面数也减少了30 265个,obj模型文件大小也从5 696 KB减少到了50 KB,在内存消耗减小、可视化渲染效率大幅提升的同时,本文算法依然能够保持模型不失真。

3 不同细节层次的模型信息与耗时    

在算法执行效率方面,本文算法在这三种简化情况下平均耗时22.85 s,而QEM算法平均耗时不到1 s。由于本文算法在计算边折叠代价时不仅需要计算顶点绝对曲率,而且还需要存储边折叠时一些必要的信息,所以时间复杂度比QEM算法要高。虽然基于改进QEM算法的递进网格构造时间较长,但是递进网格的简化信息序列可以在预处理阶段完成,在后续简化过程中可以直接使用,无须重新生成。在三维可视化时,通过正向或逆向跟踪简化信息序列并执行相应操作即可实时生成相应LOD模型,实现模型的平滑过渡。

4 基于Unity的针灸铜人虚拟交互系统设计与实现

根据以上关键技术研究,本文基于Unity开发引擎和C#编程语言开发了一套针灸铜人虚拟交互展示系统,实现针灸铜人及传统中医知识在三维环境下的动态交互展示。

4.1 系统设计

针灸铜人虚拟交互展示系统的构建流程如图8所示。系统主要由三维建模和虚拟现实技术开发两部分组成。其中,三维建模是指用三维激光扫描仪获取高精度针灸铜人三维点云,然后在3DS Max软件中进行贴图渲染和烘焙输出三维模型。中医知识表达模型利用XML构建,形成穴位、经络和常见疾病三种结构化文档数据。将利用模型简化算法生成的不同细节层次模型导入Unity软件中,设置LOD策略并搭建模型展示场景,设计交互界面,最后在Visual Studio 2015开发平台中编程实现各类交互展示功能的消息响应。

8 针灸铜人虚拟交互展示系统构建流程

系统功能结构如图9所示。其主要由三维模型交互和中医知识交互两大模块构成。模型交互主要包括针灸铜人模型的缩放、旋转和平移等基本操作;知识交互则重点展示针灸铜人的基本信息、穴位点击查询、经络分布信息展示、疾病知识及关联穴位信息展示等功能。

9 系统功能结构

4.2 交互功能实现

针灸铜人的平移、缩放、旋转等基本交互功能主要在Unity中通过设置摄像机相关属性来实现,在此不赘述。下面重点介绍中医知识交互展示功能的实现方法。

穴位点击查询是本系统的一项重要功能,对于该功能的实现有两种方法:

a) 对每一个表示穴位的组件添加一个脚本,在脚本中单独编写获取穴位信息的程序。这种方法虽然计算效率高,但是由于铜人模型共有354个穴位,对每个穴位手工添加脚本和响应事件显然工作量巨大,开发效率低。

b) 在Unity中捕获鼠标点击事件,当捕捉到该事件后,根据Unity中的Raycast机制,从当前鼠标点击的位置向虚拟的三维世界中发射一条射线,通过碰撞检测获得射线穿过的物体信息,将物体的ID作为参数传给中医知识模型的XML解析程序,最终获得对应穴位的相关信息,将其展示出来。

显然方法b) 开发效率高,本文主要采用该方法来实现交互响应。算法具体步骤描述如下:

a) 捕获鼠标事件。

b) 如果当前鼠标为左键点击状态,则跳转到步骤c) ;否则跳转到步骤k) 。

c) 获得鼠标的点击位置。

d) 从鼠标的点击位置创建一条射向Unity世界中的射线raycast。

e) 如果该射线碰撞到了某物体,则跳转到步骤f) ;否则跳转到步骤j) 。

f) 获得碰撞检测到的物体hit。

g) 将物体hit的ID传递给穴位本体解析程序,得到穴位知识模型acupoint。

h) 激活信息展示界面,并将acupoint的信息展示到界面上。

i) 更改物体hit的材质,并跳转到步骤k) 。

j) 隐藏信息展示界面。

k) 结束。

最终获得的穴位点击交互效果如图10所示。当前点击查询到的穴位用红点表示 (见电子版) ,左侧展示该穴位的名称和功效等知识信息。

由于常见病与经络的交互功能类似,这里仅选择常见病来简要说明交互功能的实现方法。当点击系统界面的“常见病”按钮时,弹出二级菜单界面,包含内科和外科一些常见疾病的名称,如图11所示。

1 0 穴位点击交互功能效果

1 1 常见病二级菜单界面

针对图11二级菜单中按钮的响应,系统会根据前面构建中医疾病知识本体模型时存储的三维位置姿态信息进行知识模型到三维模型的映射,再将具体病症相关知识信息呈现到针灸铜人模型上展示。其算法描述如下:

a) 获得鼠标点击按钮对应的button对象。

b) 将该button的name属性传递给疾病本体解析程序,从疾病XML文档中获得对应疾病 (disease) 节点的相关属性信息。

c) 取出disease节点中保存的model Rotation、model Scale、model Position属性值,将其赋给针灸铜人模型的transform,从而调整模型的位置姿态。

d) 取出disease节点中保存的Associated Acupoints (关联穴位) 列表,根据每个穴位ID找到对应穴位在模型上的空间位置,并在针灸铜人三维模型上高亮显示这些穴位点。

e) 取出disease中保存的main Acupoints信息,将疾病名称和关联穴位等文本知识显示到三维场景中。

f) 结束。

最终实现的疾病知识交互展示效果如图12所示。

4.3 系统发布

系统功能全部实现之后,借助Unity的跨平台特性可以快速地将其编译并分别发布到Web浏览器、安卓 (Android) 和苹果 (i OS) 手机系统等不同应用平台进行展示。系统能够自适应不同终端的屏幕分辨率,界面友好,操作简单,如图13所示。借助互联网和智能手机等终端进行针灸铜人和传统中医知识的三维交互展示,可以使其最大限度地共享共用,从而增强文化遗产的体验感和传播力。

1 2 常见疾病与穴位关系交互展示示例

1 3 针灸铜人虚拟交互展示系统手机端应用示例

5 结束语

非物质文化遗产的数字化保护与传承一直以来都受到了国家极大的重视,然而传统的数字化手段比较单一,大部分是利用文字、图片、音频和视频等媒介形式简单记录,难以直观、动态地展示某些文化遗产的内涵。本文尝试将三维激光扫描、三维可视化、虚拟现实和移动互联网等技术应用于针灸铜人及其承载的传统中医知识的数字化保护,不仅能建立逼真的三维模型,使得铜人模型在智能手机等移动终端运行流畅,而且还能借助该模型实现部分中医知识的虚拟交互展示,使中华传统针灸相关知识更容易理解、利用和传播。本文提出的技术方法为历史文物与非物质文化遗产相结合的数字化保护与传播提供了一种新的解决方案。然而本文提出的中医知识表达模型较为简单,本体相关理论和方法应用不够深入。针对不同类别的非物质文化遗产项目,今后需要根据其特点研究更多行之有效的数字化保护、传承与传播方法。

 

 

【字体: 】【收藏】 【打印】【关闭
 
 
 
 
联系我们
地址:湖北武汉珞喻路152号华中师范大学科学会堂南楼3楼
邮编:430079
邮箱:nrcc2006@163.com
电话:027-67867695