colmap中进行三角化的时候,一些参数存在与IncrementalPipelineOptions结构体中,影响重建精度的参数主要涉及:特征匹配、BA(Bundle Adjustment 捆绑调整)、初始化、相机参数优化、并行计算等。
参数 默认值 推荐优化 作用
min_num_matches 15 30 过滤低质量的特征匹配
init_num_trials 200 500 选取初始帧对的最大尝试次数
ignore_watermarks false true 过滤带水印的图像(如果数据集有水印)
优化原因:
min_num_matches = 30:更严格的匹配标准,减少误匹配。
init_num_trials = 500:初始图像选择更稳定,避免局部最优解。
ignore_watermarks = true(如果有水印):防止水印影响特征匹配。
参数 默认值 推荐优化 作用
ba_local_num_images 6 12 局部 BA 时优化的相邻图像数量
ba_local_max_num_iterations 25 50 局部 BA 迭代次数
ba_local_function_tolerance 0.0 1e-6 局部 BA 终止条件
ba_global_max_num_iterations 50 100 全局 BA 迭代次数
ba_global_function_tolerance 0.0 1e-6 全局 BA 终止条件
ba_refine_focal_length true true 允许优化焦距
ba_refine_principal_point false true 允许优化相机主点
ba_refine_extra_params true true 允许优化畸变参数
优化原因:
增加 ba_local_num_images 让局部 BA 参考更多相邻图像,提高相机参数稳定性。
增加 ba_local_max_num_iterations 和 ba_global_max_num_iterations 提高 BA 收敛精度。
ba_refine_principal_point = true 允许优化主点,提高相机标定精度。
参数 默认值 推荐优化 作用
ba_global_images_ratio 1.1 1.05 按新增图像数触发 BA
ba_global_points_ratio 1.1 1.05 按新增 3D 点数触发 BA
ba_global_images_freq 500 250 每增加 250 张图像触发一次 BA
ba_global_points_freq 250000 125000 每增加 12.5万 个 3D 点触发 BA
优化原因:
让 BA 触发更频繁(降低漂移误差)。
ba_global_images_ratio = 1.05 让 BA 更频繁 触发,提高精度。
ba_global_images_freq = 250 降低 BA 触发阈值,使 BA 更快调整模型。
参数 默认值 推荐优化 作用
init_image_id1 -1 手动指定 设定初始化的第一张图像
init_image_id2 -1 手动指定 设定初始化的第二张图像
优化原因:
如果初始化帧选得不好,整个 SfM 可能会 崩溃 或出现错误。
推荐手动指定 init_image_id1 和 init_image_id2(用 COLMAP GUI 选择一对视角相差较大的图像)。
参数 默认值 推荐优化 作用
num_threads -1 8 设定计算线程数
ba_min_num_residuals_for_cpu_multi_threading 50000 20000 BA 任务并行计算的阈值
ba_use_gpu false true(如果有 GPU) 使用 GPU 加速 BA
ba_gpu_index "-1" "0" 指定 GPU 设备 ID
优化原因:
num_threads = 8(提高 CPU 计算并行度)。
ba_use_gpu = true(如果有 GPU,加速 BA)。
ba_min_num_residuals_for_cpu_multi_threading = 20000(降低并行计算阈值)。