Removing Points C++
Removing Points C++
我在一个点云中有N个点(x_N,y_N,z_N)。点云形成球形物体的形状。我的问题是,我有点在我的云,突出明显沿着z轴(这是由于针对象插入我的对象在扫描期间)。我想去掉这些点。
我采取的一种方法是找到云中一组点与下一组点的斜率变化。(例如,我取前10个点,计算斜率变化量,并将其与后10个点的斜率变化量进行比较)。但这并不是很有效。有什么建议吗?
任何帮助都将非常感激。如果对我的问题有任何疑问,请告诉我。
如果确定它是一个球状物体,并且点是均匀分布的(没有一边比另一边有更多的点),取所有点的X, Y和Z的平均值。它就在球体的center
旁边。如果该引脚不是很厚或很长(如果它与总数相比有几个点),您可以假设它是center
。
然后,测量每个点到center
的距离。去掉那些距离高于平均距离的。
如果你知道球的半径和它的中心,简单地计算每个点到中心的距离,并比较半径
我有一个观察和相应的建议:
首先,观察到:您似乎正在为一次性案例构建自定义解决方案。当你扫描一个不同的对象(针再次伸出)时,这将不起作用。
现在,建议:使用像meshlab这样的东西,你可以加载一个点云,选择点并删除它们。
当然,如果您擅长编写代码来解决这个问题,那么这是没有帮助的。
- 找到z的最高点,100%肯定是一个引脚或引脚的一部分。
- 设置圆心为圆心并移除半径范围内的所有点
- 对其他引脚再迭代两次
相关文章:
- Collinear Points C++
- 在遵循 OpenCV 3.4.0 AKAZE 和 ORB 平面跟踪教程时找不到 Points() 函数
- 重新拔插迭代器"points"到的容器
- OpenCV findContours of points vector
- Arduino崩溃并在"random points"重新启动
- 这个代码是什么意思 std::vector<cv::P oint2f> points[2]
- C++:如何在没有特定"interruption points"的情况下干净地终止线程
- visual animation points in OpenGL with C++?
- "Fitting A Model To New Points" "Active Shape Model"中的反转姿势参数
- Removing Points C++
- timer_create "Syscall param timer_create(evp) points to uninitialised byte(s)"内存泄漏问题