OAK相机的RGB-D彩色相机去畸变做对齐

低畸变标准镜头的OAK相机RGB-D对齐的方法

OAK相机内置的RGB-D管道会自动将深度图和RGB图对齐。其思想是将深度图像中的每个像素与彩色图像中对应的相应像素对齐。产生的RGB-D图像可以用于OAK内置的图像识别模型将识别到的2D物体自动映射到三维空间中去,或者产生的RGB-D图像用于产生彩色点云数据。默认情况下,在立体匹配过程中,深度与校正后的左图像对齐

立体深度节点提供了现成的对齐功能。该节点接收一对立体图像(左右相机图像),并输出一个深度图。默认情况下,深度图与校正后的左图像对齐,可以通过以下方法设置彩色相机和深度图对齐。

stereo.setDepthAlign(dai.CameraBoardSocket.RGB)   # 彩色相机和深度图对齐的功能

大广角系列相机的彩色相机和深度图对齐产生RGB-D的方法

当使用广角OAK相机时,由于镜头造成的图像的大失真,对齐可能会很棘手。默认情况下,深度图和左右相机是能够矫正到没有畸变的水平状态,但是彩色图像是没有去畸变的。这可能会导致两个图像对齐以后的错位。为了解决这个问题,彩色图像也需要去畸变

目前OAK相机内置了彩色相机去畸变的节点,是可以在相机内去除畸变后和深度图对齐,生产RGB-D的效果

cam = pipeline.create(dai.node.Camera)

cam.setBoardSocket(dai.CameraBoardSocket.RGB)

cam.setMeshSource(dai.CameraProperties.WarpMeshSource.CALIBRATION)

也可以通过opencv的方式手动去畸变

alpha = 0

stereo.setAlphaScaling(alpha)

rgb_w = camRgb.getResolutionWidth()

rgb_h = camRgb.getResolutionHeight()

rgbIntrinsics = np.array(calibData.getCameraIntrinsics(rgbCamSocket, rgb_w, rgb_h))

rgb_d = np.array(calibData.getDistortionCoefficients(rgbCamSocket))

rgb_new_cam_matrix, _ = cv2.getOptimalNewCameraMatrix(rgbIntrinsics, rgb_d, (rgb_w, rgb_h), alpha)

map_x, map_y = cv2.initUndistortRectifyMap(rgbIntrinsics, rgb_d, None, rgb_new_cam_matrix, (rgb_w, rgb_h), cv2.CV_32FC1)

frameRgb = cv2.remap(frameRgb, map_x, map_y, cv2.INTER_LINEAR)

当将rgb相机畸变矫正后,图像的边缘不平直的部分会被裁切掉一部分。这导致了FOV的损失。为了最大化FOV,可以使用alpha参数[0-1]来缩放未扭曲的图像,让裁切的部分尽量小一点。

stereo.setAlphaScaling(alpha)

alpha = 0 -无缩放,未失真的图像将与原始图像的大小相同。

alpha = 1 -最大缩放,未失真的图像将是适合原始图像的最大可能的图像。

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

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

相关文章

深入理解Python异常处理机制

在Python编程中,异常处理是一个非常重要的概念。它可以帮助我们捕获程序运行过程中出现的错误,防止程序崩溃,并提供友好的错误信息。本文将详细讲解Python的异常处理机制,并提供丰富的代码示例,帮助您更好地理解和应用…

【Spring MVC】响应结果和设置

​ 我的主页:2的n次方_ 1. 返回静态页面 先创建一个 html 页面 ​ 如果还按照之前的方式进行返回的话,返回的并不是一个 html 页面 RequestMapping("/response") RestController public class ResponseController {RequestMapping(&quo…

React基础使用教程

初识JSX React主要使用的就是jsx语法来编写dom,所以我们要先认识jsx,然后再开始学习两者相结合jsx其实就是在JS中编写HTML的一种写法编写jsx要注意以下几个规则: 定义虚拟DOM时,不要写引号标签中混入JS表达式时要用{}样式的类名指…

2024 Rust现代实用教程:1.3获取rust的库国内源以及windows下的操作

文章目录 一、使用Cargo第三方库1.直接修改Cargo.toml2.使用cargo-edit插件3.设置国内源4.与windows下面的rust不同点 参考 一、使用Cargo第三方库 1.直接修改Cargo.toml rust语言的库:crate 黏贴至Cargo.toml 保存完毕之后,自动下载依赖 拷贝crat…

形态学-闭运算

目录 依赖库显示图像的函数读取图像转换为灰度图像应用二值化阈值处理创建结构元素应用形态学闭运算显示结果 依赖库 首先,我们需要导入必要的库: import cv2 import numpy as npcv2 是OpenCV的Python接口,用于图像处理。numpy 是一个用于科…

在时间敏感网络中启用网络诊断:协议、算法和硬件

英文论文标题:Enabling Network Diagnostics in Time-Sensitive Networking: Protocol, Algorithm, and Hardware 作者信息: Zeyu Wang, Xiaowu He, Xiangwen Zhuge, Shen Xu, Fan Dang, Jingao Xu, Zheng Yang所属机构:清华大学软件学院和…

Pytorch笔记--RuntimeError: NCCL communicator was aborted on rank 3.

1--分布式并行训练,出现以下bug: [E ProcessGroupNCCL.cpp:719] [Rank 3] Watchdog caught collective operation timeout: WorkNCCL(SeqNum1721483, OpTypeALLREDUCE, Timeout(ms)1800000) ran for 1805695 milliseconds before timing out. RuntimeErr…

Docker:安装 Syslog-ng 的技术指南

1、简述 Syslog-ng 是一种流行的日志管理工具,能够集中处理和分析日志。通过 Docker 安装 Syslog-ng 可以简化部署和管理过程。本文将介绍如何使用 Docker 安装 Syslog-ng,并提供一个 Java 示例来展示如何将日志发送到 Syslog-ng。 2、安装 2.1 创建…

[mysql]子查询的概述和分类及单行子查询

子查询引入 查询的基本结构已经给大家了,子查询里面也是有一些新的内容,子查询其实就是在查询中嵌套另一个查询,叫嵌套查询可能大家更容易理解一点..,类似与FOR循环和FOR循环的嵌套,这一章是我们查询的最难的部分,大家 难度是查询的顶峰,多表查询和子查询是非常重要,SQL优化里…

【CUDA代码实践02】矩阵加法运算程序

文章目录 main.cu代码工作流程 matrixSum.cuhmatrixSum.cu代码结构说明总体工作流程 近年来,人工智能(AI)技术,尤其是大模型的快速发展,打开了全新的时代大门。对于想要在这个时代迅速成长并提升自身能力的个人而言&am…

k8s可以部署私有云吗?私有云部署全攻略

k8s可以部署私有云吗?K8S可以部署私有云。Kubernetes是一个开源的容器编排引擎,能够自动化容器的部署、扩展和管理,使得应用可以在各种环境中高效运行。通过使用Kubernetes,企业可以在自己的数据中心或私有云环境中搭建和管理容器…

OpenSSH_8.7 无法使用密码登录问题解决

文章目录 前言SSH 版本 配置 SSH 密码登录其它总结个人简介 前言 最近使用 Crunchbits VPS(virt.crunchbits.com) 时,由于更换电脑导致认证的 ssh 秘钥丢失,尝试 SSH 密码登录时遇到如下错误提示:Permission denied (…

探索 Python 幽默之源:pyjokes 库全解析

🚀 探索 Python 幽默之源:pyjokes 库全解析 1. 背景介绍:为何选择 pyjokes? 在紧张的编程工作中,幽默是一种有效的缓解压力的方式。pyjokes 是一个专为程序员设计的 Python 库,它提供了丰富的单行笑话&am…

【Dv2Admin】Django配置线上ws反向代理

在 Web 应用程序的部署过程中,安全性、稳定性和实时通信是开发者们普遍关注的重点。Django 是一个非常流行的 Web 框架,常与 Nginx 配合使用,以便实现反向代理、负载均衡以及 SSL 加密等功能。除此之外,实时功能(如 WebSocket)也是现代应用中经常使用的技术。 在项目中实…

Fast Simulation of Mass-Spring Systems in Rust 论文阅读

参考资料: Fast Simulation of Mass-Spring Systems in Rust 论文阅读:Fast Simulation of Mass-Spring Systems 【论文精读】讲解刘天添2013年的fast simulation of mass spring system(Projective Dynamics最早的论文) Projective Dynamics笔记(一…

uniapp圆形波浪进度效果

uniapp圆形波浪进度效果 背景实现思路代码实现尾巴 背景 最近项目中有些统计的地方需要用到圆形的波浪进度效果,要求是根据百分比值然后在一个圆形内动态的展示一个波浪形的进度,看参考一下效果。 实现思路 这个效果看着挺复杂的,那么我们…

【Linux】磁盘文件系统(inode)、软硬链接

文章目录 1. 认识磁盘1.1 磁盘的物理结构1.2 磁盘的逻辑结构 2. 引入文件系统2.1 EXT系列文件系统的分区结构2.2 inode 3. 软硬链接3.1 软链接3.2 硬链接 在讲过了内存文件系统后,我们可以知道文件分为两种: 打开的文件(内存中)未…

如何提高英语口语表达能力?

提高英语口语表达能力是一个逐步积累和实践的过程。 1. 自我练习方法 录音与回听 录音:用手机或其他设备录下自己的口语练习,比如描述一天的活动、讲述一个故事或复述一篇文章。 回听:仔细听录音,找出发音、语法和流利度方面的问…

【设计模式-状态模式】

状态模式(State Pattern)是一种行为设计模式,它允许一个对象在内部状态改变时改变它的行为。换句话说,这种模式让对象在不同的状态下能够表现出不同的行为,而不需要修改对象的代码。状态模式通过将对象的行为与状态进行…

node集成redis (教学)

文章目录 前言一、安装redis二、可视化界面测试连接1.vscode安装插件 三、node代码编写1.先安装两个库(redis和ioredis)2.测试连接 (前提是你的redis服务器要启动起来) 总结 前言 在Node.js中集成ioredis是一个常见的做法&#x…