2

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

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

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

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

4

1 回答 1

2

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

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

另一个建议,即使您使用高斯滤波器,尖峰实际上仍然是一个问题。它们仍然会在掩码内具有它们的权重,因此您宁愿有孔而不是尖峰,然后您可以只考虑掩码内的非空值来生成新的 x、y、z。我做到了,它正在工作。在应用过滤器之前,我试图去除尖峰。我相信有人可以有一个更优雅的解决方案,但我希望这对某人仍然有用。

于 2012-01-26T00:39:03.510 回答