张玉霞
(湖北科技学院生物医学工程学院 湖北·咸宁 431700)
远程医疗可以解决医疗中由时间和空间带来的限制,使病人在尽量短的时间内得到有效的治疗以及更多的医疗资源,当病人不方便与医生见面时,远程医疗是一个很好的医患沟通选择,远程医疗还可以节省医疗费用,提高医疗质量。
远程医疗包括了生理参数的采集和传输,很多生理参数对仪器的要求并不苛刻,可以通过患者操控实现。手机自带的传感器可以检测部分生理参数,此外,应用于健康检测的移动电话即手机,在商业领域已经开始暂露头角。集成多种测量功能的手机,为用户提供了更加全面的动态健康监控功能和更强大的灵活度。[1]
根据医疗信息化建设的需求,为医学信息工程的学生开设了实践课程“远程医疗系统设计”,希望通过该门课程,让学生掌握远程医疗系统的数据采集、传输和存储。目前,远程医疗系统设计课程没有相应的教材,本论文借助两个例子探讨如何将手机用于远程医疗系统设计课程建设。
目前,有健康APP 利用手机摄像头测心率,如体检宝;也有一些研究手机摄像头测心率的方法,并取得了一定的成果。李欣和其它研究者[2]用手机摄像头获取指尖视频,将YUV 视频格式转换成为RGB格式,用小波变换为所获取的视频去噪,计算出视频中每帧图像红色分量平均值,再根据血液在一个周期内红色分量颜色变化的规律计算出红色分量平均值在一分钟内出现的峰值数,从而计算出心率值,并且利用手机的GPS功能在需要的情况下将心率值和测试者所在位置发射出去,达到实时监控心率的目的。陈敏[3]等人用手机摄像头采集手指尖的视频,并将采集到的每帧图像转换为RGB 格式,求出R、G 分量像素的平均值,再利用快速独立成分分析(FastICA)算法从可能混有运动、光线等因素的源图像中提取最接近R、G通道的一组分量,作为提取心率信号来分析,该方法利用的原理为在一个心率周期内,当血管内压力最大时,血液吸收光强达到最大值,图像的像素均值最小;当血管的压力最小时,血液吸收的光强最少,图像的像素均值最大。接下来利用快速傅里叶变换(FFT)对R 分量和G 分量进行功率谱分析,所得的频谱图中保留频率为1.0-1.6Hz 所对应的幅度谱,比较这些幅度谱,记下幅度谱最大的频率值,用该频率值乘以60 便得到了心率的值。该论文用了R 分量和G 分量,是为了比较用哪个分量的效果更好,在实际应用时,我们可以只选择其中一种分量。
许靖宇[4]等人用手机摄像头获取指尖视频,将YUV 视频格式转换成为RGB格式,用小波变换为所获取的视频去噪,再根据血氧监测理论计算血氧饱和度。用手机摄像头监测血氧饱和度是基于反射式脉搏血氧法。秦颖[5]等人详细介绍了基于反射式脉搏血氧法的原理,动脉血氧饱和度为血液中氧合血红蛋白HbO2占整体血红蛋白Hb(氧合血红蛋白HbO2和还原血红蛋白HbR 之和)的比例,血红蛋白在不同的氧和状态下对红光、近红外光具有不同的吸收作用,当光波波长为660nm 时HbO2和HbR 的吸光系数相差最大,当光波波长为850nm 时HbO2和HbR的吸光系数相同,通过朗伯-比尔定律可以求出吸光系数与反射光强变化值之间的关系,将上述描述结合起来可以推算出血氧饱和度的计算公式B 可以通过实验标定来确定。李婷[6]等人用MATLAB 模拟了血氧饱和度的监测,该模拟实验中A 和B 的取值分别为-25 和110,用660nm 波长的正弦信号模拟红光,用940nm 波长的正弦信号模拟红外光, :(660nm 反射光强度的最大值-660nm反射光强度的最小值)/660nm 反射光强度的最大值, :(940nm 反射光强度的最大值-940nm 反射光强度的最小值)/940nm 反射光强度的最大值。用手机摄像头做光源时,将获取的每帧视频转成RGB格式,用小波分析方法除噪,再计算出视频中每帧图像红色分量和绿色分量平均值,红色分量平均值模拟红光反射光强度,绿色分量平均值模拟红外光反射光强度,虽然蓝色光的波长更接近红外光波长,但是蓝色光分量的值太少,所以选取绿色光来模拟红外光会取得更好的效果。
有些软件在实现文献[2]中测心率的方法时,并没有用小波分析除噪这一步,在教学中用不用小波分析要根据学生的知识储备情况来定,因为就本科生的知识储备和时间来说,用JAVA语言在Android 平台上实现小波分析有一定的难度,如果一开始让他们做的太难了,他们大概会退缩或者失去学习的兴趣,所以需要循序渐进,从简单到复杂慢慢的去引导。
当利用文献[3]进行教学时,在教学中是否用到FastICA 算法,也要根据学生的知识储备来定,如果学生在学习之初,不能接受FastICA 算法,可以在一开始不使用FastICA 算法,而是直接对分离的R 通道和G 通道进行功率谱分析,进一步得到心率值。本人和所带的学生对此进行过尝试,能够得出较好的实验结果。值得注意的是,利用该方法进行心率检测时,因为涉及到了功率谱的分析,功率谱分析时需要用到手机摄像头视频的频率,而手机摄像头视频的频率并不是固定不变的,而是随着手机的运行而实时变化的,因此需要实时计算频率值。实时获取频率值可以通过Android平台的System.currentTimeMillis();方法实现,该方法的功能为获取当前系统时间,能够通过该方法获取每两帧视频,或者多帧视频之间的时间间隔,从而求出实时的频率。
当利用文献[4][5][6]进行教学时,在教学中是否用小波分析除噪声也要依据学生的储备知识来看,本人和所带的学生在用手机摄像头实现血氧饱和度的检测时,用红色分量模拟红光,绿色分量模拟红外光,红光光强的最大值和最小值分别为红色分量平均值的最大值和最小值,红外光光强的最大值和最小值分别为绿色分量平均值的最大值和最小值,A 和B 的取值分别为-25 和110,没有用小波分析除噪声,能够得到比较好的结果。
当获取上述方法中摄像头采集的每帧数据时,需要用到Android 中的SurfaceView 类,当我们计算出心率和血氧饱和度后,可以利用Android 中的网络编程将计算出的数据发送到搭建起来的Web 服务器中,实现远程传输的功能。
在用手机摄像头检测心率和血氧饱和度的远程教学中,可以将远程医疗中测量心率和血氧饱和度硬件部分用手机摄像头来代替,再通过开发的手机App 对实时传到手机上的视频数据经行处理,便得到了心率值和血氧饱和度值,还有可以用网络编程将获取的值传到服务器存储以便查询分析。该教学方法能够将图像传感器、图像处理、数字信号处理、光在生物组织中的传播、医学、Android 编程、Web 编程等知识融合起来实现一个生理参数检测存储和传输系统,所用到的知识都是本科生涉及过的基础知识,该教学方法可以作为医学信息工程课程融合的一个例子。
当实现了该项目后,老师还可以根据学生的兴趣引导学生从不同的角度继续研究和学习,以心率检测为例,比如对于喜欢编程的同学,可以让他们将界面做得更加适合用户操作,界面显示更加美观一些;对于喜欢硬件的同学,可以让他们试着用不同的传感器来实现心率的检测;对于喜欢图像处理和信号处理的同学,可以让他们试着用更好的算法来实现心率的检测,用摄像头获取面部视频来计算心率值;对于喜欢医学的同学,可以让他们试着分析心率、心率变异与其它症状之间的关系;还可以让他们试着分析用光学知识检测其它的生命体征等等,这种以问题为导向的引导方式使远程医疗系统设计这门课程又具备一定的广度和深度,也能与学生的兴趣爱好相结合,激发学生的学习动力。
这种教学方式不需要其它的硬件支持,只需要学生有Android 手机,电脑,以及相应的Android 开发环境。在我上课的班级中,大概每30 个学生中,有27 人是Android 手机,每个人都有电脑,软件可以免费下载,对于不是Android 手机的同学,可以将源代码写好后在虚拟机上运行,没有错误后,再借用同学们或者老师的手机验证结果。教学中涉及到的App,我们可以从网络上下载到源代码,下载的源代码中用的是文献[2]中方法,但是没有实现文献[2]中小波分析这一步骤,下载的源代码开发环境为Eclipse+SDK,Android4.2 以上的版本,开发语言为Java。如果要实现其它的算法和检测需求,可以根据需要修改源代码。一般情况下,师生都有条件实现该教学方法。
本文结合在远程医疗系统设计中的教学经验,介绍了利用手机自带的传感器作为硬件部分来实现远程医疗系统设计的方法,从原理、教学时应该注意的问题、教学方法、可行性分析等方面进行了介绍和探讨。手机自带的还有许多传感器,除了可以用手机摄像头实现心率和血氧饱和度的检测和传输外,还可以实现皮肤病的远程诊断,舌苔的远程采集和分析,并借助显微镜等其它外设实现更多的功能。[1]借助手机实现远程医疗系统设计课程教学,能够实现多门课程的融合、节省资源,能够使课程内容具备一定的广度和深度,具有可行性。