Everything comes from the code by Zachary Harmany ([email protected]).
Original source: http://drz.ac/code/spiraltap/ or https://github.com/zharmany/SPIRAL-TAP (might be more up-to-date). The algorithm is described in this paper:
Z. T. Harmany, R. F. Marcia, and R. M. Willett, "This is SPIRAL-TAP: Sparse Poisson Intensity Reconstruction ALgorithms – Theory and Practice," IEEE Transactions on Image Processing, vol. 21, pp. 1084–1096, Mar. 2012.
If you use this code for academic work, please mention it:
- Code: still experimental.
pip install pySPIRALTAP
pySPIRALTAP
requires the following dependencies:
numpy
rwt
, the Rice Wavelet Toolbox, available on this page: https://github.com/ricedsp/rwtscipy.io
(only to run the demo)pytest
(only to run the tests)
Installation using your package manager (Debian/Ubuntu):
sudo apt-get install python-numpy
Alternatively, if you have pip
installed, you can install numpy
by typing the following:
pip install --user numpy
You can install the Rice Wavelet Toolbox by typing the following. Before that, make sure that you have cmake
installed (sudo apt-get install cmake
if you use a Debian-derived distribution):
git clone https://github.com/ricedsp/rwt.git
cd rwt/python
cmake .
sudo make install
And then test if the installation succeeded by typing:
python -c "import rwt"
If this returns nothing, the installation worked. In case it returns an error such as:
Traceback (most recent call last):
File "<string>", line 1, in <module>
ImportError: No module named rwt
This means that the installation failed. It can be because the installation was performed using a different version of Python that is not the default version. So far, I do not have information about how to perform this installation.
More information about the installation can be found in the INSTALL
file, or on the rwt
webpage.
Installation can be performed using the following shell
commands:
git clone https://gitlab.com/padouppadoup/pySPIRAL-TAP.git
cd pySPIRAL-TAP
sudo python setup.py install
A simple working example can be run at (in the main folder):
python SPIRALdemo.py
This file contains one demo where a 1D signal is reconstructed using a matplotlib
for plotting output.
Alternatively, one can play with the Jupyter notebook: SPIRALdemo.ipynb
, that feature the same demo as SPIRALdemo.py
, but in a more fancy format.
The pySPIRALTAP methods can be imported with import pySPIRALTAP
.
Here is a canonical function call with many parameters exposed:
resSPIRAL = pySPIRALTAP.SPIRALTAP(y,A, # y: measured signal, A: projection matrix
1e-6, # regularization parameter
maxiter=100, # min. number of iterations
miniter=5, # max. number of iterations
penalty='canonical', # type of penalty to apply
noisetype='gaussian',# form of the log-likelihood penalty
stopcriterion=3, # index of the termination criterion
tolerance=1e-8,
alphainit=1,
alphamin=1e-30,
alphamax=1e30,
alphaaccept=1e30,
logepsilon=1e-10,
saveobjective=True,
savereconerror=True,
savesolutionpath=False,
verbose=verbose, savecputime=True)
The methods based on RDP (recursive dyadic partitions) have not been implemented yet. Additionnally, the code has not been fully tested, although we did our best to provide a working product.
- This software is released under the MIT license. See the
LICENSE
file for more details. - The
denoise_bound
code is released under the GNU GPLv2 license and was written by Copyright (2008): Amir Beck and Marc Teboulle.