Exemplo n.º 1
0
 def __init__(self):
     """Defaut constructor"""
     self.map = pymap.Map()
     self.camera_view = pymap.CameraView(self.map)
     self.shot_view = pymap.ShotView(self.map)
     self.pano_shot_view = pymap.PanoShotView(self.map)
     self.landmark_view = pymap.LandmarkView(self.map)
Exemplo n.º 2
0
def test_many_observations_delete():
    # Given a map with 10 shots, 1000 landmarks ...
    m = pymap.Map()
    n_cams = 2
    n_shots = 10
    n_landmarks = 1000
    for cam_id in range(n_cams):
        cam = pygeometry.Camera.create_perspective(0.5, 0, 0)
        cam.id = "cam" + str(cam_id)
        m.create_camera(cam)

    for shot_id in range(n_shots):
        m.create_shot(str(shot_id), "cam" + str(int(np.random.rand(1) * 10 % n_cams)))

    for point_id in range(n_landmarks):
        m.create_landmark(str(point_id), np.random.rand(3))

    # ... and random connections (observations) between shots and points
    n_total_obs = 0
    for lm in m.get_landmarks().values():
        n_obs = 0
        for shot in m.get_shots().values():
            # create a new observation
            obs = pysfm.Observation(100, 200, 0.5, 255, 0, 0, int(lm.id))
            m.add_observation(shot, lm, obs)
            n_obs += 1
            n_total_obs += 1

    # (we expect it to be created correctly)
    for lm in m.get_landmarks().values():
        n_total_obs -= lm.number_of_observations()
    assert n_total_obs == 0

    # and when we clear all the observations
    m.clear_observations_and_landmarks()
Exemplo n.º 3
0
 def __init__(self):
     """Defaut constructor"""
     self.map = pymap.Map()
     self.camera_view = pymap.CameraView(self.map)
     self.rig_models_view = pymap.RigModelView(self.map)
     self.rig_instances_view = pymap.RigInstanceView(self.map)
     self.shot_view = pymap.ShotView(self.map)
     self.pano_shot_view = pymap.PanoShotView(self.map)
     self.landmark_view = pymap.LandmarkView(self.map)
Exemplo n.º 4
0
 def __init__(self) -> None:
     """Defaut constructor"""
     self.map = pymap.Map()
     self.camera_view = pymap.CameraView(self.map)
     self.bias_view = pymap.BiasView(self.map)
     self.rig_cameras_view = pymap.RigCameraView(self.map)
     self.rig_instances_view = pymap.RigInstanceView(self.map)
     self.shot_view = pymap.ShotView(self.map)
     self.pano_shot_view = pymap.PanoShotView(self.map)
     self.landmark_view = pymap.LandmarkView(self.map)
Exemplo n.º 5
0
def test_many_observations_delete():
    # Given a map with 10 shots, 1000 landmarks ...
    m = pymap.Map()
    n_cams = 2
    n_shots = 10
    n_landmarks = 1000
    for cam_id in range(n_cams):
        cam = pygeometry.Camera.create_perspective(0.5, 0, 0)
        cam.id = "cam" + str(cam_id)
        m.create_camera(cam)

    for shot_id in range(n_shots):
        m.create_shot(str(shot_id),
                      "cam" + str(int(np.random.rand(1) * 10 % n_cams)))

    for point_id in range(n_landmarks):
        m.create_landmark(str(point_id), np.random.rand(3))

    # ... and random connections (observations) between shots and points
    n_total_obs = 0
    for lm in m.get_landmarks().values():
        n_obs = 0
        for shot in m.get_shots().values():
            # create a new observation
            obs = pysfm.Observation(100, 200, 0.5, 255, 0, 0, int(lm.id))
            m.add_observation(shot, lm, obs)
            n_obs += 1
            n_total_obs += 1

    # (we expect it to be created correctly)
    for lm in m.get_landmarks().values():
        n_total_obs -= lm.number_of_observations()
    assert n_total_obs == 0

    # When we remove the observations for half of the shots
    for lm in m.get_landmarks().values():
        for shot_id in range(int(n_shots / 2)):
            m.remove_observation(str(shot_id), lm.id)
        # Then each each landmark has N/2 observations
        assert lm.number_of_observations() == int(n_shots / 2)

    # Then there #shots x #points observations remaning
    n_total_obs = 0
    for shot in m.get_shots().values():
        n_total_obs += shot.compute_num_valid_pts(1)
    assert n_total_obs == int((n_shots * n_landmarks) / 2)

    # and when we clear all the observations
    m.clear_observations_and_landmarks()

    # Then there's none
    assert m.number_of_landmarks() == 0
Exemplo n.º 6
0
def test_clean_landmarks_with_min_observations() -> None:
    m = pymap.Map()
    n_cams = 2
    n_shots = 2
    n_landmarks = 10
    for cam_id in range(n_cams):
        cam = pygeometry.Camera.create_perspective(0.5, 0, 0)
        cam.id = "cam" + str(cam_id)
        m.create_camera(cam)
        m.create_rig_camera(pymap.RigCamera(pygeometry.Pose(), cam.id))

    for shot_id in range(n_shots):
        cam_id = "cam" + str(int(np.random.rand(1) * 10 % n_cams))
        m.create_rig_instance(str(shot_id))
        m.create_shot(str(shot_id), cam_id, cam_id, str(shot_id),
                      pygeometry.Pose())

    for point_id in range(n_landmarks):
        m.create_landmark(str(point_id), np.random.rand(3))

    for point_id in range(int(n_landmarks / 2)):
        for shot in m.get_shots().values():
            # create a new observation
            obs = pymap.Observation(100, 200, 0.5, 255, 0, 0, point_id)
            m.add_observation(shot, m.get_landmark(str(point_id)), obs)

    for point_id in range(int(n_landmarks / 2), n_landmarks):
        shot = m.get_shot("0")
        # create a new observation
        obs = pymap.Observation(100, 200, 0.5, 255, 0, 0, point_id)
        m.add_observation(shot, m.get_landmark(str(point_id)), obs)

    m.clean_landmarks_below_min_observations(n_shots)

    assert len(m.get_landmarks()) == int(n_landmarks / 2)
    m.clean_landmarks_below_min_observations(n_shots + 1)
    assert len(m.get_landmarks()) == 0