点云技术相关产学研社区

 找回密码
 立即注册加入PCL中国点云技术相关产学研社区

扫一扫,访问微社区

查看: 8519|回复: 6

基于多项式拟合的法线估计、点云平滑和数据重采样结果?

[复制链接]
发表于 2013-7-17 17:02:14 | 显示全部楼层 |阅读模式
参照 resampling.cpp文件实现对点云的重采样操作,使用bun0.pcd数据时得到的点云重采样个数与原文件同,但是X,Y,Z坐标均有改变,想问重采样函数到底是在做什么?会改变输入点的X,Y坐标吗?我想要的效果时输入一堆点云进去,然后根据该点云拟合得到曲面,然后将点云投射到曲面上得到各点的Z值,使点完全落在曲面内,所以我需要得到的结果是X,Y坐标不变,Z坐标改变,这个怎么实现呢?
还发现如果使用其他数据时,还是使用resampling.cpp的代码,发现得到的重采样结果个数为零?是不是mls.setSearchRadius(0.03)对于不同的数据设置的值应该不一样,这个值我需要怎么设置呢?
回复

使用道具 举报

发表于 2013-7-18 09:39:01 | 显示全部楼层
第一个问题估计你分析下pcl中重采样的源码可能就知道了。
第二个问题,pcl中默认的单位是m,mls.setSearchRadius(0.03)中的这个表示的是0.03m内的点作为计算点集合,所以你需要按照你的数据的稀疏程度调整这个半径。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-7-18 11:15:19 | 显示全部楼层
mypcl 发表于 2013-7-18 09:39
第一个问题估计你分析下pcl中重采样的源码可能就知道了。
第二个问题,pcl中默认的单位是m,mls.setSearchR ...

1.分析冲重采样的源码比较困难:dizzy:
2.“表示的是0.03m内的点作为计算点集合”,这个集合是做什么用的呢?
回复 支持 反对

使用道具 举报

发表于 2013-7-18 21:09:44 | 显示全部楼层
LiuLiu 发表于 2013-7-18 11:15
1.分析冲重采样的源码比较困难
2.“表示的是0.03m内的点作为计算点集合”,这个集合是做什么用的 ...

好像是用来拟合计算局部坐标系的xy平面吧。你看看mls算法的流程,如果有需要局部坐标系的,应该就是我说的了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-5 17:10:09 | 显示全部楼层
当使用上采样时,如下代码
        mls.setUpsamplingMethod(pcl::MovingLeastSquares<pcl::PointXYZ,pcl::PointXYZ>::RANDOM_UNIFORM_DENSITY);
        mls.setPointDensity(100);
        mls.process(mls_points);
发现处理后点的个数是变多了,但是打开视图发现显示的点个数还少了,打开文件查看,发现上采样后的点中出现大量重复坐标的情况,这是什么原因呢?
回复 支持 反对

使用道具 举报

发表于 2014-7-9 20:05:23 | 显示全部楼层
也遇到同样的问题,拟合曲面后,设置重新采样点密度重新采样得到的样本点和原来的采样前的点的xyz可能是不同的。楼主,现在问题解决了吗?对于“搜素半径”这个参数我也是不太理解,胡乱试,不知有没什么规律可言。楼主能否分享一下自己的经验,例子中的bun0.pcd文件楼主在哪里下的,可以发一份给我吗,hhheshui@qq.com谢谢:)
回复 支持 反对

使用道具 举报

发表于 2014-12-29 21:02:52 | 显示全部楼层
为什么resampling.cpp运行后不出结果图
回复 支持 反对

使用道具 举报

本版积分规则

QQ|小黑屋|点云技术相关产学研社区 ( 陕ICP备13001629号 )

GMT+8, 2024-4-29 21:04 , Processed in 1.750663 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表