# 3DUNDERWORLD-Structured-Light-Scanner
[![Build Status](https://travis-ci.org/theICTlab/3DUNDERWORLD-SLS-GPU_CPU.svg?branch=dev)](https://travis-ci.org/theICTlab/3DUNDERWORLD-SLS-GPU_CPU)
Structured light scanner is a tool to reconstruct point cloud from series of images lit by patterned light. As showing in the following image, patterns are projected to the object in the grid manner. Each cell in the grid has a unique sequence. The corresponding points can be extracted by decoding the sequences from both images.
![img](https://raw.githubusercontent.com/theICTlab/3DUNDERWORLD-SLS-GPU_CPU/dev/screenshots/flow.png)
In this version, the reconstruction process is reimplemented both on CPU and GPU. Both versions accelerate the reconstruction time. Especially the later one.
## Dependencies
* OpenCV2
* CUDA (6.0+)
* glm
## Howto
### How it works
The main building blocks of the libraries are `ImageProcessor` and `Reconstructor`. Image processors take images, projector parameters and camera calibration parameters as input and produce `Buckets`. `Reconstructor` combines all the Buckets to generate the point cloud.
![Alt text](https://rawgit.com/theICTlab/3DUNDERWORLD-SLS-GPU_CPU/dev/doc/how-it-works.svg)
### Compile and run demo binaries
Demo binaries and data is included. A CMake script is included to compile the binaries and libraries.
```bash
git clone --recursive https://github.com/theICTlab/3DUNDERWORLD-SLS-GPU_CPU.git
cd 3DUNDERWORLD-SLS-GPU_CPU
mkdir build
cd build
cmake ..
make
```
If CUDA is detected in your system, the cmake flag `ENABLE_CUDA` is set to `on` by default, both CPU and GPU constructors are created in the `bin` folder. Otherwise, only CPU constructor will be generated. To run the binaries, you can pass the data folder and camera configuration files as parameters, or using the default value if you compiled with the commands above.
You can use `cmake .. -DENABLE_CUDA=off` to disable CUDA if you don't want compile the GPU binary.
### Enable test
A test using [Google Test Framework](https://github.com/google/googletest.git) is included in the build. To use the test, enable `GTEST` flag at configuration stage.
```bash
git clone https://github.com/theICTlab/3DUNDERWORLD-SLS-GPU_CPU.git
cd 3DUNDERWORLD-SLS-GPU_CPU
mkdir build
cd build
cmake .. -DGTEST=ON
make
make test
```
Google test will be downloaded and compiled during the compilation stage.
### Build documentation
Document with Doxygen is availabe to be built. Use `-DBUILD_DOC=on` cmake flag to enable documentation. Run `make doc`, the documentation will be generated in the `doc` directory of building path.
### Code coverage
Code coverage report is provided by using [lcov](http://ltp.sourceforge.net/coverage/lcov.php). In order to get the code coverage report, enable both test and coverage flag: `-DGTEST=on -DCOVERAGE=on` and run `make coverage`. The coverage report will be generated in the `coverage` directory of building path.
### Run demo binary
```bash
usage: ./SLS --leftcam=string --rightcam=string --leftconfig=string --rightconfig=string --output=string --format=string --width=unsigned long --height=unsigned long [options] ...
options:
-l, --leftcam Left camera image folder (string)
-r, --rightcam Right camera image folder (string)
-L, --leftconfig Left camera configuration file (string)
-R, --rightconfig Right camera configuration file (string)
-o, --output Output folder (string)
-f, --format Suffix of image files, e.g. jpg (string)
-w, --width Projector width (unsigned long)
-h, --height Projector height (unsigned long)
-?, --help print this message
```
The configuration files are `xml` files generated by OpenCV calibration tool, including intrinsic and extrinsic parameters.
Note: --output is the name and location of the output file (either ply ot obj) e.g ./output/output.ply
### Grab the output
Most of the outputs are written to the log file named `SLS.log`. To track the outputs while running the binary, run `tail -f sls.log` in another terminal of the same directory.
### Use the library
This project also provides libraries that can be easily integrated into other projects. Here's a quick start code for using the libraries. An example of [CPU](https://github.com/theICTlab/3DUNDERWORLD-SLS-GPU_CPU/blob/dev/src/app/App.cpp) and [GPU](https://github.com/theICTlab/3DUNDERWORLD-SLS-GPU_CPU/blob/dev/src/app/App_CUDA.cu) applications are included in the repository.
### Run library on demo data
Run the library using the included example images
```bash
cd 3DUNDERWORLD-SLS-GPU_CPU
mkdir test
cd test
mkdir Output
cp -R ../data/alexander/leftCam ./
cp -R ../data/alexander/rightCam ./
cmake ..
make
./bin/SLS --leftcam=./leftCam/dataset1 --rightcam=./rightCam/dataset1 --leftconfig=./leftCam/calib/output/calib.xml --rightconfig=./rightCam/calib/output/calib.xml --output=./Output/output.ply --format=jpg --width=1024 --height=768
```
## Known issues
Since there's no good API for cameras, the camera acquisition is not implemented. However, interfaces are provided.
We welcome you to implement your camera class and make a pull request to this project.
Also please note that since the example data files are currently included in the repository, the size of repository is 300MB. It may take while to clone.
## Version Information
### [v4]
Lead software developer: Qing Gu
Researchers: Qing Gu, Charalambos Poullis
Immersive and Creative Technologies Lab (http://www.theICTlab.org), Concordia University
### [v1-v3.2]
Lead software developer: Kyriakos Herakleous
Researchers: Kyriakos Herakleous, Charalambos Poullis
Immersive and Creative Technologies Lab (http://www.theICTlab.org), Concordia University
#### Part of the 3DUNDERWORLD project: http://www.3dunderworld.org
##### IMPORTANT: To use this software, YOU MUST CITE the following in any resulting publication:*
```
@article{GuHerakleousPoullis3dunderworld,
title={A Structured-Light Scanning Software for Rapid Geometry Acquisition},
author={Gu, Qing and Herakleous, Kyriakos and Poullis, Charalambos},
journal={TBA},
year={2016}
}
@article{DBLP:journals/corr/HerakleousP14,
author = {Kyriakos Herakleous and
Charalambos Poullis},
title = {3DUNDERWORLD-SLS: An Open-Source Structured-Light Scanning System
for Rapid Geometry Acquisition},
journal = {CoRR},
volume = {abs/1406.6595},
year = {2014},
url = {http://arxiv.org/abs/1406.6595},
timestamp = {Tue, 01 Jul 2014 11:58:08 +0200},
biburl = {http://dblp.uni-trier.de/rec/bib/journals/corr/HerakleousP14},
bibsource = {dblp computer science bibliography, http://dblp.org}
}
```
没有合适的资源?快使用搜索试试~ 我知道了~
结构光扫描仪_C++_Cuda_下载.zip
共144个文件
png:48个
jpg:14个
cpp:13个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 38 浏览量
2023-04-30
23:37:21
上传
评论
收藏 39.59MB ZIP 举报
温馨提示
结构光扫描仪_C++_Cuda_下载.zip
资源推荐
资源详情
资源评论
收起资源包目录
结构光扫描仪_C++_Cuda_下载.zip (144个子文件)
acmsmall-sample-bibfile.bib 16KB
sample.bib 394B
model3-num-names.bst 30KB
model6-num-names.bst 30KB
model3a-num-names.bst 29KB
model5-names.bst 29KB
elsarticle-num.bst 29KB
elsarticle-harv.bst 28KB
model4-names.bst 28KB
model2-names.bst 27KB
elsarticle-num-names.bst 26KB
model1b-num-names.bst 25KB
model1-num-names.bst 25KB
model1c-num-names.bst 25KB
model1a-num-names.bst 25KB
elsarticle.cls 25KB
CodeCoverage.cmake 7KB
FindGLM.cmake 1KB
Calibrator.cpp 13KB
ImageFileProcessor.cpp 8KB
RunTest.cpp 5KB
Log.cpp 3KB
App.cpp 3KB
ReconstructorCPU.cpp 2KB
PointCloud.cpp 2KB
GrayCode.cpp 2KB
DynamicBitset.cpp 622B
CalibrateCamera.cpp 556B
generateGraycode.cpp 514B
ImageProcessor.cpp 82B
Reconstructor.cpp 0B
ReconstructorCUDA.cu 11KB
DynamicBits.cu 5KB
FileReaderCUDA.cu 3KB
App_CUDA.cu 3KB
DynamicBits.cuh 6KB
ReconstructorCUDA.cuh 6KB
FileReaderCUDA.cuh 2KB
ImageFileProcessorCUDA.cuh 1016B
CUDA_Error.cuh 468B
how-it-works.dia 2KB
setup.dia 2KB
systemOverview.eps 229KB
.gitattributes 41B
.gitignore 96B
.gitmodules 94B
cmdline.h 18KB
ImageProcessor.h 6KB
DynamicBitset.h 5KB
ImageFileProcessor.h 4KB
Projector.h 2KB
ReconstructorCPU.h 2KB
Ray.h 1KB
Reconstructor.h 1KB
Calibrator.hpp 2KB
PointCloud.hpp 2KB
Log.hpp 1KB
GrayCode.hpp 851B
doxygen.in 723B
setup1.jpg 1.06MB
setup_.JPG 924KB
half_artemis02.JPG 650KB
half_artemis01.jpg 629KB
plane1_cam1.JPG 102KB
plane3_cam1.JPG 98KB
setup.jpg 94KB
plane2_cam1.JPG 77KB
plane3_cam2.JPG 76KB
plane1_cam2.JPG 74KB
cam1.jpg 65KB
plane2_cam2.JPG 64KB
box_cam1.JPG 55KB
box_cam2.JPG 48KB
LICENSE 7KB
point_density.m 1KB
point_density_MATLAB.m 1KB
README.md 7KB
paper.md 2KB
arch.obj 17.8MB
alexander.obj 3.81MB
arch.ply 24.5MB
alexander.ply 5.08MB
color_result.png 1.44MB
aztec.png 1.1MB
amfora.png 1.1MB
flow.png 1001KB
alex.png 931KB
kariatida.png 860KB
Afro.png 744KB
arch.png 744KB
amfora_real.png 668KB
aztec_real.png 598KB
half_artemis00.png 565KB
alex_real.png 563KB
aztec_CG.png 518KB
area_selection.png 492KB
kariatida_CG.png 431KB
amfora_CG.png 430KB
kariatida_real.png 405KB
alexander.png 364KB
共 144 条
- 1
- 2
资源评论
快撑死的鱼
- 粉丝: 1w+
- 资源: 9154
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Picasso_v3.1 2.ipa
- chromedriver-mac-arm64.zip
- 蓝zapro.apk
- chromedriver-linux64.zip
- UCAS研一深度学习实验-MNIST手写数字识别python源码+详细注释(高分项目)
- 基于Python和PyTorch框架完成的一个手写数字识别实验源码(带MINIST手写数字数据集)+详细注释(高分项目)
- 基于Matlab在MNIST数据集上利用CNN完成手写体数字识别任务,并实现单层CNN反向传播算法+源代码+文档说明(高分项目)
- NVIDIA驱动、CUDA和Pytorch及其依赖
- 基于SVM多特征融合的微表情识别python源码+项目说明+详细注释(高分课程设计)
- html动态爱心代码一(附源码)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功