static void Main(string[] args) { if (args.Length < 3) { Console.WriteLine("Usage: %s <fixedImageFilter> <movingImageFile> <outputTransformFile>\n", "ImageRegistrationMethod2"); return; } ImageFileReader reader = new ImageFileReader(); reader.SetOutputPixelType(PixelIDValueEnum.sitkFloat32); reader.SetFileName(args[0]); Image fixedImage = reader.Execute(); fixedImage = SimpleITK.Normalize(fixedImage); SimpleITK.DiscreteGaussian(fixedImage, 2.0); reader.SetFileName(args[1]); Image movingImage = reader.Execute(); movingImage = SimpleITK.Normalize(movingImage); movingImage = SimpleITK.DiscreteGaussian(movingImage, 2.0); ImageRegistrationMethod R = new ImageRegistrationMethod(); R.SetMetricAsJointHistogramMutualInformation(); double learningRate = 1; uint numberOfIterations = 200; double convergenceMinimumValue = 1e-4; uint convergenceWindowSize = 5; R.SetOptimizerAsGradientDescentLineSearch(learningRate, numberOfIterations, convergenceMinimumValue, convergenceWindowSize); R.SetInitialTransform(new TranslationTransform(fixedImage.GetDimension())); R.SetInterpolator(InterpolatorEnum.sitkLinear); IterationUpdate cmd = new IterationUpdate(R); R.AddCommand(EventEnum.sitkIterationEvent, cmd); Transform outTx = R.Execute(fixedImage, movingImage); outTx.WriteTransform(args[2]); }
static void Main(string[] args) { if (args.Length < 3) { Console.WriteLine("Usage: %s <fixedImageFilter> <movingImageFile> <outputTransformFile>\n", "ImageRegistrationMethod1"); return; } ImageFileReader reader = new ImageFileReader(); reader.SetOutputPixelType(PixelIDValueEnum.sitkFloat32); reader.SetFileName(args[0]); Image fixedImage = reader.Execute(); reader.SetFileName(args[1]); Image movingImage = reader.Execute(); ImageRegistrationMethod R = new ImageRegistrationMethod(); R.SetMetricAsMeanSquares(); double maxStep = 4.0; double minStep = 0.01; uint numberOfIterations = 200; double relaxationFactor = 0.5; R.SetOptimizerAsRegularStepGradientDescent(maxStep, minStep, numberOfIterations, relaxationFactor); R.SetInitialTransform(new TranslationTransform(fixedImage.GetDimension())); R.SetInterpolator(InterpolatorEnum.sitkLinear); IterationUpdate cmd = new IterationUpdate(R); R.AddCommand(EventEnum.sitkIterationEvent, cmd); Transform outTx = R.Execute(fixedImage, movingImage); // System.out.println("-------"); // System.out.println(outTx.toString()); // System.out.format("Optimizer stop condition: %s\n", R.getOptimizerStopConditionDescription()); // System.out.format(" Iteration: %d\n", R.getOptimizerIteration()); // System.out.format(" Metric value: %f\n", R.getMetricValue()); outTx.WriteTransform(args[2]); }
static void Main(string[] args) { if ( args.Length < 3 ) { Console.WriteLine("Usage: %s <fixedImageFilter> <movingImageFile> <outputTransformFile>\n", "ImageRegistrationMethod1"); return; } ImageFileReader reader = new ImageFileReader(); reader.SetOutputPixelType( PixelIDValueEnum.sitkFloat32 ); reader.SetFileName(args[0]); Image fixedImage = reader.Execute(); reader.SetFileName(args[1]); Image movingImage = reader.Execute(); ImageRegistrationMethod R = new ImageRegistrationMethod(); R.SetMetricAsMeanSquares(); double maxStep = 4.0; double minStep = 0.01; uint numberOfIterations = 200; double relaxationFactor = 0.5; R.SetOptimizerAsRegularStepGradientDescent( maxStep, minStep, numberOfIterations, relaxationFactor ); R.SetInitialTransform( new TranslationTransform( fixedImage.GetDimension() ) ); R.SetInterpolator( InterpolatorEnum.sitkLinear ); IterationUpdate cmd = new IterationUpdate(R); R.AddCommand(EventEnum.sitkIterationEvent, cmd); Transform outTx = R.Execute( fixedImage, movingImage ); // System.out.println("-------"); // System.out.println(outTx.toString()); // System.out.format("Optimizer stop condition: %s\n", R.getOptimizerStopConditionDescription()); // System.out.format(" Iteration: %d\n", R.getOptimizerIteration()); // System.out.format(" Metric value: %f\n", R.getMetricValue()); outTx.WriteTransform(args[2]); }