GithubHelp home page GithubHelp logo

skmimageregistration's Introduction

SKM - Sparse Kernel Machine for Image Registration

SKM is an image registration software written in C++11 and implements the kernel machine for image registration published in Jud et al. [2016a, 2016b]. The computational heavy transformation model is accelerated by executing it on the graphics processing unit where the parallel computing platform CUDA is used.

Getting Started

The software provides an image registration functionality in the spirit of the ITK registration framework (v3), where the computational heavy transformation, regularization, value and derivative computations are performed on the GPU. It can be included as a library into your own source code or be executed on the command line through the provided SKMReg application. The software can be basically built for either 2d or 3d images which can be specified in the build process (see Installation).

Prerequisities

The project has been tested with the following hardware/software configurations on Ubuntu 16.04

Hardware

  • NVIDIA GeForce GTX 970
  • NVIDIA GeForce GTX 1080
  • NVIDIA GeForce GTX TITAN X

Build Tools

  • gcc 4.9.3
  • cmake/ccmake 3.5.1
  • git 2.7.4

Packages and Drivers

  • Nvidia Cuda 7.5 or 8.0 (Ubuntu packages: nvidia-cuda-dev nvidia-cuda-toolkit)
  • Nvidia device drivers (Ubuntu package: nvidia-361)
  • HDF5 (Ubuntu packages: libhdf5-cpp-11 libhdf5-dev)

Installation

git clone https://github.com/ChristophJud/SKMImageRegistration.git
cd SKMImageRegistration
mkdir build
mkdir install
cd build
ccmake ../superbuild
  • Configure by pressing 'c'
  • Set the number of space dimensions of your images (2 or 3)
  • Set the installation directory CMAKE_INSTALL_PREFIX (e.g. <project_dir>/install)
  • Set the installation directory of the dependencies INSTALL_DEPENDENCIES_DIR (e.g. <project_dir>/install/thirdparty)
  • Reconfigure and generate by pressing 'g'

Compile the project:

make -j<num_cores - 1>

The project is automatically installed in the provided directories, thus no rule to make an install target is defined. The SKMReg application can be found in <install_directory>/bin.

Dependencies

The project depends on the Insight Toolkit (ITK), Json for Modern C++ and the BPrinter library, which are automatically built as external projects when running the cmake superbuild.

Running an Example

Basically, there are three different sources of parameter values SKM uses. The first one are the default values which are hardcoded in the software (see ConfigUtils.h). As a second source, parameter values can be provided through a json file and finally each parameter can be also set by a command line argument. The different sources overwrite the values in the mentioned order.

Usual calls of SKM looks as follows:

SKMReg help
SKMReg version
SKMReg config_file /tmp/config.json
SKMReg config_file /tmp/config.json temp_directory /tmp/experiment
SKMReg reference_filename /tmp/ref.mhd target_filename /tmp/tar.mhd metric \"ncc\" reg_l1 "[1e-2, 1e-3, 1e-4]"

SKM writes severel intermediate results and the final results to the temp_directory which should be created before calling SKM. The default location is /tmp/skm. The final results are:

  • Displacement field: <temp_directory>/df.vtk
  • Warped reference image: <temp_directory>/warped.vtk

To look at the results and visualize them, you can e.g. use ParaView.

History

The project started in the Medical Image Analysis Center research group of the University of Basel, where we had to efficiently register abdominal image time series.

Authors and Contributors
  • Christoph Jud - initial work ([email protected])
  • Benedikt Bitterli - cuda support
  • Nadia Möri - mathematical support
  • Robin Sandkühler - coding support
  • Philippe C. Cattin - project support

License

SKM is licensed under the Apache 2.0 license. For details, consider the LICENSE and NOTICE file.

If you can use this software in any way, please cite us in your publications:

[2016a] Christoph Jud, Nadia Möri, and Philippe C. Cattin. "Sparse Kernel Machines for Discontinuous Registration and Nonstationary Regularization". In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition Workshops, pages 9-16, 2016. link

and/or

[2016b] Christoph Jud, Nadia Möri, Benedikt Bitterli and Philippe C. Cattin. "Bilateral Regularization in Reproducing Kernel Hilbert Spaces for Discontinuity Preserving Image Registration". In 7th International Conference on Machine Learning in Medical Imaging, 2016.

Contributing

We released SKM to contribute to the community. Thus, if you find and/or fix bugs or extend the software please contribute as well and let us know or make a pull request.

Other Open Source Projects

SKM depends on several thirdparty open source project which are either linked as library or has been directly integrated into the source code. For details, consider the NOTICE file.

skmimageregistration's People

Stargazers

Yu-Fu Wu avatar  avatar  avatar Yanhao Zhang avatar Joshua Levy avatar T QIAO avatar  avatar  avatar

Watchers

James Cloos avatar Shenjun Zhong avatar  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.