一种基于正交消隐点的新型Tsai’s摄像机标定改进方法

文档序号:6550938阅读:282来源:国知局
一种基于正交消隐点的新型Tsai’s摄像机标定改进方法
【专利摘要】本发明提出一种基于正交消隐点的新型Tsai’s摄像机标定改进方法,首先拍摄若干幅棋盘格标定板平面图像,并对所有图像进行预处理,对每一幅图像的角点进行亚像素坐标提取,然后将角点坐标划分成四组,应用最小二乘指标函数拟合每个方向上的平行直线束,计算每个方向上的最佳消隐点坐标,接着建立摄像机内部参数的约束方程组,求解内部参数fx,fy,u0,v0,将这些计算值作为初始值,代入外部参数的方程组中,求解所有的外部参数;最后引入一阶、二阶径向畸变系数,在实际图像平面坐标系上,建立图像残差当量最小化寻优函数,对所有的参数进行优化。本发明大大减少了计算量,速度快、精度高,可广泛应用于机器视觉研究、工业三维测量等多个领域的摄像机标定。
【专利说明】一种基于正交消隐点的新型Tsai ’ s摄像机标定改进方法
【技术领域】
[0001]本发明属于光学测量【技术领域】,涉及一种基于正交消隐点的新型Tsai’ s摄像机标定改进方法。
【背景技术】
[0002]在计算机视觉测量领域中,摄像机标定是从2D图像信息获取3D空间信息必不可少的步骤,具体是根据获取的2D图像信息来确定摄像机内部参数,畸变参数和外部参数的过程。
[0003]目前,学者们在传统标定方法的理论基础上,已经研究出了众多简单灵活的摄像机新型标定方法。这些新型标定方法:一是在标定模板上进行不断创新,从最初工艺要求极高的3D精密标定立方块到现今的2D平面模板和ID线性模板,其中2D的主要有圆点靶标、十字叉靶标、棋盘格靶标等,ID的要属单条结构光最为广泛应用;二是在标定的理论方法上改进与创新,自标定方法中的消隐点、圆环点、Kruppa方程、绝对二次曲线、绝对二次曲面等。其中,B.CAPRILE和P.Beardsley等人首次提出了利用消隐点的几何特性来标定摄像机。
[0004]近几年,研究者从消隐点的产生模型、方法、拍摄图像的数量等方面不断改进与创新,出现了一些便捷灵活的新标定方法。比如在消隐点的产生模型有两对正交的平行直线、非平行的矩形对、圆柱、长方块、正方形等,这些模型虽然选取简易灵活,但不适合于精度要求高的场合,且有一个共同的问题:仅仅只凭借一对平行直线产生消隐点,这样会出现消隐点退化的情形,即在图像上不能够形成消隐点。
[0005]而在方法上,将消隐点作为计算圆环点的过度量,应用于建立标定的约束方程;或者通过消隐点与摄像机光心轨迹的连线所形成的球,建立约束方程进行标定等,这些方法并没有直接利用正交消隐点的性质来建立与摄像机内部参数的约束方程,导致计算量较大,过程复杂。
[0006]另外,对Tsai标定法改进的现有技术中,普遍采用Tsai法的计算思路,一是人为的约定内部参数的主点坐标就是拍摄的图像中心,这在现今的CCD摄像机中不再适合,由于镜头制造工艺存在偏差,导致主点会偏离图像中心;二是在计算方程组的过程中,依然采用先计算ty这个未知量,这样会引入判定未知量正负号的麻烦,增大了计算量,降低了运算效率。

【发明内容】

[0007]本发明目的是解决上述【背景技术】中提出的三个技术问题,为此公开了一种基于正交消隐点的新型Tsai’ s摄像机标定改进方法。
[0008]本发明的技术方案为:
[0009]所述一种基于正交消隐点的新型Tsai’s摄像机标定改进方法,其特征在于:采用以下步骤:[0010]Stepl:搭建光学测量系统,建立CXD摄像机模型;
[0011]Step2:使摄像机光轴与棋盘格标定板平面所成夹角在0°~80°之间,拍摄若干幅不同位姿的棋盘格标定板平面图像:并对拍摄的图像进行中值滤波、锐化预处理;棋盘格标定板的图案规格为mXn,其中m = η或m = n-Ι ;
[0012]Step3:应用Harris角点提取算法对预处理后的图像提取角点亚像素坐标,角点亚像素坐标为 Si, j = [ui;J, vi; j]T, i = 1,2,...m, j = 1,2,...η ;
[0013]Step4:将Step3中提取的角点划分成水平、垂直、主对角线、副对角线四组S ={gs I g = hor, ver, mad, vid} ;hor对应水平,ver对应垂直,mad对应主对角线,vid对应副对角线:
[0014]4.1若m = η,则执行步骤4.2 — 4.6 ;若m = n_l,则执行步骤4.7 — 4.11 ;
[0015]4.2定义棋盘格标定板的左下角第一个角点为s1;1,水平向右依次为Si,I,Si,2,...,S1,n,垂直向上依为 S1J, S2, D...j Sn, I ;
[0016]4.3第一组:水平方向的角点坐标集合为
[0017]hors = (horS1, ho rS2,...,horSi,...,horsn}, i = 1,2,...,η,
[0018]其中子集合hraS1 = {si;1, Si,2,...Si,」,...si;n}, j = I, 2,...η ;
[0019]4.4第二组:垂直方向的角点坐标集合为
[0020]vers = (verS1, verS2,...,verSj,...,versn}, j = 1,2,...,η,
[0021]其中子集合velV = {s1;J, s2,」,...Si,」,...sn,j},i = I, 2,...η ;
[0022]4.5第三组:主对角线方向的角点坐标集合为
[0023]niadS = (madS1, madS2,...,madSk,...,niadS2nI,k = 1,2,...,2n_3 ;
[0024]其中:
[0025]I)当k= I时,子集合madS1 = {susj,表示第2行第I列的角点和第I行第2列的角点组成的集合;
[0026]2)当k = 2时,子集合madS2= {&,&,&},表示第3行第I列、第2行第2列和第I行第3列的角点组成的集合;
[0027]3)当 k = n-Ι 时,子集合 madSn-1 = {sn;1, sn_1;2,..., sn_i;J,..., s1;n}, i =0, I,..., n-1 ;j = I, 2,..., η ;
[0028]4)当 k = n 时,子集合 madSn = {sn;2, sn_1;3,...,sn_i; j,...,s2,J,i = 0,1,...,n~2 ;j = 2, 3,..., n ;
[0029]5)当 k = 2n-4 时,子集合 mads2n_4 = {sn’n_2,sn_2’J ;
[0030]6)当 k = 2n-3 时,子集合 mads2n_3 =sn_1;n};
[0031]4.6第四组:副对角方向的角点坐标集合为
[0032]vids = (vidS1, vidS2,...,vidSq,...,H,q = 1,2,...,2n_3 ;
[0033]其中:
[0034]I)当q=丄时,子集合vidS1= {^,^^,表示第^丨行第丄列的角点和第!^〒第2列的角点组成的集合;
[0035]2)当 q = 2 时,子集合 vidS2=Sn_1;2,sn,3},表示第 n_2 行第 I 列、第 n_l 行第2列和第η行第3列的角点组成的集合;
[0036]3)当 q = n-1 时,子集合 vldSlri = {s1;1, s2,2,..., si;J}, i, j = I, 2,..., η ;[0037]4)当 q = n 时,子集合 vldSn = {s1;2, s2,3,..., si;J}, i = 1,2,...,η_1 ; j =
2 y 3 y...y 1,
[0038]5)当 q = 2n-4 时,子集合 vlds2n-4 = {s1;n_2, S2 ^1, s3,J ;
[0039]6)当 q = 2n-3 时,子集合 vlds2lrf = Is1^1, s2,J ;
[0040]4.7定义棋盘格标定板的左下角第一个角点为s1;1,水平向右依次为Si,I,Si,2,...,S1,n,垂直向上依为 S1J, S2, D...j Sm, I ;
[0041]4.8第一组:水平方向的角点坐标集合为
[0042]hors = (horS1, horS2,...,horSi,...,horsm},i = 1,2,...,m,
[0043]其中子集合s = {si; 1; si;2,...si; j,...si;n}, j = 1,2,...η ;
[0044]4.9第二组:垂直方向的角点坐标集合为
[0045]vers = (verS1, verS2,...,verSj,...,versn}, j = 1,2,...,η,
[0046]其中子集合versJ = {s1;J, s2,」,...Si,」,...sm,j},i = I, 2,...m ;
[0047]4.10第三组:主对角线方向的角点坐标集合为 [0048]niadS = (madS1, madS2,...,madSk,...,-sm+n_3},k = 1,2,...,m+n-3 ;
[0049]其中:
[0050]I)当k= I时,子集合madS1 = Isusj,表示第2行第I列的角点和第I行第2列的角点组成的集合;
[0051]2)当k = 2时,子集合madS2 = {s3;1, s2;2, Sl,3},表示第3行第I列、第2行第2列和第I行第3列的角点组成的集合;
[0052]3)当 k = m-Ι 时,子集合 madSm-1 = {sm;1, sm_1;2,..., sm_i; j}, i = 0,1,...,m_l ; j =
I,2,..., n—I ;
[0053]4)当 k = m 时,子集合 madSm = {sm,2, sm_1;3,...,sm_i;J}, i = 0,1,...,m_l ; j =
2y 3 y...y l-1,
[0054]5)当 k = m+n-4 时,子集合 madsm+n-4 = {sm,n_2, SmH1, sm_2,n};
[0055]6)当 k = m+n-3 时,子集合.dsm+n-3 = (Sm ^1, sm_1;n};
[0056]4.11第四组:副对角方向的角点坐标集合为
[0057]vids = (vidS1, vidS2,...,vidSq,...,vidsm+n_3},q = 1,2,...,m+n-3 ;
[0058]其中:
[0059]I)当q=丄时,子集合vidS1=sm,2},表示第m-Ι行第I列的角点和第m行第2列的角点组成的集合;
[0060]2)当 q = 2 时,子集合 vidS2= Sn^2, sm,3},表示第 m_2 行第 I 列、第 m_l 行第2列和第m行第3列的角点组成的集合;
[0061]3)当 q = n-1 时,子集合 vldSlri = {s1;1, s2,2,..., si;J}, i, j = I, 2,..., η ;
[0062]4)当 q = η 时,子集合 vldSn= {s1;2, s2,3,..., si;J}, i = I, 2,..., m ; j = 2, 3,..., η ;
[0063]5)当 q = m+n-4 时,子集合 Vldsm+I^4 = {s1;n_2, S2 ^1, s3,n};
[0064]6)当 q = m+n-3 时,子集合 vldsm+lrf = Is1^1, s2,n};
[0065]Step5:应用Step4中角点的划分结果,采用最小二乘法计算hor、ver、mad、vid方向上的平行直线束参数:
[0066]若m = n,则平行直线束参数为:[0067]horIi [horBi, -1, hoV],i = 1,2,...,η
[0068]verIj [veraJ, -1, verbJ],j = 1,2,...,η
[0069]madIk[madak, -1, madbk],k = 1,2,...,2n_3
[0070]vidITida' -1, viV],q = 1,2,...,2n_3[0071 ]若m = n-1,则平行直线束参数为:
[0072]horIi (horBi, -1, hoV),i = 1,2,...,m
[0073]verIj (veraJ, -1, verbJ),j = 1,2,...,n
[0074]madIk (madak, -1, madbk) ,k= 1,2,m+n-3
[0075]vidIq (vidaq, -1, vidbq),q = 1,2,...,m+n-3
[0076]Step6:建立hor、ver、mad、vid方向的最佳消隐点目标函数:
[0077]
【权利要求】
1.一种基于正交消隐点的新型Tsai’s摄像机标定改进方法,其特征在于:采用以下步骤: Stepl:搭建光学测量系统,建立CXD摄像机模型; Step2:使摄像机光轴与棋盘格标定板平面所成夹角在0°~80°之间,拍摄若干幅不同位姿的棋盘格标定板平面图像:并对拍摄的图像进行中值滤波、锐化预处理;棋盘格标定板的图案规格为mXn,其中m = η或m = n-Ι ; Step3:应用Harris角点提取算法对预处理后的图像提取角点亚像素坐标,角点亚像素坐标为 Siij = [ui;J, vi; j]T, i = I, 2,...m, j = I, 2,...η ; Step4:将Step3中提取的角点划分成水平、垂直、主对角线、副对角线四组S = {gs | g =hor, ver, mad, vid} ;hor对应水平,ver对应垂直,mad对应主对角线,vid对应副对角线: .4.1若m = η,则执行步骤4.2 — 4.6 ;若m = n_l,则执行步骤4.7 — 4.11 ; .4.2定义棋盘格标定板的左下角第一个角点为S1, i,水平向右依次为Sl,i,s1; 2)s1;n,垂直向上依次为S1,s2,...,sn;1 ; .4.3第一组:水平方向的角点坐标集合为
hor _ rhor I hor 2hor ihor π?._ -? ο,
s — { s, s,..., s,..., s }, I —丄,2,...,n,
其中子集合 hraS1 = {si;1, si;2,...Si, j,...si; J , j = I, 2,...n ; .4.4第二组:垂直方向的角点坐标集合为
ver _ fver I ver 2ver jver η?._ -ι o,
s — { s j s,..., s,..., s } j j — I,2,...,n,
其中子集合 veV = {s1;J, S2, j,...si; j,...sn,j},i = I, 2,...n ; .4.5第三组:主对角线方向的角点坐标集合为
mad _ fmad I mad 2mad kmad 2π_3? i _ -j cyr) _q
S I S y S,..., S,..., S J y丄 y 乙,... 1 O, 其中: Dik= !时,子集合.1S1= {susj,表示第2行第I列的角点和第I行第2列的角点组成的集合; 2)当k= 2时,子集合madS2 = {s3;1, s2;2, Sl,3},表示第3行第I列、第2行第2列和第I行第3列的角点组成的集合;
3)当k = n-Ι 时,子集合 madSlri = {sn;1, sn_1;2,...,sn_i; j,...,s1;n}, i = 0, I,..., n-1 ; j=I, 2,..., n ;
4)当k = n 时,子集合 madSn = {sn;2, sn_1;3,..., sn_i; j,..., s2,n},i = 0,1,...,n_2 ; j =.2 y 3 y...y 1,
5)当k = 2n~4 时,子集合 s = {sn n—2,sn—l n—丨,sn—2 n}; 6)当k = 2n-3 时,子集合 mads2n—3 =sn_1?n}; .4.6第四组:副对角方向的角点坐标集合为
vidQ = (vidO1 vido2vidoqvid 2η-3| _ ι ο0?_0.0I O y O,..., .O,..., O J y丄 y ,...,X 丄 O , 其中: 1)当q=I时,子集合vidS1= Isn^snJ,表示第n-ι行第I列的角点和第η行第2列的角点组成的集合; 2)当q= 2时,子集合vidS2= {811_2,1,\_1,2,\3},表示第11-2行第1列、第11-1行第2列和第η行第3列的角点组成的集合;. 3)当q = n~I 时,子集合 vldSn 1 = {s1; 1; s2,2,...,Si,』},i, j = I, .2,..., η ;.4)当q = n 时,子集合 vidSn = {s1;2, s2;3, , si;J}, i = 1,2,...,n_l ;j = .2,3,...,n ;
5)当q = 2n-4 时,子集合 vldS2n-4 = {s1;n_2, S2 ^1, s3,J ;
6)当q = 2n-3 时,子集合 vldS2n-3 = (S1^1, s2,J ; . 4.7定义棋盘格标定板的左下角第一个角点为Sl,i,水平向右依次为S1, i,S1,2,S1, n,垂直向上依次为S1,S2,...,Snljl ; .4.8第一组:水平方向的角点坐标集合为 hor _ rhor I hor 2hor ihor _mi._ 1 ο—
s — { s, s,..., s,..., s I, I —丄,Z,...,m,
其中子集合 11tS1 = {si;1, si;2,...si; j,...si; J , j = I, 2,...n ; .4.9第二组:垂直方向的角点坐标集合为
ver _ fver I ver 2ver jver _η?._ 1 o_
S — { S , S,..., S,..., SjjJ — I,2,...,Π,
其中子集合 veV = {s1;J, S2, j,...si; j,...sm,j},i = I, 2,...m ; . 4.10第三组:主对角线方向的角点坐标集合为
mad _ fmad I mad 2mad kmad m+n-3l i _ -1 o…丄.^ O
s — { s, s,..., s,..., s IjK-1, z,..., m+n-o ; 其中: Dik=I时,子集合madS1 = {s2;1, Sl,2},表示第2行第I列的角点和第I行第2列的角点组成的集合; . 2)当k= 2时,子集合madS2 = {s3,i,s2,2,S1,3},表示第3行第I列、第2行第2列和第I行第3列的角点组成的集合;
.3)当k = m-Ι 时,子集合 madSnrl = (Snu, sm_1;2,…,Sm」.},i = O, I,..., m-1 ; j =.1,2,,n~l ;.4)当k = m 时,子集合 madSm = {sm; 2, SmU...,sm_i;J}, i = O, I,..., m-1 ;j =..2,3 y...y L-1 y . 5)当k = m+n-4 时,子集合 niadSnrtrf = {sm;n_2, Snrl, sm_2;n};
.6)当k = m+n-3 时,子集合 madsm+n_3 = (Sm ^1, sm_1;n}; .4.11第四组:副对角方向的角点坐标集合为
vids = (vidS1, vidS2,...,vidSq,...,,q = 1,2,...,m+n-3 ; 其中: . 1)当q=I时,子集合vidS1= Ism^sm,2},表示第m-Ι行第I列的角点和第m行第2列的角点组成的集合; .2)当q= 2时,子集合vidS2 = (Sffl^1, S1^2, sm,3},表示第m-2行第I列、第m_l行第2列和第m行第3列的角点组成的集合; . 3)当q = n~l 时,子集合 vldSn 1 = {s1; ” S22,..., Si, j}, i, j = I, .2,..., η ;.4)当q = η 时,子集合 vidSn = {s1;2, s2,3,...,si;J}, i = 1,2,...,m ; j = .2,3,...,n ;
.5)当q = m+n-4 时,子集合 vldsm+n_4 = {s1;n_2, S2 ^1, s3,J ;
.6)当q = m+n-3 时,子集合 vldsm+n_3 = (S1^1, s2,J ; Step5:应用Step4中角点的划分结果,采用最小二乘法计算hor、ver、mad、vid方向上的平行直线束参数: 若m = n,则平行直线束参数为:horIi [h0V,-1,hoV],i = 1,2,...,η
verlJ[veraJ,-l,verbJ], j = 1,2,...,η
madIk[madak, -1, madbk],k = 1,2,...,2n-3
vidITiV1, -1, viV], q =1,2,..., 2n-3 若m = n-1,则平行直线束参数为:
horIi d-l,hoV),i = 1,2,...,m
verIj (veraJ,-1,verbJ),j = 1,2,...,η
madIk (madak, -1, madbk),k = 1,2,...,m+n-3
vidIq (vidaq, -1, viV),q = 1,2,...,m+n-3 Step6:建立hor、ver、mad、vid方向的最佳消隐点目标函数:
【文档编号】G06T7/00GK104036512SQ201410292608
【公开日】2014年9月10日 申请日期:2014年6月25日 优先权日:2014年6月25日
【发明者】莫蓉, 卢津, 孙惠斌, 聂寇准, 蒋超峰 申请人:西北工业大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1