Skip to content

Commit 6568876

Browse files
N-Dekkerhjmjohnson
authored andcommitted
ENH: Replace "vnl_sample.h" with <random> in VoronoiSegmentation tests
Follow-up to pull request #5611 commit f7daf24 "ENH: Replace "vnl/vnl_sample.h" with `<random>`, in Core tests"
1 parent a50582d commit 6568876

File tree

2 files changed

+23
-9
lines changed

2 files changed

+23
-9
lines changed

Modules/Segmentation/Voronoi/test/itkVoronoiSegmentationImageFilterTest.cxx

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
#include "itkVoronoiSegmentationImageFilter.h"
2020
#include "itkVoronoiSegmentationImageFilterBase.h"
2121
#include "itkTestingMacros.h"
22+
#include <random> // For mt19937.
2223

2324
int
2425
itkVoronoiSegmentationImageFilterTest(int argc, char * argv[])
@@ -53,26 +54,31 @@ itkVoronoiSegmentationImageFilterTest(int argc, char * argv[])
5354
inputImage->SetRegions(region);
5455
inputImage->Allocate();
5556

57+
std::mt19937 randomNumberEngine{};
5658

5759
itk::ImageRegionIteratorWithIndex<UShortImage> it(inputImage, region);
5860

5961
// Background: random field with mean: 500, std: 50
62+
std::uniform_int_distribution<unsigned short> backgroundRandomNumberDistribution(450, 550);
63+
6064
std::cout << "Setting background random pattern image" << std::endl;
6165
while (!it.IsAtEnd())
6266
{
63-
it.Set(static_cast<unsigned short>(vnl_sample_uniform(450, 550)));
67+
it.Set(backgroundRandomNumberDistribution(randomNumberEngine));
6468
++it;
6569
}
6670

6771
// Object (2): random field with mean: 520, std: 20
72+
std::uniform_int_distribution<unsigned short> forgroundRandomNumberDistribution(500, 540);
73+
6874
std::cout << "Defining object #2" << std::endl;
6975
for (unsigned int i = 30; i < 94; ++i)
7076
{
7177
index[0] = i;
7278
for (unsigned int j = 30; j < 94; ++j)
7379
{
7480
index[1] = j;
75-
inputImage->SetPixel(index, static_cast<unsigned short>(vnl_sample_uniform(500, 540)));
81+
inputImage->SetPixel(index, forgroundRandomNumberDistribution(randomNumberEngine));
7682
}
7783
}
7884

@@ -82,7 +88,7 @@ itkVoronoiSegmentationImageFilterTest(int argc, char * argv[])
8288
for (unsigned int j = 150; j < 214; ++j)
8389
{
8490
index[1] = j;
85-
inputImage->SetPixel(index, static_cast<unsigned short>(vnl_sample_uniform(500, 540)));
91+
inputImage->SetPixel(index, forgroundRandomNumberDistribution(randomNumberEngine));
8692
}
8793
}
8894

Modules/Segmentation/Voronoi/test/itkVoronoiSegmentationRGBImageFilterTest.cxx

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,11 @@
2323

2424
#include <algorithm> // For generate.
2525
#include <iostream>
26+
#include <random> // For mt19937.
2627

2728
// type alias for all functions
2829
using PixelType = itk::RGBPixel<unsigned char>;
30+
using PixelComponentType = PixelType::ComponentType;
2931
using ImageType = itk::Image<PixelType, 2>;
3032
using SegmentationType = itk::Image<unsigned char, 2>;
3133
using ReaderType = itk::ImageFileReader<ImageType>;
@@ -69,19 +71,25 @@ SetUpInputImage()
6971
inputImage->SetRegions(region);
7072
inputImage->Allocate();
7173

74+
std::mt19937 randomNumberEngine{};
75+
7276
// add background random field
77+
std::uniform_int_distribution<> backgroundRandomNumberDistribution(bgMean - bgStd, bgMean + bgStd);
78+
7379
itk::ImageRegionIterator<ImageType> iter(inputImage, region);
7480
while (!iter.IsAtEnd())
7581
{
7682
PixelType px;
77-
std::generate(px.begin(), px.end(), [] {
78-
return static_cast<unsigned char>(vnl_sample_uniform(bgMean - bgStd, bgMean + bgStd));
83+
std::generate(px.begin(), px.end(), [&randomNumberEngine, &backgroundRandomNumberDistribution] {
84+
return static_cast<PixelComponentType>(backgroundRandomNumberDistribution(randomNumberEngine));
7985
});
8086
iter.Set(px);
8187
++iter;
8288
}
8389

8490
// add objects to image
91+
std::uniform_int_distribution<> forgroundRandomNumberDistribution(fgMean - fgStd, fgMean + fgStd);
92+
8593
for (unsigned int x = objAStartX; x < objAEndX; ++x)
8694
{
8795
for (unsigned int y = objAStartY; y < objAEndY; ++y)
@@ -91,8 +99,8 @@ SetUpInputImage()
9199
idx[1] = y;
92100

93101
PixelType px;
94-
std::generate(px.begin(), px.end(), [] {
95-
return static_cast<unsigned char>(vnl_sample_uniform(fgMean - fgStd, fgMean + fgStd));
102+
std::generate(px.begin(), px.end(), [&randomNumberEngine, &forgroundRandomNumberDistribution] {
103+
return static_cast<PixelComponentType>(forgroundRandomNumberDistribution(randomNumberEngine));
96104
});
97105
inputImage->SetPixel(idx, px);
98106
}
@@ -106,8 +114,8 @@ SetUpInputImage()
106114
idx[1] = y;
107115

108116
PixelType px;
109-
std::generate(px.begin(), px.end(), [] {
110-
return static_cast<unsigned char>(vnl_sample_uniform(fgMean - fgStd, fgMean + fgStd));
117+
std::generate(px.begin(), px.end(), [&randomNumberEngine, &forgroundRandomNumberDistribution] {
118+
return static_cast<PixelComponentType>(forgroundRandomNumberDistribution(randomNumberEngine));
111119
});
112120
inputImage->SetPixel(idx, px);
113121
}

0 commit comments

Comments
 (0)