一种基于相机的深度估计进行激光雷达点云过滤的方法
技术领域
本发明涉及数据处理
技术领域
,特别涉及一种基于相机的深度估计进行激光雷达点云过滤的方法。背景技术
点云数据(point cloud data)是指以点形式记录扫描信息的数据,由激光雷达扫描得到的每个点云数据都包含一个体现点云深度的深度数据。激光雷达点云作为最主要的传感器数据,在自动驾驶系统中起到至关重要的作用。但激光雷达点云在一些场景下会出现虚假点,例如在雨雾天气,烟尘,汽车尾气等等场景。有些时候为了增加点云信息,我们会使用激光雷达双回波(dual return)的模式获取点云,即同一激光雷达射线最多会返回两个不同的回波,从而在同一个射出方向上得到两个不同的激光雷达点。这种情况下若存在大量虚假点,产生的影响又会翻倍。
发明内容
本发明的目的,就是针对现有技术的缺陷,提供一种基于相机的深度估计进行激光雷达点云过滤的方法、电子设备及计算机可读存储介质,对相机拍摄的图像数据进行深度图像转换,再在点云集合中定位与深度图像像素点对应的匹配点云,再根据深度图像像素点及其匹配点云的深度差值来对匹配点云进行有效点云标记,最后通过将点云集合无效点云滤除的方式完成对整体点云集合的去虚假点操作。通过本发明方法,可以最大化去除点云集合中的无效信息,提高点云识别率、降低点云计算量。
为实现上述目的,本发明实施例第一方面提供了一种基于相机的深度估计进行激光雷达点云过滤的方法,所述方法包括:
获取在第一时刻T由激光雷达对第一指定环境扫描生成的第一点云数据集合;所述第一点云数据集合包括多个第一点云数据;所述第一点云数据包括第一点云深度数据;
获取在所述第一时刻T由相机对所述第一指定环境拍摄生成的第一场景图像数据;所述第一场景图像数据包括多个第一像素点数据;所述第一像素点数据包括第一像素数据;
使用训练成熟的基于光学图像的深度估计模型,对所述第一场景图像数据进行深度图像转换处理,生成对应的第一深度图像数据;所述第一深度图像数据包括多个第二像素点数据;所述第二像素点数据包括第二像素数据;所述第一深度图像数据的分辨率与所述第一场景图像数据的分辨率一致;所述第二像素点数据与所述第一像素点数据的图像坐标一一对应;
根据深度图像的像素数据与深度数据的对应关系,对各个所述第二像素点数据的所述第二像素数据进行深度数据转换处理,生成对应的第一像素点深度数据;
根据深度图像坐标系统与点云坐标系统的对应关系,在所述第一点云数据集合中,将与各个所述第二像素点匹配的所述第一点云数据,标记为对应的第一匹配点云数据;若激光雷达预设的扫描模式为单回波模式则各个所述第二像素点数据对应的所述第一匹配点云数据的数量最大为1;若所述扫描模式为双回波模式则各个所述第二像素点数据对应的所述第一匹配点云数据的数量最大为2;
对各个所述第二像素点数据对应的所述第一匹配点云数据进行有效点云数据标记处理;
在所述第一点云数据集合中,将未被标记为所述有效点云数据的所述第一点云数据滤除。
优选的,所述基于光学图像的深度估计模型为单目深度估计模型;
所述单目深度估计模型包括第一类单目深度估计模型和第二类单目深度估计模型;
所述第一类单目深度估计模型包括卷积神经网络深度图预测模块;
所述第二类单目深度估计模型包括卷积神经网络视差图预测模块、双目图像重构模块和深度图生成模块。
优选的,所述使用训练成熟的基于光学图像的深度估计模型,对所述第一场景图像数据进行深度图像转换处理,生成对应的第一深度图像数据,具体包括:
当使用的所述基于光学图像的深度估计模型为所述第一类单目深度估计模型时,获取当前相机的外部标定参数M1和内部标定参数K1,并将M1和K1输入所述卷积神经网络深度图预测模块作为计算因子;
再将所述第一场景图像数据输入所述卷积神经网络深度图预测模块进行深度图预测运算,生成对应的所述第一深度图像数据。
优选的,所述使用训练成熟的基于光学图像的深度估计模型,对所述第一场景图像数据进行深度图像转换处理,生成对应的第一深度图像数据,具体包括:
当使用的所述基于光学图像的深度估计模型为所述第二类单目深度估计模型时,将所述第一场景图像数据输入所述卷积神经网络视差图预测模块中进行视差图预测运算,生成第二左对右视差图数据和第二右对左视差图数据;所述第二左对右视差图数据和所述第二右对左视差图数据都包括多个视差图像素点,所述视差图像素点的像素值与对应视差值呈线性关系;
将所述第二左对右视差图数据输入所述深度图生成模块,按的深度转换关系进行计算,生成所述第一深度图像数据;f为模型训练时所用的左右两个相机的焦距,B为模型训练时所用的左右两个相机的光心间距,d为视差值,Z为深度值;所述第一深度图像数据的各个所述第二像素点数据的所述第二像素数据与对应深度值呈线性关系。
优选的,所述对各个所述第二像素点数据对应的所述第一匹配点云数据进行有效点云数据标记处理,具体包括:
当所述扫描模式为单回波模式时,根据各个所述第二像素点数据对应的所述第一像素点深度数据,与对应的所述第一匹配点云数据的所述第一点云深度数据,进行深度差值计算,生成第一深度差值;若所述第一深度差值数据符合预设的差值阈值范围,则将与当前所述第二像素点数据对应的所述第一匹配点云数据标记为所述有效点云数据;
当所述扫描模式为双回波模式时,在与各个所述第二像素点数据对应的2个所述第一匹配点云数据中,选择所述第一点云深度数据偏小的作为对应的第二匹配点云数据;并根据各个所述第二像素点数据对应的所述第一像素点深度数据,与对应的所述第二匹配点云数据的所述第一点云深度数据,进行深度差值计算,生成第二深度差值;若所述第二深度差值数据符合所述差值阈值范围,则将与当前所述第二像素点数据对应的所述第二匹配点云数据标记为所述有效点云数据。
本发明实施例第二方面提供了一种电子设备,包括:存储器、处理器和收发器;
所述处理器用于与所述存储器耦合,读取并执行所述存储器中的指令,以实现上述第一方面所述的方法步骤;
所述收发器与所述处理器耦合,由所述处理器控制所述收发器进行消息收发。
本发明实施例第三方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,当所述计算机指令被计算机执行时,使得所述计算机执行上述第一方面所述的方法的指令。
本发明实施例提供了一种基于相机的深度估计进行激光雷达点云过滤的方法、电子设备及计算机可读存储介质,对相机拍摄的图像数据进行深度图像转换,再在点云集合中定位与深度图像像素点对应的匹配点云,再根据深度图像像素点及其匹配点云的深度差值来对匹配点云进行有效点云标记,最后通过将点云集合无效点云滤除的方式完成对整体点云集合的去虚假点操作。通过本发明方法,可以最大化去除点云集合中的无效信息,提高点云识别率、降低点云计算量。
附图说明
图1为本发明实施例一提供的一种基于相机的深度估计进行激光雷达点云过滤的方法示意图;
图2为本发明实施例二提供的一种电子设备的结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部份实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
本发明实施例一提供一种基于相机的深度估计进行激光雷达点云过滤的方法,如图1为本发明实施例一提供的一种基于相机的深度估计进行激光雷达点云过滤的方法示意图所示,本方法主要包括如下步骤:
步骤1,获取在第一时刻T由激光雷达对第一指定环境扫描生成的第一点云数据集合;
其中,第一点云数据集合包括多个第一点云数据;第一点云数据包括第一点云深度数据。
这里,激光雷达安装在自动驾驶的无人车车体上;点云数据除深度数据之外还包括宽度数据和高度数据,所谓宽度和高度数据是指对应点在点云三维坐标系中的宽度与高度坐标;本发明实施例中的激光雷达支持单回波和双回波两种点云扫描模式,对于单回波模式意味着在同一个宽度+高度的位置上只有一个深度数据,对于双回波模式意味着在同一个宽度+高度的位置上可能会出现一近一远两个深度数据。
步骤2,获取在第一时刻T由相机对第一指定环境拍摄生成的第一场景图像数据;
其中,第一场景图像数据包括多个第一像素点数据;第一像素点数据包括第一像素数据。
这里,第一场景图像数据为普通的不带深度信息的色彩图像,反映的是拍摄场景的实际影像,其像素的像素保持与实际影像像素一致的关系;需要说明的是,当前步骤中的相机是与步骤1中的激光雷达安装在同一车体上,且二者保持同步工作;当前相机的摄场景也是与步骤1中的激光雷达的扫描场景为同一场景,步骤1产生的第一点云数据集合与步骤2产生的第一场景图像数据,一个是反映该场景相对于车体的三维空间格局,一个是反映该场景相对于车体的正面二维图像。
步骤3,使用训练成熟的基于光学图像的深度估计模型,对第一场景图像数据进行深度图像转换处理,生成对应的第一深度图像数据;
其中,第一深度图像数据包括多个第二像素点数据;第二像素点数据包括第二像素数据;第一深度图像数据的分辨率与第一场景图像数据的分辨率一致;第二像素点数据与第一像素点数据的图像坐标一一对应。
这里,深度图像(depth image)也被称为距离影像(range image),是指以从相机到场景中各点的深度(距离)作为像素值的图像;基于光学图像的深度估计模型用于对普通的二维图像也就是第一场景图像数据进行深度图转换,得到对应的二维深度图也就是第一深度图像数据,由深度图原理可知其每个像素点也就是第二像素点数据的像素值应是由一个预测的深度值转换而来。基于光学图像的深度估计模型在进行深度图转换时,并不会破坏图像的分辨率,所以第一深度图像数据的分辨率与第一场景图像数据的分辨率一致,第一深度图像中的每个第二像素点数据都能在第一场景图像数据找到一个坐标对应的第一像素点数据。
需要说明的是,本发明实施例基于光学图像的深度估计模型其本质应为单目深度估计模型,所谓单目深度估计模型即是基于一个摄像头的拍摄数据进行深度估计的模型;
本发明实施例提供的单目深度估计模型基于学习原理不同有两类:第一类单目深度估计模型和第二类单目深度估计模型;其中,第一类单目深度估计模型包括卷积神经网络深度图预测模块;第二类单目深度估计模型包括卷积神经网络视差图预测模块、双目图像重构模块和深度图生成模块;
对于第一类单目深度估计模型,其模型结构主要由一个进行深度图预测的卷积神经网络构成,因其学习原理为公知的摄像头成像原理也就是小孔成像原理,所以在其运算过程中需要使用相机的外部与内部标定参数参与计算;
对于第二类单目深度估计模型,其模型结构由一个进行视差图预测的卷积神经网络、用于图像重构的双目图像重构模块和一个用于生成深度图的深度图生成模块构成,其学习原理为公知的双目视差深度估计原理。
这里,在使用训练成熟的基于光学图像的深度估计模型之前,本发明实施例方法还包括对两类模型进行训练。
(一)对第一类单目深度估计模型进行模型训练,具体包括:
步骤A1,对相机进行内外部参数标定,得到外部标定参数M和内部标定参数K;并将外部标定参数M和内部标定参数K输入卷积神经网络深度图预测模块作为计算因子;
步骤A2,使用相机向同一场景行进并在行进过程中进行连续拍摄,生成时间点t-1、t和t+1的三张连续图像:t-1时刻图像数据、t时刻图像数据和t+1时刻图像数据;
步骤A3,分别将t-1时刻图像数据、t时刻图像数据和t+1时刻图像数据输入卷积神经网络深度图预测模块进行深度图预测运算,生成对应的t-1时刻深度图数据、t时刻深度图数据和t+1时刻深度图数据;
步骤A4,按深度图坐标与K*M的映射关系,对t-1时刻深度图数据、t时刻深度图数据和t+1时刻深度图数据进行深度图损失评估,并根据深度图损失评估结果对卷积神经网络深度图预测模块进行反向调制;
步骤A5,若深度图损失评估结果已经收敛到预设的最佳误差范围,则完成对卷积神经网络深度图预测模块的训练。
(二)对第二类单目深度估计模型的卷积神经网络视差图预测模块进行模型训练,具体包括:
步骤B1,使用左右两个相机对中心线与左右两个相机连接线的垂直中线重合的同一指定环境进行同时拍摄,生成第一左相机图像数据和第一右相机图像数据;
这里,默认第一左相机图像数据和第一右相机图像数据的分辨率都是一致的;
步骤B2,将第一左相机图像数据输入卷积神经网络视差图预测模块进行视差图预测运算,生成第一左对右视差图数据和第一右对左视差图数据;
这里,所谓视差图是指同一个场景在两个相机下成像的像素的位置偏差,因为通常下两个双目相机是水平放置的,所以该位置偏差一般体现在水平方向;所谓左对右视差图即是左相机图像相对于右相机图像的视差图,右对左视差图即是右相机图像相对于左相机图像的视差图;视差图的每个像素点的像素值是由对应点左对右或右对左的视差值转换而来的;由视差图的原理我们可知,第一左对右视差图数据和第一右对左视差图数据的分辨率与第一左相机图像数据和第一右相机图像数据保持一致;
步骤B3,再将第一左相机图像数据和第一右对左视差图数据输入双目图像重构模块进行右目图像重构处理,生成第一右目重构图像数据;并将第一右相机图像数据和第一左对右视差图数据输入双目图像重构模块进行左目图像重构处理,生成第一左目重构图像数据;
这里,之所以要重构左、右目图是为了后续步骤与真实的左、右目图也就是第一左、右相机图像数据做比对,重构的图像越与真实图像接近,则意味着卷积神经网络视差图预测模块的视差图产生的越精准;需要说明的是,双目图像重构模块只在对卷积神经网络视差图预测模块进行模型训练时使用;
步骤B4,再使用第一右相机图像数据对第一右目重构图像数据进行右目图像损失评估,使用第一左相机图像数据对第一左目重构图像数据进行左目图像损失评估,并根据左右目图像的综合评估结果对卷积神经网络视差图预测模块进行反向调制;
步骤B5,若左右目图像的综合评估结果已经收敛到预设的最佳误差范围,则完成对卷积神经网络视差图预测模块的训练。
在完成上述模型训练之后,本发明实施例才能使用训练成熟的第一类单目深度估计模型或第二类单目深度估计模型,对第一场景图像数据进行深度图像转换处理生成对应的第一深度图像数据,具体操作步骤如下所示。
(一)当使用的基于光学图像的深度估计模型为第一类单目深度估计模型时,
步骤C1,获取当前相机的外部标定参数M1和内部标定参数K1,并将M1和K1输入卷积神经网络深度图预测模块作为计算因子;
步骤C2,再将第一场景图像数据输入卷积神经网络深度图预测模块进行深度图预测运算,生成对应的第一深度图像数据。
(二)当使用的基于光学图像的深度估计模型为第二类单目深度估计模型时,
步骤D1,将第一场景图像数据输入卷积神经网络视差图预测模块中进行视差图预测运算,生成第二左对右视差图数据和第二右对左视差图数据;
其中,第二左对右视差图数据和第二右对左视差图数据都包括多个视差图像素点,视差图像素点的像素值与对应视差值呈线性关系;
这里,本发明实施例默认将第一场景图像数据作为左目相机图像;
步骤D2,将第二左对右视差图数据输入深度图生成模块,按的深度转换关系进行计算,生成第一深度图像数据;
其中,f为模型训练时所用的左右两个相机的焦距,B为模型训练时所用的左右两个相机的光心间距,d为视差值,Z为深度值;第一深度图像数据的各个第二像素点数据的第二像素数据与对应深度值呈线性关系。
这里,深度图生成模块对第二左对右视差图数据的所有视差图像素点进行依次轮询;轮询时,首先将当前视差图像素点的像素值(像素值1)转换为对应的视差值d,再根据计算得到一个深度值Z,再根据深度值与像素值的转换关系得到另一个像素值(像素值2),再在第一深度图像数据中找到与当前视差图像素点二维图像坐标一致的像素点(第二像素点),再将该第二像素点的像素值设为像素值2;如此循环直到轮询结束,完成对第一深度图像数据的设置。
步骤4,根据深度图像的像素数据与深度数据的对应关系,对各个第二像素点数据的第二像素数据进行深度数据转换处理,生成对应的第一像素点深度数据。
这里,深度数据转换实际就是上文中深度值Z到像素值转换的逆运算,其目的就是对第一深度图像数据中每个像素点对应的深度值进行估算。
步骤5,根据深度图像坐标系统与点云坐标系统的对应关系,在第一点云数据集合中,将与各个第二像素点匹配的第一点云数据,标记为对应的第一匹配点云数据;
其中,若激光雷达预设的扫描模式为单回波模式则各个第二像素点数据对应的第一匹配点云数据的数量最大为1;若扫描模式为双回波模式则各个第二像素点数据对应的第一匹配点云数据的数量最大为2。
这里,二维图像坐标与点云坐标是不同的坐标体系,但二者有固定的二维坐标转换方式,也就是二维图像坐标中的X/Y轴可对应点云坐标中的宽度与高度坐标进行转换,每个二维图像的像素点二维坐标可以映射为点云空间中的一列或一行;
又基于雷达扫描的特点,对于单回波模式来说在同一个宽度+高度的扫描位置上只有一个深度数据,也就是说上文中与像素点二维坐标互为映射的点云空间中的一列或一行中顶多只有一个点云数据,本发明实施例将这个点云数据作为对应像素点的匹配点云数据;对于双回波模式来说在同一个宽度+高度的扫描位置上最多有两个深度数据,也就是说上文中与像素点二维坐标互为映射的点云空间中的一列或一行中顶多会有两个点云数据,本发明实施例将这两个点云数据作为对应像素点的匹配点云数据。
步骤6,对各个第二像素点数据对应的第一匹配点云数据进行有效点云数据标记处理;
具体包括:步骤61,当扫描模式为单回波模式时,根据各个第二像素点数据对应的第一像素点深度数据,与对应的第一匹配点云数据的第一点云深度数据,进行深度差值计算,生成第一深度差值;若第一深度差值数据符合预设的差值阈值范围,则将与当前第二像素点数据对应的第一匹配点云数据标记为有效点云数据;
这里,当扫描模式为单回波模式时意味着每个第二像素点数据顶多只对应一个第一匹配点云数据,对此本发明实施例标记有效点云数据的规则是:若当前第一匹配点云数据的深度数据与当前第二像素点数据的估算深度(第一像素点深度数据)一致或者偏差不大(差值在预设的差值阈值范围之内),则认为当前第一匹配点云数据为相机拍摄图像中可见的真实点云数据,应被标记为有效点云数据;
步骤62,当扫描模式为双回波模式时,在与各个第二像素点数据对应的2个第一匹配点云数据中,选择第一点云深度数据偏小的作为对应的第二匹配点云数据;并根据各个第二像素点数据对应的第一像素点深度数据,与对应的第二匹配点云数据的第一点云深度数据,进行深度差值计算,生成第二深度差值;若第二深度差值数据符合差值阈值范围,则将与当前第二像素点数据对应的第二匹配点云数据标记为有效点云数据。
这里,当扫描模式为双回波模式时意味着每个第二像素点数据最多可能对应两个第一匹配点云数据,对此本发明实施例标记有效点云数据的规则是:首先默认2个第一匹配点云数据中较远的点云为无效点云,只对二者中相对近处的第一匹配点云数据进行处理;其次,类似步骤61,若近处的第一匹配点云数据的深度数据与当前第二像素点数据的估算深度(第一像素点深度数据)一致或者偏差不大(差值在预设的差值阈值范围之内),则认为近处的第一匹配点云数据为相机拍摄图像中可见的真实点云数据,应被标记为有效点云数据。
步骤7,在第一点云数据集合中,将未被标记为有效点云数据的第一点云数据滤除。
这里,步骤6只对有效点云数据进行标记,那么剩余未被标记的统统都默认为无效点云,这里会将第一点云数据集合中的所有无效点云进行删除。
综上,通过步骤1-7的操作我们可以看出,本发明实施例实际是默认相机拍摄图像中可见的点为有效点,并以此为依据对点云集合中的点云数据进行有效、无效的区分,并最终通过删除无效点云数据的操作来完成对点云数据集合的优化,减少了点云数据的错误率、提高了点云数据的准确度。对于双回波模式的点云数据,通过步骤1-6的数据优化之后,数据量能够降到原始数据的一半以下,若相机的分辨率小于激光雷达的分辨率还能在一半的基础之上进一步下调数据量,由此可以在后续的点云计算中极大地减小计算时间、提高计算效率。
图2为本发明实施例二提供的一种电子设备的结构示意图。该电子设备可以为前述的终端设备或者服务器,也可以为与前述终端设备或者服务器连接的实现本发明实施例方法的终端设备或服务器。如图2所示,该电子设备可以包括:处理器301(例如CPU)、存储器302、收发器303;收发器303耦合至处理器301,处理器301控制收发器303的收发动作。存储器302中可以存储各种指令,以用于完成各种处理功能以及实现前述方法实施例描述的处理步骤。优选的,本发明实施例涉及的电子设备还包括:电源304、系统总线305以及通信端口306。系统总线305用于实现元件之间的通信连接。上述通信端口306用于电子设备与其他外设之间进行连接通信。
在图2中提到的系统总线305可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该系统总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。通信接口用于实现数据库访问装置与其他设备(例如客户端、读写库和只读库)之间的通信。存储器可能包含随机存取存储器(Random Access Memory,RAM),也可能还包括非易失性存储器(Non-Volatile Memory),例如至少一个磁盘存储器。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)、图形处理器(Graphics Processing Unit,GPU)等;还可以是数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(FieldProgrammable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
需要说明的是,本发明实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中提供的方法和处理过程。
本发明实施例还提供一种运行指令的芯片,该芯片用于执行前述方法实施例描述的处理步骤。
本发明实施例提供了一种基于相机的深度估计进行激光雷达点云过滤的方法、电子设备及计算机可读存储介质,对相机拍摄的图像数据进行深度图像转换,再在点云集合中定位与深度图像像素点对应的匹配点云,再根据深度图像像素点及其匹配点云的深度差值来对匹配点云进行有效点云标记,最后通过将点云集合无效点云滤除的方式完成对整体点云集合的去虚假点操作。通过本发明方法,可以最大化去除点云集合中的无效信息,提高点云识别率、降低点云计算量。
专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。