From 6e96da595662fb1ad117f558ee060a265c683f4f Mon Sep 17 00:00:00 2001 From: Matt McCormick Date: Thu, 16 May 2024 15:45:29 -0400 Subject: [PATCH] BUG: Wrap SymmetricEigenAnalysisImageFilter with CovariantVector Image output The default template parameter output, an Image of SymmetricSecondRankTensor, is not correct or valid. The output of this filter is an image of eigenvectors. Wrap with an Image of CovariantVector along with base classes. Also remove the invalid default template parameter output. Closes #4520 --- Modules/Core/Common/wrapping/itkImageToImageFilterB.wrap | 8 ++++++++ Modules/Core/Common/wrapping/itkInPlaceImageFilterB.wrap | 7 +++++++ .../include/itkSymmetricEigenAnalysisImageFilter.h | 2 +- .../wrapping/itkSymmetricEigenAnalysisImageFilter.wrap | 4 ++-- 4 files changed, 18 insertions(+), 3 deletions(-) diff --git a/Modules/Core/Common/wrapping/itkImageToImageFilterB.wrap b/Modules/Core/Common/wrapping/itkImageToImageFilterB.wrap index 8bd49347a7d..4faba59706f 100644 --- a/Modules/Core/Common/wrapping/itkImageToImageFilterB.wrap +++ b/Modules/Core/Common/wrapping/itkImageToImageFilterB.wrap @@ -1,3 +1,4 @@ +itk_wrap_include("itkSymmetricSecondRankTensor.h") itk_wrap_include("itkPhasedArray3DSpecialCoordinatesImage.h") itk_wrap_class("itk::ImageToImageFilter" POINTER) @@ -115,4 +116,11 @@ foreach(t3 ${WRAP_ITK_COMPLEX_REAL}) "itk::PhasedArray3DSpecialCoordinatesImage< ${ITKT_${t3}} >, itk::PhasedArray3DSpecialCoordinatesImage< ${ITKT_${t3}} >" ) endforeach() + +# SymmetricSecondRankTensor +# SymmetricEigenAnalysisImageFilter +foreach(d ${ITK_WRAP_IMAGE_DIMS}) + itk_wrap_template("${ITKM_ISSRT${ITKM_D}${d}${d}}I${ITKM_CV${ITKM_D}${d}}${d}" "${ITKT_ISSRT${ITKM_D}${d}${d}}, itk::Image< ${ITKT_CV${ITKM_D}${d}}, ${d} >") +endforeach() + itk_end_wrap_class() diff --git a/Modules/Core/Common/wrapping/itkInPlaceImageFilterB.wrap b/Modules/Core/Common/wrapping/itkInPlaceImageFilterB.wrap index fbb44d2a517..7fbcd7798f2 100644 --- a/Modules/Core/Common/wrapping/itkInPlaceImageFilterB.wrap +++ b/Modules/Core/Common/wrapping/itkInPlaceImageFilterB.wrap @@ -1,4 +1,5 @@ itk_wrap_include("itkPhasedArray3DSpecialCoordinatesImage.h") +itk_wrap_include("itkSymmetricSecondRankTensor.h") itk_wrap_class("itk::InPlaceImageFilter" POINTER) # VectorImage <-> scalar unique(to_types "UC;${WRAP_ITK_SCALAR}") @@ -49,4 +50,10 @@ foreach(t ${WRAP_ITK_SCALAR}) endforeach() endforeach() +# SymmetricSecondRankTensor +# SymmetricEigenAnalysisImageFilter +foreach(d ${ITK_WRAP_IMAGE_DIMS}) + itk_wrap_template("${ITKM_ISSRT${ITKM_D}${d}${d}}I${ITKM_CV${ITKM_D}${d}}${d}" "${ITKT_ISSRT${ITKM_D}${d}${d}}, itk::Image< ${ITKT_CV${ITKM_D}${d}}, ${d} >") +endforeach() + itk_end_wrap_class() diff --git a/Modules/Filtering/ImageIntensity/include/itkSymmetricEigenAnalysisImageFilter.h b/Modules/Filtering/ImageIntensity/include/itkSymmetricEigenAnalysisImageFilter.h index e21b47d00e1..825dc1ed92a 100644 --- a/Modules/Filtering/ImageIntensity/include/itkSymmetricEigenAnalysisImageFilter.h +++ b/Modules/Filtering/ImageIntensity/include/itkSymmetricEigenAnalysisImageFilter.h @@ -209,7 +209,7 @@ extern ITKImageIntensity_EXPORT std::ostream & * * \ingroup ITKImageIntensity */ -template +template class SymmetricEigenAnalysisImageFilter : public UnaryFunctorImageFilter< TInputImage, diff --git a/Modules/Filtering/ImageIntensity/wrapping/itkSymmetricEigenAnalysisImageFilter.wrap b/Modules/Filtering/ImageIntensity/wrapping/itkSymmetricEigenAnalysisImageFilter.wrap index 3ac510ec25f..038eed920bd 100644 --- a/Modules/Filtering/ImageIntensity/wrapping/itkSymmetricEigenAnalysisImageFilter.wrap +++ b/Modules/Filtering/ImageIntensity/wrapping/itkSymmetricEigenAnalysisImageFilter.wrap @@ -4,8 +4,8 @@ itk_wrap_include("itkSymmetricSecondRankTensor.h") itk_wrap_simple_class("itk::SymmetricEigenAnalysisEnums") -itk_wrap_class("itk::SymmetricEigenAnalysisImageFilter" POINTER_WITH_2_SUPERCLASSES) +itk_wrap_class("itk::SymmetricEigenAnalysisImageFilter" POINTER_WITH_SUPERCLASS) foreach(d ${ITK_WRAP_IMAGE_DIMS}) - itk_wrap_template("${ITKM_ISSRT${ITKM_D}${d}${d}}" "${ITKT_ISSRT${ITKM_D}${d}${d}}") + itk_wrap_template("${ITKM_ISSRT${ITKM_D}${d}${d}}I${ITKM_CV${ITKM_D}${d}}${d}" "${ITKT_ISSRT${ITKM_D}${d}${d}}, itk::Image< ${ITKT_CV${ITKM_D}${d}}, ${d} >") endforeach() itk_end_wrap_class()