【问题标题】:Identifying Number of Events识别事件数量
【发布时间】:2018-11-13 08:28:50
【问题描述】:

我有许多射线,所有射线的起点都在 3D 球体上,其方向向量指向内部。一些光线指向 A 点,其他光线指向 B 点等,并带有一些噪声(即光线在其对应的 A、B 点等处没有完美地相交)。

是否有一种算法可以让我确定有多少点 A、B 等?或者更好的是,这些点在哪里?我不知道 A、B 等点的位置,只知道光线的起点和方向向量。

例如, 是一个示例设置,但在 2D 中,我不知道哪些光线指向哪个点(即我不知道哪些光线是红色或蓝色)。我如何找到他们指向的点数(在本例中为两个)或他们指向的点的位置?

我尝试了earlier question 中建议的几种不同算法,但是当点彼此靠近时,它们似乎都无法准确识别点的位置。我的首要任务是仅以高精度识别点的数量,即使它们位置很近。即使我不得不牺牲位置的准确性,这可能吗?

编辑:如果我们让球体的半径为 1000 个单位,那么方向向量的误差约为 10-20 个单位,而点之间的最小距离为目前工作的算法大约是 50 个单位。我不认为这似乎是不可克服的,但我很可能错了。

【问题讨论】:

  • 光线方向的误差与“接近”点之间的距离之间的比例是多少?在这方面,您可能会遇到统计上难以解决的问题。
  • 如果适用,请附上您之前问题的超链接。
  • 刚刚做了,谢谢!

标签: algorithm cluster-analysis


【解决方案1】:

我建议您将此视为点聚类问题的变化变体。

首先,提出一组点。选择接近阈值:在您怀疑它们指向同一个点之前,两条射线应该靠近多远?对于满足此阈值的每一对射线,在其最接近的线段的中点插入一个点。这是简单的 (?) 3D 线性代数。

现在,使用您最喜欢的聚类计数算法来确定您在这些点中拥有的聚类数量。您的接近阈值对于区分附近的点非常重要(请参阅我的评论)。

编辑:感谢您更新问题。与 10-20 单位误差相比,数据中的 50 单位分离应该允许您使用密度敏感聚类算法区分“近”质心。也许其中一种光谱聚类方法可以为您完成这项工作。

您现在拥有“k”个标识的集群。调整 k-means 聚类算法。

  1. 选择每个簇的中点作为质心。
  2. 删除您在上一次迭代中创建的所有“最接近”点。保持质心。
  3. 确定每条射线所属的簇:距离函数是射线最接近每个质心的距离。
  4. 当您对每条光线进行分类时,将该光线最接近质心的点添加到该聚类中。

重复步骤 1-4,直到根据您拥有的任何 epsilon 标准收敛。质心是您的目标点(A、B 等)

  • 如果您有 任何 个异常值,请怀疑您缺少质心。
  • 如果质心太靠近(根据您可以提取的任何接近标准),则合并它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-26
    • 2012-10-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多