Example: TV Denoising using MM
TV denoising using an algorithm derived using majorization-minimization (MM) and solvers for sparse banded systems. See accompanying notes.
Ivan Selesnick, selesi@nyu.edu, 2011. Revised 2017
Contents
Start
clear printme = @(filename) print('-dpdf', sprintf('Example1_%s', filename));
Create data
s = load('blocks.txt'); % blocks signal y = load('blocks_noisy.txt'); % noisy blocks signal N = 256; % N : signal length sigma = 0.5; % sigma : standard deviation of noise figure(1) clf subplot(2,1,1) plot(s) ax = [0 N -3 6]; axis(ax) title('Clean signal') subplot(2,1,2) plot(y) axis(ax) title('Noisy signal') printme('fig1')
TV Denoising
Run TV denoising algorithm (MM algorithm)
lam = 1.5; % lam: regularization parameter Nit = 50; % Nit: number of iterations [x, cost] = tvd_mm(y, lam, Nit); % Run MM TV denoising algorithm figure(2) clf subplot(2,1,1) plot(1:Nit, cost, '.-') title('Cost function history') xlabel('Iteration') subplot(2,1,2) plot(x) axis(ax) title('TV denoising') printme('fig2')
Compare two algorithms
Compare convergence behavour of two algorithms: Iterative clipping and MM
[x, cost] = tvd_mm(y, lam, Nit); [x2,cost2] = tvd_ic(y, 2*lam, Nit); figure(1) clf plot(1:Nit, cost2/2,'--', 1:Nit, cost,'-') legend('Iterative Clipping Algorithm','Majorization-Minimization Algorithm') xlabel('Iteration') title('Cost function history') printme('fig3')
Optimality condition
Illustrate optimality condition: abs(cumsum(x-y)) <= lambda
z = cumsum(x-y) / lam; figure(1) clf subplot(2,1,1) plot(z) xlim([0 N]) line([0 N], [1 1], 'linestyle', '--') line([0 N], -[1 1], 'linestyle', '--') ylabel('s(n) / \lambda') title('s(n) = cumsum(y-x)'); printme('optim')
Optimality scatter plot
Illustrate optimality conidition using scatter plot diagram
z = cumsum(x-y); m = 1.2*max(abs(diff(x))); figure(1) clf plot([-m 0 0 m], [-1 -1 1 1], 'k', diff(x), z(1:end-1)/lam, 'or') ylabel('cumsum(y-x) / \lambda') xlabel('diff(x)') xlim([-m m]) printme('optim_scatter')