opensfm/synthetic_data/synthetic_examples.py (75 lines of code) (raw):

from typing import Optional import opensfm.synthetic_data.synthetic_scene as ss from opensfm import geo def synthetic_circle_scene( reference: Optional[geo.TopocentricConverter] = None, ) -> ss.SyntheticStreetScene: scene_length = 60 points_count = 5000 generator = ss.get_scene_generator("circle", scene_length) scene = ss.SyntheticStreetScene(generator, reference) scene.add_street(points_count, 7, 7).perturb_floor([0, 0, 0.1]).perturb_walls( [0.2, 0.2, 0.01] ) make_regular_scene(scene_length, scene) return scene def synthetic_cube_scene() -> ss.SyntheticCubeScene: return ss.SyntheticCubeScene(10, 1000, 0.001) def synthetic_rig_scene( reference: Optional[geo.TopocentricConverter] = None, ) -> ss.SyntheticStreetScene: scene_length = 20 points_count = 5000 generator = ss.get_scene_generator("line", scene_length) scene = ss.SyntheticStreetScene(generator, reference) scene.add_street(points_count, 15, 12).perturb_floor([0, 0, 0.1]).perturb_walls( [0.2, 0.2, 0.01] ) make_4_cameras_rig_scene(scene_length, scene) return scene def make_4_cameras_rig_scene( scene_length: float, scene: ss.SyntheticStreetScene ) -> None: camera_height = 2 camera_interval = 3 position_perturbation = [0.2, 0.2, 0.01] rotation_perturbation = 0.3 relative_positions = [[0, 0, 0.2], [0, 0, -0.2], [-0.2, 0, 0], [0.2, 0, 0]] relative_rotations = [ [0.0, 0.0, 0.0], [0.0, 3.1415927, 0.0], [0.0, 1.5707963, 0.0], [0.0, -1.5707963, 0.0], ] camera = ss.get_camera("perspective", "1", 0.7, -0.1, 0.01) cameras = [ camera, camera, camera, camera, ] scene.add_rig_camera_sequence( cameras, relative_positions, relative_rotations, scene_length, camera_height, camera_interval, position_perturbation, rotation_perturbation, ) def make_regular_scene(scene_length: float, scene: ss.SyntheticStreetScene) -> None: camera_height = 1.5 camera_interval = 3 position_perturbation = [0.2, 0.2, 0.01] rotation_perturbation = 0.2 camera1 = ss.get_camera("perspective", "1", 0.7, -0.1, 0.01) scene.add_camera_sequence( camera1, scene_length, camera_height, camera_interval, position_perturbation, rotation_perturbation, None, )