ITK  4.2.0
Insight Segmentation and Registration Toolkit
Classes | Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Member Functions | Private Types | Private Member Functions | Private Attributes
itk::LabelObject< TLabel, VImageDimension > Class Template Reference

#include <itkLabelObject.h>

+ Inheritance diagram for itk::LabelObject< TLabel, VImageDimension >:
+ Collaboration diagram for itk::LabelObject< TLabel, VImageDimension >:

List of all members.

Classes

class  ConstIndexIterator
class  ConstLineIterator
 A forward iterator over the lines of a LabelObject

. More...

Public Types

typedef unsigned int AttributeType
typedef SmartPointer< const SelfConstPointer
typedef WeakPointer< const SelfConstWeakPointer
typedef Index< VImageDimension > IndexType
typedef Self LabelObjectType
typedef TLabel LabelType
typedef LineType::LengthType LengthType
typedef LabelObjectLine
< VImageDimension > 
LineType
typedef Offset< VImageDimension > OffsetType
typedef SmartPointer< SelfPointer
typedef LabelObject Self
typedef itk::SizeValueType SizeValueType
typedef LightObject Superclass
- Public Types inherited from itk::LightObject

Public Member Functions

void AddIndex (const IndexType &idx)
void AddLine (const IndexType &idx, const LengthType &length)
void AddLine (const LineType &line)
void Clear ()
void CopyAllFrom (const Self *src)
virtual void CopyAttributesFrom (const Self *src)
virtual ::itk::LightObject::Pointer CreateAnother (void) const
bool Empty () const
IndexType GetIndex (SizeValueType i) const
const LabelTypeGetLabel () const
const LineTypeGetLine (SizeValueType i) const
LineTypeGetLine (SizeValueType i)
virtual const char * GetNameOfClass () const
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
virtual void Delete ()
virtual int GetReferenceCount () const
 itkCloneMacro (Self)
void Print (std::ostream &os, Indent indent=0) const
virtual void Register () const
virtual void SetReferenceCount (int)
virtual void UnRegister () const

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 Public Attributes

static const unsigned int ImageDimension = VImageDimension
static const AttributeType LABEL = 0

Protected Member Functions

 LabelObject ()
void PrintSelf (std::ostream &os, Indent indent) const
- 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

typedef std::deque< LineTypeLineContainerType

Private Member Functions

 LabelObject (const Self &)
void operator= (const Self &)

Private Attributes

LabelType m_Label
LineContainerType m_LineContainer

Additional Inherited Members

- Protected Types inherited from itk::LightObject
typedef int InternalReferenceCountType
- Protected Attributes inherited from itk::LightObject
InternalReferenceCountType m_ReferenceCount
SimpleFastMutexLock m_ReferenceCountLock

Detailed Description

template<class TLabel, unsigned int VImageDimension>
class itk::LabelObject< TLabel, VImageDimension >

The base class for the representation of an 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 reinplement the CopyAttributesFrom() method.

The pixels locations belonging to the LabelObject can be obtained using:

for(unsigned int pixelId = 0; pixelId < labelObject->Size(); pixelId++)
{
std::cout << labelObject->GetIndex(pixelId);
}
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: http://hdl.handle.net/1926/584 or http://www.insight-journal.org/browse/publication/176

See also:
LabelMapFilter, AttributeLabelObject

Definition at line 64 of file itkLabelObject.h.


Member Typedef Documentation

template<class TLabel , unsigned int VImageDimension>
typedef unsigned int itk::LabelObject< TLabel, VImageDimension >::AttributeType
template<class TLabel , unsigned int VImageDimension>
typedef SmartPointer< const Self > itk::LabelObject< TLabel, VImageDimension >::ConstPointer
template<class TLabel , unsigned int VImageDimension>
typedef WeakPointer< const Self > itk::LabelObject< TLabel, VImageDimension >::ConstWeakPointer
template<class TLabel , unsigned int VImageDimension>
typedef Index< VImageDimension > itk::LabelObject< TLabel, VImageDimension >::IndexType
template<class TLabel , unsigned int VImageDimension>
typedef Self itk::LabelObject< TLabel, VImageDimension >::LabelObjectType
template<class TLabel , unsigned int VImageDimension>
typedef TLabel itk::LabelObject< TLabel, VImageDimension >::LabelType
template<class TLabel , unsigned int VImageDimension>
typedef LineType::LengthType itk::LabelObject< TLabel, VImageDimension >::LengthType
template<class TLabel , unsigned int VImageDimension>
typedef std::deque< LineType > itk::LabelObject< TLabel, VImageDimension >::LineContainerType
private

Definition at line 371 of file itkLabelObject.h.

template<class TLabel , unsigned int VImageDimension>
typedef LabelObjectLine< VImageDimension > itk::LabelObject< TLabel, VImageDimension >::LineType
template<class TLabel , unsigned int VImageDimension>
typedef Offset< VImageDimension > itk::LabelObject< TLabel, VImageDimension >::OffsetType

Definition at line 84 of file itkLabelObject.h.

template<class TLabel , unsigned int VImageDimension>
typedef SmartPointer< Self > itk::LabelObject< TLabel, VImageDimension >::Pointer
template<class TLabel , unsigned int VImageDimension>
typedef LabelObject itk::LabelObject< TLabel, VImageDimension >::Self
template<class TLabel , unsigned int VImageDimension>
typedef itk::SizeValueType itk::LabelObject< TLabel, VImageDimension >::SizeValueType

Definition at line 89 of file itkLabelObject.h.

template<class TLabel , unsigned int VImageDimension>
typedef LightObject itk::LabelObject< TLabel, VImageDimension >::Superclass

Constructor & Destructor Documentation

template<class TLabel , unsigned int VImageDimension>
itk::LabelObject< TLabel, VImageDimension >::LabelObject ( )
protected
template<class TLabel , unsigned int VImageDimension>
itk::LabelObject< TLabel, VImageDimension >::LabelObject ( const Self )
private

Member Function Documentation

template<class TLabel , unsigned int VImageDimension>
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.

template<class TLabel , unsigned int VImageDimension>
void itk::LabelObject< TLabel, VImageDimension >::AddLine ( const IndexType idx,
const LengthType length 
)

Add a new line to the object, without any check.

template<class TLabel , unsigned int VImageDimension>
void itk::LabelObject< TLabel, VImageDimension >::AddLine ( const LineType line)

Add a new line to the object, without any check.

template<class TLabel , unsigned int VImageDimension>
void itk::LabelObject< TLabel, VImageDimension >::Clear ( )
template<class TLabel , unsigned int VImageDimension>
void itk::LabelObject< TLabel, VImageDimension >::CopyAllFrom ( const Self src)

Copy the lines, the label and the attributes from another node.

template<class TLabel , unsigned int VImageDimension>
virtual void itk::LabelObject< TLabel, VImageDimension >::CopyAttributesFrom ( const Self src)
virtual
template<class TLabel , unsigned int VImageDimension>
virtual::itk::LightObject::Pointer itk::LabelObject< TLabel, VImageDimension >::CreateAnother ( void  ) const
virtual

Create an object from an instance, potentially deferring to a factory. This method allows you to create an instance of an object that is exactly the same type as the referring object. This is useful in cases where an object has been cast back to a base class.

Reimplemented from itk::LightObject.

Reimplemented in itk::AttributeLabelObject< TLabel, VImageDimension, TAttributeValue >, itk::ShapeLabelObject< TLabel, VImageDimension >, and itk::StatisticsLabelObject< TLabel, VImageDimension >.

template<class TLabel , unsigned int VImageDimension>
bool itk::LabelObject< TLabel, VImageDimension >::Empty ( ) const

Returns true if there no line in the container (and thus no pixel in the object.

template<class TLabel , unsigned int VImageDimension>
static AttributeType itk::LabelObject< TLabel, VImageDimension >::GetAttributeFromName ( const std::string &  s)
static
template<class TLabel , unsigned int VImageDimension>
IndexType itk::LabelObject< TLabel, VImageDimension >::GetIndex ( SizeValueType  i) const

Get the index of the ith pixel associated with the object. Valid indices are from 0 to LabelObject->GetSize() - 1.

template<class TLabel , unsigned int VImageDimension>
const LabelType& itk::LabelObject< TLabel, VImageDimension >::GetLabel ( ) const

Set/Get the label associated with the object.

template<class TLabel , unsigned int VImageDimension>
const LineType& itk::LabelObject< TLabel, VImageDimension >::GetLine ( SizeValueType  i) const
template<class TLabel , unsigned int VImageDimension>
LineType& itk::LabelObject< TLabel, VImageDimension >::GetLine ( SizeValueType  i)
template<class TLabel , unsigned int VImageDimension>
static std::string itk::LabelObject< TLabel, VImageDimension >::GetNameFromAttribute ( const AttributeType a)
static
template<class TLabel , unsigned int VImageDimension>
virtual const char* itk::LabelObject< TLabel, VImageDimension >::GetNameOfClass ( ) const
virtual
template<class TLabel , unsigned int VImageDimension>
SizeValueType itk::LabelObject< TLabel, VImageDimension >::GetNumberOfLines ( ) const
template<class TLabel , unsigned int VImageDimension>
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.

template<class TLabel , unsigned int VImageDimension>
static Pointer itk::LabelObject< TLabel, VImageDimension >::New ( )
static
template<class TLabel , unsigned int VImageDimension>
void itk::LabelObject< TLabel, VImageDimension >::operator= ( const Self )
private
template<class TLabel , unsigned int VImageDimension>
void itk::LabelObject< TLabel, VImageDimension >::Optimize ( )

Reorder the lines, merge the touching lines and ensure that no pixel is covered by two lines

template<class TLabel , unsigned int VImageDimension>
void itk::LabelObject< TLabel, VImageDimension >::PrintSelf ( std::ostream &  os,
Indent  indent 
) const
protectedvirtual

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 >, itk::StatisticsLabelObject< TLabel, VImageDimension >, and itk::AttributeLabelObject< TLabel, VImageDimension, TAttributeValue >.

template<class TLabel , unsigned int 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.

template<class TLabel , unsigned int VImageDimension>
void itk::LabelObject< TLabel, VImageDimension >::SetLabel ( const LabelType label)
template<class TLabel , unsigned int VImageDimension>
void itk::LabelObject< TLabel, VImageDimension >::Shift ( OffsetType  offset)

Shift the object position

template<class TLabel , unsigned int VImageDimension>
SizeValueType itk::LabelObject< TLabel, VImageDimension >::Size ( ) const

Returns the number of pixels contained in the object.

Warning:
To get an accurate result, you need to make sure there is no duplication in the line container. One way to ensure this (at a cost) is to call the Optimize method.

Member Data Documentation

template<class TLabel , unsigned int VImageDimension>
const unsigned int itk::LabelObject< TLabel, VImageDimension >::ImageDimension = VImageDimension
static
template<class TLabel , unsigned int VImageDimension>
const AttributeType itk::LabelObject< TLabel, VImageDimension >::LABEL = 0
static

Definition at line 91 of file itkLabelObject.h.

template<class TLabel , unsigned int VImageDimension>
LabelType itk::LabelObject< TLabel, VImageDimension >::m_Label
private

Definition at line 374 of file itkLabelObject.h.

template<class TLabel , unsigned int VImageDimension>
LineContainerType itk::LabelObject< TLabel, VImageDimension >::m_LineContainer
private

Definition at line 373 of file itkLabelObject.h.


The documentation for this class was generated from the following file: