private void TransformPointSet(sitk.Transform transform, ref List <CoordPoint> pointSetDict)
 {
     if (transform != null)
     {
         foreach (CoordPoint point in pointSetDict)
         {
             sitk.VectorDouble vec = new sitk.VectorDouble();
             vec.Add(point.X);
             vec.Add(point.Y);
             vec.Add(0);
             sitk.VectorDouble resultVec = transform.TransformPoint(vec);
             point.X = resultVec[0];
             point.Y = resultVec[1];
         }
     }
 }
        /// <summary>
        /// Resize image an get image transform.
        /// </summary>
        /// <param name="image">image</param>
        /// <param name="newWidth">width</param>
        /// <param name="newHeight">height</param>
        /// <param name="transform">out param transform</param>
        /// <returns>resampled image</returns>
        public static sitk.Image ResizeImage(sitk.Image image, uint newWidth, uint newHeight, out sitk.Transform transform)
        {
            transform = null;
            if (image.GetWidth() == newWidth && image.GetHeight() == newHeight)
            {
                return(image);
            }

            sitk.VectorUInt32 vec = new sitk.VectorUInt32();
            vec.Add(newWidth);
            vec.Add(newHeight);

            sitk.ResampleImageFilter resampleFilter = new sitk.ResampleImageFilter();
            resampleFilter.SetSize(vec);
            resampleFilter.SetOutputOrigin(image.GetOrigin());
            resampleFilter.SetOutputDirection(image.GetDirection());
            resampleFilter.SetOutputSpacing(image.GetSpacing());
            resampleFilter.SetOutputPixelType(image.GetPixelID());
            resampleFilter.SetDefaultPixelValue(255.0);
            sitk.Image resultImage = resampleFilter.Execute(image);
            transform = resampleFilter.GetTransform();

            return(resultImage);
        }
 /// <summary>
 /// Create a displacement field image by the transformation parameters.
 /// (Save as .mhd afterwards)
 /// </summary>
 /// <param name="image">image</param>
 /// <param name="transform">transform parameters</param>
 /// <returns>displacement field image</returns>
 public static sitk.Image GetDisplacementFieldFromTransformation(sitk.Image image, sitk.Transform transform)
 {
     sitk.TransformToDisplacementFieldFilter filter = new sitk.TransformToDisplacementFieldFilter();
     filter.SetReferenceImage(image);
     filter.SetOutputPixelType(sitk.PixelIDValueEnum.sitkUInt8);
     filter.SetOutputOrigin(image.GetOrigin());
     filter.SetOutputDirection(image.GetDirection());
     filter.SetOutputSpacing(image.GetSpacing());
     return(filter.Execute(transform));
 }