投影仪-相机标定

1. 单目相机标定

引言

相机标定已经研究多年,标定的算法可以分为基于摄影测量的标定和自标定。其中,应用最为广泛的还是张正友标定法。这是一种简单灵活、高鲁棒性、低成本的相机标定算法。仅需要一台相机和一块平面标定板构建相机标定系统,在标定过程中,相机拍摄多个角度下(至少两个角度,推荐10~20个角度)的标定板图像(相机和标定板都可以移动),即可对相机的内外参数进行标定。下面介绍张氏标定法(后面也这么称呼)的原理。

原理

相机模型和单应矩阵

相机标定,就是对相机的内外参数进行计算的过程,从而得到物体到图像的投影关。相机模型一般使用针孔模型,那么三维点M到图像的投影m的关系如下所示:
在这里插入图片描述
由于标定板是平面标定板,将世界坐标系的X-Y平面定义在标定板平面上,那么平面板的Z=0,因此,相机模型可以简化为:
在这里插入图片描述
用记号表示:
在这里插入图片描述
其中H就是单应矩阵,表示标定板平面和图像平面的变换关系,它是 3 ∗ 3 3*3 33齐次矩阵,用一个比例因子来缩放,因此它有8个自由度。

求解单应矩阵

以上的单应矩阵包含相机内参、外参以及一个比例因子,假设已知单应矩阵,那我们可以直接获得相机的内参和外参。

因此,我们先求单应矩阵,具体的求解步骤是:

  • 线性方程组求封闭解,作为第二步的初始值;
  • LM算法优化非线性最小二乘问题。

假设相机拍摄图像存在高斯噪声,高斯噪声的0均值,并假设协方差矩,是 σ 2 I \sigma ^2 I σ2I,这样假设的依据是每个角点都是单独提取的。然后,求解的单应矩阵应该使得投影误差最小,那么就可以得到下面的优化问题:
在这里插入图片描述
由于协方差矩阵是类似于单位矩阵,因此优化问题其实就是一个非线性最小二乘问题:
在这里插入图片描述
要求解该问题,可以用LM算法,但LM算法需要一个初值,所以将式(2)变换一下:
在这里插入图片描述
这个就是 L x = 0 Lx=0 Lx=0,x的解就是 L T L L^T L LTL最小特征值对应的特征向量,至此求得H的初值(相差一个比例因子)。这里的L是 2 n ∗ 9 2n*9 2n9,因为x有8个自由度,所以至少需要4个点就可以求解得到x。

然后用LM算法进行优化,得到最终的单应矩阵H(相差一个比例因子)。

内部参数的约束

现在我们已经得到了单应矩阵,单应矩阵和内外参数的关系就是:
在这里插入图片描述
根据旋转向量的正交性,我们可以得到以下约束:
在这里插入图片描述
利用上面的约束,我们可以求得内部参数,下面展开说明。

求解内外参数

封闭解

这里我们可以利用求得的单应矩阵和两个内参约束,建立一个线程方程,对线性方程求得就可以得到内参和外参的封闭解。
在这里插入图片描述
在这里插入图片描述
公式(9)中V是一个 2 n ∗ 6 2n*6 2n6的矩阵,只需要3张图像(3个单应矩阵),我们就可以求得B(相差一个比例因子)。如果令内参 γ = 0 \gamma=0 γ=0,那么只需要2张图像即可。

上边,我们已经得到了B:
在这里插入图片描述
然后,我们可以单独求出内参A:
在这里插入图片描述
然后,外参也可以很容易计算:
在这里插入图片描述
其中,
在这里插入图片描述
这里求得的旋转矩阵很可能不满足正交特性,也有学者提出了解决方法,有兴趣可以看看原文。这里不做描述。

径向畸变

前面假设相机模型是针孔模型,但实际上由于相机的制造存在误差,导致其成像存在径向畸变和切向畸变,张氏标定法只考虑了径向畸变。
在这里插入图片描述
从上面两条公式,我们建立下面的线性方程:
在这里插入图片描述
然后我们很简单的得到畸变系数:
在这里插入图片描述

极大似然估计

让我们来梳理一下上面求得的参数:

  • 首先是对于每张图像,我们都提取至少4个点来求取单应矩阵,然后基于多个单应矩阵,我们求得了内参和外参。这整个过程并没有考虑最小化投影误差,因此求得的内外参并不是很准确。
  • 另外在求解内外参数初始值的时候没有考虑径向畸变的影响,内外参数肯定不准确,换句话说,在求解径向畸变时所用的点根本都是不准确的,所以径向畸变的参数也是不准确的。

因此要对参数进行优化求解,还是用我们常用的LM算法。

利用最小化重投影误差的思想,我们得到了以下非线性优化问题:
在这里插入图片描述
用LM算法可以对参数进行优化。

结论和总结

张氏标定法提出了一种仅利用一台相机和一块平面标定板进行相机标定,算法的鲁棒性好,简单易操作,标定成本低。

下面就是标定的流程:
在这里插入图片描述

2. 投影仪标定

引言

单目结构光系统包括一台相机和一台投影仪,结构光三维重建的原理是投射编码结构光图案到场景中,然后相机拍摄经过物体高度调制的变形结构光图像,通过计算机解码得到投影图案和结构光图像的特征点对应,最后基于三角测量原理得到三维点云。三角测量原理就需要用到相机和投影仪的参数。所以必须对投影仪和相机系统进行标定,要标定的参数包括相机内参、投影仪内参、投影仪-相机的相对外参。

因为投影仪无法对3D物体成像,无法像相机直接获得投影图案和三维空间中特征点的对应关系,所以投影仪标定的核心问题就是如何找到投影图案2D点和3D投影点的对应关系。

虽然投影仪无法对场景成像,但它的成像模型跟相机成像模型是一致的,可以将投影仪视作逆相机模型。这样,只要找到对应关系,就可以利用张氏标定法对投影仪进行标定了。

下面介绍三种投影仪标定方法:

  • 棋盘格/圆形阵列
  • 格雷码
  • 相移法

2.1 棋盘格/圆形阵列

原理

标定系统

该方法来自于文献[2]提出的一种基于平面的投影仪-相机系统标定,利用相机-投影仪和一块白板即可,白板上边粘贴棋盘格标定板(圆形阵列也行,只是角点检测算法要换成圆心检测算法,下面就以棋盘格说明)和空出一块区域来给投影仪投影图案使用。如图所示:
在这里插入图片描述

相机标定

用张氏标定法进行相机标定。

获取3D投影点

这里我们要获得2D的投影图案与3D的投影图案的点对应关系,然后利用张氏标定法对投影仪进行标定。

分成以下三步:

(1)从相机外参中获取标定平面 π \pi π的平面方程:
在这里插入图片描述
这个平面方程是在相机坐标系下的平面方程。其实就得到了一个约束,就是该平面上的点都满足这个平面方程,如果投影仪把图案投影到该平面上,那么3D投影图案上的点都满足这个平面方程。马上就会用到这个约束。

(2)投影仪投影棋盘格图案到标定平面的空白区域,相机在另一角度对其进行拍摄,并提取棋盘格图像的角点坐标,如图所示:
在这里插入图片描述
(3)根据相机的内外参数和平面约束,求解3D投影图案的角点空间坐标。

首先,相机对投影区域成像,图像中的角点和投影区域的角点就是一个投影变换的关系:
在这里插入图片描述
其中, [ C x , C y ] [C_x,C_y] [Cx,Cy]是图像提取的角点(投影图案在相机中成像的角点), [ K i n t , K e x t ] [K_{int},K_{ext}] [Kint,Kext]是相机的内外参数, [ s R x , s R y , s R z ] [sR_x,sR_y,sR_z] [sRx,sRysRz]是对应的3D投影点。这里的比例因子s是未知的,我们可以通过平面约束来增加一个方程解出s:
在这里插入图片描述
这样我们就得到了3D投影角点的空间坐标,然后结合投影仪的已知的角点坐标,我们就可以像相机标定那样对投影仪进行标定。

投影仪标定

相机变换角度(平移+旋转),拍摄投影图案,重复获取3D投影点的过程,然后用张氏标定法对投影仪进行标定。

结论和总结

这篇文章的作者基于以上原理,在matlab的Bouguet Camera Calibration Toolbox上进行了扩展,使其可以对投影仪进行标定,我们要下载一个工具箱才能用。文章给出了工具箱使用的详细流程。

这个标定算法的总体误差在1个像素以内。

算法的局限性就是投影仪标定依赖于相机标定,在求解3D投影点的时候,用到了相机标定的参数,因此投影仪标定的误差是要大于相机标定的误差的。

2.2 格雷码

原理

该方法来自文献[3],利用局部单应性来估计标定板角点在投影仪和相机之间的对应关系,具体分为以下两步:

(1)投影格雷码序列图案到标定板上,相机同步拍摄,找到相机-投影仪平面的角点的对应关系。(解码)
(2)基于这组对应关系计算一组局部单应矩阵,找到标定板角点到投影仪图案的投影。

投影仪-相机模型

一般来说,投影仪-相机模型是以相机光心为世界坐标系的原点,然后建立两者的成像模型。
在这里插入图片描述
在这里插入图片描述

数据获取

准备一块棋盘格标定板,先用相机拍摄投影仪全亮时的标定板图像,用于提取角点坐标。然后向标定板投影水平和垂直的互补格雷码图案序列,相机同步进行拍摄。变换多个姿势进行投影和拍摄。
在这里插入图片描述

相机标定

用投影仪全亮时拍摄的多个姿态下的标定板图像(Figure 2左侧)进行相机标定,标定的算法选用张氏标定法。此时可以得到相机内参。

投影仪标定

分成三步:

(1)对格雷码序列进行解码。解码的算法参考文献[4],它是将每个像素的直接光成分和间接光成分进行计算,再进行解码,使得每个相机像素都跟投影仪像素的行和列对应,或者解码为不确定。
在这里插入图片描述

(2)对每幅相机图像的所有角点计算一个局部单应矩阵。由于投影仪镜头存在畸变,引入了非线性,所以第(1)步计算得到的角点对应关系(全局单应矩阵)并不可靠,因此利用每个角点的邻域信息,估计一个局部单应矩阵。

以相机图像的角点为中心画出一片小区域(只包含该角点,不包含其他角点),令p是这片区域内的一个点,q是p在投影仪图案的对应点,然后,在这片小区域内,我们求解以下优化问题,找到一个局部单应矩阵:
在这里插入图片描述
(3)以上得到了以一个角点为中心的局部单应矩阵,我们用这个局部单应矩阵对该角点进行映射,得到更加准确的在投影图案的解码像素点:
在这里插入图片描述
上面的解码像素点就相当于是标定板角点在投影仪中的成像,这样我们就得到了投影仪像素和标定板角点的映射关系,然后我们就可以像相机标定那样对投影仪的内参进行标定了。

下图给出局部单应矩阵的映射。
在这里插入图片描述

外参标定

我们固定相机坐标系为世界坐标系,然后求解投影仪在世界坐标系中的位置,即投影仪相对于相机坐标系的旋转矩阵和平移向量。

利用找到的角点在相机和投影仪中的坐标值进行双目标定计算,得到相机和投影仪之间的外参矩阵:旋转矩阵R和平移矩阵T。

但是怎么求呢,因为我们有N个姿态,所以就有N个相对外参,应该取哪一个合适呢?

比较可靠的做法是,计算每次采集的相对外参,并取中值作为初值,再基于最小化重投影误差,非线性迭代优化得到最优解。在此方案下,相机的内参可以作为固定值,未知数为N组相机的绝对外参 ( R i , t i ) , i = 1 , . . n (R_i,t_i),i=1,..n (Ri,ti),i=1,..n,以及一组投影仪相对于相机的相对外参。最小化重投影误差和单相机标定一样,只是投影仪的绝对外参通过相机的绝对外参和相对外参计算得到。

结论和总结

标定的流程如下:

步骤一:获取相机拍摄的标定板图片,保持标定板不动,依序投影结构光编码到标定板上  
步骤二:找到标定板图片中的特征点坐标  
步骤三:对相机拍摄到的投影结构光进行解码  
步骤四:对每个找到的标定板图片中的特征点坐标求局部的单应性矩阵,并使用局部单应性矩阵计算出特征点在投影仪图片上的坐标  
步骤五:改变标定板位姿,重复步骤一到步骤四  
步骤六:重复步骤五至少三次,并利用找到的特征点在相机和投影仪中的坐标分别计算出相机内参矩阵和畸变系数,投影仪内参矩阵和畸变系数。
步骤七:利用找到的特征点在相机和投影仪中的坐标值进行双目标定计算,得到相机和投影仪之间的外参矩阵:旋转矩阵R和平移矩阵T。

这篇文献的作者做了一个软件,相关资料可以查阅网站软件连接

然后这篇文章的提出的标定算法比文献[2]的精度更高,原因是它不依赖于相机的标定,但缺点是投影多幅格雷码图片,导致耗时较长。
在这里插入图片描述
在这里插入图片描述

2.3 相移法

原理

该方法来自文献[5][6]。它与格雷码法是基本一样的,只不过编解码方式不一样。将投影仪看做是一个逆向的相机,然后采用与相机模型类似的数学模型来表达投影仪的投影变换关系。其投影变换关系参考格雷码法。

投影仪图像生成方法

要想像标定相机那样对投影仪进行参数表定,必须使投影仪具备“拍摄”标定板图像的能力。这篇文献使用相移法建立CCD图像和DLP投影仪的DMD图像之间的对应关系,从而赋予投影仪“拍摄”标定板图像的能力。

将标定板放置在测量范围内的某一放置,然后使用DLP投影仪向标定板分别投射一组水平光栅图像和一组垂直光栅图像,并使用CCD相机同步拍摄光栅图像和一幅标定板图像,光栅图像使用三组不同频率的四步相移图像(多频外差法展开相位),如下图:
在这里插入图片描述
使用四步相移法和多频外差原理计算出两个不同方向的绝对相位值,然后根据一个方向 的绝对相位值,可以确定CCD图像中的某个标定点圆心 ( u i c , v i c ) (u_i^c,v_i^c) (uic,vic)与对应的DMD图像中一条线 u i p u_i^p uip v i p v_i^p vip(u是水平轴,v是垂直轴)。再由垂直的绝对相位值可以在DMD图像中确定一条垂直的对应线,即确定DMD图像对应点在u方向的坐标值:
在这里插入图片描述
其中, Φ v ( u i c , v i c ) \Phi_v(u_i^c,v_i^c) Φv(uic,vic)为标定点圆心 ( u i c , v i c ) (u_i^c,v_i^c) (uic,vic)在水平方向的绝对相位值, N v N_v Nv是DMD光栅图像的周期数,W为DMD图像水平方向的分辨率。类似的,由水平的绝对相位值可以在DMD图像中确定一条水平的对应线,即确定DMD图像对应点在v方向的坐标值:
在这里插入图片描述
其中, Φ h ( u i c , v i c ) \Phi_h(u_i^c,v_i^c) Φh(uic,vic)为标定点圆心 ( u i c , v i c ) (u_i^c,v_i^c) (uic,vic)在垂直方向的绝对相位值, N h N_h Nh是DMD光栅图像的周期数,H为DMD图像垂直方向的分辨率。根据上述过程即可建立CCD图像中每个标定点圆心对应的DMD图像坐标,下图为上述过程的示意图:
在这里插入图片描述
为了验证==生成的DMD图像坐标(这个生成的DMD坐标其实就相当于是标定板在DLP投影仪中的成像)==的准确性,可以将生成的投影仪图像投影到标定板上,如果投射的圆心与标定板上圆形标志点的圆心重合,则说明建立的投影仪图像坐标大致是正确的。

由上述DMD图像生成过程可知,DMD图像的精度仅与光栅图像的相位值有关(与相机标定无关),因此相位计算的精度对生成的DMD图像的精度和后续投影仪参数标定的精度具有重要影响,必须保证相位计算的准确性。

但由于光栅图像的非正弦化会影响相位计算的精度,必须对其进行误差补偿,这篇文章的第三章提出了一种基于相位误差查找表(LUT)的通用误差补偿算法,感兴趣可以去看一下,但笔者也没有看过这种算法,就不对此展开描述,但是笔者在另一篇博客中有讲到另一种误差补偿的算法,感兴趣可以看一下基于相移法的结构光三维测量技术

投影仪参数标定

标定过程中,根据前面所介绍的DMD图像生成方法得到一组标定投影仪所需的DMD图像,然后使用与相机参数标定相同的方法对投影仪进行标定。生成的一组DMD图像如图所示:
在这里插入图片描述
在这里插入图片描述
使用张氏标定法对投影仪进行标定。

系统标定

标定出相机和投影仪的内部参数后,还需要对两者的相对外部参数进行标定。

在前面的标定过程中,可以得到各个位姿下相机和投影仪的绝对外参:
在这里插入图片描述
在这里插入图片描述
然后,最简单的相对外参的获取方法就是取其中一个位姿的(比如第一个位姿)绝对外参,然后将相机作为世界坐标系,计算投影仪相对相机的外参。

如果要精确一些的话,那就需要优化重投影误差,像前面格雷码法提到的那样。

结论和总结

标定的流程如下:
在这里插入图片描述
该方法中,相机标定的精度和投影仪标定的精度如下:
在这里插入图片描述
在这里插入图片描述
对比该结果和格雷码法的相机标定结果可见,该方法由于采用了圆形标定板,精度更高,相机标定的重投影误差在0.15个像素内;投影仪标定的重投影误差最大是0.6,平均起来目测还是要比格雷码法要差,这应该是因为格雷码法采用了局部单应性矩阵的方法,使得精度更高。另外该方法的投影仪标定误差比相机标定误差要大,这是因为投影仪的光栅存在非线性,即使使用了误差补偿算法,但是依然会产生一定的误差,因为非线性只能减弱,无法完全消除。

相移法也是一种不依赖于相机标定的投影仪标定算法,投影仪标定的精度比棋盘格法要高。

文章还讨论了投影的光栅图案的周期数对标定精度的影响,理论上,周期数越大,解码越准,标定精度越高。但周期数越多,光栅的离散化程度越严重,这样会导致离散化误差加重,影相相位的精度,所以要做实验来尝试最佳的周期数。感兴趣可以看看原文。

3. 总结

系统参数标定是结构光测量系统中的关键技术之一,标定的精度直接影响到三维重建的精度。本文详细阐述了单目相机标定以及投影仪标定,其中,投影仪标定都是假设投影仪是逆相机模型,算法的设计都是为了DMD图案和三维场景的对应关系,然后使用张氏标定法对投影仪进行标定。

不同的是,棋盘格法是依赖于相机的标定,而格雷码法和相移法都不需要依赖于相机标定,因此相比于棋盘格法,其他两种方法的标定精度更高。

参考文献

[1] Zhang Z . A Flexible New Technique for Camera Calibration[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2000, 22(11):1330-1334.
[2] Plane-based calibration of a projector-camera system
[3] Moreno D , Taubin G . Simple, Accurate, and Robust Projector-Camera Calibration[C]// Second International Conference on 3d Imaging. IEEE, 2012.
[4] Y. Xu and D. G. Aliaga, “Robust pixel classification for 3d
modeling with structured light,” in Proceedings of Graphics
Interface. New York, NY, USA: ACM, 2007, pp. 233–240.
[5] Reich C , Ritter R , Thesing J . White light heterodyne principle for 3D-measurement[C]// Sensors, Sensor Systems, & Sensor Data Processing. International Society for Optics and Photonics, 1997.

  • 13
    点赞
  • 134
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
投影仪与双目相机标定是为了获得它们之间的几何关系,从而实现三维重构等应用。下面是一个一般性的步骤: 1. 放置标定板:在标定过程中,需要使用一个特定的标定板作为参考。将标定板放置在投影仪和双目相机能够同时看到的位置,并确保标定板完整可见。 2. 投影仪标定:首先,对投影仪进行标定。通过在标定板上投射特定的模式(如棋盘格),利用投影仪投影的图像与实际标定板上的图案进行对应。这样可以计算出投影仪的内参(如焦距、畸变参数等)。 3. 相机标定:接下来,对双目相机进行标定。使用相机标定板对相机进行标定,同样利用相机拍摄到的图像与实际标定板上的图案进行对应。这样可以计算出双目相机的内参(如焦距、畸变参数等)。 4. 投影仪相机联合标定:在此步骤中,需要同时使用投影仪和双目相机。通过在标定板上投影特定的模式,并利用双目相机投影仪投影的图像进行观测,可以计算出投影仪相机之间的外参关系(如旋转矩阵、平移向量等)。 5. 校正与验证:完成标定后,可以对投影仪和双目相机进行校正,以确保其几何关系的准确性。之后,可以进行一些验证实验,如三维重构、深度测量等,以验证标定结果的准确性和可靠性。 需要注意的是,具体的标定步骤和方法可能因应用场景和设备而有所不同。在实际操作中,可以结合使用专业的标定软件和工具来简化标定过程,并提高标定的精度和可靠性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值