Skip to content

PSFs and deconvolution

Optical sampling

Production PSF generation models the silicone-objective optics, then samples the PSF in the same oblique coordinates as the acquisition. The emission wavelength, camera pixel size, scan step, and angle determine the sampled kernel. Supplied PSFs must match the reconstruction grid and channel order. Planar processing uses the central plane of a 3D PSF.

The solver normalizes the PSF to unit sum by default. Native OPM deconvolution uses per-axis PSF halos, symmetric image padding, and FFT-friendly sizes with small prime factors. Padded values participate in the loop; padding is removed from the returned image. See the PSF and solver reference.

RLGC update

RLGC repeatedly splits the measured counts into complementary halves. Whole counts use a 50:50 binomial draw. Fractional calibrated counts use a weighted-count approximation that assigns the remainder to either half with equal probability. Their sum is always the measured image.

Each half's observation/prediction ratio is backprojected. The update multiplier is the mean of the two backprojected ratios. The product of their deviations from unity is convolved with the forward/adjoint autocorrelation operator to form the consensus map. The consensus sign controls which multiplicative updates are applied. The core update and sign rule follow the designated local expansion-processing reference.

Initialization backprojects the measured image. Native stopping compares the current and previous predictions against the same freshly drawn halves using normalized observation-to-prediction KLD. In safe mode, worsening either half restores the previous reconstruction. Other stopping criteria are the updated pixel fraction, maximum relative change, and the iteration limit.

KLD is a stopping statistic. Physical acceptance checks specimen recovery, fluorescence, localization, and two-point profiles against known ground truth. See test requirements.

The RLGC reference implementation is expansion-processing/src/expansion_processing/rlgc.py at revision 098b8155f27bfbebf84ebaefc0a1114a64f3c287, with SHA-256 96d3f2ffef3b6f52cf46fcc2c9fe2ad70e29dddc8f60ed61066dfb96dd70a5ec. The core update is the reference requirement. Current initialization, fractional sampling, stopping, and OPM padding adaptations are described above; the complete loop is not claimed to be identical to that reference.

Sub-sampled acquisitions

Experimental --decon-scan-upsample N reconstructs a finer scan grid using convolution followed by selection of the acquired planes. The adjoint scatters observations into that grid before backprojection; missing planes are not zero-valued measurements. This operator has its own sensitivity correction and finite-volume boundary condition.

The experimental path requires a full GPU volume and currently supports neither scan chunking nor ROI processing. For an acquired scan spacing of 0.8 micrometers, N=4 reconstructs at 0.2 micrometers; PSF generation and deskewing use that finer spacing. An acquisition with M scan planes produces (M - 1) * N + 1 reconstruction planes, preserving the first and last acquired positions. Supplied PSFs must be sampled at the finer spacing. Fully sampled and sub-sampled data must be assessed against the same physical object and resolution measurements.