The function reloaded a system matrix stored by iradonIT
.
readSifData(filename, DebugLevel = "Normal")
(character) filename
gives the name of the ".sif"-file to read, including the pathname to the file.
(character) This parameter controls the level of output. Defaults to DebugLevel="Normal"
for a standard level output. Alternative implementations are "Detail"
if it is desirable to show almost all output on screen or "HardCore"
for no information at all.
A vector of M
integers \(N_m, m=1,\ldots,M\), that specify the number of values in each row \(m\).
A list of \(N_m\) indicies (integers) for the appropriate columns.
A list of \(N_m\) accordingly (float) values for each row.
A list of all values defined above in Header.
If fast iterative reconstruction methods (iradonIT
with parameters UseFast = 1
and KernelFileSave = 1
) are used, the system matrix will be saved with the name KernelFileName
. See to help of iradonIT
to get detail information about these parameters. The speed of the reconstruction can obviously be increased by using of an existing system matrix.
The system matrix will be stored as a binary ".sif"-file with the following structure: At first a header is defined, then the raw data follows. The form of the header is shown below. The raw data will be stored in a ".sif"-file in the following form:
At first M
integers \(N_m, m=1,\ldots,M\) are stored, which specify the number of value in each row \(m\). Then the \(N_m\) indicies (integers) follow alternatingly for the appropriate columns and \(N_m\) accordingly (float) values for each row. Thus, a sparse matrix is defined, i.e. a \((M,N)\)-matrix without zero-elements.
Header:
[1] | XSamples (integer) | [18] | mode (integer) |
[2] | YSamples (integer) | [19] | UseFast (integer) |
[3] | DeltaX (float) | [20] | ConstrainMin (float) |
[4] | DeltaY (float) | [21] | ConstrainMax (float) |
[5] | Xmin (float) | [22] | Alpha (float) |
[6] | Ymin (float) | [23] | Beta (float) |
[7] | ThetaSamples (integer) | [24] | IterationType (integer) |
[8] | RhoSamples (integer) | [25] | KernelFileSave (integer) |
[9] | DeltaRho (float) | [26] | SaveIterations (integer) |
[10] | DeltaTheta (float) | [27] | RefFileName (200-byte character) |
[11] | ThetaMin (float) | [28] | KernelFileName (200-byte character) |
[12] | RhoMin (float) | [29] | InFileName (200-byte character) |
[13] | LowestALevel (float) | [30] | OutFileName (200-byte character) |
[14] | RadonKernel (integer) | [31] | SaveIterationsName (200-byte character) |
[15] | OverSamp (integer) | [32] | M (integer) |
[16] | Regularization (float) | [33] | N (integer) |
[17] | Iterations (integer) |
M = RhoSamples*ThetaSamples
, N = XSamples*YSamples
, InFileName = "InputData"
and OutFileName = "OutputData"
.
The other parameters are described in detail in the function iradonIT
, but note that RadonKernel
will be stored as an integer ("NN" = 1, "RNN" = 2, "RL" = 3, "P1" = 4 and "P2" = 5), mode
will be stored as an integer ("ART" = 0, "EM" = 1, "CG" = 2) and IterationType
will be stored as an integer ("random" = 0, "cyclic" = 1).
Toft, Peter, Ph.D. Thesis, The Radon Transform - Theory and Implementation, Department of Mathematical Modelling Section for Digital Signal Processing, Technical University of Denmark, 1996.
Schulz, Joern, Diploma Thesis: Analyse von PET Daten unter Einsatz adaptiver Glaettungsverfahren, Humboldt-Universitaet zu Berlin, Institut fuer Mathematik, 2006.
# NOT RUN {
P <- phantom(n=101)
rP <- markPoisson(P, nSample=1800000)
irP <- iradonIT(rP$rData, 101, 101, KernelFileSave=1,
KernelFileName="SystemMatrix.sif")
rm(irP,P,rP)
# reading the sif-matrix:
SysMat <- readSifData("SystemMatrix.sif")
names(SysMat)
SysMat$Header
rm(SysMat)
# }
# NOT RUN {
# }
Run the code above in your browser using DataLab