Collection of tools ranging from image alignment, panorama generation, point cloud generation, optical flow estimation to single view 3D reconstruction.
Tracking camera (without Bundle Adjustment). Video: (KITTI `sequence/00`)- Note: By default, build type is Debug, to change to Release, edit in
CMakeLists.txt
file - To get log printed to screen, export the environment variable
GLOG_logtostderr
as;
export GLOG_logtostderr=1
- Build all the executables
git clone git@github.com:kvmanohar22/3DR.git
mkdir build
cd build
cmake ..
make
- SLAM
- First download videos from KITTI dataset link
- Set the path to the video sequence in
scripts/slam.sh
cd scripts/
./slam.sh
- Image Alignment
- Image Warping
- Panorama stitching
- Visual Odometry
- Semi-Direct Visual Odometry (SVO)
- Tracking
- Ghost removal in big panoramas (refer [1])
- Optical Flow
- SfM (unordered images)
- SfM (video sequence (localisation))
- Cholesky Decomposition fails during BA
- Optimization is ridiculously slow (but works). Should make it faster
- Fliped y-axis in 3D viewer?
- Add only KeyFrames for graph optimization
- Reduce the number of points for graph optimization
-
opencv'sCompute inliers from vikit seems to be doing it wrong! Fix it!calcOpticalFlowPyrLK
doesn't seem to work that good on forward motion camera - Correspondance point estimation is noisy (probably). Currently using optical flow to estimate corresponding points.
- C++14
- Linux (tested only on Ubuntu 18.10)
- OpenCV (for image I/O)
- ceres-solver (for Bundle Adjustment)
- Pangolin (for 3D viewer)
- fast (for fast corner detection)
- GLOG (for logging)
- M. Uyttendaele, A. Eden, and R. Szeliski. Eliminating ghosting and exposure artifacts in image mosaics. In Proceedings of the Interational Conference on Computer Vision and Pattern Recognition
All my code is MIT licensed