20 import SimpleITK
as sitk
25 def command_iteration(filter):
26 print(f
"{filter.GetElapsedIterations():3} = {filter.GetMetric():10.5f}")
33 "<fixedImageFilter> <movingImageFile>",
34 "[initialTransformFile] <outputTransformFile>",
43 if fixed.GetPixelID()
in (sitk.sitkUInt8, sitk.sitkInt8):
44 matcher.SetNumberOfHistogramLevels(128)
46 matcher.SetNumberOfHistogramLevels(1024)
47 matcher.SetNumberOfMatchPoints(7)
48 matcher.ThresholdAtMeanIntensityOn()
49 moving = matcher.Execute(moving, fixed)
55 demons.SetNumberOfIterations(200)
57 demons.SetStandardDeviations(1.0)
59 demons.AddCommand(sitk.sitkIterationEvent,
lambda: command_iteration(demons))
63 sys.argv[-1] = sys.argv.pop()
66 toDisplacementFilter.SetReferenceImage(fixed)
68 displacementField = toDisplacementFilter.Execute(initialTransform)
70 displacementField = demons.Execute(fixed, moving, displacementField)
74 displacementField = demons.Execute(fixed, moving)
77 print(f
"Number Of Iterations: {demons.GetElapsedIterations()}")
78 print(f
" RMS: {demons.GetRMSChange()}")
84 if "SITK_NOSHOW" not in os.environ:
86 resampler.SetReferenceImage(fixed)
87 resampler.SetInterpolator(sitk.sitkLinear)
88 resampler.SetDefaultPixelValue(100)
89 resampler.SetTransform(outTx)
91 out = resampler.Execute(moving)
94 cimg =
sitk.Compose(simg1, simg2, simg1 // 2.0 + simg2 // 2.0)
95 sitk.Show(cimg,
"DeformableRegistration1 Composition")