PCL是一个比较经典的点云处理库,目前在工作中用到了一些。
这个库,是一个模块化比较不错的模板库,不过模块间的隔离不太好,还有boost/flann/vtk等头文件或者库文件依赖,使用起来很不友好。还有一个大问题,模板代码编译太慢了,实在难受。于是我重新封装了一套代码。建立了 KPointCloud , KPoint 类,用于屏蔽模板类型差异,重构整理代码。
我讲述一下平面拟合分割算法,这是比较实用的算法。我一般用于求平面平均法向量,不过也可以进行简单物体分割。
比如桌面
使用算法 分割出底面:
然后进行 物体坐标系 转到 世界坐标系:
然后再进行 二维投影,进行 图像处理分析:
类似的其他部件的分割投影:
平面分割算法,确实强大,能够分割出明显特征的模型。
其实所有的代码不多,基本上都是 命令行式的代码组合:
关于 PCL和OpenCV,我封装了新的 kCV/k3d 2个命名空间的代码,
其中的 平面拟合分割,我封装的API如下:
由于 OpenCV/PCL编译太慢,所以,我都是用 代码封装模式,编译成 lib/dll之后,使用非常便捷。
目前做了一些关于点云的算法应用,有机会我将代码整理一下,有需要的可以互相讨论讨论。