コード例 #1
0
        /// <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);
        }