ITK
6.0.0
Insight Toolkit
|
#include <itkLabelObject.h>
The base class for the representation of a labeled binary object in an image.
LabelObject is the base class to represent a labeled object in an image. It should be used associated with the LabelMap.
LabelObject store mainly 2 things: the label of the object, and a set of lines which are part of the object. No attribute is available in that class, so this class can be used as a base class to implement a label object with attribute, or when no attribute is needed (see the reconstruction filters for an example. If a simple attribute is needed, AttributeLabelObject can be used directly.
All the subclasses of LabelObject have to reimplement the CopyAttributesFrom() and CopyAllFrom() method. No need to reimplement CopyLinesFrom() since all derived class share the same type line data members.
The pixels locations belonging to the LabelObject can be obtained using:
This implementation was taken from the Insight Journal paper: https://doi.org/10.54294/q6auw4
Definition at line 65 of file itkLabelObject.h.
Classes | |
class | ConstIndexIterator |
class | ConstLineIterator |
Public Types | |
using | AttributeType = unsigned int |
using | ConstPointer = SmartPointer< const Self > |
using | ConstWeakPointer = WeakPointer< const Self > |
using | IndexType = Index< VImageDimension > |
using | LabelObjectType = Self |
using | LabelType = TLabel |
using | LengthType = typename LineType::LengthType |
using | LineType = LabelObjectLine< VImageDimension > |
using | OffsetType = Offset< VImageDimension > |
using | Pointer = SmartPointer< Self > |
using | Self = LabelObject |
using | SizeValueType = itk::SizeValueType |
using | Superclass = LightObject |
Public Types inherited from itk::LightObject | |
using | ConstPointer = SmartPointer< const Self > |
using | Pointer = SmartPointer< Self > |
using | Self = LightObject |
Public Member Functions | |
void | AddIndex (const IndexType &idx) |
void | AddLine (const IndexType &idx, const LengthType &length) |
void | AddLine (const LineType &line) |
void | Clear () |
template<typename TSourceLabelObject > | |
void | CopyAllFrom (const TSourceLabelObject *src) |
template<typename TSourceLabelObject > | |
void | CopyAttributesFrom (const TSourceLabelObject *src) |
template<typename TSourceLabelObject > | |
void | CopyLinesFrom (const TSourceLabelObject *src) |
bool | Empty () const |
IndexType | GetIndex (SizeValueType offset) const |
const LabelType & | GetLabel () const |
LineType & | GetLine (SizeValueType i) |
const LineType & | GetLine (SizeValueType i) const |
const char * | GetNameOfClass () const override |
SizeValueType | GetNumberOfLines () const |
bool | HasIndex (const IndexType &idx) const |
void | Optimize () |
bool | RemoveIndex (const IndexType &idx) |
void | SetLabel (const LabelType &label) |
void | Shift (OffsetType offset) |
SizeValueType | Size () const |
Public Member Functions inherited from itk::LightObject | |
Pointer | Clone () const |
virtual Pointer | CreateAnother () const |
virtual void | Delete () |
virtual int | GetReferenceCount () const |
void | Print (std::ostream &os, Indent indent=0) const |
virtual void | Register () const |
virtual void | SetReferenceCount (int) |
virtual void | UnRegister () const noexcept |
Static Public Member Functions | |
static AttributeType | GetAttributeFromName (const std::string &s) |
static std::string | GetNameFromAttribute (const AttributeType &a) |
static Pointer | New () |
Static Public Member Functions inherited from itk::LightObject | |
static void | BreakOnError () |
static Pointer | New () |
Static Public Attributes | |
static constexpr unsigned int | ImageDimension = VImageDimension |
static constexpr AttributeType | LABEL = 0 |
Protected Member Functions | |
LabelObject () | |
void | PrintSelf (std::ostream &os, Indent indent) const override |
Protected Member Functions inherited from itk::LightObject | |
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 () |
Private Types | |
using | LineContainerType = typename std::deque< LineType > |
Private Attributes | |
LabelType | m_Label {} |
LineContainerType | m_LineContainer {} |
Additional Inherited Members | |
Protected Attributes inherited from itk::LightObject | |
std::atomic< int > | m_ReferenceCount {} |
using itk::LabelObject< TLabel, VImageDimension >::AttributeType = unsigned int |
Definition at line 92 of file itkLabelObject.h.
using itk::LabelObject< TLabel, VImageDimension >::ConstPointer = SmartPointer<const Self> |
Definition at line 76 of file itkLabelObject.h.
using itk::LabelObject< TLabel, VImageDimension >::ConstWeakPointer = WeakPointer<const Self> |
Definition at line 77 of file itkLabelObject.h.
using itk::LabelObject< TLabel, VImageDimension >::IndexType = Index<VImageDimension> |
Definition at line 87 of file itkLabelObject.h.
using itk::LabelObject< TLabel, VImageDimension >::LabelObjectType = Self |
Definition at line 74 of file itkLabelObject.h.
using itk::LabelObject< TLabel, VImageDimension >::LabelType = TLabel |
Definition at line 89 of file itkLabelObject.h.
using itk::LabelObject< TLabel, VImageDimension >::LengthType = typename LineType::LengthType |
Definition at line 91 of file itkLabelObject.h.
|
private |
Definition at line 408 of file itkLabelObject.h.
using itk::LabelObject< TLabel, VImageDimension >::LineType = LabelObjectLine<VImageDimension> |
Definition at line 90 of file itkLabelObject.h.
using itk::LabelObject< TLabel, VImageDimension >::OffsetType = Offset<VImageDimension> |
Definition at line 88 of file itkLabelObject.h.
using itk::LabelObject< TLabel, VImageDimension >::Pointer = SmartPointer<Self> |
Definition at line 75 of file itkLabelObject.h.
using itk::LabelObject< TLabel, VImageDimension >::Self = LabelObject |
Standard class type aliases
Definition at line 72 of file itkLabelObject.h.
using itk::LabelObject< TLabel, VImageDimension >::SizeValueType = itk::SizeValueType |
Definition at line 93 of file itkLabelObject.h.
using itk::LabelObject< TLabel, VImageDimension >::Superclass = LightObject |
Definition at line 73 of file itkLabelObject.h.
|
protected |
void itk::LabelObject< TLabel, VImageDimension >::AddIndex | ( | const IndexType & | idx | ) |
Add an index to the object. If the index is already in the object, the index can be found several time in the object.
void itk::LabelObject< TLabel, VImageDimension >::AddLine | ( | const IndexType & | idx, |
const LengthType & | length | ||
) |
Add a new line to the object, without any check.
void itk::LabelObject< TLabel, VImageDimension >::AddLine | ( | const LineType & | line | ) |
Add a new line to the object, without any check.
void itk::LabelObject< TLabel, VImageDimension >::Clear | ( | ) |
void itk::LabelObject< TLabel, VImageDimension >::CopyAllFrom | ( | const TSourceLabelObject< TLabel, VImageDimension > * | src | ) |
Copy the lines, the label and the attributes from another node.
void itk::LabelObject< TLabel, VImageDimension >::CopyAttributesFrom | ( | const TSourceLabelObject< TLabel, VImageDimension > * | src | ) |
Copy the label and the attributes of another node to this one
void itk::LabelObject< TLabel, VImageDimension >::CopyLinesFrom | ( | const TSourceLabelObject< TLabel, VImageDimension > * | src | ) |
Copy the lines of another node to this one
bool itk::LabelObject< TLabel, VImageDimension >::Empty | ( | ) | const |
Returns true if there no line in the container (and thus no pixel in the object.
|
static |
IndexType itk::LabelObject< TLabel, VImageDimension >::GetIndex | ( | SizeValueType | offset | ) | const |
Get the index of the ith pixel associated with the object. Valid indices are from 0 to LabelObject->GetSize() - 1.
const LabelType& itk::LabelObject< TLabel, VImageDimension >::GetLabel | ( | ) | const |
Set/Get the label associated with the object.
LineType& itk::LabelObject< TLabel, VImageDimension >::GetLine | ( | SizeValueType | i | ) |
const LineType& itk::LabelObject< TLabel, VImageDimension >::GetLine | ( | SizeValueType | i | ) | const |
|
static |
|
overridevirtual |
Reimplemented from itk::LightObject.
Reimplemented in itk::ShapeLabelObject< TLabel, VImageDimension >, and itk::StatisticsLabelObject< TLabel, VImageDimension >.
SizeValueType itk::LabelObject< TLabel, VImageDimension >::GetNumberOfLines | ( | ) | const |
bool itk::LabelObject< TLabel, VImageDimension >::HasIndex | ( | const IndexType & | idx | ) | const |
Return true if the object contain the given index and false otherwise. Worst case complexity is O(L) where L is the number of lines in the object.
|
static |
Method for creation through the object factory.
void itk::LabelObject< TLabel, VImageDimension >::Optimize | ( | ) |
Reorder the lines, merge the touching lines and ensure that no pixel is covered by two lines
|
overrideprotectedvirtual |
Methods invoked by Print() to print information about the object including superclasses. Typically not called by the user (use Print() instead) but used in the hierarchical print process to combine the output of several classes.
Reimplemented from itk::LightObject.
Reimplemented in itk::ShapeLabelObject< TLabel, VImageDimension >, and itk::StatisticsLabelObject< TLabel, VImageDimension >.
bool itk::LabelObject< TLabel, VImageDimension >::RemoveIndex | ( | const IndexType & | idx | ) |
Remove an index to the object. Depending on the configuration, it can either reduce the size of the corresponding line, add one more line, remove the line from the line container.
void itk::LabelObject< TLabel, VImageDimension >::SetLabel | ( | const LabelType & | label | ) |
void itk::LabelObject< TLabel, VImageDimension >::Shift | ( | OffsetType | offset | ) |
Shift the object position
SizeValueType itk::LabelObject< TLabel, VImageDimension >::Size | ( | ) | const |
Returns the number of pixels contained in the object.
|
staticconstexpr |
Definition at line 85 of file itkLabelObject.h.
|
staticconstexpr |
Definition at line 95 of file itkLabelObject.h.
|
private |
Definition at line 411 of file itkLabelObject.h.
|
private |
Definition at line 410 of file itkLabelObject.h.