A MATLAB implementation of Generalized Cross Validation (GCV) methods for parameter selection in regularized inverse problems, particularly focused on CT scans restoring and image deblurring applications.
This code is supplementary material for the paper
A detailed description of all the mathematical grounding can be found there.
This repository contains MATLAB code for implementing GCV-based parameter selection methods for solving ill-posed inverse problems. The primary focus is CT scan signals restoring and image deblurring using Gaussian blur kernels, with efficient implementations for handling large-scale problems through singular value decomposition (SVD) techniques.
- Generalized Cross Validation (GCV) implementation for automatic parameter selection
- Efficient SVD-based computations for large-scale problems
- Comparative analysis between GCV and optimal parameter selection
- Comprehensive testing framework with multiple noise levels and problem sizes
- Image deblurring with Gaussian blur kernels are deeper optimezed by chunked
- processing for handling large matrices
This code requires the following MATLAB toolboxes and external libraries:
- AIRToolsII - Algebraic Iterative Reconstruction Methods
- IRtools - Image Restoration Tools
- Clone the repository:
git clone https://github.com/mkirilin/GCV.git
cd GCV- Set up dependencies in MATLAB:
addpath('/path/to/AIRToolsII');
AIRToolsII_setup();
addpath('/path/to/IRtools');
IRtools_setup();- Run the test suite:
run('Tests.m');% Basic GCV parameter selection
[Xgcv, Xopt, err_gcv, err_opt, k_gcv, k_opt] = gcv(S, V, x, bn, m0, m, allSV, coeffs_all);
% The function returns:
% Xgcv - Solution using GCV-selected parameter
% Xopt - Solution using optimal parameter
% err_gcv - Relative error for GCV solution
% err_opt - Relative error for optimal solution
% k_gcv - GCV-selected parameter value
% k_opt - Optimal parameter valueThe repository includes a SLURM batch script (gcv_test.sh) for running computations on HPC clusters:
sbatch gcv_test.shThe implementation uses:
- Singular Value Decomposition (SVD) for efficient computation
- Chunked processing to handle memory constraints
- Vectorized operations for performance optimization
- Progressive error computation for all parameter values
- Discrete Cosine Transform matrix use for deblurring problem for speeding up and memory efficience
This code is particularly useful for:
- Image deblurring and CT sinogram restoration examples
- Signal denoising
- Solving ill-posed inverse problems with GCV for spectral cut-off estimator
- Parameter selection in regularization methods
- Research in computational inverse problems
Contributions are welcome! Please feel free to submit issues, feature requests, or pull requests.
This project is currently with BSD 3-Clause License.
- Repository: mkirilin/GCV
- Author: Tim Jahn
- Email: jahn@math.tu-berlin.de
- Author: Mikhail Kirilin
- Email: kirilin@math.tu-berlin.de
Note: This repository is part of ongoing research in computational inverse problems and regularization methods.