Egomotion_with_Local_Loop_Closures
所属分类:论文
开发工具:C++
文件大小:131KB
下载次数:0
上传日期:2019-06-02 22:29:51
上 传 者:
sh-1993
说明: 此代码基于论文[用自我中心视频的本地循环闭包计算自我运动]([https://arxiv.or...](https://arxiv.org pdf 1701.04743.pdf)
(This code is based on the paper [Computing Egomotion with Local Loop Closures for Egocentric Videos](<https://arxiv.org/pdf/1701.04743.pdf>) by Suvam Patra, Himanshu Aggarwal, Himani Arora, Subhashis Banerjee, Chetan Arora. It implements a robust method for camera pose estimation using short local loop closures and rotation averaging.)
文件列表:
CMakeLists.txt (1572, 2019-06-03)
LICENSE (35141, 2019-06-03)
Test_images (0, 2019-06-03)
Test_images\.keep (0, 2019-06-03)
bin (0, 2019-06-03)
bin\ELLC_LC.sh (626, 2019-06-03)
bin\Saved_mats (0, 2019-06-03)
bin\Saved_mats\.keep (0, 2019-06-03)
build.sh (162, 2019-06-03)
data (0, 2019-06-03)
data\.keep (0, 2019-06-03)
matches (0, 2019-06-03)
matches\.keep (0, 2019-06-03)
matlab_scripts (0, 2019-06-03)
matlab_scripts\SE3_2_se3.m (180, 2019-06-03)
matlab_scripts\SO3GraphAveraging (0, 2019-06-03)
matlab_scripts\SO3GraphAveraging\AverageSO3Graph.m (4689, 2019-06-03)
matlab_scripts\SO3GraphAveraging\BoxMedianSO3Graph.m (12048, 2019-06-03)
matlab_scripts\SO3GraphAveraging\CompareRotationGraph.p (823, 2019-06-03)
matlab_scripts\SO3GraphAveraging\CompareRotations.m (668, 2019-06-03)
matlab_scripts\SO3GraphAveraging\Example1.m (307, 2019-06-03)
matlab_scripts\SO3GraphAveraging\Example2.m (433, 2019-06-03)
matlab_scripts\SO3GraphAveraging\Example3.m (440, 2019-06-03)
matlab_scripts\SO3GraphAveraging\R2q.m (141, 2019-06-03)
matlab_scripts\SO3GraphAveraging\R2w.m (298, 2019-06-03)
matlab_scripts\SO3GraphAveraging\RandomSO3Graph.m (1892, 2019-06-03)
matlab_scripts\SO3GraphAveraging\RobustMeanSO3Graph.m (8138, 2019-06-03)
matlab_scripts\SO3GraphAveraging\ValidateSO3Graph.m (163, 2019-06-03)
matlab_scripts\SO3GraphAveraging\crossmat.m (201, 2019-06-03)
matlab_scripts\SO3GraphAveraging\q2R.m (568, 2019-06-03)
matlab_scripts\SO3GraphAveraging\w2R.m (722, 2019-06-03)
matlab_scripts\VisualizeTrajectory.m (2177, 2019-06-03)
matlab_scripts\adaptive_rotation_averaging.m (2141, 2019-06-03)
matlab_scripts\compare_rot_matrix_mkr.m (1004, 2019-06-03)
matlab_scripts\concatenateOriginPose.m (439, 2019-06-03)
matlab_scripts\concatenatePose.m (357, 2019-06-03)
matlab_scripts\concatenateRelativePose.m (341, 2019-06-03)
... ...
# Egomotion with Local Loop Closures (ELLC)
This code is based on the paper [Computing Egomotion with Local Loop Closures for Egocentric Videos](https://arxiv.org/pdf/1701.04743.pdf) by Suvam Patra, Himanshu Aggarwal, Himani Arora, Chetan Arora, Subhashis Banerjee. It implements a robust method for camera pose estimation using short local loop closures and rotation averaging, designed specifically for egocentric videos.
### Acknowledgements
1. **LSD-SLAM**: J. Engel, T. Schops, and D. Cremers, “LSD-SLAM: Large-Scale Direct Monocular SLAM,” in Proceedings of the European Conference on Computer Vision (ECCV), 2014, pp. 834–849.
2. **Efficient and Robust Large-Scale Rotation Averaging**: A. Chatterjee and V. M. Govindu, “Efficient and robust large-scale rotation averaging.” in Proceedings of the IEEE International Conference on Computer Vision (ICCV), 2013, pp. 521–528.
### Dependencies
* OpenCV (3.0.0)
* Eigen (3.2.5)
* Boost (1.59.0)
* PCL (1.8.0) (if need to visualize point clouds)
* VTK (5.10.1) - for PCL
Tested on Xcode (Version ***)
### Data
Dataset can be downloaded from [here](https://www.dropbox.com/sh/5iq8caqzjf1qlyx/AADy71Wg3H_0tfE4XvNYr9fSa?dl=0) or the first two videos from the [HUJI EgoSeg Dataset](http://www.vision.huji.ac.il/egoseg/videos/dataset.html). In addition you can also use your own egocentric videos but remember to provide the intrinsic parameters.
### Installation
1. Install all the dependencies.
2. Compile the source code placed in **src** folder, name the generated executable **ELLC** and place it in the **bin** folder.
3. A part of the code is executed on MATLAB. Alter the **bin\ELLC_LC.sh** script as follows:
Change all occurences of
```
/Applications/MATLAB_R2015b.app/bin/matlab -nosplash -nodisplay -r
```
To
```
-nosplash -nodisplay -r
```
### Usage
1. Place the image sequence in **data** folder.
2. Update the Instrinsic parameters and other flags as described in the next section.
3. Execute. The program has two modes:
1. Local loop closure off : Run **ELLC** executable from inside the bin folder
2. Local loop closure on : Run **ELLC_LC.sh** script from inside the bin folder
### Configurable Parameters and Flags
Parameters/ Flags can be changed in ExternVariable.h. Some of the the important ones are summarized below:
* Intrinsic Parameters:
* **ORIG\_COLS**: Number of columns in the original image.
* **ORIG\_ROWS**: Number of rows in the original image.
* **ORIG\_FX**: Focal length in X direction.
* **ORIG\_FY**: Focal length in Y direction.
* **ORIG\_CX**: Principal point offset in X direction. [default: ORIG_COLS/2.0]
* **ORIG\_CY**: Principal point offset in Y direction. [default: ORIG_ROWS/2.0]
* **distortion_parameters**: Distortion parameters.
* Display/save images:
* **FLAG\_DISPLAY\_IMAGES**: Displays read images, and the residual images for each Gauss Newton iteration. [default: False]
* **FLAG\_DISPLAY\_DEPTH_MAP**: Displays the updated depth map for every keyframe [default: true]
* **FLAG\_SAVE\_DEPTH\_MAP**: Saves the depth map of keyframes in /Test_images. Blue is near and red is far. [default: false]
* **FLAG\_SAVE\_MATCH\_IMAGES**: Saves the frames matched during local loop closures in /matches (LC only) [default: False]
* Write poses:
* **FLAG\_WRITE\_ORIG\_POSES**: Writes original pose of each frame w.r.t world origin i.e first frame in \outputs\poses_orig.txt [default: True]
* **FLAG\_WRITE\_MATCH\_POSES**: Writes relative pose of extra matches during loop closure in \outputs\matchframes.txt (LC only). [default: False]
* Multi-threading:
* **FLAG\_DO\_PARALLEL\_DEPTH_ESTIMATION** [default: True]
* **FLAG\_DO\_PARALLEL\_POSE\_ESTIMATION** [default: True]
### Outputs
Final world poses in **outputs\poses_orig.txt** are saved as **Lie Algebra** elements in the following format:
```
CurrentFrameId KeyframeId wx wy wz vx vy vz rescalingFactor depthMapOccupancy
```
近期下载者:
相关文件:
收藏者: