Radiometric Correction


BRDF Surface Reflectance Consistency

Function name: brdf_surface_reflectance_consistency

PROProduction

Workflow-grade Pro analysis with audit-ready outputs.

workflow pro

Workflow Narrative

Surface Reflectance Consistency Analysis

Problem It Solves

Are directional and terrain illumination effects sufficiently normalized for reliable scene-to-scene reflectance comparison?

Who It Is For

  • Optical remote sensing teams preparing cross-scene reflectance products for trend/change workflows.

Primary User

EO product teams, environmental mapping agencies, and analytics groups with multi-date reflectance pipelines.

What It Does

  • Harmonizes reflectance across dates and sensors after terrain correction.
  • Quantifies normalization magnitude and confidence for QA-aware downstream analysis.
  • Packages reflectance consistency as a reproducible workflow-stage product.

How It Works

  • Runs an OSS terrain-correction prep stage when the input scene is still topographically distorted.
  • Derives normalization delta from pre/post correction residual magnitude.
  • Computes consistency confidence using exponential damping of large correction residuals.
  • Indicative formula: $C = \exp(-\Delta / s) \cdot Q$, where $\Delta$ is normalization delta and $Q$ is quality confidence.

Why It Wins

  • Couples normalization output with explicit delta and confidence diagnostics, enabling QA-aware downstream acceptance rules.

Typical Buying Trigger

Teams observe inconsistent reflectance behavior across acquisition geometries and need a reproducible consistency gate.

Typical Presets

  • fast: quicker normalization for large-area throughput.
  • balanced: default quality/speed tradeoff.
  • conservative: stronger correction confidence thresholding.

Inputs

ParameterOptionalDescription input_red, input_nir, input_demnoCore optical + terrain inputs used for topographic/reflectance normalization workflows. solar_zenith_deg, solar_azimuth_degnoSolar geometry parameters used to model illumination and terrain incidence effects. optional input_greenyesOptional green band used by workflows that include green-channel diagnostics. profile: fast | balanced | conservativenoProcessing profile controlling sensitivity, quality strictness, and runtime tradeoffs.

Outputs

ParameterTypeDescription brdf_normalized_reflectanceGeoTIFFBRDF-normalized reflectance raster with improved angular consistency. normalization_deltaGeoTIFFDifference layer showing magnitude of BRDF normalization adjustments. consistency_confidenceGeoTIFFConfidence surface indicating reflectance consistency after normalization. summaryJSONMachine-readable summary report containing run metadata, QA diagnostics, and key metrics. html_reportHTMLHuman-readable customer-facing report generated from the summary contract for stakeholder review and QA traceability.

Python Example

`import whitebox_workflows as wbw

wbe = wbw.WbEnvironment(include_pro=True, tier="pro")

normalized, delta, confidence, summary = wbe.brdf_surface_reflectance_consistency( input_red="data/red.tif", input_nir="data/nir.tif", input_dem="data/dem.tif", input_green="data/green.tif", solar_zenith_deg=40.0, solar_azimuth_deg=165.0, profile="balanced", output_prefix="output/brdf_consistency", )

print(normalized) print(delta) print(confidence) print(summary)`

License Notice

Use of this function requires a license for Whitebox Workflows Professional (WbW-Pro). Please visit www.whiteboxgeo.com to purchase a license.


BRDF Normalization

Function name: brdf_normalization

No help documentation available for this tool.


Correct Vignetting

Function name: correct_vignetting

This tool can be used to reduce vignetting within an image. Vignetting refers to the reduction of image brightness away from the image centre (i.e. the principal point). Vignetting is a radiometric distortion resulting from lens characteristics. The algorithm calculates the brightness value in the output image (BVout) as:

BVout = BVin / [cos^n(arctan(d / f))]

Where d is the photo-distance from the principal point in millimetres, f is the focal length of the camera, in millimeters, and n is a user-specified parameter. Pixel distances are converted to photo-distances (in millimetres) using the specified image width, i.e. distance between left and right edges (mm). For many cameras, 4.0 is an appropriate value of the n parameter. A second pass of the image is used to rescale the output image so that it possesses the same minimum and maximum values as the input image.

If an RGB image is input, the analysis will be performed on the intensity component of the HSI transform.

Python API

def correct_vignetting(self, image: Raster, principal_point: Vector, focal_length: float = 304.8, image_width: float = 228.6, n_param: float = 4.0) -> Raster:

Dark Object Subtraction

Function name: dark_object_subtraction

No help documentation available for this tool.


Dn To Toa Reflectance

Function name: dn_to_toa_reflectance

No help documentation available for this tool.


Terrain Corrected Optical Analytics

Function name: terrain_corrected_optical_analytics

PROProduction

Workflow-grade Pro analysis with audit-ready outputs.

workflow pro

Workflow Narrative

Terrain-Corrected Optical Prep

Problem It Solves

Can we reduce terrain illumination bias so downstream indices and change products are defensible?

Who It Is For

  • Remote sensing practitioners working in high-relief terrain.

Primary User

EO analytics teams, natural resource agencies, and monitoring service providers.

What It Does

  • Applies terrain-aware optical correction (C-correction style) using DEM-derived geometry.
  • Builds cloud/shadow masks and quality confidence diagnostics alongside corrected bands.
  • Produces analysis-ready corrected optical outputs for downstream monitoring/classification.

How It Works

  • Derives slope/aspect illumination terms from the DEM and solar geometry parameters.
  • Applies per-band topographic normalization (C-correction style) to reduce relief-driven bias.
  • Generates cloud-shadow and quality layers from correction residual behavior and masking rules.
  • Indicative formula: L_corr ~= L_obs * (cos(theta_s) + C) / (cos(i) + C), where i is incidence angle from DEM slope/aspect.

Why It Wins

  • Integrates correction and QA/mask outputs in one workflow rather than forcing separate ad hoc preprocessing scripts.

Typical Buying Trigger

Teams see unstable index/change outputs across steep terrain and need a standardized correction stage.

Typical Presets

  • conservative: stricter correction and masking behavior.
  • balanced: default profile.
  • fast: quicker execution on large scenes.

Inputs

ParameterOptionalDescription input_red, input_nir, input_demnoCore optical + terrain inputs used for topographic/reflectance normalization workflows. optional input_greenyesOptional green band used by workflows that include green-channel diagnostics. solar_zenith_deg, solar_azimuth_degnoSolar geometry parameters used to model illumination and terrain incidence effects. profile: conservative | balanced | fastnoProcessing profile controlling quality-vs-throughput behavior for correction workflow execution.

Outputs

ParameterTypeDescription corrected optical bandsGeoTIFFTerrain-corrected optical bands for downstream index and classification workflows. cloud_shadow_maskGeoTIFFCloud and shadow mask used to suppress unreliable optical pixels. topographic_correction_factorGeoTIFFPer-pixel topographic correction factor used in radiometric normalization. quality_confidenceGeoTIFFConfidence surface indicating reliability of corrected optical values. summaryJSONMachine-readable summary report containing run metadata, QA diagnostics, and key metrics. html_reportHTMLHuman-readable customer-facing report generated from the summary contract for stakeholder review and QA traceability.

Python Example

`import whitebox_workflows as wbw

wbe = wbw.WbEnvironment(include_pro=True, tier="pro")

result = wbe.terrain_corrected_optical_analytics( input_red="data/red.tif", input_nir="data/nir.tif", input_dem="data/dem.tif", solar_zenith_deg=40.0, solar_azimuth_deg=165.0, profile="balanced", output_prefix="output/tco", )

print(result)`

License Notice

Use of this function requires a license for Whitebox Workflows Professional (WbW-Pro). Please visit www.whiteboxgeo.com to purchase a license.