发明名称 一种单目视觉实时定位的方法
摘要 本发明涉及一种单目视觉实时定位的方法。本发明首先对摄像头进行标定,以获取内参数矩阵<img file="2014102552745100004dest_path_image002.GIF" wi="17" he="18" />。然后标定好摄像头后,根据基本的小孔成像原理,通过几何变换求解出需要测量的地面指定点<img file="2014102552745100004dest_path_image004.GIF" wi="17" he="18" />到参考点<img file="2014102552745100004dest_path_image006.GIF" wi="22" he="18" />的距离<img file="2014102552745100004dest_path_image008.GIF" wi="21" he="24" />和向量<img file="2014102552745100004dest_path_image010.GIF" wi="32" he="24" />与小车中心线的角度<img file="2014102552745100004dest_path_image012.GIF" wi="40" he="22" />。本发明在一般的几何换算定位基础上,考虑到摄像头主点一般不在图像中心,进行了几何修正,提高了测量精度。
申请公布号 CN104034305A 申请公布日期 2014.09.10
申请号 CN201410255274.5 申请日期 2014.06.10
申请人 杭州电子科技大学 发明人 戴国骏;曾虹;周天宝;童辉;郑嘉强
分类号 G01C3/10(2006.01)I;G06T7/00(2006.01)I 主分类号 G01C3/10(2006.01)I
代理机构 杭州求是专利事务所有限公司 33200 代理人 杜军
主权项 一种单目视觉实时定位的方法,其特征在于:将广角摄像头固定在一辆小车上,让摄像头以一定的俯角朝下,确定测量摄像头到地面的高度h,小车的长度l,摄像头俯仰角γ<sub>0</sub>,小车正前方的参考点M到小车的距离D,以及摄像头的水平视角2α和垂直视角2β;在获取以上参数后,设摄像头拍摄的图片大小H×W,目标P点在图像中为p,参考点M在图像中为m,摄像头光轴与地面交点G在图像中为主点g,采用如下步骤标定摄像头,以获取内参数矩阵R:第一步,制作标定板;打印出7×8正方形黑白格标定模版,将其固定在一个平整的方形板上,测量任意一个方形格的长度l<sub>1</sub>;第二步,标定摄像头按不同的方位摆放标定板,保证摄像头把全部的方形格都拍到,得到N张图像;用Matlab标定工具箱载入全部的图像,输入l<sub>1</sub>的大小,标定摄像头;最后得到摄像头内参数矩阵R,其中R包括主点图像平面坐标(c<sub>x</sub>,c<sub>y</sub>),以及摄像头的x轴方向的焦距f<sub>x</sub>与y轴方向的焦距f<sub>y</sub>;标定好摄像头后,根据基本的小孔成像原理,通过几何变换求解出需要测量的地面指定点P到参考点M的距离D<sub>1</sub>和向量<img file="FDA0000518506110000011.GIF" wi="94" he="71" />与小车中心线的角度angle,具体求解方案如下:第一步:建立P点和M点,以及交点G的二维坐标计算式,具体是:以G为原点,Y轴为光轴的投影线,X轴垂直Y轴以小车右侧为正,建立直角坐标系XGY;根据简单的几何变换,得出地面上任何一点i在此坐标下的坐标:<maths num="0001" id="cmaths0001"><math><![CDATA[<mrow><mfenced open='{' close=''><mtable><mtr><mtd><msub><mi>Y</mi><mi>i</mi></msub><mo>=</mo><mfrac><mrow><mi>h</mi><mo>&CenterDot;</mo><msub><mi>k</mi><mn>1</mn></msub><mo>&CenterDot;</mo><mi>v</mi><mo>&CenterDot;</mo><mrow><mo>(</mo><mn>1</mn><mo>+</mo><msubsup><mi>k</mi><mn>2</mn><mn>2</mn></msubsup><mo>)</mo></mrow></mrow><mrow><mn>1</mn><mo>-</mo><msub><mi>k</mi><mn>1</mn></msub><mo>&CenterDot;</mo><msub><mi>k</mi><mn>2</mn></msub><mo>&CenterDot;</mo><mi>v</mi></mrow></mfrac></mtd></mtr><mtr><mtd><msub><mi>X</mi><mi>i</mi></msub><mo>=</mo><mfrac><mrow><mrow><mo>(</mo><mi>UG</mi><mo>+</mo><msub><mi>Y</mi><mi>i</mi></msub><mo>)</mo></mrow><mo>&CenterDot;</mo><mi>u</mi></mrow><mi>UG</mi></mfrac><mo>&CenterDot;</mo><msub><mi>k</mi><mn>3</mn></msub><mo>&CenterDot;</mo><msub><mi>k</mi><mn>4</mn></msub></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000518506110000021.GIF" wi="1503" he="296" /></maths>其中,v=(v<sub>g</sub>‑v<sub>i</sub>),u=(u<sub>i</sub>‑u<sub>g</sub>),v<sub>g</sub>为主点g的图像坐标y值,v<sub>i</sub>为i点的图像坐标y值;u<sub>g</sub>为主点g的图像坐标x值,u<sub>i</sub>为i点的图像坐标x值;<img file="FDA0000518506110000022.GIF" wi="350" he="130" />k<sub>2</sub>=tan(γ<sub>0</sub>),<maths num="0002" id="cmaths0002"><math><![CDATA[<mrow><msub><mi>k</mi><mn>3</mn></msub><mo>=</mo><mfrac><mi>h</mi><mrow><mi>cos</mi><mrow><mo>(</mo><msub><mi>&gamma;</mi><mn>0</mn></msub><mo>)</mo></mrow></mrow></mfrac><mo>,</mo><msub><mi>k</mi><mn>4</mn></msub><mo>=</mo><mfrac><mrow><mn>2</mn><mo>&CenterDot;</mo><mi>tan</mi><mrow><mo>(</mo><msub><mi>&beta;</mi><mn>0</mn></msub><mo>)</mo></mrow></mrow><mi>W</mi></mfrac><mo>,</mo></mrow>]]></math><img file="FDA0000518506110000023.GIF" wi="1284" he="138" /></maths><img file="FDA0000518506110000024.GIF" wi="915" he="141" />其中,α<sub>0</sub>为点i的摄像头水平视角分量,β<sub>0</sub>为i的摄像头垂直视角分量;这样,根据这个公式算出P点和M点以及G的坐标分别为(X<sub>P</sub>,Y<sub>P</sub>),(X<sub>M</sub>,Y<sub>M</sub>),(0,0);第二步:分别计算P点和M点的摄像头视角分量,具体是:假定地平面是平整的,以保证测量的点是二维的;假设P点的图像坐标为p(u<sub>p</sub>,v<sub>p</sub>),M点的图像坐标为m(u<sub>m</sub>,v<sub>m</sub>);根据如下的式子计算任意点i的摄像头水平视角分量β<sub>0</sub>和垂直视角分量α<sub>0</sub>;若u<sub>i</sub>>c<sub>x</sub>且v<sub>i</sub>>c<sub>y</sub>,则<maths num="0003" id="cmaths0003"><math><![CDATA[<mrow><msub><mi>&alpha;</mi><mn>0</mn></msub><mo>=</mo><msup><mi>tan</mi><mrow><mo>-</mo><mn>1</mn></mrow></msup><mrow><mo>(</mo><mfrac><msub><mi>v</mi><mi>i</mi></msub><msub><mi>f</mi><mi>y</mi></msub></mfrac><mo>)</mo></mrow><mo>,</mo><msub><mi>&beta;</mi><mn>0</mn></msub><mo>=</mo><msup><mi>tan</mi><mrow><mo>-</mo><mn>1</mn></mrow></msup><mrow><mo>(</mo><mfrac><mrow><mi>W</mi><mo>-</mo><msub><mi>u</mi><mi>i</mi></msub></mrow><msub><mi>f</mi><mi>x</mi></msub></mfrac><mo>)</mo></mrow><mo>;</mo></mrow>]]></math><img file="FDA0000518506110000025.GIF" wi="804" he="137" /></maths>若u<sub>i</sub><c<sub>x</sub>且v<sub>i</sub>>c<sub>y</sub>,则<maths num="0004" id="cmaths0004"><math><![CDATA[<mrow><msub><mi>&alpha;</mi><mn>0</mn></msub><mo>=</mo><msup><mi>tan</mi><mrow><mo>-</mo><mn>1</mn></mrow></msup><mrow><mo>(</mo><mfrac><msub><mi>v</mi><mi>i</mi></msub><msub><mi>f</mi><mi>y</mi></msub></mfrac><mo>)</mo></mrow><mo>,</mo><msub><mi>&beta;</mi><mn>0</mn></msub><mo>=</mo><msup><mi>tan</mi><mrow><mo>-</mo><mn>1</mn></mrow></msup><mrow><mo>(</mo><mfrac><msub><mi>u</mi><mi>i</mi></msub><msub><mi>f</mi><mi>x</mi></msub></mfrac><mo>)</mo></mrow><mo>;</mo></mrow>]]></math><img file="FDA0000518506110000026.GIF" wi="717" he="136" /></maths>若u<sub>i</sub><c<sub>x</sub>且v<sub>i</sub><c<sub>y</sub>,则<maths num="0005" id="cmaths0005"><math><![CDATA[<mrow><msub><mi>&alpha;</mi><mn>0</mn></msub><mo>=</mo><msup><mi>tan</mi><mrow><mo>-</mo><mn>1</mn></mrow></msup><mrow><mo>(</mo><mfrac><mrow><mi>H</mi><mo>-</mo><msub><mi>v</mi><mi>i</mi></msub></mrow><msub><mi>f</mi><mi>y</mi></msub></mfrac><mo>)</mo></mrow><mo>,</mo><msub><mi>&beta;</mi><mn>0</mn></msub><mo>=</mo><msup><mi>tan</mi><mrow><mo>-</mo><mn>1</mn></mrow></msup><mrow><mo>(</mo><mfrac><msub><mi>u</mi><mi>i</mi></msub><msub><mi>f</mi><mi>x</mi></msub></mfrac><mo>)</mo></mrow><mo>;</mo></mrow>]]></math><img file="FDA0000518506110000027.GIF" wi="794" he="147" /></maths>若u<sub>i</sub>>c<sub>x</sub>且v<sub>i</sub><c<sub>y</sub>,则<maths num="0006" id="cmaths0006"><math><![CDATA[<mrow><msub><mi>&alpha;</mi><mn>0</mn></msub><mo>=</mo><msup><mi>tan</mi><mrow><mo>-</mo><mn>1</mn></mrow></msup><mrow><mo>(</mo><mfrac><mrow><mi>H</mi><mo>-</mo><msub><mi>v</mi><mi>i</mi></msub></mrow><msub><mi>f</mi><mi>y</mi></msub></mfrac><mo>)</mo></mrow><mo>,</mo><msub><mi>&beta;</mi><mn>0</mn></msub><mo>=</mo><msup><mi>tan</mi><mrow><mo>-</mo><mn>1</mn></mrow></msup><mrow><mo>(</mo><mfrac><mrow><mi>W</mi><mo>-</mo><msub><mi>u</mi><mi>i</mi></msub></mrow><msub><mi>f</mi><mi>x</mi></msub></mfrac><mo>)</mo></mrow><mo>;</mo></mrow>]]></math><img file="FDA0000518506110000028.GIF" wi="880" he="147" /></maths>其中,(u<sub>i</sub>,v<sub>i</sub>)为i点的图像坐标,分别带入P点和M点的图像坐标即可得到各自的两个分量值;其中g'为理想的主点位置,g为真实主点位置;这样将两个点各自得到的α<sub>0</sub>、β<sub>0</sub>值分别带入第一步得到的坐标计算式即可得出真实的坐标(X<sub>P</sub>,Y<sub>P</sub>)、(X<sub>M</sub>,Y<sub>M</sub>);第三步:计算P点到M点的距离和向量<img file="FDA0000518506110000031.GIF" wi="98" he="75" />与小车中心线的角度用勾股定理求出两点之间的距离<img file="FDA0000518506110000032.GIF" wi="702" he="96" />向量<img file="FDA0000518506110000033.GIF" wi="92" he="75" />与小车中心线的角度求解具体如下:若u<sub>p</sub><c<sub>x</sub>,则angle=angle1+angle2;若u<sub>p</sub>>u<sub>m</sub>,则angle=angle1‑angle2;若u<sub>p</sub>>=c<sub>x</sub>且u<sub>p</sub><=u<sub>m</sub>,则angle=angle2‑angle1;其中,angle1为向量<img file="FDA0000518506110000034.GIF" wi="96" he="75" />在XGY坐标系下相对于Y轴的夹角,即ΔXGM的夹角∠XGM,通过余弦定理计算;angle2为补偿角,即Y轴与车子中心线的夹角,该夹角通过测量G和M点间连线与车子中心线夹角得到,且在摄像头高度,位置,以及内参数不变的情况下这个补偿角也是不变的;最后小车到P点的距离,即为d=D+D<sub>1</sub>。
地址 310018 浙江省杭州市下沙高教园区2号大街