pyspeckle is a Python library for generating and analyzing laser speckle fields. It provides reproducible numerical implementations of physically motivated speckle models used in optical metrology, coherent imaging, and biomedical photonics.
The methods implemented in this package are derived from Duncan & Kirkpatrick (Algorithms for simulation of speckle (laser and otherwise), Proc. SPIE 6855, 2008). These algorithms unify a variety of simulation approaches across:
- objective speckle (non-imaged fields),
- subjective speckle (imaged fields),
- static speckle, and
- dynamic speckle including translation, strain, boiling, and decorrelation.
Coherent imaging systems—including SAR, OCT, ultrasound, ESPI, and laser speckle contrast imaging—produce granular interference patterns defined by the random phase relationships of scattered waves.
Full documentation and algorithm demonstrations are available at:
https://pyspeckle2.readthedocs.io
Try in JupyterLite (no install required):
https://scottprahl.github.io/pyspeckle/
pip:
pip install pyspeckle
conda:
conda install -c conda-forge pyspeckle
If you use pyspeckle in academic, instructional, or applied technical work, please cite:
Prahl, S. (2025). pyspeckle: Tools for objective and subjective laser speckle analysis (Version 0.6.0) [Computer software]. Zenodo. https://doi.org/10.5281/zenodo.8311677
@software{pyspeckle_prahl_2025,
author = {Scott Prahl},
title = {pyspeckle: Tools for objective and subjective laser speckle analysis},
year = {2025},
version = {0.6.0},
doi = {10.5281/zenodo.8311677},
url = {https://github.com/scottprahl/pyspeckle},
publisher = {Zenodo}
}pyspeckle is released under the MIT License. Contributions are welcome.

