def test_track_triangulator_equirectangular(): """Test triangulating tracks of spherical images.""" graph = nx.Graph() graph.add_node('im1', bipartite=0) graph.add_node('im2', bipartite=0) graph.add_node('1', bipartite=1) graph.add_edge('im1', '1', feature=(0, 0), feature_scale=1.0, feature_id=0, feature_color=0) graph.add_edge('im2', '1', feature=(-0.1, 0), feature_scale=1.0, feature_id=1, feature_color=0) rec = io.reconstruction_from_json({ "cameras": { "theta": { "projection_type": "equirectangular", "width": 800, "height": 400, } }, "shots": { 'im1': { "camera": "theta", "rotation": [0.0, 0.0, 0.0], "translation": [0.0, 0.0, 0.0], }, 'im2': { "camera": "theta", "rotation": [0, 0, 0.0], "translation": [-1, 0, 0.0], }, }, "points": {}, }) graph_inliers = nx.Graph() triangulator = reconstruction.TrackTriangulator(graph, graph_inliers, rec) triangulator.triangulate('1', 0.01, 2.0) assert '1' in rec.points p = rec.points['1'].coordinates assert np.allclose(p, [0, 0, 1.3763819204711]) assert len(graph_inliers.edges()) == 2
def test_track_triangulator_equirectangular(): """Test triangulating tracks of spherical images.""" graph = nx.Graph() graph.add_node('im1', bipartite=0) graph.add_node('im2', bipartite=0) graph.add_node('1', bipartite=1) graph.add_edge('im1', '1', feature=(0, 0)) graph.add_edge('im2', '1', feature=(-0.1, 0)) reconstruction = io.reconstruction_from_json({ "cameras": { "theta": { "projection_type": "equirectangular", "width": 800, "height": 400, } }, "shots": { 'im1': { "camera": "theta", "rotation": [0.0, 0.0, 0.0], "translation": [0.0, 0.0, 0.0], }, 'im2': { "camera": "theta", "rotation": [0, 0, 0.0], "translation": [-1, 0, 0.0], }, }, "points": { }, }) triangulator = opensfm.reconstruction.TrackTriangulator(graph, reconstruction) triangulator.triangulate('1', 0.01, 2.0) assert '1' in reconstruction.points p = reconstruction.points['1'].coordinates assert np.allclose(p, [0, 0, 1.3763819204711])
def test_triangulate_track_equirectangular(): graph = nx.Graph() graph.add_node('im1', bipartite=0) graph.add_node('im2', bipartite=0) graph.add_node('1', bipartite=1) graph.add_edge('im1', '1', feature=(0, 0)) graph.add_edge('im2', '1', feature=(-0.1, 0)) reconstruction = io.reconstruction_from_json({ "cameras": { "theta": { "projection_type": "equirectangular", "width": 800, "height": 400, } }, "shots": { 'im1': { "camera": "theta", "rotation": [0.0, 0.0, 0.0], "translation": [0.0, 0.0, 0.0], }, 'im2': { "camera": "theta", "rotation": [0, 0, 0.0], "translation": [-1, 0, 0.0], }, }, "points": { }, }) opensfm.reconstruction.triangulate_track( '1', graph, reconstruction, {}, 0.01, 2.0) assert '1' in reconstruction.points p = reconstruction.points['1'].coordinates assert np.allclose(p, [0, 0, 1.3763819204711])
def test_track_triangulator_equirectangular(): """Test triangulating tracks of spherical images.""" tracks_manager = pysfm.TracksManager() tracks_manager.add_observation('im1', '1', pysfm.Observation(0, 0, 1.0, 0, 0, 0, 0)) tracks_manager.add_observation('im2', '1', pysfm.Observation(-0.1, 0, 1.0, 0, 0, 0, 1)) rec = io.reconstruction_from_json({ "cameras": { "theta": { "projection_type": "equirectangular", "width": 800, "height": 400, } }, "shots": { 'im1': { "camera": "theta", "rotation": [0.0, 0.0, 0.0], "translation": [0.0, 0.0, 0.0], }, 'im2': { "camera": "theta", "rotation": [0, 0, 0.0], "translation": [-1, 0, 0.0], }, }, "points": {}, }) graph_inliers = nx.Graph() triangulator = reconstruction.TrackTriangulator(tracks_manager, graph_inliers, rec) triangulator.triangulate('1', 0.01, 2.0) assert '1' in rec.points p = rec.points['1'].coordinates assert np.allclose(p, [0, 0, 1.3763819204711]) assert len(graph_inliers.edges()) == 2
def test_track_triangulator_spherical(): """Test triangulating tracks of spherical images.""" tracks_manager = pysfm.TracksManager() tracks_manager.add_observation("im1", "1", pysfm.Observation(0, 0, 1.0, 0, 0, 0, 0)) tracks_manager.add_observation( "im2", "1", pysfm.Observation(-0.1, 0, 1.0, 0, 0, 0, 1) ) rec = io.reconstruction_from_json( { "cameras": { "theta": { "projection_type": "spherical", "width": 800, "height": 400, } }, "shots": { "im1": { "camera": "theta", "rotation": [0.0, 0.0, 0.0], "translation": [0.0, 0.0, 0.0], }, "im2": { "camera": "theta", "rotation": [0, 0, 0.0], "translation": [-1, 0, 0.0], }, }, "points": {}, } ) triangulator = reconstruction.TrackTriangulator(tracks_manager, rec) triangulator.triangulate("1", 0.01, 2.0) assert "1" in rec.points p = rec.points["1"].coordinates assert np.allclose(p, [0, 0, 1.3763819204711]) assert len(rec.points["1"].get_observations()) == 2