MCPcopy Create free account
hub / github.com/SimpleITK/SimpleITK / main

Function main

Examples/ImageRegistrationMethod2/ImageRegistrationMethod2.py:37–95  ·  view source on GitHub ↗

A SimpleITK example demonstrating image registration with histogram mutual information as a similarity measure.

(args)

Source from the content-addressed store, hash-verified

35
36
37def main(args):
38 """ A SimpleITK example demonstrating image registration with histogram
39 mutual information as a similarity measure. """
40 if len(args) < 3:
41 print(
42 "Usage:",
43 "ImageRegistrationMethod2",
44 "<fixedImageFilter> <movingImageFile> <outputTransformFile>",
45 )
46 sys.exit(1)
47
48 fixed = sitk.ReadImage(args[1], sitk.sitkFloat32)
49 fixed = sitk.Normalize(fixed)
50 fixed = sitk.DiscreteGaussian(fixed, 2.0)
51
52 moving = sitk.ReadImage(args[2], sitk.sitkFloat32)
53 moving = sitk.Normalize(moving)
54 moving = sitk.DiscreteGaussian(moving, 2.0)
55
56 R = sitk.ImageRegistrationMethod()
57
58 R.SetMetricAsJointHistogramMutualInformation()
59
60 R.SetOptimizerAsGradientDescentLineSearch(
61 learningRate=1.0,
62 numberOfIterations=200,
63 convergenceMinimumValue=1e-5,
64 convergenceWindowSize=5,
65 )
66
67 R.SetInitialTransform(sitk.TranslationTransform(fixed.GetDimension()))
68
69 R.SetInterpolator(sitk.sitkLinear)
70
71 R.AddCommand(sitk.sitkIterationEvent, lambda: command_iteration(R))
72
73 outTx = R.Execute(fixed, moving)
74
75 print("-------")
76 print(outTx)
77 print(f"Optimizer stop condition: {R.GetOptimizerStopConditionDescription()}")
78 print(f" Iteration: {R.GetOptimizerIteration()}")
79 print(f" Metric value: {R.GetMetricValue()}")
80
81 sitk.WriteTransform(outTx, args[3])
82
83 resampler = sitk.ResampleImageFilter()
84 resampler.SetReferenceImage(fixed)
85 resampler.SetInterpolator(sitk.sitkLinear)
86 resampler.SetDefaultPixelValue(1)
87 resampler.SetTransform(outTx)
88
89 out = resampler.Execute(moving)
90
91 simg1 = sitk.Cast(sitk.RescaleIntensity(fixed), sitk.sitkUInt8)
92 simg2 = sitk.Cast(sitk.RescaleIntensity(out), sitk.sitkUInt8)
93 cimg = sitk.Compose(simg1, simg2, simg1 // 2.0 + simg2 // 2.0)
94

Callers 1

Calls 15

SetInitialTransformMethod · 0.95
ExecuteMethod · 0.95
GetOptimizerIterationMethod · 0.95
GetMetricValueMethod · 0.95
TranslationTransformMethod · 0.80
SetInterpolatorMethod · 0.80
AddCommandMethod · 0.80
WriteTransformMethod · 0.80

Tested by

no test coverage detected