发明内容
有鉴于此,本发明的主要目的在于提供一种快速简便的标定方法和装置。
为达到上述目的,按照本发明的第一个方面,提供了一种基于线段的标定方法,所述景深标定方法包括以下步骤:
步骤101:输入标定线段;从输入模块向图像中输入三条线段作为三条标定线段;
步骤102:根据标定线段,获得相机参数;分别列出与每条标定线段相对应的标定方程,然后解由所得的标定方程组成的标定方程组,以获得包括相机的高度H、相机的俯仰角θ以及水平消失线l的相机参数;
步骤103:根据相机参数,获得并输出目标的标定参数;根据相机的高度、俯仰角、水平消失线的相机参数,计算图像中目标的包括目标对应于真实空间的坐标、目标的真实高度、目标的真实宽度标定参数,并且从输出模块输出该标定参数。
其中,所述三条标定线段中至少存在一条标定线段处于图像所对应场景的远端,至少存在一条标定线段处于图像所对应场景的近端;并且所述三条标定线段都不能与图像下边缘平行。
其中,对于任意一条标定线段((u1,v1),(u2,v2)),所述标定方程包括:
L2=Z2MTωM
其中,点(u1,v1)和点(u2,v2)是该标定线段的两端点,ui表示点i的横坐标,vi表示点i的纵坐标,i=1,2,L表示该标定线段的实际长度,M表示消失点,Z表示该标定线段的某个端点到相机的距离,ω为绝对二次曲线的像对应的矩阵;
其中,消失点M的方程为:
其中,k表示线段的两个端点的深度比,计算公式为:
di表示点i到水平消失线的距离,i=1,2,计算公式为:di=v
i-b;
绝对二次曲线的成像ω的计算公式为:
其中,K表示相机的内参矩阵,
(u
0,v
0)表示主点,所述主点为图像中心坐标,
f表示焦距,假设水平消失线l在图像中水平,水平消失线l的方程为:l=b,则焦距f为:
线段的某个端点到相机的距离Z的计算公式为:
其中λ表示地面分辨率常数;
分别将M、Z、ω的计算公式代入所述标定方程中,化简后所述标定方程中含有3个未知数b、v、λ,解与该至少三个标定线段相对应的标定方程以得到b、v、λ的值;和
根据所得到的b、v、λ的值来获得标定的结果并输出,所述标定的结果包括相机的高度H、相机的俯仰角θ和水平消失线l,其中,
相机的高度H由下式得到:
相机的俯仰角θ由下式得到:
θ=arctan((v0-b)/f)
水平消失线l为:l=b。
优选地,所述景深标定方法还包括输入一条验证线段,根据验证线段,得到精确标定参数。
优选地,在输入标定线段和验证线段步骤中将图像中最长的一条线段默认为验证线段,其余三条线段作为标定线段。
优选地,所述景深标定方法还包括根据验证线段,精确相机参数;首先微调标定线段的位置和长度,以得到不同的相机参数,包括相机的高度H、相机的俯仰角θ以及水平消失线l,然后根据这些不同的相机参数,通过L2=Z2MTωM公式的计算,以获得一组标定线段的验证长度L,最后分别计算这一组标定线段的验证长度L和真实长度的绝对差值,取绝对差值最小的验证长度所对应的相机参数作为最终的相机参数。
按照本发明的另一个方面,提供了一种基于线段的标定装置,所述景深标定装置包括:
输入标定线段模块,用于在图像中输入三条线段作为三条标定线段;
获得相机参数模块,用于根据三条标定线段获得相机参数;根据三条标定线段,分别列出与每条标定线段相对应的标定方程,然后解由所得的标定方程组成的标定方程组,以获得包括相机的高度H、相机的俯仰角θ以及水平消失线l的相机参数;
获得并输出目标的标定参数模块,用于根据相机的高度、俯仰角、水平消失线的相机参数,计算图像中目标的包括目标对应于真实空间的坐标、目标的真实高度、目标的真实宽度标定参数,并且输出该标定参数。
其中,对于任意一条标定线段((u1,v1),(u2,v2)),所述标定方程包括:
L2=Z2MTωM
其中,点(u1,v1)和点(u2,v2)是该标定线段的两端点,ui表示点i的横坐标,vi表示点i的纵坐标,i=1,2,L表示该标定线段的实际长度,M表示消失点,Z表示该标定线段的某个端点到相机的距离,ω为绝对二次曲线的像对应的矩阵;
其中,消失点M的方程为:
其中,k表示线段的两个端点的深度比,计算公式为:
di表示点i到水平消失线的距离,i=1,2,计算公式为:di=v
i-b;
绝对二次曲线的成像ω的计算公式为:
其中,K表示相机的内参矩阵,
(u
0,v
0)表示主点,所述主点为图像中心坐标,
f表示焦距,假设水平消失线l在图像中水平,水平消失线l的方程为:l=b,则焦距f为:
线段的某个端点到相机的距离Z的计算公式为:
其中λ表示地面分辨率常数;
分别将M、Z、ω的计算公式代入所述标定方程中,化简后所述标定方程中含有3个未知数b、v、λ,解与该至少三个标定线段相对应的标定方程以得到b、v、λ的值;和
根据所述所得到的b、v、λ的值来获得标定的结果并输出,所述标定的结果包括相机的高度H、相机的俯仰角θ和水平消失线l,其中,
相机的高度H由下式得到:
相机的俯仰角θ由下式得到:
θ=arctan((v0-b)/f)
水平消失线l为:l=b。
优选地,该标定装置还包括精确相机参数模块,所述精确相机参数模块用于根据验证线段首先微调标定线段的位置和长度,以得到不同的相机参数,包括相机的高度H、相机的俯仰角θ以及水平消失线l,然后根据这些不同的相机参数,通过L2=Z2MTωM公式的计算,以获得一组标定线段的验证长度L,最后分别计算这一组标定线段的验证长度L和真实长度的绝对差值,取绝对差值最小的验证长度所对应的相机参数作为最终的相机参数。
优选地,所述输入标定线段模块还包括验证线段模块,用于在图像中输入四条线段;其中,所述输入标定线段模块容纳有作为标定线段的三条标定线段,所述验证线段模块容纳有作为验证线段的一条验证线段。
本发明所提供的基于线段的景深标定方法只需要在图像中输入至少三条标定线段,并解由与标定线段相对应的标定方程组成的方程组便可得到标定的结果,具有操作简便、计算简单的优点。与经典标定法和基于主动视觉的标定法相比,本发明所提供的景深标定方法可以用于在线标定和不能使用标定块的场合,并且不需要控制摄像机做某些特殊运动,因此操作简便、使用范围广泛。同时,本发明所涉及的标定方程求解简单,计算量远小于自标定法中的Kruppa方程。
本发明所提供的基于线段的景深标定方法还通过输入验证线段,并根据该验证线段来修改标定的结果,最终得到更加精确的标定参数。
具体实施方式
本发明可以用于室内、室外场所,特别适用于远距离的监控场所。
为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施例和附图,对本发明进一步详细说明。
图1表示按照本发明的基于线段的标定方法的第一实施例的流程图。如图1所示,按照本发明的基于线段的标定方法可以包括:
步骤101:输入标定线段。从输入模块向图像中输入三条线段作为三条标定线段;
该步骤中的图像可以是采集的一段视频中的帧图像,也可以是当前监控中的图像。输入线段是由用户手动操作的。具体实施时,输入线段的操作跟一般的画图软件中画线段的操作一样,不同的是,每画完一条线段后,需要输入此线段的真实长度,此时计算机也会记录线段的起始坐标。
所述输入的三条标定线段需要满足以下两条规则:
(1)远近规则,即三条标定线段中至少存在一条线段处于图像所对应场景的远端,至少存在一条线段处于图像所对应场景的近端;
(2)非平行规则,即三条标定线段都不能与图像下边缘平行,也就是说这三条标定线段都不能是图像中的水平线。
步骤102:根据标定线段,获得相机参数。根据三条标定线段,分别列出相应地标定方程并组成方程组,解出该方程组,从而获得相机参数。其中相机参数包括:相机的高度H、相机的俯仰角θ以及水平消失线l。
对于任意一条线段((u1,v1),(u2,v2))(如图2所示,点(u1,v1)和点(u2,v2)是线段的两端点,ui表示点i的横坐标,vi表示点i的纵坐标,i=1,2),结合消失点以及绝对二次曲线可以列出计算出线段的实际长度L的方程,该方程如下:
L2=Z2MTωM (*)
其中,M表示消失点,Z表示线段的某个端点到相机的距离,ω表示绝对二次曲线的成像。
消失点M的方程为:
其中,k表示线段的两个端点的深度比,计算公式为:
di表示点i到消失线的距离,计算公式为:di=v
i-b。
绝对二次曲线的成像ω的计算公式为:
其中,K表示相机内参矩阵,有
(u
0,v
0)表示主点,优选地将图像中心坐标近似认为是主点。
f表示焦距。
若假设水平消失线的在图像中水平,水平消失线l的方程为:l=b;则焦距可表示为:
线段的某个端点到相机的距离Z的计算公式为:其中λ表示地面分辨率常数。
分别将M、Z、ω的计算公式带入方程(*),通过化简后,方程(*)中有3个未知数b、v、λ。
通过三条标定线段可以得到三个含有未知数b、v、λ的方程组,通过解该方程组,获得b、v、λ的值。
相机的高度H可由下式得到:
相机的俯仰角θ可由下式得到:
θ=arctan((v0-b)/f)
水平消失线l即为l=b。
步骤103:根据相机参数,获得并输出目标的标定参数。根据相机的高度、俯仰角、水平消失线这3个相机参数,计算图像中目标的标定参数,并且从输出模块输出该标定参数。其中标定参数可以包括目标对应于真实空间的坐标、目标的真实高度、目标的真实宽度。所述目标为用户在图像中任意选定的实物或者区域。
优选地,以相机在地面上的投影点作为原点,图像中坐标(x,y)对应于真实空间的坐标(X,Y)为:
其中,H为相机高度,θ为相机的俯仰角,l=b为水平消失线方程,(u0,v0)表示主点,优选地将图像中心坐标近似认为是主点。
图像中目标(x,y)对应的真实高度h和宽度w分别为:
其中,x1、x2分别为目标在图像中的左端点、右端点坐标,y1、y2分别为目标在图像中的下端点、上端点坐标。
与现有的标定技术相比,按照本发明的基于线段的标定方法更为简便,标定误差更小。
图3表示按照本发明的基于线段的标定方法的第二实施例的流程图。如图3所示,按照本发明的基于线段的标定方法可以包括:
步骤201:输入标定线段和验证线段。从输入模块向图像中输入四条线段,将其中三条线段作为标定线段,一条线段作为验证线段。
该步骤中的图像可以是采集的一段视频中的帧图像,也可以是当前监控中的图像。输入线段是由用户手动操作的。具体实施时,输入线段的操作跟一般的画图软件中画线段的操作一样,不同的是,每画完一条线段后,需要输入此线段的真实长度,此时计算机也会记录线段的起始坐标。由于长线段的误差相对较小,所以本发明中将图像中最长的一条线段默认为验证线段,其余三条线段作为验证线段。
所述输入的三条标定线段需要满足以下两条规则:
(1)远近规则,即三条标定线段中至少存在一条线段处于图像所对应场景的远端,至少存在一条线段处于图像所对应场景的近端;
(2)非平行规则,即三条标定线段都不能与图像下边缘平行,也就是说这三条标定线段都不能是图像中的水平线。
步骤202:根据标定线段,获得相机参数。根据三条标定线段,分别列出相应地标定方程并组成方程组,解出该方程组,从而获得相机参数并输出。其中相机参数包括:相机的高度H、相机的俯仰角θ以及水平消失线l。
对于任意一条线段((u1,v1),(u2,v2))(如图2所示,点(u1,v1)和点(u2,v2)是线段的两端点,ui表示点i的横坐标,vi表示点i的纵坐标,i=1,2),结合消失点以及绝对二次曲线可以列出计算出线段的实际长度L的方程,该方程如下:
L2=Z2MTωM (*)
其中,M表示消失点,Z表示线段的某个端点到相机的距离,ω表示绝对二次曲线的成像。
消失点M的方程为:
其中,x表示线段的两个端点的深度比,计算公式为:
di表示点i到消失线的距离,计算公式为:di=v
i-b。
绝对二次曲线的成像ω的计算公式为:
其中,K表示相机内参矩阵,有
(u
0,v
0)表示主点,实施时将图像中心坐标近似认为是主点。
f表示焦距,
假设水平消失线的在图像中水平,水平消失线l的方程为:l=b。
线段的某个端点到相机的距离Z的计算公式为:
其中λ表示地面分辨率常数。
分别将M、Z、ω的计算公式带入方程(*),通过化简后,方程(*)中有3个未知数b、v、λ。
通过三条标定线段可以得到三个含有未知数b、v、λ的方程组,通过解该方程组,获得b、v、λ的值。
相机的高度H可由下式得到:
相机的俯仰角θ可由下式得到:
θ=arctan((v0-b)/f)
水平消失线l即为l=b。
步骤203:根据验证线段,精确相机参数。首先微调标定线段的位置和长度,以得到不同的相机参数,包括相机的高度H、相机的俯仰角θ以及水平消失线l。然后根据这些不同的相机参数,通过步骤202中一系列公式的计算(即L2=Z2MTωM),可以获得一组标定线段的验证长度L。最后分别计算这一组标定线段的验证长度L和真实长度(即用户输入的验证线段的输入长度)的绝对差值,取绝对差值最小的验证长度所对应的相机参数作为最终的相机参数,然后将该相机参数输出。
步骤204:根据精确的相机参数,获得目标的标定参数。根据相机的高度、俯仰角、水平消失线这3个精确的相机参数,计算图像中目标的标定参数,并且从输出模块输出该标定参数。其中标定参数可以包括目标对应于真实空间的坐标、目标的真实高度、目标的真实宽度。所述目标为用户在图像中任意选定的实物(包括人、车、动物等)或者区域。
优选地,以相机在地面上的投影点作为原点,图像中坐标(x,y)对应于真实空间的坐标(X,Y)为:
其中,H为精确的相机高度,θ为精确的相机俯仰角,l=b为精确的的水平消失线方程,(u0,v0)表示主点,优选地将图像中心坐标近似认为是主点。
图像中目标(x,y)对应的真实高度h和宽度w分别为:
其中,x1、x2分别为目标在图像中的左端点、右端点坐标,y1、y2分别为目标在图像中的下端点、上端点坐标。
与实施例一相比,实施例二中多了一个精确标定过程,稍微增加了计算复杂度,但其标定的误差更小,标定参数更为精确。
图4表示按照本发明的基于线段的标定装置的第一实施例的框架图。如图4所示,按照本发明的基于线段的标定装置可以包括:
输入标定线段模块1,用于在图像中输入三条线段作为标定线段。
所述输入的三条标定线段需要满足以下两条规则:
(1)远近规则,即三条标定线段中至少存在一条线段处于图像所对应场景的远端,至少存在一条线段处于图像所对应场景的近端;
(2)非平行规则,即三条标定线段都不能与图像下边缘平行,也就是说这三条标定线段都不能是图像中的水平线。
获取相机参数模块2,用于根据标定线段,获得相机参数。根据三条标定线段,分别列出相应地标定方程并组成方程组,解出该方程组,从而获得相机参数并输出。其中相机参数包括:相机的高度H、相机的俯仰角θ以及水平消失线l。
获得并输出目标的标定参数模块3,用于根据相机的高度、俯仰角、水平消失线的相机参数,计算图像中目标的包括目标对应于真实空间的坐标、目标的真实高度、目标的真实宽度标定参数,并且输出该标定参数。
该标定装置还包括精确相机参数模块,所述精确相机参数模块用于根据验证线段首先微调标定线段的位置和长度,以得到不同的相机参数,包括相机的高度H、相机的俯仰角θ以及水平消失线l,然后根据这些不同的相机参数,通过L2=Z2MTωM公式的计算,以获得一组标定线段的验证长度L,最后分别计算这一组标定线段的验证长度L和真实长度的绝对差值,取绝对差值最小的验证长度所对应的相机参数作为最终的相机参数。
图5表示按照本发明的基于线段的标定装置的第二实施例的框架图。如图5所示,按照本发明的基于线段的标定装置可以包括:
输入标定线段和验证线段模块4,用于在图像中输入四条线段,将其中三条线段作为标定线段,一条线段作为验证线段。
获取相机参数模块5,用于根据标定线段,获得相机参数。根据三条标定线段,分别列出相应地标定方程并组成方程组,解出该方程组,从而获得相机参数并输出。其中相机参数包括:相机的高度H、相机的俯仰角θ以及水平消失线l。
精确相机参数模块6,用于根据验证线段,精确相机参数。首先微调标定线段的位置和长度,以得到不同的相机参数,包括相机的高度H、相机的俯仰角θ以及水平消失线l。然后根据这些不同的相机参数,通过公式L2=Z2MTωM的计算,可以获得一组标定线段的验证长度。最后分别计算这一组标定线段的验证长度和真实长度(即用户输入的验证线段的输入长度)的绝对差值,取绝对差值最小的验证长度所对应的相机参数作为最终的相机参数,然后将该相机参数输出。
获取标定参数模块7,用于根据精确的相机参数,获得目标的标定参数。根据相机的高度、俯仰角、水平消失线这3个精确的相机参数,计算图像中目标的标定参数并输出。其中标定参数可以包括目标对应于真实空间的坐标、目标的真实高度、目标的真实宽度。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围,应当理解,本发明并不限于这里所描述的实现方案,这些实现方案描述的目的在于帮助本领域中的技术人员实践本发明。任何本领域中的技术人员很容易在不脱离本发明精神和范围的情况下进行进一步的改进和完善,因此本发明只受到本发明权利要求的内容和范围的限制,其意图涵盖所有包括在由所附权利要求所限定的本发明精神和范围内的备选方案和等同方案。