一种基于Kinect的导盲拐杖及其实现方法
【专利摘要】本发明公开了一种基于Kinect的导盲拐杖及其实现方法,该基于Kinect的导盲拐杖实现方法包括:通过Kinect拍摄景深图像,将景深图片传输到微处理器后,微处理器提取景深图片并栅格化;将图片上的像素换算为距离,再由程序判定图片上的障碍物,根据设定条件进行语音提示;该基于Kinect的导盲拐杖包括:扶手、Kinect设备、拐杖主体、固定片、喇叭、支脚、微处理器。本发明采用工业超微型NANO迷你主机当做微处理器,通过景深图像提取来判定障碍物距离;若检测到有障碍物,通过喇叭来进行语音输出,实现了监测前方障碍物和地面坑洞的功能。本发明能够高效率识别障碍物并将精确计算距离并给出提示和建议,具有经济实惠,方便携带,简单高效,全天候应用的优点。
【专利说明】-种基于Ki nect的导盲拐杖及其实现方法
【技术领域】
[0001] 本发明属于盲人拐杖【技术领域】,尤其涉及一种基于Kinect的导盲拐杖及其实现 方法。
【背景技术】
[0002] 随着人口的日益增长,中国的盲人群体已经达到了一个庞大的数量。盲人的日常 生活与工作都深受出行问题的干扰。一个好的导盲工具,可以使失明的人做到独立并且安 全的外出,提升其生活的品质。本文在研究分析国内外导盲系统及其相关技术的基础上,基 于Kinect设计一款导盲拐杖,用于指引盲人的出行。
[0003] 根据世界卫生组织(WHO)和《2006年中国第二次残疾人调查资料》统计数据显示, 中国约有1233万盲人,是全世界盲人最多的国家,占整个世界盲人数的百分之20,并且以 每年45万的速度增加。在平常的生活中,百分之八十以上的信息是通过视觉获得的,盲人 则一直生活在黑暗的世界中,视力的缺失导致生活、学习、工作上莫大的困难作为社会上一 类特殊群体,需要给予更多关怀和照顾,如何让他们能够更安全地独立行走,是盲人生活中 最大问题之一。随着经济发展,科技进步和社会文明程度的不断提高,这一特殊群体的出行 问题越来越受到世界各国的关注和重视,为了提高社会对他们的关怀程度和救助水平,研 制开发更具人性化更适合于盲人路径诱导的辅助工具具有重要的实用价值和社会现实意 义。
[0004] 本项目的研究目标是设计一款基于Kinect的导盲拐杖,希望借助于微端处理器 的高运算能力及扩充能力,直接链接Kinect装置取代原本计算机的角色,让系统的便携性 与功能性取得一个平衡,能够正确而方便地为盲人判断前方路况。
[0005] 眼睛为灵魂之窗,对于一般人来说,视觉是不可或缺的感官,但凡生活中要做任何 事,都必须借助于视觉来感知物品的形状、颜色、位置等等,但对于视力障碍的朋友来说,这 些基本的能力都变得遥不可及,所以为了不依靠他人可以独自生活,盲人必须借助其他的 辅助工具来代替视觉感官。
[0006] 盲人在行走中要借助第三方的帮助,其中包括盲杖、导盲犬、盲道、导盲设等。普通 的盲杖只能探测到距离身体0. 5米左右的的障碍物,其缺点是不能发现较远一点的障碍物 以及空中突出的障碍物,盲人很容易因此碰到障碍物,最终搞的头破血流。导盲犬和盲人沟 通更加主动,尤其是对熟悉的地方有一个自己主动引导的判断,但导盲大训练严格且成本 极高,现在只有2. 5万只导盲犬在为全世界60多个国家和地区残障人士服务,就是在这仅 有的2. 5万只导盲犬中,分布也是极不平衡,其中美国就占了一万只,而中国占得数量仅为 个位数。我国有关方面已认识到导盲犬的重要性,大连导盲犬培训基地的成立便是明证。 但导盲犬一方面成本高,另一方面数量少,满足不了盲人的需求;并且在现有的城市交通 法规中,不允许带宠物上路或乘坐公交,都限制了导盲犬的功能最大化;而犬类天生就是红 绿色盲,需要依靠耳朵判断车流量的大小,来判断穿过马路的时机,在带领盲人过马路时就 有一定的危险性。目前许多国家为盲人配备了盲道和语音提示装置等导盲设施,但可以提 供的信息极为有限。并且现在国内的盲道设施建设和标准盲道有很大出入,部分地方做的 是面子工程,盲道被用来做一种装饰,还有部分在盲道上面就存在障碍物或者下水井盖等, 而在和盲人的交谈中也得知,他们一方面不知道哪里有盲道,另一方面是不知道怎样使用 盲道,可以说现在国内的盲道利用率是非常的低。而将这些不合格的盲道全部重建,耗费巨 大,不现实。所以,怎样更好的利用已建设的导盲装置很有必要。针对盲人出行所面临的困 难,世界各地都在努力研究各种各样的导盲系统,这其中已经开发成功的无线电导盲系统、 导盲电子眼镜、卫星导盲、超声波导盲、红绿灯识别系统等等各式各样的导盲系统和装置。
[0007] 最普及的盲人辅助工具为白手杖("白手杖"标准长度为直立手杖由地面起算至 使用者的心脏,再加一个拳头的高度。但因经费有限无法按个人定制,因此大多使用标准规 格的"白手杖"。材质为铝合金或玻璃纤维,直径约2公分,分为便携式或折叠式,除手握部 分为黑色橡胶、尾端红色外,其均为白色。)因为其成本最低,盲人只要再受过基本的定向行 走训练就可以独自行动。但白手杖仍有一些缺点,它只能帮助使用者感知一至两步范围内 的路面情况,无法得知广告招牌、树枝等腾空的障碍物,造成盲人额外的风险。
[0008] 为了提高盲人的生活质量,增加其行走能力,世界各国一直在进行着导盲系统的 研制。有许多研究已经有了成功的案例,比如:超声波导盲系统、无线电导盲系统、卫星导 盲、盲人电子眼镜、红外线导向灯等等。其中无线电、卫星导盲系统和红外线导向灯系统,要 求改善周围的环境设施,患者借助于外来信息确定自身的方位,虽然反映的信息较多,但耗 资庞大,信息量固定,发展更新迟缓,而且也很容易受到外来信息的干扰或者遭到人为的破 坏;电子眼镜用光导和摄像原理将景物和周围物体成像转换成相应的听觉信号,虽然结构 简单,信息质量固定,但是系统复杂、成本昂贵。
[0009] 盲人辅助工具相关的研究,主要是针对导航与监测障碍物并通过声音或振动回馈 给盲人,达到指引盲人行走的目的,较近期发表的研究有Villanueva提出的Tom Pouce II。 该系统是以红外线技术来感测障碍物,再以振动与否来分辨前方指到的方向是否有障碍 物,当装置指到一个有4?6公尺长度、并大于肩膀宽度的通道,就会停止振动。
[0010] 在国内,浙江大学、清华大学、郑州大学、杭州电子科技大学以及台湾中央大学的 智能计算及人机互动实验室在盲人导航这个领域也有相当大的贡献。曾以两个RGB镜头组 合来仿真生物的双眼视觉,经过运算后可以得到障碍物的方向与距离,透过语音告知盲人, 实现了低成本的盲人辅助工具。在近期也有使用Kinect作为感测装置的相关研究,相当令 人期待。不过这部份的研究目前都是以笔记本电脑为主要运算装置,盲人的行动力无法跟 一般人相比,背着一台计算机无疑会消耗不少体力,而且盲人操作计算机有一定的困难度, 因此提高了系统的不便。
[0011] 国外也有相关的研究,德国康斯坦茨大学(University of Konstanz)也有设计并 制作使用Kinect的辅助导盲工具,并且结合阅读二维图像标记的功能,可以辨识每个房间 的名称,帮助盲人在办公大楼内可以顺利到达目的地。而他们的研究也是须使用笔记本电 脑来做为运算装置,可以作为本项目的最为直接的参考。
[0012] 制作一个盲人辅助工具时的主要功能是要探测前方是否有障碍物或坑洞等危险 区域,所以首先是要先寻找一个可靠的测距仪器。现今测距装置大多是以超音波技术来实 现,他的优点是成本低以及相关研究也都相当成熟。国内外通常使用易学易用且应用广泛 的单芯片微电脑Arduino,也有超音波测距的套件可以使用,以HC-SR04超音波传感器套件 为例,它的感测距离为2cm?400cm,精度为0. 3cm,成本为100元人民币左右,缺点是它的 测量角度只有15度左右,对于测量前方障碍物的范围太小,无法胜任城市路况的需求。
[0013] Kinect是微软公司于2010年6月针对游戏主机Xbox360推出的一款体感设备,如 图1所示。虽然最初只是针对游戏领域进行开发的体感设备,但是推出之后就引起人们的 极大关注。随着Kinect for Windows的出现和代码的开源,而且功能强大、价格低廉,很多 人纷纷在Kinect平台上进行开发和研究,逐渐应用于很多领域。Kinect具有如下功能:
[0014] 1.彩色影像;
[0015] 2.3D深度影像;
[0016] 3·红外线影像;
[0017] 4.声音(透过数组式麦克风可分辨声音方向);
[0018] 5.底盘可依据人的位置自动追焦上下摆动;
[0019] RGB摄像头:用来获取640X480的彩色图像,每秒钟最多获取30帧图像,根据在 Kinect设备视野范围内移动的一个或两个人的图像进行骨骼追踪,可以追踪到人体上的 20个节点;3D深度传感器:分别为红外发射器和红外线C0MS摄像机,用来侦测3D影像;数 组式麦克风:与Microsoft. Speech的语音识别API集成,使用一个具有消除噪音和回波的 四元麦克风组,能够把声源附近有效范围之内的各种信息捕捉到。用于语音识别并具有降 噪功能。
[0020] 传统的手杖使用起来有诸多不便,导盲犬的训练周期过长且价格较贵,不利于普 及。另外,以超音波或者红外线助盲人得知前方是否有障碍物的研究已经开始多年了,近 年也出现一些相类似研究是使用Kinect装置,因为它可以监测的信息最多,且装置容易取 得。但盲人必须携带一台计算机,以一台笔记本电脑一般来说重达1. 5至2公斤,对于行动 缓慢的盲人来说,无疑是雪上加霜。盲人使用白手杖遇到坑洞时,往往都需要绕道而行,目 前相类似的研究项目中,尚未有监测地面坑洞的功能。
【发明内容】
[0021] 本发明实施例的目的在于提供一种基于Kinect的导盲拐杖及其实现方法,旨在 解决传统的手杖存在的成本较高,结构复杂,使用不便和缺乏监测地面坑洞功能的问题。
[0022] 本发明实施例是这样实现的,一种基于Kinect的导盲拐杖实现方法,该基于 Kinect的导盲拐杖实现方法包括以下步骤:
[0023] 步骤一,通过Kinect拍摄景深图像,将景深图片传输到微处理器后,微处理器提 取景深图片并将其栅格化;
[0024] 步骤二,将图片上的像素换算为距离,再由程序判定图片上的障碍物,根据设定条 件进行语音提示。
[0025] 进一步,在步骤一中Kinect拍摄的景深图像需要将一维像素组转化为2D图像,方 法如下:
[0026] 在Processing中,这个图像数据被储存在后台的像素数组;
[0027] 以下是用函数从Kinect获取并且显示高分辨率深度信息的代码:
[0028] void mousepressed () { int[] depth Values = Kinect.depthMap(); int clickPosition = mouseX +(mouseY*640); int clickedDepth = depthValues[clickPosition]; depth = clickedDepth; printin ('' depth:" + depth); }
[0029] 在这段程序中,Kinect. d印thMap以整数数组的形式来返回深度数值;代码中的 int □表示depth Values将要存储为一个整数数组;把Kinect看做是一个照相机;得到的 数据都2D的,代表着长方形表格里每一个点的深度数值;通过这段程序,得到的就是单栈 的像素:一维数组,每一行的数据都存储在一起,而每一行最后一个像素都存储在下一行第 一个像素之前;
[0030] 深度图像的每一个像素都对应着一个高分辨率的深度值;深度图像的分辨率为 640X480像素,意味着图像有480行,640列;因此,Kinect. d印thMap返回的一维线性数组 有307200个整数,堆栈的第一个整数表示图像的最左上像素,之后的数组都表示改行下一 个像素值,直到最右下角的最后一个像素;
[0031] 而语句 "int clickPosition = mouseX+(mousey*640)则能从 depth Values 中的数组中找出相应数值。就像int[]depth Values声明depth Values -样一个放入 很多整数的盒子-depthValues [clickPosition]进入这个盒子,找出需要的整数。 clickPosition的数值告诉需要进入盒子多深,需要拿出哪个整数。
[0032] 进一步,在步骤二中将图片上的像素换算为距离方法如下:
[0033] void mousepressed () { int[] depth Values = Kinect.depthMap(); int clickPosition = mouseX +(mouseY*640); int millimeieis = depthValues[clickPosition]; printin (''millimeters:''+ millimeters ); }
[0034] 通过以上的程序段,用Kinect将像素换算为距离。
[0035] 进一步,在步骤二中通过程序判断障碍物方法如下:
[0036] 将Kinect中的景深图像的像素换算为实际距离,需要将景深图片栅格化,取可识 别范围内最近的障碍物作为判断;
[0037] if (frame != null) { int dep; int k = 0; bool left = false; bool right = false; bool middle = false; short[] depthPixel = new short[frame.PixelDataLength]; short[,] tmpBuff = new short[80,60]; frame.CopyPixelDataTo(depthPixel); for (int j = 0; j < 60; j++) { for (int i = 0; i < 80; i++) { dep = depthPixel [k]; //txtl .Text = dep.ToString(); k+= ?; if (dep > 5000 && dep < 7000) {
[0038] if(i<70) { if(j<20) { left = true, } else if (j < 40) { middle = true; } else { right = true, } } } } }
[0039] 由Kinect获得的景深图像,传输到微处理器中,由程序截取图像上像素5000至像 素7000的部分,进行障碍物的判断;最后进行语音输出。
[0040] 本发明实施例的另一目的在于提供一种基于Kinect的导盲拐杖,该基于Kinect 的导盲拐杖包括:扶手、Kinect设备、拐杖主体、固定片、喇叭、支脚、微处理器;
[0041] 扶手设置在拐杖主体的顶端,Kinect设备设置在扶手的下方,并固定在拐杖主体 上,支脚设置在拐杖主体的最低端,微处理器通过固定片固定在拐杖主体上,喇叭连接微处 理器。
[0042] 进一步,微处理器选用工业超微型ΝΑΝΟ迷你主机。
[0043] 本发明提供的基于Kinect的导盲拐杖及其实现方法,通过Kinect拍摄景深图像, 将景深图片传输到微处理器后,微处理器提取景深图片并将其栅格化,将图片上的像素换 算为距离,再由程序判定图片上的障碍物,根据设定条件进行语音提示。本发明采用工业超 微型ΝΑΝΟ迷你主机当做微处理器,通过景深图像提取来判定障碍物距离。若检测到有障碍 物,通过喇叭来进行语音输出,结构简单,操作方便,实现了监测地面坑洞的功能。
【专利附图】
【附图说明】
[0044] 图1是本发明实施例提供的基于Kinect的导盲拐杖结构示意图;
[0045] 图2是本发明实施例提供的基于Kinect的导盲拐杖实现方法流程图;
[0046] 图中:1、扶手;2、Kinect设备;3、拐杖主体;4、固定片;5、喇叭;6、支脚;7、微处理 器;
[0047] 图3是本发明实施例提供的基于Kinect的导盲拐杖实现方法的实施例的流程图。
【具体实施方式】
[0048] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明 进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于 限定本发明。
[0049] 下面结合附图及具体实施例对本发明的应用原理作进一步描述。
[0050] 如图1所示,本发明实施例的基于Kinect的导盲拐杖主要由:扶手l、Kinect设备 2、拐杖主体3、固定片4、喇叭5、支脚6、微处理器7组成;
[0051] 扶手1设置在拐杖主体3的顶端,Kinect设备2设置在扶手1的下方,并固定在 拐杖主体3上,支脚6设置在拐杖主体3的最低端,微处理器7通过固定片4固定在拐杖主 体3上,喇叭5连接微处理器7 ;
[0052] 微处理器7选用工业超微型ΝΑΝΟ迷你主机;
[0053] 如图2所示,本发明实施例的基于Kinect的导盲拐杖实现方法包括以下步骤:
[0054] S201 :通过Kinect获取景深图像数据流,将深度图像数据流传输到微处理器,微 处理器对数据流进行提取;
[0055] S202 :运用算法转变使kinect能够坚直放置以便扩大视野,微处理器处理转换后 景深图像提取并将其栅格化;
[0056] S203 :对算法转换后的景深图像进行环境障碍物识别;
[0057] S204 :将景深图像上的障碍物对应的深度像素换算为与导盲拐杖的实际距离;
[0058] S205 :由经过微处理器对实际距离的数据进行读取判断,达到设定距离条件后,处 理器发出命令并通过扬声器进行语音提示。
[0059] 本发明的实施例1:
[0060] 如图3所示,本发明实施例的基于Kinect的导盲拐杖实现方法包括以下步骤:
[0061] 在本发明的实施例中,将一维像素组转化为2D图像:
[0062] 在目前为止,要获取Kinect的像素时,需要将这些数据用图像的形式表示在屏幕 上。在Processing中,这个图像数据被储存在后台的像素数组。
[0063] 以下是用函数从Kinect获取并且显示高分辨率深度信息的代码:
[0064] void mousepressed () { int[] depth Values = Kinect.depthMapO; int clickPosition = mouseX +(mouseY*640); int clickedDepth = depthVaIues[clickPosition]; depth = clickedDepth; printin ('' depth:'' + depth); }
[0065] 在这段程序中,Kinect. d印thMap以整数数组的形式来返回深度数值。代码中的 int □表示depth Values将要存储为一个整数数组。可以把Kinect看做是一个照相机。其 得到的数据都2D的,代表着长方形表格里每一个点的深度数值。通过这段程序,得到的就 是单栈的像素:一维数组,每一行的数据都存储在一起,而每一行最后一个像素都存储在下 一行第一个像素之前。
[0066] 图像中的像素:
[0067]
【权利要求】
1. 一种基于Kinect的高度智能化导盲拐杖设计实现方法,其特征在于,该基于Kinect 的高度智能化导盲拐杖设计实现方法包括以下步骤: 步骤一,通过Kinect获取景深图像数据流,将深度图像数据流传输到微处理器,微处 理器对数据流进行提取; 步骤二,运用算法转变使kinect能够坚直放置,微处理器处理转换后景深图像提取并 将其栅格化; 步骤三,对算法转换后的景深图像进行环境障碍物识别; 步骤四,将景深图像上的障碍物对应的深度像素换算为与导盲拐杖的实际距离; 步骤五,由经过微处理器对实际距离的数据进行读取判断,达到设定距离条件后,处理 器发出命令并通过扬声器进行语音提示。
2. 如权利要求1所述的基于Kinect的导盲拐杖实现方法,其特征在于,在步骤一中 Kinect拍摄的景深图像需要将一维像素组转化为2D图像,方法如下: 在Processing中,这个图像数据被储存在后台的像素数组; 以下是用函数从Kinect获取并且显示高分辨率深度信息的代码: void mousepressed () { int[] depth Values = Kinect.depthMap(); int clickPosition = mouseX +(mouseY*640); int clickedDepth = depthValues[clickPosition]; depth = clickedDepth; printin ('' depth:" + depth ); } 在这段程序中,Kinect. depthMap以整数数组的形式来返回深度数值;代码中的int [] 表示depth Values将要存储为一个整数数组;把Kinect看做是一个照相机;得到的数据都 2D的,代表着长方形表格里每一个点的深度数值;通过这段程序,得到的就是单栈的像素: 一维数组,每一行的数据都存储在一起,而每一行最后一个像素都存储在下一行第一个像 素之前; 深度图像的每一个像素都对应着一个高分辨率的深度值;深度图像的分辨率为 640X480像素,意味着图像有480行,640列;因此,Kinect. d印thMap返回的一维线性数组 有307200个整数,堆栈的第一个整数表示图像的最左上像素,之后的数组都表示改行下一 个像素值,直到最右下角的最后一个像素; 而语句 "int clickPosition = mouseX+(mousey*640)则能从 depth Values 中的 数组中找出相应数值;int []depth Values声明depth Values -样一个放入很多整数的盒 子-depth Values [clickPosition]进入这个盒子,找出需要的整数;clickPosition的 数值告诉需要进入盒子多深,需要拿出哪个整数。
3. 如权利要求1所述的基于Kinect的导盲拐杖实现方法,其特征在于,在步骤二中将 图片上的像素换算为距离方法如下: void mousepressed () { int[] depth Values = Kinect.depthMapQ; int clickPosition = mouseX +(mouseY*640); int millimerers = depthValues[clickPosition]; printin (''millimeters:''+ millimeters ); } 通过以上的程序段,用Kinect将像素换算为距离。
4. 如权利要求1所述的基于Kinect的导盲拐杖实现方法,其特征在于,在步骤二中通 过程序判断障碍物方法如下: 将Kinect中的景深图像的像素换算为实际距离,需要将景深图片栅格化,取识别范围 内最近的障碍物作为判断; if (frame != null) { ini: dep; int k = 0; bool left = false; bool right = false; bool middle = false; shoi*t[] depthPixel = new shoi*t[frame.PixelDataLength]; short[,] tmpBuff = new shoi*t[80,60]; frame.CopyPixelDataTo(depthPixel); for (int j = 0; j < 60; j++) { for (int i = 0; i < 80; i++) { dep = depthPixel[k]; //lx 1.1 .Text = dep.ToSlring(); k+= 1; if (dep > 5000 && dep < 7000) { if(i<70) { if(j<20) { left = true; } else if (j < 40) { middle = true; } else { right = true, } } } } } 由Kinect获得的景深图像,传输到微处理器中,由程序截取图像上像素5000至像素 7000的部分,进行障碍物的判断;最后进行语音输出。
5. -种基于Kinect的导盲拐杖,其特征在于,该基于Kinect的导盲拐杖包括:扶手、 Kinect设备、拐杖主体、固定片、喇ΡΛ、支脚、微处理器; 扶手设置在拐杖主体的顶端,Kinect设备设置在扶手的下方,并固定在拐杖主体上,支 脚设置在拐杖主体的最低端,微处理器通过固定片固定在拐杖主体上,喇叭连接微处理器。
6. 如权利要求5所述的基于Kinect的导盲拐杖,其特征在于,微处理器选用工业超微 型ΝΑΝΟ迷你主机。
【文档编号】A61H3/06GK104055657SQ201410274541
【公开日】2014年9月24日 申请日期:2014年6月18日 优先权日:2014年6月18日
【发明者】张克华, 王书平, 石栋, 刘润之, 程光明 申请人:浙江师范大学