找到距离物体至少2cm的点

时间:2014-08-26 22:35:55

标签: c++ algorithm math

enter image description here

您好,

我正在尝试找到我的数据之外的网格点,并且至少2cm靠近网格数据。网格数据以红色col显示,数据以蓝色显示。我可以在dist(cubeGridPoint< SampleDataPoint)中找到内部点。我有兴趣找到距离样品2厘米的点。任何算法或帮助都会帮助我。

总之,我想找到距样本至少2厘米且位于样本外的网格点。

1 个答案:

答案 0 :(得分:0)

数据对我来说看起来不太凸(更像凹面)

  • 所以凸壳将不会产生你想要的......

我会使用与此find holes in 2D point set

类似的不同方法
  1. 为您的网格地图创建空间

    • 每个2x2x2 cm体素的3D体素图
    • 并用零清除
  2. 遍历数据的所有点

    • 计算它的体素表坐标
    • 并在体素图中增加其元素值
    • 如果你有太多的点也处理增量溢出
    • 所以你不会去零或负值......
  3. 现在

    • 零的所有体素都在您的对象之外
    • 或在其中的某个局部洞中
  4. 过滤异常

    • 你可以使用扩张/侵蚀
    • 或计算neigbour体素零和if lover然后阈值用1
    • 清除它
  5. 找到边界

    • 将表格作为2D图层集合
    • 每层过程中的
    • 或水平线
    • 检测/替换它:

      find                  ->  replace
      ?????0000000000????? ->  ?????0111111110?????
      000000000000000????? ->  111111111111110?????
      ?????000000000000000 ->  ?????011111111111111
      
    • 您可以在3个方向分开

    • 并将结果组合在一起以避免投影相关的漏洞
  6. 现在所有保持零的体素都是你的边界点

  7. [注释]

    • 你可以通过额外的过滤来改善这一点,比如光滑或其他