【问题标题】:Geometry from 2D point cloud with MATLAB使用 MATLAB 从二维点云获取几何
【发布时间】:2015-05-14 22:40:31
【问题描述】:

我有一个杂乱无章的点云,我想比较理想的 CAD 几何形状和对象的轮廓测量。例如,我有一个理想对象的 CAD 数据,我有一个这样的点云;

如何比较这两个数据?我从 CAD 文件中知道,CAD 数据上的点是属于直线还是半径(Arc),但是如何导出 Arc 的半径误差或直线的长度误差?

我尝试使用 knnsearch 组织数据,但结果并不令人满意。所以,我尝试从一个点开始画一条线(比如说点 1),我想去下一个最近的点(假设点 2)。如果点 2 的最近邻居是点 1,则转到点 2 的第二最近点。该算法似乎对我有好处,但结果也不令人满意。连接线从一边到另一边。

我还认为,可能我应该将 CAD 数据转换为点云,并且我必须将每个测量点与 CAD 点云上的最近点进行比较。我知道哪些点属于线,哪些点属于弧,我可以计算线或弧的平均误差。但是我认为线或弧的端点会很麻烦。我认为这些点的比较结果会有很大的误差。

另一方面,CAD 几何图形和测量值不会总是凸出并完美覆盖。可以测量一些非凸几何形状。例如,您可以看到缺少一些点的倒 V 形测量。这是最坏的情况;

如果在测量不够的情况下几何估计出现一些错误,我可以接受。

CPU 负载也是我的重要标准。有 10.000 个点,我想用 i7 处理器在 20 毫秒内完成过滤和几何匹配。

是否有任何稳健的解决方案可以实现这一目标?

【问题讨论】:

    标签: matlab geometry point


    【解决方案1】:

    好的,我正在回答我的问题。 Matlab内置函数computational geometry.

    Boundary function 这个模块已经部分解决了我的问题。我可以将它用于非凸几何。对于凸几何,我通过简单的点平均来计算几何的中心点。然后,我按 atan2 函数对所有点进行排序。

    但我不知道如何找到几何图形。一种方法是使用 CAD 数据并迭代 CAD 数据中描述的几何图形,以最小化点云之间的最小二乘误差。另一种方法是直接从点创建弧线。我不知道哪种方式会更快更健壮。

    【讨论】:

      猜你喜欢
      • 2011-09-14
      • 1970-01-01
      • 2020-08-25
      • 1970-01-01
      • 1970-01-01
      • 2020-05-03
      • 1970-01-01
      • 1970-01-01
      • 2022-06-14
      相关资源
      最近更新 更多