| 19 | #include <itkSTAPLEImageFilter.h> |
| 20 | |
| 21 | int main(int argc, char* argv[]) |
| 22 | { |
| 23 | typedef itk::Image<unsigned char, 3> MaskImageType; |
| 24 | typedef itk::Image<float, 3> ImageType; |
| 25 | typedef itk::N4BiasFieldCorrectionImageFilter < ImageType, MaskImageType, ImageType > FilterType; |
| 26 | |
| 27 | mitkCommandLineParser parser; |
| 28 | parser.setTitle("N4 Bias Field Correction"); |
| 29 | parser.setCategory("Classification Command Tools"); |
| 30 | parser.setDescription(""); |
| 31 | parser.setContributor("German Cancer Research Center (DKFZ)"); |
| 32 | |
| 33 | parser.setArgumentPrefix("--", "-"); |
| 34 | // Add command line argument names |
| 35 | parser.addArgument("help", "h", mitkCommandLineParser::Bool, "Help:", "Show this help text"); |
| 36 | parser.addArgument("input", "i", mitkCommandLineParser::Directory, "Input file:", "Input file", us::Any(), false, false, false, mitkCommandLineParser::Input); |
| 37 | parser.addArgument("mask", "m", mitkCommandLineParser::File, "Output file:", "Mask file", us::Any(), false, false, false, mitkCommandLineParser::Output); |
| 38 | parser.addArgument("output", "o", mitkCommandLineParser::File, "Output file:", "Output file", us::Any(), false, false, false, mitkCommandLineParser::Output); |
| 39 | |
| 40 | parser.addArgument("number-of-controllpoints", "noc", mitkCommandLineParser::Int, "Parameter", "The noc for the point grid size defining the B-spline estimate (default 4)", us::Any(), true); |
| 41 | parser.addArgument("number-of-fitting-levels", "nofl", mitkCommandLineParser::Int, "Parameter", "Number of fitting levels for the multi-scale approach (default 1)", us::Any(), true); |
| 42 | parser.addArgument("number-of-histogram-bins", "nofl", mitkCommandLineParser::Int, "Parameter", "number of bins defining the log input intensity histogram (default 200)", us::Any(), true); |
| 43 | parser.addArgument("spline-order", "so", mitkCommandLineParser::Int, "Parameter", "Define the spline order (default 3)", us::Any(), true); |
| 44 | parser.addArgument("winer-filter-noise", "wfn", mitkCommandLineParser::Float, "Parameter", "Noise estimate defining the Wiener filter (default 0.01)", us::Any(), true); |
| 45 | parser.addArgument("number-of-maximum-iterations", "nomi", mitkCommandLineParser::Int, "Parameter", "Spezifies the maximum number of iterations per run", us::Any(), true); |
| 46 | // ToDo: Number Of Maximum Iterations durchschleifen |
| 47 | |
| 48 | std::map<std::string, us::Any> parsedArgs = parser.parseArguments(argc, argv); |
| 49 | |
| 50 | // Show a help message |
| 51 | if (parsedArgs.count("help") || parsedArgs.count("h")) |
| 52 | { |
| 53 | std::cout << parser.helpText(); |
| 54 | return EXIT_SUCCESS; |
| 55 | } |
| 56 | |
| 57 | MaskImageType::Pointer itkMsk = MaskImageType::New(); |
| 58 | mitk::Image::Pointer img = mitk::IOUtil::Load<mitk::Image>(parsedArgs["mask"].ToString()); |
| 59 | mitk::CastToItkImage(img, itkMsk); |
| 60 | |
| 61 | ImageType::Pointer itkImage = ImageType::New(); |
| 62 | mitk::Image::Pointer img2 = mitk::IOUtil::Load<mitk::Image>(parsedArgs["input"].ToString()); |
| 63 | mitk::CastToItkImage(img2, itkImage); |
| 64 | |
| 65 | FilterType::Pointer filter = FilterType::New(); |
| 66 | filter->SetInput(itkImage); |
| 67 | filter->SetMaskImage(itkMsk); |
| 68 | |
| 69 | |
| 70 | |
| 71 | if (parsedArgs.count("number-of-controllpoints") > 0) |
| 72 | { |
| 73 | int variable = us::any_cast<int>(parsedArgs["maximum-iterations"]); |
| 74 | MITK_INFO << "Number of control points: " << variable; |
| 75 | filter->SetNumberOfControlPoints(variable); |
| 76 | } |
| 77 | if (parsedArgs.count("number-of-fitting-levels") > 0) |
| 78 | { |
nothing calls this directly
no test coverage detected