├── .gitignore ├── LICENSE.md ├── README.md ├── app ├── Cross_View_SLAM.exe ├── ceres.dll ├── gflags.dll ├── glew32.dll ├── glfw3.dll ├── glog.dll ├── openblas.dll ├── opencv_calib3d3410.dll ├── opencv_core3410.dll ├── opencv_features2d3410.dll ├── opencv_flann3410.dll ├── opencv_imgcodecs3410.dll ├── opencv_imgproc3410.dll └── vl.dll └── config.yaml /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GDAOSU/Cross-View-SLAM/618255a8e737579cbfdd5dcee64b7a05ecf32ebc/.gitignore -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | END-USER LICENSE AGREEMENT 2 | 3 | IMPORTANT! READ CAREFULLY: This End-User License Agreement (“EULA”) is a legal agreement between you (either an individual or a single entity) (“You”) and The Ohio State University (“OSU”) for the use of certain “Works” that have been made in the course of research at OSU and any associated materials provided therewith (collectively, the “Works”). 4 | 5 | 1. ACCEPTANCE OF THIS EULA. YOU AGREE TO BE BOUND BY THE TERMS OF THIS EULA UPON THE EARLIER OF: (A) RECEIVING, REPRODUCING, OR OTHERWISE USING ANY OF THE WORKS OR (B) ACKNOWLEDGING THAT YOU HAVE READ THIS EULA AND CLICKING BELOW TO ACCEPT THE TERMS OF THE EULA. IF YOU DO NOT AGREE TO THE TERMS OF THIS EULA, DO NOT COPY OR USE THE WORKS, AND DO NOT CLICK TO INDICATE ACCEPTANCE OF THIS EULA. 6 | 7 | 2. License Grant. Subject to the restrictions herein, OSU hereby grants to You a non-exclusive, worldwide license to use and reproduce the Works solely for Your internal, non-commercial purposes. OSU shall provide You copies of the Works in electronic, printable or reproducible form. 8 | 9 | 3. Restrictions on Reproduction and Distribution. You shall solely reproduce the Works for the limited purpose of generating sufficient copies for Your use internally and for non-commercial purposes, and shall in no event distribute copies of, transmit or display the Works to third parties by sale, rental, lease, lending, or any other means. You shall not modify, translate, adapt, merge, or make derivative works of the Works. 10 | 11 | 4. The Works are distributed "as-is." OSU expressly disclaims any warranties of any kind, either express or implied, including but not limited to implied warranties of merchantability, fitness for a particular purpose, or noninfringement. OSU does not assume any responsibility or liability for damages of any kind that may result, directly or indirectly, from the use of the Works. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Cross-View-SLAM 2 | 3 | This is the offical repository of the paper: 4 | 5 | **Cross-view SLAM solver: global pose estimation of monocular ground-level video frames for 3D reconstruction using a reference 3D model from satellite images** 6 | 7 | [Paper](https://www.sciencedirect.com/science/article/pii/S0924271622000910) 8 | 9 | ```bibtex 10 | @article{elhashash2022, 11 | author = {Mostafa Elhashash and Rongjun Qin}, 12 | title = {Cross-view {SLAM} solver: {Global} pose estimation of monocular ground-level video frames for {3D} reconstruction using a reference {3D} model from satellite images}, 13 | journal = {ISPRS Journal of Photogrammetry and Remote Sensing}, 14 | volume = {188}, 15 | pages = {62-74}, 16 | year = {2022}, 17 | issn = {0924-2716}, 18 | doi = {https://doi.org/10.1016/j.isprsjprs.2022.03.018}, 19 | } 20 | ``` 21 | 22 | 23 | ## Usage example 24 | Execute the following command after modifying the `config.yaml`. 25 | ``` 26 | Cross_View_SLAM.exe PATH_TO_YAML_FILE 27 | ``` 28 | 29 | `config.yaml` contains all the parameters needed for the program to run. Descriptions for each parameter are provided as comments in the file. 30 | 31 | The results folder should contain `trajectory.txt` for the estimated poses defined in [TUM trjectory format](https://vision.in.tum.de/data/datasets/rgbd-dataset/file_formats) with replacing the timestamp by the image name. 32 | The results also contain the undistorted images and reconstruction results in VisualSFM NVM format. You can use [OpenMVS](https://github.com/cdcseacave/openMVS) to densify the results. Note we split the reconstruction into a few segments before densification to avoid memory issues. 33 | 34 | ## Note 35 | As mentioned in the paper, the weights `alpha` and `beta` in Eq. (4) need to be tuned to get good resuls. Refer to the conclusion section for the limitations of this work. 36 | Code release might be possible but will take a longer time. 37 | -------------------------------------------------------------------------------- /app/Cross_View_SLAM.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GDAOSU/Cross-View-SLAM/618255a8e737579cbfdd5dcee64b7a05ecf32ebc/app/Cross_View_SLAM.exe -------------------------------------------------------------------------------- /app/ceres.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GDAOSU/Cross-View-SLAM/618255a8e737579cbfdd5dcee64b7a05ecf32ebc/app/ceres.dll -------------------------------------------------------------------------------- /app/gflags.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GDAOSU/Cross-View-SLAM/618255a8e737579cbfdd5dcee64b7a05ecf32ebc/app/gflags.dll -------------------------------------------------------------------------------- /app/glew32.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GDAOSU/Cross-View-SLAM/618255a8e737579cbfdd5dcee64b7a05ecf32ebc/app/glew32.dll -------------------------------------------------------------------------------- /app/glfw3.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GDAOSU/Cross-View-SLAM/618255a8e737579cbfdd5dcee64b7a05ecf32ebc/app/glfw3.dll -------------------------------------------------------------------------------- /app/glog.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GDAOSU/Cross-View-SLAM/618255a8e737579cbfdd5dcee64b7a05ecf32ebc/app/glog.dll -------------------------------------------------------------------------------- /app/openblas.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GDAOSU/Cross-View-SLAM/618255a8e737579cbfdd5dcee64b7a05ecf32ebc/app/openblas.dll -------------------------------------------------------------------------------- /app/opencv_calib3d3410.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GDAOSU/Cross-View-SLAM/618255a8e737579cbfdd5dcee64b7a05ecf32ebc/app/opencv_calib3d3410.dll -------------------------------------------------------------------------------- /app/opencv_core3410.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GDAOSU/Cross-View-SLAM/618255a8e737579cbfdd5dcee64b7a05ecf32ebc/app/opencv_core3410.dll -------------------------------------------------------------------------------- /app/opencv_features2d3410.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GDAOSU/Cross-View-SLAM/618255a8e737579cbfdd5dcee64b7a05ecf32ebc/app/opencv_features2d3410.dll -------------------------------------------------------------------------------- /app/opencv_flann3410.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GDAOSU/Cross-View-SLAM/618255a8e737579cbfdd5dcee64b7a05ecf32ebc/app/opencv_flann3410.dll -------------------------------------------------------------------------------- /app/opencv_imgcodecs3410.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GDAOSU/Cross-View-SLAM/618255a8e737579cbfdd5dcee64b7a05ecf32ebc/app/opencv_imgcodecs3410.dll -------------------------------------------------------------------------------- /app/opencv_imgproc3410.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GDAOSU/Cross-View-SLAM/618255a8e737579cbfdd5dcee64b7a05ecf32ebc/app/opencv_imgproc3410.dll -------------------------------------------------------------------------------- /app/vl.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GDAOSU/Cross-View-SLAM/618255a8e737579cbfdd5dcee64b7a05ecf32ebc/app/vl.dll -------------------------------------------------------------------------------- /config.yaml: -------------------------------------------------------------------------------- 1 | %YAML:1.0 2 | 3 | # Set to 1 to use the satellite model, 0 for traditional SLAM 4 | use_sat: 1 5 | 6 | # Focal length and distortion parameters. 7 | f: 8 | k1: 9 | k2: 10 | 11 | # Camera poses of the first two frames 12 | # The rotation matrix follows computer vision convention (X-right, Y-down, Z-forward) 13 | # The rotation matrix transforms a point from the world to camera (x = K[R -Rc]X) 14 | R1: !!opencv-matrix 15 | rows: 3 16 | cols: 3 17 | dt: d 18 | data: [0, 0, 0, 0, 0 ,0 ,0 ,0 ,0] 19 | R2: !!opencv-matrix 20 | rows: 3 21 | cols: 3 22 | dt: d 23 | data: [0, 0, 0, 0, 0 ,0 ,0 ,0 ,0] 24 | # Camera centers 25 | c1: [ 0, 0, 0 ] 26 | c2: [ 0, 0, 0 ] 27 | 28 | # Input folders for ground-view video frames and semantic labels. Pixels labeled as buildings should have values of [70, 70, 70] 29 | ground: "" 30 | ground_semantic: "" 31 | 32 | # Output folder to store the results 33 | results_folder: "" 34 | 35 | # DSM raster, expected to be Float32 tif 36 | DSM: "" 37 | # DSM buildings raster, expected to be Float32 tif. This file should contain values for pixels identified as buildings only. 38 | DSM_building: "" 39 | # DSM TFW 40 | DSM_tfw: "" 41 | # To avoid percision loss, we define the offset 42 | DSM_offset: [ 0, 0, 0 ] 43 | # DSM constant ground. We assume constant ground during projections only. 44 | DSM_ground: 0 45 | # Input road mask, expected to be RGB. Road pixels should have values of [255,255,255] 46 | sat_road_mask: "" 47 | 48 | # alpha and beta in Eq.(4) in the paper 49 | depth_error_weight: 0.15 50 | height_error_weight: 15 --------------------------------------------------------------------------------