slstudio
========
##SLStudio -- Real Time Structured Light##
This software is designed to enable anyone to implement a custom 3D structured light scanner using a single camera and light projector. It is modular and has a focus on processing speed, enabling real-time structured light capture at 20 Hz and more. When using standard commercial projector and a webcam, the obtainable speed is lower due to the lack of hardware triggering.
When using the software in academic work, please consider citing the following publication.
Wilm et al., *SLStudio: Open-Source Framework for Real-Time Structured Light*, IPTA 2014 [IEEE Xplore](http://ieeexplore.ieee.org/xpl/articleDetails.jsp?reload=true&arnumber=7002001)
##Demo videos
[![SLStudio: Real-time 2x3 PSP](http://img.youtube.com/vi/tti4-9ADYLs/0.jpg)](https://www.youtube.com/watch?v=tti4-9ADYLs)
[![SLStudio: Calibration](http://img.youtube.com/vi/swszXuPxGZI/0.jpg)](https://www.youtube.com/watch?v=swszXuPxGZI)
##Compiling and installing
SLStudio is being developed with qmake (QtCreator). The /src/SLStudio.pro file is the project file which contains all information about the project and its dependencies needed for compiling.
It is has a number of dependencies that you need to install before being able to compile the program on your machine:
* Qt 5.X (4.X could be used with relatively few modifications)
* OpenCV 2.9.X (3.0 could be used with relatively few modifications)
* PCL 1.7.X (Point Cloud Library)
* VTK 6.2 including QVTK
* Boost
* Eigen
* FLANN
* GLEW
* Depending on your camera: libdc1394, FlyCapture API, XIMEA xiApi, IDS Imaging uEye API
The project has successfully been compiled on Ubuntu 16.04, OS X 10.9 and Windows 7. The recommended OS is Ubuntu 16.04.
###Ubuntu 16.04
Ubuntu also has all of the dependencies available as packages (except camera libraries). Running the following line should have you (almost) set:
```
sudo apt-get install qt5-qmake libvtk6-qt-dev libpcl-dev libopencv-dev libglew-dev qtcreator
```
The greatest advantage of using Ubuntu is that you are able to render structured light patterns on a secondary X screen, which does not interfere with your main screen in which Unity and the SLStudio GUI run. Usually, this is an unusual use-case, as normally you are able to move the mouse or windows onto the second screen or use ALT-Tab. However, by setting up two X Screens in xorg.conf with a gap in between them, you can make Unity completely ignore the second screen so it is only SLStudio that draws onto it. This also depends on your graphics driver supporting multiple X screens (work with current proprietary nVidia and AMD drivers).
###OS X 10.11
On OS X, the dependencies are available through MacPorts. You will not get completely independent screens, so your measurements may be corrupted by GUI activity. Otherwise the program runs well.
###Windows 7/8/10
On Windows machines, OpenCV and PCL are available as downloads, but since everything needs to be ABI compatible, it is probably best to compile the dependencies from source with the same compiler (e.g. MSVC) which is rather time-consuming but possible. It is some time since we have last compiled on Windows, but all of the code should be compatible.
###Camera APIs
Because high performance operation of cameras often requires vendor- or device-specific features or setup, we choose not to use an intermediate layer such as OpenCV to communicate with the camera. Currently, wrappers for a number of camera APIs is provided, and we invite anyone who implements others to contribute them. Be aware that we have only tested on a limited number of cameras, and some of the configurations performed may only apply to our specific models (e.g. images are assumed to be in grayscale). In any case, you may need to modify some of the camera code to get this to work with hardware triggering (required for real time performance).
###Matlab wrappers
The project also contains Matlab mex-wrappers for the OpenGL projector and Camera. This makes it possible to e.g. determine the gamma response of your camera-projector setup, or other debugging tasks. The mex-wrappers are compiled from Matlab by running matlab/make.m. Tested on Ubuntu only.
##Running
###Projector source
SLStudio can run in different projector modes. For projection you can choose OpenGL projection, which renders the structured light patterns on "screen 2". You would then use an HDMI connection to the projector. Specifically for LightCrafter and LightCrafter4500, the software can communicate over USB with these projectors, which can preload the patterns. However, this does currently not work under robustly, and not in the calibration phase.
###Camera Triggering
In the preference pane, software and hardware triggering can be selected. The calibration procedure allways uses software triggering. For real-time structured light, you need hardware triggering from the projector to the camera by means of a trigger signal cable. Few projectors provide the trigger output signal, but with some effort you may be able to source one from the HDMI vsync pin. LightCrafter4500 has trigger output pins and is the recommended device. You will have to produce a trigger cable with the specific headers of your projector and camera.
With commercial projectors you can usually project 60 patterns per second at most (LC4500 allows for 120 8-bit patterns per second). Usually the camera requires a pause between two consecutive exposures, and you will need to waste one refresh period. With LC4500 we can project 60 grayscale patterns per second resulting in up to 20 point clouds per second.
###Calibration
Calibration of your hardware setup determines the internal camera and projector parameters, and the relative position of the projector relative to the camera. The calibration procedure only is seen in the video above, and requires a flat board with a grey-white checkerboard printed onto it. Good calibration requires a large number of calibration positions covering all of the sensor field of view and with some foreshortening (angle of the calibration board relative to view-axis).
###Codec
SLStudio serves as a structured light platform. A number of encoding strategies has been implemented, and these differ greatly in the number of patterns, accuracy and robustness to e.g. shiny or semitransparent surfaces. For many applications, 2x3 phase shifting provides good results. It uses 6 patterns, so you will reach 10Hz point cloud update frequency with the appropriate hardware.
###Recommended settings
Please note that some parts of this software are still experimental, while others have been matured. For reliable point cloud capture we recommend the following choices:
* Ubuntu 16.04
* Newer dedicated nVidia graphics card
* Ximea or Point Grey camera
* Calibration in 20 positions
* Calibration board with 10 x 10 saddle points
* Software triggering
* 2x3 Phase Shifting
For real-time (10Hz +) performance we recommend the following:
* LightCrafter4500 configured for 120Hz HDMI gray-scale projection (e.g. configure using /tools/lc4500startup)
* Ximea MQ013RG-E2
* Hardware triggering
##Support
While we are interested in providing our software to a rich audience and make real-time structured light available to many user groups, it usually requires a fair amount of customization and knowledge to build these systems. With the current state of this project and the challenges in hardware, you do need C++ programming experience to make it work with your specific setup, unless it consists of the exact components listed above. We can answer some questions pertaining to software and hardware, but cannot provide low-level support. We are though very interested in incorporating relevant and meaningful improvements and bug fixes, so if you have such, please contact us or make a pull request!
Regards, Jakob, Technical University of Denmark
没有合适的资源?快使用搜索试试~ 我知道了~
三维重建,单目相机+结构光,实时扫描重建代码
共218个文件
cpp:83个
h:76个
o:12个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 26 下载量 122 浏览量
2022-04-19
23:54:29
上传
评论 22
收藏 658KB ZIP 举报
温馨提示
三维重建,单目相机+结构光,实时扫描重建代码,
资源详情
资源评论
资源推荐
收起资源包目录
三维重建,单目相机+结构光,实时扫描重建代码 (218个子文件)
head.3ds 87KB
hid.Libusb.c 40KB
hid.Mac.c 28KB
hid.Win.c 25KB
hid.Unix.c 19KB
API.cpp 45KB
phasecorr.cpp 19KB
lcr_cmd.cpp 15KB
cvtools.cpp 12KB
SLStudio.cpp 11KB
CameraIIDC.cpp 10KB
CameraIDSImaging.cpp 10KB
SLScanWorker.cpp 10KB
CalibratorRBF.cpp 9KB
lcr_packetizer.cpp 9KB
SLCalibrationDialog.cpp 9KB
CalibratorLocHom.cpp 9KB
SLPreferenceDialog.cpp 9KB
CameraPointGrey.cpp 8KB
phaseunwrap.cpp 8KB
ProjectorOpenGL.cpp 7KB
CThinPlateSpline.cpp 7KB
SLPointCloudWidget.cpp 7KB
OpenGLContext.Win.cpp 7KB
CodecGrayCode.cpp 6KB
CameraXIMEA.cpp 6KB
CodecPhaseShiftModulated.cpp 6KB
Triangulator.cpp 6KB
TrackerICP.cpp 6KB
ProjectorLC3000.cpp 6KB
PoseFilter.cpp 6KB
OpenGLContext.Unix.cpp 6KB
CalibrationData.cpp 5KB
CodecPhaseShiftMicro.cpp 5KB
TrackerPCL.cpp 5KB
tcp_client.cpp 5KB
CodecPhaseShiftNStep.cpp 5KB
ProjectorLC4500.cpp 4KB
SLDecoderWorker.cpp 4KB
CameraMex.cpp 4KB
CodecPhaseShift2x3.cpp 4KB
SLCameraVirtual.cpp 4KB
mainProjectorTest.cpp 4KB
simplecameratest.cpp 4KB
SLTriangulatorWorker.cpp 4KB
lc4500startup.cpp 4KB
SLPoseWidget.cpp 4KB
CodecPhaseShift2p1.cpp 4KB
OpenGLContext.GLFW.cpp 4KB
SLTrackerDialog.cpp 4KB
mainTrackerTest.cpp 4KB
CodecPhaseShiftDescatter.cpp 4KB
CodecCalibration.cpp 3KB
ProjectorMex.cpp 3KB
CodecPhaseShift3.cpp 3KB
CodecPhaseShift3FastWrap.cpp 3KB
SLTrackerWorker.cpp 3KB
SLPointCloudWidgetOld.cpp 3KB
SLVideoWidget.cpp 3KB
CorrRejectOrgBoundFast.cpp 3KB
mainCodecTest.cpp 2KB
CodecPhaseShift3Unwrap.cpp 2KB
pstools.cpp 2KB
CodecFastRatio.cpp 2KB
RBFInterpolator.cpp 2KB
SLTraceWidget.cpp 2KB
lc3000startup.cpp 2KB
CodecPhaseShift3DirectLight.cpp 2KB
CodecPhaseShift4.cpp 2KB
TrackerNDT.cpp 2KB
usb.cpp 2KB
TrackerICPFast.cpp 2KB
Camera.cpp 2KB
eigentools.cpp 2KB
lcutilties.cpp 1KB
CameraTest.cpp 1KB
SLVideoDialog.cpp 1KB
mainCalibratorTest.cpp 1KB
SLProjectorWorker.cpp 1KB
SLCameraWorker.cpp 1KB
CameraWorker.cpp 1KB
mainCvtoolstest.cpp 1KB
SLProjectorVirtual.cpp 939B
SLAboutDialog.cpp 236B
mainCameraTest.cpp 172B
main.cpp 172B
mainTriangulatorTest.cpp 135B
CorrEstOrgProjFast.cpp 0B
logo.gif 9KB
.gitignore 17B
IterativeClosestPointFast.h 17KB
hidapi.h 14KB
CThinPlateSpline.h 11KB
API.h 10KB
CorrEstKdTreeFast.h 8KB
lcr_cmd.h 7KB
CorrEstOrgProjFast.h 5KB
Common.h 3KB
CorrRejectOrgBoundFast.h 2KB
TrackerICP.h 2KB
共 218 条
- 1
- 2
- 3
wouderw
- 粉丝: 268
- 资源: 2960
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论26