예제 #1
0
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,
        )