2011-12-13 87 views
2

我有一堆点应该代表一张脸。我必须多次应用高斯滤波器。我尝试了一些Java,但没有奏效。我想我可能是错误地进行了。目的是“填补”一些空白区域。点云上的高斯过滤器

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

点在3D空间上。问题是:如何继续使用Java来创建一个高斯滤波器以应用于3D空间中的点云?

我其实觉得解决方案很简单,但我想我错过了一些东西。我一直在阅读我需要的关于高斯滤波器的一切。所以可能这只是我有的一个Java问题。

回答

2

以防万一别人会有同样的问题。我终于弄不清楚该怎么做。这就像在普通彩色图像上应用滤镜。但不是有颜色强度值我有三个信息x,y,z。所以我必须分别计算Gauss Mask中x,y,z值的标准偏差。然后我可以根据掩模内的位置计算掩模每个单元的高斯权重。

最后,我可以计算使用高斯面具获得的新值。它实际上非常直观,但考虑到您不需要在点云上随处应用过滤器,您可以提高性能,这最终会破坏云的真实形状,但是您可以决定仅在空区域或尖峰位置。这样可以更快地修复孔,尖峰和边界。

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