Jakob Guldberg Aaes
unread,Jan 18, 2021, 7:46:40 AM1/18/21Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to elastix-imageregistration
I have finally been able to compile elastix with the OpenCL features after compiling the right ITK (5.1.1) and OpenCL. But when I run elastix with my images and masks with OpenCL features enabled in the config file it fails with the following error
```
Initialization of AdvancedMattesMutualInformation metric took: 0 ms.
Time spent in resolution 0 (ITK initialization and iterating): 0.001 s.
Stopping condition: Error in metric.
itk::ExceptionObject (0x7fcc68001540)
Location: "ElastixTemplate - Run()"
File: /home/fuzie/Documents/Speciale/code/elastix-build/InsightToolkit-5.1.1/Modules/Core/Common/include/itkImageConstIterator.h
Line: 210
Description: itk::ERROR: Region ImageRegion (0x7ffdc32ad8b0)
Dimension: 2
Index: [-9223372036854775808, 29]
Size: [4, 2]
is outside of buffered region ImageRegion (0x55794bfad4d0)
Dimension: 2
Index: [0, 0]
Size: [32, 32]
Error occurred during actual registration.
Errors occurred!
```
When I run it purely on CPU it works just fine.
The parameters I use are the following
```
// ********** Image Types
(FixedInternalImagePixelType "float")
(FixedImageDimension 3)
(MovingInternalImagePixelType "float")
(MovingImageDimension 3)
(UseBinaryFormatForTransformationParameters "false")
// ********** Components
(Registration "MultiResolutionRegistration")
// // CPU - pyramids
// (FixedImagePyramid "FixedSmoothingImagePyramid")
// (MovingImagePyramid "MovingSmoothingImagePyramid")
// GPU pyramids
(FixedImagePyramid "OpenCLFixedGenericImagePyramid")
(MovingImagePyramid "OpenCLMovingGenericImagePyramid")
(OpenCLFixedGenericImagePyramidUseOpenCL "true")
(OpenCLMovingGenericImagePyramidUseOpenCL "true")
(Interpolator "BSplineInterpolator")
(Metric "AdvancedMattesMutualInformation")
(Optimizer "StandardGradientDescent")
(ResampleInterpolator "FinalBSplineInterpolator")
(Transform "BSplineTransform")
(UseDirectionCosines "false")
// ********** Pyramid
// Total number of resolutions
(NumberOfResolutions 8)
// default schedule: isotropic upsampling with factor 2
// ********** Transform
(FinalGridSpacingInPhysicalUnits 12.0 12.0 12.0)
(GridSpacingSchedule 16.0 16.0 16.0 16.0 8.0 4.0 2.0 1.0)
(HowToCombineTransforms "Compose")
// ********** Optimizer
// Maximum number of iterations in each resolution level:
(MaximumNumberOfIterations 1000)
//SP: Param_a in each resolution level. a_k = a/(A+k+1)^alpha
(SP_a 10000.0)
//SP: Param_alpha in each resolution level. a_k = a/(A+k+1)^alpha
(SP_alpha 0.602)
//SP: Param_A in each resolution level. a_k = a/(A+k+1)^alpha
(SP_A 50.0)
// ********** Metric
//Number of grey level bins in each resolution level:
(NumberOfHistogramBins 32)
(FixedLimitRangeRatio 0.0)
(MovingLimitRangeRatio 0.0)
(FixedKernelBSplineOrder 1)
(MovingKernelBSplineOrder 3)
// ********** Several
(WriteTransformParametersEachIteration "false")
(WriteTransformParametersEachResolution "false")
(WriteResultImageAfterEachResolution "false")
(WriteResultImage "false")
(ShowExactMetricValue "false")
(ErodeMask "false")
// ********** ImageSampler
//Number of spatial samples used to compute the mutual information in each resolution level:
(ImageSampler "RandomSparseMask")
(NumberOfSpatialSamples 2000)
(NewSamplesEveryIteration "true")
(UseRandomSampleRegion "false")
// ********** Interpolator and Resampler
//Order of B-Spline interpolation used in each resolution level:
(BSplineInterpolationOrder 1)
//Order of B-Spline interpolation used for applying the final deformation:
(FinalBSplineInterpolationOrder 3)
//Default pixel value for pixels that come from outside the picture:
(DefaultPixelValue -1000)
// Resampler specific
// (Resampler "DefaultResampler")
(Resampler "OpenCLResampler")
(OpenCLResamplerUseOpenCL "true")
(ResultImageFormat "nii")
(ResultImagePixelType "float")
(CompressResultImage "true")
```
Any idea how this can be solved?
Best regards
Jakob