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); }
private float Max(itk.simple.Image image) { itk.simple.MinimumMaximumImageFilter minimumFilter = new MinimumMaximumImageFilter(); minimumFilter.Execute(image); float min = (float)minimumFilter.GetMaximum(); return(min); }
public itk.simple.Image WstepnePrzetwarzanie(itk.simple.Image image) { itk.simple.BinaryMorphologicalClosingImageFilter closer = new BinaryMorphologicalClosingImageFilter(); closer.SetKernelType(KernelEnum.sitkCross); closer.SetKernelRadius(1); closer.SetForegroundValue(511); itk.simple.Image imClose = closer.Execute(image); itk.simple.SmoothingRecursiveGaussianImageFilter gauss = new SmoothingRecursiveGaussianImageFilter(); gauss.SetSigma(1); itk.simple.Image gausImage = gauss.Execute(imClose); itk.simple.CastImageFilter caster = new CastImageFilter(); caster.SetOutputPixelType(itk.simple.PixelIDValueEnum.sitkInt16); itk.simple.Image castImage = caster.Execute(gausImage); itk.simple.ImageFileWriter writer = new itk.simple.ImageFileWriter(); writer.SetFileName("WstepnePrzetwarzanie.dcm"); writer.Execute(image); return(castImage); }
public Image segmentujObraz(int numerPrzekroj, int numerMaxPrzekroju = 0) { try { Image image; if (numerMaxPrzekroju == 0) { image = WybierzPrzekroj(obraz, numerPrzekroj); } else { image = WybierzPrzekroj(obraz, numerPrzekroj, numerMaxPrzekroju); } itk.simple.Image imgWstepnePrzetwarzanie = this.WstepnePrzetwarzanie(image); itk.simple.Image imgSegmentowanaSledziona = this.SegmetacjaSledziony(imgWstepnePrzetwarzanie); itk.simple.Image imgNalozenieObrazow = this.NalozObrazy(image, imgSegmentowanaSledziona); itk.simple.Image obrazWysegmentowany = imgNalozenieObrazow; uint e = obraz.GetDimension(); uint j = obraz.GetWidth(); uint k = obraz.GetDepth(); uint o = obrazWysegmentowany.GetDepth(); return(obrazWysegmentowany); //zapiszObraz(obrazWysegmentowany); } catch (ArgumentNullException e) { throw new ArgumentNullException("sprawdz czy wczytales obraz"); } catch (Exception e) { //throw new Exception("blad podczas segmentacji obrazu"); throw new Exception(e.Message); } }
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); }