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 -最大缩放,未失真的图像将是适合原始图像的最大可能的图像。

相关推荐
lingling0094 小时前
迁移科技3D视觉系统:开启袋子拆垛场景的智能革命新纪元
数码相机
WDeLiang7 小时前
Flutter - 原生交互 - 相机Camera - 02
数码相机·flutter·交互
lingling0092 天前
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
数码相机
一起搞IT吧2 天前
相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解
android·图像处理·数码相机
社会零时工2 天前
【OpenCV】相机标定之利用棋盘格信息标定
人工智能·数码相机·opencv
一起搞IT吧2 天前
相机Camera日志实例分析之一:相机Camx【前置慢动作分辨率切换720P、1080P录制】单帧流程日志详解
数码相机
时间之里3 天前
【图像处理3D】:焦距的像素单位标定
图像处理·数码相机·3d
时间之里3 天前
【图像处理3D】:世界坐标系
图像处理·数码相机·3d
EasonZzzzzzz4 天前
计算机视觉——相机标定
人工智能·数码相机·计算机视觉
到点就困告4 天前
海康工业相机SDK二次开发(VS+QT+海康SDK+C++)
数码相机·qt·海康