All Projects → raacampbell → matlab_elastix

raacampbell / matlab_elastix

Licence: LGPL-3.0 License
MATLAB Elastix wrapper

Programming Languages

matlab
3953 projects

Projects that are alternatives of or similar to matlab elastix

MTF
Modular Tracking Framework
Stars: ✭ 99 (+371.43%)
Mutual labels:  image-registration
claire
Constrained Large Deformation Diffeomorphic Image Registration (CLAIRE)
Stars: ✭ 30 (+42.86%)
Mutual labels:  image-registration
quicksilver
Predictive Image Registration
Stars: ✭ 117 (+457.14%)
Mutual labels:  image-registration
ITKTubeTK
TubeTK is an open-source toolkit for the segmentation, registration, and analysis of tubes and surfaces in images, developed by Kitware, Inc.
Stars: ✭ 29 (+38.1%)
Mutual labels:  image-registration
RNiftyReg
An R interface to the NiftyReg medical image registration library
Stars: ✭ 32 (+52.38%)
Mutual labels:  image-registration
SASHIMI
SASHIMI segmentation is a Matlab App for semi-automatic interactive segmentation of multi-slice images.
Stars: ✭ 15 (-28.57%)
Mutual labels:  image-registration
BIRL
BIRL: Benchmark on Image Registration methods with Landmark validations
Stars: ✭ 66 (+214.29%)
Mutual labels:  image-registration
Image-Restoration
Image registration using pytorch
Stars: ✭ 26 (+23.81%)
Mutual labels:  image-registration
FAIR.m
Flexible Algorithms for Image Registration
Stars: ✭ 103 (+390.48%)
Mutual labels:  image-registration
MIRACL
Multi-modal Image Registration And Connectivity anaLysis
Stars: ✭ 23 (+9.52%)
Mutual labels:  image-registration
Vessel-Segmentation-MR-Registration
The code in this repository is from my master thesis. This project aims to automatically segment carotid from 3D MR brain image, and use the segmented carotid to extract Time-Activity-Curve from PET images. It mainly involves 3D image coregistration, vessel segmentation, partial valume correction.
Stars: ✭ 19 (-9.52%)
Mutual labels:  image-registration
ViT-V-Net for 3D Image Registration Pytorch
Vision Transformer for 3D medical image registration (Pytorch).
Stars: ✭ 169 (+704.76%)
Mutual labels:  image-registration
nemar
[CVPR2020] Unsupervised Multi-Modal Image Registration via Geometry Preserving Image-to-Image Translation
Stars: ✭ 120 (+471.43%)
Mutual labels:  image-registration
st gridnet
A Python implementation of the model described in our publication "A convolutional neural network for common-coordinate registration of high-resolution histology images" developed principally for applications to registration of spatial transcriptomics image data.
Stars: ✭ 18 (-14.29%)
Mutual labels:  image-registration
VoxelMorph-PyTorch
An unofficial PyTorch implementation of VoxelMorph- An unsupervised 3D deformable image registration method
Stars: ✭ 68 (+223.81%)
Mutual labels:  image-registration
Joint-Motion-Estimation-and-Segmentation
[MICCAI'18] Joint Learning of Motion Estimation and Segmentation for Cardiac MR Image Sequences
Stars: ✭ 45 (+114.29%)
Mutual labels:  image-registration
TransMorph Transformer for Medical Image Registration
TransMorph: Transformer for Unsupervised Medical Image Registration (PyTorch)
Stars: ✭ 130 (+519.05%)
Mutual labels:  image-registration
Fourier-Analysis-Digital-Images
Fourier analysis applications for image matching.
Stars: ✭ 18 (-14.29%)
Mutual labels:  image-registration
ACRN Chest X-ray IA
Learning Deformable Registration of Medical Images with Anatomical Constraints
Stars: ✭ 18 (-14.29%)
Mutual labels:  image-registration
DeepAtlas
Joint Semi-supervised Learning of Image Registration and Segmentation
Stars: ✭ 38 (+80.95%)
Mutual labels:  image-registration

MelastiX

Transformix Results

What is it?

MelastiX is a collection of MATLAB wrappers for the open source image registration suite Elastix. Elastix is cross-platform and is normally called from the system command-line (no GUI). MelastiX allows the elastix and transformix binaries to be called from within MATLAB as though they are native MATLAB commands.

What does it do?

  1. The user can feed in MATLAB matrices instead of image file names and get a MATLAB matrix back as a result.
  2. Parameters can be passed in as Elastix text files or as an MelastiX YAML file. The latter provides some error-checking options as the type and possible values of the parameters can be checked.
  3. Parameter files can be modified by passing an optional structure as a command-line argument. This makes it easy to explore how changing parameters affects registration accuracy.
  4. A function and example are provided to handle inverse transforms.
  5. Transforms sparse points.
  6. Handles both 2D and 3D data. Examples are only 2D, though.

What does it not do?

At the moment MelastiX does not provide tools to:

  1. Handle the mask option, thread option, and priority arguments for the elastix binary.
  2. Handle multiple fixed and moving image in one elastix call.
  3. Analyse transform parameters.

Getting started

  1. Place the Elastix binaries in your system path. If you don't know how to do that, there's information here for Windows and Linux. You may need to restart Windows after adding Elastix to the path otherwise MATLAB will not see it. Before restarting, verify that running elastix --help in the Windows command line shows the Elastix help text.
  2. Add the MelastiX code directory to your MATLAB path.
  3. Add yamlmatlab to your MATLAB path.
  4. Run the examples in MelastiX_examples.

Installing Elastix via the Linux package manager may lead to errors in MATLAB of the sort: error while loading shared libraries: libANNlib.so. If so, remove the version installed by the package manager and install manually from the Elastix GitHub page. e.g.

$ bzip2 -d elastix-4.9.0-linux.tar.bz2 
$ tar -xvf elastix-4.9.0-linux.tar 
$ sudo cp bin/* /usr/local/bin/
$ sudo cp lib/* /usr/local/lib/

If everything is installed correctly, running elastix('version') in MATLAB should bring up the Elastix help text. If that does not appear and you get errors associated with libstdc++.so.6 being an incorrect version, then try the suggestions shown here: https://uk.mathworks.com/matlabcentral/answers/329796-issue-with-libstdc-so-6 A verified solution on Linux is to change the symlink to the system library. e.g.

$ cd /usr/local/MATLAB/R2021a/sys/os/glnxa64
$ ls -la libstdc++.so.6
lrwxrwxrwx 1 root root 19 Jun 30 11:05 libstdc++.so.6 -> libstdc++.so.6.0.25

$ sudo rm libstdc++.so.6

$ sudo ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 ./

What to do if the transform fails?

If you get unexpected results, first check whether the transform parameter file was written properly. If you are providing an Elastix parameter file and not modifying it then you should be fine. However, if you use the .yml approach or modify a parameter file using a structure then it's possible you've found a bug in the writing of the paramater file. To diagnose this, look at the written parameter file by calling elastix.m with a user-defined output path (so the files produced are not deleted) or use the verbose option in elastix_paramStruct2txt. If you're still getting unexpected results then probably you have an issue with Elastix itself: please go the Elastix website for documentation or ask on their forum.

Known issues

The paths in the Transform files are absolute so if you have multiple transforms and you run transformix on them, the process will only succeed if the files are in their original locations. If the files have moved, you will need to change the path(s) at InitialTransformParametersFileName.

MATLAB Versions

You will need at least MATLAB version R2017b.

Related projects

  1. ElastixFromMatlab toolbox
  2. Elastix MATLAB interface
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].