点云分割|点云分割经典论文复现 (一) (地面分割)

点云分割经典论文复现 (一):地面分割 Fast Segmentation of 3D Point Clouds: A Paradigm on LiDAR Data for Autonomous Vehicle Application 中的GPF 算法回顾 【点云分割|点云分割经典论文复现 (一) (地面分割)】点云分割|点云分割经典论文复现 (一) (地面分割)
文章图片

算法解读 推荐看原文中的英文算法解释,讲得很清楚。
主要的思想为: 通过设定的z坐标阈值选取初始种子点,然后利用初始种子点解算平面模型。然后在设定的循环次数以内,利用点到平面距离提取的地面点,并更新平面模型。解算距离模型时使用法向量模型,编写代码时可以用pca估计法向量。
matlab代码实现 输入为N x 3的离散点,输出为地面点和非地面点的索引。其它几个阈值参数与论文中写的保持一致。

function [pg,png,model,u]=gpf(p,n_iter,n_lpr,th_seeds,th_dist) [m,~]=size(p); %初始尺寸,初始点的数量 lpr=mean(p(1:n_lpr,:),1); seeds=[]; seeds=find(p(:,3)<(lpr(:,3)+th_seeds)); %%fit plane for i=1:n_iter pg=p(seeds,:); s_hat=mean(pg,1); s_nc=pg-s_hat; [C,~,~]=svd(s_nc'); normal=C(:,end); u=C(:,1:2); d=-normal'*s_hat'; seeds=[]; n_seeds=[]; seeds=find(((normal'*p'+d)/(norm(normal)))=th_dist); end pg=seeds; png=n_seeds; model=[normal; d]; end

实际分割效果 图中蓝色为非地面点云,绿色为地面点云。该方法可以在较小范围内将较为平整的地面分割出来,原文中也只给出了一个测试实例。对于跨度较大,坡度变化较多的地面,该方法可能会显得无能为力。但是这篇论文中提出可以将跨度较大的点云先粗分割一下,再送入到GPF中进行分割。另外,若想利用该方法得到较好的分割效果,则解算较为耗时。
点云分割|点云分割经典论文复现 (一) (地面分割)
文章图片

结束 此篇博客中代码以及分割结果属于个人成果,转载请注明出处,谢谢。

    推荐阅读