Ejemplo n.º 1
0
        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);
            }
        }
Ejemplo n.º 2
0
        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.");
            }
        }
Ejemplo n.º 3
0
        /// <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());
        }
Ejemplo n.º 4
0
        /// <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);
        }