envi5.3处理高分二号影像数据辐射定标大气校正
目录
一、多光谱影像处理
1. 辐射定标
2.大气校正
1. 需要准备一些数据:
2.大气校正过程
3、正射校正
二、全色影像处理
1. 辐射定标
2. 正射校正
三、图像融合
1.几何配准
2.图像融合
高分二号处理流程

envi5.3的安装教程:
ENVI5.3安装
安装完ENVI5.3后,还需要安装envi app store,然后在app store中安装“中国国产卫星支持工具”,这样才能在envi里导入国产卫星图像。
保姆级教程:
ENVI插件商店App Store的下载、安装、使用方法
全文根据此篇文章进行数据处理:
tm影像辐射定标_高分二号影像数据预处理及裁剪过程
本文中的操作与表述大部分来自于上述文章,处理过程作为上述文章的补充。
其他参考:
学习笔记---遥感影像辐射定标与大气校正
利用ENVI自带全球DEM数据计算区域平均高程
高分二号数据处理流程(有高分二号的数据信息)
打开.tif文件的方法(本文打开的都是.xml文件)
启动ENVI5.3,在菜单栏中,选择File > Open,弹出Open对话框,找到GF2数据⽂件夹所在位置,选中扩展名为.tiff的两个⽂件,点击打开。
GF2有多光谱和全色两个数据,MSS是多光谱的,PAN是全色的,多光谱的分辨率低(4m),全色的高(1m),需要把这两个数据融合,融合之前需要做定标等处理,获取经纬度。


一、多光谱影像处理
1. 辐射定标
以这个为例:
其他路径\2022.4.22\BaoTaQu\BaoTaQu_2022_DiZai\GF2_PMS1_E109.6_N36.2_20220214_L1A0006288992\GF2_PMS1_E109.6_N36.2_20220214_L1A0006288992-MSS1.xml
注意:路径中不要有中文,可能会报错(我的就报错了,无法生成.dat)
本文是以MSS1.xml为例,若为MSS2.xml,则和MSS相关的都将1替换成2即可
打开ENVI,使用国产卫星扩展工具打开MSS影像,启动File→Open As→China Satellites→GF2,选择MSS.xml文件打开;


在Toolbox中,Radiometric Correction→Radiometric Calibration,在File Selection中选择待处理影像,点击OK;

弹出Radiometric Calibration对话框,Calibration type确认为Radiance,单击Apply FLAASH Setting,设置输出路径与文件名(这里需要创建一个output文件夹,用于存放生成的数据文件,output/MSS1_Radiometric.dat),点击OK开始执行;

(1)辐射定标前和辐射标定后的波普廓线


(2)辐射定标前和辐射标定后的直观图像


2.大气校正
1. 需要准备一些数据:
(1)GF2的Sensor Altitude是631.000
(2)Ground Elevation平均高程需要对具体的图像进行计算。
平均高程计算过程:
File --> Open World Data --> Elevation(GMTED2010)(海拔)
得到 .jp2 图像

把要计算的.tif文件放在.jp2文件上面

可以看到tif图像在jp2图像的上方,如下图所示


选择ROI区域工具,画点(此区域用四个点即可)圈出tif图像区域。


点击右键,选择第一个选项“完成和接受多边形”

创建好区域,计算高程



得到1241m,则Ground Elevation=1241/1000=1.241km
也可以根据百度中查到的,海拔高度860.6~1525米,平均1193米,也可以按这个来,最好是计算。
注:计算完成后,可以将 .jp2图像remove掉,不然在导入生成好的大气校正图像时会提示 “···one or more····”这样的提示,不得不创建一个新的view。

2.大气校正过程
在Toolbox中,双击Radiometric Correction→Atmospheric Correction Module→FLAASH Atmospheric Correction工具启动FLAASH模块;


参数解释:
(1) 设置输入与输出文件信息:
Input Radiance Image:输入辐射定标之后的数据,MSS1_Radiometric.dat;


Output Reflectance File:单击按钮选择反射率数据输出目录与文件名(output/MSS1_FLAASH.dat)如果只在后面的文本框中输入文件名,则保存路径将为Output Directory for FLAASH Files中的路径;

Output Directory for FLAASH Files:设置大气校正其他结果输出路径 output文件夹;

Rootname for FLAASH Files:设置大气校正其他输出结果的根文件名(这个我没设置)
(2) 设置传感器及图像信息:
ENVI5.3及以上版本能够对图像中心坐标和获取时间信息进行自动识别,所以只需要修改以下几点:
Sensor Type:传感器类型,这里选择Multispectral→UNKNOWN→MSI;
GF2的Sensor Altitude是631.000
Ground Elevation:成像区域平均高度,通过数据准备中,计算得到的Ground Elevation=1.241km
Pixel Size:4m;
(3) 大气模型和气溶胶模型:
Atmosphere model(大气模型)
根据数据经纬度与获取时间对应的大气模型进行选择:

本文实验的数据纬度为36°,日期为Feb(2月),故选取的是MLS(Mid-Latitude Summer),其他图像按照这个方法选择即可模型即可。
Aerosol Model
根据实际图像选择,本文例子为Rural
Aerosol Retrieval 气溶胶反演
第一种,选择 none。(本文选用的这种)
点击Multispectral Settings,在里面设置响应函数

Filter Function File 是GF2-PMS1的光谱响应函数gf2_pms1_mss.sli(GF2-PMS2选择gf2_pms2_mss.sli);位于ENVI安装目录:*安装目录\ENVI53\resource\filterfuncs下,选择即可。
点击Fiiter Function File --> Open --> New file




第二种,选择
,需要设置Multispectral Settings--Kaufman --> Tanre Aerosol Retrieval

Advanced Settings
这里大部分都可以保持默认设置,但由于是多光谱数据,故将Modtran Resolution设置为15cm-1.

我的参数设置:

所有设置完成之后,点击Apply执行大气校正,完成后会得到反演的能见度和水汽柱含量;

得到的结果:

选择Display>Profiles>Spectral查看大气校正前后同一地物波谱曲线变化。
气溶胶反演选择的第一种,None,得到的 大气校正前后对比图,图片颜色有些许变化。


这个是刚刚大气校正后得到的:

3、正射校正
点击File→Open打开大气校正后(或者原始的多光谱)的影像,View Metadata查看其元数据信息,可以看到ENVI很好地识别了数据的RPC信息;

有了RPC信息之后,就可以基于这些RPC信息进行正射校正;点击Toolbox→Geometric Correction→Orthorectification→RPC Orthorectification
Workflow,打开正射校正流程化工具;

在File Selection面板中,Input File选择经过大气校正的多光谱数据(MSS1_FLAASH.dat),DEM File会默认选择全球分辨率为900米的DEM数据,我们这里保持默认(如果有更高分辨率的DEM数据,可以替换此数据),点击Next;


在RPC Refinement面板中,有四个选项卡可以选择。
如果有实测的或从其他途径获取的控制点数据,可以在该面板中进行添加,添加后在Statistics选项卡中可以看到相应的误差统计信息;
1) 切换到Advanced选项卡,修改输出像元大小Output Pixel Size为4米,重采样方法Image Resampling选择三次卷积法,其他参数保持默认;

2) 切换到Export选项卡,选择输出文件格式,设置输出路径及文件名(MSS1_FLAASH_rpcortho.dat),点击Finish;

正射校正前后对比:



二、全色影像处理
1. 辐射定标
打开ENVI,使用国产卫星扩展工具打开MSS影像,启动File→Open As→China Satellites→GF2,选择PAN.xml文件打开;


在Toolbox中,Radiometric Correction→Radiometric Calibration,在File Selection中选择待处理影像,点击OK;

Calibration Type: Reflectance,全色影像定标为大气表观反射率;
Output Interleave: BIL;
Output Data Type:Uint;
Scale Factor:10000;

output/PAN1_Radiometric.dat

注:由于多光谱FLAASH大气校正的结果为扩大了10000倍的反射率数据,为了让融合图像效果好,需要将全色数据与多光谱数据的像元值变成一致。这里使用辐射定标工具将全色数据定标为大气表观反射率,并扩大10000倍。
辐射定标前和辐射标定后的直观图像


2. 正射校正
全色数据的正射校正操作与多光谱数据的正射校正完全相同,需要提醒的地方是GF2全色数据正射校正时输出像元大小需设置为1米,以便我们下面进行图像融合。
点击Toolbox→Geometric Correction→Orthorectification→RPC Orthorectification
Workflow,打开正射校正流程化工具;

在File Selection面板中,Input File选择经过辐射定标(因为本文的全色图没有进行大气校正)的全色数据(PAN1_Radiometric.dat),DEM File会默认选择全球分辨率为900米的DEM数据,我们这里保持默认(如果有更高分辨率的DEM数据,可以替换此数据),点击Next;


1) 切换到Advanced选项卡,修改输出像元大小Output Pixel Size为1米,重采样方法Image Resampling选择三次卷积法(Cubic Convolution),其他参数保持默认;

2) 切换到Export选项卡,选择输出文件格式,设置输出路径及文件名(PAN1_Radiometric_rpcortho.dat),点击Finish;

正射校正前、后对比:


以上全色图的处理已完成。
三、图像融合
1.几何配准
(本次处理中没有进行几何配准,这部分没有处理)
图像融合之前,需要查看二者是否完全配准,如果没有完全配准,就需要对其进行配准,可以使用ENVI中的自动配准流程化工具,以全色数据为基准对多光谱数据进行配准;此工具的位置在:Toolbox > Geometric Correction > Registration > Image Registration Workflow

本次操作正射校正后的多光谱和全色数据配准的比较好(目前,大部分高分辨率数据正射校正后多光谱和全色数据配准的均比较好),所以我们这里不进行图像配准,直接进行图像融合;
2.图像融合
(1)NNDiffuse Pan Sharpening方法
点击在Toolbox→Extensions→NNDiffuse Pan Sharpening ;

Input Low Resolution Raster选择上一步正射校正后的多光谱数据;
Input High Resolution Raster选择上一步正射校正后的全色数据;
Output Raster:NNDiffusePanSharpening.dat应该是自己出来的,如需修改位置、名称可以进行修改,也可以将融合的数据改为.tiff格式的,NNDiffusePanSharpening.tiff;
其他参数保持默认;
点击OK运行;



注:NNDiffuse Pan Sharpening工具要求输入的多光谱和全色数据的空间分辨率是整数倍的(本例正射校正时分别将多光谱的全色的分辨率重采样为4米和1米,就是为了方便该工具的使用)。
浏览融合之后的影像与融合之前的多光谱影像,空间分辨率得到明显提升,颜色纹理也得到了比较好的保留。与全色融合后的光谱曲线整体升高。





对于图像变白问题,可以将背景值设置为0,有两种方式
(1)使用ENVI自带的工具
具体操作:
Toolbox > Extensions > Raster Processing Batch Tool > Data Ignore Value > Set Ignore Value[Zero]



(2)手动修改源数据
使用记事本等工具打开图像头文件,如下图所示。


在头文件中手动增加一行为data ignore value = 0(其中0为背景值,可以设置为其他值)。重新打开图像即可。
最终得到的图像保存:

此处保存的文件格式是.dat,可根据自己所需,保存成.tif或者其他格式都可以
处理过程中涉及到的文件名:
MSS1_Radiometric.dat
MSS1_FLAASH.dat
MSS1_FLAASH_rpcortho.dat
PAN1_Radiometric.dat
PAN1_Radiometric_rpcortho.dat
MSS2_Radiometric.dat
MSS2_FLAASH.dat
MSS2_FLAASH_rpcortho.dat
PAN2_Radiometric.dat
PAN2_Radiometric_rpcortho.dat
NNDiffusePanSharpening.tiff
相关文章:
envi5.3处理高分二号影像数据辐射定标大气校正
目录 一、多光谱影像处理 1. 辐射定标 2.大气校正 1. 需要准备一些数据: 2.大气校正过程 3、正射校正 二、全色影像处理 1. 辐射定标 2. 正射校正 三、图像融合 1.几何配准 2.图像融合 高分二号处理流程 envi5.3的安装教程: ENVI5.3安装 安装完ENVI5.3后࿰…...
C语言 结构体
结构体的自引用: 自引用的目的: 结构体的自引用就是指在结构体内部,包含指向自身类型结构体的指针。 像链表就会用到结构体的自引用。假如我们要创建链表 链表的没个节点都是一个结构体,它里面存放着它的数据和下个节点的地址。 假如我们用…...
frp-内网穿透部署-ubuntu22服务器-windows server-详细教程
文章目录 1.下载frp2.配置服务器2.1.配置frps.ini文件2.2.设置服务文件2.3.设置开机自启和服务操作2.4.后台验证2.5.服务器重启 3.配置本地window3.1.frpc配置3.2.添加开机计划启动3.3.控制台启动隐藏窗口 4.centos防火墙和端口3.1.开放端口3.2.查看端口 5.关闭进程5.1.杀死进程…...
MySQL内存使用的监控开关和使用查看
参考文档: https://brands.cnblogs.com/tencentcloud/p/11151 https://www.cnblogs.com/grasp/p/10306697.html MySQL如何使用内存 在MySQL中,内存占用主要包括以下几部分,全局共享的内存、线程独占的内存、内存分配器占用的内存࿰…...
数据库管理-第113期 Oracle Exadata 04-硬件选择(20231020)
数据库管理-第113期 Oracle Exadata 04-硬件选择(2023010290) 本周没写文章,主要是因为到上海参加了Oracle CAB/PAB会议,这个放在后面再讲,本期讲一讲Exadata,尤其是存储节点的硬件选择及其对应的一些通用…...
带着问题去分析:Spring Bean 生命周期 | 京东物流技术团队
1: Bean在Spring容器中是如何存储和定义的 Bean在Spring中的定义是_org.springframework.beans.factory.config.BeanDefinition_接口,BeanDefinition里面存储的就是我们编写的Java类在Spring中的元数据,包括了以下主要的元数据信息: 1&…...
C语言修行之函数篇(一)tolower —— 转换为小写字母
文章目录 函数说明函数声明函数返回值函数实现函数实例 函数说明 对于大写字母,如果在当前语言环境中存在小写表示形式,则tolower()返回其小写等效物。否则,tolower()函数执行相同的任务。 函数声明 #include <ctype.h> int tolower(…...
【JavaSE专栏55】Java集合类HashTable解析
🌲Java集合类HashTable解析 🌲Java集合类HashTable解析摘要引言Hashtable是什么?Hashtable vs. HashMap:何时使用Hashtable?多线程环境:历史遗留系统:不需要进行特殊操作: Hashtable…...
Apollo上机实践:一次对自动驾驶技术的亲身体验
上机实践 概述自动驾驶通信分布式系统开发模式开发工具 自动驾驶感知传感器特性感知流程及算法部署感知模型 自动驾驶决策规划决策规划流程和算法使用 Dreamview 进行控制在环的规划调试开发规划场景和算法 福利活动 主页传送门:📀 传送 概述 Apollo 是…...
QTcpServer简单的TCP服务器连接
1、简介 简单实现控制TCP服务器获取连接的套接字。点击断开服务器即可关闭所有连接,最大连接数量为5个。 声明源文件 #include "mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent) {//设置固定大小setFixedSize(1024,600);b…...
LeetCode热题100——双指针
双指针 1.移动零2.盛最多水的容器3.三数之和 1.移动零 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 // 题解:使用双指针,其中快指针指向非零元素,慢指针指向首个零元素下…...
Ubuntu ARMv8编译Qt源码以及QtCreator
最近需要在NVIDIA小盒子上面跑一个程序,一开始想着在Ubuntu x64下交叉编译一版,后来发现libqxcb.so 这个库在configure时就会一直报错,多方查找怀疑可能是由于硬件不支持在x64环境下编译AMR架构的xcb库。 所以最后在ARM下直接编译Qt源码了&am…...
虚机Centos忘记密码如何重置
1进入开机前的页面,选中第一个,按“e”键,进入编辑模式 2找到ro crashkernel项,将ro替换成 rw initsysroot/bin/sh 3 Ctrlx mount -o remount, rw / chroot /sysroot chroot /sysroot passwd root 输入两次密码 touch /.a…...
OpenGL_Learn02
1. 监听窗口,绑定回调函数 #include <glad/glad.h> #include <GLFW/glfw3.h> #include <iostream>void framebuffer_size_callback(GLFWwindow* window, int width, int height) {glViewport(0, 0, width, height);std::cout << "变了…...
基于STC系列单片机实现外部中断0控制按键调节定时器0产生PWM(脉宽调制)的功能
#define uchar unsigned char//自定义无符号字符型为uchar #define uint unsigned int//自定义无符号整数型为uint sbit PwmOut P1^0;//位定义脉宽调制输出为单片机P1.0脚 uchar PwmTimeCount;//声明脉宽调制时间计数变量 uchar PwmDutyCycle;//声明脉宽调制占空比变量 void Ti…...
vue3中 reactive和ref的区别
在Vue 3中,reactive和ref都是用于响应式数据的API。它们的主要区别在于使用方式和返回值类型。 reactive: reactive函数用于将一个对象转换为响应式对象。它接收一个普通的JavaScript对象,并返回一个被代理的响应式对象。这意味着当响应式对…...
docker的安装部署nginx和mysql
小白自己整理,如有错误请指示! 自我理解:docker就是把应用程序所用的依赖程序,函数库等相关文件打包成镜像文件,类似系统光盘,然后可以在任意电脑上安装使用(方便运维人员部署程序)…...
测试C#调用Aplayer播放视频(1:加载Aplayer控件)
微信公众号“Dotnet跨平台”的文章《开源精品,使用 C# 开发的 KTV 点歌项目》中使用了迅雷开源APlayer播放引擎。最近在学习有哪些能拿来播放视频的组件或控件,于是准备试试,根据文章中的介绍,在迅雷APlayer播放引擎网站中下载了A…...
二叉树的遍历+二叉树的基本操作
文章目录 二叉树的操作一、 二叉树的存储1.二叉树的存储结构 二、 二叉树的基本操作1.前置创建一棵二叉树:1. 定义结点 2.简单的创建二叉树 2.二叉数的遍历1.前序遍历2.中序遍历3.后序遍历4.层序遍历 3.二叉树的操作1.获取树中节点的个数2.获取叶子节点的个数3.获取…...
Go 语言gin框架的web
节省时间与精力,更高效地打造稳定可靠的Web项目:基于Go语言和Gin框架的完善Web项目骨架。无需从零开始,直接利用这个骨架,快速搭建一个功能齐全、性能优异的Web应用。充分发挥Go语言和Gin框架的优势,轻松处理高并发、大…...
UE5 学习系列(三)创建和移动物体
这篇博客是该系列的第三篇,是在之前两篇博客的基础上展开,主要介绍如何在操作界面中创建和拖动物体,这篇博客跟随的视频链接如下: B 站视频:s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
企业如何增强终端安全?
在数字化转型加速的今天,企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机,到工厂里的物联网设备、智能传感器,这些终端构成了企业与外部世界连接的 “神经末梢”。然而,随着远程办公的常态化和设备接入的爆炸式…...
算法笔记2
1.字符串拼接最好用StringBuilder,不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...
Pinocchio 库详解及其在足式机器人上的应用
Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库,专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性,并提供了一个通用的框架&…...
技术栈RabbitMq的介绍和使用
目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...
什么是VR全景技术
VR全景技术,全称为虚拟现实全景技术,是通过计算机图像模拟生成三维空间中的虚拟世界,使用户能够在该虚拟世界中进行全方位、无死角的观察和交互的技术。VR全景技术模拟人在真实空间中的视觉体验,结合图文、3D、音视频等多媒体元素…...
消防一体化安全管控平台:构建消防“一张图”和APP统一管理
在城市的某个角落,一场突如其来的火灾打破了平静。熊熊烈火迅速蔓延,滚滚浓烟弥漫开来,周围群众的生命财产安全受到严重威胁。就在这千钧一发之际,消防救援队伍迅速行动,而豪越科技消防一体化安全管控平台构建的消防“…...
FFmpeg avformat_open_input函数分析
函数内部的总体流程如下: avformat_open_input 精简后的代码如下: int avformat_open_input(AVFormatContext **ps, const char *filename,ff_const59 AVInputFormat *fmt, AVDictionary **options) {AVFormatContext *s *ps;int i, ret 0;AVDictio…...
