template<typename TInputImage>
class itk::InPlaceLabelMapFilter< TInputImage >
Base class for filters that takes an image as input and overwrites that image as the output.
InPlaceLabelMapFilter is the base class for all process objects whose output image data is constructed by overwriting the input image data. In other words, the output bulk data is the same block of memory as the input bulk data. This filter provides the mechanisms for in place image processing while maintaining general pipeline mechanics. InPlaceLabelMapFilters use less memory than standard ImageToImageFilters because the input buffer is reused as the output buffer. However, this benefit does not come without a cost. Since the filter overwrites its input, the ownership of the bulk data is transitioned from the input data object to the output data object. When a data object has multiple consumers with one of the consumers being an in place filter, the in place filter effectively destroys the bulk data for the data object. Upstream filters will then have to re-execute to regenerate the data object's bulk data for the remaining consumers.
Since an InPlaceLabelMapFilter reuses the input bulk data memory for the output bulk data memory, the input image type must match the output image type. If the input and output image types are not identical, the filter reverts to a traditional ImageToImageFilter behaviour where an output image is allocated. In place operation can also be controlled (when the input and output image type match) via the methods InPlaceOn() and InPlaceOff().
Subclasses of InPlaceLabelMapFilter must take extra care in how they manage memory using (and perhaps overriding) the implementations of ReleaseInputs() and AllocateOutputs() provided here.
This code was contributed in the Insight Journal paper: "Label object representation and manipulation with ITK" by Lehmann G. https://doi.org/10.54294/q6auw4
- Author
- Gaetan Lehmann. Biologie du Developpement et de la Reproduction, INRA de Jouy-en-Josas, France.
- See also
- LabelMapToBinaryImageFilter, LabelMapToLabelImageFilter
Definition at line 83 of file itkInPlaceLabelMapFilter.h.
|
| bool | CanRunInPlace () const |
| |
| virtual::itk::LightObject::Pointer | CreateAnother () const |
| |
| virtual const char * | GetNameOfClass () const |
| |
|
| virtual void | SetInPlace (bool _arg) |
| |
| virtual bool | GetInPlace () |
| |
| virtual void | InPlaceOn () |
| |
| virtual void | InPlaceOff () |
| |
| virtual::itk::LightObject::Pointer | CreateAnother () const |
| |
| virtual::itk::LightObject::Pointer | CreateAnother () const |
| |
| 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 |
| |
| LightObject::Pointer | CreateAnother () const override |
| |
| 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 | AllocateOutputs () override |
| |
| InputImageType * | GetLabelMap () override |
| |
| | InPlaceLabelMapFilter ()=default |
| |
| void | PrintSelf (std::ostream &os, Indent indent) const override |
| |
| | ~InPlaceLabelMapFilter () 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 |
| |
| | 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 |
| |
| void | ClassicMultiThread (ThreadFunctionType callbackFunction) |
| |
| void | GenerateData () override |
| |
| 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 () |
| |