Lio-sam和lego-loam虽然都来自于同一作者,框架也类似,但是特征提取方面的细节仔细阅读,还是有所区别的。
在Lio-sam的文件featureExtraction.cpp中,在imageProjection预处理后,我们得到每一帧点云每一条线上的的起始和终止坐标,然后,lio-sam的做法是在一条线上,平均分成6份,寻找每一份中平滑度(smoothness)最大的20个点,存入特征点云中,并在cloudLabel中标记为1。
同时,对于面特征,只要平滑度小于一个阈值,其cloudlabel就会被标记为-1,
但是最后,传入到surface点云的,是所有cloudLabel不为1的点云,也就是说,只要不属于smoothness最大的20个角点,都会被放进去。处理的步骤相对于lego-loam相对简单。
在之后,在featureExtraction文件中,会直接将surf和corner进行发布。
注意,如果对于公路数据,采用lio-sam的角点特征,那么角点很可能来自路面点,因此可以视为无效角点,并且,也有一定可能性来自于车辆等物体。
而在lego-loam中,处理相对复杂。
因为在此前处理过程中,lego-loam已经进行了操作
1. 地面点降采样,(根据index是否为5的倍数)
2. 对于每个点用另一个数组提供标记,判断它是否为地面点
在接下来点面特征的提取过程中,对于一帧点云的每一条线,分成6个区域,选择曲率最大的四个点,视为sharp,而曲率最大的20个点则存入lesssharp中,对于面特征,则是取曲率最小的4个点。注意,lego-loam的面特征只从地面点中寻找,点特征只从非地面点中寻找。此外,取补集,得到lessflat和less sharp。
那么,
1. 为什么sharp要分为sharp和lesssharp两种呢?
2, 分为6份的原则是按照数量还是?
3. 面特征为什么不像点特征一样分成两种?
3827

被折叠的 条评论
为什么被折叠?



