当前位置: 首页 > news >正文

常见大气校正模型及6S模型安装部署【20241028】

⛄常见大气校正模型

大气校正是遥感图像标准化处理的重要环节,消除太阳辐射传输过程中大气对于遥感图像的影响,提高影像的清晰度,获取地物真实的光谱信息。由于大气条件较为复杂,且随区域地理分布和观测时间是动态变化的,国内外研究学者进行大量的研究工作,目前大气校正算法主要包括:基于辐射传输模型的大气校正算法、基于经验统计模型的大气校正和神经网络大气校正算法。

基于辐射传输模型的大气校正方法主要包括LOWTRAN模型、MODTRAN模型、FLAASH模型、6S模型等,该方法充分考虑辐射传输过程中大气以及临近效应等的影响,是利用电磁波在大气中的辐射传输原理构建起来的,设置合适的大气校正参数是其最为关键的步骤,合适的参数能够反映大气分子、气溶胶等粒子的散射和水汽、臭氧等物质的吸收过程。基于经验统计模型的大气校正方法主要包括经验线性法、暗像元法、QUAC模型等,利用先验知识或实测数据,直接由遥感图像自身消除大气影响。神经网络方法是一种有效的非线性逼近方法,是功能强大且灵活多变的大气校正方法。

Sen2cor是欧空局官方提供的Sentinel2 MSI影像的大气校正方法,用于生成L2级陆地产品。该算法是一种半经验算法,集成了基于图像检索和LibRadtran(辐射传输计算软件包)模型的查找表(Look-Up-Tables, LUTs),以消除S2 MSI影像的大气影响。该方法将生成的大气校正查找表集成在程序中,这一操作简化了操作流程并缩短了程序运行的时间。

La SRC是美国地质勘探局(USGS)专门为Landsat8数据设计的大气校正程序,主要用于支持地面遥感应用。USGS仅提供美国境内的La SRC产品,所以国内无法利用La SRC来进行大气校正,但RSD(Remote Sensing Desktop)软件引进了该算法的核心代码,重写全部流程管理代码,可以实现国内产品的La SRC大气校正,对相同数据集的RSD L8大气校正和USGS LaSRC产品进行对比,其差异可以忽略不计,所以可以用RSD L8来替代La SRC产品。

ACOLITE是由比利时皇家自然科学研究所开发的Landsat8 OLISentinel2 MSI处理软件,该软件用于校正沿海和内陆水域的图像,是一个完全基于图像的处理器。ACOLITE有两种内置大气校正方法,分别是指数外推(EXP)和暗光谱拟合(DSF),DSF是通过自动搜索场景或子场景中的暗目标来构建光谱,从而来计算大气路径反射率,而不预先定义暗带,对气溶胶的空间变异性具有鲁棒性,与EXP算法相比有更好的应用潜力.

iCOR是一种基于场景的大气校正处理器,可以处理沿海、内陆或过渡水域和陆地上收集的卫星数据。该处理器包括以下步骤:基于近红外842nm波段识别陆地和水的像元;使用陆地像元来推导气溶胶光学厚度,并使用SIMEC对水域和陆地目标的固定背景范围进行邻接校正;最后求解辐射传输方程。利用SNAP中的iCOR插件来完成iCOR大气校正(需配置Python2.7相关环境)。

参考文献(模型的详细阐述):

[1]张焕炜.Landsat-8大气校正水陆邻近像元效应改进模型及在水深遥感的应用研究[D].2023.

[2]李海翠.鄱阳湖大气校正方法适用性评价研究[D].江西理工大学,2022.

⛄6S大气校正模型

6S大气校正模型是美国马里兰大学地理系Vermote等人于1997年在5S模型的基础上改进的,很好地模拟太阳光在太阳-地面目标-传感器的传输过程中所受到的大气影响。相对5S模型,6S模型考虑了地面目标的海拔高度、非朗伯平面的情况和新的吸收气体种类(CH4N2OCO),提高了瑞利和气溶胶散射作用的计算精度。光谱步长提高到了2.5nm。6S模型建立在辐射传输理论基础之上,模型应用范围广,不受研究区特点及目标类型等的影响。

Py6S只是6S模型的一个接口,没有可执行的编译文件。如果只安装Py6S会提示如下错误信息,所以需要编译制作可执行文件。

# 测试
from Py6S import *
print(SixS.test())# 输出异常
6S wrapper script by Robin Wilson
Error: cannot find the sixs executable in $PATH or current directory.
None

👀6S模型安装

(1)安装包准备

  • x86_64-8.1.0-release-win32-seh-rt_v6-rev0.7zmingw64

  • make-3.81.exe

  • tar-1.13-1-bin.exe

  • Fort99.zip

  • 6SV-1.1.tar

  • Py6S-1.9.2.tar.gz

安装包打包下载地址:安装包链接(https://download.csdn.net/download/twg666/89930630)

(2)mingw64安装及测试

下载压缩包x86_64-8.1.0-release-win32-seh-rt_v6-rev0.7z,解压缩并放置对应路径,配置环境变量。

  • 配置步骤:我的电脑→属性→高级系统设置→选择环境变量→系统变量→选择"Path"→添加环境变量(mingwbin文件的路径)。

  • 命令测试:CMD命令行中输入g++ -vgcc -vgdb -v命令,显示对应的版本信息即可。

# 小编mingw64的bin路径
D:\Py6S\mingw64\bin# mingw64测试,CMD命令行中输入以下命令。
Microsoft Windows [版本 10.0.22631.4317]
(c) Microsoft Corporation。保留所有权利。C:\Users\twg>g++ -v
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=D:/Py6S/mingw64/bin/../libexec/gcc/x86_64-w64-mingw32/8.1.0/lto-wrapper.exe
Target: x86_64-w64-mingw32
Configured with: ../../../src/gcc-8.1.0/configure --host=x86_64-w64-mingw32 --build=x86_64-w64-mingw32 --target=x86_64-w64-mingw32 --prefix=/mingw64 --with-sysroot=/c/mingw810/x86_64-810-win32-seh-rt_v6-rev0/mingw64 --enable-shared --enable-static --disable-multilib --enable-languages=c,c++,fortran,lto --enable-libstdcxx-time=yes --enable-threads=win32 --enable-libgomp --enable-libatomic --enable-lto --enable-graphite --enable-checking=release --enable-fully-dynamic-string --enable-version-specific-runtime-libs --disable-libstdcxx-pch --disable-libstdcxx-debug --enable-bootstrap --disable-rpath --disable-win32-registry --disable-nls --disable-werror --disable-symvers --with-gnu-as --with-gnu-ld --with-arch=nocona --with-tune=core2 --with-libiconv --with-system-zlib --with-gmp=/c/mingw810/prerequisites/x86_64-w64-mingw32-static --with-mpfr=/c/mingw810/prerequisites/x86_64-w64-mingw32-static --with-mpc=/c/mingw810/prerequisites/x86_64-w64-mingw32-static --with-isl=/c/mingw810/prerequisites/x86_64-w64-mingw32-static --with-pkgversion='x86_64-win32-seh-rev0, Built by MinGW-W64 project' --with-bugurl=https://sourceforge.net/projects/mingw-w64 CFLAGS='-O2 -pipe -fno-ident -I/c/mingw810/x86_64-810-win32-seh-rt_v6-rev0/mingw64/opt/include -I/c/mingw810/prerequisites/x86_64-zlib-static/include -I/c/mingw810/prerequisites/x86_64-w64-mingw32-static/include' CXXFLAGS='-O2 -pipe -fno-ident -I/c/mingw810/x86_64-810-win32-seh-rt_v6-rev0/mingw64/opt/include -I/c/mingw810/prerequisites/x86_64-zlib-static/include -I/c/mingw810/prerequisites/x86_64-w64-mingw32-static/include' CPPFLAGS=' -I/c/mingw810/x86_64-810-win32-seh-rt_v6-rev0/mingw64/opt/include -I/c/mingw810/prerequisites/x86_64-zlib-static/include -I/c/mingw810/prerequisites/x86_64-w64-mingw32-static/include' LDFLAGS='-pipe -fno-ident -L/c/mingw810/x86_64-810-win32-seh-rt_v6-rev0/mingw64/opt/lib -L/c/mingw810/prerequisites/x86_64-zlib-static/lib -L/c/mingw810/prerequisites/x86_64-w64-mingw32-static/lib '
Thread model: win32
gcc version 8.1.0 (x86_64-win32-seh-rev0, Built by MinGW-W64 project)C:\Users\twg>gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=D:/Py6S/mingw64/bin/../libexec/gcc/x86_64-w64-mingw32/8.1.0/lto-wrapper.exe
Target: x86_64-w64-mingw32
Configured with: ../../../src/gcc-8.1.0/configure --host=x86_64-w64-mingw32 --build=x86_64-w64-mingw32 --target=x86_64-w64-mingw32 --prefix=/mingw64 --with-sysroot=/c/mingw810/x86_64-810-win32-seh-rt_v6-rev0/mingw64 --enable-shared --enable-static --disable-multilib --enable-languages=c,c++,fortran,lto --enable-libstdcxx-time=yes --enable-threads=win32 --enable-libgomp --enable-libatomic --enable-lto --enable-graphite --enable-checking=release --enable-fully-dynamic-string --enable-version-specific-runtime-libs --disable-libstdcxx-pch --disable-libstdcxx-debug --enable-bootstrap --disable-rpath --disable-win32-registry --disable-nls --disable-werror --disable-symvers --with-gnu-as --with-gnu-ld --with-arch=nocona --with-tune=core2 --with-libiconv --with-system-zlib --with-gmp=/c/mingw810/prerequisites/x86_64-w64-mingw32-static --with-mpfr=/c/mingw810/prerequisites/x86_64-w64-mingw32-static --with-mpc=/c/mingw810/prerequisites/x86_64-w64-mingw32-static --with-isl=/c/mingw810/prerequisites/x86_64-w64-mingw32-static --with-pkgversion='x86_64-win32-seh-rev0, Built by MinGW-W64 project' --with-bugurl=https://sourceforge.net/projects/mingw-w64 CFLAGS='-O2 -pipe -fno-ident -I/c/mingw810/x86_64-810-win32-seh-rt_v6-rev0/mingw64/opt/include -I/c/mingw810/prerequisites/x86_64-zlib-static/include -I/c/mingw810/prerequisites/x86_64-w64-mingw32-static/include' CXXFLAGS='-O2 -pipe -fno-ident -I/c/mingw810/x86_64-810-win32-seh-rt_v6-rev0/mingw64/opt/include -I/c/mingw810/prerequisites/x86_64-zlib-static/include -I/c/mingw810/prerequisites/x86_64-w64-mingw32-static/include' CPPFLAGS=' -I/c/mingw810/x86_64-810-win32-seh-rt_v6-rev0/mingw64/opt/include -I/c/mingw810/prerequisites/x86_64-zlib-static/include -I/c/mingw810/prerequisites/x86_64-w64-mingw32-static/include' LDFLAGS='-pipe -fno-ident -L/c/mingw810/x86_64-810-win32-seh-rt_v6-rev0/mingw64/opt/lib -L/c/mingw810/prerequisites/x86_64-zlib-static/lib -L/c/mingw810/prerequisites/x86_64-w64-mingw32-static/lib '
Thread model: win32
gcc version 8.1.0 (x86_64-win32-seh-rev0, Built by MinGW-W64 project)C:\Users\twg>gdb -v
GNU gdb (GDB) 8.1
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-w64-mingw32".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word".

(3)make和tar安装

  • 另一种方式:通过GnuWin32 Packages下载,双击make-3.81.exetar-1.13-1-bin.exe,安装即可。

  • 配置步骤:我的电脑→属性→高级系统设置→选择环境变量→系统变量→选择"Path"→添加环境变量(makebin文件的路径)。

# 小编make的bin路径
D:\Py6S\GnuWin32\bin

(4)Fort99安装

  • 另一种方式:通过Free FORTRAN Compilers下载后解压,不需要安装,直接放到安装路径。

  • 配置步骤:我的电脑→属性→高级系统设置→选择环境变量→系统变量→选择"Path"→添加环境变量(Fort99bin文件的路径)。

# 小编make的bin路径
D:\Py6S\Fort99\G77\bin

(5)6SV-1.1下载—安装—编译

  • 另一种方式:通过Index of /downloads下载(链接直达),解压并找到文件夹中的Makefile文件。

  • 原始的Makefile文件:

SHELL = /bin/sh
SYSTEM  = HP-UX
EXTRA   = +FPVZOUD +O3 -D$(SYSTEM)
EXTRA   = -g
EXTRA   = -O
FFLAGS=  $(EXTRA)
CFLAGS = -Ae $(EXTRA)
FC      = g77 $(FFLAGS)
CC      = cc $(CFLAGS)OBJECTS0 = AATSR.o ABSTRA.o AEROSO.o AKTOOL.o ATMREF.o AVHRR.o BBM.o BDM.o BRDFGRID.o \
CHAND.o CLEARW.o CSALBR.o DICA1.o DICA2.o DICA3.o  DISCOM.o \
DISCRE.o DUST.o ENVIRO.o EQUIVWL.o GAUSS.o GLI.o GOES.o HAPKALBE.o \
HAPKBRDF.o HRV.o IAPIALBE.o IAPIBRDF.o IAPITOOLS.o INTERP.o ISO.o \
KERNEL.o KERNELPOL.o LAKEW.o MAS.o MERIS.o METEO.o METH1.o METH2.o METH3.o METH4.o \
METH5.o METH6.o MIDSUM.o MIDWIN.o MIE.o MINNALBE.o MINNBRDF.o \
MOCA1.o MOCA2.o MOCA3.o MOCA4.o MOCA5.o MOCA6.o MODIS.o MSS.o NIOX1.o \
MODISBRDF.o MODISALBE.o \
NIOX2.o NIOX3.o NIOX4.o NIOX5.o NIOX6.o OCEA.o OCEAALBE.o OCEABRDF.o OCEABRDFFAST.o\
OCEATOOLS.o ODA550.o ODRAYL.o OS.o OSPOL.o OXYG3.o OXYG4.o OXYG5.o OXYG6.o \
OZON1.o PLANPOL.o POLDER.o POSGE.o POSGW.o POSLAN.o POSMTO.o POSNOA.o POSSOL.o POSSPO.o \
POLGLIT.o POLNAD.o  \
PRESPLANE.o PRESSURE.o PRINT_ERROR.o RAHMALBE.o RAHMBRDF.o ROUJALBE.o \
ROUJBRDF.o SAND.o SCATRA.o SEAWIFS.o SOLIRR.o SOOT.o SPECINTERP.o SPLIE2.o \
SPLIN2.o SPLINE.o SPLINT.o STM.o SUBSUM.o SUBWIN.o TM.o TROPIC.o \
TRUNCA.o US62.o VARSOL.o VEGETA.o VERSALBE.o VERSBRDF.o VERSTOOLS.o \
WALTALBE.o WALTBRDF.o WATE.o WAVA1.o WAVA2.o WAVA3.o WAVA4.o WAVA5.o \
WAVA6.o AEROPROF.o ALI.o ASTER.o ETM.o HYPBLUE.o VGT.o VIIRS.oOBJECTS1= main.o sixs: $(OBJECTS0) $(OBJECTS1) $(FC)  $(OBJECTS1) $(OBJECTS0) -o sixsV1.1  -lmclean:rm -f *.o
  • 修改后的Makefile文件:
(1)修改1
第8行:FC = g77 $(FFLAGS)修改为:
FC = gfortran -std=legacy -ffixed-line-length-none -ffpe-summary=none $(FFLAGS)
(2)修改2
将35行的-lm删去,并将sixsV1.1添加.exe
$(FC)  $(OBJECTS1) $(OBJECTS0) -o sixsV1.1.exe

完整版如下:

SHELL = /bin/sh
SYSTEM  = HP-UX
EXTRA   = +FPVZOUD +O3 -D$(SYSTEM)
EXTRA   = -g
EXTRA   = -O
FFLAGS=  $(EXTRA)
CFLAGS = -Ae $(EXTRA)
FC      = gfortran -std=legacy -ffixed-line-length-none -ffpe-summary=none $(FFLAGS)
CC      = cc $(CFLAGS)OBJECTS0 = AATSR.o ABSTRA.o AEROSO.o AKTOOL.o ATMREF.o AVHRR.o BBM.o BDM.o BRDFGRID.o \
CHAND.o CLEARW.o CSALBR.o DICA1.o DICA2.o DICA3.o  DISCOM.o \
DISCRE.o DUST.o ENVIRO.o EQUIVWL.o GAUSS.o GLI.o GOES.o HAPKALBE.o \
HAPKBRDF.o HRV.o IAPIALBE.o IAPIBRDF.o IAPITOOLS.o INTERP.o ISO.o \
KERNEL.o KERNELPOL.o LAKEW.o MAS.o MERIS.o METEO.o METH1.o METH2.o METH3.o METH4.o \
METH5.o METH6.o MIDSUM.o MIDWIN.o MIE.o MINNALBE.o MINNBRDF.o \
MOCA1.o MOCA2.o MOCA3.o MOCA4.o MOCA5.o MOCA6.o MODIS.o MSS.o NIOX1.o \
MODISBRDF.o MODISALBE.o \
NIOX2.o NIOX3.o NIOX4.o NIOX5.o NIOX6.o OCEA.o OCEAALBE.o OCEABRDF.o OCEABRDFFAST.o\
OCEATOOLS.o ODA550.o ODRAYL.o OS.o OSPOL.o OXYG3.o OXYG4.o OXYG5.o OXYG6.o \
OZON1.o PLANPOL.o POLDER.o POSGE.o POSGW.o POSLAN.o POSMTO.o POSNOA.o POSSOL.o POSSPO.o \
POLGLIT.o POLNAD.o  \
PRESPLANE.o PRESSURE.o PRINT_ERROR.o RAHMALBE.o RAHMBRDF.o ROUJALBE.o \
ROUJBRDF.o SAND.o SCATRA.o SEAWIFS.o SOLIRR.o SOOT.o SPECINTERP.o SPLIE2.o \
SPLIN2.o SPLINE.o SPLINT.o STM.o SUBSUM.o SUBWIN.o TM.o TROPIC.o \
TRUNCA.o US62.o VARSOL.o VEGETA.o VERSALBE.o VERSBRDF.o VERSTOOLS.o \
WALTALBE.o WALTBRDF.o WATE.o WAVA1.o WAVA2.o WAVA3.o WAVA4.o WAVA5.o \
WAVA6.o AEROPROF.o ALI.o ASTER.o ETM.o HYPBLUE.o VGT.o VIIRS.oOBJECTS1= main.o sixs: $(OBJECTS0) $(OBJECTS1) $(FC)  $(OBJECTS1) $(OBJECTS0) -o sixsV1.1.execlean:rm -f *.o
  • 编译

通过cmd打开6SV1.1文件夹,输入make命令即可得到sixsV1.1.exe,最后测试是否生成成功。

(1)输入Make,等待......
(2)sixsV1.1.exe < ..\Examples\Example_In_1.txt

在这里插入图片描述

注意:一定要通过"cmd"打开测试,如果通过Windows PowerShell打开,会显示"<运算符是为将来使用而保留的"的异常信息。若成功,就将编译成功的sixsV1.1.exe重命名为sixs.exe放在C:\Windows\System32路径下。

👀Py6S库安装测试

由于Py6S-1.9.2.tar.gz.tar.gz格式的,不是.whl格式的。安装教程如下:

解压→setup.pycmd命令行切换到该目录→执行命令Python.exe setup.py install

from Py6S import *
print(SixS.test())# 输出结果,成功标志如下:
6S wrapper script by Robin Wilson
Using 6S located at C:\WINDOWS\system32\sixs.exe
Running 6S using a set of test parameters
6sV version: 1.1
The results are:
Expected result: 619.158000
Actual result: 619.158000
#### Results agree, Py6S is working correctly
0

基于6S模型Landsat8/Sentinel2/GF大气校正的具体应用:基于6S模型的多源影像大气校正工程

多谢!多谢!
笔者不才,请多交流!!!

欢迎大家关注预览我的博客Blog:HeartLoveLife
能力有限,敬请谅解!!


http://www.mrgr.cn/news/60620.html

相关文章:

  • 网口电路设计
  • 云服务器数据删除了能恢复吗?
  • KTV 70.1.0 | 在家里电视上也能体验K歌的乐趣
  • 在vue2中引用d3.js并进行自定义绘图
  • 顺序表总结
  • WPF+MVVM案例实战(七)- 系统初始化界面字体描边效果实现
  • 仓颉编程语言一
  • 011:软件卸载工具TotalUninstall安装教程
  • 重写(外壳不变)
  • CSS3新增长度单位
  • Python自动化测试中的Mock与单元测试实战
  • 基于vue、VantUI、django的程序设计
  • 【HeadFirst 设计模式】设计模式总结与C++案例
  • 外包干了30天,技术明显退步
  • 内网穿透之网络层ICMP隧道
  • 基于SSM的宠物猫狗商业系统设计与实现
  • Chrome异步编程
  • 关于群辉920+更新升级系统后SSD固态存储不受当前DSM版本支持的解决方法
  • python实战(四)——RAG预热实践
  • ssm智慧社区电子商务系统+vue
  • Radar Fields: Frequency-Space Neural Scene Representations for FMCW Radar 笔记
  • 容器化实践:优化DevOps环境下的容器交付流程
  • 【CSS/SCSS】@supports的介绍与用法
  • 【深度学习|地学应用】人工智能技术的发展历程与现状:探讨深度学习在遥感地学中的应用前景
  • arduino uno R3更换328pb-au芯片,烧录bootloader
  • “药品追溯到客户管理:数字化转型下的药企发展之路”