LabVIEW实现深度相机与三维定位实战(一)

简介: LabVIEW实现深度相机与三维定位实战(一)

‍‍🏡博客主页: virobotics(仪酷智能):LabVIEW深度学习、人工智能博主

🍻本文由virobotics(仪酷智能)原创首发

🥳欢迎大家关注✌点赞👍收藏⭐留言📝

前言

Hello,大家好,我是virobotics(仪酷智能),一个深耕于LabVIEW和人工智能领域的开发工程师。

今天给大家分享在LabVIEW中实现深度相机与三维定位相关理论知识。


一、多种深度相机及原理

1.双目摄像机:获取左右两个RGB图像,通过机器视觉算法,进行“同源点”匹配,从而得到“视差”,计算深度。
image.png

2.双目+结构光相机:在双目相机的基础上,主动向物体投射编码激光,并接收发射。这样可以更快、更准确地进行匹配。(因为左右画面中,相同的反射点,就是同源点)经常用于3D人脸识别。
image.png

3.ToF深度相机:ToF(Time of flight),即飞行时间法,是一种深度测量的方法,精度为厘米级。其测距原理是通过给目标连续发送光脉冲,然后用传感器接收从物体返回的光,通过探测光脉冲的飞行(往返)时间来得到目标物距离。
image.png


二、环境搭建

2.1 部署本项目时所用环境

  • 操作系统:Windows10
  • python:3.6及以上
  • LabVIEW:2018及以上 64位版本
  • AI视觉工具包:techforce_lib_opencv_cpu-1.0.0.98.vip
  • onnx工具包:virobotics_lib_onnx_cuda_tensorrt-1.0.0.16.vip【1.0.0.16及以上版本】

2.2 LabVIEW工具包下载及安装


三、双目相机采集图像及原理

3.1 双目相机结构

双目相机,是由两个相对位置固定的单目摄像头构成。通常,两个摄像头位于同一个拍摄平面,且光轴(Z轴)平行。左右摄像头中心连线称为“基线”。基线与X轴平行,如下图。两个摄像头,除了安装位置不一样,其余相机参数(焦距、分辨率、视角范围等等)均应相同。
image.png

3.2 双目图像采集

任意选取一款市面上流行的“USB免驱”双目摄像机进行实验。其他参数,如:基线长度、镜头焦距、像素数等,请根据实际应用场景进行选型。

本实验以深圳金乾象生产的 KS4A418-D 型号双目相机为例。其基线在38~167mm之间可调。实验前,先固定一种基线长度。
image.png

1、第一步: 通过USB数据线,将双目摄像机连到电脑的任意一个USB接口。
2、第二步:打开“范例\StereoVideo.vi”
image.png

3、第三步:切换到程序框图,修改cameraID为双目相机对应的ID号。
通常电脑自带的摄像头ID为0,其他外接摄像头ID依次+1。如果电脑没有自带摄像头,那么外接的双目相机的ID就是0。
image.png

4、第四步:设置分辨率。通常单目摄像头的分辨率的宽高比为16:9或4:3,那么对应的双目分辨率的宽高比应为32:9或8:3,即宽度增加一倍。 为了方便与后面章节的ACVNet模型对接,这里推荐使用分辨率640*240。

(本实验所用的双目摄像头,可以根据用户设置的分辨率,自动切换单目和双目模式。单目模式只采集Left摄像头画面,双目模式采集Left和Right摄像头拼接的画面)

5、第五步:切换到前面板,运行VI。可以观察到采集的双目画面。VI通过一定的算法,将双目画面分离成Left和Right两张图。(有些型号的双目相机,画面是左右颠倒的,可以将Switch设为“左右交换”予以修正)
image.png

6、第六步:点击“OK”,可以将当前的Left和Right画面保存成图片文件。点击“Stop”退出程序。
image.png


四、项目源码

如需源码,请查看:https://blog.csdn.net/virobotics/article/details/132013507


总结

以上就是今天要给大家分享的内容,希望对大家有用。如有笔误,还请各位及时指正。后续还会继续给各位朋友分享其他案例,欢迎大家关注博主。我是virobotics(仪酷智能),我们下篇文章见~

**如果文章对你有帮助,欢迎✌关注、👍点赞、✌收藏

目录
相关文章
|
传感器 监控
基于STM32的智能交通灯控制系统设计与实现
基于STM32的智能交通灯控制系统设计与实现
1701 0
|
9月前
|
算法 Java C语言
弗洛伊德算法求最短路径
弗洛伊德算法用于寻找加权图中各顶点间的最短路径,适用于无向图和有向图。算法基于动态规划思想,通过枚举中间顶点来更新路径,确保最终得到最短路径。该算法要求路径权值非负,否则可能出错。
734 0
|
3月前
|
数据采集 人工智能 达摩院
达摩院开源RynnBrain:首个支持移动操作的具身大脑基础模型
达摩院发布首个可移动操作的具身基础模型RynnBrain,首创时空记忆与物理空间推理能力,支持视频/图像/文本多模态输入及区域、轨迹等具身输出。开源MOE架构RynnBrain-30B-A3B(仅3B激活参数),在16项基准全面SOTA,并推出全新评测集RynnBrain-Bench。
620 8
|
11月前
|
机器学习/深度学习 数据采集 边缘计算
深度学习在智慧渔业中的应用:鱼类识别、计数与追踪的技术演进与挑战
中国是全球最大水产品生产国,水产养殖产量连续32年居世界首位。传统鱼类监测方法效率低、主观性强,而深度学习凭借其强大的特征提取能力,正推动鱼类识别与行为分析技术革新,助力智慧渔业发展。
844 1
|
XML 机器学习/深度学习 数据格式
YOLOv8训练自己的数据集+常用传参说明
YOLOv8训练自己的数据集+常用传参说明
25942 3
|
6月前
|
机器学习/深度学习 人工智能 Cloud Native
Anaconda3 2025 深度解析:Python 3.11 + 提速、大模型支持,安装步骤+安装包
Anaconda3 2025 是面向数据科学与AI开发的一站式平台,集成Python环境、包管理与开发工具,支持机器学习、大模型开发及云原生部署,开箱即用,助力高效开发。
2079 2
|
机器学习/深度学习 监控 算法
机器学习在图像识别中的应用:解锁视觉世界的钥匙
机器学习在图像识别中的应用:解锁视觉世界的钥匙
1736 95
|
存储 缓存 算法
面试官:单核 CPU 支持 Java 多线程吗?为什么?被问懵了!
本文介绍了多线程环境下的几个关键概念,包括时间片、超线程、上下文切换及其影响因素,以及线程调度的两种方式——抢占式调度和协同式调度。文章还讨论了减少上下文切换次数以提高多线程程序效率的方法,如无锁并发编程、使用CAS算法等,并提出了合理的线程数量配置策略,以平衡CPU利用率和线程切换开销。
面试官:单核 CPU 支持 Java 多线程吗?为什么?被问懵了!
|
9月前
|
算法 数据处理 定位技术
基于TDOA算法的三维定位
基于TDOA算法的三维定位
1047 0
|
搜索推荐 Android开发 UED
信息检索系统评估指标的层级分析:从单点精确度到整体性能度量
本文深入探讨了信息检索系统(如搜索引擎)的评估机制,从用户行为特征出发,设计了一系列量化指标以衡量搜索结果的相关性和有效性。核心内容包括精确度(Precision)、Precision@K(聚焦前K个结果)、Average Precision@K(考虑位置权重)以及MAP@K(系统整体性能评估)。通过实际案例分析,展示了如何用这些指标评估搜索系统的质量,并强调高质量系统需在多维度上表现优异,以契合用户真实需求和行为模式。文章为优化信息检索系统提供了科学指导框架。
684 7
信息检索系统评估指标的层级分析:从单点精确度到整体性能度量