zoukankan      html  css  js  c++  java
  • 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条优化轨迹。

  • 相关阅读:
    随笔35 内联函数
    随笔32 内部类,外部类,局部内部类
    随笔31 Spring的依赖注入的三种方式
    随笔30 抽象类与接口
    随笔29 Statement对象
    随笔28 Spring中的事务
    随笔27 面向对象的五大基本原则
    随笔26 java中的泛型
    html5学习笔记——HTML5 web存储
    html5学习笔记——HTML 5 视频
  • 原文地址:https://www.cnblogs.com/linzzz98/p/13840061.html
Copyright © 2011-2022 走看看