首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检测两个三维点云之间的差异?

如何检测两个三维点云之间的差异?
EN

Stack Overflow用户
提问于 2014-01-29 14:20:00
回答 3查看 10.9K关注 0票数 5

我有两个使用点云库的三维点云。一个是参考点云(让我们称它为A),另一个是有缺陷的云(我们称之为B)。这两个点云都是从物体上取下来的,这些物体表面上没有或非常细微的特征,除了边缘。这些点云AB也是对齐的。

  • 我想知道是否有任何算法可以从B中检测缺失的云。
  • 如何构建B缺失部分的高分辨率三维图像。

帮助是值得感激的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-01-29 19:05:49

我不是这些事情的专家,所以这些大多是想法,不是解决方案,我可能错了。

但是我的天真方法是基于这两个网格的布尔操作/ 构造实体几何 (也请参阅这个问题在gamedev)。如果计算A-B,您将得到包含A中的所有内容的网格(Es),但不包含B中的所有内容--或者换句话说:B的缺失部分。

然而,这种方法有两个问题:

  1. 布尔运算由于浮点不精确和特殊情况而很棘手。
  2. 你的网格是嘈杂的,所以它们的表面大部分不会重合,即使是在缺失区域之外。

因此,差异网格将包含许多小的“体积”以外的实际缺失区域。您可以通过在布尔运算期间将某种公差半径添加到A,或者对结果应用一些平滑或其他后处理来纠正这一点。

另一种方法可能不是在网格上执行布尔操作,而是对从点块创建的隐函数进行布尔操作(例如使用移动最小二乘),然后根据结果的隐式函数(例如行进立方体)创建一个网格。这可能是一个更有力的解决方案。

要创建网格的图像,只需使用OpenGL或DirectX呈现它。

票数 1
EN

Stack Overflow用户

发布于 2014-01-30 08:12:14

PCL提供了一些“空间变化检测”解决方案。

看看这个链接:变化检测

它使用八叉树结构(从点云构建)并比较这两种八叉树的差异。

票数 3
EN

Stack Overflow用户

发布于 2014-01-30 07:33:49

只要你的两种云都是有组织的(你从Kinect那里得到它们,AFAIK产生的云是作为规则点网格组织的),你就可以将它们转换成深度图像。只要你相信云是正确对齐的(你的Kinect是静止的,看着同一个场景),那么你就可以使用通常的图像处理技术,对深度图像进行处理,包括获取两幅图像之间的差值,平滑,使用某种阈值从差异图像创建掩膜图像。得到面罩图像后,将其应用于B云设置面罩外的所有点到NaNs (如这里的https://stackoverflow.com/a/17282917/1027013)和瞧,B中部分的3d图像不同于A。

虽然我知道这种方法在使用中,但我自己从未使用过,也从未与Kinect玩过。我猜想,由于噪音和小的地面振动,产生的面具也可能太吵,特别是在边缘和剪影点的场景,这是图像处理工具应用于深度面具来救援。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21433764

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档