[Insight-users] Python Wrapping Additions ( for MultiResMIRegistration )

Luis Ibanez luis . ibanez at kitware . com
Thu, 06 Nov 2003 20:14:48 -0500


Hi Hua,

Thanks for sending your wrapping files and changes
for using the MultiResolution registration framework.

They were commited into the CVS repository.

Please let us know if you find any problems,


   Thanks


     Luis


------------------------
Hua Qian wrote:
> Hi Lius,
> 
> Attached please find a few file that I modified to get
> MultiResMIRegistraion application work in python.
> Here is the summary:
> 
> CSwig/Algorithms
>  CMakeLists.txt
>    Added entry for
>      wrap_itkRecursiveMultiResolutionPyramidImageFilter
>  wrap_ITKAlgorithms.cxx
>    Added entries for
>      ITK_WRAP_GROUP(itkMattesMutualInformationImageToImageMetric)
>      ITK_WRAP_GROUP(itkRecursiveMultiResolutionPyramidImageFilter)
>  wrap_itkRecursiveMultiResolutionPyramidImageFilter.cxx
>    wrapped with superclass
> 
> CSwig/Common
>  wrap_itkFixedArray.cxx
>    Added itkFixedArrayUI that is needed for shrink factors
>    of multi resolution pyramid
> 
> Regards,
> Hua
> 
> 
> ------------------------------------------------------------------------
> 
> # create the ITKAlgorithmsTcl libraries
> SET(WRAP_SOURCES
>     wrap_itkCurvatureFlowImageFilter
>     wrap_itkHistogramMatchingImageFilter
>     wrap_itkImageRegistrationMethod
>     wrap_itkImageToImageMetric
>     wrap_itkMattesMutualInformationImageToImageMetric
>     wrap_itkMeanSquaresImageToImageMetric
>     wrap_itkMutualInformationImageToImageMetric
>     wrap_itkMultiResolutionImageRegistrationMethod
>     wrap_itkNormalizedCorrelationImageToImageMetric
>     wrap_itkOtsuThresholdImageCalculator
>     wrap_itkMeanReciprocalSquareDifferenceImageToImageMetric
>     wrap_itkSimpleFuzzyConnectednessImageFilterBase
>     wrap_itkSimpleFuzzyConnectednessScalarImageFilter
>     wrap_itkThresholdSegmentationLevelSetImageFilter
>     wrap_itkGeodesicActiveContourLevelSetImageFilter
>     wrap_itkShapeDetectionLevelSetImageFilter
>     wrap_itkCurvesLevelSetImageFilter
>     wrap_itkNarrowBandCurvesLevelSetImageFilter
>     wrap_itkRecursiveMultiResolutionPyramidImageFilter
> )
> 
> # loop over cable config files creating two lists:
> # WRAP_TCL_SOURCES: list of generated files
> FOREACH(Source ${WRAP_SOURCES})
>    SET(WRAP_TCL_SOURCES ${WRAP_TCL_SOURCES} ${Source}Tcl.cxx)
>    SET(WRAP_PYTHON_SOURCES ${WRAP_PYTHON_SOURCES} ${Source}Python.cxx)
>    SET(ALL_IDX_FILES ${ALL_IDX_FILES} ${WrapITK_BINARY_DIR}/Algorithms/${Source}.idx )
>    SET(INDEX_FILE_CONTENT "${INDEX_FILE_CONTENT}${WrapITK_BINARY_DIR}/Algorithms/${Source}.idx\n")
> ENDFOREACH(Source)
> 
> SET(WRAP_TCL_SOURCES ${WRAP_TCL_SOURCES} wrap_ITKAlgorithmsTclTcl.cxx)
> SET(WRAP_PYTHON_SOURCES ${WRAP_PYTHON_SOURCES} wrap_ITKAlgorithmsPythonPython.cxx)
> 
> # set the generated sources as generated
> SET_SOURCE_FILES_PROPERTIES(${WRAP_TCL_SOURCES} ${WRAP_PYTHON_SOURCES} GENERATED )
> IF(ITK_CSWIG_TCL)
>   ADD_LIBRARY(ITKAlgorithmsTcl SHARED ${WRAP_TCL_SOURCES})
>   SET_TARGET_PROPERTIES(ITKAlgorithmsTcl PROPERTIES LINK_FLAGS "${CSWIG_EXTRA_LINKFLAGS}")
>   TARGET_LINK_LIBRARIES(ITKAlgorithmsTcl ITKAlgorithms VXLNumericsTcl 
>                         ITKBasicFiltersTcl ITKNumericsTcl ITKCommonTcl SwigRuntimeTcl ${TCL_LIBRARY})
>   INSTALL_TARGETS(/lib/InsightToolkit ITKAlgorithmsTcl)
> ENDIF(ITK_CSWIG_TCL)
> 
> IF(ITK_CSWIG_PYTHON)
>   ADD_LIBRARY(_ITKAlgorithmsPython MODULE ${WRAP_PYTHON_SOURCES})
>   IF(ITK_PYTHON_NEEDS_DEPENDS)
>     ADD_DEPENDENCIES(_ITKAlgorithmsPython _ITKNumericsPython _ITKCommonPython _ITKBasicFiltersPython )
>   ENDIF(ITK_PYTHON_NEEDS_DEPENDS)
>   SET_TARGET_PROPERTIES( _ITKAlgorithmsPython PROPERTIES PREFIX "")
>   TARGET_LINK_LIBRARIES(_ITKAlgorithmsPython ITKAlgorithms SwigRuntimePython ${PYTHON_LIBRARY})
>   INSTALL_TARGETS(/lib/InsightToolkit _ITKAlgorithmsPython)
> ENDIF(ITK_CSWIG_PYTHON)
> 
> CONFIGURE_FILE(
> ${WrapITK_SOURCE_DIR}/Master.mdx.in
> ${WrapITK_BINARY_DIR}/Algorithms/ITKAlgorithms.mdx IMMEDIATE
> )
> 
> SET(MASTER_INDEX_FILES "${WrapITK_BINARY_DIR}/VXLNumerics/VXLNumericsTcl.mdx"
>                        "${WrapITK_BINARY_DIR}/Numerics/ITKNumericsTcl.mdx"
>                        "${WrapITK_BINARY_DIR}/Common/ITKCommonTcl.mdx"
>                        "${WrapITK_BINARY_DIR}/BasicFilters/ITKBasicFilters.mdx"
>                        "${WrapITK_BINARY_DIR}/Algorithms/ITKAlgorithms.mdx"
> )
> 
> FOREACH(Source ${WRAP_SOURCES})
>   IF(ITK_CSWIG_TCL) 
>      WRAP_TCL_SOURCES(${ITK_TOP}/Wrapping/CSwig/Algorithms ${WrapITK_BINARY_DIR}/Algorithms
>                      ${Source} ITKAlgorithmsTcl "${MASTER_INDEX_FILES}" "${ALL_IDX_FILES}")
>   ENDIF(ITK_CSWIG_TCL)
>   IF(ITK_CSWIG_PYTHON)
>     WRAP_PYTHON_SOURCES(${ITK_TOP}/Wrapping/CSwig/Algorithms ${WrapITK_BINARY_DIR}/Algorithms
>                         ${Source} _ITKAlgorithmsPython "${MASTER_INDEX_FILES}" "${ALL_IDX_FILES}")
>   ENDIF(ITK_CSWIG_PYTHON)
> ENDFOREACH(Source)
> 
> IF(ITK_CSWIG_TCL)
>   WRAP_TCL_SOURCES(${ITK_TOP}/Wrapping/CSwig/Algorithms ${WrapITK_BINARY_DIR}/Algorithms
>                    wrap_ITKAlgorithmsTcl ITKAlgorithmsTcl "${MASTER_INDEX_FILES}" "${ALL_IDX_FILES}")
> ENDIF(ITK_CSWIG_TCL)
>    
> IF(ITK_CSWIG_PYTHON)
>   WRAP_PYTHON_SOURCES(${ITK_TOP}/Wrapping/CSwig/Algorithms ${WrapITK_BINARY_DIR}/Algorithms
>                       wrap_ITKAlgorithmsPython _ITKAlgorithmsPython "${MASTER_INDEX_FILES}" "${ALL_IDX_FILES}")
> ENDIF(ITK_CSWIG_PYTHON)
> 
> 
> ------------------------------------------------------------------------
> 
> /*=========================================================================
> 
>   Program:   Insight Segmentation & Registration Toolkit
>   Module:    $RCSfile: wrap_ITKAlgorithms.cxx,v $
>   Language:  C++
>   Date:      $Date: 2003/10/14 17:59:55 $
>   Version:   $Revision: 1.6 $
> 
>   Copyright (c) Insight Software Consortium. All rights reserved.
>   See ITKCopyright.txt or http://www . itk . org/HTML/Copyright . htm for details.
> 
>      This software is distributed WITHOUT ANY WARRANTY; without even 
>      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
>      PURPOSE.  See the above copyright notices for more information.
> 
> =========================================================================*/
> #ifdef CABLE_CONFIGURATION
> #include "itkCSwigMacros.h"
> 
> namespace _cable_
> {
>   const char* const package = ITK_WRAP_PACKAGE_NAME(ITK_WRAP_PACKAGE);
>   const char* const groups[] =
>   {
>     ITK_WRAP_GROUP(itkCurvatureFlowImageFilter),
>     ITK_WRAP_GROUP(itkHistogramMatchingImageFilter),
>     ITK_WRAP_GROUP(itkImageRegistrationMethod),
>     ITK_WRAP_GROUP(itkImageToImageMetric),
>     ITK_WRAP_GROUP(itkMattesMutualInformationImageToImageMetric),
>     ITK_WRAP_GROUP(itkMeanSquaresImageToImageMetric),
>     ITK_WRAP_GROUP(itkMutualInformationImageToImageMetric),
>     ITK_WRAP_GROUP(itkMultiResolutionImageRegistrationMethod),
>     ITK_WRAP_GROUP(itkNormalizedCorrelationImageToImageMetric),
>     ITK_WRAP_GROUP(itkOtsuThresholdImageCalculator),
>     ITK_WRAP_GROUP(itkMeanReciprocalSquareDifferenceImageToImageMetric),
>     ITK_WRAP_GROUP(itkSimpleFuzzyConnectednessImageFilterBase),
>     ITK_WRAP_GROUP(itkSimpleFuzzyConnectednessScalarImageFilter),
>     ITK_WRAP_GROUP(itkThresholdSegmentationLevelSetImageFilter),
>     ITK_WRAP_GROUP(itkGeodesicActiveContourLevelSetImageFilter),
>     ITK_WRAP_GROUP(itkShapeDetectionLevelSetImageFilter),
>     ITK_WRAP_GROUP(itkCurvesLevelSetImageFilter),
>     ITK_WRAP_GROUP(itkNarrowBandCurvesLevelSetImageFilter),
>     ITK_WRAP_GROUP(itkRecursiveMultiResolutionPyramidImageFilter)
>   };
> }
> #endif
> 
> 
> ------------------------------------------------------------------------
> 
> /*=========================================================================
> 
>   Program:   Insight Segmentation & Registration Toolkit
>   Module:    $RCSfile: wrap_itkRecursiveMultiResolutionPyramidImageFilter.cxx,v $
>   Language:  C++
>   Date:      $Date: 2003/10/14 17:59:55 $
>   Version:   $Revision: 1.1 $
> 
>   Copyright (c) Insight Software Consortium. All rights reserved.
>   See ITKCopyright.txt or http://www . itk . org/HTML/Copyright . htm for details.
> 
>      This software is distributed WITHOUT ANY WARRANTY; without even 
>      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
>      PURPOSE.  See the above copyright notices for more information.
> 
> =========================================================================*/
> #include "itkImage.h"
> #include "itkRecursiveMultiResolutionPyramidImageFilter.h"
> 
> #ifdef CABLE_CONFIGURATION
> #include "itkCSwigMacros.h"
> #include "itkCSwigImages.h"
> 
> namespace _cable_
> {
>   const char* const group = ITK_WRAP_GROUP(itkRecursiveMultiResolutionPyramidImageFilter);
>   namespace wrappers
>   {
>     ITK_WRAP_OBJECT2_WITH_SUPERCLASS(RecursiveMultiResolutionPyramidImageFilter, image::F2, image::F2,
>                      itkRecursiveMultiResolutionPyramidImageFilterF2F2);
>     ITK_WRAP_OBJECT2_WITH_SUPERCLASS(RecursiveMultiResolutionPyramidImageFilter, image::F3, image::F3,
>                      itkRecursiveMultiResolutionPyramidImageFilterF3F3);
>     ITK_WRAP_OBJECT2_WITH_SUPERCLASS(RecursiveMultiResolutionPyramidImageFilter, image::US2, image::US2,
>                      itkRecursiveMultiResolutionPyramidImageFilterUS2US2);
>     ITK_WRAP_OBJECT2_WITH_SUPERCLASS(RecursiveMultiResolutionPyramidImageFilter, image::US3, image::US3,
>                      itkRecursiveMultiResolutionPyramidImageFilterUS3US3);
>   }
> }
> 
> #endif
> 
> 
> ------------------------------------------------------------------------
> 
> /*=========================================================================
> 
>   Program:   Insight Segmentation & Registration Toolkit
>   Module:    $RCSfile: wrap_itkFixedArray.cxx,v $
>   Language:  C++
>   Date:      $Date: 2003/09/10 14:30:12 $
>   Version:   $Revision: 1.2 $
> 
>   Copyright (c) Insight Software Consortium. All rights reserved.
>   See ITKCopyright.txt or http://www . itk . org/HTML/Copyright . htm for details.
> 
>      This software is distributed WITHOUT ANY WARRANTY; without even 
>      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
>      PURPOSE.  See the above copyright notices for more information.
> 
> =========================================================================*/
> #include "itkFixedArray.h"
> 
> #ifdef CABLE_CONFIGURATION
> #include "itkCSwigMacros.h"
> namespace _cable_
> {
>   const char* const group = ITK_WRAP_GROUP(itkFixedArray);
>   namespace wrappers
>   {
>     typedef itk::FixedArray<double, 2 >::FixedArray itkFixedArrayD2;
>     typedef itk::FixedArray<double, 3 >::FixedArray itkFixedArrayD3;
>     typedef itk::FixedArray<unsigned int, 2 >::FixedArray itkFixedArrayUI2;
>     typedef itk::FixedArray<unsigned int, 3 >::FixedArray itkFixedArrayUI3;
>   }
> }
> #endif