Authors: John Lambert """ from enum import Enum, unique from typing import Tuple import cv2 import numpy as np import gtsfm.utils.logger as logger_utils from gtsfm.common.keypoints import Keypoints from gtsfm.frontend.verifier.opencv_verifier_base import OpencvVerifierBase RANSAC_SUCCESS_PROB = 0.999999 RANSAC_MAX_ITERS = 1000000 logger = logger_utils.get_logger() @unique class RobustEstimationType(str, Enum): """Robust estimation algorithm types for OpenCV. See https://docs.opencv.org/4.x/d1/df1/md__build_master-contrib_docs-lin64_opencv_doc_tutorials_calib3d_usac.html for more detailed information. Note: USAC_FAST uses the RANSAC score to maximize number of inliers and terminate earlier. """ FM_7POINT: str = "FM_7POINT" FM_8POINT: str = "FM_8POINT" FM_RANSAC: str = "FM_RANSAC" # RANSAC algorithm. It needs at least 15 points. 7-point algorithm is used. RANSAC: str = "RANSAC"
import argparse import numpy as np from dask.distributed import Client, LocalCluster, performance_report from hydra.experimental import compose, initialize_config_module from hydra.utils import instantiate from gtsfm.common.gtsfm_data import GtsfmData from gtsfm.scene_optimizer import SceneOptimizer from gtsfm.loader.argoverse_dataset_loader import ArgoverseDatasetLoader from gtsfm.utils.logger import get_logger logger = get_logger() def run_scene_optimizer(args) -> None: """ Run GTSFM over images from an Argoverse vehicle log""" with initialize_config_module(config_module="gtsfm.configs"): # config is relative to the gtsfm module cfg = compose(config_name="default_lund_door_set1_config.yaml") scene_optimizer: SceneOptimizer = instantiate(cfg.SceneOptimizer) loader = ArgoverseDatasetLoader( dataset_dir=args.dataset_dir, log_id=args.log_id, stride=args.stride, max_num_imgs=args.max_num_imgs, max_lookahead_sec=args.max_lookahead_sec, camera_name=args.camera_name, )