greedy
Very fast greedy diffeomorphic registration code.
Very fast greedy diffeomorphic registration code
License: GNU General Public License v3.0
Very fast greedy diffeomorphic registration code.
Hi,
I have tried to install greedy under MacOS. I followed the installation instruction and installed CMake 3.23.2 and ITK 5.2.1. When I tried to run ccmake for building greedy, I got ‘ zsh: command not found: ccmake’.
Can anyone help me? If you need any further information, please tell me. Thanks in advance!
Best,
Amy
Hi Paul,
Was really hoping to register using my full resolution data, but there seems to be a scaling issue.
ITK version: 4.13.2
Greedy commit: abef638
I'm using an old commit. I tried a fresh pull but had installation issues and did not have time to trouble shoot them. Thought this issue might persist for newer versions and should document it.
The reslice works with a skip sampled version of the moving image mov_ss = mov[::2, ::2, ::4]
:
I believe this issue also affects registrations. When using mov.nrrd
as the moving image and 2 scale levels, the first scale level runs fine (image is smaller by a factor of 8 voxels), but seg faults when moving up to the full resolution iterations.
Tried affine registration but no output saved
Hi Paul,
Do you have any plans to offer greedy as a python package so that it can be daisy-changed into larger projects?
Cheers,
Sarthak
Hello all,
I tried to use greedy for image registration on sinogram level. my sinogram size is 520 x 50 x 11559 x 35 (int8). I configure the affine and deformable registration. I am following the quick start instruction of Greedy. and greedy can run for the lowest and intermediate resolution. But when working on full resolution, the greedy will be interrupted after finishing the intermediate resolution iterations (on Affine mode, no affine.mat output).
I am considering whether it is the hardware or the software restriction. May I ask does any hard restriction on the application level?
Additionally my hardware is Xeon Gold 6242R with 768 GB RAM.
Best regards
Wenhong Lan
The image to be registered is a NIfTI file with multiple components (Corresponding R/G/B channel), Is there a command line that performs the same warps (warp.nii.gz and affine.mat) for each component?
I did registration of 3d images in ITK-SNAP and it was great. Now I want to reproduce it using command line tool.
What parameters should I pass to get the same result?
I use the following settings:
Hi,
I've identified an issue with output transformations calculated by Greedy on Linux. I run it several times to register data using affine options with the command below and received different affine transformations on every run:
greedy -i /path/test_data/moving.nii.gz /path/test_data/reference.nii.gz -o /path/test_output/SSD_100x50x20/affine.mat -n 100x50x20 -d 3 -m SSD -ia-image-centers -a -dof 12
The following transformation matrices were saved on two separate runs on Linux for the exact same input data and Greedy parameters:
1.02348 0.000315488 0.00602789 -1.52572
0.00256797 0.994491 0.00338622 -1.88332
0.00062883 -0.00871956 0.797624 -44.4442
0 0 0 1
1.01814 0.00120815 0.00449941 -1.06076
-0.000651167 0.996294 0.0018094 -2.27074
0.00119741 -0.00765716 0.796436 -44.8874
0 0 0 1
The version of Greedy used for calculation:
Greedy Version 1.2.0
Release date: Jan 12, 2021
Compile date: Nov 23, 2021
GIT branch: itk5
GIT commit: 6488047
GIT commit date: 2021-10-22 14:16:34 -0400
I didn't find any random seeds/parameters in the source code of registration algorithms, so as far as I'm concerned all the results should be repeatable. Would you please investigate?
I'm unable to build greedy on Fedora 31.
InsightToolkit-vtk-devel Version: 4.13.1
Cmake Version: 3.14.5
$ cmake ../greedy -DITK_DIR=/usr/lib64/cmake/InsightToolkit/ -- GREEDY Version: 1.0.1 Released Mar 21, 2019 -- GIT Info: -- Branch : master -- SHA : 3ed5a0dc480bf0ca3f850e6783208bae3aef570c -- Date : 2019-10-18 05:35:03 -0400 -- Configuring done CMake Error at CMakeLists.txt:195 (ADD_EXECUTABLE): Target "greedy" links to target "GTest::GTest" but the target was not found. Perhaps a find_package() call is missing for an IMPORTED target, or an ALIAS target is missing? [...]
Then
$ make [ 5%] Building CXX object CMakeFiles/greedyapi.dir/src/lddmm_data.cxx.o In file included from /usr/include/InsightToolkit/itkNumericTraits.h:51, from /home/user/Downloads/greedy/src/lddmm_data.h:31, from /home/user/Downloads/greedy/src/lddmm_data.cxx:27: /usr/include/vxl/vcl/vcl_limits.h:11:5: warning: #warning "This header will be removed in future versions of VXL. Use equivalent C++11 header instead. see: vxl/scripts/UseStandardHeaders.py" [-Wcpp] 11 | # warning "This header will be removed in future versions of VXL. Use equivalent C++11 header instead. see: vxl/scripts/UseStandardHeaders.py" | ^~~~~~~ /home/user/Downloads/greedy/src/lddmm_data.cxx: In instantiation of ‘static void LDDMMData::img_downsample(LDDMMData::ImageType*, LDDMMData::ImageType*, double) [with TFloat = float; unsigned int VDim = 2; LDDMMData::ImageType = itk::Image]’: /home/user/Downloads/greedy/src/lddmm_data.cxx:2008:16: required from here /home/user/Downloads/greedy/src/lddmm_data.cxx:1622:37: error: ‘vcl_ceil’ was not declared in this scope 1622 | sz[i] = (unsigned long) vcl_ceil(src->GetBufferedRegion().GetSize()[i] / factor); | ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/user/Downloads/greedy/src/lddmm_data.cxx: In instantiation of ‘static void LDDMMData::img_downsample(LDDMMData::ImageType*, LDDMMData::ImageType*, double) [with TFloat = float; unsigned int VDim = 3; LDDMMData::ImageType = itk::Image]’: /home/user/Downloads/greedy/src/lddmm_data.cxx:2009:16: required from here /home/user/Downloads/greedy/src/lddmm_data.cxx:1622:37: error: ‘vcl_ceil’ was not declared in this scope [...]
When compiling greedy, it asked for VTK binary directory.
Following similar issue here, I installed VTK but now is giving this error:
From the VTK git repo I could not find IOCore
or IOGeometry
or the others. Could you suggest how to resolve this? Thank you!
Ubuntu system.
GREEDY Version: 1.3.0-alpha Released Sep 28, 2022
GIT Info:
Branch : master
SHA : ee6a9efa12fea5fe9a746babc7c53b54ab49a1c2
Date : 2022-09-28 07:52:39 -0400
CMake Error at CMakeLists.txt:66 (FIND_PACKAGE):
Found package configuration file:
/home/ubuntu/code/vtk/build/vtk-config.cmake
but it set VTK_FOUND to FALSE so package "VTK" is considered to be NOT
FOUND. Reason given by package:
Could not find the VTK package with the following required components:
IOCore, IOGeometry, IOLegacy, IOPLY.
Trying rigid registration plus uniform scaling with the -dof 7
option. I get the error
ABORTING PROGRAM DUE TO RUNTIME EXCEPTION -- DOF parameter only accepts 6 and 12 as values
I am using #4e365d0 of the itk5 branch.
I am very interested in Greedy due to its speed and ability to use the mutual information cost functions which help for post-contrast scans where scalp and brain intensity can vary a lot from templates. We are dealing with huge clinical datasets and tools like FLIRT are robust but too constrained while tools like FNIRT do not use sensible cost functions for our use case.
-ia-identity
would work, but this creates an error (IFLAG= -1 LINE SEARCH FAILED
) and nonsense images, so I use -ia-image-centers
-ia-image-centers
the results of the affine are very poor for this example. The new NIfTI image does not seem to inherit the SForm and QForm of the fixed image (e.g. origin is outside of volume, rather than at anterior commissure)V 0
) is indeed silent for the affine stages, but still generates per iteration messages for the nonlinear stages.fixed=template.nii.gz
moving=flair.nii.gz
greedy -V 0 -d 3 -a \
-m NMI \
-i $fixed $moving \
-o affine.mat \
-ia-image-centers -n 100x50x10
greedy -V 0 -d 3 \
-rf $fixed \
-rm $moving affineOnly.nii.gz \
-r affine.mat
greedy -V 0 -d 3 \
-m WNCC 2x2x2 \
-i $fixed $moving \
-it affine.mat \
-o warp.nii.gz \
-oinv inverse_warp.nii.gz \
-sv -n 100x50x10
greedy -V 0 -d 3 \
-rf $fixed \
-rm $moving resliced.nii.gz \
-ri LABEL 0.2vox \
-r warp.nii.gz affine.mat
fixed=template.nii.gz
moving=flair.nii.gz
greedy -d 3 -a \
-m NCC 2x2x2 \
-i $fixed $moving \
-o affine.mat \
-ia-image-centers -n 100x50x10
greedy -d 3 \
-m NCC 2x2x2 \
-i $fixed $moving \
-it affine.mat \
-o warp.nii.gz \
-oinv inverse_warp.nii.gz \
-n 100x50x10
greedy -d 3 \
-rf $fixed \
-rm $moving resliced.nii.gz \
-ri LABEL 0.2vox \
-r warp.nii.gz affine.mat
Hi there. I'm quite new to configuring with CMake, but I have followed the error messages and still don't seem to be getting a result here. After following the steps here https://greedy.readthedocs.io/en/latest/install.html ... I am still receiving these errors with configuring greedy
I have linked the directory with the ITKConfig.cmake file .... does it look like this error stemmed from the configuration/build of ITK ?
Hello all
May I ask how I can get the displacement vector field (DVF) for the fixed and moving images?
Best regards
Thanks for the terrific tool.
The binary version of greedy provided with the latest Linux release of ITK snap (Greedy Version 1.3.0-alpha compiled on Sep 29, 2023) was compiled with a version of ITK that generates false alarms in ensuring orthonormal directions. Re-compiling greedy with a recent version of ITK resolves this issue (I installed the Github master ITK and VTK libraries).
However, I would like to suggest the following enhancements:
master
branch requires VTK for quality mesh transformations. Since the Installation directions suggest downloading from the master
branch, the Prerequisites of the Installation documents should be updated to reflect this requirement./home/chris/src/greedy/testing/src/greedy_multi_chunk.cxx: In function ‘void initialize_assemblies(ChunkGreedyParameters, GreedyParameters, std::map<short int, MultiChunkAffineAssembly<VDim, TReal> >&, std::vector<short int, std::allocator<short int> >&, typename itk::Image<short int, VDim>::Pointer&)’:
/home/chris/src/greedy/testing/src/greedy_multi_chunk.cxx:189:20: error: ‘BinaryThresholdImageFilter’ in namespace ‘itk’ does not name a template type
189 | typedef itk::BinaryThresholdImageFilter<ChunkMaskImageType, typename LDDMMType::ImageType> TFilter;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
/home/chris/src/greedy/testing/src/greedy_multi_chunk.cxx:190:16: error: ‘TFilter’ has not been declared
190 | typename TFilter::Pointer thresh = TFilter::New();
| ^~~~~~~
/home/chris/src/greedy/testing/src/greedy_multi_chunk.cxx:190:33: error: expected ‘(’ before ‘thresh’
190 | typename TFilter::Pointer thresh = TFilter::New();
| ^~~~~~
| (
/home/chris/src/greedy/testing/src/greedy_multi_chunk.cxx:191:7: error: ‘thresh’ was not declared in this scope
191 | thresh->SetInput(chunk_mask);
I used the following commands for registration and it worked perfectly. After that, I applied transformation (warp(affine)) on pointset like .vtk or .obj formats but there is a problem that the result (vtkresult.vtk) is exactly the same as MovingImg and it seems that the transformation doesn't have any effect on the MovingImg.vtk. Would you help me with applying transformation on pointset?
greedy -d 3 -a -i fixedImg.nrrd MovingImg.nrrd -dof 12 -o affinematrix.mat -m SSD -ia-image-centers -n 100x0 -float
greedy -d 3 -m SSD -i fixedImg.nrrd MovingImg.nrrd -it affinematrix.mat -o warp.nii.gz -oinv inverse_wrap.nii.gz -n 100x0 -float
greedy -d 3 -rf fixedImg.nrrd -rm MovingImg.nrrd finalOutput.nrrd -ri LABEL 0.2vox -r warp.nii.gz affinematrix.mat -float_
before registration .nnrd images:
https://drive.google.com/file/d/1UP0-A2XK2aumJQl1N0qR5_MsYO0KEep5/view?usp=sharing
after registration .nrrd images:
https://drive.google.com/file/d/1e4lmPDTOqng6octnIxqDyCw2f8paalaz/view?usp=sharing
transformation on vtk:
greedy -d 3 -rf fixedImg.nrrd -rs MovingImg.vtk vtkresult.vtk -r warp.nii.gz affinematrix.mat
Hello.
I met a problem. could you pls help me?
My system is ubuntu20.4 on the virtual machine.
I've built with the command make -j 8,
[ 6%] Built target text_to_hex
[ 30%] Built target docs_to_hex
[ 36%] Built target test_accum
[ 63%] Built target greedyapi
[ 86%] Built target test_greedy
[ 86%] Built target greedy
[ 90%] Built target greedy_template_average
[100%] Built target multi_chunk_greedy
but nothing happened after running the command
greedy -d 3 -a
-m NCC 2x2x2
-i /home/fll/Desktop/greedy/czzDTI.nii.gz /home/fll/Desktop/greedy/czzT1.nii.gz
-o /home/fll/Desktop/greedy/affine.mat
-ia-image-centers -n 100x50x10
When I use the command
greedy -d 3 -a
-m NCC 2x2x2
-i /home/fll/Desktop/greedy/czzDTI.nii.gz /home/fll/Desktop/greedy/czzT1.nii.gz
-o /home/fll/Desktop/greedy/affine.mat
-ia-image-centers -n 100x50x10
, the system says it can't be found.
Hi Greedy Guys,
I want to compile greedy on linux. I managed to compile itk4.12 with cmake. I cloned greedy from github and now I am trying to build greedy on linux. I stop at some point in this process. I am getting an error like this:
(base) [k ~]$ cd /pst/data/imaging/Agata/greedy/bu ild-greedy-itk4.12
(base) [aga@ build-greedy-itk4.12]$ cmake -B . -S /pst/data/imaging/ Agata/greedy/greedy -D ITK_DIR:PATH=/pst/data/imaging/Agata/greedy/build-itk4.12/ -- The C compiler identification is GNU 4.8.4
-- The CXX compiler identification is GNU 4.8.4
-- Check for working C compiler: /pst/apps/GCC/4.8.4/bin/cc
-- Check for working C compiler: /pst/apps/GCC/4.8.4/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /pst/apps/GCC/4.8.4/bin/c++
-- Check for working CXX compiler: /pst/apps/GCC/4.8.4/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- GREEDY Version: 1.0.1 Released Mar 21, 2019
-- GIT Info:
-- Branch : master
-- SHA : a9fcaac
-- Date : 2021-02-19 10:13:08 -0500
-- Configuring done
-- Generating done
-- Build files have been written to: /pst/data/imaging/Agata/greedy/build-greedy-it k4.12
(base) [aga@ build-greedy-itk4.12]$ make
Scanning dependencies of target greedyapi
[ 4%] Building CXX object CMakeFiles/greedyapi.dir/src/lddmm_data.cxx.o
/pst/data/imaging/Agata/greedy/greedy/src/lddmm_data.cxx: In static member function ‘static void LDDMMData<TFloat, VDim>::img_downsample(LDDMMData<TFloat, VDim>::ImageType, LDDM MData<TFloat, VDim>::ImageType, double)’:
/pst/data/imaging/Agata/greedy/greedy/src/lddmm_data.cxx:1689:9: error: ISO C++ for bids declaration of ‘smooth’ with no type [-fpermissive]
auto smooth = fltSmooth->GetOutput();
^
/pst/data/imaging/Agata/greedy/greedy/src/lddmm_data.cxx: In instantiation of ‘stat ic void LDDMMData<TFloat, VDim>::img_downsample(LDDMMData<TFloat, VDim>::ImageType, LDDMMData< TFloat, VDim>::ImageType*, double) [with TFloat = float; unsigned int VDim = 2u; LDDMMData<TFlo at, VDim>::ImageType = itk::Image<float, 2u>]’:
/pst/data/imaging/Agata/greedy/greedy/src/lddmm_data.cxx:2124:16: required from h ere
/pst/data/imaging/Agata/greedy/greedy/src/lddmm_data.cxx:1689:39: error: cannot con vert ‘itk::ImageSource<itk::Image<float, 2u> >::OutputImageType* {aka itk::Image<float, 2u>}’ to ‘int’ in initialization
auto smooth = fltSmooth->GetOutput();
^
/pst/data/imaging/Agata/greedy/greedy/src/lddmm_data.cxx: In instantiation of ‘stat ic void LDDMMData<TFloat, VDim>::img_downsample(LDDMMData<TFloat, VDim>::ImageType, LDDMMData< TFloat, VDim>::ImageType*, double) [with TFloat = float; unsigned int VDim = 3u; LDDMMData<TFlo at, VDim>::ImageType = itk::Image<float, 3u>]’:
/pst/data/imaging/Agata/greedy/greedy/src/lddmm_data.cxx:2125:16: required from h ere
/pst/data/imaging/Agata/greedy/greedy/src/lddmm_data.cxx:1689:39: error: cannot con vert ‘itk::ImageSource<itk::Image<float, 3u> >::OutputImageType* {aka itk::Image<float, 3u>}’ to ‘int’ in initialization
/pst/data/imaging/Agata/greedy/greedy/src/lddmm_data.cxx: In instantiation of ‘stat ic void LDDMMData<TFloat, VDim>::img_downsample(LDDMMData<TFloat, VDim>::ImageType*, LDDMMData< TFloat, VDim>::ImageType*, double) [with TFloat = float; unsigned int VDim = 4u; LDDMMData<TFlo at, VDim>::ImageType = itk::Image<float, 4u>]’:
/pst/data/imaging/Agata/greedy/greedy/src/lddmm_data.cxx:2126:16: required from h ere
/pst/data/imaging/Agata/greedy/greedy/src/lddmm_data.cxx:1689:39: error: cannot con vert ‘itk::ImageSource<itk::Image<float, 4u> >::OutputImageType* {aka itk::Image<float, 4u>}’ to ‘int’ in initialization
/pst/data/imaging/Agata/greedy/greedy/src/lddmm_data.cxx: In instantiation of ‘stat ic void LDDMMData<TFloat, VDim>::img_downsample(LDDMMData<TFloat, VDim>::ImageType*, LDDMMData< TFloat, VDim>::ImageType*, double) [with TFloat = double; unsigned int VDim = 2u; LDDMMData<TFl oat, VDim>::ImageType = itk::Image<double, 2u>]’:
/pst/data/imaging/Agata/greedy/greedy/src/lddmm_data.cxx:2128:16: required from h ere
/pst/data/imaging/Agata/greedy/greedy/src/lddmm_data.cxx:1689:39: error: cannot con vert ‘itk::ImageSource<itk::Image<double, 2u> >::OutputImageType* {aka itk::Image<double, 2u>} ’ to ‘int’ in initialization
/pst/data/imaging/Agata/greedy/greedy/src/lddmm_data.cxx: In instantiation of ‘stat ic void LDDMMData<TFloat, VDim>::img_downsample(LDDMMData<TFloat, VDim>::ImageType*, LDDMMData< TFloat, VDim>::ImageType*, double) [with TFloat = double; unsigned int VDim = 3u; LDDMMData<TFl oat, VDim>::ImageType = itk::Image<double, 3u>]’:
/pst/data/imaging/Agata/greedy/greedy/src/lddmm_data.cxx:2129:16: required from h ere
/pst/data/imaging/Agata/greedy/greedy/src/lddmm_data.cxx:1689:39: error: cannot con vert ‘itk::ImageSource<itk::Image<double, 3u> >::OutputImageType* {aka itk::Image<double, 3u>} ’ to ‘int’ in initialization
/pst/data/imaging/Agata/greedy/greedy/src/lddmm_data.cxx: In instantiation of ‘stat ic void LDDMMData<TFloat, VDim>::img_downsample(LDDMMData<TFloat, VDim>::ImageType*, LDDMMData< TFloat, VDim>::ImageType*, double) [with TFloat = double; unsigned int VDim = 4u; LDDMMData<TFl oat, VDim>::ImageType = itk::Image<double, 4u>]’:
/pst/data/imaging/Agata/greedy/greedy/src/lddmm_data.cxx:2130:16: required from h ere
/pst/data/imaging/Agata/greedy/greedy/src/lddmm_data.cxx:1689:39: error: cannot con vert ‘itk::ImageSource<itk::Image<double, 4u> >::OutputImageType* {aka itk::Image<double, 4u>} ’ to ‘int’ in initialization
make[2]: *** [CMakeFiles/greedyapi.dir/src/lddmm_data.cxx.o] Error 1
make[1]: *** [CMakeFiles/greedyapi.dir/all] Error 2
make: *** [all] Error 2
I would appreciate for any help or advice in this issue.
Best,
Agata
what is the purpose of -rf
argument here in the quick start?
greedy -d 3 \
-rf fixed.nii.gz \
-rm moving.nii.gz resliced.nii.gz \
-ri LABEL 0.2vox \
-rm moving_seg.nii.gz resliced_seg.nii.gz \
-r warp.nii.gz affine.mat
i understand that in the documentation of-rf
it says "Images will be re-sliced into this space.". But haven't warp.nii.gz
and affine.mat
learned where in the space to transform already? So i dont understand why we need to specify the fixed image here..
thank you!
Hey Paul - trying to build on Windows. Not for me, but a general solution for those wanting to use greedy. The repo is located at: https://github.com/muschellij2/greedyreg
It compiles a lot of the way, but fails on lddmm.exe with a series of "undefined reference"s:
CMakeFiles\lddmm.dir/objects.a(lddmm_main.cxx.obj):lddmm_main.cxx:(.text$_Z8run_testIdLj2EEiiPPc[_Z8run_testIdLj2EEiiPPc]+0x75): undefined reference to `LDDMMData<double, 2u>::img_read(char const*, itk::SmartPointer<itk::Image<double, 2u> >&)'
If you see https://ci.appveyor.com/project/muschellij2/greedyreg (I'm not sure if you can view this), you can see the compilation (in Artifacts → failure.zip → 00install.out) the errors. I don't know why this may occur.
The configure script is located at: https://github.com/muschellij2/greedyreg/blob/master/configure.win
We can discuss other things about that, such as I may or may not need the PKG_LIBS
, but wanted your thoughts on the error above if you have time.
I would like to evaluate some parameter choices against ANTs defaults, which use zero smoothing in some contexts. Using -s 1.732vox 0vox
(ANTs default) in registration causes a runtime error:
src/ITK-4.13.2/Modules/Filtering/Smoothing/include/itkRecursiveGaussianImageFilter.hxx:344:
itk::ERROR: RecursiveGaussianImageFilter(0x3e34950): Sigma must be greater than zero.
Similarly, -ri LABEL 0vox
fails.
Using a small number is a viable workaround.
Following the quick start guide here and using -d 2 instead of -d 3, using the images provided in the /matlab/diff directory, I get a weird deformation. Below shows (fixed, moving, warped) images from top to bottom. I also include the deformation field. Any ideas why this is the case?
I am running the version of greedy that ships with the latest version of ITKsnap (4.0.2). I am getting inconsistent results where sometimes an error is generated and sometimes it is not.
tmp % rm ./new.mat
tmp % greedy -V 0 -a -d 3 -m MI -i $fixed $moving -o ./new.mat -ia-image-centers -n 100x50x10
tmp % rm ./new.mat
tmp % greedy -V 0 -a -d 3 -m MI -i $fixed $moving -o ./new.mat -ia-image-centers -n 100x50x10
tmp % rm ./new.mat
tmp % greedy -V 0 -a -d 3 -m MI -i $fixed $moving -o ./new.mat -ia-image-centers -n 100x50x10
tmp % rm ./new.mat
tmp % greedy -V 0 -a -d 3 -m MI -i $fixed $moving -o ./new.mat -ia-image-centers -n 100x50x10
tmp % rm ./new.mat
tmp % greedy -V 0 -a -d 3 -m MI -i $fixed $moving -o ./new.mat -ia-image-centers -n 100x50x10
tmp % rm ./new.mat
tmp % greedy -V 0 -a -d 3 -m MI -i $fixed $moving -o ./new.mat -ia-image-centers -n 100x50x10
tmp % rm ./new.mat
tmp % greedy -V 0 -a -d 3 -m MI -i $fixed $moving -o ./new.mat -ia-image-centers -n 100x50x10
tmp % rm ./new.mat
tmp % greedy -V 0 -a -d 3 -m MI -i $fixed $moving -o ./new.mat -ia-image-centers -n 100x50x10
tmp % rm ./new.mat
tmp % greedy -V 0 -a -d 3 -m MI -i $fixed $moving -o ./new.mat -ia-image-centers -n 100x50x10
IFLAG= -1 LINE SEARCH FAILED. SEE DOCUMENTATION OF ROUTINE MCSRCH ERROR RETURN OF LINE SEARCH: INFO= 3 POSSIBLE CAUSES: FUNCTION OR GRADIENT ARE INCORRECT OR INCORRECT TOLERANCESvnl_lbfgs: Error. Netlib routine lbfgs failed.
tmp % rm ./new.mat
tmp % greedy -V 0 -a -d 3 -m MI -i $fixed $moving -o ./new.mat -ia-image-centers -n 100x50x10
tmp % rm ./new.mat
tmp % greedy -V 0 -a -d 3 -m MI -i $fixed $moving -o ./new.mat -ia-image-centers -n 100x50x10
IFLAG= -1 LINE SEARCH FAILED. SEE DOCUMENTATION OF ROUTINE MCSRCH ERROR RETURN OF LINE SEARCH: INFO= 6 POSSIBLE CAUSES: FUNCTION OR GRADIENT ARE INCORRECT OR INCORRECT TOLERANCESvnl_lbfgs: Error. Netlib routine lbfgs failed.
I have set the SForm and QForm so fslhd reports both are Scanner Anat
. In ITKsnap the alignment looks reasonable.
The values in the output new.mat file look a tiny bit different between runs, but visually are pretty close, including the failed runs.
It would be nice to be able to save just the inverse map, but right calling without -o
and with just -oinv
seems to cause a crash, after registration when the output is being written. Error message (on OS X) is:
ABORTING PROGRAM DUE TO RUNTIME EXCEPTION -- /Users/picsl/tk/bb3/Nightly/itk/v4.12.2/itk/Modules/IO/ImageBase/include/itkImageFileWriter.hxx:123:
itk::ERROR: ImageFileWriter(0x7fe14b16ec60): No filename was specified
Documentation use outdated name of a parameter -exp here
Did you mean "almost no cost to performance" in L#206
Currently it says:
"Note that there is almost to performance cost for using larger radii due to efficient implementation."
Hey,
I want to build iITK-Snap to create some additional feature to it, but if I'm building it on my Windows 10, i get a lot of errors regarding greedy. What are some possible problems/solutions to this?
Sincerly,
Mark Nardi
Hello
I'm having a great time using greedy.
I'm wondering what's an easy way to apply the transforms generated by greedy to images loaded in SimpleITK (Python)? I understand that one difference is that greedy (RAS) and ITK (LPS) uses a different coordinate system, so I tried two things to remedy that -- which didn't seem to work:
I negated some values of my greedy generated affine matrix so that they are now compatible to images in LPS coordinates, according to this article. I then applied that modified affine matrix to my image loaded in SimpleITK.
I transposed the image in the first two axes, applied the affine transformation, then transposed the image back.
Am I missing other differences? Or am I not, so it's probably the case that I did something wrong?
Help appreciated from anyone who has tried doing this. I'm very new to registration, so any help would be great! Thanks in advance!
Best Wishes
Hi Paul,
I have been trying to install greedy in Linux, following the instructions in https://greedy.readthedocs.io/en/latest/install.html. I tried the installation with two different versions of ITK, -5.2.1 and -4.13.3. When I tried with version 5.2.1, I got the error: 'fatal error: itkVectorResampleImageFilter.h: No such file or directory', when trying to make greedy. I thought this could be due to a version mismatch, and thus tried with an earlier version of ITK 4.13.3. Then, I get a different error in the make step: 'error: 'isnan' was not declared in this scope'. I have been trying to pin-point the source of this error for a couple of weeks, but was unable to do so. It would be great if you can let me know what you think about this, if I am missing something and if there's any way to fix this. Please let me know if you need any further details. Thanks a lot!
Best regards,
Anuththara
TL;DR, need ccmake
with:
CMAKE_OSX_DEPLOYMENT_TARGET 10.11
CMAKE_OSX_SYSROOT /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk
Get the following error:
ld: file not found: /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SharedFileList.framework/Versions/A/SharedFileList for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Tried
export MACOSX_DEPLOYMENT_TARGET=10.10
no dice.
Tried setting
MAKE_OSX_DEPLOYMENT_TARGET 10.11
CMake Error at /opt/local/share/cmake-3.5/Modules/Platform/Darwin.cmake:85 (message):
CMAKE_OSX_DEPLOYMENT_TARGET (10.11) is greater than CMAKE_OSX_SYSROOT SDK:
Please set CMAKE_OSX_DEPLOYMENT_TARGET to 10.10 or lower.
Call Stack (most recent call first):
/opt/local/share/cmake-3.5/Modules/CMakeSystemSpecificInformation.cmake:36
(include)
CMakeLists.txt:1 (PROJECT)
So I had to set the SDK to the one for 10.11
:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk
Then it seems
Hello.
I met a problem when building this project. could you pls help me?
My system is Macos.
My clang version is below.
Apple LLVM version 10.0.1 (clang-1001.0.46.4)
Target: x86_64-apple-darwin18.7.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin
** I have installed ITK5.0 successfully and pass the ITK installation test.**
Here is the log.
[ 10%] Built target text_to_hex
[ 15%] Building CXX object CMakeFiles/greedyapi.dir/src/lddmm_data.cxx.o
In file included from /Users/shuai/Greedy/greedy/src/lddmm_data.cxx:27:
In file included from /Users/shuai/Greedy/greedy/src/lddmm_data.h:31:
In file included from /usr/local/include/ITK-5.0/itkNumericTraits.h:21:
In file included from /usr/local/include/ITK-5.0/itkMacro.h:42:
/usr/local/include/ITK-5.0/itkConfigure.h:59:6: warning: "WARNING: The current project is configured
to use a C++ standard version older than the C++ standard used for this build of ITK"
[-W#warnings]
#warning "WARNING: The current project is configured to use a C++ standard version olde...
^
In file included from /Users/shuai/Greedy/greedy/src/lddmm_data.cxx:27:
In file included from /Users/shuai/Greedy/greedy/src/lddmm_data.h:31:
In file included from /usr/local/include/ITK-5.0/itkNumericTraits.h:21:
/usr/local/include/ITK-5.0/itkMacro.h:166:6: error: "Apple LLVM < 5.0 (clang < 3.3) is not supported
under ITKv5"
#error "Apple LLVM < 5.0 (clang < 3.3) is not supported under ITKv5"
^
In file included from /Users/shuai/Greedy/greedy/src/lddmm_data.cxx:27:
In file included from /Users/shuai/Greedy/greedy/src/lddmm_data.h:31:
In file included from /usr/local/include/ITK-5.0/itkNumericTraits.h:21:
In file included from /usr/local/include/ITK-5.0/itkMacro.h:1333:
In file included from /usr/local/include/ITK-5.0/itkExceptionObject.h:28:
/usr/local/include/ITK-5.0/itkSmartPointer.h:54:22: warning: alias declarations are a C++11
extension [-Wc++11-extensions]
using ObjectType = TObjectType;
^
/usr/local/include/ITK-5.0/itkSmartPointer.h:57:5: warning: alias declarations are a C++11 extension
[-Wc++11-extensions]
typename std::enable_if<std::is_convertible<T*, TObjectType*>::value>;
^
/usr/local/include/ITK-5.0/itkSmartPointer.h:60:3: error: unknown type name 'constexpr'
constexpr SmartPointer () noexcept:
^
/usr/local/include/ITK-5.0/itkSmartPointer.h:60:13: error: constructor cannot have a return type
constexpr SmartPointer () noexcept:
^~~~~~~~~~~~
/usr/local/include/ITK-5.0/itkSmartPointer.h:60:28: error: expected ';' at end of declaration list
constexpr SmartPointer () noexcept:
^
;
/usr/local/include/ITK-5.0/itkSmartPointer.h:192:18: error: expected ';' at end of declaration list
void Register() noexcept
^
;
/usr/local/include/ITK-5.0/itkSmartPointer.h:206:71: error: expected ';' at end of declaration
bool operator==( const SmartPointer& l, const SmartPointer& r ) noexcept
^
;
/usr/local/include/ITK-5.0/itkSmartPointer.h:206:73: error: C++ requires a type specifier for all
declarations
bool operator==( const SmartPointer& l, const SmartPointer& r ) noexcept
^
/usr/local/include/ITK-5.0/itkSmartPointer.h:206:81: error: expected ';' after top level declarator
bool operator==( const SmartPointer& l, const SmartPointer& r ) noexcept
^
;
In file included from /Users/shuai/Greedy/greedy/src/lddmm_data.cxx:27:
In file included from /Users/shuai/Greedy/greedy/src/lddmm_data.h:31:
In file included from /usr/local/include/ITK-5.0/itkNumericTraits.h:21:
In file included from /usr/local/include/ITK-5.0/itkMacro.h:1333:
/usr/local/include/ITK-5.0/itkExceptionObject.h:54:22: warning: alias declarations are a C++11
extension [-Wc++11-extensions]
using Superclass = std::exception;
^
/usr/local/include/ITK-5.0/itkExceptionObject.h:58:20: error: expected ';' at end of declaration
list
ExceptionObject() noexcept;
^
;
/usr/local/include/ITK-5.0/itkExceptionObject.h:64:48: error: expected ';' at end of declaration
list
ExceptionObject(const ExceptionObject & orig) noexcept;
^
;
/usr/local/include/ITK-5.0/itkExceptionObject.h:67:3: error: exception specification of overriding
function is more lax than base version
~ExceptionObject() noexcept override;
^
/Library/Developer/CommandLineTools/usr/include/c++/v1/exception:101:13: note: overridden virtual
function is here
virtual ~exception() _NOEXCEPT;
^
In file included from /Users/shuai/Greedy/greedy/src/lddmm_data.cxx:27:
In file included from /Users/shuai/Greedy/greedy/src/lddmm_data.h:31:
In file included from /usr/local/include/ITK-5.0/itkNumericTraits.h:21:
In file included from /usr/local/include/ITK-5.0/itkMacro.h:1333:
/usr/local/include/ITK-5.0/itkExceptionObject.h:67:21: error: expected ';' at end of declaration
list
~ExceptionObject() noexcept override;
^
;
/usr/local/include/ITK-5.0/itkExceptionObject.h:70:60: error: expected ';' at end of declaration
list
ExceptionObject & operator=(const ExceptionObject & orig) noexcept;
^
;
/usr/local/include/ITK-5.0/itkExceptionObject.h:106:16: error: exception specification of overriding
function is more lax than base version
const char * what() const noexcept override;
^
/Library/Developer/CommandLineTools/usr/include/c++/v1/exception:102:25: note: overridden virtual
function is here
virtual const char* what() const _NOEXCEPT;
^
In file included from /Users/shuai/Greedy/greedy/src/lddmm_data.cxx:27:
In file included from /Users/shuai/Greedy/greedy/src/lddmm_data.h:31:
In file included from /usr/local/include/ITK-5.0/itkNumericTraits.h:21:
In file included from /usr/local/include/ITK-5.0/itkMacro.h:1333:
/usr/local/include/ITK-5.0/itkExceptionObject.h:106:28: error: expected ';' at end of declaration
list
const char * what() const noexcept override;
^
;
/usr/local/include/ITK-5.0/itkExceptionObject.h:171:26: error: expected ';' at end of declaration
list
MemoryAllocationError() noexcept:ExceptionObject() {}
^
;
/usr/local/include/ITK-5.0/itkExceptionObject.h:188:39: warning: 'override' keyword is a C++11
extension [-Wc++11-extensions]
const char * GetNameOfClass() const override
^
/usr/local/include/ITK-5.0/itkExceptionObject.h:202:15: error: expected ';' at end of declaration
list
RangeError() noexcept:ExceptionObject() {}
^
;
/usr/local/include/ITK-5.0/itkExceptionObject.h:213:39: warning: 'override' keyword is a C++11
extension [-Wc++11-extensions]
const char * GetNameOfClass() const override
^
/usr/local/include/ITK-5.0/itkExceptionObject.h:230:25: error: expected ';' at end of declaration
list
InvalidArgumentError() noexcept:ExceptionObject() {}
^
;
/usr/local/include/ITK-5.0/itkExceptionObject.h:245:39: warning: 'override' keyword is a C++11
extension [-Wc++11-extensions]
const char * GetNameOfClass() const override
^
/usr/local/include/ITK-5.0/itkExceptionObject.h:259:30: error: expected ';' at end of declaration
list
IncompatibleOperandsError() noexcept:ExceptionObject() {}
^
;
/usr/local/include/ITK-5.0/itkExceptionObject.h:270:39: warning: 'override' keyword is a C++11
extension [-Wc++11-extensions]
const char * GetNameOfClass() const override
^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
8 warnings and 20 errors generated.
make[2]: *** [CMakeFiles/greedyapi.dir/src/lddmm_data.cxx.o] Error 1
make[1]: *** [CMakeFiles/greedyapi.dir/all] Error 2
make: *** [all] Error 2
Is there a solution to apply transforms (warp and affine matrix) on .stl files?
is there a peer-reviewed citation or similar available?
like above(one slice of a 3d picture)
Is there anything wrong with the parameters?
Here is the .bash file I use. All the .nii file are 3 dimensional picture. 001_Cta.nii is fixed. 2.nii is moved.
~/Greedy/build/greedy -d 3 -a
-i ./CTAs/001_Cta.nii ./CTAs/2.nii
-ia-image-centers
-o affine.mat
-n 100x50x0
-m NCC 2x2x2
~/Greedy/build/greedy -d 3
-rf ./CTAs/001_Cta.nii
-rm ./CTAs/2.nii resliced.nii
-ri LABEL 0.2vox
-r affine.mat
Hi there! I'm trying to upgrade the dependencies of CaPTk, which utilizes greedy. As noted in another greedy issue, I'm running into deprecated/missing itkBarrier.h. Somewhat ominously, it was noted that "there seem to be quite some other issues with compatiblity to ITKv5".
Can I expect greedy to work with ITK 5.1.2 if I address the itkBarrier issue, or are there some fundamental issues that go beyond simple renaming?
Good Day,
Is it possible to save iterations of a registration algorithm? Simply, I want to see each step.
Hi @pyushkevich - just wanted to give an update. I made lots of little changes to get ITK 5.1.2 compiling on this forked branch.
Now the bigger changes need to happen, the threading code needs to change in MultiComponent*ImageMetric.*,
because they use itkBarrier.h. Looking at the ITK5 migration guide, it seems like there is a new strategy for multi-threading.
Could you take a look at the migration guide and let me know what you think the right approach is to refactoring here?
I've been trying to get greedy to build in a docker container but I'm running into errors with isnan
ITK: 4.12.2
greedy: a9fcaac
Dockerfile
FROM ubuntu:18.04
RUN apt-get update && DEBIAN_FRONTEND="noninteractive" apt-get install -y build-essential cmake ninja-build
COPY ITK /ITK
RUN mkdir itk_build;cd itk_build;cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local -DBUILD_TESTING=OFF /ITK;ninja
COPY greedy /greedy
RUN mkdir greedy_build;cd greedy_build; cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local -DITK_DIR=/itk_build /greedy;ninja
ENTRYPOINT [ "bash" ]
ITK builds fine but when it gets to greedy I get error messages like
FAILED: CMakeFiles/greedyapi.dir/src/MultiImageRegistrationHelper.cxx.o
/usr/bin/c++ -DITK_IO_FACTORY_REGISTER_MANAGER -IITKIOFactoryRegistration -I/ITK/Modules/Segmentation/Watersheds/include -I/ITK/Modules/Segmentation/Voronoi/include -I/ITK/Modules/Video/IO/include -I/ITK/Modules/Video/Filtering/include -I/ITK/Modules/Video/Core/include -I/ITK/Modules/Bridge/VTK/include -I/ITK/Modules/Core/TestKernel/include -I/ITK/Modules/Filtering/SpatialFunction/include -I/ITK/Modules/Registration/RegistrationMethodsv4/include -I/ITK/Modules/Segmentation/RegionGrowing/include -I/ITK/Modules/Filtering/QuadEdgeMeshFiltering/include -I/ITK/Modules/Numerics/NeuralNetworks/include -I/ITK/Modules/Registration/Metricsv4/include -I/ITK/Modules/Numerics/Optimizersv4/include -I/ITK/Modules/Segmentation/MarkovRandomFieldsClassifiers/include -I/ITK/Modules/Segmentation/LevelSetsv4/include -I/ITK/Modules/Segmentation/LabelVoting/include -I/ITK/Modules/Segmentation/KLMRegionGrowing/include -I/ITK/Modules/Filtering/ImageNoise/include -I/ITK/Modules/Filtering/ImageFusion/include -I/ITK/Modules/IO/VTK/include -I/ITK/Modules/IO/TransformMatlab/include -I/ITK/Modules/IO/TransformInsightLegacy/include -I/ITK/Modules/IO/TransformHDF5/include -I/ITK/Modules/IO/TransformBase/include -I/ITK/Modules/IO/TransformFactory/include -I/ITK/Modules/IO/Stimulate/include -I/ITK/Modules/IO/Siemens/include -I/ITK/Modules/IO/RAW/include -I/ITK/Modules/IO/PNG/include -I/ITK/Modules/ThirdParty/PNG/src -I/itk_build/Modules/ThirdParty/PNG/src -I/ITK/Modules/IO/NRRD/include -I/ITK/Modules/ThirdParty/NrrdIO/src/NrrdIO -I/itk_build/Modules/ThirdParty/NrrdIO/src/NrrdIO -I/ITK/Modules/IO/NIFTI/include -I/ITK/Modules/IO/Meta/include -I/ITK/Modules/IO/Mesh/include -I/ITK/Modules/IO/MRC/include -I/ITK/Modules/IO/LSM/include -I/ITK/Modules/IO/TIFF/include -I/ITK/Modules/ThirdParty/TIFF/src -I/itk_build/Modules/ThirdParty/TIFF/src/itktiff -I/itk_build/Modules/ThirdParty/TIFF/src -I/ITK/Modules/IO/JPEG/include -I/ITK/Modules/ThirdParty/JPEG/src -I/itk_build/Modules/ThirdParty/JPEG/src -I/ITK/Modules/IO/HDF5/include -I/ITK/Modules/IO/GIPL/include -I/ITK/Modules/IO/GE/include -I/ITK/Modules/IO/IPL/include -I/ITK/Modules/IO/GDCM/include -I/ITK/Modules/IO/CSV/include -I/ITK/Modules/IO/BioRad/include -I/ITK/Modules/IO/BMP/include -I/itk_build/Modules/ThirdParty/HDF5/src -I/ITK/Modules/ThirdParty/HDF5/src -I/ITK/Modules/Filtering/GPUThresholding/include -I/ITK/Modules/Filtering/GPUSmoothing/include -I/ITK/Modules/Registration/GPUPDEDeformable/include -I/ITK/Modules/Registration/GPUCommon/include -I/ITK/Modules/Filtering/GPUImageFilterBase/include -I/ITK/Modules/Filtering/GPUAnisotropicSmoothing/include -I/ITK/Modules/Core/GPUFiniteDifference/include -I/ITK/Modules/Core/GPUCommon/include -I/ITK/Modules/ThirdParty/GIFTI/src/gifticlib -I/ITK/Modules/ThirdParty/NIFTI/src/nifti/znzlib -I/ITK/Modules/ThirdParty/NIFTI/src/nifti/niftilib -I/ITK/Modules/ThirdParty/GDCM/src/gdcm/Source/DataStructureAndEncodingDefinition -I/ITK/Modules/ThirdParty/GDCM/src/gdcm/Source/MessageExchangeDefinition -I/ITK/Modules/ThirdParty/GDCM/src/gdcm/Source/InformationObjectDefinition -I/ITK/Modules/ThirdParty/GDCM/src/gdcm/Source/Common -I/ITK/Modules/ThirdParty/GDCM/src/gdcm/Source/DataDictionary -I/ITK/Modules/ThirdParty/GDCM/src/gdcm/Source/MediaStorageAndFileFormat -I/itk_build/Modules/ThirdParty/GDCM/src/gdcm/Source/Common -I/itk_build/Modules/ThirdParty/GDCM -I/ITK/Modules/Registration/FEM/include -I/ITK/Modules/Registration/PDEDeformable/include -I/ITK/Modules/Numerics/FEM/include -I/ITK/Modules/Registration/Common/include -I/ITK/Modules/IO/SpatialObjects/include -I/ITK/Modules/IO/XML/include -I/ITK/Modules/ThirdParty/Expat/src/expat -I/itk_build/Modules/ThirdParty/Expat/src/expat -I/ITK/Modules/Numerics/Eigen/include -I/ITK/Modules/Filtering/DisplacementField/include -I/ITK/Modules/Filtering/DiffusionTensorImage/include -I/ITK/Modules/Filtering/Denoising/include -I/ITK/Modules/Segmentation/DeformableMesh/include -I/ITK/Modules/Filtering/Deconvolution/include -I/ITK/Modules/ThirdParty/DICOMParser/src/DICOMParser -I/itk_build/Modules/ThirdParty/DICOMParser/src/DICOMParser -I/ITK/Modules/Filtering/Convolution/include -I/ITK/Modules/Filtering/FFT/include -I/ITK/Modules/Filtering/Colormap/include -I/ITK/Modules/Segmentation/Classifiers/include -I/ITK/Modules/Segmentation/BioCell/include -I/ITK/Modules/Filtering/BiasCorrection/include -I/ITK/Modules/Numerics/Polynomials/include -I/ITK/Modules/Filtering/AntiAlias/include -I/ITK/Modules/Segmentation/LevelSets/include -I/ITK/Modules/Segmentation/SignedDistanceFunction/include -I/ITK/Modules/Numerics/Optimizers/include -I/ITK/Modules/Filtering/ImageFeature/include -I/ITK/Modules/Filtering/ImageSources/include -I/ITK/Modules/Filtering/ImageGradient/include -I/ITK/Modules/Filtering/Smoothing/include -I/ITK/Modules/Filtering/ImageCompare/include -I/ITK/Modules/IO/ImageBase/include -I/itk_build/Modules/IO/ImageBase -I/ITK/Modules/Filtering/FastMarching/include -I/ITK/Modules/Core/QuadEdgeMesh/include -I/ITK/Modules/Filtering/DistanceMap/include -I/ITK/Modules/Numerics/NarrowBand/include -I/ITK/Modules/Filtering/ImageLabel/include -I/ITK/Modules/Filtering/BinaryMathematicalMorphology/include -I/ITK/Modules/Filtering/MathematicalMorphology/include -I/ITK/Modules/Segmentation/ConnectedComponents/include -I/ITK/Modules/Filtering/Thresholding/include -I/ITK/Modules/Filtering/ImageIntensity/include -I/ITK/Modules/Filtering/Path/include -I/ITK/Modules/Filtering/ImageStatistics/include -I/ITK/Modules/Core/SpatialObjects/include -I/ITK/Modules/ThirdParty/MetaIO/src/MetaIO/src -I/itk_build/Modules/ThirdParty/MetaIO/src/MetaIO/src -I/ITK/Modules/ThirdParty/ZLIB/src -I/itk_build/Modules/ThirdParty/ZLIB/src -I/ITK/Modules/Core/Mesh/include -I/ITK/Modules/Filtering/ImageCompose/include -I/ITK/Modules/Filtering/LabelMap/include -I/ITK/Modules/Filtering/AnisotropicSmoothing/include -I/ITK/Modules/Filtering/ImageGrid/include -I/ITK/Modules/Core/ImageFunction/include -I/ITK/Modules/Core/Transform/include -I/ITK/Modules/Numerics/Statistics/include -I/itk_build/Modules/ThirdParty/Netlib -I/ITK/Modules/Core/ImageAdaptors/include -I/ITK/Modules/Filtering/CurvatureFlow/include -I/ITK/Modules/Filtering/ImageFilterBase/include -I/ITK/Modules/Core/FiniteDifference/include -I/ITK/Modules/Core/Common/include -I/itk_build/Modules/Core/Common -I/ITK/Modules/ThirdParty/VNLInstantiation/include -I/itk_build/Modules/ThirdParty/VNL/src/vxl/core -I/itk_build/Modules/ThirdParty/VNL/src/vxl/vcl -I/itk_build/Modules/ThirdParty/VNL/src/vxl/v3p/netlib -I/ITK/Modules/ThirdParty/VNL/src/vxl/core -I/ITK/Modules/ThirdParty/VNL/src/vxl/vcl -I/ITK/Modules/ThirdParty/VNL/src/vxl/v3p/netlib -I/itk_build/Modules/ThirdParty/KWSys/src -I/ITK/Modules/ThirdParty/KWIML/src -I/itk_build/Modules/ThirdParty/KWIML/src -I/itk_build/Modules/ThirdParty/DoubleConversion/src/double-conversion -I/ITK/Modules/ThirdParty/DoubleConversion/src/double-conversion -I/greedy/src -I/greedy/src/ITKFilters/include -I. -O3 -DNDEBUG -std=gnu++1z -MD -MT CMakeFiles/greedyapi.dir/src/MultiImageRegistrationHelper.cxx.o -MF CMakeFiles/greedyapi.dir/src/MultiImageRegistrationHelper.cxx.o.d -o CMakeFiles/greedyapi.dir/src/MultiImageRegistrationHelper.cxx.o -c /greedy/src/MultiImageRegistrationHelper.cxx
/greedy/src/MultiImageRegistrationHelper.cxx: In instantiation of 'void MultiImageOpticalFlowHelper<TFloat, VDim>::BuildCompositeImages(double) [with TFloat = float; unsigned int VDim = 2]':
/greedy/src/MultiImageRegistrationHelper.cxx:1267:16: required from here
/greedy/src/MultiImageRegistrationHelper.cxx:254:27: error: 'isnan' was not declared in this scope
nans_fixed = isnan(LDDMMType::img_voxel_sum(fltExtractFixed->GetOutput()));
~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/greedy/src/MultiImageRegistrationHelper.cxx:254:27: note: suggested alternatives:
In file included from /usr/include/c++/7/complex:44:0,
from /ITK/Modules/Core/Common/include/itkNumericTraits.h:54,
from /ITK/Modules/Core/Common/include/itkConceptChecking.h:32,
from /ITK/Modules/Core/Common/include/itkAtomicIntDetail.h:39,
from /ITK/Modules/Core/Common/include/itkAtomicInt.h:38,
from /ITK/Modules/Core/Common/include/itkTimeStamp.h:33,
from /ITK/Modules/Core/Common/include/itkLightObject.h:23,
from /ITK/Modules/Core/Common/include/itkObject.h:31,
from /ITK/Modules/Core/Common/include/itkDataObject.h:31,
from /ITK/Modules/Core/Common/include/itkImageBase.h:31,
from /greedy/src/MultiImageRegistrationHelper.h:30,
from /greedy/src/MultiImageRegistrationHelper.cxx:27:
full log:
build.log
https://github.com/InsightSoftwareConsortium/ITK/blob/af3d6c52303c61eb078c2ae7a063164b8aaa1ed2/Modules/Compatibility/Deprecated/src/itkBarrier.cxx - think this breaks the greedy compilation.
The documentation says I can do
greedy -d 3 -s 1.5x1.8x2.0vox 0.2vox ...
but the argument to -s
is read as a scalar, so it fails.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.