Initial commit
This commit is contained in:
75
Flexbrdf/hytools/glint/glint.py
Normal file
75
Flexbrdf/hytools/glint/glint.py
Normal file
@ -0,0 +1,75 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
HyTools: Hyperspectral image processing library
|
||||
Copyright (C) 2021 University of Wisconsin
|
||||
|
||||
Authors: Evan Greenberg.
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, version 3 of the License.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
"""
|
||||
import ray
|
||||
from ..misc import set_glint
|
||||
from .hochberg_2003 import apply_hochberg_2003_correction
|
||||
from .gao_2021 import apply_gao_2021_correction
|
||||
from .hedley_2005 import apply_hedley_2005_correction
|
||||
|
||||
|
||||
def set_glint_parameters(actors, config_dict):
|
||||
# Assign glint dict
|
||||
glint_dict = config_dict['glint']
|
||||
|
||||
# Set Glint dict
|
||||
_ = ray.get([
|
||||
a.do.remote(set_glint, glint_dict) for a in actors
|
||||
])
|
||||
|
||||
# Add glint correction
|
||||
_ = ray.get([
|
||||
a.do.remote(lambda x: x.corrections.append('glint')) for a in actors
|
||||
])
|
||||
|
||||
def set_glint_parameters_single(hy_obj, config_dict):
|
||||
# Assign glint dict
|
||||
glint_dict = config_dict['glint']
|
||||
|
||||
# Set Glint dict
|
||||
set_glint(hy_obj, glint_dict)
|
||||
|
||||
# Add glint correction
|
||||
hy_obj.corrections.append('glint')
|
||||
|
||||
|
||||
def apply_glint_correct(hy_obj, data, dimension, index):
|
||||
''' Corrects glint based on the specified algorithm in the config.
|
||||
Options include:
|
||||
Hochberg et al., 2003: hochberg
|
||||
Gao et al., 2021: gao
|
||||
Hedley et al. 2005: hedley
|
||||
...
|
||||
'''
|
||||
|
||||
# Perform one of the corrections
|
||||
if hy_obj.glint['type'] == 'hochberg':
|
||||
data = apply_hochberg_2003_correction(hy_obj, data, dimension, index)
|
||||
|
||||
elif hy_obj.glint['type'] == 'gao':
|
||||
data = apply_gao_2021_correction(hy_obj, data, dimension, index)
|
||||
|
||||
elif hy_obj.glint['type'] == 'hedley':
|
||||
data = apply_hedley_2005_correction(hy_obj, data, dimension, index)
|
||||
|
||||
#Truncate reflectance values below 0
|
||||
if hy_obj.glint['truncate']:
|
||||
data[(data < 0) & (data != hy_obj.no_data)]= 0
|
||||
|
||||
return data
|
||||
Reference in New Issue
Block a user