bastienjacquet / planesweeplib Goto Github PK
View Code? Open in Web Editor NEWFork of the PlaneSweepLib by Christian Häne (ETH Zurich)
License: GNU General Public License v3.0
Fork of the PlaneSweepLib by Christian Häne (ETH Zurich)
License: GNU General Public License v3.0
Content and Copyright -------------------------------- This software package PlaneSweepLib (PSL) contains a C++/CUDA implementation of plane sweeping stereo matching for pinhole and fisheye images. The package comes with test data and scripts to run the software on the test data. It was tested on Linux using the GCC Toolchain and on Windows using Visual Studio. Copyright 2016 Christian Haene (ETH Zuerich) Copyright 2016 Bastien Jacquet, Louis Amore (Kitware) [for src/Apps/cudaPlanesweepMAPTk.cpp] PSL is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. PSL is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with PSL. If not, see <http://www.gnu.org/licenses/>. Version -------------------------------- 1.0 - February 24 2016 Citation -------------------------------- If you use this software package please cite the relevant publications. For using the plane sweep code please cite: Christian Häne, Lionel Heng, Gim Hee Lee, Alexey Sizov, Marc Pollefeys, Real-Time Direct Dense Matching on Fisheye Images Using Plane-Sweeping Stereo, Proc Int. Conf. on 3D Vison (3DV) 2014 The datasets provided with the pinhole version of the code were initially published in: Christian Häne, Christopher Zach, Bernhard Zeisl, Marc Pollefeys, A Patch Prior for Dense 3D Reconstruction in Man-Made Environments, Proc. Int. Conf. on 3D Data, Imaging, Modeling, Processing, Visualization and Transmission (3DIMPVT) 2012 Furthermore this code served as a basis for the papers: Christian Häne, Torsten Sattler, Marc Pollefeys, Obstacle Detection for Self-Driving Cars Using Only Monocular Cameras and Wheel Odometry, Proc. IEEE/RSJ Int. Conf. on Intelligent Robots and Systems (IROS) 2015 Thomas Schöps, Torsten Sattler, Christin Häne, Marc Pollefeys, 3D Modeling on the Go: Interactive 3D Reconstruction of Large-Scale Scenes on Mobile Devices, Proc Int. Conf. on 3D Vison (3DV) 2015 Prerequisites -------------------------------- The code is written in C++ and CUDA. To use it you need a CUDA compatible Nvidia GPU. The following libraries are required: GCC Toolchain on Linux Visual Studio C++ on Windows CMake Nvidia CUDA Boost (system filesystem program_options) OpenCV Eigen3 Instructions Linux ----------------------------- To compile the code open a terminal and cd to the root directory PlaneSweepLib of the package and run: mkdir build cd build cmake .. make The package comes with test data and applications that show how to use the plane sweep code. To run the tests on the provided data cd to the root directory PlaneSweepLib of the package and run: sh runPinholePlanesweepTestsLinux.sh sh runFisheyePlanesweepTestsLinux.sh The results are written to the folder PlaneSweepLib/testResults. To check if the code runs correctly reference results are provided in the folder PlaneSweepLib/referenceTestResults Instructions Windows --------------------------------- Open a command prompt and cd to the root directory PlaneSweepLib of the package and run: mkdir build cd build cmake -G "Visual Studio 10 Win64" .. (Replace "Visual Studio 10 Win64" with your version, cmake without arguments provides a list. Alternatively use cmake-gui to generate the project files.) Open the project file PlaneSweepLib/build/PSL.sln with Visual Studio and compile the whole solution in Release mode. The package comes with test data and applications that show how to use the plane sweep code. To run the tests on the provided data go to the command prompt and cd to the root directory PlaneSweepLib of the package and run: runPinholePlanesweepTestsWindows.bat runFisheyePlanesweepTestsWindows.bat The results are written to the folder PlaneSweepLib/testResults. To check if the code runs correctly reference results are provided in the folder PlaneSweepLib/referenceTestResults Acknowledgements ---------------------------------- This code was written in the Computer Vision and Geometry Group (CVG) led by Prof. Marc Pollefeys. Helpful discussions and suggestions from Thomas Schöps helped to improve the quality and performance of the code. The code was written as part of the V-Charge project, grant #269916 under the European Community’s Seventh Framework Programme (FP7/2007-2013)
Hi! thanks for sharing..
how is odometry data (system_poses.txt) obtained?
I read in "Obstacle Detection for Self-Driving Cars Using Only Monocular Cameras and Wheel Odometry" that only wheel encoders are used, however the provided system poses looks 6DoF.
Can you share more details on this?
thanks a lot!
hi, thank you for sharing this great algorithm and code.
i tested it with my own dataset (just a pair of stereo images ) . I setup it as the left image as origin of world coordinates.
but the result is not as good as yours.
any advice for me to follow? ( I tested my rectified image pair with the pinhole mode. )
thanks a lot !
Hello.
I failed to build the source code.
The error message is,
/home/hide/hide_ws/mvs/PlaneSweepLib/src/PSL/psl_cudaBase/cudaFishEyeImageProcessor.cpp: In member function ‘std::pair<PSL_CUDA::DeviceImage, PSL::FishEyeCameraMatrix<double> > PSL_CUDA::CudaFishEyeImageProcessor::undistort(double, double, double, double, double, double)’:
/home/hide/hide_ws/mvs/PlaneSweepLib/src/PSL/psl_cudaBase/cudaFishEyeImageProcessor.cpp:78:92: error: no matching function for call to ‘make_pair<PSL_CUDA::DeviceImage, PSL::FishEyeCameraMatrix<double> >(PSL_CUDA::DeviceImage&, PSL::FishEyeCameraMatrix<double>&)’
return std::make_pair<DeviceImage, FishEyeCameraMatrix<double> >(outputImage, newCamera);
^
In file included from /usr/include/c++/7/bits/stl_algobase.h:64:0,
from /usr/include/c++/7/bits/char_traits.h:39,
from /usr/include/c++/7/ios:40,
from /usr/include/c++/7/istream:38,
from /usr/include/c++/7/sstream:38,
from /home/hide/hide_ws/mvs/PlaneSweepLib/src/PSL/psl_cudaBase/cudaCommon.h:21,
from /home/hide/hide_ws/mvs/PlaneSweepLib/src/PSL/psl_cudaBase/deviceImage.h:21,
from /home/hide/hide_ws/mvs/PlaneSweepLib/src/PSL/psl_cudaBase/cudaFishEyeImageProcessor.h:21,
from /home/hide/hide_ws/mvs/PlaneSweepLib/src/PSL/psl_cudaBase/cudaFishEyeImageProcessor.cpp:18:
/usr/include/c++/7/bits/stl_pair.h:524:5: note: candidate: template<class _T1, class _T2> constexpr std::pair<typename std::__decay_and_strip<_Tp>::__type, typename std::__decay_and_strip<_T2>::__type> std::make_pair(_T1&&, _T2&&)
make_pair(_T1&& __x, _T2&& __y)
^~~~~~~~~
/usr/include/c++/7/bits/stl_pair.h:524:5: note: template argument deduction/substitution failed:
/home/hide/hide_ws/mvs/PlaneSweepLib/src/PSL/psl_cudaBase/cudaFishEyeImageProcessor.cpp:78:92: note: cannot convert ‘outputImage’ (type ‘PSL_CUDA::DeviceImage’) to type ‘PSL_CUDA::DeviceImage&&’
return std::make_pair<DeviceImage, FishEyeCameraMatrix<double> >(outputImage, newCamera);
^
src/PSL/CMakeFiles/PSL.dir/build.make:1545: recipe for target 'src/PSL/CMakeFiles/PSL.dir/psl_cudaBase/cudaFishEyeImageProcessor.cpp.o' failed
make[2]: *** [src/PSL/CMakeFiles/PSL.dir/psl_cudaBase/cudaFishEyeImageProcessor.cpp.o] Error 1
CMakeFiles/Makefile2:174: recipe for target 'src/PSL/CMakeFiles/PSL.dir/all' failed
Has anyone met this error before?
I use Ubuntu 18.04 and CUDA 11.1 .
Sincerely,
Thank you for you excellent work! You get R and T matrix from model-0-cams.txt, but what does the R and T mean? I guess
R = cameraToSystem_R x SystemToWorld_R, and
T = cameraToSystem_T + SystemToWorld_T,
but I get error when running the code, wish someone can give me some advice.
Hello Mr. Jacquet
I am currently trying to use the PSL library to generate point cloud in a ROS environment. In the paper "Real-Time Direct Dense Matching on Fisheye Images Using Plane-Sweeping Stereo" the authors also used the depth images to compute Point Clouds. Would you have any suggestions on how i could proceed? Any insight would be highly appreciated.
Regards
Abhilash Nand Kumar
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.