V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
skydcnmana
V2EX  ›  算法

几百万个三维坐标中判断富集的簇,如何做比较好?

  •  
  •   skydcnmana · 8 天前 · 640 次点击

    现在有几百万个三维坐标点数据,希望判断其中数据点富集的若干区域,比如指定富集半径是 15 ,指定富集点数为 10000 ,那么就希望获取所有半径 15 球体范围内包含 10000 个以上点的区域,然后返回这些区域的中心点。

    这个中心点也希望是由中心点发出符合半径长度的射线,所重合点数最多的情况,比如一个金字塔形的边框组成的区域被局部覆盖,那么中心点应当是塔尖,而非金字塔中心。

    目前数据是以文本形式存储的。

    该如何实现这样的计算?算法逻辑和需要用到的库和工具有哪些?

    向量数据库有助于这种数据处理吗?我没接触过向量数据库。

    7 条回复    2025-04-21 15:02:57 +08:00
    skydcnmana
        1
    skydcnmana  
    OP
       8 天前
    MongoDB 支持 3D 索引,是不是也比较适合?

    // 创建 3D 索引
    var collection = database.GetCollection<Point3D>("points");
    var indexKeys = Builders<Point3D>.IndexKeys.Geo3D("Coordinates");
    collection.Indexes.CreateOne(new CreateIndexModel<Point3D>(indexKeys));
    skydcnmana
        2
    skydcnmana  
    OP
       8 天前
    @skydcnmana 呃,不对,好像 MongoDB 没有 Geo3D 啊,DeepSeek 的幻觉么。。。
    hurrytospring
        3
    hurrytospring  
       8 天前   ❤️ 1
    向量数据库不是干这个的,不过为啥一定要存数据库里,是有长期持续分析或者写入的需求?如果没有,直接用代码或者计算工具计算就行了
    sillydaddy
        4
    sillydaddy  
       8 天前 via Android   ❤️ 1
    你的业务需求是啥?是做点云吗?查询频率怎么样?不同的数据特征,不同的业务需求,可以针对性的优化。
    sillydaddy
        5
    sillydaddy  
       8 天前 via Android   ❤️ 1
    比如 kdtree 可以快速精确查找半径内的点。聚类算法可以快速找到聚集的点。两者配合也许能,也许不能满足你的要求,单看需求是什么样的。
    skydcnmana
        6
    skydcnmana  
    OP
       5 天前
    @sillydaddy #4 频率很低,就是用倾斜摄影生成的 3D 数据,判断杆件,我是想先查找到富集的中心来确定杆件的连接处,再以各个连接处之间的线段作为依据判定杆件是否存在,以及杆件的直径。
    Jax6
        7
    Jax6  
       5 天前   ❤️ 1
    常规点云处理就好了,PCL 库,提速的话最好数据下采样一下。和工业视觉的应该类似
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2685 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 14:49 · PVG 22:49 · LAX 07:49 · JFK 10:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.