我有一个关于使用什么方法来平滑3D(xyz)网格的一般性问题。
我的程序具有使用立体视觉方法获得的大点3D点。结果的形状总是像半球一样,但由于我想要消除的立体视觉错误,它具有粗糙度。
问题是,该怎么办? Rigth现在我已经开发了一种方法,但我认为可能有更好的方法。
我的实际想法是使用Hermite方法。我的想法是:
将所有XY平滑并沿两个方向平滑 - > XYnew和XnewY
将Hermite线转换为Bezier线,找到XYnew和XnewY之间的交叉点,具有新点。 (重复所有点,通常为2000)
使用具有XYZnew的hermite XYZ平滑。
现在我已经在C ++中使用了hermite表面平滑和hermite线条平滑处理,但中间部分并不像预期的那样容易。
无论如何,我的问题是,这是一个正确的方法还是另一个可能更好的方法?
当然这个想法是消除立体视觉方法产生的错误,这不是计算机图形学问题,更是一个数据处理问题
附录:
首先我认为用Z平滑会很麻烦,但显然不是,也有很多XY误差。在下面的图像中,您可以看到Z配件工作,但它仍然非常粗糙,因为它可以在2图像中看到。 (颜色是变形的,应该是非常连续的)
答案 0 :(得分:2)
除非你有更好的先验,否则很难击败经典的Taubin算法:http://mesh.brown.edu/taubin/pdfs/taubin-iccv95a.pdf