Copyright (c) 2016-2018 Jeremie DECOCK (www.jdhp.org)
- Web site: http://www.pywi.org/
- Online documentation: http://www.pywi.org/docs/
- Examples: http://www.pywi.org/docs/gallery/
- Notebooks: https://github.com/jeremiedecock/pywi-notebooks
- Source code: https://github.com/jeremiedecock/pywi
- Issue tracker: https://github.com/jeremiedecock/pywi/issues
- PyWI on PyPI: https://pypi.org/project/pywi/
- PyWI on Anaconda Cloud: https://anaconda.org/jdhp/pywi
PyWI is a Python image filtering library aimed at removing additive background noise from raster graphics images.
- Input: an image file containing the raster graphics to clean (i.e. an image defined as a classic rectangular lattice of square pixels).
- Output: an image file containing the cleaned raster graphics.
The image filter relies on multiresolution analysis methods (Wavelet transforms) that remove some scales (frequencies) locally in space. These methods are particularly efficient when signal and noise are located at different scales (or frequencies). Optional features improve the SNR ratio when the (clean) signal constitute a single cluster of pixels on the image (e.g. electromagnetic showers produced with Imaging Atmospheric Cherenkov Telescopes). This library is written in Python and is based on the existing Cosmostat tools iSAp (Interactive Sparse Astronomical data analysis Packages http://www.cosmostat.org/software/isap/).
The PyWI library also contains a dedicated package to optimize the image filter parameters for a given set of images (i.e. to adapt the filter to a specific problem). From a given training set of images (containing pairs of noised and clean images) and a given performance estimator (a function that assess the image filter parameters comparing the cleaned image to the actual clean image), the optimizer can determine the optimal filtering level for each scale.
Warning
This project is in beta stage.
The PyWI library contains:
- wavelet transform and wavelet filtering functions for image multiresolution analysis and filtering;
- additional filter to remove some image components (non-significant pixels clusters);
- a set of generic filtering performance estimators (MSE, NRMSE, SSIM, PSNR, image moment's difference), some relying on the scikit-image Python library (supplementary estimators can be easily added to meet particular needs);
- a graphical user interface to visualize the filtering process in the wavelet transformed space;
- an Evolution Strategies (ES) algorithm known in the mathematical optimization community for its good convergence rate on generic derivative-free continuous global optimization problems (Beyer, H. G. (2013) "The theory of evolution strategies", Springer Science & Business Media);
- additional tools to manage and monitor the parameter optimization.
PyWI has the following strict requirements:
PyWI also depends on other packages for optional features:
- Scipy
- Scikit-image
- Pillow (a.k.a. PIL) to read and write many image formats (PNG, JPEG, TIFF, ...)
- Astropy to provide Fits file format
- Pandas
- Matplotlib 1.5 or later to provide plotting functionality
- Cosmostat iSAP Sparce2D
However, note that these only need to be installed if those particular features are needed. PyWI will import even if these dependencies are not installed.
Most major projects upload official packages to the Python Package Index. They can be installed on most operating systems using Python standard pip package manager.
Note that you need to have Python3.x and pip already installed on your system.
Warning
Users of the Anaconda python distribution should follow the instructions for Anaconda install (see Using conda bellow).
Note
You will need a C compiler (e.g. gcc
or clang
) to be installed to
install some dependencies (e.g. Numpy).
Note
The --no-deps
flag is optional, but highly recommended if you already
have Numpy installed, since otherwise pip will sometimes try to "help" you
by upgrading your Numpy installation, which may not always be desired.
Note
If you get a PermissionError
this means that you do not have the
required administrative access to install new packages to your Python
installation. In this case you may consider using the --user
option
to install the package into your home directory. You can read more
about how to do this in the pip documentation.
Alternatively, if you intend to do development on other software that uses PyWI, such as an affiliated package, consider installing PyWI into a virtualenv.
Do not install PyWI or other third-party packages using sudo
unless you are fully aware of the risks.
You can install PyWI using the following command (in a terminal):
pip install pywi --no-deps
As an alternative, you can install PyWI from the downloaded source code:
python3 setup.py install --no-deps
If PyWI is already installed on your system you can upgrade it with this command:
pip install --upgrade pywi
To uninstall PyWI, type:
pip uninstall pywi
You can install PyWI using the following command (in a command prompt):
py -m pip install pywi --no-deps
As an alternative, you can install PyWI from the downloaded source code:
py setup.py install --no-deps
If PyWI is already installed on your system you can upgrade it with this command:
py -m pip install --upgrade pywi
To uninstall PyWI, type:
py -m uninstall pywi
To install this package with conda run in a terminal:
conda install -c jdhp pywi
So far, the PyWI Anaconda package is only available for MacOSX. A package for Linux and Windows will be available soon.
Note
Attempting to use pip to upgrade your installation of PyWI may result in a corrupted installation.
Download http://www.cosmostat.org/wp-content/uploads/2014/12/ISAP_V3.1.tgz (see http://www.cosmostat.org/software/isap/)
Unzip this archive, go to the "sparse2d" directory and compile the sparse2d library. It should generate two executables named
mr_transform
andmr_filter
:tar -xzvf ISAP_V3.1.tgz cd ISAP_V3.1/cxx tar -xzvf sparse2d_V1.1.tgz cd sparse2d compile the content of this directory
An automated compilation and installation script for Linux is available there (author: Tino Michael).
Download a sample image (e.g. archives_ngc3576.png)
In your system terminal, from the directory that contains the sample image, type:
pywi-mrtransform -t 256,256,256,0 --plot archives_ngc3576.png pywi-mrfilter -s 256,256,256,0 --plot archives_ngc3576.png
Type
pywi-mrtransform -h
orpywi-mrfilter -h
to display the list of available options and their documentation.
PyWI provide some Jupyter notebooks that can be used as examples or tutorials.
- PyWI Notebooks on GitHub: https://github.com/jeremiedecock/pywi-notebooks
- PyWI Notebooks on Anaconda Cloud: https://anaconda.org/jdhp/notebooks
To search for bugs or report them, please use the PyWI Bug Tracker at:
https://github.com/jeremiedecock/pywi/issues