This project is aim to use different optimization method to do image denoising based on total variation denoising.
- To run these codes, install numpy,matplotlib,scipy,PIL,skimage packages.
- In this project, the original image is Lena512 which is often used in image processing. Add normal distributed noise to the image and do TVD denoising.
-
The linear_operator.py and proximal_operator.py defines some function of processing data. Cost_function.py defines the function to calculate the cost of the model we choose in iamge processing.
-
denoise_tv_chambolle.py uses the chambolle method to do denoising.
-
denoise_tv_gradient.py is based on the gradient descent model, and I design this method only based on mathematical way and assume the image has constinuous value, this is an approximate method to do denoising.
-
denoise_tv_rof_primal_dual.py is based on primal-dual algorithm which is widely used in optimization. This method is based on rof model and it shows great ability to denoise normal distributed noise in image processing.
-
denoise_tv_fista.py is also based on primal_dual algorithrm and it use different optimization method to reach the optimal denoisd result. Usually it has fewer iterations to get covergence.
- scipy, numpy, matplotlib
- 1.Fast Gradient-Based Algorithms for Constrained Total Variation Image Denoising and Deblurring Problems. Amir Beck and Marc Teboulle
- 2.A Tutorial on Primal-Dual Algorithm. Shenlong Wang
- 3.ROF and TV-L1 denoising with Primal-Dual algorithm. Alexander Mordvintsev
- 4.An introduction to Total Variation for Image Analysis. Antonin Chambolle, Vicent Caselles, Matteo Novaga, Cremers, Thomas Pock, Daniel