【3D目标检测】双目立体相机标定参数


前言

初次接触3D目标检测领域,3D目标检测旨在预测3D空间中关键目标的位置、大小和类别,与仅在图像上生成2D边界框并忽略目标的实际距离信息的2D目标检测相比,3D目标检测侧重于对真实世界3D坐标系中目标的定位和识别

3D目标检测通常包括基于LiDAR、基于相机和多模态检测方法,涉及到相关的深度学习模型,如:

点云处理模型:如PointNet、PointNet++、VoteNet等,这些模型专为处理无序点云数据设计。


图像处理模型:如果使用RGB图像或RGB-D图像作为输入,需要了解图像处理网络,如Faster R-CNN、YOLO系列、Mask R-CNN等。


多模态融合:结合图像和点云数据可以提高检测性能,需要掌握如何融合不同模态信息的方法。

在进行模型训练时,需要用到点云、图像、标签数据、相机参数等。

点云数据:通常来自LiDAR传感器,包含场景中每个点的空间坐标(x, y, z),有时还包括强度、颜色等属性。


图像数据:RGB图像或RGB-D图像,用于提供颜色和深度信息。


标签数据:每帧数据对应的3D标注,包括目标的类别、中心坐标、尺寸(长宽高)和姿态(旋转角)等。


相机参数:内参K、畸变系数D、外参(旋转R和平移T),用于将点云或图像数据转换到统一的坐标系中。


数据集:如KITTI、NuScenes、Waymo Open Dataset等,这些数据集通常包含丰富的3D标注信息,适用于训练和评估3D目标检测模型。

其中涉及到“3D几何与计算机视觉”相关知识学习,如:

立体视觉:理解立体相机工作原理,如何从立体图像中恢复深度信息。


多视图几何:利用多视角图像进行3D重建和目标检测。


相机标定:掌握内外参数校准,如相机内参K、畸变系数D、旋转矩阵R和投影矩阵P等。

本文为学习过程中记录的“相机标定”的相关参数内容,也供感兴趣者学习。


一、什么是相机标定?

图像测量过程以及机器视觉应用中,为确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,必须建立摄像机成像的几何模型,这些几何模型参数就是相机参数。在大多数条件下这些参数必须通过实验与计算才能得到,这个求解参数的过程就称之为相机标定。

相机标定(Camera calibration)简单来说是从世界坐标系换到图像坐标系的过程,也就是求最终的投影矩阵的过程。相机标定通常涉及使用已知的物体或模式来测量相机的成像特性和位置关系,从而估计相机的内部参数和外部参数。

基本的坐标系包括:世界坐标系;相机坐标系;成像平面坐标系;像素坐标系。

一般来说,标定的过程分为两个部分:
第一步:世界坐标系 --> 相机坐标系,这一步是三维点到三维点的转换,包括R,t(相机外参,确定了相机在某个三维空间中的位置和朝向)等参数;
第二步:相机坐标系 --> 成像平面坐标系(像素坐标系),这一步是三维点到二维点的转换,包括K(相机内参,是对相机物理特性的近似)等参数。

从世界坐标轴,通过相机坐标轴和像面坐标轴,得到像素坐标轴的变换的过程,总的转换关系如下图所示:
在这里插入图片描述


二、为什么要进行相机标定?

双目立体视觉通过两摄像头成像所产生的视差信息来确定现实世界中物体所在准确位置(三维坐标),如果双目未经过标定校准,其精度将会损失,甚至所获取深度的意义将会丧失。

相机标定的目的:
求出相机的内、外参数,以及畸变参数。

标定相机后通常用于:

  1. 由于每个镜头的畸变程度各不相同,通过相机标定可以校正这种镜头的畸变,生成矫正后的图像;
  2. 根据获得的图像重构三维场景。

三、双目立体相机标定参数解释 (K、D、R、P)

相机标定涉及一系列参数,它们在计算机视觉和机器视觉中用于描述相机的几何特性以及从3D空间到2D图像的投影关系。具体而言,相机内部参数包括焦距、主点坐标、图像畸变等,而相机外部参数包括相机位置和朝向(旋转矩阵和平移矩阵)。

这些参数是进行立体视觉、深度估计、3D重建等任务的关键,通过这些参数,可以从左右相机拍摄的图像中计算出场景的深度信息。

以下是参数解释:

1. 内部参数矩阵 K(Intrinsic Matrix)

K是相机的内部参数矩阵,它包含了相机的内部几何特性,如焦距、主点坐标和图像的像素比例因子。(共9个参数)内在参数矩阵通常形式如下:

   K = [fx  0  cx,
          0  fy cy,
          0   0   1]

其中,fx和fy是沿X和Y轴的焦距,cx和cy是图像的主点(光心)在像素坐标系中的位置。

焦距和主点坐标都是相机镜头和感光元件(如CCD或CMOS)的物理特性,不会因拍摄的图像不同而变化,因此通常认为,相机的内参在出厂之后是固定的,不会在使用过程中发生变化。

2. 畸变系数 D(Distortion Coefficients)

D通常代表相机的畸变系数,用于描述由于镜头不完美导致的图像失真,如桶形畸变和枕形畸变。畸变系数通常包括径向畸变参数(k1, k2, k3)和切向畸变参数(p1, p2)。这些参数用于通过相机标定过程校正图像的几何失真。(共5个参数)

D = [k1 k2 p1 p2 k3]

这些系数是基于镜头的制造公差,不会随图像内容改变。

3. 旋转矩阵 R(Rotation Matrix)

R是相机相对于世界坐标系的旋转矩阵,表示相机坐标系相对于世界坐标系的3D旋转。它是一个3x3的正交矩阵,表示三个正交轴之间的旋转。(共9个参数)

旋转矩阵若为3x3的单位矩阵,表示相机坐标系和世界坐标系之间没有旋转关系,也就是相机坐标系和世界坐标系重合。

通常在标定过程中,我们假设相机固定在一个位置,因此在标定期间,旋转矩阵R是相对于已知参考坐标系(如世界坐标系)的固定姿态。在实际应用中,如果相机保持静止,R矩阵也是恒定的。然而,如果相机移动,R矩阵将随相机姿态的变化而变化。

4. 投影矩阵 P(Projection Matrix)

P是投影矩阵,它结合了内在参数和外在参数,用于从世界坐标系到图像坐标系的转换。(共12个参数)完整的投影矩阵P通常包含内在参数K、旋转矩阵R和平移向量T(表示相机在世界坐标系中的位置):

  P = [K | RT]

其中,| 表示矩阵连接操作,RT 是旋转矩阵R和平移向量T的组合(T先转置然后与R连接)。

P矩阵在一段时间内是恒定的,除非相机的位置或朝向发生变化。

自我校正后的旋转和平移(self.R 和 self.T): 用于校正左右相机间的相对姿态,以便于立体视觉中的三角测量。


四、关于[narrow_stereo]

在立体视觉和3D重建领域,narrow_stereo 通常指的是采用一对具有较窄基线的立体相机来进行深度感知和三维空间分析。narrow_stereo是一个窄视场的立体相机模型。其中camera matrix(对应K)、distortion(对应D)、rectification(矫正矩阵)、projection(对应P)是相机标定中常用的几个概念和参数。

1. camera matrix、distortion、projection

camera matrix(对应相机矩阵K)、distortion(对应畸变系数D)、projection(对应投影矩阵P)此处不再过多解释,上文已经介绍。

2. rectification(校正)和旋转矩阵 R

旋转矩阵R是描述相机姿态变换的数学工具,而rectification是一个过程,该过程可能利用旋转矩阵R以及其他参数(如平移向量T)来对原始图像进行几何变换,以优化后续的立体匹配和深度计算。

rectification是指对立体视觉中两个相机的图像进行几何变换,使得原本存在视差的对应像素在水平方向上对齐,这样可以极大地简化立体匹配过程。

旋转矩阵R是实现rectification的一个组成部分。进行立体校正时,通常会计算一个基础矩阵F(Fundamental Matrix)或本质矩阵E(Essential Matrix),进而得到用于校正的旋转矩阵R平移向量T。通过应用这些变换,可以生成一对校正后的图像,使得在这些图像上执行立体匹配变得更为直接和高效。

其中:

基础矩阵F:
描述了两幅图像中点的对应关系,是一个3x3的秩2矩阵,表示在两幅图像间共轭点的约束。


本质矩阵E:
从 基础矩阵F 导出,包含了旋转和平移信息,是相机运动的描述。
本质矩阵E可以通过 基础矩阵F 和 内参矩阵K 计算得到: E = K(-T)FK(-1)。

旋转矩阵R:
表示从一个坐标系到另一个坐标系的旋转,是一个3x3的正交矩阵。


平移向量T:
表示两个坐标系之间的平移,是一个3x1的向量。


总结

以上参数在相机标定过程中通过特征点匹配和数学优化获得,用于进行3D重建、目标检测、SLAM(Simultaneous Localization And Mapping)等计算机视觉任务。通过了解这些参数,可以准确地将3D空间中的点映射到2D图像上,从而进行精确的图像分析和处理。


关于公式的推导过程以及相机标定的深入学习内容可参考:(此部分,本人还在学习中)
[1] 相机标定原理介绍(一)
[2] 相机标定(Camera calibration)原理、步骤
[3] 内参、外参、畸变参数三种参数与相机的标定方法与相机坐标系的理解
[4] 模型 16个相机参数(内参、外参、畸变参数)

  • 33
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 在Matlab中,双目相机标定参数可以通过以下步骤进行导出: 1. 首先,使用`stereoCameraCalibrator`函数对双目相机进行标定。这个函数可以通过提供的一组标定图像,自动检测并提取相机的内外参数。 2. 利用`exportCameraParameters`函数将标定参数导出为.mat文件。这个函数需要提供`stereoParameters`对象以及导出文件的路径。例如,如果标定参数对象名称为`stereoParams`,导出文件路径为`'path\to\exportedParameters.mat'`,则可以使用以下代码将标定参数导出为.mat文件: ``` exportCameraParameters(stereoParams, 'path\to\exportedParameters.mat'); ``` 3. 导出的.mat文件可以使用Matlab中的`load`函数加载,以便在其他程序中使用。例如,如果导出的.mat文件名为`exportedParameters.mat`,则可以使用以下代码加载导出的标定参数: ``` load('path\to\exportedParameters.mat'); ``` 加载后,标定参数将存储在一个结构体变量中,可以使用`.`操作符访问不同的参数。例如,为了访问左相机的内参数矩阵,可以使用以下代码: ``` leftIntrinsicMatrix = exportedParameters.CameraParameters1.IntrinsicMatrix; ``` 通过以上步骤,可以成功导出双目相机标定参数并在其他程序中使用。 ### 回答2: Matlab双目相机标定参数的导出可以通过以下步骤完成。 首先,确保你已经完成了双目相机标定得到相机的内参和外参参数。在Matlab中,可以使用Camera Calibration Toolbox进行标定,它提供了一些现成的函数和工具。 一旦标定完成,你可以通过以下步骤导出标定参数: 1. 打开Matlab并加载标定结果。运行以下命令加载标定结果文件: load('calibrationResults.mat'); 根据你的实际情况,你可能需要修改文件名。 2. 导出相机内参参数。内参参数包括相机的焦距、主点坐标和畸变系数等。使用以下命令将内参参数导出到一个变量中: cameraParams = calibrationResults.CameraParameters; 完成后,你可以通过查看`cameraParams`的内容来确认导出结果。 3. 导出相机外参参数。外参参数包括相机的旋转矩阵和平移向量等。使用以下命令将外参参数导出到一个变量中: R = calibrationResults.RotationMatrices; t = calibrationResults.TranslationVectors; 通过查看`R`和`t`的内容,你可以确认导出的外参参数结果。 4. 可选:将导出的参数保存到文件中。如果你希望以后能够方便地重用这些参数,你可以将它们保存到一个文件中。使用以下命令将参数保存到一个.mat文件中: save('calibrationParameters.mat', 'cameraParams', 'R', 't'); 又一次,你可以根据实际需求修改文件名。 以上就是在Matlab中导出双目相机标定参数的步骤。通过这些参数,你可以在后续的双目视觉处理中使用它们来恢复场景的三维信息。 ### 回答3: 在Matlab中,双目相机标定参数的导出可以通过以下步骤完成: 1. 首先,需要使用Matlab的Camera Calibrator App来对双目相机进行标定。该应用程序提供了一个图形界面,可以帮助用户轻松地对相机进行标定。 2. 打开Matlab并运行Camera Calibrator App。选择相机类型为双目相机,并确保相机连接到计算机上。 3. 进入标定图像窗口,拍摄一些标定板图像。确保尽量覆盖不同的角度和方向,以获取更准确的标定结果。 4. 在图像标定窗口中,选择"导出参数"选项。这将打开一个导出参数对话框。 5. 在导出参数对话框中,选择导出的参数类型。可以选择导出相机的内部参数(如相机的焦距、主点位置等)和外部参数(如相机的旋转矩阵和平移矩阵)。 6. 点击"导出"按钮,选择文件保存的位置和文件名。确保选择适合您的应用程序的文件格式,如MAT文件或XML文件。 7. 单击"保存"按钮,完成导出,将标定参数保存到所选择的文件中。 导出参数后,您可以使用这些参数进行相机校正、3D重构或其他相关应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值