using System;
namespace itk.simple.examples {
static void Main(string[] args) {
try {
if (args.Length < 2) {
Console.WriteLine("Usage: N4BiasFieldCorrection inputImage outputImage"
+ " [shrinkFactor] [maskImage] [numberOfIterations]"
+ " [numberOfFittingLevels]\n");
return;
}
Image image = inputImage;
if (args.Length>3) {
} else {
maskImage =
sitk.OtsuThreshold(image, 0, 1, 200);
}
uint shrinkFactor = 1;
if (args.Length>2) {
shrinkFactor = UInt32.Parse(args[2]);
s_array[i] = shrinkFactor;
}
VectorUInt32 shrink = new VectorUInt32(s_array);
image =
sitk.Shrink(inputImage, shrink);
maskImage =
sitk.Shrink(maskImage, shrink);
}
uint numFittingLevels = 4;
if (args.Length>5) {
numFittingLevels = UInt32.Parse(args[5]);
}
if (args.Length>4) {
uint it = UInt32.Parse(args[4]);
uint[] it_array = new uint[numFittingLevels];
for (uint i=0; i<numFittingLevels; i++) {
it_array[i] = it;
}
VectorUInt32 iterations = new VectorUInt32(it_array);
}
Image corrected_image = corrector.
Execute(image, maskImage);
Image corrected_image_full_resolution =
sitk.Divide(inputImage,
sitk.Exp(log_bias_field));
sitk.WriteImage(corrected_image_full_resolution, args[1]);
if (shrinkFactor>1) {
sitk.WriteImage(corrected_image,
"CSharp-Example-N4BiasFieldCorrection-shrunk.nrrd");
}
if (Environment.GetEnvironmentVariable("SITK_NOSHOW") == null)
SimpleITK.Show(corrected_image, "N4 Corrected");
} catch (Exception ex) {
Console.WriteLine(ex);
}
}
}
}
The Image class for SimpleITK.
unsigned int GetDimension() const
Implementation of the N4 bias field correction algorithm.
Image Execute(const Image &image, const Image &maskImage)
Image GetLogBiasFieldAsImage(Image referenceImage) const
The computed log bias field correction. Typically, a reduced size image is used as input to the N4 fi...
Self & SetMaximumNumberOfIterations(std::vector< uint32_t > MaximumNumberOfIterations)
Image N4BiasFieldCorrection(const Image &image, const Image &maskImage, double convergenceThreshold=0.001, std::vector< uint32_t > maximumNumberOfIterations=std::vector< uint32_t >(4, 50), double biasFieldFullWidthAtHalfMaximum=0.15, double wienerFilterNoise=0.01, uint32_t numberOfHistogramBins=200u, std::vector< uint32_t > numberOfControlPoints=std::vector< uint32_t >(3, 4), uint32_t splineOrder=3u, bool useMaskLabel=true, uint8_t maskLabel=1)
Implementation of the N4 bias field correction algorithm.
PixelIDValueEnum
Enumerated values of pixelIDs.