我有一个关于使用什么方法来平滑 3D (xyz) 网格的一般性问题。
我的程序有使用立体视觉方法获得的大型 3D 点矩阵。结果的形状总是有点像半球形,但由于我想消除的立体视觉错误,它有皱纹。
问题是,怎么做?现在我已经开发了一半的方法来解决问题,但我认为可能有更好的方法。
我的实际想法是使用 Hermite 方法。这个想法是:
取所有 XY 并在两个方向上平滑 -> XYnew 和 XnewY
将 Hermite 线转换为 Bezier 线并找到 XYnew 和 XnewY 之间的交叉点,具有新点。(重复所有点,通常为 2000)
使用具有 XYZnew 的 Hermite XYZ 平滑。
现在我已经在 C++ 中实现了 Hermite 表面平滑和 Hermite 线平滑,但中间部分并不像预期的那么容易。
无论如何,我的问题是,这是一种正确的方法还是有另一种可能更好的方法?
当然想法是消除立体视觉方法产生的误差,这不是计算机图形问题,更多的是数据处理问题
附录:
起初我认为 Z 平滑就足够了,但显然不是,还有很多 XY 误差。在下面的图像中,您可以看到 Z 拟合工作,但它仍然非常粗糙,如在 2 图像中可以看到的那样。(颜色是变形的,应该是相当连续的)