Official implementation and benchmark suite for the paper
“Unifying Statistical Inference and Deep Learning for Poisson--Gaussian Image Denoising: Benchmarks, Advances, and Future Horizons”
Submitted to The Visual Computer
Notice
This repository is directly related to the above manuscript. If you use the code, data, or benchmark protocol provided here, please cite the associated paper.
Poisson--Gaussian (PG) image denoising is a core problem in computational imaging, especially in low-photon and sensor-limited settings such as fluorescence microscopy, medical imaging, astronomy, and real-world low-light photography. Unlike additive white Gaussian noise (AWGN), PG noise combines signal-dependent photon noise with signal-independent electronic noise, making constant-variance assumptions invalid and introducing unique statistical and algorithmic challenges.
This repository provides a unified benchmark and implementation suite for PG denoising research. It is designed to support both methodological development and reproducible evaluation across classical, deep learning, diffusion, and plug-and-play approaches.
Image denoising under Poisson--Gaussian (PG) noise is a fundamental challenge in computational imaging, arising in diverse low-photon and sensor-limited applications such as fluorescence microscopy, medical imaging, and astronomy. Unlike additive white Gaussian noise (AWGN), PG noise exhibits signal-dependent variance coupled with signal-independent electronic noise, which invalidates the constant-noise assumptions of classical denoising models and poses unique statistical and algorithmic hurdles. This survey provides a structured, statistically grounded overview of PG denoising research, developing a coherent theoretical framework linking exponential-dispersion modeling and unbiased risk estimation to contemporary blind-spot and generative architectures.
- Unified statistical perspective connecting variance-stabilizing transforms, Bayesian optimization, unbiased risk estimation, and modern deep learning methods.
- Systematic benchmark suite spanning representative synthetic and real-noise datasets, including controlled PG noise generation and evaluation protocols.
- Comprehensive performance analysis showing that PG-aware methods can outperform AWGN-based surrogates by up to 1.8 dB PSNR and 0.05 SSIM.
- Open research outlook covering uncertainty quantification, cross-domain robustness, calibration, and resource-aware deployment.
├── datasets/ # Benchmark datasets
│ ├── synthetic/ # Synthetic PG-noise datasets
│ ├── real/ # Real-noise datasets (FMD, RENOIR, SIDD)
│ └── calibration/ # Paired calibration datasets
├── methods/ # Denoising method implementations
│ ├── classical/ # VST-based methods (VST-NLM, VST-BM3D, etc.)
│ ├── deep_learning/ # Supervised and self-supervised methods
│ ├── diffusion/ # Diffusion-based posterior sampling methods
│ └── plug_and_play/ # PnP and RED frameworks
├── utils/ # Common utilities
│ ├── noise_estimation/ # PG parameter estimation
│ ├── metrics/ # Evaluation metrics (PSNR, SSIM, PG-URE)
│ └── transforms/ # Variance-stabilizing transforms
├── experiments/ # Reproducible experiments
│ ├── benchmarking/ # Standard benchmark scripts
│ ├── ablation/ # Ablation studies
│ └── visualization/ # Visualization and analysis tools
└── docs/ # Documentation and tutorials
- Python 3.8+
- PyTorch 1.12+
- MATLAB R2016b+ (required for selected classical methods)
- All Python dependencies listed in
requirements.txt
git clone https://github.com/parcone/dataset.git
cd dataset
pip install -r requirements.txt
bash scripts/download_datasets.shFor classical MATLAB-based methods:
matlab -batch "addpath(genpath('methods')); addpath(genpath('utils'));"import torch
from methods.deep_learning import VST_BM3D_Net
from utils.noise_estimation import estimate_pg_noise
from utils.metrics import calculate_psnr, calculate_ssim
# Load noisy image
noisy_image = torch.load('examples/noisy_image.pt')
# Estimate Poisson-Gaussian noise parameters
alpha, sigma = estimate_pg_noise(noisy_image)
# Initialize denoiser
denoiser = VST_BM3D_Net()
# Denoise
denoised_image = denoiser(noisy_image, alpha=alpha, sigma=sigma)
# Evaluate
psnr = calculate_psnr(denoised_image, ground_truth)
ssim = calculate_ssim(denoised_image, ground_truth)
print(f"PSNR: {psnr:.2f} dB, SSIM: {ssim:.4f}")addpath(genpath('utils'));
addpath(genpath('methods'));
img_raw = imread('examples/noisy_image.tif');
[alpha, sigma] = estimate_noise(img_raw);
[img_denoised, processing_time] = denoise_VST_BM3D(img_raw, alpha, sigma);
figure;
subplot(1,2,1); imshow(img_raw, []); title('Raw Image');
subplot(1,2,2); imshow(img_denoised, []); title('Denoised Image');| Method | FMD (PSNR / SSIM) | SIDD (PSNR / SSIM) | BSD68 (PSNR / SSIM) |
|---|---|---|---|
| VST-BM3D | 32.4 / 0.842 | 34.1 / 0.876 | 35.2 / 0.912 |
| VST-NLM | 30.1 / 0.801 | 31.8 / 0.834 | 32.9 / 0.876 |
| Deep VST-Net | 34.2 / 0.891 | 36.1 / 0.912 | 37.3 / 0.934 |
| PG-Diffusion | 33.8 / 0.883 | 35.7 / 0.904 | 36.9 / 0.928 |
| Dataset | True (α, σ) | Estimated (α, σ) | Error |
|---|---|---|---|
| Synthetic 1 | (1.0, 25.0) | (1.02, 24.8) | 0.8% |
| Synthetic 2 | (4.0, 10.0) | (3.98, 10.2) | 1.2% |
| Real FMD | - | (2.1, 18.3) | - |
python experiments/benchmarking/run_full_benchmark.py
python experiments/benchmarking/run_classical.py
python experiments/benchmarking/run_deep_learning.py
python experiments/benchmarking/run_diffusion.pypython experiments/ablation/noise_parameter_sensitivity.py
python experiments/ablation/method_components.pyfrom experiments.benchmarking import BenchmarkRunner
runner = BenchmarkRunner(
datasets=['FMD', 'SIDD', 'BSD68'],
methods=['VST_BM3D', 'Deep_VST_Net', 'PG_Diffusion'],
noise_params=[(1, 25), (4, 10), (8, 5)]
)
results = runner.run()
runner.save_results('custom_results.json')- VST-NLM
- VST-BM3D
- VST-KSVD
- PURE-LET
- Supervised PG denoising models
- Self-supervised methods such as Noise2Void and related paradigms
- Hybrid approaches combining model-based optimization and learned priors
- Posterior sampling for uncertainty-aware reconstruction
- PG-conditioned diffusion schedules
- Accelerated and distilled variants
- PnP priors for inverse problems under PG noise
- Regularization by denoising (RED)
- Iterative Bayesian and proximal formulations
- PSNR: Peak Signal-to-Noise Ratio
- SSIM: Structural Similarity Index
- LPIPS: Learned Perceptual Image Patch Similarity
- PG-URE: Poisson-Gaussian Unbiased Risk Estimator
- Spatially weighted PSNR for heteroscedastic noise evaluation
- Task-oriented metrics for domain-specific downstream analysis
- Python: PEP 8
- MATLAB: MathWorks conventions
- Documentation: Sphinx for Python components and structured MATLAB documentation where applicable
python -m pytest tests/
python -m pytest tests/integration/
python experiments/validate_results.pyContributions are welcome. Please follow the standard workflow:
- Fork the repository.
- Create a feature branch.
- Add or update tests.
- Ensure all tests pass.
- Submit a pull request with a clear description of changes.
If you use this repository, benchmark, or associated methods, please cite the paper and repository as follows.
@article{peng2025unifying,
title={Unifying Statistical Inference and Deep Learning for Poisson--Gaussian Image Denoising: Benchmarks, Advances, and Future Horizons},
author={Peng, Pai and Ma, Chongya and Chen, Hechan and Liu, Chuxiang and Xiaokaiti, Aizimaiti},
journal={The Visual Computer},
year={2025},
publisher={Springer},
doi={[DOI will be assigned upon publication]}
}@dataset{peng2025pg_dataset,
title={Poisson-Gaussian Image Denoising Dataset and Benchmark Suite},
author={Peng, Pai and Ma, Chongya and Chen, Hechan and Liu, Chuxiang and Xiaokaiti, Aizimaiti},
year={2025},
publisher={GitHub},
url={https://github.com/parcone/dataset},
doi={10.5281/zenodo.[DOI will be assigned]}
}This repository is directly associated with a manuscript currently under review.
- The paper DOI will be added upon publication.
- The codebase is intended to reflect the methodology described in the manuscript.
- Benchmark results are designed to be reproducible using the included scripts and protocols.
- If you use this work in academic or applied research, please cite the associated publication.
For paper-related questions, please contact the corresponding author.
This project is released under the MIT License. See the LICENSE file for details.
This work was supported by the Finance Science and Technology Project of Xinjiang Uygur Autonomous Region (2023B01029-1, 2023B01029-2).
We also thank the contributors and maintainers of the datasets and methods referenced in this benchmark, including:
- FMD for fluorescence microscopy denoising
- RENOIR for real-noise photography
- SIDD for smartphone image denoising
- The broader computational imaging and image restoration community
- Corresponding Author: Aizimaiti Xiaokaiti
- Email: azmtxkt@xju.edu.cn
- Repository Support: Please use GitHub Issues for bug reports and implementation questions.
This repository is under active development.