You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/README.rst
+8-9Lines changed: 8 additions & 9 deletions
Original file line number
Diff line number
Diff line change
@@ -1,14 +1,13 @@
1
-
**svmbir** stands for Super-Voxel Model-Based Iterative Reconstruction.
2
-
svmbir is an easy-to-use python package for fast parallel-beam reconstruction of tomography data using model-based priors.
1
+
**svmbir** (super-voxel model-based iterative reconstruction) is an easy-to-use python package for fast iterative reconstruction of tomography data using model-based priors.
2
+
The `svmbir <https://github.com/cabouman/svmbir>`_ package is a python interface to HPImaging's optimized
3
+
C implementation `[sv-mbirct] <https://github.com/HPImaging/sv-mbirct>`_
4
+
of the super-voxel algorithm :cite:`wang2016high` :cite:`wang2017massively`.
3
5
4
6
5
7
Features
6
8
--------
7
-
* Easy-to-use python code for fast parallel-beam MBIR (Model Based Iterative Reconstruction)
8
-
9
-
* Interface to HPImaging's optimized C implementation `[sv-mbirct] <https://github.com/HPImaging/sv-mbirct>`_ of the super-voxel algorithm :cite:`wang2016high` :cite:`wang2017massively`
10
-
11
-
* Supports MBIR reconstruction with Bayesian and Plug-and-Play prior models.
9
+
* Supports MBIR reconstruction with Bayesian and Plug-and-Play prior models
10
+
* Supports parallel-beam and fan-beam geometries
12
11
13
12
14
13
System Requirements
@@ -23,11 +22,11 @@ Optional System Requirements
23
22
Fastest reconstruction can be obtained with,
24
23
25
24
* Intel-based CPU(s) supporting AVX2,AVX512
26
-
* Intel ICC compiler (in "Parallel Studio XE", and now free "oneAPI")
25
+
* Intel ICC compiler (included with Intel's free "oneAPI" toolkit)
Copy file name to clipboardExpand all lines: docs/source/overview.rst
+31-4Lines changed: 31 additions & 4 deletions
Original file line number
Diff line number
Diff line change
@@ -2,17 +2,36 @@
2
2
Overview
3
3
========
4
4
5
-
**svmbir** is a Python implementation of the Super-Voxel Model Based Iterative Reconstruction (MBIR) algorithm :cite:`wang2016high` :cite:`wang2017massively` for fast reconstruction of parallelbeam 3D data.
5
+
**svmbir** is a Python implementation of the Super-Voxel Model Based Iterative Reconstruction (MBIR) algorithm :cite:`wang2016high` :cite:`wang2017massively` for fast reconstruction of parallel-beam and fan-beam tomography data (3D).
6
6
The code performs Bayesian reconstruction of tomographic data, so it is particularly well-suited for sparse view reconstruction from noisy data.
7
7
It also has hooks to support Plug-and-Play prior models that can dramatically improve image quality :cite:`venkatakrishnan2013plug` :cite:`sreehari2016plug`.
8
+
The reconstruction engine for *svmbir* is written and optimized in C
The super-voxel code can be 100x to 1000x faster than conventional code because it reorganizes operations in a way that is much better matched to a computer's cache structure. To do this, it precomputes the ``system matrix`` that describes the geometry of the tomography system and stores it in a file in encoded form. Whenever you do a reconstruction with a new geometry, the ``svmbir`` package automatically detects the new geometry, precomputes a new system matrix, and stores it in a library for future use. By default, the system matrices are stored in a subdirectory of your personal ``.cache`` directory in your home directory. So if they are taking too much space on your disk, you can remove these files at any time, and they will just be recomputed when needed.
13
+
The super-voxel code can be 100x to 1000x faster than conventional MBIR code because it reorganizes operations in a way that is much better matched to a computer's cache structure.
14
+
Part of this involves precomputing a *system matrix* that models the system geometry, and encoding it in a layout that facilitates parallelization and reduces the required fetches from memory during reconstruction.
15
+
When system matrices are computed, they are stored to disk and will be automatically loaded whenever the same geometry is subsequently encountered.
12
16
13
-
**Troubleshooting**
17
+
**Geometry**
18
+
19
+
**svmbir** currently supports *parallel-beam* and *fan-beam* (equiangular, see below) imaging geometries.
20
+
21
+
.. figure:: geom-fan.jpg
22
+
:width:50%
23
+
:alt:fan beam geometry
24
+
:align:center
25
+
26
+
Equiangular fan-beam geometry
27
+
28
+
.. figure:: geom-parallel.jpg
29
+
:width:50%
30
+
:alt:parallel beam geometry
31
+
:align:center
32
+
33
+
Parallel-beam geometry
14
34
15
-
*Cached System Matrix Problems:* Rare updates to the software package could include changes to the encoding of the system matrix and result in existing pre-computed matrix files being incompatible after the update. The last such update was on (2020-12-02). To remove the outdated files, delete the cache directory located at ``~/.cache/svmbir``. The package will regenerate the system matrices as needed at the time of reconstruction.
16
35
17
36
*View Angle Ordering:* It is common practice to collect view data using techniques such as the "golden ratio" method in which the view angles are not collected in monotonically increasing order on the interval :math:`[0,2\pi)`. While ``svmbir`` will produce the correct reconstruction regardless of view ordering, its reconstruction speed will be substantially degraded when the views are not in monotone order. In this case, we highly recommend that users reorder the sinogram views using the provided ``sino_sort`` function. The ``sino_sort`` function first wraps the view angles modulo :math:`2\pi`, and then sorts the views to be in monotonically increasing order by view angle.
18
37
@@ -37,3 +56,11 @@ Using this convention, the 3D array, ``image``, will be in units of photons/AU.
37
56
.. math::
38
57
39
58
\mbox{image in photons/mm} = \frac{ \mbox{image in photons/ALU} }{ 5\mbox{mm} / \mbox{ALU}}
59
+
60
+
**Matrix caching**
61
+
62
+
When system matrices are computed, they are stored to disk and will be automatically loaded whenever the same geometry is subsequently encountered.
63
+
By default, the system matrices are stored in the subfolder ``~/.cache/svmbir/sysmatrix`` of your home directory.
64
+
The matrix files can be removed at any time, and should be periodically cleaned out to reduce disk use.
65
+
Occasionally, updates to the software package include changes to the encoding of the system matrix, in which case the the cached matrix files should also be cleaned out to avoid incompatibility.
Copy file name to clipboardExpand all lines: docs/source/theory.rst
+2-2Lines changed: 2 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -2,7 +2,7 @@
2
2
Theory
3
3
======
4
4
5
-
Super-Voxel Model-Based Iterative Reconstruction (SVMBIR) is a fast algorithm for computing MBIR reconstructions from parallel beam tomographic data.
5
+
Super-Voxel Model-Based Iterative Reconstruction (SVMBIR) is a fast algorithm for computing MBIR reconstructions from tomographic data.
6
6
MBIR reconstruction works by solving the following optimization problem
7
7
8
8
.. math::
@@ -22,7 +22,7 @@ The forward model term has the form,
22
22
23
23
where :math:`y` is the sinogram data,
24
24
where :math:`x` is the unknown image to be reconstructed,
25
-
:math:`A` is the linear projection operator for the parallel-beam geometry,
25
+
:math:`A` is the linear projection operator for the specified imaging geometry,
26
26
:math:`\Lambda` is the diagonal matrix of sinogram weights, :math:`\Vert y \Vert_\Lambda^2 = y^T \Lambda y`, and :math:`\sigma_y` is a parameter controling the assumed standard deviation of the measurement noise.
27
27
28
28
These quantities correspond to the following python variables:
0 commit comments