本发明涉及图像目标检测,具体涉及一种基于深度图像分割与人体模型正投影算法的导盲方法。
背景技术:
1、在我国公共设施建设迅速发展的同时,视障人士在出行方面仍然面临着多种困难,其中包括盲道规划不合理、道路指引不清晰等问题。尽管我们社会对于无障碍设施的普及逐渐取得进展,但这些设施仍未能完全满足视障人士的实际需求,导致他们在日常生活中面临着极大的出行挑战。
2、在当今社会,视障人士的主要出行辅助工具主要包括导盲杖和导盲犬。然而,这两者都存在各自的局限性,使得它们无法完全解决视障人士在不同环境下的导航需求。导盲杖在熟悉的环境下表现尚可,但由于缺乏先进的探测功能,面对复杂的路面情况时显得力不从心。导盲犬的辅助效果相对较好,但由于高昂的训练成本和数量的不足,远远无法满足我国超过2300万视障人士的需求。
3、在这一背景下,现有的导盲产品越发难以满足市场需求,迫切需要更为先进的导盲装置来全面辅助视障人士的出行。当前的导盲方法主要以目标检测算法和slam(simultaneous localization and mapping)算法为主。然而,这两种方法各自存在一系列缺陷,导致其无法在所有情境下都提供令人满意的导航体验。目标检测算法虽然在特定场景中表现良好,但其在陌生环境中的适应性较差,容易受到环境复杂性的影响,且其对计算资源的要求高,无法在嵌入式系统等资源受限的设备上实现高效部署;slam算法在一定程度上解决了导航中的定位和地图构建问题,但其在物体识别方面仍存在一定的局限性,而且其难以准确感知和识别道路上的障碍物,限制了其在实际出行中的可靠性。
技术实现思路
1、本发明的目的是为了解决现有技术中的上述缺陷,提供一种基于深度图像分割与人体模型正投影算法的导盲方法,通过深度摄像头对路面情况以及障碍物进行识别,提高识别的精确度。
2、本发明的目的可以通过采取如下技术方案达到:
3、一种基于深度图像分割与人体模型正投影算法的导盲方法,所述导盲方法包括如下步骤:
4、s1、使用一个边长为a的小正方体对导盲装置的深度摄像头进行标定,得到缩放比例f(d),d为深度摄像头所得深度图像的深度值,使用者面朝深度摄像头站立,获取此时人体像素点中深度值的最小值d0、水平像素宽度nx和垂直像素高度ny,将d0、nx、ny代入缩放比例f(d),得到使用者的身高h1以及肩宽w1;
5、s2、设定初始阈值距离d1与最小安全距离c1,设当前阈值距离为d,根据缩放比例f(d),通过使用者的身高h1和肩宽w1,构建人体正投影矩阵am×n,m为代表人体模型在矩阵垂直方向上像素点个数,n为代表人体模型在矩阵水平方向上像素点个数;
6、s3、设置标准坐标系ouvw,其中u为水平方向,v为垂直方向,w为铅垂方向,地面为u-w平面,将深度摄像头的内参视角矩阵vin通过坐标系变化矩阵tview进行刚性变换,转化为标准坐标系下的标准视角矩阵vs;
7、s4、通过导盲装置的深度摄像头得到使用者前方道路的深度图像矩阵ma×b,并对该深度图像矩阵ma×b进行二值化操作,得到二值化矩阵na×b;
8、s5、通过人体正投影矩阵am×n和二值化矩阵na×b,得到矩阵cm×b,将人体正投影矩阵am×n在矩阵cm×b中进行遍历扫描操作,定义i为遍历扫描次数,若连续i次扫描得到ones矩阵,记录第i次遍历人体正投影矩阵最左列所在列数xi,i=1,2...n;定义二值化矩阵na×b中线所在的列数x0;定义可通过区域中线的列数y0如扫描出现中断,则计算x0与y0两者横坐标距离差δx和旋转角度δθ,并重置xi,通过遍历扫描迭代更新旋转角度,得到旋转角度最小值;
9、s6、若存在可通过区域,则引导使用者向相应的方向前进;若无可通过区域,则适当缩减当前阈值距离d并重复执行步骤s4-s6;若当前阈值距离d小于最小安全距离c1,则引导使用者转向。
10、进一步地,所述步骤s1中,物体或人体在不同距离下,在深度图像中所占有的像素点个数都有不同,根据光学成像的相似性原理,可以计算出实际物体长度与其深度图像中所对应的像素点个数在某一确定成像距离下的换算比例,据此比例,测得使用者的相关信息,具体处理过程如下:
11、s101、将一个边长为a的小正方体放置于距离深度摄像头正前方s1处,通过深度图像记录下此时图像中小正方体上的最小深度值d1和正方体边长所占有的像素点个数n1;
12、s102、将小正方体向后移动至距离深度摄像头正前方s2处,根据此时的深度图像记录下此时小正方体上最小深度值d2和正方体边长所占有的像素点个数n2;
13、s103、对步骤s101、s102得到的最小深度值与像素点个数进行联立,求得实际大小与其在深度图像中对应的像素点个数的缩放比例f(d),其中,f(d)=kd+b,d为所得深度图像的深度值;
14、s104、使用者面朝深度摄像头站立,获取此时深度图像中人体的最小深度值d0,水平像素点个数nx,垂直像素点个数ny,将d0、nx、ny代入缩放比例f(d),得到使用者的身高h1以及肩宽w1。
15、进一步地,设定初始阈值距离d1,当前阈值距离d和最小安全距离c1如下:
16、初始阈值距离d1设定为深度摄像头能够稳定成像的一段距离,最小安全距离c1设定为考虑人体反应时间,使用者行走时不与障碍物碰撞的极限距离;其中,初始阈值距离d1为当前阈值距离d的初始值,最小安全距离c1为当前阈值距离d的最小值。
17、进一步地,设定人体正投影矩阵am×n,以此作为使用者人体实际形状的简化与放大,并在之后的处理中将此矩阵视作为使用者,具体设置如下:
18、在测定过程中,根据缩放比例f(d)和当前阈值距离d,适当放大人体正面的碰撞区域,得到人体正投影矩阵am×n;其中,m=1.1*h1*f(d),n=1.1*w1*f(d),将人体正投影矩阵am×n中的元素值全部初始化为1。
19、进一步地,所述步骤s3中,由于透视原理,深度摄像头所获得的图像处于相机坐标系中,为了后续的距离识别,需要将处于相机坐标系下的物体变换到以一个个像素位置(u,v,w)来表示的标准坐标系之中,并将地面所处坐标移至u-w平面上。整个过程可以被细分为如下几个步骤:通过模型变换将相机坐标系下的物体转换至标准坐标系,然后通过相机变换得到物体与深度摄像头的相对位置坐标,再通过透视投影变换将相机变化后的物体投影至[-1,1]3三维空间之上,最后通过视口变换将地面所处坐标移至u-w平面上,具体处理过程如下:
20、s301、定义深度摄像头视角方向为g,沿视角方向竖直向上方向为t,建立标准坐标系(u,v,w),定义如下:
21、v=w×u,
22、s302、将深度摄像头位置e设置为原点,定义变换矩阵为vcam,公式如下:
23、其中,xu、xv、xw,yu、yv、yw,zu、zv、zw分别为物体在原有坐标系下的x、y、z分量在标准坐标系ouvw下的投影;xe、ye、ze为深度摄像头位置e的坐标位置;右侧矩阵表示第一步操作将深度摄像头位置移至原点,左侧矩阵表示第二步操作将其与标准坐标系ouvw重合。
24、s303、定义相机所处可视空间如下:
25、l≡左平面;r≡右平面;
26、b≡顶面;t≡底面;
27、n≡近平面;f≡远平面;
28、s304、将深度摄像头视角矩阵tview转换到[-1,1]3三维空间中,进行卷积计算,得到正交变换矩阵vortho,公式如下:
29、
30、s305、将视点视为v轴原点,将w=-n处平面视为投影平面,利用相似三角形性质和两点性质,分别代入远近平面的任意两点,得到投影变换矩阵vpersp→ortho,公式如下:
31、
32、s306、定义透视投影变换矩阵vper,公式如下:
33、vper=vorthovpersp→ortho;
34、计算结果如下:
35、
36、s307、[-1,1]3三维空间中的深度摄像头视角矩阵转换到标准坐标系中,得到视口变换矩阵vview,公式如下:
37、
38、s308、定义坐标系变化矩阵tview,公式如下:
39、tview=vviewportvpervcam;
40、通过计算得到标准坐标系下的标准视角矩阵vs,公式如下:
41、vs=tviewvin。
42、进一步地,所述步骤s4中,通过导盲装置的深度摄像头获取使用者前方道路障碍的深度图像矩阵,并通过深度图像矩阵中每个像素点的深度值,计算出深度图像中每个像素点距离深度摄像头的铅垂距离,同时对深度图像矩阵进行二值化,以便于将铅垂距离小于当前阈值距离的障碍物投影至当前阈值距离所在的投影平面,将铅垂距离大于当前阈值距离的障碍物过滤,具体处理过程如下:
43、s401、通过导盲装置的深度摄像头得到使用者前方道路障碍的深度图像矩阵ma×b,深度图像矩阵ma×b中每个像素点的值表示物体上对应点到深度摄像头的距离大小,并根据三维空间的勾股定理计算深度图像中物体到摄像头的水平距离z;
44、s402、对深度图像矩阵ma×b进行二值化,得到二值化矩阵na×b;把大于等于初始阈值距离的z值设为1,把小于初始阈值距离的水平距离z设为0。
45、进一步地,所述步骤s5中,为规避道路不平整对障碍物判断的影响,需对二值化矩阵进行分割,对人体正投影矩阵在分割后的矩阵中进行遍历扫描获取矩阵中的可通过区域,并求得可通过区域中线。根据可通过区域中线与二值化矩阵中线的列数差换算成实际的旋转角度,重复执行矩阵遍历并对旋转角度进行迭代,直至矩阵遍历结束,得到旋转角度的最小值,具体处理过程如下:
46、s501、根据人体正投影矩阵am×n,取二值化矩阵na×b的第a-1.1m-1行到a-0.1m行,得到与人体正投影矩阵am×n行数相同的矩阵cm×b;
47、s502、将人体正投影矩阵am×n在矩阵cm×b中进行遍历扫描操作,定义i为遍历扫描次数,若连续i次扫描得到ones矩阵,记录第i次遍历人体正投影矩阵最左列所在列数xi(i=1,2...n);定义二值化矩阵na×b中线所在的列数x0为x0=b/2;定义可通过区域中线的列数y0为y0=(xn-x1+m)/2;如扫描出现中断,则计算x0与y0两者横坐标距离差定义旋转角度δθ的初始值为180°,通过计算出旋转角度δθ,并重置xi=0,i=0;通过遍历扫描迭代更新旋转角度,得到旋转角度的绝对值最小值|δθmin|;
48、进一步地,所述步骤s6中,通过旋转角度的绝对值最小值|δθmin|,判断前方有无可通过区域并引导行进,具体处理过程如下:
49、s601、若|δθmin|≠180°,则引导使用者向相对于正前方|δθmin|度的方向转向,其中当δθmin>0°时,引导向右转向;δθmin<0°时,引导向左转向,当|δθmin|=0°时引导使用者继续直行;
50、s602、若|δθmin|=180°,则判断当前路线无可通过区域,则设置当前阈值距离d=d-50cm。判断当前阈值距离d是否小于最小安全距离c1:若当前阈值距离不小于最小安全距离c1,重新执行步骤s4-s6;若当前阈值距离d小于最小安全距离c1,则引导使用者向左转30度,使当前阈值距离初始化为初始阈值距离,重新执行步骤s2-s6。
51、本发明相对于现有技术具有如下的优点及效果:
52、(1)本发明公开的导盲方法适用于所有深度摄像头能够正常采集深度图像的环境,采集到的深度图像包含深度摄像头成像范围内所有障碍物的位置以及距离信息,通过深度图像分割和人体模型正投影算法,将所得人体模型投影至深度二值化图像中,对深度二值化图像中所出现的所有障碍物都能够提供有效的避障指引,不会局限于识别物体种类有限等问题。
53、(2)基于目标检测算法的导盲方法对所使用的导盲装置算力要求高,难以在嵌入式开发板上部署大模型。本发明公开的导盲方法以可穿戴式导盲装置为硬件基础,通过深度摄像头实时获取道路前方的深度图像流,对得到的深度图像进行实时处理更新,无需储存大量的数据。并且相较于目标检测算法,本方法无需识别大量种类的物体,因此无需将目标检测大模型部署在嵌入式开发板,能够有效节约硬件算力以及内存消耗,适用于各种型号的深度摄像头和满足一定算力要求的嵌入式开发板。
54、(3)基于目标检测算法的导盲方法通过云计算有效地解决嵌入式开发板算力不足的问题。但由于云计算存在较高的延迟,考虑到导盲需要高实时性和高动态性,使用云计算的导盲装置难以确保视障人士的出行安全。本发明公开的导盲方法使用深度摄像头实时采集图像,基于嵌入式开发板对视频流进行逐帧图像处理,由当前图像处理所得的深度二值化图像唯一确定当前状态下的导盲避障方向,具有高动态性和高实时性的特点。
55、(4)对比基于slam算法的导盲方法,本发明公开的导盲方法在完全满足导盲需要的同时,无需对道路进行3d建模以及储存,能够有效节省嵌入式设备的算力与内存消耗,在复杂的道路环境下能够以高动态性和高实时性为视障人士提供快速清晰的导盲指引信息。
1.一种基于深度图像分割与人体模型正投影算法的导盲方法,其特征在于,所述导盲方法包括如下步骤:
2.根据权利要求1所述的一种基于深度图像分割与人体模型正投影算法的导盲方法,其特征在于,所述步骤s1过程如下:
3.根据权利要求2所述的一种基于深度图像分割与人体模型正投影算法的导盲方法,其特征在于,所述步骤s2中,初始阈值距离d1设定为深度摄像头能够稳定成像的一段距离,最小安全距离c1设定为考虑人体反应时间,使用者行走时不与障碍物碰撞的极限距离;其中,初始阈值距离d1为当前阈值距离d的初始值,最小安全距离c1为当前阈值距离d的最小值。
4.根据权利要求3所述的一种基于深度图像分割与人体模型正投影算法的导盲方法,其特征在于,所述步骤s2中,根据缩放比例d(n)和当前阈值距离d,适当放大人体正面的碰撞区域,得到人体正投影矩阵am×n;其中,m=1.1*h1*f(d),n=1.1*w1*f(d),将人体正投影矩阵am×n中的元素值全部初始化为1。
5.根据权利要求4所述的一种基于深度图像分割与人体模型正投影算法的导盲方法,其特征在于,所述步骤s3过程如下:
6.根据权利要求5所述的一种基于深度图像分割与人体模型正投影算法的导盲方法,其特征在于,所述步骤s4过程如下:
7.根据权利要求6所述的一种基于深度图像分割与人体模型正投影算法的导盲方法,其特征在于,所述步骤s5过程如下:
8.根据权利要求7所述的一种基于深度图像分割与人体模型正投影算法的导盲方法,其特征在于,所述步骤s6过程如下: