一种单目相机测量目标位置数据,拍摄角度和相机视角的方法

文档序号:1612742 发布日期:2020-01-10 浏览:20次 >En<

阅读说明:本技术 一种单目相机测量目标位置数据,拍摄角度和相机视角的方法 (Method for measuring target position data, shooting angle and camera view angle by monocular camera ) 是由 魏自强 杨正威 杨清平 于 2019-10-16 设计创作,主要内容包括:本发明公开了一种单目相机测量目标位置数据,拍摄角度和相机视角的方法。本方法使用单个摄像机,在已知目标物体大小的前提下,能够测量相机与目标之间的距离,能够测量目标上任意一点与相机的相对位置(在指定的三维坐标系中在X轴,Y轴以及Z轴上的分量);可以根据照片中任何一点的位置求得其在目标物体中的实际位置,或者根据目标物体中任何一点的位置求得其在照片中的位置;能够测量相机的拍摄角度(在指定的三维坐标系中拍摄方向分别与X轴,Y轴以及Z轴之间的夹角);能够测量出相机的视角或者焦距。(The invention discloses a method for measuring target position data, a shooting angle and a camera view angle by a monocular camera. The method uses a single video camera, can measure the distance between the video camera and the target on the premise of knowing the size of the target object, and can measure the relative position (components on an X axis, a Y axis and a Z axis in a specified three-dimensional coordinate system) of any point on the target and the video camera; the actual position of any point in the picture in the target object can be obtained according to the position of the point in the picture, or the position of any point in the target object in the picture can be obtained according to the position of the point in the target object; the shooting angle of the camera can be measured (the included angles between the shooting direction and the X axis, the Y axis and the Z axis respectively in a specified three-dimensional coordinate system); the angle of view or the focal length of the camera can be measured.)

一种单目相机测量目标位置数据,拍摄角度和相机视角的 方法

技术领域

本发明涉及一种单目相机测量目标位置数据,拍摄角度和相机视角的方法,属于计算机视觉领域。

背景技术

目前与本发明最为接近的技术是单目测距技术,该技术在已知目标的实际大小的前提下,可以用单个相机测量相机与目标之间的距离。但是这种单目测距具有非常大的局限性:(1)如果我们称测量目标的实际大小的方向为线段A,称相机与目标之间的连线为线段B,则线段B必须与线段A垂直,并且线段B必须通过线段A的中点。如果做不到这点,则测量将会产生误差。(2)必须事先知道相机的视角或者焦距。对于这一点,在实践中通常有两种方法来解决:第一种方法是事先拍一张照片,并测得相机与目标之间的距离,这样来计算相机的视角或者焦距;第二种方法是直接读出相机的内部参数。但是这两种方法都会产生一定的误差,在实践中第二种方法产生的误差通常比第一种方法更大。

换个角度来说,目前的单目测距技术有以下的局限性:(1)在满足上述条件的情况下,测量会产生比较大的误差。(实践中这种误差大概在2-5%左右)。(2)在很多的应用中,我们并不能满足这两个要求,比如第一个要求,举个例子,当我们拍摄一个网球场时,如果我们要求拍摄方向必须与网球场所在的平面垂直(无论是否要求通过球场的中心点),则这个要求太高了;对于第二个要求,在很多应用中也不能满足,比如使用变焦实时抓拍目标物体;有些情况下,我们甚至不知道照片是用什么样的相机拍摄的。

单目测距还具有其它方面更大的局限性:单目测距仅能测出相机与目标之间的距离,但是在很多应用中,目标物体并不是一个点(或者一条线),而是一个比较大的立体的物体,我们可能需要获得物体上任何一点与相机的相对位置,或者获得物体上任何一点在照片中的位置,或者根据照片中任何一点的位置确定它在目标物体上的位置,对于这些需求,上述的单目测距方法是无能为力的;在很多应用中,我们需要知道相机的拍摄角度,或者需要相机的视角大小,这些对于我们进一步分析和计算是很重要的数据,对于这些需求,上述的单目测距方法同样是无能为力的。

发明内容

本发明涉及一种新的测量方法,它与单目测距方法一样有以下的两个前提:一是已知目标的实际大小,二是使用单个相机进行测量。但是本方法没有单目测距方法的上述的局限性,也就是说:(1)本方法不仅能测量相机与目标之间的距离,而且能测量目标上任意一点与相机的相对位置(在指定的三维坐标系中在X轴,Y轴以及Z轴上的分量);可以根据照片中任何一点的位置求得其在目标物体中的实际位置,或者根据目标物体中任何一点的位置求得其在照片中的位置;(2)使用本方法,相机的拍摄角度是任意的,并且本方法能够测量相机的拍摄角度(在指定的三维坐标系中拍摄方向分别绕X轴,Y轴以及Z轴旋转的角度);(3)本方法不需要知道相机的视角或者焦距,并且能够测量出相机的视角或者焦距;

具体实施方式

在不知道相机的视角或者焦距的情况下,本方法需要事先知道目标上4个点的相对位置,这4个点必须没有任何3个点共线,并且满足以下的条件:这4个点共面,或者这4个点不共面,但是知道其中一个点与另外3个点所在平面之间的距离h;在已知相机的视角或者焦距的情况下,本方法需要事先知道目标上3个点的相对位置,并且这3个点必须不在一条直线上。下面先说明第一种情况下的步骤,然后再说明第二种情况下的步骤。

在不知道相机的视角或者焦距的情况下,本方法的步骤是:取这4个点中某3个点所在的平面(如果4个点共面,则第4个点也在这个平面上),称为A平面,我们在A平面上确定一个二维坐标系C2:取上述3个点中其中一个点的坐标为(0,0),其它2个点的坐标是(x2,0),(x3,y3),第4个点在A平面上的投影的坐标是(x4,y4),(如果4个点共面,则(x4,y4)就是第4个点的坐标)。在这些坐标值中,x2是正数,y3和y4都是负值,也就是说,第2个点在X轴的正方向上,第3,4个点位于X轴的下方。这些坐标数值(x2,x3,y3,x4,y4)都是我们事先知道的。然后我们确定一个三维坐标系C3:取相机的拍摄方向为坐标系Z轴的负方向,相机所在的位置为坐标系的原点(0,0,0),A平面与Z轴的交点的坐标为(0,0,-depth),这里的depth是未知的。C3坐标系的X轴和Y轴的方向在符合右手法则的前提下任意确定(比如可以取相机向上的方向为Y轴的正方向)。在C2和C3坐标系中,长度单位都是现实世界中的长度单位(比如米或者毫米)。

接下来我们将A平面进行一系列的平移和旋转,到达一定的位置,使得这4个点在C3坐标系中的坐标分别是(0,0,-depth),(x2,0,-depth),(x3,y3,-depth),(x4,y4,-depth-deltaz4)(第4个点与相机在A平面同侧时deltaz4=-h否则deltaz4=h),其中的h也是已知的,如果4个点共面,则h=0,deltaz4=0。此时A平面在C3坐标系中与X-Y平面平行,C2的X轴与C3的X轴同方向,C2的Y轴与C3的Y轴同方向。我们将这4个点的坐标统一加上一个维度,并设其值统一为1,则得到4个4维的向量:P1(0,0,-depth,1),P2(x2,0,-depth,1),P3(x3,y3,-depth,1),P4(x4,y4,-depth-deltaz4,1)。

接下来设

Figure BDA0002234092620000021

Figure BDA0002234092620000022

Figure BDA0002234092620000023

Figure BDA0002234092620000024

Figure BDA0002234092620000025

Figure BDA0002234092620000031

我们令

M=T*U1*Rx*Ry*Rz*U2*P

设相机的分辨率是VW*VH,(VW和VH分别是成像的宽度和高度像素值,是已知的。)并设

Figure BDA0002234092620000033

Figure BDA0002234092620000034

Figure BDA0002234092620000035

然后令

Mr=Sp*Tp*Op

接下来用相机拍摄一副照片,拍摄的角度没有要求,距离也没有要求,只要能够拍全目标物体的上述4个点即可(有些情况下,我们甚至不要求拍全上述的4个点,见下述)。然后我们利用计算机图像技术获得目标物体的上面的4个点在该照片中的位置,它们都是一些像素值,设它们的值分别是(px1,py1),(px2,py2),(px3,py3),(px4,py4)。

如果我们不能拍全上述4个点,但是能够计算出它们在照片之外的位置,也是可行的,并不会影响我们的计算。(比如某个点是两条直线的交点,则只要知道了这两条直线,就可以求出该点的位置,它可能不在照片中。)

我们对这些位置向量统一增加一个维度并设其值为1,则得到4个3维向量:PX1(px1,py1,1),PX2(px2,py2,1),PX3(px3,py3,1),PX4(px4,py4,1)。我们对py4增加一个偏差值factor(它是未知量),得到新的PX4(px4,py4+factor,1)。

接下来令

P1P=P1*M

P2P=P2*M

P3P=P3*M

P4P=P4*M

PX1P=PX1*Mr

PX2P=PX2*Mr

PX3P=PX3*Mr

PX4P=PX4*Mr

接下来得到一个由8个方程组成的方程组:

其中P1P[1]是向量P1P的第一个分量,其它同。

这个方程组中有8个未知量:dx,dy,tx,ty,tz,depth,ta,factor,它是一个非线性方程组,运用非线性方程组的数值解法可以求得这个方程组的解。

接下来我们可以得到相机的拍摄角度。如果我们以上述的C2坐标系为基础建立一个新的三维坐标系C3’:新坐标系的原点为C2坐标系的(-dx,-dy),X轴和Y轴与C2坐标系的X轴和Y轴相同,按右手法则建立Z轴。在这个新的坐标系C3’中,取Z轴的负方向为相机的初始拍摄方向,且相机的位置就在Z轴上,坐标为(0,0,depth),其中的depth是上面我们求得的8个未知量中的一个,它是正值。将该拍摄方向分别绕X轴,Y轴,Z轴旋转-tx,-ty,-tz,即得到相机真实的拍摄方向。

接下来是相机的视角,设相机的视角是α,则α与ta的关系是:

ta=1/tan(α/2)

其中的tan是正切函数。

在得到了上面的8个参数以及由它们决定的10个矩阵的值之后,在下面2个条件下,如果我们知道某个点在照片中的位置,我们可以求得该点在上述C3坐标系或者C2坐标系中的坐标。

条件1:待求点在A平面上;

条件2:待求点不在A平面上,但是我们已知该点与A平面的距离是h。

设待求点在照片中的位置是(px,py)(px和py都是像素值,是已知的)。取向量VX=(px,py,1)。

设待求点在C2坐标系中的坐标是(x,y)。取向量V=(x,y,z,1),其中z在条件1下取值为-depth,在条件2下,如果待求点与相机在A平面的同侧则取值为-depth+h,否则取值为-depth-h。这里depth和h的值都是已知的,x,y是我们要求的值。

VP=V*M

VXP=VX/Mr

则可以得到下面的方程组:

Figure BDA0002234092620000051

其中VP[1]是向量VP的第一个分量,其它同。

解这个方程组,即可以获得上述的x,y的值,坐标(x,y)是待求点在C2坐标系中的坐标。

为了求得待求点在C3坐标系中的坐标,可以令

V*T*U1*Rx*Ry*Rz*U2=VV

这里的向量V和矩阵T,U1,Rx,Ry,Rz,U2都是已知的,求得的向量VV的前3个分量即为待求点在C3坐标系中的坐标。

如果我们已知目标物体上一个点的位置,也就是说,上面的向量V(x,y,z,1)中x,y,z的值是已知的,则可以通过下面的方法求得它在照片上的位置:

V*T*U1*Rx*Ry*Rz*U2*P=V2

然后设

V3=(V2[1]/V2[4],V2[2]/V2[4],1)

其中V2[1]是向量V2的第一个分量,其它同。

然后令

V3*Mr=V4

则向量V4的前两个分量就是该点在照片中的位置。

在已知相机的视角或者焦距的情况下,本方法的步骤与上述步骤只有以下的区别:

(1)我们只需要知道目标物体上3个点的相对位置,并且这3个点必须不在一条直线上;

(2)4个向量P1(0,0,-depth,1),P2(x2,0,-depth,1),P3(x3,y3,-depth,1),P4(x4,y4,-depth-deltaz4,1)只有前面3个,即P1(0,0,-depth,1),P2(x2,0,-depth,1),P3(x3,y3,-depth,1);

(3)4个向量PX1(px1,py1,1),PX2(px2,py2,1),PX3(px3,py3,1),PX4(px4,py4+factor,1)只有前面3个,即PX1(px1,py1,1),PX2(px2,py2,1),PX3(px3,py3,1);

(4)因此,方程组1只有6个方程:

Figure BDA0002234092620000061

(5)由于相机的视角已知,即ta已知,所以方程组1中的未知量只有6个:dx,dy,tx,ty,tz,depth。

8页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种目标对象的测距方法及装置

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!