Matlab and C code developed by Laurent Condat


Matlab code to recover the locations and amplitudes of spikes, from noisy lowpass samples (several methods implemented: matrix pencil, Cadzow denoising...): pulses_recovery.m

Convex optimization

C code to project a vector onto the simplex (by sorting, using a heap, algo. of Michelot, algo. of Duchi et al...): condat_simplexproj.c. This file also includes an efficient C implementation of Floyd and Rivest's SELECT algorithm (e.g. to find the median of a vector).
C code to project a vector onto the l1 norm ball: condat_l1ballproj.c
Matlab code to project onto the simplex or the l1 ball: proj_simplex_l1ball.m

Matlab code to project a matrix onto a l1,infinity norm ball: projl1inf.m. Much faster that A. Quattoni's code on her webpage.

Matlab code for total variation denoising: TVdenoise.m  parrotgray.png
Matlab code for total generalized variation denoising: TGVdenoise.m  parrotgray.png
Matlab code to perform deconvolution or joint deblurring/demosaicking by total variation minimization: optimization.zip

C code to perform 1D total variation denoising or fused lasso signal approximation (with my algorithm of 2013 or the taut string algorithm): condat_fast_tv.c. For use in Matlab, mex files made by Stephen Becker.
New, 2017: A new, even better, algorithm: Matlab code and C code

Color image processing for digital photography

Matlab code to perform demosaicking or joint demosaicking/denoising by total variation minimization: denoisaicking_TV_Condat.zip and by Tikhonov regularization: denoisaicking_Condat.zip

Matlab code to generate random red, green, blue patterns (color filter arrays) with blue noise properties: CFArandom1.mCFArandom2.m