-
Notifications
You must be signed in to change notification settings - Fork 41
/
Copy pathCHANGES.txt
169 lines (123 loc) · 7.98 KB
/
CHANGES.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
**********************************************************************
* This is AIR Tools II (new version of AIR Tools) for Matlab 9.0 *
*--------------------------------------------------------------------*
* Per Christian Hansen, Techical University of Denmark *
* Jakob Sauer Jorgensen, University of Manchester *
**********************************************************************
This file is part of the AIR Tools II package and is distributed under
the 3-Clause BSD License. A separate license file should be provided as
part of the package.
Copyright 2017 Per Christian Hansen, Technical University of Denmark and
Jakob Sauer Jorgensen, University of Manchester.
Revisions in AIR Tools II
-------------------------
All ART, CART and SIRT functions now accept a function handle as input instead
of a sparse matrix, thus allowing matrix-free problem formulations, and it also
allows interfacing to external functions that implement matrix multiplications.
See the function afun_matrix for an example of the interface.
All test problems can now return either the matrix explicitly as a sparse
matrix, or a function handle to allow matrix-free application of the matrix
operations, as determined by the boolean input isMatrix.
New test problem fanlineartomo implementing a linear detector array unlike the
curved detector array in the existing fancurvedtomo function (previously
called fanbeamtomo).
New test problem sphericaltomo implementing the spherical Radon transform.
New test problem seismicwavetomo implementing a seismic travel-time tomography
problem with the ray assumption.
The code is reorganized in a modular fashion to allow more reuse of code, make
it more reliable, and easier to maintain.
New general interfaces art.m, cart.m and sirt.m are introduced, which contain
the core functionality of all ART, CART and SIRT methods. This has turned all
ART, CART and SIRT files into wrappers of these. In addition to the provided
methods the user can construct custom methods. For ART and CART this is done
by passing in a vector with the order in which the rows/columns are to be
traversed; for SIRT by passing in a struct with the matrices M and D that
define the desired SIRT method.
More general bound constraints can be used. For both lower and upper bounds it
is possible to specify either no constraint, a scalar enforced on all entries
of x, and a vector specifying elementwise constraints.
In paralleltomo, the default value of d is changed to d=p-1. For the default p,
this choice gives detector pixels of the same size as the image pixels.
For improved consistency across the ART methods, the psi1 and psi2 strategies
for choosing the relaxation parameter were removed from symkaczmarz.
A few changes to the implementation of the stopping rules. ME was forward-
looking and thus requiring one additional iteration; this was changed to a
bakward-looking strategy. NCP relies on detecting when a quantity no longer
decreases; hence one or a few additional iterations are needed to detect this.
Previously we stored some previous iterates in order to return the one that
corresponds to the minimum. To save the memory we now return the last iterate,
which is one or a few iterations beyond the minimum. Since NCP can be prone to
oscillatory behavior a moving filter across previous iterations is introduced
with an option for the user to specify the length of the window. Moreover, NCP
was previously implemented assuming the right-hand side is a 1D signal. In some
cases, such as all our 2D tomography test problems, the right-hand side is more
naturally described as a collection of 1D signals (one for each projection).
NCP is now implemented separately for each 1D signal and an average is computed
to determine whether overall the stopping rule is satisfied.
In symkaczmarz a change of convention has been made. Previously a sweep
top->bottom->top was counted as one iteration. Now it is counted as two
iterations, and implemented by only allowing even numbers of iterations to be
returned. This is in order to make the computational work of an iteration
comparable to all he other methods.
For the SIRT methods, the possibility to give a third input restart has been
removed due to ambiguities and lack of demand. It is now possible to input a
known iteration matrix spectral radius rho in the options struct.
The info output has been changed from a 3-element vector to a struct with more
informative field names and more information, e.g., a list of iterates returned.
Default values for the relaxation parameter are now consistent within ART, CART
and SIRT, and set to the values 1, 0.25, and 1.9/rho(T*A'*M*A), respectively.
New demo demo_cart to illustrate the use of the CART method columnaction.
New demo demo_constraints to illustrate how general elementwise constraints can
be used. This demo replaces the old demo script nonnegdemo.
New demo demo_custom_all to illustrate the user of user-specified custom versions
of the ART and SIRT methods.
New demo demo_custom_sirt to illustrate how the symmetric Kaczmarz method
can be implemented as a custom SIRT method.
New demo demo_matrixfree to illustrate the use of matrix-free versions of test
problem operators and reconstruction methods.
New demo demo_relaxpar to illustrate the use of different relaxation
parameter selection strategies.
New demo demo_stoprules to illustrate the use of different stopping rules.
New demo demo_astra_2d and auxilliary function afun_astra_2d_gpu to
demonstrate how to interface from AIR Tools II to the ASTRA Tomography Toolbox
for using GPU-accelerated matrix-free application of the system matrix and
its transpose.
New function show_tomo to illustrate tomography test problem by displaying
rows of matrix as images. Also new demo demo_show_tomo to illustrate all
tomography test problems using both the isDisp input of tomography test
problem functions and the new show_tomo function.
New options waitbar and verbose to allow displaying/printing progress in all
the iterative methods.
In the SIRT methods, made the computation of spectral radius and the relaxation
parameter deterministic by using fixed random number generating settings (and
restoring previous settings afterwards) in the call to the MATLAB function eigs,
which by default uses a random starting vector thus causing (very minor)
random variations in the computed rho.
Previous functions trainLambdaART and trainLambdaSIRT have been simplified
and merged into a new function train_relaxpar, which also supports training
of relaxation parameter for the the CART method columnaction.
Revisions in AIR Tools Version 1.3
----------------------------------
A bug was found in fanbeamtomo, paralleltomo, and seismictomo that caused
some elements of the matrix A to incorectly be set to zero; it was fixed
in Version 1.2.
All iterative methods run faster and use less memory.
fanbeamtomo and paralleltomo now return the correct d.
rzr allows b with multiple columns.
All iterative methods now include box constraints.
All ART methods now include a damping factor to avoid division by
very small norms.
All SIRT methods had some of the stopping rules changed:
- DP now always uses the standard residual vector r^k = b - A x^k,
- ME now always uses 0.5 r^k'(r^{k+1}+r^k)/||r^k||_2.
The default value for lambda was changed to 1 in kaczmarz and symkaczmarz.
The default value for lambda was changed to 1.9/norm(A'*M*A) in all
SIRT methods.
New functions:
- fbp - filtered back projection, conforming to AIR Tools,
- cart - columnwise version of Kaczmarz's method (CART),
- phantomgallery - collection of 2D phantoms,
- seismicwavetomo - similar to seismictomo but without ray model.
Note: for all ART methods NCP is implemented correct but it is not
recommended as it often leads to a very early termination. CART with
a random choice of columns converges very slowly and is not included.