similarity metrics in mono-modality registration

Hi everyone. I am beginner in registration. The below code is part of the code related to SimpleITK Examples. It seems that this code is written for images with different modalities. But I want to register two CT images together.

transformDomainMeshSize = [10] * moving.GetDimension()
tx = sitk.BSplineTransformInitializer(fixed, transformDomainMeshSize)
R = sitk.ImageRegistrationMethod()
R.SetMetricAsMattesMutualInformation(50)
R.SetOptimizerAsGradientDescentLineSearch(
5.0, 100, convergenceMinimumValue=1e-4, convergenceWindowSize=5)
R.SetOptimizerScalesFromPhysicalShift()
R.SetInitialTransform(tx)

R.SetInterpolator(sitk.sitkLinear)

R.SetShrinkFactorsPerLevel([6, 2, 1])
R.SetSmoothingSigmasPerLevel([6, 2, 1])

The similarity metrics and optimizers I was able to find are the following, but I don’t know which one I can use for mono-modality registration. Can you help me?
Thanks a lot

R.SetMetricAsANTSNeighborhoodCorrelation
R.SetMetricAsCorrelation
R.SetMetricAsDemons
R.SetMetricAsJointHistogramMutualInformation
R.SetMetricAsMattesMutualInformation
R.SetMetricAsMeanSquares


R.SetOptimizerAsAmoeba
R.SetOptimizerAsConjugateGradientLineSearch
R.SetOptimizerAsExhaustive
R.SetOptimizerAsGradientDescent
R.SetOptimizerAsGradientDescentLineSearch
R.SetOptimizerAsLBFGS2
R.SetOptimizerAsLBFGSB
R.SetOptimizerAsOnePlusOneEvolutionary
R.SetOptimizerAsPowell
R.SetOptimizerAsRegularStepGradientDescent

Hello @blue_sky,

TL;DR
The relevant metrics are mean-squares and correlation. The latter provides some robustness if the CT isn’t calibrated well, same tissue has different Hounsfield Units across machines. With respect to optimizer, GradientDescent should work well.

Long answer:
First, gain an understanding of the principals underlying classical registration. Read a classic overview such as “Image Registration”, ch. 8, Handbook of Medical Imaging vol. 2, Fitzpatrick, Hill and Maurer Jr., online pdf.

Then go over the SimpleITK Tutorial. Finally, for a comprehensive overview of SimpleITK registration functionality, possibly go over the SimpleITK notebook repository, specifically the registration series of notebooks 6*.