具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请部分实施例进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请的第一实施例涉及一种地面检测方法,该地面检测方法的执行主体可以是导盲头盔或智能机器人。该地面检测方法的具体流程如图1所示,包括以下步骤:
在步骤101中,获取深度图和相机的姿态角。
具体的说,在本实施例中,通过深度相机获取深度图,通过姿态传感器获取相机的姿态角。
其中,获取深度图之后,对深度图进行尺度归一化处理,利用尺度归一化后的深度图进行后续的地面检测步骤,能够加快计算速度,快速获得地面检测结果。
在一个具体实现中,对深度图进行尺度归一化处理的具体方式为:根据深度图和预设的归一化尺度计算尺度归一化因子,并根据深度图和尺度归一化因子计算尺度归一化后的深度图。具体计算过程如下:
利用公式(1)计算尺度归一化因子,公式(1)表示如下:
其中,S表示尺度归一化因子,W表示深度图的宽,H表示深度图的高,Norm表示预设的归一化尺度。Norm是预先设置的已知量,对于每一个深度图该值保持不变。
利用公式(2)计算尺度归一化后的深度图,公式(2)表示如下:
其中,Ws表示尺度归一化后的深度图的宽,Hs表示尺度归一化后的深度图的高。通过Ws和Hs就可以确定出尺度归一化后的深度图。
在步骤102中,根据深度图和相机的姿态角构建世界坐标系下的三维点云。
具体的说,根据尺度归一化后的深度图构建相机坐标系下的三维点云,根据相机坐标系下的三维点云和相机的姿态角构建世界坐标系下的三维点云。具体利用公式(3)构建相机坐标系下的三维点云,公式(3)表示如下:
其中,u和v是归一化后的深度图中像素点的位置坐标,M3×4是相机的内参矩阵,Xc、Yc和Zc是三维点云在相机坐标系中的坐标值,并且,Zc是归一化后的深度图中像素点的深度值,为已知量。
其中,具体利用公式(4)构建世界坐标系下的三维点云。
其中,Xw、Yw和Zw是三维点云在世界坐标系中的坐标值,α、β和γ是相机的姿态角。
需要说明的是,在进行坐标系方向确定时,设定标准图像坐标系为o1-xy,则相机坐标系和像素坐标系的关系如图2所示,相机坐标系和世界坐标的关系如图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轴正方向,垂直Xw Yw平面并指向正前方为Zw轴正方向,建立世界坐标系。
在步骤103中,根据世界坐标系下的三维点云获取初始地面区域。
具体的说,对世界坐标系下的三维点云进行高度方向的自动阈值分割获得第二地面区域。对世界坐标系下的三维点云进行距离方向的固定阈值分割获得第三地面区域。根据第二地面区域和第三地面区域获得初始地面区域。
其中,三维点云在世界坐标系中的坐标值Xw、Yw和Zw分别为三个方向上的坐标集合,而Yw即为高度方向的坐标集合,Zw即为距离方向的坐标集合,Xw即为左右方向上的坐标集合。
需要说明的是,本申请实施例中的高度方向指的是在世界坐标系中Yw轴所指定的方向,距离方向指的是在世界坐标系中Zw轴所指定的方向,并且指向正前方。
在一个具体实现中,对世界坐标系下的三维点云进行高度方向的自动阈值分割,获得第二地面区域的方式为:根据用户在世界坐标系下的三维点云中选定的高度方向的感兴趣区域(Region Of Interes,ROI),计算获得第一分割阈值;根据当前深度图的前一帧深度图的地面高度,计算获得第二分割阈值。根据第一分割阈值和第二分割阈值,对世界坐标系下的三维点云进行高度方向的自动阈值分割,并利用公式(5)获得第二地面区域,公式(5)表示如下:
Ymask=a*ThdYroi+b*ThdYpre (5)
其中,a和b为加权系数,可以由用户根据实际需要进行设定,ThdYroi为第一分割阈值,ThdYpre为第二分割阈值,Ymask为第二地面区域。
需要说明的是,在获得第一分割阈值和第二分割阈值时,可以采用的自动阈值分割算法包括均值法、高斯法或大津法等,由于自动阈值分割算法已经比较成熟,所以本实施例中不再对此进行赘述。
对世界坐标系下的三维点云进行距离方向的固定阈值分割,获得第三地面区域的方式为:将用户在世界坐标系下的三维点云中选择的距离方向的最小坐标值,作为第三分割阈值,设为Zmin;将用户在世界坐标系下的三维点云中选择的距离方向的最大坐标值,作为第四分割阈值,设为Zmax;根据第三分割阈值和第四分割阈值,对世界坐标系下的三维点云进行距离方向的固定阈值分割,获得第三地面区域,设为Zmsk,即保留Zmin和Zmax之间的Zw值所获得的区域为第三地面区域。
其中,根据第二地面区域和第三地面区域,利用公式(6)获得初始地面区域,公式(6)表示如下:
Gndo=Ymask∩Zmask (6)
其中,Gndo为初始地面区域,Ymask为第二地面区域,Zmask为第三地面区域。该公式的具体物理含义是,通过第二地面区域可以确定在高度方向上的疑似地面区域,通过第三地面区域可对第二地面区域在距离方向上的范围做进一步限定,从而保证最终获取的初始地面区域的准确性。
在步骤104中,计算初始地面区域的倾角并根据倾角确定地面检测结果。
需要说明的,在获得初始地面区域后,可以根据初始地面区域进行平面拟合,得到初始地面区域所在平面的一般方程Ax+By+Cz=D。
其中,在进行平面拟合时,是以初始地面区域上的点作为已知量,采用最小二乘法或随机抽样一致性算法,对初始地面区域进行平面拟合,以获得初始地面区域所在平面的一般方程。当然,也可以采用其它拟合方式对初始地面区域进行平面拟合,本申请实施例中并不限定平面拟合的具体方式。
其中,根据平面的一般方程可以确定初始地面区域的法向量
根据法向量
与垂直向上的单位向量
利用公式(7)计算初始地面区域的倾角,公式(7)表示如下:
其中,θ为初始地面区域的倾角,
为初始地面区域的法向量,
为垂直向上的单位向量。
具体的说,设置水平地面的最大倾角为θ0,斜坡地面的最大倾角为θ1,其中0<θ0<θ1,设定对初始地面区域的判定标准为公式(8)所示:
通过公式(8)的判定标准,根据倾角的大小判断是否检测到地面,若检测到地面,则根据三维点云中的所有点到初始地面区域的距离对初始地面进行筛选,获得第一地面区域;否则,直接对下一帧深度图进行地面检测。
需要说明的是,在检测到地面后,根据地面的倾角的大小,利用公式(8)确定地面的类型。其中,地面的类型包括:水平地面、上坡地面和下坡地面。
与现有技术相比,本实施方式提供的地面检测方法,通过获取的深度图和相机的姿态角来构建世界坐标系下的三维点云,并根据世界坐标系下的三维点云进行地面检测,而不需要对传感器的位置和姿态进行限定,具有普适性。
本申请的第二实施例涉及一种地面检测方法,本实施例在第一实施例的基础上做了进一步改进,具体改进之处为:对初始地面进行筛选的方式进行了具体说明,另外,根据第一地面区域对下一帧深度图的地面高度进行更新,增加地面检测的准确性。本实施例中的地面检测方法的流程如图4所示。
具体的说,在本实施例中,包括步骤201至步骤209,其中步骤201至步骤203与第一实施方式中的步骤101至步骤103大致相同,此处不再赘述,下面主要介绍不同之处,未在本实施方式中详尽描述的技术细节,可参见第一实施例所提供的物质检测方法,此处不再赘述。
在步骤203之后,执行步骤204。
在步骤205中,根据倾角判断是否检测到地面,若检测到地面,则执行步骤206,否则执行步骤209。
在步骤206中,对初始地面区域进行筛选,获得第一地面区域。
具体的说,设置地面起伏容忍度σ,计算三维点云中的所有点到初始地面区域的距离,其中p为三维点云中的任意一点。并根据公式(9)确定经过第一地面区域的所有点,并由确定的点所构成的平面获得第一地面区域。
其中,Gnd1为第一地面区域,σ为地面起伏容忍度,Distp为三维点云中的点p到初始地面区域的距离。
在步骤207中,计算第一地面区域的平均高度。
具体的说,在获得第一地面区域后,根据第一地面区域中所包含的所有点,可以确定出第一地面区域的平均高度,具体可以采用公式(10)计算获得,公式(10)表示如下:
其中,H为第一地面区域的平均高度,k为第一地面区域中的所包含的点的个数,Pi(y)为第一地面区域中第i个点所对应的y坐标值。
在步骤208中,根据第一地面区域的平均高度对下一帧深度图的地面高度进行更新。
其中,在计算获得第一地面区域的平均高度之后,将计算得到的地面高度传递给下一帧,从而实现对下一帧深度图的地面高度的更新。
在步骤209中,对下一帧深度图进行地面检测。
需要说明的是,如果根据倾角判断当前未检测到地面,则直接对下一帧深度图进行地面检测,如果根据倾角判断当前检测到地面,则在根据当前帧确定的平均地面高度对下一帧地面高度进行更新后,再对下一帧深度图进行地面检测。
与现有技术相比,本实施方式提供的地面检测方法,通过获取的深度图和相机的姿态角来构建世界坐标系下的三维点云,并根据世界坐标系下的三维点云进行地面检测,而不需要对传感器的位置和姿态进行限定,具有普适性。并且通过当前帧深度图的地面检测结果对下一帧深度图的地面高度进行更新,体现了时域性,使检测结果更加准确。
本申请的第三实施方式涉及一种地面检测装置,具体结构如图5所示。
如图5所示,地面检测装置包括第一获取模块301,构建模块302,第二获取获取模303和检测模块304。
其中,第一获取模块301,用于获取深度图和相机的姿态角。
构建模块302,用于根据深度图和姿态角构建世界坐标系下的三维点云。
第二获取获取模303,用于根据世界坐标系下的三维点云获取初始地面区域。
检测模块304,用于计算初始地面区域的倾角,并根据倾角确定地面检测结果。
不难发现,本实施方式为与第一实施方式相对应的装置实施例,本实施方式可与第一实施方式互相配合实施。第一实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第一实施方式中。
本申请的第四实施例涉及一种地面检测装置,该实施方式与第四实施方式大致相同,具体结构如图6所示。其中,主要改进之处在于:第四实施方式对第三实施方式中的检测模块304进行了具体描述。检测模块304具体包括:判断子模块3041,筛选子模块3042,计算子模块3043,更新子模块3044和检测子模块3045。
判断子模块3041,用于根据倾角的大小判断是够检测到地面,若检测到地面,则利用筛选子模块3042对初始地面区域进行筛选,否则,利用检测子模块3045直接对下一帧深度图进行地面检测。
筛选子模块3042,用于根据三维点云中的所有点到初始地面区域的距离对初始地面区域进行筛选,获得第一地面区域。
计算子模块3043,用于计算第一地面区域的平均高度。
更新子模块3044,用于根据第一地面区域的平均高度对下一帧深度图的地面高度进行更新。
检测子模块3045,用于在判断子模块3041根据倾角确定当前未检测到地面,直接对下一帧深度图进行地面检测,在判断子模块3041根据倾角确定当前检测到地面,则对更新地面高度的下一帧深度图进行地面检测。
不难发现,本实施方式为与第二实施方式相对应的装置实施例,本实施方式可与第二实施方式互相配合实施。第二实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第二实施方式中。
以上所描述的装置实施例仅仅是示意性的,并不对本申请的保护范围构成限定,在实际应用中,本领域的技术人员可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的,此处不做限制。
本申请的第五实施例涉及一种电子设备,具体结构如图7所示。包括至少一个处理器501;以及,与至少一个处理器501通信连接的存储器502。其中,存储器502存储有可被至少一个处理器501执行的指令,指令被至少一个处理器501执行,以使至少一个处理器501能够执行地面检测方法。
本实施例中,处理器501以中央处理器(Central Processing Unit,CPU)为例,存储器502以可读写存储器(Random Access Memory,RAM)为例。处理器501、存储器502可以通过总线或者其他方式连接,图5中以通过总线连接为例。存储器502作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本申请实施例中实现环境信息确定方法的程序就存储于存储器502中。处理器501通过运行存储在存储器502中的非易失性软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述地面检测方法。
存储器502可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储选项列表等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器502可选包括相对于处理器501远程设置的存储器,这些远程存储器可以通过网络连接至外接设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
一个或者多个程序模块存储在存储器502中,当被一个或者多个处理器501执行时,执行上述任意方法实施例中的物质检测方法。
上述产品可执行本申请实施例所提供的方法,具备执行方法相应的功能模块和有益效果,未在本实施例中详尽描述的技术细节,可参见本申请实施例所提供的方法。
本申请的第六实施例涉及一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,该计算机程序被处理器执行时能够实现本申请任意方法实施例中涉及的地面检测方法。
本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域的普通技术人员可以理解,上述各实施例是实现本申请的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本申请的精神和范围。