OAK-D-Long-Range: 让你的机器人拥有鹰一样的视觉!3D视觉精度与点云方案!

OAK-D LONG RANGE – 精度与点云

有没有想过让你的机器人有鹰的视力?来看看我们OAK-D-Long Range相机吧!这是一款3D+AI相机,为全球项目带来了超强的视觉效果!让我们深入了解它是如何通过15cm的基线做到这一点的!

15CM基线: 更深度的透视

有了15厘米的立体基线,OAK-D -Long-Range可以更准确地感知更远的物体。在配置立体深度文档中(Configuring Stereo Depth (luxonis.com),我们提到基线距离(线性)与精度相关,因此,如果我们将基线距离增加2倍,则在相同距离下的误差将减少2倍。
在这里插入图片描述

深度精度

在我们的深度精度文档()Depth accuracy (luxonis.com)页面上,我们有关于每个设备精度的更深入(双关语)信息,以及关于精度图为何如此的图表和解释。以下是我们的OAK-D-Long-Range的深度精度(与距离有关):
在这里插入图片描述
这种精度是通过具有82°水平FOV的默认镜头获得的。如果我们减少FOV(不同的镜头或中央裁剪框,而不是ISP缩小尺寸),我们会获得更好的远距离精度。

点云

图形很好,但如果相机不适用于现实世界中的应用程序,它们就毫无用处。我们在一辆振动重型拖拉机(一辆有30年历史的IMT 549)上录制了一些镜头,未经过滤的点云看起来相当不错。
使用rerun.io(Rerun — Visualize multimodal data over time),我们可视化了直接从设备获得的RGB-D帧,并且没有主机上的后处理(额…类似于RealSense™相机的操作)。因此,如果我们添加主机计算密集型点云处理,我们将获得更平滑的曲面。

Tractor Video 1

Tractor Video 2

Tractor Video 3

Tractor Video 4

代码复现

我们使用depthai-sdk进行管道构建和回放,并使用the depthai-viewer(GitHub - luxonis/depthai-viewer: Log images, point clouds, etc, and visualize them effortlessly. Built in Rust using egui)进行可视化。我们也可以使用原生Rerun(这里有一个Rerun的例子:OAK-D Long Range Tractor pointcloud visualization with native Rerun (non-colorized pointclouds?) · GitHub),但点云不会被着色。在运行代码之前,需要安装以下要求:

python3 -mpip install depthai-sdk==1.14 depthai-viewer==0.2.2

安装要求并将OAK设备连接到计算机(进行立体声重建)后,可以运行以下代码:

from depthai_sdk import OakCamera
import depthai as dai
import depthai_viewer as viewer
import subprocess
import sys
import cv2# Download and run the tractor recording
with OakCamera(replay="tractor-oak-d-lr") as oak:# Run & initialize the depthai_viewertry:subprocess.Popen([sys.executable, "-m", "depthai_viewer", "--viewer-mode"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)except subprocess.TimeoutExpired:passviewer.init("Depthai Viewer")viewer.connect()oak.replay.set_fps(10)cam_b = oak.create_camera('CAM_B')cam_c = oak.create_camera('CAM_C')# Downscale the 1920x1200 frames to 1280x800oak.replay.resize('cam_c', (1280, 800))oak.replay.resize('cam_b', (1280, 800))nn = oak.create_nn('mobilenet-ssd', cam_c)stereo = oak.create_stereo(left=cam_b, right=cam_c)stereo.node.setOutputSize(640, 400)stereo.config_stereo(confidence=215, lr_check=True, extended=True, subpixel=True, subpixel_bits=5)stereo.config_stereo(align=cam_c)stereo.node.setDepthAlign(dai.CameraBoardSocket.CAM_C)# On-device post processing for stereo depthconfig = stereo.node.initialConfig.get()stereo.node.setPostProcessingHardwareResources(4, 4)config.postProcessing.speckleFilter.enable = Trueconfig.postProcessing.speckleFilter.speckleRange = 50config.postProcessing.temporalFilter.enable = Falseconfig.postProcessing.spatialFilter.enable = Trueconfig.postProcessing.spatialFilter.holeFillingRadius = 1config.postProcessing.spatialFilter.numIterations = 1config.postProcessing.thresholdFilter.minRange = 400config.postProcessing.thresholdFilter.maxRange = 15000config.postProcessing.brightnessFilter.maxBrightness = 255stereo.node.initialConfig.set(config)q = oak.queue([stereo.out.depth.set_name('depth'),stereo.out.rectified_right.set_name('rr'),nn.out.main.set_name('nn'),]).configure_syncing(enable_sync=True, threshold_ms=250).get_queue()# oak.show_graph()oak.start()calibData = oak.device.readCalibration()intrinsics = calibData.getCameraIntrinsics(dai.CameraBoardSocket.CAM_C, dai.Size2f(640, 400))viewer.log_pinhole("CAM_C/transform/Color", child_from_parent=intrinsics, width=640, height=400, timeless=True)viewer.log_rigid3("CAM_C/transform", child_from_parent=([0, 0, 0], [1, 0, 0, 0]), xyz="RDF", timeless=True)while oak.running():packets = q.get()depth = packets['depth']viewer.log_image("Right", packets['rr'].frame)color = packets['nn'].framecolor = cv2.pyrDown(color) # Downscale to match 640x400 depth frameviewer.log_image("CAM_C/transform/Color/Image", color[:, :, ::-1]) # BGR to RGBviewer.log_depth_image("CAM_C/transform/Color/Depth", depth.frame, meter=1e3)oak.poll()

请注意,在第一次运行时,depthai-sdk将下载大约300MB的tractor-oak-d-lr录制:

在这里插入图片描述
欢迎大家点赞!关注!评论!三连啊~~~

新朋友还想进一步了解OAK相机的话可到我们官网哦,https://www.oakchina.cn/

如果你初次遇见OAK,可来这里系统查看一下:https://www.oakchina.cn/intro/
Shopping直通车在这里:https://www.oakchina.cn/shop/

OAK中国 | 追踪AI技术和产品新动态
公众号 | OAK视觉人工智能开发
戳「+关注」获取最新资讯↗↗
如果喜欢,请一键三连吧~比心❤️

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/855670.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Boosting Weakly-Supervised Temporal Action Localization with Text Information

标题:利用文本信息增强弱监督时间动作定位 源文链接:https://openaccess.thecvf.com/content/CVPR2023/papers/Li_Boosting_Weakly-Supervised_Temporal_Action_Localization_With_Text_Information_CVPR_2023_paper.pdfhttps://openaccess.thecvf.com/…

Python3 Matplotlib展示数据

matplotlib 是一个 Python 库,用于创建各种类型的图表和可视化。它提供了一个类似于 MATLAB 的绘图界面,使用户能够轻松地绘制线图、散点图、直方图、饼图等各种图表类型。matplotlib 可以在 Python 脚本、IPython shell、Jupyter Notebook 等环境中使用…

Oracle中的模糊查询

在 Oracle 中,模糊查询指的是在查询数据时使用通配符来匹配模式,而不是精确匹配特定的值。常用的通配符包括 %(匹配任意字符)和 _(匹配单个字符),用于在 WHERE 子句中进行模糊匹配。 实现模糊查…

科技赋能冷链园区:可视化带来全新体验

应用图扑可视化技术,冷链园区能够更加直观地监控和管理资源,优化运作流程,提高运营效率与服务质量。

Python的pytest框架(6)--测试钩子(hooks)

在pytest中,测试钩子(hooks)是一组特定的函数,它们允许你在测试过程的不同阶段插入自定义的逻辑。这些钩子函数可以让你在测试开始、测试结束、测试失败等时刻执行特定的操作。 pytest提供了一系列的钩子函数,你可以通…

贪心算法学习四

例题一 解法(暴⼒解法 -> 贪⼼): 暴⼒解法: a. 依次枚举所有的起点; b. 从起点开始,模拟⼀遍加油的流程 贪⼼优化: 我们发现,当从 i 位置出发,⾛了 step 步…

怎么把webp文件转换为jpg?快来试试这四种转换方法!

怎么把webp文件转换为jpg?Webp是一种不常见的图片格式,这种格式在使用过程中有很多缺点,首先它的浏览器兼容性不是很强,这就代表大家无法随意进行网络传输,可能需要准备特定的操作才能进行,然后编辑webp的工…

查看服务器端口,如何查看服务器端口是多少并修改

查看服务器端口并修改内容是一个涉及网络管理和系统配置的专业任务。以下是一个详细的步骤说明,用于查看和修改服务器端口。 一、查看服务器端口 1. 使用命令行工具: - 对于Linux或Unix系统,可以使用netstat、lsof或ss等命令来查看端口状…

网络编程概述

网络编程是利用计算机网络进行数据交换和通信的过程,涉及不同主机间的数据传输与设备连接通信。 在现代数字化时代,网络编程已成为开发互联网应用不可或缺的技术。它不仅支撑着网页浏览、邮件传输等基础功能,还是实现复杂网络服务和应用的基…

Android中如何知道我使用的是 AndroidX 库还是 Support Library

在Android中,要确定你正在使用AndroidX库还是Support Library,你可以通过检查项目的依赖配置以及代码中的引用。以下是几种方法来确定这一点: 检查build.gradle文件: 在你的项目的build.gradle(Module: app&#xff09…

redis大key对持久化的影响

我在“redis持久化方式——AOF\RDB”中详细介绍了redis持久化的策略,一言蔽之,就是将数据库的内存数据保存在磁盘文件中,本文讲解大key对redis持久化的影响 什么是大key? redis中的数据以key——value形式存储,大key…

机器学习常见的sampling策略 附PyTorch实现

初始工作 定义一个模拟的长尾数据集 import torch import numpy as np import random from torch.utils.data import Dataset, DataLoadernp.random.seed(0) random.seed(0) torch.manual_seed(0) class LongTailDataset(Dataset):def __init__(self, num_classes25, max_sam…

信息量、香农熵、交叉熵、KL散度的意义

文章目录 1. 信息量2. 香农熵3. 交叉熵4. KL散度(Kullback-Leibler Divergence(Relative Entropy)) 1. 信息量 相关概念: 对于一个事件: 小概率 – > 大的信息量大概率 – > 小的信息量多个独立事件的信息量计算可以直接相加 表达公式&#xf…

开关阀(1):定位器与电磁阀的区别

气动阀门带电磁阀是控制气源开关的,如果装配阀门定位器即为调节型? 一般来说,电磁阀就是控制气源通断的,用于阀门快速的全开或全关,电磁阀是得电与失电是起开关作用。 定位器是控制气源压力的大小,控制阀门…

数据结构---二叉树的性质总结

第i层上的节点数 证明: 二叉树的最大节点数 证明: 第一层对应2^0个节点, 累加得到 这是一个等比数列 求和公式: 那么这里的n指的是一共有多少个相加 根据从b到a一共有b-a1个可推出 有(k-1)-01个相加 那么结果为: 叶节点与度为2的节点关系 证明: 假设二叉树的总节点数为 NNN…

解决动态权限路由页面刷新空白404

需要将任意路由 path: /:pathMatch(.*)* 从固定路由中提取出来,在刷新时,等待用户信息获取完毕,将动态路由和任意路由通过 router.addRoute() 重新添加到路由中 // 固定路由 export const constantRoute [ ... ]// 权限路由 export const …

主键的定义,理解

"主键"是数据库中的一个术语,用于标识数据库表中的每一条记录的唯一标识。主键的特点如下: 唯一性:每个表中的主键值必须是唯一的,这样每条记录都能被准确地识别和检索。不可更改性:一旦定义,主…

常数变易法求解非齐次线性微分方程

文章目录 常数变易法求解一阶非齐次线性微分方程常数变易法求解二阶非齐次线性微分方程例题 常数变易法求解一阶非齐次线性微分方程 对于一阶非齐次线性微分方程 y ′ p ( x ) y q ( x ) y p(x)y q(x) y′p(x)yq(x) 先用分离变量法求解对应的齐次方程 y ′ p ( x ) y 0…

SpelExpressionParser评估SpEL(Spring Expression Language)表达式的解析器

是Spring中用于解析和评估SpEL(Spring Expression Language)表达式的解析器,SpEL是一种强大且灵活的表达式语言,广泛用于Spring框架中,以便在运行时解析和评估表达式 主要功能 1.解析和评估表达式:spelExpressionParser可以解析复杂的表达式,并在运行时对其进行评估; 2.访问…

Linux时间子系统7:sleep timer接口定时实现

1、前言 之前的文章中介绍了Linux时间相关的内容,包括用户态/内核态的时间获取,时间的种类,时钟源等,本篇开始的后续几篇文章将介绍Linux系统关于定时相关的服务,这与之前的内容是高度相关的,本篇还是从应用…