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
示例#2
0
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])
示例#3
0
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])
示例#4
0
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
示例#5
0
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