/// <summary> /// Execute rigid registration. /// </summary> /// <returns></returns> public override object Execute() { if (fixedImage != null && movingImage != null) { //ReadWriteUtils.WriteSitkImage(fixedImage, ApplicationContext.OutputPath + "\\beforeBin_fixed.png"); //ReadWriteUtils.WriteSitkImage(movingImage, ApplicationContext.OutputPath + "\\beforeBin_moving.png"); // set parameter vector here? elastix.SetParameterMap(parameterMap); // only use when kappa statistics is used as metric if (registrationParameters.RigidOptions != MaskedRigidRegistrationOptions.None) { fixedImage = ImageUtils.Binarize(fixedImage); movingImage = ImageUtils.Binarize(movingImage); } // set fixed and moving images elastix.AddFixedImage(fixedImage); if (fixedMask != null) { elastix.SetFixedMask(fixedMask); AddParameter(Constants.cFixedImagePyramid, ImagePyramid.FixedSmoothingImagePyramid); } elastix.AddMovingImage(movingImage); if (movingMask != null) { elastix.SetMovingMask(movingMask); AddParameter(Constants.cMovingImagePyramid, ImagePyramid.MovingSmoothingImagePyramid); } elastix.WriteParameterFile(parameterMap, Path.Combine(outputDirectory, "parameters.txt")); try { transformedImage = elastix.Execute(); } catch (Exception ex) { Console.WriteLine("Exception occurred during elastix registration: "); Console.WriteLine(ex); return(ex.Message); } } return(null); }