一种双目立体相机外参数修正方法及装置
技术领域
本申请涉及计算机视觉技术领域,尤其涉及一种双目立体相机外参数修正方法及装置。
背景技术
双目立体相机是一个由两个相机组成的***,与传统单目相机不同,双目相机可以计算得到图像中每个像素点在三维空间中的坐标,也称为立体相机。
现有技术中,当双目立体相机的两个相机之间的相对关系由于外界因素发生改变时,导致无法准确恢复像素点在空间中的坐标、立体视觉计算失败。若要计算更新后的外参数,则需要重新只用特殊标定物(如:棋盘格)计算新的外参数。例如:假设安装在汽车上的双目***,由于汽车震动、颠簸,很容易使双目相机的相对关系发生微小改变,目前用户只能停下车,使用特殊标定物重新标定相机。
现有技术不足在于:
当双目相机的相对关系发生改变时,更新外参数的过程极为不便。
发明内容
本申请实施例提出了一种双目立体相机外参数修正方法及装置,以解决现有技术中当双目相机的相对关系发生改变时,更新外参数的过程极为不便的技术问题。
第一个方面,本申请实施例提供了一种双目立体相机外参数修正方法,包括如下步骤:
确定第一相机和第二相机的内参数矩阵K1、K2;
根据K1、K2确定第i组对应点修正后的极线约束误差e′i;所述对应点为物理世界中同一点在利用第一相机的外参数矫正旋转矩阵R1和第二相机的外参数矫正旋转矩阵R2分别对所述第一相机、第二相机矫正后的图像中的投影像素点;
确定所有对应点的极线约束误差之和E′,所述E′为修正旋转矩阵的函数;
最小化所述E′得到修正旋转矩阵的值;
根据所述修正旋转矩阵以及当前第一相机和第二相机的外参数矫正旋转矩阵确定修正后的第一相机和第二相机的外参数矫正旋转矩阵。
第二个方面,本申请实施例提供了一种双目立体相机外参数修正装置,包括:
参数确定模块,用于确定第一相机和第二相机的内参数矩阵K1、K2;
单组误差确定模块,用于根据K1、K2确定第i组对应点修正后的极线约束误差e′i;所述对应点为物理世界中同一点在利用第一相机的外参数矫正旋转矩阵R1和第二相机的外参数矫正旋转矩阵R2分别对所述第一相机、第二相机矫正后的图像中的投影像素点;
总误差确定模块,用于确定所有对应点的极线约束误差之和E′,所述E′为修正旋转矩阵的函数;
最小化模块,用于最小化所述E′得到修正旋转矩阵的值;
修正模块,用于根据所述修正旋转矩阵以及当前第一相机和第二相机的外参数矫正旋转矩阵确定修正后的第一相机和第二相机的外参数矫正旋转矩阵。
有益效果如下:
本申请实施例所提供的双目立体相机外参数修正方法及装置,可以根据每组对应点修正后的极线约束误差确定所有对应点的极线约束误差之和,然后通过最小化极线约束误差之和可以得到两个相机的修正旋转矩阵,从而最终根据修正旋转矩阵与修正前的外参数矫正旋转矩阵得到修正后的外参数矫正旋转矩阵,在发生双目相机的相对关系改变的情况时,无需停止双目***的工作,也不需要特殊标定物重新计算外参数,只需通过检测对应点修正双目***的外参数,修正过程简单快捷,极大的提高了现实使用时的便利性。
附图说明
下面将参照附图描述本申请的具体实施例,其中:
图1示出了双目立体相机的工作原理示意图;
图2示出了本申请实施例中双目立体相机外参数修正方法实施的流程示意图;
图3示出了本申请实施例中双目***的结构示意图;
图4示出了本申请实施例中相机矫正过程的示意图;
图5示出了本申请实施例中双目立体相机外参数修正装置的结构示意图一;
图6示出了本申请实施例中双目立体相机外参数修正装置的结构示意图二;
图7示出了本申请实施例中双目立体相机外参数修正装置的结构示意图三。
具体实施方式
为了使本申请的技术方案及优点更加清楚明白,以下结合附图对本申请的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本申请的一部分实施例,而不是所有实施例的穷举。并且在不冲突的情况下,本说明中的实施例及实施例中的特征可以互相结合。
发明人在发明过程中注意到:
图1示出了双目立体相机的工作原理示意图,如图所示,空间中一点P通过投影,在双目相机中分别得到两个像,即p1和pr。通过相机标定技术,可以得到两个相机的内参数K以及外参数R、T。
由于内参数K描述了P点由相机坐标系到图像坐标系的变换关系,可以计算得到通过像素点p1、pr的两条光线在各自相机坐标系内的直线方程。再根据外参数R(旋转矩阵)和T(平移向量),可以得到两个相机之间的相对位置关系,将两条光线的方程表示统一到一个坐标系中,得到两条光线的交点P,最终恢复出二维像素点p的三维空间坐标P。
其中,内参数K可以有多种参数化形式,以下述为例:
f为相机的焦距,u0为相机坐标系XY平面原点(位于平面中央)到图像坐标系原点(位于图像左上角)在X轴上的平移量,V0为相机坐标系XY平面原点(位于平面中央)到图像坐标系原点(位于图像左上角)在Y轴上的平移量。
外参数R(旋转矩阵)和T(平移向量)为两个相机坐标系之间的变换关系,对于空间中一点X,如果其在左相机坐标系中的坐标为X1=(x,y,z)T,那么,它在右相机坐标系中的坐标为Xr=R*X1+t。
目前尚不存在外参数自动更新技术,现有技术中,如果要计算更新后的外参数,则需要重新使用特殊标定物(例如:棋盘格)计算新的外参数,实际应用时,假设一个安装在汽车上的双目***(辅助驾驶***),由于汽车震动、颠簸,很容易使双目相机的相对关系发生微小的改变,导致相机定位坐标点出现误差、立体视觉计算失败,此时,司机需要停下车、停止双目***的工作(离线),然后使用特殊标定物重新标定相机,很显然,这是非常不方便且不现实的。
综上所述,在一个已经矫正好的双目***下,由于外部干扰导致两个相机的外参数发生变化时,基于原始外参数的矫正结果不再有效,若不及时修正外参数,则会导致立体视觉计算失败。
针对上述不足,本申请实施例提出了一种双目立体相机外参数修正方法及装置,自动检测外参数是否发生改变,若发生改变则进行自动修正。
下面以具体实施例对本申请所提供的双目立体相机外参数修正方法及装置进行说明。
图2示出了本申请实施例中双目立体相机外参数修正方法实施的流程示意图,如图所示,所述双目立体相机外参数修正方法可以包括如下步骤:
步骤201、确定第一相机和第二相机的内参数矩阵K1、K2;
步骤202、根据K1、K2确定第i组对应点修正后的极线约束误差e′i;所述对应点为物理世界中同一点在利用第一相机的外参数矫正旋转矩阵R1和第二相机的外参数矫正旋转矩阵R2分别对所述第一相机、第二相机矫正后的图像中的投影像素点;
步骤203、确定所有对应点的极线约束误差之和E′,所述E′为修正旋转矩阵的函数;
步骤204、最小化所述E′得到修正旋转矩阵的值;
步骤205、根据所述修正旋转矩阵以及当前第一相机和第二相机的外参数矫正旋转矩阵确定修正后的第一相机和第二相机的外参数矫正旋转矩阵。
具体实施时,所述双目立体相机包括左右两个相机,本申请实施例中分别称之为第一相机和第二相机,所述第一相机可以指左侧相机或右侧相机,所述第二相机可以指右侧相机或左侧相机,本申请对此不作限制。
K1、K2分别为第一相机和第二相机的内参数矩阵,其中,
K1可以为:
K2可以为:
f1、f2分别可以为第一相机和第二相机的焦距,m1、n1分别可以为第一相机的相机坐标系XY平面原点(位于平面中央)到图像坐标系原点(位于图像左上角)在X轴、Y轴上的平移量;m2、n2分别为第二相机的相机坐标系XY平面原点(位于平面中央)到图像坐标系原点(位于图像左上角)在X轴、Y轴上的平移量。
本申请实施例可以先确定每组对应点修正后的极线约束误差,假设有N组对应点,然后在根据每组对应点的极线约束误差确定所有对应点的极线约束误差之和。其中,根据对极几何可知,本申请实施例所述极点可以为左相机坐标系原点在右像平面上的像、或者右相机坐标系原点在左像平面上的像;极平面可以为由两个相机坐标系原点与空间一点组成的平面;极线可以为极平面与两个像平面的交线;对应点可以为空间中一点在两个相机上分别成的像;根据集合关系可以发现,对应点一定位于极线之上,这种关系称之为极线约束。
本申请实施例可以通过对极线约束误差之和进行最小化操作,最小化的极线约束误差之和可以确定修正旋转矩阵的值;最终根据所述修正旋转矩阵以及修正前第一相机和第二相机的外参数矫正旋转矩阵确定修正后的第一相机和第二相机的外参数矫正旋转矩阵。
本申请实施例所提供的双目立体相机外参数修正方法及置,可以根据每组对应点修正后的极线约束误差确定所有对应点的极线约束误差之和,然后通过最小化极线约束误差之和可以得到两个相机的修正旋转矩阵,从而最终根据修正旋转矩阵与修正前的外参数矫正旋转矩阵得到修正后的外参数矫正旋转矩阵,在发生双目相机的相对关系改变的情况时,无需停止双目***的工作,也不需要特殊标定物重新计算外参数,只需通过检测对应点修正双目***的外参数,修正过程简单快捷,极大的提高了现实使用时的便利性。
实施中,所述根据K1、K2确定第i组对应点修正后的极线约束误差e′i,具体可以为:
其中,f1为第一相机的焦距,f2为第二相机的焦距,分别为第一相机和第二相机的内参数矩阵的逆,分别为第i组对应点中第一相机图像的点的坐标和第二相机图像的点的坐标,分别为第一相机的修正旋转矩阵的第2行和第3行,分别为第二相机的修正旋转矩阵的第2行和第3行;
其中,N为对应点的组数;
所述根据所述修正旋转矩阵以及当前第一相机和第二相机的外参数矫正旋转矩阵确定修正后的第一相机和第二相机的外参数矫正旋转矩阵,具体可以为:
确定修正后的第一相机外参数矫正旋转矩阵R’1=Rc1*R1,修正后的第二相机外参数矫正旋转矩阵R’2=Rc2*R2。
为了及时发现双目相机的相对关系发生改变、需要更新外参数,本申请实施例可以采用如下方式实施。
实施中,在所述根据K1、K2确定第i组对应点修正后的极线约束误差e′i之前,所述方法可以进一步包括:
根据第i组对应点在第一相机图像和第二相机图像中的第一坐标的值,确定误差ei存在,所述ei为第i组对应点在第一相机图像和第二相机图像中的第一坐标的差的绝对值;
将所述误差与预设阈值S进行比较;
如果误差大于预设阈值S,确定外参数R1和R2失效。
本申请实施例可以根据对应点在第一相机图像和第二相机图像中的坐标值确定是否已经存在误差,当确定存在误差后,再将误差与预设阈值S进行比较,以确定所产生的误差是否已经影响到后续的立体视觉计算,如果误差已经大于预设阈值S,那么,则可以确定两个相机的相对关系发生较大改变,当前的外参数已经不能用于恢复空间像素点的坐标、双目相机无法进行立体视觉计算。此时,再进行后续的外参数更新操作。
本申请实施例可以自动通过检测对应点的坐标误差来判断是否需要更新外参数,提高了外参数更新的及时性,避免长时间或拖延时间不更新外参数导致双目立体相机的立体视觉失败。
实施中,所述第一坐标可以为纵坐标y,所述根据第i组对应点在第一相机图像和第二相机图像中的第一坐标的值,确定误差ei存在,具体为:
检测第i组对应点在第一相机图像中的纵坐标和第二相机图像中的纵坐标不同时,确定误差ei存在,所述
具体实施时,本申请实施例可以针对共面且相机坐标系平行的双目***实施,在共面且相机坐标系平行的双目***中,由于相机坐标系平行,对应点比存在同一行中,即纵坐标y相等。因此,本申请实施例可以根据对应点在第一相机图像中的纵坐标与在第二相机图像中的纵坐标是否相同,来确定是否存在误差。
图3示出了本申请实施例中双目***的结构示意图,如图所示,两个相机的成像平面共面,并且两个相机坐标系的对应轴均平行。
在该情形下,两个相机坐标系只存在X轴方向的平移关系,即R=单位矩阵I,T=[Tx,0,0]。显然,这种情形下,所有极线1(极平面和两个图像平面所交直线)均与图像坐标系的X轴平行,并且和Y轴相交于同一点;即,图3中对应点(x1,y1)和(x2,y2),由于该对应点位于极线上,则可知y1=y2。经过简单的平面几何可知,P点的深度其中,f为相机内参中的焦距,Tx为两个相机坐标原点间的平移。
在共面且相机坐标系平行的双目***中,立体视觉计算(即恢复图像中每个像素点的深度)较为简单。
由于左视角中的某一点(x1,y1)的右图极线的直线方程必然为y=y1,所以其匹配点必然存在右图中同一行中。由于匹配点的搜集可在同一行中(而不是一条跨越多行的斜线中)进行,所以匹配的效率得到了极大的提升。
本申请实施例针对共面且相机坐标系平行的双目***,提供了一种自动检测误差的方法,即根据纵坐标值是否相同,确定误差是否存在,所述误差即为对应点在第一相机图像中与第二相机图像中的纵坐标之差。
然而,在发明过程中,发明人注意到,现实中的双目相机***往往并不全是共面且相机坐标系平行的双目***,即,两个相机的外参数矫正旋转矩阵并不是单位矩阵且平移向量T并非[Tx,0,0]的形式。因此,本申请实施例还可以采用如下方式实施。
实施中,在所述根据K1、K2确定第i组对应点修正后的极线约束误差e′i之前,所述方法可以进一步包括:
将双目立体相机的外参数旋转矩阵R分解为第一虚拟旋转量和第二虚拟旋转量;
将所述第一虚拟旋转量和第二虚拟旋转量分别应用于第一相机和第二相机进行虚拟旋转;
经虚拟旋转后所述外参数旋转矩阵R=单位矩阵I、平移向量T=[Tx,0,0],其中,Tx为第一相机和第二相机坐标原点之间的距离。
具体实施时,可以通过相机矫正等方式将任意相机位置关系通过虚拟旋转来转换为共面且相机坐标系平行的位置关系,在新的位置关系下,两个相机的内参数可能也会相应的改变,例如:由K1、K2更新为K1’、K2’。
相机矫正(Rectification)是一种将任意相机位置关系[R,T]通过虚拟旋转再投影、转换为这种在共面且相机坐标系平行的位置关系[I,[Tx,0,0]]的技术。
图4示出了本申请实施例中相机矫正过程的示意图,如图所示,相机矫正过程可以为:给定两个相机的内参数K1、K2以及外参数[R,T],将R分解为R1、R2,作为分别应用在两个相机上的虚拟旋转量对两个相机进行虚拟旋转,从而得到一组新的位置关系,在该位置关系下,两个相机的内参数更新为K’1、K’2,而两个相机外参数更新为[I,T’],其中I为单位矩阵,T’=[|T|,0,0]。
本申请实施例通过将现有技术中除共面且相机坐标系平行的双目***外的双目相机进行相机矫正,从而使得后续的外参数修正过程更加简单,进一步降低修正参数的复杂度。
实施例二、
本申请实施例以共面且坐标系平行的双目***作为示意进行说明。
本申请实施例的应用情景可以为:在一个已经矫正好的双目***下(即已知两个相机的内参数K1、K2和外参数[R,T]),由于外部干扰(例如:机械震动等)导致两个相机的外参数发生变化(由[R,T]变为[R’,T’]),此时,基于原始外参数[R,T]的矫正结果不再有效,若不进行及时外参数修正,则会导致立体视觉计算失败。
本申请实施例提供了一种方式,自动检测外参数是否发生改变,若发生改变,则自动进行修正,即通过计算自动将[R,T]更新为[R’,T’],从而可以使用该组参数进行新的矫正。
一、表达式定义及推倒:
1)假设K1、K2分别为当前左右两个相机的内参数,R1、R2分别为当前左右两个相机矫正所需的外参数矫正旋转矩阵,u1、u2分别为左右两个相机在校正后的图像中的对应点的二维坐标,该对应点可以通过现有的特征匹配算法计算得到。其中:
u1=(x1,y1);
u2=(x2,y2);
2)假设x1、x2为该对应点在左右两个相机原始坐标系(未矫正)中的三维坐标,由相机投影模型可以得到:
u1=K1*R1*X1;
u2=K2*R2*X2; (等式1)
定义U为对应点集合,即
3)假设ei为第i组对应点的极线约束误差,即,根据极线约束,矫正后的左右相机图像中的对应点的纵坐标y相同当纵坐标不同时,则认为该组对应点存在误差,并定义误差为其纵坐标的差的绝对值:
对于一组对应点集合U,定义总误差E为所有对应点的极线约束误差的和:
4)设Rc1、Rc2分别为左右两个相机的修正旋转矩阵,即当原有矫正失效时,则在原有矫正旋转矩阵R1、R2上分别应用Rc1、Rc2,从而得到修正后的新的矫正矩阵R’1、R’2。即:
R’1=Rc1*R1;
R’2=Rc2*R2; (等式4)
5)设一组修正前的对应点u1、u2,经过修正后的对应点为u’1、u’2,且他们的关系为:
二、通过最小化极线约束误差E计算修正旋转矩阵Rc1、Rc2
1)修正后极线约束误差E’与Rc1、Rc2的函数关系
极线约束误差E可以作为衡量当前矫正外参数R1、R2是否有效的标准。当E小于阈值S时,可以认为R1、R2仍然有效;当E大于该阈值S时,则认为R1、R2失效,需要计算修正Rc1、Rc2旋转矩阵,从而得到新的矫正旋转矩阵R’1、R’2。
本申请实施例可以通过最小化修正后的对应点的极线约束误差E来计算修正Rc1、Rc2旋转矩阵。
根据等式2和等式5可知,对应一组修正前的对应点(ui 1,ui 2),经过修正后的对应点(ui 1,ui 2)的极线约束误差e′i为:
其中,Rci为Rc矩阵的第i行。
根据等式3,对于一组对应点集合U,修正后的总误差E’为:
2)通过最小化E’求解Rc1、Rc2
本申请实施例可以通过数值优化的方式最小化E′,从而求解Rc1、Rc2。
由于e′i是关于Rc1、Rc2的非线性函数,因此,本申请实施例可以采用莱温伯格-马夸特算法对E′进行迭代最小化。
最小化E′的Rc1、Rc2即为所要计算得到的值;
最终根据修正旋转矩阵Rc1、Rc2分别计算得到两个相机修正后的外参数矫正旋转矩阵。
实施例三、
基于同一发明构思,本申请实施例中还提供了一种双目立体相机外参数修正装置,由于这些设备解决问题的原理与一种双目立体相机外参数修正方法相似,因此这些设备的实施可以参见方法的实施,重复之处不再赘述。
图5示出了本中请实施例中双目立体相机外参数修正装置的结构示意图一,如图所示,所述双目立体相机外参数修正装置可以包括:
参数确定模块501,用于确定第一相机和第二相机的内参数矩阵K1、K2;
单组误差确定模块502,用于根据K1、K2确定第i组对应点修正后的极线约束误差e′i;所述对应点为物理世界中同一点在利用第一相机的外参数矫正旋转矩阵R1和第二相机的外参数矫正旋转矩阵R2分别对所述第一相机、第二相机矫正后的图像中的投影像素点;
总误差确定模块503,用于确定所有对应点的极线约束误差之和E′,所述E′为修正旋转矩阵的函数;所述对应点为利用第一相机的当前外参数矫正旋转矩阵R1和第二相机的当前外参数矫正旋转矩阵R2分别对所述第一相机、第二相机矫正后的图像中的像素点;
最小化模块504,用于最小化所述E′得到修正旋转矩阵的值;
修正模块505,用于根据所述修正旋转矩阵以及当前第一相机和第二相机的外参数矫正旋转矩阵确定修正后的第一相机和第二相机的外参数矫正旋转矩阵。
实施中,所述单组误差确定模块具体可以用于按下式确定第i组对应点修正后的极线约束误差e′i:
其中,f1为第一相机的焦距,f2为第二相机的焦距,分别为第一相机和第二相机的内参数矩阵的逆,分别为第i组对应点中第一相机图像的点的坐标和第二相机图像的点的坐标,分别为第一相机的修正旋转矩阵的第2行和第3行,分别为第二相机的修正旋转矩阵的第2行和第3行;
所述总误差确定模块具体可以用于按下式确定所有对应点的极线约束误差之和E′:
其中,N为对应点的组数;
所述修正模块具体可以用于确定修正后的第一相机外参数矫正旋转矩阵R’1=Rc1*R1,修正后的第二相机外参数矫正旋转矩阵R’2=Rc2*R2。
图6示出了本申请实施例中双目立体相机外参数修正装置的结构示意图二,如图所示,所述装置可以进一步包括:
误差检测模块506,用于在所述确定第i组对应点修正后的极线约束误差e′i之前,根据第i组对应点在第一相机图像和第二相机图像中的第一坐标的值,确定误差ei存在,所述ei为第i组对应点在第一相机图像和第二相机图像中的第一坐标的差的绝对值;
失效确定模块507,用于将所述误差与预设阈值S进行比较;如果误差大于预设阈值S,确定外参数R1和R2失效。
实施中,所述第一坐标可以为纵坐标y,所述误差检测模块具体可以用于在所述确定第i组对应点修正后的极线约束误差e′i之前,检测第i组对应点在第一相机图像中的纵坐标和第二相机图像中的纵坐标不同时,确定误差ei存在,所述
图7示出了本申请实施例中双目立体相机外参数修正装置的结构示意图三,如图所示,所述装置可以进一步包括:
分解模块508,用于在所述确定第一相机和第二相机的内参数矩阵K1、K2之前,将双目立体相机的外参数旋转矩阵R分解为第一虚拟旋转量和第二虚拟旋转量;
虚拟旋转模块509,用于将所述第一虚拟旋转量和第二虚拟旋转量分别应用于第一相机和第二相机进行虚拟旋转;经虚拟旋转后所述外参数旋转矩阵R=单位矩阵I、平移向量T=[Tx,0,0],其中,Tx为第一相机和第二相机坐标原点之间的距离。
为了描述的方便,以上所述装置的各部分以功能分为各种模块或单元分别描述。当然,在实施本申请时可以把各模块或单元的功能在同一个或多个软件或硬件中实现。
本领域内的技术人员应明白,本申请的实施例可提供为方法、***、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。