May 2, 2013, 13:40 (GMT) |
April 30, 2013, 13:10 (GMT) |
Add check for points behind camera in euclidan BA cost functor In cases keyframes are no so good, algebraic two frames construction could produce result, for which more aggressive Ceres-based BA code will fall to a solution for which points goes behind the camera, which is not so nice. Seems in newer Ceres returning false from cost functor wouldn't abort solution, but will restrict solver from moving points behind the camera. Works fine in own tests, but requires more tests. |
April 30, 2013, 12:20 (GMT) |
April 30, 2013, 07:58 (GMT) |
April 29, 2013, 17:16 (GMT) |
April 26, 2013, 19:06 (GMT) |
April 26, 2013, 15:54 (GMT) |
April 26, 2013, 12:57 (GMT) |
Keyframe selection improvements Added additional criteria, which ignores keyframe pair if success intersection factor is lower than current candidate pair factor. This solves issue with keyframe pair at which most of the tracks are intersecting behind the camera is accepted (because variance in this case is really small), Also tweaked generalized inverse function, which now doesn't scale epsilon by maximal matrix element. This gave issues at really bad candidates with unstable covariance. In this case almost all eigen values getting zeroed on inverse leading to small expected error estimation. |
April 26, 2013, 11:43 (GMT) |
Added a button to apply scale on scene solution This is an alternative to using camera to scale the scene and it's expected to be better solution because scaling camera leads to issues with z-buffer. Found the whole scaling thing a bit confusing, especially for object tracking, but cleaning this up is a bit different topic. |
April 26, 2013, 11:43 (GMT) |
Setting tracking object scale shall not depend on active object |
April 26, 2013, 11:43 (GMT) |
Made bundles in 3D viewport have constant size This means bundles' size is not affected by camera scale. This way it's more useful to work with -- bundles never becomes too small or too large (depending on reconstructed scene scale). |
April 26, 2013, 09:49 (GMT) |
April 24, 2013, 14:30 (GMT) |
Initial commit of reconstruction variance criteria which is an addition for GRIC-based keyframe selection. Uses paper Keyframe Selection for Camera Motion and Structure Estimation from Multiple Views, ftp://ftp.tnt.uni-hannover.de/pub/papers/2004/ECCV2004-TTHBAW.pdf as a basis. Currently implemented camera positions reconstructions, bundle positions estimation and bundle adjustment step. Covriance estimation is implemented in very basic way and need to be cleaned up, speed up and probably fixed. Covariance matrix is estimating using generalized inverse with 7 (by the number of gauge freedoms) zeroed eigen values of J^T * J. Use value of 7 because we've got 3 translations, 3 rotations and 1 scale freedoms. Additional changes: - Added utility function FundamentalToEssential to extract E from F matrix, used by both final reconstruction pipeline and reconstruction variance code. - Refactored bundler a bit, so now it's possible to return different evaluation data, such as number of cameras and points being minimized and also jacobian. Jacobian currently contains only camera and points columns, no intrinsics there yet. It is also currently converting to an Eigen dense matrix. A bit weak, but speed is nice for tests. Columns in jacobian are ordered in the following way: first columns are cameras (3 cols for rotation and 3 cols for translation), then goes 3D point columns. - Switched F and H refining to normalized space. Apparently, refining F in pixel space squeezes it a lot making it wrong. - EuclideanIntersect will not add point to reconstruction if it happened to be behind the camera. - Cleaned style a bit. |
April 24, 2013, 13:52 (GMT) |
Reconstructed scene scale ambiguity improvement Made it so reconstructed scene always scaled in a way that variance of camera centers is unity. This solves "issues" when different keyframes will give the same reprojection error but will give scenes with different.scale, which could easily have been considered as a bad keyframe combination. This change is essential for automatic keyframe selection algorithm to work reliable for user. |
April 24, 2013, 13:51 (GMT) |
April 23, 2013, 20:28 (GMT) |
April 23, 2013, 18:59 (GMT) |
April 6, 2013, 14:51 (GMT) |
March 22, 2013, 08:45 (GMT) |
March 14, 2013, 09:55 (GMT) |
|