static void Main(string[] args)
        {
            try {
                if (args.Length < 4)
                {
                    Console.WriteLine("Usage: SimpleElastix <fixedImage> <movingImage> <parameterFile> <output>");
                    return;
                }
                // Instantiate SimpleElastix
                ElastixImageFilter silx;

                // Read input
                ImageFileReader reader = new ImageFileReader();
                reader.SetFileName(args[0]);
                silx.SetFixedImage(reader.Execute());
                reader.SetFileName(args[1]);
                silx.SetMovingImage(reader.Execute());
                silx.SetParameterMap(ReadParameterFile(args[2]));

                // Perform Registration
                silx.LogToConsoleOn();
                silx.Execute();

                // Write output image
                ImageFileWriter writer = new ImageFileWriter();
                writer.SetFileName(args[3]);
                writer.Execute(silx.GetResultImage());
            } catch (Exception e) {
                Console.WriteLine(e);
            }
        }
Exemple #2
0
        static void Main(string[] args)
        {
            try {
                if (args.Length < 3)
                {
                    Console.WriteLine("Usage: SimpleGaussian <input> <sigma> <output>");
                    return;
                }
                // Read input image
                ImageFileReader reader = new ImageFileReader();
                reader.SetFileName(args[0]);
                Image image = reader.Execute();

                // Execute Gaussian smoothing filter
                SmoothingRecursiveGaussianImageFilter gaussian = new SmoothingRecursiveGaussianImageFilter();
                gaussian.SetSigma(Double.Parse(args[1]));
                image = gaussian.Execute(image);

                // Write output image
                ImageFileWriter writer = new ImageFileWriter();
                writer.SetFileName(args[2]);
                writer.Execute(image);
            } catch (Exception ex) {
                Console.WriteLine(ex);
            }
        }
Exemple #3
0
        static void Main(string[] args)
        {
            try {
                if (args.Length < 3)
                {
                    Console.WriteLine("Usage: SimpleGaussian <input> <sigma> <output>");
                    return;
                }
                // Read input image
                ImageFileReader reader = new ImageFileReader();
                reader.SetFileName(args[0]);
                Image image = reader.Execute();

                // Execute Gaussian smoothing filter
                SmoothingRecursiveGaussianImageFilter gaussian = new SmoothingRecursiveGaussianImageFilter();
                gaussian.SetSigma(Double.Parse(args[1]));
                Image blurredImage = gaussian.Execute(image);

                // Covert the real output image back to the original pixel type , to
                // make writing easier , as many file formats don 't support real
                // pixels .
                CastImageFilter castFilter = new CastImageFilter();
                castFilter.SetOutputPixelType(image.GetPixelID());
                Image destImage = castFilter.Execute(blurredImage);

                // Write output image
                ImageFileWriter writer = new ImageFileWriter();
                writer.SetFileName(args[2]);
                writer.Execute(destImage);
            } catch (Exception ex) {
                Console.WriteLine(ex);
            }
        }
        public itk.simple.Image NalozObrazy(itk.simple.Image original, itk.simple.Image segmented)
        {
            itk.simple.MinimumMaximumImageFilter maxminFilter = new MinimumMaximumImageFilter();
            maxminFilter.Execute(original);
            double max = maxminFilter.GetMaximum();

            itk.simple.CastImageFilter caster1 = new CastImageFilter();
            caster1.SetOutputPixelType(itk.simple.PixelIDValueEnum.sitkInt16);
            itk.simple.Image castImg = caster1.Execute(segmented);

            itk.simple.MultiplyImageFilter multiplyFilter = new MultiplyImageFilter();
            itk.simple.Image multiplyImage = multiplyFilter.Execute(castImg, max);

            itk.simple.MaximumImageFilter maximumFilter = new MaximumImageFilter();
            itk.simple.Image maximumImage = maximumFilter.Execute(original, multiplyImage);

            //itk.simple.IntensityWindowingImageFilter windower = new IntensityWindowingImageFilter();
            //windower.SetWindowMinimum(0);
            //windower.SetWindowMaximum(255);
            //windower.SetOutputMinimum(0);
            //windower.SetOutputMaximum(1);
            //itk.simple.Image window = windower.Execute(maximumImage);
            itk.simple.ImageFileWriter writer = new ImageFileWriter();
            writer.SetFileName("Wynik.dcm");
            writer.Execute(maximumImage);

            return(maximumImage);
        }
        static void Main(string[] args)
        {
            try {
            if (args.Length < 3) {
              Console.WriteLine("Usage: {0} <input> <variance> <output>", args[0]);
              return;
            }
            // Read input image
            ImageFileReader reader = new ImageFileReader();
            reader.SetFileName(args[0]);
            Image image = reader.Execute();

            // Execute Gaussian smoothing filter
            DiscreteGaussianImageFilter filter = new DiscreteGaussianImageFilter();
            filter.SetVariance(Double.Parse(args[1]));

            MyCommand cmd = new MyCommand(filter);
            filter.AddCommand(EventEnum.sitkProgressEvent, cmd);

            image = filter.Execute(image);

            // Write output image
            ImageFileWriter writer = new ImageFileWriter();
            writer.SetFileName(args[2]);
            writer.Execute(image);

              } catch (Exception ex) {
            Console.WriteLine(ex);
              }
        }
Exemple #6
0
        static void Main(string[] args)
        {
            try {
                if (args.Length < 2)
                {
                    Console.WriteLine("Usage: DicomSeriesReader <input_directory> <output_file>");
                    return;
                }

                Console.WriteLine("Reading Dicom directory: " + args[0]);
                ImageSeriesReader reader = new ImageSeriesReader();

                VectorString dicom_names = ImageSeriesReader.GetGDCMSeriesFileNames(args[0]);
                reader.SetFileNames(dicom_names);

                Image image = reader.Execute();

                VectorUInt32 size = image.GetSize();
                Console.WriteLine("Image size: " + size[0] + " " + size[1] + " " + size[2]);

                Console.WriteLine("Writing image: " + args[1]);
                ImageFileWriter writer = new ImageFileWriter();
                writer.SetFileName(args[1]);
                writer.Execute(image);

                if (Environment.GetEnvironmentVariable("SITK_NOSHOW") == null)
                {
                    SimpleITK.Show(image, "Dicom Series");
                }
            } catch (Exception ex) {
                Console.WriteLine("Usage: DicomSeriesReader <input_directory> <output_file>");
                Console.WriteLine(ex);
            }
        }
        static void Main(string[] args)
        {
            try {
                if (args.Length < 3) {
                    Console.WriteLine("Usage: SimpleGaussian <input> <sigma> <output>");
                    return;
                }
                // Read input image
                ImageFileReader reader = new ImageFileReader();
                reader.SetFileName(args[0]);
                Image image = reader.Execute();

                // Execute Gaussian smoothing filter
                SmoothingRecursiveGaussianImageFilter gaussian = new SmoothingRecursiveGaussianImageFilter();
                gaussian.SetSigma(Double.Parse(args[1]));
                Image blurredImage = gaussian.Execute(image);

                // Covert the real output image back to the original pixel type , to
                // make writing easier , as many file formats don 't support real
                // pixels .
                CastImageFilter castFilter = new CastImageFilter();
                castFilter.SetOutputPixelType(image.GetPixelIDValue());
                Image destImage = castFilter.Execute(blurredImage);

                // Write output image
                ImageFileWriter writer = new ImageFileWriter();
                writer.SetFileName(args[2]);
                writer.Execute(destImage);

            } catch (Exception ex) {
                Console.WriteLine(ex);
            }
        }
Exemple #8
0
        static void Main(string[] args)
        {
            try {
                if (args.Length < 3)
                {
                    Console.WriteLine("Usage: {0} <input> <variance> <output>", args[0]);
                    return;
                }
                // Read input image
                ImageFileReader reader = new ImageFileReader();
                reader.SetFileName(args[0]);
                Image image = reader.Execute();

                // Execute Gaussian smoothing filter
                DiscreteGaussianImageFilter filter = new DiscreteGaussianImageFilter();
                filter.SetVariance(Double.Parse(args[1]));

                MyCommand cmd = new MyCommand(filter);
                filter.AddCommand(EventEnum.sitkProgressEvent, cmd);

                image = filter.Execute(image);

                // Write output image
                ImageFileWriter writer = new ImageFileWriter();
                writer.SetFileName(args[2]);
                writer.Execute(image);
            } catch (Exception ex) {
                Console.WriteLine(ex);
            }
        }
        static void Main(string[] args)
        {
            try {
                if (args.Length < 3) {
                    Console.WriteLine("Usage: SimpleGaussian <input> <sigma> <output>");
                    return;
                }
                // Read input image
                ImageFileReader reader = new ImageFileReader();
                reader.SetFileName(args[0]);
                Image image = reader.Execute();

                // Execute Gaussian smoothing filter
                SmoothingRecursiveGaussianImageFilter gaussian = new SmoothingRecursiveGaussianImageFilter();
                gaussian.SetSigma(Double.Parse(args[1]));
                image = gaussian.Execute(image);

                // Write output image
                ImageFileWriter writer = new ImageFileWriter();
                writer.SetFileName(args[2]);
                writer.Execute(image);

            } catch (Exception ex) {
                Console.WriteLine(ex);
            }
        }
Exemple #10
0
        static void Main(string[] args)
        {
            try {
                if (args.Length < 3)
                {
                    Console.WriteLine("Usage: SimpleGaussian <input> <sigma> <output>");
                    return;
                }
                ImageFileReader reader = new ImageFileReader();
                reader.setFileName(args[0]);
                SmartPointerImage image = reader.execute();

                Console.WriteLine(image.toString());

                Gaussian gaussian = new Gaussian();
                gaussian.setSigma(Double.Parse(args[1]));
                image = gaussian.execute(image);

                Console.WriteLine(image.toString());

                ImageFileWriter writer = new ImageFileWriter();
                writer.setFileName(args[2]);
                writer.execute(image);
            } catch (Exception ex) {
                Console.WriteLine(ex);
            }
        }
Exemple #11
0
        public MainWindow()
        {
            InitializeComponent();

            string[] args = new string[3];
            string   s    = System.AppDomain.CurrentDomain.BaseDirectory;

            args[0] = s + "Obrazy\\abc.png";
            args[1] = "1";
            args[2] = s + "Obrazy\\cba.png";

            try
            {
                if (args.Length < 3)
                {
                    //Console.WriteLine("Usage: SimpleGausian <imput> <sigma> <output>");
                    lTest.Content = "Usage: SimpleGausian <imput> <sigma> <output>";
                    return;
                }
                //Read imput image
                ImageFileReader reader = new ImageFileReader();
                reader.SetFileName(args[0]);
                itk.simple.Image image = reader.Execute();

                //Remember format
                //itk.simple.Image image2 = new itk.simple.Image(image);

                //PixelIDValueEnum id = PixelIDValueEnum.sitkVectorUInt8;
                //PixelIDValueEnum id = image2.GetPixelID();

                //Execute Gausian smoothing filter
                //SmoothingRecursiveGaussianImageFilter gausian = new SmoothingRecursiveGaussianImageFilter();
                //gausian.SetSigma(Double.Parse(args[1]));
                //image = gausian.Execute(image);

                //Convert?
                //PixelIDValueEnum id = image.GetPixelID();
                //SimpleITK.Cast(image, id);
                //id = image.GetPixelID();

                //Write output image
                ImageFileWriter writer = new ImageFileWriter();
                writer.SetFileName(args[2]);
                writer.Execute(image);

                lTest.Content = "Chyba się udało, sprwadź :P";
            }
            catch (Exception ex)
            {
                //Console.WriteLine(ex);
                lTest.Content = ex;
            }
        }
Exemple #12
0
        public void SetInput(string filePath)
        {
            string fileName = string.Format("{0}", filePath);

            sitk.Image inputImage  = ImageFileReader.ReadImage(fileName);
            sitk.Image outputImage = BinaryThinningImageFilter.BinaryThinning(inputImage);

            string newFileName = string.Format("temporary\\{0}.jpg", Guid.NewGuid().ToString());

            ImageFileWriter.WriteImage(outputImage, newFileName);

            originalBitmap = new Bitmap(Image.FromFile(newFileName));
        }
Exemple #13
0
        static void example1(string inputImageFileName, string outputImageFileName)
        {
            ImageFileReader reader = new ImageFileReader();

            reader.SetImageIO("PNGImageIO");
            reader.SetFileName(inputImageFileName);
            Image image = reader.Execute();

            ImageFileWriter writer = new ImageFileWriter();

            writer.SetFileName(outputImageFileName);
            writer.Execute(image);
        }
        public HttpResponseMessage GetImage(string id)
        {
            byte[] imageByteArray = _imageProviderService.GetImageAsByteArray(UserId, id);

            if (imageByteArray == null)
            {
                return(null);
            }

            ImageFileWriter.SaveImageSnapshot(imageByteArray, DateTimeProviderInstance, _snapshotImagePath, Logger, UserId, UserIp);
            HttpResponseMessage response = CreateImageResponseMessage(imageByteArray);

            return(response);
        }
Exemple #15
0
        /// <summary>
        /// Writes the image asynchronous.
        /// </summary>
        /// <param name="image">The ITK image.</param>
        /// <param name="path">The file system location where the image should be written.</param>
        /// <param name="filename">The name of the file.</param>
        /// <param name="ct">The cancellation token.</param>
        /// <returns>
        /// A <see cref="T:System.Threading.Tasks.Task" /> representing the asynchronous operation.
        /// </returns>
        /// <exception cref="ArgumentNullException">
        /// image
        /// or
        /// path
        /// or
        /// filename
        /// or
        /// ct
        /// </exception>
        public async Task WriteImageAsync(Image image, string path, string filename, CancellationToken ct)
        {
            if (image == null)
            {
                throw new ArgumentNullException(nameof(image));
            }

            if (string.IsNullOrWhiteSpace(path))
            {
                throw new ArgumentNullException(nameof(path));
            }

            if (string.IsNullOrWhiteSpace(filename))
            {
                throw new ArgumentNullException(nameof(filename));
            }

            if (ct == null)
            {
                throw new ArgumentNullException(nameof(ct));
            }

            await Task.Run(
                () =>
            {
                using (ImageFileWriter writer = new ImageFileWriter())
                {
                    try
                    {
                        ct.Register(() =>
                        {
                            writer.Abort();
                        });
                        ct.ThrowIfCancellationRequested();

                        writer.SetUseCompression(true);
                        writer.SetFileName(Path.Combine(path, filename));
                        writer.Execute(image);
                    }
                    catch (OperationCanceledException e)
                    {
                        throw new AmiException("The writing of the ITK image has been cancelled.", e);
                    }
                    catch (Exception e)
                    {
                        throw new AmiException("The ITK image could not be written.", e);
                    }
                }
            }, ct);
        }
        /// <inheritdoc/>
        public async Task WriteImageAsync(Image image, string path, string filename, CancellationToken ct)
        {
            Ensure.ArgumentNotNull(image, nameof(image));
            Ensure.ArgumentNotNull(ct, nameof(ct));

            if (string.IsNullOrWhiteSpace(path))
            {
                throw new ArgumentNullException(nameof(path));
            }

            if (string.IsNullOrWhiteSpace(filename))
            {
                throw new ArgumentNullException(nameof(filename));
            }

            var fs = fileSystemStrategy.Create(path);

            if (fs == null)
            {
                throw new UnexpectedNullException("Filesystem could not be created based on the provided path.");
            }

            using (ImageFileWriter writer = new ImageFileWriter())
            {
                try
                {
                    ct.Register(() =>
                    {
                        writer.Abort();
                    });

                    ct.ThrowIfCancellationRequested();

                    writer.SetUseCompression(true);
                    writer.SetFileName(fs.Path.Combine(path, filename));
                    writer.Execute(image);

                    await Task.CompletedTask;
                }
                catch (OperationCanceledException e)
                {
                    throw new AmiException("The writing of the ITK image has been cancelled.", e);
                }
                catch (Exception e)
                {
                    throw new AmiException("The ITK image could not be written.", e);
                }
            }
        }
        public void zapiszObraz()
        {
            try
            {
                ImageFileWriter writer     = new ImageFileWriter();
                string          sciezka    = Directory.GetCurrentDirectory();
                string          pathString = Path.Combine(sciezka, nazwaObrazu);
                if (Directory.Exists(pathString) == false)
                {
                    Directory.CreateDirectory(pathString);
                }
                pathString = Path.Combine(pathString, nazwaObrazu);

                //     writer.SetFileName(p);
                writer.Execute(obraz, pathString, false);
            }
            catch (ArgumentNullException e)
            {
                throw new Exception("Przed zapisem wybierz plik");
            }
        }
        public void zapiszObraz()
        {
            try
            {
                ImageFileWriter writer = new ImageFileWriter();
                string sciezka = Directory.GetCurrentDirectory();
                string pathString = Path.Combine(sciezka, nazwaObrazu);
                if (Directory.Exists(pathString) == false)
                {
                    Directory.CreateDirectory(pathString);
                }
                pathString = Path.Combine(pathString, nazwaObrazu);

                //     writer.SetFileName(p);
                writer.Execute(obraz, pathString, false);
            }
            catch(ArgumentNullException e)
            {
                throw new Exception("Przed zapisem wybierz plik");
            }
        }
        public void zapiszObraz(Image obraz1)
        {
            try {
                ImageFileWriter writer = new ImageFileWriter();
                string sciezka = Directory.GetCurrentDirectory();
                string pathString = Path.Combine(sciezka, "Wyniki");
                Random r = new Random();
                string e = r.Next(1,100).ToString();
                string nazwaPliku1 = "segmentacja" + "_" + e+".dcm";
                if (Directory.Exists(pathString) == false)
                {
                    Directory.CreateDirectory(pathString);
                }
                pathString = Path.Combine(pathString, nazwaPliku1);

                //     writer.SetFileName(p);
                writer.Execute(obraz1, pathString, false);
            }
            catch
            {
                throw new Exception("Blad podczas zapisu");
            }
        }
        public void zapiszObraz(Image obraz1)
        {
            try {
                ImageFileWriter writer      = new ImageFileWriter();
                string          sciezka     = Directory.GetCurrentDirectory();
                string          pathString  = Path.Combine(sciezka, "Wyniki");
                Random          r           = new Random();
                string          e           = r.Next(1, 100).ToString();
                string          nazwaPliku1 = "segmentacja" + "_" + e + ".dcm";
                if (Directory.Exists(pathString) == false)
                {
                    Directory.CreateDirectory(pathString);
                }
                pathString = Path.Combine(pathString, nazwaPliku1);

                //     writer.SetFileName(p);
                writer.Execute(obraz1, pathString, false);
            }
            catch
            {
                throw new Exception("Blad podczas zapisu");
            }
        }
Exemple #21
0
 static void Main(string[] args)
 {
     try {
       if (args.Length < 3) {
           Console.WriteLine("Usage: SimpleGaussian <input> <sigma> <output>");
Exemple #22
0
        public async Task <IActionResult> ClassifyImage(IFormFile imageFile)
        {
            if (imageFile.Length == 0)
            {
                return(BadRequest());
            }

            //Save the temp image file into the temp-folder
            IImageFileWriter imageWriter = new ImageFileWriter();
            string           fileName    = await imageWriter.UploadImageAsync(imageFile, _tempImagesFolderPath);

            string imageFilePath = Path.Combine(_tempImagesFolderPath, fileName);

            //Convert image stream to byte[]
            //
            //byte[] imageData = null;

            //MemoryStream image = new MemoryStream();
            //await imageFile.CopyToAsync(image);
            //imageData = image.ToArray();
            //if (!imageData.IsValidImage())
            //    return StatusCode(StatusCodes.Status415UnsupportedMediaType);

            _logger.LogInformation($"Start processing image...");

            //Measure execution time
            var watch = System.Diagnostics.Stopwatch.StartNew();

            //Set the specific image data
            var imageInputData = new ImageInputData {
                ImagePath = imageFilePath
            };

            //Predict code for provided image
            ImageLabelPredictions imageLabelPredictions = _predictionEnginePool.Predict(imageInputData);

            //Stop measuring time
            watch.Stop();
            var elapsedMs = watch.ElapsedMilliseconds;

            _logger.LogInformation($"Image processed in {elapsedMs} miliseconds");

            //try
            //{
            //    // DELETE FILE WHEN CLOSED
            //    using (FileStream fs = new FileStream(imageFilePath, FileMode.Open, FileAccess.Read, FileShare.Read, 4096, FileOptions.DeleteOnClose))
            //    {
            //        // temp file exists
            //        fs.Close();
            //    }
            //}
            //catch (Exception e)
            //{
            //    throw e;
            //}

            //Predict the image's label (The one with highest probability)
            ImagePredictedLabelWithProbability imageBestLabelPrediction
                = FindBestLabelWithProbability(imageLabelPredictions, imageInputData);

            //return new ObjectResult(result);
            return(Ok(imageBestLabelPrediction));
        }
        public itk.simple.Image SegmetacjaSledziony(itk.simple.Image image)
        {
            itk.simple.MorphologicalGradientImageFilter gradientFilter = new MorphologicalGradientImageFilter();
            gradientFilter.SetKernelType(KernelEnum.sitkCross);
            gradientFilter.SetKernelRadius(1);
            itk.simple.Image gradientImage = gradientFilter.Execute(image);

            itk.simple.SigmoidImageFilter sigmoidFilter = new SigmoidImageFilter();
            sigmoidFilter.SetOutputMinimum(0);
            sigmoidFilter.SetOutputMaximum(1);
            sigmoidFilter.SetAlpha(1.5);
            sigmoidFilter.SetBeta(100);
            itk.simple.Image sigmoidImage = sigmoidFilter.Execute(gradientImage);

            itk.simple.BinaryThresholdImageFilter threshFilter = new BinaryThresholdImageFilter();
            threshFilter.SetLowerThreshold(100);
            threshFilter.SetUpperThreshold(180);
            threshFilter.SetOutsideValue(0);
            threshFilter.SetInsideValue(1);
            itk.simple.Image           threshImage = threshFilter.Execute(image);
            itk.simple.CastImageFilter castThresh  = new CastImageFilter();
            castThresh.SetOutputPixelType(itk.simple.PixelIDValueEnum.sitkInt16);
            itk.simple.Image castThreshImage = castThresh.Execute(threshImage);

            itk.simple.SubtractImageFilter substractFilter = new SubtractImageFilter();
            itk.simple.Image substractImage = substractFilter.Execute(castThreshImage, sigmoidImage);

            itk.simple.ThresholdImageFilter threshFilter2 = new ThresholdImageFilter();
            threshFilter2.SetLower(0);
            threshFilter2.SetUpper(0);
            threshFilter2.SetOutsideValue(1);
            itk.simple.Image threshImage2 = threshFilter2.Execute(substractImage);

            itk.simple.BinaryErodeImageFilter erodeFilter = new BinaryErodeImageFilter();
            erodeFilter.SetForegroundValue(1);
            erodeFilter.SetBackgroundValue(0);
            erodeFilter.SetKernelType(itk.simple.KernelEnum.sitkCross);
            erodeFilter.SetKernelRadius(5);
            itk.simple.Image erodeImage = erodeFilter.Execute(threshImage2);

            itk.simple.ConnectedComponentImageFilter connFilter = new ConnectedComponentImageFilter();
            connFilter.SetFullyConnected(true);
            itk.simple.Image connImage = connFilter.Execute(erodeImage);

            itk.simple.RelabelComponentImageFilter relabelFilter = new RelabelComponentImageFilter();
            relabelFilter.SetMinimumObjectSize(5000);
            itk.simple.Image relabelImage = relabelFilter.Execute(connImage);

            itk.simple.BinaryThresholdImageFilter threshFilter3 = new BinaryThresholdImageFilter();
            threshFilter3.SetInsideValue(1);
            threshFilter3.SetOutsideValue(0);
            threshFilter3.SetLowerThreshold(1);
            threshFilter3.SetUpperThreshold(1);
            itk.simple.Image threshImage3 = threshFilter3.Execute(relabelImage);

            itk.simple.DilateObjectMorphologyImageFilter closeReconstructFilter = new DilateObjectMorphologyImageFilter();
            closeReconstructFilter.SetKernelType(itk.simple.KernelEnum.sitkCross);
            closeReconstructFilter.SetKernelRadius(5);
            itk.simple.Image           closeReconstructImage = closeReconstructFilter.Execute(threshImage3);
            itk.simple.ImageFileWriter writer = new ImageFileWriter();
            writer.SetFileName("SegmentujSledzione.dcm");
            writer.Execute(closeReconstructImage);

            return(closeReconstructImage);
        }
        public itk.simple.Image NalozObrazy(itk.simple.Image original, itk.simple.Image segmented)
        {
            itk.simple.MinimumMaximumImageFilter maxminFilter = new MinimumMaximumImageFilter();
            maxminFilter.Execute(original);
            double max = maxminFilter.GetMaximum();

            itk.simple.CastImageFilter caster1 = new CastImageFilter();
            caster1.SetOutputPixelType(itk.simple.PixelIDValueEnum.sitkInt16);
            itk.simple.Image castImg = caster1.Execute(segmented);

            itk.simple.MultiplyImageFilter multiplyFilter = new MultiplyImageFilter();
            itk.simple.Image multiplyImage = multiplyFilter.Execute(castImg, max);
            
            itk.simple.MaximumImageFilter maximumFilter = new MaximumImageFilter();
            itk.simple.Image maximumImage = maximumFilter.Execute(original, multiplyImage);
            
            //itk.simple.IntensityWindowingImageFilter windower = new IntensityWindowingImageFilter();
            //windower.SetWindowMinimum(0);
            //windower.SetWindowMaximum(255);
            //windower.SetOutputMinimum(0);
            //windower.SetOutputMaximum(1);
            //itk.simple.Image window = windower.Execute(maximumImage);
            itk.simple.ImageFileWriter writer = new ImageFileWriter();
            writer.SetFileName("Wynik.dcm");
            writer.Execute(maximumImage);

            return maximumImage;
        }
        public itk.simple.Image SegmetacjaSledziony(itk.simple.Image image)
        {
            itk.simple.MorphologicalGradientImageFilter gradientFilter = new MorphologicalGradientImageFilter();
            gradientFilter.SetKernelType(KernelEnum.sitkCross);
            gradientFilter.SetKernelRadius(1);
            itk.simple.Image gradientImage = gradientFilter.Execute(image);
            
            itk.simple.SigmoidImageFilter sigmoidFilter = new SigmoidImageFilter();
            sigmoidFilter.SetOutputMinimum(0);
            sigmoidFilter.SetOutputMaximum(1);
            sigmoidFilter.SetAlpha(1.5);
            sigmoidFilter.SetBeta(100);
            itk.simple.Image sigmoidImage = sigmoidFilter.Execute(gradientImage);
          
            itk.simple.BinaryThresholdImageFilter threshFilter = new BinaryThresholdImageFilter();
            threshFilter.SetLowerThreshold(100);
            threshFilter.SetUpperThreshold(180);
            threshFilter.SetOutsideValue(0);
            threshFilter.SetInsideValue(1);
            itk.simple.Image threshImage = threshFilter.Execute(image);
            itk.simple.CastImageFilter castThresh = new CastImageFilter();
            castThresh.SetOutputPixelType(itk.simple.PixelIDValueEnum.sitkInt16);
            itk.simple.Image castThreshImage = castThresh.Execute(threshImage);

            itk.simple.SubtractImageFilter substractFilter = new SubtractImageFilter();
            itk.simple.Image substractImage = substractFilter.Execute(castThreshImage, sigmoidImage);

            itk.simple.ThresholdImageFilter threshFilter2 = new ThresholdImageFilter();
            threshFilter2.SetLower(0);
            threshFilter2.SetUpper(0);
            threshFilter2.SetOutsideValue(1);
            itk.simple.Image threshImage2 = threshFilter2.Execute(substractImage);

            itk.simple.BinaryErodeImageFilter erodeFilter = new BinaryErodeImageFilter();
            erodeFilter.SetForegroundValue(1);
            erodeFilter.SetBackgroundValue(0);
            erodeFilter.SetKernelType(itk.simple.KernelEnum.sitkCross);
            erodeFilter.SetKernelRadius(5);
            itk.simple.Image erodeImage = erodeFilter.Execute(threshImage2);

            itk.simple.ConnectedComponentImageFilter connFilter = new ConnectedComponentImageFilter();
            connFilter.SetFullyConnected(true);
            itk.simple.Image connImage = connFilter.Execute(erodeImage);

            itk.simple.RelabelComponentImageFilter relabelFilter = new RelabelComponentImageFilter();
            relabelFilter.SetMinimumObjectSize(5000);
            itk.simple.Image relabelImage = relabelFilter.Execute(connImage);

            itk.simple.BinaryThresholdImageFilter threshFilter3 = new BinaryThresholdImageFilter();
            threshFilter3.SetInsideValue(1);
            threshFilter3.SetOutsideValue(0);
            threshFilter3.SetLowerThreshold(1);
            threshFilter3.SetUpperThreshold(1);
            itk.simple.Image threshImage3 = threshFilter3.Execute(relabelImage);

            itk.simple.DilateObjectMorphologyImageFilter closeReconstructFilter = new DilateObjectMorphologyImageFilter();
            closeReconstructFilter.SetKernelType(itk.simple.KernelEnum.sitkCross);
            closeReconstructFilter.SetKernelRadius(5);
            itk.simple.Image closeReconstructImage = closeReconstructFilter.Execute(threshImage3);
            itk.simple.ImageFileWriter writer = new ImageFileWriter();
            writer.SetFileName("SegmentujSledzione.dcm");
            writer.Execute(closeReconstructImage);

            return closeReconstructImage;
        }
Exemple #26
0
        static void Main(string[] args)
        {
            try {
                if (args.Length < 1)
                {
                    Console.WriteLine("Usage: RTKFirstReconstruction <output>");
                    return;
                }

                // Defines the RTK geometry object
                ThreeDCircularProjectionGeometry geometry = new ThreeDCircularProjectionGeometry();
                uint  numberOfProjections = 360;
                float firstAngle          = 0;
                float angularArc          = 360;
                float sid  = 600;  // source to isocenter distance in mm
                float sdd  = 1200; // source to detector distance in mm
                float isox = 0;    // X coordinate on the projection image of isocenter
                float isoy = 0;    // Y coordinate on the projection image of isocenter
                for (int x = 0; x < numberOfProjections; x++)
                {
                    float angle = firstAngle + x * angularArc / numberOfProjections;
                    geometry.AddProjection(sid, sdd, angle, isox, isoy);
                }
                ConstantImageSource constantImageSource = new ConstantImageSource();
                VectorDouble        origin = new VectorDouble(3);
                origin.Add(-127.0);
                origin.Add(-127.0);
                origin.Add(-127.0);
                VectorUInt32 sizeOutput = new VectorUInt32(3);
                sizeOutput.Add(256);
                sizeOutput.Add(256);
                sizeOutput.Add(numberOfProjections);
                VectorDouble spacing = new VectorDouble(3);
                spacing.Add(1.0);
                spacing.Add(1.0);
                spacing.Add(1.0);

                constantImageSource.SetOrigin(origin);
                constantImageSource.SetSpacing(spacing);
                constantImageSource.SetSize(sizeOutput);
                constantImageSource.SetConstant(0.0);
                Image source = constantImageSource.Execute();

                RayEllipsoidIntersectionImageFilter rei = new RayEllipsoidIntersectionImageFilter();
                VectorDouble semiprincipalaxis          = new VectorDouble(3);
                semiprincipalaxis.Add(50.0);
                semiprincipalaxis.Add(50.0);
                semiprincipalaxis.Add(50.0);

                VectorDouble center = new VectorDouble(3);
                center.Add(0.0);
                center.Add(0.0);
                center.Add(0.0);
                // Set GrayScale value, axes, center...
                rei.SetDensity(20);
                rei.SetAngle(0);
                rei.SetCenter(center);
                rei.SetAxis(semiprincipalaxis);
                rei.SetGeometry(geometry);
                Image reiImage = rei.Execute(source);


                // Create reconstructed image
                ConstantImageSource constantImageSource2 = new ConstantImageSource();
                VectorUInt32        sizeOutput2          = new VectorUInt32(3);
                sizeOutput2.Add(256);
                sizeOutput2.Add(256);
                sizeOutput2.Add(256);
                constantImageSource2.SetOrigin(origin);
                constantImageSource2.SetSpacing(spacing);
                constantImageSource2.SetSize(sizeOutput2);
                constantImageSource2.SetConstant(0.0);
                Image source2 = constantImageSource2.Execute();

                Console.WriteLine("Performing reconstruction");
                FDKConeBeamReconstructionFilter feldkamp = new FDKConeBeamReconstructionFilter();
                feldkamp.SetGeometry(geometry);
                feldkamp.SetTruncationCorrection(0.0);
                feldkamp.SetHannCutFrequency(0.0);
                Image image = feldkamp.Execute(source2, reiImage);

                ImageFileWriter writer = new ImageFileWriter();
                writer.SetFileName(args[0]);
                writer.Execute(image);
            } catch (Exception ex) {
                Console.WriteLine(ex);
            }
        }
        static void Main(string[] args)
        {
            try {
                if (args.Length < 1) {
                    Console.WriteLine("Usage: RTKFirstReconstruction <output>");
                    return;
                }

                // Defines the RTK geometry object
                ThreeDCircularProjectionGeometry geometry = new ThreeDCircularProjectionGeometry();
                uint numberOfProjections = 360;
                float firstAngle = 0;
                float angularArc = 360;
                float sid = 600; // source to isocenter distance in mm
                float sdd = 1200; // source to detector distance in mm
                float isox = 0; // X coordinate on the projection image of isocenter
                float isoy = 0; // Y coordinate on the projection image of isocenter
                for (int x = 0; x < numberOfProjections; x++)
                  {
                  float angle = firstAngle + x * angularArc / numberOfProjections;
                  geometry.AddProjection(sid, sdd, angle, isox, isoy);
                  }
                ConstantImageSource constantImageSource = new ConstantImageSource();
                VectorDouble origin = new VectorDouble(3);
                origin.Add(-127.0);
                origin.Add(-127.0);
                origin.Add(-127.0);
                VectorUInt32 sizeOutput = new VectorUInt32(3);
                sizeOutput.Add(256);
                sizeOutput.Add(256);
                sizeOutput.Add(numberOfProjections);
                VectorDouble spacing = new VectorDouble(3);
                spacing.Add(1.0);
                spacing.Add(1.0);
                spacing.Add(1.0);

                constantImageSource.SetOrigin(origin);
                constantImageSource.SetSpacing(spacing);
                constantImageSource.SetSize(sizeOutput);
                constantImageSource.SetConstant(0.0);
                Image source = constantImageSource.Execute();

                RayEllipsoidIntersectionImageFilter rei = new RayEllipsoidIntersectionImageFilter();
                VectorDouble semiprincipalaxis = new VectorDouble(3);
                semiprincipalaxis.Add(50.0);
                semiprincipalaxis.Add(50.0);
                semiprincipalaxis.Add(50.0);

                VectorDouble center = new VectorDouble(3);
                center.Add(0.0);
                center.Add(0.0);
                center.Add(0.0);
                // Set GrayScale value, axes, center...
                rei.SetDensity(20);
                rei.SetAngle(0);
                rei.SetCenter(center);
                rei.SetAxis(semiprincipalaxis);
                rei.SetGeometry(geometry);
                Image reiImage = rei.Execute(source);

                // Create reconstructed image
                ConstantImageSource constantImageSource2 = new ConstantImageSource();
                VectorUInt32 sizeOutput2 = new VectorUInt32(3);
                sizeOutput2.Add(256);
                sizeOutput2.Add(256);
                sizeOutput2.Add(256);
                constantImageSource2.SetOrigin(origin);
                constantImageSource2.SetSpacing(spacing);
                constantImageSource2.SetSize(sizeOutput2);
                constantImageSource2.SetConstant(0.0);
                Image source2 = constantImageSource2.Execute();

                Console.WriteLine("Performing reconstruction");
                FDKConeBeamReconstructionFilter feldkamp = new FDKConeBeamReconstructionFilter();
                feldkamp.SetGeometry(geometry);
                feldkamp.SetTruncationCorrection(0.0);
                feldkamp.SetHannCutFrequency(0.0);
                Image image = feldkamp.Execute(source2, reiImage);

                ImageFileWriter writer = new ImageFileWriter();
                writer.SetFileName(args[0]);
                writer.Execute(image);

            } catch (Exception ex) {
                Console.WriteLine(ex);
            }
        }