59 lines
3.9 KiB
Python
59 lines
3.9 KiB
Python
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()
|