Skip to content

Commit 691d33d

Browse files
committed
ENH: Fix Python wrapping for all VariationalRegistration classes
Fix linker errors in src/ executables by adding ITK_LIBRARIES to the link set. Fix Python wrapping for 7 classes that previously had wrong template argument counts: - Regularizer + 4 derived classes: wrap with single TDisplacementField (Image<Vector<float,D>,D>) instead of 2 scalar images - MultiResolutionFilter: wrap with 3 params matching VariationalRegistrationFilter pattern - StopCriterion: wrap with concrete filter types All 16 classes now have correct Python wrapping.
1 parent c91a212 commit 691d33d

20 files changed

Lines changed: 128 additions & 70 deletions

src/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,9 @@ if(WIN32) # Check if we are on Windows
2424
endif()
2525

2626
add_executable(VariationalRegistration ${VariationalRegistration_SRC})
27-
target_link_libraries(VariationalRegistration ${VariationalRegistration_LIBRARIES})
27+
target_link_libraries(VariationalRegistration ${VariationalRegistration_LIBRARIES} ${ITK_LIBRARIES})
2828

2929
add_executable(VariationalRegistration2D ${VariationalRegistration_SRC})
30-
target_link_libraries(VariationalRegistration2D ${VariationalRegistration_LIBRARIES})
30+
target_link_libraries(VariationalRegistration2D ${VariationalRegistration_LIBRARIES} ${ITK_LIBRARIES})
3131
set_target_properties(VariationalRegistration2D PROPERTIES COMPILE_FLAGS -DUSE_2D_IMPL)
3232

src/VariationalRegistrationMain.cxx

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -640,7 +640,8 @@ main(int argc, char * argv[])
640640
FunctionType::Pointer function;
641641
switch (forceType)
642642
{
643-
case 0: {
643+
case 0:
644+
{
644645
DemonsFunctionType::Pointer demonsFunction = DemonsFunctionType::New();
645646
switch (forceDomain)
646647
{
@@ -658,7 +659,8 @@ main(int argc, char * argv[])
658659
function = demonsFunction;
659660
}
660661
break;
661-
case 1: {
662+
case 1:
663+
{
662664
SSDFunctionType::Pointer ssdFunction = SSDFunctionType::New();
663665
switch (forceDomain)
664666
{
@@ -676,7 +678,8 @@ main(int argc, char * argv[])
676678
function = ssdFunction;
677679
}
678680
break;
679-
case 2: {
681+
case 2:
682+
{
680683
NCCFunctionType::Pointer nccFunction = NCCFunctionType::New();
681684
NCCFunctionType::RadiusType r;
682685
for (unsigned int dim = 0; dim < NCCFunctionType::ImageDimension; dim++)
@@ -719,19 +722,22 @@ main(int argc, char * argv[])
719722
RegularizerType::Pointer regularizer;
720723
switch (regularizerType)
721724
{
722-
case 0: {
725+
case 0:
726+
{
723727
GaussianRegularizerType::Pointer gaussRegularizer = GaussianRegularizerType::New();
724728
gaussRegularizer->SetStandardDeviations(std::sqrt(regulVar));
725729
regularizer = gaussRegularizer;
726730
}
727731
break;
728-
case 1: {
732+
case 1:
733+
{
729734
DiffusionRegularizerType::Pointer diffRegularizer = DiffusionRegularizerType::New();
730735
diffRegularizer->SetAlpha(regulAlpha);
731736
regularizer = diffRegularizer;
732737
}
733738
break;
734-
case 2: {
739+
case 2:
740+
{
735741
#if defined(ITK_USE_FFTWD) || defined(ITK_USE_FFTWF)
736742
ElasticRegularizerType::Pointer elasticRegularizer = ElasticRegularizerType::New();
737743
elasticRegularizer->SetMu(regulMu);
@@ -742,7 +748,8 @@ main(int argc, char * argv[])
742748
#endif
743749
}
744750
break;
745-
case 3: {
751+
case 3:
752+
{
746753
#if defined(ITK_USE_FFTWD) || defined(ITK_USE_FFTWF)
747754
CurvatureRegularizerType::Pointer curvatureRegularizer = CurvatureRegularizerType::New();
748755
curvatureRegularizer->SetAlpha(regulAlpha);
@@ -768,17 +775,20 @@ main(int argc, char * argv[])
768775
RegistrationFilterType::Pointer regFilter;
769776
switch (searchSpace)
770777
{
771-
case 0: {
778+
case 0:
779+
{
772780
regFilter = RegistrationFilterType::New();
773781
break;
774782
}
775-
case 1: {
783+
case 1:
784+
{
776785
DiffeomorphicRegistrationFilterType::Pointer diffeoRegFilter = DiffeomorphicRegistrationFilterType::New();
777786
diffeoRegFilter->SetNumberOfExponentiatorIterations(numberOfExponentiatorIterations);
778787
regFilter = diffeoRegFilter;
779788
break;
780789
}
781-
case 2: {
790+
case 2:
791+
{
782792
SymmetricDiffeomorphicRegistrationFilterType::Pointer symmDiffeoRegFilter =
783793
SymmetricDiffeomorphicRegistrationFilterType::New();
784794
symmDiffeoRegFilter->SetNumberOfExponentiatorIterations(numberOfExponentiatorIterations);

src/win32_compatibility/getopt.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,8 @@
4343
#ifdef _WIN32
4444
/* from <sys/cdefs.h> */
4545
# ifdef __cplusplus
46-
# define __BEGIN_DECLS \
47-
extern "C" \
46+
# define __BEGIN_DECLS \
47+
extern "C" \
4848
{
4949
# define __END_DECLS }
5050
# else

wrapping/CMakeLists.txt

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,28 @@
11
itk_wrap_module(VariationalRegistration)
22

33
set(WRAPPER_SUBMODULE_ORDER
4-
itkContinuousBorderWarpImageFilter
5-
itkVariationalDiffeomorphicRegistrationFilter
4+
# Base regularizer (1-param: TDisplacementField)
5+
itkVariationalRegistrationRegularizer
6+
# Derived regularizers (1-param: TDisplacementField)
67
itkVariationalRegistrationCurvatureRegularizer
7-
itkVariationalRegistrationDemonsFunction
88
itkVariationalRegistrationDiffusionRegularizer
99
itkVariationalRegistrationElasticRegularizer
10-
itkVariationalRegistrationFastNCCFunction
11-
itkVariationalRegistrationFilter
12-
itkVariationalRegistrationFunction
1310
itkVariationalRegistrationGaussianRegularizer
14-
itkVariationalRegistrationMultiResolutionFilter
11+
# 3-parameter filters (TFixedImage, TMovingImage, TDisplacementField)
12+
itkContinuousBorderWarpImageFilter
13+
itkVariationalRegistrationFunction
14+
itkVariationalRegistrationDemonsFunction
15+
itkVariationalRegistrationFastNCCFunction
1516
itkVariationalRegistrationNCCFunction
16-
itkVariationalRegistrationRegularizer
1717
itkVariationalRegistrationSSDFunction
18+
itkVariationalRegistrationFilter
19+
itkVariationalDiffeomorphicRegistrationFilter
20+
itkVariationalSymmetricDiffeomorphicRegistrationFilter
21+
# Multi-resolution (3-param + TRealType=float default)
22+
itkVariationalRegistrationMultiResolutionFilter
23+
# StopCriterion (depends on Filter + MultiResolutionFilter types)
1824
itkVariationalRegistrationStopCriterion
19-
itkVariationalSymmetricDiffeomorphicRegistrationFilter)
25+
)
2026

2127
itk_auto_load_submodules()
2228
itk_end_wrap_module()
Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
itk_wrap_class("itk::ContinuousBorderWarpImageFilter" POINTER)
2-
foreach(s ${WRAP_ITK_SCALAR})
3-
itk_wrap_image_filter_combinations("${s}" "${s}" "${WRAP_ITK_VECTOR_REAL}" 2+)
2+
foreach(d ${ITK_WRAP_IMAGE_DIMS})
3+
foreach(t ${WRAP_ITK_REAL})
4+
itk_wrap_template("${ITKM_I${t}${d}}${ITKM_I${t}${d}}${ITKM_IVF${d}${d}}"
5+
"${ITKT_I${t}${d}},${ITKT_I${t}${d}},${ITKT_IVF${d}${d}}")
6+
endforeach()
47
endforeach()
58
itk_end_wrap_class()
Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
itk_wrap_class("itk::VariationalDiffeomorphicRegistrationFilter" POINTER)
2-
foreach(s ${WRAP_ITK_SCALAR})
3-
itk_wrap_image_filter_combinations("${s}" "${s}" "${WRAP_ITK_VECTOR_REAL}" 2+)
2+
foreach(d ${ITK_WRAP_IMAGE_DIMS})
3+
foreach(t ${WRAP_ITK_REAL})
4+
itk_wrap_template("${ITKM_I${t}${d}}${ITKM_I${t}${d}}${ITKM_IVF${d}${d}}"
5+
"${ITKT_I${t}${d}},${ITKT_I${t}${d}},${ITKT_IVF${d}${d}}")
6+
endforeach()
47
endforeach()
58
itk_end_wrap_class()
Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
itk_wrap_class("itk::VariationalRegistrationCurvatureRegularizer" POINTER)
2-
# itk_wrap_image_filter("${WRAP_ITK_USIGN_INT}" 2)
3-
# itk_wrap_image_filter("${WRAP_ITK_SIGN_INT}" 2)
4-
itk_wrap_image_filter("${WRAP_ITK_REAL}" 2)
5-
itk_wrap_image_filter("${WRAP_ITK_VECTOR_REAL}" 2)
6-
itk_wrap_image_filter("${WRAP_ITK_COV_VECTOR_REAL}" 2)
2+
# Single template parameter: TDisplacementField = Image<Vector<float,D>,D>
3+
foreach(d ${ITK_WRAP_IMAGE_DIMS})
4+
itk_wrap_template("${ITKM_IVF${d}${d}}"
5+
"${ITKT_IVF${d}${d}}")
6+
endforeach()
77
itk_end_wrap_class()
Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
itk_wrap_class("itk::VariationalRegistrationDemonsFunction" POINTER)
2-
foreach(s ${WRAP_ITK_SCALAR})
3-
itk_wrap_image_filter_combinations("${s}" "${s}" "${WRAP_ITK_VECTOR_REAL}" 2+)
2+
foreach(d ${ITK_WRAP_IMAGE_DIMS})
3+
foreach(t ${WRAP_ITK_REAL})
4+
itk_wrap_template("${ITKM_I${t}${d}}${ITKM_I${t}${d}}${ITKM_IVF${d}${d}}"
5+
"${ITKT_I${t}${d}},${ITKT_I${t}${d}},${ITKT_IVF${d}${d}}")
6+
endforeach()
47
endforeach()
58
itk_end_wrap_class()
Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
itk_wrap_class("itk::VariationalRegistrationDiffusionRegularizer" POINTER)
2-
# itk_wrap_image_filter("${WRAP_ITK_USIGN_INT}" 2)
3-
# itk_wrap_image_filter("${WRAP_ITK_SIGN_INT}" 2)
4-
itk_wrap_image_filter("${WRAP_ITK_REAL}" 2)
5-
itk_wrap_image_filter("${WRAP_ITK_VECTOR_REAL}" 2)
6-
itk_wrap_image_filter("${WRAP_ITK_COV_VECTOR_REAL}" 2)
2+
# Single template parameter: TDisplacementField = Image<Vector<float,D>,D>
3+
foreach(d ${ITK_WRAP_IMAGE_DIMS})
4+
itk_wrap_template("${ITKM_IVF${d}${d}}"
5+
"${ITKT_IVF${d}${d}}")
6+
endforeach()
77
itk_end_wrap_class()
Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
itk_wrap_class("itk::VariationalRegistrationElasticRegularizer" POINTER)
2-
# itk_wrap_image_filter("${WRAP_ITK_USIGN_INT}" 2)
3-
# itk_wrap_image_filter("${WRAP_ITK_SIGN_INT}" 2)
4-
itk_wrap_image_filter("${WRAP_ITK_REAL}" 2)
5-
itk_wrap_image_filter("${WRAP_ITK_VECTOR_REAL}" 2)
6-
itk_wrap_image_filter("${WRAP_ITK_COV_VECTOR_REAL}" 2)
2+
# Single template parameter: TDisplacementField = Image<Vector<float,D>,D>
3+
foreach(d ${ITK_WRAP_IMAGE_DIMS})
4+
itk_wrap_template("${ITKM_IVF${d}${d}}"
5+
"${ITKT_IVF${d}${d}}")
6+
endforeach()
77
itk_end_wrap_class()

0 commit comments

Comments
 (0)