https://github.com/insigneo/pfire
The Parallel Framework for Image Registration
https://github.com/insigneo/pfire
Last synced: 7 months ago
JSON representation
The Parallel Framework for Image Registration
- Host: GitHub
- URL: https://github.com/insigneo/pfire
- Owner: INSIGNEO
- License: apache-2.0
- Created: 2018-10-24T14:36:44.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2024-06-04T15:12:42.000Z (over 1 year ago)
- Last Synced: 2025-06-25T20:28:00.707Z (8 months ago)
- Language: C++
- Homepage: https://insigneo.github.io/pFIRE/
- Size: 14.8 MB
- Stars: 13
- Watchers: 5
- Forks: 5
- Open Issues: 48
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
## pFIRE - The Parallel Framework for Image Registration
[](https://travis-ci.org/INSIGNEO/pFIRE/branches)
[](https://travis-ci.org/INSIGNEO/pFIRE/branches)
[](https://github.com/INSIGNEO/pFIRE/blob/master/LICENSE)
[](https://ci.appveyor.com/project/ptooley/pfire/history)
[](https://ci.appveyor.com/project/ptooley/pfire/history)
Online Documentation: [ https://insigneo.github.io/pFIRE/]( https://insigneo.github.io/pFIRE/)
### About pFIRE
pFIRE performs elastic registration of 2- and 3-dimensional images by the method of Barber and
Hose[[1](#note1)]. It is implemented in C++ using the
[PETSc](https://www.mcs.anl.gov/petsc/) scientific toolkit to provide parallelised mathematical
routines.
### Usage
pFIRE is invoked from the console (via mpirun for parallel use), e.g:
```sh
$ pfire config.cfg
# or
$ mpirun -np 8 pfire config.cfg
```
It takes a single argument - the name of a configuration file. This is a deliberate design
decision to encourage documentation of the performed analysis. At minimum this configuration file
must detail the path to the fixed image, path to the moved image, and required final spacing of the
map nodes. It also takes various optional arguments allowing customisation of the registration
process and outputs. pFIRE will automatically identify and open all supported file formats. The
currently non-exhaustive list includes: `dicom`, ShIRT `.image` and `.mask` files, and the majority
of common 2-dimensional image formats via the OpenImageIO library.
A minimal usage example would be:
```ini
fixed = fixed_image.dcm
moved = "moved image.dcm"
nodespacing = 10
```
This will register `fixed_image.dcm` to `moved image.dcm` with a nodespacing of 10 pixels, note
that if the filename contains spaces it must be enclosed in quotes. In this case the output map
and registered image will be saved to the default hdf5+xdmf format with filenames
``registered.xdmf`` and ``map.xdmf``.
### Dependencies
pFIRE is an MPI application built on top the the [PETSc](https://www.mcs.anl.gov/petsc/)
distributed scientific toolkit. It is additionally dependent on the [Boost](https://www.boost.org/)
libraries for general utility routines and [HDF5](https://www.hdfgroup.org/solutions/hdf5/) input
and output support. There are also optional dependencies which allow support for various
additional input image file formats. At least one of these should be used depending on your
intended use case.
For all dependencies we recommend using the latest stable version. Additionally we recommend that
[PETSc](https://www.mcs.anl.gov/petsc/) be configured to using single precision floating point
numbers. This halves memory usage as double precision math provides no real benefit for image
registration.
**Required Dependencies**
* [PETSc](https://www.mcs.anl.gov/petsc/) >= 3.10.0 (Recommend --with-precision=single)
* [Boost](https://www.boost.org/) >= 1.58
* [HDF5](https://www.hdfgroup.org/solutions/hdf5/) >= 1.10.0
*Optional Dependencies*
* [DCMTK](https://dicom.offis.de/dcmtk.php.en) >= 3.6.3 (Support for DICOM image input)
* [OpenImageIO](http://www.openimageio.org/) >= 1.8.13 (General purpose image format support e.g .png .tiff and image stack support)
We recommend installing dependencies using your system package manager (e.g synaptic, apt, yum), or
on HPC the use of SPACK may be appropriate.
### Installing
pFIRE is installed using cmake in an out of tree build:
```sh
user@machine $ tar xvf pfire-latest.tar.gz
user@machine $ cd pfire
user@machine $ mkdir build
user@machine $ cd build
user@machine $ cmake ..
user@machine $ make
```
### Links
[1]: DC Barber and DR Hose 2005 (https://doi.org/10.1080/03091900412331289889),
DC Barber et al. 2007 (https://doi.org/10.1016/j.media.2007.06.011)
[2]: https://www.mcs.anl.gov/petsc/