【问题标题】:Smoothing a 3 dimensional Euclidean space matrix平滑 3 维欧几里得空间矩阵
【发布时间】:2012-10-05 05:05:55
【问题描述】:

我有一个关于使用什么方法来平滑 3D (xyz) 网格的一般性问题。

我的程序有通过立体视觉方法获得的大型 3D 点矩阵。结果的形状总是有点像半球形,但由于我想消除立体视觉错误,它有一些粗糙。

问题是,怎么做?现在我已经开发了一半的舒缓方法,但我认为可能有更好的方法。

我的实际想法是使用 Hermite 方法。这个想法是:

  1. 取所有 XY 并在两个方向上平滑 ->XYnew 和 XnewY

  2. 将 Hermite 线转换为 Bezier 线,并找到 XYnew 和 XnewY 之间的交叉点,具有新点。 (重复所有点,通常为 2000)

  3. 使用具有 XYZnew 的 Hermite XYZ 平滑。

现在我已经在 C++ 中实现了 Hermite 表面平滑和 Hermite 线平滑,但中间部分并不像想象的那么容易。

无论如何,我的问题是,这是一种正确的方法还是有另一种可能更好的方法?

当然思路是消除立体视觉方法产生的误差,这不是计算机图形问题,更多的是数据处理问题

附录:

起初我认为使用 Z 平滑就足够了,但显然不是,还有很多 XY 误差。在下面的图像中,您可以看到 Z 拟合工作,但它仍然非常粗糙,如在 2 图像中可以看到的那样。 (颜色是变形的,应该是相当连续的)

【问题讨论】:

  • 贝塞尔曲线是二维的,用它来平滑 3 维表面至少是无效的。此外,您的数据看起来并没有那么嘈杂,您是否尝试使用加权线性最小二乘法简单地应用移动平均或局部回归进行平滑?
  • 我知道它没有很多噪音,但它不够好。颜色(根据正方形的变形计算)必须柔和,所有那些小的蓝色和红色随机孤点肯定是立体视觉错误。我没有尝试进行局部回归,但我认为在某些情况下单独处理线实际上可能会产生更多错误。我仍然需要阅读更多关于方法的信息,但@Franco 的选项似乎是一个不错的选择。

标签: math computer-vision bezier smoothing


【解决方案1】:

除非你有更好的先验,否则很难击败经典的 Taubin 算法:http://mesh.brown.edu/taubin/pdfs/taubin-iccv95a.pdf

【讨论】:

  • 这与应用高斯平滑大致相同。
  • 问题是我还需要从平滑的结果中提取可靠的信息,你认为陶宾的算法不会过滤太多我的数据吗?当然,我可以看到,如果我使用高斯平滑,而不是消除立体视觉中产生的误差,我将产生更多误差,因为滤波器修改结果的量,但陶宾算法真的可以作为低通滤波器工作并且是只会消除我数据的高频吗?读这篇论文似乎没问题,但我只是想在我用 C++ 实现它之前确定一下......
  • 好吧,我给出的答案是有效的,即使我可能不会使用它。这确实是一个很好的算法,在平滑表面上效果很好。
猜你喜欢
  • 2012-06-27
  • 2014-11-18
  • 2014-06-08
  • 1970-01-01
  • 2018-05-11
  • 2017-01-05
  • 1970-01-01
  • 2019-01-02
  • 2020-06-16
相关资源
最近更新 更多