一种无人机序列影像批处理三维重建方法与流程

文档序号:12472266阅读:来源:国知局

技术特征:

1.一种无人机序列影像批处理三维重建方法,其特征在于,包括以下步骤:

步骤一、融合低精度GPS/INS信息的影像匹配:

假设一组影像I=Ii,...,In及对应的概略的位置姿态信息G=Gi,...,Gn,以及一个匹配的视图对集的子集Vi

㈠位置姿态信息

通过GPS和IMU获得的位置姿态信息Gi=[Ri|ti],其中Ri是一个3×3的旋转矩阵,ti是一个三维空间向量分别代表相机的位置和姿态角;标准GPS接收机得到的全局位置坐标是以经纬度和高程表示地球某一位置的WGS84坐标系;下一步将GPS数据转换为地心地固坐标系,相机的定向用偏航角、俯仰角和滚转角来表示,其中,偏航角从地磁北起算;此时,外部姿态Gi包括了转换到了地心地固坐标系的GPS坐标和三个旋转角;再加上已知的相机的内方位参数,则可以得到每张影像Ii的完整的投影矩阵

<mrow> <msub> <mover> <mi>P</mi> <mo>^</mo> </mover> <mn>1</mn> </msub> <mo>=</mo> <msub> <mi>KG</mi> <mi>i</mi> </msub> <mo>=</mo> <mi>K</mi> <mo>&lsqb;</mo> <msub> <mi>R</mi> <mi>i</mi> </msub> <mo>|</mo> <msub> <mi>t</mi> <mi>i</mi> </msub> <mo>&rsqb;</mo> <mo>;</mo> </mrow>

㈡视图选择

为识别可能存在共同对应特征点的影像,为每张影像Ii选择相应的具有足够相似度的候选匹配影像集Ti=T1…Tk;接下来,影像集将根据影像对应的GPS/IMU信息得到的概略的重叠区域标准剔除影像;若场景的精细三维模型是可见的,影像间的重叠区域可通过视图Ii和Ij之间相互投影的视锥体来得到;若场景的精细三维模型是不可显示的,则通过估计最大景深Si来限制影像Ii可见的区域;

且,最大景深值Sij可以通过影像对<Ii,Ij>的基线恢复出来;定义Sij

Sij=t.d(Gi,Gj),

其中,d(.,.)表示欧氏距离,t是一个决定重建所需精度的参数;

给定以上约束条件,可以通过影像对<Ii,Ij>的重建计算最大景深值S:

S=min(Sij,Si,Sj),

并且,该影像有重叠,为计算一个粗略的重叠标准定义一个平行于影像Ii到相机中心点Gi的距离为S的平面πi;Ri和Rj表示视图Ii和Ij投影在平面πi上的图像范围;影像的重叠度可以通过下式计算:

<mrow> <msubsup> <mi>O</mi> <mi>j</mi> <mi>i</mi> </msubsup> <mo>=</mo> <mfrac> <mrow> <mi>a</mi> <mrow> <mo>(</mo> <msub> <mi>R</mi> <mi>i</mi> </msub> <mo>&cap;</mo> <msub> <mi>R</mi> <mi>i</mi> </msub> <mo>)</mo> </mrow> </mrow> <mrow> <mi>a</mi> <mrow> <mo>(</mo> <msub> <mi>R</mi> <mi>i</mi> </msub> <mo>&cup;</mo> <msub> <mi>R</mi> <mi>j</mi> </msub> <mo>)</mo> </mrow> </mrow> </mfrac> <mo>,</mo> </mrow>

其中,a(.)表示投影矩形的面积;

步骤二、建立极线图:

首先,对每幅图像提取尺度不变特征点,采用高效的SIFT提取算子和描述算子,图像对之间的特征点匹配应用基于CUBLAS矩阵运算库的GPU加速的图像匹配方法;

在对每个候选的视图Ii匹配上相关的影像集Vi之后,利用五点算法进行几何验证;

根据特征点描述子的匹配会出现错误的外点,采用RANSAC算法进行剔除;

匹配的输出结果是用极线图表示的结构图,极线图由对应影像的顶点集v={I1...IN}和边界集ε∈{eij|i,j∈v}组成并是成对重建的,即由视图i和j之间的相对定向eij=<Pi,Pj>和各自的影像三角化后的点集组成;其中,

Pi=Ki[I|O],Pj=Kj[R|t];

步骤三、计算全局一致性的旋转集:

给定了极线图接下来确定相机的初始位置和定向信息;

根据两幅图像之间的约束,两个相机的绝对位置姿态(Ri,ti)和(Rj,tj)需要满足旋转一致性和平移方向一致性

首先,视图对i和j之间的相对旋转集{Rij}通过解超定方程组可以升级为全局一致性的旋转集{Ri},

RijRi=Rj

上述以Ri为标准正交为限制条件;

然后利用SVD分解使Ri满足正交约束,得到最终解

通过解出系统初始的近似旋转矩阵,并用Frobenius范数将近似旋转矩阵投影到最接近的旋转矩阵;

通过下面的公式来计算权重:

<mrow> <msub> <mi>&omega;</mi> <mrow> <mi>i</mi> <mi>j</mi> </mrow> </msub> <mo>=</mo> <msqrt> <mi>N</mi> </msqrt> <mi>m</mi> <mi>i</mi> <mi>n</mi> <mrow> <mo>(</mo> <msub> <mi>c</mi> <mi>i</mi> </msub> <mo>,</mo> <msub> <mi>c</mi> <mi>j</mi> </msub> <mo>)</mo> </mrow> </mrow>

其中,N=|Fij|是视图i和j之间的内点数量,ci,cj是特征覆盖范围值,

其中,α是所需内点的最小数量,表示整个影像的面积,A(Fij,r)是特征点Fij覆盖范围经过以为圆半径进行扩张操作后的面积;

结果,具有恰当分布对应点的聚合的视图对会比那些有同样多的对应点但随机分布的视图对所占权重要高;因此,全局一致性的旋转集可以拓展为加了权重的形式:

<mrow> <msub> <mi>&omega;</mi> <mrow> <mi>i</mi> <mi>j</mi> </mrow> </msub> <mrow> <mo>(</mo> <msub> <mi>R</mi> <mrow> <mi>i</mi> <mi>j</mi> </mrow> </msub> <msubsup> <mi>r</mi> <mi>i</mi> <mi>k</mi> </msubsup> <mo>-</mo> <msubsup> <mi>r</mi> <mi>j</mi> <mi>k</mi> </msubsup> <mo>)</mo> </mrow> <mo>=</mo> <msub> <mi>O</mi> <mrow> <mn>3</mn> <mi>x</mi> <mn>1</mn> </mrow> </msub> <mo>,</mo> </mrow>

其中,为Ri的列(k=1,2,3),上式可以通过稀疏的最小二乘算子解算出来;

步骤四、初始化相机中心点:

为实现相机的中心点在地心地固坐标系下的初始化,需将旋转矩阵Ri转换为适应GPS的方式,可以通过将相对定向vij调整为相应的GPS定向

<mrow> <msub> <mi>v</mi> <mrow> <mi>i</mi> <mi>j</mi> </mrow> </msub> <mo>=</mo> <mi>R</mi> <msub> <mover> <mi>v</mi> <mo>^</mo> </mover> <mrow> <mi>i</mi> <mi>j</mi> </mrow> </msub> <mo>,</mo> </mrow>

其中,vij是全局坐标系中图像Ii和图像Ij之间的相对平移,是GPS坐标系中图像Ii和图像Ij之间的相对平移,可通过奇异值分解法解算R;

步骤五、生成对应特征点轨迹:

极线图存储了一个相对定向集和视图对<Ii,Ij>之间的对应特征点;每张影像Ii都和邻近一定数量的影像匹配,匹配的信息被存储在本地的节点;

是一个单向图,Ii→Ij的匹配并不一定包含Ij←Ii的匹配;然后,对于极线图中的每张图节点Ii,节点被聚合成轨迹(track)其中f=<xk,yk>表示特征点在影像Ik中的坐标位置;

即,根据图像匹配关系,寻找每幅图像中的每个特征点在其他匹配图像中对应的特征点,所有上述特征点,构成一个点轨迹,对应现实世界中的一个3D点;

由于点轨迹是为每张影像而建,并存储在本地,起初,点轨迹集是冗余的,影像Ik的一个特征点f可以属于几个不同的轨迹;

然后,点轨迹应用光束法平差进行整体优化,并使用最小的轨迹集来表达;

确定的一个轨迹的子集,所述子集只包括极线图上每一个匹配的对应特征点一次;

运用贪婪搜索算法来确定轨迹集的最小子集,该最小子集随后被用来初始化稀疏的3D结构;

步骤六、初始化3D结构:

通过前述步骤,可得到相机的方向信息集合和点轨迹

根据每个点轨迹确定3D点的坐标;

若相机的方向信息集总体上达不到像素级的精度且中还有外点,基于的线性三角化将导致随机的大的重建错误,即3D结构初始化错误;

可以发现直接的三角化方法不能保证足够的结构初始化的精度,甚至经常连cheirality约束都不能满足;但是,极线图能提供视图对之间像素级或亚像素级精度的相机方向信息,可以满足两视图三角化的精度;

因此,在每个点轨迹中基于相对定向对具有最长基线的视图对进行两视图三角化,即选取每个点轨迹中特征点所在图像的GPS坐标相差最大的两个特征点做三角化,得到初始3D点;

步骤七、光束法平差:

给定一个量测值集合,光束法平差可以通过最小化重投影误差来优化相机的定向和结构恢复:

其中,xij是在未知相机Pi中未知3D点Xj的观测值,vij是一个二进制的变量,当点Xj在影像Pi中可见时为1,否则为0;

所述光束法平差是通过最小化非线性实值函数的平方和来调整每个3D点和相机中心点之间的射线束;

当存在高斯噪音的情况下,非线性的最小二乘法可以实现最大似然估计,必要的限制条件是初始值必须足够接近于整体最小值;

在光束法平差的基本实现形式是最小化矢量的平方和Σi||∈||2,其中

因此,鲁棒的目标函数可以以重设误差矢量∈′i=wii的权重值来实现,如下式所示:

<mrow> <mo>|</mo> <mo>|</mo> <msubsup> <mo>&Element;</mo> <mi>i</mi> <mo>&prime;</mo> </msubsup> <mo>|</mo> <msup> <mo>|</mo> <mn>2</mn> </msup> <mo>=</mo> <msubsup> <mi>w</mi> <mi>i</mi> <mn>2</mn> </msubsup> <mo>|</mo> <mo>|</mo> <msub> <mo>&Element;</mo> <mi>i</mi> </msub> <mo>|</mo> <mo>|</mo> <mo>=</mo> <mi>C</mi> <mrow> <mo>(</mo> <mo>|</mo> <mo>|</mo> <msub> <mo>&Element;</mo> <mi>i</mi> </msub> <mo>|</mo> <mo>|</mo> <mo>)</mo> </mrow> </mrow>

由此得出,上式满足ΣiC(||∈i||)=Σi||∈i||2的要求,其中,

<mrow> <msub> <mi>w</mi> <mi>i</mi> </msub> <mo>=</mo> <mfrac> <msqrt> <mrow> <mi>c</mi> <mrow> <mo>(</mo> <mo>|</mo> <mo>|</mo> <msub> <mo>&Element;</mo> <mi>i</mi> </msub> <mo>|</mo> <mo>|</mo> <mo>)</mo> </mrow> </mrow> </msqrt> <mrow> <mo>|</mo> <mo>|</mo> <msub> <mo>&Element;</mo> <mi>i</mi> </msub> <mo>|</mo> <mo>|</mo> </mrow> </mfrac> </mrow>

权值wi常被称为衰减因子,用于降低外点的影响;

步骤八、稠密点云重建:

采用PMVS算法进行稠密点云的重建;

步骤九、纹理映射:

对重建的稠密点云基于Poisson算法构建场景或物体的网格表面,并通过遮挡分析,实现纹理自动映射。

2.根据权利要求1所述的无人机序列影像批处理三维重建方法,其特征在于,所述步骤一的㈠位置姿态信息中,所述投影矩阵给出了相机的位置和姿态信息的概略值,所述概略值在用于后续的处理过程之前,需首先进行预处理,剔除明显错误的数据,用前后两张影像的位置姿态数据的平均值来近似代替:

<mrow> <msub> <mover> <mi>P</mi> <mo>^</mo> </mover> <mi>i</mi> </msub> <mo>=</mo> <mrow> <mo>(</mo> <msub> <mover> <mi>P</mi> <mo>^</mo> </mover> <mrow> <mi>i</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>+</mo> <msub> <mover> <mi>P</mi> <mo>^</mo> </mover> <mrow> <mi>i</mi> <mo>+</mo> <mn>1</mn> </mrow> </msub> <mo>)</mo> </mrow> <mo>/</mo> <mn>2</mn> <mo>,</mo> </mrow>

当错误数据出现航带的起始点或终点时,则用前后两条航带起始点或终点影像的位置姿态数据的平均值来代替。

3.根据权利要求1所述的无人机序列影像批处理三维重建方法,其特征在于,所述步骤一的㈡视图选择中,投影矩阵和标准平面πi之间的夹角小于最大旋转角度α,否则就设置为0。

4.根据权利要求1所述的无人机序列影像批处理三维重建方法,其特征在于,所述步骤一的㈡视图选择中,对于每组影像对<Ii,Ij>计算其重叠区域其中Ij∈Ti

5.根据权利要求1所述的无人机序列影像批处理三维重建方法,其特征在于,所述步骤一的㈡视图选择中,若重叠区域值大于设定的阈值,Ij则被加入到子集Vi以用于后续的精细匹配;即,每一幅图像Ii只与同时满足以下两个条件的图像Ij进行匹配:

<mrow> <mo>{</mo> <mrow> <mtable> <mtr> <mtd> <mrow> <mi>arccos</mi> <mrow> <mo>(</mo> <msub> <mover> <mi>n</mi> <mo>^</mo> </mover> <mi>i</mi> </msub> <mo>,</mo> <msub> <mover> <mi>n</mi> <mo>^</mo> </mover> <mi>j</mi> </msub> <mo>)</mo> </mrow> <mo>&lt;</mo> <mfrac> <mi>&pi;</mi> <mn>6</mn> </mfrac> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <msubsup> <mi>O</mi> <mi>j</mi> <mi>i</mi> </msubsup> <mo>&gt;</mo> <mi>t</mi> <mi>h</mi> <mi>r</mi> <mi>e</mi> <mi>s</mi> <mi>h</mi> <mi>o</mi> <mi>l</mi> <mi>d</mi> </mrow> </mtd> </mtr> </mtable> <mo>,</mo> </mrow> </mrow>

其中,表示图像Ii和Ij拍摄时的方向角,threshold为设定的阈值。

6.根据权利要求1所述的无人机序列影像批处理三维重建方法,其特征在于,所述步骤七中光束法平差的目标函数具体包括以下所列:

(a)Squarederror目标函数

C(∈)=∈2

(b)Huber目标函数

<mrow> <mi>C</mi> <mrow> <mo>(</mo> <mo>&Element;</mo> <mo>)</mo> </mrow> <mo>=</mo> <mfenced open = "{" close = ""> <mtable> <mtr> <mtd> <msup> <mo>&Element;</mo> <mn>2</mn> </msup> </mtd> <mtd> <mrow> <mi>f</mi> <mi>o</mi> <mi>r</mi> <mo>|</mo> <mo>&Element;</mo> <mo>|</mo> <mo>&lt;</mo> <mi>b</mi> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mn>2</mn> <mi>b</mi> <mo>|</mo> <mo>&Element;</mo> <mo>|</mo> <mo>-</mo> <msup> <mi>b</mi> <mn>2</mn> </msup> </mrow> </mtd> <mtd> <mrow> <mi>o</mi> <mi>t</mi> <mi>h</mi> <mi>e</mi> <mi>r</mi> <mi>w</mi> <mi>i</mi> <mi>s</mi> <mi>e</mi> </mrow> </mtd> </mtr> </mtable> </mfenced> </mrow>

(c)Blake-Zisserman目标函数

<mrow> <mi>C</mi> <mrow> <mo>(</mo> <mo>&Element;</mo> <mo>)</mo> </mrow> <mo>=</mo> <mfenced open = "{" close = ""> <mtable> <mtr> <mtd> <msup> <mo>&Element;</mo> <mn>2</mn> </msup> </mtd> <mtd> <mrow> <mi>f</mi> <mi>o</mi> <mi>r</mi> <mo>|</mo> <mo>&Element;</mo> <mo>|</mo> <mo>&lt;</mo> <mi>b</mi> </mrow> </mtd> </mtr> <mtr> <mtd> <msup> <mi>b</mi> <mn>2</mn> </msup> </mtd> <mtd> <mrow> <mi>o</mi> <mi>t</mi> <mi>h</mi> <mi>e</mi> <mi>r</mi> <mi>w</mi> <mi>i</mi> <mi>s</mi> <mi>e</mi> </mrow> </mtd> </mtr> </mtable> </mfenced> </mrow>

(d)Sigma目标函数

<mrow> <mi>C</mi> <mrow> <mo>(</mo> <mo>&Element;</mo> <mo>)</mo> </mrow> <mo>=</mo> <mfenced open = "{" close = ""> <mtable> <mtr> <mtd> <msup> <mo>&Element;</mo> <mn>2</mn> </msup> </mtd> <mtd> <mrow> <mi>f</mi> <mi>o</mi> <mi>r</mi> <mo>|</mo> <mo>&Element;</mo> <mo>|</mo> <mo>&lt;</mo> <mi>b</mi> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mn>2</mn> <mi>b</mi> <mo>|</mo> <mo>&Element;</mo> <mo>|</mo> <mo>-</mo> <msup> <mi>b</mi> <mn>2</mn> </msup> </mrow> </mtd> <mtd> <mrow> <mi>f</mi> <mi>o</mi> <mi>r</mi> <mi> </mi> <mi>b</mi> <mo>&lt;</mo> <mo>|</mo> <mo>&Element;</mo> <mo>|</mo> <mo>&lt;</mo> <mi>&sigma;</mi> <mi>b</mi> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <msup> <mi>b</mi> <mn>2</mn> </msup> <mrow> <mo>(</mo> <mn>2</mn> <mi>&sigma;</mi> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> </mrow> </mtd> <mtd> <mrow> <mi>o</mi> <mi>t</mi> <mi>h</mi> <mi>e</mi> <mi>r</mi> <mi>w</mi> <mi>i</mi> <mi>s</mi> <mi>e</mi> </mrow> </mtd> </mtr> </mtable> </mfenced> </mrow>

(e)Cauchy目标函数

C(∈)=b2log(1+∈2/b2)。

当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1