跳转到主要内容

针对Planetscope 4波段图像的ATSA云掩码方法

项目描述

pyATSA

pyatsa可以在卫星图像中寻找云。

此仓库包含pyatsa包,它将Zhu和Helmer 2018年原创的ATSA方法和代码移植过来,还包括示例笔记本。目前,Python版本在加纳的Planetscope 4波段图像中产生的结果几乎与Planet Lab的可用数据掩码相当。在存在大量明亮不透水面、明亮土壤或水的情况下,pyatsa在云阴影类别中生成大量误报,并且从云中生成误报的斑点。这些问题是我们正在努力解决的主要问题。

安装

pip安装pyatsa

从源代码安装并带有依赖项

conda env create -f environment.yaml
conda activate pyatsa
# or anaconda3 if you use anaconda or whatever the path to your python file is
flit install --symlink --python ~/miniconda3/envs/pyatsa/bin/python3.7

pyatsa与Zhu和Helmer 2018年原始ATSA之间的差异

  • 在计算时间序列中图像的晴空线时,Zhu将A_cloud设置为.5-1.5理想值,但低值导致在Planetscope图像中出现太多误报。
  • 我选择在scikit-image中使用Li的交叉熵阈值法,而不是逆向距离加权法,来分割由场景几何计算出的潜在云阴影区内的云阴影。这更易于编程,并且看起来效果更好,IDW方法倾向于仅屏蔽云的直接相邻阴影。我在加纳测试pyatsa时观察到,云阴影几乎在1公里外,这与pyatsa的测试结果一致。更多实际阴影被正确屏蔽,尽管在云不存在的地方产生了更多误报。

与原始ATSA IDL代码比较

原始ATSA程序由作者在https://xiaolinzhu.weebly.com/open-source-code.html上分发。要运行,需要安装IDL和ENVI。然后

  1. 通过在终端中调用 idlde 来启动 IDL IDE

  2. 在 idlde 中运行 ENVI,因为需要使用 ENVI 函数来打开时间序列文件

  3. 运行 CD, "<包含 ATSA-Planet.pro 文件的目录路径>"

  4. 使用 .r ATSA-Planet.pro 编译 ATSA-Planet.pro 文件

  5. 从 idlde 中调用 IDL 脚本,使用 ATSA

IDL 脚本将保存一个以 ".sav" 结尾的文件(您需要编辑脚本以更改该文件在您计算机上的输出路径)。该文件将包含脚本中的所有变量和结果。该文件可以使用 scipy.io.readsav 作为一个 Python 字典读取,其中每个键是原始 IDL 变量名。这可以用于 pytests 来检查一致性。

要运行测试,导航到 atsa-python 文件夹并运行 pytest test_pyatsa.py。pytest 将检查包含单词 "test" 的任何函数并执行该函数,为每个测试函数生成时间和测试结果。pytest 固定项用于定义测试之间共享的变量。这些测试当前使用两个固定项,一个用于 Python 版本的配置(这些配置是从 IDL 版本复制的),另一个用于包含 IDL 版本所有变量的 ~3Gb .sav 文件。

关于 IDL 版本的调试说明

IDL 代码有独立的循环来处理水域区域(通过预存在的水域掩码识别)和陆地区域。

水域掩码在水中为 0 值,在没有水的地方为 1。陆地类别的掩码值如下。

  • 3 - 背景/SLC 错误,缺失数据
  • 2 - 云(见第 365 至 378 行)
  • 1 - 清晰的陆地(见第 323 至 331 行,其中 idl 从 ge 条件返回 1 或 0)

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源分发

pyatsa-0.2.tar.gz (15.7 kB 查看哈希)

上传时间

构建分发

pyatsa-0.2-py3-none-any.whl (43.8 kB 查看哈希)

上传时间 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面