【问题标题】:Find the best fitting line on a 2d scatterplot. In C++在二维散点图上找到最佳拟合线。在 C++ 中
【发布时间】:2021-02-27 14:52:15
【问题描述】:

如何在散点图中找到一定长度的线。

我有一组点,我想找到最适合数据的长度为 1 的线。

从视觉上您可以轻松识别它。但是我如何用 C++ 找到这个?

基于此,RANSAC 似乎是正确的解决方案。 https://en.wikipedia.org/wiki/Random_sample_consensus但我正在寻找固定长度的最佳拟合线。

这是一个包含示例数据的文件。 https://gist.github.com/apkuhar/d9d5b50808e44ee0a86ef4b0f657e9c0

【问题讨论】:

    标签: c++ computer-vision ransac


    【解决方案1】:

    一种可能的解决方案可能是以下算法:

    1. DBSCAN 聚类。

    2. 对于每个集群,计算 PCA。在第一个 PCA 组件(第二个组件接近于零)中具有大部分方差的集群形成线条。

    3. 用最小的 2nd PCA 组件在集群中拟合一条线。

    尽管您必须小心消除太小的集群。 DBSCAN 通常会将少数点的组视为异常值,而不是将它们组成一个集群。但是由于您需要最小长度,您可以在选择最像一条线的集群之前对该集群强加该要求。例如,找到集群内的最大距离,并选择该距离至少是您的最小线长度的集群。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-22
      • 1970-01-01
      • 2018-08-10
      • 2018-07-01
      相关资源
      最近更新 更多