BA版本
首先colmap gps 建图

导出

定位测试指令
指令1 单张手动测试

PYTHONDONTWRITEBYTECODE=1 conda run -n py311_AnylocMast3r \ python test_colmap_mast3r_query_ba.py \ --dataset "/media/dongdong/新加卷/0ubuntu20/1slam/数据/2RTK/hf1_youtian/map_0303_yin" \ --query /media/dongdong/新加卷/0ubuntu20/1slam/数据/2RTK/hf1_youtian/location11_0224_night/pic_0224_night_yintian_2131pm_125/images/DJI_00025.jpg \ --keyframe /media/dongdong/新加卷/0ubuntu20/1slam/数据/2RTK/hf1_youtian/map_0303_yin/images/DJI_0024.jpg \ --output-dir /media/dongdong/新加卷/0ubuntu20/1slam/数据/2RTK/hf1_youtian/map_0303_yin/colmap_mast3r_query_test


读取colmap数据 创建共视关系,如果有直接读取。

31共同视觉关键帧选取
现在逻辑是:
1. 对指定 keyframe,取它看到的所有 COLMAP POINT3D_ID
2. 遍历地图中其它图像
3. 计算 shared_points = 两帧共同看到的 POINT3D_ID 数量
4. shared_points >= --covisible-min-shared-points 才建共视边
5. 按 shared_points 从大到小排序
6. 用最强的前 --covisible-radius-seed-count 张共视帧计算空间半径
7. 只保留相机中心距离在这个半径内的候选
8. 最终取前 --max-covisible 张,加上原始 keyframe 一起参与定位
不再使用相邻 image_id 半径。旧参数 --covisible-radius 保留为兼容项,但已经不参与筛选。
新增/调整参数:
--max-covisible 5
额外取 5 张,共 6 张参考帧。
--covisible-min-shared-points 15
两帧至少共享 15 个地图点才认为有共视边。
--covisible-radius-seed-count 6
用最强 6 条共视边估计自动空间半径。
--covisible-spatial-radius-m -1
负数表示自动半径;也可以手动指定,比如 --covisible-spatial-radius-m 60。
--covisible-radius-margin-m 1.0
现在默认策略是:
不做距离判断
只按共享 COLMAP POINT3D_ID 数量排序
取前 6 个共视关键帧
加上你指定的 keyframe
总共最多 6 张参考帧
默认参数现在是:
--max-covisible 5
--covisible-spatial-radius-m -1
其中:
- --max-covisible 5:额外取共享地图点最多的前 5+1 张
- --covisible-spatial-radius-m -1:关闭距离过滤
- 如果以后想手动限制空间距离,可以设正数,比如:
--covisible-spatial-radius-m 60
32 重投影参数
