【摘要】 近年来,随着角膜数学模型研究的深入,人们已经认识到角膜表面可用椭球面方程来描述。由于数学模型比较抽象,缺乏直观性,现有的角膜地形图仪也只能提供角膜的二维平面图,不具立体感。本研究在数学模型的基础上利用Matlab开发工具构建角膜三维图像模型,旨在为眼科临床、科研及教学提供更多的技术支撑。我们在构建角膜三维形态方面利用了开发工具提供的椭球面造型函数和曲面生成函数,为使图像更具真实感,编程调用了表面着色、光照、材质及透明度等函数对角膜面进行渲染,同时调用了图形交互函数为用户获取实时数据带来便利。在Matlab平台上构建角膜三维图像模型具备形象、直观的效果,且方法简便、高效,为科研人员创建角膜图像模型“档案”提供了一种新的途径。
【关键词】 角膜;图像模型;Matlab
Using Matlab to construct a 3-D image model of the cornea
CHEN Kaidi*, WANG Bo, SHI Mingguang.
* The Information and Engineering School of Wenzhou Medical College, Wenzhou China, 325035
[Abstract] During recent years, with advances in developing a mathematical model of the cornea, people have realized the possibility of describing the corneal surface using an ellipsoid equation. This mathematical model is abstract and does not promote intuitive thinking. In addition, existing corneal topography instruments can only offer two-dimensional planes without a stereoscopic view. This presentation uses the Matlab program to build a three-dimensional corneal model on the basis of a mathematical model and attempts to provide more technical support for clinical, research and teaching fields in ophthalmology. In the construction of the 3-D image model, we introduce the ellipsoid shaping function and surface generating function provided by Matlab. In order to provide realistic images, functions such as a surface shader, illumination sources and material and transparency render the images. In addition, an interactive graphical function is introduced to provide real-time data for the users. To conclude, constructing 3-D image models on the Matlab platform offers the advantage of intuitive images and simple methods that blaze a new trail in building archives of corneal image models for research purposes.
[Key words] cornea; image model; Matlab
[中图分类号] Q819;Q242.1;R778 [文献标识码] A
[文章编号] 1008-1801(2009)05-0375-03
角膜在眼球屈光系统中起着极其重要的作用。半个多世纪以来,关于角膜数学模型的研究从未停止,随着研究的深入,人们已经逐渐认识到正常角膜前后表面均为近似椭球面。目前临床上可以利用角膜地形图仪采集到个体角膜的曲率、厚度、前后表面地形及高度等数据,根据这些数据可以重建较为准确的角膜数学模型,但数学模型往往只提供了角膜曲面或截痕曲线的数学表达式,缺乏直观性。若希望进一步了解角膜面的本质,为科研、临床乃至仪器设备的设计提供更多的指导,一个立体、直观的角膜三维图像模型就显得十分重要。
近年来计算机辅助几何设计(CAGD)的发展为生物医学图像的三维重建提供了良好的技术支持。人们曾经在角膜的计算机三维模型构建方面做过一些努力,如利用Visual C++平台结合OpenGL图形应用程序接口构建角膜三维模型[1]、通过APDL语言在有限元平台ANSYS上构建角膜三维模型[2],这两种方法的缺点是开发过程比较繁琐,开发工具难以掌握,不适合临床医师等非计算机专业科研人员使用。本研究拟采用Matlab平台构建角膜图像模型,其优势在于界面友好,易于掌握,能够快速、高效地在计算机上绘制角膜三维形态。
1 角膜数学模型的发展
角膜是一个曲面,即具有某种性质的点的集合。从理论上讲,每张曲面都有它自己的数学模型,即描述物体表面形状的数学表达式,也称为物体的几何模型。为了临床治疗与科研的需要,半个多世纪以来,人们一直在寻求一种最符合绝大多数正常人眼角膜的数学模型。Baker在1943年提出了角膜的子午线截面为圆锥体截痕的理论y2=2r0x-px2 [3];Mandell根据Baker角膜截痕理论,采用照相角膜镜技术测量人眼角膜各子午线的曲率,提出以椭圆公式表达人眼角膜截面模型■+■=1 [4];Bennetts等于1991年提出了采用轴向角膜地形图的矢状曲率半径rs和角膜顶点曲率半径r0的角膜截面公式rs2=r02+(1-p)y[5];2002年,Gatine等发现正常人眼角膜前表面为椭球面,用方程x2+y2+(1+Q)z2-2r0z=1来表达角膜面形状[6]。近年的研究利用角膜地形图的正切曲率半径推算得到角膜子午线截痕二次曲线方程为y2=a1z+a2z2,结合临床检查中利用Orbscan-Ⅱ角膜地形图仪采集到的前、后表面分布点的角膜曲率等数据,推导该二次曲线为椭圆,从而进一步推断国人角膜前、后表面均为椭球面,可用方程表示为■+■+■=1和■+■+■=1[7]。
2 应用Matlab构建角膜三维图像模型的方法
2.1 Matlab简介 Matlab是一种用于算法开发、数据可视化、数据分析以及数值计算的高级计算语言和交互式环境,它提供了将工程和科学数据可视化所需的全部图形功能。特别是在图形的光照处理、色度处理以及四维数据的表现等方面,Matlab具备出色的处理能力。新版本Matlab的内核是用C++语言开发,它重载封装了C++中大量功能强大的数学库和图形库,而且语法比较简单,方便于非计算机专业的科研人员使用。本研究采用的是Matlab R2007b版本,对角膜进行实时快速构建及半物理仿真。
Matlab提供了mesh、ezmesh、surf、ezsurf等函数用于绘制自定义的三维曲面,对于圆柱面、球面、椭球面等比较特殊的几何体,Matlab还提供了相应的实体造型函数[8],这就为绘制角膜三维形态带来了很大的方便。
2.2 角膜三维几何形态绘制 根据已知的国人眼角膜前、后表面数学模型■+■+■=1和■+■+■=1,可利用Matlab中的椭球面造型函数ellipsoid来准备绘制数据。由于角膜面并不是一个完整的椭球面,而只是椭球面的一小部分,所以必须利用Matlab曲面绘制中的切削方法,即将几何数据的某一部分换成内置变量NaN(表示数据为空)。绘制角膜前表面的部分代码如下:
[u,v,w]=ellipsoid(0,0,7.8528,7.9499,7.8064,7.8528,100);
ii=find(w<12);
w(ii)=nan;
h=surf(u,v,w);