发明名称 一种基于法向流的直接估算相机自运动参数的方法
摘要 一种基于法向流场估算相机自运动参数的直接方法,建立在几何模型的基础上,能估算出相机自运动的参数。该方法包括六大步骤,步骤一:计算输入连续帧图像的法向流场;步骤二:投票得到可能的FOE点,选出其对应的纯旋转量并初步剔除FOE干扰项;步骤三:使用RANSAC算法估算出旋转参数ω,检验估算结果的可靠性并进一步剔除FOE干扰项;步骤四:利用旋转参数选取纯平移量,并根据半平面约束再次剔除FOE干扰项;步骤五:回溯验证估计的可靠性;步骤六:K均值聚类算法找出运动估计的最优解。本发明克服了现有自运动参数估计方法中的孔径问题,以及需要成像场景满足一些约束等缺点,估算得到的相机自运动参数可靠性好,可适用于所有单目系统,具有广阔的应用背景。
申请公布号 CN103310464A 申请公布日期 2013.09.18
申请号 CN201310257841.6 申请日期 2013.06.26
申请人 北京航空航天大学 发明人 袁丁;刘淼
分类号 G06T7/20(2006.01)I 主分类号 G06T7/20(2006.01)I
代理机构 北京慧泉知识产权代理有限公司 11232 代理人 王顺荣;唐爱华
主权项 1.一种基于法向流的直接估算相机自运动参数的方法,该方法是在下列运动模型下进行,假设场景不动,而相机进行一般运动,即包括平移运动t=[U V W]<sup>T</sup>和旋转运动ω=[ω<sub>1</sub> ω<sub>2</sub> ω<sub>3</sub>]<sup>T</sup>,则每一像素点处的法向流大小Vn(x)表示为如下矢量形式:<maths num="0001"><![CDATA[<math><mrow><mi>Vn</mi><mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>=</mo><msub><mi>Vn</mi><mi>trans</mi></msub><mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>+</mo><msub><mi>Vn</mi><mi>rot</mi></msub><mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mrow></math>]]></maths><maths num="0002"><![CDATA[<math><mrow><mo>=</mo><mfrac><mi>W</mi><mrow><mi>Z</mi><mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mrow></mfrac><mi>n</mi><mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mi>FOE</mi><mo>)</mo></mrow><mo>+</mo><msup><mi>n</mi><mi>T</mi></msup><mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mi>R</mi><mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mi>&omega;</mi><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></mrow></math>]]></maths>其中,Vn<sub>trans</sub>(x)和Vn<sub>rot</sub>(x)分别是法向流的平移分量和旋转分量;Z(x)是像素点x=(x,y)<sup>T</sup>处的景物深度;n(x)是其梯度方向;FOE是相机的平移运动轴与成像平面的交点,代表相机的平移运动方向;旋转运动的系数R(x)表示为:<maths num="0003"><![CDATA[<math><mrow><mi>R</mi><mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>=</mo><mfenced open='[' close=']'><mtable><mtr><mtd><mi>xy</mi><mo>/</mo><mi>f</mi></mtd><mtd><mo>-</mo><mrow><mo>(</mo><msup><mi>x</mi><mn>2</mn></msup><mo>/</mo><mi>f</mi><mo>+</mo><mi>f</mi><mo>)</mo></mrow></mtd><mtd><mi>y</mi></mtd></mtr><mtr><mtd><mrow><mo>(</mo><msup><mi>y</mi><mn>2</mn></msup><mo>/</mo><mi>f</mi><mo>+</mo><mi>f</mi><mo>)</mo></mrow></mtd><mtd><mo>-</mo><mrow><mo>(</mo><mi>xy</mi><mo>/</mo><mi>f</mi><mo>)</mo></mrow></mtd><mtd><mo>-</mo><mi>x</mi></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow></mrow></math>]]></maths>其中,f是成像系统的焦距,(x,y)<sup>T</sup>是像平面上任一像素点的坐标;利用公式(1)中法向流矢量的几何特性,通过选取特殊方向的法向流,使得法向流矢量中的一些混合成分为零,即找出表征某种特殊运动的法向流,例如,纯平移或者纯旋转法向流,然后利用这些特殊法向流对相机的自运动参数进行估计,这就是实现自运动参数估计的运动模型;其特征在于:该方法的步骤如下步骤一:读入连续帧图像I<sub>1</sub>(x)、I<sub>2</sub>(x),计算法向流场u<sub>n</sub>;法向流场是输入量,是直接通过分析运动前后连续帧图像的灰度-时间信息计算得到的,并且其计算过程不需要对成像场景有任何人为约束条件;从实际应用的角度,每一像素点的法向流大小都是光流在该点梯度方向上的投影;光流代表像平面上每一像素点的运动,但是由于孔径问题的存在,很难在没有引入人为约束条件的情况下准确计算出每一像素点出的光流矢量;而法向流仅是光流在梯度方向上的分量,它直接通过连续帧图像计算得到,它同样包含大量运动信息;首先光流代表像素点的运动,其约束方程为:E<sub>x</sub>u+E<sub>y</sub>v+E<sub>t</sub>=0   (3)其中,[uv]是在像素点(x,y)处的光流矢量,[E<sub>x</sub>E<sub>y</sub>]是在像素点(x,y)处的灰度梯度方向,E<sub>t</sub>是点(x,y)处的灰度-时间变化率;E<sub>x</sub>,E<sub>y</sub>和E<sub>t</sub>由图像序列的灰度信息直接计算得出:<maths num="0004"><![CDATA[<math><mrow><mfenced open='{' close=''><mtable><mtr><mtd><msub><mi>E</mi><mi>x</mi></msub><mo>=</mo><msub><mi>I</mi><mn>2</mn></msub><mrow><mo>(</mo><mi>i</mi><mo>+</mo><mn>1</mn><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mo>-</mo><msub><mi>I</mi><mn>2</mn></msub><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow></mtd></mtr><mtr><mtd><msub><mi>E</mi><mi>y</mi></msub><mo>=</mo><msub><mi>I</mi><mn>2</mn></msub><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mo>-</mo><msub><mi>I</mi><mn>2</mn></msub><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow></mtd></mtr><mtr><mtd><msub><mi>E</mi><mi>t</mi></msub><mo>=</mo><msub><mi>I</mi><mn>2</mn></msub><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mo>-</mo><msub><mi>I</mi><mn>1</mn></msub><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>4</mn><mo>)</mo></mrow></mrow></math>]]></maths>其中I<sub>1</sub>,I<sub>2</sub>是前后两帧图像的灰度矩阵,I(i,j)表示第i行第j列像素点的灰度值;法向流是光流在梯度方向上的投影,因此,法向流矢量定义为:<maths num="0005"><![CDATA[<math><mrow><msub><mi>u</mi><mi>n</mi></msub><mo>=</mo><mrow><mo>(</mo><msup><mfenced open='[' close=']'><mtable><mtr><mtd><mi>u</mi></mtd><mtd><mi>v</mi></mtd></mtr></mtable></mfenced><mi>T</mi></msup><mo>&CenterDot;</mo><mi>n</mi><mo>)</mo></mrow><mfrac><mi>n</mi><mrow><mo>|</mo><mo>|</mo><mi>n</mi><mo>|</mo><mo>|</mo></mrow></mfrac><mo>=</mo><msup><mrow><mo>[</mo><mfrac><mrow><mo>-</mo><msub><mi>E</mi><mi>x</mi></msub><msub><mi>E</mi><mi>t</mi></msub></mrow><mrow><msup><msub><mi>E</mi><mi>x</mi></msub><mn>2</mn></msup><mo>+</mo><msup><msub><mi>E</mi><mi>y</mi></msub><mn>2</mn></msup></mrow></mfrac><mfrac><mrow><mo>-</mo><msub><mi>E</mi><mi>y</mi></msub><msub><mi>E</mi><mi>t</mi></msub></mrow><mrow><msup><msub><mi>E</mi><mi>x</mi></msub><mn>2</mn></msup><mo>+</mo><msup><msub><mi>E</mi><mi>y</mi></msub><mn>2</mn></msup></mrow></mfrac><mo>]</mo></mrow><mi>T</mi></msup><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>5</mn><mo>)</mo></mrow></mrow></math>]]></maths>其中,矢量u<sub>n</sub>代表法向流矢量,<img file="FDA00003408999300023.GIF" wi="334" he="174" />是像素点(x,y)处的单位梯度方向;由公式(4)和公式(5)知,不需借助于任何人为约束条件,从运动前后的图像序列中能直接计算出任意像素点的法向流矢量;步骤二:“投票”得到可能的FOE点,找出对应的纯旋转量并初步剔除FOE干扰项;由已得到的法向流场入手,采用“投票”的方式筛选出特殊法向流矢量,然后通过分析这些特殊法向流与相机运动参数之间的几何关系,估算出相机的自运动参数;由上述公式(1)知,法向流中的平移分量Vn<sub>trans</sub>(x)视为向量n(x)和(x-FOE)的内积;而如果在某像素点处两向量垂直,则它们的内积为零;但是若想选取满足这种正交特性的点,确定FOE的具体位置是先决条件;因此,采用“投票”的方式选出可能的FOE点,其约束条件为:n(x)(x-FOE)=0   (6)其中,n(x)是像素点x=(x,y)<sup>T</sup>处的梯度方向,FOE代表相机平移运动的方向;满足公式(6)纯旋转约束的像素点处的法向流中平移分量为零,因此该点为“纯旋转点”,其法向流为“纯旋转量”;由纯旋转约束知,每个纯旋转点的判定都是基于一个特定的FOE,如果该点为纯旋转点,则FOE必然位于经过该点且垂直于其法向流的直线上,而这一像素点也是该FOE的“支持者”,直线为“投票线”;对于其它纯旋转点亦是如此,因此FOE位于所有投票线的交点处;采用的投票,是在纯旋转量和FOE都为未知的情况下进行的,因此,首先假设所有像素点均为纯旋转点,如此在每一像素点处进行投票之后,“支持者”最多的FOE拥有最大数量纯旋转个数,可靠性相对较高;因此,按照“支持者”从多到少的顺序选取可能的FOE来进行进一步的检验;首先对于已选定的FOE,按照公式(6)中的纯旋转约束选取满足条件的纯旋转量;与公式(1)比较,纯旋转点处的法向流中平移分量Vn<sub>trans</sub>(x)=0,因此纯旋转量满足:Vn(x)=n<sup>T</sup>(x)R(x)ω   (7)即,纯旋转量与纯旋转点之间存在一种线性关系,而相机的旋转运动ω是该线性关系的系数;其中,Vn(x)是该点x处法向流的大小,n(x)是其梯度方向,R(x)为旋转运动的系数,表示同公式(2);公式(7)中的ω是相机的旋转运动参数;因此,如果可以找到三个以上的纯旋转点及其法向流,则可以根据上式估算出相机的旋转参数;反之,如果根据约束公式(6)选取的纯旋转量少于三个,该FOE将被视为干扰项而被剔除;步骤三:用RANSAC算法估算出旋转参数ω,检验估算结果的可靠性并进一步验证FOE;采用随机抽样一致即RANSAC算法来估算公式(7)中线性模型,即拟合出相机的旋转参数;由于FOE是通过投票的方式得到的,因此该FOE及其纯旋转量中可能包含有部分干扰项,而RANSAC算法能有效地排除干扰,因此采用RANSAC算法估算相机的旋转参数,并将该算法能得到有用结果的可能性P作为衡量该FOE是否可靠的标准;P表示为P=1-(1-ρ<sup>n</sup>)<sup>m</sup>   (8)其中,m是迭代次数,n是估算模型需要随机选取数据的最小个数;如果某像素点适用于估算的模型,认为其为“局内点”;ρ是局内点占所有对应于该FOE的纯旋转点的百分比;将P小于阈值P<sub>thres</sub>的FOE视为干扰项而剔除;此时,相机的运动参数FOE-ω一一对应,而多数FOE干扰项已被剔除;运动参数对FOE-ω是否可靠将由纯平移约束进一步验证;步骤四:选取纯平移量并根据半平面约束再次剔除FOE干扰项;根据已得的旋转参数ω选取纯平移量来验证运动参数FOE-ω估计的可靠性;纯旋转量的选取是基于特定FOE的,类似地,通过分析基于旋转参数ω的运动模型,筛选出旋转分量为零的纯平移法向流,然后通过分析这些纯平移量的几何特性来进一步剔除运动估计的干扰项;首先,基于旋转参数ω的运动模型是一族以光心为顶点,ω为轴的椎体,椎体在成像平面上的投影为一族二次曲线:<maths num="0006"><![CDATA[<math><mrow><mi>F</mi><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>=</mo><msup><mrow><mo>(</mo><mfrac><msub><mi>&omega;</mi><mn>1</mn></msub><msub><mi>&omega;</mi><mn>3</mn></msub></mfrac><mi>x</mi><mo>+</mo><mfrac><msub><mi>&omega;</mi><mn>2</mn></msub><msub><mi>&omega;</mi><mn>3</mn></msub></mfrac><mi>y</mi><mo>+</mo><mi>f</mi><mo>)</mo></mrow><mn>2</mn></msup><mo>/</mo><mrow><mo>(</mo><msup><mi>x</mi><mn>2</mn></msup><mo>+</mo><msup><mi>y</mi><mn>2</mn></msup><mo>+</mo><msup><mi>f</mi><mn>2</mn></msup><mo>)</mo></mrow><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>9</mn><mo>)</mo></mrow></mrow></math>]]></maths><maths num="0007"><![CDATA[<math><mrow><mo>=</mo><mi>C</mi></mrow></math>]]></maths>其中,f是相机的焦距,ω=[ω<sub>1</sub> ω<sub>2</sub> ω<sub>3</sub>]<sup>T</sup>是相机的旋转运动参数,C是0到(1+(ω<sub>1</sub>/ω<sub>3</sub>)<sup>2</sup>+(ω<sub>2</sub>/ω<sub>3</sub>)<sup>2</sup>)之间的常数;这是一族由旋转轴(ω<sub>1</sub>/ω<sub>3</sub>,ω<sub>2</sub>/ω<sub>3</sub>)确定的曲线,在曲线上任一点处,若其法向流矢量垂直于该点切线方向,则其中旋转信息为零,为“纯平移量”;分析纯平移量的几何特性知,若相机向前即靠近场景运动,则FOE应位于与该纯平移量相反的半平面;反之,若相机向后即远离场景运动,则FOC应位于与该纯平移量一致的半平面;其中FOE和FOC代表相机平移运动的不同方向,这就是纯平移量的半平面约束;根据已计算得到的旋转参数选取纯平移量,而后检验该FOE或FOC是否满足半平面约束,如果不满足则视为干扰项剔除;在验证过程中通过设定一个很小的阈值δ来检验;步骤五:回溯验证;通过三次筛选剔除,大部分FOE干扰项已被排除;如果本次相机自运动参数估计可靠,则可信域内的FOE点应围绕在真值附近,呈现聚集状态;因此,采用回溯验证的方法,将最后筛选得到的“可信”的FOE回溯到原始图像上,如果FOE呈现出聚集状态,则认为本次估计可靠;否则,适当修改纯旋转量或者纯平移量选取时设定的阈值进行微调,最终使得估计可靠;步骤六:K均值聚类算法找出运动估计的最优解;在由回溯验证确保本次估算结果可靠之后,采用K-均值聚类算法找出最优的运动参数对FOE-ω作为最终估算结果。
地址 100191 北京市海淀区学院路37号