4. 几何校正的基本原理:共线方程、多项式模型、有理函数模型(RFM)、校正流程概述
各位同学,咱们今天聊点硬核的——几何校正到底是怎么算出来的?
说白了,遥感影像的几何校正,就是给每个像素找到它在地球上的真实坐标。你想想看,卫星拍下来的原始影像,因为传感器角度、地形起伏、地球曲率这些因素,位置肯定有偏差。我当年刚入行时,拿到一张影像,直接拿去叠加矢量数据,结果道路跑到河里去,闹了个大笑话。从那以后,我就老老实实研究几何校正了。
4.1 共线方程:最根本的几何模型
共线方程,是所有几何校正模型里最“物理”的一个。它描述的是:地面点、镜头中心、像点,这三个点必须在一条直线上。
嗯,这里要注意,共线方程是基于严格的摄影测量原理推导出来的。它的数学形式长这样:
x - x0 = -f * [a1*(X-Xs) + b1*(Y-Ys) + c1*(Z-Zs)] / [a3*(X-Xs) + b3*(Y-Ys) + c3*(Z-Zs)]
y - y0 = -f * [a2*(X-Xs) + b2*(Y-Ys) + c2*(Z-Zs)] / [a3*(X-Xs) + b3*(Y-Ys) + c3*(Z-Zs)]
看着挺吓人对吧?其实拆开来看就简单了:
- (x, y) 是像点坐标,也就是像素在影像上的位置
- (X, Y, Z) 是地面点坐标,也就是真实世界的位置
- (Xs, Ys, Zs) 是传感器投影中心的位置
- f 是焦距,(x0, y0) 是像主点偏移
- a1, b1, c1... 是旋转矩阵的元素,描述传感器的姿态
我在项目中遇到过一种情况:用高精度无人机数据做正射影像,如果只用简单的多项式模型,误差能到5个像素。但换成共线方程,把相机畸变参数也加进去,误差直接降到0.5像素以内。这就是物理模型的威力。
核心要点:共线方程需要知道传感器的内外方位元素。如果你有POS数据(位置和姿态),优先用这个模型。精度最高,但参数也最多。
4.2 多项式模型:简单粗暴但够用
多项式模型,说白了就是“不管物理过程,只拟合数学关系”。它把地面坐标和影像坐标之间的关系,用一个多项式函数来近似。
最常见的是二次多项式:
x = a0 + a1*X + a2*Y + a3*X*Y + a4*X² + a5*Y²
y = b0 + b1*X + b2*Y + b3*X*Y + b4*X² + b5*Y²
为什么用多项式?因为简单。你只需要找几个地面控制点(GCP),解算出系数,就能把整张影像校正过来。
我建议你记住这个经验:
| 多项式阶数 | 最少控制点数 | 适用场景 |
|---|---|---|
| 一次(线性) | 3个 | 地形平坦、影像变形小 |
| 二次 | 6个 | 一般地形、中等变形 |
| 三次 | 10个 | 地形起伏大、变形复杂 |
避坑指南:我曾经用三次多项式校正一张山区影像,结果控制点精度很高,但非控制点区域出现了严重的“龙格现象”——影像边缘扭曲得像哈哈镜。所以多项式阶数不是越高越好,够用就行。
4.3 有理函数模型(RFM):商业卫星的标配
RFM,全称是Rational Function Model。现在主流的商业卫星,比如WorldView、GeoEye、高分系列,都提供RPC文件(有理多项式系数)。
RFM的数学形式是:
Sample = (Num_L(X, Y, Z)) / (Den_L(X, Y, Z))
Line = (Num_S(X, Y, Z)) / (Den_S(X, Y, Z))
其中Num和Den都是三次多项式,分子分母各有20个系数。总共80个参数,封装在RPC文件里。
为什么卫星厂商都用RFM?原因有三:
- 保密性:不暴露传感器的物理参数(焦距、姿态等)
- 通用性:不管传感器多复杂,都能用一个统一格式描述
- 精度高:对于高分辨率影像,RFM的精度可以媲美共线方程
我个人习惯,拿到卫星影像后第一件事就是检查有没有RPC文件。如果有,直接用RFM做正射校正,省时省力。如果没有,那就只能手动找控制点,用多项式模型了。
小技巧:RFM模型对高程信息很敏感。如果你用SRTM或ASTER GDEM作为高程数据,记得检查高程精度。我遇到过用30米分辨率DEM校正0.5米影像的情况,结果平面精度够了,但建筑物倾斜严重。后来换成5米精度的DEM,效果立竿见影。
4.4 校正流程概述
好了,模型讲完了,咱们看看实际工作中怎么操作。几何校正的流程,我总结为五步:
- 数据准备:原始影像、DEM数据、控制点数据(或RPC文件)
- 模型选择:根据数据情况选共线方程、多项式或RFM
- 控制点采集:如果是多项式模型,需要手动或自动选GCP
- 解算参数:用最小二乘法求解模型系数
- 重采样输出:用最近邻、双线性或三次卷积法生成校正后的影像
这里我画了一张流程图,帮你理清思路:
你看,整个流程其实不复杂。关键就两点:一是选对模型,二是控制点质量要过关。
最后说一句,几何校正不是一锤子买卖。我通常会在校正完成后,用独立的检查点做精度验证。如果RMS误差超过1个像素,我会回头检查控制点分布是否均匀,或者模型选择是否合适。嗯,这些经验都是踩坑踩出来的。
总结一下:
- 有传感器参数 → 用共线方程,精度最高
- 有RPC文件 → 用RFM,省时省力
- 啥都没有 → 用多项式,但控制点要选好
- 不管用啥模型,控制点质量 > 模型复杂度
公众号:蓝海资料掘金营,微信deep3321