private Image ApplyCastImageFilter(Image image) { Ensure.ArgumentNotNull(image, nameof(image)); // TODO: find mapping between itk.simple.PixelIDValueEnum and System.Drawing.Imaging.PixelFormat // see https://github.com/SimpleITK/SimpleITK/issues/582 // Execute cast filter CastImageFilter filter = new CastImageFilter(); PixelIDValueEnum imageType = PixelIDValueEnum.swigToEnum(image.GetPixelIDValue()); if (imageType == PixelIDValueEnum.sitkVectorUInt8 || imageType == PixelIDValueEnum.sitkUInt8) { return(image); } else { if (imageType.ToString().ToLowerInvariant().Contains("vector")) { filter.SetOutputPixelType(PixelIDValueEnum.sitkVectorUInt8); } else { filter.SetOutputPixelType(PixelIDValueEnum.sitkUInt8); } Image output = filter.Execute(image); filter.Dispose(); image.Dispose(); return(output); } }
private IntPtr GetBuffer(Image image) { if (image == null) { throw new ArgumentNullException(nameof(image)); } PixelIDValueEnum imageType = PixelIDValueEnum.swigToEnum(image.GetPixelIDValue()); if (imageType.swigValue == PixelIDValueEnum.sitkUInt8.swigValue) { return(image.GetBufferAsUInt8()); } else if (imageType.swigValue == PixelIDValueEnum.sitkUInt16.swigValue) { return(image.GetBufferAsUInt16()); } else if (imageType.swigValue == PixelIDValueEnum.sitkUInt32.swigValue) { return(image.GetBufferAsUInt32()); } else if (imageType.swigValue == PixelIDValueEnum.sitkUInt64.swigValue) { throw new NotSupportedException($"The image type {imageType} is not supported."); } else if (imageType.swigValue == PixelIDValueEnum.sitkInt8.swigValue) { return(image.GetBufferAsInt8()); } else if (imageType.swigValue == PixelIDValueEnum.sitkInt16.swigValue) { return(image.GetBufferAsInt16()); } else if (imageType.swigValue == PixelIDValueEnum.sitkInt32.swigValue) { return(image.GetBufferAsInt32()); } else if (imageType.swigValue == PixelIDValueEnum.sitkInt64.swigValue) { throw new NotSupportedException($"The image type {imageType} is not supported."); } else if (imageType.swigValue == PixelIDValueEnum.sitkFloat32.swigValue || imageType.swigValue == PixelIDValueEnum.sitkComplexFloat32.swigValue) { return(image.GetBufferAsFloat()); } else if (imageType.swigValue == PixelIDValueEnum.sitkFloat64.swigValue || imageType.swigValue == PixelIDValueEnum.sitkComplexFloat64.swigValue) { return(image.GetBufferAsDouble()); } else { throw new NotSupportedException($"The image type {imageType} is not supported."); } }
/// <summary> /// Gets the number of labels in the ITK image. /// </summary> /// <param name="image">The ITK image.</param> /// <returns>The number of labels in the ITK image.</returns> /// <exception cref="ArgumentNullException">image</exception> public ulong GetLabelCount(Image image) { if (image == null) { throw new ArgumentNullException(nameof(image)); } PixelIDValueEnum imageType = PixelIDValueEnum.swigToEnum(image.GetPixelIDValue()); Image labelImage = new Image(image.GetWidth(), image.GetHeight(), image.GetDepth(), imageType); labelImage.SetOrigin(image.GetOrigin()); labelImage.SetDirection(image.GetDirection()); labelImage.SetSpacing(image.GetSpacing()); LabelStatisticsImageFilter filter = new LabelStatisticsImageFilter(); filter.Execute(labelImage, image); return(filter.GetNumberOfLabels()); }
/// <inheritdoc/> public ulong GetLabelCount(Image image) { Ensure.ArgumentNotNull(image, nameof(image)); ulong labelCount = 0; PixelIDValueEnum imageType = PixelIDValueEnum.swigToEnum(image.GetPixelIDValue()); using (Image labelImage = new Image(image.GetWidth(), image.GetHeight(), image.GetDepth(), imageType)) { labelImage.SetOrigin(image.GetOrigin()); labelImage.SetDirection(image.GetDirection()); labelImage.SetSpacing(image.GetSpacing()); LabelStatisticsImageFilter filter = new LabelStatisticsImageFilter(); filter.Execute(labelImage, image); labelCount = filter.GetNumberOfLabels(); filter.Dispose(); } return(labelCount); }