| 30 | public class Program |
| 31 | { |
| 32 | static void Main(string[] args) |
| 33 | { |
| 34 | if (args.Length < 6) |
| 35 | { |
| 36 | Console.WriteLine("Missing Parameters "); |
| 37 | Console.WriteLine("Usage: " + System.AppDomain.CurrentDomain.FriendlyName + |
| 38 | " inputImage outputImage" + |
| 39 | " lowerThreshold upperThreshold seedX seedY [seed2X seed2Y ... ]"); |
| 40 | return; |
| 41 | } |
| 42 | |
| 43 | string inputFilename = args[0]; |
| 44 | string outputFilename = args[1]; |
| 45 | |
| 46 | double lowerThreshold = double.Parse(args[2], CultureInfo.InvariantCulture); |
| 47 | double upperThreshold = double.Parse(args[3], CultureInfo.InvariantCulture); |
| 48 | |
| 49 | // |
| 50 | // Read the image |
| 51 | // |
| 52 | |
| 53 | SitkImage inputImage = SimpleITK.ReadImage(inputFilename, PixelIDValueEnum.sitkFloat32); |
| 54 | |
| 55 | // |
| 56 | // Blur using CurvatureFlowImageFilter |
| 57 | // |
| 58 | CurvatureFlowImageFilter blurFilter = new sitk.CurvatureFlowImageFilter(); |
| 59 | blurFilter.SetNumberOfIterations(5); |
| 60 | blurFilter.SetTimeStep(0.125); |
| 61 | inputImage = blurFilter.Execute(inputImage); |
| 62 | |
| 63 | |
| 64 | // |
| 65 | // Set up ConnectedThresholdImageFilter for segmentation |
| 66 | // |
| 67 | |
| 68 | ConnectedThresholdImageFilter segmentationFilter = new sitk.ConnectedThresholdImageFilter(); |
| 69 | segmentationFilter.SetLower(lowerThreshold); |
| 70 | segmentationFilter.SetUpper(upperThreshold); |
| 71 | segmentationFilter.SetReplaceValue(255); |
| 72 | |
| 73 | for (uint i = 4; i + 1 < args.Length; i += 2) |
| 74 | { |
| 75 | VectorUInt32 seed = new VectorUInt32(new uint[] { Convert.ToUInt32(args[i]), Convert.ToUInt32(args[i + 1]), 0 }); |
| 76 | segmentationFilter.AddSeed(seed); |
| 77 | Console.WriteLine("Adding a seed at: "); |
| 78 | for (int j = 0; j + 1 < seed.Count; j++) |
| 79 | { |
| 80 | Console.WriteLine(seed[j] + " "); |
| 81 | } |
| 82 | } |
| 83 | SitkImage outImage = segmentationFilter.Execute(inputImage); |
| 84 | |
| 85 | // |
| 86 | // Write out the resulting file |
| 87 | // |
| 88 | |
| 89 | SimpleITK.WriteImage(outImage, outputFilename); |