# similarity metrics in mono-modality registration

**URL:** https://discourse.itk.org/t/similarity-metrics-in-mono-modality-registration/7493
**Category:** Beginner Questions
**Created:** [April 13, 2025, 5:02pm UTC](https://discourse.itk.org/t/similarity-metrics-in-mono-modality-registration/7493 "2025-04-13T17:02:56Z")
**Posts on this page:** 2
**Page:** 1

<div class="post-metadata">

### Author: ![blue\_sky](https://discourse.itk.org/letter_avatar_proxy/v4/letter/b/dbc845/32.png) [@blue\_sky](https://discourse.itk.org/u/blue_sky)
#### Post date: [April 13, 2025, 5:02pm UTC](https://discourse.itk.org/t/similarity-metrics-in-mono-modality-registration/7493/1 "2025-04-13T17:02:56Z")

</div>

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

```

---

<div class="post-metadata">

### Author: ![zivy](https://discourse.itk.org/user_avatar/discourse.itk.org/zivy/32/1726_2.png) [@zivy](https://discourse.itk.org/u/zivy)
#### Post date: [April 13, 2025, 8:48pm UTC](https://discourse.itk.org/t/similarity-metrics-in-mono-modality-registration/7493/2 "2025-04-13T20:48:07Z")

</div>

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](https://citeseerx.ist.psu.edu/document?repid=rep1&type=pdf&doi=929f5e30e0d02d9e72b7933ab88cdd0def9b4323).

Then go over the [SimpleITK Tutorial](https://simpleitk.org/TUTORIAL/). Finally, for a comprehensive overview of SimpleITK registration functionality, possibly go over the [SimpleITK notebook repository](https://github.com/InsightSoftwareConsortium/SimpleITK-Notebooks), specifically the registration series of notebooks **6** \*.
