├── README.md ├── Sparse3d.sln ├── Sparse3d.v12.suo ├── env.txt ├── run_bat ├── ICL_livingroom_run │ ├── run_10.bat │ ├── run_15.bat │ ├── run_2.bat │ ├── run_20.bat │ ├── run_25.bat │ ├── run_3.bat │ └── run_5.bat ├── ICL_office_run │ ├── run_10.bat │ ├── run_15.bat │ ├── run_2.bat │ ├── run_20.bat │ ├── run_25.bat │ ├── run_3.bat │ └── run_5.bat ├── Lab1 │ └── run.bat ├── Lab2 │ └── run.bat ├── README.txt ├── fr1_room │ ├── run_10.bat │ ├── run_2.bat │ ├── run_4.bat │ ├── run_6.bat │ └── run_8.bat ├── fr2_desk │ ├── run_10.bat │ ├── run_15.bat │ ├── run_2.bat │ ├── run_20.bat │ ├── run_25.bat │ ├── run_3.bat │ └── run_5.bat ├── fr3_office │ ├── run_10.bat │ ├── run_15.bat │ ├── run_2.bat │ ├── run_20.bat │ ├── run_25.bat │ ├── run_3.bat │ └── run_5.bat └── run.bat └── src ├── ColorCorrespondence ├── ColorCorrespondence.sln ├── ColorCorrespondence.v12.suo └── ColorCorrespondence │ ├── BuildCorpPointSet.h │ ├── ColorCorrespondence.vcxproj │ ├── ColorCorrespondence.vcxproj.filters │ ├── ColorCorrespondence.vcxproj.user │ ├── GraphMatching.cpp │ ├── GraphMatching.h │ ├── SubsidiaryFunction.cpp │ ├── SubsidiaryFunction.h │ ├── Verbose.h │ └── main.cpp ├── GeometricCorrespondence ├── GeometricCorrespondence.sln ├── GeometricCorrespondence.v12.suo └── GeometricCorrespondence │ ├── BuildCorpPointSet.h │ ├── GeometricCorrespondence.vcxproj │ ├── GeometricCorrespondence.vcxproj.filters │ ├── GeometricCorrespondence.vcxproj.user │ ├── GraphMatching.cpp │ ├── GraphMatching.h │ ├── SubsidiaryFunction.h │ ├── Verbose.h │ └── main.cpp ├── GlobalOptimizer1 ├── GlobalOptimizer1.sln ├── GlobalOptimizer1.v12.suo └── GlobalOptimizer1 │ ├── GlobalOptimizer1.vcxproj │ ├── GlobalOptimizer1.vcxproj.filters │ ├── GraphLoopDetect.h │ ├── ProgressiveOpt.cpp │ ├── ProgressiveOpt.h │ ├── Verbose.h │ ├── helper.h │ └── main.cpp ├── GlobalOptimizer2 ├── GlobalOptimizer2.sln ├── GlobalOptimizer2.v12.suo └── GlobalOptimizer2 │ ├── GlobalOptimizer2.vcxproj │ ├── GlobalOptimizer2.vcxproj.filters │ ├── GlobalOptimizer2.vcxproj.user │ ├── OptApp.cpp │ ├── OptApp.h │ ├── Verbose.h │ ├── helper.h │ ├── main.cpp │ └── vertigo3d │ ├── edge_se3Switchable.cpp │ ├── edge_se3Switchable.h │ ├── edge_switchPrior.cpp │ ├── edge_switchPrior.h │ ├── types_g2o_robust.cpp │ ├── vertex_switchLinear.cpp │ └── vertex_switchLinear.h ├── MergeInfo ├── MergeInfo.sln ├── MergeInfo.v12.suo └── MergeInfo │ ├── MergeInfo.vcxproj │ ├── MergeInfo.vcxproj.filters │ ├── helper.h │ └── main.cpp ├── Narf ├── Narf.sln ├── Narf.v12.suo └── Narf │ ├── NARF.h │ ├── Narf.vcxproj │ ├── Narf.vcxproj.filters │ ├── Narf.vcxproj.user │ ├── Verbose.h │ └── main.cpp ├── Png2Cloud ├── Png2Cloud.sln ├── Png2Cloud.v12.suo └── Png2Cloud │ ├── Png2Cloud.h │ ├── Png2Cloud.vcxproj │ ├── Png2Cloud.vcxproj.filters │ ├── Png2Cloud.vcxproj.user │ ├── Verbose.h │ └── main.cpp ├── ShiTomasi ├── ShiTomasi.sln ├── ShiTomasi.v12.suo └── ShiTomasi │ ├── ShiTomasi.cpp │ ├── ShiTomasi.vcxproj │ ├── ShiTomasi.vcxproj.filters │ └── Verbose.h └── Sift ├── Sift.sln ├── Sift.v12.suo └── Sift ├── SIFT.cpp ├── Sift.vcxproj ├── Sift.vcxproj.filters ├── Sift.vcxproj.user └── Verbose.h /README.md: -------------------------------------------------------------------------------- 1 | # Sparse3D 2 | 3 | Sparse3D is an offline reconstruction system. It is able to robustly handle sparse RGB-D input data (e.g. fast-moving scanning, small inter-frame overlap and etc). 4 | 5 | Please check our published paper for more details. 6 | 7 | ___[Sparse3D: A new global model for matching sparse RGB-D dataset with small inter-frame overlap](https://www.sciencedirect.com/science/article/pii/S0010448518302276)___ 8 | 9 | 10 | Here is the video demo 11 | https://youtu.be/qk8iQzommPM 12 | 13 | 14 | # 1. Prerequisites 15 | 16 | We have tested this libraries on Windows10 x64 operation system with Microsoft Visual Studio 2013 (x86 solution). It should be easy to compile in other OS. 17 | 18 | The following install instruction only works on Windows10 X64 OS and Microsoft Visual Studio 2013 (x86 solution). 19 | 20 | For your convenience, the 3rd dependencies can be downloaded [here](https://drive.google.com/open?id=1mQyDLpdVoQKWVBcRU9iTdNWRnw1liQKY). 21 | 22 | 23 | Modify environment variables 24 | -------------------- 25 | After Install/unzip all of dependencies. You should create some environment variables and specify correct path. Please refer "env.txt" for more details. 26 | 27 | 28 | # 2. Build 29 | When you finish all of environment configuration, you can use VS2013 to build the whole project. If all things go well, you can run it without any errors. 30 | 31 | 32 | # 3. Datasets 33 | Our experiment datasets can be downloaded [here](https://drive.google.com/open?id=1q1NG6_shWjXbohKKMSA9b7OHsfc54L6G). 34 | 35 | 36 | # 4. Citation 37 | If this implementation is useful in your research, please cite 38 | 39 | ``` 40 | @article{le2018sparse3d, 41 | title={Sparse3D: A new global model for matching sparse RGB-D dataset with small inter-frame overlap}, 42 | author={Le, Canyu and Li, Xin}, 43 | journal={Computer-Aided Design}, 44 | volume={102}, 45 | pages={33--43}, 46 | year={2018}, 47 | publisher={Elsevier} 48 | } 49 | ``` 50 | 51 | -------------------------------------------------------------------------------- /Sparse3d.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 2013 4 | VisualStudioVersion = 12.0.31101.0 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ColorCorrespondence", "src\ColorCorrespondence\ColorCorrespondence\ColorCorrespondence.vcxproj", "{AEAAF78E-D467-406E-8696-1C19E285D98E}" 7 | EndProject 8 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GeometricCorrespondence", "src\GeometricCorrespondence\GeometricCorrespondence\GeometricCorrespondence.vcxproj", "{3CD951C9-8DA4-4D50-881E-B6FC6E7109F6}" 9 | EndProject 10 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GlobalOptimizer1", "src\GlobalOptimizer1\GlobalOptimizer1\GlobalOptimizer1.vcxproj", "{AD410B3D-02CF-4947-9172-729ECF35F8FB}" 11 | EndProject 12 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MergeInfo", "src\MergeInfo\MergeInfo\MergeInfo.vcxproj", "{84A0A96F-5658-4AB6-8319-AAC648FE1451}" 13 | EndProject 14 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Narf", "src\Narf\Narf\Narf.vcxproj", "{12035740-6284-4ABC-A0E3-8D3F0169F55C}" 15 | EndProject 16 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Png2Cloud", "src\Png2Cloud\Png2Cloud\Png2Cloud.vcxproj", "{3DFD55FA-C10D-44FE-B825-EC97162F360A}" 17 | EndProject 18 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ShiTomasi", "src\ShiTomasi\ShiTomasi\ShiTomasi.vcxproj", "{F04ECB3D-0B57-4860-AF13-053FF843F7B3}" 19 | EndProject 20 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Sift", "src\Sift\Sift\Sift.vcxproj", "{1C313157-88A6-46CC-B6F4-2B72C920A723}" 21 | EndProject 22 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GlobalOptimizer2", "src\GlobalOptimizer2\GlobalOptimizer2\GlobalOptimizer2.vcxproj", "{01D867D4-6903-423F-A64E-DB23D42A3AD0}" 23 | EndProject 24 | Global 25 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 26 | Debug|Win32 = Debug|Win32 27 | Release|Win32 = Release|Win32 28 | EndGlobalSection 29 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 30 | {AEAAF78E-D467-406E-8696-1C19E285D98E}.Debug|Win32.ActiveCfg = Debug|Win32 31 | {AEAAF78E-D467-406E-8696-1C19E285D98E}.Debug|Win32.Build.0 = Debug|Win32 32 | {AEAAF78E-D467-406E-8696-1C19E285D98E}.Release|Win32.ActiveCfg = Release|Win32 33 | {AEAAF78E-D467-406E-8696-1C19E285D98E}.Release|Win32.Build.0 = Release|Win32 34 | {3CD951C9-8DA4-4D50-881E-B6FC6E7109F6}.Debug|Win32.ActiveCfg = Debug|Win32 35 | {3CD951C9-8DA4-4D50-881E-B6FC6E7109F6}.Debug|Win32.Build.0 = Debug|Win32 36 | {3CD951C9-8DA4-4D50-881E-B6FC6E7109F6}.Release|Win32.ActiveCfg = Release|Win32 37 | {3CD951C9-8DA4-4D50-881E-B6FC6E7109F6}.Release|Win32.Build.0 = Release|Win32 38 | {AD410B3D-02CF-4947-9172-729ECF35F8FB}.Debug|Win32.ActiveCfg = Debug|Win32 39 | {AD410B3D-02CF-4947-9172-729ECF35F8FB}.Debug|Win32.Build.0 = Debug|Win32 40 | {AD410B3D-02CF-4947-9172-729ECF35F8FB}.Release|Win32.ActiveCfg = Release|Win32 41 | {AD410B3D-02CF-4947-9172-729ECF35F8FB}.Release|Win32.Build.0 = Release|Win32 42 | {84A0A96F-5658-4AB6-8319-AAC648FE1451}.Debug|Win32.ActiveCfg = Debug|Win32 43 | {84A0A96F-5658-4AB6-8319-AAC648FE1451}.Debug|Win32.Build.0 = Debug|Win32 44 | {84A0A96F-5658-4AB6-8319-AAC648FE1451}.Release|Win32.ActiveCfg = Release|Win32 45 | {84A0A96F-5658-4AB6-8319-AAC648FE1451}.Release|Win32.Build.0 = Release|Win32 46 | {12035740-6284-4ABC-A0E3-8D3F0169F55C}.Debug|Win32.ActiveCfg = Debug|Win32 47 | {12035740-6284-4ABC-A0E3-8D3F0169F55C}.Debug|Win32.Build.0 = Debug|Win32 48 | {12035740-6284-4ABC-A0E3-8D3F0169F55C}.Release|Win32.ActiveCfg = Release|Win32 49 | {12035740-6284-4ABC-A0E3-8D3F0169F55C}.Release|Win32.Build.0 = Release|Win32 50 | {3DFD55FA-C10D-44FE-B825-EC97162F360A}.Debug|Win32.ActiveCfg = Debug|Win32 51 | {3DFD55FA-C10D-44FE-B825-EC97162F360A}.Debug|Win32.Build.0 = Debug|Win32 52 | {3DFD55FA-C10D-44FE-B825-EC97162F360A}.Release|Win32.ActiveCfg = Release|Win32 53 | {3DFD55FA-C10D-44FE-B825-EC97162F360A}.Release|Win32.Build.0 = Release|Win32 54 | {F04ECB3D-0B57-4860-AF13-053FF843F7B3}.Debug|Win32.ActiveCfg = Debug|Win32 55 | {F04ECB3D-0B57-4860-AF13-053FF843F7B3}.Debug|Win32.Build.0 = Debug|Win32 56 | {F04ECB3D-0B57-4860-AF13-053FF843F7B3}.Release|Win32.ActiveCfg = Release|Win32 57 | {F04ECB3D-0B57-4860-AF13-053FF843F7B3}.Release|Win32.Build.0 = Release|Win32 58 | {1C313157-88A6-46CC-B6F4-2B72C920A723}.Debug|Win32.ActiveCfg = Debug|Win32 59 | {1C313157-88A6-46CC-B6F4-2B72C920A723}.Debug|Win32.Build.0 = Debug|Win32 60 | {1C313157-88A6-46CC-B6F4-2B72C920A723}.Release|Win32.ActiveCfg = Release|Win32 61 | {1C313157-88A6-46CC-B6F4-2B72C920A723}.Release|Win32.Build.0 = Release|Win32 62 | {01D867D4-6903-423F-A64E-DB23D42A3AD0}.Debug|Win32.ActiveCfg = Debug|Win32 63 | {01D867D4-6903-423F-A64E-DB23D42A3AD0}.Debug|Win32.Build.0 = Debug|Win32 64 | {01D867D4-6903-423F-A64E-DB23D42A3AD0}.Release|Win32.ActiveCfg = Release|Win32 65 | {01D867D4-6903-423F-A64E-DB23D42A3AD0}.Release|Win32.Build.0 = Release|Win32 66 | EndGlobalSection 67 | GlobalSection(SolutionProperties) = preSolution 68 | HideSolutionNode = FALSE 69 | EndGlobalSection 70 | EndGlobal 71 | -------------------------------------------------------------------------------- /Sparse3d.v12.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lecanyu/Sparse3d/30da7ffe111ec17ad3ba2c687530a01c13a93a1a/Sparse3d.v12.suo -------------------------------------------------------------------------------- /env.txt: -------------------------------------------------------------------------------- 1 | Need to define below environment variables. 2 | 3 | You must use the same variable name and modify the value to your system path 4 | 5 | variable_name variable_value (example pathes below) 6 | PCL18_x86 D:\PCL 1.8.0 7 | armadillo78 D:\3rdParty\armadillo-7.800.1 8 | opencv24 D:\opencv2.4.13\opencv 9 | g2o D:\3rdParty\g2o 10 | 11 | ----------------------------------------- 12 | Also, you should add DLLs directory to your PATH (Here is examples) 13 | X:\PCL 1.8.0\bin 14 | X:\opencv\build\x86\vc12\bin 15 | X:\opencv\build\x64\vc12\bin 16 | X:\OpenNI2\Redist 17 | X:\g2o\bin\Release 18 | X:\g2o\bin\Debug 19 | X:\armadillo-7.800.1\LAPACK_Debug_x86 20 | X:\armadillo-7.800.1\LAPACK_Release_x86 21 | -------------------------------------------------------------------------------- /run_bat/ICL_livingroom_run/run_10.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | cd /d %~dp0 3 | ..\Png2Cloud.exe ../../ICL_NUIM_living_room/sandbox_10/depth/ ../../ICL_NUIM_living_room/sandbox_10/color/ ../../ICL_NUIM_living_room/sandbox_10/camera_para.txt ../../ICL_NUIM_living_room/sandbox_10/pointcloud/ ../../ICL_NUIM_living_room/sandbox_10/pointcloud_ds/ ../../ICL_NUIM_living_room/sandbox_10/pointcloud_xyzn/ ../../ICL_NUIM_living_room/sandbox_10/pointcloud_ds_xyzn/ 4 | ..\Sift.exe ../../ICL_NUIM_living_room/sandbox_10/color/ ../../ICL_NUIM_living_room/sandbox_10/sift_correspondence.txt 5 | ..\ShiTomasi.exe ../../ICL_NUIM_living_room/sandbox_10/color/ ../../ICL_NUIM_living_room/sandbox_10/corner_correspondence.txt 6 | ..\Narf.exe ../../ICL_NUIM_living_room/sandbox_10/pointcloud_xyzn/ ../../ICL_NUIM_living_room/sandbox_10/keypoint/ ../../ICL_NUIM_living_room/sandbox_10/geometric_descriptor/ 7 | ::SIFT matching 8 | ..\ColorCorrespondence.exe ../../ICL_NUIM_living_room/sandbox_10/pointcloud/ ../../ICL_NUIM_living_room/sandbox_10/pointcloud_ds/ ../../ICL_NUIM_living_room/sandbox_10/depth/ ../../ICL_NUIM_living_room/sandbox_10/sift_correspondence.txt ../../ICL_NUIM_living_room/sandbox_10/camera_para.txt -4.0 ../../ICL_NUIM_living_room/sandbox_10/sift_traj.txt ../../ICL_NUIM_living_room/sandbox_10/sift_info.txt 9 | ::ShiTomasi matching 10 | ..\ColorCorrespondence.exe ../../ICL_NUIM_living_room/sandbox_10/pointcloud/ ../../ICL_NUIM_living_room/sandbox_10/pointcloud_ds/ ../../ICL_NUIM_living_room/sandbox_10/depth/ ../../ICL_NUIM_living_room/sandbox_10/corner_correspondence.txt ../../ICL_NUIM_living_room/sandbox_10/camera_para.txt -4.0 ../../ICL_NUIM_living_room/sandbox_10/corner_traj.txt ../../ICL_NUIM_living_room/sandbox_10/corner_info.txt 11 | ..\GeometricCorrespondence.exe ../../ICL_NUIM_living_room/sandbox_10/pointcloud/ ../../ICL_NUIM_living_room/sandbox_10/pointcloud_ds/ ../../ICL_NUIM_living_room/sandbox_10/keypoint/ ../../ICL_NUIM_living_room/sandbox_10/geometric_descriptor/ ../../ICL_NUIM_living_room/sandbox_10/camera_para.txt -4.0 ../../ICL_NUIM_living_room/sandbox_10/narf_traj.txt ../../ICL_NUIM_living_room/sandbox_10/narf_info.txt 12 | ..\MergeInfo.exe ../../ICL_NUIM_living_room/sandbox_10/pointcloud_ds/ ../../ICL_NUIM_living_room/sandbox_10/narf_traj.txt ../../ICL_NUIM_living_room/sandbox_10/narf_info.txt ../../ICL_NUIM_living_room/sandbox_10/sift_traj.txt ../../ICL_NUIM_living_room/sandbox_10/sift_info.txt ../../ICL_NUIM_living_room/sandbox_10/corner_traj.txt ../../ICL_NUIM_living_room/sandbox_10/corner_info.txt ../../ICL_NUIM_living_room/sandbox_10/traj.txt ../../ICL_NUIM_living_room/sandbox_10/info.txt 13 | ..\GlobalOptimizer1.exe ../../ICL_NUIM_living_room/sandbox_10/pointcloud/ ../../ICL_NUIM_living_room/sandbox_10/traj.txt ../../ICL_NUIM_living_room/sandbox_10/info.txt ../../ICL_NUIM_living_room/sandbox_10/pose_opt1.txt ../../ICL_NUIM_living_room/sandbox_10/fail_build_complete_model.txt ../../ICL_NUIM_living_room/sandbox_10/selected_edge_opt1.txt 0.35 0.55 0.35 0.0025 14 | if exist ../../ICL_NUIM_living_room/sandbox_10/fail_build_complete_model.txt goto OVER 15 | ..\GlobalOptimizer2.exe ../../ICL_NUIM_living_room/sandbox_10/pose_opt1.txt ../../ICL_NUIM_living_room/sandbox_10/pointcloud/ ../../ICL_NUIM_living_room/sandbox_10/traj.txt ../../ICL_NUIM_living_room/sandbox_10/info.txt ../../ICL_NUIM_living_room/sandbox_10/pose_opt2.txt ../../ICL_NUIM_living_room/sandbox_10/traj_remain_opt2.txt ../../ICL_NUIM_living_room/sandbox_10/info_remain_opt2.txt 50.0 16 | :OVER -------------------------------------------------------------------------------- /run_bat/ICL_livingroom_run/run_15.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | cd /d %~dp0 3 | ..\Png2Cloud.exe ../../ICL_NUIM_living_room/sandbox_15/depth/ ../../ICL_NUIM_living_room/sandbox_15/color/ ../../ICL_NUIM_living_room/sandbox_15/camera_para.txt ../../ICL_NUIM_living_room/sandbox_15/pointcloud/ ../../ICL_NUIM_living_room/sandbox_15/pointcloud_ds/ ../../ICL_NUIM_living_room/sandbox_15/pointcloud_xyzn/ ../../ICL_NUIM_living_room/sandbox_15/pointcloud_ds_xyzn/ 4 | ..\Sift.exe ../../ICL_NUIM_living_room/sandbox_15/color/ ../../ICL_NUIM_living_room/sandbox_15/sift_correspondence.txt 5 | ..\ShiTomasi.exe ../../ICL_NUIM_living_room/sandbox_15/color/ ../../ICL_NUIM_living_room/sandbox_15/corner_correspondence.txt 6 | ..\Narf.exe ../../ICL_NUIM_living_room/sandbox_15/pointcloud_xyzn/ ../../ICL_NUIM_living_room/sandbox_15/keypoint/ ../../ICL_NUIM_living_room/sandbox_15/geometric_descriptor/ 7 | ::SIFT matching 8 | ..\ColorCorrespondence.exe ../../ICL_NUIM_living_room/sandbox_15/pointcloud/ ../../ICL_NUIM_living_room/sandbox_15/pointcloud_ds/ ../../ICL_NUIM_living_room/sandbox_15/depth/ ../../ICL_NUIM_living_room/sandbox_15/sift_correspondence.txt ../../ICL_NUIM_living_room/sandbox_15/camera_para.txt -4.0 ../../ICL_NUIM_living_room/sandbox_15/sift_traj.txt ../../ICL_NUIM_living_room/sandbox_15/sift_info.txt 9 | ::ShiTomasi matching 10 | ..\ColorCorrespondence.exe ../../ICL_NUIM_living_room/sandbox_15/pointcloud/ ../../ICL_NUIM_living_room/sandbox_15/pointcloud_ds/ ../../ICL_NUIM_living_room/sandbox_15/depth/ ../../ICL_NUIM_living_room/sandbox_15/corner_correspondence.txt ../../ICL_NUIM_living_room/sandbox_15/camera_para.txt -4.0 ../../ICL_NUIM_living_room/sandbox_15/corner_traj.txt ../../ICL_NUIM_living_room/sandbox_15/corner_info.txt 11 | ..\GeometricCorrespondence.exe ../../ICL_NUIM_living_room/sandbox_15/pointcloud/ ../../ICL_NUIM_living_room/sandbox_15/pointcloud_ds/ ../../ICL_NUIM_living_room/sandbox_15/keypoint/ ../../ICL_NUIM_living_room/sandbox_15/geometric_descriptor/ ../../ICL_NUIM_living_room/sandbox_15/camera_para.txt -4.0 ../../ICL_NUIM_living_room/sandbox_15/narf_traj.txt ../../ICL_NUIM_living_room/sandbox_15/narf_info.txt 12 | ..\MergeInfo.exe ../../ICL_NUIM_living_room/sandbox_15/pointcloud_ds/ ../../ICL_NUIM_living_room/sandbox_15/narf_traj.txt ../../ICL_NUIM_living_room/sandbox_15/narf_info.txt ../../ICL_NUIM_living_room/sandbox_15/sift_traj.txt ../../ICL_NUIM_living_room/sandbox_15/sift_info.txt ../../ICL_NUIM_living_room/sandbox_15/corner_traj.txt ../../ICL_NUIM_living_room/sandbox_15/corner_info.txt ../../ICL_NUIM_living_room/sandbox_15/traj.txt ../../ICL_NUIM_living_room/sandbox_15/info.txt 13 | ..\GlobalOptimizer1.exe ../../ICL_NUIM_living_room/sandbox_15/pointcloud/ ../../ICL_NUIM_living_room/sandbox_15/traj.txt ../../ICL_NUIM_living_room/sandbox_15/info.txt ../../ICL_NUIM_living_room/sandbox_15/pose_opt1.txt ../../ICL_NUIM_living_room/sandbox_15/fail_build_complete_model.txt ../../ICL_NUIM_living_room/sandbox_15/selected_edge_opt1.txt 0.35 0.55 0.35 0.005 14 | if exist ../../ICL_NUIM_living_room/sandbox_15/fail_build_complete_model.txt goto OVER 15 | ..\GlobalOptimizer2.exe ../../ICL_NUIM_living_room/sandbox_15/pose_opt1.txt ../../ICL_NUIM_living_room/sandbox_15/pointcloud/ ../../ICL_NUIM_living_room/sandbox_15/traj.txt ../../ICL_NUIM_living_room/sandbox_15/info.txt ../../ICL_NUIM_living_room/sandbox_15/pose_opt2.txt ../../ICL_NUIM_living_room/sandbox_15/traj_remain_opt2.txt ../../ICL_NUIM_living_room/sandbox_15/info_remain_opt2.txt 50.0 16 | :OVER -------------------------------------------------------------------------------- /run_bat/ICL_livingroom_run/run_2.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | cd /d %~dp0 3 | ..\Png2Cloud.exe ../../ICL_NUIM_living_room/sandbox_2/depth/ ../../ICL_NUIM_living_room/sandbox_2/color/ ../../ICL_NUIM_living_room/sandbox_2/camera_para.txt ../../ICL_NUIM_living_room/sandbox_2/pointcloud/ ../../ICL_NUIM_living_room/sandbox_2/pointcloud_ds/ ../../ICL_NUIM_living_room/sandbox_2/pointcloud_xyzn/ ../../ICL_NUIM_living_room/sandbox_2/pointcloud_ds_xyzn/ 4 | ..\Sift.exe ../../ICL_NUIM_living_room/sandbox_2/color/ ../../ICL_NUIM_living_room/sandbox_2/sift_correspondence.txt 5 | ..\ShiTomasi.exe ../../ICL_NUIM_living_room/sandbox_2/color/ ../../ICL_NUIM_living_room/sandbox_2/corner_correspondence.txt 6 | ..\Narf.exe ../../ICL_NUIM_living_room/sandbox_2/pointcloud_xyzn/ ../../ICL_NUIM_living_room/sandbox_2/keypoint/ ../../ICL_NUIM_living_room/sandbox_2/geometric_descriptor/ 7 | ::SIFT matching 8 | ..\ColorCorrespondence.exe ../../ICL_NUIM_living_room/sandbox_2/pointcloud/ ../../ICL_NUIM_living_room/sandbox_2/pointcloud_ds/ ../../ICL_NUIM_living_room/sandbox_2/depth/ ../../ICL_NUIM_living_room/sandbox_2/sift_correspondence.txt ../../ICL_NUIM_living_room/sandbox_2/camera_para.txt -4.0 ../../ICL_NUIM_living_room/sandbox_2/sift_traj.txt ../../ICL_NUIM_living_room/sandbox_2/sift_info.txt 9 | ::ShiTomasi matching 10 | ..\ColorCorrespondence.exe ../../ICL_NUIM_living_room/sandbox_2/pointcloud/ ../../ICL_NUIM_living_room/sandbox_2/pointcloud_ds/ ../../ICL_NUIM_living_room/sandbox_2/depth/ ../../ICL_NUIM_living_room/sandbox_2/corner_correspondence.txt ../../ICL_NUIM_living_room/sandbox_2/camera_para.txt -4.0 ../../ICL_NUIM_living_room/sandbox_2/corner_traj.txt ../../ICL_NUIM_living_room/sandbox_2/corner_info.txt 11 | ..\GeometricCorrespondence.exe ../../ICL_NUIM_living_room/sandbox_2/pointcloud/ ../../ICL_NUIM_living_room/sandbox_2/pointcloud_ds/ ../../ICL_NUIM_living_room/sandbox_2/keypoint/ ../../ICL_NUIM_living_room/sandbox_2/geometric_descriptor/ ../../ICL_NUIM_living_room/sandbox_2/camera_para.txt -4.0 ../../ICL_NUIM_living_room/sandbox_2/narf_traj.txt ../../ICL_NUIM_living_room/sandbox_2/narf_info.txt 12 | ..\MergeInfo.exe ../../ICL_NUIM_living_room/sandbox_2/pointcloud_ds/ ../../ICL_NUIM_living_room/sandbox_2/narf_traj.txt ../../ICL_NUIM_living_room/sandbox_2/narf_info.txt ../../ICL_NUIM_living_room/sandbox_2/sift_traj.txt ../../ICL_NUIM_living_room/sandbox_2/sift_info.txt ../../ICL_NUIM_living_room/sandbox_2/corner_traj.txt ../../ICL_NUIM_living_room/sandbox_2/corner_info.txt ../../ICL_NUIM_living_room/sandbox_2/traj.txt ../../ICL_NUIM_living_room/sandbox_2/info.txt 13 | ..\GlobalOptimizer1.exe ../../ICL_NUIM_living_room/sandbox_2/pointcloud/ ../../ICL_NUIM_living_room/sandbox_2/traj.txt ../../ICL_NUIM_living_room/sandbox_2/info.txt ../../ICL_NUIM_living_room/sandbox_2/pose_opt1.txt ../../ICL_NUIM_living_room/sandbox_2/fail_build_complete_model.txt ../../ICL_NUIM_living_room/sandbox_2/selected_edge_opt1.txt 0.35 0.55 0.35 0.001 14 | if exist ../../ICL_NUIM_living_room/sandbox_2/fail_build_complete_model.txt goto OVER 15 | ..\GlobalOptimizer2.exe ../../ICL_NUIM_living_room/sandbox_2/pose_opt1.txt ../../ICL_NUIM_living_room/sandbox_2/pointcloud/ ../../ICL_NUIM_living_room/sandbox_2/traj.txt ../../ICL_NUIM_living_room/sandbox_2/info.txt ../../ICL_NUIM_living_room/sandbox_2/pose_opt2.txt ../../ICL_NUIM_living_room/sandbox_2/traj_remain_opt2.txt ../../ICL_NUIM_living_room/sandbox_2/info_remain_opt2.txt 50.0 16 | :OVER -------------------------------------------------------------------------------- /run_bat/ICL_livingroom_run/run_20.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | cd /d %~dp0 3 | ..\Png2Cloud.exe ../../ICL_NUIM_living_room/sandbox_20/depth/ ../../ICL_NUIM_living_room/sandbox_20/color/ ../../ICL_NUIM_living_room/sandbox_20/camera_para.txt ../../ICL_NUIM_living_room/sandbox_20/pointcloud/ ../../ICL_NUIM_living_room/sandbox_20/pointcloud_ds/ ../../ICL_NUIM_living_room/sandbox_20/pointcloud_xyzn/ ../../ICL_NUIM_living_room/sandbox_20/pointcloud_ds_xyzn/ 4 | ..\Sift.exe ../../ICL_NUIM_living_room/sandbox_20/color/ ../../ICL_NUIM_living_room/sandbox_20/sift_correspondence.txt 5 | ..\ShiTomasi.exe ../../ICL_NUIM_living_room/sandbox_20/color/ ../../ICL_NUIM_living_room/sandbox_20/corner_correspondence.txt 6 | ..\Narf.exe ../../ICL_NUIM_living_room/sandbox_20/pointcloud_xyzn/ ../../ICL_NUIM_living_room/sandbox_20/keypoint/ ../../ICL_NUIM_living_room/sandbox_20/geometric_descriptor/ 7 | ::SIFT matching 8 | ..\ColorCorrespondence.exe ../../ICL_NUIM_living_room/sandbox_20/pointcloud/ ../../ICL_NUIM_living_room/sandbox_20/pointcloud_ds/ ../../ICL_NUIM_living_room/sandbox_20/depth/ ../../ICL_NUIM_living_room/sandbox_20/sift_correspondence.txt ../../ICL_NUIM_living_room/sandbox_20/camera_para.txt -4.0 ../../ICL_NUIM_living_room/sandbox_20/sift_traj.txt ../../ICL_NUIM_living_room/sandbox_20/sift_info.txt 9 | ::ShiTomasi matching 10 | ..\ColorCorrespondence.exe ../../ICL_NUIM_living_room/sandbox_20/pointcloud/ ../../ICL_NUIM_living_room/sandbox_20/pointcloud_ds/ ../../ICL_NUIM_living_room/sandbox_20/depth/ ../../ICL_NUIM_living_room/sandbox_20/corner_correspondence.txt ../../ICL_NUIM_living_room/sandbox_20/camera_para.txt -4.0 ../../ICL_NUIM_living_room/sandbox_20/corner_traj.txt ../../ICL_NUIM_living_room/sandbox_20/corner_info.txt 11 | ..\GeometricCorrespondence.exe ../../ICL_NUIM_living_room/sandbox_20/pointcloud/ ../../ICL_NUIM_living_room/sandbox_20/pointcloud_ds/ ../../ICL_NUIM_living_room/sandbox_20/keypoint/ ../../ICL_NUIM_living_room/sandbox_20/geometric_descriptor/ ../../ICL_NUIM_living_room/sandbox_20/camera_para.txt -4.0 ../../ICL_NUIM_living_room/sandbox_20/narf_traj.txt ../../ICL_NUIM_living_room/sandbox_20/narf_info.txt 12 | ..\MergeInfo.exe ../../ICL_NUIM_living_room/sandbox_20/pointcloud_ds/ ../../ICL_NUIM_living_room/sandbox_20/narf_traj.txt ../../ICL_NUIM_living_room/sandbox_20/narf_info.txt ../../ICL_NUIM_living_room/sandbox_20/sift_traj.txt ../../ICL_NUIM_living_room/sandbox_20/sift_info.txt ../../ICL_NUIM_living_room/sandbox_20/corner_traj.txt ../../ICL_NUIM_living_room/sandbox_20/corner_info.txt ../../ICL_NUIM_living_room/sandbox_20/traj.txt ../../ICL_NUIM_living_room/sandbox_20/info.txt 13 | ..\GlobalOptimizer1.exe ../../ICL_NUIM_living_room/sandbox_20/pointcloud/ ../../ICL_NUIM_living_room/sandbox_20/traj.txt ../../ICL_NUIM_living_room/sandbox_20/info.txt ../../ICL_NUIM_living_room/sandbox_20/pose_opt1.txt ../../ICL_NUIM_living_room/sandbox_20/fail_build_complete_model.txt ../../ICL_NUIM_living_room/sandbox_20/selected_edge_opt1.txt 0.35 0.55 0.35 0.005 14 | if exist ../../ICL_NUIM_living_room/sandbox_20/fail_build_complete_model.txt goto OVER 15 | ..\GlobalOptimizer2.exe ../../ICL_NUIM_living_room/sandbox_20/pose_opt1.txt ../../ICL_NUIM_living_room/sandbox_20/pointcloud/ ../../ICL_NUIM_living_room/sandbox_20/traj.txt ../../ICL_NUIM_living_room/sandbox_20/info.txt ../../ICL_NUIM_living_room/sandbox_20/pose_opt2.txt ../../ICL_NUIM_living_room/sandbox_20/traj_remain_opt2.txt ../../ICL_NUIM_living_room/sandbox_20/info_remain_opt2.txt 50.0 16 | :OVER -------------------------------------------------------------------------------- /run_bat/ICL_livingroom_run/run_25.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | cd /d %~dp0 3 | ..\Png2Cloud.exe ../../ICL_NUIM_living_room/sandbox_25/depth/ ../../ICL_NUIM_living_room/sandbox_25/color/ ../../ICL_NUIM_living_room/sandbox_25/camera_para.txt ../../ICL_NUIM_living_room/sandbox_25/pointcloud/ ../../ICL_NUIM_living_room/sandbox_25/pointcloud_ds/ ../../ICL_NUIM_living_room/sandbox_25/pointcloud_xyzn/ ../../ICL_NUIM_living_room/sandbox_25/pointcloud_ds_xyzn/ 4 | ..\Sift.exe ../../ICL_NUIM_living_room/sandbox_25/color/ ../../ICL_NUIM_living_room/sandbox_25/sift_correspondence.txt 5 | ..\ShiTomasi.exe ../../ICL_NUIM_living_room/sandbox_25/color/ ../../ICL_NUIM_living_room/sandbox_25/corner_correspondence.txt 6 | ..\Narf.exe ../../ICL_NUIM_living_room/sandbox_25/pointcloud_xyzn/ ../../ICL_NUIM_living_room/sandbox_25/keypoint/ ../../ICL_NUIM_living_room/sandbox_25/geometric_descriptor/ 7 | ::SIFT matching 8 | ..\ColorCorrespondence.exe ../../ICL_NUIM_living_room/sandbox_25/pointcloud/ ../../ICL_NUIM_living_room/sandbox_25/pointcloud_ds/ ../../ICL_NUIM_living_room/sandbox_25/depth/ ../../ICL_NUIM_living_room/sandbox_25/sift_correspondence.txt ../../ICL_NUIM_living_room/sandbox_25/camera_para.txt -4.0 ../../ICL_NUIM_living_room/sandbox_25/sift_traj.txt ../../ICL_NUIM_living_room/sandbox_25/sift_info.txt 9 | ::ShiTomasi matching 10 | ..\ColorCorrespondence.exe ../../ICL_NUIM_living_room/sandbox_25/pointcloud/ ../../ICL_NUIM_living_room/sandbox_25/pointcloud_ds/ ../../ICL_NUIM_living_room/sandbox_25/depth/ ../../ICL_NUIM_living_room/sandbox_25/corner_correspondence.txt ../../ICL_NUIM_living_room/sandbox_25/camera_para.txt -4.0 ../../ICL_NUIM_living_room/sandbox_25/corner_traj.txt ../../ICL_NUIM_living_room/sandbox_25/corner_info.txt 11 | ..\GeometricCorrespondence.exe ../../ICL_NUIM_living_room/sandbox_25/pointcloud/ ../../ICL_NUIM_living_room/sandbox_25/pointcloud_ds/ ../../ICL_NUIM_living_room/sandbox_25/keypoint/ ../../ICL_NUIM_living_room/sandbox_25/geometric_descriptor/ ../../ICL_NUIM_living_room/sandbox_25/camera_para.txt -4.0 ../../ICL_NUIM_living_room/sandbox_25/narf_traj.txt ../../ICL_NUIM_living_room/sandbox_25/narf_info.txt 12 | ..\MergeInfo.exe ../../ICL_NUIM_living_room/sandbox_25/pointcloud_ds/ ../../ICL_NUIM_living_room/sandbox_25/narf_traj.txt ../../ICL_NUIM_living_room/sandbox_25/narf_info.txt ../../ICL_NUIM_living_room/sandbox_25/sift_traj.txt ../../ICL_NUIM_living_room/sandbox_25/sift_info.txt ../../ICL_NUIM_living_room/sandbox_25/corner_traj.txt ../../ICL_NUIM_living_room/sandbox_25/corner_info.txt ../../ICL_NUIM_living_room/sandbox_25/traj.txt ../../ICL_NUIM_living_room/sandbox_25/info.txt 13 | ..\GlobalOptimizer1.exe ../../ICL_NUIM_living_room/sandbox_25/pointcloud/ ../../ICL_NUIM_living_room/sandbox_25/traj.txt ../../ICL_NUIM_living_room/sandbox_25/info.txt ../../ICL_NUIM_living_room/sandbox_25/pose_opt1.txt ../../ICL_NUIM_living_room/sandbox_25/fail_build_complete_model.txt ../../ICL_NUIM_living_room/sandbox_25/selected_edge_opt1.txt 0.35 0.5 0.35 0.005 14 | if exist ../../ICL_NUIM_living_room/sandbox_25/fail_build_complete_model.txt goto OVER 15 | ..\GlobalOptimizer2.exe ../../ICL_NUIM_living_room/sandbox_25/pose_opt1.txt ../../ICL_NUIM_living_room/sandbox_25/pointcloud/ ../../ICL_NUIM_living_room/sandbox_25/traj.txt ../../ICL_NUIM_living_room/sandbox_25/info.txt ../../ICL_NUIM_living_room/sandbox_25/pose_opt2.txt ../../ICL_NUIM_living_room/sandbox_25/traj_remain_opt2.txt ../../ICL_NUIM_living_room/sandbox_25/info_remain_opt2.txt 50.0 16 | :OVER -------------------------------------------------------------------------------- /run_bat/ICL_livingroom_run/run_3.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | cd /d %~dp0 3 | ..\Png2Cloud.exe ../../ICL_NUIM_living_room/sandbox_3/depth/ ../../ICL_NUIM_living_room/sandbox_3/color/ ../../ICL_NUIM_living_room/sandbox_3/camera_para.txt ../../ICL_NUIM_living_room/sandbox_3/pointcloud/ ../../ICL_NUIM_living_room/sandbox_3/pointcloud_ds/ ../../ICL_NUIM_living_room/sandbox_3/pointcloud_xyzn/ ../../ICL_NUIM_living_room/sandbox_3/pointcloud_ds_xyzn/ 4 | ..\Sift.exe ../../ICL_NUIM_living_room/sandbox_3/color/ ../../ICL_NUIM_living_room/sandbox_3/sift_correspondence.txt 5 | ..\ShiTomasi.exe ../../ICL_NUIM_living_room/sandbox_3/color/ ../../ICL_NUIM_living_room/sandbox_3/corner_correspondence.txt 6 | ..\Narf.exe ../../ICL_NUIM_living_room/sandbox_3/pointcloud_xyzn/ ../../ICL_NUIM_living_room/sandbox_3/keypoint/ ../../ICL_NUIM_living_room/sandbox_3/geometric_descriptor/ 7 | ::SIFT matching 8 | ..\ColorCorrespondence.exe ../../ICL_NUIM_living_room/sandbox_3/pointcloud/ ../../ICL_NUIM_living_room/sandbox_3/pointcloud_ds/ ../../ICL_NUIM_living_room/sandbox_3/depth/ ../../ICL_NUIM_living_room/sandbox_3/sift_correspondence.txt ../../ICL_NUIM_living_room/sandbox_3/camera_para.txt -4.0 ../../ICL_NUIM_living_room/sandbox_3/sift_traj.txt ../../ICL_NUIM_living_room/sandbox_3/sift_info.txt 9 | ::ShiTomasi matching 10 | ..\ColorCorrespondence.exe ../../ICL_NUIM_living_room/sandbox_3/pointcloud/ ../../ICL_NUIM_living_room/sandbox_3/pointcloud_ds/ ../../ICL_NUIM_living_room/sandbox_3/depth/ ../../ICL_NUIM_living_room/sandbox_3/corner_correspondence.txt ../../ICL_NUIM_living_room/sandbox_3/camera_para.txt -4.0 ../../ICL_NUIM_living_room/sandbox_3/corner_traj.txt ../../ICL_NUIM_living_room/sandbox_3/corner_info.txt 11 | ..\GeometricCorrespondence.exe ../../ICL_NUIM_living_room/sandbox_3/pointcloud/ ../../ICL_NUIM_living_room/sandbox_3/pointcloud_ds/ ../../ICL_NUIM_living_room/sandbox_3/keypoint/ ../../ICL_NUIM_living_room/sandbox_3/geometric_descriptor/ ../../ICL_NUIM_living_room/sandbox_3/camera_para.txt -4.0 ../../ICL_NUIM_living_room/sandbox_3/narf_traj.txt ../../ICL_NUIM_living_room/sandbox_3/narf_info.txt 12 | ..\MergeInfo.exe ../../ICL_NUIM_living_room/sandbox_3/pointcloud_ds/ ../../ICL_NUIM_living_room/sandbox_3/narf_traj.txt ../../ICL_NUIM_living_room/sandbox_3/narf_info.txt ../../ICL_NUIM_living_room/sandbox_3/sift_traj.txt ../../ICL_NUIM_living_room/sandbox_3/sift_info.txt ../../ICL_NUIM_living_room/sandbox_3/corner_traj.txt ../../ICL_NUIM_living_room/sandbox_3/corner_info.txt ../../ICL_NUIM_living_room/sandbox_3/traj.txt ../../ICL_NUIM_living_room/sandbox_3/info.txt 13 | ..\GlobalOptimizer1.exe ../../ICL_NUIM_living_room/sandbox_3/pointcloud/ ../../ICL_NUIM_living_room/sandbox_3/traj.txt ../../ICL_NUIM_living_room/sandbox_3/info.txt ../../ICL_NUIM_living_room/sandbox_3/pose_opt1.txt ../../ICL_NUIM_living_room/sandbox_3/fail_build_complete_model.txt ../../ICL_NUIM_living_room/sandbox_3/selected_edge_opt1.txt 0.35 0.55 0.35 0.001 14 | if exist ../../ICL_NUIM_living_room/sandbox_3/fail_build_complete_model.txt goto OVER 15 | ..\GlobalOptimizer2.exe ../../ICL_NUIM_living_room/sandbox_3/pose_opt1.txt ../../ICL_NUIM_living_room/sandbox_3/pointcloud/ ../../ICL_NUIM_living_room/sandbox_3/traj.txt ../../ICL_NUIM_living_room/sandbox_3/info.txt ../../ICL_NUIM_living_room/sandbox_3/pose_opt2.txt ../../ICL_NUIM_living_room/sandbox_3/traj_remain_opt2.txt ../../ICL_NUIM_living_room/sandbox_3/info_remain_opt2.txt 50.0 16 | :OVER -------------------------------------------------------------------------------- /run_bat/ICL_livingroom_run/run_5.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | cd /d %~dp0 3 | ..\Png2Cloud.exe ../../ICL_NUIM_living_room/sandbox_5/depth/ ../../ICL_NUIM_living_room/sandbox_5/color/ ../../ICL_NUIM_living_room/sandbox_5/camera_para.txt ../../ICL_NUIM_living_room/sandbox_5/pointcloud/ ../../ICL_NUIM_living_room/sandbox_5/pointcloud_ds/ ../../ICL_NUIM_living_room/sandbox_5/pointcloud_xyzn/ ../../ICL_NUIM_living_room/sandbox_5/pointcloud_ds_xyzn/ 4 | ..\Sift.exe ../../ICL_NUIM_living_room/sandbox_5/color/ ../../ICL_NUIM_living_room/sandbox_5/sift_correspondence.txt 5 | ..\ShiTomasi.exe ../../ICL_NUIM_living_room/sandbox_5/color/ ../../ICL_NUIM_living_room/sandbox_5/corner_correspondence.txt 6 | ..\Narf.exe ../../ICL_NUIM_living_room/sandbox_5/pointcloud_xyzn/ ../../ICL_NUIM_living_room/sandbox_5/keypoint/ ../../ICL_NUIM_living_room/sandbox_5/geometric_descriptor/ 7 | ::SIFT matching 8 | ..\ColorCorrespondence.exe ../../ICL_NUIM_living_room/sandbox_5/pointcloud/ ../../ICL_NUIM_living_room/sandbox_5/pointcloud_ds/ ../../ICL_NUIM_living_room/sandbox_5/depth/ ../../ICL_NUIM_living_room/sandbox_5/sift_correspondence.txt ../../ICL_NUIM_living_room/sandbox_5/camera_para.txt -4.0 ../../ICL_NUIM_living_room/sandbox_5/sift_traj.txt ../../ICL_NUIM_living_room/sandbox_5/sift_info.txt 9 | ::ShiTomasi matching 10 | ..\ColorCorrespondence.exe ../../ICL_NUIM_living_room/sandbox_5/pointcloud/ ../../ICL_NUIM_living_room/sandbox_5/pointcloud_ds/ ../../ICL_NUIM_living_room/sandbox_5/depth/ ../../ICL_NUIM_living_room/sandbox_5/corner_correspondence.txt ../../ICL_NUIM_living_room/sandbox_5/camera_para.txt -4.0 ../../ICL_NUIM_living_room/sandbox_5/corner_traj.txt ../../ICL_NUIM_living_room/sandbox_5/corner_info.txt 11 | ..\GeometricCorrespondence.exe ../../ICL_NUIM_living_room/sandbox_5/pointcloud/ ../../ICL_NUIM_living_room/sandbox_5/pointcloud_ds/ ../../ICL_NUIM_living_room/sandbox_5/keypoint/ ../../ICL_NUIM_living_room/sandbox_5/geometric_descriptor/ ../../ICL_NUIM_living_room/sandbox_5/camera_para.txt -4.0 ../../ICL_NUIM_living_room/sandbox_5/narf_traj.txt ../../ICL_NUIM_living_room/sandbox_5/narf_info.txt 12 | ..\MergeInfo.exe ../../ICL_NUIM_living_room/sandbox_5/pointcloud_ds/ ../../ICL_NUIM_living_room/sandbox_5/narf_traj.txt ../../ICL_NUIM_living_room/sandbox_5/narf_info.txt ../../ICL_NUIM_living_room/sandbox_5/sift_traj.txt ../../ICL_NUIM_living_room/sandbox_5/sift_info.txt ../../ICL_NUIM_living_room/sandbox_5/corner_traj.txt ../../ICL_NUIM_living_room/sandbox_5/corner_info.txt ../../ICL_NUIM_living_room/sandbox_5/traj.txt ../../ICL_NUIM_living_room/sandbox_5/info.txt 13 | ..\GlobalOptimizer1.exe ../../ICL_NUIM_living_room/sandbox_5/pointcloud/ ../../ICL_NUIM_living_room/sandbox_5/traj.txt ../../ICL_NUIM_living_room/sandbox_5/info.txt ../../ICL_NUIM_living_room/sandbox_5/pose_opt1.txt ../../ICL_NUIM_living_room/sandbox_5/fail_build_complete_model.txt ../../ICL_NUIM_living_room/sandbox_5/selected_edge_opt1.txt 0.35 0.55 0.35 0.002 14 | if exist ../../ICL_NUIM_living_room/sandbox_5/fail_build_complete_model.txt goto OVER 15 | ..\GlobalOptimizer2.exe ../../ICL_NUIM_living_room/sandbox_5/pose_opt1.txt ../../ICL_NUIM_living_room/sandbox_5/pointcloud/ ../../ICL_NUIM_living_room/sandbox_5/traj.txt ../../ICL_NUIM_living_room/sandbox_5/info.txt ../../ICL_NUIM_living_room/sandbox_5/pose_opt2.txt ../../ICL_NUIM_living_room/sandbox_5/traj_remain_opt2.txt ../../ICL_NUIM_living_room/sandbox_5/info_remain_opt2.txt 50.0 16 | :OVER -------------------------------------------------------------------------------- /run_bat/ICL_office_run/run_10.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | cd /d %~dp0 3 | ..\Png2Cloud.exe ../../ICL_NUIM_office/sandbox_10/depth/ ../../ICL_NUIM_office/sandbox_10/color/ ../../ICL_NUIM_office/sandbox_10/camera_para.txt ../../ICL_NUIM_office/sandbox_10/pointcloud/ ../../ICL_NUIM_office/sandbox_10/pointcloud_ds/ ../../ICL_NUIM_office/sandbox_10/pointcloud_xyzn/ ../../ICL_NUIM_office/sandbox_10/pointcloud_ds_xyzn/ 4 | ..\Sift.exe ../../ICL_NUIM_office/sandbox_10/color/ ../../ICL_NUIM_office/sandbox_10/sift_correspondence.txt 5 | ..\ShiTomasi.exe ../../ICL_NUIM_office/sandbox_10/color/ ../../ICL_NUIM_office/sandbox_10/corner_correspondence.txt 6 | ..\Narf.exe ../../ICL_NUIM_office/sandbox_10/pointcloud_xyzn/ ../../ICL_NUIM_office/sandbox_10/keypoint/ ../../ICL_NUIM_office/sandbox_10/geometric_descriptor/ 7 | ::SIFT matching 8 | ..\ColorCorrespondence.exe ../../ICL_NUIM_office/sandbox_10/pointcloud/ ../../ICL_NUIM_office/sandbox_10/pointcloud_ds/ ../../ICL_NUIM_office/sandbox_10/depth/ ../../ICL_NUIM_office/sandbox_10/sift_correspondence.txt ../../ICL_NUIM_office/sandbox_10/camera_para.txt -4.0 ../../ICL_NUIM_office/sandbox_10/sift_traj.txt ../../ICL_NUIM_office/sandbox_10/sift_info.txt 9 | ::ShiTomasi matching 10 | ..\ColorCorrespondence.exe ../../ICL_NUIM_office/sandbox_10/pointcloud/ ../../ICL_NUIM_office/sandbox_10/pointcloud_ds/ ../../ICL_NUIM_office/sandbox_10/depth/ ../../ICL_NUIM_office/sandbox_10/corner_correspondence.txt ../../ICL_NUIM_office/sandbox_10/camera_para.txt -4.0 ../../ICL_NUIM_office/sandbox_10/corner_traj.txt ../../ICL_NUIM_office/sandbox_10/corner_info.txt 11 | ..\GeometricCorrespondence.exe ../../ICL_NUIM_office/sandbox_10/pointcloud/ ../../ICL_NUIM_office/sandbox_10/pointcloud_ds/ ../../ICL_NUIM_office/sandbox_10/keypoint/ ../../ICL_NUIM_office/sandbox_10/geometric_descriptor/ ../../ICL_NUIM_office/sandbox_10/camera_para.txt -4.0 ../../ICL_NUIM_office/sandbox_10/narf_traj.txt ../../ICL_NUIM_office/sandbox_10/narf_info.txt 12 | ..\MergeInfo.exe ../../ICL_NUIM_office/sandbox_10/pointcloud_ds/ ../../ICL_NUIM_office/sandbox_10/narf_traj.txt ../../ICL_NUIM_office/sandbox_10/narf_info.txt ../../ICL_NUIM_office/sandbox_10/sift_traj.txt ../../ICL_NUIM_office/sandbox_10/sift_info.txt ../../ICL_NUIM_office/sandbox_10/corner_traj.txt ../../ICL_NUIM_office/sandbox_10/corner_info.txt ../../ICL_NUIM_office/sandbox_10/traj.txt ../../ICL_NUIM_office/sandbox_10/info.txt 13 | ..\GlobalOptimizer1.exe ../../ICL_NUIM_office/sandbox_10/pointcloud/ ../../ICL_NUIM_office/sandbox_10/traj.txt ../../ICL_NUIM_office/sandbox_10/info.txt ../../ICL_NUIM_office/sandbox_10/pose_opt1.txt ../../ICL_NUIM_office/sandbox_10/fail_build_complete_model.txt ../../ICL_NUIM_office/sandbox_10/selected_edge_opt1.txt 0.35 0.4 0.35 0.0025 14 | if exist ../../ICL_NUIM_office/sandbox_10/fail_build_complete_model.txt goto OVER 15 | ..\GlobalOptimizer2.exe ../../ICL_NUIM_office/sandbox_10/pose_opt1.txt ../../ICL_NUIM_office/sandbox_10/pointcloud/ ../../ICL_NUIM_office/sandbox_10/traj.txt ../../ICL_NUIM_office/sandbox_10/info.txt ../../ICL_NUIM_office/sandbox_10/pose_opt2.txt ../../ICL_NUIM_office/sandbox_10/traj_remain_opt2.txt ../../ICL_NUIM_office/sandbox_10/info_remain_opt2.txt 50.0 16 | :OVER -------------------------------------------------------------------------------- /run_bat/ICL_office_run/run_15.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | cd /d %~dp0 3 | ..\Png2Cloud.exe ../../ICL_NUIM_office/sandbox_15/depth/ ../../ICL_NUIM_office/sandbox_15/color/ ../../ICL_NUIM_office/sandbox_15/camera_para.txt ../../ICL_NUIM_office/sandbox_15/pointcloud/ ../../ICL_NUIM_office/sandbox_15/pointcloud_ds/ ../../ICL_NUIM_office/sandbox_15/pointcloud_xyzn/ ../../ICL_NUIM_office/sandbox_15/pointcloud_ds_xyzn/ 4 | ..\Sift.exe ../../ICL_NUIM_office/sandbox_15/color/ ../../ICL_NUIM_office/sandbox_15/sift_correspondence.txt 5 | ..\ShiTomasi.exe ../../ICL_NUIM_office/sandbox_15/color/ ../../ICL_NUIM_office/sandbox_15/corner_correspondence.txt 6 | ..\Narf.exe ../../ICL_NUIM_office/sandbox_15/pointcloud_xyzn/ ../../ICL_NUIM_office/sandbox_15/keypoint/ ../../ICL_NUIM_office/sandbox_15/geometric_descriptor/ 7 | ::SIFT matching 8 | ..\ColorCorrespondence.exe ../../ICL_NUIM_office/sandbox_15/pointcloud/ ../../ICL_NUIM_office/sandbox_15/pointcloud_ds/ ../../ICL_NUIM_office/sandbox_15/depth/ ../../ICL_NUIM_office/sandbox_15/sift_correspondence.txt ../../ICL_NUIM_office/sandbox_15/camera_para.txt -4.0 ../../ICL_NUIM_office/sandbox_15/sift_traj.txt ../../ICL_NUIM_office/sandbox_15/sift_info.txt 9 | ::ShiTomasi matching 10 | ..\ColorCorrespondence.exe ../../ICL_NUIM_office/sandbox_15/pointcloud/ ../../ICL_NUIM_office/sandbox_15/pointcloud_ds/ ../../ICL_NUIM_office/sandbox_15/depth/ ../../ICL_NUIM_office/sandbox_15/corner_correspondence.txt ../../ICL_NUIM_office/sandbox_15/camera_para.txt -4.0 ../../ICL_NUIM_office/sandbox_15/corner_traj.txt ../../ICL_NUIM_office/sandbox_15/corner_info.txt 11 | ..\GeometricCorrespondence.exe ../../ICL_NUIM_office/sandbox_15/pointcloud/ ../../ICL_NUIM_office/sandbox_15/pointcloud_ds/ ../../ICL_NUIM_office/sandbox_15/keypoint/ ../../ICL_NUIM_office/sandbox_15/geometric_descriptor/ ../../ICL_NUIM_office/sandbox_15/camera_para.txt -4.0 ../../ICL_NUIM_office/sandbox_15/narf_traj.txt ../../ICL_NUIM_office/sandbox_15/narf_info.txt 12 | ..\MergeInfo.exe ../../ICL_NUIM_office/sandbox_15/pointcloud_ds/ ../../ICL_NUIM_office/sandbox_15/narf_traj.txt ../../ICL_NUIM_office/sandbox_15/narf_info.txt ../../ICL_NUIM_office/sandbox_15/sift_traj.txt ../../ICL_NUIM_office/sandbox_15/sift_info.txt ../../ICL_NUIM_office/sandbox_15/corner_traj.txt ../../ICL_NUIM_office/sandbox_15/corner_info.txt ../../ICL_NUIM_office/sandbox_15/traj.txt ../../ICL_NUIM_office/sandbox_15/info.txt 13 | ..\GlobalOptimizer1.exe ../../ICL_NUIM_office/sandbox_15/pointcloud/ ../../ICL_NUIM_office/sandbox_15/traj.txt ../../ICL_NUIM_office/sandbox_15/info.txt ../../ICL_NUIM_office/sandbox_15/pose_opt1.txt ../../ICL_NUIM_office/sandbox_15/fail_build_complete_model.txt ../../ICL_NUIM_office/sandbox_15/selected_edge_opt1.txt 0.35 0.55 0.35 0.0025 14 | if exist ../../ICL_NUIM_office/sandbox_15/fail_build_complete_model.txt goto OVER 15 | ..\GlobalOptimizer2.exe ../../ICL_NUIM_office/sandbox_15/pose_opt1.txt ../../ICL_NUIM_office/sandbox_15/pointcloud/ ../../ICL_NUIM_office/sandbox_15/traj.txt ../../ICL_NUIM_office/sandbox_15/info.txt ../../ICL_NUIM_office/sandbox_15/pose_opt2.txt ../../ICL_NUIM_office/sandbox_15/traj_remain_opt2.txt ../../ICL_NUIM_office/sandbox_15/info_remain_opt2.txt 50.0 16 | :OVER -------------------------------------------------------------------------------- /run_bat/ICL_office_run/run_2.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | cd /d %~dp0 3 | ..\Png2Cloud.exe ../../ICL_NUIM_office/sandbox_2/depth/ ../../ICL_NUIM_office/sandbox_2/color/ ../../ICL_NUIM_office/sandbox_2/camera_para.txt ../../ICL_NUIM_office/sandbox_2/pointcloud/ ../../ICL_NUIM_office/sandbox_2/pointcloud_ds/ ../../ICL_NUIM_office/sandbox_2/pointcloud_xyzn/ ../../ICL_NUIM_office/sandbox_2/pointcloud_ds_xyzn/ 4 | ..\Sift.exe ../../ICL_NUIM_office/sandbox_2/color/ ../../ICL_NUIM_office/sandbox_2/sift_correspondence.txt 5 | ..\ShiTomasi.exe ../../ICL_NUIM_office/sandbox_2/color/ ../../ICL_NUIM_office/sandbox_2/corner_correspondence.txt 6 | ..\Narf.exe ../../ICL_NUIM_office/sandbox_2/pointcloud_xyzn/ ../../ICL_NUIM_office/sandbox_2/keypoint/ ../../ICL_NUIM_office/sandbox_2/geometric_descriptor/ 7 | ::SIFT matching 8 | ..\ColorCorrespondence.exe ../../ICL_NUIM_office/sandbox_2/pointcloud/ ../../ICL_NUIM_office/sandbox_2/pointcloud_ds/ ../../ICL_NUIM_office/sandbox_2/depth/ ../../ICL_NUIM_office/sandbox_2/sift_correspondence.txt ../../ICL_NUIM_office/sandbox_2/camera_para.txt -4.0 ../../ICL_NUIM_office/sandbox_2/sift_traj.txt ../../ICL_NUIM_office/sandbox_2/sift_info.txt 9 | ::ShiTomasi matching 10 | ..\ColorCorrespondence.exe ../../ICL_NUIM_office/sandbox_2/pointcloud/ ../../ICL_NUIM_office/sandbox_2/pointcloud_ds/ ../../ICL_NUIM_office/sandbox_2/depth/ ../../ICL_NUIM_office/sandbox_2/corner_correspondence.txt ../../ICL_NUIM_office/sandbox_2/camera_para.txt -4.0 ../../ICL_NUIM_office/sandbox_2/corner_traj.txt ../../ICL_NUIM_office/sandbox_2/corner_info.txt 11 | ..\GeometricCorrespondence.exe ../../ICL_NUIM_office/sandbox_2/pointcloud/ ../../ICL_NUIM_office/sandbox_2/pointcloud_ds/ ../../ICL_NUIM_office/sandbox_2/keypoint/ ../../ICL_NUIM_office/sandbox_2/geometric_descriptor/ ../../ICL_NUIM_office/sandbox_2/camera_para.txt -4.0 ../../ICL_NUIM_office/sandbox_2/narf_traj.txt ../../ICL_NUIM_office/sandbox_2/narf_info.txt 12 | ..\MergeInfo.exe ../../ICL_NUIM_office/sandbox_2/pointcloud_ds/ ../../ICL_NUIM_office/sandbox_2/narf_traj.txt ../../ICL_NUIM_office/sandbox_2/narf_info.txt ../../ICL_NUIM_office/sandbox_2/sift_traj.txt ../../ICL_NUIM_office/sandbox_2/sift_info.txt ../../ICL_NUIM_office/sandbox_2/corner_traj.txt ../../ICL_NUIM_office/sandbox_2/corner_info.txt ../../ICL_NUIM_office/sandbox_2/traj.txt ../../ICL_NUIM_office/sandbox_2/info.txt 13 | ..\GlobalOptimizer1.exe ../../ICL_NUIM_office/sandbox_2/pointcloud/ ../../ICL_NUIM_office/sandbox_2/traj.txt ../../ICL_NUIM_office/sandbox_2/info.txt ../../ICL_NUIM_office/sandbox_2/pose_opt1.txt ../../ICL_NUIM_office/sandbox_2/fail_build_complete_model.txt ../../ICL_NUIM_office/sandbox_2/selected_edge_opt1.txt 0.35 0.4 0.35 0.001 14 | if exist ../../ICL_NUIM_office/sandbox_2/fail_build_complete_model.txt goto OVER 15 | ..\GlobalOptimizer2.exe ../../ICL_NUIM_office/sandbox_2/pose_opt1.txt ../../ICL_NUIM_office/sandbox_2/pointcloud/ ../../ICL_NUIM_office/sandbox_2/traj.txt ../../ICL_NUIM_office/sandbox_2/info.txt ../../ICL_NUIM_office/sandbox_2/pose_opt2.txt ../../ICL_NUIM_office/sandbox_2/traj_remain_opt2.txt ../../ICL_NUIM_office/sandbox_2/info_remain_opt2.txt 50.0 16 | :OVER -------------------------------------------------------------------------------- /run_bat/ICL_office_run/run_20.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | cd /d %~dp0 3 | ..\Png2Cloud.exe ../../ICL_NUIM_office/sandbox_20/depth/ ../../ICL_NUIM_office/sandbox_20/color/ ../../ICL_NUIM_office/sandbox_20/camera_para.txt ../../ICL_NUIM_office/sandbox_20/pointcloud/ ../../ICL_NUIM_office/sandbox_20/pointcloud_ds/ ../../ICL_NUIM_office/sandbox_20/pointcloud_xyzn/ ../../ICL_NUIM_office/sandbox_20/pointcloud_ds_xyzn/ 4 | ..\Sift.exe ../../ICL_NUIM_office/sandbox_20/color/ ../../ICL_NUIM_office/sandbox_20/sift_correspondence.txt 5 | ..\ShiTomasi.exe ../../ICL_NUIM_office/sandbox_20/color/ ../../ICL_NUIM_office/sandbox_20/corner_correspondence.txt 6 | ..\Narf.exe ../../ICL_NUIM_office/sandbox_20/pointcloud_xyzn/ ../../ICL_NUIM_office/sandbox_20/keypoint/ ../../ICL_NUIM_office/sandbox_20/geometric_descriptor/ 7 | ::SIFT matching 8 | ..\ColorCorrespondence.exe ../../ICL_NUIM_office/sandbox_20/pointcloud/ ../../ICL_NUIM_office/sandbox_20/pointcloud_ds/ ../../ICL_NUIM_office/sandbox_20/depth/ ../../ICL_NUIM_office/sandbox_20/sift_correspondence.txt ../../ICL_NUIM_office/sandbox_20/camera_para.txt -4.0 ../../ICL_NUIM_office/sandbox_20/sift_traj.txt ../../ICL_NUIM_office/sandbox_20/sift_info.txt 9 | ::ShiTomasi matching 10 | ..\ColorCorrespondence.exe ../../ICL_NUIM_office/sandbox_20/pointcloud/ ../../ICL_NUIM_office/sandbox_20/pointcloud_ds/ ../../ICL_NUIM_office/sandbox_20/depth/ ../../ICL_NUIM_office/sandbox_20/corner_correspondence.txt ../../ICL_NUIM_office/sandbox_20/camera_para.txt -4.0 ../../ICL_NUIM_office/sandbox_20/corner_traj.txt ../../ICL_NUIM_office/sandbox_20/corner_info.txt 11 | ..\GeometricCorrespondence.exe ../../ICL_NUIM_office/sandbox_20/pointcloud/ ../../ICL_NUIM_office/sandbox_20/pointcloud_ds/ ../../ICL_NUIM_office/sandbox_20/keypoint/ ../../ICL_NUIM_office/sandbox_20/geometric_descriptor/ ../../ICL_NUIM_office/sandbox_20/camera_para.txt -4.0 ../../ICL_NUIM_office/sandbox_20/narf_traj.txt ../../ICL_NUIM_office/sandbox_20/narf_info.txt 12 | ..\MergeInfo.exe ../../ICL_NUIM_office/sandbox_20/pointcloud_ds/ ../../ICL_NUIM_office/sandbox_20/narf_traj.txt ../../ICL_NUIM_office/sandbox_20/narf_info.txt ../../ICL_NUIM_office/sandbox_20/sift_traj.txt ../../ICL_NUIM_office/sandbox_20/sift_info.txt ../../ICL_NUIM_office/sandbox_20/corner_traj.txt ../../ICL_NUIM_office/sandbox_20/corner_info.txt ../../ICL_NUIM_office/sandbox_20/traj.txt ../../ICL_NUIM_office/sandbox_20/info.txt 13 | ..\GlobalOptimizer1.exe ../../ICL_NUIM_office/sandbox_20/pointcloud/ ../../ICL_NUIM_office/sandbox_20/traj.txt ../../ICL_NUIM_office/sandbox_20/info.txt ../../ICL_NUIM_office/sandbox_20/pose_opt1.txt ../../ICL_NUIM_office/sandbox_20/fail_build_complete_model.txt ../../ICL_NUIM_office/sandbox_20/selected_edge_opt1.txt 0.35 0.4 0.35 0.005 14 | if exist ../../ICL_NUIM_office/sandbox_20/fail_build_complete_model.txt goto OVER 15 | ..\GlobalOptimizer2.exe ../../ICL_NUIM_office/sandbox_20/pose_opt1.txt ../../ICL_NUIM_office/sandbox_20/pointcloud/ ../../ICL_NUIM_office/sandbox_20/traj.txt ../../ICL_NUIM_office/sandbox_20/info.txt ../../ICL_NUIM_office/sandbox_20/pose_opt2.txt ../../ICL_NUIM_office/sandbox_20/traj_remain_opt2.txt ../../ICL_NUIM_office/sandbox_20/info_remain_opt2.txt 50.0 16 | :OVER -------------------------------------------------------------------------------- /run_bat/ICL_office_run/run_25.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | cd /d %~dp0 3 | ..\Png2Cloud.exe ../../ICL_NUIM_office/sandbox_25/depth/ ../../ICL_NUIM_office/sandbox_25/color/ ../../ICL_NUIM_office/sandbox_25/camera_para.txt ../../ICL_NUIM_office/sandbox_25/pointcloud/ ../../ICL_NUIM_office/sandbox_25/pointcloud_ds/ ../../ICL_NUIM_office/sandbox_25/pointcloud_xyzn/ ../../ICL_NUIM_office/sandbox_25/pointcloud_ds_xyzn/ 4 | ..\Sift.exe ../../ICL_NUIM_office/sandbox_25/color/ ../../ICL_NUIM_office/sandbox_25/sift_correspondence.txt 5 | ..\ShiTomasi.exe ../../ICL_NUIM_office/sandbox_25/color/ ../../ICL_NUIM_office/sandbox_25/corner_correspondence.txt 6 | ..\Narf.exe ../../ICL_NUIM_office/sandbox_25/pointcloud_xyzn/ ../../ICL_NUIM_office/sandbox_25/keypoint/ ../../ICL_NUIM_office/sandbox_25/geometric_descriptor/ 7 | ::SIFT matching 8 | ..\ColorCorrespondence.exe ../../ICL_NUIM_office/sandbox_25/pointcloud/ ../../ICL_NUIM_office/sandbox_25/pointcloud_ds/ ../../ICL_NUIM_office/sandbox_25/depth/ ../../ICL_NUIM_office/sandbox_25/sift_correspondence.txt ../../ICL_NUIM_office/sandbox_25/camera_para.txt -4.0 ../../ICL_NUIM_office/sandbox_25/sift_traj.txt ../../ICL_NUIM_office/sandbox_25/sift_info.txt 9 | ::ShiTomasi matching 10 | ..\ColorCorrespondence.exe ../../ICL_NUIM_office/sandbox_25/pointcloud/ ../../ICL_NUIM_office/sandbox_25/pointcloud_ds/ ../../ICL_NUIM_office/sandbox_25/depth/ ../../ICL_NUIM_office/sandbox_25/corner_correspondence.txt ../../ICL_NUIM_office/sandbox_25/camera_para.txt -4.0 ../../ICL_NUIM_office/sandbox_25/corner_traj.txt ../../ICL_NUIM_office/sandbox_25/corner_info.txt 11 | ..\GeometricCorrespondence.exe ../../ICL_NUIM_office/sandbox_25/pointcloud/ ../../ICL_NUIM_office/sandbox_25/pointcloud_ds/ ../../ICL_NUIM_office/sandbox_25/keypoint/ ../../ICL_NUIM_office/sandbox_25/geometric_descriptor/ ../../ICL_NUIM_office/sandbox_25/camera_para.txt -4.0 ../../ICL_NUIM_office/sandbox_25/narf_traj.txt ../../ICL_NUIM_office/sandbox_25/narf_info.txt 12 | ..\MergeInfo.exe ../../ICL_NUIM_office/sandbox_25/pointcloud_ds/ ../../ICL_NUIM_office/sandbox_25/narf_traj.txt ../../ICL_NUIM_office/sandbox_25/narf_info.txt ../../ICL_NUIM_office/sandbox_25/sift_traj.txt ../../ICL_NUIM_office/sandbox_25/sift_info.txt ../../ICL_NUIM_office/sandbox_25/corner_traj.txt ../../ICL_NUIM_office/sandbox_25/corner_info.txt ../../ICL_NUIM_office/sandbox_25/traj.txt ../../ICL_NUIM_office/sandbox_25/info.txt 13 | ..\GlobalOptimizer1.exe ../../ICL_NUIM_office/sandbox_25/pointcloud/ ../../ICL_NUIM_office/sandbox_25/traj.txt ../../ICL_NUIM_office/sandbox_25/info.txt ../../ICL_NUIM_office/sandbox_25/pose_opt1.txt ../../ICL_NUIM_office/sandbox_25/fail_build_complete_model.txt ../../ICL_NUIM_office/sandbox_25/selected_edge_opt1.txt 0.35 0.5 0.35 0.005 14 | if exist ../../ICL_NUIM_office/sandbox_25/fail_build_complete_model.txt goto OVER 15 | ..\GlobalOptimizer2.exe ../../ICL_NUIM_office/sandbox_25/pose_opt1.txt ../../ICL_NUIM_office/sandbox_25/pointcloud/ ../../ICL_NUIM_office/sandbox_25/traj.txt ../../ICL_NUIM_office/sandbox_25/info.txt ../../ICL_NUIM_office/sandbox_25/pose_opt2.txt ../../ICL_NUIM_office/sandbox_25/traj_remain_opt2.txt ../../ICL_NUIM_office/sandbox_25/info_remain_opt2.txt 50.0 16 | :OVER -------------------------------------------------------------------------------- /run_bat/ICL_office_run/run_3.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | cd /d %~dp0 3 | ..\Png2Cloud.exe ../../ICL_NUIM_office/sandbox_3/depth/ ../../ICL_NUIM_office/sandbox_3/color/ ../../ICL_NUIM_office/sandbox_3/camera_para.txt ../../ICL_NUIM_office/sandbox_3/pointcloud/ ../../ICL_NUIM_office/sandbox_3/pointcloud_ds/ ../../ICL_NUIM_office/sandbox_3/pointcloud_xyzn/ ../../ICL_NUIM_office/sandbox_3/pointcloud_ds_xyzn/ 4 | ..\Sift.exe ../../ICL_NUIM_office/sandbox_3/color/ ../../ICL_NUIM_office/sandbox_3/sift_correspondence.txt 5 | ..\ShiTomasi.exe ../../ICL_NUIM_office/sandbox_3/color/ ../../ICL_NUIM_office/sandbox_3/corner_correspondence.txt 6 | ..\Narf.exe ../../ICL_NUIM_office/sandbox_3/pointcloud_xyzn/ ../../ICL_NUIM_office/sandbox_3/keypoint/ ../../ICL_NUIM_office/sandbox_3/geometric_descriptor/ 7 | ::SIFT matching 8 | ..\ColorCorrespondence.exe ../../ICL_NUIM_office/sandbox_3/pointcloud/ ../../ICL_NUIM_office/sandbox_3/pointcloud_ds/ ../../ICL_NUIM_office/sandbox_3/depth/ ../../ICL_NUIM_office/sandbox_3/sift_correspondence.txt ../../ICL_NUIM_office/sandbox_3/camera_para.txt -4.0 ../../ICL_NUIM_office/sandbox_3/sift_traj.txt ../../ICL_NUIM_office/sandbox_3/sift_info.txt 9 | ::ShiTomasi matching 10 | ..\ColorCorrespondence.exe ../../ICL_NUIM_office/sandbox_3/pointcloud/ ../../ICL_NUIM_office/sandbox_3/pointcloud_ds/ ../../ICL_NUIM_office/sandbox_3/depth/ ../../ICL_NUIM_office/sandbox_3/corner_correspondence.txt ../../ICL_NUIM_office/sandbox_3/camera_para.txt -4.0 ../../ICL_NUIM_office/sandbox_3/corner_traj.txt ../../ICL_NUIM_office/sandbox_3/corner_info.txt 11 | ..\GeometricCorrespondence.exe ../../ICL_NUIM_office/sandbox_3/pointcloud/ ../../ICL_NUIM_office/sandbox_3/pointcloud_ds/ ../../ICL_NUIM_office/sandbox_3/keypoint/ ../../ICL_NUIM_office/sandbox_3/geometric_descriptor/ ../../ICL_NUIM_office/sandbox_3/camera_para.txt -4.0 ../../ICL_NUIM_office/sandbox_3/narf_traj.txt ../../ICL_NUIM_office/sandbox_3/narf_info.txt 12 | ..\MergeInfo.exe ../../ICL_NUIM_office/sandbox_3/pointcloud_ds/ ../../ICL_NUIM_office/sandbox_3/narf_traj.txt ../../ICL_NUIM_office/sandbox_3/narf_info.txt ../../ICL_NUIM_office/sandbox_3/sift_traj.txt ../../ICL_NUIM_office/sandbox_3/sift_info.txt ../../ICL_NUIM_office/sandbox_3/corner_traj.txt ../../ICL_NUIM_office/sandbox_3/corner_info.txt ../../ICL_NUIM_office/sandbox_3/traj.txt ../../ICL_NUIM_office/sandbox_3/info.txt 13 | ..\GlobalOptimizer1.exe ../../ICL_NUIM_office/sandbox_3/pointcloud/ ../../ICL_NUIM_office/sandbox_3/traj.txt ../../ICL_NUIM_office/sandbox_3/info.txt ../../ICL_NUIM_office/sandbox_3/pose_opt1.txt ../../ICL_NUIM_office/sandbox_3/fail_build_complete_model.txt ../../ICL_NUIM_office/sandbox_3/selected_edge_opt1.txt 0.35 0.5 0.35 0.001 14 | if exist ../../ICL_NUIM_office/sandbox_3/fail_build_complete_model.txt goto OVER 15 | ..\GlobalOptimizer2.exe ../../ICL_NUIM_office/sandbox_3/pose_opt1.txt ../../ICL_NUIM_office/sandbox_3/pointcloud/ ../../ICL_NUIM_office/sandbox_3/traj.txt ../../ICL_NUIM_office/sandbox_3/info.txt ../../ICL_NUIM_office/sandbox_3/pose_opt2.txt ../../ICL_NUIM_office/sandbox_3/traj_remain_opt2.txt ../../ICL_NUIM_office/sandbox_3/info_remain_opt2.txt 50.0 16 | :OVER -------------------------------------------------------------------------------- /run_bat/ICL_office_run/run_5.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | cd /d %~dp0 3 | ..\Png2Cloud.exe ../../ICL_NUIM_office/sandbox_5/depth/ ../../ICL_NUIM_office/sandbox_5/color/ ../../ICL_NUIM_office/sandbox_5/camera_para.txt ../../ICL_NUIM_office/sandbox_5/pointcloud/ ../../ICL_NUIM_office/sandbox_5/pointcloud_ds/ ../../ICL_NUIM_office/sandbox_5/pointcloud_xyzn/ ../../ICL_NUIM_office/sandbox_5/pointcloud_ds_xyzn/ 4 | ..\Sift.exe ../../ICL_NUIM_office/sandbox_5/color/ ../../ICL_NUIM_office/sandbox_5/sift_correspondence.txt 5 | ..\ShiTomasi.exe ../../ICL_NUIM_office/sandbox_5/color/ ../../ICL_NUIM_office/sandbox_5/corner_correspondence.txt 6 | ..\Narf.exe ../../ICL_NUIM_office/sandbox_5/pointcloud_xyzn/ ../../ICL_NUIM_office/sandbox_5/keypoint/ ../../ICL_NUIM_office/sandbox_5/geometric_descriptor/ 7 | ::SIFT matching 8 | ..\ColorCorrespondence.exe ../../ICL_NUIM_office/sandbox_5/pointcloud/ ../../ICL_NUIM_office/sandbox_5/pointcloud_ds/ ../../ICL_NUIM_office/sandbox_5/depth/ ../../ICL_NUIM_office/sandbox_5/sift_correspondence.txt ../../ICL_NUIM_office/sandbox_5/camera_para.txt -4.0 ../../ICL_NUIM_office/sandbox_5/sift_traj.txt ../../ICL_NUIM_office/sandbox_5/sift_info.txt 9 | ::ShiTomasi matching 10 | ..\ColorCorrespondence.exe ../../ICL_NUIM_office/sandbox_5/pointcloud/ ../../ICL_NUIM_office/sandbox_5/pointcloud_ds/ ../../ICL_NUIM_office/sandbox_5/depth/ ../../ICL_NUIM_office/sandbox_5/corner_correspondence.txt ../../ICL_NUIM_office/sandbox_5/camera_para.txt -4.0 ../../ICL_NUIM_office/sandbox_5/corner_traj.txt ../../ICL_NUIM_office/sandbox_5/corner_info.txt 11 | ..\GeometricCorrespondence.exe ../../ICL_NUIM_office/sandbox_5/pointcloud/ ../../ICL_NUIM_office/sandbox_5/pointcloud_ds/ ../../ICL_NUIM_office/sandbox_5/keypoint/ ../../ICL_NUIM_office/sandbox_5/geometric_descriptor/ ../../ICL_NUIM_office/sandbox_5/camera_para.txt -4.0 ../../ICL_NUIM_office/sandbox_5/narf_traj.txt ../../ICL_NUIM_office/sandbox_5/narf_info.txt 12 | ..\MergeInfo.exe ../../ICL_NUIM_office/sandbox_5/pointcloud_ds/ ../../ICL_NUIM_office/sandbox_5/narf_traj.txt ../../ICL_NUIM_office/sandbox_5/narf_info.txt ../../ICL_NUIM_office/sandbox_5/sift_traj.txt ../../ICL_NUIM_office/sandbox_5/sift_info.txt ../../ICL_NUIM_office/sandbox_5/corner_traj.txt ../../ICL_NUIM_office/sandbox_5/corner_info.txt ../../ICL_NUIM_office/sandbox_5/traj.txt ../../ICL_NUIM_office/sandbox_5/info.txt 13 | ..\GlobalOptimizer1.exe ../../ICL_NUIM_office/sandbox_5/pointcloud/ ../../ICL_NUIM_office/sandbox_5/traj.txt ../../ICL_NUIM_office/sandbox_5/info.txt ../../ICL_NUIM_office/sandbox_5/pose_opt1.txt ../../ICL_NUIM_office/sandbox_5/fail_build_complete_model.txt ../../ICL_NUIM_office/sandbox_5/selected_edge_opt1.txt 0.35 0.5 0.35 0.001 14 | if exist ../../ICL_NUIM_office/sandbox_5/fail_build_complete_model.txt goto OVER 15 | ..\GlobalOptimizer2.exe ../../ICL_NUIM_office/sandbox_5/pose_opt1.txt ../../ICL_NUIM_office/sandbox_5/pointcloud/ ../../ICL_NUIM_office/sandbox_5/traj.txt ../../ICL_NUIM_office/sandbox_5/info.txt ../../ICL_NUIM_office/sandbox_5/pose_opt2.txt ../../ICL_NUIM_office/sandbox_5/traj_remain_opt2.txt ../../ICL_NUIM_office/sandbox_5/info_remain_opt2.txt 50.0 16 | :OVER -------------------------------------------------------------------------------- /run_bat/Lab1/run.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | cd /d %~dp0 3 | ..\Png2Cloud.exe ../../Lab1/depth/ ../../Lab1/color/ ../../Lab1/camera_para.txt ../../Lab1/pointcloud/ ../../Lab1/pointcloud_ds/ ../../Lab1/pointcloud_xyzn/ ../../Lab1/pointcloud_ds_xyzn/ 4 | ..\Sift.exe ../../Lab1/color/ ../../Lab1/sift_correspondence.txt 5 | ..\ShiTomasi.exe ../../Lab1/color/ ../../Lab1/corner_correspondence.txt 6 | ..\Narf.exe ../../Lab1/pointcloud_xyzn/ ../../Lab1/keypoint/ ../../Lab1/geometric_descriptor/ 7 | ::SIFT matching 8 | ..\ColorCorrespondence.exe ../../Lab1/pointcloud/ ../../Lab1/pointcloud_ds/ ../../Lab1/depth/ ../../Lab1/sift_correspondence.txt ../../Lab1/camera_para.txt 4.0 ../../Lab1/sift_traj.txt ../../Lab1/sift_info.txt 9 | ::ShiTomasi matching 10 | ..\ColorCorrespondence.exe ../../Lab1/pointcloud/ ../../Lab1/pointcloud_ds/ ../../Lab1/depth/ ../../Lab1/corner_correspondence.txt ../../Lab1/camera_para.txt 4.0 ../../Lab1/corner_traj.txt ../../Lab1/corner_info.txt 11 | ..\GeometricCorrespondence.exe ../../Lab1/pointcloud/ ../../Lab1/pointcloud_ds/ ../../Lab1/keypoint/ ../../Lab1/geometric_descriptor/ ../../Lab1/camera_para.txt 4.0 ../../Lab1/narf_traj.txt ../../Lab1/narf_info.txt 12 | ..\MergeInfo.exe ../../Lab1/pointcloud_ds/ ../../Lab1/narf_traj.txt ../../Lab1/narf_info.txt ../../Lab1/sift_traj.txt ../../Lab1/sift_info.txt ../../Lab1/corner_traj.txt ../../Lab1/corner_info.txt ../../Lab1/traj.txt ../../Lab1/info.txt 13 | ..\GlobalOptimizer1.exe ../../Lab1/pointcloud/ ../../Lab1/traj.txt ../../Lab1/info.txt ../../Lab1/pose_opt1.txt ../../Lab1/fail_build_complete_model.txt ../../Lab1/selected_edge_opt1.txt 0.35 0.5 0.35 0.005 14 | if exist ../../Lab1/fail_build_complete_model.txt goto OVER 15 | ..\GlobalOptimizer2.exe ../../Lab1/pose_opt1.txt ../../Lab1/pointcloud/ ../../Lab1/traj.txt ../../Lab1/info.txt ../../Lab1/pose_opt2.txt ../../Lab1/traj_remain_opt2.txt ../../Lab1/info_remain_opt2.txt 50.0 16 | :OVER -------------------------------------------------------------------------------- /run_bat/Lab2/run.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | cd /d %~dp0 3 | ..\Png2Cloud.exe ../../Lab2/depth/ ../../Lab2/color/ ../../Lab2/camera_para.txt ../../Lab2/pointcloud/ ../../Lab2/pointcloud_ds/ ../../Lab2/pointcloud_xyzn/ ../../Lab2/pointcloud_ds_xyzn/ 4 | ..\Sift.exe ../../Lab2/color/ ../../Lab2/sift_correspondence.txt 5 | ..\ShiTomasi.exe ../../Lab2/color/ ../../Lab2/corner_correspondence.txt 6 | ..\Narf.exe ../../Lab2/pointcloud_xyzn/ ../../Lab2/keypoint/ ../../Lab2/geometric_descriptor/ 7 | ::SIFT matching 8 | ..\ColorCorrespondence.exe ../../Lab2/pointcloud/ ../../Lab2/pointcloud_ds/ ../../Lab2/depth/ ../../Lab2/sift_correspondence.txt ../../Lab2/camera_para.txt 4.0 ../../Lab2/sift_traj.txt ../../Lab2/sift_info.txt 9 | ::ShiTomasi matching 10 | ..\ColorCorrespondence.exe ../../Lab2/pointcloud/ ../../Lab2/pointcloud_ds/ ../../Lab2/depth/ ../../Lab2/corner_correspondence.txt ../../Lab2/camera_para.txt 4.0 ../../Lab2/corner_traj.txt ../../Lab2/corner_info.txt 11 | ..\GeometricCorrespondence.exe ../../Lab2/pointcloud/ ../../Lab2/pointcloud_ds/ ../../Lab2/keypoint/ ../../Lab2/geometric_descriptor/ ../../Lab2/camera_para.txt 4.0 ../../Lab2/narf_traj.txt ../../Lab2/narf_info.txt 12 | ..\MergeInfo.exe ../../Lab2/pointcloud_ds/ ../../Lab2/narf_traj.txt ../../Lab2/narf_info.txt ../../Lab2/sift_traj.txt ../../Lab2/sift_info.txt ../../Lab2/corner_traj.txt ../../Lab2/corner_info.txt ../../Lab2/traj.txt ../../Lab2/info.txt 13 | ..\GlobalOptimizer1.exe ../../Lab2/pointcloud/ ../../Lab2/traj.txt ../../Lab2/info.txt ../../Lab2/pose_opt1.txt ../../Lab2/fail_build_complete_model.txt ../../Lab2/selected_edge_opt1.txt 0.35 0.5 0.35 0.0025 14 | if exist ../../Lab2/fail_build_complete_model.txt goto OVER 15 | ..\GlobalOptimizer2.exe ../../Lab2/pose_opt1.txt ../../Lab2/pointcloud/ ../../Lab2/traj.txt ../../Lab2/info.txt ../../Lab2/pose_opt2.txt ../../Lab2/traj_remain_opt2.txt ../../Lab2/info_remain_opt2.txt 50.0 16 | :OVER -------------------------------------------------------------------------------- /run_bat/README.txt: -------------------------------------------------------------------------------- 1 | 1. Download the datasets 2 | 2. Put the datasets to correct path 3 | 3. Run the batch file "run.bat" -------------------------------------------------------------------------------- /run_bat/fr1_room/run_10.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | cd /d %~dp0 3 | ..\Png2Cloud.exe ../../rgbd_dataset_freiburg1_room/sandbox_10/depth/ ../../rgbd_dataset_freiburg1_room/sandbox_10/color/ ../../rgbd_dataset_freiburg1_room/sandbox_10/camera_para.txt ../../rgbd_dataset_freiburg1_room/sandbox_10/pointcloud/ ../../rgbd_dataset_freiburg1_room/sandbox_10/pointcloud_ds/ ../../rgbd_dataset_freiburg1_room/sandbox_10/pointcloud_xyzn/ ../../rgbd_dataset_freiburg1_room/sandbox_10/pointcloud_ds_xyzn/ 4 | ..\Sift.exe ../../rgbd_dataset_freiburg1_room/sandbox_10/color/ ../../rgbd_dataset_freiburg1_room/sandbox_10/sift_correspondence.txt 5 | ..\ShiTomasi.exe ../../rgbd_dataset_freiburg1_room/sandbox_10/color/ ../../rgbd_dataset_freiburg1_room/sandbox_10/corner_correspondence.txt 6 | ..\Narf.exe ../../rgbd_dataset_freiburg1_room/sandbox_10/pointcloud_xyzn/ ../../rgbd_dataset_freiburg1_room/sandbox_10/keypoint/ ../../rgbd_dataset_freiburg1_room/sandbox_10/geometric_descriptor/ 7 | ::SIFT matching 8 | ..\ColorCorrespondence.exe ../../rgbd_dataset_freiburg1_room/sandbox_10/pointcloud/ ../../rgbd_dataset_freiburg1_room/sandbox_10/pointcloud_ds/ ../../rgbd_dataset_freiburg1_room/sandbox_10/depth/ ../../rgbd_dataset_freiburg1_room/sandbox_10/sift_correspondence.txt ../../rgbd_dataset_freiburg1_room/sandbox_10/camera_para.txt 4.0 ../../rgbd_dataset_freiburg1_room/sandbox_10/sift_traj.txt ../../rgbd_dataset_freiburg1_room/sandbox_10/sift_info.txt 9 | ::ShiTomasi matching 10 | ..\ColorCorrespondence.exe ../../rgbd_dataset_freiburg1_room/sandbox_10/pointcloud/ ../../rgbd_dataset_freiburg1_room/sandbox_10/pointcloud_ds/ ../../rgbd_dataset_freiburg1_room/sandbox_10/depth/ ../../rgbd_dataset_freiburg1_room/sandbox_10/corner_correspondence.txt ../../rgbd_dataset_freiburg1_room/sandbox_10/camera_para.txt 4.0 ../../rgbd_dataset_freiburg1_room/sandbox_10/corner_traj.txt ../../rgbd_dataset_freiburg1_room/sandbox_10/corner_info.txt 11 | ..\GeometricCorrespondence.exe ../../rgbd_dataset_freiburg1_room/sandbox_10/pointcloud/ ../../rgbd_dataset_freiburg1_room/sandbox_10/pointcloud_ds/ ../../rgbd_dataset_freiburg1_room/sandbox_10/keypoint/ ../../rgbd_dataset_freiburg1_room/sandbox_10/geometric_descriptor/ ../../rgbd_dataset_freiburg1_room/sandbox_10/camera_para.txt 4.0 ../../rgbd_dataset_freiburg1_room/sandbox_10/narf_traj.txt ../../rgbd_dataset_freiburg1_room/sandbox_10/narf_info.txt 12 | ..\MergeInfo.exe ../../rgbd_dataset_freiburg1_room/sandbox_10/pointcloud_ds/ ../../rgbd_dataset_freiburg1_room/sandbox_10/narf_traj.txt ../../rgbd_dataset_freiburg1_room/sandbox_10/narf_info.txt ../../rgbd_dataset_freiburg1_room/sandbox_10/sift_traj.txt ../../rgbd_dataset_freiburg1_room/sandbox_10/sift_info.txt ../../rgbd_dataset_freiburg1_room/sandbox_10/corner_traj.txt ../../rgbd_dataset_freiburg1_room/sandbox_10/corner_info.txt ../../rgbd_dataset_freiburg1_room/sandbox_10/traj.txt ../../rgbd_dataset_freiburg1_room/sandbox_10/info.txt 13 | ..\GlobalOptimizer1.exe ../../rgbd_dataset_freiburg1_room/sandbox_10/pointcloud/ ../../rgbd_dataset_freiburg1_room/sandbox_10/traj.txt ../../rgbd_dataset_freiburg1_room/sandbox_10/info.txt ../../rgbd_dataset_freiburg1_room/sandbox_10/pose_opt1.txt ../../rgbd_dataset_freiburg1_room/sandbox_10/fail_build_complete_model.txt ../../rgbd_dataset_freiburg1_room/sandbox_10/selected_edge_opt1.txt 0.35 0.5 0.35 0.0033 14 | if exist ../../rgbd_dataset_freiburg1_room/sandbox_10/fail_build_complete_model.txt goto OVER 15 | ..\GlobalOptimizer2.exe ../../rgbd_dataset_freiburg1_room/sandbox_10/pose_opt1.txt ../../rgbd_dataset_freiburg1_room/sandbox_10/pointcloud/ ../../rgbd_dataset_freiburg1_room/sandbox_10/traj.txt ../../rgbd_dataset_freiburg1_room/sandbox_10/info.txt ../../rgbd_dataset_freiburg1_room/sandbox_10/pose_opt2.txt ../../rgbd_dataset_freiburg1_room/sandbox_10/traj_remain_opt2.txt ../../rgbd_dataset_freiburg1_room/sandbox_10/info_remain_opt2.txt 50.0 16 | :OVER -------------------------------------------------------------------------------- /run_bat/fr1_room/run_2.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | cd /d %~dp0 3 | ..\Png2Cloud.exe ../../rgbd_dataset_freiburg1_room/sandbox_2/depth/ ../../rgbd_dataset_freiburg1_room/sandbox_2/color/ ../../rgbd_dataset_freiburg1_room/sandbox_2/camera_para.txt ../../rgbd_dataset_freiburg1_room/sandbox_2/pointcloud/ ../../rgbd_dataset_freiburg1_room/sandbox_2/pointcloud_ds/ ../../rgbd_dataset_freiburg1_room/sandbox_2/pointcloud_xyzn/ ../../rgbd_dataset_freiburg1_room/sandbox_2/pointcloud_ds_xyzn/ 4 | ..\Sift.exe ../../rgbd_dataset_freiburg1_room/sandbox_2/color/ ../../rgbd_dataset_freiburg1_room/sandbox_2/sift_correspondence.txt 5 | ..\ShiTomasi.exe ../../rgbd_dataset_freiburg1_room/sandbox_2/color/ ../../rgbd_dataset_freiburg1_room/sandbox_2/corner_correspondence.txt 6 | ..\Narf.exe ../../rgbd_dataset_freiburg1_room/sandbox_2/pointcloud_xyzn/ ../../rgbd_dataset_freiburg1_room/sandbox_2/keypoint/ ../../rgbd_dataset_freiburg1_room/sandbox_2/geometric_descriptor/ 7 | ::SIFT matching 8 | ..\ColorCorrespondence.exe ../../rgbd_dataset_freiburg1_room/sandbox_2/pointcloud/ ../../rgbd_dataset_freiburg1_room/sandbox_2/pointcloud_ds/ ../../rgbd_dataset_freiburg1_room/sandbox_2/depth/ ../../rgbd_dataset_freiburg1_room/sandbox_2/sift_correspondence.txt ../../rgbd_dataset_freiburg1_room/sandbox_2/camera_para.txt 4.0 ../../rgbd_dataset_freiburg1_room/sandbox_2/sift_traj.txt ../../rgbd_dataset_freiburg1_room/sandbox_2/sift_info.txt 9 | ::ShiTomasi matching 10 | ..\ColorCorrespondence.exe ../../rgbd_dataset_freiburg1_room/sandbox_2/pointcloud/ ../../rgbd_dataset_freiburg1_room/sandbox_2/pointcloud_ds/ ../../rgbd_dataset_freiburg1_room/sandbox_2/depth/ ../../rgbd_dataset_freiburg1_room/sandbox_2/corner_correspondence.txt ../../rgbd_dataset_freiburg1_room/sandbox_2/camera_para.txt 4.0 ../../rgbd_dataset_freiburg1_room/sandbox_2/corner_traj.txt ../../rgbd_dataset_freiburg1_room/sandbox_2/corner_info.txt 11 | ..\GeometricCorrespondence.exe ../../rgbd_dataset_freiburg1_room/sandbox_2/pointcloud/ ../../rgbd_dataset_freiburg1_room/sandbox_2/pointcloud_ds/ ../../rgbd_dataset_freiburg1_room/sandbox_2/keypoint/ ../../rgbd_dataset_freiburg1_room/sandbox_2/geometric_descriptor/ ../../rgbd_dataset_freiburg1_room/sandbox_2/camera_para.txt 4.0 ../../rgbd_dataset_freiburg1_room/sandbox_2/narf_traj.txt ../../rgbd_dataset_freiburg1_room/sandbox_2/narf_info.txt 12 | ..\MergeInfo.exe ../../rgbd_dataset_freiburg1_room/sandbox_2/pointcloud_ds/ ../../rgbd_dataset_freiburg1_room/sandbox_2/narf_traj.txt ../../rgbd_dataset_freiburg1_room/sandbox_2/narf_info.txt ../../rgbd_dataset_freiburg1_room/sandbox_2/sift_traj.txt ../../rgbd_dataset_freiburg1_room/sandbox_2/sift_info.txt ../../rgbd_dataset_freiburg1_room/sandbox_2/corner_traj.txt ../../rgbd_dataset_freiburg1_room/sandbox_2/corner_info.txt ../../rgbd_dataset_freiburg1_room/sandbox_2/traj.txt ../../rgbd_dataset_freiburg1_room/sandbox_2/info.txt 13 | ..\GlobalOptimizer1.exe ../../rgbd_dataset_freiburg1_room/sandbox_2/pointcloud/ ../../rgbd_dataset_freiburg1_room/sandbox_2/traj.txt ../../rgbd_dataset_freiburg1_room/sandbox_2/info.txt ../../rgbd_dataset_freiburg1_room/sandbox_2/pose_opt1.txt ../../rgbd_dataset_freiburg1_room/sandbox_2/fail_build_complete_model.txt ../../rgbd_dataset_freiburg1_room/sandbox_2/selected_edge_opt1.txt 0.35 0.55 0.35 0.0005 14 | if exist ../../rgbd_dataset_freiburg1_room/sandbox_2/fail_build_complete_model.txt goto OVER 15 | ..\GlobalOptimizer2.exe ../../rgbd_dataset_freiburg1_room/sandbox_2/pose_opt1.txt ../../rgbd_dataset_freiburg1_room/sandbox_2/pointcloud/ ../../rgbd_dataset_freiburg1_room/sandbox_2/traj.txt ../../rgbd_dataset_freiburg1_room/sandbox_2/info.txt ../../rgbd_dataset_freiburg1_room/sandbox_2/pose_opt2.txt ../../rgbd_dataset_freiburg1_room/sandbox_2/traj_remain_opt2.txt ../../rgbd_dataset_freiburg1_room/sandbox_2/info_remain_opt2.txt 50.0 16 | :OVER -------------------------------------------------------------------------------- /run_bat/fr1_room/run_4.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | cd /d %~dp0 3 | ..\Png2Cloud.exe ../../rgbd_dataset_freiburg1_room/sandbox_4/depth/ ../../rgbd_dataset_freiburg1_room/sandbox_4/color/ ../../rgbd_dataset_freiburg1_room/sandbox_4/camera_para.txt ../../rgbd_dataset_freiburg1_room/sandbox_4/pointcloud/ ../../rgbd_dataset_freiburg1_room/sandbox_4/pointcloud_ds/ ../../rgbd_dataset_freiburg1_room/sandbox_4/pointcloud_xyzn/ ../../rgbd_dataset_freiburg1_room/sandbox_4/pointcloud_ds_xyzn/ 4 | ..\Sift.exe ../../rgbd_dataset_freiburg1_room/sandbox_4/color/ ../../rgbd_dataset_freiburg1_room/sandbox_4/sift_correspondence.txt 5 | ..\ShiTomasi.exe ../../rgbd_dataset_freiburg1_room/sandbox_4/color/ ../../rgbd_dataset_freiburg1_room/sandbox_4/corner_correspondence.txt 6 | ..\Narf.exe ../../rgbd_dataset_freiburg1_room/sandbox_4/pointcloud_xyzn/ ../../rgbd_dataset_freiburg1_room/sandbox_4/keypoint/ ../../rgbd_dataset_freiburg1_room/sandbox_4/geometric_descriptor/ 7 | ::SIFT matching 8 | ..\ColorCorrespondence.exe ../../rgbd_dataset_freiburg1_room/sandbox_4/pointcloud/ ../../rgbd_dataset_freiburg1_room/sandbox_4/pointcloud_ds/ ../../rgbd_dataset_freiburg1_room/sandbox_4/depth/ ../../rgbd_dataset_freiburg1_room/sandbox_4/sift_correspondence.txt ../../rgbd_dataset_freiburg1_room/sandbox_4/camera_para.txt 4.0 ../../rgbd_dataset_freiburg1_room/sandbox_4/sift_traj.txt ../../rgbd_dataset_freiburg1_room/sandbox_4/sift_info.txt 9 | ::ShiTomasi matching 10 | ..\ColorCorrespondence.exe ../../rgbd_dataset_freiburg1_room/sandbox_4/pointcloud/ ../../rgbd_dataset_freiburg1_room/sandbox_4/pointcloud_ds/ ../../rgbd_dataset_freiburg1_room/sandbox_4/depth/ ../../rgbd_dataset_freiburg1_room/sandbox_4/corner_correspondence.txt ../../rgbd_dataset_freiburg1_room/sandbox_4/camera_para.txt 4.0 ../../rgbd_dataset_freiburg1_room/sandbox_4/corner_traj.txt ../../rgbd_dataset_freiburg1_room/sandbox_4/corner_info.txt 11 | ..\GeometricCorrespondence.exe ../../rgbd_dataset_freiburg1_room/sandbox_4/pointcloud/ ../../rgbd_dataset_freiburg1_room/sandbox_4/pointcloud_ds/ ../../rgbd_dataset_freiburg1_room/sandbox_4/keypoint/ ../../rgbd_dataset_freiburg1_room/sandbox_4/geometric_descriptor/ ../../rgbd_dataset_freiburg1_room/sandbox_4/camera_para.txt 4.0 ../../rgbd_dataset_freiburg1_room/sandbox_4/narf_traj.txt ../../rgbd_dataset_freiburg1_room/sandbox_4/narf_info.txt 12 | ..\MergeInfo.exe ../../rgbd_dataset_freiburg1_room/sandbox_4/pointcloud_ds/ ../../rgbd_dataset_freiburg1_room/sandbox_4/narf_traj.txt ../../rgbd_dataset_freiburg1_room/sandbox_4/narf_info.txt ../../rgbd_dataset_freiburg1_room/sandbox_4/sift_traj.txt ../../rgbd_dataset_freiburg1_room/sandbox_4/sift_info.txt ../../rgbd_dataset_freiburg1_room/sandbox_4/corner_traj.txt ../../rgbd_dataset_freiburg1_room/sandbox_4/corner_info.txt ../../rgbd_dataset_freiburg1_room/sandbox_4/traj.txt ../../rgbd_dataset_freiburg1_room/sandbox_4/info.txt 13 | ..\GlobalOptimizer1.exe ../../rgbd_dataset_freiburg1_room/sandbox_4/pointcloud/ ../../rgbd_dataset_freiburg1_room/sandbox_4/traj.txt ../../rgbd_dataset_freiburg1_room/sandbox_4/info.txt ../../rgbd_dataset_freiburg1_room/sandbox_4/pose_opt1.txt ../../rgbd_dataset_freiburg1_room/sandbox_4/fail_build_complete_model.txt ../../rgbd_dataset_freiburg1_room/sandbox_4/selected_edge_opt1.txt 0.35 0.5 0.35 0.001 14 | if exist ../../rgbd_dataset_freiburg1_room/sandbox_4/fail_build_complete_model.txt goto OVER 15 | ..\GlobalOptimizer2.exe ../../rgbd_dataset_freiburg1_room/sandbox_4/pose_opt1.txt ../../rgbd_dataset_freiburg1_room/sandbox_4/pointcloud/ ../../rgbd_dataset_freiburg1_room/sandbox_4/traj.txt ../../rgbd_dataset_freiburg1_room/sandbox_4/info.txt ../../rgbd_dataset_freiburg1_room/sandbox_4/pose_opt2.txt ../../rgbd_dataset_freiburg1_room/sandbox_4/traj_remain_opt2.txt ../../rgbd_dataset_freiburg1_room/sandbox_4/info_remain_opt2.txt 50.0 16 | :OVER -------------------------------------------------------------------------------- /run_bat/fr1_room/run_6.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | cd /d %~dp0 3 | ..\Png2Cloud.exe ../../rgbd_dataset_freiburg1_room/sandbox_6/depth/ ../../rgbd_dataset_freiburg1_room/sandbox_6/color/ ../../rgbd_dataset_freiburg1_room/sandbox_6/camera_para.txt ../../rgbd_dataset_freiburg1_room/sandbox_6/pointcloud/ ../../rgbd_dataset_freiburg1_room/sandbox_6/pointcloud_ds/ ../../rgbd_dataset_freiburg1_room/sandbox_6/pointcloud_xyzn/ ../../rgbd_dataset_freiburg1_room/sandbox_6/pointcloud_ds_xyzn/ 4 | ..\Sift.exe ../../rgbd_dataset_freiburg1_room/sandbox_6/color/ ../../rgbd_dataset_freiburg1_room/sandbox_6/sift_correspondence.txt 5 | ..\ShiTomasi.exe ../../rgbd_dataset_freiburg1_room/sandbox_6/color/ ../../rgbd_dataset_freiburg1_room/sandbox_6/corner_correspondence.txt 6 | ..\Narf.exe ../../rgbd_dataset_freiburg1_room/sandbox_6/pointcloud_xyzn/ ../../rgbd_dataset_freiburg1_room/sandbox_6/keypoint/ ../../rgbd_dataset_freiburg1_room/sandbox_6/geometric_descriptor/ 7 | ::SIFT matching 8 | ..\ColorCorrespondence.exe ../../rgbd_dataset_freiburg1_room/sandbox_6/pointcloud/ ../../rgbd_dataset_freiburg1_room/sandbox_6/pointcloud_ds/ ../../rgbd_dataset_freiburg1_room/sandbox_6/depth/ ../../rgbd_dataset_freiburg1_room/sandbox_6/sift_correspondence.txt ../../rgbd_dataset_freiburg1_room/sandbox_6/camera_para.txt 4.0 ../../rgbd_dataset_freiburg1_room/sandbox_6/sift_traj.txt ../../rgbd_dataset_freiburg1_room/sandbox_6/sift_info.txt 9 | ::ShiTomasi matching 10 | ..\ColorCorrespondence.exe ../../rgbd_dataset_freiburg1_room/sandbox_6/pointcloud/ ../../rgbd_dataset_freiburg1_room/sandbox_6/pointcloud_ds/ ../../rgbd_dataset_freiburg1_room/sandbox_6/depth/ ../../rgbd_dataset_freiburg1_room/sandbox_6/corner_correspondence.txt ../../rgbd_dataset_freiburg1_room/sandbox_6/camera_para.txt 4.0 ../../rgbd_dataset_freiburg1_room/sandbox_6/corner_traj.txt ../../rgbd_dataset_freiburg1_room/sandbox_6/corner_info.txt 11 | ..\GeometricCorrespondence.exe ../../rgbd_dataset_freiburg1_room/sandbox_6/pointcloud/ ../../rgbd_dataset_freiburg1_room/sandbox_6/pointcloud_ds/ ../../rgbd_dataset_freiburg1_room/sandbox_6/keypoint/ ../../rgbd_dataset_freiburg1_room/sandbox_6/geometric_descriptor/ ../../rgbd_dataset_freiburg1_room/sandbox_6/camera_para.txt 4.0 ../../rgbd_dataset_freiburg1_room/sandbox_6/narf_traj.txt ../../rgbd_dataset_freiburg1_room/sandbox_6/narf_info.txt 12 | ..\MergeInfo.exe ../../rgbd_dataset_freiburg1_room/sandbox_6/pointcloud_ds/ ../../rgbd_dataset_freiburg1_room/sandbox_6/narf_traj.txt ../../rgbd_dataset_freiburg1_room/sandbox_6/narf_info.txt ../../rgbd_dataset_freiburg1_room/sandbox_6/sift_traj.txt ../../rgbd_dataset_freiburg1_room/sandbox_6/sift_info.txt ../../rgbd_dataset_freiburg1_room/sandbox_6/corner_traj.txt ../../rgbd_dataset_freiburg1_room/sandbox_6/corner_info.txt ../../rgbd_dataset_freiburg1_room/sandbox_6/traj.txt ../../rgbd_dataset_freiburg1_room/sandbox_6/info.txt 13 | ..\GlobalOptimizer1.exe ../../rgbd_dataset_freiburg1_room/sandbox_6/pointcloud/ ../../rgbd_dataset_freiburg1_room/sandbox_6/traj.txt ../../rgbd_dataset_freiburg1_room/sandbox_6/info.txt ../../rgbd_dataset_freiburg1_room/sandbox_6/pose_opt1.txt ../../rgbd_dataset_freiburg1_room/sandbox_6/fail_build_complete_model.txt ../../rgbd_dataset_freiburg1_room/sandbox_6/selected_edge_opt1.txt 0.35 0.5 0.35 0.002 14 | if exist ../../rgbd_dataset_freiburg1_room/sandbox_6/fail_build_complete_model.txt goto OVER 15 | ..\GlobalOptimizer2.exe ../../rgbd_dataset_freiburg1_room/sandbox_6/pose_opt1.txt ../../rgbd_dataset_freiburg1_room/sandbox_6/pointcloud/ ../../rgbd_dataset_freiburg1_room/sandbox_6/traj.txt ../../rgbd_dataset_freiburg1_room/sandbox_6/info.txt ../../rgbd_dataset_freiburg1_room/sandbox_6/pose_opt2.txt ../../rgbd_dataset_freiburg1_room/sandbox_6/traj_remain_opt2.txt ../../rgbd_dataset_freiburg1_room/sandbox_6/info_remain_opt2.txt 50.0 16 | :OVER -------------------------------------------------------------------------------- /run_bat/fr1_room/run_8.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | cd /d %~dp0 3 | ..\Png2Cloud.exe ../../rgbd_dataset_freiburg1_room/sandbox_8/depth/ ../../rgbd_dataset_freiburg1_room/sandbox_8/color/ ../../rgbd_dataset_freiburg1_room/sandbox_8/camera_para.txt ../../rgbd_dataset_freiburg1_room/sandbox_8/pointcloud/ ../../rgbd_dataset_freiburg1_room/sandbox_8/pointcloud_ds/ ../../rgbd_dataset_freiburg1_room/sandbox_8/pointcloud_xyzn/ ../../rgbd_dataset_freiburg1_room/sandbox_8/pointcloud_ds_xyzn/ 4 | ..\Sift.exe ../../rgbd_dataset_freiburg1_room/sandbox_8/color/ ../../rgbd_dataset_freiburg1_room/sandbox_8/sift_correspondence.txt 5 | ..\ShiTomasi.exe ../../rgbd_dataset_freiburg1_room/sandbox_8/color/ ../../rgbd_dataset_freiburg1_room/sandbox_8/corner_correspondence.txt 6 | ..\Narf.exe ../../rgbd_dataset_freiburg1_room/sandbox_8/pointcloud_xyzn/ ../../rgbd_dataset_freiburg1_room/sandbox_8/keypoint/ ../../rgbd_dataset_freiburg1_room/sandbox_8/geometric_descriptor/ 7 | ::SIFT matching 8 | ..\ColorCorrespondence.exe ../../rgbd_dataset_freiburg1_room/sandbox_8/pointcloud/ ../../rgbd_dataset_freiburg1_room/sandbox_8/pointcloud_ds/ ../../rgbd_dataset_freiburg1_room/sandbox_8/depth/ ../../rgbd_dataset_freiburg1_room/sandbox_8/sift_correspondence.txt ../../rgbd_dataset_freiburg1_room/sandbox_8/camera_para.txt 4.0 ../../rgbd_dataset_freiburg1_room/sandbox_8/sift_traj.txt ../../rgbd_dataset_freiburg1_room/sandbox_8/sift_info.txt 9 | ::ShiTomasi matching 10 | ..\ColorCorrespondence.exe ../../rgbd_dataset_freiburg1_room/sandbox_8/pointcloud/ ../../rgbd_dataset_freiburg1_room/sandbox_8/pointcloud_ds/ ../../rgbd_dataset_freiburg1_room/sandbox_8/depth/ ../../rgbd_dataset_freiburg1_room/sandbox_8/corner_correspondence.txt ../../rgbd_dataset_freiburg1_room/sandbox_8/camera_para.txt 4.0 ../../rgbd_dataset_freiburg1_room/sandbox_8/corner_traj.txt ../../rgbd_dataset_freiburg1_room/sandbox_8/corner_info.txt 11 | ..\GeometricCorrespondence.exe ../../rgbd_dataset_freiburg1_room/sandbox_8/pointcloud/ ../../rgbd_dataset_freiburg1_room/sandbox_8/pointcloud_ds/ ../../rgbd_dataset_freiburg1_room/sandbox_8/keypoint/ ../../rgbd_dataset_freiburg1_room/sandbox_8/geometric_descriptor/ ../../rgbd_dataset_freiburg1_room/sandbox_8/camera_para.txt 4.0 ../../rgbd_dataset_freiburg1_room/sandbox_8/narf_traj.txt ../../rgbd_dataset_freiburg1_room/sandbox_8/narf_info.txt 12 | ..\MergeInfo.exe ../../rgbd_dataset_freiburg1_room/sandbox_8/pointcloud_ds/ ../../rgbd_dataset_freiburg1_room/sandbox_8/narf_traj.txt ../../rgbd_dataset_freiburg1_room/sandbox_8/narf_info.txt ../../rgbd_dataset_freiburg1_room/sandbox_8/sift_traj.txt ../../rgbd_dataset_freiburg1_room/sandbox_8/sift_info.txt ../../rgbd_dataset_freiburg1_room/sandbox_8/corner_traj.txt ../../rgbd_dataset_freiburg1_room/sandbox_8/corner_info.txt ../../rgbd_dataset_freiburg1_room/sandbox_8/traj.txt ../../rgbd_dataset_freiburg1_room/sandbox_8/info.txt 13 | ..\GlobalOptimizer1.exe ../../rgbd_dataset_freiburg1_room/sandbox_8/pointcloud/ ../../rgbd_dataset_freiburg1_room/sandbox_8/traj.txt ../../rgbd_dataset_freiburg1_room/sandbox_8/info.txt ../../rgbd_dataset_freiburg1_room/sandbox_8/pose_opt1.txt ../../rgbd_dataset_freiburg1_room/sandbox_8/fail_build_complete_model.txt ../../rgbd_dataset_freiburg1_room/sandbox_8/selected_edge_opt1.txt 0.35 0.5 0.35 0.0025 14 | if exist ../../rgbd_dataset_freiburg1_room/sandbox_8/fail_build_complete_model.txt goto OVER 15 | ..\GlobalOptimizer2.exe ../../rgbd_dataset_freiburg1_room/sandbox_8/pose_opt1.txt ../../rgbd_dataset_freiburg1_room/sandbox_8/pointcloud/ ../../rgbd_dataset_freiburg1_room/sandbox_8/traj.txt ../../rgbd_dataset_freiburg1_room/sandbox_8/info.txt ../../rgbd_dataset_freiburg1_room/sandbox_8/pose_opt2.txt ../../rgbd_dataset_freiburg1_room/sandbox_8/traj_remain_opt2.txt ../../rgbd_dataset_freiburg1_room/sandbox_8/info_remain_opt2.txt 50.0 16 | :OVER -------------------------------------------------------------------------------- /run_bat/fr2_desk/run_10.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | cd /d %~dp0 3 | ..\Png2Cloud.exe ../../rgbd_dataset_freiburg2_desk/sandbox_10/depth/ ../../rgbd_dataset_freiburg2_desk/sandbox_10/color/ ../../rgbd_dataset_freiburg2_desk/sandbox_10/camera_para.txt ../../rgbd_dataset_freiburg2_desk/sandbox_10/pointcloud/ ../../rgbd_dataset_freiburg2_desk/sandbox_10/pointcloud_ds/ ../../rgbd_dataset_freiburg2_desk/sandbox_10/pointcloud_xyzn/ ../../rgbd_dataset_freiburg2_desk/sandbox_10/pointcloud_ds_xyzn/ 4 | ..\Sift.exe ../../rgbd_dataset_freiburg2_desk/sandbox_10/color/ ../../rgbd_dataset_freiburg2_desk/sandbox_10/sift_correspondence.txt 5 | ..\ShiTomasi.exe ../../rgbd_dataset_freiburg2_desk/sandbox_10/color/ ../../rgbd_dataset_freiburg2_desk/sandbox_10/corner_correspondence.txt 6 | ..\Narf.exe ../../rgbd_dataset_freiburg2_desk/sandbox_10/pointcloud_xyzn/ ../../rgbd_dataset_freiburg2_desk/sandbox_10/keypoint/ ../../rgbd_dataset_freiburg2_desk/sandbox_10/geometric_descriptor/ 7 | ::SIFT matching 8 | ..\ColorCorrespondence.exe ../../rgbd_dataset_freiburg2_desk/sandbox_10/pointcloud/ ../../rgbd_dataset_freiburg2_desk/sandbox_10/pointcloud_ds/ ../../rgbd_dataset_freiburg2_desk/sandbox_10/depth/ ../../rgbd_dataset_freiburg2_desk/sandbox_10/sift_correspondence.txt ../../rgbd_dataset_freiburg2_desk/sandbox_10/camera_para.txt 4.0 ../../rgbd_dataset_freiburg2_desk/sandbox_10/sift_traj.txt ../../rgbd_dataset_freiburg2_desk/sandbox_10/sift_info.txt 9 | ::ShiTomasi matching 10 | ..\ColorCorrespondence.exe ../../rgbd_dataset_freiburg2_desk/sandbox_10/pointcloud/ ../../rgbd_dataset_freiburg2_desk/sandbox_10/pointcloud_ds/ ../../rgbd_dataset_freiburg2_desk/sandbox_10/depth/ ../../rgbd_dataset_freiburg2_desk/sandbox_10/corner_correspondence.txt ../../rgbd_dataset_freiburg2_desk/sandbox_10/camera_para.txt 4.0 ../../rgbd_dataset_freiburg2_desk/sandbox_10/corner_traj.txt ../../rgbd_dataset_freiburg2_desk/sandbox_10/corner_info.txt 11 | ..\GeometricCorrespondence.exe ../../rgbd_dataset_freiburg2_desk/sandbox_10/pointcloud/ ../../rgbd_dataset_freiburg2_desk/sandbox_10/pointcloud_ds/ ../../rgbd_dataset_freiburg2_desk/sandbox_10/keypoint/ ../../rgbd_dataset_freiburg2_desk/sandbox_10/geometric_descriptor/ ../../rgbd_dataset_freiburg2_desk/sandbox_10/camera_para.txt 4.0 ../../rgbd_dataset_freiburg2_desk/sandbox_10/narf_traj.txt ../../rgbd_dataset_freiburg2_desk/sandbox_10/narf_info.txt 12 | ..\MergeInfo.exe ../../rgbd_dataset_freiburg2_desk/sandbox_10/pointcloud_ds/ ../../rgbd_dataset_freiburg2_desk/sandbox_10/narf_traj.txt ../../rgbd_dataset_freiburg2_desk/sandbox_10/narf_info.txt ../../rgbd_dataset_freiburg2_desk/sandbox_10/sift_traj.txt ../../rgbd_dataset_freiburg2_desk/sandbox_10/sift_info.txt ../../rgbd_dataset_freiburg2_desk/sandbox_10/corner_traj.txt ../../rgbd_dataset_freiburg2_desk/sandbox_10/corner_info.txt ../../rgbd_dataset_freiburg2_desk/sandbox_10/traj.txt ../../rgbd_dataset_freiburg2_desk/sandbox_10/info.txt 13 | ..\GlobalOptimizer1.exe ../../rgbd_dataset_freiburg2_desk/sandbox_10/pointcloud/ ../../rgbd_dataset_freiburg2_desk/sandbox_10/traj.txt ../../rgbd_dataset_freiburg2_desk/sandbox_10/info.txt ../../rgbd_dataset_freiburg2_desk/sandbox_10/pose_opt1.txt ../../rgbd_dataset_freiburg2_desk/sandbox_10/fail_build_complete_model.txt ../../rgbd_dataset_freiburg2_desk/sandbox_10/selected_edge_opt1.txt 0.35 0.5 0.35 0.001 14 | if exist ../../rgbd_dataset_freiburg2_desk/sandbox_10/fail_build_complete_model.txt goto OVER 15 | ..\GlobalOptimizer2.exe ../../rgbd_dataset_freiburg2_desk/sandbox_10/pose_opt1.txt ../../rgbd_dataset_freiburg2_desk/sandbox_10/pointcloud/ ../../rgbd_dataset_freiburg2_desk/sandbox_10/traj.txt ../../rgbd_dataset_freiburg2_desk/sandbox_10/info.txt ../../rgbd_dataset_freiburg2_desk/sandbox_10/pose_opt2.txt ../../rgbd_dataset_freiburg2_desk/sandbox_10/traj_remain_opt2.txt ../../rgbd_dataset_freiburg2_desk/sandbox_10/info_remain_opt2.txt 50.0 16 | :OVER -------------------------------------------------------------------------------- /run_bat/fr2_desk/run_15.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | cd /d %~dp0 3 | ..\Png2Cloud.exe ../../rgbd_dataset_freiburg2_desk/sandbox_15/depth/ ../../rgbd_dataset_freiburg2_desk/sandbox_15/color/ ../../rgbd_dataset_freiburg2_desk/sandbox_15/camera_para.txt ../../rgbd_dataset_freiburg2_desk/sandbox_15/pointcloud/ ../../rgbd_dataset_freiburg2_desk/sandbox_15/pointcloud_ds/ ../../rgbd_dataset_freiburg2_desk/sandbox_15/pointcloud_xyzn/ ../../rgbd_dataset_freiburg2_desk/sandbox_15/pointcloud_ds_xyzn/ 4 | ..\Sift.exe ../../rgbd_dataset_freiburg2_desk/sandbox_15/color/ ../../rgbd_dataset_freiburg2_desk/sandbox_15/sift_correspondence.txt 5 | ..\ShiTomasi.exe ../../rgbd_dataset_freiburg2_desk/sandbox_15/color/ ../../rgbd_dataset_freiburg2_desk/sandbox_15/corner_correspondence.txt 6 | ..\Narf.exe ../../rgbd_dataset_freiburg2_desk/sandbox_15/pointcloud_xyzn/ ../../rgbd_dataset_freiburg2_desk/sandbox_15/keypoint/ ../../rgbd_dataset_freiburg2_desk/sandbox_15/geometric_descriptor/ 7 | ::SIFT matching 8 | ..\ColorCorrespondence.exe ../../rgbd_dataset_freiburg2_desk/sandbox_15/pointcloud/ ../../rgbd_dataset_freiburg2_desk/sandbox_15/pointcloud_ds/ ../../rgbd_dataset_freiburg2_desk/sandbox_15/depth/ ../../rgbd_dataset_freiburg2_desk/sandbox_15/sift_correspondence.txt ../../rgbd_dataset_freiburg2_desk/sandbox_15/camera_para.txt 4.0 ../../rgbd_dataset_freiburg2_desk/sandbox_15/sift_traj.txt ../../rgbd_dataset_freiburg2_desk/sandbox_15/sift_info.txt 9 | ::ShiTomasi matching 10 | ..\ColorCorrespondence.exe ../../rgbd_dataset_freiburg2_desk/sandbox_15/pointcloud/ ../../rgbd_dataset_freiburg2_desk/sandbox_15/pointcloud_ds/ ../../rgbd_dataset_freiburg2_desk/sandbox_15/depth/ ../../rgbd_dataset_freiburg2_desk/sandbox_15/corner_correspondence.txt ../../rgbd_dataset_freiburg2_desk/sandbox_15/camera_para.txt 4.0 ../../rgbd_dataset_freiburg2_desk/sandbox_15/corner_traj.txt ../../rgbd_dataset_freiburg2_desk/sandbox_15/corner_info.txt 11 | ..\GeometricCorrespondence.exe ../../rgbd_dataset_freiburg2_desk/sandbox_15/pointcloud/ ../../rgbd_dataset_freiburg2_desk/sandbox_15/pointcloud_ds/ ../../rgbd_dataset_freiburg2_desk/sandbox_15/keypoint/ ../../rgbd_dataset_freiburg2_desk/sandbox_15/geometric_descriptor/ ../../rgbd_dataset_freiburg2_desk/sandbox_15/camera_para.txt 4.0 ../../rgbd_dataset_freiburg2_desk/sandbox_15/narf_traj.txt ../../rgbd_dataset_freiburg2_desk/sandbox_15/narf_info.txt 12 | ..\MergeInfo.exe ../../rgbd_dataset_freiburg2_desk/sandbox_15/pointcloud_ds/ ../../rgbd_dataset_freiburg2_desk/sandbox_15/narf_traj.txt ../../rgbd_dataset_freiburg2_desk/sandbox_15/narf_info.txt ../../rgbd_dataset_freiburg2_desk/sandbox_15/sift_traj.txt ../../rgbd_dataset_freiburg2_desk/sandbox_15/sift_info.txt ../../rgbd_dataset_freiburg2_desk/sandbox_15/corner_traj.txt ../../rgbd_dataset_freiburg2_desk/sandbox_15/corner_info.txt ../../rgbd_dataset_freiburg2_desk/sandbox_15/traj.txt ../../rgbd_dataset_freiburg2_desk/sandbox_15/info.txt 13 | ..\GlobalOptimizer1.exe ../../rgbd_dataset_freiburg2_desk/sandbox_15/pointcloud/ ../../rgbd_dataset_freiburg2_desk/sandbox_15/traj.txt ../../rgbd_dataset_freiburg2_desk/sandbox_15/info.txt ../../rgbd_dataset_freiburg2_desk/sandbox_15/pose_opt1.txt ../../rgbd_dataset_freiburg2_desk/sandbox_15/fail_build_complete_model.txt ../../rgbd_dataset_freiburg2_desk/sandbox_15/selected_edge_opt1.txt 0.3 0.5 0.3 0.002 14 | if exist ../../rgbd_dataset_freiburg2_desk/sandbox_15/fail_build_complete_model.txt goto OVER 15 | ..\GlobalOptimizer2.exe ../../rgbd_dataset_freiburg2_desk/sandbox_15/pose_opt1.txt ../../rgbd_dataset_freiburg2_desk/sandbox_15/pointcloud/ ../../rgbd_dataset_freiburg2_desk/sandbox_15/traj.txt ../../rgbd_dataset_freiburg2_desk/sandbox_15/info.txt ../../rgbd_dataset_freiburg2_desk/sandbox_15/pose_opt2.txt ../../rgbd_dataset_freiburg2_desk/sandbox_15/traj_remain_opt2.txt ../../rgbd_dataset_freiburg2_desk/sandbox_15/info_remain_opt2.txt 50.0 16 | :OVER -------------------------------------------------------------------------------- /run_bat/fr2_desk/run_2.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | cd /d %~dp0 3 | ..\Png2Cloud.exe ../../rgbd_dataset_freiburg2_desk/sandbox_2/depth/ ../../rgbd_dataset_freiburg2_desk/sandbox_2/color/ ../../rgbd_dataset_freiburg2_desk/sandbox_2/camera_para.txt ../../rgbd_dataset_freiburg2_desk/sandbox_2/pointcloud/ ../../rgbd_dataset_freiburg2_desk/sandbox_2/pointcloud_ds/ ../../rgbd_dataset_freiburg2_desk/sandbox_2/pointcloud_xyzn/ ../../rgbd_dataset_freiburg2_desk/sandbox_2/pointcloud_ds_xyzn/ 4 | ..\Sift.exe ../../rgbd_dataset_freiburg2_desk/sandbox_2/color/ ../../rgbd_dataset_freiburg2_desk/sandbox_2/sift_correspondence.txt 5 | ..\ShiTomasi.exe ../../rgbd_dataset_freiburg2_desk/sandbox_2/color/ ../../rgbd_dataset_freiburg2_desk/sandbox_2/corner_correspondence.txt 6 | ..\Narf.exe ../../rgbd_dataset_freiburg2_desk/sandbox_2/pointcloud_xyzn/ ../../rgbd_dataset_freiburg2_desk/sandbox_2/keypoint/ ../../rgbd_dataset_freiburg2_desk/sandbox_2/geometric_descriptor/ 7 | ::SIFT matching 8 | ..\ColorCorrespondence.exe ../../rgbd_dataset_freiburg2_desk/sandbox_2/pointcloud/ ../../rgbd_dataset_freiburg2_desk/sandbox_2/pointcloud_ds/ ../../rgbd_dataset_freiburg2_desk/sandbox_2/depth/ ../../rgbd_dataset_freiburg2_desk/sandbox_2/sift_correspondence.txt ../../rgbd_dataset_freiburg2_desk/sandbox_2/camera_para.txt 4.0 ../../rgbd_dataset_freiburg2_desk/sandbox_2/sift_traj.txt ../../rgbd_dataset_freiburg2_desk/sandbox_2/sift_info.txt 9 | ::ShiTomasi matching 10 | ..\ColorCorrespondence.exe ../../rgbd_dataset_freiburg2_desk/sandbox_2/pointcloud/ ../../rgbd_dataset_freiburg2_desk/sandbox_2/pointcloud_ds/ ../../rgbd_dataset_freiburg2_desk/sandbox_2/depth/ ../../rgbd_dataset_freiburg2_desk/sandbox_2/corner_correspondence.txt ../../rgbd_dataset_freiburg2_desk/sandbox_2/camera_para.txt 4.0 ../../rgbd_dataset_freiburg2_desk/sandbox_2/corner_traj.txt ../../rgbd_dataset_freiburg2_desk/sandbox_2/corner_info.txt 11 | ..\GeometricCorrespondence.exe ../../rgbd_dataset_freiburg2_desk/sandbox_2/pointcloud/ ../../rgbd_dataset_freiburg2_desk/sandbox_2/pointcloud_ds/ ../../rgbd_dataset_freiburg2_desk/sandbox_2/keypoint/ ../../rgbd_dataset_freiburg2_desk/sandbox_2/geometric_descriptor/ ../../rgbd_dataset_freiburg2_desk/sandbox_2/camera_para.txt 4.0 ../../rgbd_dataset_freiburg2_desk/sandbox_2/narf_traj.txt ../../rgbd_dataset_freiburg2_desk/sandbox_2/narf_info.txt 12 | ..\MergeInfo.exe ../../rgbd_dataset_freiburg2_desk/sandbox_2/pointcloud_ds/ ../../rgbd_dataset_freiburg2_desk/sandbox_2/narf_traj.txt ../../rgbd_dataset_freiburg2_desk/sandbox_2/narf_info.txt ../../rgbd_dataset_freiburg2_desk/sandbox_2/sift_traj.txt ../../rgbd_dataset_freiburg2_desk/sandbox_2/sift_info.txt ../../rgbd_dataset_freiburg2_desk/sandbox_2/corner_traj.txt ../../rgbd_dataset_freiburg2_desk/sandbox_2/corner_info.txt ../../rgbd_dataset_freiburg2_desk/sandbox_2/traj.txt ../../rgbd_dataset_freiburg2_desk/sandbox_2/info.txt 13 | ..\GlobalOptimizer1.exe ../../rgbd_dataset_freiburg2_desk/sandbox_2/pointcloud/ ../../rgbd_dataset_freiburg2_desk/sandbox_2/traj.txt ../../rgbd_dataset_freiburg2_desk/sandbox_2/info.txt ../../rgbd_dataset_freiburg2_desk/sandbox_2/pose_opt1.txt ../../rgbd_dataset_freiburg2_desk/sandbox_2/fail_build_complete_model.txt ../../rgbd_dataset_freiburg2_desk/sandbox_2/selected_edge_opt1.txt 0.35 0.5 0.35 0.001 14 | if exist ../../rgbd_dataset_freiburg2_desk/sandbox_2/fail_build_complete_model.txt goto OVER 15 | ..\GlobalOptimizer2.exe ../../rgbd_dataset_freiburg2_desk/sandbox_2/pose_opt1.txt ../../rgbd_dataset_freiburg2_desk/sandbox_2/pointcloud/ ../../rgbd_dataset_freiburg2_desk/sandbox_2/traj.txt ../../rgbd_dataset_freiburg2_desk/sandbox_2/info.txt ../../rgbd_dataset_freiburg2_desk/sandbox_2/pose_opt2.txt ../../rgbd_dataset_freiburg2_desk/sandbox_2/traj_remain_opt2.txt ../../rgbd_dataset_freiburg2_desk/sandbox_2/info_remain_opt2.txt 50.0 16 | :OVER -------------------------------------------------------------------------------- /run_bat/fr2_desk/run_20.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | cd /d %~dp0 3 | ..\Png2Cloud.exe ../../rgbd_dataset_freiburg2_desk/sandbox_20/depth/ ../../rgbd_dataset_freiburg2_desk/sandbox_20/color/ ../../rgbd_dataset_freiburg2_desk/sandbox_20/camera_para.txt ../../rgbd_dataset_freiburg2_desk/sandbox_20/pointcloud/ ../../rgbd_dataset_freiburg2_desk/sandbox_20/pointcloud_ds/ ../../rgbd_dataset_freiburg2_desk/sandbox_20/pointcloud_xyzn/ ../../rgbd_dataset_freiburg2_desk/sandbox_20/pointcloud_ds_xyzn/ 4 | ..\Sift.exe ../../rgbd_dataset_freiburg2_desk/sandbox_20/color/ ../../rgbd_dataset_freiburg2_desk/sandbox_20/sift_correspondence.txt 5 | ..\ShiTomasi.exe ../../rgbd_dataset_freiburg2_desk/sandbox_20/color/ ../../rgbd_dataset_freiburg2_desk/sandbox_20/corner_correspondence.txt 6 | ..\Narf.exe ../../rgbd_dataset_freiburg2_desk/sandbox_20/pointcloud_xyzn/ ../../rgbd_dataset_freiburg2_desk/sandbox_20/keypoint/ ../../rgbd_dataset_freiburg2_desk/sandbox_20/geometric_descriptor/ 7 | ::SIFT matching 8 | ..\ColorCorrespondence.exe ../../rgbd_dataset_freiburg2_desk/sandbox_20/pointcloud/ ../../rgbd_dataset_freiburg2_desk/sandbox_20/pointcloud_ds/ ../../rgbd_dataset_freiburg2_desk/sandbox_20/depth/ ../../rgbd_dataset_freiburg2_desk/sandbox_20/sift_correspondence.txt ../../rgbd_dataset_freiburg2_desk/sandbox_20/camera_para.txt 4.0 ../../rgbd_dataset_freiburg2_desk/sandbox_20/sift_traj.txt ../../rgbd_dataset_freiburg2_desk/sandbox_20/sift_info.txt 9 | ::ShiTomasi matching 10 | ..\ColorCorrespondence.exe ../../rgbd_dataset_freiburg2_desk/sandbox_20/pointcloud/ ../../rgbd_dataset_freiburg2_desk/sandbox_20/pointcloud_ds/ ../../rgbd_dataset_freiburg2_desk/sandbox_20/depth/ ../../rgbd_dataset_freiburg2_desk/sandbox_20/corner_correspondence.txt ../../rgbd_dataset_freiburg2_desk/sandbox_20/camera_para.txt 4.0 ../../rgbd_dataset_freiburg2_desk/sandbox_20/corner_traj.txt ../../rgbd_dataset_freiburg2_desk/sandbox_20/corner_info.txt 11 | ..\GeometricCorrespondence.exe ../../rgbd_dataset_freiburg2_desk/sandbox_20/pointcloud/ ../../rgbd_dataset_freiburg2_desk/sandbox_20/pointcloud_ds/ ../../rgbd_dataset_freiburg2_desk/sandbox_20/keypoint/ ../../rgbd_dataset_freiburg2_desk/sandbox_20/geometric_descriptor/ ../../rgbd_dataset_freiburg2_desk/sandbox_20/camera_para.txt 4.0 ../../rgbd_dataset_freiburg2_desk/sandbox_20/narf_traj.txt ../../rgbd_dataset_freiburg2_desk/sandbox_20/narf_info.txt 12 | ..\MergeInfo.exe ../../rgbd_dataset_freiburg2_desk/sandbox_20/pointcloud_ds/ ../../rgbd_dataset_freiburg2_desk/sandbox_20/narf_traj.txt ../../rgbd_dataset_freiburg2_desk/sandbox_20/narf_info.txt ../../rgbd_dataset_freiburg2_desk/sandbox_20/sift_traj.txt ../../rgbd_dataset_freiburg2_desk/sandbox_20/sift_info.txt ../../rgbd_dataset_freiburg2_desk/sandbox_20/corner_traj.txt ../../rgbd_dataset_freiburg2_desk/sandbox_20/corner_info.txt ../../rgbd_dataset_freiburg2_desk/sandbox_20/traj.txt ../../rgbd_dataset_freiburg2_desk/sandbox_20/info.txt 13 | ..\GlobalOptimizer1.exe ../../rgbd_dataset_freiburg2_desk/sandbox_20/pointcloud/ ../../rgbd_dataset_freiburg2_desk/sandbox_20/traj.txt ../../rgbd_dataset_freiburg2_desk/sandbox_20/info.txt ../../rgbd_dataset_freiburg2_desk/sandbox_20/pose_opt1.txt ../../rgbd_dataset_freiburg2_desk/sandbox_20/fail_build_complete_model.txt ../../rgbd_dataset_freiburg2_desk/sandbox_20/selected_edge_opt1.txt 0.3 0.5 0.3 0.004 14 | if exist ../../rgbd_dataset_freiburg2_desk/sandbox_20/fail_build_complete_model.txt goto OVER 15 | ..\GlobalOptimizer2.exe ../../rgbd_dataset_freiburg2_desk/sandbox_20/pose_opt1.txt ../../rgbd_dataset_freiburg2_desk/sandbox_20/pointcloud/ ../../rgbd_dataset_freiburg2_desk/sandbox_20/traj.txt ../../rgbd_dataset_freiburg2_desk/sandbox_20/info.txt ../../rgbd_dataset_freiburg2_desk/sandbox_20/pose_opt2.txt ../../rgbd_dataset_freiburg2_desk/sandbox_20/traj_remain_opt2.txt ../../rgbd_dataset_freiburg2_desk/sandbox_20/info_remain_opt2.txt 50.0 16 | :OVER -------------------------------------------------------------------------------- /run_bat/fr2_desk/run_25.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | cd /d %~dp0 3 | ..\Png2Cloud.exe ../../rgbd_dataset_freiburg2_desk/sandbox_25/depth/ ../../rgbd_dataset_freiburg2_desk/sandbox_25/color/ ../../rgbd_dataset_freiburg2_desk/sandbox_25/camera_para.txt ../../rgbd_dataset_freiburg2_desk/sandbox_25/pointcloud/ ../../rgbd_dataset_freiburg2_desk/sandbox_25/pointcloud_ds/ ../../rgbd_dataset_freiburg2_desk/sandbox_25/pointcloud_xyzn/ ../../rgbd_dataset_freiburg2_desk/sandbox_25/pointcloud_ds_xyzn/ 4 | ..\Sift.exe ../../rgbd_dataset_freiburg2_desk/sandbox_25/color/ ../../rgbd_dataset_freiburg2_desk/sandbox_25/sift_correspondence.txt 5 | ..\ShiTomasi.exe ../../rgbd_dataset_freiburg2_desk/sandbox_25/color/ ../../rgbd_dataset_freiburg2_desk/sandbox_25/corner_correspondence.txt 6 | ..\Narf.exe ../../rgbd_dataset_freiburg2_desk/sandbox_25/pointcloud_xyzn/ ../../rgbd_dataset_freiburg2_desk/sandbox_25/keypoint/ ../../rgbd_dataset_freiburg2_desk/sandbox_25/geometric_descriptor/ 7 | ::SIFT matching 8 | ..\ColorCorrespondence.exe ../../rgbd_dataset_freiburg2_desk/sandbox_25/pointcloud/ ../../rgbd_dataset_freiburg2_desk/sandbox_25/pointcloud_ds/ ../../rgbd_dataset_freiburg2_desk/sandbox_25/depth/ ../../rgbd_dataset_freiburg2_desk/sandbox_25/sift_correspondence.txt ../../rgbd_dataset_freiburg2_desk/sandbox_25/camera_para.txt 4.0 ../../rgbd_dataset_freiburg2_desk/sandbox_25/sift_traj.txt ../../rgbd_dataset_freiburg2_desk/sandbox_25/sift_info.txt 9 | ::ShiTomasi matching 10 | ..\ColorCorrespondence.exe ../../rgbd_dataset_freiburg2_desk/sandbox_25/pointcloud/ ../../rgbd_dataset_freiburg2_desk/sandbox_25/pointcloud_ds/ ../../rgbd_dataset_freiburg2_desk/sandbox_25/depth/ ../../rgbd_dataset_freiburg2_desk/sandbox_25/corner_correspondence.txt ../../rgbd_dataset_freiburg2_desk/sandbox_25/camera_para.txt 4.0 ../../rgbd_dataset_freiburg2_desk/sandbox_25/corner_traj.txt ../../rgbd_dataset_freiburg2_desk/sandbox_25/corner_info.txt 11 | ..\GeometricCorrespondence.exe ../../rgbd_dataset_freiburg2_desk/sandbox_25/pointcloud/ ../../rgbd_dataset_freiburg2_desk/sandbox_25/pointcloud_ds/ ../../rgbd_dataset_freiburg2_desk/sandbox_25/keypoint/ ../../rgbd_dataset_freiburg2_desk/sandbox_25/geometric_descriptor/ ../../rgbd_dataset_freiburg2_desk/sandbox_25/camera_para.txt 4.0 ../../rgbd_dataset_freiburg2_desk/sandbox_25/narf_traj.txt ../../rgbd_dataset_freiburg2_desk/sandbox_25/narf_info.txt 12 | ..\MergeInfo.exe ../../rgbd_dataset_freiburg2_desk/sandbox_25/pointcloud_ds/ ../../rgbd_dataset_freiburg2_desk/sandbox_25/narf_traj.txt ../../rgbd_dataset_freiburg2_desk/sandbox_25/narf_info.txt ../../rgbd_dataset_freiburg2_desk/sandbox_25/sift_traj.txt ../../rgbd_dataset_freiburg2_desk/sandbox_25/sift_info.txt ../../rgbd_dataset_freiburg2_desk/sandbox_25/corner_traj.txt ../../rgbd_dataset_freiburg2_desk/sandbox_25/corner_info.txt ../../rgbd_dataset_freiburg2_desk/sandbox_25/traj.txt ../../rgbd_dataset_freiburg2_desk/sandbox_25/info.txt 13 | ..\GlobalOptimizer1.exe ../../rgbd_dataset_freiburg2_desk/sandbox_25/pointcloud/ ../../rgbd_dataset_freiburg2_desk/sandbox_25/traj.txt ../../rgbd_dataset_freiburg2_desk/sandbox_25/info.txt ../../rgbd_dataset_freiburg2_desk/sandbox_25/pose_opt1.txt ../../rgbd_dataset_freiburg2_desk/sandbox_25/fail_build_complete_model.txt ../../rgbd_dataset_freiburg2_desk/sandbox_25/selected_edge_opt1.txt 0.3 0.5 0.3 0.005 14 | if exist ../../rgbd_dataset_freiburg2_desk/sandbox_25/fail_build_complete_model.txt goto OVER 15 | ..\GlobalOptimizer2.exe ../../rgbd_dataset_freiburg2_desk/sandbox_25/pose_opt1.txt ../../rgbd_dataset_freiburg2_desk/sandbox_25/pointcloud/ ../../rgbd_dataset_freiburg2_desk/sandbox_25/traj.txt ../../rgbd_dataset_freiburg2_desk/sandbox_25/info.txt ../../rgbd_dataset_freiburg2_desk/sandbox_25/pose_opt2.txt ../../rgbd_dataset_freiburg2_desk/sandbox_25/traj_remain_opt2.txt ../../rgbd_dataset_freiburg2_desk/sandbox_25/info_remain_opt2.txt 50.0 16 | :OVER -------------------------------------------------------------------------------- /run_bat/fr2_desk/run_3.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | cd /d %~dp0 3 | ..\Png2Cloud.exe ../../rgbd_dataset_freiburg2_desk/sandbox_3/depth/ ../../rgbd_dataset_freiburg2_desk/sandbox_3/color/ ../../rgbd_dataset_freiburg2_desk/sandbox_3/camera_para.txt ../../rgbd_dataset_freiburg2_desk/sandbox_3/pointcloud/ ../../rgbd_dataset_freiburg2_desk/sandbox_3/pointcloud_ds/ ../../rgbd_dataset_freiburg2_desk/sandbox_3/pointcloud_xyzn/ ../../rgbd_dataset_freiburg2_desk/sandbox_3/pointcloud_ds_xyzn/ 4 | ..\Sift.exe ../../rgbd_dataset_freiburg2_desk/sandbox_3/color/ ../../rgbd_dataset_freiburg2_desk/sandbox_3/sift_correspondence.txt 5 | ..\ShiTomasi.exe ../../rgbd_dataset_freiburg2_desk/sandbox_3/color/ ../../rgbd_dataset_freiburg2_desk/sandbox_3/corner_correspondence.txt 6 | ..\Narf.exe ../../rgbd_dataset_freiburg2_desk/sandbox_3/pointcloud_xyzn/ ../../rgbd_dataset_freiburg2_desk/sandbox_3/keypoint/ ../../rgbd_dataset_freiburg2_desk/sandbox_3/geometric_descriptor/ 7 | ::SIFT matching 8 | ..\ColorCorrespondence.exe ../../rgbd_dataset_freiburg2_desk/sandbox_3/pointcloud/ ../../rgbd_dataset_freiburg2_desk/sandbox_3/pointcloud_ds/ ../../rgbd_dataset_freiburg2_desk/sandbox_3/depth/ ../../rgbd_dataset_freiburg2_desk/sandbox_3/sift_correspondence.txt ../../rgbd_dataset_freiburg2_desk/sandbox_3/camera_para.txt 4.0 ../../rgbd_dataset_freiburg2_desk/sandbox_3/sift_traj.txt ../../rgbd_dataset_freiburg2_desk/sandbox_3/sift_info.txt 9 | ::ShiTomasi matching 10 | ..\ColorCorrespondence.exe ../../rgbd_dataset_freiburg2_desk/sandbox_3/pointcloud/ ../../rgbd_dataset_freiburg2_desk/sandbox_3/pointcloud_ds/ ../../rgbd_dataset_freiburg2_desk/sandbox_3/depth/ ../../rgbd_dataset_freiburg2_desk/sandbox_3/corner_correspondence.txt ../../rgbd_dataset_freiburg2_desk/sandbox_3/camera_para.txt 4.0 ../../rgbd_dataset_freiburg2_desk/sandbox_3/corner_traj.txt ../../rgbd_dataset_freiburg2_desk/sandbox_3/corner_info.txt 11 | ..\GeometricCorrespondence.exe ../../rgbd_dataset_freiburg2_desk/sandbox_3/pointcloud/ ../../rgbd_dataset_freiburg2_desk/sandbox_3/pointcloud_ds/ ../../rgbd_dataset_freiburg2_desk/sandbox_3/keypoint/ ../../rgbd_dataset_freiburg2_desk/sandbox_3/geometric_descriptor/ ../../rgbd_dataset_freiburg2_desk/sandbox_3/camera_para.txt 4.0 ../../rgbd_dataset_freiburg2_desk/sandbox_3/narf_traj.txt ../../rgbd_dataset_freiburg2_desk/sandbox_3/narf_info.txt 12 | ..\MergeInfo.exe ../../rgbd_dataset_freiburg2_desk/sandbox_3/pointcloud_ds/ ../../rgbd_dataset_freiburg2_desk/sandbox_3/narf_traj.txt ../../rgbd_dataset_freiburg2_desk/sandbox_3/narf_info.txt ../../rgbd_dataset_freiburg2_desk/sandbox_3/sift_traj.txt ../../rgbd_dataset_freiburg2_desk/sandbox_3/sift_info.txt ../../rgbd_dataset_freiburg2_desk/sandbox_3/corner_traj.txt ../../rgbd_dataset_freiburg2_desk/sandbox_3/corner_info.txt ../../rgbd_dataset_freiburg2_desk/sandbox_3/traj.txt ../../rgbd_dataset_freiburg2_desk/sandbox_3/info.txt 13 | ..\GlobalOptimizer1.exe ../../rgbd_dataset_freiburg2_desk/sandbox_3/pointcloud/ ../../rgbd_dataset_freiburg2_desk/sandbox_3/traj.txt ../../rgbd_dataset_freiburg2_desk/sandbox_3/info.txt ../../rgbd_dataset_freiburg2_desk/sandbox_3/pose_opt1.txt ../../rgbd_dataset_freiburg2_desk/sandbox_3/fail_build_complete_model.txt ../../rgbd_dataset_freiburg2_desk/sandbox_3/selected_edge_opt1.txt 0.35 0.5 0.35 0.001 14 | if exist ../../rgbd_dataset_freiburg2_desk/sandbox_3/fail_build_complete_model.txt goto OVER 15 | ..\GlobalOptimizer2.exe ../../rgbd_dataset_freiburg2_desk/sandbox_3/pose_opt1.txt ../../rgbd_dataset_freiburg2_desk/sandbox_3/pointcloud/ ../../rgbd_dataset_freiburg2_desk/sandbox_3/traj.txt ../../rgbd_dataset_freiburg2_desk/sandbox_3/info.txt ../../rgbd_dataset_freiburg2_desk/sandbox_3/pose_opt2.txt ../../rgbd_dataset_freiburg2_desk/sandbox_3/traj_remain_opt2.txt ../../rgbd_dataset_freiburg2_desk/sandbox_3/info_remain_opt2.txt 50.0 16 | :OVER -------------------------------------------------------------------------------- /run_bat/fr2_desk/run_5.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | cd /d %~dp0 3 | ..\Png2Cloud.exe ../../rgbd_dataset_freiburg2_desk/sandbox_5/depth/ ../../rgbd_dataset_freiburg2_desk/sandbox_5/color/ ../../rgbd_dataset_freiburg2_desk/sandbox_5/camera_para.txt ../../rgbd_dataset_freiburg2_desk/sandbox_5/pointcloud/ ../../rgbd_dataset_freiburg2_desk/sandbox_5/pointcloud_ds/ ../../rgbd_dataset_freiburg2_desk/sandbox_5/pointcloud_xyzn/ ../../rgbd_dataset_freiburg2_desk/sandbox_5/pointcloud_ds_xyzn/ 4 | ..\Sift.exe ../../rgbd_dataset_freiburg2_desk/sandbox_5/color/ ../../rgbd_dataset_freiburg2_desk/sandbox_5/sift_correspondence.txt 5 | ..\ShiTomasi.exe ../../rgbd_dataset_freiburg2_desk/sandbox_5/color/ ../../rgbd_dataset_freiburg2_desk/sandbox_5/corner_correspondence.txt 6 | ..\Narf.exe ../../rgbd_dataset_freiburg2_desk/sandbox_5/pointcloud_xyzn/ ../../rgbd_dataset_freiburg2_desk/sandbox_5/keypoint/ ../../rgbd_dataset_freiburg2_desk/sandbox_5/geometric_descriptor/ 7 | ::SIFT matching 8 | ..\ColorCorrespondence.exe ../../rgbd_dataset_freiburg2_desk/sandbox_5/pointcloud/ ../../rgbd_dataset_freiburg2_desk/sandbox_5/pointcloud_ds/ ../../rgbd_dataset_freiburg2_desk/sandbox_5/depth/ ../../rgbd_dataset_freiburg2_desk/sandbox_5/sift_correspondence.txt ../../rgbd_dataset_freiburg2_desk/sandbox_5/camera_para.txt 4.0 ../../rgbd_dataset_freiburg2_desk/sandbox_5/sift_traj.txt ../../rgbd_dataset_freiburg2_desk/sandbox_5/sift_info.txt 9 | ::ShiTomasi matching 10 | ..\ColorCorrespondence.exe ../../rgbd_dataset_freiburg2_desk/sandbox_5/pointcloud/ ../../rgbd_dataset_freiburg2_desk/sandbox_5/pointcloud_ds/ ../../rgbd_dataset_freiburg2_desk/sandbox_5/depth/ ../../rgbd_dataset_freiburg2_desk/sandbox_5/corner_correspondence.txt ../../rgbd_dataset_freiburg2_desk/sandbox_5/camera_para.txt 4.0 ../../rgbd_dataset_freiburg2_desk/sandbox_5/corner_traj.txt ../../rgbd_dataset_freiburg2_desk/sandbox_5/corner_info.txt 11 | ..\GeometricCorrespondence.exe ../../rgbd_dataset_freiburg2_desk/sandbox_5/pointcloud/ ../../rgbd_dataset_freiburg2_desk/sandbox_5/pointcloud_ds/ ../../rgbd_dataset_freiburg2_desk/sandbox_5/keypoint/ ../../rgbd_dataset_freiburg2_desk/sandbox_5/geometric_descriptor/ ../../rgbd_dataset_freiburg2_desk/sandbox_5/camera_para.txt 4.0 ../../rgbd_dataset_freiburg2_desk/sandbox_5/narf_traj.txt ../../rgbd_dataset_freiburg2_desk/sandbox_5/narf_info.txt 12 | ..\MergeInfo.exe ../../rgbd_dataset_freiburg2_desk/sandbox_5/pointcloud_ds/ ../../rgbd_dataset_freiburg2_desk/sandbox_5/narf_traj.txt ../../rgbd_dataset_freiburg2_desk/sandbox_5/narf_info.txt ../../rgbd_dataset_freiburg2_desk/sandbox_5/sift_traj.txt ../../rgbd_dataset_freiburg2_desk/sandbox_5/sift_info.txt ../../rgbd_dataset_freiburg2_desk/sandbox_5/corner_traj.txt ../../rgbd_dataset_freiburg2_desk/sandbox_5/corner_info.txt ../../rgbd_dataset_freiburg2_desk/sandbox_5/traj.txt ../../rgbd_dataset_freiburg2_desk/sandbox_5/info.txt 13 | ..\GlobalOptimizer1.exe ../../rgbd_dataset_freiburg2_desk/sandbox_5/pointcloud/ ../../rgbd_dataset_freiburg2_desk/sandbox_5/traj.txt ../../rgbd_dataset_freiburg2_desk/sandbox_5/info.txt ../../rgbd_dataset_freiburg2_desk/sandbox_5/pose_opt1.txt ../../rgbd_dataset_freiburg2_desk/sandbox_5/fail_build_complete_model.txt ../../rgbd_dataset_freiburg2_desk/sandbox_5/selected_edge_opt1.txt 0.35 0.5 0.35 0.001 14 | if exist ../../rgbd_dataset_freiburg2_desk/sandbox_5/fail_build_complete_model.txt goto OVER 15 | ..\GlobalOptimizer2.exe ../../rgbd_dataset_freiburg2_desk/sandbox_5/pose_opt1.txt ../../rgbd_dataset_freiburg2_desk/sandbox_5/pointcloud/ ../../rgbd_dataset_freiburg2_desk/sandbox_5/traj.txt ../../rgbd_dataset_freiburg2_desk/sandbox_5/info.txt ../../rgbd_dataset_freiburg2_desk/sandbox_5/pose_opt2.txt ../../rgbd_dataset_freiburg2_desk/sandbox_5/traj_remain_opt2.txt ../../rgbd_dataset_freiburg2_desk/sandbox_5/info_remain_opt2.txt 50.0 16 | :OVER -------------------------------------------------------------------------------- /run_bat/fr3_office/run_10.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | cd /d %~dp0 3 | ..\Png2Cloud.exe ../../rgbd_dataset_freiburg3_long_office_household/sandbox_10/depth/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_10/color/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_10/camera_para.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_10/pointcloud/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_10/pointcloud_ds/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_10/pointcloud_xyzn/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_10/pointcloud_ds_xyzn/ 4 | ..\Sift.exe ../../rgbd_dataset_freiburg3_long_office_household/sandbox_10/color/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_10/sift_correspondence.txt 5 | ..\ShiTomasi.exe ../../rgbd_dataset_freiburg3_long_office_household/sandbox_10/color/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_10/corner_correspondence.txt 6 | ..\Narf.exe ../../rgbd_dataset_freiburg3_long_office_household/sandbox_10/pointcloud_xyzn/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_10/keypoint/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_10/geometric_descriptor/ 7 | ::SIFT matching 8 | ..\ColorCorrespondence.exe ../../rgbd_dataset_freiburg3_long_office_household/sandbox_10/pointcloud/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_10/pointcloud_ds/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_10/depth/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_10/sift_correspondence.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_10/camera_para.txt 4.0 ../../rgbd_dataset_freiburg3_long_office_household/sandbox_10/sift_traj.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_10/sift_info.txt 9 | ::ShiTomasi matching 10 | ..\ColorCorrespondence.exe ../../rgbd_dataset_freiburg3_long_office_household/sandbox_10/pointcloud/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_10/pointcloud_ds/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_10/depth/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_10/corner_correspondence.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_10/camera_para.txt 4.0 ../../rgbd_dataset_freiburg3_long_office_household/sandbox_10/corner_traj.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_10/corner_info.txt 11 | ..\GeometricCorrespondence.exe ../../rgbd_dataset_freiburg3_long_office_household/sandbox_10/pointcloud/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_10/pointcloud_ds/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_10/keypoint/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_10/geometric_descriptor/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_10/camera_para.txt 4.0 ../../rgbd_dataset_freiburg3_long_office_household/sandbox_10/narf_traj.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_10/narf_info.txt 12 | ..\MergeInfo.exe ../../rgbd_dataset_freiburg3_long_office_household/sandbox_10/pointcloud_ds/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_10/narf_traj.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_10/narf_info.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_10/sift_traj.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_10/sift_info.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_10/corner_traj.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_10/corner_info.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_10/traj.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_10/info.txt 13 | ..\GlobalOptimizer1.exe ../../rgbd_dataset_freiburg3_long_office_household/sandbox_10/pointcloud/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_10/traj.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_10/info.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_10/pose_opt1.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_10/fail_build_complete_model.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_10/selected_edge_opt1.txt 0.35 0.55 0.3 0.001 14 | if exist ../../rgbd_dataset_freiburg3_long_office_household/sandbox_10/fail_build_complete_model.txt goto OVER 15 | ..\GlobalOptimizer2.exe ../../rgbd_dataset_freiburg3_long_office_household/sandbox_10/pose_opt1.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_10/pointcloud/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_10/traj.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_10/info.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_10/pose_opt2.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_10/traj_remain_opt2.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_10/info_remain_opt2.txt 50.0 16 | :OVER -------------------------------------------------------------------------------- /run_bat/fr3_office/run_15.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | cd /d %~dp0 3 | ..\Png2Cloud.exe ../../rgbd_dataset_freiburg3_long_office_household/sandbox_15/depth/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_15/color/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_15/camera_para.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_15/pointcloud/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_15/pointcloud_ds/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_15/pointcloud_xyzn/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_15/pointcloud_ds_xyzn/ 4 | ..\Sift.exe ../../rgbd_dataset_freiburg3_long_office_household/sandbox_15/color/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_15/sift_correspondence.txt 5 | ..\ShiTomasi.exe ../../rgbd_dataset_freiburg3_long_office_household/sandbox_15/color/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_15/corner_correspondence.txt 6 | ..\Narf.exe ../../rgbd_dataset_freiburg3_long_office_household/sandbox_15/pointcloud_xyzn/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_15/keypoint/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_15/geometric_descriptor/ 7 | ::SIFT matching 8 | ..\ColorCorrespondence.exe ../../rgbd_dataset_freiburg3_long_office_household/sandbox_15/pointcloud/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_15/pointcloud_ds/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_15/depth/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_15/sift_correspondence.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_15/camera_para.txt 4.0 ../../rgbd_dataset_freiburg3_long_office_household/sandbox_15/sift_traj.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_15/sift_info.txt 9 | ::ShiTomasi matching 10 | ..\ColorCorrespondence.exe ../../rgbd_dataset_freiburg3_long_office_household/sandbox_15/pointcloud/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_15/pointcloud_ds/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_15/depth/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_15/corner_correspondence.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_15/camera_para.txt 4.0 ../../rgbd_dataset_freiburg3_long_office_household/sandbox_15/corner_traj.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_15/corner_info.txt 11 | ..\GeometricCorrespondence.exe ../../rgbd_dataset_freiburg3_long_office_household/sandbox_15/pointcloud/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_15/pointcloud_ds/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_15/keypoint/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_15/geometric_descriptor/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_15/camera_para.txt 4.0 ../../rgbd_dataset_freiburg3_long_office_household/sandbox_15/narf_traj.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_15/narf_info.txt 12 | ..\MergeInfo.exe ../../rgbd_dataset_freiburg3_long_office_household/sandbox_15/pointcloud_ds/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_15/narf_traj.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_15/narf_info.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_15/sift_traj.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_15/sift_info.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_15/corner_traj.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_15/corner_info.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_15/traj.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_15/info.txt 13 | ..\GlobalOptimizer1.exe ../../rgbd_dataset_freiburg3_long_office_household/sandbox_15/pointcloud/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_15/traj.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_15/info.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_15/pose_opt1.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_15/fail_build_complete_model.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_15/selected_edge_opt1.txt 0.35 0.55 0.3 0.001 14 | if exist ../../rgbd_dataset_freiburg3_long_office_household/sandbox_15/fail_build_complete_model.txt goto OVER 15 | ..\GlobalOptimizer2.exe ../../rgbd_dataset_freiburg3_long_office_household/sandbox_15/pose_opt1.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_15/pointcloud/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_15/traj.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_15/info.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_15/pose_opt2.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_15/traj_remain_opt2.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_15/info_remain_opt2.txt 50.0 16 | :OVER -------------------------------------------------------------------------------- /run_bat/fr3_office/run_2.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | cd /d %~dp0 3 | ..\Png2Cloud.exe ../../rgbd_dataset_freiburg3_long_office_household/sandbox_2/depth/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_2/color/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_2/camera_para.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_2/pointcloud/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_2/pointcloud_ds/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_2/pointcloud_xyzn/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_2/pointcloud_ds_xyzn/ 4 | ..\Sift.exe ../../rgbd_dataset_freiburg3_long_office_household/sandbox_2/color/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_2/sift_correspondence.txt 5 | ..\ShiTomasi.exe ../../rgbd_dataset_freiburg3_long_office_household/sandbox_2/color/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_2/corner_correspondence.txt 6 | ..\Narf.exe ../../rgbd_dataset_freiburg3_long_office_household/sandbox_2/pointcloud_xyzn/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_2/keypoint/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_2/geometric_descriptor/ 7 | ::SIFT matching 8 | ..\ColorCorrespondence.exe ../../rgbd_dataset_freiburg3_long_office_household/sandbox_2/pointcloud/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_2/pointcloud_ds/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_2/depth/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_2/sift_correspondence.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_2/camera_para.txt 4.0 ../../rgbd_dataset_freiburg3_long_office_household/sandbox_2/sift_traj.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_2/sift_info.txt 9 | ::ShiTomasi matching 10 | ..\ColorCorrespondence.exe ../../rgbd_dataset_freiburg3_long_office_household/sandbox_2/pointcloud/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_2/pointcloud_ds/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_2/depth/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_2/corner_correspondence.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_2/camera_para.txt 4.0 ../../rgbd_dataset_freiburg3_long_office_household/sandbox_2/corner_traj.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_2/corner_info.txt 11 | ..\GeometricCorrespondence.exe ../../rgbd_dataset_freiburg3_long_office_household/sandbox_2/pointcloud/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_2/pointcloud_ds/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_2/keypoint/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_2/geometric_descriptor/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_2/camera_para.txt 4.0 ../../rgbd_dataset_freiburg3_long_office_household/sandbox_2/narf_traj.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_2/narf_info.txt 12 | ..\MergeInfo.exe ../../rgbd_dataset_freiburg3_long_office_household/sandbox_2/pointcloud_ds/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_2/narf_traj.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_2/narf_info.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_2/sift_traj.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_2/sift_info.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_2/corner_traj.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_2/corner_info.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_2/traj.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_2/info.txt 13 | ..\GlobalOptimizer1.exe ../../rgbd_dataset_freiburg3_long_office_household/sandbox_2/pointcloud/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_2/traj.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_2/info.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_2/pose_opt1.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_2/fail_build_complete_model.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_2/selected_edge_opt1.txt 0.35 0.55 0.3 0.001 14 | if exist ../../rgbd_dataset_freiburg3_long_office_household/sandbox_2/fail_build_complete_model.txt goto OVER 15 | ..\GlobalOptimizer2.exe ../../rgbd_dataset_freiburg3_long_office_household/sandbox_2/pose_opt1.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_2/pointcloud/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_2/traj.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_2/info.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_2/pose_opt2.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_2/traj_remain_opt2.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_2/info_remain_opt2.txt 50.0 16 | :OVER -------------------------------------------------------------------------------- /run_bat/fr3_office/run_20.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | cd /d %~dp0 3 | ..\Png2Cloud.exe ../../rgbd_dataset_freiburg3_long_office_household/sandbox_20/depth/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_20/color/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_20/camera_para.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_20/pointcloud/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_20/pointcloud_ds/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_20/pointcloud_xyzn/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_20/pointcloud_ds_xyzn/ 4 | ..\Sift.exe ../../rgbd_dataset_freiburg3_long_office_household/sandbox_20/color/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_20/sift_correspondence.txt 5 | ..\ShiTomasi.exe ../../rgbd_dataset_freiburg3_long_office_household/sandbox_20/color/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_20/corner_correspondence.txt 6 | ..\Narf.exe ../../rgbd_dataset_freiburg3_long_office_household/sandbox_20/pointcloud_xyzn/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_20/keypoint/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_20/geometric_descriptor/ 7 | ::SIFT matching 8 | ..\ColorCorrespondence.exe ../../rgbd_dataset_freiburg3_long_office_household/sandbox_20/pointcloud/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_20/pointcloud_ds/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_20/depth/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_20/sift_correspondence.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_20/camera_para.txt 4.0 ../../rgbd_dataset_freiburg3_long_office_household/sandbox_20/sift_traj.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_20/sift_info.txt 9 | ::ShiTomasi matching 10 | ..\ColorCorrespondence.exe ../../rgbd_dataset_freiburg3_long_office_household/sandbox_20/pointcloud/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_20/pointcloud_ds/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_20/depth/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_20/corner_correspondence.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_20/camera_para.txt 4.0 ../../rgbd_dataset_freiburg3_long_office_household/sandbox_20/corner_traj.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_20/corner_info.txt 11 | ..\GeometricCorrespondence.exe ../../rgbd_dataset_freiburg3_long_office_household/sandbox_20/pointcloud/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_20/pointcloud_ds/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_20/keypoint/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_20/geometric_descriptor/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_20/camera_para.txt 4.0 ../../rgbd_dataset_freiburg3_long_office_household/sandbox_20/narf_traj.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_20/narf_info.txt 12 | ..\MergeInfo.exe ../../rgbd_dataset_freiburg3_long_office_household/sandbox_20/pointcloud_ds/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_20/narf_traj.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_20/narf_info.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_20/sift_traj.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_20/sift_info.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_20/corner_traj.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_20/corner_info.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_20/traj.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_20/info.txt 13 | ..\GlobalOptimizer1.exe ../../rgbd_dataset_freiburg3_long_office_household/sandbox_20/pointcloud/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_20/traj.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_20/info.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_20/pose_opt1.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_20/fail_build_complete_model.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_20/selected_edge_opt1.txt 0.3 0.5 0.3 0.005 14 | if exist ../../rgbd_dataset_freiburg3_long_office_household/sandbox_20/fail_build_complete_model.txt goto OVER 15 | ..\GlobalOptimizer2.exe ../../rgbd_dataset_freiburg3_long_office_household/sandbox_20/pose_opt1.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_20/pointcloud/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_20/traj.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_20/info.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_20/pose_opt2.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_20/traj_remain_opt2.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_20/info_remain_opt2.txt 50.0 16 | :OVER -------------------------------------------------------------------------------- /run_bat/fr3_office/run_25.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | cd /d %~dp0 3 | ..\Png2Cloud.exe ../../rgbd_dataset_freiburg3_long_office_household/sandbox_25/depth/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_25/color/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_25/camera_para.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_25/pointcloud/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_25/pointcloud_ds/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_25/pointcloud_xyzn/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_25/pointcloud_ds_xyzn/ 4 | ..\Sift.exe ../../rgbd_dataset_freiburg3_long_office_household/sandbox_25/color/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_25/sift_correspondence.txt 5 | ..\ShiTomasi.exe ../../rgbd_dataset_freiburg3_long_office_household/sandbox_25/color/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_25/corner_correspondence.txt 6 | ..\Narf.exe ../../rgbd_dataset_freiburg3_long_office_household/sandbox_25/pointcloud_xyzn/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_25/keypoint/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_25/geometric_descriptor/ 7 | ::SIFT matching 8 | ..\ColorCorrespondence.exe ../../rgbd_dataset_freiburg3_long_office_household/sandbox_25/pointcloud/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_25/pointcloud_ds/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_25/depth/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_25/sift_correspondence.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_25/camera_para.txt 4.0 ../../rgbd_dataset_freiburg3_long_office_household/sandbox_25/sift_traj.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_25/sift_info.txt 9 | ::ShiTomasi matching 10 | ..\ColorCorrespondence.exe ../../rgbd_dataset_freiburg3_long_office_household/sandbox_25/pointcloud/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_25/pointcloud_ds/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_25/depth/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_25/corner_correspondence.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_25/camera_para.txt 4.0 ../../rgbd_dataset_freiburg3_long_office_household/sandbox_25/corner_traj.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_25/corner_info.txt 11 | ..\GeometricCorrespondence.exe ../../rgbd_dataset_freiburg3_long_office_household/sandbox_25/pointcloud/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_25/pointcloud_ds/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_25/keypoint/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_25/geometric_descriptor/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_25/camera_para.txt 4.0 ../../rgbd_dataset_freiburg3_long_office_household/sandbox_25/narf_traj.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_25/narf_info.txt 12 | ..\MergeInfo.exe ../../rgbd_dataset_freiburg3_long_office_household/sandbox_25/pointcloud_ds/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_25/narf_traj.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_25/narf_info.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_25/sift_traj.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_25/sift_info.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_25/corner_traj.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_25/corner_info.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_25/traj.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_25/info.txt 13 | ..\GlobalOptimizer1.exe ../../rgbd_dataset_freiburg3_long_office_household/sandbox_25/pointcloud/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_25/traj.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_25/info.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_25/pose_opt1.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_25/fail_build_complete_model.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_25/selected_edge_opt1.txt 0.3 0.5 0.3 0.005 14 | if exist ../../rgbd_dataset_freiburg3_long_office_household/sandbox_25/fail_build_complete_model.txt goto OVER 15 | ..\GlobalOptimizer2.exe ../../rgbd_dataset_freiburg3_long_office_household/sandbox_25/pose_opt1.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_25/pointcloud/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_25/traj.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_25/info.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_25/pose_opt2.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_25/traj_remain_opt2.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_25/info_remain_opt2.txt 50.0 16 | :OVER -------------------------------------------------------------------------------- /run_bat/fr3_office/run_3.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | cd /d %~dp0 3 | ..\Png2Cloud.exe ../../rgbd_dataset_freiburg3_long_office_household/sandbox_3/depth/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_3/color/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_3/camera_para.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_3/pointcloud/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_3/pointcloud_ds/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_3/pointcloud_xyzn/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_3/pointcloud_ds_xyzn/ 4 | ..\Sift.exe ../../rgbd_dataset_freiburg3_long_office_household/sandbox_3/color/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_3/sift_correspondence.txt 5 | ..\ShiTomasi.exe ../../rgbd_dataset_freiburg3_long_office_household/sandbox_3/color/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_3/corner_correspondence.txt 6 | ..\Narf.exe ../../rgbd_dataset_freiburg3_long_office_household/sandbox_3/pointcloud_xyzn/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_3/keypoint/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_3/geometric_descriptor/ 7 | ::SIFT matching 8 | ..\ColorCorrespondence.exe ../../rgbd_dataset_freiburg3_long_office_household/sandbox_3/pointcloud/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_3/pointcloud_ds/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_3/depth/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_3/sift_correspondence.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_3/camera_para.txt 4.0 ../../rgbd_dataset_freiburg3_long_office_household/sandbox_3/sift_traj.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_3/sift_info.txt 9 | ::ShiTomasi matching 10 | ..\ColorCorrespondence.exe ../../rgbd_dataset_freiburg3_long_office_household/sandbox_3/pointcloud/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_3/pointcloud_ds/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_3/depth/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_3/corner_correspondence.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_3/camera_para.txt 4.0 ../../rgbd_dataset_freiburg3_long_office_household/sandbox_3/corner_traj.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_3/corner_info.txt 11 | ..\GeometricCorrespondence.exe ../../rgbd_dataset_freiburg3_long_office_household/sandbox_3/pointcloud/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_3/pointcloud_ds/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_3/keypoint/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_3/geometric_descriptor/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_3/camera_para.txt 4.0 ../../rgbd_dataset_freiburg3_long_office_household/sandbox_3/narf_traj.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_3/narf_info.txt 12 | ..\MergeInfo.exe ../../rgbd_dataset_freiburg3_long_office_household/sandbox_3/pointcloud_ds/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_3/narf_traj.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_3/narf_info.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_3/sift_traj.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_3/sift_info.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_3/corner_traj.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_3/corner_info.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_3/traj.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_3/info.txt 13 | ..\GlobalOptimizer1.exe ../../rgbd_dataset_freiburg3_long_office_household/sandbox_3/pointcloud/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_3/traj.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_3/info.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_3/pose_opt1.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_3/fail_build_complete_model.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_3/selected_edge_opt1.txt 0.35 0.55 0.3 0.001 14 | if exist ../../rgbd_dataset_freiburg3_long_office_household/sandbox_3/fail_build_complete_model.txt goto OVER 15 | ..\GlobalOptimizer2.exe ../../rgbd_dataset_freiburg3_long_office_household/sandbox_3/pose_opt1.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_3/pointcloud/ ../../rgbd_dataset_freiburg3_long_office_household/sandbox_3/traj.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_3/info.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_3/pose_opt2.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_3/traj_remain_opt2.txt ../../rgbd_dataset_freiburg3_long_office_household/sandbox_3/info_remain_opt2.txt 50.0 16 | :OVER -------------------------------------------------------------------------------- /run_bat/fr3_office/run_5.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | cd /d %~dp0 3 | ..\Png2Cloud.exe ../../rgbd_dataset_freiburg2_desk/sandbox_5/depth/ ../../rgbd_dataset_freiburg2_desk/sandbox_5/color/ ../../rgbd_dataset_freiburg2_desk/sandbox_5/camera_para.txt ../../rgbd_dataset_freiburg2_desk/sandbox_5/pointcloud/ ../../rgbd_dataset_freiburg2_desk/sandbox_5/pointcloud_ds/ ../../rgbd_dataset_freiburg2_desk/sandbox_5/pointcloud_xyzn/ ../../rgbd_dataset_freiburg2_desk/sandbox_5/pointcloud_ds_xyzn/ 4 | ..\Sift.exe ../../rgbd_dataset_freiburg2_desk/sandbox_5/color/ ../../rgbd_dataset_freiburg2_desk/sandbox_5/sift_correspondence.txt 5 | ..\ShiTomasi.exe ../../rgbd_dataset_freiburg2_desk/sandbox_5/color/ ../../rgbd_dataset_freiburg2_desk/sandbox_5/corner_correspondence.txt 6 | ..\Narf.exe ../../rgbd_dataset_freiburg2_desk/sandbox_5/pointcloud_xyzn/ ../../rgbd_dataset_freiburg2_desk/sandbox_5/keypoint/ ../../rgbd_dataset_freiburg2_desk/sandbox_5/geometric_descriptor/ 7 | ::SIFT matching 8 | ..\ColorCorrespondence.exe ../../rgbd_dataset_freiburg2_desk/sandbox_5/pointcloud/ ../../rgbd_dataset_freiburg2_desk/sandbox_5/pointcloud_ds/ ../../rgbd_dataset_freiburg2_desk/sandbox_5/depth/ ../../rgbd_dataset_freiburg2_desk/sandbox_5/sift_correspondence.txt ../../rgbd_dataset_freiburg2_desk/sandbox_5/camera_para.txt 4.0 ../../rgbd_dataset_freiburg2_desk/sandbox_5/sift_traj.txt ../../rgbd_dataset_freiburg2_desk/sandbox_5/sift_info.txt 9 | ::ShiTomasi matching 10 | ..\ColorCorrespondence.exe ../../rgbd_dataset_freiburg2_desk/sandbox_5/pointcloud/ ../../rgbd_dataset_freiburg2_desk/sandbox_5/pointcloud_ds/ ../../rgbd_dataset_freiburg2_desk/sandbox_5/depth/ ../../rgbd_dataset_freiburg2_desk/sandbox_5/corner_correspondence.txt ../../rgbd_dataset_freiburg2_desk/sandbox_5/camera_para.txt 4.0 ../../rgbd_dataset_freiburg2_desk/sandbox_5/corner_traj.txt ../../rgbd_dataset_freiburg2_desk/sandbox_5/corner_info.txt 11 | ..\GeometricCorrespondence.exe ../../rgbd_dataset_freiburg2_desk/sandbox_5/pointcloud/ ../../rgbd_dataset_freiburg2_desk/sandbox_5/pointcloud_ds/ ../../rgbd_dataset_freiburg2_desk/sandbox_5/keypoint/ ../../rgbd_dataset_freiburg2_desk/sandbox_5/geometric_descriptor/ ../../rgbd_dataset_freiburg2_desk/sandbox_5/camera_para.txt 4.0 ../../rgbd_dataset_freiburg2_desk/sandbox_5/narf_traj.txt ../../rgbd_dataset_freiburg2_desk/sandbox_5/narf_info.txt 12 | ..\MergeInfo.exe ../../rgbd_dataset_freiburg2_desk/sandbox_5/pointcloud_ds/ ../../rgbd_dataset_freiburg2_desk/sandbox_5/narf_traj.txt ../../rgbd_dataset_freiburg2_desk/sandbox_5/narf_info.txt ../../rgbd_dataset_freiburg2_desk/sandbox_5/sift_traj.txt ../../rgbd_dataset_freiburg2_desk/sandbox_5/sift_info.txt ../../rgbd_dataset_freiburg2_desk/sandbox_5/corner_traj.txt ../../rgbd_dataset_freiburg2_desk/sandbox_5/corner_info.txt ../../rgbd_dataset_freiburg2_desk/sandbox_5/traj.txt ../../rgbd_dataset_freiburg2_desk/sandbox_5/info.txt 13 | ..\GlobalOptimizer1.exe ../../rgbd_dataset_freiburg2_desk/sandbox_5/pointcloud/ ../../rgbd_dataset_freiburg2_desk/sandbox_5/traj.txt ../../rgbd_dataset_freiburg2_desk/sandbox_5/info.txt ../../rgbd_dataset_freiburg2_desk/sandbox_5/pose_opt1.txt ../../rgbd_dataset_freiburg2_desk/sandbox_5/fail_build_complete_model.txt ../../rgbd_dataset_freiburg2_desk/sandbox_5/selected_edge_opt1.txt 0.35 0.55 0.3 0.001 14 | if exist ../../rgbd_dataset_freiburg2_desk/sandbox_5/fail_build_complete_model.txt goto OVER 15 | ..\GlobalOptimizer2.exe ../../rgbd_dataset_freiburg2_desk/sandbox_5/pose_opt1.txt ../../rgbd_dataset_freiburg2_desk/sandbox_5/pointcloud/ ../../rgbd_dataset_freiburg2_desk/sandbox_5/traj.txt ../../rgbd_dataset_freiburg2_desk/sandbox_5/info.txt ../../rgbd_dataset_freiburg2_desk/sandbox_5/pose_opt2.txt ../../rgbd_dataset_freiburg2_desk/sandbox_5/traj_remain_opt2.txt ../../rgbd_dataset_freiburg2_desk/sandbox_5/info_remain_opt2.txt 50.0 16 | :OVER -------------------------------------------------------------------------------- /run_bat/run.bat: -------------------------------------------------------------------------------- 1 | cd /d %~dp0 2 | call fr1_room/run_2.bat 3 | cd /d %~dp0 4 | call fr1_room/run_4.bat 5 | cd /d %~dp0 6 | call fr1_room/run_6.bat 7 | cd /d %~dp0 8 | call fr1_room/run_8.bat 9 | cd /d %~dp0 10 | call fr1_room/run_10.bat 11 | cd /d %~dp0 12 | 13 | 14 | cd /d %~dp0 15 | call fr2_desk/run_2.bat 16 | cd /d %~dp0 17 | call fr2_desk/run_3.bat 18 | cd /d %~dp0 19 | call fr2_desk/run_5.bat 20 | cd /d %~dp0 21 | call fr2_desk/run_10.bat 22 | cd /d %~dp0 23 | call fr2_desk/run_15.bat 24 | cd /d %~dp0 25 | call fr2_desk/run_20.bat 26 | cd /d %~dp0 27 | call fr2_desk/run_25.bat 28 | cd /d %~dp0 29 | 30 | 31 | cd /d %~dp0 32 | call fr3_office/run_2.bat 33 | cd /d %~dp0 34 | call fr3_office/run_3.bat 35 | cd /d %~dp0 36 | call fr3_office/run_5.bat 37 | cd /d %~dp0 38 | call fr3_office/run_10.bat 39 | cd /d %~dp0 40 | call fr3_office/run_15.bat 41 | cd /d %~dp0 42 | call fr3_office/run_20.bat 43 | cd /d %~dp0 44 | call fr3_office/run_25.bat 45 | cd /d %~dp0 46 | 47 | 48 | cd /d %~dp0 49 | call ICL_livingroom_run/run_2.bat 50 | cd /d %~dp0 51 | call ICL_livingroom_run/run_3.bat 52 | cd /d %~dp0 53 | call ICL_livingroom_run/run_5.bat 54 | cd /d %~dp0 55 | call ICL_livingroom_run/run_10.bat 56 | cd /d %~dp0 57 | call ICL_livingroom_run/run_15.bat 58 | cd /d %~dp0 59 | call ICL_livingroom_run/run_20.bat 60 | cd /d %~dp0 61 | call ICL_livingroom_run/run_25.bat 62 | cd /d %~dp0 63 | 64 | 65 | cd /d %~dp0 66 | call ICL_office_run/run_2.bat 67 | cd /d %~dp0 68 | call ICL_office_run/run_3.bat 69 | cd /d %~dp0 70 | call ICL_office_run/run_5.bat 71 | cd /d %~dp0 72 | call ICL_office_run/run_10.bat 73 | cd /d %~dp0 74 | call ICL_office_run/run_15.bat 75 | cd /d %~dp0 76 | call ICL_office_run/run_20.bat 77 | cd /d %~dp0 78 | call ICL_office_run/run_25.bat 79 | cd /d %~dp0 80 | 81 | 82 | cd /d %~dp0 83 | call Lab1/run.bat 84 | 85 | cd /d %~dp0 86 | call Lab2/run.bat -------------------------------------------------------------------------------- /src/ColorCorrespondence/ColorCorrespondence.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 2013 4 | VisualStudioVersion = 12.0.31101.0 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ColorCorrespondence", "ColorCorrespondence\ColorCorrespondence.vcxproj", "{AEAAF78E-D467-406E-8696-1C19E285D98E}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Win32 = Debug|Win32 11 | Release|Win32 = Release|Win32 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {AEAAF78E-D467-406E-8696-1C19E285D98E}.Debug|Win32.ActiveCfg = Debug|Win32 15 | {AEAAF78E-D467-406E-8696-1C19E285D98E}.Debug|Win32.Build.0 = Debug|Win32 16 | {AEAAF78E-D467-406E-8696-1C19E285D98E}.Release|Win32.ActiveCfg = Release|Win32 17 | {AEAAF78E-D467-406E-8696-1C19E285D98E}.Release|Win32.Build.0 = Release|Win32 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | EndGlobal 23 | -------------------------------------------------------------------------------- /src/ColorCorrespondence/ColorCorrespondence.v12.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lecanyu/Sparse3d/30da7ffe111ec17ad3ba2c687530a01c13a93a1a/src/ColorCorrespondence/ColorCorrespondence.v12.suo -------------------------------------------------------------------------------- /src/ColorCorrespondence/ColorCorrespondence/BuildCorpPointSet.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | 10 | class BuildCorpPointSet 11 | { 12 | private: 13 | float _corr_dist_threshold; 14 | 15 | public: 16 | 17 | // correspondences source<->target 18 | pcl::Correspondences _correspondences; 19 | pcl::Correspondences _final_correspondences; 20 | 21 | int _total_size; 22 | 23 | BuildCorpPointSet() :_corr_dist_threshold(0.075) , _total_size(0) 24 | {} 25 | 26 | 27 | 28 | // return correpondence number and correspondences point set 29 | int ComputeCorrepondencePointSet(const Eigen::Matrix4f& transform, pcl::PointCloud::ConstPtr scene1, pcl::PointCloud::ConstPtr scene2, double score_max_depth) 30 | { 31 | _correspondences.clear(); 32 | _correspondences.reserve(scene2->points.size()); 33 | Eigen::Affine3f affine(transform); 34 | 35 | pcl::PointCloud::Ptr scene(new pcl::PointCloud); 36 | pcl::transformPointCloud(*scene1, *scene, affine); 37 | 38 | 39 | pcl::KdTreeFLANN match_search; 40 | match_search.setInputCloud(scene2); 41 | 42 | int total_size = 0; 43 | 44 | const float max_range = _corr_dist_threshold * _corr_dist_threshold; 45 | for (int t = 0; t < scene->points.size(); ++t) 46 | { 47 | if (score_max_depth>0) 48 | { 49 | if (scene1->points[t].z>score_max_depth) 50 | continue; 51 | } 52 | 53 | total_size++; 54 | 55 | int N_nearest = 1; 56 | 57 | std::vector neigh_indices(N_nearest); 58 | std::vector neigh_sqr_dists(N_nearest); 59 | 60 | int found_neighs = match_search.nearestKSearch(scene->points.at(t), N_nearest, neigh_indices, neigh_sqr_dists); 61 | 62 | //assert(found_neighs == N_nearest); 63 | 64 | float dis = neigh_sqr_dists[0]; 65 | if (dis > max_range) 66 | continue; 67 | 68 | for (int k = 0; k < N_nearest; ++k) 69 | { 70 | pcl::Correspondence corr(t, neigh_indices[k], neigh_sqr_dists[k]); 71 | _correspondences.push_back(corr); 72 | } 73 | } 74 | 75 | _total_size = total_size; 76 | 77 | return _correspondences.size(); 78 | } 79 | 80 | 81 | 82 | Eigen::Matrix< double, 6, 6 > ComputeInfoMatrix(pcl::Correspondences& cor, pcl::PointCloud::ConstPtr scene1, pcl::PointCloud::ConstPtr scene2) 83 | { 84 | // Note: 85 | // if your transform fit transform*source = target, then you should use information_source. vice versa 86 | Eigen::Matrix< double, 6, 6 > information_source; 87 | information_source.setZero(); 88 | 89 | Eigen::Matrix< double, 6, 6 > information_target; 90 | information_target.setZero(); 91 | 92 | 93 | for (int i = 0; i < cor.size(); i++) { 94 | pcl::PointXYZRGB source_p = scene1->points[cor.at(i).index_query]; 95 | const float & sx = source_p.x; 96 | const float & sy = source_p.y; 97 | const float & sz = source_p.z; 98 | Eigen::Matrix< double, 3, 6 > A; 99 | A << 100 | 1, 0, 0, 0, 2 * sz, -2 * sy, 101 | 0, 1, 0, -2 * sz, 0, 2 * sx, 102 | 0, 0, 1, 2 * sy, -2 * sx, 0; 103 | information_source += A.transpose() * A; 104 | 105 | pcl::PointXYZRGB target_p = scene2->points[cor.at(i).index_match]; 106 | const float & tx = target_p.x; 107 | const float & ty = target_p.y; 108 | const float & tz = target_p.z; 109 | Eigen::Matrix< double, 3, 6 > AA; 110 | AA << 1, 0, 0, 0, 2 * tz, -2 * ty, 111 | 0, 1, 0, -2 * tz, 0, 2 * tx, 112 | 0, 0, 1, 2 * ty, -2 * tx, 0; 113 | information_target += AA.transpose() * AA; 114 | } 115 | 116 | // default: transform fit transform*source = target 117 | return information_source; 118 | 119 | } 120 | 121 | }; -------------------------------------------------------------------------------- /src/ColorCorrespondence/ColorCorrespondence/ColorCorrespondence.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;hm;inl;inc;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | Source Files 20 | 21 | 22 | Source Files 23 | 24 | 25 | Source Files 26 | 27 | 28 | Source Files 29 | 30 | 31 | 32 | 33 | Source Files 34 | 35 | 36 | Source Files 37 | 38 | 39 | Source Files 40 | 41 | 42 | -------------------------------------------------------------------------------- /src/ColorCorrespondence/ColorCorrespondence/ColorCorrespondence.vcxproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | ../sandbox/pointcloud/ ../sandbox/pointcloud_ds/ ../sandbox/depth/ ../sandbox/camera_para.txt ../sandbox/sift_correspondence.txt ../sandbox/sift_traj.txt ../sandbox/sift_info.txt 5 | WindowsLocalDebugger 6 | 7 | -------------------------------------------------------------------------------- /src/ColorCorrespondence/ColorCorrespondence/GraphMatching.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | 10 | #include 11 | 12 | #include 13 | #include 14 | #include 15 | #include 16 | 17 | #include 18 | 19 | 20 | class GraphMatching 21 | { 22 | 23 | public: 24 | int _nrow; 25 | int _ncol; 26 | arma::sp_fmat _m; 27 | pcl::PointCloud& _keypoints1; 28 | pcl::PointCloud& _keypoints2; 29 | 30 | // final transformation between two frames 31 | Eigen::Matrix4f _transformation; 32 | 33 | EIGEN_MAKE_ALIGNED_OPERATOR_NEW; 34 | 35 | 36 | GraphMatching(pcl::PointCloud& keypoints1, pcl::PointCloud& keypoints2, const pcl::Correspondences& correspondence); 37 | // refine correspondences 38 | pcl::CorrespondencesPtr ComputeCorrespondenceByEigenVec(int best_num = 4); 39 | // give n pairs correspondences, compute rigid transformation 40 | Eigen::Matrix4f ComputeRigid(pcl::CorrespondencesConstPtr correspondence, const pcl::PointCloud& keypoints1, const pcl::PointCloud& keypoints2); 41 | 42 | 43 | private: 44 | // judge n points in the same plane or not 45 | bool judge_pointn_plane(std::vector& arr) 46 | { 47 | Eigen::Vector3f v1, v2, v3; 48 | v1 << 49 | arr[1].x - arr[0].x, arr[1].y - arr[0].y, arr[1].z - arr[0].z; 50 | v2 << 51 | arr[2].x - arr[0].x, arr[2].y - arr[0].y, arr[2].z - arr[0].z; 52 | 53 | Eigen::Vector3f n; 54 | n = v1.cross(v2); 55 | n.normalize(); 56 | 57 | for (int i = 3; i < arr.size(); ++i) 58 | { 59 | v3 << 60 | arr[i].x - arr[0].x, arr[i].y - arr[0].y, arr[i].z - arr[0].z; 61 | float dis = v3.dot(n); 62 | dis = fabs(dis); 63 | 64 | float the_same_plane_threshold = 0.11f; 65 | 66 | if (dis > the_same_plane_threshold) 67 | { 68 | return false; 69 | } 70 | } 71 | return true; 72 | } 73 | }; 74 | 75 | -------------------------------------------------------------------------------- /src/ColorCorrespondence/ColorCorrespondence/SubsidiaryFunction.cpp: -------------------------------------------------------------------------------- 1 | #include "SubsidiaryFunction.h" 2 | 3 | #include 4 | 5 | void ConvertRGBCloud2XYZCloud(pcl::PointCloud::ConstPtr rgb, pcl::PointCloud::Ptr xyz) 6 | { 7 | for (int i = 0; i < rgb->points.size(); ++i) 8 | { 9 | float x = rgb->points[i].x; 10 | float y = rgb->points[i].y; 11 | float z = rgb->points[i].z; 12 | pcl::PointXYZ p; 13 | p.x = x; p.y = y; p.z = z; 14 | xyz->points.push_back(p); 15 | } 16 | } 17 | 18 | void ConvertXYZCloud2RGBCloud(pcl::PointCloud::ConstPtr xyz, pcl::PointCloud::Ptr rgb) 19 | { 20 | for (int i = 0; i < xyz->points.size(); ++i) 21 | { 22 | float x = xyz->points[i].x; 23 | float y = xyz->points[i].y; 24 | float z = xyz->points[i].z; 25 | pcl::PointXYZRGB p; 26 | p.x = x; p.y = y; p.z = z; 27 | p.r = 255; p.g = 255; p.b = 255; 28 | rgb->points.push_back(p); 29 | } 30 | } 31 | 32 | bool UVD2XYZ(int u, int v, unsigned short d, CameraParam& _camera, double& x, double& y, double& z) 33 | { 34 | if (d > 0) { 35 | cv::Mat cam(3, 3, CV_32F); 36 | cam.at(0, 0) = _camera.fx_; cam.at(0, 1) = 0; cam.at(0, 2) = _camera.cx_; 37 | cam.at(1, 0) = 0; cam.at(1, 1) = _camera.fy_; cam.at(1, 2) = _camera.cy_; 38 | cam.at(2, 0) = 0; cam.at(2, 1) = 0; cam.at(2, 2) = 1; 39 | cv::Mat dist_coef(1, 5, CV_32F); 40 | dist_coef.at(0, 0) = _camera.k1_; 41 | dist_coef.at(0, 1) = _camera.k2_; 42 | dist_coef.at(0, 2) = _camera.p1_; 43 | dist_coef.at(0, 3) = _camera.p2_; 44 | dist_coef.at(0, 4) = _camera.k3_; 45 | 46 | cv::Mat mat(1, 2, CV_32F); 47 | mat.at(0, 0) = u; 48 | mat.at(0, 1) = v; 49 | mat = mat.reshape(2); 50 | cv::undistortPoints(mat, mat, cam, dist_coef, cv::Mat(), cam); 51 | mat = mat.reshape(1); 52 | 53 | float uu = mat.at(0, 0); 54 | float vv = mat.at(0, 1); 55 | 56 | z = d / _camera.depth_ratio_; 57 | x = (uu - _camera.cx_) * z / _camera.fx_; 58 | y = (vv - _camera.cy_) * z / _camera.fy_; 59 | 60 | 61 | // ideal model 62 | /*z = d / _camera.depth_ratio_; 63 | x = (u - _camera.cx_) * z / _camera.fx_; 64 | y = (v - _camera.cy_) * z / _camera.fy_;*/ 65 | return true; 66 | } 67 | else { 68 | return false; 69 | } 70 | } 71 | 72 | 73 | pcl::PointXYZRGB SearchNearestValidPoint(int u, int v, cv::Mat& depth, CameraParam& camera){ 74 | int uu = u, vv = v; 75 | ushort z1 = depth.at(vv, uu); 76 | double x, y, z; 77 | int step = 1; 78 | int forward8 = 0; 79 | while (!UVD2XYZ(uu, vv, z1, camera, x, y, z) && step<100) 80 | { 81 | uu = u; 82 | vv = v; 83 | forward8++; 84 | if (forward8 == 1) 85 | { 86 | uu += step; 87 | if (uu >= depth.cols) 88 | uu -= step; 89 | z1 = depth.at(vv, uu); 90 | continue; 91 | } 92 | if (forward8 == 2) 93 | { 94 | vv -= step; 95 | if (vv < 0) 96 | vv += step; 97 | z1 = depth.at(vv, uu); 98 | continue; 99 | } 100 | if (forward8 == 3) 101 | { 102 | uu -= step; 103 | if (uu < 0) 104 | uu += step; 105 | z1 = depth.at(vv, uu); 106 | continue; 107 | } 108 | if (forward8 == 4) 109 | { 110 | vv += step; 111 | if (vv >= depth.rows) 112 | vv -= step; 113 | z1 = depth.at(vv, uu); 114 | continue; 115 | } 116 | if (forward8 == 5) 117 | { 118 | uu += step; 119 | vv -= step; 120 | if (vv < 0 || uu >= depth.cols) 121 | { 122 | uu -= step; 123 | vv += step; 124 | } 125 | z1 = depth.at(vv, uu); 126 | continue; 127 | } 128 | if (forward8 == 6) 129 | { 130 | uu -= step; 131 | vv -= step; 132 | if (vv <0 || uu <0) 133 | { 134 | uu += step; 135 | vv += step; 136 | } 137 | z1 = depth.at(vv, uu); 138 | continue; 139 | } 140 | if (forward8 == 7) 141 | { 142 | uu -= step; 143 | vv += step; 144 | if (vv >= depth.rows || uu < 0) 145 | { 146 | uu += step; 147 | vv -= step; 148 | } 149 | z1 = depth.at(vv, uu); 150 | continue; 151 | } 152 | if (forward8 == 8) 153 | { 154 | uu += step; 155 | vv += step; 156 | if (vv >= depth.rows || uu >= depth.cols) 157 | { 158 | uu -= step; 159 | vv -= step; 160 | } 161 | z1 = depth.at(vv, uu); 162 | continue; 163 | } 164 | step++; 165 | forward8 = 0; 166 | } 167 | pcl::PointXYZRGB p; 168 | if (z1==0) 169 | { 170 | p.x = x; p.y = y; p.z = -1.0f; 171 | p.r = 255; p.g = 255; p.b = 255; 172 | } 173 | else 174 | { 175 | p.x = x; p.y = y; p.z = z; 176 | p.r = 255; p.g = 255; p.b = 255; 177 | } 178 | 179 | return p; 180 | } -------------------------------------------------------------------------------- /src/ColorCorrespondence/ColorCorrespondence/Verbose.h: -------------------------------------------------------------------------------- 1 | #ifndef Verbose 2 | //#define Verbose 3 | #endif 4 | -------------------------------------------------------------------------------- /src/GeometricCorrespondence/GeometricCorrespondence.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 2013 4 | VisualStudioVersion = 12.0.31101.0 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GeometricCorrespondence", "GeometricCorrespondence\GeometricCorrespondence.vcxproj", "{3CD951C9-8DA4-4D50-881E-B6FC6E7109F6}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Win32 = Debug|Win32 11 | Release|Win32 = Release|Win32 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {3CD951C9-8DA4-4D50-881E-B6FC6E7109F6}.Debug|Win32.ActiveCfg = Debug|Win32 15 | {3CD951C9-8DA4-4D50-881E-B6FC6E7109F6}.Debug|Win32.Build.0 = Debug|Win32 16 | {3CD951C9-8DA4-4D50-881E-B6FC6E7109F6}.Release|Win32.ActiveCfg = Release|Win32 17 | {3CD951C9-8DA4-4D50-881E-B6FC6E7109F6}.Release|Win32.Build.0 = Release|Win32 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | EndGlobal 23 | -------------------------------------------------------------------------------- /src/GeometricCorrespondence/GeometricCorrespondence.v12.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lecanyu/Sparse3d/30da7ffe111ec17ad3ba2c687530a01c13a93a1a/src/GeometricCorrespondence/GeometricCorrespondence.v12.suo -------------------------------------------------------------------------------- /src/GeometricCorrespondence/GeometricCorrespondence/BuildCorpPointSet.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | 10 | class BuildCorpPointSet 11 | { 12 | private: 13 | float _corr_dist_threshold; 14 | 15 | public: 16 | 17 | double _total_size; 18 | // correspondences source<->target 19 | pcl::Correspondences _correspondences; 20 | pcl::Correspondences _final_correspondences; 21 | 22 | 23 | BuildCorpPointSet() :_corr_dist_threshold(0.075), _total_size(0) 24 | {} 25 | 26 | 27 | 28 | // return correpondence number and correspondences point set 29 | int ComputeCorrepondencePointSet(const Eigen::Matrix4f& transform, pcl::PointCloud::ConstPtr scene1, 30 | pcl::PointCloud::ConstPtr scene2, double score_max_depth) 31 | { 32 | _correspondences.clear(); 33 | _correspondences.reserve(scene2->points.size()); 34 | Eigen::Affine3f affine(transform); 35 | 36 | pcl::PointCloud::Ptr scene(new pcl::PointCloud); 37 | pcl::transformPointCloud(*scene1, *scene, affine); 38 | 39 | 40 | pcl::KdTreeFLANN match_search; 41 | match_search.setInputCloud(scene2); 42 | 43 | int total_size = 0; 44 | 45 | const float max_range = _corr_dist_threshold * _corr_dist_threshold; 46 | for (int t = 0; t < scene->points.size(); ++t) 47 | { 48 | if (score_max_depth > 0) 49 | { 50 | if (scene1->points[t].z > score_max_depth) 51 | continue; 52 | } 53 | 54 | total_size++; 55 | 56 | int N_nearest = 1; 57 | 58 | std::vector neigh_indices(N_nearest); 59 | std::vector neigh_sqr_dists(N_nearest); 60 | 61 | int found_neighs = match_search.nearestKSearch(scene->points.at(t), N_nearest, neigh_indices, neigh_sqr_dists); 62 | 63 | //assert(found_neighs == N_nearest); 64 | 65 | float dis = neigh_sqr_dists[0]; 66 | if (dis > max_range) 67 | continue; 68 | 69 | for (int k = 0; k < N_nearest; ++k) 70 | { 71 | pcl::Correspondence corr(t, neigh_indices[k], neigh_sqr_dists[k]); 72 | _correspondences.push_back(corr); 73 | } 74 | } 75 | 76 | _total_size = total_size; 77 | 78 | return _correspondences.size(); 79 | } 80 | 81 | 82 | 83 | Eigen::Matrix< double, 6, 6 > ComputeInfoMatrix(pcl::Correspondences& cor, pcl::PointCloud::ConstPtr scene1, pcl::PointCloud::ConstPtr scene2) 84 | { 85 | // Note: 86 | // if your transform fit transform*source = target, then you should use information_source. vice versa 87 | Eigen::Matrix< double, 6, 6 > information_source; 88 | information_source.setZero(); 89 | 90 | Eigen::Matrix< double, 6, 6 > information_target; 91 | information_target.setZero(); 92 | 93 | 94 | for (int i = 0; i < cor.size(); i++) { 95 | pcl::PointXYZRGB source_p = scene1->points[cor.at(i).index_query]; 96 | const float & sx = source_p.x; 97 | const float & sy = source_p.y; 98 | const float & sz = source_p.z; 99 | Eigen::Matrix< double, 3, 6 > A; 100 | A << 101 | 1, 0, 0, 0, 2 * sz, -2 * sy, 102 | 0, 1, 0, -2 * sz, 0, 2 * sx, 103 | 0, 0, 1, 2 * sy, -2 * sx, 0; 104 | information_source += A.transpose() * A; 105 | 106 | pcl::PointXYZRGB target_p = scene2->points[cor.at(i).index_match]; 107 | const float & tx = target_p.x; 108 | const float & ty = target_p.y; 109 | const float & tz = target_p.z; 110 | Eigen::Matrix< double, 3, 6 > AA; 111 | AA << 1, 0, 0, 0, 2 * tz, -2 * ty, 112 | 0, 1, 0, -2 * tz, 0, 2 * tx, 113 | 0, 0, 1, 2 * ty, -2 * tx, 0; 114 | information_target += AA.transpose() * AA; 115 | } 116 | 117 | // default: transform fit transform*source = target 118 | return information_source; 119 | 120 | } 121 | 122 | }; -------------------------------------------------------------------------------- /src/GeometricCorrespondence/GeometricCorrespondence/GeometricCorrespondence.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;hm;inl;inc;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | Source Files 20 | 21 | 22 | Source Files 23 | 24 | 25 | Source Files 26 | 27 | 28 | Source Files 29 | 30 | 31 | 32 | 33 | Source Files 34 | 35 | 36 | Source Files 37 | 38 | 39 | -------------------------------------------------------------------------------- /src/GeometricCorrespondence/GeometricCorrespondence/GeometricCorrespondence.vcxproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /src/GeometricCorrespondence/GeometricCorrespondence/GraphMatching.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | 10 | #include 11 | 12 | #include 13 | #include 14 | #include 15 | #include 16 | 17 | #include 18 | 19 | 20 | class GraphMatching 21 | { 22 | 23 | public: 24 | int _nrow; 25 | int _ncol; 26 | arma::sp_fmat _m; 27 | pcl::PointCloud& _keypoints1; 28 | pcl::PointCloud& _keypoints2; 29 | 30 | // final transformation between two frames 31 | Eigen::Matrix4f _transformation; 32 | 33 | EIGEN_MAKE_ALIGNED_OPERATOR_NEW; 34 | 35 | 36 | GraphMatching(pcl::PointCloud& keypoints1, pcl::PointCloud& keypoints2, const pcl::Correspondences& correspondence); 37 | pcl::CorrespondencesPtr ComputeCorrespondenceByEigenVec(int best_num = 4); 38 | // give n pairs correspondences, compute rigid transformation 39 | Eigen::Matrix4f ComputeRigid(pcl::CorrespondencesConstPtr correspondence, const pcl::PointCloud& keypoints1, const pcl::PointCloud& keypoints2); 40 | 41 | 42 | private: 43 | // judge n points in the same plane or not 44 | bool judge_pointn_plane(std::vector& arr) 45 | { 46 | Eigen::Vector3f v1, v2, v3; 47 | v1 << 48 | arr[1].x - arr[0].x, arr[1].y - arr[0].y, arr[1].z - arr[0].z; 49 | v2 << 50 | arr[2].x - arr[0].x, arr[2].y - arr[0].y, arr[2].z - arr[0].z; 51 | 52 | Eigen::Vector3f n; 53 | n = v1.cross(v2); 54 | n.normalize(); 55 | 56 | for (int i = 3; i < arr.size(); ++i) 57 | { 58 | v3 << 59 | arr[i].x - arr[0].x, arr[i].y - arr[0].y, arr[i].z - arr[0].z; 60 | float dis = v3.dot(n); 61 | dis = fabs(dis); 62 | 63 | float the_same_plane_threshold = 0.11f; 64 | 65 | if (dis > the_same_plane_threshold) 66 | { 67 | return false; 68 | } 69 | } 70 | return true; 71 | } 72 | }; 73 | 74 | -------------------------------------------------------------------------------- /src/GeometricCorrespondence/GeometricCorrespondence/Verbose.h: -------------------------------------------------------------------------------- 1 | #ifndef Verbose 2 | //#define Verbose 3 | #endif 4 | -------------------------------------------------------------------------------- /src/GlobalOptimizer1/GlobalOptimizer1.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 2013 4 | VisualStudioVersion = 12.0.31101.0 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GlobalOptimizer1", "GlobalOptimizer1\GlobalOptimizer1.vcxproj", "{AD410B3D-02CF-4947-9172-729ECF35F8FB}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Win32 = Debug|Win32 11 | Release|Win32 = Release|Win32 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {AD410B3D-02CF-4947-9172-729ECF35F8FB}.Debug|Win32.ActiveCfg = Debug|Win32 15 | {AD410B3D-02CF-4947-9172-729ECF35F8FB}.Debug|Win32.Build.0 = Debug|Win32 16 | {AD410B3D-02CF-4947-9172-729ECF35F8FB}.Release|Win32.ActiveCfg = Release|Win32 17 | {AD410B3D-02CF-4947-9172-729ECF35F8FB}.Release|Win32.Build.0 = Release|Win32 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | EndGlobal 23 | -------------------------------------------------------------------------------- /src/GlobalOptimizer1/GlobalOptimizer1.v12.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lecanyu/Sparse3d/30da7ffe111ec17ad3ba2c687530a01c13a93a1a/src/GlobalOptimizer1/GlobalOptimizer1.v12.suo -------------------------------------------------------------------------------- /src/GlobalOptimizer1/GlobalOptimizer1/GlobalOptimizer1.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;hm;inl;inc;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | Source Files 20 | 21 | 22 | Source Files 23 | 24 | 25 | Source Files 26 | 27 | 28 | Source Files 29 | 30 | 31 | 32 | 33 | Source Files 34 | 35 | 36 | Source Files 37 | 38 | 39 | -------------------------------------------------------------------------------- /src/GlobalOptimizer1/GlobalOptimizer1/GraphLoopDetect.h: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | 9 | #include "helper.h" 10 | 11 | 12 | class GraphLoopDetect 13 | { 14 | int frame_num_; 15 | public: 16 | std::vector> graph; 17 | 18 | // result variable, it will be filled after run DetectLoop() 19 | std::vector> edge_loop_num; 20 | std::vector> final_result; 21 | 22 | 23 | GraphLoopDetect(){} 24 | ~GraphLoopDetect(){} 25 | 26 | bool Init(std::string& traj_file, int frame_num) 27 | { 28 | frame_num_ = frame_num; 29 | 30 | RGBDTrajectory traj; 31 | traj.LoadFromFile(traj_file); 32 | 33 | graph.resize(frame_num, std::vector(frame_num, 0)); 34 | 35 | for (int i = 0; i < traj.data_.size(); ++i) 36 | { 37 | int v1 = traj.data_[i].frame1_; 38 | int v2 = traj.data_[i].frame2_; 39 | 40 | graph[v1][v2] = 1; 41 | graph[v2][v1] = 1; 42 | } 43 | 44 | return traj.data_.size() > 0; 45 | } 46 | 47 | 48 | // 49 | void DetectLoop() 50 | { 51 | std::cout << "Detecting..."; 52 | struct state{ 53 | bool in_stack; 54 | int level; 55 | int start_vertex; 56 | state() :in_stack(false), level(-1), start_vertex(0){} 57 | state(bool ins, int le, int start) :in_stack(ins), level(le), start_vertex(start){} 58 | }; 59 | std::vector stack_vertex(frame_num_); 60 | 61 | // save coarse result 62 | std::vector> loop_result; 63 | 64 | // DFS 65 | std::stack DFS; 66 | DFS.push(0); 67 | stack_vertex[0] = state(true, 0, 0); 68 | while (!DFS.empty()) 69 | { 70 | int item = DFS.top(); 71 | bool add_stack = false; 72 | for (int i = stack_vertex[item].start_vertex; i < frame_num_; ++i) 73 | { 74 | if (graph[item][i] == 1 && stack_vertex[i].in_stack == false) 75 | { 76 | DFS.push(i); 77 | 78 | int last_level = stack_vertex[item].level; 79 | stack_vertex[i] = state(true, last_level + 1, 0); 80 | add_stack = true; 81 | 82 | stack_vertex[item].start_vertex = i + 1; 83 | break; 84 | } 85 | if (graph[item][i] == 1 && stack_vertex[i].in_stack == true) 86 | { 87 | assert(stack_vertex[item].level != -1 && stack_vertex[i].level != -1); 88 | int loop_len = stack_vertex[item].level - stack_vertex[i].level; 89 | if (loop_len >= 2) 90 | { 91 | std::stack temp_stack = DFS; 92 | std::vector loop; 93 | while (temp_stack.top() != i) 94 | { 95 | loop.push_back(temp_stack.top()); 96 | temp_stack.pop(); 97 | } 98 | loop.push_back(i); 99 | 100 | loop_result.push_back(loop); 101 | //std::cout << "Coarse loop number: " << loop_result.size() << "\n"; 102 | } 103 | } 104 | } 105 | if (!add_stack) 106 | { 107 | DFS.pop(); 108 | stack_vertex[item].in_stack = false; 109 | stack_vertex[item].level = -1; 110 | stack_vertex[item].start_vertex = 0; 111 | } 112 | } 113 | 114 | for (int i = 0; i < loop_result.size(); ++i) 115 | { 116 | bool repeat = false; 117 | for (int t = 0; t < final_result.size(); ++t) 118 | { 119 | if (loop_eq(loop_result[i], final_result[t])) 120 | { 121 | repeat = true; 122 | break; 123 | } 124 | } 125 | 126 | if (!repeat) 127 | final_result.push_back(loop_result[i]); 128 | } 129 | 130 | for (int i = 0; i < final_result.size(); ++i) 131 | final_result[i].push_back(final_result[i][0]); 132 | 133 | // count 134 | edge_loop_num.resize(frame_num_, std::vector(frame_num_, 0)); 135 | for (int i = 0; i < final_result.size(); ++i) 136 | { 137 | for (int j = 1; j < final_result[i].size(); ++j) 138 | { 139 | int v1 = final_result[i][j - 1]; 140 | int v2 = final_result[i][j]; 141 | 142 | if (v1 > v2) 143 | { 144 | int temp = v1; 145 | v1 = v2; 146 | v2 = temp; 147 | } 148 | edge_loop_num[v1][v2]++; 149 | } 150 | } 151 | std::cout << " Done!\n"; 152 | } 153 | 154 | 155 | private: 156 | // utility function 157 | // Judge array loop equation (clockwise and counterclockwise) 158 | bool loop_eq(std::vector& v1, std::vector& v2) 159 | { 160 | if (v1.size() != v2.size()) 161 | return false; 162 | 163 | std::vector temp = v1; 164 | temp.insert(temp.end(), v1.begin(), v1.end()); 165 | 166 | // clockwise 167 | int i = 0; 168 | for (; i < temp.size(); ++i) 169 | { 170 | if (temp[i] != v2[0]) 171 | continue; 172 | else 173 | break; 174 | } 175 | 176 | int count = 0; 177 | for (int j = 0; j < v2.size() && i < temp.size(); ++i, ++j) 178 | if (temp[i] == v2[j]) 179 | count++; 180 | 181 | if (count == v2.size()) 182 | return true; 183 | else 184 | { // counterclockwise 185 | i = temp.size() - 1; 186 | for (; i >= 0; --i) 187 | if (temp[i] != v2[0]) 188 | continue; 189 | else 190 | break; 191 | count = 0; 192 | for (int j = 0; j < v2.size() && i >= 0; --i, ++j) 193 | if (temp[i] == v2[j]) 194 | count++; 195 | if (count == v2.size()) 196 | return true; 197 | else 198 | return false; 199 | } 200 | } 201 | }; -------------------------------------------------------------------------------- /src/GlobalOptimizer1/GlobalOptimizer1/Verbose.h: -------------------------------------------------------------------------------- 1 | #ifndef Verbose 2 | //#define Verbose 3 | #endif 4 | -------------------------------------------------------------------------------- /src/GlobalOptimizer1/GlobalOptimizer1/main.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include "ProgressiveOpt.h" 4 | 5 | int main(int argc, char** argv) 6 | { 7 | double error_threhold; 8 | double score1, score2; 9 | double low_score_threshold; 10 | std::string pointcloud_dir, traj_file, info_file, pose_file, fail_file, selected_edge_file; 11 | 12 | if (argc != 11) 13 | { 14 | std::cout << "Usage: GlobalOptimizer1.exe\n" << 15 | "pointcloud_dir[input dir]\n" << 16 | "traj_file[input dir]\n" << 17 | "info_file[input dir]\n" << 18 | "pose_file[ouput_file]\n" << 19 | "fail_file[ouput_file]\n" << 20 | "selected_edge_file[output_file]\n"<< 21 | "low_score_threshold[input value, if geometric loop select edge below threshold, loop will be discarded]\n"<< 22 | "score1[input value, select consequence edge score threshold]\n" << 23 | "score2[input value, select non-consequence edge score threshold]\n" << 24 | "error_threhold[input value, if a dense environment, use a more rigorous value. Typically, around 100 frames use 0.005, around 200 frames use 0.0025 ]\n"; 25 | return -1; 26 | } 27 | 28 | pointcloud_dir = argv[1]; 29 | traj_file = argv[2]; 30 | info_file = argv[3]; 31 | pose_file = argv[4]; 32 | fail_file = argv[5]; 33 | selected_edge_file = argv[6]; 34 | low_score_threshold = atof(argv[7]); 35 | score1 = atof(argv[8]); 36 | score2 = atof(argv[9]); 37 | error_threhold = atof(argv[10]); 38 | 39 | int frame_num = std::count_if( 40 | boost::filesystem::directory_iterator(boost::filesystem::path(pointcloud_dir)), 41 | boost::filesystem::directory_iterator(), 42 | [](const boost::filesystem::directory_entry& e) { 43 | return e.path().extension() == ".pcd"; }); 44 | 45 | ProgressiveOpt opt(frame_num, traj_file, info_file, pose_file, fail_file, selected_edge_file, low_score_threshold, score1, score2, error_threhold); 46 | if (opt.Init()) 47 | opt.Opt(); 48 | 49 | return 0; 50 | } -------------------------------------------------------------------------------- /src/GlobalOptimizer2/GlobalOptimizer2.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 2013 4 | VisualStudioVersion = 12.0.31101.0 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GlobalOptimizer2", "GlobalOptimizer2\GlobalOptimizer2.vcxproj", "{01D867D4-6903-423F-A64E-DB23D42A3AD0}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Win32 = Debug|Win32 11 | Release|Win32 = Release|Win32 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {01D867D4-6903-423F-A64E-DB23D42A3AD0}.Debug|Win32.ActiveCfg = Debug|Win32 15 | {01D867D4-6903-423F-A64E-DB23D42A3AD0}.Debug|Win32.Build.0 = Debug|Win32 16 | {01D867D4-6903-423F-A64E-DB23D42A3AD0}.Release|Win32.ActiveCfg = Release|Win32 17 | {01D867D4-6903-423F-A64E-DB23D42A3AD0}.Release|Win32.Build.0 = Release|Win32 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | EndGlobal 23 | -------------------------------------------------------------------------------- /src/GlobalOptimizer2/GlobalOptimizer2.v12.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lecanyu/Sparse3d/30da7ffe111ec17ad3ba2c687530a01c13a93a1a/src/GlobalOptimizer2/GlobalOptimizer2.v12.suo -------------------------------------------------------------------------------- /src/GlobalOptimizer2/GlobalOptimizer2/GlobalOptimizer2.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;hm;inl;inc;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | {dd2a284a-fea2-40ed-a259-0dce0804fb70} 18 | 19 | 20 | 21 | 22 | Source Files 23 | 24 | 25 | Source Files 26 | 27 | 28 | Source Files\vertigo3d 29 | 30 | 31 | Source Files\vertigo3d 32 | 33 | 34 | Source Files\vertigo3d 35 | 36 | 37 | Source Files 38 | 39 | 40 | 41 | 42 | Source Files 43 | 44 | 45 | Source Files 46 | 47 | 48 | Source Files\vertigo3d 49 | 50 | 51 | Source Files\vertigo3d 52 | 53 | 54 | Source Files\vertigo3d 55 | 56 | 57 | Source Files\vertigo3d 58 | 59 | 60 | -------------------------------------------------------------------------------- /src/GlobalOptimizer2/GlobalOptimizer2/GlobalOptimizer2.vcxproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /src/GlobalOptimizer2/GlobalOptimizer2/OptApp.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include "helper.h" 5 | 6 | class COptApp 7 | { 8 | SeqSaveAndLoad helpSeq_; 9 | public: 10 | RGBDTrajectory loop_traj_; 11 | RGBDInformation loop_info_; 12 | 13 | RGBDTrajectory pose_traj_; 14 | RGBDTrajectory loop_remain_traj_; 15 | RGBDInformation info_remain_; 16 | 17 | // input 18 | std::string init_seq_file_; 19 | std::string init_pose_file_; 20 | std::string loop_log_file_; 21 | std::string loop_info_file_; 22 | double weight_; 23 | int max_iteration_; 24 | int frame_num_; 25 | 26 | // output 27 | std::string pose_log_file_; 28 | std::string loop_remain_log_file_; 29 | std::string info_remain_log_file_; 30 | 31 | public: 32 | COptApp(int frame_num, std::string init_pose_file, std::string loop_file, std::string loop_info_file, std::string pose_file, std::string loop_remain_log_file, std::string info_remain_file, double weight=50.0) 33 | : 34 | frame_num_(frame_num), 35 | loop_log_file_(loop_file), 36 | loop_info_file_(loop_info_file), 37 | pose_log_file_(pose_file), 38 | loop_remain_log_file_(loop_remain_log_file), 39 | init_pose_file_(init_pose_file), 40 | info_remain_log_file_(info_remain_file) 41 | { 42 | weight_ = weight; 43 | max_iteration_ = 200; 44 | } 45 | ~COptApp(){} 46 | bool Init(); 47 | void OptimizeSwitchable(); 48 | void OptimizeSlam3d(); 49 | 50 | private: 51 | 52 | Eigen::Matrix4d G2O2Matrix4d( const g2o::SE3Quat& se3 ) { 53 | Eigen::Matrix4d m = se3.to_homogeneous_matrix(); //_Matrix< 4, 4, double > 54 | return m; 55 | } 56 | 57 | 58 | 59 | g2o::SE3Quat Eigen2G2O( const Eigen::Matrix4d & eigen_mat ) { 60 | Eigen::Affine3d eigen_transform( eigen_mat ); 61 | Eigen::Quaterniond eigen_quat( eigen_transform.rotation() ); 62 | Eigen::Vector3d translation( eigen_mat( 0, 3 ), eigen_mat( 1, 3 ), eigen_mat( 2, 3 ) ); 63 | g2o::SE3Quat result( eigen_quat, translation ); 64 | return result; 65 | } 66 | }; 67 | 68 | -------------------------------------------------------------------------------- /src/GlobalOptimizer2/GlobalOptimizer2/Verbose.h: -------------------------------------------------------------------------------- 1 | #ifndef Verbose 2 | //#define Verbose 3 | #endif 4 | -------------------------------------------------------------------------------- /src/GlobalOptimizer2/GlobalOptimizer2/main.cpp: -------------------------------------------------------------------------------- 1 | // G2O optimize 2 | 3 | #include 4 | #include 5 | 6 | #include 7 | 8 | #include "OptApp.h" 9 | 10 | int main(int argc, char** argv) 11 | { 12 | std::string init_pose_file, pointcloud_dir, loop_file, loop_info_file, pose_file, loop_remain_file, info_remain_file; 13 | double weight; 14 | if (argc != 9) 15 | { 16 | std::cout << "Usage:\n\GlobalOptimizer2.exe init_pose_file[input_file] pointcloud_dir[input_dir] loop_file[input_file] loop_info_file[input_file] pose_file[output_file] loop_remain_file[output_file] info_remain_file[output_file] weight[double number, the more larger, the more edges will be save]\n"; 17 | return -1; 18 | } 19 | 20 | init_pose_file = argv[1]; 21 | pointcloud_dir = argv[2]; 22 | loop_file = argv[3]; 23 | loop_info_file = argv[4]; 24 | pose_file = argv[5]; 25 | loop_remain_file = argv[6]; 26 | info_remain_file = argv[7]; 27 | weight = atof(argv[8]); 28 | 29 | int num_of_pc = std::count_if( 30 | boost::filesystem::directory_iterator(boost::filesystem::path(pointcloud_dir)), 31 | boost::filesystem::directory_iterator(), 32 | [](const boost::filesystem::directory_entry& e) { 33 | return e.path().extension() == ".pcd"; }); 34 | 35 | COptApp opt(num_of_pc, init_pose_file, loop_file, loop_info_file, pose_file, loop_remain_file, info_remain_file, weight); 36 | 37 | if (opt.Init()) 38 | opt.OptimizeSwitchable(); 39 | 40 | return 0; 41 | } -------------------------------------------------------------------------------- /src/GlobalOptimizer2/GlobalOptimizer2/vertigo3d/edge_se3Switchable.cpp: -------------------------------------------------------------------------------- 1 | #include "edge_se3Switchable.h" 2 | #include "vertex_switchLinear.h" 3 | #include 4 | #include 5 | 6 | 7 | using namespace std; 8 | using namespace Eigen; 9 | 10 | 11 | // ================================================ 12 | EdgeSE3Switchable::EdgeSE3Switchable() : g2o::BaseMultiEdge<6, Eigen::Isometry3d>() 13 | { 14 | resize(3); 15 | //_jacobianOplus[0].resize(6,6); 16 | //_jacobianOplus[1].resize(6,6); 17 | //_jacobianOplus[2].resize(6,1); 18 | 19 | } 20 | // ================================================ 21 | bool EdgeSE3Switchable::read(std::istream& is) 22 | { 23 | g2o::Vector7d meas; 24 | for (int i=0; i<7; i++) 25 | is >> meas[i]; 26 | // normalize the quaternion to recover numerical precision lost by storing as human readable text 27 | Vector4d::MapType(meas.data()+3).normalize(); 28 | setMeasurement(g2o::internal::fromVectorQT(meas)); 29 | 30 | for (int i=0; i<6; i++) 31 | for (int j=i; j<6; j++) { 32 | is >> information()(i,j); 33 | if (i!=j) 34 | information()(j,i) = information()(i,j); 35 | } 36 | return true; 37 | 38 | } 39 | // ================================================ 40 | bool EdgeSE3Switchable::write(std::ostream& os) const 41 | { 42 | g2o::Vector7d meas = g2o::internal::toVectorQT(measurement()); 43 | for (int i=0; i<7; i++) os << meas[i] << " "; 44 | for (int i = 0; i < 6; ++i) 45 | for (int j = i; j < 6; ++j) 46 | os << " " << information()(i, j); 47 | return os.good(); 48 | } 49 | 50 | // ================================================ 51 | void EdgeSE3Switchable::linearizeOplus() 52 | { 53 | 54 | g2o::VertexSE3* from = static_cast(_vertices[0]); 55 | g2o::VertexSE3* to = static_cast(_vertices[1]); 56 | const VertexSwitchLinear* vSwitch = static_cast(_vertices[2]); 57 | 58 | Eigen::Isometry3d E; 59 | const Eigen::Isometry3d& Xi=from->estimate(); 60 | const Eigen::Isometry3d& Xj=to->estimate(); 61 | const Eigen::Isometry3d& Z=_measurement; 62 | g2o::internal::computeEdgeSE3Gradient(E, _jacobianOplus[0], _jacobianOplus[1], Z, Xi, Xj); 63 | 64 | _jacobianOplus[0]*=vSwitch->estimate(); 65 | _jacobianOplus[1]*=vSwitch->estimate(); 66 | 67 | _jacobianOplus[2].setZero(); 68 | _jacobianOplus[2] = g2o::internal::toVectorMQT(E) * vSwitch->gradient(); 69 | } 70 | 71 | 72 | // ================================================ 73 | void EdgeSE3Switchable::computeError() 74 | { 75 | const g2o::VertexSE3* v1 = dynamic_cast(_vertices[0]); 76 | const g2o::VertexSE3* v2 = dynamic_cast(_vertices[1]); 77 | const VertexSwitchLinear* v3 = static_cast(_vertices[2]); 78 | 79 | Eigen::Isometry3d delta = _inverseMeasurement * (v1->estimate().inverse()*v2->estimate()); 80 | _error = g2o::internal::toVectorMQT(delta) * v3->estimate(); 81 | } 82 | -------------------------------------------------------------------------------- /src/GlobalOptimizer2/GlobalOptimizer2/vertigo3d/edge_se3Switchable.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | #include 7 | 8 | class EdgeSE3Switchable : public g2o::BaseMultiEdge<6, Eigen::Isometry3d> 9 | { 10 | public: 11 | EdgeSE3Switchable(); 12 | 13 | virtual bool read(std::istream& is); 14 | virtual bool write(std::ostream& os) const; 15 | void computeError(); 16 | void linearizeOplus(); 17 | 18 | virtual void setMeasurement(const Eigen::Isometry3d& m){ 19 | _measurement = m; 20 | _inverseMeasurement = m.inverse(); 21 | } 22 | 23 | protected: 24 | Eigen::Isometry3d _inverseMeasurement; 25 | }; 26 | 27 | -------------------------------------------------------------------------------- /src/GlobalOptimizer2/GlobalOptimizer2/vertigo3d/edge_switchPrior.cpp: -------------------------------------------------------------------------------- 1 | 2 | #include "edge_switchPrior.h" 3 | using namespace std; 4 | 5 | bool EdgeSwitchPrior::read(std::istream &is) 6 | { 7 | double new_measurement; 8 | is >> new_measurement; 9 | 10 | setMeasurement(new_measurement); 11 | 12 | is >> information()(0,0); 13 | return true; 14 | } 15 | 16 | bool EdgeSwitchPrior::write(std::ostream &os) const 17 | { 18 | os << measurement() << " " << information()(0,0); 19 | return true; 20 | } 21 | 22 | void EdgeSwitchPrior::linearizeOplus() 23 | { 24 | _jacobianOplusXi[0]=-1.0; 25 | } 26 | 27 | void EdgeSwitchPrior::computeError() 28 | { 29 | const VertexSwitchLinear* s = static_cast(_vertices[0]); 30 | 31 | _error[0] = measurement() - s->x(); 32 | 33 | } 34 | 35 | -------------------------------------------------------------------------------- /src/GlobalOptimizer2/GlobalOptimizer2/vertigo3d/edge_switchPrior.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | 4 | #include "vertex_switchLinear.h" 5 | #include 6 | 7 | 8 | 9 | class EdgeSwitchPrior : public g2o::BaseUnaryEdge<1, double, VertexSwitchLinear> 10 | { 11 | public: 12 | EIGEN_MAKE_ALIGNED_OPERATOR_NEW 13 | EdgeSwitchPrior() {}; 14 | 15 | virtual bool read(std::istream& is); 16 | virtual bool write(std::ostream& os) const; 17 | void linearizeOplus(); 18 | void computeError(); 19 | }; 20 | -------------------------------------------------------------------------------- /src/GlobalOptimizer2/GlobalOptimizer2/vertigo3d/types_g2o_robust.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | #include "edge_switchPrior.h" 5 | #include "edge_se3Switchable.h" 6 | #include "vertex_switchLinear.h" 7 | 8 | 9 | 10 | G2O_REGISTER_TYPE(EDGE_SWITCH_PRIOR, EdgeSwitchPrior); 11 | G2O_REGISTER_TYPE(EDGE_SE3_SWITCHABLE, EdgeSE3Switchable); 12 | G2O_REGISTER_TYPE(VERTEX_SWITCH, VertexSwitchLinear); 13 | -------------------------------------------------------------------------------- /src/GlobalOptimizer2/GlobalOptimizer2/vertigo3d/vertex_switchLinear.cpp: -------------------------------------------------------------------------------- 1 | #include "vertex_switchLinear.h" 2 | #include 3 | 4 | using namespace std; 5 | 6 | bool VertexSwitchLinear:: read(std::istream& is) 7 | { 8 | is >> _x; 9 | _estimate=_x; 10 | 11 | return true; 12 | } 13 | 14 | bool VertexSwitchLinear::write(std::ostream& os) const 15 | { 16 | os << _x; 17 | return os.good(); 18 | } 19 | 20 | void VertexSwitchLinear::setToOriginImpl() 21 | { 22 | _x=0; 23 | _estimate=_x; 24 | } 25 | 26 | 27 | void VertexSwitchLinear::setEstimate(const double &et) 28 | { 29 | _x=et; 30 | _estimate=_x; 31 | } 32 | 33 | 34 | void VertexSwitchLinear::oplusImpl(const double* update) 35 | { 36 | _x += update[0]; 37 | 38 | if (_x<0) _x=0; 39 | if (_x>1) _x=1; 40 | 41 | _estimate=_x; 42 | } 43 | -------------------------------------------------------------------------------- /src/GlobalOptimizer2/GlobalOptimizer2/vertigo3d/vertex_switchLinear.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | 6 | 7 | 8 | class VertexSwitchLinear : public g2o::BaseVertex<1, double> 9 | { 10 | 11 | public: 12 | VertexSwitchLinear() { setToOrigin(); }; 13 | 14 | virtual void setToOriginImpl(); 15 | 16 | virtual void oplusImpl(const double* update); 17 | 18 | virtual bool read(std::istream& is); 19 | virtual bool write(std::ostream& os) const; 20 | virtual void setEstimate(const double &et); 21 | 22 | 23 | double x() const { return _x; }; 24 | 25 | 26 | //! The gradient at the current estimate is always 1; 27 | double gradient() const { return 1; } ; 28 | 29 | private: 30 | double _x; 31 | 32 | }; 33 | -------------------------------------------------------------------------------- /src/MergeInfo/MergeInfo.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 2013 4 | VisualStudioVersion = 12.0.31101.0 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MergeInfo", "MergeInfo\MergeInfo.vcxproj", "{84A0A96F-5658-4AB6-8319-AAC648FE1451}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Win32 = Debug|Win32 11 | Release|Win32 = Release|Win32 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {84A0A96F-5658-4AB6-8319-AAC648FE1451}.Debug|Win32.ActiveCfg = Debug|Win32 15 | {84A0A96F-5658-4AB6-8319-AAC648FE1451}.Debug|Win32.Build.0 = Debug|Win32 16 | {84A0A96F-5658-4AB6-8319-AAC648FE1451}.Release|Win32.ActiveCfg = Release|Win32 17 | {84A0A96F-5658-4AB6-8319-AAC648FE1451}.Release|Win32.Build.0 = Release|Win32 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | EndGlobal 23 | -------------------------------------------------------------------------------- /src/MergeInfo/MergeInfo.v12.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lecanyu/Sparse3d/30da7ffe111ec17ad3ba2c687530a01c13a93a1a/src/MergeInfo/MergeInfo.v12.suo -------------------------------------------------------------------------------- /src/MergeInfo/MergeInfo/MergeInfo.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;hm;inl;inc;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | Source Files 20 | 21 | 22 | 23 | 24 | Source Files 25 | 26 | 27 | -------------------------------------------------------------------------------- /src/MergeInfo/MergeInfo/main.cpp: -------------------------------------------------------------------------------- 1 | // Merge all of alignment candidates to one file 2 | // 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | 10 | #include 11 | #include 12 | #include 13 | 14 | 15 | #include 16 | #include "helper.h" 17 | 18 | 19 | int main(int argc, char** argv) 20 | { 21 | std::string pointcloud_ds_dir, narf_traj_file, narf_info_file, sift_traj_file, sift_info_file, corner_traj_file, corner_info_file, traj_file, info_file; 22 | if (argc != 10) 23 | { 24 | std::cout << "Usage: MergeInfo.exe pointcloud_ds_dir narf_traj_file narf_info_file sift_traj_file sift_info_file corner_traj_file corner_info_file traj_file info_file\n"; 25 | return -1; 26 | } 27 | //input file 28 | pointcloud_ds_dir = argv[1]; 29 | narf_traj_file = argv[2]; 30 | narf_info_file = argv[3]; 31 | sift_traj_file = argv[4]; 32 | sift_info_file = argv[5]; 33 | corner_traj_file = argv[6]; 34 | corner_info_file = argv[7]; 35 | 36 | // output file 37 | traj_file = argv[8]; 38 | info_file = argv[9]; 39 | 40 | int num_of_pc = std::count_if( 41 | boost::filesystem::directory_iterator(boost::filesystem::path(pointcloud_ds_dir)), 42 | boost::filesystem::directory_iterator(), 43 | [](const boost::filesystem::directory_entry& e) { 44 | return e.path().extension() == ".pcd"; }); 45 | 46 | RGBDInformation narf_info; 47 | RGBDTrajectory narf_traj; 48 | RGBDInformation sift_info; 49 | RGBDTrajectory sift_traj; 50 | RGBDInformation corner_info; 51 | RGBDTrajectory corner_traj; 52 | 53 | narf_info.LoadFromFile(narf_info_file); 54 | narf_traj.LoadFromFile(narf_traj_file); 55 | sift_info.LoadFromFile(sift_info_file); 56 | sift_traj.LoadFromFile(sift_traj_file); 57 | corner_info.LoadFromFile(corner_info_file); 58 | corner_traj.LoadFromFile(corner_traj_file); 59 | 60 | for (int i = 0; i < narf_info.data_.size(); ++i) 61 | narf_info.data_[i].flag = 0; 62 | for (int i = 0; i < sift_info.data_.size(); ++i) 63 | sift_info.data_[i].flag = 1; 64 | for (int i = 0; i < corner_info.data_.size(); ++i) 65 | corner_info.data_[i].flag = 2; 66 | 67 | // result 68 | RGBDInformation info; 69 | RGBDTrajectory traj; 70 | 71 | for (int i = 0; i < narf_info.data_.size(); ++i) 72 | info.data_.push_back(narf_info.data_[i]); 73 | for (int i = 0; i < sift_info.data_.size(); ++i) 74 | info.data_.push_back(sift_info.data_[i]); 75 | for (int i = 0; i < corner_info.data_.size(); ++i) 76 | info.data_.push_back(corner_info.data_[i]); 77 | 78 | for (int i = 0; i < narf_traj.data_.size(); ++i) 79 | traj.data_.push_back(narf_traj.data_[i]); 80 | for (int i = 0; i < sift_traj.data_.size(); ++i) 81 | traj.data_.push_back(sift_traj.data_[i]); 82 | for (int i = 0; i < corner_traj.data_.size(); ++i) 83 | traj.data_.push_back(corner_traj.data_[i]); 84 | 85 | std::sort(info.data_.begin(), info.data_.end(), SortInfo()); 86 | std::sort(traj.data_.begin(), traj.data_.end(), SortTraj()); 87 | 88 | traj.SaveToFile(traj_file); 89 | info.SaveToFile(info_file); 90 | 91 | return 0; 92 | } -------------------------------------------------------------------------------- /src/Narf/Narf.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 2013 4 | VisualStudioVersion = 12.0.31101.0 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Narf", "Narf\Narf.vcxproj", "{12035740-6284-4ABC-A0E3-8D3F0169F55C}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Win32 = Debug|Win32 11 | Release|Win32 = Release|Win32 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {12035740-6284-4ABC-A0E3-8D3F0169F55C}.Debug|Win32.ActiveCfg = Debug|Win32 15 | {12035740-6284-4ABC-A0E3-8D3F0169F55C}.Debug|Win32.Build.0 = Debug|Win32 16 | {12035740-6284-4ABC-A0E3-8D3F0169F55C}.Release|Win32.ActiveCfg = Release|Win32 17 | {12035740-6284-4ABC-A0E3-8D3F0169F55C}.Release|Win32.Build.0 = Release|Win32 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | EndGlobal 23 | -------------------------------------------------------------------------------- /src/Narf/Narf.v12.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lecanyu/Sparse3d/30da7ffe111ec17ad3ba2c687530a01c13a93a1a/src/Narf/Narf.v12.suo -------------------------------------------------------------------------------- /src/Narf/Narf/NARF.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lecanyu/Sparse3d/30da7ffe111ec17ad3ba2c687530a01c13a93a1a/src/Narf/Narf/NARF.h -------------------------------------------------------------------------------- /src/Narf/Narf/Narf.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;hm;inl;inc;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | Source Files 20 | 21 | 22 | Source Files 23 | 24 | 25 | 26 | 27 | Source Files 28 | 29 | 30 | -------------------------------------------------------------------------------- /src/Narf/Narf/Narf.vcxproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | ../sandbox/pointcloud_xyzn/ ../sandbox/keypoint/ ../sandbox/geometric_descriptor/ 5 | WindowsLocalDebugger 6 | 7 | -------------------------------------------------------------------------------- /src/Narf/Narf/Verbose.h: -------------------------------------------------------------------------------- 1 | #ifndef Verbose 2 | //#define Verbose 3 | #endif 4 | -------------------------------------------------------------------------------- /src/Narf/Narf/main.cpp: -------------------------------------------------------------------------------- 1 | // Registration from depth image by using NARF feature and FPFHSignature33 descriptor 2 | // 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | 9 | #include 10 | #include 11 | 12 | #include 13 | #include "NARF.h" 14 | #include "Verbose.h" 15 | 16 | int main(int argc, char** argv) 17 | { 18 | std::string pointcloud_xyzn_dir, keypoint_dir, descriptor_dir; 19 | 20 | if (argc != 4) 21 | { 22 | std::cout << "Usage: Narf.exe pointcloud_xyzn_dir keypoint_dir descriptor_dir\n"; 23 | return -1; 24 | } 25 | 26 | pointcloud_xyzn_dir = argv[1]; 27 | keypoint_dir = argv[2]; 28 | descriptor_dir = argv[3]; 29 | 30 | if (!boost::filesystem::exists(keypoint_dir)) 31 | boost::filesystem::create_directory(keypoint_dir); 32 | if (!boost::filesystem::exists(descriptor_dir)) 33 | boost::filesystem::create_directory(descriptor_dir); 34 | 35 | 36 | int num_of_pcd = std::count_if( 37 | boost::filesystem::directory_iterator(boost::filesystem::path(pointcloud_xyzn_dir)), 38 | boost::filesystem::directory_iterator(), 39 | [](const boost::filesystem::directory_entry& e) { 40 | return e.path().extension() == ".pcd"; }); 41 | 42 | 43 | for (int i = 0; i < num_of_pcd;++i) 44 | { 45 | // normal point cloud 46 | std::stringstream nss; 47 | nss << pointcloud_xyzn_dir << "pointcloud_xyzn" << i << ".pcd"; 48 | pcl::PointCloud::Ptr scene_xyzn(new pcl::PointCloud); 49 | pcl::io::loadPCDFile(nss.str(), *scene_xyzn); 50 | pcl::PointCloud::Ptr normal(new pcl::PointCloud); 51 | for (int t = 0; t < scene_xyzn->points.size(); ++t) 52 | { 53 | pcl::Normal n; 54 | n.normal_x = scene_xyzn->points[t].normal_x; 55 | n.normal_y = scene_xyzn->points[t].normal_y; 56 | n.normal_z = scene_xyzn->points[t].normal_z; 57 | normal->push_back(n); 58 | } 59 | 60 | // point cloud 61 | pcl::PointCloud::Ptr scene_xyz(new pcl::PointCloud); 62 | for (int t = 0; t < scene_xyzn->points.size(); ++t) 63 | { 64 | pcl::PointXYZ p; 65 | p.x = scene_xyzn->points[t].x; 66 | p.y = scene_xyzn->points[t].y; 67 | p.z = scene_xyzn->points[t].z; 68 | scene_xyz->push_back(p); 69 | } 70 | 71 | // keypoint 72 | #ifdef Verbose 73 | std::cout << "Detect pointcloud" << i << " keypoint\n"; 74 | #endif 75 | NARF narf(scene_xyz); 76 | narf.narf_keypoints_extraction(); 77 | 78 | if (narf.keypoints.size() <= 0) 79 | continue; 80 | 81 | pcl::PointCloud::Ptr pointcloud_keypoints(new pcl::PointCloud); 82 | pcl::copyPointCloud(narf.keypoints, *pointcloud_keypoints); 83 | pointcloud_keypoints->width = pointcloud_keypoints->size(); 84 | pointcloud_keypoints->height = 1; 85 | 86 | // descriptor 87 | #ifdef Verbose 88 | std::cout << "Detect pointcloud" << i << " descriptor\n"; 89 | #endif 90 | pcl::PointCloud::Ptr descriptor(new pcl::PointCloud()); 91 | 92 | pcl::FPFHEstimationOMP fpfh; 93 | fpfh.setInputCloud(pointcloud_keypoints); 94 | fpfh.setSearchSurface(scene_xyz); 95 | fpfh.setInputNormals(normal); 96 | fpfh.setRadiusSearch(0.06); 97 | fpfh.compute(*descriptor); 98 | 99 | //save 100 | if (pointcloud_keypoints->points.size() > 100){ 101 | pointcloud_keypoints->points.resize(100); 102 | descriptor->points.resize(100); 103 | pointcloud_keypoints->width = pointcloud_keypoints->points.size(); 104 | } 105 | std::stringstream kss; 106 | kss << keypoint_dir << "keypoints" << i << ".pcd"; 107 | pcl::io::savePCDFile(kss.str(), *pointcloud_keypoints); 108 | 109 | std::stringstream dss; 110 | dss << descriptor_dir << "descriptor" << i << ".txt"; 111 | std::ofstream d_file(dss.str()); 112 | d_file << "Descriptor vector (FPFHSignature33):\n"; 113 | for (int k = 0; k < descriptor->points.size(); ++k) 114 | { 115 | d_file << "keypoint" << k << "\n"; 116 | for (int t = 0; t < 33; ++t) 117 | d_file << descriptor->points[k].histogram[t] << " "; 118 | 119 | d_file << "\n"; 120 | } 121 | 122 | } 123 | 124 | 125 | return 0; 126 | } -------------------------------------------------------------------------------- /src/Png2Cloud/Png2Cloud.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 2013 4 | VisualStudioVersion = 12.0.31101.0 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Png2Cloud", "Png2Cloud\Png2Cloud.vcxproj", "{3DFD55FA-C10D-44FE-B825-EC97162F360A}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Win32 = Debug|Win32 11 | Release|Win32 = Release|Win32 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {3DFD55FA-C10D-44FE-B825-EC97162F360A}.Debug|Win32.ActiveCfg = Debug|Win32 15 | {3DFD55FA-C10D-44FE-B825-EC97162F360A}.Debug|Win32.Build.0 = Debug|Win32 16 | {3DFD55FA-C10D-44FE-B825-EC97162F360A}.Release|Win32.ActiveCfg = Release|Win32 17 | {3DFD55FA-C10D-44FE-B825-EC97162F360A}.Release|Win32.Build.0 = Release|Win32 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | EndGlobal 23 | -------------------------------------------------------------------------------- /src/Png2Cloud/Png2Cloud.v12.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lecanyu/Sparse3d/30da7ffe111ec17ad3ba2c687530a01c13a93a1a/src/Png2Cloud/Png2Cloud.v12.suo -------------------------------------------------------------------------------- /src/Png2Cloud/Png2Cloud/Png2Cloud.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;hm;inl;inc;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | Source Files 20 | 21 | 22 | 23 | 24 | Source Files 25 | 26 | 27 | Source Files 28 | 29 | 30 | -------------------------------------------------------------------------------- /src/Png2Cloud/Png2Cloud/Png2Cloud.vcxproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /src/Png2Cloud/Png2Cloud/Verbose.h: -------------------------------------------------------------------------------- 1 | #ifndef Verbose 2 | //#define Verbose 3 | #endif 4 | -------------------------------------------------------------------------------- /src/Png2Cloud/Png2Cloud/main.cpp: -------------------------------------------------------------------------------- 1 | // Preprocessing. Convert images to point clouds, calculate normals and etc... 2 | // 3 | 4 | #include 5 | #include 6 | 7 | #include 8 | #include 9 | #include 10 | #include 11 | 12 | #include 13 | 14 | 15 | #include 16 | #include 17 | #include 18 | #include 19 | 20 | #include "Png2Cloud.h" 21 | 22 | 23 | int main(int argc, char**argv) 24 | { 25 | if (argc != 8) 26 | { 27 | std::cout << "Usage: Png2Cloud.exe depth_dir color_dir camera_para pointcloud_dir pointcloud_ds_dir xyzn_dir xyzn_ds_dir\n"; 28 | return -1; 29 | } 30 | std::string depth_dir = argv[1]; 31 | std::string color_dir = argv[2]; 32 | std::string camera_para = argv[3]; 33 | std::string pointcloud_dir = argv[4]; 34 | std::string pointcloud_ds_dir = argv[5]; 35 | std::string xyzn_dir = argv[6]; 36 | std::string xyzn_ds_dir = argv[7]; 37 | 38 | if (!boost::filesystem::exists(pointcloud_dir)) 39 | boost::filesystem::create_directory(pointcloud_dir); 40 | if (!boost::filesystem::exists(pointcloud_ds_dir)) 41 | boost::filesystem::create_directory(pointcloud_ds_dir); 42 | if (!boost::filesystem::exists(xyzn_dir)) 43 | boost::filesystem::create_directory(xyzn_dir); 44 | if (!boost::filesystem::exists(xyzn_ds_dir)) 45 | boost::filesystem::create_directory(xyzn_ds_dir); 46 | 47 | int num_of_depth = std::count_if( 48 | boost::filesystem::directory_iterator(boost::filesystem::path(depth_dir)), 49 | boost::filesystem::directory_iterator(), 50 | [](const boost::filesystem::directory_entry& e) { 51 | return e.path().extension() == ".png"; }); 52 | 53 | int num_of_color = std::count_if( 54 | boost::filesystem::directory_iterator(boost::filesystem::path(color_dir)), 55 | boost::filesystem::directory_iterator(), 56 | [](const boost::filesystem::directory_entry& e) { 57 | return e.path().extension() == ".png"; }); 58 | 59 | Png2Cloud app; 60 | app._camera.LoadFromFile(camera_para); 61 | 62 | for (int i = 0; i < num_of_color;++i) 63 | { 64 | #ifdef Verbose 65 | std::cout << "load png " << i << "\n"; 66 | #endif // Verbose 67 | // load 68 | cv::Mat color; 69 | cv::Mat depth; 70 | app.Load(i, depth_dir, color_dir, depth, color); 71 | 72 | // Png to RGBcloud 73 | pcl::PointCloud::Ptr cloud = app.Png2RGBcloud(depth, color); 74 | std::stringstream ss1; 75 | ss1 << pointcloud_dir << "pointcloud" << i << ".pcd"; 76 | pcl::io::savePCDFile(ss1.str(), *cloud, true); 77 | 78 | pcl::PointCloud::Ptr cloud_ds = app.DownSamle(cloud); 79 | std::stringstream ss2; 80 | ss2 << pointcloud_ds_dir << "pointcloud_ds" << i << ".pcd"; 81 | pcl::io::savePCDFile(ss2.str(), *cloud_ds, true); 82 | 83 | // compute normal 84 | pcl::PointCloud::Ptr raw_cloud_n = app.ComputeModelNormal(cloud); 85 | pcl::PointCloud::Ptr cloud_n(new pcl::PointCloud); 86 | 87 | for (int j = 0; j < raw_cloud_n->points.size(); j++) { 88 | if (!_isnan(raw_cloud_n->points[j].normal_x)) { 89 | cloud_n->push_back(raw_cloud_n->points[j]); 90 | } 91 | } 92 | cloud_n->width = cloud_n->points.size(); 93 | cloud_n->height = 1; 94 | pcl::PointCloud::Ptr cloud_n_ds = app.DownSamle(cloud_n); 95 | 96 | std::stringstream ss3; 97 | ss3 << xyzn_dir << "pointcloud_xyzn" << i << ".pcd"; 98 | pcl::io::savePCDFile(ss3.str(), *cloud_n, true); 99 | 100 | std::stringstream ss4; 101 | ss4 << xyzn_ds_dir << "pointcloud_ds_xyzn" << i << ".pcd"; 102 | pcl::io::savePCDFile(ss4.str(), *cloud_n_ds, true); 103 | 104 | } 105 | return 0; 106 | } -------------------------------------------------------------------------------- /src/ShiTomasi/ShiTomasi.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 2013 4 | VisualStudioVersion = 12.0.31101.0 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ShiTomasi", "ShiTomasi\ShiTomasi.vcxproj", "{F04ECB3D-0B57-4860-AF13-053FF843F7B3}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Win32 = Debug|Win32 11 | Release|Win32 = Release|Win32 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {F04ECB3D-0B57-4860-AF13-053FF843F7B3}.Debug|Win32.ActiveCfg = Debug|Win32 15 | {F04ECB3D-0B57-4860-AF13-053FF843F7B3}.Debug|Win32.Build.0 = Debug|Win32 16 | {F04ECB3D-0B57-4860-AF13-053FF843F7B3}.Release|Win32.ActiveCfg = Release|Win32 17 | {F04ECB3D-0B57-4860-AF13-053FF843F7B3}.Release|Win32.Build.0 = Release|Win32 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | EndGlobal 23 | -------------------------------------------------------------------------------- /src/ShiTomasi/ShiTomasi.v12.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lecanyu/Sparse3d/30da7ffe111ec17ad3ba2c687530a01c13a93a1a/src/ShiTomasi/ShiTomasi.v12.suo -------------------------------------------------------------------------------- /src/ShiTomasi/ShiTomasi/ShiTomasi.cpp: -------------------------------------------------------------------------------- 1 | // Registration from 2d color image by using ShiTomasi corner feature and SIFT descriptor 2 | // 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | 10 | #include 11 | #include 12 | #include 13 | #include 14 | #include "Verbose.h" 15 | 16 | using namespace std; 17 | using namespace cv; 18 | 19 | int main(int argc, char** argv) 20 | { 21 | string color_dir, color_correspondence_file; 22 | if (argc != 3) 23 | { 24 | cout << "Usage:Corner_feature.exe color_dir[input dir] color_correspondence_dir[output dir]\n"; 25 | return 0; 26 | } 27 | 28 | color_dir = argv[1]; 29 | color_correspondence_file = argv[2]; 30 | 31 | if (boost::filesystem::exists(color_correspondence_file)) 32 | boost::filesystem::remove(color_correspondence_file); 33 | 34 | int num_of_color = std::count_if( 35 | boost::filesystem::directory_iterator(boost::filesystem::path(color_dir)), 36 | boost::filesystem::directory_iterator(), 37 | [](const boost::filesystem::directory_entry& e) { 38 | return e.path().extension() == ".png"; }); 39 | 40 | vector> img_keypoints(num_of_color); // keypoints array 41 | vector img_descriptors(num_of_color); // descriptors array 42 | 43 | 44 | GoodFeaturesToTrackDetector gftt(100, 0.001, 40, 5); // Shi-Tomasi Algorithm 45 | SiftDescriptorExtractor descript; 46 | 47 | #pragma omp parallel for num_threads( 8 ) schedule( dynamic ) 48 | for (int i = 0; i < num_of_color;++i) 49 | { 50 | stringstream ss1; 51 | ss1 << color_dir << "color" << i << ".png"; 52 | Mat image1 = imread(ss1.str(), 0); 53 | vector keypoints1; 54 | gftt.detect(image1, keypoints1); 55 | 56 | // save 57 | img_keypoints[i] = keypoints1; 58 | 59 | Mat description1; 60 | descript.compute(image1, img_keypoints[i], description1); 61 | img_descriptors[i] = description1; 62 | #ifdef Verbose 63 | cout << "image" << i << " find " << img_keypoints[i].size() << " keypoints\n"; 64 | #endif 65 | } 66 | 67 | // correspondence 68 | struct trip 69 | { 70 | int pixel1_x, pixel1_y; 71 | int pixel2_x, pixel2_y; 72 | }; 73 | struct color_match 74 | { 75 | int img1, img2; 76 | vector cor_pixel; 77 | }; 78 | 79 | ofstream ouput_file(color_correspondence_file); 80 | ouput_file << "# Save correspondence pixel in color image.\n# Format: \n# image_id image_i image_j \n# pixel_i_x pixel_i_y pixel_j_x pixel_j_y\n\n"; 81 | 82 | #pragma omp parallel for num_threads( 8 ) schedule( dynamic ) 83 | for (int i = 0; i < num_of_color; ++i) 84 | { 85 | vector good_matches; 86 | 87 | for (int j = i + 1; j < num_of_color; ++j) 88 | { 89 | vector& keypoints1 = img_keypoints[i]; 90 | vector& keypoints2 = img_keypoints[j]; 91 | Mat& description1 = img_descriptors[i]; 92 | Mat& description2 = img_descriptors[j]; 93 | 94 | if (keypoints1.size() <= 0 || keypoints2.size() <= 0) 95 | continue; 96 | 97 | //kd-tree build correspondence 98 | flann::Index kdtree(description2, flann::KDTreeIndexParams(4)); 99 | Mat m_indices(description1.rows, 2, CV_32S); 100 | Mat m_dists(description1.rows, 2, CV_32F); 101 | kdtree.knnSearch(description1, m_indices, m_dists, 2, cv::flann::SearchParams(64)); 102 | 103 | // result 104 | color_match mat; 105 | mat.img1 = i; mat.img2 = j; // image1 & image2 106 | 107 | for (int t = 0; t < description1.rows; ++t) 108 | { 109 | if (m_dists.at(t, 1) * 0.6 > m_dists.at(t, 0)) 110 | { 111 | int x1 = cvRound(keypoints1[t].pt.x); 112 | int y1 = cvRound(keypoints1[t].pt.y); 113 | 114 | int x2 = cvRound(keypoints2[m_indices.at(t, 0)].pt.x); 115 | int y2 = cvRound(keypoints2[m_indices.at(t, 0)].pt.y); 116 | #ifdef Verbose 117 | cout << "find a match (" << x1 << "," << y1 << ")----(" << x2 << "," << y2 << ")\n"; 118 | #endif 119 | trip tri; 120 | tri.pixel1_x = x1; tri.pixel1_y = y1; 121 | tri.pixel2_x = x2; tri.pixel2_y = y2; 122 | mat.cor_pixel.push_back(tri); 123 | } 124 | } 125 | 126 | good_matches.push_back(mat); 127 | } 128 | 129 | #pragma omp critical 130 | { 131 | for (int t = 0; t < good_matches.size(); ++t) 132 | { 133 | if (good_matches[t].cor_pixel.size() >= 4) 134 | { 135 | ouput_file << "image_id " << good_matches[t].img1 << " " << good_matches[t].img2 << "\n"; 136 | for (int k = 0; k < good_matches[t].cor_pixel.size(); ++k) 137 | { 138 | ouput_file << good_matches[t].cor_pixel[k].pixel1_x << " " 139 | << good_matches[t].cor_pixel[k].pixel1_y << " " 140 | << good_matches[t].cor_pixel[k].pixel2_x << " " 141 | << good_matches[t].cor_pixel[k].pixel2_y << "\n"; 142 | } 143 | } 144 | } 145 | } 146 | } 147 | ouput_file.close(); 148 | return 0; 149 | } -------------------------------------------------------------------------------- /src/ShiTomasi/ShiTomasi/ShiTomasi.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;hm;inl;inc;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | Source Files 20 | 21 | 22 | 23 | 24 | Source Files 25 | 26 | 27 | -------------------------------------------------------------------------------- /src/ShiTomasi/ShiTomasi/Verbose.h: -------------------------------------------------------------------------------- 1 | #ifndef Verbose 2 | //#define Verbose 3 | #endif 4 | -------------------------------------------------------------------------------- /src/Sift/Sift.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 2013 4 | VisualStudioVersion = 12.0.31101.0 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Sift", "Sift\Sift.vcxproj", "{1C313157-88A6-46CC-B6F4-2B72C920A723}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Win32 = Debug|Win32 11 | Release|Win32 = Release|Win32 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {1C313157-88A6-46CC-B6F4-2B72C920A723}.Debug|Win32.ActiveCfg = Debug|Win32 15 | {1C313157-88A6-46CC-B6F4-2B72C920A723}.Debug|Win32.Build.0 = Debug|Win32 16 | {1C313157-88A6-46CC-B6F4-2B72C920A723}.Release|Win32.ActiveCfg = Release|Win32 17 | {1C313157-88A6-46CC-B6F4-2B72C920A723}.Release|Win32.Build.0 = Release|Win32 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | EndGlobal 23 | -------------------------------------------------------------------------------- /src/Sift/Sift.v12.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lecanyu/Sparse3d/30da7ffe111ec17ad3ba2c687530a01c13a93a1a/src/Sift/Sift.v12.suo -------------------------------------------------------------------------------- /src/Sift/Sift/SIFT.cpp: -------------------------------------------------------------------------------- 1 | // Registration from 2d color image by using SIFT feature and SIFT descriptor 2 | // 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | 9 | #include 10 | #include 11 | #include 12 | #include 13 | #include "Verbose.h" 14 | using namespace cv; 15 | using namespace std; 16 | 17 | 18 | 19 | int main(int argc, char** argv) 20 | { 21 | string color_dir, color_correspondence_file; 22 | if (argc != 3) 23 | { 24 | cout << "Usage:Sift.exe color_dir[input dir] sift_correspondence_file[output dir]"; 25 | return 0; 26 | } 27 | 28 | color_dir = argv[1]; 29 | color_correspondence_file = argv[2]; 30 | 31 | if (boost::filesystem::exists(color_correspondence_file)) 32 | boost::filesystem::remove(color_correspondence_file); 33 | 34 | int num_of_color = std::count_if( 35 | boost::filesystem::directory_iterator(boost::filesystem::path(color_dir)), 36 | boost::filesystem::directory_iterator(), 37 | [](const boost::filesystem::directory_entry& e) { 38 | return e.path().extension() == ".png"; }); 39 | 40 | vector> img_keypoints(num_of_color); // keypoints array 41 | vector img_descriptors(num_of_color); // descriptors array 42 | 43 | SiftFeatureDetector feature; 44 | SiftDescriptorExtractor descript; 45 | 46 | #pragma omp parallel for num_threads( 8 ) schedule( dynamic ) 47 | for (int i = 0; i < num_of_color; ++i) 48 | { 49 | stringstream ss1; 50 | ss1 << color_dir << "color" << i << ".png"; 51 | Mat image1 = imread(ss1.str(), 0); 52 | vector keypoints1; 53 | feature.detect(image1, keypoints1); 54 | 55 | // save 56 | img_keypoints[i] = keypoints1; 57 | Mat description1; 58 | descript.compute(image1, img_keypoints[i], description1); 59 | img_descriptors[i] = description1; 60 | #ifdef Verbose 61 | cout << "image" << i << " find " << img_keypoints[i].size() << " keypoints\n"; 62 | #endif 63 | 64 | } 65 | 66 | // correspondence 67 | struct trip 68 | { 69 | int pixel1_x, pixel1_y; 70 | int pixel2_x, pixel2_y; 71 | }; 72 | struct color_match 73 | { 74 | int img1, img2; 75 | vector cor_pixel; 76 | }; 77 | 78 | ofstream ouput_file(color_correspondence_file); 79 | ouput_file << "# Save correspondence pixel in color image.\n# Format: \n# image_id image_i image_j \n# pixel_i_x pixel_i_y pixel_j_x pixel_j_y\n\n"; 80 | 81 | #pragma omp parallel for num_threads( 8 ) schedule( dynamic ) 82 | for (int i = 0; i < num_of_color; ++i) 83 | { 84 | vector good_matches; 85 | 86 | for (int j = i + 1; j < num_of_color; ++j) 87 | { 88 | vector& keypoints1 = img_keypoints[i]; 89 | vector& keypoints2 = img_keypoints[j]; 90 | Mat& description1 = img_descriptors[i]; 91 | Mat& description2 = img_descriptors[j]; 92 | 93 | if (keypoints1.size() <= 0 || keypoints2.size() <= 0) 94 | continue; 95 | 96 | //kd-tree 97 | flann::Index kdtree(description2, flann::KDTreeIndexParams(4)); 98 | Mat m_indices(description1.rows, 2, CV_32S); 99 | Mat m_dists(description1.rows, 2, CV_32F); 100 | kdtree.knnSearch(description1, m_indices, m_dists, 2, cv::flann::SearchParams(64)); 101 | 102 | // result 103 | color_match mat; 104 | mat.img1 = i; mat.img2 = j; 105 | 106 | for (int t = 0; t < description1.rows; ++t) 107 | { 108 | if (m_dists.at(t, 1) * 0.4 > m_dists.at(t, 0)) 109 | { 110 | int x1 = cvRound(keypoints1[t].pt.x); 111 | int y1 = cvRound(keypoints1[t].pt.y); 112 | 113 | int x2 = cvRound(keypoints2[m_indices.at(t, 0)].pt.x); 114 | int y2 = cvRound(keypoints2[m_indices.at(t, 0)].pt.y); 115 | 116 | trip tri; 117 | tri.pixel1_x = x1; tri.pixel1_y = y1; 118 | tri.pixel2_x = x2; tri.pixel2_y = y2; 119 | mat.cor_pixel.push_back(tri); 120 | } 121 | } 122 | 123 | good_matches.push_back(mat); 124 | #ifdef Verbose 125 | cout << "total match number:" << mat.cor_pixel.size() << "\n\n"; 126 | #endif 127 | 128 | } 129 | 130 | #pragma omp critical 131 | { 132 | for (int t = 0; t < good_matches.size(); ++t) 133 | { 134 | if (good_matches[t].cor_pixel.size() >= 4) 135 | { 136 | ouput_file << "image_id " << good_matches[t].img1 << " " << good_matches[t].img2 << "\n"; 137 | for (int k = 0; k < good_matches[t].cor_pixel.size(); ++k) 138 | { 139 | if (k > 100) 140 | break; 141 | ouput_file << good_matches[t].cor_pixel[k].pixel1_x << " " 142 | << good_matches[t].cor_pixel[k].pixel1_y << " " 143 | << good_matches[t].cor_pixel[k].pixel2_x << " " 144 | << good_matches[t].cor_pixel[k].pixel2_y << "\n"; 145 | } 146 | } 147 | } 148 | } 149 | } 150 | ouput_file.close(); 151 | return 0; 152 | } -------------------------------------------------------------------------------- /src/Sift/Sift/Sift.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;hm;inl;inc;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | Source Files 20 | 21 | 22 | 23 | 24 | Source Files 25 | 26 | 27 | -------------------------------------------------------------------------------- /src/Sift/Sift/Sift.vcxproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /src/Sift/Sift/Verbose.h: -------------------------------------------------------------------------------- 1 | #ifndef Verbose 2 | //#define Verbose 3 | #endif 4 | --------------------------------------------------------------------------------