King Abdullah University of Science and Technology (KAUST), Saudi Arabia
Laurent Condat

Research Scientist

Visual Computing Center
Building 1 (West), Office 2118









Convex optimization

Matlab code to compute the proximity operator or project on the ball of several norms: l_1, l_2, l_inf, l_1,2, l_inf,2, l_1,inf... : Condat_proxs.m

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 than 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:
Matlab code for total nuclear variation denoising of color images: TNVdenoise.m  parrot2.tif

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


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

Color image processing for digital photography

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

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