点云平面提取_点云处理-平面分割与投影

PCL是一个比较经典的点云处理库,目前在工作中用到了一些。

这个库,是一个模块化比较不错的模板库,不过模块间的隔离不太好,还有boost/flann/vtk等头文件或者库文件依赖,使用起来很不友好。还有一个大问题,模板代码编译太慢了,实在难受。于是我重新封装了一套代码。建立了 KPointCloud , KPoint 类,用于屏蔽模板类型差异,重构整理代码。

56a71ded82f1c3d781f41abc947154f1.png
d48b74d290d8a5602150a30f17c75d12.png

用any支持任意类型 ,type类型字段避免多次cast操作

我讲述一下平面拟合分割算法,这是比较实用的算法。我一般用于求平面平均法向量,不过也可以进行简单物体分割。

比如桌面

cddd1594a2d5f9c13076f5f66bf03a10.png

原始点云

使用算法 分割出底面:

620d6a18afe70595bf2a37fe4d4e5542.png

提取平面

然后进行 物体坐标系 转到 世界坐标系:

c856fb1a1c7b075b3bd2896662a5236e.png

Z值对齐

然后再进行 二维投影,进行 图像处理分析:

a8f316380a1976b84c5e49c5d27782a4.png

这是地面的投影图片

类似的其他部件的分割投影:

83b0a0484b596adafefadd61e272cd81.png

桌面的分割和投影

b4169434cc5e1ccc6b0361bd2bce5ce5.png

支架的分割和投影

平面分割算法,确实强大,能够分割出明显特征的模型。

其实所有的代码不多,基本上都是 命令行式的代码组合:

d1cb472a03e4f346870832131fe44aef.png

代码流程

关于 PCL和OpenCV,我封装了新的 kCV/k3d 2个命名空间的代码,

其中的 平面拟合分割,我封装的API如下:

a8606ad6d92229b7bb00d389a1e4962d.png

结构体+函数

由于 OpenCV/PCL编译太慢,所以,我都是用 代码封装模式,编译成 lib/dll之后,使用非常便捷。

4fd24eb48c2d248dec694137912b831b.png

物体和世界坐标系的转换矩阵

358776ca480f14b2f39a64ab7311d973.png

模型显示接口等

目前做了一些关于点云的算法应用,有机会我将代码整理一下,有需要的可以互相讨论讨论。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值