【问题标题】:How to generate a sparse version of a dense point cloud如何生成密集点云的稀疏版本
【发布时间】:2014-04-10 02:10:12
【问题描述】:

我有一个大的 3D 点云文件,格式为

x(1) y(1) z(1) g(1)

...

...

x(n) y(n) z(n) g(n)

现在由于 cpu 功率限制,我无法显示所有 3D 点,只想选择其中的一个子集。只说五分之一的分数。

如果我执行以下操作

while (){
if x(i) % 5 == 0 keep the 3d point
}

结果是 zibera 模式,所以看起来不太好。您建议使用什么算法来选择最佳候选点来形成点的子集,从而形成与原始密集点云最相似的子 3D 点云?

谢谢

语言无关紧要(matlab、java c 等),重要的是我们如何制作原始版本的更稀疏版本。

【问题讨论】:

    标签: matlab graphics 3d computer-vision game-engine


    【解决方案1】:

    作为第一个答案中提到的随机子采样的替代方法,您可以尝试以下方法:

    1. 计算点云的边界框(轴对齐或定向边界框),
    2. 选择一个单元格大小(边界框现在包含此大小的 W x H x D 单元格),
    3. 将点云的所有点散列到它们各自的单元格网格中,并且每个单元格最多只保留 N 个点 (N >= 1),或者更简单,只需删除或保留每个第 N 个点。

    【讨论】:

      【解决方案2】:

      随机二次抽样有什么问题吗?

      f = fractionOfDataToKeep(); // between 0 (0%) and 1 (100%)
      while() {
        r = rng(1.0); // pseudorandom number between 0 and 1
        if (r < f) keepThe3DPoint()
      }
      

      【讨论】:

      • 这假设数据在空间中是均匀分布的,这可能是也可能不是一个合理的假设。
      猜你喜欢
      • 1970-01-01
      • 2013-05-06
      • 2014-01-31
      • 1970-01-01
      • 2015-09-14
      • 1970-01-01
      • 2013-09-03
      • 2019-09-02
      • 2018-12-25
      相关资源
      最近更新 更多