jakobwilm / slstudio Goto Github PK
View Code? Open in Web Editor NEWSLStudio -- Real Time Structured Light. A comprehensive software suite for capturing and reconstructing 3D scenes with a camera-projector pair.
License: Other
SLStudio -- Real Time Structured Light. A comprehensive software suite for capturing and reconstructing 3D scenes with a camera-projector pair.
License: Other
hello,
this is not a bug but just a assistance request.
I've tried to build the project ,
for that , I've cloned VTK (v8) but seems you guys are using another version because libs are absolutely different from what you are referring to in your PRO file.
have you tried to build with latest VTK?
When I compile with " SOURCES += projector/OpenGLContext.GLFW.cpp", the screen 1 shows, but whenever I scan or calibrae camera and projector, the following errors shows like :
X Error of failed request: GLXBadDrawable
Major opcode of failed request: 154 (GLX)
Minor opcode of failed request: 16 (X_GLXVendorPrivate)
Serial number of failed request: 184
Current serial number in output stream: 186
Any advice could help me? I've been looking for so long.
Thanks!
Hello, thank you for your work about the SLStudio. I have a question about the DecoderPhaseShift2x3 class in the SLStudio. Thank you for your answer. This decode algorithm uses single frequency phase shifting images (3 images) and phase cue patterns(3 images) to get the unwrapped absolute phase image using. In my work, I used three different frequency phase shifting patterns at least to get the absolute phase image. So, could you tell me the theory about DecoderPhaseShift2x3 or just give me the paper name you refered?
thank you very much. @jakobwilm @snesgaard @ereh
Hi Jakob, does it generate a 3D Mesh on the fly? What's the output file of this after triggering the different lightproejctions? I've seen you used the LC4500. Can you suggest any new model which supports HD, in case this delivers a better output? thx
Hi Jakob,
Upon calibration, we receive the following results. Then using this calibration and the attached preferences, we get a 3D reconstruction that looks like the other image attached.
It appears to us that the object shown in the 3D reconstruction should be at the crossing of the axis lines, but is instead displaced some amount rendering it hard to view.
We are also under the impression that the feint 3D reconstruction shown is not, in fact, a 3D reconstruction, but instead just our camera frames, which seems bizarre.
Do you have any ideas or resolutions on how we can fix this?
We are using ubuntu 16.04 64-bit with the latest branch of slstudio, with a minor change to use pcl 1.7 instead of 1.8 (changing the version in the slstudio.pro file). Is this version change the issue?
Hardware:
DLP lightcrafter 3500 (with a modification to output a 5V trigger signal by moving some resistors on its PCB)
Ximea Xiq MQ013MG-E2
`========================================
Camera Calibration:
Hi @jakobwilm, can I ask you for tips about what patterns (sequence) should I load for LC4500 to be able to run your software in pattern mode? I know the procedure to make patterns with DLP Control Software, but I believe your software utilize particular pattern sequence with particular timeouts (exposure and period).
May be you can share the screenshots DLP Control Software with sequence settings or you have a f/w for LC4500 with this patterns you can upload to your this project?
Thank you in advance.
Hi Jakob,
Using the updated version of the matlab code, we have seemingly successfully built the executables (console output below). Then when running the .mexa64 files in matlab are getting the errors:
>> ProjectorMex
Error using ProjectorMex
First input should be a command string less than 64 characters long.
and
>> CameraMex
Error using CameraMex
First input should be a command string less than 64 characters long.
This seems as if arguments are being expected? To run each of these .mexa64 files we are calling ProjectorMex or CameraMex in the console without any parentheses. Are we doing this incorrectly?
Gcc version: 6.3.0
Ubuntu 16.04 64-bit
matlab R2018a
Build output:
>> make
Verbose mode is on.
... Looking for compiler 'g++' ...
... Executing command 'which g++' ...Yes ('/usr/bin/g++').
... Executing command 'g++ -print-file-name=libstdc++.so' ...Yes ('/usr/lib/gcc/x86_64-linux-gnu/6/libstdc++.so').
... Executing command 'g++ -dumpversion' ...Yes ('6.3.0').
... Executing command 'which g++' ...Yes ('/usr/bin/g++').
... Looking for folder '/usr' ...Yes.
... Executing command 'g++ -dumpmachine' ...Yes ('x86_64-linux-gnu').
Found installed compiler 'g++'.
Set INCLUDE = /usr/lib/gcc/x86_64-linux-gnu/6.3.0/include;/usr/include/c++/6.3.0;/usr/include/c++/6.3.0/x86_64-linux-gnu;/usr/include/c++/6.3.0/backward;/usr/lib/gcc/x86_64-linux-gnu/6.3.0/include;/usr/include/c++/6.3.0;/usr/include/c++/6.3.0/x86_64-linux-gnu;/usr/include/c++/6.3.0/backward;
Options file details
Compiler location: /usr/bin/g++
Options file: /usr/local/MATLAB/R2018a/bin/glnxa64/mexopts/g++_glnxa64.xml
CMDLINE2 : /usr/bin/g++ -pthread -Wl,--no-undefined -shared -O -Wl,--version-script,"/usr/local/MATLAB/R2018a/extern/lib/glnxa64/c_exportsmexfileversion.map" /tmp/mex_975137339462_1885/CameraMex.o /tmp/mex_975137339462_1885/Camera.o /tmp/mex_975137339462_1885/CameraIIDC.o /tmp/mex_975137339462_1885/CameraXIMEA.o /tmp/mex_975137339462_1885/cpp_mexapi_version.o -ldc1394 -lm3api -Wl,--as-needed -Wl,-rpath-link,/usr/local/MATLAB/R2018a/bin/glnxa64 -L"/usr/local/MATLAB/R2018a/bin/glnxa64" -Wl,-rpath-link,/usr/local/MATLAB/R2018a/extern/bin/glnxa64 -L"/usr/local/MATLAB/R2018a/extern/bin/glnxa64" -lMatlabDataArray -lmx -lmex -lmat -lm -lstdc++ -o CameraMex.mexa64
CXX : /usr/bin/g++
DEFINES : -DWITH_CAMERAIIDC -DWITH_CAMERAXIMEA -DMATLAB_DEFAULT_RELEASE=R2017b -DUSE_MEX_CMD -D_GNU_SOURCE -DMATLAB_MEX_FILE
MATLABMEX : -DMATLAB_MEX_FILE
CFLAGS : -fexceptions -fPIC -fno-omit-frame-pointer -pthread
CXXFLAGS : -fexceptions -fPIC -fno-omit-frame-pointer -pthread -std=c++11
INCLUDE : -I"../src/camera" -I"/usr/local/lib" -I"/opt/XIMEA/include" -I"/usr/local/MATLAB/R2018a/extern/include" -I"/usr/local/MATLAB/R2018a/simulink/include"
CXXOPTIMFLAGS : -O -DNDEBUG
CXXDEBUGFLAGS : -g
LDXX : /usr/bin/g++
LDFLAGS : -pthread -Wl,--no-undefined
LDTYPE : -shared
LINKEXPORT : -Wl,--version-script,"/usr/local/MATLAB/R2018a/extern/lib/glnxa64/mexFunction.map"
LINKEXPORTVER : -Wl,--version-script,"/usr/local/MATLAB/R2018a/extern/lib/glnxa64/c_exportsmexfileversion.map"
LINKLIBS : -ldc1394 -lm3api -Wl,--as-needed -Wl,-rpath-link,/usr/local/MATLAB/R2018a/bin/glnxa64 -L"/usr/local/MATLAB/R2018a/bin/glnxa64" -Wl,-rpath-link,/usr/local/MATLAB/R2018a/extern/bin/glnxa64 -L"/usr/local/MATLAB/R2018a/extern/bin/glnxa64" -lMatlabDataArray -lmx -lmex -lmat -lm -lstdc++
LDOPTIMFLAGS : -O
LDDEBUGFLAGS : -g
MWCPPLIB : "/usr/local/MATLAB/R2018a/sys/os/glnxa64/libstdc++.so.6"
OBJEXT : .o
LDEXT : .mexa64
SETENV : CC="gcc"
CXX="/usr/bin/g++"
CFLAGS="-fexceptions -fPIC -fno-omit-frame-pointer -pthread -DWITH_CAMERAIIDC -DWITH_CAMERAXIMEA -DMATLAB_DEFAULT_RELEASE=R2017b -DUSE_MEX_CMD -D_GNU_SOURCE -DMATLAB_MEX_FILE "
CXXFLAGS="-fexceptions -fPIC -fno-omit-frame-pointer -pthread -std=c++11 -DWITH_CAMERAIIDC -DWITH_CAMERAXIMEA -DMATLAB_DEFAULT_RELEASE=R2017b -DUSE_MEX_CMD -D_GNU_SOURCE -DMATLAB_MEX_FILE "
COPTIMFLAGS="-O -DNDEBUG"
CXXOPTIMFLAGS="-O -DNDEBUG"
CDEBUGFLAGS="-g"
CXXDEBUGFLAGS="-g"
LD="gcc"
LDXX="/usr/bin/g++"
LDFLAGS="-pthread -Wl,--no-undefined -shared -ldc1394 -lm3api -Wl,--as-needed -Wl,-rpath-link,/usr/local/MATLAB/R2018a/bin/glnxa64 -L"/usr/local/MATLAB/R2018a/bin/glnxa64" -Wl,-rpath-link,/usr/local/MATLAB/R2018a/extern/bin/glnxa64 -L"/usr/local/MATLAB/R2018a/extern/bin/glnxa64" -lMatlabDataArray -lmx -lmex -lmat -lm -lstdc++ -Wl,--version-script,"/usr/local/MATLAB/R2018a/extern/lib/glnxa64/mexFunction.map""
LDDEBUGFLAGS="-g"
GCC : /usr/bin/g++
CPPLIB_DIR : /usr/lib/gcc/x86_64-linux-gnu/6/libstdc++.so
VER : 6.3.0
GCCDIR : /usr
GCC_TARGET : x86_64-linux-gnu
MATLABROOT : /usr/local/MATLAB/R2018a
ARCH : glnxa64
SRC : "/home/physics/project/slstudio/matlab/CameraMex.cpp";"/home/physics/project/slstudio/matlab/../src/camera/Camera.cpp";"/home/physics/project/slstudio/matlab/../src/camera/CameraIIDC.cpp";"/home/physics/project/slstudio/matlab/../src/camera/CameraXIMEA.cpp";"/usr/local/MATLAB/R2018a/extern/version/cpp_mexapi_version.cpp"
OBJ : /tmp/mex_975137339462_1885/CameraMex.o;/tmp/mex_975137339462_1885/Camera.o;/tmp/mex_975137339462_1885/CameraIIDC.o;/tmp/mex_975137339462_1885/CameraXIMEA.o;/tmp/mex_975137339462_1885/cpp_mexapi_version.o
OBJS : /tmp/mex_975137339462_1885/CameraMex.o /tmp/mex_975137339462_1885/Camera.o /tmp/mex_975137339462_1885/CameraIIDC.o /tmp/mex_975137339462_1885/CameraXIMEA.o /tmp/mex_975137339462_1885/cpp_mexapi_version.o
SRCROOT : /home/physics/project/slstudio/matlab/CameraMex
DEF : /tmp/mex_975137339462_1885/CameraMex.def
EXP : "CameraMex.exp"
LIB : "CameraMex.lib"
EXE : CameraMex.mexa64
ILK : "CameraMex.ilk"
MANIFEST : "CameraMex.mexa64.manifest"
TEMPNAME : CameraMex
EXEDIR :
EXENAME : CameraMex
OPTIM : -O -DNDEBUG
LINKOPTIM : -O
CMDLINE1_0 : /usr/bin/g++ -c -DWITH_CAMERAIIDC -DWITH_CAMERAXIMEA -DMATLAB_DEFAULT_RELEASE=R2017b -DUSE_MEX_CMD -D_GNU_SOURCE -DMATLAB_MEX_FILE -I"../src/camera" -I"/usr/local/lib" -I"/opt/XIMEA/include" -I"/usr/local/MATLAB/R2018a/extern/include" -I"/usr/local/MATLAB/R2018a/simulink/include" -fexceptions -fPIC -fno-omit-frame-pointer -pthread -std=c++11 -O -DNDEBUG "/home/physics/project/slstudio/matlab/CameraMex.cpp" -o /tmp/mex_975137339462_1885/CameraMex.o
CMDLINE1_1 : /usr/bin/g++ -c -DWITH_CAMERAIIDC -DWITH_CAMERAXIMEA -DMATLAB_DEFAULT_RELEASE=R2017b -DUSE_MEX_CMD -D_GNU_SOURCE -DMATLAB_MEX_FILE -I"../src/camera" -I"/usr/local/lib" -I"/opt/XIMEA/include" -I"/usr/local/MATLAB/R2018a/extern/include" -I"/usr/local/MATLAB/R2018a/simulink/include" -fexceptions -fPIC -fno-omit-frame-pointer -pthread -std=c++11 -O -DNDEBUG "/home/physics/project/slstudio/matlab/../src/camera/Camera.cpp" -o /tmp/mex_975137339462_1885/Camera.o
CMDLINE1_2 : /usr/bin/g++ -c -DWITH_CAMERAIIDC -DWITH_CAMERAXIMEA -DMATLAB_DEFAULT_RELEASE=R2017b -DUSE_MEX_CMD -D_GNU_SOURCE -DMATLAB_MEX_FILE -I"../src/camera" -I"/usr/local/lib" -I"/opt/XIMEA/include" -I"/usr/local/MATLAB/R2018a/extern/include" -I"/usr/local/MATLAB/R2018a/simulink/include" -fexceptions -fPIC -fno-omit-frame-pointer -pthread -std=c++11 -O -DNDEBUG "/home/physics/project/slstudio/matlab/../src/camera/CameraIIDC.cpp" -o /tmp/mex_975137339462_1885/CameraIIDC.o
CMDLINE1_3 : /usr/bin/g++ -c -DWITH_CAMERAIIDC -DWITH_CAMERAXIMEA -DMATLAB_DEFAULT_RELEASE=R2017b -DUSE_MEX_CMD -D_GNU_SOURCE -DMATLAB_MEX_FILE -I"../src/camera" -I"/usr/local/lib" -I"/opt/XIMEA/include" -I"/usr/local/MATLAB/R2018a/extern/include" -I"/usr/local/MATLAB/R2018a/simulink/include" -fexceptions -fPIC -fno-omit-frame-pointer -pthread -std=c++11 -O -DNDEBUG "/home/physics/project/slstudio/matlab/../src/camera/CameraXIMEA.cpp" -o /tmp/mex_975137339462_1885/CameraXIMEA.o
CMDLINE1_4 : /usr/bin/g++ -c -DWITH_CAMERAIIDC -DWITH_CAMERAXIMEA -DMATLAB_DEFAULT_RELEASE=R2017b -DUSE_MEX_CMD -D_GNU_SOURCE -DMATLAB_MEX_FILE -I"../src/camera" -I"/usr/local/lib" -I"/opt/XIMEA/include" -I"/usr/local/MATLAB/R2018a/extern/include" -I"/usr/local/MATLAB/R2018a/simulink/include" -fexceptions -fPIC -fno-omit-frame-pointer -pthread -std=c++11 -O -DNDEBUG "/usr/local/MATLAB/R2018a/extern/version/cpp_mexapi_version.cpp" -o /tmp/mex_975137339462_1885/cpp_mexapi_version.o
Building with 'g++'.
/usr/bin/g++ -c -DWITH_CAMERAIIDC -DWITH_CAMERAXIMEA -DMATLAB_DEFAULT_RELEASE=R2017b -DUSE_MEX_CMD -D_GNU_SOURCE -DMATLAB_MEX_FILE -I"../src/camera" -I"/usr/local/lib" -I"/opt/XIMEA/include" -I"/usr/local/MATLAB/R2018a/extern/include" -I"/usr/local/MATLAB/R2018a/simulink/include" -fexceptions -fPIC -fno-omit-frame-pointer -pthread -std=c++11 -O -DNDEBUG "/home/physics/project/slstudio/matlab/CameraMex.cpp" -o /tmp/mex_975137339462_1885/CameraMex.o
/usr/bin/g++ -c -DWITH_CAMERAIIDC -DWITH_CAMERAXIMEA -DMATLAB_DEFAULT_RELEASE=R2017b -DUSE_MEX_CMD -D_GNU_SOURCE -DMATLAB_MEX_FILE -I"../src/camera" -I"/usr/local/lib" -I"/opt/XIMEA/include" -I"/usr/local/MATLAB/R2018a/extern/include" -I"/usr/local/MATLAB/R2018a/simulink/include" -fexceptions -fPIC -fno-omit-frame-pointer -pthread -std=c++11 -O -DNDEBUG "/home/physics/project/slstudio/matlab/../src/camera/Camera.cpp" -o /tmp/mex_975137339462_1885/Camera.o
/usr/bin/g++ -c -DWITH_CAMERAIIDC -DWITH_CAMERAXIMEA -DMATLAB_DEFAULT_RELEASE=R2017b -DUSE_MEX_CMD -D_GNU_SOURCE -DMATLAB_MEX_FILE -I"../src/camera" -I"/usr/local/lib" -I"/opt/XIMEA/include" -I"/usr/local/MATLAB/R2018a/extern/include" -I"/usr/local/MATLAB/R2018a/simulink/include" -fexceptions -fPIC -fno-omit-frame-pointer -pthread -std=c++11 -O -DNDEBUG "/home/physics/project/slstudio/matlab/../src/camera/CameraIIDC.cpp" -o /tmp/mex_975137339462_1885/CameraIIDC.o
/usr/bin/g++ -c -DWITH_CAMERAIIDC -DWITH_CAMERAXIMEA -DMATLAB_DEFAULT_RELEASE=R2017b -DUSE_MEX_CMD -D_GNU_SOURCE -DMATLAB_MEX_FILE -I"../src/camera" -I"/usr/local/lib" -I"/opt/XIMEA/include" -I"/usr/local/MATLAB/R2018a/extern/include" -I"/usr/local/MATLAB/R2018a/simulink/include" -fexceptions -fPIC -fno-omit-frame-pointer -pthread -std=c++11 -O -DNDEBUG "/home/physics/project/slstudio/matlab/../src/camera/CameraXIMEA.cpp" -o /tmp/mex_975137339462_1885/CameraXIMEA.o
/usr/bin/g++ -c -DWITH_CAMERAIIDC -DWITH_CAMERAXIMEA -DMATLAB_DEFAULT_RELEASE=R2017b -DUSE_MEX_CMD -D_GNU_SOURCE -DMATLAB_MEX_FILE -I"../src/camera" -I"/usr/local/lib" -I"/opt/XIMEA/include" -I"/usr/local/MATLAB/R2018a/extern/include" -I"/usr/local/MATLAB/R2018a/simulink/include" -fexceptions -fPIC -fno-omit-frame-pointer -pthread -std=c++11 -O -DNDEBUG "/usr/local/MATLAB/R2018a/extern/version/cpp_mexapi_version.cpp" -o /tmp/mex_975137339462_1885/cpp_mexapi_version.o
/usr/bin/g++ -pthread -Wl,--no-undefined -shared -O -Wl,--version-script,"/usr/local/MATLAB/R2018a/extern/lib/glnxa64/c_exportsmexfileversion.map" /tmp/mex_975137339462_1885/CameraMex.o /tmp/mex_975137339462_1885/Camera.o /tmp/mex_975137339462_1885/CameraIIDC.o /tmp/mex_975137339462_1885/CameraXIMEA.o /tmp/mex_975137339462_1885/cpp_mexapi_version.o -ldc1394 -lm3api -Wl,--as-needed -Wl,-rpath-link,/usr/local/MATLAB/R2018a/bin/glnxa64 -L"/usr/local/MATLAB/R2018a/bin/glnxa64" -Wl,-rpath-link,/usr/local/MATLAB/R2018a/extern/bin/glnxa64 -L"/usr/local/MATLAB/R2018a/extern/bin/glnxa64" -lMatlabDataArray -lmx -lmex -lmat -lm -lstdc++ -o CameraMex.mexa64
Recompile embedded version with '-DMATLAB_MEXCMD_RELEASE=R2017b'
/usr/bin/g++ -c -DWITH_CAMERAIIDC -DWITH_CAMERAXIMEA -DMATLAB_DEFAULT_RELEASE=R2017b -DUSE_MEX_CMD -D_GNU_SOURCE -DMATLAB_MEX_FILE -I"../src/camera" -I"/usr/local/lib" -I"/opt/XIMEA/include" -I"/usr/local/MATLAB/R2018a/extern/include" -I"/usr/local/MATLAB/R2018a/simulink/include" -fexceptions -fPIC -fno-omit-frame-pointer -pthread -std=c++11 -O -DNDEBUG "/usr/local/MATLAB/R2018a/extern/version/cpp_mexapi_version.cpp" -o /tmp/mex_975137339462_1885/cpp_mexapi_version.o -DMATLAB_MEXCMD_RELEASE=R2017b
/usr/bin/g++ -pthread -Wl,--no-undefined -shared -O -Wl,--version-script,"/usr/local/MATLAB/R2018a/extern/lib/glnxa64/c_exportsmexfileversion.map" /tmp/mex_975137339462_1885/CameraMex.o /tmp/mex_975137339462_1885/Camera.o /tmp/mex_975137339462_1885/CameraIIDC.o /tmp/mex_975137339462_1885/CameraXIMEA.o /tmp/mex_975137339462_1885/cpp_mexapi_version.o -ldc1394 -lm3api -Wl,--as-needed -Wl,-rpath-link,/usr/local/MATLAB/R2018a/bin/glnxa64 -L"/usr/local/MATLAB/R2018a/bin/glnxa64" -Wl,-rpath-link,/usr/local/MATLAB/R2018a/extern/bin/glnxa64 -L"/usr/local/MATLAB/R2018a/extern/bin/glnxa64" -lMatlabDataArray -lmx -lmex -lmat -lm -lstdc++ -o CameraMex.mexa64
MEX completed successfully.
Verbose mode is on.
... Looking for compiler 'g++' ...
... Executing command 'which g++' ...Yes ('/usr/bin/g++').
... Executing command 'g++ -print-file-name=libstdc++.so' ...Yes ('/usr/lib/gcc/x86_64-linux-gnu/6/libstdc++.so').
... Executing command 'g++ -dumpversion' ...Yes ('6.3.0').
... Executing command 'which g++' ...Yes ('/usr/bin/g++').
... Looking for folder '/usr' ...Yes.
... Executing command 'g++ -dumpmachine' ...Yes ('x86_64-linux-gnu').
Found installed compiler 'g++'.
Set INCLUDE = /usr/lib/gcc/x86_64-linux-gnu/6.3.0/include;/usr/include/c++/6.3.0;/usr/include/c++/6.3.0/x86_64-linux-gnu;/usr/include/c++/6.3.0/backward;/usr/lib/gcc/x86_64-linux-gnu/6.3.0/include;/usr/include/c++/6.3.0;/usr/include/c++/6.3.0/x86_64-linux-gnu;/usr/include/c++/6.3.0/backward;
Options file details
Compiler location: /usr/bin/g++
Options file: /usr/local/MATLAB/R2018a/bin/glnxa64/mexopts/g++_glnxa64.xml
CMDLINE2 : /usr/bin/g++ -pthread -Wl,--no-undefined -shared -O -Wl,--version-script,"/usr/local/MATLAB/R2018a/extern/lib/glnxa64/c_exportsmexfileversion.map" /tmp/mex_982710491912_1885/ProjectorMex.o /tmp/mex_982710491912_1885/ProjectorOpenGL.o /tmp/mex_982710491912_1885/OpenGLContext.Unix.o /tmp/mex_982710491912_1885/cpp_mexapi_version.o -lGL -lGLU -lX11 -lXxf86vm -lGLEW -Wl,--as-needed -Wl,-rpath-link,/usr/local/MATLAB/R2018a/bin/glnxa64 -L"/usr/local/MATLAB/R2018a/bin/glnxa64" -Wl,-rpath-link,/usr/local/MATLAB/R2018a/extern/bin/glnxa64 -L"/usr/local/MATLAB/R2018a/extern/bin/glnxa64" -lMatlabDataArray -lmx -lmex -lmat -lm -lstdc++ -o ProjectorMex.mexa64
CXX : /usr/bin/g++
DEFINES : -DMATLAB_DEFAULT_RELEASE=R2017b -DUSE_MEX_CMD -D_GNU_SOURCE -DMATLAB_MEX_FILE
MATLABMEX : -DMATLAB_MEX_FILE
CFLAGS : -fexceptions -fPIC -fno-omit-frame-pointer -pthread
CXXFLAGS : -fexceptions -fPIC -fno-omit-frame-pointer -pthread -std=c++11
INCLUDE : -I"../src/projector" -I"/usr/local/MATLAB/R2018a/extern/include" -I"/usr/local/MATLAB/R2018a/simulink/include"
CXXOPTIMFLAGS : -O -DNDEBUG
CXXDEBUGFLAGS : -g
LDXX : /usr/bin/g++
LDFLAGS : -pthread -Wl,--no-undefined
LDTYPE : -shared
LINKEXPORT : -Wl,--version-script,"/usr/local/MATLAB/R2018a/extern/lib/glnxa64/mexFunction.map"
LINKEXPORTVER : -Wl,--version-script,"/usr/local/MATLAB/R2018a/extern/lib/glnxa64/c_exportsmexfileversion.map"
LINKLIBS : -lGL -lGLU -lX11 -lXxf86vm -lGLEW -Wl,--as-needed -Wl,-rpath-link,/usr/local/MATLAB/R2018a/bin/glnxa64 -L"/usr/local/MATLAB/R2018a/bin/glnxa64" -Wl,-rpath-link,/usr/local/MATLAB/R2018a/extern/bin/glnxa64 -L"/usr/local/MATLAB/R2018a/extern/bin/glnxa64" -lMatlabDataArray -lmx -lmex -lmat -lm -lstdc++
LDOPTIMFLAGS : -O
LDDEBUGFLAGS : -g
MWCPPLIB : "/usr/local/MATLAB/R2018a/sys/os/glnxa64/libstdc++.so.6"
OBJEXT : .o
LDEXT : .mexa64
SETENV : CC="gcc"
CXX="/usr/bin/g++"
CFLAGS="-fexceptions -fPIC -fno-omit-frame-pointer -pthread -DMATLAB_DEFAULT_RELEASE=R2017b -DUSE_MEX_CMD -D_GNU_SOURCE -DMATLAB_MEX_FILE "
CXXFLAGS="-fexceptions -fPIC -fno-omit-frame-pointer -pthread -std=c++11 -DMATLAB_DEFAULT_RELEASE=R2017b -DUSE_MEX_CMD -D_GNU_SOURCE -DMATLAB_MEX_FILE "
COPTIMFLAGS="-O -DNDEBUG"
CXXOPTIMFLAGS="-O -DNDEBUG"
CDEBUGFLAGS="-g"
CXXDEBUGFLAGS="-g"
LD="gcc"
LDXX="/usr/bin/g++"
LDFLAGS="-pthread -Wl,--no-undefined -shared -lGL -lGLU -lX11 -lXxf86vm -lGLEW -Wl,--as-needed -Wl,-rpath-link,/usr/local/MATLAB/R2018a/bin/glnxa64 -L"/usr/local/MATLAB/R2018a/bin/glnxa64" -Wl,-rpath-link,/usr/local/MATLAB/R2018a/extern/bin/glnxa64 -L"/usr/local/MATLAB/R2018a/extern/bin/glnxa64" -lMatlabDataArray -lmx -lmex -lmat -lm -lstdc++ -Wl,--version-script,"/usr/local/MATLAB/R2018a/extern/lib/glnxa64/mexFunction.map""
LDDEBUGFLAGS="-g"
GCC : /usr/bin/g++
CPPLIB_DIR : /usr/lib/gcc/x86_64-linux-gnu/6/libstdc++.so
VER : 6.3.0
GCCDIR : /usr
GCC_TARGET : x86_64-linux-gnu
MATLABROOT : /usr/local/MATLAB/R2018a
ARCH : glnxa64
SRC : "/home/physics/project/slstudio/matlab/ProjectorMex.cpp";"/home/physics/project/slstudio/matlab/../src/projector/ProjectorOpenGL.cpp";"/home/physics/project/slstudio/matlab/../src/projector/OpenGLContext.Unix.cpp";"/usr/local/MATLAB/R2018a/extern/version/cpp_mexapi_version.cpp"
OBJ : /tmp/mex_982710491912_1885/ProjectorMex.o;/tmp/mex_982710491912_1885/ProjectorOpenGL.o;/tmp/mex_982710491912_1885/OpenGLContext.Unix.o;/tmp/mex_982710491912_1885/cpp_mexapi_version.o
OBJS : /tmp/mex_982710491912_1885/ProjectorMex.o /tmp/mex_982710491912_1885/ProjectorOpenGL.o /tmp/mex_982710491912_1885/OpenGLContext.Unix.o /tmp/mex_982710491912_1885/cpp_mexapi_version.o
SRCROOT : /home/physics/project/slstudio/matlab/ProjectorMex
DEF : /tmp/mex_982710491912_1885/ProjectorMex.def
EXP : "ProjectorMex.exp"
LIB : "ProjectorMex.lib"
EXE : ProjectorMex.mexa64
ILK : "ProjectorMex.ilk"
MANIFEST : "ProjectorMex.mexa64.manifest"
TEMPNAME : ProjectorMex
EXEDIR :
EXENAME : ProjectorMex
OPTIM : -O -DNDEBUG
LINKOPTIM : -O
CMDLINE1_0 : /usr/bin/g++ -c -DMATLAB_DEFAULT_RELEASE=R2017b -DUSE_MEX_CMD -D_GNU_SOURCE -DMATLAB_MEX_FILE -I"../src/projector" -I"/usr/local/MATLAB/R2018a/extern/include" -I"/usr/local/MATLAB/R2018a/simulink/include" -fexceptions -fPIC -fno-omit-frame-pointer -pthread -std=c++11 -O -DNDEBUG "/home/physics/project/slstudio/matlab/ProjectorMex.cpp" -o /tmp/mex_982710491912_1885/ProjectorMex.o
CMDLINE1_1 : /usr/bin/g++ -c -DMATLAB_DEFAULT_RELEASE=R2017b -DUSE_MEX_CMD -D_GNU_SOURCE -DMATLAB_MEX_FILE -I"../src/projector" -I"/usr/local/MATLAB/R2018a/extern/include" -I"/usr/local/MATLAB/R2018a/simulink/include" -fexceptions -fPIC -fno-omit-frame-pointer -pthread -std=c++11 -O -DNDEBUG "/home/physics/project/slstudio/matlab/../src/projector/ProjectorOpenGL.cpp" -o /tmp/mex_982710491912_1885/ProjectorOpenGL.o
CMDLINE1_2 : /usr/bin/g++ -c -DMATLAB_DEFAULT_RELEASE=R2017b -DUSE_MEX_CMD -D_GNU_SOURCE -DMATLAB_MEX_FILE -I"../src/projector" -I"/usr/local/MATLAB/R2018a/extern/include" -I"/usr/local/MATLAB/R2018a/simulink/include" -fexceptions -fPIC -fno-omit-frame-pointer -pthread -std=c++11 -O -DNDEBUG "/home/physics/project/slstudio/matlab/../src/projector/OpenGLContext.Unix.cpp" -o /tmp/mex_982710491912_1885/OpenGLContext.Unix.o
CMDLINE1_3 : /usr/bin/g++ -c -DMATLAB_DEFAULT_RELEASE=R2017b -DUSE_MEX_CMD -D_GNU_SOURCE -DMATLAB_MEX_FILE -I"../src/projector" -I"/usr/local/MATLAB/R2018a/extern/include" -I"/usr/local/MATLAB/R2018a/simulink/include" -fexceptions -fPIC -fno-omit-frame-pointer -pthread -std=c++11 -O -DNDEBUG "/usr/local/MATLAB/R2018a/extern/version/cpp_mexapi_version.cpp" -o /tmp/mex_982710491912_1885/cpp_mexapi_version.o
Building with 'g++'.
/usr/bin/g++ -c -DMATLAB_DEFAULT_RELEASE=R2017b -DUSE_MEX_CMD -D_GNU_SOURCE -DMATLAB_MEX_FILE -I"../src/projector" -I"/usr/local/MATLAB/R2018a/extern/include" -I"/usr/local/MATLAB/R2018a/simulink/include" -fexceptions -fPIC -fno-omit-frame-pointer -pthread -std=c++11 -O -DNDEBUG "/home/physics/project/slstudio/matlab/ProjectorMex.cpp" -o /tmp/mex_982710491912_1885/ProjectorMex.o
/usr/bin/g++ -c -DMATLAB_DEFAULT_RELEASE=R2017b -DUSE_MEX_CMD -D_GNU_SOURCE -DMATLAB_MEX_FILE -I"../src/projector" -I"/usr/local/MATLAB/R2018a/extern/include" -I"/usr/local/MATLAB/R2018a/simulink/include" -fexceptions -fPIC -fno-omit-frame-pointer -pthread -std=c++11 -O -DNDEBUG "/home/physics/project/slstudio/matlab/../src/projector/ProjectorOpenGL.cpp" -o /tmp/mex_982710491912_1885/ProjectorOpenGL.o
/usr/bin/g++ -c -DMATLAB_DEFAULT_RELEASE=R2017b -DUSE_MEX_CMD -D_GNU_SOURCE -DMATLAB_MEX_FILE -I"../src/projector" -I"/usr/local/MATLAB/R2018a/extern/include" -I"/usr/local/MATLAB/R2018a/simulink/include" -fexceptions -fPIC -fno-omit-frame-pointer -pthread -std=c++11 -O -DNDEBUG "/home/physics/project/slstudio/matlab/../src/projector/OpenGLContext.Unix.cpp" -o /tmp/mex_982710491912_1885/OpenGLContext.Unix.o
/usr/bin/g++ -c -DMATLAB_DEFAULT_RELEASE=R2017b -DUSE_MEX_CMD -D_GNU_SOURCE -DMATLAB_MEX_FILE -I"../src/projector" -I"/usr/local/MATLAB/R2018a/extern/include" -I"/usr/local/MATLAB/R2018a/simulink/include" -fexceptions -fPIC -fno-omit-frame-pointer -pthread -std=c++11 -O -DNDEBUG "/usr/local/MATLAB/R2018a/extern/version/cpp_mexapi_version.cpp" -o /tmp/mex_982710491912_1885/cpp_mexapi_version.o
/usr/bin/g++ -pthread -Wl,--no-undefined -shared -O -Wl,--version-script,"/usr/local/MATLAB/R2018a/extern/lib/glnxa64/c_exportsmexfileversion.map" /tmp/mex_982710491912_1885/ProjectorMex.o /tmp/mex_982710491912_1885/ProjectorOpenGL.o /tmp/mex_982710491912_1885/OpenGLContext.Unix.o /tmp/mex_982710491912_1885/cpp_mexapi_version.o -lGL -lGLU -lX11 -lXxf86vm -lGLEW -Wl,--as-needed -Wl,-rpath-link,/usr/local/MATLAB/R2018a/bin/glnxa64 -L"/usr/local/MATLAB/R2018a/bin/glnxa64" -Wl,-rpath-link,/usr/local/MATLAB/R2018a/extern/bin/glnxa64 -L"/usr/local/MATLAB/R2018a/extern/bin/glnxa64" -lMatlabDataArray -lmx -lmex -lmat -lm -lstdc++ -o ProjectorMex.mexa64
Recompile embedded version with '-DMATLAB_MEXCMD_RELEASE=R2017b'
/usr/bin/g++ -c -DMATLAB_DEFAULT_RELEASE=R2017b -DUSE_MEX_CMD -D_GNU_SOURCE -DMATLAB_MEX_FILE -I"../src/projector" -I"/usr/local/MATLAB/R2018a/extern/include" -I"/usr/local/MATLAB/R2018a/simulink/include" -fexceptions -fPIC -fno-omit-frame-pointer -pthread -std=c++11 -O -DNDEBUG "/usr/local/MATLAB/R2018a/extern/version/cpp_mexapi_version.cpp" -o /tmp/mex_982710491912_1885/cpp_mexapi_version.o -DMATLAB_MEXCMD_RELEASE=R2017b
/usr/bin/g++ -pthread -Wl,--no-undefined -shared -O -Wl,--version-script,"/usr/local/MATLAB/R2018a/extern/lib/glnxa64/c_exportsmexfileversion.map" /tmp/mex_982710491912_1885/ProjectorMex.o /tmp/mex_982710491912_1885/ProjectorOpenGL.o /tmp/mex_982710491912_1885/OpenGLContext.Unix.o /tmp/mex_982710491912_1885/cpp_mexapi_version.o -lGL -lGLU -lX11 -lXxf86vm -lGLEW -Wl,--as-needed -Wl,-rpath-link,/usr/local/MATLAB/R2018a/bin/glnxa64 -L"/usr/local/MATLAB/R2018a/bin/glnxa64" -Wl,-rpath-link,/usr/local/MATLAB/R2018a/extern/bin/glnxa64 -L"/usr/local/MATLAB/R2018a/extern/bin/glnxa64" -lMatlabDataArray -lmx -lmex -lmat -lm -lstdc++ -o ProjectorMex.mexa64
MEX completed successfully.
>>
Hi Jakob,
Would you have a sample calib.xml and associated 2 x 3 phase set of images I could test with.
I am having trouble balancing getting a good calibration with my setup. I can see stripes in the calibration images so I know it's not right. Whenever I change the video driver settings to get better values for the camera & calibration errors by removing the stripes it compromises the phase patterns produced when actually scanning an object. Having a reference sample calib and images might help me figure out what is going on
Thanks
Hi ~
Does this software directly control other projectors? In addition to the LightCrafter4500, LightCrafter3500 that the author mentioned.
Thank you very much.
Hi
Can you provide a Windows binary of some sort? I am not good at anything programming or compiling, so i can't really use this.
boost::shared_ptr< CorrespondenceEstimationBase<PointSource, PointTarget, Scalar> > clone() const{}
says must return somthing...
can you correct this.
Using ubuntu 16.04 64-bit and the latest branch of slstudio, I am encountering these two errors when running the calibration. The error occurs shortly after opening the window, without using any of the buttons or options in the calibration window.
Using earlier branches this error did not occur. The second error here seems to be something in the code, rather than our hardware, however I am unsure on the openCV error.
Error messages:
...
CameraXIMEA: Error at xiGetImage (10)
OpenCV Error: Assertion failed (s >= 0) in setSize, file /build/opencv-SviWsf/opencv-2.4.9.1+dfsg/modules/core/src/matrix.cpp, line 116
terminate called after throwing an instance of 'cv::Exception'
what(): /build/opencv-SviWsf/opencv-2.4.9.1+dfsg/modules/core/src/matrix.cpp:116: error: (-215) s >= 0 in function setSize
...
CameraXIMEA: Error at xiGetImage (10)
OpenCV Error: Insufficient memory (Failed to allocate 23258632277584 bytes) in OutOfMemoryError, file /build/opencv-SviWsf/opencv-2.4.9.1+dfsg/modules/core/src/alloc.cpp, line 52
terminate called after throwing an instance of 'cv::Exception'
what(): /build/opencv-SviWsf/opencv-2.4.9.1+dfsg/modules/core/src/alloc.cpp:52: error: (-4) Failed to allocate 23258632277584 bytes in function OutOfMemoryError
Hardware:
DLP lightcrafter 3500
Ximea Xiq MQ013MG-E2
In readme file you saying that "LightCrafter4500 configured for 120Hz HDMI gray-scale projection (e.g. configure using /tools/lc4500startup)"but indeed lc4500startup does not switch to 120Hz LC4500. Do you have any recommendation how to set 120Hz as output for second screen (Ubuntu)?
Thank you.
Hi man, I have studied on SLStudio for some time and now have a few questions to ask you。Could you have time to help me solve these questions?
1、What is the position of the phase algorithm in Triangulaotr? It is neither the traditional fixed position of the phase algorithm, nor is the flexible position of the phase algorithm, I did not understand the algorithm in Triangulator.cpp
2、I have tested the first six codec algorithms, but the point cloud model shown in the SLPointCloudWidget is still incorrect and can clearly see the shadows left by the black and white stripes on the surface of the object, causing the depth of the object's surface as a sine change, I think this is caused by the solution is not correct.
Hope to get your reply as soon as possible,thanks! @
I've a sync cable between camera and LightCrafter 4500 and I switched SLStudio to Hardware Triggering, but from projector output (TRIG_OUT1) I see no pulse at the scope to trigger the camera. In a project README file you also mention that for realtime setup we have to use /tools/lc4500startup to prepare projector, but I did not find LCR_SetTrigOutConfig function which makes output setup. Am I missed something? Thank you.
PS: Another question - why grey-white checkerboard matters? Why not black-white?
Through the structured-plot I calculate the point of the projector, But the point is wrong .because I use the chessboard to calibrate , so the recovery point in projector should be like a chessboard , but the result is not in order.
Hi,
I've been tinkering around with SLstudio and I noticed the warning that the method used for triangulation when horizontal and vertical are activated is incomplete. Could you indicate the state of the method, e.g. is it somewhat working, what exactly is missing and may be provide a link to something describing the algorithm you wanted to implement?
Thanks for sharing your awesome work!
Cheers,
jan0e
Without being a lvl 9000+ Nerd on linux, how do you even compile and run it?
or on windows?
but how can I set the opencv camera to higher resolution I only work at 640*480 I have tried a thousand ways but as if it does not read the parameters
Hi,
I've tried to build the project ,but got the error code about that:
slstudio-master\src\tracker\CorrEstOrgProjFast.h:33: error: C4716: 'CorrEstOrgProjFastpcl::PointXYZRGBNormal,pcl::PointXYZRGBNormal,float::clone' : must return a value
and your source code is:
boost::shared_ptr< CorrespondenceEstimationBase<PointSource, PointTarget, Scalar> > clone() const{}
Can you help solve this error?
Hi, I'm not very clear with the algorithm of the triangulation. Would you please cite the relevant paper?
when the slstudio was compiled, errors occurred as follows:
error: undefined reference to `pcl::tracking::KLDAdaptiveParticleFilterTracker<pcl::PointXYZRGB, pcl::tracking::ParticleXYZRPY>::insertIntoBins(std::vector<int, std::allocator >, std::vector<std::vector<int, std::allocator >, std::allocator<std::vector<int, std::allocator > > >&)'
could you please give some suggestions?
Hi,
Thanks for sharing this code.
I am a little confused on how the projector is calibrated so I was hoping someone could explain the theory. Does the projector not need to project it's own pattern in order to calibrate it?
In particular I am confused about how the projector corner coordinates are calculated using the code snippet below. I understand the camera calibration part.
for(unsigned int j=0; j<qci.size(); j++){
const cv::Point2f &qcij = qci[j];
// Collect neighbor points
const unsigned int WINDOW_SIZE = 10;
std::vector<cv::Point2f> N_qcij, N_qpij;
// avoid going out of bounds
unsigned int starth = max(int(qcij.y+0.5)-WINDOW_SIZE, 0u);
unsigned int stoph = min(int(qcij.y+0.5)+WINDOW_SIZE, frameHeight-1);
unsigned int startw = max(int(qcij.x+0.5)-WINDOW_SIZE, 0u);
unsigned int stopw = min(int(qcij.x+0.5)+WINDOW_SIZE, frameWidth-1);
for(unsigned int h=starth; h<=stoph; h++){
for(unsigned int w=startw; w<=stopw; w++){
// stay within mask
if(mask[i].at<bool>(h,w)){
N_qcij.push_back(cv::Point2f(w, h));
float upijwh = up[i].at<float>(h,w);
float vpijwh = vp[i].at<float>(h,w);
N_qpij.push_back(cv::Point2f(upijwh, vpijwh));
}
}
}
//std::cout << i << " findHomography " << N_qcij.size() << " " << N_qpij.size() << std::endl;
// if enough valid points to build homography
if(N_qpij.size() >= 50){
// std::cout << i << " findHomography" << std::endl;
// translate qcij into qpij using local homography
cv::Mat H = cv::findHomography(N_qcij, N_qpij, cv::LMEDS);
if(!H.empty()){
cv::Point3d Q = cv::Point3d(cv::Mat(H*cv::Mat(cv::Point3d(qcij.x, qcij.y, 1.0))));
cv::Point2f qpij = cv::Point2f(Q.x/Q.z, Q.y/Q.z);
qpi_a.push_back(qpij);
qci_a.push_back(qci[j]);
Qi_a.push_back(Qi[j]);
}
}
}
Also is there a reason why one white image of the calibrations grid is not taken as opposed to 12 using the phase patterns. Is this way more accurate?
Thanks
strip or sepckle?
is there any papers or tutorial about the encoding of the speckle translation?
Thanks for your works.
I test calibate using the example data, I got:
Camera Calibration:
my edit code:
`std::vectorcv::Mat readImages(std::string path)
{
std::vectorcv::Mat images;
std::vectorstd::string names;
cv::glob(path, names);
for(auto name: names)
{
std::cout << name << std::endl;
cv::Mat mat = cv::imread(name, cv::IMREAD_UNCHANGED);
images.push_back(mat);
}
return images;
}
void SLCalibrationDialog::on_calibrateButton_clicked() {
// Disable interface elements
ui->calibrateButton->setEnabled(false);
ui->listWidget->setEnabled(false);
// Stop live view
killTimer(liveViewTimer);
reviewMode = true;
ui->snapButton->setText("Live View");
calibrator->reset();
// Note which frame sequences are used
activeFrameSeqs.clear();
QListWidget* widget = ui->listWidget;
for (int i = 0; i < widget->count(); i++) {
QListWidgetItem* item = widget->item(i);
if (item->checkState() == Qt::Checked) {
// vectorcv::Mat frameSeq(frameSeqs[i].begin(),
// frameSeqs[i].begin() +
// calibrator->getNPatterns());
std::string path = rootPath + "/" + item->text().toStdString();
std::cout << "add path:\n" << path << std::endl;
std::vectorcv::Mat frameSeq = readImages(path);
calibrator->addFrameSequence(frameSeq);
frameSeqs.push_back(frameSeq);
activeFrameSeqs.push_back(i);
}
}
calibrator->checkerSize = ui->checkerSizeBox->value();
calibrator->checkerCols = ui->checkerColsBox->value();
calibrator->checkerRows = ui->checkerRowsBox->value();
// Perform calibration
calib = calibrator->calibrate();
// Re-enable interface elements
ui->calibrateButton->setEnabled(true);
ui->listWidget->setEnabled(true);
ui->saveButton->setEnabled(true);
}
void SLCalibrationDialog::on_listWidget_itemSelectionChanged() {
std::cout << "on_listWidget_itemSelectionChanged" << std::endl;
// If selection was cleared
if (ui->listWidget->selectedItems().isEmpty())
{
std::cout << "empty" << std::endl;
return;
}
// Stop live view
killTimer(liveViewTimer);
reviewMode = true;
ui->snapButton->setText("Live View");
int currentRow = ui->listWidget->currentRow();
//ui->videoWidget->showFrameCV(frameSeqs[currentRow].back());
std::string path;
path = rootPath + "/" + ui->listWidget->currentItem()->text().toStdString();
std::cout << "current path: " << path << std::endl;
std::vectorstd::string names;
cv::glob(path, names);
if(names.size() > 0)
{
cv::Mat mat = cv::imread(names[0]);
if(!mat.empty())
ui->videoWidget->showFrameCV(mat);
}
}`
thank you in advance.
2×3 means 2 frewuencies and 3 phase shifts?
Hi,
I am going to perform the 3d scanning of the object using the slstudio in educational purposes.
I use the Imaging Source camera DMK22BUC03 (mono),Panasonic LCD Projector PT-L520E, and computer with processor 4x AMD A8-6600K APU with Radeon(tm) HD Graphics and operating system - Ubuntu 15.04 (x86_64).
Following the provided readme file I have successfully compiled the sources, having previously installed all the dependencies.
So, I have Qt version 4.8.6, QMake 2.01a, OpenCV 2.4.9, PCL 1.7 and VTK 5.8.
In order to make it work with my camera I wrote specified camera class containing the methods, which override the virtual ones of Camera.h class and finally can see a good mono picture in calibration window.
I have connected the projector to system unit using the VGA cable, monitor to system unit using a DVI one.
And try to perform calibration of camera and projector using the provided software and having the following settings:
Preferences->Pattern Mode - 2x3 Pattern Phase Shift, Camera - Imaging Source DMK22BUC03, Trigger Mode - Software.
Everything I have in projector checkbox is 1) Screen 0: 1280x1024 , 2) SLStudio Virtual Screen 3) LC3000 API and 4)LC4500 API.
However if I check the #1 I'll see only the white screen after pressing the "Perform Calibration" button (if I don't use projector, and 2 white screens if I use it and 2 monitors DVI and VGA with help of ARandR). If I check #2 I'll see the stream from my camera but no patterns appear after "snap"
(as they do in your video https://www.youtube.com/watch?v=swszXuPxGZI ).
Can you recommend something?
Looking forward to your answer.
Thank you in advance.
Hi, thank you very much for sharing such a great project, which is a great help to all.
I have recently encountered a bug. When I try to load camera parameters, the software reports an error and flashes. I have tried for a long time to fix this problem, so I would like to ask you for help.
Thank you very much.
OS : Ubuntu 22.04
Compilation:QTCreator
Hi,
I feel a bit silly trying to contact the community via an Git Issue - so maybe my issue is that there is not user forum for this project ;-)
Anyway, if anyone who sees this has SLStudio working and tried MicroPhaseShift, or indeed anything other than 2x3 and Grey code, could you please let me know how well it worked.
The reason I ask is that the readme file recommends 2x3 explicitly - even through more advanced algorithms such as Micro Phase Shifting are present. Why recommend 2x3 with all the inherent phase unwrapping issues over better choices? Are the implementations of Micro Phase Shifting etc somehow inferior?
Can you provide a Windows binary? I am not good at compiling
Hello,
I'm interested to use your software but I'm quite a beginner in almost all the techno you are using.
Tried to follow the install instruction on ubuntu and get stuck in Qtcreator, when I load your project and compiling it it says a package is missing
pcl_visualisation-1.8
is there any page which try to explain with more details how slstudio works ?
like the classic basic workflow to render a 3D image ? (open Qt creator -> open Slstudio project -> compile program)
Thanks
Hi, I'm just compiling your project and had to install two additional packages, so the dependencies for Ubuntu (16.04) become:
sudo apt-get install qt5-qmake libvtk6-qt-dev libpcl-dev libopencv-dev libglew-dev qtcreator qt5-default libusb-1.0-0-dev
qt5-default
is required on systems that have both Qt4 and Qt5 installed. Without this package, qmake would fail on my machine.
libusb-1.0-0-dev
is a dependency in src/SLStudio.pro
.
I am using Windows 7 with Qt 5.6.0. When I build this project, there is no bug, but 442 warnings and the compilation failed. The Compile Output includes many this kind of errors:
[ cl : Command line warning D9024 : unrecognized source file type 'Project/slstudio-master/build-SLStudio-Desktop_Qt_5_4_2_MSVC2012_OpenGL_32bit-Debug"', object file assumed
cl : Command line warning D9027 : source file 'Project/slstudio-master/build-SLStudio-Desktop_Qt_5_4_2_MSVC2012_OpenGL_32bit-Debug"' ignored]
The final error that exit the process:
[jom: C:\Users\zhang.2669\Documents\Qt Project\slstudio-master\build-SLStudio-Desktop_Qt_5_4_2_MSVC2012_OpenGL_32bit-Debug\Makefile.Debug [debug\moc_SLStudio.cpp] Error 1
jom: C:\Users\zhang.2669\Documents\Qt Project\slstudio-master\build-SLStudio-Desktop_Qt_5_4_2_MSVC2012_OpenGL_32bit-Debug\Makefile [debug] Error 2
16:24:35: The process "C:\Qt\Tools\QtCreator\bin\jom.exe" exited with code 2.
Error while building/deploying project SLStudio (kit: Desktop Qt 5.4.2 MSVC2012 OpenGL 32bit)
When executing step "Make"
16:24:35: Elapsed time: 02:39.]
Do you know how to resolve this problem? Thank you!
1- can i use another DLP3010EVM-LC ? its about 103 Hz fresh rate for Real Time Structure
2- is there an option to use 2 cameras ? without code modification in triangulation
( i will use Ximea MQ013RG-E2 )
3- does gpu processing works on windows ?
The programs builds fine with few modifications, but the executable fails to run with this message
(SLStudio:6008): Gtk-ERROR **: GTK+ 2.x symbols detected. Using GTK+ 2.x and GTK+ 3 in the same process is not supported
Trace/breakpoint trap (core dumped)
How to I force it to use a GTK-2 ?
Hello Mrs.
Why does the error of the projector always reach tens or hundreds?
Hi Jacob,
First of all thank you for all your hard work, I'm trying to follow your steps, and I have question about Projector setup.
I have:
but when I run ProjectorTest from ~/slstudio/slstudio-master/src/projector it's shows
`Screen 0: width 2624, height 900
terminate called after throwing an instance of 'char const*'
also wondering should I upgrade the projector firmware first(now v.2.0.0) and may be preset-up it? Because right now it shows patterns in red via USB (and in B/W via HDMI), but I want to trigger camera, so I need USB mode.
Hi,
I always got incorrect calibration result. The camera calibration is good but the projector calibration result is totally incorrect, as well as the stereo calibration. The reprojection error of projector or stereo is more than e+02. The point cloud result is just a plane without depth information.
I have tried to load the correct calibration file, but the 3D result is messed up. I also tried the matlab code and made my gamma response linear.
Do you know how to resolve this problem?
Bests,
Yujia
Hi,
I managed to get the software running on windows but I am seeing a wave in the 3D point cloud.
I have attached a picture below. Any idea what this is?
The point cloud itself if of a flat piece of paper and was scanned using the 2 x 3 patterns in one direction (vertical patterns). When I look at your point cloud that in in your video of the face it is very clean. What is going wrong do you think with my point cloud. The problem is very repetitive.
I am using the lightcrafter 4500 in the setup and the calibrations is less than 1 for both the camera and projector.
Thanks in advance
Dot
Hi,
Hopefully some very quick questions.
Has the gray code algorithm been tested and does it work? (I am getting some strange results)
For a projector with a resolution of 854 x 480 what are the main values that need to be changed in the code to make this work. (Nhorz Nvert etc...)
Thanks
Hi,
There is a comment in the GrayCode decoder codec as follows
// Binarize frames. TODO: subpixel interpolation.
How would you go about implementing sub pixel interpolation for the gray code patterns when acquired through the camera? Not looking for code but more the approach on how to tackle this?
Could the same technique work for the three phase images in 2x3 codec?
Thanks
Dot
i am a postgratude student from ningbo university china, i have used this project to generate point cloud in static scene, but my project is how to use structure light to reconstruct a motion entity. i do not know whether this project is also suitablefor dynamic scene or not and theoretically motion compensation should be considered but i did not observe the related code for motion compensation in this project. simultaneously i notice the video for this project seems to work well for generating point clouds of a moving head? so i am confused. could you please give me some suggestion on this issue and wonder if there are some materials or code available for structured light reconstruction in dynamic scene, looking forward to get your reply, thank you very much.
Built on gt5 using SLStudio.pro configuration.
I can run SLStudio from inside my newly created build folder, but when I click "perform calibration" SLStudio quits with a "The program has unexpectedly finished." Is this because I have no calibration.xml file?
I can use cheese to preview my webcam (so I know I can see it), but the dropdown menu in Preference inside SLStudio only show "SLStudio Virtual Camera" as an option. Doesnt recognize my USB camera.
Despite two issues above, I tried running without calibration and with "SLStudio Virtual Camera" (Preferences: single point cloud acquisition, 2x3 pattern phase shift, Screen 0 projector, software trigger) and my point clouds are empty, presumably because I am not using my usb webcam.
What matlab shows when I open .pcd output file:
# .PCD v.7 - Point Cloud Data file format
VERSION .7
FIELDS x y z rgb
SIZE 4 4 4 4
TYPE F F F I
COUNT 1 1 1 1
WIDTH 640
HEIGHT 512
POINTS 327680
DATA ascii
0.000000 0.000000 0.000000 255
0.000000 0.000000 0.000000 255
0.000000 0.000000 0.000000 255
0.000000 0.000000 0.000000 255
0.000000 0.000000 0.000000 255
0.000000 0.000000 0.000000 255
0.000000 0.000000 0.000000 255
0.000000 0.000000 0.000000 255
0.000000 0.000000 0.000000 255
0.000000 0.000000 0.000000 255
Any tips on calibration and webcam usage would be greatly appreciated!
(Also pardon simplicity in questions; first endeavor into c++)
Morris
xubuntu running 16.04.
Playstation eye camera
Sony MP-CL1A projector
Hi,
Thanks for sharing an interesting project! I am interested in using parts of this project in a closed source application. Is that possible? What is the license of slstudio?
Regards,
Nils
Hi,
i was wondering if there is anything in there that will merge scans if we need to do multiple scans to complete a full 360 scan?
Regards,
Per
Good Day Sir,
I was trying to work on your repository recently for my University Project. When I run the application, and scan the example data, the saved .pcd and .ply outputs result different than the "pointCloud.ply" outputs presented in the example_data/... folders. I wonder if there is an extra process needed to come up with presented "pointCloud.ply" after the scan is done.
Ps: I get meaningful .pcd and .ply outputs from skull_3ps and skull_gray; however, the outputs are not the same as "example_data/skull_3ps/pointCloud.ply" and "example_data/skull_gray/pointCloud.ply" respectively. Resulting output files has more noise than the example ones. Resulting outputs are below.
Sincerely.
Hi Jakob,
I apologise for raising two issues in one day, but having looked at the code in the matlab directory, we do not understand what is going wrong seeing how early it bails out.
We have built the matlab mex files successfully after the fix, but now when running determineGammaResponse we get an error on line 5 where it creates an projector object. Here is the output on the error below. Also we have been able to use the camera and projector with the SLStudio calibration.
DLP Lightcrafter
XIMEA XiQ MG013MG-E2
Ubuntu 16.04 64-bit
matlab R2018a
Warning: The following error was caught while executing 'Projector' class destructor:
Error using ProjectorMex
Input must be a real uint64 scalar.
Error in Projector/delete (line 24)
ProjectorMex('delete', this.objectHandle);
Error in Projector (line 18)
function this = Projector(screenNum)
Error in determineGammaResponse (line 5)
p = Projector(1);
> In Projector (line 18)
In determineGammaResponse (line 5)
Unexpected unknown exception from MEX file..
Error in Projector (line 19)
this.objectHandle = ProjectorMex('new', screenNum);
Error in determineGammaResponse (line 5)
p = Projector(1);
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.