20 import SimpleITK
as sitk
25 def command_iteration(filter):
26 print(f
"{filter.GetElapsedIterations():3} = {filter.GetMetric():10.5f}")
30 print(
"Usage:", sys.argv[0],
"<fixedImageFilter> <movingImageFile>",
31 "[initialTransformFile] <outputTransformFile>")
39 if (fixed.GetPixelID()
in (sitk.sitkUInt8, sitk.sitkInt8)):
40 matcher.SetNumberOfHistogramLevels(128)
42 matcher.SetNumberOfHistogramLevels(1024)
43 matcher.SetNumberOfMatchPoints(7)
44 matcher.ThresholdAtMeanIntensityOn()
45 moving = matcher.Execute(moving, fixed)
51 demons.SetNumberOfIterations(200)
53 demons.SetStandardDeviations(1.0)
55 demons.AddCommand(sitk.sitkIterationEvent,
lambda: command_iteration(demons))
59 sys.argv[-1] = sys.argv.pop()
62 toDisplacementFilter.SetReferenceImage(fixed)
64 displacementField = toDisplacementFilter.Execute(initialTransform)
66 displacementField = demons.Execute(fixed, moving, displacementField)
70 displacementField = demons.Execute(fixed, moving)
73 print(f
"Number Of Iterations: {demons.GetElapsedIterations()}")
74 print(f
" RMS: {demons.GetRMSChange()}")
80 if (
"SITK_NOSHOW" not in os.environ):
82 resampler.SetReferenceImage(fixed)
83 resampler.SetInterpolator(sitk.sitkLinear)
84 resampler.SetDefaultPixelValue(100)
85 resampler.SetTransform(outTx)
87 out = resampler.Execute(moving)
90 cimg =
sitk.Compose(simg1, simg2, simg1 // 2. + simg2 // 2.)
91 sitk.Show(cimg,
"DeformableRegistration1 Composition")