ENVI:如何进行对自带RPC的图像进行RPC正射校正呢?

简介: ENVI:如何进行对自带RPC的图像进行RPC正射校正呢?

01 为什么要进行正射校正?

因为传感器遥远的感知地球时,大家可以想象一下这个画面。


第一:地球本身(譬如地球曲率)会对 传感器收集到的信息产生干扰。(信息本身就是从地面以某种方式被传感器接收到嘛)


第二:在信息传递的途中,信息会受到大气层的干扰,也会对传感器产生干扰。


第三:传感器本身也会对信息产生干扰(所有的测量工具都不能百分百做到没有误差)(譬如传感器本身的姿态、身体的位置)。


当然还有一些其它的误差,譬如比例尺的变化啊,我们常说近大远小,但是我们知道远处的东西未必就比近处的东西小对吧。


02 RPC模型是什么?

2.1 解释

具体的思路,推导过程等等可以参考 张过等的《推扫式光学卫星影像系统几何校正产品的3维几何模型及定向算法研究》

这里引用论文其中的图像,简单说明RPC模型,主要是理解为主,不会讲解计算相关的知识。

RPC模型是基于线性多项式模型进一步的拓展,我们了解的 y = ax + c、x² + y² = 16等等都是线性多项式 。那么线性多项式模型是如何对图像进行校正呢?


一幅图像上的每一个像素都有它的像点坐标(x,y)(即以图像的左上角点为原点,该像素在整幅图像的哪一个行(y),哪一列(x)),以及该像素所在实际位置的DEM高程数据。


那么也就是说,对于一幅图像上的每一个像素,都需要知道该像素所在的行数(y),所在的列数(x),所处位置的DEM高程数据(h) ==>  坐标(x,y,h)。


那么我们的线性多项式模型就是已知若干(假定为m)像素所表示的实际位置的经纬度坐标(lon,lat),那么建立方程组去找到像素在图像上的像元坐标(x,y,h)与像素在实际地球上表示的经纬度坐标(lon,lat)==> 实际也就是求解系数。


假设建立的方程阶数是1,那么至少需要((n + 1) * (n + 2))/ 2 ==> 3个方程才可以解得该系数。建立的方程组如下:


(注意: 方程组中的 f*lat1、2、3 需要删除,这里忘记删除了)


那么也就是说,其实我们的模型其实就是加未知数,加阶数......然后通过某种方法以这些变数作为桥梁去连接图像上像素坐标(x,y,h)与像素对应的经纬度(lon,lat),以找到两者坐标的某种对应关系。之后就可以通过这种对应关系去预测所有像素的的经纬度坐标。


那这里又回到RPC模型,它实际上就是将这种对应关系解决的更好,它使用非线性的关系去建立方程组,而线性多项式模型则是纯粹的使用线性关系去拟合像素坐标与其对应的经纬度坐标的关系。


但是我们知道,人生哪里有那么多1就是1,2就是2的情况,更多的实际上是非线性的关系,所以说RPC模型(基于线性多项式模型的进一步改进)会比线性多项式模型更为妥善的解决几何校正的问题。但是花费的时间等等也会相应的加长.....因为它更复杂!


2.2 准备

我说了这么多其实想说的还是和接下来讲的ENVI操作有关!这才是最关键的。


如果我们需要进行RPC模型的正射校正,我们需要准备什么?


第一:需要准备带有RPC信息的图像文件(这个RPC信息包含的就是传感器在拍摄这张影像时相关的卫星辅助数据等等数据,它们都会参与方程组的构建,具体怎么构建我们不需要管,了解即可。如果没有那么你需要创建RPCs,当然这又是另外一个话题不再今天的讨论范围之内了)


第二:如果图像文件没有DEM高程的波段数据,那么你需要准备与该图像文件配套的DEM高程数据,一般而言高程数据是单独分开存储的。当然,即使没有也是可行的,因为ENVI提供了默认900m分辨率的DEM高程数据。


以上两点是做正射校正需要提前准备的 ==> 图像文件和对应的DEM高程文件

———————————————————————————————————————————

03    实        操

———————————————————————————————————————————

 

3.1 加载图像文件


 

 

如果上面的打开方式你选择打开而不是 打开为 ==> 通用格式 ==> TIFF/GeoTIFF  那么下面个窗口将不会跳出。因为默认是真彩色合成。

加载的图像显示的效果如下

3.2 加载图像对应的DEM高程文件

 

加载的高程数据显示的效果如下

 

3.3 寻找并打开 RPC正射校正工作流程 工具


3.4 流程控制

3.4.1  需要校正的图像文件的选择和DEM高程数据的选择


3.4.2 输入控制点 —— 控制点

说明:对于输入控制点,你需要找到你选择的像素所在的实际的精确的经纬度信息和DEM高程信息。至于这些信息如何找到,你可以从老师/学校、测绘局、实地测量等等得到,如果无法得到,那么正射校正无法进行。目前该图像是一幅美国加利福尼亚某地的图像文件。

 


3.4.3 输入控制点 ——  高级

 

3.4.4  输入控制点 ——  统计

 

3.4.5  输入控制点 ——  输出


3.4.6 正在进行正射校正

 

 

3.5 输出的效果展示

 

3.6 校正前后的效果展示

目录
相关文章
|
传感器
ENVI:如何自定义RPC文件?
ENVI:如何自定义RPC文件?
228 0
|
6月前
|
负载均衡 Dubbo Java
Dubbo 3.x:探索阿里巴巴的开源RPC框架新技术
随着微服务架构的兴起,远程过程调用(RPC)框架成为了关键组件。Dubbo,作为阿里巴巴的开源RPC框架,已经演进到了3.x版本,带来了许多新特性和技术改进。本文将探讨Dubbo 3.x中的一些最新技术,包括服务注册与发现、负载均衡、服务治理等,并通过代码示例展示其使用方式。
359 9
|
6月前
|
JSON 负载均衡 网络协议
Rpc编程系列文章第二篇:RPC框架设计目标
Rpc编程系列文章第二篇:RPC框架设计目标
|
6月前
|
设计模式 负载均衡 网络协议
【分布式技术专题】「分布式技术架构」实践见真知,手把手教你如何实现一个属于自己的RPC框架(架构技术引导篇)
【分布式技术专题】「分布式技术架构」实践见真知,手把手教你如何实现一个属于自己的RPC框架(架构技术引导篇)
267 0
|
17天前
|
自然语言处理 负载均衡 API
gRPC 一种现代、开源、高性能的远程过程调用 (RPC) 可以在任何地方运行的框架
gRPC 是一种现代开源高性能远程过程调用(RPC)框架,支持多种编程语言,可在任何环境中运行。它通过高效的连接方式,支持负载平衡、跟踪、健康检查和身份验证,适用于微服务架构、移动设备和浏览器客户端连接后端服务等场景。gRPC 使用 Protocol Buffers 作为接口定义语言,支持四种服务方法:一元 RPC、服务器流式处理、客户端流式处理和双向流式处理。
|
6月前
|
Dubbo Java 应用服务中间件
Rpc编程系列文章第三篇:Hessian RPC一个老的RPC框架
Rpc编程系列文章第三篇:Hessian RPC一个老的RPC框架
|
3月前
|
Dubbo 网络协议 Java
RPC框架:一文带你搞懂RPC
这篇文章全面介绍了RPC(远程过程调用)的概念、原理和应用场景,解释了RPC如何工作以及为什么在分布式系统中广泛使用,并探讨了几种常用的RPC框架如Thrift、gRPC、Dubbo和Spring Cloud,同时详细阐述了RPC调用流程和实现透明化远程服务调用的关键技术,包括动态代理和消息的编码解码过程。
RPC框架:一文带你搞懂RPC
|
2月前
|
XML 负载均衡 监控
分布式-dubbo-简易版的RPC框架
分布式-dubbo-简易版的RPC框架
|
3月前
|
XML 存储 JSON
(十二)探索高性能通信与RPC框架基石:Json、ProtoBuf、Hessian序列化详解
如今这个分布式风靡的时代,网络通信技术,是每位技术人员必须掌握的技能,因为无论是哪种分布式技术,都离不开心跳、选举、节点感知、数据同步……等机制,而究其根本,这些技术的本质都是网络间的数据交互。正因如此,想要构建一个高性能的分布式组件/系统,不得不思考一个问题:怎么才能让数据传输的速度更快?
|
5月前
|
存储 缓存 Linux
【实战指南】嵌入式RPC框架设计实践:六大核心类构建高效RPC框架
在先前的文章基础上,本文讨论如何通过分层封装提升一个针对嵌入式Linux的RPC框架的易用性。设计包括自动服务注册、高性能通信、泛型序列化和简洁API。框架分为6个关键类:BindingHub、SharedRingBuffer、Parcel、Binder、IBinder和BindInterface。BindingHub负责服务注册,SharedRingBuffer实现高效数据传输,Parcel处理序列化,而Binder和IBinder分别用于服务端和客户端交互。BindInterface提供简单的初始化接口,简化应用集成。测试案例展示了客户端和服务端的交互,验证了RPC功能的有效性。
402 7