Upload
others
View
26
Download
0
Embed Size (px)
Citation preview
中华眼视光学与视觉科学杂志
2015
年
7
月第
17
卷第
7
期
Chin J Optom Ophthalmol Vis Sci
,
July 2015
,
Vol.17
,
No.7
DOI
:
10.3760/cma.j.issn.1674-845X.2015.07.003
基金项目:浙江省国际科技合作专项计划项目(
2013C24032
)
作者单位:
325035
温州医科大学信息与工程学院
通信作者:黄学平,
:
角膜作为眼睛屈光系统的重要组成部分, 其占
全眼屈光力的
70%
。 在临床手术中角膜的特性是一
个重要的参数。对眼科医生来说,了解角膜表面的基
本参数,有助于角膜疾病的正确诊断和合理治疗。随
着计算机科学技术的发展, 用于记录和分析角膜表
面形态的医疗仪器不断问世, 角膜地形图分析已成
为临床的重要检查手段
[1]
。
多年来,
Orbscan II
在眼科临床检查中应用较
多。
Orbscan II
为非接触式光学测量,采用的是水平
裂隙扫描和
Placido
盘技术,能够测量角膜前后表面
基于角膜地形图仪系统的数据获取研究
与实现
岑琴 谢忠好 黄学平
【摘要】 目的 应用
Orbscan II
角膜地形图仪系统,设计开发角膜数据分析软件来自动获取角膜
数据,为角膜的临床诊断提供自动分析功能。 方法 实验研究。 在现有的角膜地形图仪系统的基础上,
角膜数据分析软件通过
API Hook
挂接到
Orbscan
进程, 在检查测量角膜过程中, 由程序即时获取数
据,并通过共享内存文件的方式,将数据读取到角膜数据分析软件的程序进程当中,实现角膜数据的采
集、获取及分析。结果 对获取的数据进行偏微分分析和拟合回归处理,计算产生
360
条半子午线的
Q
值。在
VC++6.0
开发环境下,利用
OpenGL
绘图技术,形象地展示了个体化角膜表面的非球面性质及形
态图形。 结论 角膜数据分析软件能自动获取
Orbscan II
角膜地形图仪系统中的角膜数据,达到软件
开发上的无缝链接,提供实际三维角膜形态与
Q
值分布图,更好地扩展了角膜地形图仪系统的功能,
为角膜的进一步研究提供数据基础和自动分析功能。
【关键词】 角膜地形图; 角膜; 数据获取
The research and realization of data acquisition based on corneal topography system
Cen Qin
,
Xie Zhonghao
,
Huang Xueping. The Information and Engineering School of Wenzhou
Medical University
,
Wenzhou 325035
,
China
Corresponding author
:
Huang Xueping
,
:
【
Abstract
】
Objective To acquire the corneal data automatically by designing and developing
corneal data analysis software with the Orbscan II corneal topography system
,
providing automatic
analysis function for corneal clinical diagnosis. Methods Based on the existing corneal topography
system
,
the corneal data analysis software hooked the process of the Orbscan using API Hook.
During the measurement of the cornea
,
the program acquired the corneal data in real time
,
and
through sharing memory file
,
took the data into the program process of the corneal data analysis
software to realize collection
,
acquisition and analysis of the corneal data. Results The acquired data
were carried out partial differential analysis and regression to calculate and produce Q-value of the
360 semi-meridian. It used OpenGL graphics technology to vividly demonstrate aspheric properties
and morphological images of individual corneal surface in VC ++ 6.0 development environment.
Conclusion The corneal data of the Orbscan II corneal topography system could be obtained
automatically by the analysis program
,
which achieved seamless connection of software development
,
provided the actual three-dimensional corneal morphology and Q-value distribution curve for patients
,
better extended the function of the corneal topography system
,
and provided the data foundation and
automatic analysis function for the further study of cornea.
【
Key words
】
Corneal topography
;
Cornea
;
Data acquisition
·论著/眼视光新技术研发·
394
· ·
中华眼视光学与视觉科学杂志
2015
年
7
月第
17
卷第
7
期
Chin J Optom Ophthalmol Vis Sci
,
July 2015
,
Vol.17
,
No.7
地形以及整个角膜厚度。 在患者密切配合的情况下
重复性较好。
Orbscan II
的裂隙扫描装置由发射裂
隙光的
2
个投射头构成, 通过左右各
20
下的裂隙,
以
45
度角将光源投射到角膜表面,每个裂隙切面可
获取
240
个数据,对获取的数据进行分析,产生可重
复调用的诊断图像, 以显示角膜前后表面高度、散
光、最薄点、曲率、全厚度、直径以及瞳孔直径等
[2-3]
。
Orbscan II
角膜地形图仪系统能较早发现眼角
膜形态的异常, 且能同时显示角膜前后表面形态,
给角膜疾病的诊断、 治疗带来了极大的参考价值。
但有文献提到
Orbscan
检测厚度的精确性并不高,
后表面测量值不及前表面测量值精确
[4]
;又由于
OrbscanⅡ
采用裂隙扫描和
Placido
盘技术, 给出的
是角膜前表面的图像,而后表面的图像是通过前表
面综合评估得出的
[3]
,为了更好地分析角膜前后表
面的形态, 临床医生需手工摘录角膜地形图仪上检
测到的每一个点的数据,然后利用这些数据做分析,
工作量大且效率低,不利于快速诊断,因此亟需一种
能对
Orbscan II
获取的数据进行快速分析的技术,
方便临床科研人员对角膜数据进行诊断和研究。 鉴
于此需求, 我们针对
Orbscan II
角膜地形图仪的原
理, 利用
Hook
技术实时截获角膜地形图仪检测过
程中产生的数据, 为角膜地形图仪的二次开发提供
了技术支持。
1 Hook
技术及自编进程截获数据
1.1 Hook
技术概述
Hook
(钩子)是
Windows
中提供的一种用以替
换
DOS
下“中断”的系统机制。对特定的系统事件进
行
Hook
后,一旦发生已
Hook
事件,对该事件进行
Hook
的程序就会受到系统的通知,这时程序就能在
第一时间对该事件做出响应。
Hook
实际上是一个处
理消息的程序段,通过系统调用,将其挂入系统。 每
当特定的消息发出, 在没有到达目的窗口前,
Hook
程序就先捕获该消息, 亦即
Hook
函数先得到控制
权。 这时
Hook
函数就可以加工、处理该消息,也可
以不作处理而继续传递该消息, 还可以强制结束消
息的传递。
1.2 API Hook
技术在数据获取的实现
API Hook
技术是一种用于改变
API
执行结果
的技术,通过
Hook
“接触”到需要修改的
API
函数入
口点,改变它的地址指向特定的代码。
Windows
下的
每个进程都有自己的地址空间, 进程只能调用对应
的地址空间中的函数, 故在调用
API
函数之前,必
须将一个用来代替
API
执行的自定义函数的执行
代码注入到目标进程, 然后再将目标进程对该
API
的调用改为对注入到目标进程中的自定义函数的调
用,实现对
API
函数的拦截
[5-6]
。
Orbscan
角膜地形图仪系统是基于
Windows
NT
操作系统平台的应用程序。 通过对
Orbscan
系统
的分析, 发现系统在绘制角膜地形图的时候调用了
GDI32
下的
createDiBitmap
函数, 其参数中包含了
角膜地形图仪的绘图数据, 因而利用角膜数据分析
软件通过
API Hook
挂接到
Orbscan
进程,代码注入
流程如图
1
所示。
当
Orbscan
的目标
API
函数发生调用后, 分析
程序第一时间获取了敏感数据。 通过共享内存文件
的方式, 将敏感数据读取到角膜数据分析软件的程
序进程当中,具体流程如图
2
所示。
(
1
)实现一个包含和
createDiBitmap
函数结构
一致的
MycreateDiBitmap
函数的
dll
,通过远程注入
的方式 ,将
dll
插入到
Orbscan
进 程当中 ,修改
orbscan
进程的
IAT
,将
createDiBitmap
的跳转地址
图
1 API Hook
注
入代码流程图
图
2
分析程序从
Orbscan II
获取数据流程图
395
· ·
中华眼视光学与视觉科学杂志
2015
年
7
月第
17
卷第
7
期
Chin J Optom Ophthalmol Vis Sci
,
July 2015
,
Vol.17
,
No.7
指向
dll
中的目标函数
MycreateDiBitmap
。
(
2
)当程序调用
createDiBitmap
,首先将调用
MycreateDiBitmap
。
(
3
)
MycreateDiBitmap
获取到数据后,通过判断,
剔掉无关的数据,得到了
DF
(
differential
,指实际曲
面各个检测点与理想球面顶点的高度差)的数据。
此时,
DF
数据虽然得到,由于
dll
仍然在
orbscan
进
程当中,其他进程依然无法读取。这里采用内存共享
技术,取得
MycreateDiBitmap
得到
DF
数据。
2
对截获数据的分析
2.1 Orbscan II
角膜地形图仪系统的彩带条
在
Orbscan II
角膜地形图仪系统中, 角膜上不
同曲率半径采用不同的颜色。 暖色代表屈光力强的
部位,冷色代表屈光力弱的部位,使角膜地形图仪显
示的结果十分直观醒目。 颜色值与对应的
DF
值如
图
3
所示。
从上图可以看出,每种颜色对应不同的
DF
值,
当前
Orbscan II
版本默认为
35
级颜色带, 对应的
DF
值精度为
0.005
,如颜色为
RGB
(
0
,
220
,
0
)彩条
的
DF
值为
0
。
2.2
获取
DF
值
通过
API Hook
获取
Orbscan II
中的角膜绘图
数据, 根据对绘图数据和彩带条的比较, 可以取得
DF
的数据。 角膜的
DF
值存储在大小为
250×250
的
数组里,数据是逐行排列的,有效数据范围在
-0.08~
0.08
之间,其余一般为无效数据,处理的时候可以忽
略,图
4
为
DF
值对应的图像数据。
根据颜色带,可以求出角膜图像每点对应的
DF
值,由于
Orbscan II
是按行进行扫描的,所有取出来
的值也是以行为单位,且每行取
250
个值,每个角膜
取
250
行,存储在
DF[250][250]
数组中。 为了更符合
医生诊断的习惯,对获取的数据进行坐标转换,并计
算得到
360°
子午线上的
DF
值如下表
1
所示。
利用已求得的
DF
值, 根据算法将其转换成坐
标,具体方法将在后续研究中介绍。
参考文献
[7]
介绍了正常国人角膜形态的二次
曲线数学模型,提出在笛卡尔坐标上,角膜子午线截
痕二次曲线以
x
关于
z
的函数公式为:
x
2
=a
1
z+a
2
z
2
。根
据刚已求出的坐标值,取
2
个点建立方程组,即可求
得各子午线在新坐标系截痕的二次曲线方程的
a
1
和
a
2
,继而利用文献
[7]
、
[8]
中的公式求出
Q
值和各
点的正切曲率半径,以供临床诊断所用。
图
3 Orbscan II
角膜地形图仪系统
中颜色值与对应
DF
值
图
4
角膜
DF
值对应的图像数据
子午线度数 对应的
DF
值(
20
个值)
0° 0.000 000 0.015 000 0.015 000 0.010 000 0.010 000 0.005 000
……
1° 0.000 000 0.015 000 0.015 000 0.010 000 0.010 000 0.005 000
……
2° 0.000 000 0.015 000 0.015 000 0.010 000 0.010 000 0.005 000
……
…… …… …… …… …… …… …… ……
357° 0.000 000 0.015 000 0.015 000 0.010 000 0.010 000 0.005 000
……
358° 0.000 000 0.015 000 0.015 000 0.010 000 0.010 000 0.005 000
……
359° 0.000 000 0.015 000 0.015 000 0.010 000 0.01 000 0.005 000
……
表
1
子午线
/DF
值表
注:
DF
指实际曲面各个检测点与理想球面顶点的高度差
396
· ·
中华眼视光学与视觉科学杂志
2015
年
7
月第
17
卷第
7
期
Chin J Optom Ophthalmol Vis Sci
,
July 2015
,
Vol.17
,
No.7
图
5
角膜三维图像展示图
3
对截获数据的应用
现代医学十分重视医学信息的可视化, 也有很
多人尝试通过手工获取的数据进行角膜的三维重
建。三维图像不仅提高了医疗诊断的水平,而且还在
手术规划、医学教育、医疗设备的设计与研制等领域
中发挥着巨大作用。 本分析软件通过与
Orbscan II
角膜地形图仪系统的无缝衔接, 自动实现数据的采
集、获取,并对获取的数据进行偏微分分析和拟合回
归处理,计算产生
360
条半子午线的
Q
值,在
VC++
6.0
开发环境下,利用
OpenGL
绘图技术,绘制曲率
半径为
7.7 mm
的理想半球面,再根据
DF
值的分布
情况对图形进行上色, 形象地展示个体化角膜表面
的非球面性质及形态图形,如图
5
所示。
在分析软件中, 可以对角膜进行
360°
全方位的
查看, 为各种角膜屈光手术或角膜接触镜的个体化
设计提供角膜表面形态的信息,不容易漏诊,可以做
到早期发现、 早期诊断, 为圆锥角膜的诊断提供客
观、直接的依据。 后续工作将根据
360
条半子午线产
生的曲线方程绘制由对应曲线产生的实际三维图
形,并给出相应的
Q
值分布图,更好地展示角膜的个
体特征,如图
6
所示,其中
350°~0°
范围
Q
值最大。
4
总结
本研究建立在现有的角膜地形图仪系统的基础
上, 采用数据共享的方式, 自动实现角膜数据的采
集、获取,达到软件开发上的无缝链接,并采用面向
对象的编程方法(
VC++
)和基于
Windows
的通用图
形类库, 形象地展示个体化角膜表面的非球面性质
及形态图形,自动、快速地为每一位被检者提供实际
三维角膜形态与
Q
值分布图,更好地扩展了角膜地
形图仪系统的功能, 为角膜的进一步研究奠定了数
据基础。
参考文献:
[1]
张艳玲,施明光
. Orbscan
角膜地形图系统的临床应用
[J].
中国
中医眼科杂志,
2004
,
14
(
2
):
114鄄117.
[2]
杨亮,乌云,金宝泉
.
圆锥角膜早期诊断的研究进展
[J].
临床眼
科杂志,
2013
,
21
(
6
):
560鄄563.
[3] Cairns G
,
McGhee CN. Orbscan computerized topography
:
attributes
,
applications and limitations [J]. J Cataract Refract
Surg
,
2005
,
31
(
1
):
205鄄220.
[4] Kawana K
,
Miyata K
,
Tokunaga T
,
et al. Central corneal
thickness measurements using Orbscan II scanning slit
topography
,
noncontact specular microscopy and ultrasonic
pachymetry in eyes with keratoconus[J]. Cornea
,
2005
,
24
(
8
):
967鄄971.
[5]
舒敬荣,朱安国,齐善明
. HOOK API
时代码注入方法和函数重
定向技术研究
[J].
计算机应用与软件,
2009
,
26
(
5
):
107鄄110.
[6]
徐江峰,邵向阳
.
基于
HOOK API
技术的进程监控系统设计与
实现
[J].
计算机工程与设计,
2011
,
32
(
4
):
1330鄄1332.
[7]
施明光,王波
.
正常国人全角膜数字模型的建立
[J].
中华眼科杂
志,
2007
,
43
(
8
):
694鄄697.
[8]
陈如利,王若洁,王波,等
.
正切曲率半径对高度近视眼角膜表
面
Q
值计算及特性分析
[J].
中华眼视光学与视觉科学杂志,
2011
,
13
(
1
):
34鄄38.
(收稿日期:
2015鄄01鄄26
)
(本文编辑:贾建敏,毛文明)
图
6
角膜
Q
值分布图
397
· ·