首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从三维点云重建曲面处理不需要的重叠曲面?

从三维点云重建曲面处理不需要的重叠曲面?
EN

Stack Overflow用户
提问于 2011-03-10 14:24:08
回答 1查看 5.7K关注 0票数 1

在阅读了两篇不错的文章Algorithm for simplifying 3d surface? https://stackoverflow.com/questions/838761/robust-algorithm-for-surface-reconstruction-from-3d-point-cloud 之后,我仍然有一个关于曲面重建的问题。

我有一些来自距离相机的三维点云数据。这意味着点云数据有噪声,只有协调(x,y,z)信息,并且只代表扫描场景的部分表面。2.5D数据)。

在尝试网格化之前,我运行一些对齐算法(例如ICP),将多个距离数据合并为一个。不知怎么的,对齐并不完美,它让合并数据集有一些不太好的重叠面伪影,整个数据变得更加嘈杂!

这是一个例子。

代码语言:javascript
运行
复制
here are points representing a surface (shown as a line)
.....................................................  


here are points representing actually the same surface as the one above,
but due to imperfect alignment of multiple data sets they seem overlapping like onion shell.
............................
  .............................
                   ...............................
              .......................................

算法(例如,球旋转,泊松,行进立方体)能处理这种情况吗?还是需要进行预处理,使数据集变得更薄,以减少重叠的表面?

顺便说一句,我尝试过用MeshLab来旋转球来从这样的数据集中重建曲面。它可以工作,但一些表面法线是在错误的方向产生的。我认为重叠点是造成这个问题的原因。

在MeshLab中生成的曲面,白色和黑色的表面具有不同的法线方向。

谢谢您的建议和可能的回答。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-06-28 17:42:56

我希望你还对答案感兴趣。你可以尝试的一件事是用点到平面的距离而不是点对点的距离来定义你的ICP。点到点的距离看起来是这样的,其中a和b在目标点集中,而p是你在ICP中注册的集合的一个点。最近的点是a,而距离是_

代码语言:javascript
运行
复制
a--------b
 \
  \
   p

点到平面的距离是这样的,c是p在ab线上的投影,而c-p的距离是。

代码语言:javascript
运行
复制
a--c-----b
   |
   |
   p

点对平面之所以有优势,是因为在这种情况下,“哪里”。点来自一次扫描,“o”点来自另一次扫描。ICP可能陷入这样的局部最小值,即水平线上的.s和o's完全匹配,而垂直线上的则不匹配。它不能“将o”“移动”到左边,因为这样做会增加水平点的偏差。

代码语言:javascript
运行
复制
.   .o   .o   .o   .o   .o   .o   .o
.  o
.  o
.  o

用点到平面的距离,当你把o向左滑动时,水平点不会产生任何误差,这样你就不会陷入局部最小值,我已经看到了你描述的“洋葱”一样的误差,这是你在ICP中使用点对点距离的结果。

另外一件事,你可以尝试聚类你的观点,如果你可以忍受降低分辨率。Meshlab有一个过滤器这样做:“过滤器->抽样->集群顶点次抽样”。这可能会减少“洋葱样分层”。

对于你从网格中得到的不一致的法线,如果你所关心的只是在网格中可视化它们,ctrl将打开“双面照明”并消除黑色区域。如果你真的需要一致的法线,网格实验室有一个名为“法线,曲率和方向->调整所有脸的一致性”的诱人的过滤器,不幸的是,这对我不起作用。取决于您拥有的数据类型,特别是如果它来自范围传感器,那么您已经知道网格面的法线应该指向您的传感器,因此很容易对数据进行后处理,并将指向错误方向的数据翻转(查看正常点乘积和观察/测量方向的符号)。

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

https://stackoverflow.com/questions/5260974

复制
相关文章

相似问题

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