Proposals:Increasing WrapITK Coverage: Difference between revisions
(48 intermediate revisions by 3 users not shown) | |||
Line 13: | Line 13: | ||
''(Add to list below with template parameters and remove from this list)'' | ''(Add to list below with template parameters and remove from this list)'' | ||
=== A-H Filters === | |||
* BalloonForceFilter | * BalloonForceFilter | ||
* BloxBoundaryPointImageToBloxBoundaryProfileImageFilter | * BloxBoundaryPointImageToBloxBoundaryProfileImageFilter | ||
* BloxBoundaryPointToCoreAtomImageFilter | * BloxBoundaryPointToCoreAtomImageFilter | ||
Line 24: | Line 22: | ||
* ConformalFlatteningMeshFilter (Alex) | * ConformalFlatteningMeshFilter (Alex) | ||
* ConnectedRegionsMeshFilter (Alex) | * ConnectedRegionsMeshFilter (Alex) | ||
* CurvatureRegistrationFilter | * CurvatureRegistrationFilter | ||
* DeformableMesh3DFilter (Alex) | * DeformableMesh3DFilter (Alex) | ||
Line 30: | Line 27: | ||
* DeformableSimplexMesh3DFilter (Alex) | * DeformableSimplexMesh3DFilter (Alex) | ||
* DeformableSimplexMesh3DGradientConstraintForceFilter (Alex) | * DeformableSimplexMesh3DGradientConstraintForceFilter (Alex) | ||
* DiffusionTensor3DReconstructionImageFilter | * DiffusionTensor3DReconstructionImageFilter | ||
* ExtensionVelocitiesImageFilter | * ExtensionVelocitiesImageFilter | ||
* ExtractOrthogonalSwath2DImageFilter | * ExtractOrthogonalSwath2DImageFilter | ||
* FEMRegistrationFilter | * FEMRegistrationFilter | ||
* HardConnectedComponentImageFilter | * HardConnectedComponentImageFilter | ||
* HoughTransform2DCirclesImageFilter | * HoughTransform2DCirclesImageFilter | ||
* HoughTransform2DLinesImageFilter | * HoughTransform2DLinesImageFilter | ||
=== I-P Filters === | |||
* ImageAndPathToImageFilter | * ImageAndPathToImageFilter | ||
* ImageToMeshFilter (Alex) | * ImageToMeshFilter (Alex) | ||
Line 59: | Line 48: | ||
* IsoContourDistanceImageFilter (Luis) | * IsoContourDistanceImageFilter (Luis) | ||
* IterativeInverseDeformationFieldImageFilter (Luis) | * IterativeInverseDeformationFieldImageFilter (Luis) | ||
* JoinImageFilter | |||
* KLMRegionGrowImageFilter (Luis) | * KLMRegionGrowImageFilter (Luis) | ||
* ListSampleToHistogramFilter (Luis) | * ListSampleToHistogramFilter (Luis) | ||
Line 76: | Line 66: | ||
* PolylineMask2DImageFilter | * PolylineMask2DImageFilter | ||
* PolylineMaskImageFilter | * PolylineMaskImageFilter | ||
=== Q-Z Filters === | |||
* QuadEdgeMeshCleanFilter (Alex) | * QuadEdgeMeshCleanFilter (Alex) | ||
* QuadEdgeMeshDecimationFilter (Alex) | * QuadEdgeMeshDecimationFilter (Alex) | ||
Line 120: | Line 113: | ||
== A-D Classes == | == A-D Classes == | ||
=== BinaryMaskToNarrowBandPointSetFilter === | |||
itk::BinaryMaskToNarrowBandPointSetFilter< itk::Image< unsigned char, 2 >, itk::PointSet< float, 2 > > | |||
itk::BinaryMaskToNarrowBandPointSetFilter< itk::Image< unsigned char, 3 >, itk::PointSet< float, 3 > > | |||
=== BSplineScatteredDataPointSetToImageFilter === | === BSplineScatteredDataPointSetToImageFilter === | ||
Line 126: | Line 124: | ||
itk::BSplineScatteredDataPointSetToImageFilter< itk::PointSet<Vector<float,1>,3>, itk::Image< Vector<float,1>,3> > | itk::BSplineScatteredDataPointSetToImageFilter< itk::PointSet<Vector<float,1>,3>, itk::Image< Vector<float,1>,3> > | ||
itk::BSplineScatteredDataPointSetToImageFilter< itk::PointSet<Vector<float,3>,3>, itk::Image< Vector<float,3>,3> > | itk::BSplineScatteredDataPointSetToImageFilter< itk::PointSet<Vector<float,3>,3>, itk::Image< Vector<float,3>,3> > | ||
== E-H Classes == | == E-H Classes == | ||
== I-L Classes == | == I-L Classes == | ||
===JoinImageFilter=== | |||
itk::JoinImageFilter< itk::Image< double, 2 >, itk::Image< double, 2 > > | |||
== M-P Classes == | == M-P Classes == | ||
Line 167: | Line 144: | ||
''(The filters to NOT wrap)'' | ''(The filters to NOT wrap)'' | ||
* FiniteDifferenceSparseImageFilter (appears not to be used anywhere) | |||
* DeformationFieldJacobianDeterminantFilter (useless) | * DeformationFieldJacobianDeterminantFilter (useless) | ||
* WarpJacobianDeterminantFilter (deprecated) | * WarpJacobianDeterminantFilter (deprecated) | ||
Line 172: | Line 150: | ||
* GetAverageSliceImageFilter (same features as projection filters) | * GetAverageSliceImageFilter (same features as projection filters) | ||
* GradientImageToBloxBoundaryPointImageFilter | * GradientImageToBloxBoundaryPointImageFilter | ||
* | * InterpolateImageFilter (produce warnings, because it use an image with a higher dimension than the in/output image) | ||
* MaskedMovingHistogramImageFilter (base class unusable without the moving histogram type provided by the subclasses) | * MaskedMovingHistogramImageFilter (base class unusable without the moving histogram type provided by the subclasses) | ||
* SimpleFuzzyConnectednessRGBImageFilter (patented) | * SimpleFuzzyConnectednessRGBImageFilter (patented) | ||
Line 178: | Line 156: | ||
* MeshToMeshFilter (base class, useless alone. Will see later if it must be wrapped or not) | * MeshToMeshFilter (base class, useless alone. Will see later if it must be wrapped or not) | ||
* VectorFuzzyConnectednessImageFilter (patented) | * VectorFuzzyConnectednessImageFilter (patented) | ||
* HistogramToImageFilter (Luis) (?? base class, ask Gaetan for guidance) | |||
= List of filters added to WrapITK = | = List of filters added to WrapITK = | ||
Line 241: | Line 220: | ||
END_WRAP_CLASS() | END_WRAP_CLASS() | ||
=== BayesianClassifierImageFilter === | |||
itk::BayesianClassifierImageFilter< itk::VectorImage<unsigned char,2>, unsigned char, double, double > | |||
itk::BayesianClassifierImageFilter< itk::VectorImage<signed short,2>, unsigned char, double, double > | |||
itk::BayesianClassifierImageFilter< itk::VectorImage<float,2>, unsigned char, double, double > | |||
itk::BayesianClassifierImageFilter< itk::VectorImage<unsigned char,3>, unsigned char, double, double > | |||
itk::BayesianClassifierImageFilter< itk::VectorImage<signed short,3>, unsigned char, double, double > | |||
itk::BayesianClassifierImageFilter< itk::VectorImage<float,3>, unsigned char, double, double > | |||
I've been forced to use the type float as third template parameter, to make the method Set/GetSmoothingFilter() usable. Does it matter if the 4th is kept to double? Should it be float if the third in float? | |||
=== BayesianClassifierInitializationImageFilter === | |||
itk::BayesianClassifierInitializationImageFilter< itk::Image<unsigned char, 2 > > | |||
itk::BayesianClassifierInitializationImageFilter< itk::Image<signed short, 2 > > | |||
itk::BayesianClassifierInitializationImageFilter< itk::Image<unsigned char, 3 > > | |||
itk::BayesianClassifierInitializationImageFilter< itk::Image<signed short, 3 > > | |||
=== ContourExtractor2DImageFilter === | |||
itk::ContourExtractor2DImageFilter< itk::Image< unsigned char, 2 > | |||
itk::ContourExtractor2DImageFilter< itk::Image< signed short, 2 > | |||
itk::ContourExtractor2DImageFilter< itk::Image< float, 2 > | |||
=== DeformationFieldJacobianDeterminantFilter === | |||
itk::DeformationFieldJacobianDeterminantFilter< itk::Image< itk::Vector<float,2>, 2> , float > | |||
itk::DeformationFieldJacobianDeterminantFilter< itk::Image< itk::Vector<float,3>, 3> , float > | |||
=== DiffeomorphicDemonsRegistrationFilter === | |||
itk::DiffeomorphicDemonsRegistrationFilter< itk::Image<float,2>, itk::Image<float,2>, itk::Image<itk::Vector<float,2>,2> > | |||
itk::DiffeomorphicDemonsRegistrationFilter< itk::Image<float,3>, itk::Image<float,3>, itk::Image<itk::Vector<float,3>,3> > | |||
=== DisplacementFieldJacobianDeterminantFilter === | |||
itk::DisplacementFieldJacobianDeterminantFilter< itk::Image<itk::Vector<float,2>,2>, float > | |||
itk::DisplacementFieldJacobianDeterminantFilter< itk::Image<itk::Vector<float,2>,2>, double > | |||
itk::DisplacementFieldJacobianDeterminantFilter< itk::Image<itk::Vector<float,3>,3>, float > | |||
itk::DisplacementFieldJacobianDeterminantFilter< itk::Image<itk::Vector<float,3>,3>, double > | |||
=== DifferenceOfGaussiansGradientImageFilter === | |||
itk::DifferenceOfGaussiansGradientImageFilter< itk::Image< unsigned char, 2>, float > | |||
itk::DifferenceOfGaussiansGradientImageFilter< itk::Image< signed short, 2>, float > | |||
itk::DifferenceOfGaussiansGradientImageFilter< itk::Image< float, 2>, float > | |||
itk::DifferenceOfGaussiansGradientImageFilter< itk::Image< unsigned char, 3>, float > | |||
itk::DifferenceOfGaussiansGradientImageFilter< itk::Image< signed short, 3>, float > | |||
itk::DifferenceOfGaussiansGradientImageFilter< itk::Image< float, 3>, float > | |||
=== ExponentialDeformationFieldImageFilter === | |||
itk::ExponentialDeformationFieldImageFilter< itk::Image<itk::Vector<float,2>,2>, itk::Image<itk::Vector<float,2>,2> | |||
itk::ExponentialDeformationFieldImageFilter< itk::Image<itk::Vector<float,3>,3>, itk::Image<itk::Vector<float,3>,3> | |||
=== EigenAnalysis2DImageFilter === | |||
itk::EigenAnalysis2DImageFilter< itk::Image< float, 2 >, itk::Image< float, 2 >, itk::Image< itk::Vector< float, 2 >, 2 > > | |||
=== FastMarchingExtensionImageFilter === | |||
itk::FastMarchingExtensionImageFilter< itk::Image<float,2>, unsigned char, 1, itk::Image<float, 2> > | |||
itk::FastMarchingExtensionImageFilter< itk::Image<float,3>, unsigned char, 1, itk::Image<float, 3> > | |||
=== FastSymmetricForcesDemonsRegistrationFilter === | |||
itk::FastSymmetricForcesDemonsRegistrationFilter< itk::Image<float,2>, itk::Image<float,2>, itk::Image<itk::Vector<float,2>,2> > | |||
itk::FastSymmetricForcesDemonsRegistrationFilter< itk::Image<float,3>, itk::Image<float,3>, itk::Image<itk::Vector<float,3>,3> > | |||
=== GridForwardWarpImageFilter === | |||
itk::GridForwardWarpImageFilter< itk::Image<itk::Vector<float,2>,2>, itk::Image<unsigned char,2> > | |||
itk::GridForwardWarpImageFilter< itk::Image<itk::Vector<float,3>,3>, itk::Image<unsigned char,3> > | |||
=== GradientVectorFlowImageFilter === | |||
typedef itk::Image< itk::CovariantVector< float, 2 >, 2 > GradientImage2DType; | |||
itk::GradientVectorFlowImageFilter< GradientImage2DType, GradientImage2DType > | |||
typedef itk::Image< itk::CovariantVector< float, 3 >, 3 > GradientImage3DType; | |||
itk::GradientVectorFlowImageFilter< GradientImage2DType, GradientImage3DType > | |||
=== HistogramToIntensityImageFilter (WrapITK unstable only) === | |||
itk::HistogramToIntensityImageFilter< itk::Statistics::Histogram< unsigned char, 1 > > | |||
itk::HistogramToIntensityImageFilter< itk::Statistics::Histogram< unsigned char, 2 > > | |||
itk::HistogramToIntensityImageFilter< itk::Statistics::Histogram< unsigned char, 3 > > | |||
itk::HistogramToIntensityImageFilter< itk::Statistics::Histogram< unsigned char, 4 > > | |||
itk::HistogramToIntensityImageFilter< itk::Statistics::Histogram< signed short, 1 > > | |||
itk::HistogramToIntensityImageFilter< itk::Statistics::Histogram< signed short, 2 > > | |||
itk::HistogramToIntensityImageFilter< itk::Statistics::Histogram< signed short, 3 > > | |||
itk::HistogramToIntensityImageFilter< itk::Statistics::Histogram< signed short, 4 > > | |||
itk::HistogramToIntensityImageFilter< itk::Statistics::Histogram< float, 1 > > | |||
itk::HistogramToIntensityImageFilter< itk::Statistics::Histogram< float, 2 > > | |||
itk::HistogramToIntensityImageFilter< itk::Statistics::Histogram< float, 3 > > | |||
itk::HistogramToIntensityImageFilter< itk::Statistics::Histogram< float, 4 > > | |||
=== HistogramToEntropyImageFilter (WrapITK unstable only) === | |||
itk::HistogramToEntropyImageFilter< itk::Statistics::Histogram< unsigned char, 1 > > | |||
itk::HistogramToEntropyImageFilter< itk::Statistics::Histogram< unsigned char, 2 > > | |||
itk::HistogramToEntropyImageFilter< itk::Statistics::Histogram< unsigned char, 3 > > | |||
itk::HistogramToEntropyImageFilter< itk::Statistics::Histogram< unsigned char, 4 > > | |||
itk::HistogramToEntropyImageFilter< itk::Statistics::Histogram< signed short, 1 > > | |||
itk::HistogramToEntropyImageFilter< itk::Statistics::Histogram< signed short, 2 > > | |||
itk::HistogramToEntropyImageFilter< itk::Statistics::Histogram< signed short, 3 > > | |||
itk::HistogramToEntropyImageFilter< itk::Statistics::Histogram< signed short, 4 > > | |||
itk::HistogramToEntropyImageFilter< itk::Statistics::Histogram< float, 1 > > | |||
itk::HistogramToEntropyImageFilter< itk::Statistics::Histogram< float, 2 > > | |||
itk::HistogramToEntropyImageFilter< itk::Statistics::Histogram< float, 3 > > | |||
itk::HistogramToEntropyImageFilter< itk::Statistics::Histogram< float, 4 > > | |||
=== HistogramToLogProbabilityImageFilter (WrapITK unstable only) === | |||
itk::HistogramToLogProbabilityImageFilter< itk::Statistics::Histogram< unsigned char, 1 > > | |||
itk::HistogramToLogProbabilityImageFilter< itk::Statistics::Histogram< unsigned char, 2 > > | |||
itk::HistogramToLogProbabilityImageFilter< itk::Statistics::Histogram< unsigned char, 3 > > | |||
itk::HistogramToLogProbabilityImageFilter< itk::Statistics::Histogram< unsigned char, 4 > > | |||
itk::HistogramToLogProbabilityImageFilter< itk::Statistics::Histogram< signed short, 1 > > | |||
itk::HistogramToLogProbabilityImageFilter< itk::Statistics::Histogram< signed short, 2 > > | |||
itk::HistogramToLogProbabilityImageFilter< itk::Statistics::Histogram< signed short, 3 > > | |||
itk::HistogramToLogProbabilityImageFilter< itk::Statistics::Histogram< signed short, 4 > > | |||
itk::HistogramToLogProbabilityImageFilter< itk::Statistics::Histogram< float, 1 > > | |||
itk::HistogramToLogProbabilityImageFilter< itk::Statistics::Histogram< float, 2 > > | |||
itk::HistogramToLogProbabilityImageFilter< itk::Statistics::Histogram< float, 3 > > | |||
itk::HistogramToLogProbabilityImageFilter< itk::Statistics::Histogram< float, 4 > > | |||
=== HistogramToProbabilityImageFilter (WrapITK unstable only) === | |||
itk::HistogramToProbabilityImageFilter< itk::Statistics::Histogram< unsigned char, 1 > > | |||
itk::HistogramToProbabilityImageFilter< itk::Statistics::Histogram< unsigned char, 2 > > | |||
itk::HistogramToProbabilityImageFilter< itk::Statistics::Histogram< unsigned char, 3 > > | |||
itk::HistogramToProbabilityImageFilter< itk::Statistics::Histogram< unsigned char, 4 > > | |||
itk::HistogramToProbabilityImageFilter< itk::Statistics::Histogram< signed short, 1 > > | |||
itk::HistogramToProbabilityImageFilter< itk::Statistics::Histogram< signed short, 2 > > | |||
itk::HistogramToProbabilityImageFilter< itk::Statistics::Histogram< signed short, 3 > > | |||
itk::HistogramToProbabilityImageFilter< itk::Statistics::Histogram< signed short, 4 > > | |||
itk::HistogramToProbabilityImageFilter< itk::Statistics::Histogram< float, 1 > > | |||
itk::HistogramToProbabilityImageFilter< itk::Statistics::Histogram< float, 2 > > | |||
itk::HistogramToProbabilityImageFilter< itk::Statistics::Histogram< float, 3 > > | |||
itk::HistogramToProbabilityImageFilter< itk::Statistics::Histogram< float, 4 > > | |||
= Problem found in ITK = | = Problem found in ITK = | ||
Line 249: | Line 374: | ||
* ComposeRGBAImageFilter, MagnitudeAndPhaseToComplexImageFilter and RealAndImaginaryToComplexImageFilter not reporting the right name | * ComposeRGBAImageFilter, MagnitudeAndPhaseToComplexImageFilter and RealAndImaginaryToComplexImageFilter not reporting the right name | ||
* Strange template parameters for FFT filters | * Strange template parameters for FFT filters | ||
* Superclass was not redefined in HistogramToEntropyImageFilter, HistogramToIntensityImageFilter, HistogramToLogProbabilityImageFilter and HistogramToProbabilityImageFilter | |||
* doxygen problems in itkBSplineDecompositionImageFilter.h, itkBSplineUpsampleImageFilter.h, itkCompose2DCovariantVectorImageFilter.h, itkCompose2DVectorImageFilter.h, itkCompose3DCovariantVectorImageFilter.h, itkCompose3DVectorImageFilter.h, itkComposeRGBImageFilter.h, itkSignedMaurerDistanceMapImageFilter.h, itkSparseFieldLayer.h and itkRigid2DTransform.h. itk::MetaEvent had no doxygen doc. | |||
* itk::LevelSetNode was not in the header itkLevelSetNode.h |
Latest revision as of 12:21, 3 March 2009
Motivation
You may know that WrapITK has greatly enhanced the filter coverage, compared to what was previously available in tcl, java and python. Currently, 66% of the filters in ITK are usable in WrapITK. In the future, the goal is to reach 100% of filter coverage. This is a quite difficult task for a single person, because it requires a quite good knowledge of the whole ITK, to be able to select, for all the classes, the relevant template parameters to instantiate. I made my best to complete this task, but obviously, I can't go further, because I'm not able to make a decision on the remaining non wrapped filters.
I think that the weekly tcon can be a great place to select the template parameters needed to instantiate the missing filters in WrapITK. For many of the filters, I'm quite sure the right template parameters to use are obvious for many of us, and that they only need to be collected. With those data, I would be able to implement the wrappers and to add them in WrapITK. Also, some of the filters may not be of direct interest for the user, because they are intended to be used only internally in some other code, or because they can only be used as a superclass (like UnaryFunctorImageFilter). In that case, they should be added in the excluded filters list for the filter coverage.
A good goal, for the next release, would be to cover 80% of ITK's filter, which means 51 new filters added in WrapITK or in the excluded filters list. 51 filters may look like a big number of classes (and it is, for the final python/tcl/java user), but many of the remaining filters seems similar, so it should be easy to choose the template parameters for a group of filters, instead of processing them one by one.
Also, note that adding new stuff in WrapITK would not only benefit to WrapITK users: because building a class in WrapITK builds every methods in that class, we have found many bugs in ITK code during the addition of new classes in WrapITK in the past. It is likely that we would uncover a few more bugs by adding new classes, bugs which won't be found by final users.
List of Unwrapped Filters
(Add to list below with template parameters and remove from this list)
A-H Filters
- BalloonForceFilter
- BloxBoundaryPointImageToBloxBoundaryProfileImageFilter
- BloxBoundaryPointToCoreAtomImageFilter
- BloxBoundaryProfileImageToBloxCoreAtomImageFilter
- ChainCodeToFourierSeriesPathFilter
- ConformalFlatteningMeshFilter (Alex)
- ConnectedRegionsMeshFilter (Alex)
- CurvatureRegistrationFilter
- DeformableMesh3DFilter (Alex)
- DeformableSimplexMesh3DBalloonForceFilter (Alex)
- DeformableSimplexMesh3DFilter (Alex)
- DeformableSimplexMesh3DGradientConstraintForceFilter (Alex)
- DiffusionTensor3DReconstructionImageFilter
- ExtensionVelocitiesImageFilter
- ExtractOrthogonalSwath2DImageFilter
- FEMRegistrationFilter
- HardConnectedComponentImageFilter
- HoughTransform2DCirclesImageFilter
- HoughTransform2DLinesImageFilter
I-P Filters
- ImageAndPathToImageFilter
- ImageToMeshFilter (Alex)
- ImageToParametricSpaceFilter (Luis)
- ImageToPathFilter
- ImageToVectorImageFilter (Luis)
- ImplicitManifoldNormalVectorFilter
- InteriorExteriorMeshFilter
- InterpolateImagePointsFilter
- InverseDeformationFieldImageFilter (Luis)
- IsoContourDistanceImageFilter (Luis)
- IterativeInverseDeformationFieldImageFilter (Luis)
- JoinImageFilter
- KLMRegionGrowImageFilter (Luis)
- ListSampleToHistogramFilter (Luis)
- MRFImageFilter
- MRIBiasFieldCorrectionFilter
- MaskNeighborhoodOperatorImageFilter
- NarrowBandCurvesLevelSetImageFilter (Luis)
- NeighborhoodOperatorImageFilter
- NormalizedCorrelationImageFilter
- OrthogonalSwath2DPathFilter
- ParametricSpaceToImageSpaceMeshFilter
- PathAndImageToPathFilter
- PathToChainCodePathFilter
- PathToImageFilter
- PathToPathFilter
- PointSetToImageFilter (Luis)
- PolylineMask2DImageFilter
- PolylineMaskImageFilter
Q-Z Filters
- QuadEdgeMeshCleanFilter (Alex)
- QuadEdgeMeshDecimationFilter (Alex)
- QuadEdgeMeshDelaunayConformingFilter (Alex)
- QuadEdgeMeshEdgeMergeDecimationFilter (Alex)
- QuadEdgeMeshNormalFilter (Alex)
- QuadEdgeMeshToQuadEdgeMeshFilter (Alex)
- RGBGibbsPriorFilter (Luis)
- ReinitializeLevelSetImageFilter (Luis)
- SampleMeanShiftBlurringFilter
- SampleMeanShiftClusteringFilter
- SampleSelectiveMeanShiftBlurringFilter
- SampleToHistogramProjectionFilter
- ScalarImageKmeansImageFilter (Luis)
- ScalarToArrayCastImageFilter (Luis)
- SimplexMeshAdaptTopologyFilter (Alex)
- SimplexMeshToTriangleMeshFilter (Alex)
- SpatialFunctionImageEvaluatorFilter
- SpatialObjectToPointSetFilter
- SymmetricEigenAnalysisImageFilter (Luis)
- TensorFractionalAnisotropyImageFilter
- TensorRelativeAnisotropyImageFilter
- TransformMeshFilter (Luis)
- TriangleMeshToBinaryImageFilter (Alex)
- TriangleMeshToSimplexMeshFilter (Alex)
- UnsharpMaskLevelSetImageFilter
- VectorConfidenceConnectedImageFilter (Luis)
- VectorConnectedComponentImageFilter
- VectorCurvatureAnisotropicDiffusionImageFilter (Luis)
- VectorExpandImageFilter
- VectorGradientAnisotropicDiffusionImageFilter (Luis)
- VectorGradientMagnitudeImageFilter (Luis)
- VectorNeighborhoodOperatorImageFilter
- VectorRescaleIntensityImageFilter (Luis)
- VectorThresholdSegmentationLevelSetImageFilter (Luis)
- VoronoiPartitioningImageFilter
- VoronoiSegmentationRGBImageFilter
- WarpMeshFilter (Alex)
- WarpVectorImageFilter (Luis)
- WrapPadImageFilter
List of Filters with Template Parameters Waiting to be Wrapped
(Add to list below when in WrapITK and remove from this list)
A-D Classes
BinaryMaskToNarrowBandPointSetFilter
itk::BinaryMaskToNarrowBandPointSetFilter< itk::Image< unsigned char, 2 >, itk::PointSet< float, 2 > > itk::BinaryMaskToNarrowBandPointSetFilter< itk::Image< unsigned char, 3 >, itk::PointSet< float, 3 > >
BSplineScatteredDataPointSetToImageFilter
itk::BSplineScatteredDataPointSetToImageFilter< itk::PointSet<Vector<float,1>,2>, itk::Image< Vector<float,1>,2> > itk::BSplineScatteredDataPointSetToImageFilter< itk::PointSet<Vector<float,2>,2>, itk::Image< Vector<float,2>,2> > itk::BSplineScatteredDataPointSetToImageFilter< itk::PointSet<Vector<float,1>,3>, itk::Image< Vector<float,1>,3> > itk::BSplineScatteredDataPointSetToImageFilter< itk::PointSet<Vector<float,3>,3>, itk::Image< Vector<float,3>,3> >
E-H Classes
I-L Classes
JoinImageFilter
itk::JoinImageFilter< itk::Image< double, 2 >, itk::Image< double, 2 > >
M-P Classes
Q-T Classes
U-Z Classes
- VectorResampleImageFilter
itk::VectorResampleImageFilter< itk::Image<itk::Vector<float,2>,2>, itk::Image<itk::Vector<float,2>,2> > itk::VectorResampleImageFilter< itk::Image<itk::Vector<float,3>,3>, itk::Image<itk::Vector<float,3>,3> >
List of excluded filters
(The filters to NOT wrap)
- FiniteDifferenceSparseImageFilter (appears not to be used anywhere)
- DeformationFieldJacobianDeterminantFilter (useless)
- WarpJacobianDeterminantFilter (deprecated)
- MatrixIndexSelectionImageFilter (matrix as pixel type is not currently used anywhere in WrapITK)
- GetAverageSliceImageFilter (same features as projection filters)
- GradientImageToBloxBoundaryPointImageFilter
- InterpolateImageFilter (produce warnings, because it use an image with a higher dimension than the in/output image)
- MaskedMovingHistogramImageFilter (base class unusable without the moving histogram type provided by the subclasses)
- SimpleFuzzyConnectednessRGBImageFilter (patented)
- SimpleFuzzyConnectednessScalarImageFilter (patented)
- MeshToMeshFilter (base class, useless alone. Will see later if it must be wrapped or not)
- VectorFuzzyConnectednessImageFilter (patented)
- HistogramToImageFilter (Luis) (?? base class, ask Gaetan for guidance)
List of filters added to WrapITK
(Filters recently wrapped)
- FFTComplexToComplexImageFilter (Gaetan)
- FFTWComplexToComplexImageFilter (Gaetan)
- MagnitudeAndPhaseToComplexImageFilter (Gaetan)
- RealAndImaginaryToComplexImageFilter (Gaetan)
- HessianRecursiveGaussianImageFilter< TInputImage, TOutputImage >
- Hessian3DToVesselnessMeasureImageFilter< Image<ScalarPixelType, Dimension> >
- Use the default for TOutputImage (the default is expected by Hessian3DToVesselnessMeasureImageFilter)
WRAP_CLASS("itk::HessianRecursiveGaussianImageFilter" POINTER) WRAP_IMAGE_FILTER_USIGN_INT(1) WRAP_IMAGE_FILTER_SIGN_INT(1) WRAP_IMAGE_FILTER_REAL(1) END_WRAP_CLASS()
- Hessian3DToVesselnessMeasureImageFilter< TPixel >
- Hessian3DToVesselnessMeasureImageFilter< ScalarPixelType >
WRAP_CLASS("itk::Hessian3DToVesselnessMeasureImageFilter" POINTER) FOREACH(t ${WRAP_ITK_SCALAR}) WRAP_TEMPLATE("${ITKM_${t}}" "${ITKT_${t}}") ENDFOREACH(t) END_WRAP_CLASS()
- ComposeRGBAImageFilter< TInputImage, TOutputImage >
- ComposeRGBAImageFilter< Image<ScalarPixelType, Dimension>, Image<RGBAPixel, Dimension> >
- See ComposeRGBImageFilter, need to add WRAP_ITK_RGBA to WrapBasicTypes.cmake
WRAP_CLASS("itk::ComposeRGBAImageFilter" POINTER) IF(WRAP_rgba_unsigned_char AND WRAP_unsigned_char) WRAP_IMAGE_FILTER_TYPES(UC RGBAUC) # NEED TO ADD RGBA ENDIF(WRAP_rgba_unsigned_char AND WRAP_unsigned_char) IF(WRAP_rgba_unsigned_short AND WRAP_unsigned_short) WRAP_IMAGE_FILTER_TYPES(US RGBAUS) # NEED TO ADD RGBA ENDIF(WRAP_rgba_unsigned_short AND WRAP_unsigned_short) END_WRAP_CLASS()
- FastMarchingUpwindGradientImageFilter<TLevelSet, TSpeedImage>
- FastMarchingUpwindGradientImageFilter< Image<ScalarPixelType, Dimension>, Image<ScalarPixelType, Dimension> >
- Same template parameters as FastMarchingImageFilter
WRAP_CLASS("itk::FastMarchingUpwindGradientImageFilter" POINTER) #WRAP_IMAGE_FILTER_USIGN_INT(2) #WRAP_IMAGE_FILTER_SIGN_INT(2) WRAP_IMAGE_FILTER_REAL(2) END_WRAP_CLASS()
- ZeroCrossingBasedEdgeDetectionImageFilter< TInputImage, TOutputImage >
- ZeroCrossingBasedEdgeDetectionImageFilter< Image<ScalarPixelType, Dimension>, Image<ScalarPixelType, Dimension> >
WRAP_CLASS("itk::ZeroCrossingBasedEdgeDetectionImageFilter" POINTER) WRAP_IMAGE_FILTER_REAL(2 2+) END_WRAP_CLASS()
BayesianClassifierImageFilter
itk::BayesianClassifierImageFilter< itk::VectorImage<unsigned char,2>, unsigned char, double, double > itk::BayesianClassifierImageFilter< itk::VectorImage<signed short,2>, unsigned char, double, double > itk::BayesianClassifierImageFilter< itk::VectorImage<float,2>, unsigned char, double, double >
itk::BayesianClassifierImageFilter< itk::VectorImage<unsigned char,3>, unsigned char, double, double > itk::BayesianClassifierImageFilter< itk::VectorImage<signed short,3>, unsigned char, double, double > itk::BayesianClassifierImageFilter< itk::VectorImage<float,3>, unsigned char, double, double >
I've been forced to use the type float as third template parameter, to make the method Set/GetSmoothingFilter() usable. Does it matter if the 4th is kept to double? Should it be float if the third in float?
BayesianClassifierInitializationImageFilter
itk::BayesianClassifierInitializationImageFilter< itk::Image<unsigned char, 2 > > itk::BayesianClassifierInitializationImageFilter< itk::Image<signed short, 2 > >
itk::BayesianClassifierInitializationImageFilter< itk::Image<unsigned char, 3 > > itk::BayesianClassifierInitializationImageFilter< itk::Image<signed short, 3 > >
ContourExtractor2DImageFilter
itk::ContourExtractor2DImageFilter< itk::Image< unsigned char, 2 > itk::ContourExtractor2DImageFilter< itk::Image< signed short, 2 > itk::ContourExtractor2DImageFilter< itk::Image< float, 2 >
DeformationFieldJacobianDeterminantFilter
itk::DeformationFieldJacobianDeterminantFilter< itk::Image< itk::Vector<float,2>, 2> , float > itk::DeformationFieldJacobianDeterminantFilter< itk::Image< itk::Vector<float,3>, 3> , float >
DiffeomorphicDemonsRegistrationFilter
itk::DiffeomorphicDemonsRegistrationFilter< itk::Image<float,2>, itk::Image<float,2>, itk::Image<itk::Vector<float,2>,2> > itk::DiffeomorphicDemonsRegistrationFilter< itk::Image<float,3>, itk::Image<float,3>, itk::Image<itk::Vector<float,3>,3> >
DisplacementFieldJacobianDeterminantFilter
itk::DisplacementFieldJacobianDeterminantFilter< itk::Image<itk::Vector<float,2>,2>, float > itk::DisplacementFieldJacobianDeterminantFilter< itk::Image<itk::Vector<float,2>,2>, double > itk::DisplacementFieldJacobianDeterminantFilter< itk::Image<itk::Vector<float,3>,3>, float > itk::DisplacementFieldJacobianDeterminantFilter< itk::Image<itk::Vector<float,3>,3>, double >
DifferenceOfGaussiansGradientImageFilter
itk::DifferenceOfGaussiansGradientImageFilter< itk::Image< unsigned char, 2>, float > itk::DifferenceOfGaussiansGradientImageFilter< itk::Image< signed short, 2>, float > itk::DifferenceOfGaussiansGradientImageFilter< itk::Image< float, 2>, float >
itk::DifferenceOfGaussiansGradientImageFilter< itk::Image< unsigned char, 3>, float > itk::DifferenceOfGaussiansGradientImageFilter< itk::Image< signed short, 3>, float > itk::DifferenceOfGaussiansGradientImageFilter< itk::Image< float, 3>, float >
ExponentialDeformationFieldImageFilter
itk::ExponentialDeformationFieldImageFilter< itk::Image<itk::Vector<float,2>,2>, itk::Image<itk::Vector<float,2>,2> itk::ExponentialDeformationFieldImageFilter< itk::Image<itk::Vector<float,3>,3>, itk::Image<itk::Vector<float,3>,3>
EigenAnalysis2DImageFilter
itk::EigenAnalysis2DImageFilter< itk::Image< float, 2 >, itk::Image< float, 2 >, itk::Image< itk::Vector< float, 2 >, 2 > >
FastMarchingExtensionImageFilter
itk::FastMarchingExtensionImageFilter< itk::Image<float,2>, unsigned char, 1, itk::Image<float, 2> > itk::FastMarchingExtensionImageFilter< itk::Image<float,3>, unsigned char, 1, itk::Image<float, 3> >
FastSymmetricForcesDemonsRegistrationFilter
itk::FastSymmetricForcesDemonsRegistrationFilter< itk::Image<float,2>, itk::Image<float,2>, itk::Image<itk::Vector<float,2>,2> > itk::FastSymmetricForcesDemonsRegistrationFilter< itk::Image<float,3>, itk::Image<float,3>, itk::Image<itk::Vector<float,3>,3> >
GridForwardWarpImageFilter
itk::GridForwardWarpImageFilter< itk::Image<itk::Vector<float,2>,2>, itk::Image<unsigned char,2> > itk::GridForwardWarpImageFilter< itk::Image<itk::Vector<float,3>,3>, itk::Image<unsigned char,3> >
GradientVectorFlowImageFilter
typedef itk::Image< itk::CovariantVector< float, 2 >, 2 > GradientImage2DType; itk::GradientVectorFlowImageFilter< GradientImage2DType, GradientImage2DType >
typedef itk::Image< itk::CovariantVector< float, 3 >, 3 > GradientImage3DType; itk::GradientVectorFlowImageFilter< GradientImage2DType, GradientImage3DType >
HistogramToIntensityImageFilter (WrapITK unstable only)
itk::HistogramToIntensityImageFilter< itk::Statistics::Histogram< unsigned char, 1 > > itk::HistogramToIntensityImageFilter< itk::Statistics::Histogram< unsigned char, 2 > > itk::HistogramToIntensityImageFilter< itk::Statistics::Histogram< unsigned char, 3 > > itk::HistogramToIntensityImageFilter< itk::Statistics::Histogram< unsigned char, 4 > >
itk::HistogramToIntensityImageFilter< itk::Statistics::Histogram< signed short, 1 > > itk::HistogramToIntensityImageFilter< itk::Statistics::Histogram< signed short, 2 > > itk::HistogramToIntensityImageFilter< itk::Statistics::Histogram< signed short, 3 > > itk::HistogramToIntensityImageFilter< itk::Statistics::Histogram< signed short, 4 > >
itk::HistogramToIntensityImageFilter< itk::Statistics::Histogram< float, 1 > > itk::HistogramToIntensityImageFilter< itk::Statistics::Histogram< float, 2 > > itk::HistogramToIntensityImageFilter< itk::Statistics::Histogram< float, 3 > > itk::HistogramToIntensityImageFilter< itk::Statistics::Histogram< float, 4 > >
HistogramToEntropyImageFilter (WrapITK unstable only)
itk::HistogramToEntropyImageFilter< itk::Statistics::Histogram< unsigned char, 1 > > itk::HistogramToEntropyImageFilter< itk::Statistics::Histogram< unsigned char, 2 > > itk::HistogramToEntropyImageFilter< itk::Statistics::Histogram< unsigned char, 3 > > itk::HistogramToEntropyImageFilter< itk::Statistics::Histogram< unsigned char, 4 > >
itk::HistogramToEntropyImageFilter< itk::Statistics::Histogram< signed short, 1 > > itk::HistogramToEntropyImageFilter< itk::Statistics::Histogram< signed short, 2 > > itk::HistogramToEntropyImageFilter< itk::Statistics::Histogram< signed short, 3 > > itk::HistogramToEntropyImageFilter< itk::Statistics::Histogram< signed short, 4 > >
itk::HistogramToEntropyImageFilter< itk::Statistics::Histogram< float, 1 > > itk::HistogramToEntropyImageFilter< itk::Statistics::Histogram< float, 2 > > itk::HistogramToEntropyImageFilter< itk::Statistics::Histogram< float, 3 > > itk::HistogramToEntropyImageFilter< itk::Statistics::Histogram< float, 4 > >
HistogramToLogProbabilityImageFilter (WrapITK unstable only)
itk::HistogramToLogProbabilityImageFilter< itk::Statistics::Histogram< unsigned char, 1 > > itk::HistogramToLogProbabilityImageFilter< itk::Statistics::Histogram< unsigned char, 2 > > itk::HistogramToLogProbabilityImageFilter< itk::Statistics::Histogram< unsigned char, 3 > > itk::HistogramToLogProbabilityImageFilter< itk::Statistics::Histogram< unsigned char, 4 > >
itk::HistogramToLogProbabilityImageFilter< itk::Statistics::Histogram< signed short, 1 > > itk::HistogramToLogProbabilityImageFilter< itk::Statistics::Histogram< signed short, 2 > > itk::HistogramToLogProbabilityImageFilter< itk::Statistics::Histogram< signed short, 3 > > itk::HistogramToLogProbabilityImageFilter< itk::Statistics::Histogram< signed short, 4 > >
itk::HistogramToLogProbabilityImageFilter< itk::Statistics::Histogram< float, 1 > > itk::HistogramToLogProbabilityImageFilter< itk::Statistics::Histogram< float, 2 > > itk::HistogramToLogProbabilityImageFilter< itk::Statistics::Histogram< float, 3 > > itk::HistogramToLogProbabilityImageFilter< itk::Statistics::Histogram< float, 4 > >
HistogramToProbabilityImageFilter (WrapITK unstable only)
itk::HistogramToProbabilityImageFilter< itk::Statistics::Histogram< unsigned char, 1 > > itk::HistogramToProbabilityImageFilter< itk::Statistics::Histogram< unsigned char, 2 > > itk::HistogramToProbabilityImageFilter< itk::Statistics::Histogram< unsigned char, 3 > > itk::HistogramToProbabilityImageFilter< itk::Statistics::Histogram< unsigned char, 4 > >
itk::HistogramToProbabilityImageFilter< itk::Statistics::Histogram< signed short, 1 > > itk::HistogramToProbabilityImageFilter< itk::Statistics::Histogram< signed short, 2 > > itk::HistogramToProbabilityImageFilter< itk::Statistics::Histogram< signed short, 3 > > itk::HistogramToProbabilityImageFilter< itk::Statistics::Histogram< signed short, 4 > >
itk::HistogramToProbabilityImageFilter< itk::Statistics::Histogram< float, 1 > > itk::HistogramToProbabilityImageFilter< itk::Statistics::Histogram< float, 2 > > itk::HistogramToProbabilityImageFilter< itk::Statistics::Histogram< float, 3 > > itk::HistogramToProbabilityImageFilter< itk::Statistics::Histogram< float, 4 > >
Problem found in ITK
Just to show that WrapITK can help to find bugs ;-)
- It's not possible to include itkFFTWComplexToComplexImageFilter.h before itkFFTWComplexToComplexImageFilter.h
- ComposeRGBAImageFilter, MagnitudeAndPhaseToComplexImageFilter and RealAndImaginaryToComplexImageFilter not reporting the right name
- Strange template parameters for FFT filters
- Superclass was not redefined in HistogramToEntropyImageFilter, HistogramToIntensityImageFilter, HistogramToLogProbabilityImageFilter and HistogramToProbabilityImageFilter
- doxygen problems in itkBSplineDecompositionImageFilter.h, itkBSplineUpsampleImageFilter.h, itkCompose2DCovariantVectorImageFilter.h, itkCompose2DVectorImageFilter.h, itkCompose3DCovariantVectorImageFilter.h, itkCompose3DVectorImageFilter.h, itkComposeRGBImageFilter.h, itkSignedMaurerDistanceMapImageFilter.h, itkSparseFieldLayer.h and itkRigid2DTransform.h. itk::MetaEvent had no doxygen doc.
- itk::LevelSetNode was not in the header itkLevelSetNode.h