双摄像头相对位置计算方法、装置和设备与流程

文档序号:12064744阅读:1034来源:国知局
双摄像头相对位置计算方法、装置和设备与流程

本发明涉及视频技术,尤其涉及一种双摄像头相对位置计算方法、装置和设备。



背景技术:

摄像头一般只能记录下二维的照片,而如果利用两个摄像头同时对一个物体或者场景拍摄照片,则可以恢复原始被拍摄物的深度信息,从而可能还原成为三维信息。

目前,在利用两个摄像头进行拍摄,计算原始被拍摄物的深度信息时,我们需要用于表示两个摄像头之间相对位置的准确信息。但是在用户使用过程中,两个摄像头之间的相对位置却可能会因为落摔、压力、温度等的影响而发生变化,从而和原始的相对位置不符。因而需要对双摄像头中两个摄像头之间的相对位置重新进行计算。当前,可以利用一组图像来计算双摄像头之间的相对位置。通过假设摄像头的内部参数固定不变,利用算法推算出双摄像头中两个摄像头之间的相对位置。

然而,目前的算法当遇到拍摄的场景离摄像头很远,或者场景里有很大一部分是一个平面或者接近一个平面,以及场景中没有纹理丰富的物体等情况时,因对场景的分辨较为困难,导致无法保证计算出的相对位置的正确性。



技术实现要素:

本发明提供一种双摄像头相对位置计算方法、装置和设备,以在场景较难分辨的情况下,实现双摄像头相对位置的计算。

第一方面,本发明提供一种双摄像头相对位置计算方法,包括:

获取M组双摄像头图像,其中M组中的每组双摄像头图像包括由双摄像头分别同时对同一场景拍摄的两幅图像,M为正整数;

对M组双摄像头图像进行筛选,得到Q组可用于计算双摄像头相对位置的双摄像头图像,Q为正整数,且Q≤M;

根据Q组中的每组双摄像头图像获取N组中的每组双摄像头图像所对应的双摄像头相对位置参数;

从Q组双摄像头图像相对位置参数中获取最优双摄像头相对位置参数。

结合第一方面,在第一种实施方式中,相对位置参数包括两个摄像头之间的相对平移距离t和两个摄像头之间的相对旋转矩阵R,其中,t=(tx,ty,tz)T,x、y和z分别为平面直角坐标系的三个正交坐标轴。

结合第一方面和第一种实施方式,在第二种实施方式中,对每组双摄像头图像进行筛选,以获得多组可用于计算双摄像头相对位置的双摄像头图像具体包括:

获取第一组双摄像头图像所对应的单应性矩阵,其中,M组双摄像头图像中的每组双摄像头图像为第一组双摄像头图像;

根据单应性矩阵确定第一组双摄像头图像中两幅图像之间的投影误差;

当投影误差大于或等于预定误差阈值时,确定第一组双摄像头图像为可用于相对位置计算的双摄像头图像。

结合第一方面和前两种实施方式,在第三种实施方式中,根据单应性矩阵确定第一组双摄像头图像中两幅图像之间的投影误差具体包括:

根据确定第一组双摄像头图像中两幅图像之间的投影误差e,其中,H表示第一组双摄像头图像所对应的单应性矩阵,Yi表示第一组双摄像头图像中第一图像的特征点(xi,yi),Y′i表示第一组双摄像头图像中第二图像的特征点(x′i,y′i),j为正整数,j≤N′,N′表示第一组双摄像头图像中特征点对(Yi,Y′i)的个数,第一图像为两个摄像头中第一摄像头拍摄的图像,第二图像为两个摄像头中第二摄像头拍摄的图像。

结合第一方面和前三种实施方式,在第四种实施方式中,根据Q组中的每组双摄像头图像获取Q组中的每组双摄像头图像所对应的双摄像头相对位置参数具体包括:

根据第二组双摄像头图像中的特征点对(Xi,X′i)获得两个摄像头之间的相对平移距离t和两个摄像头之间的相对旋转矩阵R,其中Q组双摄像头图像中的每组双摄像头图像为第二组双摄像头图像,Xi表示第二组双摄像头图像中的第一图像的特征点(xi,yi),X′i表示第二组双摄像头图像中第二图像的特征点(x′i,y′i),其中,i为正整数,i≤N,N表示第二组双摄像头图像中特征点对(Xi,X′i)的个数,第一图像为两个摄像头中第一摄像头拍摄的图像,第二图像为两个摄像头中第二摄像头拍摄的图像。

结合第一方面和前四种实施方式,在第五种实施方式中,根据第二组双摄像头图像中的特征点对(Xi,X′i)获得两个摄像头之间的相对平移距离t和两个摄像头之间的相对旋转矩阵R具体包括:根据非线性优化公式获取t和R,

其中

l′i=K′-T[t]xRK-1Xi为Xi在第二图像中对应的核线,

li=-K-TR-1[t]xK′-1X′i为X′i在第一图像中对应的核线,

lia,lib分别为li向量的第一分量和第二分量,l′ia,l′ib分别为l′i向量的第一分量和第二分量,K为第一摄像头的内参矩阵,K′为第二摄像头的内参矩阵,[t]x为由t定义的反对称矩阵

结合第一方面和前五种实施方式,在第六种实施方式中,根据非线性优化公式获取t和R之前,还包括:

根据随机抽样一致RANSAC算法剔除第二组双摄像头图像中错误的特征点对(Xi,X′i)。

结合第一方面和前六种实施方式,在第七种实施方式中,根据第二组双摄像头图像中的特征点对(Xi,X′i)获得两个摄像头之间的相对平移距离t和两 个摄像头之间的相对旋转矩阵R之后,还包括:

根据相对平移距离t和相对旋转矩阵R获取第二组双摄像头图像中每一个特征点的第一距离,其中第一距离为每一个特征点到与该特征点对应的核线的距离;

当每一个特征点为特征点对(Xi,X′i)中的特征点Xi时,特征点Xi在第二图像中对应的核线为l′i=K′-T[t]xK-1Xi

当每一个特征点为特征点对(Xi,X′i)中的特征点X′i时,特征点X′i在第一图像中对应的核线为li=-K-TR-1[t]xK′-1X′i,[t]x为由t定义的反对称矩阵

根据每一个特征点的第一距离获得第二距离,第二距离为所有特征点的第一距离的平均值;

根据第一距离和第二距离的差小于或等于设定方差阈值的特征点,重新获取相对平移距离t和相对旋转矩阵R;

重复上述过程,直至第二组双摄像头图像中每一个特征点的第一距离与第二距离的平均值的差均小于设定方差阈值。

结合第一方面和前七种实施方式,在第八种实施方式中,获取最优双摄像头相对位置参数具体包括:

获得第二组双摄像头图像中所有特征点的第一距离的平均误差其中Q组双摄像头图像中的每组双摄像头图像为第二组双摄像头图像,第一距离为每一个特征点到与该特征点对应的核线的距离,当每一特征点为特征点对(Xi,X′i)中的特征点Xi时,当每一特征点为特征点对(Xi,X′i)中的特征点X′i时,特征点Xi在第二图像中对应的核线为l′i=K′-T[t]xRK-1Xi,特征点X′i在第一图像中对应的核线为li=-K-TR-1[t]xK′-1X′i,i为正整数,i≤N,Xi表示第二组双摄像头图像中的第一图像的特征点(xi,yi),X′i表示第二组双摄像头图像中的第 二图像的特征点(x′i,y′i),N表示第二组双摄像头图像中的特征点对(Xi,X′i)的个数,[t]x为由t定义的反对称矩阵第一图像为两个摄像头中第一摄像头拍摄的图像,第二图像为两个摄像头中第二摄像头拍摄的图像;

将平均误差最小的双摄像头图像的双摄像头相对位置参数作为最优双摄像头相对位置参数。

结合第一方面和前八种实施方式,在第九种实施方式中,获得第二组双摄像头图像中所有特征点的第一距离的平均误差具体包括:

根据获得第二组双摄像头图像中特征点的第一距离的平均误差其中

Xi表示第二组双摄像头图像中的第一图像的特征点(xi,yi),X′i表示第二组中双摄像头图像中的第二图像的特征点(x′i,y′i),第一图像为两个摄像头中第一摄像头拍摄的图像,第二图像为两个摄像头中第二摄像头拍摄的图像

l′i=K′-T[t]xRK-1Xi为Xi在第二图像中对应的核线,

li=-K-TR-1[t]xK′-1X′i为X′i在第一图像中对应的核线,

lia,lib分别为li向量的第一分量和第二分量,l′ia,l′ib分别为l′i向量的第一分量和第二分量,K为第一摄像头的内参矩阵,K′为第二摄像头的内参矩阵,[t]x为由t定义的反对称矩阵

N表示第二组双摄像头图像中特征点对(Xi,X′i)的个数。

结合第一方面和前九种实施方式,在第十种实施方式中,当可用于位置计算的双摄像头图像的数量小于或等于规定阈值时,重新获取M组双摄像头图像。

结合第一方面和前十种实施方式,在第十一种实施方式中,在获取最优 双摄像头相对位置参数之后,还包括:

根据最优双摄像头相对位置参数获得参考图像中所有特征点的第一距离的参考平均误差其中第一距离为每一个特征点到与该特征点对应的核线的距离,Xi表示第二组双摄像头图像中的第一图像的特征点(xi,yi),X′i表示第二组双摄像头图像中的第二图像的特征点(x′i,y′i),Q组双摄像头图像中的每组双摄像头图像为第二组双摄像头图像,当每一特征点为特征点对(Xi,X′i)中的特征点Xi时,特征点Xi在第二图像中对应的核线为l′i=K′-T[t]xRK-1Xi,当每一特征点为特征点对(Xi,X′i)中的特征点X′i时,特征点X′i在第一图像中对应的核线为li=-K-TR-1[t]xK′-1X′i,i为正整数,i≤N,N表示第二组双摄像头图像中特征点对(Xi,X′i)的个数,[t]x为由t定义的反对称矩阵第一图像为两个摄像头中第一摄像头拍摄的图像,第二图像为两个摄像头中第二摄像头拍摄的图像,参考图像为双摄像头所拍摄的在获取的M组双摄像头图像之外的图像;

若参考平均误差大于或等于预定误差阈值,重新执行双摄像头位置计算方法。

第二方面,本发明还提供一种双摄像头位置计算装置,包括:

采集模块,用于获取M组双摄像头图像,其中M组中的每组双摄像头图像包括由双摄像头分别同时对同一场景拍摄的两幅图像,其中M为正整数;

筛选模块,用于对M组双摄像头图像进行筛选,得到Q组可用于计算双摄像头相对位置的双摄像头图像,其中Q为正整数,Q≤M;

位置计算模块,用于根据Q组中的每组可用于位置计算的双摄像头图像获取Q组中的每组双摄像头图像所对应的双摄像头相对位置参数;

优化模块,用于从Q组双摄像头相对位置参数中获取最优双摄像头相对位置参数。

结合第二方面,在第一种实施方式中,相对位置参数包括两个摄像头之 间的相对平移距离t和两个摄像头之间的相对旋转矩阵R,其中,t=(tx,ty,tz)T,x、y和z分别为平面直角坐标系的三个正交坐标轴。

结合第二方面和第一种实施方式,在第二种实施方式中,筛选模块具体用于:

获取第一组双摄像头图像所对应的单应性矩阵,其中,M组双摄像头图像中的每组双摄像头图像为第一组双摄像头图像;

根据单应性矩阵确定第一组双摄像头图像中两幅图像之间的投影误差;

当投影误差大于或等于预定误差阈值时,确定第一组双摄像头图像为可用于计算双摄像头相对位置的双摄像头图像。

结合第二方面和前两种实施方式,在第三种实施方式中,筛选模块具体用于:根据确定每组双摄像头图像中两幅图像之间的投影误差e,其中,H表示每组双摄像头图像所对应的单应性矩阵,Yi表示第一组双摄像头图像中第一图像的特征点(xi,yi),Y′i表示第一组双摄像头图像中第二图像的特征点(x′i,y′i),j为正整数,j≤N′,N′表示第一组双摄像头图像中特征点对(Yi,Y′i)的个数,第一图像为两个摄像头中第一摄像头拍摄的图像,第二图像为两个摄像头中第二摄像头拍摄的图像。

结合第二方面和前三种实施方式,在第四种实施方式中,计算模块具体用于:

根据第二组双摄像头图像中的特征点对(Xi,X′i)获得两个摄像头之间的相对平移距离t和两个摄像头之间的相对旋转矩阵R,其中Q组双摄像头图像中的每组双摄像头图像为第二组双摄像头图像,Xi表示第二组双摄像头图像中的第一图像的特征点(xi,yi),X′i表示第二组双摄像头图像中的第二图像的特征点(x′i,y′i),i为正整数,i≤N,N表示第二组双摄像头图像中特征点对(Xi,X′i)的个数,第一图像为两个摄像头中第一摄像头拍摄的图像,第二图像为两个摄像头中第二摄像头拍摄的图像。

结合第二方面和前四种实施方式,在第五种实施方式中,位置计算模块具体用于:

根据非线性优化公式获得t和R,其中

l′i=K′-T[t]xRK-1Xi为Xi在第二图像中对应的核线,

li=-K-TR-1[t]xK′-1X′i为X′i在第一图像中对应的核线,

lia,lib分别为li向量的第一分量和第二分量,l′ia,l′ib分别为l′i向量的第一分量和第二分量,K为第一摄像头的内参矩阵,K′为第二摄像头的内参矩阵,[t]x为由t定义的反对称矩阵N表示每组双摄像头图像中特征点对(Xi,X′i)的个数。

结合第二方面和前五种实施方式,在第六种实施方式中,根据非线性优化公式获取t和R之前,位置计算模块还用于:根据RANSCA算法剔除第二组双摄像头图像中错误的特征点对(Xi,X′i)。

结合第二方面和前六种实施方式,在第七种实施方式中,根据第二组双摄像头图像中的特征点对(Xi,X′i)获得两个摄像头之间的相对平移距离t和两个摄像头之间的相对旋转矩阵R之后,位置计算模块还用于:根据相对平移距离t和相对旋转矩阵R获取第二组双摄像头图像中每一个特征点的第一距离,其中,第一距离为每一个特征点到与该特征点对应的核线的距离,当每一个特征点为特征点对(Xi,X′i)中的特征点Xi时,特征点Xi在第二图像中对应的核线为l′i=K′-T[t]xK-1Xi,当每一个特征点为特征点对(Xi,X′i)中的特征点X′i时,特征点X′i在第一图像中对应的核线为li=-K-TR-1[t]xK′-1X′i,[t]x为由t定义的反对称矩阵

根据每一个特征点的第一距离获得第二距离,第二距离为所有特征点的第一距离的平均值;

根据第一距离与第二距离的平均值的差小于或等于设定方差阈值的特征点,重新获取相对平移距离t和相对旋转矩阵R;

重复上述过程,直至第二组双摄像头图像中每一个特征点的第一距离与第二距离的差均小于设定方差阈值。

结合第二方面和前七种实施方式,在第八种实施方式中,优化模块具体用于:

获得第二组双摄像头图像中所有特征点的第一距离的平均误差Q组双摄像头图像中的每组双摄像头图像为第二组双摄像头图像,第一距离为每一个特征点到与该特征点对应的核线的距离,当每一特征点为特征点对(Xi,X′i)中的特征点Xi时,特征点Xi在第二图像中对应的核线为l′i=K′-T[t]xRK-1Xi,当每一特征点为特征点对(Xi,X′i)中的特征点X′i时,特征点X′i在第一图像中对应的核线为li=-K-TR-1[t]xK′-1X′i,i为正整数,i≤N,Xi表示第二组双摄像头图像中的第一图像的特征点(xi,yi),X′i表示第二组双摄像头图像中的第二图像的特征点(x′i,y′i),N表示第二组双摄像头图像中特征点对(X′i,X′i)的个数,[t]x为由t定义的反对称矩阵第一图像为两个摄像头中第一摄像头拍摄的图像,所述第二图像为所述两个摄像头中第二摄像头拍摄的图像;

将平均误差最小的双摄像头图像的双摄像头相对位置参数作为最优双摄像头相对位置参数。

结合第二方面和前八种实施方式,在第九种实施方式中,优化模块具体用于:

根据获得第二组双摄像头图像中特征点的第一距离的平均误差其中

Xi表示第二组双摄像头图像中的第一图像的特征点(xi,yi),X′i表示第二组双摄像头图像中的第二图像的特征点(x′i,y′i),

l′i=K′-T[t]xK-1Xi为Xi在第二图像中对应的核线,

li=-K-TR-1[t]xK′-1X′i为X′i在第一图像中对应的核线,

lia,lib分别为li向量的第一分量和第二分量,l′ia,l′ib分别为l′i向量的第一分量和第二分量,K为第一摄像头的内参矩阵,K′为第二摄像头的内参矩阵,[t]x为由t定义的反对称矩阵

i为正整数,i≤N,N表示第二组双摄像头图像中特征点对(Xi,X′i)的个数。

结合第二方面和前九种实施方式,在第十种实施方式中,采集模块还用于:当可用于位置计算的双摄像头图像的数量小于或等于规定阈值时,重新获取M组双摄像头图像。

结合第二方面和前十种实施方式,在第十一种实施方式中,在获取最优相对位置参数之后,优化模块还用于:

根据最优双摄像头相对位置参数获得参考图像中所有特征点的第一距离的参考平均误差其中第一距离为每一个特征点到与该特征点对应的核线的距离,Xi表示第二组双摄像头图像中的第一图像的特征点(xi,yi),X′i表示第二组双摄像头图像中的第二图像的特征点(x′i,y′i),Q组双摄像头图像中的每组双摄像头图像为第二组双摄像头图像,当每一特征点为特征点对(Xi,X′i)中的特征点Xi时,特征点Xi在第二图像中对应的核线为l′i=K′-T[t]xRK-1Xi,当每一特征点为特征点对(Xi,X′i)中的特征点X′i时,特征点X′i在第一图像中对应的核线为li=-K-TR-1[t]xK′-1X′i,i为正整数,i≤N,N表示第二组双摄像头图像中特征点对(Xi,X′i)的个数,[t]x为由t定义的反对称矩阵第一图像为两个摄像头中第一摄像头拍摄的图像,第二图像为两个摄像头中第二摄 像头拍摄的图像,参考图像为双摄像头所拍摄的在获取的M组双摄像头图像之外的图像;

若参考平均误差大于或等于所述预定误差阈值,重新执行双摄像头位置计算方法。

第三方面,本发明提供一种电子设备,包括:

双摄像头,双摄像头用于以两个摄像头对同一场景分别同时拍摄两幅图像;一个或多个处理器;存储器;以及一个或多个程序,其中一个或多个程序被存储在存储器中并被配置为被一个或多个处理器执行,一个或多个程序包括用于执行根据上述的双摄像头相对位置计算方法的指令。

第四方面,本发明提供一种存储一个或多个程序的计算机可读存储介质,一个或多个程序包括指令,指令当被包括双摄像头和多个应用程序的电子设备执行时使电子设备执行根据上述的双摄像头相对位置计算方法,其中,双摄像头用于以两个摄像头对同一场景分别同时拍摄两幅图像。

本发明提供的双摄像头位置计算方法、装置、设备和存储介质,先获取M组双摄像头图像,其中M组中的每组双摄像头图像包括由双摄像头分别同时对同一场景拍摄的两幅图像,再对该M组双摄像头图像进行筛选,得到Q组可用于计算双摄像头相对位置的双摄像头图像,然后根据Q组中的每组双摄像头图像获取Q组中的每组双摄像头图像所对应的双摄像头相对位置参数,最后从N组双摄像头相对位置参数中获取最优双摄像头相对位置参数。这样可以在拍摄场景较难分辨的情况下,实现双摄像头相对位置的计算。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例一提供的双摄像头位置计算方法的流程示意图;

图2是本发明实施例二提供的双摄像头位置计算方法的流程示意图;

图3是本发明实施例二提供的对双摄像头图像进行筛选的流程示意图;

图4是本发明实施例二提供的获得双摄像头图像所对应的双摄像头相对位置参数的流程示意图;

图5是本发明实施例二提供的对最优双摄像头相对位置参数进行验算的流程示意图;

图6是本发明实施例三提供的双摄像头位置计算装置的结构示意图;

图7是本发明实施例四提供的电子装置的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

图1是本发明实施例一提供的双摄像头位置计算方法的流程示意图。如图1所示,本实施例提供的双摄像头位置计算方法包括:

S101、获取M组双摄像头图像,其中M组中的每组双摄像头图像包括由双摄像头分别同时对同一场景拍摄的两幅图像。

具体的,双摄像头在拍摄图像时,双摄像头所包含的两个摄像头之间一般可以为左右设置等设置方式,两个摄像头之间间隔一定距离,并可能存在一定的角度位移。利用双摄像头进行拍摄时,首先获取M组双摄像头图像,其中,M为正整数,M的取值可以预先进行配置。每一组双摄像头图像都包括由这两个摄像头在同一时间对同一场景各自所拍摄的图像。这两个摄像头各自拍摄的图像基本一致,只是摄像头的视角有所差异,可以定义第一图像为两个摄像头中第一摄像头所拍摄的图像,而第二图像为两个摄像头中第二摄像头所拍摄的图像。

S102、对M组双摄像头图像进行筛选,得到Q组可用于计算双摄像头相对位置的双摄像头图像。

因为拍摄到的双摄像头图像并不一定适合用来获取双摄像头的相对位置,所以获取了M组双摄像头图像之后,还需要针对这M组双摄像头图象进行筛选,以在其中获取Q组可用于计算双摄像头相对位置的双摄像头图像, 以进行后续的双摄像头位置计算过程,其中Q也为正整数,且Q≤M。

进一步的,当可用于位置计算的双摄像头图像的数量少于规定阈值时,还需要重新获取多组双摄像头图像,以重新进行计算。

具体的,对M组双摄像头图像进行筛选,以获得Q组可用于计算双摄像头相对位置的双摄像头图像,具体可以包括以下步骤:

对于M组双摄像头图像中的每一组图像:

1)获取第一组双摄像头图像所对应的单应性矩阵,其中M组双摄像头图像中的每组双摄像头图像为第一组双摄像头图像;

2)根据单应性矩阵确定第一组双摄像头图像中两幅图像之间的投影误差;

当投影误差大于或等于预定误差阈值时,确定该组双摄像头图像为满足可用于计算双摄像头相对位置的双摄像头图像。

其中,第一组双摄像头图像被定义为在这M组双摄像头图像中的每一组双摄像头图像。对于M组双摄像头图像中的每一组双摄像头图像,都可以采取上述同样的方式,以确定该组双摄像头图像是否可用于双摄像头的相对位置计算,并将可用于相对位置计算的所有双摄像头图形都加入Q组双摄像头图像中。

需要说明的是,当本发明实施例提及“第一”、“第二”等序数词时,除非根据上下文其确实表达顺序之意,应当理解为仅仅是起区分之用。

具体的,根据单应性矩阵确定每组双摄像头图像中两幅图像之间的投影误差可以包括:根据确定第一组双摄像头图像中两幅图像之间的投影误差e。

每组双摄像头图像中,都会存在特征点。特征点又可称为显著点或者关键点,用以表明图像中的显著特征。特征点有图像的极值点,线段的终点,曲线曲率最大的点或者水平或者竖直方向上属性最大的点等。因为每组双摄像头图像中有对应同一场景的两幅图像,所以双摄像头图像中一幅图像的特征点在另一幅图像中也存在有对应的特征点。如果以Yi表示双摄像头图像中第一图像的特征点坐标(xi,yi),而以Y′i表示双摄像头图像中第二图像对应的该 特征点的坐标(x′i,y′i),则Yi和Y′i之间存在有一特定的对应关系,该对应关系表征了这两幅图像的特征点的空间位置关系,且可用M组双摄像头图像中每一组图像的特征点对(Yi,Y′i)进行表示。双摄像头图像所对应的单应性矩阵H描述了该对应关系。

具体的,对于一组双摄像头图像,该组双摄像头图像的单应性矩阵H满足如下关系:

对上述方程进行求解,即可得到该组双摄像头图像所对应的单应性矩阵H。

求解出该组双摄像头图像所对应的单应性矩阵H后,再根据确定该组双摄像头图像中两幅图像之间的投影误差e。采用同样的方式,可以得到每组双摄像头图像中两幅图像之间的投影误差e。

其中,H表示第一组双摄像头图像所对应的单应性矩阵,Yi表示第一组双摄像头图像中第一图像的特征点(xi,yi),Y′i表示第一组双摄像头图像中第二图像的特征点(x′i,y′i),j为正整数,j≤N′,N′表示第一组双摄像头图像中特征点对(Yi,Y′i)的个数。

当投影误差e大于或等于预定误差阈值时,即可确定该组双摄像头图像为可用于位置计算的双摄像头图像。具体的,根据上述步骤获得各组双摄像头图像中两幅图像间的投影误差e后,即可将该投影误差e与预先设定的预定误差阈值进行比较,当投影误差e大于或等于预定误差阈值时,可确定该组图像为满足预设条件,可用于计算双摄像头相对位置的双摄像头图像,然后可用该组图像进行后续的双摄像头位置计算;当投影误差e小于预定误差阈值时,确定该组图像不满足预设条件,不能用于后续计算。对M组双摄像头图像中的每组双摄像头图像采用同样的方式筛选,可以得到Q组可用于双摄像头相对位置计算的双摄像头图像。

需要说明的是,在上述根据单应性矩阵计算两幅图像之间的投影误差e时,应保证始终以同一个摄像头为基准,计算另一个摄像头相对于该摄像头的投影误差,同时,预定误差阈值也会根据不同的基准摄像头而取不同值,例如可以始终以第一摄像头,如左侧摄像头为基准,计算第二摄像头,也就是右侧摄像头到左摄像头的投影误差,并将计算得到的投影误差与左侧摄像头为基准时的预设误差阈值进行比较,以筛选出可用于计算双摄像头相对位置的双摄像头图像。

S103、根据Q组中的每组双摄像头图像获取Q组中的每组双摄像头图像所对应的双摄像头相对位置参数。

获取了可用于双摄像头相对位置计算的Q组双摄像头图像后,即可根据每一组可用于计算双摄像头相对位置的双摄像头图像获得与该组双摄像头图像所对应的双摄像头相对位置参数。双摄像头所对应的双摄像头相对位置参数表征了双摄像头中两个摄像头之间的空间位置关系。具体的,双摄像头所对应的双摄像头相对位置参数包括双摄像头中两个摄像头之间的相对平移距离t和两个摄像头之间的相对旋转矩阵R,其中t=(tx,ty,tz)T,x、y和z分别为平面直角坐标系的三个正交坐标轴。双摄像头中两个摄像头之间的相对平移距离t表示了双摄像头中两个摄像头在空间直角坐标系中x轴、y轴和z轴三个不同坐标轴方向上的坐标差值,而相对旋转矩阵R则表示这两个摄像头在空间直角坐标系中分别相对于空间直角坐标系中x轴、y轴和z轴的旋转角度。根据每组可用于位置计算的双摄像头图像获得双摄像头图像所对应的双摄像头相对位置参数,具体包括:

根据第二组双摄像头图像中的特征点对(Xi,X′i)获得两个摄像头之间的相对平移距离t和两个摄像头之间的相对旋转矩阵R,其中Q组双摄像头图像中的每组双摄像头图像为第二组双摄像头图像。

为了与前面的M组双摄像头图像中的每组双摄像头图像进行区分,在这Q组中的每组双摄像头图像的特征点对(Xi,X′i)中,利用Xi表示Q组中每组双摄像头图像中第一图像的特征点(xi,yi),而X′i表示Q组中每组双摄像头图像中第二图像的特征点(x′i,y′i)。双摄像头图像中的特征点对(Xi,X′i)表示了Xi和X′i之间存在的特定的对应关系。利用特征点对(Xi,X′i)即可求出两个摄像头之间 的相对平移距离t和两个摄像头之间的相对旋转矩阵R。

需要说明的是,上述Xi、X′i与Yi和Y′i仅为区分该特征点所在的图像是位于M组双摄像头图像中还是Q组双摄像头图像中而设,而Xi、X′i所代表的物理意义与前面M组中每组双摄像头图像的特征点Yi和Y′i并无实际区别。

具体的,根据第二组双摄像头图像中的特征点对(Xi,X′i)获得两个摄像头之间的相对平移距离t和两个摄像头之间的相对旋转矩阵R这一步骤可以包括:

根据非线性公式获取t和R。

具体的,非线性公式为其中

l′i=K′-T[t]xRK-1Xi为Xi在第二图像中对应的核线,

li=-K-TR-1[t]xK′-1X′i为X′i在第一图像中对应的核线,

lia,lib分别为li向量的第一分量和第二分量,l′ia,l′ib分别为l′i向量的第一分量和第二分量,K为第一摄像头的内参矩阵,K′为第二摄像头的内参矩阵,[t]x为由t定义的反对称矩阵i为正整数,i≤N,N表示每组双摄像头图像中特征点对(Xi,X′i)的个数。

此处,li向量的第一分量lia和第二分量lib是li向量进行分解所得到的,例如lia和lib分别可以是li向量进行正交分解后,在两个相互正交的方向上所产生的分量,同理,l′i向量的第一分量l′ia和第二分量l′ib也可以是将l′i向量进行正交分解后,所产生的正交方向上的两个分量。

可选的,在获取t和R之前,还可以根据随机抽样一致算法剔除错误的双摄像头图像中的特征点对(Xi,X′i),具体为利用已知的随机抽样一致(Random Sample Consensus,简称RANSAC)算法查找出错误的特征点对(Xi,X′i),在后续计算中,不适用这些错误的特征点对。在利用RANSAC算法时,首先从部分特征点对(Xi,X′i)中得到预估的结果,例如是和正确的匹配点吻合的基本矩阵 fundamental matrix或者本质矩阵essential matrix,再利用全部特征点对(Xi,X′i)对该预估结果进行测试,假设所有的特征点对中包含局内点和局外点,其中局内点近似的符合预估结果所在的直线,而局外点远离于预估结果直线。此时即可不断进行迭代,以求出更好的预估结果,而不符合预估结果的特征点对则被舍弃。

获得相对平移距离t和相对旋转矩阵R之后,还需要利用获取的相对平移距离t和相对旋转矩阵R对特征点进行验算,以获取更准确的t和R。具体的,验算过程可包括如下步骤:

1)根据相对平移距离t和相对旋转矩阵R获取第二组双摄像头图像中每一个特征点的第一距离,其中,第一距离为每一个特征点到与该特征点对应的核线的距离,当每一个特征点为特征点对(Xi,X′i)中的特征点Xi时,第一图像中的特征点Xi在第二图像中对应的核线为l′i=K′-T[t]xRK-1Xi,而当每一个特征点为特征点对(Xi,X′i)中的特征点X′i时,第二图像中特征点X′i在第一图像中对应的核线为li=-K-TR-1[t]xK′-1X′i

2)根据每一个特征点的第一距离获得第二距离,第二距离为所有特征点的第一距离的平均值。

3)根据第一距离和第二距离的差小于或等于设定方差阈值的特征点,重新获取相对平移距离t和相对旋转矩阵R。

当特征点到该特征点对应核线的第一距离与第二距离的差大于设定方差阈值时,说明该特征点与其余特征点的差别较大,此时应舍弃该特征点,并利用其余特征点重新获取两个摄像头之间的相对平移距离t和相对旋转矩阵R。

然后,重复执行上述步骤,并对计算结果进行验证,直至第二组双摄像头图像中每一个特征点的第一距离与第二距离之间的差均小于设定方差阈值。

S104、在Q组双摄像头相对位置参数中获取最优双摄像头相对位置参数。

获取最优双摄像头相对位置参数具体包括:

1)获得第二组双摄像头图像中所有特征点的第一距离的平均误差其中Q组双摄像头图像中的每组双摄像头图像为第二组双摄像头图像。

具体的,第一图像中的特征点Xi在第二图像中对应的核线为 l′i=K′-T[t]xRK-1Xi,第二图像中的特征点X′i在第一图像中对应的核线为li=-K-TR-1[t]xK′-1X′i

进一步的,可以根据获得第二组双摄像头图像中所有特征点的第一距离的平均误差其中Xi表示第二组双摄像头图像中第一图像的特征点(xi,yi),X′i表示第二组双摄像头图像中第二图像的特征点(x′i,y′i),

l′i=K′-T[t]xRK-1Xi为Xi在第二图像中对应的核线,

li=-K-TR-1[t]xK′-1X′i为X′i在第一图像中对应的核线,

lia,lib分别为li向量的第一分量和第二分量,l′ia,l′ib分别为l′i向量的第一分量和第二分量,K为第一摄像头的内参矩阵,K′为第二摄像头的内参矩阵,[t]x为由t定义的反对称矩阵

N表示第二组双摄像头图像中特征点对(Xi,X′i)的个数。

2)将平均误差最小的双摄像头相对位置参数作为最优双摄像头相对位置参数。

经过上述各步骤之后,即可获取最优的双摄像头位置参数。该最优的双摄像头位置参数表示了双摄像头中一个摄像头与另外一个摄像头之间的相对位置关系。

进一步的,在获取最优双摄像头相对位置参数之后,还包括:

根据最优双摄像头相对位置参数获得参考图像中所有特征点的第一距离的参考平均误差其中,第一距离为每一个特征点到与该特征点对应的核线的距离,当每一特征点为特征点对(Xi,X′i)中的特征点Xi时,特征点Xi在第二图像中对应的核线为l′i=K′-T[t]xRK-1Xi,当每一特征点为特征点对(Xi,X′i)中的特征点X′i时,特征点X′i在第一图像中对应的核线为li=-K-TR-1[t]xK′-1X′i,参 考图像为双摄像头拍摄的M组双摄像头图像之外的图像;

若参考平均误差大于或等于所述预定误差阈值,重新执行双摄像头位置计算方法。

本实施例中,首先获取M组双摄像头图像,其中M组中的每组双摄像头图像包括由该双摄像头分别同时对同一场景拍摄的两幅图像,再对M组双摄像头图像进行筛选,获得Q组可用于计算双摄像头相对位置的双摄像头图像,其中M、Q都为正整数,且Q≤M;然后根据Q组中的每组双摄像头图像获得Q组中每组双摄像头图像所对应的双摄像头相对位置参数,最后在Q组双摄像头相对位置参数中获取最优双摄像头相对位置参数。这样可以在拍摄场景较难分辨的情况下,实现双摄像头相对位置的计算。

图2是本发明实施例二提供的双摄像头位置计算方法的流程示意图。本实施例在上述实施例的基础上,详细提供了对双摄像头进行位置计算的方法流程的具体步骤。如图2所示,本实施例提供的双摄像头位置计算方法包括:

S201、获取M组双摄像头图像,其中M组中的每组双摄像头图像包括由双摄像头分别同时对同一场景拍摄的两幅图像。

在利用双摄像头进行摄像时,对于同一场景,两个摄像头可以同时分别拍摄以得到两幅图像。这两幅图像所拍摄的场景范围与内容均大致相同,只是视角有一定偏差。

一般的,可以利用预定程序对获取的双摄像头图像的组数进行设定。例如是可以设置使双摄像头抓取M组图像,M的值可以在配置文件中进行设定。获取M组图像之后,该M组图像在后续步骤中进行筛选计算。

S202、对M组双摄像头图像进行筛选,得到Q组可用于计算双摄像头相对位置的双摄像头图像。

因为拍摄到的双摄像头图像并不一定适合用来计算双摄像头的相对位置,所以获取了多组双摄像头图像之后,还需要针对每一组双摄像头进行筛选,以获取多组满足预设条件,从而可用于计算双摄像头相对位置的双摄像头图像,以进行后续的双摄像头位置计算过程。例如,下面几种情况均不适于进行后续的双摄像头位置计算:

1)被摄场景或物体离双摄像头太远;

2)被摄场景或者场景的主要部分是平面或者接近平面;

3)被摄场景没有纹理丰富的物体。

上述情形中,双摄像头中两个摄像头所拍摄到的场景或物体存在较为相似、反差度较低等状况,即两个摄像头所拍摄出来的物体难以进行区分或者分辨,因而需要借助投影误差等可以表征两个图像相似度的参数,将区分度过低,无法实现位置计算的图像筛选出来,从而过滤上述不能用于计算的场景或物体。

图3是本发明实施例二提供的对每组双摄像头图像进行筛选的流程示意图。如图3所示,该步骤还可以具体包括:

S301、获取第一组双摄像头图像所对应的单应性矩阵,其中,M组双摄像头图像中的每组双摄像头图像为第一组双摄像头图像。

因为单应性矩阵H满足如下关系:

其中,

将上述关系式展开后,可得

x′1(H31x1+H32y1+H33)=H11x1+H12y1+H13

y′1(H31x1+H32y1+H33)=H21x1+H22y1+H23

整理后可得到:

Bh=0

其中

h=(H11,H12,H13,H21,H22,H23,H31,H32,H33)T

bx=(-x1,-y1-1,0,0,0,x′1x1,x′1y1,x′2)T

by=(0,0,0,-x1,-y1,-1,y′1x1,y′1y1,y′1)T

N′表示第一组双摄像头图像中特征点对(Yi,Y′i)的个数。

获得特征点对之后,即可以根据最小二乘法或者梯度下降法解出h,并进而得到相关性矩阵H。

S302、根据单应性矩阵确定每组双摄像头图像中两幅图像之间的投影误差。

具体可以根据公式确定投影误差e,其中,H表示每组双摄像头图像所对应的单应性矩阵,Yi表示双摄像头图像中第一图像的特征点(xi,yi),Y′i表示双摄像头图像中第二图像的特征点(x′i,y′i),j为正整数,j≤N′,N′表示每组双摄像头图像中特征点对(Yi,Y′i)的个数,其中第一图像为两个摄像头中第一摄像头拍摄的图像,第二图像为两个摄像头中第二摄像头拍摄的图像。

S303、当投影误差大于或等于预定误差阈值时,确定第一组双摄像头图像为可用于计算双摄像头相对位置的双摄像头图像。

根据上述步骤获得第一组双摄像头图像中两幅图像间的投影误差e后,即可将该投影误差e与预先设定的预定误差阈值进行比较,当投影误差e大于或等于预定误差阈值时,可确定该第一组图像为可用于计算双摄像头相对位置的双摄像头图像,然后可用该第一组图像进行后续的双摄像头位置计算;当投影误差e小于预定误差阈值时,确定该第一组图像不满足预设条件,不能用于后续双摄像头相对位置计算。

进一步的,当可用于计算双摄像头相对位置的双摄像头图像的数量小于或等于规定阈值时,为了防止因样本过少而导致后续计算出现问题,还需要重新获取M组双摄像头图像,以重新进行计算。例如如果可用于位置计算的图像的组数为Q,而规定阈值为L,当Q≤L时,说明获得的Q组图像中,合理的图像太少,需要重新再抓取M组图像。

S203、根据Q组中的每组双摄像头图像获取Q组中的每组双摄像头图像所对应的双摄像头相对位置参数。

获取了可用于计算双摄像头相对位置参数的Q组中的每组双摄像头图像后,即可根据每一组可用于位置计算的双摄像头图像获得双摄像头图像所对应的双摄像头相对位置参数。图4是本发明实施例二提供的获得双摄像头图像所对应的相对位置参数的流程示意图。如图4所示,根据Q组中每组双摄像头图像获得双摄像头图像所对应的双摄像头相对位置参数,具体包括:

S401、根据第二组双摄像头图像中的特征点对获得两个摄像头之间的相对平移距离t和两个摄像头之间的相对旋转矩阵R,其中Q组双摄像头图像中的每组双摄像头图像为第二组双摄像头图像。

具体的,第二组双摄像头图像中的特征点对为(Xi,X′i),Xi表示第二组双摄像头图像中第一图像的特征点(xi,yi),X′i表示第二组双摄像头图像中第二图像的特征点(x′i,y′i),t=(tx,ty,tz)T

具体的,双摄像头图像中的特征点对(Xi,X′i)满足下列关系:

并且存在已知关系:

F=K′-T[t]xRK-1

其中,K为第一摄像头的内参矩阵,K′为第二摄像头的内参矩阵,[t]x为由t定义的反对称矩阵

因而,可以由两个摄像头的内参矩阵K,K′以及特征点对(Xi,X′i)对两个摄像头之间的相对平移距离t和两个摄像头之间的相对旋转矩阵R进行求解。

具体的,该步骤可以包括:

1)根据随机抽样一致算法剔除错误的双摄像头图像中的特征点对(Xi,X′i);

该步骤为可选步骤,其具体过程为利用已知的随机抽样一致算法查找出错误的特征点对(Xi,X′i)并删除,以确保进行后续计算。

2)根据获得t和R,其中

l′i=K′-T[t]xRK-1Xi为Xi在第二图像中对应的核线,

li=-K-TR-1[t]xK′-1X′i为X′i在第一图像中对应的核线,

lia,lib分别为li向量的第一分量和第二分量,l′ia,l′ib分别为l′i向量的第一分量和第二分量,K为第一摄像头的内参矩阵,K′为第二摄像头的内参矩阵,[t]x为由t定义的反对称矩阵N表示每一组双摄像头图像中特征点对(Xi,X′i)的个数。

具体的,上述公式中,li向量的第一分量lia和第二分量lib分别可以是li向量进行分解后的不同方向上的分量,例如进行正交分解后,在两个相互正交的方向上所产生的分量,同理,l′i向量的第一分量l′ia和第二分量l′ib也可以是将l′i向量进行正交分解后,所产生的正交方向上的两个分量。

上述方程的求解,可以采用非线性最小二乘法进行求解,例如列文伯格-马夸尔特(Levenberg-Marquardt)算法等。

S402、根据相对平移距离t和相对旋转矩阵R获得第二组双摄像头图像中每一个特征点的第一距离,其中第一距离为每一个特征点到与该特征点对应的核线的距离;

具体的,当每一个特征点为特征点对(Xi,X′i)中的特征点Xi时,特征点Xi在第二图像中对应的核线为l′i=K′-T[t]xRK-1Xi;当每一个特征点为特征点对(Xi,X′i)中的特征点X′i时,特征点X′i在第一图像中对应的核线为li=-K-TR-1[t]xK′-1X′i

S403、根据每一个特征点的第一距离获得第二距离,第二距离为所有特征点的第一距离的平均值。

其中,特征点Xi对应的核线为l′i=K′-T[t]xRK-1Xi,特征点X′i对应的核线为li=-K-TR-1[t]xK′-1X′i

S404、根据第一距离和第二距离的差小于或等于设定方差阈值的特征点,重新获取相对平移距离t和相对旋转矩阵R。

当特征点的第一距离与第二距离的差大于设定方差阈值,例如是距离平 均值的三倍方差时,说明该特征点与其余特征点的差别较大,此时应舍弃该特征点,并利用第一距离与第二距离的差小于或等于设定方差阈值的其余特征点,重新获取两个摄像头之间的相对平移距离t和相对旋转矩阵R。

S405、重复上述过程,直至第二组双摄像头图像中的每一个特征点的第一距离与第二距离的差均小于设定方差阈值。

该步骤中,重复S401至S404步骤,并对计算结果进行验证,直至第二组双摄像头图像中每一个特征点到特征点对应核线的第一距离与第二距离之间的差均小于设定方差阈值,此时说明双摄像头图像中每一个特征点到特征点对应核线的距离均接近一致。

S204、在Q组双摄像头图像所对应的相对位置参数中获取最优相对位置参数。

获取最优相对位置参数具体包括:

1)根据获取第二组双摄像头图像中特征点的第一距离的平均误差

其中Xi表示第二组双摄像头图像中第一图像的特征点(xi,yi),X′i表示第二组双摄像头图像中第二图像的特征点(x′i,y′i),

l′i=K′-T[t]xRK-1Xi为Xi在第二图像中对应的核线,

li=-K-TR-1[t]xK′-1X′i为X′i在第一图像中对应的核线,

lia,lib分别为li向量的第一分量和第二分量,l′ia,l′ib分别为l′i向量的第一分量和第二分量,K为第一摄像头的内参矩阵,K′为第二摄像头的内参矩阵,[t]x为由t定义的反对称矩阵

N表示第二组双摄像头图像中特征点对(Xi,X′i)的个数。

2)将平均误差最小的双摄像头图像的双摄像头相对位置参数作为最优双摄像头相对位置参数。

经过上述各步骤之后,即可获取最优的双摄像头位置参数。

在获取了双摄像头图像的最优双摄像头相对位置参数之后,为了确保该最优的双摄像头相对位置参数有效,需要进行验算过程。图5是本发明实施例二提供的对最优双摄像头相对位置参数进行验算的流程示意图。如图5所示,对双摄像头的最优相对位置参数进行验算可以包括以下步骤:

S501、根据最优双摄像头相对位置参数获取参考图像中所有特征点的第一距离的参考平均误差,其中参考图像为双摄像头所拍摄的在M组双摄像头图像之外的图像;

S502、若参考平均误差大于或等于所述预定误差阈值,重新执行双摄像头位置计算方法。

得到最优双摄像头相对位置参数后,即可重新采集一组双摄像头图像,该组双摄像头图像并不属于上述M组双摄像头图像之一,并根据该最优相对位置参数获得该重新采集的独立双摄像头图像中的特征点的第一距离的独立平均误差如果大于预定的误差阈值,则说明该最优相对位置参数并不能适用于其他图像,需要重新执行双摄像头位置计算方法,以得到新的最优双摄像头相对位置参数。经过上述验算步骤后,即可得到最终的最优双摄像头相对位置参数。

本实施例中,以具体的对双摄像头进行位置计算过程为例,详细说明了双摄像头位置计算方法的具体流程。该双摄像头位置计算方法具体包括:首先获取M组双摄像头图像,其中M组中的每组双摄像头图像包括由该双摄像头分别同时对同一场景拍摄的两幅图像,再对M组双摄像头图像进行筛选,获取Q组可用于计算双摄像头相对位置的双摄像头图像,其中Q≤M,然后根据Q组中的每组双摄像头图像获取双摄像头图像所对应的双摄像头相对位置参数,最后在所有双摄像头图像所对应的双摄像头相对位置参数中获取最优双摄像头相对位置参数。这样采用本实施例的详细方法流程,可以在拍摄场景较难分辨的情况下,实现双摄像头相对位置的计算。

图6是本发明实施例三提供的双摄像头相对位置计算装置的结构示意图。本实施例所提供的双摄像头相对位置计算装置可以执行前述实施例一和二所述的方法流程。如图6所示,本实施例提供的双摄像头位置计算装置61包括:

采集模块601,用于获取M组双摄像头图像,其中M组中的每组双摄像头图像包括由双摄像头分别同时对同一场景拍摄的两幅图像,M为正整数;

筛选模块602,用于对该M组双摄像头图像进行筛选,得到Q组可用于位置计算双摄像头相对位置的双摄像头图像,其中Q为正整数,Q≤M;

位置计算模块603,用于根据Q组中的每组双摄像头图像获取Q组中的每组双摄像头图像所对应的双摄像头相对位置参数;

优化模块604,用于从Q组双摄像头相对位置参数中获取最优双摄像头相对位置参数。

具体的,相对位置参数包括两个摄像头之间的相对平移距离t和两个摄像头之间的相对旋转矩阵R,其中,t=(tx,ty,tz)T,x、y和z分别为平面直角坐标系的三个正交坐标轴。

具体的,筛选模块602具体可以用于:

获取第一组双摄像头图像所对应的单应性矩阵,其中,M组双摄像头图像中的每组双摄像头图像为第一组双摄像头图像;

根据单应性矩阵确定第一组双摄像头图像中两幅图像之间的投影误差;

当投影误差大于或等于预定误差阈值时,确定第一组双摄像头图像为可用于计算双摄像头相对位置的双摄像头图像。

进一步的,筛选模块602可以用于:根据确定第一组双摄像头图像中两幅图像之间的投影误差e,其中,H表示第一组双摄像头图像所对应的单应性矩阵,Yi表示第一组双摄像头图像中的第一图像的特征点(xi,yi),Y′i表示第一组双摄像头图像中第二图像的特征点(x′i,y′i),第一图像为两个摄像头中第一摄像头拍摄的图像,第二图像为两个摄像头中第二摄像头拍摄的图像,j为正整数,j≤N′,N′表示第一组双摄像头图像中特征点对(Yi,Y′i)的个数。

具体的,位置计算模块603具体可以用于:

根据第二组双摄像头图像中的特征点对(Xi,X′i)获得两个摄像头之间的相对平移距离t和两个摄像头之间的相对旋转矩阵R,其中Q组双摄像头图像 中的每组双摄像头图像为第二组双摄像头图像,Xi表示第二组双摄像头图像中第一图像中的特征点(xi,yi),X′i表示第二组双摄像头图像中第二图像的特征点(x′i,y′i),i为正整数,i≤N,N表示第二组双摄像头图像中特征点对(Xi,X′i)的个数。

进一步的,位置计算模块603具体可以用于:

根据非线性优化公式获得t和R,其中

l′i=K′-T[t]xRK-1Xi为Xi在第二图像中对应的核线,

li=-K-TR-1[t]xK′-1X′i为X′i在第一图像中对应的核线,

lia,lib分别为li向量的第一分量和第二分量,l′ia,l′ib分别为l′i向量的第一分量和第二分量,K为第一摄像头的内参矩阵,K′为第二摄像头的内参矩阵,[t]x为由t定义的反对称矩阵N表示双摄像头图像中特征点对(Xi,X′i)的个数。

进一步的,在根据上述非线性优化公式获取t和R之前,位置计算模块603还用于:根据RANSCA算法剔除第二组双摄像头图像中错误的特征点对(Xi,X′i)。

在根据第二组双摄像头图像中的特征点对(Xi,X′i)获得两个摄像头之间的相对平移距离t和两个摄像头之间的相对旋转矩阵R之后,位置计算模块603还用于:

根据相对平移距离t和相对旋转矩阵R获取第二组双摄像头图像中每一个特征点的第一距离,其中,第一距离为每一个特征点到与该特征点对应的核线的距离,当每一个特征点为特征点对(Xi,X′i)中的特征点Xi时,特征点Xi在第二图像中对应的核线为l′i=K′-T[t]xRK-1Xi,当每一个特征点为特征点对(Xi,X′i)中的特征点X′i时,特征点X′i在第一图像中对应的核线为li=-K-TR-1[t]xK′-1X′i

根据每一个特征点的第一距离获得第二距离,第二距离为所有特征点的第一距离的平均值;

根据第一距离和第二距离的差小于或等于设定方差阈值的特征点,重新获取相对平移距离t和相对旋转矩阵R;

重复上述过程,直至第二组双摄像头图像中每一个特征点的第一距离与第二距离的平均值的差均小于设定方差阈值。

具体的,优化模块604具体用于:

获得第二组双摄像头图像中所有特征点到核线距离的平均误差

其中第一距离为每一个特征点到与该特征点对应的核线的距离,Q组双摄像头图像中的每组双摄像头图像为第二组双摄像头图像,第一距离为每一个特征点到与该特征点对应的核线的距离,当每一特征点为特征点对(Xi,X′i)中的特征点Xi时,特征点Xi在第二图像中对应的核线为l′i=K′-T[t]xRK-1Xi,当每一特征点为特征点对(Xi,X′i)中的特征点X′i时,特征点X′i在第一图像中对应的核线为li=-K-TR-1[t]xK′-1X′i,i为正整数,i≤N,N表示第二组双摄像头图像中特征点对(Xi,X′i)的个数。

将平均误差最小的双摄像头图像的双摄像头相对位置参数作为最优双摄像头相对位置参数。

进一步的,优化模块604用于根据获得第二组双摄像头图像中特征点的第一距离的平均误差其中

Xi表示第二组双摄像头图像中第一图像的特征点(xi,yi),X′i表示第二组双摄像头图像中第二图像的特征点(x′i,y′i),

l′i=K′-T[t]xK-1Xi为Xi在第二图像中对应的核线,

li=-K-TR-1[t]xK′-1X′i为X′i在第一图像中对应的核线,

lia,lib分别为li向量的第一分量和第二分量,l′ia,l′ib分别为l′i向量的第一分量和第二分量,K为第一摄像头的内参矩阵,K′为第二摄像头的内参矩阵, [t]x为由t定义的反对称矩阵

i为正整数,i≤N,N表示第二组双摄像头图像中特征点对(Xi,X′i)的个数。

具体的,采集模块601还用于:当可用于位置计算的双摄像头图像的数量小于或等于规定阈值时,重新获取M组双摄像头图像。

具体的,在获取最优相对位置参数之后,优化模块604还用于:

根据最优双摄像头相对位置参数获得参考图像中所有特征点的第一距离的参考平均误差其中参考图像为双摄像头所拍摄的在获取的M组双摄像头图像之外的图像;

若参考平均误差大于或等于预定误差阈值,重新执行双摄像头位置计算方法。

本实施例中,双摄像头相对位置计算装置中的采集模块用于获取多M组双摄像头图像,其中M组中的每组双摄像头图像包括由双摄像头分别同时对同一场景拍摄的两幅图像;筛选模块用于对M组双摄像头图像进行筛选,得到Q组可用于计算双摄像头相对位置的双摄像头图像;位置计算模块用于根据Q组中的每组可用于位置计算的双摄像头图像获取Q组中的每组双摄像头图像所对应的双摄像头相对位置参数;优化模块用于在所有双摄像头相对位置参数中获取最优双摄像头相对位置参数。这样该双摄像头相对位置计算装置可以在拍摄场景较难分辨的情况下,实现双摄像头相对位置的计算

图7是本发明实施例四提供的电子设备的结构示意图。本实施例所提供的电子设备可以执行前述实施例一和二所述的方法流程。如图7所示,本实施例提供的电子设备71包括:

双摄像头701,该双摄像头用于以两个摄像头对同一场景分别同时拍摄两幅图像;

一个或多个处理器702;

存储器703;

以及一个或多个程序,其中一个或多个程序被存储在存储器703中并被配置为被一个或多个处理器702执行,这一个或多个程序包括用于执行根据前述实施例所述的双摄像头相对位置计算方法的指令。

具体的,该双摄像头相对位置计算方法的指令包括:

获取M组双摄像头图像,其中M组中的每组双摄像头图像包括由双摄像头分别同时对同一场景拍摄的两幅图像,其中M为正整数;

对M组双摄像头图像进行筛选,得到Q组可用于计算双摄像头相对位置的双摄像头图像,其中Q为正整数,且Q≤M;

根据Q组中的每组双摄像头图像获取Q组中的每组双摄像头图像所对应的双摄像头相对位置参数;

从Q组双摄像头相对位置参数中获取最优双摄像头相对位置参数。

具体的,相对位置参数包括两个摄像头之间的相对平移距离t和两个摄像头之间的相对旋转矩阵R,其中,t=(tx,ty,tz)T,x、y和z分别为平面直角坐标系的三个正交坐标轴。

具体的,对每组双摄像头图像进行筛选,以获得多组可用于相对位置计算的双摄像头图像具体包括:

获取第一组双摄像头图像所对应的单应性矩阵,其中,M组双摄像头图像中的每组双摄像头图像为第一组双摄像头图像;

根据单应性矩阵确定第一组双摄像头图像中两幅图像之间的投影误差;

当投影误差大于或等于预定误差阈值时,确定第一组双摄像头图像为可用于计算双摄像头相对位置的双摄像头图像。

进一步的,根据单应性矩阵确定每组双摄像头图像中两幅图像之间的投影误差具体包括:

根据确定第一组双摄像头图像中两幅图像之间的投影误差e,其中,H表示第一组双摄像头图像所对应的单应性矩阵,Yi表示第一组双摄像头图像中的第一图像的特征点(xi,yi),Y′i表示第一组双摄像头图像中第二图像的特征点(x′i,y′i),j为正整数,j≤N′,N′表示第一组双摄像头图像中特征点对(Yi,Y′i)的个数,第一图像为两个摄像头中第一摄像头拍摄的图像,第二图像为两个摄像头中第二摄像头拍摄的图像。

具体的,根据Q组中的每组双摄像头图像获取Q组中的每组双摄像头图像所对应的双摄像头相对位置参数具体包括:

根据第二组双摄像头图像中的特征点对(Xi,X′i)获得两个摄像头之间的相对平移距离t和两个摄像头之间的相对旋转矩阵R,其中Q组双摄像头图像中的每组双摄像头图像为第二组双摄像头图像,Xi表示第二组双摄像头图像中第一图像的特征点(xi,yi),X′i表示第二组双摄像头图像中第二图像的特征点(x′i,y′i),其中,i为正整数,i≤N,N表示第二组双摄像头图像中特征点对(Xi,X′i)的个数,第一图像为两个摄像头中第一摄像头拍摄的图像,第二图像为两个摄像头中第二摄像头拍摄的图像。

进一步的,根据Q组中每组双摄像头图像中的特征点对(Xi,X′i)获得两个摄像头之间的相对平移距离t和两个摄像头之间的相对旋转矩阵R具体包括:根据非线性优化公式获取t和R,

其中

l′i=K′-T[t]xRK-1Xi为Xi在第二图像中对应的核线,

li=-K-TR-1[t]xK′-1X′i为X′i在第一图像中对应的核线,

lia,lib分别为li向量的第一分量和第二分量,l′ia,l′ib分别为l′i向量的第一分量和第二分量,K为第一摄像头的内参矩阵,K′为第二摄像头的内参矩阵,[t]x为由t定义的反对称矩阵

进一步的,在根据非线性优化公式获取t和R之前,还可以包括:

根据随机抽样一致RANSAC算法剔除第二组双摄像头图像中错误的特征点对(Xi,X′i)。

进一步的,在根据第二组双摄像头图像中的特征点对(Xi,X′i)获得两个摄像头之间的相对平移距离t和两个摄像头之间的相对旋转矩阵R之后,还包括:

根据相对平移距离t和相对旋转矩阵R获取第二组双摄像头图像中每一个特征点的第一距离,其中第一距离为每一个特征点到与该特征点对应的核线的距离,当每一个特征点为特征点对(Xi,X′i)中的特征点Xi时,特征点Xi在第二图像中对应的核线为l′i=K′-T[t]xRK-1Xi,当每一个特征点为特征点对(Xi,X′i)中的特征点X′i时,特征点X′i在第一图像中对应的核线为li=-K-TR-1[t]xK′-1X′i

根据每一个特征点的第一距离获得第二距离,第二距离为所有特征点的第一距离的平均值;

根据第一距离和第二距离的差小于或等于设定方差阈值的特征点,重新获取相对平移距离t和相对旋转矩阵R;

重复上述过程,直至第二组双摄像头图像中每一个特征点的第一距离与第二距离的平均值的差均小于设定方差阈值。

具体的,获取最优双摄像头相对位置参数具体包括:

获得第二组双摄像头图像中所有特征点的第一距离的平均误差其中Q组双摄像头图像中的每组双摄像头图像为第二组双摄像头图像,第一距离为每一个特征点到与该特征点对应的核线的距离,当每一特征点为特征点对(Xi,X′i)中的特征点Xi时,特征点Xi在第二图像中对应的核线为l′i=K′-T[t]xRK-1Xi,当每一特征点为特征点对(Xi,X′i)中的特征点X′i时,特征点X′i在第一图像中对应的核线为li=-K-TR-1[t]xK′-1X′i,i为正整数,i≤N,Xi表示第二组双摄像头图像中的第一图像的特征点(xi,yi),X′i表示第二组双摄像头图像中的第二图像的特征点(x′i,y′i),N表示第二组双摄像头图像中特征点对(Xi,X′i)的个数;

将平均误差最小的双摄像头图像的相对位置参数作为最优双摄像头相对位置参数。

进一步的,获得每个双摄像头图像中所有特征点的第一距离的平均误差具体包括:

根据获得第二组双摄像头图像中特征点的第一距离的平均误差其中

Xi表示第二组双摄像头图像中第一图像的特征点(xi,yi),X′i表示第二组双摄像头图像中第二图像的特征点(x′i,y′i),

l′i=K′-T[t]xRK-1Xi为Xi在第二图像中对应的核线,

li=-K-TR-1[t]xK′-1X′i为x′i在第一图像中对应的核线,

lia,lib分别为li向量的第一分量和第二分量,l′ia,l′ib分别为l′i向量的第一分量和第二分量,K为第一摄像头的内参矩阵,K′为第二摄像头的内参矩阵,[t]x为由t定义的反对称矩阵

i为正整数,i≤N,N表示第二组双摄像头图像中特征点对(Xi,X′i)的个数。

具体的,当可用于位置计算的双摄像头图像的数量小于或等于规定阈值时,应重新获取M组双摄像头图像。

具体的,在获取最优双摄像头相对位置参数之后,还包括:

根据最优双摄像头相对位置参数获得参考图像中所有特征点的第一距离的参考平均误差其中,第一距离为每一个特征点到与该特征点对应的核线的距离,特征点Xi在第二图像中对应的核线为l′i=K′-T[t]xRK-1Xi,特征点X′i在第一图像中对应的核线为li=-K-TR-1[t]xK′-1X′i,i为正整数,i≤N,N表示第二组双摄像头图像中特征点对(Xi,X′i)的个数,参考图像为双摄像头所拍摄的在获取的M组双摄像头图像之外的图像;

若参考平均误差大于或等于预定误差阈值,重新执行双摄像头位置计算方法。

本实施例中,电子设备71包括:双摄像头701,该双摄像头用于以两个摄像头对同一场景分别同时拍摄两幅图像;一个或多个处理器702;存储器703;以及一个或多个程序,其中一个或多个程序被存储在存储器703中并被配置为被一个或多个处理器702执行,这一个或多个程序包括用于执行根据前述实施例所述的双摄像头相对位置计算方法的指令。这样电子设备可以在拍摄场景较难分辨的情况下,实现双摄像头相对位置的计算。

另一方面,本发明还提供一种存储一个或多个程序的计算机可读存储介质,这一个或多个程序包括指令,指令当被包括双摄像头和多个应用程序的 电子设备执行时,使电子设备执行根据前面实施例中所述的双摄像头相对位置计算方法,其中,双摄像头用于以两个摄像头拍摄同一场景。

指令被电子设备执行时,电子设备执行的双摄像头相对位置计算方法包括:

获取M组双摄像头图像,其中M组中的每组双摄像头图像包括由双摄像头分别同时对同一场景拍摄的两幅图像,其中M为正整数;

对M组双摄像头图像进行筛选,得到Q组可用于计算双摄像头相对位置的双摄像头图像,其中Q为正整数,且Q≤M;

根据Q组中的每组双摄像头图像获取Q组中的每组双摄像头图像所对应的双摄像头相对位置参数;

从Q组双摄像头相对位置参数中获取最优双摄像头相对位置参数。

具体的,相对位置参数包括两个摄像头之间的相对平移距离t和两个摄像头之间的相对旋转矩阵R,其中,t=(tx,ty,tz)T,x、y和z分别为平面直角坐标系的三个正交坐标轴。

具体的,对每组双摄像头图像进行筛选,以获得多组可用于相对位置计算的双摄像头图像具体包括:

获取第一组双摄像头图像所对应的单应性矩阵,其中,M组双摄像头图像中的每组双摄像头图像为第一组双摄像头图像;

根据单应性矩阵确定第一组双摄像头图像中两幅图像之间的投影误差;

当投影误差大于或等于预定误差阈值时,确定第一组双摄像头图像为可用于计算双摄像头相对位置的双摄像头图像。

进一步的,根据单应性矩阵确定每组双摄像头图像中两幅图像之间的投影误差具体包括:

根据确定第一组双摄像头图像中两幅图像之间的投影误差e,其中,H表示第一组双摄像头图像所对应的单应性矩阵,Yi表示第一组双摄像头图像中的第一图像的特征点(xi,yi),Y′i表示第一组双摄像头图像中第二图像的特征点(x′i,y′i),j为正整数,j≤N′,N′表示第一组双摄像头图 像中特征点对(Yi,Y′i)的个数,第一图像为两个摄像头中第一摄像头拍摄的图像,第二图像为两个摄像头中第二摄像头拍摄的图像。

具体的,根据Q组中的每组双摄像头图像获取Q组中的每组双摄像头图像所对应的双摄像头相对位置参数具体包括:

根据第二组双摄像头图像中的特征点对(Xi,X′i)获得两个摄像头之间的相对平移距离t和两个摄像头之间的相对旋转矩阵R,其中Q组双摄像头图像中的每组双摄像头图像为第二组双摄像头图像,Xi表示第二组双摄像头图像中第一图像的特征点(xi,yi),X′i表示第二组双摄像头图像中第二图像的特征点(x′i,y′i),其中,i为正整数,i≤N,N表示第二组双摄像头图像中特征点对(Xi,X′i)的个数,第一图像为两个摄像头中第一摄像头拍摄的图像,第二图像为两个摄像头中第二摄像头拍摄的图像。

进一步的,根据Q组中每组双摄像头图像中的特征点对(Xi,X′i)获得两个摄像头之间的相对平移距离t和两个摄像头之间的相对旋转矩阵R具体包括:根据非线性优化公式获取t和R,

其中

l′i=K′-T[t]xRK-1Xi为Xi在第二图像中对应的核线,

li=-K-TR-1[t]xK′-1X′i为X′i在第一图像中对应的核线,

lia,lib分别为li向量的第一分量和第二分量,l′ia,l′ib分别为l′i向量的第一分量和第二分量,K为第一摄像头的内参矩阵,K′为第二摄像头的内参矩阵,[t]x为由t定义的反对称矩阵

进一步的,在根据非线性优化公式获取t和R之前,还可以包括:

根据随机抽样一致RANSAC算法剔除第二组双摄像头图像中错误的特征 点对(Xi,X′i)。

进一步的,在根据第二组双摄像头图像中的特征点对(Xi,X′i)获得两个摄像头之间的相对平移距离t和两个摄像头之间的相对旋转矩阵R之后,还包括:

根据相对平移距离t和相对旋转矩阵R获取第二组双摄像头图像中每一个特征点的第一距离,其中第一距离为每一个特征点到与该特征点对应的核线的距离,当每一个特征点为特征点对(Xi,X′i)中的特征点Xi时,特征点Xi在第二图像中对应的核线为l′i=K′-T[t]xRK-1Xi,当每一个特征点为特征点对(Xi,X′i)中的特征点X′i时,特征点X′i在第一图像中对应的核线为li=-K-TR-1[t]xK′-1X′i

根据每一个特征点的第一距离获得第二距离,第二距离为所有特征点的第一距离的平均值;

根据第一距离和第二距离的差小于或等于设定方差阈值的特征点,重新获取相对平移距离t和相对旋转矩阵R;

重复上述过程,直至第二组双摄像头图像中每一个特征点的第一距离与第二距离的平均值的差均小于设定方差阈值。

具体的,获取最优双摄像头相对位置参数具体包括:

获得第二组双摄像头图像中所有特征点的第一距离的平均误差其中Q组双摄像头图像中的每组双摄像头图像为第二组双摄像头图像,第一距离为每一个特征点到与该特征点对应的核线的距离,当每一特征点为特征点对(Xi,X′i)中的特征点Xi时,特征点Xi在第二图像中对应的核线为l′i=K′-T[t]xRK-1Xi,当每一特征点为特征点对(Xi,X′i)中的特征点X′i时,特征点X′i在第一图像中对应的核线为li=-K-TR-1[t]xK′-1X′i,i为正整数,i≤N,Xi表示第二组双摄像头图像中的第一图像的特征点(xi,yi),X′i表示第二组双摄像头图像中的第二图像的特征点(x′i,y′i),N表示第二组双摄像头图像中特征点对(Xi,X′i)的个数;

将平均误差最小的双摄像头图像的相对位置参数作为最优双摄像头相对位置参数。

进一步的,获得每个双摄像头图像中所有特征点的第一距离的平均误差具体包括:

根据获得第二组双摄像头图像中特征点的第一距离的平均误差其中

Xi表示第二组双摄像头图像中第一图像的特征点(xi,yi),X′i表示第二组双摄像头图像中第二图像的特征点(x′i,y′i),

l′i=K′-T[t]xRK-1Xi为Xi在第二图像中对应的核线,

li=-K-TR-1[t]xK′-1X′i为x′i在第一图像中对应的核线,

lia,lib分别为li向量的第一分量和第二分量,l′ia,l′ib分别为l′i向量的第一分量和第二分量,K为第一摄像头的内参矩阵,K′为第二摄像头的内参矩阵,[t]x为由t定义的反对称矩阵

i为正整数,i≤N,N表示第二组双摄像头图像中特征点对(Xi,X′i)的个数。

具体的,当可用于位置计算的双摄像头图像的数量小于或等于规定阈值时,应重新获取M组双摄像头图像。

具体的,在获取最优双摄像头相对位置参数之后,还包括:

根据最优双摄像头相对位置参数获得参考图像中所有特征点的第一距离的参考平均误差其中,第一距离为每一个特征点到与该特征点对应的核线的距离,特征点Xi在第二图像中对应的核线为l′i=K′-T[t]xRK-1Xi,特征点X′i在第一图像中对应的核线为li=-K-TR-1[t]xK′-1X′i,i为正整数,i≤N,N表示第二组双摄像头图像中特征点对(Xi,X′i)的个数,参考图像为双摄像头所拍摄的在获取的M组双摄像头图像之外的图像;

若参考平均误差大于或等于预定误差阈值,重新执行双摄像头位置计算方法。

本实施例中,存储一个或多个程序的计算机可读存储介质,这一个或多个程序包括指令,指令当被包括双摄像头和多个应用程序的电子设备执行时,使电子设备执行根据前面实施例中所述的双摄像头相对位置计算方法,其中, 双摄像头用于以两个摄像头拍摄同一场景。这样双摄像头位置计算装置可以在拍摄场景较难分辨的情况下,实现双摄像头相对位置的计算。

本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1