static void Main(String[] args) { try { // Setup input and output images UInt32 dim = UInt32.Parse(args[0]); itkImageBase input = itkImage.New(itkPixelType.F, dim); itkImageBase output = itkImage.New(itkPixelType.UC, dim); // Read the input image input.Read(args[1]); // Apply the Rescale Intensity filter FilterType filterRescale = FilterType.New(input, output); filterRescale.RemoveAllObservers(); filterRescale.SetInput(input); filterRescale.OutputMinimum = 000.0F; filterRescale.OutputMaximum = 255.0F; filterRescale.Update(); filterRescale.GetOutput(output); // Write the output to disk output.Write(args[2]); // Clean up filterRescale.Dispose(); input.Dispose(); output.Dispose(); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } }
public void Apply() { if (this.SelectedImageGraphicProvider == null) { return; } ImageGraphic image = this.SelectedImageGraphicProvider.ImageGraphic; if (image == null) { return; } if (!(image is GrayscaleImageGraphic)) { return; } itkImageBase input = ItkHelper.CreateItkImage(image as GrayscaleImageGraphic); itkImageBase output = itkImage.New(input); ItkHelper.CopyToItkImage(image as GrayscaleImageGraphic, input); FilterType filter = FilterType.New(input, output); filter.SetInput(input); String mangledType = input.MangledTypeString; intensityFilterType intensityFilter = intensityFilterType.New(mangledType + mangledType); intensityFilter.SetInput(filter.GetOutput()); intensityFilter.OutputMinimum = 0; if (image.BitsPerPixel == 16) { intensityFilter.OutputMaximum = 32767; } else { intensityFilter.OutputMaximum = 255; } intensityFilter.Update(); intensityFilter.GetOutput(output); ItkHelper.CopyFromItkImage(image as GrayscaleImageGraphic, output); image.Draw(); filter.Dispose(); intensityFilter.Dispose(); input.Dispose(); output.Dispose(); }
public void Apply() { if (this.SelectedImageGraphicProvider == null) { return; } ImageGraphic image = this.SelectedImageGraphicProvider.ImageGraphic; if (image == null) { return; } if (!(image is GrayscaleImageGraphic)) { return; } byte[] pixels = image.PixelData.Raw; itkImageBase input = ItkHelper.CreateItkImage(image as GrayscaleImageGraphic); itkImageRegion region = input.LargestPossibleRegion; itkImageBase output = itkImage.New(input); ItkHelper.CopyToItkImage(image as GrayscaleImageGraphic, input); string mangledType = input.MangledTypeString; string mangledType2 = input.PixelType.MangledTypeString; CastImageFilterType castToIF2 = CastImageFilterType.New(mangledType + "IF2"); castToIF2.SetInput(input); FilterType filter = FilterType.New("IF2IF2"); filter.SetInput(castToIF2.GetOutput()); intensityFilterType intensityFilter = intensityFilterType.New("IF2" + mangledType); intensityFilter.SetInput(filter.GetOutput()); intensityFilter.OutputMinimum = 0; if (image.BitsPerPixel == 16) { intensityFilter.OutputMaximum = (image as GrayscaleImageGraphic).ModalityLut.MaxInputValue; } else { intensityFilter.OutputMaximum = 255; } intensityFilter.Update(); intensityFilter.GetOutput(output); ItkHelper.CopyFromItkImage(image as GrayscaleImageGraphic, output); image.Draw(); filter.Dispose(); intensityFilter.Dispose(); input.Dispose(); output.Dispose(); }
public void Apply() { if (this.SelectedImageGraphicProvider == null) { return; } ImageGraphic image = this.SelectedImageGraphicProvider.ImageGraphic; if (image == null) { return; } if (!(image is GrayscaleImageGraphic)) { return; } byte[] pixels = image.PixelData.Raw; itkImageBase input = ItkHelper.CreateItkImage(image as GrayscaleImageGraphic); itkImageRegion region = input.LargestPossibleRegion; itkImageBase output = itkImage.New(input); ItkHelper.CopyToItkImage(image as GrayscaleImageGraphic, input); String mangledType = input.MangledTypeString; CastImageFilterType castToIF2 = CastImageFilterType.New(mangledType + "IF2"); castToIF2.SetInput(input); FilterType filter = FilterType.New("IF2IF2"); filter.SetInput(castToIF2.GetOutput()); // TODO: need to allow user to set parameters of filter filter.LowerThreshold = 90; filter.UpperThreshold = 127; //filter.OutsideValue = 0; // smoothing the edge double[] error = { 0.01, 0.01 }; filter.MaximumError = error; double[] var = { 1.0, 1.0 }; filter.Variance = var; intensityFilterType intensityFilter = intensityFilterType.New("IF2" + mangledType); intensityFilter.SetInput(filter.GetOutput()); intensityFilter.OutputMinimum = 0; if (image.BitsPerPixel == 16) { intensityFilter.OutputMaximum = (image as GrayscaleImageGraphic).ModalityLut.MaxInputValue;//32767; } else { intensityFilter.OutputMaximum = 255; } intensityFilter.Update(); #if DEBUG bool debug = false; if (debug) { itkImageBase outputIF2 = itkImage.New("IF2"); filter.GetOutput(outputIF2); float min = float.MaxValue, max = float.MinValue; unsafe { fixed(byte *pDstByte = image.PixelData.Raw) { itkImageRegionConstIterator_IF2 itkIt = new itkImageRegionConstIterator_IF2(outputIF2, region); byte *pDst = (byte *)pDstByte; int height = image.Rows; int width = image.Columns; for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) { float f = itkIt.Get().ValueAsF; if (f > max) { max = f; } if (f < min) { min = f; } pDst[0] = (byte)itkIt.Get().ValueAsF; pDst++; itkIt++; } } } } Console.WriteLine("min max "); Console.Write(min); Console.Write(" "); Console.WriteLine(max); } #endif intensityFilter.GetOutput(output); ItkHelper.CopyFromItkImage(image as GrayscaleImageGraphic, output); image.Draw(); filter.Dispose(); intensityFilter.Dispose(); input.Dispose(); output.Dispose(); }