Activity-Based Intel

Seasonal change vs. real anomaly: a field guide for analysts

A field guide for imagery analysts on separating seasonal drift and shadow artifacts from genuine site anomalies, using a multi-pass baseline.

Frost-covered grass field with bare winter trees along the tree line under a grey sky.
Photo: Nataliia Zhytnytska / Pexels

Every analyst who's worked a named site long enough has flagged something that turned out to be nothing. A parking lot that filled up. A stockpile that grew. A tree line that went from green to bare. None of it was activity. It was the calendar.

Seasonal change is the single biggest source of false positives in a change-detection workflow, and it's also the easiest to rule out once you know what you're looking at. Telling the difference takes enough prior passes of the same site to know what "normal" looks like at this time of year, not just in general.

Why seasonal drift gets flagged as activity

A single before/after comparison can't tell the difference between a site that changed and a site that just aged a few months. Vegetation phenology is the usual culprit: crops come up, canopy closes, leaves drop, snow comes and goes. Any of that can shift pixel values enough to trip a naive change-detection threshold, and if your only reference frame is "last month's pass," you'll chase it.

The other quiet offender is sun geometry. As the sun's elevation angle drops through fall and winter, shadows get longer and point in a different direction, even with nothing on the ground moved an inch. A storage yard that looks "denser" in a December pass compared to a June one might just be throwing a 40-meter shadow instead of a 15-meter one. Shadow length and azimuth track the sun's seasonal path. Treating a shadow artifact as a structural change is one of the fastest ways to burn a tip-off on nothing.

Telling seasonal change from a real anomaly

The fix is comparing against the right slice of history: the same site, the same point in the calendar, across multiple years. A few things to check before you write anything up:

Same time of year, multiple years back. If a site looked the same way last October and the October before that, you're looking at a seasonal pattern, not a deviation. One frame tells you almost nothing. A stack of them at the same point in the calendar tells you what's routine for that site.

Sun angle and shadow geometry. Before calling a change in footprint or density, check whether the sun elevation differs enough between the two passes to explain it on its own. A quick mental model: lower sun, longer shadow, more apparent ground coverage from structures and vegetation alike. If the shadow math accounts for the difference, that's not your anomaly.

Vegetation state against the local growing calendar. Greening, browning, snow cover, and canopy fill all move on a predictable cycle for a given latitude. A baseline tracked through a full annual cycle will show you where this site sits on that curve, so a change that's "early" or "late" relative to its own history stands out, while a change that's right on schedule doesn't.

Deviation from the site's own pattern, not from a generic model. Two sites in the same region can have different seasonal rhythms depending on use, drainage, orientation, and vegetation type. A baseline built from one site's own repeat passes beats any general assumption about what "fall" should look like there.

A change is a real anomaly when it's inconsistent with what this specific site has done at this specific point in prior years. If it's consistent, it's weather and daylight doing what weather and daylight do. If it's not, something actually moved, got built, got cleared, or got abandoned, and that's worth a closer look.

This is the entire argument for working from an accumulated baseline instead of a single snapshot or a short before/after pair. A site observed daily over months builds its own seasonal record, so a new pass gets checked against "what this site normally does in October," not against an arbitrary prior date. Activity-Based Intel is built around exactly that kind of running baseline, checking each new VHR pass against the site's own accumulated pattern so a genuine deviation surfaces instead of getting buried under routine seasonal drift.

If you're tired of running down shadow artifacts and foliage cycles as if they were real tips, it might be worth seeing what a proper pattern-of-life baseline looks like for your site.