刘京
摘要:无人机航测数据处理中,POS数据在影像拼接和三维快速建模中有着十分重要的作用。为了充分利用无人机POS数据的优势,针对原始POS数据丢失、无法直接可视化等缺陷,开发了基于CAD平台的POS数据处理工具,该工具能够以交互式的方式编辑POS数据并导出到航测软件中,提高了航测内业处理的效率。
关键词:无人机POS;数据处理;CAD二次开发
中图分类号:V557 文献标识码:A
无人机POS数据在空三自由网平差、像控点预测等方面有着十分重要的作用,可靠完整的POS既能够加快空三计算和三维建模的速度,又能够提高正射拼接影像的正确性。不仅如此,如果将POS数据对应的照片范围投影到一定高度的地面,可以以可视化的方式检查原始照片的航向和旁向重叠度,如果再将像控点坐标展绘进来,自动识别与控制点相关联的照片,帮助内业人员快速定位每個像控点所对应的原始照片,这能够大幅提高空三刺像控点时的效率。
由于无人机姿态不稳、地物遮挡等原因,无人机在飞行过程中,GPS信号会出现断片的情况,导出的POS数据可能会出现成片的丢失。对于这种情况,考虑到POS参与航测数据后处理的精度不必太高和飞机航线本身的线性特征关系,可以采用线性插值的方式解决。
基于以上背景,笔者采用VB.net语言,开发了基于CAD的无人机POS数据处理工具。该工具实现了POS数据的可视化、丢失POS的插值、POS数据对应照片覆盖区生成等功能。本文将详细介绍POS数据后处理的流程及这些软件功能的实现方法。
1 POS数据处理工作流程
无人机POS数据处理的工作流程主要包括以下4个步骤。
1.1 高斯正向投影
无人机原始POS数据坐标系采用的是WGS84地理坐标系,用经纬度表示,适用于在球面坐标系中,而AutoCad采用的是平面直角坐标系,因此要在CAD中表示POS数据,需要对原始POS数据进行高斯正向投影,将经纬度坐标转换为国家标准带平面坐标或者地方独立坐标。
1.2 CAD中绘制POS数据
首先在CAD中绘制投影后的POS中心点数据,并在中心点位置注记POS序号,然后调用无人机相机参数,绘制POS中心点所在相片覆盖区矩形框,该矩形框代表无人机在该POS点拍摄照片所覆盖测区的范围,所有的矩形框构成了无人机在本次飞行过程的航迹,即航线。
1.3 内插POS数据
由于已经绘制出了无人机飞行航线,通过目视解读,即可检查出POS数据的质量及丢失情况。对于有丢失的POS,需要利用相邻的POS点位信息和航线的航迹特征,内插出丢失的POS数据。
1.4 高斯反向投影
通过高斯投影反算程序,将检查无误的POS数据反向投影为经纬度格式的数据,并导出为跟原始POS数据格式一致的文件。
2 关键算法
基于CAD的无人机POS数据处理工具开发中涉及了一系列算法,主要有大地坐标和平面直角坐标互相转换的高斯正反算算法、POS对应相片覆盖区生成算法和POS内插等算法。
2.1 高斯正反算算法
无人机飞行中获取的POS数据的格式是经纬度的形式,坐标系是地理坐标系(WGS84),而CAD中只能表示平面直角坐标数据,所以无法将该格式的数据直接在CAD中展绘出来。为此,我们必须先将POS数据投影到平面直角坐标系中,这就是高斯正算。在对投影后的POS数据做相片覆盖区生成、丢失点内插等操作后,为了导出处理完成的POS数据,又需要将POS数据转换成经纬度格式,这就是高斯反算。完成高斯反算的POS数据,可以直接导入到Pix4d、ContextCapture等航测软件中,参与空三解算、影像拼接等航测数据处理。高斯正反算具体的公式可以参考相应的大地测量学书籍。
2.2 相片覆盖区生成算法
如果将无人机相片的拍摄范围按照一定的高度投影到实地,就能够得到相片在该高度下的相片覆盖区矩形。该高度如果是每张相片真实的航高,所得相片覆盖区就能真实体现实际的相片覆盖范围及相片之间的关系。通过相片覆盖区的可视化,我们可以直观地得到航向重叠度、旁向重叠度等参数,从而快速的评估本次飞行的质量。相片覆盖区的另外一个作用是帮助业内人员快速的定位野外控制点在相片的位置。
式中x,y表示要内插的POS数据的平面坐标,x0,y0,x1,y1分别代表内插点相邻两已知POS点的平面坐标,t是步长,取值在0~1,限定内插的点位于相邻已知POS点间。编写程序时,t可以用需要内插点的个数的倒数来表示,在循环中,t保持自增。
对于第二个问题,由于相邻两已知POS点的序号具有有序性,而从以上未知点POS数据内插公式可知,未知POS数据内插总是从靠近第一个已知的POS数据开始内插,因此未知POS点的点序号可以看成从第一个已知POS数据递增或递减得到。
3 基于CAD的POS数据处理工具实现
基于CAD的二次开发方式有Lisp、VBA、ObjectARX和.Net API。其中,基于.Net平台对CAD进行二次开发,可以充分利用.Net的各种优势,在保证功能强大的前提下大幅提高开发速度。
Visual Basie.Net是基于微软.Net Framework之上的面向对象的编程语言。笔者采用VB.Net语言,基于AutoCAD平台,实现了POS数据处理工具的全部功能。
3.1 VB.Net调用CAD类库
在VS环境中引用AutoCAD 2006 Type Libaray库,并使用”Using”方法引用Autodesk.AutoCAD.Interop和Autodesk.AutoCAD.Interop.Common两个命名空间。在程序最外层定义acadApp和acadDoc两个对象,分别代表CAD应用程序和CAD文档。程序初始化的时候,创建两个对象的实例,具体代码如下:
Private Sub Main_Load(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles MyBase.Load
Try
acadApp = GetObject(, "AutoCAD.Application")
Catch ex As Exception
acadApp = CreateObject("AutoCAD.Application")
End Try
acadApp.Visible = True
AppActivate(acadApp.Caption)
acadDoc = acadApp.ActiveDocument
End Sub
3.2 功能實现
软件主要由主窗体类(mainCLS)、算法类(algorithmCLS)和绘制类(drawCls)3个类模块组成。其中主窗体类实现了用户交互的主界面;算法类实现了高斯正反算算法、相片覆盖区生成算法、POS丢失点内插算法和自动查找控制点所在照片等算法;绘制类实现了POS点位置和注记绘制、相片覆盖区绘制、控制点与所在照片连接线绘制等图形可视化功能。篇幅所限,下文仅列举POS丢失数据内插算法实现代码:
Dim t ‘定义步长
Dim xuhao ‘内插点序号
If no_1 < no_2 Then
For i = 1 To cnt '如果第1个POS对象的序号小于第2个POS对象的序号
t = i / (cnt + 1)
xuhao = no_1 + i
xc = x0 * (1 - t) + t * x1
yc = y0 * (1 - t) + t * y1
drawRect(xc, yc, m_l, m_w, xuhao, 1.5) ‘绘制覆盖区矩形
Next
Else
For i = 1 To cnt
t = i / (cnt + 1)
xuhao = no_1 - i
xc = x0 * (1 - t) + t * x1
yc = y0 * (1 - t) + t * y1
drawRect(xc, yc, m_l, m_w, xuhao, 1.5)
Next
End If
3.3 结果展示
利用VB.Net环境调用CAD类库开发的无人机POS数据处理工具界面如图1所示,图片展示了查找控制点对应照片这一功能。白色的十字丝表示控制点的位置,与其相连的红色虚线另外一端是相片矩形覆盖区,连接关系表示相片矩形覆盖区包含了该控制点。
4 结语
本文阐述了无人机POS数据处理的工作流程,并根据关键算法开发了基于CAD的无人机POS数据处理工具。该工具能够以可视化界面的方法,帮助内业人员快速进行无人机POS数据后处理,处理后的POS数据能够正确地被航测软件导入,参与后续的航测内业处理,提高航测内业的处理效率。本文开发的工具是在二维CAD下实现的,有一定的局限性,以后的研究可以考虑加入POS中的姿态角等参数,在不经过高斯正反算的情况下,直接在三维环境下完成POS数据的后处理工作,实现真正的三维交互。
参考文献
[1] 鲁恒,李永树,江禹.一种基于POS数据的无人机影像自动展绘控制点方法[J].光电工程,2011,38(9):25-29.
[2] 孔元祥,郭际明,刘宗泉.大地测量学基础[M].2版.武汉:武汉大学出版社,2010.
[3] 邓非,陈朝霞,李新维,等.基于POS的多视倾斜影像展绘与筛选方法[J].测绘地理信息,2017,42(8):23-26.
[4] 郭大海,王建超,郑雄伟.机载POS系统直接地理定位技术理论与实践[M].北京:地质出版社,2009.