大数跨境
0
0

【精华项目】基于行空板的智能视力检测助手

【精华项目】基于行空板的智能视力检测助手 蘑菇云创造
2022-11-03
3
导读:利用行空板和物联网技术,来制作简易的视力检测助手👀

点击蘑菇云创造 关注我们





基于行空板的

智能视力检测助手


壹 -

项目背景


随着中小学生年级的不断提高,近视率呈上升趋势,能否准确测量学生(孩子)视力,做到随时追踪、时刻提醒,是一件值得我们重视的事情。



贰 -

项目介绍


(一)主要功能


本项目是基于行空板、物联网和人工智能的简易视力检测助手,既可以用于个人家庭检测,又可以增加终端设备用于学校班级检测,并收集检测数据发送到物联网服务器供分析使用,如追踪学生视力情况,计算年段近视率,近视率预警等。


(二)  主要任务


项目所需完成的主要任务有:按照视力表随机出示不同朝向的字母E,被测试人员通过语音反馈字母方向,程序通过语音识别判断与出示的字母是否一致,当达到一定的正确率,则继续缩小字母的尺寸,直到看不清楚为止或达到最高视力值。


由于行空板的尺寸大小有限,可通过两种方式实现正常的测量,一种是外接更大的屏幕,另一种是根据字母大小,同测量人员与屏幕之间的距离进行一个换算,这样就可以不采用标准的5米测量距离。本项目采用后面一种方法,直接使用行空板屏幕出示字母进行测量


(三)视频介绍


叁 -

材料清单


行空板 × 1,百度AI账号


肆 -

项目实施


(一) 准备百度AI账号用于语音识别


本项目将使用到人工智能中的语音识别技术,这里采用百度智能云中的语音能力引擎,请注意新账号有一定的赠送量,否则需要充值使用。


步骤1:浏览器打开网址 https://ai.baidu.com/,注册一个百度账号,在右上角单击“控制台”链接登录。


步骤2:单击左上角导航按钮,在左侧的导航窗格中单击“语音能力引擎”按钮。



步骤3:单击页面中间的“创建应用”下面的“去创建”链接,打开创建页面。



在创建页面输入应用名称,选择人工智能相关的功能,此处因为创建的是语音能力引擎的应用,所以语音技术内所有的项目都已经默认勾选。



步骤4:应用创建成功后,在应用列表中会显示已经创建的一些应用,可以复制“API Key”和“Secret Key”到记事本备用。


注意:复制Secret Key时一定要显示后再复制。



(二)  软硬件准备


本项目只要使用一根USB连接线与电脑连接即可。然后在电脑浏览器中输入http://10.1.2.3进入行空板的网页管理界面,打开SIoT服务。因为行空板提供了该项物联网服务,因此我们无须使用其他物联网服务器。


注意:考虑到本项目只是一个小小的演示,因此这里并没有使用到很多硬件。感兴趣的可在此项目上进行拓展,增加其它硬件,比如大屏幕,比如usb音箱,行空板独立供电等。



在下面的网络设置中,使行空板通过Wifi与网络连接,如果周围没有无线网络,也可以使用手机热点。



注意:如需其他资料,可以进入https://wiki.unihiker.com/随时查阅。


(三) 程序编写


根据项目构思,确定本项目的程序主要包括三个部分:字母生成部分、检测判断部分和语音识别与物联网发布部分,如思维导图所示。



1. 字母生成


一开始我打算采用图片的方式来直接呈现字母E,通过图片大小缩放来实现不同视力值的测量。结果发现这样做并不理想,首先考虑不同视力值用不同大小的图片,到底是准备一张还是多张图片?其次,如果准备一张,缩放后会失真,同时也比较难确定字母的大小。思路至此打断……


经过多日思考、查阅资料,突然想到之前学习计算机基础知识时,有接触过点阵字符的原理,在一个点阵中,通过某些点填充黑色,某些点填充白色,最终呈现字符。因此,我想是否采用点阵的方式来呈现字母E?我在Excel中进行了尝试,发现是可行的。只要将5X5点阵的一些格子填充黑色,就可以实现不同朝向E的呈现。至于大小,通过控制格子的大小来确定。而每个格子就是一个正方形。



因此,可以创建一个包含4个元素的元组,每个元素是一个由0和1组成的长度为25的字符串,程序中根据字符值来创建四个方向的E。


#朝右,下,左,上xz=("1111110000111111000011111"    ,"1111110101101011010110101"  ,"1111100001111110000111111"  ,"1010110101101011010111111")


另外,每个E的大小是根据上面点阵大小决定的,根据网上资料的查询,考虑到行空板屏幕相对于普通的视力表较小,因此,需要经过距离和大小的换算,得出视力值与大小的对应值(测试距离为1.5米)。



向上滑动阅览

视力值

5分记录

视力值

2分记录

屏幕上

正方形边长

4.0

0.1

47.520

4.3

0.2

23.760

4.5

0.3

15.840

4.6

0.4

11.880

4.7

0.5

9.500

4.8

0.6

7.920

4.9

0.8

5.940

5.0

1.0

4.752

4.5

1.2

3.960

5.2

1.5

3.170

4.5

2.0

2.380



所以我们继续创建2个元组,将上面两项值存入元组中备用。


注意:元组sl1是2分记录值,sl2是五分记录值,选择其中一种即可。


sl1=(0.1,0.2,0.3,0.4,0.5,0.6,0.8,1.0,1.2,1.5,2.0)sl2=(4,4.3,4.5,4.6,4.7,4.8,4.9,5.0,5.1,5.2,5.3)width1=(47.52,23.76,15.84,11.88,9.504,7.92,5.94,4.752,3.96,3.168,2.376)


另外,为了使产生的E字能始终显示在行空板屏幕的正中间,经过计算,得到正方形边长与屏幕尺寸之间的关系,从而确定最左上角正方形起始位置的坐标(x1,y1)是:


 #width是正方形边长x1=120-2.5*width  y1=160-2.5*width


通过以上分析和研究,我们可以编写一个函数,根据方向(方向在主程序中将随机生成)和边长,来呈现字母E,如下图所示。



2. 检测和判断部分


根据平时我们上医院或学校里检测视力的流程,通常医生会从上往下(字符从大到小)指向测试字符,然后同一排连续正确,则往下一排继续测试,直到测试到最下一排(最高视力值)或中间某一排看不清为止(上一排即为视力值)。


因此在我们的程序中,规定同一排在5个字符内有3个指向正确,则缩小字符的大小,最后确定视力值。


在此我们写一个函数,模拟手工视力测试的方式,并结合语音识别进行判断。



反馈正确则显示一个对勾,错误则显示错叉,也是采用点阵显示方法。编写一个函数实现。



3. 语音识别和物联网发布部分


判断部分相对简单,但需要用到人工智能中的语音识别技术,最终将某个学生的测试视力值上传到物联网平台供存储和分析。


此处我们撰写两个函数,一个是实现语音识别并返回识别后的文字,另一个是发送消息到物联网平台。


具体代码如下图所示。


语音识别函数


上传消息到物联网平台函数


此处,在语音识别函数中使用了百度AI中的短语音识别python库


具体可以参考文档:https://ai.baidu.com/aidoc/SPEECH/1k4o0bmc7



4. 调用模块和主函数


本程序需要调用一些第三方模块,如unihiker模块,pinpong模块,百度语音识别模块等,在程序的开头调用。而主函数放在最后,根据用户按下行空板上的A键开始测试,同时会出示一些提示信息,并在每一个完成测试后清屏供下一个同学测试。


模块调用和初始化


主函数


伍 -

项目拓展


通过本项目,可以完成简单的视力测试,在此基础上,可以进行一些拓展,如:


(一)多块行空板下的学校批量视力自测


比如每班一个终端,依次测试学生视力,测试视力数据上传到物联网服务器。



(二)多种交互判断方式


本程序只是使用了语音识别进行判断,其实也可以通过手势识别,结合二哈进行图像识别,当然,还可以通过更简单的按钮。


(三)数据分类存储


保护学生视力任重道远,对于每一个学生的检测数据,如果能以个人身份信息作为区分,保存在数据库中则更佳。可以探索在测试前确定身份,测试结束将数据保存在数据库中。


本文来源:DF创客社区

作者:      仔爸




  更多案例查看  




点击 “阅读原文” 了解更多!

【声明】内容源于网络
0
0
蘑菇云创造
蘑菇云是DFRobot旗下专注于AI人工智能、创客、STEAM、劳动教育的科技创新教育品牌;以为中国培养下一代科技创新人才为使命,为学校提供k12全龄段科技创新教育解决方案。
内容 969
粉丝 0
蘑菇云创造 蘑菇云是DFRobot旗下专注于AI人工智能、创客、STEAM、劳动教育的科技创新教育品牌;以为中国培养下一代科技创新人才为使命,为学校提供k12全龄段科技创新教育解决方案。
总阅读1.7k
粉丝0
内容969