Theia源码剖析——ReconstructionBuilderOptions

ReconstructionBuilderOptions:

类型 名称 默认值 可选项 作用
int num_threads 1 使用的线程数, 流水线的每个阶段(功能提取,匹配,估计等)将使用此数量的线程
bool reconstruct_largest_connected_component false 默认情况下,ReconstructionBuilder将尝试从输入数据中重建尽可能多的模型。 如果设置为true,则仅重建最大的连接组件
bool only_calibrated_views false 设置为true仅接受校准的视图(来自EXIF或其他地方)作为重建过程的有效输入
将未校准的视图添加到重建生成器后,将使用LOG警告将其忽略。
int min_track_length 2 最小允许轨道长度。 对于三角剖分和BA调整,过短的轨道通常没有受到很好的约束
int max_track_length 50 最大允许轨道长度。 太长的轨道极有可能包含异常值
int min_num_inlier_matches 30 一个视图对必须具有的几何验证的最小内线数才能被视为良好匹配
string features_and_matches_database_directory “” 数据库的目录
存放关键点和描述符和特征
bool select_image_pairs_with_global_image_descriptor_matching true 如果为true,则使用每个图像的全局图像描述符来确定k个最近的邻居图像,并且仅对这些k个最近的邻居执行特征匹配
int num_nearest_neighbors_for_global_descriptor_matching 100 通过设置num_nearest_neighbors_for_global_descriptor_matching给出“ k”的期望值
int num_gmm_clusters_for_fisher_vector 16 具有全局图像描述符的Fisher向量的GMM使用的簇数
int max_num_features_for_fisher_vector_training 1000000 用于训练Fisher向量内核进行全局图像描述符提取的feature数量
DescriptorExtractorType descriptor_type SIFT SIFT
AKAZE
提取特征的描述符类型
FeatureDensity feature_density NORMAL SPARSE
NORMAL
DENSE
提取的特征的密度
MatchingStrategy matching_strategy BRUTE_FORCE BRUTE_FORCE
CASCADE_HASHING
匹配策略类型

FeatureMatcherOptions matching_options:

用于计算图像之间匹配的选项。 两个视图几何验证选项也是这些选项的一部分

类型 名称 默认值 作用
int num_threads 1 线程数
bool keep_only_symmetric_matches true 使用对称检测
bool use_lowes_ratio true 使用低ratio检测
float lowes_ratio 0.8 ratio检测参数
bool perform_geometric_verification true 如果设置为true,将执行几何验证以获得更高质量的匹配项
int min_num_feature_matches 30 仅返回特征匹配比此数字更多的图像

TwoViewMatchGeometricVerification:

用于几何验证的参数设置

类型 名称 默认值 作用
int min_num_inlier_matches 30 一对图像上必须具有的经过几何验证的最小inlier,才能被视为有效的两视图匹配
bool guided_matching false 进行初始几何估计后,执行引导式匹配以查找更多匹配项。
引导式匹配使用当前的两视图几何估计来沿着对应于特征的对极线执行约束搜索。
对于第一幅图像中的特征f,我们搜索第二幅图像中位于f的对极线l附近的所有特征。
在接近l的特征中,我们选择描述符距离最小的特征作为匹配项
double guided_matching_max_distance_pixels 2.0 对于引导匹配,将考虑比该阈值更接近对极线的特征进行匹配
float guided_matching_lowes_ratio 0.8 ratio参数,用于引导匹配
bool bundle_adjustment true 使用inliers进行两视图BA
double triangulation_max_reprojection_error 15.0 点的初始三角剖分的最大允许重投影误差
double min_triangulation_angle_degrees 4.0 相机和3D点之间所需的最小三角剖分角度,以进行2视图BA调整
double final_max_reprojection_error 5.0 在BA调整后,对应的最大重投影误差被视为inlier值

EstimateTwoViewInfoOptions:

用于估计两个视图几何的参数

类型 名称 默认值 可选项 作用
RansacType ransac_type RANSAC RANSAC
PROSAC
LMED
EXHAUSTIVE
要使用的Ransac变体类型
double max_sampson_error_pixels 6.0 匹配的最大桑普森误差被认为在几何上是有效的。
此阈值是相对于宽度为1024像素的图像而言的,并将针对不同分辨率的图像适当缩放。
double expected_ransac_confidence 0.9999 Ransac置信度
int min_ransac_iterations 10 Ransac最小迭代次数
int max_ransac_iterations 1000 Ransac最大迭代次数
bool use_mle true 最大似然估计

ReconstructionEstimatorOptions:

估计重建的选项

类别 类型 名称 默认值 可选项 作用
ReconstructionEstimatorType reconstruction_estimator_type GLOBAL GLOBAL
NCREMENTAL
HYBRID
要使用的重建估计的类型
int num_threads 1 线程
double max_reprojection_error_in_pixels 5.0 BA调整后,对应的最大重投影误差被视为inliers
int min_num_two_view_inliers 30 一对图像上必须具有的经过几何验证的最小inliers,才能被视为有效的两视图匹配
RANSAC double ransac_confidence 0.9999 RANSAC置信度
RANSAC int ransac_min_iterations 50 RANSAC最小迭代次数
RANSAC int ransac_max_iterations 1000 RANSAC最大迭代次数
RANSAC bool ransac_use_mle true RANSAC是否使用最大似然估计
Global SfM double rotation_filtering_max_
difference_degrees
5.0 估算方向后,如果视图对的相对旋转与全局方向估计形成的相对旋转不同,则可以过滤/删除视图对。
调整此阈值以控制对旋转进行过滤的阈值
Global SfM bool refine_relative_translations_
after_rotation_estimation
true 根据对极误差和已知的旋转估计值改进相对平移。 这样可以提高位移估计的质量
Global SfM bool extract_maximal_rigid_subgraph false 如果为true,则将提取视图的最大刚性分量。 这意味着将仅使用位置估计受到严格约束的摄像机。 此方法有些慢,因此启用它会导致效率下降。
注意:此方法不会尝试删除异常的2视图几何形状,而只是确定哪些摄像头条件良好,可以进行位置估计
Global SfM bool filter_relative_translations_with_1dsfm true 如果为true,则过滤成对平移估计值以除去潜在的不良相对姿势。 消除潜在的异常值可以提高位置估计的性能
Global SfM int translation_filtering_num_iterations 48 在估计摄像机位置之前,明智的做法是删除质量较低的任何相对平移估计
Global SfM double translation_filtering_projection_tolerance 0.1
Global SfM double rotation_estimation_robust_loss_scale 0.1 非线性估计的鲁棒损失函数标度
Global SfM NonlinearPosition
Estimator::Options
nonlinear_position_estimator_options
Global SfM LinearPosition
Estimator::Options
linear_triplet_position_estimator_options
Global SfM LeastUnsquared
DeviationPosition
Estimator::Options
least_unsquared_deviation_
position_estimator_options
Global SfM bool refine_camera_positions_and_
points_after_position_estimation
true 对于全局SfM,运行局部BA调整可能是有利的,仅在保持相机方向和内在常数不变的情况下仅优化相机位置和3d点
Incremental SfM double multiple_view_localization_ratio 0.8 如果M是任何视图观察到的最大3D点数,则我们要对所有观察到的> M * multi_view_localization_ratio 3D点的视图进行本地化。 这允许在需要BA调整之前将多个条件良好的视图添加到重建中。
Incremental SfM double absolute_pose_reprojection_error_threshold 4.0 绝对姿态估计的内部阈值
此阈值相对于宽度为1024像素的图像,将根据输入的图像分辨率进行适当缩放
Incremental SfM int min_num_absolute_pose_inliers 30 为了使绝对姿态估计成功,需要的最小inlier
Incremental SfM double full_bundle_adjustment_growth_percent 5.0 自从上次使用完全BA以来,重建的增长率达到此百分比时,才触发增量SfM的完全BA
Incremental SfM int partial_bundle_adjustment_num_views 20 当不运行完整BA时,将在此参数指定的恒定数量的视图上执行部分BA
Hybrid SfM double relative_position_estimation_
max_sampson_error_pixels
4.0 使用简化的相对平移求解器(假定已知旋转)重新估算用于混合sfm增量部分的初始对的相对位置。
相对位置使用RANSAC程序重新估计,该阈值由该参数定义。
Triangulation double min_triangulation_angle_degrees 3.0 3D点和2条视线之间需要的最小角度才能成功实现三角剖分
Triangulation double triangulation_max_reprojection_error_in_pixels 10.0 用于确定有效三角剖分的重投影误差
Triangulation bool bundle_adjust_tracks true 设置为true可在估算后立即优化track
Bundle Adjustment
(GLOBAL_SFM)
int num_retriangulation_iterations 1 重新估计所有未估计轨迹的次数。 重新三角化后进行BA调整
Bundle Adjustment LossFunctionType bundle_adjustment_loss_function_type TRIVIAL TRIVIAL
HUBER
SOFTLONE
CAUCHY
ARCTAN
TUKEY
鲁棒的损失函数
Bundle Adjustment double bundle_adjustment_robust_loss_width 10.0 损失函数阈值
Bundle Adjustment int min_cameras_for_iterative_solver 1000 比此值小使用SPARSE_SCHUR
比此值大使用ITERATIVE_SCHUR
Bundle Adjustment OptimizeIntrinsicsType intrinsics_to_optimize FOCAL_LENGTH |
RADIAL_DISTORTION
ASPECT_RATIO
FOCAL_LENGTH
SKEW
PRINCIPAL_POINTS
RADIAL_DISTORTION
TANGENTIAL_DISTORTION
NONE
ALL
BA期间对相机内参的优化项,使用|进行并列。
如果为None则不优化任何内参值。
Track Subsampling bool subsample_tracks_for_bundle_adjustment false 设置为true可对用于BA调整的子采样轨道进行设置。
如果使用得当,这可以帮助大大提高BA调整的效率。
Track Subsampling int track_subset_selection_long_track_length_threshold 10 在进行轨道二次采样时,最好使用长轨道,但是长轨道通常更可能包含异常值。 因此,我们将用于选择轨道的轨道长度限制为10,然后按截断的轨道长度先对轨道进行排序,然后再按其平均重投影误差对其进行排序。 这使我们可以在所有长轨道中选择高质量的轨道。
Track Subsampling int track_selection_image_grid_cell_size_pixels 100 我们将每个图像划分为一个具有此阈值指定的网格像元宽度的图像网格。 选择每个网格单元中排名最高的轨道进行优化,以使每个图像都具有良好的空间覆盖率。
Track Subsampling int min_num_optimized_tracks_per_view 200 使用轨道子采样时,每个视图所需的优化轨道的最小数量。
如果视图没有观察到这么多的轨道,则视图中的所有轨道都会得到优化。

Track Subsampling

BA调整可通过最大程度地减少重新投影误差来对点位置和相机姿势进行联合非线性优化。对于许多场景,3d点可能是高度冗余的,因此,尽管运行时间大大增加,但添加更多的点只会稍微改善重建质量(如果有的话)。这样,我们可以减少在束调整中使用的3d点的数量,并通过仔细选择点以适当限制优化来实现相似甚至更好的质量重建。
如果将轨道的二次采样设置为true,则选择3d点,使其符合以下条件:

a)高置信度(即低重投影误差)。
b)首选长距离曲目。
c)用于优化的轨道在每个图像中提供了良好的空间覆盖率。
d)每个视图至少观察K条优化轨迹。

原文地址:https://www.cnblogs.com/linzzz98/p/13840061.html