diff --git a/Modules/Registration/Metricsv4/wrapping/itkANTSNeighborhoodCorrelationImageToImageMetricv4.wrap b/Modules/Registration/Metricsv4/wrapping/itkANTSNeighborhoodCorrelationImageToImageMetricv4.wrap index 0c37b4fe32e..5cf212cb33e 100644 --- a/Modules/Registration/Metricsv4/wrapping/itkANTSNeighborhoodCorrelationImageToImageMetricv4.wrap +++ b/Modules/Registration/Metricsv4/wrapping/itkANTSNeighborhoodCorrelationImageToImageMetricv4.wrap @@ -1,3 +1,8 @@ itk_wrap_class("itk::ANTSNeighborhoodCorrelationImageToImageMetricv4" POINTER) -itk_wrap_image_filter("${WRAP_ITK_REAL}" 2 2+) +foreach(d ${ITK_WRAP_IMAGE_DIMS}) + foreach(t ${WRAP_ITK_REAL}) + itk_wrap_template("${ITKM_${t}}${d}${ITKM_${t}}${d}I${ITKM_${t}}${d}" + "itk::Image< ${ITKT_${t}}, ${d} >, itk::Image< ${ITKT_${t}}, ${d} >, itk::Image< ${ITKT_${t}}, ${d} >") + endforeach() +endforeach() itk_end_wrap_class() diff --git a/Modules/Registration/Metricsv4/wrapping/itkCorrelationImageToImageMetricv4.wrap b/Modules/Registration/Metricsv4/wrapping/itkCorrelationImageToImageMetricv4.wrap index d9d91ae24df..760969a0873 100644 --- a/Modules/Registration/Metricsv4/wrapping/itkCorrelationImageToImageMetricv4.wrap +++ b/Modules/Registration/Metricsv4/wrapping/itkCorrelationImageToImageMetricv4.wrap @@ -1,3 +1,8 @@ itk_wrap_class("itk::CorrelationImageToImageMetricv4" POINTER) -itk_wrap_image_filter("${WRAP_ITK_REAL}" 2 2+) +foreach(d ${ITK_WRAP_IMAGE_DIMS}) + foreach(t ${WRAP_ITK_REAL}) + itk_wrap_template("${ITKM_${t}}${d}${ITKM_${t}}${d}I${ITKM_${t}}${d}" + "itk::Image< ${ITKT_${t}}, ${d} >, itk::Image< ${ITKT_${t}}, ${d} >, itk::Image< ${ITKT_${t}}, ${d} >") + endforeach() +endforeach() itk_end_wrap_class() diff --git a/Modules/Registration/Metricsv4/wrapping/itkDemonsImageToImageMetricv4.wrap b/Modules/Registration/Metricsv4/wrapping/itkDemonsImageToImageMetricv4.wrap index 8ce08829710..f73d12e6278 100644 --- a/Modules/Registration/Metricsv4/wrapping/itkDemonsImageToImageMetricv4.wrap +++ b/Modules/Registration/Metricsv4/wrapping/itkDemonsImageToImageMetricv4.wrap @@ -1,3 +1,8 @@ itk_wrap_class("itk::DemonsImageToImageMetricv4" POINTER) -itk_wrap_image_filter("${WRAP_ITK_REAL}" 2 2+) +foreach(d ${ITK_WRAP_IMAGE_DIMS}) + foreach(t ${WRAP_ITK_REAL}) + itk_wrap_template("${ITKM_${t}}${d}${ITKM_${t}}${d}I${ITKM_${t}}${d}" + "itk::Image< ${ITKT_${t}}, ${d} >, itk::Image< ${ITKT_${t}}, ${d} >, itk::Image< ${ITKT_${t}}, ${d} >") + endforeach() +endforeach() itk_end_wrap_class() diff --git a/Modules/Registration/Metricsv4/wrapping/itkImageToImageMetricv4.wrap b/Modules/Registration/Metricsv4/wrapping/itkImageToImageMetricv4.wrap index 672f8baa183..8580ffdb699 100644 --- a/Modules/Registration/Metricsv4/wrapping/itkImageToImageMetricv4.wrap +++ b/Modules/Registration/Metricsv4/wrapping/itkImageToImageMetricv4.wrap @@ -1,8 +1,8 @@ itk_wrap_class("itk::ImageToImageMetricv4" POINTER_WITH_SUPERCLASS) -foreach(d ${ITK_WRAP_DIMS}) +foreach(d ${ITK_WRAP_IMAGE_DIMS}) foreach(t ${WRAP_ITK_REAL}) - itk_wrap_template("${ITKM_${t}}${d}${ITKM_${t}}${d}" - "itk::Image< ${ITKT_${t}}, ${d} >, itk::Image< ${ITKT_${t}}, ${d} >") + itk_wrap_template("${ITKM_${t}}${d}${ITKM_${t}}${d}I${ITKM_${t}}${d}" + "itk::Image< ${ITKT_${t}}, ${d} >, itk::Image< ${ITKT_${t}}, ${d} >, itk::Image< ${ITKT_${t}}, ${d} >") endforeach() endforeach() itk_end_wrap_class() diff --git a/Modules/Registration/Metricsv4/wrapping/itkJointHistogramMutualInformationImageToImageMetricv4.wrap b/Modules/Registration/Metricsv4/wrapping/itkJointHistogramMutualInformationImageToImageMetricv4.wrap index 31ec99c4805..4656e4c2b2e 100644 --- a/Modules/Registration/Metricsv4/wrapping/itkJointHistogramMutualInformationImageToImageMetricv4.wrap +++ b/Modules/Registration/Metricsv4/wrapping/itkJointHistogramMutualInformationImageToImageMetricv4.wrap @@ -1,3 +1,8 @@ itk_wrap_class("itk::JointHistogramMutualInformationImageToImageMetricv4" POINTER) -itk_wrap_image_filter("${WRAP_ITK_REAL}" 2 2+) +foreach(d ${ITK_WRAP_IMAGE_DIMS}) + foreach(t ${WRAP_ITK_REAL}) + itk_wrap_template("${ITKM_${t}}${d}${ITKM_${t}}${d}I${ITKM_${t}}${d}" + "itk::Image< ${ITKT_${t}}, ${d} >, itk::Image< ${ITKT_${t}}, ${d} >, itk::Image< ${ITKT_${t}}, ${d} >") + endforeach() +endforeach() itk_end_wrap_class() diff --git a/Modules/Registration/Metricsv4/wrapping/itkMattesMutualInformationImageToImageMetricv4.wrap b/Modules/Registration/Metricsv4/wrapping/itkMattesMutualInformationImageToImageMetricv4.wrap index 4ec58d4591a..54a0fc18424 100644 --- a/Modules/Registration/Metricsv4/wrapping/itkMattesMutualInformationImageToImageMetricv4.wrap +++ b/Modules/Registration/Metricsv4/wrapping/itkMattesMutualInformationImageToImageMetricv4.wrap @@ -1,3 +1,8 @@ itk_wrap_class("itk::MattesMutualInformationImageToImageMetricv4" POINTER_WITH_2_SUPERCLASSES) -itk_wrap_image_filter("${WRAP_ITK_REAL}" 2 2+) +foreach(d ${ITK_WRAP_IMAGE_DIMS}) + foreach(t ${WRAP_ITK_REAL}) + itk_wrap_template("${ITKM_${t}}${d}${ITKM_${t}}${d}I${ITKM_${t}}${d}" + "itk::Image< ${ITKT_${t}}, ${d} >, itk::Image< ${ITKT_${t}}, ${d} >, itk::Image< ${ITKT_${t}}, ${d} >") + endforeach() +endforeach() itk_end_wrap_class() diff --git a/Modules/Registration/Metricsv4/wrapping/itkMeanSquaresImageToImageMetricv4.wrap b/Modules/Registration/Metricsv4/wrapping/itkMeanSquaresImageToImageMetricv4.wrap index a6cea246c65..cda92fa4119 100644 --- a/Modules/Registration/Metricsv4/wrapping/itkMeanSquaresImageToImageMetricv4.wrap +++ b/Modules/Registration/Metricsv4/wrapping/itkMeanSquaresImageToImageMetricv4.wrap @@ -1,3 +1,8 @@ itk_wrap_class("itk::MeanSquaresImageToImageMetricv4" POINTER_WITH_2_SUPERCLASSES) -itk_wrap_image_filter("${WRAP_ITK_REAL}" 2 2+) +foreach(d ${ITK_WRAP_IMAGE_DIMS}) + foreach(t ${WRAP_ITK_REAL}) + itk_wrap_template("${ITKM_${t}}${d}${ITKM_${t}}${d}I${ITKM_${t}}${d}" + "itk::Image< ${ITKT_${t}}, ${d} >, itk::Image< ${ITKT_${t}}, ${d} >, itk::Image< ${ITKT_${t}}, ${d} >") + endforeach() +endforeach() itk_end_wrap_class() diff --git a/Modules/Registration/Metricsv4/wrapping/itkObjectToObjectMultiMetricv4.wrap b/Modules/Registration/Metricsv4/wrapping/itkObjectToObjectMultiMetricv4.wrap new file mode 100644 index 00000000000..7c78db75c43 --- /dev/null +++ b/Modules/Registration/Metricsv4/wrapping/itkObjectToObjectMultiMetricv4.wrap @@ -0,0 +1,7 @@ +itk_wrap_class("itk::ObjectToObjectMultiMetricv4" POINTER) +foreach(d ${ITK_WRAP_IMAGE_DIMS}) + foreach(t ${WRAP_ITK_REAL}) + itk_wrap_template("${d}${d}I${ITKM_${t}}${d}" "${d},${d},itk::Image< ${ITKT_${t}}, ${d} >") + endforeach() +endforeach() +itk_end_wrap_class() diff --git a/Modules/Registration/Metricsv4/wrapping/test/CMakeLists.txt b/Modules/Registration/Metricsv4/wrapping/test/CMakeLists.txt index 636c94952b6..9469407c001 100644 --- a/Modules/Registration/Metricsv4/wrapping/test/CMakeLists.txt +++ b/Modules/Registration/Metricsv4/wrapping/test/CMakeLists.txt @@ -59,6 +59,11 @@ if(ITK_WRAP_PYTHON) EXPRESSION "instance = itk.MeanSquaresImageToImageMetricv4.New()" ) + itk_python_add_test( + NAME itkObjectToObjectMultiMetricv4PythonTest + COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/itkObjectToObjectMultiMetricv4Test.py + ) + itk_python_expression_add_test( NAME itkPointSetToPointSetMetricv4PythonTest EXPRESSION "instance = itk.PointSetToPointSetMetricv4.New()" diff --git a/Modules/Registration/Metricsv4/wrapping/test/itkObjectToObjectMultiMetricv4Test.py b/Modules/Registration/Metricsv4/wrapping/test/itkObjectToObjectMultiMetricv4Test.py new file mode 100644 index 00000000000..08d735113c1 --- /dev/null +++ b/Modules/Registration/Metricsv4/wrapping/test/itkObjectToObjectMultiMetricv4Test.py @@ -0,0 +1,48 @@ +# ========================================================================== +# +# Copyright NumFOCUS +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# ========================================================================== + +import itk + +# Test with float images +Dimension = 2 +ImageType = itk.Image[itk.F, Dimension] + +# Test basic instantiation +multi_metric = itk.ObjectToObjectMultiMetricv4[Dimension, Dimension, ImageType].New() +assert multi_metric is not None + +# Create a simple metric to add - now with explicit TVirtualImage +ms_metric = itk.MeanSquaresImageToImageMetricv4[ImageType, ImageType, ImageType].New() +assert ms_metric is not None + +# Add metric to the multi-metric +multi_metric.AddMetric(ms_metric) + +# Test that we can get the number of metrics +assert multi_metric.GetNumberOfMetrics() == 1 + +# Set metric weights +weights = itk.Array[itk.D](1) +weights[0] = 0.5 +multi_metric.SetMetricWeights(weights) + +# Verify weights were set +retrieved_weights = multi_metric.GetMetricWeights() +assert retrieved_weights.GetSize() == 1 + +print("Test passed!")