文章目录
前言
初次接触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(相机内参,是对相机物理特性的近似)等参数。
从世界坐标轴,通过相机坐标轴和像面坐标轴,得到像素坐标轴的变换的过程,总的转换关系如下图所示:
二、为什么要进行相机标定?
双目立体视觉通过两摄像头成像所产生的视差信息来确定现实世界中物体所在准确位置(三维坐标),如果双目未经过标定校准,其精度将会损失,甚至所获取深度的意义将会丧失。
相机标定的目的:
求出相机的内、外参数,以及畸变参数。
标定相机后通常用于:
- 由于每个镜头的畸变程度各不相同,通过相机标定可以校正这种镜头的畸变,生成矫正后的图像;
- 根据获得的图像重构三维场景。
三、双目立体相机标定参数解释 (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个相机参数(内参、外参、畸变参数)