aboutsummaryrefslogtreecommitdiff
path: root/tveq_example.m
diff options
context:
space:
mode:
Diffstat (limited to 'tveq_example.m')
-rw-r--r--tveq_example.m67
1 files changed, 67 insertions, 0 deletions
diff --git a/tveq_example.m b/tveq_example.m
new file mode 100644
index 0000000..b3fd770
--- /dev/null
+++ b/tveq_example.m
@@ -0,0 +1,67 @@
+% tveq_example.m
+%
+% Test out tveq code (TV minimization with equality constraints).
+%
+% Written by: Justin Romberg, Caltech
+% Email: jrom@acm.caltech.edu
+% 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;
+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(sqrt([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)));
+
+
+
+