Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

How to minimise non-rigid distortion when using groupwise registration #270

Closed
Pedro-Filipe opened this issue Jan 24, 2024 · 3 comments
Closed

Comments

@Pedro-Filipe
Copy link

Hi,

I need to register some cardiac MR data (10 grayscale 2D images with 256x96 pixels), and I am trying to avoid having to select a reference image by using a groupwise registration method. The current problem I am facing is that the data, although well registered is significantly distorted.

Any suggestions on what parameters I should tweak first to minimise non-rigid distortions when using groupwise registration?

I am a bit lost with all the recipes and parameters, and everything feels like a dark art at the moment. I don't seem to be able to use the metric "TransformBendingEnergyPenalty" when doing groupwise registration.

I cannot show an example as this is clinical data, but I can list my current recipe:

(AutomaticParameterEstimation "true")
(CheckNumberOfSamples "true")
(DefaultPixelValue 0)
(FinalBSplineInterpolationOrder 3)
(FinalGridSpacingInVoxels  16)
(FixedImagePyramid "FixedSmoothingImagePyramid")
(GridSpacingSchedule 2.803221 1.988100 1.410000 1.000000)
(ImageSampler "RandomCoordinate")
(Interpolator "ReducedDimensionBSplineInterpolator")
(MaximumNumberOfIterations 256)
(MaximumNumberOfSamplingAttempts 8)
(MovingImagePyramid "MovingSmoothingImagePyramid")
(NewSamplesEveryIteration "true")
(NumberOfResolutions 4)
(NumberOfSamplesForExactGradient 4096)
(NumberOfSpatialSamples 2048)
(Optimizer "AdaptiveStochasticGradientDescent")
(Registration "MultiResolutionRegistration")
(ResampleInterpolator "FinalReducedDimensionBSplineInterpolator")
(Resampler "DefaultResampler")
(ResultImageFormat "nii")
(Transform "BSplineStackTransform")
(WriteIterationInfo "false")
(WriteResultImage "true")

//Choose one of the following groupwise metrics:
//(Metric "PCAMetric2")
//(Metric "PCAMetric")
//(Metric "LinearGroupwiseMI")
//(Metric "SumOfPairwiseCorrelationCoefficientsMetric")
(Metric "VarianceOverLastDimensionMetric")

////Specific for the LinearGroupwiseMI metric
//(TemplateImage "ArithmeticAverage" "ArithmeticAverage")
//(Combination "Sum" "Sum")
//(UseFastAndLowMemoryVersion "true")
//(NumberOfFixedHistogramBins 32)
//(NumberOfMovingHistogramBins 32)

////Specific for the PCAMetric
//(NumEigenValues 7)

Many thanks.

@Darius888
Copy link

Hello @Pedro-Filipe, did you find an answer to this ? I'm facing a similar problem: I would like to do group wise registration of a 4DCT (10 breathing phases of shape 128,128,128).

@Pedro-Filipe
Copy link
Author

Hi.

Empirically I found that these two changes below helped with minimising geometric distortions:

Changing
(Metric "VarianceOverLastDimensionMetric")
to
(Metric "PCAMetric2")

Changing
(FinalGridSpacingInVoxels 16)
to
(FinalGridSpacingInVoxels 64)

I hope it helps.

@Darius888
Copy link

Thank you!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants