基于AndroidVRSITA的青光眼视野检测系统设计与实现毕业论文程序源码大家好今天给大家介绍基于AndroidVRSITA的青光眼视野检测系统设计与实现文章末尾附有本毕业设计的论文和源码下载地址哦。需要下载开题报告PPT模板及论文答辩PPT模板等的小伙伴可以进入我的博客主页查看左侧最下面栏目中的自助下载方法哦文章目录基于AndroidVRSITA的青光眼视野检测系统设计与实现毕业论文程序源码1、项目简介2、资源详情3、关键词4、毕设简介5、资源下载6、更多android毕业设计项目1、项目简介青光眼的危害极大如果不及时处理可能造成不可逆转的视野损失视野检测在青光眼的诊断中不可或缺但检测设备难以获取为此开发了一款便携式的快速检测系统。只需要将本系统安装到Android设备上配带VR眼镜通过姿态传感器与检测程序进行交互就能实现用户自主进行视野范围的检测并将结果处理成图片分享给他人,还能将检测结果存放于数据库中方便随时进行查询。本程序分别以24-210-2作为青光眼前后期的检测范围对SITA快速程序策略加以实现和改进将其移植到Android设备上。快速检测程序的开发使得够患者即使在不去医院的情况下也能进行视野检查便能够及早发现并及时治疗挽救患者视力极大的提高了青光眼检测的高效性、便捷性。2、资源详情项目难度中等难度适用场景相关题目的毕业设计配套论文字数12611个字28页包含内容全套源码配整论文3、关键词青光眼图像处理VR传感器4、毕设简介提示以下为毕业论文的简略介绍项目完整源码及完整毕业论文下载地址见文末。1绪论1.1 系统概述1.1.1 研究背景青光眼的危害极大据估计全世界该患病者超过六千五百万人而且还在持续增加很多青光眼患者在患病初期并没有明显症状甚至其中一半的人对他们所患的疾病毫无意识有些人可能只是感觉到眼睛发胀甚至头痛然而青光眼一直发展下去很容易造成不可逆转的视力下降严重的会引起失明因此青光眼的早期诊断成为保存视力非常重要的一环。视野检测是现如今诊断和处理青光眼的基本手段定期进行视野检测有助于发现和追踪病情的进展以便医生定出最好的治疗方案视盘图像分析或者视神经纤维缺损分析虽然也非常重要但他们都不能代替视野检测在青光眼诊断和追踪中的作用[1]。但是由于现如今的检测机器价格普遍比较昂贵并非普通民众所能承担的起的故只能在有条件的医院才能进行视野检测。1.1.2 研究意义基于以上两点虽然青光眼危害性大但如果能够开发一款便携式的快速检测设备能够使患者即使在不去医院的情况下也能进行视野检查便能够及早发现并及时治疗挽救患者视力。于是开发了一款使用Android手机与VR眼镜结合检测的快速视野检测系统。一方面VR眼镜排除了外界因素的干扰另一方面将检测程序嵌入到手机当中也方便携带且无需增加额外的花费即使在没有条件的偏远地区也能进行视野检测[2]。1.1.3 研究现状随着VR技术的发展相关硬件再性能上已经能够更快更精确计算更复杂的模型。VR设备的成本也大大降低20世纪90年代的V8头盔价格约为10万元20世纪初期的xSight工业级头盔价格40余万[3],如今的VR眼镜价格在几百到上千元不等小米的智能VR一体机价格在2000元左右。相关软件和技术也已经走向成熟稳定且广泛应用于游戏、影视等领域[4~5]。随着计算机自动视野计算的不断发展视野检测程序和策略也在不断更新。从最早的全阈值策略到瑞典交互式阈值算法SITA策略不断为临床诊疗提供更为快捷和有效的检测方法[6~7]。SITA标准程序可用Humphrey全阈值策略的一半时间来完成一次30-2检测而不会出现重复性或视野丢失敏感度下降。SITA快速程序只用FastPac一半的时间却能提供相同的结果[8]。1.1.4 研究内容本文基于青光眼的检测问题在VR技术和计算机自动视野计算发展的推动下[9~10]提出了一种基于VR技术的青光眼视野检测系统。本文的主要研究内容如下(1) 研究青光眼检测的流程实现青光眼检测算法。(2) 研究检测过程中传感器回收的时机和有效响应时间的判定。(3) 研究检测过程中图像位置和矩阵越界问题。(4) 研究青光眼检测结果灰度图和概率偏差图的绘制和存储问题。(5) 研究系统的工作流程和Android开发。1.2 系统可行性研究1.2.1 技术可行性Google VR SDK有着良好的解决方案我们只需要将其引入无需主动调用便可实现VR效果解决了VR框架搭建的问题。Unity 有着直观的用户可视界面和工具能够快速启动工作原型并规避在低级编程上花费的时间比如画图使得模型的建立更为简单我们仅需要处理逻辑即可。FastAPI 以其轻量的特性可以快速搭建一个服务器我们需要做的就是接收与处理请求无需把大量的时间花费在搭建服务器上。SQLite 也以其轻量的特性可以快速建立数据库连接我们只需实现我们所要的增删改查操作。对于开发所用的JavaPythonC#Shell都是已经相对成熟的语言且熟于使用可为开发提供有力的支撑。1.2.2 经济可行性系统开发所使用的工具IDEA、Unity、SQLite、JDK和开发框架FastAPI均为免费版且易于下载获取第三方库Google VR SDK、Android API、canvas和所涉及的开发语言JavaPythonC#Shell都是开源免费的且系统部署在手机上无需购买专用设备且减轻了工作量节省了大量开发成本。因此系统的开发在经济方面是可行的。2系统总体描述本章讲述了系统实现所使用到的相关技术为系统的实现提供了有效保障紧接着结合需求分析对系统进行了简单介绍最后对开发系统的相关环境进行限制最大程度的减小了因环境问题造成系统的异常情况。2.1 关键技术系统的不同模块使用了不同的技术客户端使用了JavaJDK版本为1.8,由于直接使用真机调试Android API版本为30使用了 canvas 进行结果的复现使用了 base64 对传输内容进行了加密使用了 加速度传感器与地磁传感器 监听人体的点头检测算法使用了C#版本8.8.3使用了反畸变处理图像,服务端使用了Python版本为Python3.9使用了FastAPI框架搭建服务器SQLite 作为数据库。2.1.1 开发语言Java面向对象设计语言C#面向对象设计语言Python面向对象设计语言2.1.2 开源库(1) Android API开源免费的代码库由于其开放性的原因很多厂商对Android加以改造出现了三星小米等独具特色的Android系统。(2) canvascanvas类暴露了很多绘图方法比如drawText可以绘制文字drawPoint可以绘制点等等canvas绘图有三个基本要素画布坐标画笔我们通过canvas的各种绘制方法将图形绘制到画布上传入的坐标决定了我们绘制的形状而画笔决定了绘制的样式比如颜色线条宽度等。(3) base64base64其实是一个编码再解码的过程是将每三个字节转化成二进制然后再转为四个字符。2.1.3 加速度传感器与地磁传感器角度变化使用方向传感器即可满足要求但由于方向传感器在高版本的Android API中已经过时故使用加速度传感器与地磁传感器作为替代的解决方案要获取坐标中x,y,z的值坐标系如图2-1所示就要使用getOrientation而getOrientation需要获取一个旋转矩阵这时就要用到加速度传感器与地磁传感器提供数据源。图2-1设备坐标系2.1.4 反畸变由于VR镜头中心与边缘处放大系数不同的原因会使图像产生畸变这时我们就需要对图片做反畸变达到抵消畸变的目的Carboard中将图形畸变封装成了两个类一个是Distortion用于计算畸变因子和做畸变与反畸变一个是DistortionRenderer,用于做图形的渲染。2.1.5 FastAPI和SQLite(1) FastAPI一个用于快速构建服务端的web框架。(2) SQLite一个无需配置的轻量数据库支持SQL92标准的大多数查询功能适配UNIXWindows常用平台。2.2 系统简介本系统通过与用户进行交互不断计算用户眼睛各处的视野状况完成视野范围的检测并将检测结果转换为图像显示在界面上同时还能将检测结果存放于远端数据库之中方便跨设备查看也可生成报告分享给他人。2.3 功能性需求本系统的功能大致分为以下几块(1) 视野检测通过选择对应的检测程序以及眼睛进行视野检测。(2) 登陆输入账号密码进行登陆。(3) 注册创建一个账号供保存个人信息(4) 匿名检测不输入账号密码匿名检测。(5) 修改密码修改登陆账号所使用的密码。(6) 查看结果查看检测的结果。(7) 分享将检测的结果分享给他人。(8) 数据可视化将检测的结果以图像的方式展示在界面上。(9) 数据同步保持客户端与服务端数据的一致性。(10) 生成检测报告将检测结果合并。(11) 控制器控制检测的正常进行。(12) 数据库操作对数据库进行相应的操作比如创建表以及增删改查。2.4 非功能性需求为了能给用户更好的体验一些非功能能性需求也是必要的(1) 性能需求页面跳转时间3s,由于需要对数据库进行全表查询求得检测着的检测结果在所有人中所占的比例故随着数据库中表的增大搜索 返回结果的时间也会越来越长。(2) 安全性传输数据皆使用base64加密用户只有权修改数据库中属于自己的数据如用户密码等无权修改其他人的数据。(3) 可维护性每个功能都单独拆分成模块且使用日志遵从代码开发规范易于拓展和维护。(4) 易用性app中给予和许多提示性的文字用于帮助用户尽快适应。2.5 设计约束(1) 需要运行在 Android 4.4 ‘KitKat’ 或者更高版本的安卓设备上[11]。(2) 需要LTS release 2018.4 或者更高版本的 Unity。(3) 需要在Unity 上安装支持安卓构建的组件(Android Bulid Support(*))。(4) 需要在Unity 中的用户配置Player Setting下的XR Setting中设置支持VR即Virtual Reality Supporttrue。(5) 需要JDK1.8。(6) 需要Python3。2.6 本章小结本章阐述了系统开发所用的关键技术对系统进行了简单介绍。接着介绍了系统的功能性需求从性能、安全性、可维护性和易用性四个方面描述了系统的非功能性需求最后介绍了系统开发所需的约束条件。3系统设计本章主要讲述系统的总体设计从模块、流程、用例三个方面讲述了系统是如何进行运作的为系统的实现建立了坚实的基础同时规定了系统中所使用到的接口是系统的开发更为简洁并对使用到的数据库进行了详细设计降低了数据管理的难度和成本。3.1 总体设计3.1.1 模块设计该检测程序通过不断在设备屏幕的不同位置上显示视标受检测者则使用控制器对是否可见视标做出响应从而得出一系列检测结果并将结果转换成图像以展示给用户从功能上划分主要分为三大部分如图3-1用于展示界面的视图模块用于图像处理以数据处理以及与服务其之间通信的业务逻辑模块用于与客户端通信以及操作数据库进行增删改查的数据模块。图3-1系统模块每次展示结果之前视图层都会向业务逻辑层请求更新数据以确保数据结果是最新的。此时业务逻辑层会向服务器提出查询请求如果可以从服务端拿到数据则视图层会根据这个结果重新生成结果图如果没有拿到数据则视图层会展示无数据的提示。每当完成一次检测时如果是使用id密码进行登陆则业务逻辑层会向服务器提出插入请求服务端会首先判断用户存不存在如果存在则进行刷新操作如果不存在则进行插入操作如果是匿名检测则结果只会保存到程序退出之前。当进行登陆操作时业务逻辑层会向服务器发送查询请求进行验证此时服务器会对发送过来的用户id和密码进行匹配客户端根据服务器端的返回值来控制是否允许用户进行登陆。当进行注册时业务逻辑层会向服务器发送注册请求进行注册此时服务器端会查询数据库中有没有相同的id如果存在,则返回false提示用户已存在如果不存在则返回true跳转页面。3.1.2 流程设计流程如图3-2打开app后可以选择是否登陆无论是否登陆都会跳转到主界面登陆与否的区别只是检测结果的有效时长进入到主界面后可以查看结果也可进行视野范围检测检测完成后可再次进行检测或者查看结果查看结果的同时页能将结果分享给他人。图3-2 使用流程3.1.3 用例设计由于开发范围只设计客户端故只对用户进行设计用户可以进行视野检测在检测的过程中如果出现不适症状还可进行暂停待症状缓解后再行手动恢复可查看检测结果并将检测结果分享给他人可进行登陆登陆后可修改密码也可进行注册用例图如3-3所示。图3-3 用例图3.2 接口设计(1) onKeyDown用于处理控制器与检测程序之间的通信。(2) onClick用于处理各种点击事件。(3) onCreate用于初始化view。(4) ifExistAir用于检测控制器是否连接。(5) DrawGrayIMage用于控制生成灰度图。(6) DrawRatioImage用于生成概率偏差图。(7) HttpService用于向服务端发送各种请求并接收返回结果比如注册、校验、查询等。(8) onPress用于分享生成的报告。(9) onActivityCreate用于初始化view。(10) onResume: 用户刷新view。(11) Start用于初始化数据。(12) Update用于更新数据。(13) SightingPostLocationDeal:用于加载检测场景响应交互。(14) ThresholdCalculate用于控制检测程序进行结果的计算。(15) Service用于接收客户端的各种请求并加以响应比如注册校验查询等。(16) TableTools: 用于操作数据库中表比如增删改查。3.3 数据库设计本检测系统采用了SQLite数据库SQLite不依赖第三方软件无需安装他所有的数据库信息都存储在一个文件内SQLite无需配置复杂的连接驱动连接数据库只需要sqlite3.connect(“数据库地址”)就像是打开了一个文件。SQLite 支持常规sql语句只需要sqlite3.connect(“数据库地址”).execute(“sql语句”)就能实现对表的增删改查。为了保持数据的持久性使用户登陆之后就能查询到自己之前最近一次的检测记录故使用了early_datelate_date两张表来分别保存用户选择不同检测程序后的检测数据。为了保证数据的唯一性故又采用id与eye作为联合主键的方式来保证每个人的每只眼睛都是唯一存在的early_date中的字段包括id、eye、sightingLoseRatio固视丢失率、falseNegativeRatio(假阴性率)、falsePositiveRatio假阳性率location1-72(72个位点的视野阈值情况)late_date中的只是将描述视野阈值情况的位点增加到了100个其余字段与early_date相同。为了数据的准确性确保每个人获得的测试数据都是自己的故使用了一个user表来进行id与passWord的校验id作为唯一主键user中的字段包括id,passWord。每个id在user表中对应一条数据在两张data表中分别对应两条数据。3.4 本章小结本章阐述了从功能上阐述了系统的主要构成部分以及个模块之间是如何进行通信的实现了模块与模块之间数据流的打通并对系统中主要用到的接口和采用数据库的目的进行了阐述。4系统实现与测试本章通过讲述模块工作流程的方式对系统各个模块具体实现进行详细阐述并配以图标加以说明之后讲述了开发中所遇到的较为突出的问题以及解决方案增强了系统实现的可信度。4.1 视图模块4.1.1 功能描述该模块主要用于视图展示将业务逻辑层处理好的结果显示在手机屏幕上在用户使用的过程中给予相关提示性文字描述辅助用户进行测试以及展示检测过程中所用到的相关组件。4.1.2 关键流程打开检测程序首先会跳转到登陆界面。再登陆界面中首先会出跳出弹窗如图4-1弹窗的实现使用了Android提供的AlertDialog这里并没有直接使用Android自带的样式其实setMessage同样可以简单设置文字描述但是如果需要更复杂的样式比如设置字体的颜色setMessage就解决不了而且AlertDialog也没有提供其他设置字体的方法这时我们就需要是自定义一个view这个view就是在XML文件中设置的样式对于XML文件而言我们可以根据需求设置各种样式然后使用setView去加载这个view这样就可以对弹窗进行定制开发就能显示出我们想要的效果。图4-1 提示弹窗点击屏幕任意位置后会开始进行新手引导在登陆界面的新手引导中包含了对此页面上主要组件的解释如图4-2引导层的实现使用了开源框架GuideView与弹窗的用法相似同样是自定义一个view不同的是这里可以定义多个不同的view然后指定他们显示的顺序这样就能在你点击遮罩层后跳出下一个遮罩层达到新手指引的目的。引导完成后显示登陆页面如图4-3。当在编辑框中填写好用户名和密码点击登陆按钮时会对编辑框中输入的id进行校验如果校验不通过则会显示相应提示如图4-4id校验的实现使用了正则表达式进行匹配只有当输入的id属于身份证号、电话号、邮箱中的一种时才能匹配通过。图4-4 警告弹窗通过校验后会跳转到主界面。同样在进行完新手引导后显示主页面当选中主界面底部的导航栏时会根据选中的tab进入到不同的Fragment中当点击导航栏中的主页时会跳转到选择检测程序界面屏幕中会显示检测程序选择页面如图4-5。图4-5 选择程序界面此时可在本页面上选择相应的检测程序与检测眼睛点击开始检测按钮后会提示佩戴VR眼镜开始进行检测如图4-6。、图4-6 提示弹窗为了使用户能够有足够的时间佩戴好设备这里使线程休眠了10秒10秒钟后会跳转检测界面并开启VR模式,此时屏幕上会显示检测界面。当用户确认开始检测后会加载组件开始检测。在此期间屏幕上会随机出现不同亮度的视标检测着只需在视标出现时完成对其响应便可得到受检者的视野状况检测完成后会重新返回到主界面如图4-7。图4-7 检测界面当点击导航栏中的结果时会跳转到结果界面此时屏幕上会显示检测结果如图4-8每次重新进入到结果界面中时都会调用onResume用于保持结果最新Fragment的切换使用了FragmentTransaction当需要从一个Fragment切换到另一个Fragment时调用FragmentTransaction中的hide将之隐藏同时调用show将要跳转到的Fragment显示如果需要显示的Fragment不存在则调用add进行显示。当点击结果界面中的分享按钮时会根据选择的app如图4-9跳转到其当前的Activity中并将结果报告发送出去分享的实现使用了Android中Intent只需要隐式指定其Action为ACTION_SEND因为我们并不清楚他要发送到哪个Activity然后设置需要发送的内容和类型之后当点击分享时系统就会打开分享选择器。4.2 业务逻辑模块4.2.1 功能描述该模块主要用与响应视图模块的请求以及向数据模块发送并接收数据模块返回的数据同时还能控制检测的进行主要包括视标位置检测进度检测结果的计算程序的速度以及图形的绘制。4.2.2 关键流程打开检测程序,当填写完用户id和密码后点击登陆按钮时如果id合规则会将用户id和密码包装成json数据然后会向服务器发送一条校验请求同样从服务器返回过来的内容也是经过加密的json数据经过解密后如果得到的值是true如图4-10则校验通过跳转到主界面如果得到的值是false如图4-11则校验不通过直接return如果id不合规则直接return。图4-10 校验通过图4-11 校验不通过也可先进行注册此时会将用户id和密码包装成json数据向服务器发送一条注册请求如果服务器返回success如图4-12,则注册成功跳转到主界面如果服务器返回fail如图4-13则注册失败直接return。图4-12 注册成功图4-13 注册失败当每次选择结果界面后会首先携带用户id以及选择的eyeprogram向服务器发送一条查询请求如果获取到的数据不为空如图4-14则更新全局变量中的值并加载结果图如果获取到的数据为空如图4-15则提示无数据,更新的实现依靠这一个全局变量GlobalVal所有共享的资源都被存储在这个GlobalVal对象中每当有值需要进行更新时都会调用这个全局变量中对应的set方法去更新GlobalVal对象中的值。图4-14 获取到数据图4-15 获取不到数据当点击分享按钮时首先会调用合并方法将所有的结果重新写入一张图片中如果写入时发现对应的结果不存在则写入数据缺失之后在以Intent的方式携带合并后的结果图进入到其他app的Activity合并的实现是先通过BitmapFactory中的decodeFile将图片读取为BitmapBitmap中包含了图像的各种信息如长宽等再这里做了如下规定如果获取不到任意一张结果图则新图片的大小被赋予一个默认值如果能够获取到任意一张结果图那么新图片的大小4倍结果图的大小为了保证规则成立在结果图生成时就限制了每张结果图的大小是一致的。当进入到检测界面开始检测之前会先调用传感器来监听检测着是否确认开始检测那么如何根据传感器去获取设备的方向呢首先我们需要做出一个参考系来如果手机水平放置在平面上那么他的加速度方向就是竖直向下的而加速度传感器可以获取到这个向量不考虑环境的影响磁场的方向就是水平朝南北的而地磁传感器可以获取到这个向量这样我们就有了一个二维向量再对这两个向量做差乘就能得到一个水平东西方向的向量至此就能获得一个三维向量作为参考来计算设备的方向。如果确认检测开始则向Unity发送消息开始检测每次操作控制器或者每隔两秒的时间都会进行一次检测结果计算都会调用都一次结果计算但这有极大的概率两个方式会产生冲突解决的办法就是加上锁当调用一次完成后所才会被释放下一次计算才会执行。为了保证不会发生冲突只有当没有计算正在进行时才会执行结果计算否则调用的检测结果计算都将视为无效流程如图4-16检测结束后将检测结果返回给Android重新跳转回主界面传感器的实现调用了Android硬件传感器中的加速度传感器Sensor.TYPE_ACCELEROMETER与地磁传感器Sensor.TYPE_MAGNETIC_FIELD实现获取Android设备x,y,z轴的偏转角度[12]。图4-16 检测流程图青光眼前后期检测算法的逻辑大体上相同视标的位置由一个二维数组记录同时以二维数组的大小建立两个随机数使检测期间视标会在规定的范围内随机出现位置的状态也是由一个一维数组记录着那么为了使记录状态的一维数组与记录位置的二维数组能够对应他们之前应存在这样一个关系baxy其中b代表一维数组中的位置a代表二维数组中的一维长度x,y代表二维数组中的位置当同一个位置被检测过两次以上后则此位置视标不会再次出现视野阈值同样由一维数组记录与位置数组的对应关系同上将阈值数组取出来的值作为分母从而达到视标的亮度会随着视野阈值的降低而增加的目的。从视标在某一位置出现开始到在另一位置上出现记为一次检测在检测的过程中视标的显示时间只有短短的0.2秒如果仅在这0.2秒内同时完成发现响应这两个动作是极为不合理的所以在视标消失的空隙时间里应有一部分时间被视为是有效的响应时间。在这次检测过程中如果之前进行了对视标的响应而本次没有响应则假阴性次数加一如果在视标消失的过程中进行了对视标的响应则假阳性次数加一如果对非有效位置上显示的视标进行响应则固视丢失次数加一如果对有效位置的视标进行了响应且视标是处于显示状态则此位置上的检测次数加一如果没有对有效位置的视标进行响应且视标处于显示状态则不仅此位置上的视野阈值会降低与其相邻的周围八个位置如果存在的视野阈值也会降低流程如图4-17。图4-17 计算流程图为了加快检测进度在视标所处位置的视野阈值下降时与其相邻的位置视野阈值也跟着下降但如何确定有多少个位置与之相邻成为一个问题例如中心点相邻的位置有八个而边缘处相邻的位置小于八个如果要分情况讨论那么结果将是巨大的为了解决这个问题使用了八次try-catch操作当发生越界时捕获这个异常不进行任何操作继续向下执行。不同的是视标的大小检测位置以及检测的次数前期的测试范围大致是后期的3倍如图4-184-19。图像处理使用了canvas进行结果的绘制灰度图的绘制范围是根据对应检测程序中视野的有效范围来进行绘制的有效范围也是由一个一维数组进行记录的如果进行绘制的位置在有效范围内则使用drawRect绘制方块如果不再则跳过绘制移动canvas的位置绘制下一个方块依据检测结果中阈值的大小为每个方块设置不同的颜色每当一个方块绘制完成后由于canvas的特性之前绘制的结果不会消失最终绘制成灰度图如图4-204-21。概率偏差图是根据自己的检测结果在数据库中的占比计算后得到的结果绘制的方法大致与灰度图相同绘制流程如图4-22。图 4-22绘制流程图不过概率偏差图使用的点的密集程度来表示结果值的大小关于点状方块的绘制其实是使用了drawPointsdrawPoints中需要传入一个一维数组数组中每两个值代表一个位置这时我们只需确定需要绘制点的位置然后使用一个双层循环创建一个一维数组每一次内循环即代表写入了一列点只需要控制循环中的步长便可控制绘制点的密集程度然后在重复灰度图的绘制操作最终绘制成概率偏差图如图4-234-24。4.3 数据模块4.3.1 功能描述该模块主要用于处理客户端发送过来的请求根据不同的请求生成并执行对应的sql根据操作返回结果和请求类型判断是否进行下一步处理处理完成后会将结果包装成json并返回。4.3.2 关键流程当接收到客户端发送来的插入请求时首先调用TableTools中的插入方法向对应data表中插入数据如果插入失败则进行更新操作调用TableTools中的更新方法插入成功则返回True否则返回false。当接收到客户端发送来的校验请求时首先调用TableTools中的校验方法向user表中查询请求过来的值与表中的值是否一致如果id不存在则返回false如果id存在passWord不一致则返回false如果一致则返回true。当接受到客户端发送来的注册请求时首先调用TableTools中的注册方法向user表中插入数据插入失败则会返回fail插入成功则返会success。当接收到客户端发送过来的查询请求时首先调用TableTools中的查询方法向对应data表中查询数据然后会以查询的结果中的视野阈值为依据调用TableTools中的计算比例方法再次向对应data表中查询每个值占总体的比例同时根据相似度算法计算个体与总体的相似度之后将结果返回。4.4 主要问题及解决方法由于Unity在VR模式下会主动开器陀螺仪故眼前的图形不会是固定不动的这将对检测产生很大的影响为了解决这个问题将Unity所有的组件都绑定到了Camera上这样不管检测者怎样移动图像始终是在眼前但是随着测试者移动组件的坐标确是在不断发生变化的假如还是以固定的坐标作为视标的出现的位置那么当测试者移动后将看不到视标故为了解决这个问题将视标的位置改为相对于背景的位置每次显示前都回去刷新背景的位置。4.5 测试与验证4.5.1 测试原则(1) 该测试的目的是为了找出程序中存在的缺陷。(2) 不可能测试到每一个角落。(3) 尽早的开始测试有助于减少开发成本。(4) 不要只专注于某一点的测试。(5) 测试用例要经常性的进行更新。(6) 不能对不同的模块使用相同的测试方法。(7) 必须严格按照测试流程。4.5.2 测试目的系统测试的目的如下(1) 为了以最低的成本找出程序中存在的漏洞和缺陷衡量系统的兼容性。(2) 测试系统运行时是否会出现系统崩溃的情况衡量系统的稳定性。(3) 测试系统进行青光眼检测的响应时间和数据反馈时间衡量系统的性能。(4) 测试系统进行一次青光眼检测的过程衡量青光眼检测流程设计的合理性完善程序提升用户体验。4.5.3 功能测试(1) 测试对象基于VR技术的青光眼视野检测系统。(2) 测试内容程序是否正常运行结果是否准确。(3) 测试方法单元测试 集成测试。(4) 测试结果程序运行正常结果准确。(5) 兼容性测试在华为上运行状况良好。(6) 测试结论程序正常运行结果准确兼容性良好。4.6 本章小结本章节主要包含详细设计和系统测试两大块。详细设计从视图模块、业务逻辑模块、数据模块、开发过程中所遇到的问题及解决方法和系统测试四个方面进行详细阐述。视图模块主要用来进行视图渲染展示了app的页面设计。业务逻辑模块讲述了检测系统中各模块之间是如何进行运作的并对开发中主要用到的算法是如何实现的进行了详细介绍。数据模块主要是处理客户端请求对数据库进行操作。至此完成了系统的详细设计工作。之后介绍了开发过程中所遇到的较为突出的几个问题以及相对应的解决方案。系统测试主要从测试原则、测试目的、测试环境和测试功能四个方面进行介绍。最后对系统的稳定性、兼容性、流程合理性和时间性能进行测试给出测试结论。5总结基于VR的青光眼检测系统以实现用户无需去医院便能进行青光眼的视野检查为核心以及时发现、及早治疗、挽救患者视力为目标解决了目前青光眼检测对医疗设备对依赖问题提高了青光眼的早期发现率为保护患者视力做出了突出贡献同时也有助于患者进行病情追踪为医生提出合理有效的治疗方案提供了保障。便携式青光眼检测系统将会成为未来医学领域青光眼检测的发展趋势VR技术的发展加快了这一趋势的实现和推进因此基于VR的青光眼检测系统的开发是应运而生的。本系统的优势和不足之处如下系统优势(1) 对目前最新的视野检测策略SITA做了移动端的实现。(2) SITA提高检查速度的原因是参考临近点的反应选择刺激光标的强度对估计的阈值不断更新[13-15]基于这一点设计了一个二维数组每当数组中的某个位置变化时其周围相邻的位置也跟着同样变化。(3) 使用canvas实现数据的可视化。(4) 使用了base64对客户端与服务器端的传输结果进行加密增加了网络传输中的安全性(5) 将结果存放于服务器端SQLite数据库中使之每当更换设备进行登录时也能获取到最近一次测试的结果。(6) 使用了余弦相似度算法对数据进行分析参照数据选用人群的平均值将自身数据与参照数据当作向量求其余弦值越接近1则结果越与人群相似反之则不相似。(7) 提供分享功能可将结果分享给他人参考文献[1] 袁援生. Humphrey视野检测分析原则[M]. 人民卫生出版社. 2005.[2] 刘雨辰,秦海旸.预防失明:用手机早期发现青光眼[J].中国高新科技2019(24):108-111.[3] 范秀敏.深度沉浸:VR技术的发展[J].互联网经济,2016(11):32-35.[4] 任远,吴梦蝶,刘光丽,宋国强,王常青.移动医疗研究现状和趋势的文献计量学分析[J].医学信息,2021,34(03):12-1519.[5] 余飞,赵晶,陈万里,苏涛永,范理宏.上海三级甲等医院移动医疗应用现状调查[J].中国医院管理,2017,37(02):69-71.[6] 钟华,钱朝旭.Humphrey视野计最新程序和策略的临床解读[J].中华眼科杂志,2020(01):71-72-73-74-75-76.[7] 谭永琳,黄润楷,郭俏丽,林绮珊,林岳新.移动医疗app的应用效果及完善研究[J].继续医学教育,2019,33(06):64-66.[8] 龚滢欣,朱佩文,邵毅.移动互联网医疗在眼科的应用现状及分析[J].转化医学电子杂志,2018,5(05):39-43.[9] 杨金东.移动医疗app现状与展望[J].医学信息学杂志,2016,37(01):59-6171.[10] 刘佩玉,刘倩,张小曼.可用性评估方法在移动医疗app中的应用现状[J].医学信息学杂志,2020,41(11):37-40.[11] 辛杰. 基于Unity3D的XR装配式开发关键技术研究[D].华中师范大学,2019.[12] 李津,徐红波.基于Android操作系统的指南针应用的研究与实现[J].中国新通信,2020,22(21):96-98.[13] 王兰,刘磊,林丁.视野计的原理及发展[J].国外医学.眼科学分册,1999(05):309-314.[14] Pham Alex T,Ramulu Pradeep Y,Boland Michael V,Yohannan Jithin. The Effect of Transitioning from SITA Standard to SITA Faster on Visual Field Performance.[J]. Ophthalmology,2021.[15] Anderson Scott,Battiston Adrian,Bong Donna,Carrell Nathan,Damji Karim F. Using the 24-2 Sita Fast Humphrey to Detect Visual Field Defects Noted in Patients with Neurological Lesions Impacting the Visual Field NormallyAssessed by Octopus Visual Field Testing[J]. Journal of Clinical and Experimental Ophthalmology,2021,12(1).致谢省略5、资源下载本项目源码及完整论文如下有需要的朋友可以点击进行下载。如果链接失效可点击下方卡片扫码自助下载。序号毕业设计全套资源点击下载本项目源码基于AndroidVRSITA的青光眼视野检测系统设计与实现源码文档_Android_青光眼视野检测系统.zip6、更多android毕业设计项目精选android毕业设计10套——源码论文完整资源