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)
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()
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)
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)
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
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