发明名称 采用两个相同圆进行摄像机标定的方法
摘要 本发明涉及一种采用两个相同圆进行摄像机标定的方法,利用两个不相切的相同圆作为标定物,用摄像机从三个不同角度拍摄标定物得到三幅清晰的图像,确定出每幅图中的两个椭圆影像的方程,求出每幅图中的一对圆环点像的坐标。利用三幅图像的圆环点像的坐标和绝对二次曲线的投影方程来确定摄像机的内部参数。对每幅图像,求取两个椭圆影像的内外公切线;恢复并修正世界坐标系中两相同圆的内公切线间的夹角;根据所建立的两个相同圆的内外公切线的世界坐标和其投影的图像坐标,求取摄像机的外部参数。本发明能简便而精确地求取摄像机内外参数,而且能实现全自动标定。本发明能够广泛应用于非接触式工业检测和基于视觉的自主导航系统中。
申请公布号 CN101621711A 申请公布日期 2010.01.06
申请号 CN200910183222.0 申请日期 2009.07.23
申请人 东南大学 发明人 达飞鹏;张虎
分类号 H04N17/00(2006.01)I;G06T7/00(2006.01)I 主分类号 H04N17/00(2006.01)I
代理机构 南京经纬专利商标代理有限公司 代理人 叶连生
主权项 1、一种采用两个相同圆进行摄像机标定的方法,其特征在于该方法包括以下步骤:步骤1:以两个不相切的相同圆作为标定物;步骤2:用摄像机从三个不同角度拍摄标定物,分别得到三幅具有两个椭圆影像的标定物图像,确保成像清晰;步骤3:对每幅标定物图像进行以下操作:步骤3.1:利用经典的边缘检测算子-Canny算子,分别检测出图像上每一个椭圆影像的边界,从而得到两组由椭圆影像边界像素点构成的点集,分别利用这两组点集,拟合出两个椭圆影像的方程,两个椭圆影像中左椭圆标记为C′<sub>1</sub>,右椭圆标记为C′<sub>2</sub>,左椭圆C′<sub>1</sub>、右椭圆C′<sub>2</sub>的方程分别表示为:<maths num="0001"><![CDATA[<math><mfenced open='{' close=''><mtable><mtr><mtd><msubsup><mi>C</mi><mn>1</mn><mo>&prime;</mo></msubsup><mo>:</mo><msup><mi>u</mi><mn>2</mn></msup><mo>+</mo><msub><mi>A</mi><mrow><mi>e</mi><mn>1</mn></mrow></msub><mi>uv</mi><mo>+</mo><msub><mi>B</mi><mrow><mi>e</mi><mn>1</mn></mrow></msub><msup><mi>v</mi><mn>2</mn></msup><mo>+</mo><msub><mi>C</mi><mrow><mi>e</mi><mn>1</mn></mrow></msub><mi>u</mi><mo>+</mo><msub><mi>D</mi><mrow><mi>e</mi><mn>1</mn></mrow></msub><mi>v</mi><mo>+</mo><msub><mi>E</mi><mrow><mi>e</mi><mn>1</mn></mrow></msub><mo>=</mo><mn>0</mn></mtd></mtr><mtr><mtd><msubsup><mi>C</mi><mn>2</mn><mo>&prime;</mo></msubsup><mo>:</mo><msup><mi>u</mi><mn>2</mn></msup><mo>+</mo><msub><mi>A</mi><mrow><mi>e</mi><mn>2</mn></mrow></msub><mi>uv</mi><mo>+</mo><msub><mi>B</mi><mrow><mi>e</mi><mn>2</mn></mrow></msub><msup><mi>v</mi><mn>2</mn></msup><mo>+</mo><msub><mi>C</mi><mrow><mi>e</mi><mn>2</mn></mrow></msub><mi>u</mi><mo>+</mo><msub><mi>D</mi><mrow><mi>e</mi><mn>2</mn></mrow></msub><mi>v</mi><mo>+</mo><msub><mi>E</mi><mrow><mi>e</mi><mn>2</mn></mrow></msub><mo>=</mo><mn>0</mn></mtd></mtr></mtable></mfenced></math>]]></maths>其中,u、v分别为图像中像素点的横纵坐标,A<sub>e1</sub>、B<sub>e1</sub>、C<sub>e1</sub>、D<sub>e1</sub>、E<sub>e1</sub>为左椭圆C′<sub>1</sub>方程的系数,A<sub>e2</sub>、B<sub>e2</sub>、C<sub>e2</sub>、D<sub>e2</sub>、E<sub>e2</sub>为右椭圆C′<sub>2</sub>方程的系数;同时,根据两椭圆方程系数,分别求得左椭圆C′<sub>1</sub>和右椭圆C′<sub>2</sub>的拟合圆心O′<sub>1</sub>、O′<sub>2</sub>的坐标;步骤3.2:利用两个椭圆影像的方程,在复域内求解两个椭圆的交点坐标,然后提取圆环点像m<sub>I</sub>,m<sub>J</sub>的坐标,其中提取圆环点像m<sub>I</sub>,m<sub>J</sub>的方法为:任意选取两个椭圆的交点中的一对共轭解,如果这对共轭解所组成的直线与两个椭圆拟合圆心O′<sub>1</sub>、O′<sub>2</sub>所组成的直线的交点在O′<sub>1</sub>和点O′<sub>2</sub>之间,表明这对共轭解为非圆环点对;反之,如果这对共轭解所组成的直线与两个椭圆拟合圆心O′<sub>1</sub>、O′<sub>2</sub>所组成的直线的交点不在点O′<sub>1</sub>和点O′<sub>2</sub>之间,表明这对共轭解为圆环点对,这对共轭解为圆环点像m<sub>I</sub>,m<sub>J</sub>的坐标;步骤4:根据三幅图像的圆环点像坐标,求取摄像机的内部参数矩阵K,计算公式为:<maths num="0002"><![CDATA[<math><mrow><msup><mover><mi>m</mi><mo>~</mo></mover><mi>T</mi></msup><msup><mi>K</mi><mrow><mo>-</mo><mi>T</mi></mrow></msup><msup><mi>K</mi><mrow><mo>-</mo><mn>1</mn></mrow></msup><mover><mi>m</mi><mo>~</mo></mover><mo>=</mo><mn>0</mn><mo>;</mo></mrow></math>]]></maths>其中,<img file="A2009101832220002C3.GIF" wi="36" he="39" />是圆环点像的齐次坐标;步骤5:分别求取三副图像的摄像机的外部参数,具体操作如下:步骤5.1:根据图像中两个椭圆影像的方程,求取两个椭圆影像的内公切线和外公切线,分别表示为line_in′<sub>1</sub>、line_in′<sub>2</sub>、line_out′<sub>1</sub>、line_out′<sub>2</sub>;步骤5.2:利用拉盖尔定理,恢复世界坐标系中两相同圆的内公切线间的初始夹角θ,计算方法为:首先求得两个椭圆影像的内公切线的交点坐标,交点标记为O′,然后由点O′分别与圆环点m<sub>I</sub>,m<sub>J</sub>组成直线O′m<sub>I</sub>,O′m<sub>J</sub>,根据直线line_in′<sub>1</sub>、line_in′<sub>2</sub>、O′m<sub>I</sub>、O′m<sub>J</sub>求出世界坐标系中两相同圆的内公切线间的初始夹角θ:<maths num="0003"><![CDATA[<math><mrow><mi>&theta;</mi><mo>=</mo><mfrac><mn>1</mn><mrow><mn>2</mn><mi>i</mi></mrow></mfrac><mi>ln</mi><mrow><mo>(</mo><mi>cross</mi><mrow><mo>(</mo><mi>line</mi><mo>_</mo><msubsup><mi>in</mi><mn>1</mn><mo>&prime;</mo></msubsup><mo>,</mo><mi>line</mi><mo>_</mo><msubsup><mi>in</mi><mn>2</mn><mo>&prime;</mo></msubsup><mo>,</mo><msup><mi>O</mi><mo>&prime;</mo></msup><msub><mi>m</mi><mi>I</mi></msub><mo>,</mo><msup><mi>O</mi><mo>&prime;</mo></msup><msub><mi>m</mi><mi>J</mi></msub><mo>)</mo></mrow><mo>)</mo></mrow></mrow></math>]]></maths>其中,cross()表示仿射变换中的交比,i表示虚部单位;步骤5.3:定义两内公切线的不夹两圆的夹角为θ_true,利用射影变换的交比不变性,根据步骤5.2所求的两相同圆的内公切线间的初始夹角θ求取夹角θ_true,具体方法如下:分别求取两个椭圆影像的两条外公切线line_out′<sub>1</sub>、line_out′<sub>2</sub>与椭圆C′<sub>1</sub>的交点P′<sub>3</sub>、P′<sub>5</sub>,分别求取两个椭圆影像的两条外公切线line_out′<sub>1</sub>、line_out′<sub>2</sub>与椭圆C′<sub>2</sub>的交点P′<sub>4</sub>、P′<sub>6</sub>,求取两个椭圆影像的两条外公切线line_out′<sub>1</sub>、line_out′<sub>2</sub>的交点P<sub>vsp</sub>以及两个椭圆影像的两条内公切线line_in′<sub>1</sub>、line_in′<sub>2</sub>的交点O′;由点P<sub>vsp</sub>和点O′组成直线O′P<sub>vsp</sub>,由点P′<sub>3</sub>和点P′<sub>5</sub>组成直线P′<sub>3</sub>P′<sub>5</sub>,由点P′<sub>4</sub>和点P′<sub>6</sub>组成直线P′<sub>4</sub>P′<sub>6</sub>;分别求取直线O′P<sub>vsp</sub>分别与直线P′<sub>3</sub>P′<sub>5</sub>、P′<sub>4</sub>P′<sub>6</sub>的交点<img file="A2009101832220003C1.GIF" wi="185" he="63" />由点<img file="A2009101832220003C2.GIF" wi="44" he="62" />和点<img file="A2009101832220003C3.GIF" wi="49" he="64" />组成直线<img file="A2009101832220003C4.GIF" wi="137" he="64" />分别求取直线<img file="A2009101832220003C5.GIF" wi="108" he="64" />与椭圆C′<sub>1</sub>、C′<sub>2</sub>的交点P′<sub>1</sub>、P′<sub>2</sub>;如果P′<sub>1</sub>、P′<sub>2</sub>、<img file="A2009101832220003C6.GIF" wi="155" he="64" />四点的交比值大于-0.4268,夹角θ_true大于π/2,此时夹角θ_true为π减去步骤5.2所求的角度θ;P′<sub>1</sub>、P′<sub>2</sub>、<img file="A2009101832220003C7.GIF" wi="159" he="65" />四点的交比值不大于-0.4268,夹角θ_true不大于π/2,此时夹角θ_true等于步骤5.2所求的角度θ;步骤5.4:根据步骤5.3所求夹角θ_true,建立如下世界坐标系:将世界坐标系的原点定为两个相同圆内公切线的交点,x轴定为两个相同圆圆心连线的方向,y轴方向垂直于x轴方向;根据夹角θ_true和所建立的世界坐标系,两个相同圆的两外公切线分别表示为:line_out<sub>1</sub>=[0 r 1]<sup>T</sup>,line_out<sub>2</sub>=[0 r -1]<sup>T</sup>其中,r为两圆的半径,将其作为世界坐标系的物理度量单位;两个相同圆的两内公切线表示为:line_in<sub>1</sub>=[-tan((π-θ_true)/2) 1 0]<sup>T</sup>,line_in<sub>2</sub>=[tan((π-θ_true)/2) 1 0]<sup>T</sup>根据两相同圆内外公切线的齐次坐标line_in<sub>1</sub>、line_in<sub>2</sub>、line_out<sub>1</sub>、line_out<sub>2</sub>和两椭圆影像的内外公切线的齐次坐标line_in′<sub>1</sub>、line_in′<sub>2</sub>、line_out′<sub>1</sub>、line_out′<sub>2</sub>,求得单映射矩阵H为:H=(line_out<sub>1</sub>,line_out<sub>2</sub>,line_in<sub>1</sub>)<sup>-T</sup>×diag(e<sub>1</sub>,e<sub>2</sub>,e<sub>3</sub>)×(line_out′<sub>1</sub>,line_out′<sub>2</sub>,line_in′<sub>1</sub>)<sup>T</sup>其中,<maths num="0004"><![CDATA[<math><mrow><msub><mi>e</mi><mi>j</mi></msub><mo>=</mo><mfrac><msub><mrow><mo>[</mo><msup><mrow><mo>(</mo><mi>line</mi><mo>_</mo><msubsup><mi>out</mi><mn>1</mn><mo>&prime;</mo></msubsup><mo>,</mo><mi>line</mi><mo>_</mo><msubsup><mi>out</mi><mn>2</mn><mo>&prime;</mo></msubsup><mo>,</mo><msubsup><mrow><mi>line</mi><mo>_</mo><mi>in</mi></mrow><mn>1</mn><mo>&prime;</mo></msubsup><mo>)</mo></mrow><mrow><mo>-</mo><mn>1</mn></mrow></msup><msubsup><mrow><mi>line</mi><mo>_</mo><mi>in</mi></mrow><mn>2</mn><mo>&prime;</mo></msubsup><mo>]</mo></mrow><mi>j</mi></msub><msub><mrow><mo>[</mo><msup><mrow><mo>(</mo><mrow><mi>line</mi><mo>_</mo></mrow><msub><mi>out</mi><mn>1</mn></msub><mo>,</mo><mi>line</mi><mo>_</mo><msub><mi>out</mi><mn>2</mn></msub><mo>,</mo><msub><mrow><mi>line</mi><mo>_</mo><mi>in</mi></mrow><mn>1</mn></msub><mo>)</mo></mrow><mrow><mo>-</mo><mn>1</mn></mrow></msup><msub><mrow><mi>line</mi><mo>_</mo><mi>in</mi></mrow><mn>2</mn></msub><mo>]</mo></mrow><mi>j</mi></msub></mfrac></mrow></math>]]></maths>其中,[vector]<sub>j</sub>表示向量vector的第j个分量;步骤5.5:根据已经求取的单映射阵H和内部参数矩阵K,求取摄像机的外部参数,具体方法如下:求取矩阵B_temp,计算公式为B_temp=K<sup>-1</sup>H令b<sub>i</sub>,i=1,2,3为矩阵B_temp的列向量,摄像机的外部参数为:<maths num="0005"><![CDATA[<math><mfenced open='{' close=''><mtable><mtr><mtd><mi>R</mi><mo>=</mo><mrow><mo>(</mo><mo>-</mo><mfrac><msub><mi>b</mi><mn>1</mn></msub><mrow><mo>|</mo><mo>|</mo><msub><mi>b</mi><mn>1</mn></msub><mo>|</mo><mo>|</mo></mrow></mfrac><mo>,</mo><mo>-</mo><mfrac><msub><mi>b</mi><mn>2</mn></msub><mrow><mo>|</mo><mo>|</mo><msub><mi>b</mi><mn>2</mn></msub><mo>|</mo><mo>|</mo></mrow></mfrac><mo>,</mo><mo>-</mo><mfrac><mrow><mi>det</mi><mrow><mo>(</mo><mfrac><msub><mi>b</mi><mn>1</mn></msub><mrow><mo>|</mo><mo>|</mo><msub><mi>b</mi><mn>1</mn></msub><mo>|</mo><mo>|</mo></mrow></mfrac><mo>,</mo><mfrac><msub><mi>b</mi><mn>2</mn></msub><mrow><mo>|</mo><mo>|</mo><msub><mi>b</mi><mn>2</mn></msub><mo>|</mo><mo>|</mo></mrow></mfrac><mo>,</mo><mfrac><mrow><mo>(</mo><msub><mi>b</mi><mn>1</mn></msub><mo>&times;</mo><msub><mi>b</mi><mn>2</mn></msub><mo>)</mo></mrow><mrow><mo>|</mo><mo>|</mo><msub><mi>b</mi><mn>1</mn></msub><mo>|</mo><mo>|</mo><mo>&CenterDot;</mo><mo>|</mo><mo>|</mo><msub><mi>b</mi><mn>2</mn></msub><mo>|</mo><mo>|</mo></mrow></mfrac><mo>)</mo></mrow><mrow><mo>(</mo><msub><mi>b</mi><mn>1</mn></msub><mo>&times;</mo><msub><mi>b</mi><mn>2</mn></msub><mo>)</mo></mrow></mrow><mrow><mo>|</mo><mo>|</mo><msub><mi>b</mi><mn>1</mn></msub><mo>|</mo><mo>|</mo><mo>&CenterDot;</mo><mo>|</mo><mo>|</mo><msub><mi>b</mi><mn>2</mn></msub><mo>|</mo><mo>|</mo></mrow></mfrac><mo>)</mo></mrow></mtd></mtr><mtr><mtd><mi>t</mi><mo>=</mo><mo>-</mo><mfrac><msub><mi>b</mi><mn>3</mn></msub><mrow><mo>|</mo><mo>|</mo><msub><mi>b</mi><mn>1</mn></msub><mo>|</mo><mo>|</mo></mrow></mfrac></mtd></mtr></mtable></mfenced></math>]]></maths>其中,‖·‖表示向量的第二范数,det(·)表示矩阵的行列式。
地址 210096江苏省南京市四牌楼2号