发明名称 一种基于固定相机和单靶标的单轴旋转角的视觉测量方法
摘要 一种基于固定相机和单靶标的单轴旋转角的视觉测量方法,该方法有四大步骤:步骤一:相机内外参数标定;步骤二:绕轴旋转运动相关的外参数初值求取;步骤三:对内参数p<sub>in</sub>和外参数p<sub>out</sub>进行非线性优化;步骤四:利用标定的内外参数,测量旋转角度。本发明是一种利用单目相机对绕轴旋转运动的旋转角进行测量的方法。它解决了现有视觉测角方法中靶标安装困难的问题;同时,本发明对有遮挡的情况同样适用,实用性很好。
申请公布号 CN104374338B 申请公布日期 2017.04.26
申请号 CN201410506279.0 申请日期 2014.09.28
申请人 北京航空航天大学 发明人 全权;董洪信;张瑞峰;付强;蔡开元
分类号 G01B11/26(2006.01)I 主分类号 G01B11/26(2006.01)I
代理机构 北京慧泉知识产权代理有限公司 11232 代理人 王顺荣;唐爱华
主权项 一种基于固定相机和单靶标的单轴旋转角的视觉测量方法,其特征在于:该方法具体步骤如下:步骤一:相机内外参数标定;在具体实现过程中,利用二维棋盘格作为靶标;采用的图片序列,包含一张基准位置时的图片和m张旋转部件旋转到不同角度时的图片;假设这m个角度为θ<sub>1</sub>,θ<sub>2</sub>,...,θ<sub>m</sub>,接下来,利用MATLAB 2014自带的棋盘格角点提取函数detectCheckerboardPoints进行角点提取,并结合MATLAB标定工具进行内参标定,求得内参数p<sub>in</sub>和m+1个位姿的外部参数;这些外部参数表示为<img file="FDA0001217057690000011.GIF" wi="494" he="86" /><img file="FDA0001217057690000015.GIF" wi="200" he="86" />表示在旋转角为θ<sub>i</sub>时,相机与靶标之间的旋转矩阵与平移向量,i=0时表示基准位置时,相机与靶标之间的旋转矩阵与平移向量;步骤二:绕轴旋转运动相关的外参数初值求取(1)、根据步骤一中求得的外参数,由(1.1)求取在旋转角为θ<sub>i</sub>时,靶标相对于基准时靶标的旋转矩阵和平移向量<img file="FDA0001217057690000016.GIF" wi="479" he="86" /><img file="FDA0001217057690000012.GIF" wi="1190" he="87" />(2)、求取<img file="FDA0001217057690000017.GIF" wi="99" he="63" />t及θ<sub>i</sub>初值:定义r<sub>1</sub>,r<sub>2</sub>,r<sub>3</sub>分别为<img file="FDA0001217057690000018.GIF" wi="83" he="63" />的第1,2,3列,且向量[t]<sub>×</sub>表示如下矩阵<img file="FDA0001217057690000013.GIF" wi="1086" he="232" />则,求得<img file="FDA0001217057690000014.GIF" wi="1349" he="174" />其中,<img file="FDA0001217057690000019.GIF" wi="657" he="103" />S<sub>i,j</sub>表示矩阵S第i行j列的元素,然后,r<sub>1</sub>由下式求得<img file="FDA0001217057690000021.GIF" wi="1198" he="143" />上式通过对<img file="FDA0001217057690000022.GIF" wi="402" he="124" />作SVD分解求得,若<img file="FDA0001217057690000023.GIF" wi="598" he="127" />则x为V的第三列,然后,得到<img file="FDA00012170576900000211.GIF" wi="1055" he="77" /> θ<sub>i</sub>=2arctan((A<sup>T</sup>A)<sup>‑1</sup>(A<sup>T</sup>B)),      (1.6)其中<img file="FDA0001217057690000024.GIF" wi="1038" he="143" />这里的vec(·)表示矩阵的拉直,所以,<img file="FDA0001217057690000025.GIF" wi="957" he="71" /><img file="FDA0001217057690000026.GIF" wi="934" he="118" />(3)、根据求得的<img file="FDA00012170576900000212.GIF" wi="99" he="63" />t及θ<sub>i</sub>初值求解,根据(1.6),求R<sub>cw</sub>,T<sub>cw</sub>的值<img file="FDA0001217057690000027.GIF" wi="1213" he="87" />步骤三:对内参数p<sub>in</sub>和外参数p<sub>out</sub>进行非线性优化;这里p<sub>in</sub>∈R<sup>9</sup>,p<sub>out</sub>∈R<sup>10</sup>表示如下<img file="FDA0001217057690000028.GIF" wi="1197" he="94" />其中,<img file="FDA00012170576900000213.GIF" wi="91" he="54" />v<sub>cw</sub>∈R<sup>3</sup>分别为<img file="FDA00012170576900000214.GIF" wi="104" he="62" />R<sub>cw</sub>所对应的Rodrigues向量;一个Rodrigues向量ν与其对应的旋转矩阵R间的转换关系如下<img file="FDA0001217057690000029.GIF" wi="454" he="125" /><img file="FDA00012170576900000210.GIF" wi="990" he="167" />其中,I<sub>3</sub>表示3阶的单位矩阵;对各图像点的坐标作如下标记,靶标1上,在旋转角为θ<sub>i</sub>时,对应于第j个靶标特征点的角点坐标记为<img file="FDA00012170576900000215.GIF" wi="674" he="85" />靶标上的点记为X<sub>b</sub>={(x<sub>j</sub>,y<sub>j</sub>,0)<sup>T</sup>,j=1,2,...,n}由于图像提取过程中是存在误差的,因此,选取图像的重投影误差和作为优化目标,由靶标点及p<sub>out</sub>,获取重投影点<img file="FDA0001217057690000037.GIF" wi="185" he="91" />的过程如下:&lt;1&gt;、旋转角为θ<sub>i</sub>时,靶标点(x<sub>j</sub>,y<sub>j</sub>,0)<sup>T</sup>转化为世界坐标系下的点<img file="FDA0001217057690000038.GIF" wi="287" he="95" /><img file="FDA0001217057690000031.GIF" wi="1302" he="231" />&lt;2&gt;、求取相应的重投影点<img file="FDA0001217057690000039.GIF" wi="185" he="94" /><img file="FDA0001217057690000032.GIF" wi="1422" he="79" /><img file="FDA0001217057690000033.GIF" wi="1406" he="79" />重投影误差定义为<img file="FDA0001217057690000034.GIF" wi="1654" he="132" />优化问题描述为<img file="FDA0001217057690000035.GIF" wi="1365" he="119" />该优化问题利用稀疏的Levenberg‑Marquardt算法来解决优化问题,获得<img file="FDA00012170576900000310.GIF" wi="99" he="63" />t,R<sub>cw</sub>,T<sub>cw</sub>的信息,这些信息将用于步骤四的旋转角度求取;步骤四:利用标定的内外参数,测量旋转角度;首先,根据已经标定好的信息,对角点进行匹配;假设在θ处拍摄的照片的角点坐标为X<sup>c</sup>={(u<sub>i</sub>,v<sub>i</sub>)<sup>T</sup>,i=1,2,...,N<sub>c</sub>},此时图片中可能存在遮挡,因此匹配并不能自动完成,根据如下算法:㈠、寻找可能匹配的点集;对每个角点与靶标点对<img file="FDA00012170576900000311.GIF" wi="467" he="87" />计算一个得分Score<sub>i,j</sub>,计算方法如下:(1)求取(x<sub>j</sub>,y<sub>j</sub>,0)<sup>T</sup>所对应的世界坐标<img file="FDA00012170576900000312.GIF" wi="258" he="88" /><img file="FDA0001217057690000036.GIF" wi="451" he="231" />(2)求取像点(u<sub>i</sub>,v<sub>i</sub>)<sup>T</sup>在<img file="FDA00012170576900000313.GIF" wi="128" he="70" />平面上的原像<img file="FDA00012170576900000314.GIF" wi="312" he="91" />求取方法如下<img file="FDA0001217057690000041.GIF" wi="443" he="79" /><img file="FDA0001217057690000042.GIF" wi="389" he="84" /><img file="FDA0001217057690000043.GIF" wi="173" he="63" />其中,<img file="FDA0001217057690000044.GIF" wi="657" he="151" /><img file="FDA0001217057690000049.GIF" wi="180" he="87" />为(u<sub>i</sub>,v<sub>i</sub>)<sup>T</sup>对应的归一化坐标,由迭代求得;(3)定义Score<sub>i,j</sub>如下式<img file="FDA0001217057690000045.GIF" wi="1277" he="111" />(4)选取阈值τ<sub>m</sub>=0.1d,这里d是棋盘格格子的长度,然后定义可能匹配的点的集合<img file="FDA0001217057690000046.GIF" wi="1486" he="110" />㈡、利用直方图,计算角度;对于Ω中的元素,由下式计算θ<sub>i,j</sub><img file="FDA0001217057690000047.GIF" wi="1206" he="231" />然后画出<img file="FDA00012170576900000410.GIF" wi="1059" he="111" />分布的直方图,该直方图中有360个直方块,第k个直方块中的元素为((k‑181)°,(k‑179)°)∩Ω中的元素个数;对θ的估计值为<img file="FDA0001217057690000048.GIF" wi="517" he="103" />㈢、利用求得的角度,选择正确的匹配对;i所对应的靶标点M(j)对应于在正确角范围内,得分最小的点,也就是<img file="FDA00012170576900000411.GIF" wi="405" he="79" />满足θ<sub>i,j</sub>∈[θ‑1°,θ+1°]若不存在θ<sub>i,j</sub>∈[θ‑1°,θ+1°],则令M(i)=0;㈣、非线性优化优化问题描述为<img file="FDA0001217057690000051.GIF" wi="1990" he="134" />其中,<img file="FDA0001217057690000052.GIF" wi="414" he="158" />该优化问题通过MATLAB自带的lsqnonlin函数进行求解。
地址 100191 北京市海淀区学院路37号