Satellite BRDF normalization¶
hyperproc.correct.nbar() uses MCD43 model parameters to estimate a ratio between modeled reflectance at target and observed geometry. That ratio multiplies the input reflectance. It does not fit a hyperspectral BRDF independently from one scene.
Apply to suitable surface reflectance¶
import hyperproc as hp
from hyperproc.correct import nbar
ds = hp.open("/path/to/satellite_surface_reflectance")
normalized = nbar(ds, sza_ref="observed", spectral="nearest", fill="none")
The example preserves observed solar zenith while normalizing the view. The function default is a fixed sza_ref=45.0, with nadir view. Choose deliberately; fixed-sun and observed-sun outputs answer different comparison questions.
If parameters are not supplied, the default retrieval pathway uses Google Earth Engine and requires external authorization. A local, already prepared parameter object can be passed through params=. Read MCD43 API for supported local reading and fetching.
Install the optional dependency with pip install 'hyperproc[brdf]', then
authenticate once with earthengine authenticate. Pass an authorized
project= or set EARTHENGINE_PROJECT when your account requires a Cloud
project. source="local" uses an existing MCD43 cache; it does not download
missing parameters.
Spatial and temporal support¶
MCD43A1 Version 6.1 provides model parameters at a much coarser support than many hyperspectral pixels and draws on a multi-day observation window. Sampling those parameters onto a fine grid does not create fine-resolution BRDF information. NASA product description.
Spectral choices¶
| Setting | Behavior | Interpretation |
|---|---|---|
spectral="nearest" |
Assigns each spectral band to a nearby MODIS band | Traceable but potentially discontinuous at mapping boundaries |
spectral="interp" |
Interpolates parameter support in wavelength | Smoother approximation, not a new observation |
fill="none" |
Keeps a neutral multiplier where parameters are missing, with flags | Those pixels are not genuinely normalized |
fill="median" / "nearest" |
Substitutes parameters according to the selected policy | Requires explicit disclosure and QA |
A multiplicative scaling shared by all kernel coefficients cancels in the c-factor ratio. Arbitrary additive or component-specific parameter biases do not generally cancel. Treat broad claims about bias cancellation in historical docstrings cautiously.
Quality and diagnostics¶
Inspect model quality, snow masking, footprint coverage, factor clipping, and any filled pixels. Review c_factor, associated flags, and provenance. Plot reflectance and factors across wavelength to detect mapping-boundary steps before fitting narrow absorption features.
The route is intended for suitable land surface reflectance. Applying a land BRDF model over water, snow, heterogeneous mixed pixels, or unusual angular conditions requires separate scientific justification.
See c-factor API and the sensor-specific satellite notebooks.