use of boofcv.alg.sfm.d3.structure.VisOdomBundleAdjustment.BTrack in project BoofCV by lessthanoptimal.
the class TestVisOdomBundleAdjustment method getLastFrame.
@Test
void getLastFrame() {
VisOdomBundleAdjustment<BTrack> alg = createAlgSingleCamera();
BFrame frameA = alg.frames.grow();
assertSame(frameA, alg.getLastFrame());
BFrame frameB = alg.frames.grow();
assertSame(frameB, alg.getLastFrame());
}
use of boofcv.alg.sfm.d3.structure.VisOdomBundleAdjustment.BTrack in project BoofCV by lessthanoptimal.
the class TestVisOdomBundleAdjustment method addTrack.
@Test
void addTrack() {
VisOdomBundleAdjustment<BTrack> alg = createAlgSingleCamera();
BTrack trackA = alg.addTrack(1, 2, 3, 3);
BTrack trackB = alg.addTrack(1, 2, 3, 4);
BTrack trackC = alg.addTrack(1, 2, 3, 5);
assertEquals(3, alg.tracks.size);
assertTrue(alg.tracks.contains(trackA));
assertTrue(alg.tracks.contains(trackB));
assertTrue(alg.tracks.contains(trackC));
assertEquals(0.0, trackB.worldLoc.distance(new Point4D_F64(1, 2, 3, 4)), UtilEjml.TEST_F64);
assertEquals(0.0, trackC.worldLoc.distance(new Point4D_F64(1, 2, 3, 5)), UtilEjml.TEST_F64);
trackA.observations.grow();
trackB.observations.grow();
// Test recycle
alg.reset();
trackA = alg.addTrack(2, 2, 3, 3);
trackB = alg.addTrack(2, 2, 3, 4);
trackC = alg.addTrack(2, 2, 3, 5);
assertTrue(alg.tracks.contains(trackA));
assertTrue(alg.tracks.contains(trackB));
assertTrue(alg.tracks.contains(trackC));
assertEquals(0, trackB.observations.size);
assertEquals(0.0, trackB.worldLoc.distance(new Point4D_F64(2, 2, 3, 4)), UtilEjml.TEST_F64);
assertEquals(0, trackC.observations.size);
assertEquals(0.0, trackC.worldLoc.distance(new Point4D_F64(2, 2, 3, 5)), UtilEjml.TEST_F64);
}
use of boofcv.alg.sfm.d3.structure.VisOdomBundleAdjustment.BTrack in project BoofCV by lessthanoptimal.
the class TestVisOdomBundleAdjustment method getFirstFrame.
@Test
void getFirstFrame() {
VisOdomBundleAdjustment<BTrack> alg = createAlgSingleCamera();
BFrame frameA = alg.frames.grow();
assertSame(frameA, alg.getFirstFrame());
alg.frames.grow();
assertSame(frameA, alg.getFirstFrame());
}
use of boofcv.alg.sfm.d3.structure.VisOdomBundleAdjustment.BTrack in project BoofCV by lessthanoptimal.
the class TestMaxGeoKeyFrameManager method connectFrames.
public static void connectFrames(int a, int b, int count, VisOdomBundleAdjustment<BTrack> scene) {
BFrame frameA = scene.frames.get(a);
BFrame frameB = scene.frames.get(b);
for (int i = 0; i < count; i++) {
BTrack track = scene.tracks.grow();
// crash hard if it's used
track.id = -1;
track.observations.grow().frame = frameA;
track.observations.grow().frame = frameB;
frameA.tracks.add(track);
frameB.tracks.add(track);
}
}
use of boofcv.alg.sfm.d3.structure.VisOdomBundleAdjustment.BTrack in project BoofCV by lessthanoptimal.
the class VisOdomMonoDepthPnP method handleDroppedVisualTracks.
private void handleDroppedVisualTracks() {
tmpVisualTracks.clear();
tracker.getDroppedTracks(tmpVisualTracks);
for (int i = 0; i < tmpVisualTracks.size(); i++) {
// Tell the bundle track that they are no longer associated with a visual track
BTrack bt = tmpVisualTracks.get(i).getCookie();
bt.visualTrack = null;
}
}
Aggregations