徐娜
(辽宁省基础测绘院,辽宁锦州 121003)
利用像素工厂制作多源数据的正射影像产品时,空三加密处理是最为关键的一步,它直接影响到正射影像的整体精度,因此空三加密处理在整个正射影像过程中占有至关重要的地位[1]。本文对像素工厂空三加密过程中常遇到的问题进行总结和分析,并提供解决方案,为后续生产提供有利的技术依据。
空三加密通过连接点和控制点来确定平面和高程的位置,点的数量和分布直接决定空三加密的精度[2]。像素工厂下进行空三加密,首先是进行连接点的匹配和优化,然后匹配控制点,最后做连接点和控制点的联合优化,直至最终成果符合要求[3]。
像素工厂导入影像后一般就开始空三加密处理,在开始空三加密之前要做好空三前的数据检查[4]。
问题一:如何对空三加密前的数据进行检查?
解决办法:首先通过cli_calib_init命令创建一个空三文件夹是最简单最直接的检查方式。
要点一:利用specif_chantier查看影像数量是否有出入。
要点二:查看POS初始精度(多相机平台只需要查看下视影像)。一般需导入一个外部的DEM作为空三的参考,比如免费的srtm或gdem,两个数据精度差不多,在地形平坦起伏不大的区域建议用srtm,地形复杂的丘陵山区地带建议用gdem。或者是自己已有更高精度的dem,总之dem精度越高越好。Bundleview打开所有影像,加载外部dem,选择地形平坦的区域,点击左上角的TIE绿色小圆圈,投一个点下去。观察在pointview在各个影像上的位置相差多少,就能估算POS的初始精度。
问题二:如果在bundleview里面发现同一条航线内或不同航线间的影像连接不上,该如何处理?
解决办法:这种情况一般是kappa角出了问题。
1. 转角系统需要统一。像素工厂默认的旋转角系统为Omega-phikappa转角系统,国产有些软件输出的为zyx转角系统。
2. 一个正常的初始影像数据需要做到同一条航线内或不同航线间的影像能连接上。
3.在bundleview选取一个明显地物点,右键复制经纬度,然后粘贴到googleearth中,观察googleearth中地物的方向是否跟bundleview中显示的方向是否一致。如果不一致,可以对比观察导入前的原始tif影像需要旋转多少角度才能跟googleearth上一致,对比这个旋转角跟EO中的kappa角相差多少,然后再根据具体情况分析如何调整kappa角。
像素工厂现有的连接点匹配方法分为两大类[5]:基于物方的连接点匹配和SIFT特征点匹配(表1)。
像素工厂匹配连接点过程分为三个步骤[6]:每张影像打初始点(getgcp)、 将初始点投影到specif_chantier的所有影像上去(gcpi) 、 对投影点结果里进行连接点匹配(matchgcp),如图1。
问题一:对于不同数据源应如何选择连接点匹配方法?
解决办法:对不同传感器模型,对于连接点的匹配方法有以下建议:
UAV无人机数据:初始POS姿态较差,影像畸变大,可以SIFT为主匹配连接点,少数情况下点不够可用point_repartition或matchgcp补点。
表1 像素工厂匹配方法
图1 像素工厂连接点匹配过程示意图
框幅Frame数据:POS精度高,影像畸变小,以matchgcp为主。
遥感卫星影像RPC数据和退扫式ADS数据:POS精度很高,影像无畸变,只能用matchgcp或point_repartition来匹配连接点。
问题二:困难地区匹配不上连接点该如何处理?
解决办法:对于困难区域例如大面积的山地,林地或者时相不佳的数据,存在难以匹配到连接点的问题,针对这个问题有如下建议:
UAV无人机数据:已经基本不存在缺点的情况;
框幅Frame数据:可用SIFT补点;
遥感卫星影像RPC数据和退扫式ADS数据:
(1)getgcp 适当加大困难区域打点密度,可用-ix iy x y定义搜索范围;
(2)gcpi 推荐使用srtm或者更高精度的dem作为参考辅助;
(3)针对地形起伏较大的数据,matchgcp给定合适的-zmin zmax范围;
(4)降低matchgcp的参数-s 改成0.7或者0.65(注意不要低于0.6),-t改小(默认值为4,最小可改到1);
(5)根据影像原始姿态精度适当调整 xmax ymax(匹配搜索范围);
(6)使用point_repartion, 调整-min_overlap_points或者-min_overlap_density参数增大打点密度。
像素工厂得到足够且分布合理的连接点,如何检测连接点分布是否足够也非常关键。
问题一:如何检查连接点分布和数量?
解决办法:像素工厂提供两个工具可以对连接点的分布和数量进行检查:
工具一: blkprocess
blkprocess trace_calib -tracknum 9-sortby
这个工具可查看航带间和航带内的点数量,还能看到每张影像上所有连接点的中误差。
工具二:QA工具检查点的连通性
/home/pfuser/QA/qa_general_analy sis.sh -s specif_chantier -t tie.gcp -n 50-i 3
“-n 50 i 3 ”是决定输出结果的参数,代表的意思是一张影像跟其他任意一张影像之间有至少50个点可以连起来,而且与其他影像之间贯通性不少于3个连接才能放到ConnectedComponent里面(可根据具体情况适当降低标准,最小建议值为-n 20 -i 1)[7]。
该工具输出结果:生成QUALITY文件夹,及相应的5个文本文件,分别为PointNumPerImage;PointMultiplicity;SortedPairs;ConnectedComponent;CriticalPairs。该 工具主要查看ConnectedComponent,看是否最大的一个Component是否包含了所有的影像:
a.如果是,则可以说明点的数量足够;
b.如果不是,则需要检查在最大的Component里漏掉的影像,并针对这些影像进行补点。图2和图3两张影像中分别是两个项目的component情况。
可以看到,图2影像断成两个connectedcomponent,这种情况下说明连接点分布不佳,需要用命令重新匹配加点。图3几乎所有影像连接成为一个完整的connected component,只有少量影像游离于这个component之外,可以检查这些少量影像的分布是否重要,手动加一些点即可。如果这些影像在区域边缘或其他不重要的地方,在不影响最终成果的基础上,可以去掉这些影像。
空三加密的大部分时间都花在了调连接点上,所以如何快速高效地调连接点是空三最关键的一部分[8]。
问题一:如何快速高效地调连接点?
解决办法:因为像素工厂连接点是全自动获取的,所以不可避免地会存在一部分错点,调连接点的过程实际上就是一个去掉错点的过程。
第一步:全自动匹配获取连接点,需要注意的是这个连接点必须符合以下要求:
均匀分布,维度合适,整个空三网结构才够稳定;绝大部分是对的点,少量错点,这样才能保证残差大的点为错点。
第二步:优化,给定合适的sigma参数,clbc会根据绝大部分对的点整体运算返回一个残差报告。
如果点的结构和sigma参数合理,我们可以判断残差大的点是错点,其中会有少部分对点受到附近错点的影像也会有一个大的残差,但是总的基础不影响。
第三步,根据残差报告,设定一个阈值,滤除部分残差大的点。需要注意的是,一次删点不能过多,循序渐进。
图2 断开的component
图3 满足条件的component
第四步, 对上一步的点结果优化,根据上一步得到的残差报告,设定合适的阈值,滤除部分错点, 就这样反复优化并滤点,直到最终的残差报告符合要求。
因此,快速高效得到最终连接点结果最重要的几点如下:
(1)分布均匀,维度足够,也就是能够把所有影像能够紧密连接起来的初始连接点。这个连接点还必须是绝大部分是对的点,少量错点,因此在一些困难区域想不建议把相似度-s降到0.6以下。
(2)在不同的阶段根据数据点的特点,给定合适的sigma参数。sigma设置遵照由少到多,由小到大循序渐进的原则。
(3)在调点过程中,需要注意不时检查点数量和component,如果最开始的点很好,但是调点过程中,点都被删没了,那就需要注意检查一下使用的sigma和group文件参数是否有问题。
问题一:如何对空三加密进行精度控制?
解决办法:空三加密的精度直接决定后期影像的精度,因此有如下建议:
(1)连接点数量与分布:QA和blkprocess工具在优化迭代过程中要反复使用,以保证整个空三调点过程中点数量足够。
(2)控制点分布是否合理:控制点要均匀分布测区内部,对控制点需求视原始POS精度而定,连接点连接弱的区域,如水体,山区或者单独凸出的航线分支需要适当加一些控制点。
(3)控制点权重设置 :关于控制点的权重设置一般都建议给影像分辨率大小,或者如果控制点可信度高,可根据其本身精度来设置权重。
问题二:如何进行空三加密接边?
解决方法:如A区的数据已经导入做完空三,而与其接边的B区数据还未做空三,那么在B区数据完成空三加密后,需要对A区和B区进行空三加密接边来保证后期两区数据能做到无缝拼接。
对于这种情况,建议流程如下:第一步,完成A区空三,提取A区最后一次优化输出的点opt.gcp;第二步,提取A区opt.gcp中公共区的点文件,另外A区提取的公共点需要给出一定的控制权重,然后与B区的连接点进行联合优化。这样从理论上来两个区域就可以实现空三加密的无缝拼接了。
利用像素工厂制作正射影像,无论是卫星影像、ADS推扫影像还是无人机以及框幅影像,空三加密处理是处理多源数据制作DOM流程中最为重要也是最难的一步。本文主要对空三加密处理过程中经常遇到的问题进行总结,并提出了相应的解决方案,为后续生产提供了有力的技术支撑。