Skip to content

Commit a8beacb

Browse files
authored
Merge pull request #6703 from hjmjohnson/fix-6701-syn-tests-vacuous
BUG: Make the SyN registration tests actually run a registration
2 parents 1897782 + 4e80479 commit a8beacb

2 files changed

Lines changed: 15 additions & 35 deletions

File tree

Modules/Registration/RegistrationMethodsv4/test/itkBSplineSyNImageRegistrationTest.cxx

Lines changed: 9 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ template <unsigned int TDimension>
7777
int
7878
PerformBSplineSyNImageRegistration(int argc, char * argv[])
7979
{
80-
ITK_TEST_EXPECT_TRUE(argc == 4);
80+
ITK_TEST_EXPECT_TRUE(argc == 7);
8181
const unsigned int ImageDimension = TDimension;
8282

8383
using PixelType = double;
@@ -119,11 +119,7 @@ PerformBSplineSyNImageRegistration(int argc, char * argv[])
119119
using GradientDescentOptimizerv4Type = itk::GradientDescentOptimizerv4;
120120
auto * optimizer = dynamic_cast<GradientDescentOptimizerv4Type *>(affineSimple->GetModifiableOptimizer());
121121
ITK_TEST_EXPECT_TRUE(optimizer != nullptr);
122-
#ifdef NDEBUG
123122
optimizer->SetNumberOfIterations(100);
124-
#else
125-
optimizer->SetNumberOfIterations(1);
126-
#endif
127123

128124
using AffineCommandType = CommandIterationUpdate<AffineRegistrationType>;
129125
auto affineObserver = AffineCommandType::New();
@@ -215,15 +211,9 @@ PerformBSplineSyNImageRegistration(int argc, char * argv[])
215211

216212
typename DisplacementFieldRegistrationType::NumberOfIterationsArrayType numberOfIterationsPerLevel;
217213
numberOfIterationsPerLevel.SetSize(3);
218-
#ifdef NDEBUG
219214
numberOfIterationsPerLevel[0] = std::stoi(argv[5]);
220215
numberOfIterationsPerLevel[1] = 2;
221216
numberOfIterationsPerLevel[2] = 1;
222-
#else
223-
numberOfIterationsPerLevel[0] = 1;
224-
numberOfIterationsPerLevel[1] = 1;
225-
numberOfIterationsPerLevel[2] = 1;
226-
#endif
227217
typename DisplacementFieldRegistrationType::ShrinkFactorsArrayType shrinkFactorsPerLevel;
228218
shrinkFactorsPerLevel.SetSize(3);
229219
shrinkFactorsPerLevel[0] = 3;
@@ -361,26 +351,29 @@ PerformBSplineSyNImageRegistration(int argc, char * argv[])
361351
int
362352
itkBSplineSyNImageRegistrationTest(int argc, char * argv[])
363353
{
364-
if (argc < 5)
354+
if (argc != 7)
365355
{
366-
std::cerr << "Missing parameters." << std::endl;
356+
std::cerr << "Incorrect number of parameters." << std::endl;
367357
std::cerr << "Usage: " << itkNameOfTestExecutableMacro(argv);
368358
std::cerr << " imageDimension fixedImage movingImage outputPrefix numberOfDeformableIterations learningRate"
369359
<< std::endl;
370360
return EXIT_FAILURE;
371361
}
372362

363+
int testStatus = EXIT_SUCCESS;
373364
switch (std::stoi(argv[1]))
374365
{
375366
case 2:
376-
PerformBSplineSyNImageRegistration<2>(argc, argv);
367+
testStatus = PerformBSplineSyNImageRegistration<2>(argc, argv);
377368
break;
378369
case 3:
379-
PerformBSplineSyNImageRegistration<3>(argc, argv);
370+
testStatus = PerformBSplineSyNImageRegistration<3>(argc, argv);
380371
break;
381372
default:
382373
std::cerr << "Unsupported dimension" << std::endl;
383374
return EXIT_FAILURE;
384375
}
385-
return EXIT_SUCCESS;
376+
377+
std::cout << "Test finished." << std::endl;
378+
return testStatus;
386379
}

Modules/Registration/RegistrationMethodsv4/test/itkSyNImageRegistrationTest.cxx

Lines changed: 6 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -111,11 +111,7 @@ template <unsigned int TDimension>
111111
int
112112
PerformDisplacementFieldImageRegistration(int argc, char * argv[])
113113
{
114-
if (argc != 5)
115-
{
116-
std::cout << "ERROR: incorrect number of arguments" << std::endl;
117-
return EXIT_FAILURE;
118-
}
114+
ITK_TEST_EXPECT_TRUE(argc == 7);
119115
const unsigned int ImageDimension = TDimension;
120116

121117
using PixelType = double;
@@ -157,11 +153,7 @@ PerformDisplacementFieldImageRegistration(int argc, char * argv[])
157153
using GradientDescentOptimizerv4Type = itk::GradientDescentOptimizerv4;
158154
auto * optimizer = dynamic_cast<GradientDescentOptimizerv4Type *>(affineSimple->GetModifiableOptimizer());
159155
ITK_TEST_EXPECT_TRUE(optimizer != nullptr);
160-
#ifdef NDEBUG
161156
optimizer->SetNumberOfIterations(100);
162-
#else
163-
optimizer->SetNumberOfIterations(1);
164-
#endif
165157

166158
std::cout << "Affine transform" << std::endl;
167159

@@ -265,15 +257,9 @@ PerformDisplacementFieldImageRegistration(int argc, char * argv[])
265257

266258
typename DisplacementFieldRegistrationType::NumberOfIterationsArrayType numberOfIterationsPerLevel;
267259
numberOfIterationsPerLevel.SetSize(3);
268-
#ifdef NDEBUG
269260
numberOfIterationsPerLevel[0] = std::stoi(argv[5]);
270261
numberOfIterationsPerLevel[1] = 2;
271262
numberOfIterationsPerLevel[2] = 1;
272-
#else
273-
numberOfIterationsPerLevel[0] = 1;
274-
numberOfIterationsPerLevel[1] = 1;
275-
numberOfIterationsPerLevel[2] = 1;
276-
#endif
277263
constexpr RealType varianceForUpdateField{ 1.75 };
278264
constexpr RealType varianceForTotalField{ 0.5 };
279265

@@ -464,7 +450,7 @@ PerformDisplacementFieldImageRegistration(int argc, char * argv[])
464450
int
465451
itkSyNImageRegistrationTest(int argc, char * argv[])
466452
{
467-
if (argc < 5)
453+
if (argc != 7)
468454
{
469455
std::cout << itkNameOfTestExecutableMacro(argv)
470456
<< " imageDimension fixedImage movingImage outputPrefix numberOfDeformableIterations learningRate"
@@ -488,13 +474,14 @@ itkSyNImageRegistrationTest(int argc, char * argv[])
488474
displacementFieldRegistration, SyNImageRegistrationMethod, ImageRegistrationMethodv4);
489475

490476

477+
int testStatus = EXIT_SUCCESS;
491478
switch (std::stoi(argv[1]))
492479
{
493480
case 2:
494-
PerformDisplacementFieldImageRegistration<2>(argc, argv);
481+
testStatus = PerformDisplacementFieldImageRegistration<2>(argc, argv);
495482
break;
496483
case 3:
497-
PerformDisplacementFieldImageRegistration<3>(argc, argv);
484+
testStatus = PerformDisplacementFieldImageRegistration<3>(argc, argv);
498485
break;
499486
default:
500487
std::cerr << "Unsupported dimension" << std::endl;
@@ -503,5 +490,5 @@ itkSyNImageRegistrationTest(int argc, char * argv[])
503490

504491

505492
std::cout << "Test finished." << std::endl;
506-
return EXIT_SUCCESS;
493+
return testStatus;
507494
}

0 commit comments

Comments
 (0)