点云上的高斯滤波器

时间:2011-12-13 10:06:22

标签: java point gaussian

我有一堆点应该代表一张脸。我必须多次应用高斯滤波器。我在Java中尝试了一些东西,但它没有用。我想我可能做错了。目的是“填补”一些空白区域。

我创建了一个n * n个单元格的掩码,并将其应用于每个点。考虑到掩模内的点,该掩模应该应用高斯滤波器。虽然平均滤波器工作正常(但它不是我需要的),但我制作的高斯滤波器不起作用。

这些点位于3D空间。问题是:如何在Java中创建高斯滤波器以应用于3D空间中的点云?

我实际上认为解决方案很简单,但我想我错过了一些东西。我一直在阅读关于高斯滤波器所需的一切。所以可能这只是我遇到的Java问题。

1 个答案:

答案 0 :(得分:2)

以防其他人遇到同样的问题。我终于完成了如何做到这一点。这就像在普通彩色图像上应用滤镜一样。但是,不是具有颜色强度值,而是具有三个信息x,y,z。所以我必须分别计算高斯掩模内x,y,z值的标准偏差。然后我可以根据掩模内部的位置计算掩模每个单元的高斯权重。

最后,我可以计算使用高斯蒙版获得的新值。它实际上非常直观,但你可以提高性能,因为你不需要在你的云点上的任何地方应用过滤器,这最终会破坏云的真实形状,但你可以决定只在空的情况下应用过滤器区域,或尖峰的位置。这样,您可以更快地修复孔,尖峰和边框。

另一个建议是,即使你使用高斯滤波器,尖峰实际上仍然可能是一个问题。它们仍然会在面具内部有重量,所以你宁愿有孔然后是尖刺,然后你可以只考虑面具内的nonNull值来生成新的x,y,z。我做到了,它正在发挥作用。在我应用过滤器之前,我尝试去除尖峰。我相信有人可以拥有更优雅的解决方案,但我希望这对某人来说仍然有用。