Change Detection
Change Vector Analysis
Function name: change_vector_analysis
Change Vector Analysis (CVA) is a change detection method that characterizes the magnitude and change direction in spectral space between two times. A change vector is the difference vector between two vectors in n-dimensional feature space defined for two observations of the same geographical location (i.e. corresponding pixels) during two dates. The CVA inputs include the set of raster images corresponding to the multispectral data for each date. Note that there must be the same number of image files (bands) for the two dates and they must be entered in the same order, i.e. if three bands, red, green, and blue are entered for date one, these same bands must be entered in the same order for date two.
CVA outputs two image files. The first image contains the change vector length, i.e. magnitude, for each pixel in the multi-spectral dataset. The second image contains information about the direction of the change event in spectral feature space, which is related to the type of change event, e.g. deforestation will likely have a different change direction than say crop growth. The vector magnitude is a continuous numerical variable. The change vector direction is presented in the form of a code, referring to the multi-dimensional sector in which the change vector occurs. A text output will be produced to provide a key describing sector codes, relating the change vector to positive or negative shifts in n-dimensional feature space.
It is common to apply a simple thresholding operation on the magnitude data to determine 'actual' change (i.e. change above some assumed level of error). The type of change (qualitatively) is then defined according to the corresponding sector code. Jensen (2015) provides a useful description of this approach to change detection.
Reference
Jensen, J. R. (2015). Introductory Digital Image Processing: A Remote Sensing Perspective.
See Also
write_function_memory_insertion
Python API
def change_vector_analysis(self, date1_rasters: List[Raster], date2_rasters: List[Raster]) -> Tuple[Raster, Raster, str]:
Image Difference Change Detection
Function name: image_difference_change_detection
No help documentation available for this tool.
PCA Based Change Detection
Function name: pca_based_change_detection
No help documentation available for this tool.
Post Classification Change
Function name: post_classification_change
No help documentation available for this tool.
Remote Sensing Change Detection
Function name: remote_sensing_change_detection
PROProduction
Detect spectral change between baseline and change-date multispectral bundles with profile-based sensitivity.
workflow pro
Workflow Narrative
Remote Sensing Change Detection
Problem It Solves
Where is meaningful vegetation change occurring, and which detections are reliable enough for reporting?
Who It Is For
- Environmental monitoring analysts and EO operations teams.
Primary User
Environmental consultancies, forestry/conservation agencies, and compliance programs.
What It Does
- Detects vegetation loss/gain between two dates using NDVI-style change logic.
- Uses bundle-native multiband inputs with explicit red/NIR band indices.
- Produces a signed change raster and a confidence raster for analyst triage.
How It Works
- Computes NDVI-like indices per date from selected red and NIR bands.
- Calculates signed per-pixel delta between change-date and baseline NDVI-like response.
- Applies profile-dependent thresholds and local consistency checks to derive confidence.
- Indicative formula: NDVI = (NIR - Red) / (NIR + Red), then change = NDVI_change - NDVI_baseline.
Why It Wins
- Bundle-native inputs reduce parameter mismatch errors and make cross-date processing more reproducible.
Typical Buying Trigger
A client or regulator requires repeatable, confidence-scored vegetation change evidence for periodic reporting.
Typical Presets
- aggressive: lower change threshold, more sensitive detection.
- balanced: default tradeoff for general monitoring.
- conservative: stricter thresholds, fewer false positives.
Inputs
ParameterOptionalDescription
baseline_bundle, baseline_red_band_index, baseline_nir_band_indexnoBaseline multispectral bundle and red/NIR band selectors used to compute baseline vegetation response.
change_bundle, change_red_band_index, change_nir_band_indexnoChange-date multispectral bundle and red/NIR band selectors used for signed change estimation.
optional intermediate_ndviyesIntermediate-date NDVI raster used to strengthen temporal plausibility scoring.
profile: aggressive | balanced | conservativeyesProcessing profile controlling sensitivity, quality strictness, and runtime tradeoffs.
high_confidence_thresholdyesConfidence threshold used for summary metrics (default 0.85).
Outputs
ParameterTypeDescription change_mapGeoTIFFPrimary change-intelligence raster showing direction and magnitude of detected change. confidenceGeoTIFFConfidence layer quantifying reliability of modeled outputs. 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")
change_map, confidence, summary = wbe.remote_sensing_change_detection( baseline_bundle="data/baseline_bundle.tif", baseline_red_band_index=0, baseline_nir_band_index=1, change_bundle="data/change_bundle.tif", change_red_band_index=0, change_nir_band_index=1, profile="balanced", output="output/rs_change", )
print(change_map) 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.
Time Series Change Intelligence
Function name: time_series_change_intelligence
PROProduction
Workflow-grade Pro analysis with audit-ready outputs.
workflow pro
Workflow Narrative
Time-Series Change Analysis
Problem It Solves
Where and when are structural shifts emerging in the time series, and how confident are those signals?
Who It Is For
- Time-series monitoring teams and geospatial data science groups.
Primary User
Regional planning programs, policy/compliance analytics groups, and EO product teams.
What It Does
- Performs multi-date trend and breakpoint analysis from temporal stacks.
- Supports mode-dependent decomposition/segmentation behavior.
- Emits confidence-scored temporal change surfaces.
How It Works
- Traverses each pixel time series and estimates trend response over the observation window.
- Uses algorithm_mode-specific breakpoint logic to detect structural shifts.
- Converts fit strength, breakpoint support, and observation sufficiency into confidence output.
- Indicative formula: confidence ~= f(|trend|, breakpoint_support, n_observations), bounded to [0, 1].
Why It Wins
- Provides mode flexibility (fast/iterative/bfast) so users can balance throughput and analytical depth.
Typical Buying Trigger
A monitoring program moves from two-date snapshots to sustained time-series surveillance.
Typical Presets
- fast: throughput-oriented screening.
- iterative: stronger breakpoint refinement.
- bfast: decomposition-oriented analysis.
Inputs
ParameterOptionalDescription input_stack (required)noPrimary temporal raster stack used for trend and breakpoint analysis. optional qa_stackyesOptional temporal QA stack used to weight or suppress low-quality observations. algorithm_mode and thresholding controlsnoTime-series change algorithm mode and threshold controls.
Outputs
ParameterTypeDescription trend_changeGeoTIFFPrimary change-intelligence raster showing direction and magnitude of detected change. breakpoint_countGeoTIFFPer-pixel count of detected temporal breakpoints. breakpoint_dateGeoTIFFEstimated timing raster for dominant detected breakpoint events. change_confidenceGeoTIFFConfidence surface for the time-series change detection result. 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.time_series_change_intelligence( input_stack="data/time_stack.tif", qa_stack="data/time_stack_qa.tif", algorithm_mode="bfast", output_prefix="output/ts_change", )
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.
Write Function Memory Insertion
Function name: write_function_memory_insertion
Jensen (2015) describes write function memory (WFM) insertion as a simple yet effective method of visualizing land-cover change between two or three dates. WFM insertion may be used to qualitatively inspect change in any type of registered, multi-date imagery. The technique operates by creating a red-green-blue (RGB) colour composite image based on co-registered imagery from two or three dates. If two dates are input, the first date image will be put into the red channel, while the second date image will be put into both the green and blue channels. The result is an image where the areas of change are displayed as red (date 1 is brighter than date 2) and cyan (date 1 is darker than date 2), and areas of little change are represented in grey-tones. The larger the change in pixel brightness between dates, the more intense the resulting colour will be.
If images from three dates are input, the resulting composite can contain many distinct colours. Again, more intense the colours are indicative of areas of greater land-cover change among the dates, while areas of little change are represented in grey-tones. Interpreting the direction of change is more difficult when three dates are used. Note that for multi-spectral imagery, only one band from each date can be used for creating a WFM insertion image.
Reference
Jensen, J. R. (2015). Introductory Digital Image Processing: A Remote Sensing Perspective.
See Also
create_colour_composite, change_vector_analysis
Python API
def write_function_memory_insertion(self, image1: Raster, image2: Raster, image3: Raster) -> Raster: