Pop Single Image
This code contains algorithm to pop up a 3D plane model from images. Given a RGB and ground segmentation image, the algorithm detects edges and selecs the ground-wall boundary edges then pops up 3D point cloud.
NOTE It is updated and extended to multi-view pop-up plane slam. See the pop_up_wall
package there.
Authors: Shichao Yang
Related Paper:
- Real-time 3D Scene Layout from a Single Image Using Convolutional Neural Networks, ICRA 2016, S. Yang, D. Maturana, S. Scherer PDF
- Pop-up SLAM: Semantic Monocular Plane SLAM for Low-texture Environments, IROS 2016, S. Yang, Y. Song, M. Kaess, S. Scherer PDF
If you use the code in your research work, please cite the above paper. Please do not hesitate to contact the authors if you have any further questions.
Installation
Prerequisites
This code contains several ros packages. We test it in ROS indigo/kinetic, Ubuntu 14.04/16.04, Opencv 2/3. Create or use existing a ros workspace.
mkdir -p ~/popup_ws/src
cd ~/popup_ws/src
catkin_init_workspace
git clone [email protected]:shichaoy/pop_up_image.git
cd pop_up_image
Install dependency packages of python
sh install_dependenices.sh
Compile
cd ~/popup_ws
catkin_make
Running
source devel/setup.bash
roslaunch pop_up_wall pop_main_sample.launch
You will see point cloud in Rviz. Change the image id in the launch file to test more examples stored under pop_up_wall/data.
Notes
- If it shows "NameError: 'pop_up fun...params' is not defined". That is due to python dependency modules are not installed properly. Make sure "from skimage.measure import find_contours,approximate_polygon" can work alone in python. Also 'souce setup.bash' when python/pop_up_python changes/recompiles. There is some pop-up image python function I cannot find C++ replacement therefore we have to use python... The main part is in C++.