Git Product home page Git Product logo

log26 / sift3d Goto Github PK

View Code? Open in Web Editor NEW

This project forked from bbrister/sift3d

0.0 2.0 0.0 60.13 MB

Analogue of the scale-invariant feature transform (SIFT) for three-dimensional images. Includes an image processing and linear algebra library with feature matching and RANSAC regression. Also includes IO functions supporting a variety of image formats.

License: MIT License

CMake 14.18% C 69.97% C++ 6.48% MATLAB 9.36%

sift3d's Introduction

SIFT3D

Copyright (c) 2015-2016 Blaine Rister et al., see LICENSE for details.

SIFT3D is an analogue of the scale-invariant feature transform (SIFT) for three-dimensional images. It leverages volumetric data and real-world units to detect keypoints and extract a robust description of their content. It can also perform 3D image registration by matching SIFT3D features and fitting geometric transformations with the RANSAC algorithm. All of this is implemented in a cross-platform C library, with wrappers for Matlab.

SIFT3D includes imutil, a utility library for image processing and linear algebra. This library performs file IO in a variety of medical imaging formats, including DICOM and NIFTI.

Contents

This code creates the following executables:

  • kpSift3D - Extract keypoints and descriptors from a single image.
  • regSift3D - Extract matches and a geometric transformation from two images.

and the following libraries:

  • libreg.so - Image registration from SIFT3D features
  • libsift3d.so - Extract and match SIFT3D features
  • libimutil.so - Utility library for image processing, regression and linear algebra. Includes IO functions for DICOM and NIFTI file formats.

It also contains a Matlab toolbox for calling the library functions from Matlab scripts. See the README in /wrappers/matlab for more information.

Installation instructions

See doc/INSTALL_<PLATFORM>.md for instructions on installing SIFT3D for your specific platform.

Usage instructions

For instructions on using the CLI, use the "--help" option, e.g. kpSift3D --help

See /examples for sample programs using the C and Matlab APIs.

The following sections describe how to link a program to the SIFT3D libraries.

Linking to SIFT3D libraries with CMake

SIFT3D exports a CMake package to the install directories. Here is an example of compiling a C program with SIFT3D from a CMake list.

    find_package (SIFT3D) # Find SIFT3D
    add_executable (helloWorld helloWorld.c) # Declare a target
    target_link_libraries (helloWorld PUBLIC ${SIFT3D_LIBRARIES}) # Link to the SIFT3D libraries
    target_include_directories (helloWorld PUBLIC ${SIFT3D_INCLUDE_DIRS}) # Find the SIFT3D headers

Linking to SIFT3D libraries without CMake

The header files and libraries are installed to "sift3d" subdirectories in your installation tree. On most systems, you will need to add these subdirectories to your include and linker search paths. You will also need to link to the dependencies listed below.

  • libimutil - requires linking to nifticlib, DCMTK, LAPACK, BLAS, and zlib
  • libsift3d - requires linking to imutil
  • libreg - requires linking to sift3d and imutil

Information about the dependencies can be found in the installation instructions.

Note: On Windows systems, some of the dependencies are statically linked to the SIFT3D libraries. In this case, it suffices to link to the DLLs in the "bin" subdirectory of your installation.

Contact

Please contact me at [email protected] if you have any questions or concerns.

If you would like to cite this work, please refer to the following paper:

Rister, Blaine; Reiter, Daniel; Zhang, Hejia; Volz, Daniel; Horowitz, Mark; Gabr, Refaat E.; Cavallaro, Joseph R., "Scale- and orientation-invariant keypoints in higher-dimensional data," in Image Processing (ICIP), 2015 IEEE International Conference on, pp.3490-3494, 27-30 Sept. 2015. doi: 10.1109/ICIP.2015.7351453

The paper and automatic citations are available here.

sift3d's People

Contributors

bbrister avatar dtreiter avatar mnburkle avatar

Watchers

James Cloos 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.