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)); }