卫星摄影测量编程
前言
采用地形无关的控制方案建立 RPC 模型。本次作业是小组作业,成果为小组共同完成,上传博客经小组成员同意。
数据组成
DX_ZY3_NAD_att.txt
:记录卫星影像某一时刻的四元数(用于计算本体坐标系与 J2000 坐标系之间的变换矩阵),并没有用到本体到轨道坐标系姿态的三个欧拉角。
DX_ZY3_NAD_gps.txt
:记录卫星某一时刻在 WGS84 坐标系中的位置,并没有用到速度数据。
本体到轨道坐标系姿态的三个欧拉角与 GPS 速度数据应该是计算本体坐标系到轨道坐标系、轨道坐标系到 WGS84 坐标系的数。这里我们是用本体坐标系与 J2000 坐标系,然后 J2000 坐标系到 WGS84 坐标系计算的。
此外将 GPS 相位中心坐标直接视为了投影中心坐标,忽视了两者之间的误差,是因为这一部分误差可以归在偏置矩阵中,可以结合光学卫星在轨几何定标相关知识理解。
DX_ZY3_NAD_imagingTime.txt
:记录卫星的扫描行对应的时刻,以对应 GPS 定位数据和四元数数据。
NAD.cbr
:记录一个扫描行上的像元指向角,包括垂轨和沿轨方向的指向角。在本次作业中,沿轨方向 x 指向角均为0。
NAD.txt
:记录偏置矩阵数据。本次作业中该数据均为0,不需要使用。
zy3.tif
:卫星影像数据,从.tif
文件中可以读取影像的范围,并由此获取相应区域的 DEM 。
在美国地质调查局USGS官网下载航天飞机成像雷达地形测绘(SRTM) DEM 数据,按卫星影像范围裁剪,作为后续检查计算的基础。
zy3_rpc.txt
:用途暂时未知。
基本思路
-
控制点获取
-
文件读取
-
格网划分
-
四元数计算
-
视向量计算
-
视向量与椭球的交点
计算特定 H 下, 椭球与视向量的交点直角坐标
-
-
检查点获取
- 格网划分
- 根据 DEM 中仿射参数,计算大地坐标 BL 对应的 DEM 像元坐标,获取高程 H
- 窗口二分法确定扫描行
这两部分有很多相通的地方:
- 包括读取、处理数据可以公用
- 直角坐标 XYZ 与大地坐标 BLH 相互转换函数
-
RPC 解算
- 这一部分的计算很迷,尤其是线性化的方式,和以往的不同
-
精度检查
要注意的地方
-
坐标的对应关系
整个计算过程中涉及到很多种坐标,一定要理清它们之间的关系。
-
像方坐标
-
(x , y) 与 (line , sample) 是等价的
-
(height , width)
-
(r , c)
在本次作业中,sample 对应的是图像的 width, 因而可以看出 x 对应 r,y 对应 c
-
-
地球坐标系
要注意大地坐标 BLH 与直角坐标 XYZ 之间的转化
-
-
像元指向角
像元指向角文件中的数据是指向角,而不是正切值。
-
地球椭球的使用
在获取控制点时,我们是通过影像格网与高度计算的地面点坐标,但其中存在一个问题。使用 xyh 计算坐标的时候得到 XYZ 坐标,
然后 XYZ 计算 BLH 坐标也会得到一个高程 H 。如果这 xyh 和 BLH 的两个高程不相等,那就会麻烦不少。其解决方法详见 PPT 内容。
-
RPC 的线性化,根据我的理解,它甚至没有用到偏导数,是很不常规的解法。同时,它也不需要提供较为准确的初始值(解出参数的稳定堪忧)