| 32 | namespace sitk = itk::simple; |
| 33 | |
| 34 | int |
| 35 | main(int argc, char * argv[]) |
| 36 | { |
| 37 | |
| 38 | // |
| 39 | // Check command line parameters |
| 40 | // |
| 41 | if (argc < 7) |
| 42 | { |
| 43 | std::cerr << "Missing Parameters " << std::endl; |
| 44 | std::cerr << "Usage: " << argv[0]; |
| 45 | std::cerr << " inputImage outputImage lowerThreshold upperThreshold seedX seedY [seed2X seed2Y ... ]" << std::endl; |
| 46 | return 1; |
| 47 | } |
| 48 | |
| 49 | |
| 50 | // |
| 51 | // Read the image |
| 52 | // |
| 53 | |
| 54 | sitk::ImageFileReader reader; |
| 55 | reader.SetFileName(std::string(argv[1])); |
| 56 | sitk::Image image = reader.Execute(); |
| 57 | |
| 58 | |
| 59 | // |
| 60 | // Blur using CurvatureFlowImageFilter |
| 61 | // |
| 62 | sitk::CurvatureFlowImageFilter blurFilter; |
| 63 | blurFilter.SetNumberOfIterations(5); |
| 64 | blurFilter.SetTimeStep(0.125); |
| 65 | image = blurFilter.Execute(image); |
| 66 | |
| 67 | |
| 68 | // |
| 69 | // Set up ConnectedThresholdImageFilter for segmentation |
| 70 | // |
| 71 | sitk::ConnectedThresholdImageFilter segmentationFilter; |
| 72 | segmentationFilter.SetLower(atof(argv[3])); |
| 73 | segmentationFilter.SetUpper(atof(argv[4])); |
| 74 | segmentationFilter.SetReplaceValue(255); |
| 75 | |
| 76 | for (int i = 5; i + 1 < argc; i += 2) |
| 77 | { |
| 78 | std::vector<unsigned int> seed = { (unsigned int)atoi(argv[i]), (unsigned int)atoi(argv[i + 1]) }; |
| 79 | segmentationFilter.AddSeed(seed); |
| 80 | std::cout << "Adding a seed at: "; |
| 81 | for (unsigned int j = 0; j < seed.size(); ++j) |
| 82 | { |
| 83 | std::cout << seed[j] << " "; |
| 84 | } |
| 85 | std::cout << std::endl; |
| 86 | } |
| 87 | |
| 88 | sitk::Image outImage = segmentationFilter.Execute(image); |
| 89 | |
| 90 | |
| 91 | // |
nothing calls this directly
no test coverage detected