May 1, 2009 AMSC 663/664 1
Image Reconstruction from Non-Uniformly Sampled
Spectral Data
Alfredo Nava-Tudela
AMSC 664, Spring 2009
Final Presentation
Advisor: John J. Benedetto
May 1, 2009 AMSC 663/664 2
Signals and their spectral decomposition
• A signal can be decomposed in harmonics that reveal the frequency or spectral content contained in that signal
May 1, 2009 AMSC 663/664 3
Signals and their spectral decomposition
• Often times, we have spectral information and we need to convert back to spatial information, for example Magnetic Resonance Imaging
May 1, 2009 AMSC 663/664 4
Problem Statement
• We are particularly interested in the
reconstruction of images given spectral
information• More specifically, we are interested in
image reconstruction given non- uniformly sampled spectral data
• Given a two dimensional spectral data set, reconstruct an image in the spatial domain that matches as closely as possible that data set in the spectral domain
May 1, 2009 AMSC 663/664 5
The Algorithm
• Stage one:
May 1, 2009 AMSC 663/664 6
The Algorithm
• Stage two:
May 1, 2009 AMSC 663/664 7
The Algorithm
• Stage three:
ImageReconstructed
May 1, 2009 AMSC 663/664 8
CG Experiments - Using the DFTxSinc input data
May 1, 2009 AMSC 663/664 9
CG Experiments - Using the DFTxSinc input data
May 1, 2009 AMSC 663/664 10
CG Experiments - Using the DFTxSinc input data
May 1, 2009 AMSC 663/664 11
CG Experiments - Using the DFTxSinc input data
May 1, 2009 AMSC 663/664 12
CG Experiments - Using the DFTxSinc input data
May 1, 2009 AMSC 663/664 13
CG Experiments - Time of one iteration vs image size
If N = 16 = 2^4, then ln(16)/ln(2) = 4.Time is given in seconds.
Time of one iteration (Tol = 1e-1)
0
0.5
1
1.5
2
2.5
3
3.5
4
4.5
3 4 5 6 7 8
ln(N)/ln(2)
log(time)
May 1, 2009 AMSC 663/664 14
CG Experiments - Runtime vs Precision
Scaling
0
0.5
1
1.5
2
2.5
3
3.5
4
4.5
1 2 3 4 5 6
Precision := -log(tol)
log(time)
N = 16
N = 32
May 1, 2009 AMSC 663/664 15
CG Experiments - Number of iterations vs Precision
Number of Iterations (N=16)
0
0.5
1
1.5
2
2.5
0 1 2 3 4 5 6 7
Precison := -log(tol)
log(# of iterations)
May 1, 2009 AMSC 663/664 16
CG Experiments - Convergence and time results
Results for N=16
0
100
200
300
400
500
600
700
800
900
1000
1 2 3 4 5 6
Precision := -log(tol)
seconds, units
time
norm
May 1, 2009 AMSC 663/664 17
CG Experiments - Convergence and time results
Computation time for N=16
0
0.5
1
1.5
2
2.5
3
1 2 3 4 5 6
Precision := -log(tol)
log(time)
The time is given in seconds
May 1, 2009 AMSC 663/664 18
CG Experiments - Convergence and time results
Results for N=32
0
2000
4000
6000
8000
10000
12000
1 2 3 4 5 6
Precision := -log(tol)
seconds, units
time
norm
May 1, 2009 AMSC 663/664 19
CG Experiments - Convergence and time results
The time is given in seconds
Computation time for N=32
1
1.5
2
2.5
3
3.5
4
4.5
1 2 3 4 5 6
Precision := -log(tol)
log(time)
May 1, 2009 AMSC 663/664 20
CG Experiments - Memory usage
• One iteration of the CG method issues 2 calls to the function A_times() and 2 calls to the function A_star_times().
• Both functions, by implementation, use the same amount of memory.
• The CG method also has bookkeeping variables that require memory.
May 1, 2009 AMSC 663/664 21
CG Experiments - Memory usage
A call to either A_times() or A_star_times()uses the following memory:
Name Size Class Attributes
KL N^2x2 double M 1x1 double N_square 1x1 double S Mx2 double a Mx1 double complex f N^2x1 double m 1x1 double n 1x1 double sum 1x1 double complex
Which gives a sub-total for each call of:
3xN^2 + 4xM + 6 words
May 1, 2009 AMSC 663/664 22
CG Experiments - Memory usage
A call of the CG code, without the previous taken intoaccount, uses the following memory:
Name Size Class Attributes KL N^2x2 double S Mx2 double alpha 1x1 double complex beta 1x1 double d N^2x1 double complex delta_0 1x1 double delta_new 1x1 double delta_old 1x1 double f_hat Mx1 double complex iteration 1x1 double q N^2x1 double complex r N^2x1 double complex tol 1x1 double x N^2x1 double y N^2x1 double complexWhich gives a sub-total of:
11xN^2 + 4xM + 8 words
May 1, 2009 AMSC 663/664 23
CG Experiments - Memory usage
Combined, we obtain the following grand total of:
14xN^2 + 8xM + 14 words
needed to run our code.
The direct method that saves the matrices A and itsadjoint A* would need O(N^2 x M) words of memory.
Clearly the CG method is the way to go memory wise!
Memory Usage - Words vs Image Size
110
1001000
100001000001E+061E+071E+081E+091E+101E+111E+121E+13
0 128 256 384 512 640 768 896 1024
N
Words
Direct Method
CG Method
We assume M = N^2, best case scenario
May 1, 2009 AMSC 663/664 24
CG Experiments - Convergence N=16
May 1, 2009 AMSC 663/664 25
CG Experiments - Convergence N=32
May 1, 2009 AMSC 663/664 26
References
• Richard F. Bass and Karlheinz Groechenig “Random Sampling of Multivariate Trigonometric Polynomials”
• Zhou Wang, Alan C. Bovik, Hamid R. Sheikh, and Eero P. Simoncelli “Image Quality Assessment: From Error Measurements to Structural Similarity”, IEEE Transactions on Image Processing, Vol. 13, No. 1, January 2004
• Conjugate Gradient Method: http://en.wikipedia.org/wiki/Conjugate_gradient_method
• Jonathan Richard Shewchuk, “An Introduction to the Conjugate Gradient Method Without the Agonizing Pain”. August 4, 1994.
• Adi Ben-Israel and Thomas N. E. Greville. Generalized Inverses. Springer-Verlag, 2003.
May 1, 2009 AMSC 663/664 27
References
• John J. Benedetto and Paulo J. S. G. Ferreira. Moderm Sampling Theory: Mathematics and Applications. Birkhauser, 2001.
• J. W. Cooley and J. W. Tukey. An algorithm for the machine computation of complex Fourier series. Math. Comp., 19:297-301, 1965.
• E. H. Moore. On reciprocal of the general algebraic matrix. Bulletin of the American Mathematical Society, 26:85-100, 1920.
• Diane P. O’Leary. Scientific computing with case studies. Book in preparation for publication, 2008.
• Roger Penrose. On best approximate solution to linear matrix equations. Proceedings of the Cambridge Philosophical Society, 52:17-19, 1956.