The problem — Every fluorescence image carries a systematic shading field: the center of the field is brighter than the edges because the excitation illumination is not perfectly uniform. For Cell Painting, this translates directly into position-on-plate signal: a cell at the corner of a field looks dimmer in every intensity feature than a cell at the center, regardless of its biology. Uncorrected, this optics artifact leaks into morphological profiles as a measurable batch effect. The same phenomenon appears in different forms across modalities: stripe noise in light-sheet, stain variation across a whole-slide image, cycle-to-cycle registration error in spatial omics.
What it is / how it works — Preprocess estimates and removes the systematic component of the acquisition artifact, leaving residual that is biological signal plus shot noise. For fluorescence HCS, BaSiCPy and CIDRE estimate a per-channel flat-field correction function from the data itself — no clean reference needed. For light-sheet, stripe removal (destriping) and deconvolution (RedLionfish, clij2) address the complementary artifacts of the light-sheet geometry. For spatial omics, cross-cycle registration (ASHLAR, SimpleITK) realigns tiles that drifted between rounds of cyclic immunofluorescence. The output in every case is an image set where the systematic artifact has been removed to the point that it no longer dominates downstream measurements.
Where it breaks — Over-correction is the symmetric failure: BaSiCPy with too few images produces a noisy correction function that introduces variance rather than removing it; deconvolution that is iterated too many times synthesizes structure that was never there. The rule is to validate correction with a downstream readout gate — in Cell Painting, Illumination Correction Before You Trust a Profile failing a Percent Replicating check is a signal that the correction function, not the biology, is the problem. Preprocess is never self-validating; it validates only through what it enables downstream.