Code Monkey home page Code Monkey logo

liupeiqicn / slmaster Goto Github PK

View Code? Open in Web Editor NEW

This project forked from practice3dvision/slmaster

0.0 0.0 0.0 200.87 MB

SLMaster是一个较为完整的开源结构光3D相机软件,你能够使用它完成从标定、条纹编码、三维重建、点云后处理一系列操作。欢迎Star⭐和Fork。

Home Page: https://mp.weixin.qq.com/s?__biz=MzkxNTY2NDc2OA==&mid=2247483677&idx=1&sn=3c08aa1db66ec9c1e60cb1279acc0fba&chksm=c15afbf2f62d72e470c86b24366fc7ac9252f28159edf9d434ba5ab9a603f98acb91b89e471b#rd

License: GNU Affero General Public License v3.0

Shell 0.02% JavaScript 0.06% C++ 41.61% Python 0.10% C 29.19% Objective-C 0.10% PowerShell 0.07% Kotlin 0.26% Objective-C++ 0.62% Swift 0.12% HTML 0.22% QML 23.30% QMake 0.11% CMake 4.03% Batchfile 0.20%

slmaster's Introduction

1. SLMaster

SLMaster是一个较为完整的结构光3D相机软件。你可以使用它对任意被测物体完成静态扫描或者实时动态扫描。

该软件将由公众号系列文章从0到1搭建一套属于你自己的高精度实时结构光3D相机手把手教学完成。这不仅能够扩展你的知识,使你获得你人生中第一台系统化的结构光3D相机,更为重要的是对你的代码能力颇有提升。

通过这个项目你能收获如下内容:

  • 对结构光三维重建知识体系的提升
  • 一套极具价值的软件
  • 极大程度锻炼你的代码能力

更为重要的是,免费!免费!免费! 请不要吝惜你的⭐,你的⭐和关注是博主源源不断的动力。有任何问题和bug反馈请提Issue

2. 依赖

SLMaster依赖的库包含如下几点:

注意点!!!

依赖库中的opencv_contribute为博主自己fork并修改的库,该库中的structured_light模块和cuda_structured_light模块有博主添加的算法,主要包括CPU加速的互补格雷码方法和CUDA加速的互补格雷码方法以及CUDA加速的多视几何约束方法,对于opencv_contribute中相应的测试用例数据在博主的私人opencv_extra库中,如需要可自行下载。如果你想查看更多的结构光算法实现,可访问博主的另一个较早版本的结构光库libStructedLightCamera

如果电脑没有Nvidia GPU,可以关闭WITH_CUDA,仅编译CPU版本。软件仍然能够有效运行。

3. 编译与使用

当你获取到本库代码之后,首先检查上述依赖,若不满足依赖条件,可通过点击上述依赖库跳转至对应的库,随后下载其代码并进行编译。以上面库皆没有编译安装的环境为例,它的编译顺序应该是这样的:

  1. 下载OpenCVopencv_contribute并进行编译(若WITH_CUDA未勾选请勾选上)
  2. 下载Qt5.15并选择MSVC编译套件安装
  3. 下载VTK并令VTK_GROUP_ENABLE_Qt=YES进行编译
  4. 下载PCL-1.12.1-AllInOne进行安装,安装完成后删除PCL安装文件夹下的除3rdParty外的其它任何文件,并将3rdParty文件夹中的VTK文件夹删除
  5. 下载PCL并选择好第三方库路径进行编译
  6. 下载MSVDK软件并安装
  7. 打开命令行窗口,键入git clone --recursive https://github.com/Practice3DVision/SLMaster.git下载SLMaster
  8. 打开VSCode编译运行SLMaster即可

注意! 每当编译好一个库都应当在系统环境变量中加入。例如,编译完成OpenCV后,设置好系统环境变量OpenCV_DIR路径。

你可以打开SLMaster中的BUILD_TEST选项,这将编译google_test中的测试用例,这些测试用例同样是一份非常不错的示例代码。

当你成功进行编译后,将得到可执行文件SLMasterGui.exe,它位于build/gui/目录之下。随后运行它尽情享受吧!

觉得编译过于麻烦?

Release页面有提供相应的exe安装文件以供下载。

5. 示例与使用

通过安装可执行文件或编译成功后,可通过如下方式使用软件测试离线数据:

扫描模式->离线扫描模式->选择左图像(安装路径data/L)->选择右图像(安装路径data/R)->开始扫描->单次扫描。

如需在线连接3D相机使用,请注意!相机配置文件位于安装目录/gui/qml/res/config中,确定好你所使用相机为双目或三目,并相应修改配置文件中的2D Camera ManufactorDLP Evm参数。

4. 功能

SLMaster具备完整的软件功能,关键功能可以总结为以下几点:

  • 单目/双目/三目结构光相机切换功能

  • 3D相机在线/离线实时检测功能

  • 3D相机连接/断开连接功能

  • 光强、曝光时间调整功能

  • 投影仪编码图案在线调试功能

    包括单次投影、连续投影、暂停投影、步进投影、停止投影等。

  • 在线条纹编码功能

    包括1/8位深度图案,图案类型包括相移互补格雷码方案、多频外插方案(待完成)、多视立体几何方案,离焦方法包括传统二值离焦、二维误差扩散方法、最佳脉冲宽度调制方法。

  • 在线条纹烧录功能

  • 十字线校准功能

  • 实时图像查看功能

  • 离线相机标定功能

    包括单目/双目标定,受支持的标定板类型包括棋盘格、圆点、同心双圆环。此外,具备图像查看、显示误差分布图、显示极线校正图等功能。

  • 在线投影仪标定功能

    可通过前述在线编码功能选择自己需要的相移互补格雷码周期数目,随后进入该功能执行在线投影仪标定,标定投影仪的内参和与相机的外参,支持单次内外参同时标定或先标内参再标外参。受支持的标定板类型包括棋盘格、圆点、同心双圆环。此外,具备显示误差分布图、水平绝对相位、垂直绝对相位、相机图像、投影仪映射图像查看等功能。

  • 扫描模式切换功能(静态扫描/动态扫描/离线扫描)

  • 实时三维点云渲染输出功能

  • 实时纹理渲染功能

  • 单次重建/实时重建功能

  • 深度颜色归一化功能

  • 点云裁剪功能

  • 点查询功能

  • 点云保存功能

  • 帧率/点云数据量显示功能

  • 点云后处理功能

    该模块通过QuickQanava实现的节点编辑器而实现。通过将各类PCL算子封装成节点,实现了以节点编辑器为基础,拖曳并连接节点而形成特定的点云处理算法。该种方式避免了在针对各类点云场景下,频繁的代码修改而耗时耗力的问题,可在线修改参数或是编辑算法流程以查看后处理效果。

  • 英/汉语言切换

5. 示例

功能 运行示例
十字线校准等功能 十字线校准功能
条纹生成功能 条纹生成功能
离线相机标定功能 离线相机标定功能
标定误差分布图显示功能 标定误差分布图显示功能
在线投影仪标定功能 在线投影仪标定功能
在线扫描功能 在线扫描功能
实时扫描功能 实时扫描功能
后处理功能 后处理功能

slmaster's People

Contributors

practice3dvision avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.