当前位置: 首页 > news >正文

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.lryc.cn/news/469382.html

相关文章:

  • smartctl硬盘检查工具
  • 清空MySQL数据表
  • 2024年妈杯MathorCup大数据竞赛A题超详细解题思路
  • Kafka系列之:Kafka集群磁盘条带划分和Kafka集群磁盘扩容详细方案
  • 【LeetCode】修炼之路-0007- Reverse Integer (整数反转)【python】
  • 【Flutter】页面布局:线性布局(Row 和 Column)
  • C语言巨难题:执行操作可获得的最大总奖励 I(C语言版)
  • 【力扣】GO解决子序列相关问题
  • Ubuntu20.04安装VM tools并实现主机和虚拟机之间文件夹共享
  • Linux 学习笔记(十七)—— 文件系统
  • 【计算机网络 - 基础问题】每日 3 题(五十八)
  • Netty入门基础:IO模型中BIO\NIO概念及区别【附演示代码】
  • vue2 使用环境变量
  • 数据预处理
  • django宠物领养管理系统-计算机毕业设计源码26858
  • 使用TeamViewer远程局域网内的两台电脑
  • GUI简介、Swing的常用组件、java程序的运行过程、class文件、JAR、runable_jar、双括号初始化
  • @Autowired和@Resource和getBean()区别
  • Merlion笔记(四):添加一个新的预测模型
  • 【论文阅读】ESRGAN
  • 电脑异常情况总结
  • [项目详解][boost搜索引擎#1] 概述 | 去标签 | 数据清洗 | scp
  • PL/I语言的起源?有C语言,有B语言和A语言吗?为什么shell脚本最开始可能有#!/bin/bash字样?为什么不支持嵌套注释?
  • gin入门教程(3):创建第一个 HTTP 服务器
  • Vue+ECharts+iView实现大数据可视化大屏模板
  • el-table 表格设置必填项
  • vivo 轩辕文件系统:AI 计算平台存储性能优化实践
  • Vue学习笔记(四)
  • 发送短信,验证码
  • 国内大语言模型哪家更好用?