template<typename TInputImage, typename TOutputImage = TInputImage, typename TInputFilter = ImageToImageFilter<Image<unsigned char, TInputImage::ImageDimension>, Image<unsigned char, TOutputImage::ImageDimension>>, class TOutputFilter = typename TInputFilter::Superclass, class TInternalInputImage = typename TInputFilter::InputImageType, class TInternalOutputImage = typename TOutputFilter::OutputImageType>
class itk::ObjectByObjectLabelMapFilter< TInputImage, TOutputImage, TInputFilter, TOutputFilter, TInternalInputImage, TInternalOutputImage >
ObjectByObjectLabelMapFilter applies an image pipeline to all the objects of a label map and produce a new label map.
The image pipeline can simply produce a modified object or produce several objects from the single input object. Several options are provided to handle the different cases.
KeepLabel, which defaults to true, makes the filter try to keep as much as possible the labels of the original objects. If an image pipeline produce several objects the label of the input object is assigned to the first output object. The other output objects get another label not present in the input image. When KeepLabel is set to false, all the objects are relabeled in the order of apparition during the filter process.
BinaryInternalOutput can be set to true if the image pipeline produce binary output image. In that case, the objects produced are identified with a connected component algorithm before being reinserted in the output label map. InternalForegroundValue can be set to a specific value which represent the foreground value in the binary image.
PadSize and ConstrainPaddingToImage can be used to extend the size of the image to process passed to the image pipeline. This is useful if the image pipeline is known to be able to enlarge the object. The padding can be constrained to the input label map region by setting ConstrainPaddingToImage to true - this parameter can make a difference for the algorithm with a different behavior on the border of the image. By default, the image is padded by 1 pixel and constrained to the image region.
- Note
- : When applying a single filter, input and output filters are the same; while applying a pipeline, input and output filters are different, may not even be of the same type. It is the responsibility of the user to connect the pipeline properly outside of this filter.
- Author
- Gaetan Lehmann. Biologie du Developpement et de la Reproduction, INRA de Jouy-en-Josas, France.
This implementation was taken from the Insight Journal paper: https://doi.org/10.54294/q6auw4
- ITK Sphinx Examples:
-
Definition at line 86 of file itkObjectByObjectLabelMapFilter.h.
|
| virtual::itk::LightObject::Pointer | CreateAnother () const |
| |
| InputFilterType * | GetFilter () |
| |
| const InputFilterType * | GetFilter () const |
| |
| virtual const InputFilterType * | GetInputFilter () const |
| |
| virtual InputImagePixelType | GetLabel () |
| |
| virtual InputFilterType * | GetModifiableInputFilter () |
| |
| virtual OutputFilterType * | GetModifiableOutputFilter () |
| |
| virtual const char * | GetNameOfClass () const |
| |
| virtual const OutputFilterType * | GetOutputFilter () const |
| |
| void | SetFilter (InputFilterType *filter) |
| |
| void | SetInputFilter (InputFilterType *filter) |
| |
| void | SetOutputFilter (OutputFilterType *filter) |
| |
|
| virtual void | SetKeepLabels (bool _arg) |
| |
| virtual bool | GetKeepLabels () |
| |
| virtual void | KeepLabelsOn () |
| |
| virtual void | KeepLabelsOff () |
| |
|
| virtual void | SetPadSize (SizeType _arg) |
| |
| virtual SizeType | GetPadSize () |
| |
|
| virtual void | SetConstrainPaddingToImage (bool _arg) |
| |
| virtual bool | GetConstrainPaddingToImage () |
| |
| virtual void | ConstrainPaddingToImageOn () |
| |
| virtual void | ConstrainPaddingToImageOff () |
| |
|
| virtual void | SetBinaryInternalOutput (bool _arg) |
| |
| virtual bool | GetBinaryInternalOutput () |
| |
| virtual void | BinaryInternalOutputOn () |
| |
| virtual void | BinaryInternalOutputOff () |
| |
|
| virtual void | SetInternalForegroundValue (InternalOutputPixelType _arg) |
| |
| virtual InternalOutputPixelType | GetInternalForegroundValue () |
| |
| void | EnlargeOutputRequestedRegion (DataObject *output) override |
| |
| void | EnlargeOutputRequestedRegion (DataObject *output) override |
| |
| void | GenerateInputRequestedRegion () override |
| |
| void | GenerateInputRequestedRegion () override |
| |
| const InputImageType * | GetInput () const |
| |
| const InputImageType * | GetInput () const |
| |
| const InputImageType * | GetInput (unsigned int idx) const |
| |
| const InputImageType * | GetInput (unsigned int idx) const |
| |
| void | PopBackInput () override |
| |
| void | PopBackInput () override |
| |
| void | PopFrontInput () override |
| |
| void | PopFrontInput () override |
| |
| virtual void | PushBackInput (const InputImageType *input) |
| |
| virtual void | PushBackInput (const InputImageType *input) |
| |
| virtual void | PushFrontInput (const InputImageType *input) |
| |
| virtual void | PushFrontInput (const InputImageType *input) |
| |
| virtual void | SetInput (const InputImageType *input) |
| |
| virtual void | SetInput (const InputImageType *input) |
| |
| virtual void | SetInput (unsigned int, const TInputImage *image) |
| |
| virtual void | SetInput (unsigned int, const TInputImage *image) |
| |
| virtual void | SetCoordinateTolerance (double _arg) |
| |
| virtual double | GetCoordinateTolerance () const |
| |
| virtual void | SetCoordinateTolerance (double _arg) |
| |
| virtual double | GetCoordinateTolerance () const |
| |
| virtual void | SetDirectionTolerance (double _arg) |
| |
| virtual double | GetDirectionTolerance () const |
| |
| virtual void | SetDirectionTolerance (double _arg) |
| |
| virtual double | GetDirectionTolerance () const |
| |
| OutputImageType * | GetOutput (unsigned int idx) |
| |
| virtual void | GraftNthOutput (unsigned int idx, DataObject *graft) |
| |
| virtual void | GraftOutput (const DataObjectIdentifierType &key, DataObject *graft) |
| |
| virtual void | GraftOutput (DataObject *graft) |
| |
| OutputImageType * | GetOutput () |
| |
| const OutputImageType * | GetOutput () const |
| |
| ProcessObject::DataObjectPointer | MakeOutput (ProcessObject::DataObjectPointerArraySizeType idx) override |
| |
| ProcessObject::DataObjectPointer | MakeOutput (const ProcessObject::DataObjectIdentifierType &) override |
| |
| virtual void | AbortGenerateDataOff () |
| |
| virtual void | AbortGenerateDataOn () |
| |
| virtual const bool & | GetAbortGenerateData () const |
| |
| DataObjectPointerArray | GetIndexedInputs () |
| |
| DataObjectPointerArray | GetIndexedOutputs () |
| |
| NameArray | GetInputNames () const |
| |
| DataObjectPointerArray | GetInputs () |
| |
| MultiThreaderBase * | GetMultiThreader () const |
| |
| DataObjectPointerArraySizeType | GetNumberOfIndexedInputs () const |
| |
| DataObjectPointerArraySizeType | GetNumberOfIndexedOutputs () const |
| |
| DataObjectPointerArraySizeType | GetNumberOfInputs () const |
| |
| DataObjectPointerArraySizeType | GetNumberOfOutputs () const |
| |
| virtual DataObjectPointerArraySizeType | GetNumberOfValidRequiredInputs () const |
| |
| NameArray | GetOutputNames () const |
| |
| DataObjectPointerArray | GetOutputs () |
| |
| virtual float | GetProgress () const |
| |
| NameArray | GetRequiredInputNames () const |
| |
| bool | HasInput (const DataObjectIdentifierType &key) const |
| |
| bool | HasOutput (const DataObjectIdentifierType &key) const |
| |
| void | IncrementProgress (float increment) |
| |
| virtual void | PrepareOutputs () |
| |
| virtual void | PropagateRequestedRegion (DataObject *output) |
| |
| virtual void | ResetPipeline () |
| |
| virtual void | SetAbortGenerateData (bool _arg) |
| |
| void | SetMultiThreader (MultiThreaderBase *threader) |
| |
| virtual void | Update () |
| |
| virtual void | UpdateLargestPossibleRegion () |
| |
| virtual void | UpdateOutputData (DataObject *output) |
| |
| virtual void | UpdateOutputInformation () |
| |
| void | UpdateProgress (float progress) |
| |
| virtual void | SetReleaseDataFlag (bool val) |
| |
| virtual bool | GetReleaseDataFlag () const |
| |
| void | ReleaseDataFlagOn () |
| |
| void | ReleaseDataFlagOff () |
| |
| virtual void | SetReleaseDataBeforeUpdateFlag (bool _arg) |
| |
| virtual const bool & | GetReleaseDataBeforeUpdateFlag () const |
| |
| virtual void | ReleaseDataBeforeUpdateFlagOn () |
| |
| virtual void | ReleaseDataBeforeUpdateFlagOff () |
| |
| | itkVirtualSetClampMacro (NumberOfWorkUnits, ThreadIdType, 1, ITK_MAX_THREADS) |
| |
| virtual const ThreadIdType & | GetNumberOfWorkUnits () const |
| |
| unsigned long | AddObserver (const EventObject &event, Command *cmd) const |
| |
| unsigned long | AddObserver (const EventObject &event, std::function< void(const EventObject &)> function) const |
| |
| virtual void | DebugOff () const |
| |
| virtual void | DebugOn () const |
| |
| Command * | GetCommand (unsigned long tag) |
| |
| bool | GetDebug () const |
| |
| MetaDataDictionary & | GetMetaDataDictionary () |
| |
| const MetaDataDictionary & | GetMetaDataDictionary () const |
| |
| virtual ModifiedTimeType | GetMTime () const |
| |
| virtual const TimeStamp & | GetTimeStamp () const |
| |
| bool | HasObserver (const EventObject &event) const |
| |
| void | InvokeEvent (const EventObject &) |
| |
| void | InvokeEvent (const EventObject &) const |
| |
| virtual void | Modified () const |
| |
| void | Register () const override |
| |
| void | RemoveAllObservers () |
| |
| void | RemoveObserver (unsigned long tag) const |
| |
| void | SetDebug (bool debugFlag) const |
| |
| void | SetReferenceCount (int) override |
| |
| void | UnRegister () const noexcept override |
| |
| void | SetMetaDataDictionary (const MetaDataDictionary &rhs) |
| |
| void | SetMetaDataDictionary (MetaDataDictionary &&rrhs) |
| |
| virtual void | SetObjectName (std::string _arg) |
| |
| virtual const std::string & | GetObjectName () const |
| |
| Pointer | Clone () const |
| |
| virtual void | Delete () |
| |
| virtual int | GetReferenceCount () const |
| |
| void | Print (std::ostream &os, Indent indent=0) const |
| |
|
| void | GenerateData () override |
| |
| | ObjectByObjectLabelMapFilter () |
| |
| void | PrintSelf (std::ostream &os, Indent indent) const override |
| |
| | ~ObjectByObjectLabelMapFilter () override=default |
| |
| void | AfterThreadedGenerateData () override |
| |
| void | AfterThreadedGenerateData () override |
| |
| void | BeforeThreadedGenerateData () override |
| |
| void | BeforeThreadedGenerateData () override |
| |
| void | DynamicThreadedGenerateData (const OutputImageRegionType &outputRegionForThread) override |
| |
| void | DynamicThreadedGenerateData (const OutputImageRegionType &outputRegionForThread) override |
| |
| virtual InputImageType * | GetLabelMap () |
| |
| virtual InputImageType * | GetLabelMap () |
| |
| | LabelMapFilter () |
| |
| | LabelMapFilter () |
| |
| void | ThreadedGenerateData (const OutputImageRegionType &outputRegionForThread, ThreadIdType) override |
| |
| void | ThreadedGenerateData (const OutputImageRegionType &outputRegionForThread, ThreadIdType) override |
| |
| virtual void | ThreadedProcessLabelObject (LabelObjectType *labelObject) |
| |
| virtual void | ThreadedProcessLabelObject (LabelObjectType *labelObject) |
| |
| | ~LabelMapFilter () override=default |
| |
| | ~LabelMapFilter () override=default |
| |
| virtual void | CallCopyInputRegionToOutputRegion (OutputImageRegionType &destRegion, const InputImageRegionType &srcRegion) |
| |
| virtual void | CallCopyInputRegionToOutputRegion (OutputImageRegionType &destRegion, const InputImageRegionType &srcRegion) |
| |
| virtual void | CallCopyOutputRegionToInputRegion (InputImageRegionType &destRegion, const OutputImageRegionType &srcRegion) |
| |
| virtual void | CallCopyOutputRegionToInputRegion (InputImageRegionType &destRegion, const OutputImageRegionType &srcRegion) |
| |
| | ImageToImageFilter () |
| |
| | ImageToImageFilter () |
| |
| void | VerifyInputInformation () const override |
| |
| void | VerifyInputInformation () const override |
| |
| | ~ImageToImageFilter () override=default |
| |
| | ~ImageToImageFilter () override=default |
| |
| virtual void | AllocateOutputs () |
| |
| void | ClassicMultiThread (ThreadFunctionType callbackFunction) |
| |
| virtual const ImageRegionSplitterBase * | GetImageRegionSplitter () const |
| |
| | ImageSource () |
| |
| virtual unsigned int | SplitRequestedRegion (unsigned int i, unsigned int pieces, OutputImageRegionType &splitRegion) |
| |
| | ~ImageSource () override=default |
| |
| virtual bool | GetDynamicMultiThreading () const |
| |
| virtual void | SetDynamicMultiThreading (bool _arg) |
| |
| virtual void | DynamicMultiThreadingOn () |
| |
| virtual void | DynamicMultiThreadingOff () |
| |
| virtual void | AddInput (DataObject *input) |
| |
| void | AddOptionalInputName (const DataObjectIdentifierType &) |
| |
| void | AddOptionalInputName (const DataObjectIdentifierType &, DataObjectPointerArraySizeType idx) |
| |
| virtual void | AddOutput (DataObject *output) |
| |
| bool | AddRequiredInputName (const DataObjectIdentifierType &) |
| |
| bool | AddRequiredInputName (const DataObjectIdentifierType &, DataObjectPointerArraySizeType idx) |
| |
| virtual void | CacheInputReleaseDataFlags () |
| |
| virtual void | GenerateOutputInformation () |
| |
| virtual void | GenerateOutputRequestedRegion (DataObject *output) |
| |
| DataObject * | GetInput (const DataObjectIdentifierType &key) |
| |
| const DataObject * | GetInput (const DataObjectIdentifierType &key) const |
| |
| virtual const DataObjectPointerArraySizeType & | GetNumberOfRequiredInputs () const |
| |
| virtual const DataObjectPointerArraySizeType & | GetNumberOfRequiredOutputs () const |
| |
| bool | IsIndexedInputName (const DataObjectIdentifierType &) const |
| |
| bool | IsIndexedOutputName (const DataObjectIdentifierType &) const |
| |
| bool | IsRequiredInputName (const DataObjectIdentifierType &) const |
| |
| DataObjectPointerArraySizeType | MakeIndexFromInputName (const DataObjectIdentifierType &name) const |
| |
| DataObjectPointerArraySizeType | MakeIndexFromOutputName (const DataObjectIdentifierType &name) const |
| |
| DataObjectIdentifierType | MakeNameFromInputIndex (DataObjectPointerArraySizeType idx) const |
| |
| DataObjectIdentifierType | MakeNameFromOutputIndex (DataObjectPointerArraySizeType idx) const |
| |
| void | PrintSelf (std::ostream &os, Indent indent) const override |
| |
| | ProcessObject () |
| |
| virtual void | PropagateResetPipeline () |
| |
| virtual void | PushBackInput (const DataObject *input) |
| |
| virtual void | PushFrontInput (const DataObject *input) |
| |
| virtual void | ReleaseInputs () |
| |
| virtual void | RemoveInput (const DataObjectIdentifierType &key) |
| |
| virtual void | RemoveInput (DataObjectPointerArraySizeType) |
| |
| virtual void | RemoveOutput (const DataObjectIdentifierType &key) |
| |
| virtual void | RemoveOutput (DataObjectPointerArraySizeType idx) |
| |
| bool | RemoveRequiredInputName (const DataObjectIdentifierType &) |
| |
| virtual void | RestoreInputReleaseDataFlags () |
| |
| virtual void | SetInput (const DataObjectIdentifierType &key, DataObject *input) |
| |
| virtual void | SetNthInput (DataObjectPointerArraySizeType idx, DataObject *input) |
| |
| virtual void | SetNthOutput (DataObjectPointerArraySizeType idx, DataObject *output) |
| |
| void | SetNumberOfIndexedInputs (DataObjectPointerArraySizeType num) |
| |
| void | SetNumberOfIndexedOutputs (DataObjectPointerArraySizeType num) |
| |
| virtual void | SetNumberOfRequiredInputs (DataObjectPointerArraySizeType) |
| |
| virtual void | SetNumberOfRequiredOutputs (DataObjectPointerArraySizeType _arg) |
| |
| virtual void | SetOutput (const DataObjectIdentifierType &name, DataObject *output) |
| |
| virtual void | SetPrimaryInput (DataObject *object) |
| |
| virtual void | SetPrimaryOutput (DataObject *object) |
| |
| void | SetRequiredInputNames (const NameArray &) |
| |
| virtual void | VerifyPreconditions () const |
| |
| | ~ProcessObject () override |
| |
| DataObject * | GetInput (DataObjectPointerArraySizeType idx) |
| |
| const DataObject * | GetInput (DataObjectPointerArraySizeType idx) const |
| |
| DataObject * | GetPrimaryInput () |
| |
| const DataObject * | GetPrimaryInput () const |
| |
| virtual void | SetPrimaryInputName (const DataObjectIdentifierType &key) |
| |
| virtual const char * | GetPrimaryInputName () const |
| |
| DataObject * | GetOutput (const DataObjectIdentifierType &key) |
| |
| const DataObject * | GetOutput (const DataObjectIdentifierType &key) const |
| |
| virtual void | SetPrimaryOutputName (const DataObjectIdentifierType &key) |
| |
| virtual const char * | GetPrimaryOutputName () const |
| |
| DataObject * | GetOutput (DataObjectPointerArraySizeType i) |
| |
| const DataObject * | GetOutput (DataObjectPointerArraySizeType i) const |
| |
| DataObject * | GetPrimaryOutput () |
| |
| const DataObject * | GetPrimaryOutput () const |
| |
| virtual bool | GetThreaderUpdateProgress () const |
| |
| virtual void | ThreaderUpdateProgressOn () |
| |
| virtual void | ThreaderUpdateProgressOff () |
| |
| virtual void | SetThreaderUpdateProgress (bool arg) |
| |
| | Object () |
| |
| bool | PrintObservers (std::ostream &os, Indent indent) const |
| |
| virtual void | SetTimeStamp (const TimeStamp &timeStamp) |
| |
| | ~Object () override |
| |
| virtual LightObject::Pointer | InternalClone () const |
| |
| | LightObject () |
| |
| virtual void | PrintHeader (std::ostream &os, Indent indent) const |
| |
| virtual void | PrintTrailer (std::ostream &os, Indent indent) const |
| |
| virtual | ~LightObject () |
| |