实现水体含量反演程序。

This commit is contained in:
tangchao0503
2025-01-06 10:18:08 +08:00
parent 7c1f83308d
commit 772663a03c
16 changed files with 1903 additions and 0 deletions

58
deglint.py Normal file
View File

@ -0,0 +1,58 @@
import argparse
from deglint_subtract_nir import deglint_subtract_nir
from deglint_oxygen_absorption_valley import deglint_oxygen_absorption_valley
from deglint_regression_slope import deglint_regression_slope
def main():
parser = argparse.ArgumentParser(description="此程序用于去除水域数据的耀斑暂时支持3种算法。")
# parser.add_argument("--global_arg", type=str, help="A global argument for all modes", required=True)
# 创建子命令解析器
subparsers = parser.add_subparsers(dest="algorithm", required=True, help="Choose a mode")
subnir = subparsers.add_parser("subnir", help="Mode 1 description")
subnir.add_argument('-i1', '--input', type=str, required=True, help='输入影像文件的路径')
subnir.add_argument('-i2', '--input_water_mask', type=str, required=True, help='输入水域掩膜文件的路径')
subnir.add_argument('-o', '--output', type=str, required=True, help='输出文件的路径')
subnir.add_argument('-s', '--start_wave', type=float, required=True, help='nir开始波段')
subnir.add_argument('-e', '--end_wave', type=float, required=True, help='nir结束波段')
subnir.set_defaults(func=deglint_subtract_nir)
regression_slope = subparsers.add_parser("regression_slope", help="Mode 2 description")
regression_slope.add_argument('-i1', '--input', type=str, required=True, help='输入影像文件的路径')
regression_slope.add_argument('-i2', '--input_water_mask', type=str, required=True, help='输入水域掩膜文件的路径')
regression_slope.add_argument('-o', '--output', type=str, required=True, help='输出文件的路径')
regression_slope.add_argument('-s', '--start_wave', type=float, required=True, help='nir开始波段')
regression_slope.add_argument('-e', '--end_wave', type=float, required=True, help='nir结束波段')
regression_slope.add_argument('-r', '--roi', type=str, required=True, help='输入roi文件的路径')
regression_slope.set_defaults(func=deglint_regression_slope)
oxygen_absorption = subparsers.add_parser("oxygen_absorption", help="Mode 3 description")
oxygen_absorption.add_argument('-i1', '--input', type=str, required=True, help='输入影像文件的路径')
oxygen_absorption.add_argument('-i2', '--input_water_mask', type=str, required=True, help='输入水域掩膜文件的路径')
oxygen_absorption.add_argument('-o', '--output', type=str, required=True, help='输出文件的路径')
oxygen_absorption.add_argument('-l', '--left_shoulder_wave', type=float, required=True, help='氧气吸收谷左肩波长')
oxygen_absorption.add_argument('-v', '--valley_wave', type=float, required=True, help='氧气吸收谷底波长')
oxygen_absorption.add_argument('-r', '--right_shoulder_wave', type=float, required=True, help='氧气吸收谷右肩波长')
oxygen_absorption.add_argument('-sw', '--shoulder_window', type=float, required=True, help='氧气吸收谷左右肩平均窗口,半径')
oxygen_absorption.add_argument('-vw', '--valley_window', type=float, required=True, help='氧气吸收谷底平均窗口,半径')
oxygen_absorption.set_defaults(func=deglint_oxygen_absorption_valley)
# 解析参数
args = parser.parse_args()
if args.algorithm == "subnir": # 处理文件D:\PycharmProjects\sun_glint\test_data\ref_deepWater_20230914_154510时730-750效果是最好的
args.func(args.input, args.input_water_mask, args.output, args.start_wave, args.end_wave)
elif args.algorithm == "regression_slope":
args.func(args.input, args.input_water_mask, args.output, args.start_wave, args.end_wave, args.roi)
elif args.algorithm == "oxygen_absorption":
args.func(args.input, args.input_water_mask, args.output, args.left_shoulder_wave, args.valley_wave, args.right_shoulder_wave,
args.shoulder_window, args.valley_window)
# Press the green button in the gutter to run the script.
if __name__ == '__main__':
main()