技术领域
[0001] 本申请属于机器视觉技术领域,尤其涉及一种相机标定方法、装置、计算机可读存储介质及电子设备。
相关背景技术
[0002] 在图像测量以及机器视觉应用中,需要确定空间物体的三维位置与其在二维几何图像中的相互关系。通过对相机进行标定可以确定相机拍摄的图像的像素位置与空间物体的几何位置之间的关系,而基于双目多分辨率相机的标定已成为常见方法。通常,双目相机的标定是将两个不同分辨率的摄像机拍摄的图像下采样到低分辨率,然后将低分辨率图像缩放到相同的分辨率后再做双目相机标定。但是对低分辨率图像进行缩放会降低相机标定的精度。
具体实施方式
[0022] 请参照图示,其中相同的组件符号代表相同的组件,本申请的原理是以实施在一适当的运算环境中来举例说明。以下的说明是基于所例示的本申请具体实施例,其不应被视为限制本申请未在此详述的其它具体实施例。
[0023] 可以理解的是,本申请实施例的执行主体可以是诸如智能手机或平板电脑等的电子设备。
[0024] 请参阅图1,图1是本申请实施例提供的相机标定方法的流程示意图,该方法可以应用于至少包括第一相机和第二相机的电子设备中,该流程可以包括:
[0025] 101、获取第一相机和第二相机各自的内部参数和外部参数。
[0026] 拍照把空间物体通过相机变成了二维图像,但如果想从照片得到一些空间信息,比如距离、尺寸等,就需要利用二维图像中的几何信息得到三维位置信息。如果找到一个相机的数学模型,就可以通过这个数学模型利用二维图像逆推得到原来的三维信息。相机标定就是在求解这个数学模型,通过已知点的坐标求解相机的数学模型参数,从而可以恢复出空间点的三维坐标,完成三维重建。
[0027] 在本申请实施例中,比如,电子设备可以对该第一相机和该第二相机分别进行单目标定,得到该第一相机的内部参数和外部参数以及该第二相机的内部参数和外部参数。内部参数反映了相机的配置,如相机焦距,像主点坐标等。外部参数反映了该第一相机和该第二相机的相对位置关系。
[0028] 102、根据第一相机和第二相机各自的内部参数,构建虚拟新相机。
[0029] 比如,电子设备可以根据第一相机和第二相机的内部参数,构建虚拟新相机。例如,将第一相机的焦距f1作为该虚拟新相机的焦距fnew,将第一相机和第二相机的像主点的中点作为该虚拟新相机的像主点,构建出一个与该第一相机和第二相机相关的虚拟的新相机。
[0030] 103、根据虚拟新相机以及第一相机的内部参数和外部参数对该第一相机进行标定,并根据该虚拟新相机以及第二相机的内部参数和外部参数对该第二相机进行标定。
[0031] 当两个图像平面是完全共面行对准时,计算立体视差是最简单的。但是,在实际的双目立体视觉系统中,是不存在完全的共面行对准的两个相机图像平面的。所以需要进行双目相机立体校正。立体校正的目的就是把实际非共面行对准的两幅图像校正成共面行对准图像。而要知道双目视觉系统中两个相机之间的相对位置关系,电子设备可以通过同时对两个相机进行标定,以其中一个相机为基准,得到另一个相机相对该坐标系的旋转矩阵和平移矩阵。通过旋转和平移使得二者在一个平面上。获得旋转矩阵和平移矩阵的过程,就是立体标定的过程。通常,双目相机的标定是将两个不同分辨率的相机拍摄的图像下采样到低分辨率,由于两个相机分辨率不同,因此需要将低分辨率图像缩放到相同的分辨率后再做双目相机标定。但是对低分辨率图像进行缩放会影响相机标定的精度。
[0032] 在本申请实施例中,电子设备可以根据虚拟新相机以及第一相机的内部参数和外部参数对该第一相机进行标定,根据该虚拟新相机以及第二相机的内部参数和外部参数对该第二相机进行标定。以该虚拟新相机为基准,得到该第一相机和该第二相机相对该虚拟新相机的旋转矩阵和平移矩阵,将该第一相机和该第二相机变换到该虚拟新相机所在的平面上。
[0033] 可以理解的是,在本申请实施例中,首先获取第一相机和第二相机各自的内部参数和外部参数,然后根据该第一相机和该第二相机各自的内部参数,构建虚拟新相机,最后根据该虚拟新相机以及该第一相机的内部参数和外部参数对该第一相机进行标定,并根据该虚拟新相机以及该第二相机的内部参数和外部参数对该第二相机进行标定。由于本方案在相机标定时,将该虚拟新相机作为该第一相机和该第二相机标定的基准,所以无需将该第一相机和该第二相机分别拍摄的图像缩放到同一分辨率,降低了平均重投影误差,提高了相机的标定精度。
[0034] 请参阅图2,图2为本申请实施例提供的相机标定方法的另一流程示意图,该方法可以应用于至少包括第一相机和第二相机的电子设备中,该流程可以包括:
[0035] 201、分别获取第一相机和第二相机拍摄的图像。
[0036] 比如,电子设备可以控制第一相机和第二相机进行拍摄,然后获取该第一相机拍摄的原始图像和该第二相机拍摄的原始图像。该原始图像包括多张棋盘格图像,每张棋盘格图像中角点的数量为多个,例如原始图像包括至少3张棋盘格图像,每张棋盘格图像的角点个数大于4个。
[0037] 202、根据拍摄的图像,获取第一相机和第二相机各自的内部参数和外部参数。
[0038] 比如,在获取第一相机拍摄的原始图像和第二相机拍摄的原始图像之后,电子设备可以根据该图像获取该第一相机和该第二相机各自的内部参数和外部参数。
[0039] 获取内部参数和外部参数的具体步骤为:获取第一相机拍摄的原始图像和第二相机拍摄的原始图像的角点坐标信息,将角点坐标信息中的角点坐标转换为世界坐标;根据该角点坐标和该世界坐标计算得到单应性矩阵,该单应性矩阵表示世界坐标中的点和像素坐标中的点的对应关系;根据该单应性矩阵,得到该第一相机的内部参数和该第二相机的内部参数;根据该单应性矩阵,构造该第一相机的行对齐矩阵,得到该第一相机的外部参数,根据该单应性矩阵,构造该第二相机的行对齐矩阵,得到该第二相机的外部参数。
[0040] 世界坐标系是物体三维位置的坐标系,可以确定标定物的位置。图像坐标系是以相机拍摄的二维照片为基准建立的坐标系,用于指定物体在照片中的位置。
[0041] 在本申请实施例中,使用者可以预先准备一张棋盘格作为标定物。通过调整标定物或相机的方向,为标定物拍摄一些不同方向的照片。通过此方法可以将世界坐标系固定于棋盘格标定物图像上,则棋盘格标定物图像上任意一点的三维坐标W=0,因此,相机成像模型可化为下式:
[0042]
[0043] 其中,(U,V,1)为世界坐标系下的点的坐标,(u,v)为像素坐标系的点的坐标,Z为尺度因子,dx,dy分别表示X,Y方向上的一个像素在相机感光板上的物理长度,u0,v0分别表示相机感光板中心在像素坐标系下的坐标,θ表示感光板的横边和纵边之间的角度,R1,R2是第二相机到第一相机的旋转矩阵的前两列,T是第二相机到第一相机的平移矩阵。
[0044] 由公式(1)可得相机内参矩阵
[0045]
[0046] 由公式(1)和公式(2),设单应性矩阵为
[0047]
[0048] 单应性在计算机视觉中被定义为一个平面到另一个平面的投影映射。相机标定的单应性矩阵H可以理解为相机平面到棋盘格标定物平面的单应性,表示世界坐标中的点在像素坐标的成像对应关系,是内部参数和外部参数的共同作用体,于是有
[0049]
[0050] 在本申请实施例中,电子设备可以提取棋盘格标定物图像上所有内角点的图像坐标,由于(u,v)是像素坐标系下的棋盘格标定物的角点的坐标,可以直接通过摄像机获得。(U,V)是世界坐标系下的棋盘格标定物的角点的坐标,而棋盘格标定物的每个格子可以由设计者人为控制,所以其大小是已知量。由于单应性矩阵H是一个三3*3的齐次矩阵,有8个独立的未知参数。因此,H有8个未知量待解,至少需要八个方程,而每一个棋盘格标定物角点可以提供两个约束方程,所以需要四个对应点。
[0051] 在本申请实施例中,可以通过改变相机与棋盘格标定物间的相对位置来获得三个不同位置的照片。由于每个棋盘格的角点个数大于4个,因此可以用最小二乘回归法求得最佳的矩阵单应性矩阵H。R1,R2作为旋转矩阵R的两列,存在单位正交的关系。即[0052] R1TR2=0 (5)
[0053] R1TR1=R2TR2=1 (6)
[0054] 则由H和R1,R2的关系,可知
[0055] R1=ZA‑1H1 (7)
[0056] R2=ZA‑1H2 (8)
[0057] 代入可得
[0058] H1TZ2A‑TA‑1H2=0 (9)
[0059] H1TZ2A‑TA‑1H1=H2TZ2A‑TA‑1H2=1 (10)
[0060] 设Z2A‑TA‑1=B (11)
[0061] 设内部参数矩阵
[0062]
[0063] 则
[0064]
[0065] 用矩阵A表示矩阵B,得
[0066]
[0067] 由于B为对称阵,设
[0068] B=Z2A‑TA‑1 (15)
[0069] 则
[0070] H1TBH2=0 (16)
[0071] H1TBH1=H2TBH2=1 (17)
[0072]
[0073] 设
[0074] vij=[H1iH1j H1iH2j+H2iH1i H2iH2j H1iH3j+H3iH1j H2iH3j+H3iH2j H3iH3j] (19)[0075] 则可将上述方程化为
[0076] v12Tb=0 (20)
[0077] v11Tb=v22Tb=1 (21)
[0078] 即
[0079] 其中,
[0080]
[0081] 由于向量b有6个未知数,每棋盘格标定物可以提供一个vb=0的约束关系。该约束关系含两个约束方程。因此,至少需要6个方程,即3个棋盘格标定物来求解向量b。当求得向量b后,即可得到矩阵
[0082]
[0083] 其中,
[0084]
[0085]
[0086]
[0087]
[0088]
[0089]
[0090] 通过至少三棋盘格标定物图像,应用上述公式可以估算出B了。得到B后,即可求得第一相机的内部参数
[0091]
[0092] 第二相机的内部参数
[0093]
[0094] 世界坐标系作为双目视觉的系统参考系,可以给出两个相机相对世界坐标系的关系,从而求出相机之间的相对位置关系。
[0095] 在本申请实施例中,电子设备可以根据单应性矩阵,构造第一相机的行对齐矩阵,得到该第一相机的外部参数,根据该单应性矩阵,构造第二相机的行对齐矩阵,得到该第二相机的外部参数。比如,电子设备可以通过将旋转矩阵R通过罗德里格斯变换,旋转一半的角度,分别分离为图像之间的两部分r1和r2。对第二相机的平移向量T进行旋转。
[0096] t=r2*T (33)
[0097] 根据平移向量t构造旋转矢量e1,e2以及
[0098] e3=e1*e2 (34)
[0099] 则初始旋转矩阵为
[0100]
[0101] 则第一相机和第二相机的行对齐矩阵为
[0102] Rrect1=Rrectr1 (36)
[0103] Rrect2=Rrectr2 (37)
[0104] 203、将第一相机的焦距和第二相机的焦距中焦距较小的相机焦距作为虚拟新相机的焦距。
[0105] 比如,第一相机的焦距为f1,第二相机的焦距为f2,其中,f1<f2,那么电子设备可以设虚拟新相机的焦距fnew为第一相机和第二相机中焦距较小的那个,即f1为虚拟新相机的焦距。例如,第一相机的焦距为f1=40mm,第二相机的焦距为f2=50mm,那么电子设备可以设第一相机的焦距为虚拟新相机的焦距,即fnew=40mm。
[0106] 又如,第一相机的焦距为f1,第二相机的焦距为f2,其中,f1>f2,那么电子设备可以设虚拟新相机的焦距fnew为第一相机和第二相机中焦距较小的那个,即f2为虚拟新相机的焦距。例如,第一相机的焦距为f1=60mm,第二相机的焦距为f2=50mm,那么电子设备可以设第二相机的焦距为虚拟新相机的焦距,即fnew=50mm。
[0107] 204、将第一相机和第二相机的像主点纵坐标值之和的一半作为虚拟新相机的像主点纵坐标值,以及将该第一相机的像主点横坐标值作为该虚拟新相机的像主点横坐标值,得到新像主点坐标。
[0108] 比如,第一相机的像主点坐标为(cx1,cy1),第二相机的像主点坐标为(cx2,cy2),那么电子设备可以将像主点纵坐标设为
[0109] ynew=(cy1+cy2)/2 (38)
[0110] 像主点横坐标值设为
[0111] xnew=cx1 (39)
[0112] 于是可以得到新像主点坐标(cxnew,cynew),并将该新像主点坐标作为虚拟新相机的像主点坐标。
[0113] 例如,第一相机的像主点坐标为(10,20),第二相机的像主点坐标为(15,10),那么电子设备可以计算出虚拟新相机的像主点纵坐标值为ynew=15,虚拟新相机的像主点横坐标值为xnew=10,于是可以得到该虚拟新相机的像主点坐标(10,15)。
[0114] 205、根据虚拟新相机的焦距和新像主点坐标,构建虚拟新相机。
[0115] 比如,在获取虚拟新相机的焦距fnew和像主点坐标(cxnew,cynew)后,电子设备可以确定虚拟新相机的内部参数Knew,其内部参数矩阵为
[0116]
[0117] 在一种实施方式中,电子设备可以根据虚拟新相机的焦距和新像主点坐标,建立以该虚拟新相机为基准的像素坐标系。根据该虚拟新相机的内部参数,获取将像素坐标系转换为世界坐标系的重投影矩阵。在该像素坐标系下将该第一相机和该第二相机变换到该虚拟新相机所在的平面上,对第一相机和第二相机进行标定
[0118] 比如,建立以虚拟新相机为基准的像素坐标系后,根据该虚拟新相机的内部参数,电子设备可以获取世界坐标系和该像素坐标系之间的重投影矩阵。
[0119]
[0120] 根据该重投影矩阵可以将平面二维坐标恢复为空间点的三维坐标,完成三维重建。比如,电子设备可以根据该重投影矩阵将像素坐标系的点的坐标(u,v),转换为世界坐标系下的点的坐标(U,V,W)。
[0121] 206、根据虚拟新相机的内部参数、第一相机的内部参数和行对齐矩阵,确定该第一相机的矫正单应性矩阵,以完成对该第一相机的标定。
[0122] 比如,在获取虚拟新相机的内部参数后,电子设备可以根据该虚拟新相机的内部参数Knew和以及第一相机的内部参数K1和第一相机的行对齐矩阵Rrect1,确定该第一相机的矫正单应性矩阵
[0123] H1=KnewRrect1K1 (42)
[0124] 207、根据虚拟新相机的内部参数、第二相机的内部参数和行对齐矩阵,确定该第二相机的矫正单应性矩阵,以完成对该第二相机的标定。
[0125] 在获取虚拟新相机的内部参数后,电子设备可以根据该虚拟新相机的内部参数Knew和以及第二相机的内部参数K2和第一相机的行对齐矩阵Rrect2,确定该第二相机的矫正单应性矩阵
[0126] H2=KnewRrect2K2 (43)
[0127] 在一种实施例中,电子设备还可以根据第一相机的矫正单应性矩阵确定该第一相机拍摄的图像对应的矫正图像;根据第二相机的矫正单应性矩阵确定该第二相机拍摄的图像对应的矫正图像。
[0128] 比如,得到第一相机的矫正单应性矩阵后,电子设备可以对标定后第一相机拍摄的原始图像进行矫正。得到第二相机的矫正单应性矩阵后,电子设备可以对标定后第二相机拍摄的原始图像进行矫正。
[0129] 可以理解的是,由于本方案在相机标定时,将该虚拟新相机作为标定的基准,所以无需将该第一相机和该第二相机分别拍摄的图像缩放到同一分辨率,降低了平均重投影误差,提高了相机的标定精度。
[0130] 请参阅图3至图6,图3至图6为本申请实施例提供的相机标定方法的场景示意图。
[0131] 比如,第一相机和第二相机拍摄的图像包括多张棋盘格图像,每张棋盘格图像中角点的数量为多个。电子设备控制第一相机和第二相机进行拍摄,然后获取第一相机拍摄的原始图像,如图3所示。获取第二相机拍摄的原始图像,如图4所示。示例性地,该原始图像为至少3张棋盘格图像,其中每张棋盘格图像的角点个数大于4个。
[0132] 在获取第一相机拍摄的原始图像和第二相机拍摄的原始图像之后,电子设备可以根据该图像获取该第一相机和该第二相机各自的内部参数和外部参数。获取内部参数和外部参数的具体步骤为:分别获取第一相机和第二相机拍摄的图像,获取图像的角点坐标信息,将角点坐标信息中的角点坐标转换为世界坐标;根据该角点坐标和该世界坐标确定单应性矩阵,该单应性矩阵表示世界坐标中的角点与像素坐标中的角点之间的对应关系;根据该单应性矩阵确定该第一相机和该第二相机各自的内部参数;根据该单应性矩阵构造该第一相机的行对齐矩阵,得到该第一相机的外部参数,以及根据该单应性矩阵构造该第二相机的行对齐矩阵,得到该第二相机的外部参数。
[0133] 例如,电子设备可以求得该第一相机的内部参数 和该第二相机的内部参数 以及该第一相机的行对齐矩阵Rrect1和该第二相机的行对
齐矩阵Rrect2。
[0134] 由第一相机的内部参数和第二相机的内部参数可知,第一相机的焦距为f1,第二相机的焦距为f2,如果其中,f1<f2,那么电子设备可以设虚拟新相机的焦距fnew为第一相机和第二相机中焦距较小的那个,即f1为虚拟新相机的焦距。例如,第一相机的焦距为f1=40mm,第二相机的焦距为f2=50mm,那么电子设备可以设第一相机的焦距为虚拟新相机的焦距,即fnew=40mm。
[0135] 由第一相机的内部参数和第二相机的内部参数可知,第一相机的像主点坐标为(cx1,cy1),第二相机的像主点坐标为(cx2,cy2),那么电子设备可以将像主点纵坐标设为ynew=(cy1+cy2)/2,像主点横坐标值设为xnew=cx1,于是可以得到新像主点坐标(cxnew,cynew),将该新像主点坐标作为虚拟新相机的像主点坐标。例如,第一相机的像主点坐标为(10,20),第二相机的像主点坐标为(15,10),那么电子设备可以计算出虚拟新相机的像主点纵坐标值为ynew=15,虚拟新相机的像主点横坐标值为xnew=10,于是可以得到该虚拟新相机的像主点坐标(10,15)。
[0136] 在获取虚拟新相机的焦距fnew和像主点坐标(cxnew,cynew)后,电子设备可以得到虚拟新相机的内部参数Knew。在获取虚拟新相机的内部参数后,电子设备可以根据该虚拟新相机的内部参数Knew和第一相机的行对齐矩阵Rrect1,得到该第一相机的矫正单应性矩阵H1=KnewRrect1K1,根据该虚拟新相机的内部参数Knew和第二相机的行对齐矩阵Rrect2,得到该第二相机的矫正单应性矩阵H2=KnewRrect2K2。
[0137] 根据第一相机的矫正单应性矩阵H1可以对该第一相机拍摄的图像进行矫正,得到该第一相机拍摄的图像的矫正图像,如图5所示。根据第二相机的矫正单应性矩阵H2可以对该第二相机拍摄的图像的矫正图像,得到该第二相机拍摄的图像的矫正图像,如图6所示。
[0138] 可以理解的是,由于本方案在相机标定时,将虚拟新相机作为标定的基准,所以无需将该第一相机和该第二相机分别拍摄的图像缩放到同一分辨率,降低了平均重投影误差,提高了相机的标定精度。
[0139] 例如,根据虚拟新相机的焦距和像主点坐标,电子设备可以建立以该虚拟新相机为基准的像素坐标系。在该像素坐标系下将第一相机和第二相机变换到该虚拟新相机所在的平面上。在建立以该虚拟新相机为基准的像素坐标系后,根据该虚拟新相机的内部参数,电子设备可以获取世界坐标系和该像素坐标系之间的重投影矩阵,根据该重投影矩阵可以将平面二维坐标恢复为空间点的三维坐标,完成三维重建。比如,电子设备可以根据该重投影矩阵将像素坐标系的点的坐标(u,v),转换为世界坐标系下的点的坐标(U,V,W)。
[0140] 例如,利用该重投影矩阵进行投影后,平均重投影误差(Mean ReprojectionError per Image)的平均像素误差(Mean Error Pixels)为0.9个像素,有效的矫正区域为2628*2007,如图7所示,图中Camera 1表示第一相机,Camera 2表示第二相机,整体平均误差(Overal Mean Error)表示重投影矩阵的平均像素误差。
[0141] 请参阅图8,图8为本申请实施例提供的相机标定装置的结构示意图。相机标定装置300可以包括获取模块301,构建模块302和标定模块303,其中:
[0142] 获取模块301,用于获取第一相机和第二相机各自的内部参数和外部参数;
[0143] 构建模块302,用于根据第一相机和第二相机各自的内部参数,构建虚拟新相机;
[0144] 标定模块303,用于根据虚拟新相机以及第一相机的内部参数和外部参数对第一相机进行标定,并根据虚拟新相机以及第二相机的内部参数和外部参数对第二相机进行标定。
[0145] 在一种实施方式中,构建模块302可以具体用于:
[0146] 将第一相机的焦距和第二相机的焦距中焦距较小的相机焦距作为虚拟新相机的焦距;
[0147] 将第一相机和第二相机的像主点纵坐标值之和的一半作为虚拟新相机的像主点纵坐标值,以及将第一相机的像主点横坐标值作为虚拟新相机的像主点横坐标值,得到新像主点坐标;
[0148] 根据虚拟新相机的焦距和新像主点坐标,构建虚拟新相机。
[0149] 在一种实施方式中,获取模块301可以具体用于:
[0150] 分别获取第一相机和第二相机拍摄的图像;
[0151] 获取图像的角点坐标信息,将角点坐标信息中的角点坐标转换为世界坐标;
[0152] 根据角点坐标和世界坐标确定单应性矩阵,单应性矩阵表示世界坐标中的角点与像素坐标中的角点之间的对应关系;
[0153] 根据单应性矩阵确定第一相机和第二相机各自的内部参数;
[0154] 根据单应性矩阵构造第一相机的行对齐矩阵,得到第一相机的外部参数,以及根据单应性矩阵构造第二相机的行对齐矩阵,得到第二相机的外部参数。
[0155] 在一种实施方式中,标定模块303可以具体用于:
[0156] 根据虚拟新相机的内部参数、第一相机的内部参数和行对齐矩阵,确定第一相机的矫正单应性矩阵,以完成对第一相机的标定;
[0157] 根据虚拟新相机的内部参数、第二相机的内部参数和行对齐矩阵,确定第二相机的矫正单应性矩阵,以完成对第二相机的标定。
[0158] 在一种实施方式中,获取模块301还可以用于:
[0159] 根据第一相机的矫正单应性矩阵确定第一相机拍摄的图像对应的矫正图像;
[0160] 根据第二相机的矫正单应性矩阵确定第二相机拍摄的图像对应的矫正图像。
[0161] 在一种实施方式中,第一相机和第二相机拍摄的图像包括多张棋盘格图像,每张棋盘格图像中角点的数量为多个。
[0162] 本申请实施例提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时以实现如本实施例提供的相机标定方法中的流程。
[0163] 本申请实施例还提供一种电子设备,电子设备包括存储器、处理器以及存储于该存储器中并在该处理器上运行的计算机程序,该处理器通过调用该存储器中存储的计算机程序,用于执行本实施例提供的相机标定方法中的步骤。
[0164] 例如,上述电子设备可以是诸如平板电脑或者智能手机等移动终端。请参阅图9,图9为本申请实施例提供的电子设备的结构示意图。
[0165] 该电子设备400可以包括第一相机401、第二相机402、存储器403、处理器404等部件。本领域技术人员可以理解,图9中示出的电子设备结构并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
[0166] 第一相机401、第二相机402可以将光学图像信号转变为电信号,记录物体的二维图像信息。
[0167] 存储器403可用于存储应用程序和数据。存储器403存储的应用程序中包含有可执行代码。应用程序可以组成各种功能模块。处理器404通过运行存储在存储器403的应用程序,从而执行各种功能应用以及数据处理。
[0168] 处理器404是电子设备的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或执行存储在存储器403内的应用程序,以及调用存储在存储器403内的数据,执行电子设备的各种功能和处理数据,从而对电子设备进行整体监控。
[0169] 在本实施例中,电子设备中的处理器404会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行代码加载到存储器403中,并由处理器404来运行存储在存储器403中的应用程序,从而执行:
[0170] 获取第一相机和第二相机各自的内部参数和外部参数;
[0171] 根据第一相机和第二相机各自的内部参数,构建虚拟新相机;
[0172] 根据虚拟新相机以及第一相机的内部参数和外部参数对第一相机进行标定,并根据虚拟新相机以及第二相机的内部参数和外部参数对第二相机进行标定。
[0173] 请参阅图10,电子设备400可以包括400可以包括第一相机401、第二相机402、存储器403、处理器404、麦克风405、显示屏406、电池407等部件。
[0174] 第一相机401、第二相机402可以将光学图像信号转变为电信号,记录物体的二维图像信息。
[0175] 存储器403可用于存储应用程序和数据。存储器403存储的应用程序中包含有可执行代码。应用程序可以组成各种功能模块。处理器404通过运行存储在存储器403的应用程序,从而执行各种功能应用以及数据处理。
[0176] 处理器404是电子设备的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或执行存储在存储器403内的应用程序,以及调用存储在存储器403内的数据,执行电子设备的各种功能和处理数据,从而对电子设备进行整体监控。
[0177] 麦克风405可以用于采集周围环境中的声音信号。
[0178] 显示屏406可以用于显示诸如文字、图像等信息,还可以用于接收用户的触摸操作。
[0179] 电池407可以用于为电子设备各个部件的正常运行提供电力支持。
[0180] 在本实施例中,电子设备中的处理器404会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行代码加载到存储器403中,并由处理器404来运行存储在存储器403中的应用程序,从而执行:
[0181] 获取第一相机和第二相机各自的内部参数和外部参数;
[0182] 根据第一相机和第二相机的各自内部参数,构建虚拟新相机;
[0183] 根据虚拟新相机以及第一相机的内部参数和外部参数对第一相机进行标定,并根据虚拟新相机以及第二相机的内部参数和外部参数对第二相机进行标定。
[0184] 在一种实施方式中,处理器404在执行根据第一相机和第二相机的内部参数,构建虚拟新相机时,可以执行:
[0185] 将第一相机的焦距和第二相机的焦距中焦距较小的相机焦距作为虚拟新相机的焦距;
[0186] 将第一相机和第二相机的像主点纵坐标值之和的一半作为虚拟新相机的像主点纵坐标值,将第一相机像主点横坐标值作为虚拟新相机的像主点横坐标值,得到新像主点坐标;
[0187] 根据虚拟新相机的焦距和新像主点坐标,构建虚拟新相机。
[0188] 在一种实施方式中,处理器404在执行根据虚拟新相机以及第一相机的内部参数和外部参数对第一相机进行标定,并根据虚拟新相机以及第二相机的内部参数和外部参数对第二相机进行标定时,可以执行:
[0189] 根据虚拟新相机的内部参数、第一相机的内部参数和行对齐矩阵,确定第一相机的矫正单应性矩阵,以完成对第一相机的标定;
[0190] 根据虚拟新相机的内部参数、第二相机的内部参数和行对齐矩阵,确定第二相机的矫正单应性矩阵,以完成对第二相机的标定。
[0191] 在一种实施方式中,处理器404在执行根据虚拟新相机以及第一相机的外部参数和第二相机的外部参数对第一相机和第二相机进行标定后,还可以执行:
[0192] 根据第一相机的矫正单应性矩阵确定第一相机拍摄的图像对应的矫正图像;
[0193] 根据第二相机的矫正单应性矩阵确定第二相机拍摄的图像对应的矫正图像。
[0194] 在一种实施方式中,处理器404在执行获取第一相机和第二相机各自的内部参数和外部参数时,可以执行:
[0195] 分别获取第一相机和第二相机拍摄的图像;
[0196] 获取图像的角点坐标信息,将角点坐标信息中的角点坐标转换为世界坐标;
[0197] 根据角点坐标和世界坐标确定单应性矩阵,单应性矩阵表示世界坐标中的角点与像素坐标中的角点之间的对应关系;
[0198] 根据单应性矩阵确定第一相机和第二相机各自的内部参数;
[0199] 根据单应性矩阵构造第一相机的行对齐矩阵,得到第一相机的外部参数,以及根据单应性矩阵构造第二相机的行对齐矩阵,得到第二相机的外部参数。
[0200] 在一种实施方式中,处理器404在分别获取第一相机和第二相机分别拍摄的图像时,第一相机和第二相机拍摄的图像包括多张棋盘格图像,每张棋盘格图像中角点的数量为多个。
[0201] 在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见上文针对相机标定方法的详细描述,此处不再赘述。
[0202] 本申请实施例提供的相机标定装置与上文实施例中的相机标定方法属于同一构思,在相机标定装置上可以运行相机标定方法实施例中提供的任一方法,其具体实现过程详见相机标定方法实施例,此处不再赘述。
[0203] 需要说明的是,对本申请实施例的相机标定方法而言,本领域普通技术人员可以理解实现本申请实施例中的相机标定方法的全部或部分流程,是可以通过计算机程序来控制相关的硬件来完成,计算机程序可存储于一计算机可读取存储介质中,如存储在存储器中,并被至少一个处理器执行,在执行过程中可包括如相机标定方法的实施例的流程。其中,的存储介质可为磁碟、光盘、只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)等。
[0204] 对本申请实施例的相机标定装置而言,其各功能模块可以集成在一个处理芯片中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中,存储介质譬如为只读存储器,磁盘或光盘等。
[0205] 以上对本申请实施例所提供的一种相机标定方法、装置、存储介质以及电子设备进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。