compressed sensing matlab example 1

Example 1 Compressed Sensing
Code:
%
%
%
%
%
%
%
%
tveq_example.m
Test out tveq code (TV minimization with equality constraints).
Written by: Justin Romberg, Caltech
Email: [email protected]
Created: October 2005
% use implicit, matrix-free algorithms ?
largescale = 0;
path(path, './Optimization');
path(path, './Measurements');
path(path, './Data');
% test image = 32x32 piece of cameraman's arm
load camera
I = camera(81:112,37:68);
n = 32;
% I=imread('cameraman.jpg');
% I=imresize(I,[128 128]);
% [m,n]=size(I);
N = n*n;
% I = I/norm(I(:));
% I = I - mean(I(:));
x = reshape(I,N,1);
% num obs
K = 300;
% permutation P and observation set OMEGA
P = randperm(N)';
q = randperm(N/2-1)+1;
OMEGA = q(1:K/2)';
% measurement matrix
if (largescale)
A = @(z) A_f(z, OMEGA, P);
At = @(z) At_f(z, N, OMEGA, P);
% obsevations
b = A(x);
% initial point
x0 = At(b);
else
FT = 1/sqrt(N)*fft(eye(N));
A = sqrt(2)*[real(FT(OMEGA,:)); imag(FT(OMEGA,:))];
A = [1/sqrt(N)*ones(1,N); A];
At = [];
% observations
b = A*x;
% initial point
x0 = A'*b;
end
% tvI = sum(sum([diff(I,1,2) zeros(n,1)].^2 + [diff(I,1,1); zeros(1,n)].^2
));
% disp(sprintf('Original TV = %.3f', tvI));
time0 = clock;
xp = tveq_logbarrier(x0, A, At, b, 1e-3, 5, 1e-8, 200);
Ip = reshape(xp, n, n);
disp(sprintf('Total elapsed time = %f secs\n', etime(clock,time0)));
Results:
Input Image x
X in Nx1 dimension
A (random projections)
Y measurements
Reconstructed image