欢迎来到天天文库
浏览记录
ID:21544616
大小:26.00 KB
页数:6页
时间:2018-10-22
《基于机器视觉的智能导盲系统的开发与设计》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、基于机器视觉的智能导盲系统的开发与设计 摘要系统利用机器视觉、数字图像处理与识别、深度学习、计算机网络等前沿技术,实现了对使用者前方障碍物的类别、方位、距离的综合探测,同时实现卫星定位、语音播报、3G网络通信和短信联系家人等功能。系统采用本地-服务器递进识别方案,在前端与云服务器端分别利用模板匹配与深度学习完成对常见障碍物以及非常见障碍物的识别。 【关键词】深度学习机器视觉Opencv双目摄像头本地-服务器递进识别 1引言 目前市场上的导盲产品,大多数还只是停留在研制或者试戴完善阶段,且功能单一、智能水平较低。如智能导盲眼镜,在国际和国内都有团队和个人进行过研究,但都始
2、终停留在性能检测与可行性论证阶段,至今并未对其进行产品的批量化生产,尤其是在国内,对智能导盲设备的研发更是刚刚处于起步阶段,距大规模产品化、商业化还有很长的一段距离。鉴于此,目前迫切需要一种专门为视觉障碍者研制开发的便捷、高效的智能导盲设备。 2系统体系结构 系统通过双目摄像头采集使用者前方的环境图像,获取的图像采用本地-服务器递进方案进行识别,即先由主控单元对常见物体通过图像模板匹配和视差图进行识别与测距,如无法辨别,再利用3G模块的网络通信功能发送至云服务器,云服务器利用深度学习与双目测距等算法,从上传的图像中获取障碍物距离与类别信息,并将信息以文本格式发送回智能视觉终
3、端,再由语音模块将其转化成语音信息,通过语音方式告知盲人。 3系统设计与实现 3.1视频采集设备驱动程序设计 视频采集设备可视为一个平台总线设备对象,该对象将设备的资源封装在设备对象中。平台设备对象需要使用platform_device_register()函数向系统注册此设备。结合camera控制器设备的特点,注册方法为platform_device_register(device_camera)。该注册函数会调用platform_device_add()函数,将平台设备挂到平台总线上,并向内核申请平台设备所需的资源,接着将平台设备对象转化为内核设备对象,调用devic
4、e_add()函数进行处理,将内核设备对象加入到内核设备树中,最后调用device_attach函数完成设备对象与设备驱动对象的绑定工作。 3.2双目测距原理 双目测距根据相似三角形原理实现,其方法如下: (1)双目校正和标定,获得摄像头的参数矩阵。 (2)立体匹配,获得视差图。 (3)采用BM算法生成视差图,如果左右匹配点比较稠密,匹配点多,得到的图像与原图相似度比较大,如果匹配点比较稀疏,得到的点与原图相似度比较小。 (4)得出测距。 (5)把生成的视差图输入到reprojectImageTo3D()函数,生成3D点云,3D点云中保存有2D图像的三维坐标,再读
5、出每帧图像的三维坐标中的z轴的值,就得出了距离数据。 3.3深度学习神经网络 深度学习训练过程如下: 3.3.1自下而上非监督学习 采用无标定数据分层训练各层参数,首先用无标定数据训练第一层,训练时先学习第一层的参数,由于模型容量的限制以及稀疏性约束,使得得到的模型能够学习到数据本身的结构,从而得到比输入更具有表示能力的特征;在学习得到第n-1层后,将n-1层的输出作为第n层的输入,训练第n层,由此分别得到各层的参数; 3.3.2自顶向下的监督学习 通过带标签的数据去训练,误差自顶向下传输,对网络进行微调。基于第一步得到的各层参数进一步微调整个多层模型的参数,这一步
6、是一个有监督训练过程;第一步类似神经网络的随机初始化初值过程,由于DL的第一步不是随机初始化,而是通过学习输入数据的结构得到的,因而这个初值更接近全局最优,从而能够取得更好的效果。 3.4云服务器的实现 云服务器是由多台并行计算的服务器所构成服务器集群,具有较强的运算能力。系统的图像分析正是通过在云服务器上搭建软件平台,利用深度学习神经网络,建立大量的图像学习数据库,从而完成对传输进来的图片进行识别处理。 WebSocket云服务器实现的主要代码如下: IPEndPointlocalEP=newIPEndPoint(IPAddress.Any,port); Socke
7、tlistener=newSocket(localEP.Address. AddressFamily,SocketType.Stream,ProtocolType.Tcp); try{ listener.Bind(localEP); listener.Listen(10); Socketsc=listener.Accept();//接受一个连接 intlength=sc.Receive(buffer);//接受客户端握手信息 sc.Send(PackHandShakeData(
此文档下载收益归作者所有