|
|
import numpy as np |
|
|
import seaborn as sns |
|
|
import matplotlib.pyplot as plt |
|
|
|
|
|
|
|
|
EPS = 1e-10 |
|
|
|
|
|
|
|
|
def set_style() -> None: |
|
|
sns.set(font='serif') |
|
|
sns.set_style("darkgrid", { |
|
|
"font.family": "serif", |
|
|
"font.serif": ["umr10", "Times", "Palatino", "serif"] |
|
|
}) |
|
|
plt.rcParams.update({"mathtext.fontset": "cm", "mathtext.rm": "serif"}) |
|
|
|
|
|
|
|
|
|
|
|
def bsi(nir, red, blue, green): |
|
|
return ((nir+green-(red+blue))/(nir+green+red+blue+EPS)) |
|
|
|
|
|
|
|
|
|
|
|
def sr(nir, red): |
|
|
return (nir)/(red+EPS) |
|
|
|
|
|
|
|
|
|
|
|
def ndvi(nir, red): |
|
|
return (nir-red)/(nir+red+EPS) |
|
|
|
|
|
|
|
|
def evi(nir, red, blue): |
|
|
return (2.5*(nir-red))/(nir+6*red-7.5*blue+1+EPS) |
|
|
|
|
|
|
|
|
|
|
|
def osavi(nir, red, blue): |
|
|
return (nir-red)/(nir+red+0.16+EPS) |
|
|
|
|
|
|
|
|
def osavi2(nir, red, blue): |
|
|
n = improve_img_levels(nir) |
|
|
r = improve_img_levels(red) |
|
|
b = improve_img_levels(blue) |
|
|
return (1+0.16)*((nir-red)/(nir+red+0.16+EPS)) |
|
|
|