This project implements various image denoising techniques using convex optimization methods, specifically focusing on matrix completion algorithms for image restoration.
The project explores different approaches to image denoising:
- Quadratic Filter: A basic denoising filter using quadratic regularization
- Total Variation (TV) Filter: Implements TV denoising using primal-dual optimization
- Exact Matrix Completion: The core contribution - uses convex optimization to complete missing/noisy matrix entries
- Works with any matrix (symmetric or non-symmetric)
- Uses CVXPY for convex optimization
- Minimizes the nuclear norm surrogate (trace) subject to equality constraints
- Optimized for positive semi-definite symmetric matrices
- Faster than the general matrix completion algorithm
- Creates a 2n × 2n matrix structure for efficient optimization
add_gaussian_noise(im, mean=0, var=0.01)
: Adds Gaussian noise to imagesadd_poisson_noise(im, photons=100)
: Adds Poisson noise to imagessp_noise(image)
: Adds salt-and-pepper noise
read_image(filename)
: Loads images using PILnormalize_image(im)
: Normalizes image pixel valuesPSNR(original_im, cleaned_im)
: Calculates Peak Signal-to-Noise Ratio for quality assessment
- Implements quadratic regularization-based denoising
- Uses CVXPY optimization with OSQP solver
- Total Variation denoising using primal-dual approach
- Configurable regularization parameter and iteration count
- CVXPY: Convex optimization framework
- NumPy: Numerical computing
- PIL (Pillow): Image processing
- Matplotlib: Visualization and plotting
- OpenCV: Additional image processing capabilities
The main notebook Exact_matrix_Completion_gaussian_noise.ipynb
contains:
- Noise Generation: Functions to add various types of noise to test images
- Filter Comparison: Evaluation of different denoising approaches
- Matrix Completion: Core implementation of exact matrix completion algorithms
- Performance Analysis: PSNR calculations and result visualization
- Results Storage: Automatic saving of denoised images and performance metrics
image_denoising/
├── Exact_matrix_Completion_gaussian_noise.ipynb # Main implementation notebook
├── project.pdf # Project documentation
└── README.md # This file
- Multiple Denoising Approaches: Compares traditional filters with matrix completion
- Convex Optimization: Uses CVXPY for robust optimization problems
- Quality Assessment: PSNR-based evaluation of denoising performance
- Flexible Noise Types: Supports Gaussian, Poisson, and salt-and-pepper noise
- Automated Testing: Batch processing of multiple images and noise levels
- The matrix completion algorithms are the core contribution of this project
- Uses OSQP solver through CVXPY for efficient optimization
- Results are automatically saved with timestamps and noise parameters
- Supports both grayscale and color image processing
This project appears to be part of ECE602 Introduction to Optimization coursework, focusing on practical applications of convex optimization in image processing.