张 军,杨军义,申 静
(1.甘肃工业职业技术学院,甘肃 天水 741025; 2.甘肃省测绘工程技术研究中心,甘肃 天水 741025; 3.甘肃省地质矿产勘查开发局第一地质矿产勘察院,甘肃 天水 741025)
无人机倾斜摄影测量技术近年来广泛应用于测绘地理信息领域[1],数据获取技术的高效化、多元化和智能化发展[2],为相关行业提供了技术支撑,为CIM、BIM、GIS等在实景地理信息数字化中的三维展示、数据挖掘等应用提供了更多机遇和可能[3]。自然资源部测绘司司长武文忠在中国地理信息产业大会发表了“新型基础测绘与实景三维中国建设”为题的演讲[4],提出国家基础测绘正在逐步朝着三维测绘的方向发展[5]。可见三维测绘必将是行业发展的趋势,做为三维测绘的核心技术[6],倾斜摄影测量也是众多学者研究的热点[7]。
由于倾斜摄影需要从多角度获取地物影像信息[8],导致影像数据非常庞大,增加了数据处理的时间成本,也对数据处理硬件设备的要求有所提高。研究从倾斜摄影数据中消除冗余影像,提高数据处理效率的方法,对倾斜摄影测量技术发展应用有很强的现实意义。
倾斜摄影测量是获取地物多个视角影像数据的摄影测量方法,这些数据不仅包含传统垂直影像信息,而且包含地物多个视角的倾斜影像信息[9],通过多视影像密集匹配、多基线联合解算、多视影像联合平差获取高精度三维点云数据[10],在此基础上生成测区DSM、DOM及三维模型。倾斜摄影时,因为要获取地物侧面影像,需要根据航高、相机倾角等参数计算,相对测区外扩多条航线,由于倾斜摄影常用5镜头相机,在获取测区边缘侧视影像时,外扩航线朝测区方向的影像是建模需要的,其他4个镜头的影像则是冗余数据。在进行内业数据处理时,一般是将所有影像纳入工程同时解算,这就增加了内业数据解算的负担,降低了工作效率,对于大范围的倾斜摄影测量工程来说,解算时间成本会大大提高。
倾斜摄影测量航飞时需要外扩到测区外几条航线来获取测区侧面影像从而保障模型纹理的完整性,测区外扩的范围和相机倾斜角、航高、地形高差等因素有关,航飞时需根据实际情况调整,下文以测区外扩3条航线为例分析影像冗余度问题。
以SONY ILCE6000相机为例,以正射镜头为参考进行分析,假设测区范围400 m×400 m,航高设置100 m、下视焦距25 mm、传感器尺寸为23.5 mm×15.6 mm,在双向重叠度要求80%的情况下可以根据式(1)计算影像基线间隔L及航线间隔M,式中,H为航高,f为焦距。
L=传感器尺寸×(1-80%)×H/f
(1)
根据式(1)计算出基线间隔L为12.48 m,航线间隔M为18.8 m,由于测区大小为400 m×400 m,根据L及M,利用式(2)可以计算出测区摄站数S为682,影像3 410张。
S=400/M×400/L≈682站
(2)
若外扩3条航线,可计算出外扩约60 m,那么测区宽度就变为460 m×460 m,同样根据式(2)可推算出实际摄站数S′为902,总影像4 510张。可见,在外扩的情况下,实际航飞摄站比测区范围多出约220站,合计1 100张影像,这1 100张影像中只有倾向测区的影像是有用的,占1/5,无用影像有880张,约占工程影像总数的20%。由于测区边缘朝向测区外部的影像也不参与建模,所以这些影像也可认为是冗余影像,但是从航摄的完整性考虑,这些影像暂不研究其价值。
处理冗余影像前,需要准确判断冗余影像所在位置,再将这些影像移除,不参与后期解算。因为影像判断处理比较费时,且POS与影像对应,所以通过清除冗余POS来清除冗余影像是效率较高的方法。以规则矩形区域为例,提出设计思路:(1)编辑POS使之与影像对应;(2)通过POS数据来生成航点视图;(3)通过视图上摄站点位置关系检索出冗余影像对应POS;(4)根据POS进行冗余影像移除。检索冗余影像时根据摄站视图位置关系,首先判断影像是否是航线的前3站或末3站,前3站保留前视影像,后3站保留后视影像,移除其余影像;再判断影像是否是前3条航线或后3条航线,根据左右视关系,保留朝向测区的影像,移除其他影像。为了便于程序设计,定义各镜头方向为左视L、右视R、前视F、后视M、下视X,航飞方向根据影像编号大小来确定,以此为基础设计冗余影像处理算法,技术流程如图1所示。
图1 冗余影像检索算法流程图
基于上文设计思路,使用ArcGIS Engine平台利用C#开发应用程序。
在POS数据中添加“镜头号”字段,用F、L、R、M、X符号标记POS点归属镜头,将5个镜头POS数据合并展点,如图2所示(下文应用程序软件按上文设计思路开发)。
图2 展点图
利用下视相机POS生成冗余影像所在航线,要求生成前3条航线、后3条航线(若测区不是外扩3条航线,根据实际情况定义外扩航线数),其余航线只生成前3站连线和后3站连线,如图3所示。
图3 冗余影像位置判断
算法原理:同一条航线两点连成的线段偏角一致,因此,同一条航线连续2条基线的偏角之差绝对值很小(一般在8°以内),而当无人机改变航向,连续两条基线偏角之差绝对值一般为90°左右,本系统将差值设为45°,若连续两条基线偏角之差的绝对值大于45°,则说明无人机进入下一条航线;当站点不在前3条航线或后3条航线上,则只连接前3站和后3站航线。核心代码如下:
//假设有3个连续的POS点pt1、pt2、pt3
ILine pLine1 =new LineClass();
ILine pLine2 =new LineClass();
pLine1.PutCoords(pt1,pt2);
pLine1.PutCoords(pt1,pt3);
//计算2点连线的偏角,并将默认的弧度转为度
double dAngleDegree1 =(180 * pLine1.Angle)/Math.PI;
double dAngleDegree2 =(180 * pLine2.Angle)/Math.PI;
//如果偏角差小于45°则为一条航线,否则为下一条航线
if (Math.Abs(dAngleDegree1 -dAngleDegree2)<45)
{
ISegment pSegment1 =pLine1 as ISegment;
ISegment pSegment2 =pLine2 as ISegment;
ISegmentCollection pPath =new PathClass();
pPath.AddSegment(pSegment1,ref o,ref o);
pPath.AddSegment(pSegment2,ref o,ref o);
IGeometryCollection pPolyline =new PolylineClass();
pPolyline.AddGeometry(pPath as IGeometry,ref o,ref o);
}
用3.2节生成的航线数据做缓冲区分析,5镜头相机同一摄站5个POS位置有微小差异,但距离相差仅5 cm左右,因此,程序将缓冲区设置为10 cm,缓冲区生成后和POS数据做叠置分析,确定筛选数据的空间范围,如图4所示。核心代码如下:
图4 确定筛选影像空间范围
//生成缓冲区
ITopologicalOperator topologicalOperator =pFeature.Shape as ITopologicalOperator;
IPolygon polygon =topologicalOperator.Buffer(0.3)as IPolygon;
//如果缓冲区包含POS测站点,则确定为筛选空间范围
IRelationalOperator pRel =pBufferFeature.Shape as IRelationalOperator;
if (pRel.Contains(pCeZhanFeature.Shape)){ //…… }
根据冗余影像筛选规则,要求只保留前3条航线、后3条航线朝向测区镜头数据。判断测区在首条航线的左侧还是右侧,若测区在左侧,则奇数序号的航线保留左视镜头影像,偶数序号的航线保留右视镜头影像;反之,测区在右侧,则奇数序号的航线保留右视镜头影像,偶数序号的航线保留左视镜头影像。以上首条航线和测区空间关系的判断可转换为判断前2个POS测站连线和最后一个测站点的空间关系。其余航线只保留进入航线的前3站F镜头数据和出航线后3站的M镜头数据,若航线是偶数序则保留前视镜头,航线是奇数序则保留后视镜头。核心代码如下:
double x1,y1;//第1个POS测站点
double x2,y2;//第2个POS测站点
double x0,y0;//最后一个POS测站点
//L_R>0则测区左,L_R<0则测区右
double L_R =(y1 -y2)* x0 + (x2 -x1)* y0 + x1 * y2 -x2 * y1;
根据需保留的数据,反向筛选需删除数据对应影像,批量删除,如图5所示。
图5 删除冗余数据
依本文设计的处理程序对大小不同的三个测区倾斜摄影数据进行处理,统计结果如表1所示,可见不同大小测区的冗余影像比例差距很大,范围越小冗余影像占比越大。通过本实验处理后影像利用ContextCapture Center Master进行空三及三维建模,效果相同,处理后影像空三精度报告如表2所示。
表1 冗余影像剔除实验统计表
本文设计了一种倾斜摄影测量冗余影像处理的技术方案,并利用C#开发了应用程序,通过应用程序对多组实验数据进行了处理,应用实验成果进行三维建模,效果良好。实践证明,在倾斜摄影测量数据处理之前,进行冗余影像的剔除工作,可以极大的提高内业数据解算的速度,不会影响成果的精度及效果。