Create Another Instance Of A Filter#
Synopsis#
Copy/duplicate a filter
Results#
Output:
2
Code#
C++#
#include "itkAbsImageFilter.h"
#include "itkImage.h"
template <class TImage>
void
CreateImage(typename TImage::Pointer image)
{
using ImageType = TImage;
typename ImageType::IndexType start{};
auto size = ImageType::SizeType::Filled(2);
typename ImageType::RegionType region(start, size);
image->SetRegions(region);
image->Allocate();
image->FillBuffer(-2);
}
int
main()
{
constexpr unsigned int Dimension = 2;
using PixelType = double;
using ImageType = itk::Image<PixelType, Dimension>;
using FilterType = itk::AbsImageFilter<ImageType, ImageType>;
auto filter = FilterType::New();
FilterType::Pointer filter2 = dynamic_cast<FilterType *>(filter->CreateAnother().GetPointer());
auto image = ImageType::New();
CreateImage<ImageType>(image);
filter2->SetInput(image);
filter2->Update();
itk::Index<Dimension> index{};
std::cout << filter2->GetOutput()->GetPixel(index) << std::endl;
return EXIT_SUCCESS;
}
Classes demonstrated#
-
class Object : public itk::LightObject
Base class for most ITK classes.
Object is the second-highest level base class for most itk objects. It extends the base object functionality of LightObject by implementing callbacks (via object/observer), debug flags/methods, and modification time tracking. Most ITK classes should be a subclass of Object due to the need to keep track of modified time.
- ITK Sphinx Examples:
Subclassed by itk::BinaryImageToLevelSetImageAdaptorBase< TInputImage, LevelSetType >, itk::BinaryImageToLevelSetImageAdaptorBase< TInput, TOutput >, itk::BinaryImageToLevelSetImageAdaptorBase< TInput, MalcolmSparseLevelSetImage< TInput::ImageDimension > >, itk::BinaryImageToLevelSetImageAdaptorBase< TInput, ShiSparseLevelSetImage< TInput::ImageDimension > >, itk::BinaryImageToLevelSetImageAdaptorBase< TInputImage, LevelSetDenseImage< TLevelSetImage > >, itk::BoundingBox< PointIdentifier, Self::PointDimension, CoordinateType, PointsContainer >, itk::BoundingBox< IdentifierType, VDimension, ScalarType, VectorContainerType >, itk::BoundingBox< InputPointIdentifier, Self::PointDimension, InputCoordinateType, InputPointsContainer >, itk::ByteSwapper< ComponentType >, itk::CenteredTransformInitializer< VersorRigid3DTransform< double >, TFixedImage, TMovingImage >, itk::CostFunctionTemplate< double >, itk::DomainThreader< ThreadedImageRegionPartitioner< TImage::ImageDimension >, TLevelSetEvolution >, itk::DomainThreader< ThreadedDomainMapPartitionerType, TLevelSetEvolution >, itk::DomainThreader< ThreadedIteratorRangePartitioner< typename WhitakerSparseLevelSetImage< TOutput, VDimension >::LayerConstIterator >, TLevelSetEvolution >, itk::DomainThreader< ThreadedIndexedContainerPartitioner, GradientDescentOptimizerBasev4Template< TInternalComputationValueType > >, itk::DomainThreader< ThreadedIndexedContainerPartitioner, QuasiNewtonOptimizerv4Template< TInternalComputationValueType > >, itk::DomainThreader< TDomainPartitioner, TImageToImageMetricv4 >, itk::DomainThreader< TDomainPartitioner, TJointHistogramMetric >, itk::DomainThreader< ThreadedIteratorRangePartitioner< TLevelSetEvolution::DomainMapImageFilterType::DomainMapType::const_iterator >, TLevelSetEvolution >, itk::DomainThreader< ThreadedIteratorRangePartitioner< WhitakerSparseLevelSetImage< TOutput, VDimension >::LayerConstIterator >, TLevelSetEvolution >, itk::DomainThreader< itk::ThreadedIndexedContainerPartitioner, itk::GradientDescentOptimizerBasev4Template >, itk::DomainThreader< itk::ThreadedIndexedContainerPartitioner, itk::QuasiNewtonOptimizerv4Template >, itk::Function::ColormapFunction< InputImagePixelType, OutputImagePixelType >, itk::Function::ConvergenceMonitoringFunction< TScalar, TScalar >, itk::Function::ConvergenceMonitoringFunction< double, double >, itk::FunctionBase< ContinuousIndex< TCoordinate, VSpaceDimension >, FixedArray< double, Math::UnsignedPower(VSplineOrder+1, VSpaceDimension)> >, itk::FunctionBase< TRealValueType, TRealValueType >, itk::FunctionBase< TVector, double >, itk::FunctionBase< MeasurementVectorType, WeightValueType >, itk::FunctionBase< Point< TCoordinate, Self::ImageDimension >, TOutput >, itk::FunctionBase< TMesh, typename TMesh::EdgeListType * >, itk::FunctionBase< typename TInputPointSet::PointType, TOutput >, itk::FunctionBase< float, double >, itk::FunctionBase< Point< double, TInputImage::ImageDimension >, TInputImage::PixelType >, itk::FunctionBase< Point< double, TImageType::ImageDimension >, NumericTraits< TImageType::PixelType >::RealType >, itk::FunctionBase< ContinuousIndex< float, 2 >, FixedArray< double, Math::UnsignedPower(3+1, 2)> >, itk::FunctionBase< Point< float, TImageType::ImageDimension >, NumericTraits< TImageType::PixelType >::RealType >, itk::FunctionBase< Point< float, TInputImage::ImageDimension >, bool >, itk::FunctionBase< TFunction::InputType, bool >, itk::FunctionBase< Point< float, TInputImage::ImageDimension >, CovariantVector< double, TInputImage::ImageDimension > >, itk::FunctionBase< Point< double, 3 >, bool >, itk::FunctionBase< Point< float, TInputImage::ImageDimension >, vnl_matrix< NumericTraits< TInputImage::PixelType::ValueType >::RealType > >, itk::FunctionBase< Point< double, TInputImage::ImageDimension >, double >, itk::FunctionBase< Point< double, TInputImage::ImageDimension >, SymmetricSecondRankTensor< double, TInputImage::ImageDimension > >, itk::FunctionBase< Point< float, TInputImage::ImageDimension >, NumericTraits< TInputImage::PixelType >::RealType >, itk::FunctionBase< Point< float, TInputImage::ImageDimension >, double >, itk::FunctionBase< Point< double, TInputImage::ImageDimension >, Vector< double, TInputImage::ImageDimension > >, itk::FunctionBase< Point< double, 3 >, double >, itk::FunctionBase< Point< double, TInputImage::ImageDimension >, NumericTraits< TInputImage::PixelType >::RealType >, itk::FunctionBase< Point< SpacePrecisionType, 3 >, double >, itk::FunctionBase< Point< float, TInputImage::ImageDimension >, TOutput >, itk::FunctionBase< double, double >, itk::FunctionBase< TPointSet::PointType, double >, itk::FunctionBase< Point< float, TInputImage::ImageDimension >, TInputImage::PixelType >, itk::FunctionBase< TInputPointSet::PointType, TOutput >, itk::FunctionBase< TMesh, TMesh::EdgeListType * >, itk::FunctionBase< Point< double, 3 >, TOutput >, itk::FunctionBase< Point< typename TInputImage::PixelType, TInputImage::ImageDimension >, NumericTraits< TInputImage::PixelType >::RealType >, itk::FunctionBase< itk::Array< double >, double >, itk::HistogramAlgorithmBase< THistogram >, itk::ImageMomentsCalculator< FixedImageType >, itk::ImageMomentsCalculator< MovingImageType >, itk::ImportImageContainer< SizeValueType, PixelType >, itk::ImportImageContainer< SizeValueType, TPixel >, itk::ImportImageContainer< SizeValueType, InternalPixelType >, itk::LevelSetContainerBase< TIdentifier, LevelSetType >, itk::LevelSetContainerBase< TIdentifier, LevelSetDenseImage< TImage > >, itk::LevelSetDomainPartitionBase< TImage >, itk::LevelSetDomainPartitionBase< TMesh >, itk::LevelSetEquationTermBase< TInput, TLevelSetContainer >, itk::LevelSetEquationTermBase< InputImageType, LevelSetContainerType >, itk::LevelSetEvolutionBase< TEquationContainer, LevelSetType >, itk::LevelSetEvolutionBase< TEquationContainer, LevelSetDenseImage< TImage > >, itk::LevelSetEvolutionBase< TEquationContainer, MalcolmSparseLevelSetImage< VDimension > >, itk::LevelSetEvolutionBase< TEquationContainer, ShiSparseLevelSetImage< VDimension > >, itk::LevelSetEvolutionBase< TEquationContainer, WhitakerSparseLevelSetImage< TOutput, VDimension > >, itk::MRASlabIdentifier< InputImageType >, itk::MapContainer< PointIdentifier, PointType >, itk::MapContainer< CellIdentifier, CellType * >, itk::MapContainer< PointIdentifier, PointCellLinksContainer >, itk::MapContainer< PointIdentifier, PixelType >, itk::MapContainer< CellIdentifier, CellPixelType >, itk::MapContainer< BoundaryAssignmentIdentifier, CellIdentifier >, itk::MapContainer< IndexPairType, IdentifierType >, itk::MapContainer< SizeValueType, SimplexMeshGeometry * >, itk::MapContainer< PointIdentifier, InputPointType >, itk::MapContainer< IdentifierType, InputPointType >, itk::MapContainer< CellIdentifier, EdgeIdentifierType >, itk::MapContainer< EdgeIdentifierType, CellIdentifier >, itk::MapContainer< PointIdentifier, IndexSetType >, itk::MapContainer< QEOriginType, bool >, itk::MapContainer< IdentifierType, NeighborSetType >, itk::MapContainer< int, RGBAPixelType >, itk::MapContainer< int, std::string >, itk::MetaConverterBase< VDimension >, itk::MetaConverterBase< 3 >, itk::MetaSceneConverter< VDimension, PixelType, TMeshTraits >, itk::MinimumMaximumImageCalculator< InputImageType >, itk::ObjectStore< NodeType >, itk::ObjectStore< ListNodeType >, itk::ObjectStore< LayerNodeType >, itk::ObjectToObjectOptimizerBaseTemplate< TInternalComputationValueType >, itk::ObjectToObjectOptimizerBaseTemplate< double >, itk::ObjectToObjectOptimizerBaseTemplate< RealType >, itk::OptimizerParameterScalesEstimatorTemplate< TInternalComputationValueType >, itk::OptimizerParameterScalesEstimatorTemplate< double >, itk::OptimizerParameterScalesEstimatorTemplate< typename TMetric::ParametersValueType >, itk::OptimizerParameterScalesEstimatorTemplate< TMetric::ParametersValueType >, itk::PointsLocator< PointsContainer >, itk::QuadEdgeMeshDecimationCriterion< TMesh, TElement, TMeasure, TPriorityQueueWrapper >, itk::QuadEdgeMeshFunctionBase< TMesh, TQEType * >, itk::QuadEdgeMeshFunctionBase< TMesh, typename TQEType::OriginRefType >, itk::QuadEdgeMeshFunctionBase< TMesh, TQEType::OriginRefType >, itk::RingBuffer< DataObject >, itk::SparseFieldLayer< NodeType >, itk::SparseFieldLayer< ListNodeType >, itk::SparseFieldLayer< LayerNodeType >, itk::Statistics::KdTreeBasedKmeansEstimator< TreeType >, itk::Statistics::KdTreeGenerator< SampleAdaptorType >, itk::Statistics::KdTreeGenerator< SampleType >, itk::Statistics::ScalarImageToHistogramGenerator< TInputImage >, itk::ThreadedDomainPartitioner< ImageRegion< VDimension > >, itk::ThreadedDomainPartitioner< Index< 2 > >, itk::ThreadedDomainPartitioner< ThreadedIteratorRangePartitionerDomain< TIterator > >, itk::TransformBaseTemplate< double >, itk::TransformBaseTemplate< ParametersValueType >, itk::TransformBaseTemplate< float >, itk::TransformIOFactoryTemplate< double >, itk::TransformParametersAdaptorBase< Transform< typename TTransform::ScalarType, TTransform::InputSpaceDimension, TTransform::OutputSpaceDimension > >, itk::TransformParametersAdaptorBase< InitialTransformType >, itk::TransformParametersAdaptorBase< Transform< TTransform::ScalarType, TTransform::InputSpaceDimension, TTransform::OutputSpaceDimension > >, itk::UpdateMalcolmSparseLevelSet< ImageDimension, EquationContainerType >, itk::UpdateShiSparseLevelSet< ImageDimension, EquationContainerType >, itk::UpdateWhitakerSparseLevelSet< ImageDimension, LevelSetOutputType, EquationContainerType >, itk::VTKPolyDataWriter< TMesh >, itk::ValarrayImageContainer< InstanceIdentifier, AbsoluteFrequencyType >, itk::detail::VectorContainer< std::conditional_t< std::is_void_v< T2 >, SizeValueType, T1 >, std::conditional_t< std::is_void_v< T2 >, T1, T2 > >, itk::ArchetypeSeriesFileNames, itk::BSplineTransformInitializer< TTransform, TImage >, itk::BinaryImageToLevelSetImageAdaptorBase< TInputImage, TLevelSet >, itk::BoundingBox< TPointIdentifier, VPointDimension, TCoordinate, TPointsContainer >, itk::BuildInformation, itk::ByteSwapper< T >, itk::CastSpatialObjectFilter< ObjectDimension >, itk::CenteredTransformInitializer< TTransform, TFixedImage, TMovingImage >, itk::ColorTable< TComponent >, itk::Command, itk::CostFunctionTemplate< TInternalComputationValueType >, itk::CreateObjectFunctionBase, itk::DOMNode, itk::DOMNodeXMLReader, itk::DOMNodeXMLWriter, itk::DOMReader< TOutput >, itk::DOMWriter< TInput >, itk::DataObject, itk::Directory, itk::DomainThreader< TDomainPartitioner, TAssociate >, itk::DynamicLoader, itk::FFTWGlobalConfiguration, itk::FastMarchingImageToNodePairContainerAdaptor< TInput, TOutput, TImage >, itk::Function::ColormapFunction< TScalar, TRGBPixel >, itk::Function::ConvergenceMonitoringFunction< TScalar, TEnergyValue >, itk::FunctionBase< TInput, TOutput >, itk::HistogramAlgorithmBase< TInputHistogram >, itk::ImageContainerInterface< TElementIdentifier, TElement >, itk::ImageDuplicator< TInputImage >, itk::ImageIOFactory, itk::ImageMomentsCalculator< TImage >, itk::ImagePCADecompositionCalculator< TInputImage, TBasisImage >, itk::ImageRegionSplitterBase, itk::ImportImageContainer< TElementIdentifier, TElement >, itk::IndexedContainerInterface< TElementIdentifier, TElement >, itk::KappaSigmaThresholdImageCalculator< TInputImage, TMaskImage >, itk::LandmarkBasedTransformInitializer< TTransform, TFixedImage, TMovingImage >, itk::LevelSetContainerBase< TIdentifier, TLevelSet >, itk::LevelSetDomainPartitionBase< TDomain >, itk::LevelSetEquationContainer< TTermContainer >, itk::LevelSetEquationTermBase< TInputImage, TLevelSetContainer >, itk::LevelSetEquationTermContainer< TInputImage, TLevelSetContainer >, itk::LevelSetEvolutionBase< TEquationContainer, TLevelSet >, itk::LightProcessObject, itk::LogOutput, itk::LoggerBase, itk::LoggerManager, itk::MRASlabIdentifier< TInputImage >, itk::MapContainer< TElementIdentifier, TElement >, itk::MeshIOFactory, itk::MetaConverterBase< VDimension >, itk::MetaSceneConverter< VDimension, PixelType, TMeshTraits >, itk::MinimumMaximumImageCalculator< TInputImage >, itk::MultiThreaderBase, itk::NumericSeriesFileNames, itk::ObjectFactoryBase, itk::ObjectStore< TObjectType >, itk::ObjectToObjectOptimizerBaseTemplate< TInternalComputationValueType >, itk::OctreeBase, itk::Optimizer, itk::OptimizerParameterScalesEstimatorTemplate< TInternalComputationValueType >, itk::OutputWindow, itk::PointsLocator< TPointsContainer >, itk::ProcessObject, itk::ProgressAccumulator, itk::QuadEdgeMeshDecimationCriterion< TMesh, TElement, TMeasure, TPriorityQueueWrapper >, itk::QuadEdgeMeshFunctionBase< TMesh, TOutput >, itk::QuadEdgeMeshTopologyChecker< TMesh >, itk::RealTimeClock, itk::RegularExpressionSeriesFileNames, itk::RingBuffer< TElement >, itk::RobustAutomaticThresholdCalculator< TInputImage, TGradientImage >, itk::SegmentationBorder, itk::SegmentationRegion, itk::SimplexMeshVolumeCalculator< TInputMesh >, itk::SparseFieldLayer< TNodeType >, itk::SpatialObjectDuplicator< TInputSpatialObject >, itk::SpatialObjectReader< VDimension, PixelType, TMeshTraits >, itk::SpatialObjectToImageStatisticsCalculator< TInputImage, TInputSpatialObject, TSampleDimension >, itk::SpatialObjectWriter< VDimension, PixelType, TMeshTraits >, itk::Statistics::DecisionRule, itk::Statistics::DenseFrequencyContainer2, itk::Statistics::ExpectationMaximizationMixtureModelEstimator< TSample >, itk::Statistics::KdTree< TSample >, itk::Statistics::KdTreeBasedKmeansEstimator< TKdTree >, itk::Statistics::KdTreeGenerator< TSample >, itk::Statistics::MixtureModelComponentBase< TSample >, itk::Statistics::ProbabilityDistribution, itk::Statistics::RandomVariateGeneratorBase, itk::Statistics::ScalarImageToHistogramGenerator< TImageType >, itk::Statistics::SparseFrequencyContainer2, itk::Statistics::SubsamplerBase< TSample >, itk::StoppingCriterionBase, itk::ThreadPool, itk::ThreadedDomainPartitioner< TDomain >, itk::TransformBaseTemplate< TParametersValueType >, itk::TransformIOFactoryTemplate< TParametersValueType >, itk::TransformParametersAdaptorBase< TTransform >, itk::TriangleMeshCurvatureCalculator< TInputMesh >, itk::UpdateMalcolmSparseLevelSet< VDimension, TEquationContainer >, itk::UpdateShiSparseLevelSet< VDimension, TEquationContainer >, itk::UpdateWhitakerSparseLevelSet< VDimension, TLevelSetValueType, TEquationContainer >, itk::VTKPolyDataWriter< TInputMesh >, itk::ValarrayImageContainer< TElementIdentifier, TElement >, itk::Version, itk::VideoIOFactory, itk::WarpHarmonicEnergyCalculator< TInputImage >, itk::detail::VectorContainer< TElementIdentifier, TElement >, itk::testhelper::ImageRegistrationMethodImageSource< TFixedPixelType, TMovingPixelType, VDimension >
