itk_module_test()
set(ITKConvolutionTests
    itkConvolutionImageFilterTest.cxx
    itkConvolutionImageFilterTestInt.cxx
    itkConvolutionImageFilterDeltaFunctionTest.cxx
    itkConvolutionImageFilterStreamingTest.cxx
    itkConvolutionImageFilterSubregionTest.cxx
    itkFFTConvolutionImageFilterTest.cxx
    itkFFTConvolutionImageFilterTestInt.cxx
    itkFFTConvolutionImageFilterDeltaFunctionTest.cxx
    itkNormalizedCorrelationImageFilterTest.cxx
    itkMaskedFFTNormalizedCorrelationImageFilterTest.cxx
    itkFFTNormalizedCorrelationImageFilterTest.cxx)

createtestdriver(ITKConvolution "${ITKConvolution-Test_LIBRARIES}" "${ITKConvolutionTests}")

itk_add_test(
  NAME
  itkConvolutionImageFilterTestSobelX
  COMMAND
  ITKConvolutionTestDriver
  --compare
  DATA{Baseline/itkConvolutionImageFilterTestSobelX.nrrd}
  ${ITK_TEST_OUTPUT_DIR}/itkConvolutionImageFilterTestSobelX.nrrd
  itkConvolutionImageFilterTest
  DATA{${ITK_DATA_ROOT}/Input/cthead1.png}
  DATA{${ITK_DATA_ROOT}/Input/sobel_x.nii.gz}
  ${ITK_TEST_OUTPUT_DIR}/itkConvolutionImageFilterTestSobelX.nrrd)
itk_add_test(
  NAME
  itkConvolutionImageFilterTestSobelY
  COMMAND
  ITKConvolutionTestDriver
  --compare
  DATA{Baseline/itkConvolutionImageFilterTestSobelY.nrrd}
  ${ITK_TEST_OUTPUT_DIR}/itkConvolutionImageFilterTestSobelY.nrrd
  itkConvolutionImageFilterTest
  DATA{${ITK_DATA_ROOT}/Input/cthead1.png}
  DATA{${ITK_DATA_ROOT}/Input/sobel_y.nii.gz}
  ${ITK_TEST_OUTPUT_DIR}/itkConvolutionImageFilterTestSobelY.nrrd)
itk_add_test(
  NAME
  itkConvolutionImageFilterTest4x4Mean
  COMMAND
  ITKConvolutionTestDriver
  --compare
  DATA{Baseline/itkConvolutionImageFilterTest4x4Mean.png}
  ${ITK_TEST_OUTPUT_DIR}/itkConvolutionImageFilterTest4x4Mean.png
  itkConvolutionImageFilterTestInt
  DATA{${ITK_DATA_ROOT}/Input/cthead1.png}
  DATA{Input/4x4-constant.png}
  ${ITK_TEST_OUTPUT_DIR}/itkConvolutionImageFilterTest4x4Mean.png
  1
  SAME)
itk_add_test(
  NAME
  itkConvolutionImageFilterTest4x5Mean
  COMMAND
  ITKConvolutionTestDriver
  --compare
  DATA{Baseline/itkConvolutionImageFilterTest4x5Mean.png}
  ${ITK_TEST_OUTPUT_DIR}/itkConvolutionImageFilterTest4x5Mean.png
  itkConvolutionImageFilterTestInt
  DATA{${ITK_DATA_ROOT}/Input/cthead1.png}
  DATA{Input/4x5-constant.png}
  ${ITK_TEST_OUTPUT_DIR}/itkConvolutionImageFilterTest4x5Mean.png
  1
  SAME)
itk_add_test(
  NAME
  itkConvolutionImageFilterTest5x5Mean
  COMMAND
  ITKConvolutionTestDriver
  --compare
  DATA{Baseline/itkConvolutionImageFilterTest5x5Mean.png}
  ${ITK_TEST_OUTPUT_DIR}/itkConvolutionImageFilterTest5x5Mean.png
  itkConvolutionImageFilterTestInt
  DATA{${ITK_DATA_ROOT}/Input/cthead1.png}
  DATA{${ITK_DATA_ROOT}/Input/5x5-constant.png}
  ${ITK_TEST_OUTPUT_DIR}/itkConvolutionImageFilterTest5x5Mean.png
  1
  SAME)
itk_add_test(
  NAME
  itkConvolutionImageFilterTest4x4MeanValidRegion
  COMMAND
  ITKConvolutionTestDriver
  --compare
  DATA{Baseline/itkConvolutionImageFilterTest4x4MeanValidRegion.png}
  ${ITK_TEST_OUTPUT_DIR}/itkConvolutionImageFilterTest4x4MeanValidRegion.png
  itkConvolutionImageFilterTestInt
  DATA{${ITK_DATA_ROOT}/Input/cthead1.png}
  DATA{Input/4x4-constant.png}
  ${ITK_TEST_OUTPUT_DIR}/itkConvolutionImageFilterTest4x4MeanValidRegion.png
  1
  VALID)
itk_add_test(
  NAME
  itkConvolutionImageFilterTest4x5MeanValidRegion
  COMMAND
  ITKConvolutionTestDriver
  --compare
  DATA{Baseline/itkConvolutionImageFilterTest4x5MeanValidRegion.png}
  ${ITK_TEST_OUTPUT_DIR}/itkConvolutionImageFilterTest4x5MeanValidRegion.png
  itkConvolutionImageFilterTestInt
  DATA{${ITK_DATA_ROOT}/Input/cthead1.png}
  DATA{Input/4x5-constant.png}
  ${ITK_TEST_OUTPUT_DIR}/itkConvolutionImageFilterTest4x5MeanValidRegion.png
  1
  VALID)
itk_add_test(
  NAME
  itkConvolutionImageFilterTest5x5MeanValidRegion
  COMMAND
  ITKConvolutionTestDriver
  --compare
  DATA{Baseline/itkConvolutionImageFilterTest5x5MeanValidRegion.png}
  ${ITK_TEST_OUTPUT_DIR}/itkConvolutionImageFilterTest5x5MeanValidRegion.png
  itkConvolutionImageFilterTestInt
  DATA{${ITK_DATA_ROOT}/Input/cthead1.png}
  DATA{${ITK_DATA_ROOT}/Input/5x5-constant.png}
  ${ITK_TEST_OUTPUT_DIR}/itkConvolutionImageFilterTest5x5MeanValidRegion.png
  1
  VALID)
itk_add_test(
  NAME
  itkConvolutionImageFilterDeltaFunctionTest
  COMMAND
  ITKConvolutionTestDriver
  --compare
  DATA{${ITK_DATA_ROOT}/Input/level.png}
  ${ITK_TEST_OUTPUT_DIR}/itkConvolutionImageFilterDeltaFunctionTest.png
  itkConvolutionImageFilterDeltaFunctionTest
  DATA{${ITK_DATA_ROOT}/Input/level.png}
  ${ITK_TEST_OUTPUT_DIR}/itkConvolutionImageFilterDeltaFunctionTest.png)

# FFT convolution tests
itk_add_test(
  NAME
  itkFFTConvolutionImageFilterTestSobelX
  COMMAND
  ITKConvolutionTestDriver
  --compare
  DATA{Baseline/itkFFTConvolutionImageFilterTestSobelX.nrrd}
  ${ITK_TEST_OUTPUT_DIR}/itkFFTConvolutionImageFilterTestSobelX.nrrd
  itkFFTConvolutionImageFilterTest
  DATA{${ITK_DATA_ROOT}/Input/cthead1.png}
  DATA{${ITK_DATA_ROOT}/Input/sobel_x.nii.gz}
  ${ITK_TEST_OUTPUT_DIR}/itkFFTConvolutionImageFilterTestSobelX.nrrd)
itk_add_test(
  NAME
  itkFFTConvolutionImageFilterTestSobelY
  COMMAND
  ITKConvolutionTestDriver
  --compare
  DATA{Baseline/itkFFTConvolutionImageFilterTestSobelY.nrrd}
  ${ITK_TEST_OUTPUT_DIR}/itkFFTConvolutionImageFilterTestSobelY.nrrd
  itkFFTConvolutionImageFilterTest
  DATA{${ITK_DATA_ROOT}/Input/cthead1.png}
  DATA{${ITK_DATA_ROOT}/Input/sobel_y.nii.gz}
  ${ITK_TEST_OUTPUT_DIR}/itkFFTConvolutionImageFilterTestSobelY.nrrd)
itk_add_test(
  NAME
  itkFFTConvolutionImageFilterTestSobelYPeriodic
  COMMAND
  ITKConvolutionTestDriver
  --compare
  DATA{Baseline/itkConvolutionImageFilterTestSobelYPeriodic.nrrd}
  ${ITK_TEST_OUTPUT_DIR}/itkFFTConvolutionImageFilterTestSobelYPeriodic.nrrd
  itkFFTConvolutionImageFilterTest
  DATA{${ITK_DATA_ROOT}/Input/cthead1.png}
  DATA{${ITK_DATA_ROOT}/Input/sobel_y.nii.gz}
  ${ITK_TEST_OUTPUT_DIR}/itkFFTConvolutionImageFilterTestSobelYPeriodic.nrrd
  2
  0
  SAME
  PERIODIC)
itk_add_test(
  NAME
  itkFFTConvolutionImageFilterTestSobelXConstant
  COMMAND
  ITKConvolutionTestDriver
  --compare
  DATA{Baseline/itkConvolutionImageFilterTestSobelXConstant.nrrd}
  ${ITK_TEST_OUTPUT_DIR}/itkFFTConvolutionImageFilterTestSobelXConstant.nrrd
  itkFFTConvolutionImageFilterTest
  DATA{${ITK_DATA_ROOT}/Input/cthead1.png}
  DATA{${ITK_DATA_ROOT}/Input/sobel_x.nii.gz}
  ${ITK_TEST_OUTPUT_DIR}/itkFFTConvolutionImageFilterTestSobelXConstant.nrrd
  2
  0
  SAME
  CONSTANT)
itk_add_test(
  NAME
  itkFFTConvolutionImageFilterTestSobelXZeroFluxNeumann
  COMMAND
  ITKConvolutionTestDriver
  --compare
  DATA{Baseline/itkConvolutionImageFilterTestSobelXZeroFluxNeumann.nrrd}
  ${ITK_TEST_OUTPUT_DIR}/itkFFTConvolutionImageFilterTestSobelXZeroFluxNeumann.nrrd
  itkFFTConvolutionImageFilterTest
  DATA{${ITK_DATA_ROOT}/Input/cthead1.png}
  DATA{${ITK_DATA_ROOT}/Input/sobel_x.nii.gz}
  ${ITK_TEST_OUTPUT_DIR}/itkFFTConvolutionImageFilterTestSobelXZeroFluxNeumann.nrrd
  2
  0
  VALID
  ZEROFLUXNEUMANN)
itk_add_test(
  NAME
  itkFFTConvolutionImageFilterTest4x4Mean
  COMMAND
  ITKConvolutionTestDriver
  --compare
  DATA{Baseline/itkFFTConvolutionImageFilterTest4x4Mean.png}
  ${ITK_TEST_OUTPUT_DIR}/itkFFTConvolutionImageFilterTest4x4Mean.png
  itkFFTConvolutionImageFilterTestInt
  DATA{${ITK_DATA_ROOT}/Input/cthead1.png}
  DATA{Input/4x4-constant.png}
  ${ITK_TEST_OUTPUT_DIR}/itkFFTConvolutionImageFilterTest4x4Mean.png
  1
  SAME)
itk_add_test(
  NAME
  itkFFTConvolutionImageFilterTest4x5Mean
  COMMAND
  ITKConvolutionTestDriver
  --compare
  DATA{Baseline/itkConvolutionImageFilterTest4x5Mean.png}
  ${ITK_TEST_OUTPUT_DIR}/itkFFTConvolutionImageFilterTest4x5Mean.png
  itkFFTConvolutionImageFilterTestInt
  DATA{${ITK_DATA_ROOT}/Input/cthead1.png}
  DATA{Input/4x5-constant.png}
  ${ITK_TEST_OUTPUT_DIR}/itkFFTConvolutionImageFilterTest4x5Mean.png
  1
  SAME)
itk_add_test(
  NAME
  itkFFTConvolutionImageFilterTest5x5Mean
  COMMAND
  ITKConvolutionTestDriver
  --compare
  DATA{Baseline/itkConvolutionImageFilterTest5x5Mean.png}
  ${ITK_TEST_OUTPUT_DIR}/itkFFTConvolutionImageFilterTest5x5Mean.png
  itkFFTConvolutionImageFilterTestInt
  DATA{${ITK_DATA_ROOT}/Input/cthead1.png}
  DATA{${ITK_DATA_ROOT}/Input/5x5-constant.png}
  ${ITK_TEST_OUTPUT_DIR}/itkFFTConvolutionImageFilterTest5x5Mean.png
  1
  SAME)
itk_add_test(
  NAME
  itkFFTConvolutionImageFilterTest4x4MeanValidRegion
  COMMAND
  ITKConvolutionTestDriver
  --compare
  DATA{Baseline/itkFFTConvolutionImageFilterTest4x4MeanValidRegion.png}
  ${ITK_TEST_OUTPUT_DIR}/itkFFTConvolutionImageFilterTest4x4MeanValidRegion.png
  itkFFTConvolutionImageFilterTestInt
  DATA{${ITK_DATA_ROOT}/Input/cthead1.png}
  DATA{Input/4x4-constant.png}
  ${ITK_TEST_OUTPUT_DIR}/itkFFTConvolutionImageFilterTest4x4MeanValidRegion.png
  1
  VALID)
itk_add_test(
  NAME
  itkFFTConvolutionImageFilterTest4x5MeanValidRegion
  COMMAND
  ITKConvolutionTestDriver
  --compare
  DATA{Baseline/itkConvolutionImageFilterTest4x5MeanValidRegion.png}
  ${ITK_TEST_OUTPUT_DIR}/itkFFTConvolutionImageFilterTest4x5MeanValidRegion.png
  itkFFTConvolutionImageFilterTestInt
  DATA{${ITK_DATA_ROOT}/Input/cthead1.png}
  DATA{Input/4x5-constant.png}
  ${ITK_TEST_OUTPUT_DIR}/itkFFTConvolutionImageFilterTest4x5MeanValidRegion.png
  1
  VALID)
itk_add_test(
  NAME
  itkFFTConvolutionImageFilterTest5x5MeanValidRegion
  COMMAND
  ITKConvolutionTestDriver
  --compare
  DATA{Baseline/itkConvolutionImageFilterTest5x5MeanValidRegion.png}
  ${ITK_TEST_OUTPUT_DIR}/itkFFTConvolutionImageFilterTest5x5MeanValidRegion.png
  itkFFTConvolutionImageFilterTestInt
  DATA{${ITK_DATA_ROOT}/Input/cthead1.png}
  DATA{${ITK_DATA_ROOT}/Input/5x5-constant.png}
  ${ITK_TEST_OUTPUT_DIR}/itkFFTConvolutionImageFilterTest5x5MeanValidRegion.png
  1
  VALID)
itk_add_test(
  NAME
  itkFFTConvolutionImageFilterDeltaFunctionTest
  COMMAND
  ITKConvolutionTestDriver
  --compare
  DATA{${ITK_DATA_ROOT}/Input/level.png}
  ${ITK_TEST_OUTPUT_DIR}/itkFFTConvolutionImageFilterDeltaFunctionTest.png
  itkFFTConvolutionImageFilterDeltaFunctionTest
  DATA{${ITK_DATA_ROOT}/Input/level.png}
  ${ITK_TEST_OUTPUT_DIR}/itkFFTConvolutionImageFilterDeltaFunctionTest.png
  5)

# NCC tests
itk_add_test(
  NAME
  itkNormalizedCorrelationImageFilterTest
  COMMAND
  ITKConvolutionTestDriver
  --compare
  DATA{${ITK_DATA_ROOT}/Baseline/BasicFilters/NormalizedCorrelationImageFilterTest.png}
  ${ITK_TEST_OUTPUT_DIR}/NormalizedCorrelationImageFilterTest.png
  itkNormalizedCorrelationImageFilterTest
  DATA{${ITK_DATA_ROOT}/Input/sf4.png}
  DATA{${ITK_DATA_ROOT}/Input/circle.png}
  ${ITK_TEST_OUTPUT_DIR}/NormalizedCorrelationImageFilterTest.png)

# Masked FFT NCC tests
# Test with three different shapes
itk_add_test(
  NAME
  itkMaskedFFTNormalizedCorrelationImageFilterTest1
  COMMAND
  ITKConvolutionTestDriver
  --compare
  DATA{Baseline/itkMaskedFFTNormalizedCorrelationImageFilterTest1.png}
  ${ITK_TEST_OUTPUT_DIR}/itkMaskedFFTNormalizedCorrelationImageFilterTest1.png
  itkMaskedFFTNormalizedCorrelationImageFilterTest
  DATA{Input/FixedRectangles.png}
  DATA{Input/MovingRectangles.png}
  ${ITK_TEST_OUTPUT_DIR}/itkMaskedFFTNormalizedCorrelationImageFilterTest1.png
  0.1
  DATA{Input/FixedRectangleMask1.png}
  DATA{Input/MovingRectanglesMask.png})
itk_add_test(
  NAME
  itkMaskedFFTNormalizedCorrelationImageFilterTest2
  COMMAND
  ITKConvolutionTestDriver
  --compare
  DATA{Baseline/itkMaskedFFTNormalizedCorrelationImageFilterTest2.png}
  ${ITK_TEST_OUTPUT_DIR}/itkMaskedFFTNormalizedCorrelationImageFilterTest2.png
  itkMaskedFFTNormalizedCorrelationImageFilterTest
  DATA{Input/FixedRectangles.png}
  DATA{Input/MovingRectangles.png}
  ${ITK_TEST_OUTPUT_DIR}/itkMaskedFFTNormalizedCorrelationImageFilterTest2.png
  0.1
  DATA{Input/FixedRectangleMask2.png}
  DATA{Input/MovingRectanglesMask.png})
itk_add_test(
  NAME
  itkMaskedFFTNormalizedCorrelationImageFilterTest3
  COMMAND
  ITKConvolutionTestDriver
  --compare
  DATA{Baseline/itkMaskedFFTNormalizedCorrelationImageFilterTest3.png}
  ${ITK_TEST_OUTPUT_DIR}/itkMaskedFFTNormalizedCorrelationImageFilterTest3.png
  itkMaskedFFTNormalizedCorrelationImageFilterTest
  DATA{Input/FixedRectangles.png}
  DATA{Input/MovingRectangles.png}
  ${ITK_TEST_OUTPUT_DIR}/itkMaskedFFTNormalizedCorrelationImageFilterTest3.png
  0.1
  DATA{Input/FixedRectangleMask3.png}
  DATA{Input/MovingRectanglesMask.png})
# Test with different size images
itk_add_test(
  NAME
  itkMaskedFFTNormalizedCorrelationImageFilterTest4
  COMMAND
  ITKConvolutionTestDriver
  --compare
  DATA{Baseline/itkMaskedFFTNormalizedCorrelationImageFilterTest4.png}
  ${ITK_TEST_OUTPUT_DIR}/itkMaskedFFTNormalizedCorrelationImageFilterTest4.png
  itkMaskedFFTNormalizedCorrelationImageFilterTest
  DATA{Input/FixedRectangles.png}
  DATA{Input/MovingRectanglesCropped.png}
  ${ITK_TEST_OUTPUT_DIR}/itkMaskedFFTNormalizedCorrelationImageFilterTest4.png
  0.1
  DATA{Input/FixedRectangleMask3.png})
# Test with not passing the fixed mask or moving mask.
# Also test with requiring no minimum overlapping pixels. This leads to more noise on the borders.
itk_add_test(
  NAME
  itkMaskedFFTNormalizedCorrelationImageFilterTest5
  COMMAND
  ITKConvolutionTestDriver
  --compare
  DATA{Baseline/itkMaskedFFTNormalizedCorrelationImageFilterTest5.png}
  ${ITK_TEST_OUTPUT_DIR}/itkMaskedFFTNormalizedCorrelationImageFilterTest5.png
  itkMaskedFFTNormalizedCorrelationImageFilterTest
  DATA{Input/FixedRectangles.png}
  DATA{Input/MovingRectangles.png}
  ${ITK_TEST_OUTPUT_DIR}/itkMaskedFFTNormalizedCorrelationImageFilterTest5.png
  0)
# Test with not passing the moving mask. This should be the same as Test3 since the moving mask was set to all ones.
itk_add_test(
  NAME
  itkMaskedFFTNormalizedCorrelationImageFilterTest6
  COMMAND
  ITKConvolutionTestDriver
  --compare
  DATA{Baseline/itkMaskedFFTNormalizedCorrelationImageFilterTest3.png}
  ${ITK_TEST_OUTPUT_DIR}/itkMaskedFFTNormalizedCorrelationImageFilterTest6.png
  itkMaskedFFTNormalizedCorrelationImageFilterTest
  DATA{Input/FixedRectangles.png}
  DATA{Input/MovingRectangles.png}
  ${ITK_TEST_OUTPUT_DIR}/itkMaskedFFTNormalizedCorrelationImageFilterTest6.png
  0.1
  DATA{Input/FixedRectangleMask3.png})

# Standard FFT NCC tests
# Test with three different shapes.
# These are the shapes from FixedRectangles.png used in the MaskedFFTNormalizedCorrelation.
# In this case, FixedRectangles has first been masked with the three masks used.
# Thus, the output of masking first and then correlation can be directly compared with masked correlation.
# It is clear from the resulting images that these results are different and that masked correlation
# outputs the correct results.
itk_add_test(
  NAME
  itkFFTNormalizedCorrelationImageFilterTest1
  COMMAND
  ITKConvolutionTestDriver
  --compare
  DATA{Baseline/itkFFTNormalizedCorrelationImageFilterTest1.png}
  ${ITK_TEST_OUTPUT_DIR}/itkFFTNormalizedCorrelationImageFilterTest1.png
  itkFFTNormalizedCorrelationImageFilterTest
  DATA{Input/FixedRectangle1.png}
  DATA{Input/MovingRectangles.png}
  ${ITK_TEST_OUTPUT_DIR}/itkFFTNormalizedCorrelationImageFilterTest1.png
  0.1)
itk_add_test(
  NAME
  itkFFTNormalizedCorrelationImageFilterTest2
  COMMAND
  ITKConvolutionTestDriver
  --compare
  DATA{Baseline/itkFFTNormalizedCorrelationImageFilterTest2.png}
  ${ITK_TEST_OUTPUT_DIR}/itkFFTNormalizedCorrelationImageFilterTest2.png
  itkFFTNormalizedCorrelationImageFilterTest
  DATA{Input/FixedRectangle2.png}
  DATA{Input/MovingRectangles.png}
  ${ITK_TEST_OUTPUT_DIR}/itkFFTNormalizedCorrelationImageFilterTest2.png
  0.1)
itk_add_test(
  NAME
  itkFFTNormalizedCorrelationImageFilterTest3
  COMMAND
  ITKConvolutionTestDriver
  --compare
  DATA{Baseline/itkFFTNormalizedCorrelationImageFilterTest3.png}
  ${ITK_TEST_OUTPUT_DIR}/itkFFTNormalizedCorrelationImageFilterTest3.png
  itkFFTNormalizedCorrelationImageFilterTest
  DATA{Input/FixedRectangle3.png}
  DATA{Input/MovingRectangles.png}
  ${ITK_TEST_OUTPUT_DIR}/itkFFTNormalizedCorrelationImageFilterTest3.png
  0.1)
# Test with different size images
itk_add_test(
  NAME
  itkFFTNormalizedCorrelationImageFilterTest4
  COMMAND
  ITKConvolutionTestDriver
  --compare
  DATA{Baseline/itkFFTNormalizedCorrelationImageFilterTest4.png}
  ${ITK_TEST_OUTPUT_DIR}/itkFFTNormalizedCorrelationImageFilterTest4.png
  itkMaskedFFTNormalizedCorrelationImageFilterTest
  DATA{Input/FixedRectangle3.png}
  DATA{Input/MovingRectanglesCropped.png}
  ${ITK_TEST_OUTPUT_DIR}/itkFFTNormalizedCorrelationImageFilterTest4.png
  0.1)
# Test NCC of the original fixed and moving images, without masking the fixed image first.
# The result should be the same as Test5 of MaskedFFTNormalizedCorrelation
itk_add_test(
  NAME
  itkFFTNormalizedCorrelationImageFilterTest5
  COMMAND
  ITKConvolutionTestDriver
  --compare
  DATA{Baseline/itkMaskedFFTNormalizedCorrelationImageFilterTest5.png}
  ${ITK_TEST_OUTPUT_DIR}/itkFFTNormalizedCorrelationImageFilterTest5.png
  itkMaskedFFTNormalizedCorrelationImageFilterTest
  DATA{Input/FixedRectangles.png}
  DATA{Input/MovingRectangles.png}
  ${ITK_TEST_OUTPUT_DIR}/itkFFTNormalizedCorrelationImageFilterTest5.png
  0)
# Test with subregion
itk_add_test(
  NAME
  itkConvolutionImageFilterSubregionTest
  COMMAND
  ITKConvolutionTestDriver
  --compare
  DATA{Baseline/itkConvolutionImageFilterSubregionTestOutput.mha}
  ${ITK_TEST_OUTPUT_DIR}/itkConvolutionImageFilterSubregionTestOutput.mha
  itkConvolutionImageFilterSubregionTest
  spatial
  DATA{${ITK_DATA_ROOT}/Input/cthead1.png}
  ${ITK_TEST_OUTPUT_DIR}/itkConvolutionImageFilterSubregionTestOutput.mha
  50
  50
  150
  150
  0
  same
  DATA{${ITK_DATA_ROOT}/Input/sobel_y.nii.gz})
itk_add_test(
  NAME
  itkFFTConvolutionImageFilterSubregionTest
  COMMAND
  ITKConvolutionTestDriver
  --compare
  DATA{Baseline/itkConvolutionImageFilterSubregionTestOutput.mha}
  ${ITK_TEST_OUTPUT_DIR}/itkFFTConvolutionImageFilterSubregionTestOutput.mha
  itkConvolutionImageFilterSubregionTest
  frequency
  DATA{${ITK_DATA_ROOT}/Input/cthead1.png}
  ${ITK_TEST_OUTPUT_DIR}/itkFFTConvolutionImageFilterSubregionTestOutput.mha
  50
  50
  150
  150
  0
  same
  DATA{${ITK_DATA_ROOT}/Input/sobel_y.nii.gz})
itk_add_test(
  NAME
  itkConvolutionImageFilterSubregionTest2
  COMMAND
  ITKConvolutionTestDriver
  --compare
  DATA{Baseline/itkConvolutionImageFilterSubregionTestOutput2.mha}
  ${ITK_TEST_OUTPUT_DIR}/itkConvolutionImageFilterSubregionTestOutput2.mha
  itkConvolutionImageFilterSubregionTest
  spatial
  DATA{${ITK_DATA_ROOT}/Input/cthead1.png}
  ${ITK_TEST_OUTPUT_DIR}/itkConvolutionImageFilterSubregionTestOutput2.mha
  2
  3
  150
  180
  0
  same
  # with inline Gaussian kernel
)
itk_add_test(
  NAME
  itkFFTConvolutionImageFilterSubregionTest2
  COMMAND
  ITKConvolutionTestDriver
  --compare
  DATA{Baseline/itkConvolutionImageFilterSubregionTestOutput2.mha}
  ${ITK_TEST_OUTPUT_DIR}/itkFFTConvolutionImageFilterSubregionTestOutput2.mha
  itkConvolutionImageFilterSubregionTest
  frequency
  DATA{${ITK_DATA_ROOT}/Input/cthead1.png}
  ${ITK_TEST_OUTPUT_DIR}/itkFFTConvolutionImageFilterSubregionTestOutput2.mha
  2
  3
  150
  180
  0
  same
  # with inline Gaussian kernel
)
itk_add_test(
  NAME
  itkFFTConvolutionImageFilterSubregionValidTest
  COMMAND
  ITKConvolutionTestDriver
  --compare
  DATA{Baseline/itkFFTConvolutionImageFilterSubregionValidTestOutput.mha}
  ${ITK_TEST_OUTPUT_DIR}/itkFFTConvolutionImageFilterSubregionValidTestOutput.mha
  itkConvolutionImageFilterSubregionTest
  frequency
  DATA{${ITK_DATA_ROOT}/Input/cthead1.png}
  ${ITK_TEST_OUTPUT_DIR}/itkFFTConvolutionImageFilterSubregionValidTestOutput.mha
  25
  25
  200
  200
  0
  valid
  # with inline Gaussian kernel
)
itk_add_test(
  NAME
  itkFFTConvolutionImageFilterSubregionNormalizeTest
  COMMAND
  ITKConvolutionTestDriver
  --compare
  DATA{Baseline/itkFFTConvolutionImageFilterSubregionNormalizeTestOutput.mha}
  ${ITK_TEST_OUTPUT_DIR}/itkFFTConvolutionImageFilterSubregionNormalizeTestOutput.mha
  itkConvolutionImageFilterSubregionTest
  frequency
  DATA{${ITK_DATA_ROOT}/Input/cthead1.png}
  ${ITK_TEST_OUTPUT_DIR}/itkFFTConvolutionImageFilterSubregionNormalizeTestOutput.mha
  0
  0
  250
  250
  1
  same
  # with inline Gaussian kernel
)
itk_add_test(
  NAME
  itkConvolutionImageFilterStreamingTest
  COMMAND
  ITKConvolutionTestDriver
  --compare
  DATA{Baseline/itkConvolutionImageFilterStreamingTestOutput.mha}
  ${ITK_TEST_OUTPUT_DIR}/itkConvolutionImageFilterStreamingTestOutput.mha
  itkConvolutionImageFilterStreamingTest
  spatial
  DATA{Input/cthead1.mha}
  ${ITK_TEST_OUTPUT_DIR}/itkConvolutionImageFilterStreamingTestOutput.mha
  50
  75
  150
  150)
itk_add_test(
  NAME
  itkFFTConvolutionImageFilterStreamingTest
  COMMAND
  ITKConvolutionTestDriver
  --compare
  DATA{Baseline/itkConvolutionImageFilterStreamingTestOutput.mha}
  ${ITK_TEST_OUTPUT_DIR}/itkFFTConvolutionImageFilterStreamingTestOutput.mha
  itkConvolutionImageFilterStreamingTest
  frequency
  DATA{Input/cthead1.mha}
  ${ITK_TEST_OUTPUT_DIR}/itkFFTConvolutionImageFilterStreamingTestOutput.mha
  50
  75
  150
  150)
itk_add_test(
  NAME
  itkConvolutionImageFilterStreamingValidTest
  COMMAND
  ITKConvolutionTestDriver
  --compare
  DATA{Baseline/itkConvolutionImageFilterStreamingTestOutput.mha}
  ${ITK_TEST_OUTPUT_DIR}/itkConvolutionImageFilterStreamingTestOutput.mha
  itkConvolutionImageFilterStreamingTest
  spatial
  DATA{Input/cthead1.mha}
  ${ITK_TEST_OUTPUT_DIR}/itkConvolutionImageFilterStreamingTestOutput.mha
  50
  75
  150
  150
  valid # use only valid input region (no pad for kernel)
)
itk_add_test(
  NAME
  itkFFTConvolutionImageFilterStreamingValidTest
  COMMAND
  ITKConvolutionTestDriver
  --compare
  DATA{Baseline/itkConvolutionImageFilterStreamingTestOutput.mha}
  ${ITK_TEST_OUTPUT_DIR}/itkFFTConvolutionImageFilterStreamingTestOutput.mha
  itkConvolutionImageFilterStreamingTest
  frequency
  DATA{Input/cthead1.mha}
  ${ITK_TEST_OUTPUT_DIR}/itkFFTConvolutionImageFilterStreamingTestOutput.mha
  50
  75
  150
  150
  valid # use only valid input region (no pad for kernel)
)
