通路检测方法、相关装置及计算机可读存储介质
技术领域
本申请涉及计算机视觉技术领域,尤其涉及一种通路检测方法、相关装置及计算机可读存储介质。
背景技术
在导盲、机器人、自动驾驶等领域,通路检测是一项极其重要的技术。现有的通路检测是基于视觉对车辆或机器人行进中的道路进行检测,以提高车辆或机器人行驶的安全性。
发明人在研究现有技术的过程中发现,传统的通路检测通常是在图像中设定一个二维检测区域,通过判断该区域中是否存在障碍来确定该区域是否可以通行。但是由于图像存在透视投影特性,若图像检测区域为矩形检测区域,在真实世界对应的是相机前方的扇形区域,在对获取到的图像进行检测时会将可通行宽度两侧的物体当作障碍,从而形成误报;若图像检测区域为梯形检测区域,在真实世界虽然可以一定程度的矫正扇形区的影响,但是梯形检测区域的尺寸和位置设置极其不便,且需要随镜头焦距、相机姿态等的变化而变化。另外,传统的通路检测通常只是对正前方的障碍进行粗略预警,无法提供更为详尽的路况信息,使得后续决策和用户体验都极为不便。
发明内容
本申请部分实施例所要解决的技术问题在于提供一种通路检测方法、相关装置及计算机可读存储介质,用以解决上述技术问题。
本申请的一个实施例提供了一种通路检测方法,包括:
根据获取的图像信息建立道路的三维点云;
在三维点云中检测道路的地面信息;
根据道路的地面信息确定预警区;
检测该预警区的通行状况,根据通行状况确定道路的通路检测结果。
本申请的一个实施例还提供了一种通路检测装置,包括:建立模块、第一检测模块、确定模块和第二检测模块;
建立模块,用于根据获取的图像信息建立道路的三维点云;
第一检测模块,用于在三维点云中检测道路的地面信息;
确定模块,用于根据道路的地面信息确定预警区;
第二检测模块,用于检测预警区的通行状况,根据通行状况确定道路的通路检测结果。
本申请实施例还提供了一种电子设备,包括:至少一个处理器;以及,
与至少一个处理器通信连接的存储器;其中,
存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行上述的通路检测方法。
本申请实施例还提供了一种计算机可读存储介质,存储有计算机程序,该计算机程序被处理器执行时实现上述的通路检测方法。
相对于现有技术而言,通过建立道路的三维点云,基于道路的三维点云确定预警区,避免了由于二维图像设置的预警区不合理,导致的检测道路不准确的问题,并且在三维云中检测道路的地面信息,进而确定预警区以及预警区的通行状况,能够保证通路检测结果的可靠性,使得能够适用于复杂环境的通路检测,提高用户体验,同时通过三维点云能够提供更多的路况信息。
附图说明
一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。
图1是本申请第一实施例中通路检测方法的流程图;
图2是本申请第一实施例中像素坐标系和相机坐标系的关系图;
图3是本申请第一实施例中相机坐标系和世界坐标的关系图;
图4是本申请第二实施例中通路检测方法的流程图;
图5是本申请第二实施例中另一通路检测方法的流程图;
图6是本申请第三实施例中的通路检测装置的结构图;
图7是本申请第四实施例中电子设备的结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请部分实施例进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。然而,本领域的普通技术人员可以理解,在本申请的各实施例中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施例的种种变化和修改,也可以实现本申请所要求保护的技术方案。
本申请的第一实施例涉及一种通路检测方法,如图1所示,包括如下步骤:
步骤101:根据获取的图像信息建立道路的三维点云。
具体地说,三维点云是目标物体表面特征的海量点集合,建立三维点云能够在空间中确定道路信息,应用中可以采用多种方式建立三维点云,本实施例并不限制建立三维点云采用的具体实现方式。
一个具体的实现中,可以通过深度图建立三维点云。建立三维点云的具体过程包括:获取深度图和相机的姿态角,姿态角是拍摄该深度图时相机的姿态角;根据该深度图和预设的归一化尺度计算尺度归一化因子;根据该深度图和尺度归一化因子计算尺度归一化后的深度图;根据尺度归一化后的深度图构建相机坐标系下的三维点云;根据相机坐标系下的三维点云和相机的姿态角,构建世界坐标系下的三维点云。
需要说明的是,深度图的获取方法有很多种,包括但不限于:激光雷达深度成像法、计算机立体视觉成像、坐标测量机法、莫尔条纹法、结构光法,此处并不限制深度图的获取方法。
具体地说,利用公式1计算尺度归一化因子的,公式1表示如下:
S=Norm/max(W,H) (1)
其中,S表示尺度归一化因子,W表示深度图的宽度,H表示深度图的高度,Norm表示预设的归一化尺度。Norm是预先设置的已知量,在具体应用中,如需要对连续帧的深度图进行处理建立三维点云,则对每一帧深度图的处理过程中使用的归一化尺度保持不变。
利用公式2计算尺度归一化后的深度图,公式2表示如下:
其中,WS表示尺度归一化后的深度图的宽度,HS表示尺度归一化后的深度图的高度。根据WS和HS可确定出尺度归一化后的深度图。
具体地说,根据公式3及归一化后的深度图构建相机坐标系下的三维点云,该相机坐标系下的三维点云表示为P(Xc,Yc,Zc),由于深度图中每个像素都含有相机到拍摄物体的距离值,则通过公式3将深度图中的像素坐标转换为相机坐标系的坐标,并构成相机坐标系下的三维点云,公式3表示如下:
其中,u和v是任意点P在归一化后的深度图中的坐标值,Xc,Yc,Zc是点P在相机坐标系中的坐标值,M3×4是相机的内参矩阵,Zc为点P在尺度归一化后的深度图中的深度值,也就是相机到拍摄物体的距离值,为已知量。
根据相机坐标系与世界坐标系之间的坐标转换关系,将相机坐标系中的三维点云P(Xc,Yc,Zc)转化为世界坐标系下的三维点云P(Xw,Yw,Zw),该转换关系用公式4表示:
其中,Xw、Yw和Zw是三维点云中任意点P在世界坐标系中的坐标值,Xc、Yc和Zc是点P在相机坐标系下的坐标值,α是相机在世界坐标系中与Xw轴的夹角,β是相机在世界坐标系中与Yw轴的夹角,γ是相机在世界坐标系中与Zw轴的夹角。
其中,假设图像坐标系为o1-xy,则相机坐标系Oc-XcYcZc和像素坐标系o-uv的关系如图2所示,相机坐标系Oc-XcYcZc和世界坐标Ow-XwYwZw的关系如图3所示。
其中,如图2中,以深度图左上角为原点建立的以像素为单位的直角坐标系o-uv作为像素坐标系,横坐标u表示像素点所在的像素列数,纵坐标v表示像素点所在的像素行数。将相机光轴与深度图平面的交点定义为图像坐标系o1-xy的原点o1,且x轴与u轴平行,y轴与v轴平行。相机坐标系Oc-XcYcZc以相机光心Oc为坐标原点,Xc轴和Yc轴分别与图像坐标系中的x轴和y轴平行,Zc轴为相机的光轴,和图像平面垂直并交于o1点。
其中,如图3中,世界坐标系Ow-XwYwZw的原点Ow与相机坐标系的原点Oc重合,均为相机光心,选取水平向右为Xw轴正方向,垂直向下为Yw轴正方向,垂直XwOwYw平面并指向正前方为Zw轴正方向,建立世界坐标系。
值得一提的是,根据图像信息构建三维点云,并不局限于通过深度图构建,如,还可以通过激光雷达直接获取激光点云数据,并根据点云数据构建三维点云,通过深度图构建三维点云是一种示例性说明,本实施例对构建三维点云采取的具体方式不做限制。
步骤102:在三维点云中检测道路的地面信息。
一个具体实现中,该步骤具体实现过程为:检测三维点云中的地面高度;确定地面高度上的障碍物信息;将地面高度和障碍物信息作为地面信息。
需要说明的是,在三维点云中确定出地面高度并检测地面高度上的障碍物信息,使得能够确定道路的具体状况,为保证检测结果的准确性提供可能性。
值得一提的是,在确定地面高度之后,还可以对该道路进行坑洼检测,确定该道路的坑洼状况,将道路的坑洼状况作为地面信息中的一部分。实际中还做其他道路相关的检测,如检测道路的类别,包括盲道、人行道、人行斑马线等,例如,将该方法应用于盲杖,则有必要确定当前使用盲杖者行走的具体道路类别。因此,实际中可根据需要检测更多的地面信息,此处不做限制。
步骤103:根据道路的地面信息确定预警区。
具体地说,构建预警区的空间坐标;根据地面高度确定预警区在空间坐标下的高度位置;根据障碍物信息确定预警区在空间坐标下的宽度和距离,从而确定出预警区。
需要说明的是,确定预警区是基于世界坐标系下的三维点云确定的,具体为,以世界坐标系的YwOwZw平面为对称平面,以Zw轴的正方向构建预警区三维的空间区域,该三维的空间区域即为预警区,预警区的空间区域表示为vBox(x,y,z),其中x、y、z分别表示预警区的宽度、高度和距离,预警区的距离通过使用者的速度确定,预警区的宽度和高度根据使用者的外形确定,且该预警区不小于保证使用者可以通过的最小的空间。例如,一个使用者的身高为1.5m、体重90kg(千克)、行动速度迟缓,预警区可设置为vBox(100,170,150),单位cm(厘米);另一个使用者的身高为1.9m、体重55kg、行动速度敏捷,预警区可设置为vBox(60,210,250),单位cm。
值得一提的是,本实施例可以在连续帧的图像信息中进行通路检测,如是深度图,则需要对每帧深度图都需要转换坐标系,但预警区的坐标值可以保持不变,只需要根据不同帧图像对应的三维点云确定预警区的位置即可。
另外,道路并不是平坦的路面,地面信息中包括地面高度,则在确定出预警区之后,还需要根据地面高度调整预警区的位置。如,地面高度不同,道路可分为上坡路段,下坡路段和平坦路段,根据地面信息中的地面高度调整预警区的位置,还需要根据障碍物信息和预警区的大小检测道路的通行状况。
一个具体实现中,根据自适应的地面检测方法确定实时的地面高度,或者根据三维点云中表明道路信息的点云数据确定出实时地面高度,根据地面高度的变化动态的调整预警区的位置,调整之后能够保证预警区正好位于地面的正上方,这样,不仅能效避免地面干扰,而且不会遗漏低矮通行障碍。具体的,调整预警区可通过公式5确定,具体表示如下:
vBox1=vBox(x,H+y+σ,z) (5)
其中,H表示实时的地面高度,σ表示动态调整余量,vBox1表示调整后的预警区,x、y、z分别表示预警区的宽度、高度和距离。
步骤104:检测预警区的通行状况,根据通行状况确定道路的通路检测结果。
具体地说,可根据道路的障碍物信息对预警区的通行状况进行检测,通行状况可以具体表明可通行区域的位置以及可通行区域的宽度和高度等信息。检测到预警区的通行状况后,判断通行状况指示道路是否为可通行;若是,则确定预警区规划的通行路线并根据通行路线确定道路的检测结果;否则,确定道路的检测结果为不可通行。
具体地说,在确定出通路检测结果之后,根据通路检测结果发出预警信息,该预警信息中包括但不限于障碍物信息、通行状况和地面高度等。
其中,预警信息可以是声音信息、图像信息或光线信息中的一个或组合信息,如,将该方法应用于智能机器人,则在获取到通路检测结果之后,可将其转化为机器语言,使得该智能机器人能确定当前帧中的通路状况。
需要说明的是,通路检测结果还可以用其他的形式提醒给使用者,或者做适当的信息转换之后提示给使用者,此处不做具体限制。
与现有技术相比,通过建立道路的三维点云,基于道路的三维点云确定预警区,避免了由于二维图像设置的预警区不合理,导致的检测道路不准确的问题,并且在三维云中检测道路的地面信息,进而确定预警区以及预警区的通行状况,能够保证通路检测结果的可靠性,使得能够适用于复杂环境的通路检测,提高用户体验,同时通过三维点云能够提供更多的路况信息。
本申请的第二实施例涉及一种通路检测方法,本实施例与第一实施例大致相同,主要区别之处在于,本实施例具体说明了在三维点云中确定地面高度的具体实现。该通路检测方法的具体实施如图4所示,包括如下步骤:
需要说明的是,步骤201与第一实施例中的步骤101相同,步骤209、步骤210分别与第一实施例中的步骤103、步骤104相同,此处,对于相同的步骤不再赘述。
步骤202:对三维点云进行高度方向的自动阈值分割,获得第一地面区域。
步骤203:对三维点云进行距离方向的固定阈值分割,获得第二地面区域。
步骤204:根据第一地面区域和第二地面区域确定初始地面区域。
步骤205:计算初始地面区域的倾角。
步骤206:根据倾角确定地面区域的地面高度。
步骤207:确定地面高度上的障碍物信息。
步骤208:将地面高度和障碍物信息作为地面信息。
步骤207与步骤208已在第一实施例中进行阐述,此处不再赘述。
具体地说,本实施例中是对世界坐标系中的三维点云进行的高度方向和水平方向的分割,需要说明的是,世界坐标系中的三维点云中定义Yw为高度方向的坐标集合,Zw为距离方向的坐标集合,Xw为宽度方向上的坐标集合。则步骤203为在Yw轴所指定的方向进行分割,步骤204为在Zw轴所指示的方向进行分割。
一个具体的实现中,获得第一地面区域的具体过程为:根据用户在世界坐标系下的三维点云中选定的高度方向的感兴趣区域(Region Of Interest,ROI),计算获得第一分割阈值;根据当前深度图的前一帧深度图的地面高度,计算获得第二分割阈值;根据第一分割阈值和第二分割阈值,对世界坐标系下的三维点云进行高度方向的自动阈值分割,具体分割过程可通过公式6表示:
Ymask=a*ThdYroi+b*ThdYpre (6)
其中,Ymask表示第一地面区域,ThdYroi为第一分割阈值,ThdYpre为第二分割阈值,a和b为加权系数,a和b的具体取值由用户根据实际需要进行设定。
需要说明的是,在获得第一分割阈值和第二分割阈值时,可以采用的自动阈值分割算法包括均值法、高斯法或大津法等,由于自动阈值分割算法已经比较成熟,所以本实施例中不再对此进行赘述。
具体地说,获得第二地面区域的具体分割为:将用户在世界坐标系下的三维点云中选择的距离方向的最小坐标值,作为第三分割阈值,设为Zmin;将用户在世界坐标系下的三维点云中选择的距离方向的最大坐标值,作为第四分割阈值,设为Zmax;根据第三分割阈值和第四分割阈值,对世界坐标系下的三维点云进行距离方向的固定阈值分割,获得第二地面区域,设为Zmask,即保留Zmin和Zmax之间的Zw值所获得的区域为第二地面区域。
具体地说,在获取到第一地面区域和第二地面区域之后,则可确定初始地面区域,联立第一地面区域和第二地面区域可确定初始地面区域,具体的可通关过公式7确定出初始地面区域,表示如下:
Gnd0=Ymask∩Zmask (7)
其中,Gnd0为初始地面区域,Ymask为第一地面区域,Zmask为第二地面区域。该公式的具体物理含义是,通过第一地面区域可以确定在高度方向上的疑似地面区域,通过第二地面区域可对第一地面区域在距离方向上的范围做进一步限定,从而保证最终获取的初始地面区域的准确性。
具体地说,计算初始地面区域的倾角时,须先确定初始地面区域所在的平面,即对初始地面区域进行平面拟合,根据平面拟合确定出的平面与坐标轴的倾角即为初始地面区域的倾角。
需要说明的是,在进行平面拟合时,是以初始地面区域上的点作为已知量,采用最小二乘法或随机抽样一致性算法,对初始地面区域进行平面拟合,以获得初始地面区域所在平面的一般方程。当然,也可以采用其它拟合方式对初始地面区域进行平面拟合,本申请实施例中并不限定平面拟合的具体方式。
一个具体实现中,对初始平面拟合后得到初始地面区域所在的平面的一般方程AX+BY+CZ=D表示,则可确定出该平面的法向量:进一步可根据法向量确定出初始地面区域的倾角,具体以该拟合平面的法向量与垂直向上的单位向量的夹角作为初始地面的水平倾角θ,通过公式8计算出倾角θ:
其中,θ为初始地面区域的倾角,为初始地面区域的法向量,为垂直向上的单位向量,表示的模,表示的模。
根据初始地面区域的倾角即可确定出地面区域的地面高度,可以是该地面区域上一点的地面高度,也可是实时的地面高度。
值得一提的是,本实施例中的通路检测方法是基于连续帧的图像数据进行的检测,则对连续帧的图像数据进行通路检测的具体实现流程如图5所示,包括如下实施步骤:
步骤301:对系统进行初始化。
步骤302:根据获取的图像信息建立道路的三维点云。
步骤303:在三维点云中检测道路的地面信息。
步骤304:根据道路的地面信息确定预警区。
步骤305:检测预警区的通行状况,判断是否为可通行。若为是,则执行步骤306,否则,执行步骤307。
步骤306:则确定预警区规划的通行路线并根据通行路线确定道路的检测结果。
步骤307:确定道路的检测结果为不可通行。
步骤308:根据通路检测结果发出预警信息。
步骤309:判断是否存在下一帧图像信息。若为是,则转去执行步骤302,否则,结束通路检测。
上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包括相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该专利的保护范围内。
本申请的第三实施例涉及一种通路检测装置,具体结构如图6所示,包括:建立模块601、第一检测模块602、确定模块603和第二检测模块604。
建立模块601,用于根据获取的图像信息建立道路的三维点云。第一检测模块602,用于在三维点云中检测道路的地面信息。确定模块603,用于根据道路的地面信息确定预警区。第二检测模块604,用于检测预警区的通行状况,根据通行状况确定道路的通路检测结果。
不难发现,本实施例为与第一或第二实施例相对应的装置实施例,本实施例可与第一或第二实施例互相配合实施。第一或第二实施例中提到的相关技术细节在本实施例中依然有效,为了减少重复,这里不再赘述。
本申请的第四实施例涉及一种电子设备,具体结构如图7所示,包括:至少一个处理器701;以及,与至少一个处理器401通信连接的存储器702;其中,存储器702存储有可被至少一个处理器701执行的指令,指令被至少一个处理器701执行,以使至少一个处理器701能够执行第一或第二实施例中的通路检测方法。
其中,存储器和处理器采用总线方式连接,总线可以包括任意数量的互联的总线和桥,总线将一个或多个处理器和存储器的各种电路链接在一起。总线还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。
处理器负责管理总线和通常的处理,还可以提供各种功能,包括定时,外围接口,电压调节、电源管理以及其他控制功能。而存储器可以被用于存储处理器在执行操作时所使用的数据。
本申请的第五实施例涉及一种计算机可读存储介质,该可读存储介质为计算机可读存储介质,该计算机可读存储介质中存储有计算机指令,该计算机指令使计算机能够执行本申请第一或第二方法实施例中涉及的通路检测的方法。
需要说明的是,本领域的技术人员能够理解,上述实施例中显示方法是通过程序来指令相关的硬件来完成的,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random-AccessMemory)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域的普通技术人员可以理解,上述各实施例是实现本申请的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本申请的精神和范围。