diff --git a/Modules/Segmentation/Voronoi/test/itkVoronoiSegmentationImageFilterTest.cxx b/Modules/Segmentation/Voronoi/test/itkVoronoiSegmentationImageFilterTest.cxx index 1240321e068..730bc0a5218 100644 --- a/Modules/Segmentation/Voronoi/test/itkVoronoiSegmentationImageFilterTest.cxx +++ b/Modules/Segmentation/Voronoi/test/itkVoronoiSegmentationImageFilterTest.cxx @@ -19,6 +19,7 @@ #include "itkVoronoiSegmentationImageFilter.h" #include "itkVoronoiSegmentationImageFilterBase.h" #include "itkTestingMacros.h" +#include // For mt19937. int itkVoronoiSegmentationImageFilterTest(int argc, char * argv[]) @@ -53,18 +54,23 @@ itkVoronoiSegmentationImageFilterTest(int argc, char * argv[]) inputImage->SetRegions(region); inputImage->Allocate(); + std::mt19937 randomNumberEngine{}; itk::ImageRegionIteratorWithIndex it(inputImage, region); // Background: random field with mean: 500, std: 50 + std::uniform_int_distribution backgroundRandomNumberDistribution(450, 550); + std::cout << "Setting background random pattern image" << std::endl; while (!it.IsAtEnd()) { - it.Set(static_cast(vnl_sample_uniform(450, 550))); + it.Set(backgroundRandomNumberDistribution(randomNumberEngine)); ++it; } // Object (2): random field with mean: 520, std: 20 + std::uniform_int_distribution forgroundRandomNumberDistribution(500, 540); + std::cout << "Defining object #2" << std::endl; for (unsigned int i = 30; i < 94; ++i) { @@ -72,7 +78,7 @@ itkVoronoiSegmentationImageFilterTest(int argc, char * argv[]) for (unsigned int j = 30; j < 94; ++j) { index[1] = j; - inputImage->SetPixel(index, static_cast(vnl_sample_uniform(500, 540))); + inputImage->SetPixel(index, forgroundRandomNumberDistribution(randomNumberEngine)); } } @@ -82,7 +88,7 @@ itkVoronoiSegmentationImageFilterTest(int argc, char * argv[]) for (unsigned int j = 150; j < 214; ++j) { index[1] = j; - inputImage->SetPixel(index, static_cast(vnl_sample_uniform(500, 540))); + inputImage->SetPixel(index, forgroundRandomNumberDistribution(randomNumberEngine)); } } diff --git a/Modules/Segmentation/Voronoi/test/itkVoronoiSegmentationRGBImageFilterTest.cxx b/Modules/Segmentation/Voronoi/test/itkVoronoiSegmentationRGBImageFilterTest.cxx index a0d77232880..8393c69605e 100644 --- a/Modules/Segmentation/Voronoi/test/itkVoronoiSegmentationRGBImageFilterTest.cxx +++ b/Modules/Segmentation/Voronoi/test/itkVoronoiSegmentationRGBImageFilterTest.cxx @@ -23,9 +23,11 @@ #include // For generate. #include +#include // For mt19937. // type alias for all functions using PixelType = itk::RGBPixel; +using PixelComponentType = PixelType::ComponentType; using ImageType = itk::Image; using SegmentationType = itk::Image; using ReaderType = itk::ImageFileReader; @@ -69,19 +71,25 @@ SetUpInputImage() inputImage->SetRegions(region); inputImage->Allocate(); + std::mt19937 randomNumberEngine{}; + // add background random field + std::uniform_int_distribution<> backgroundRandomNumberDistribution(bgMean - bgStd, bgMean + bgStd); + itk::ImageRegionIterator iter(inputImage, region); while (!iter.IsAtEnd()) { PixelType px; - std::generate(px.begin(), px.end(), [] { - return static_cast(vnl_sample_uniform(bgMean - bgStd, bgMean + bgStd)); + std::generate(px.begin(), px.end(), [&randomNumberEngine, &backgroundRandomNumberDistribution] { + return static_cast(backgroundRandomNumberDistribution(randomNumberEngine)); }); iter.Set(px); ++iter; } // add objects to image + std::uniform_int_distribution<> forgroundRandomNumberDistribution(fgMean - fgStd, fgMean + fgStd); + for (unsigned int x = objAStartX; x < objAEndX; ++x) { for (unsigned int y = objAStartY; y < objAEndY; ++y) @@ -91,8 +99,8 @@ SetUpInputImage() idx[1] = y; PixelType px; - std::generate(px.begin(), px.end(), [] { - return static_cast(vnl_sample_uniform(fgMean - fgStd, fgMean + fgStd)); + std::generate(px.begin(), px.end(), [&randomNumberEngine, &forgroundRandomNumberDistribution] { + return static_cast(forgroundRandomNumberDistribution(randomNumberEngine)); }); inputImage->SetPixel(idx, px); } @@ -106,8 +114,8 @@ SetUpInputImage() idx[1] = y; PixelType px; - std::generate(px.begin(), px.end(), [] { - return static_cast(vnl_sample_uniform(fgMean - fgStd, fgMean + fgStd)); + std::generate(px.begin(), px.end(), [&randomNumberEngine, &forgroundRandomNumberDistribution] { + return static_cast(forgroundRandomNumberDistribution(randomNumberEngine)); }); inputImage->SetPixel(idx, px); }