This repository contains a Python implementation of patch-based image denoising using Higher Order Singular Value Decomposition (HOSVD), based on the method introduced in:
"Image Denoising using the Higher Order Singular Value Decomposition"
Ajit Rajwade, Anand Rangarajan, and Arunava Banerjee.
IEEE Transactions on Pattern Analysis and Machine Intelligence, 2013.
The algorithm works by:
- Partitioning images into overlapping 8×8 patches
- Grouping similar patches using spiral window search
- Constructing 3D tensors for each patch group
- Applying HOSVD decomposition
- Thresholding core tensor values (hard threshold at τ = σ√(s²K))
- Reconstructing denoised patches
- Aggregating patches with averaging
Note: Implementation is optimized for grayscale images and omits the Wiener filtering step from the original paper
We used seven metrics to evaluate denoising performance on the CBSD68 dataset:
Metric | Formula | Description | Ideal Value |
---|---|---|---|
MSE | Mean Squared Error | Lower is better | |
RMSE | Root Mean Squared Error | Lower is better | |
MAE | Mean Absolute Error | Lower is better | |
PSNR | Peak Signal-to-Noise Ratio | Higher is better | |
SSIM | Structural Similarity Index | Closer to 1 | |
NRMSE | Normalized RMSE | Lower is better | |
UQI | Universal Quality Index | Closer to 1 |
├── notebooks/ # Jupyter notebooks for workflow
├── src/ # Core implementation
│ ├── denoiser.py
│ ├── patch_grouping.py
│ ├── aggregation.py
│ ├── offsets.py
│ ├── metrics.py
│ └── visualization.py
├── results/
│ ├── figures/ # Visual results
│ ├── final_results.csv # Complete metric data
│ └── mean_by_sigma.csv # Averaged results by noise level
└── requirements.txt
git clone https://github.com/pedram-ep/hosvd-image-denoising.git
cd image-denoising-hosvd
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
- Rajwade, A., Rangarajan, A., & Banerjee, A. (2013). "Image Denoising using the Higher Order Singular Value Decomposition".
- Feschet, F. (2019). “Implementation of a denoising algorithm based on High‑Order Singular Value Decomposition of tensors”
- Guo, J., Chen, H., Shen, Z., and Wang, Z. (2022). “Image denoising based on global image similar patches searching and HOSVD to patches tensor”
- Wang, Z., and Bovik, A. C. (2002). “A universal image quality index”
- Wang, Z., Bovik, A. C., Sheikh, H. R., and Simoncelli, E. P., “Image quality assessment: From error visibility to structural similarity”
- CBSD68‑dataset: Color BSD68 dataset for image denoising benchmarks. Available at: GitHub