Code Monkey home page Code Monkey logo

match-series's Introduction

Joint non-rigid registration and reconstruction of image series

Joint non-rigid registration aims to calculate non-linear deformation artifacts from a series of images taken of an object and reconstruct the true image. Applications include removal of scan noise in scanning transmission electron microscopy datasets.

This code implements the methods proposed in the following papers:

[1] Benjamin Berkels, Peter Binev, Douglas A. Blom, Wolfgang Dahmen, Robert C. Sharpley, and Thomas Vogt. Optimized imaging using non-rigid registration. Ultramicroscopy, 138:46--56, March 2014. [DOI | arXiv]

[2] Benjamin Berkels and Christian H. Liebscher. Joint non-rigid image registration and reconstruction for quantitative atomic resolution scanning transmission electron microscopy. Ultramicroscopy, 198:49--57, March 2019. [DOI | arXiv]

[3] Sönke Reiche and Benjamin Berkels. Automated stacking of seismic reflection data based on non-rigid image matching. Geophysics, 83(3):V171--V183, May 2018. [DOI]

[4] Sönke Reiche, Benjamin Berkels, and Benedikt Weiß. Automated static and moveout corrections of high-resolution seismic data from the Baltic Sea. Near Surface Geophysics, 2019. in press. [DOI]

matchSeries implements [1-2], matchSeismicSeries implements [3-4]. Note that the latter needs the options USE_BLAS, USE_LAPACK and DUSE_SUITESPARSE to be activated.

It is based on the QuocMesh software library, AG Rumpf, Institute for Numerical Simulation, University of Bonn, and distributed under the terms of the Common Development and Distribution License. Particularly, you can download and use this software free of cost.

Some subdirectories contain code from other software projects, which is redistributed under the respective licenses:

We appreciate any feedback on your experience with our methods. We could also appreciate if you cite the above mentioned papers when you use the software in your work. In case you encounter any problems when using this software, please do not hesitate to contact us: [email protected]

Installation

Binaries for matchSeries are available for Linux, Windows and Mac OSX through conda on the conda-forge channel. Install with:

$ conda install -c conda-forge match-series

An experimental python wrapper meant for use in Jupyter notebooks is available on pypi:

$ pip install --user pyMatchSeries

You may find an example notebook on the respective Github repo.

Using the software

If you installed match-series with conda, matchSeries should be on the path. If you open up a terminal (Linux/OSX) or Anaconda prompt (Windows) you should be able to run:

$ matchSeries <path-to-parameter-file>

If you do not provide a path to a parameter fill, matchSeries will give an error.

If you compiled from source (see below), the executable matchSeries is in the projects/electronMicroscopy subdirectory of the quocGCC directory.

The program is controlled over the command line and a parameter file, there is no GUI.

An example parameter file can be found at examples/example_parameters.param. An explanation of each parameter is provided in a comment string above each parameter. Be sure to set the templateNamePattern and levels (precisionLevel, stopLevel, refineStopLevel, startLevel, refineStartLevel) for each calculation. If you use the python wrapper, most of these will be filled out automatically.

If you wish to compile the software yourself please follow the following instructions.

Prerequisites

To build the software, cmake and a compiler like GCC or clang need to be installed. Furthermore, a few external libraries are needed. Under Linux, usually all of the dependencies can be installed with the package manager that comes with the Linux distribution. Under OS X/macOS, the installation of a third party package manager like MacPorts or Homebrew is recommended. For instance, if MacPorts is installed, one can install cmake with:

sudo port install cmake

Procedure

First create a clone of our git repository e.g. by

git clone https://github.com/berkels/match-series

In the clone directory, there should be two directories, quocmesh and quocGCC. The source code is in quocmesh, the compiled binaries will go into quocGCC.

To compile the code, go into the directory quocGCC and call the script called goLinux.sh (or goWindows.bat if compiling under Windows with MinGW). This invokes cmake with all necessary options and will create makefiles.

After the go script has been run, the source can be compiled with make like any other project with makefiles. There is also a test target to check whether the basics of the code actually work.

In short, to get started the following steps should be enough: Decompress the archive and change into the directory quocGCC. In there, call

./goLinux.sh
make
make test

Under Windows with MinGW call

./goWindows.bat
mingw32-make
mingw32-make test

instead.

If all dependencies are installed correctly, this should work without any errors (although there may be warnings during the first two steps).

To speed up the compilation, one can have make use as many threads as desired, by calling make -jN (where N is the number of threads) instead of just make.

match-series's People

Contributors

berkels avatar din14970 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.