Orfeo Toolbox  4.0
Classes | Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Types | Protected Member Functions | Protected Attributes | Private Types | Private Member Functions | Private Attributes | List of all members
itk::LabelObject< TLabel, VImageDimension > Class Template Reference

The base class for the representation of an labeled binary object in an image. More...

#include <itkLabelObject.h>

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

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 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
 
virtual void Delete ()
 
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
 
virtual int GetReferenceCount () const
 
bool HasIndex (const IndexType &idx) const
 
 itkCloneMacro (Self)
 
void Optimize ()
 
void Print (std::ostream &os, Indent indent=0) const
 
virtual void Register () const
 
bool RemoveIndex (const IndexType &idx)
 
void SetLabel (const LabelType &label)
 
virtual void SetReferenceCount (int)
 
void Shift (OffsetType offset)
 
SizeValueType Size () const
 
virtual void UnRegister () const
 

Static Public Member Functions

static void BreakOnError ()
 
static AttributeType GetAttributeFromName (const std::string &s)
 
static std::string GetNameFromAttribute (const AttributeType &a)
 
static Pointer New ()
 

Static Public Attributes

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

Protected Types

typedef int InternalReferenceCountType
 

Protected Member Functions

 LabelObject ()
 
virtual LightObject::Pointer InternalClone () const
 
virtual void PrintHeader (std::ostream &os, Indent indent) const
 
void PrintSelf (std::ostream &os, Indent indent) const
 
virtual void PrintTrailer (std::ostream &os, Indent indent) const
 

Protected Attributes

InternalReferenceCountType m_ReferenceCount
 
SimpleFastMutexLock m_ReferenceCountLock
 

Private Types

typedef std::deque< LineTypeLineContainerType
 

Private Member Functions

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

Private Attributes

LabelType m_Label
 
LineContainerType m_LineContainer
 

Detailed Description

template<typename 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<typename TLabel, unsigned int VImageDimension>
typedef unsigned int itk::LabelObject< TLabel, VImageDimension >::AttributeType

Definition at line 88 of file itkLabelObject.h.

template<typename TLabel, unsigned int VImageDimension>
typedef SmartPointer< const Self > itk::LabelObject< TLabel, VImageDimension >::ConstPointer

Definition at line 72 of file itkLabelObject.h.

template<typename TLabel, unsigned int VImageDimension>
typedef WeakPointer< const Self > itk::LabelObject< TLabel, VImageDimension >::ConstWeakPointer

Definition at line 73 of file itkLabelObject.h.

template<typename TLabel, unsigned int VImageDimension>
typedef Index< VImageDimension > itk::LabelObject< TLabel, VImageDimension >::IndexType

Definition at line 83 of file itkLabelObject.h.

typedef int itk::LightObject::InternalReferenceCountType
protectedinherited

Define the type of the reference count according to the target. This allows the use of atomic operations

Definition at line 152 of file itkLightObject.h.

template<typename TLabel, unsigned int VImageDimension>
typedef Self itk::LabelObject< TLabel, VImageDimension >::LabelObjectType

Definition at line 70 of file itkLabelObject.h.

template<typename TLabel, unsigned int VImageDimension>
typedef TLabel itk::LabelObject< TLabel, VImageDimension >::LabelType

Definition at line 85 of file itkLabelObject.h.

template<typename TLabel, unsigned int VImageDimension>
typedef LineType::LengthType itk::LabelObject< TLabel, VImageDimension >::LengthType

Definition at line 87 of file itkLabelObject.h.

template<typename TLabel, unsigned int VImageDimension>
typedef std::deque< LineType > itk::LabelObject< TLabel, VImageDimension >::LineContainerType
private

Definition at line 371 of file itkLabelObject.h.

template<typename TLabel, unsigned int VImageDimension>
typedef LabelObjectLine< VImageDimension > itk::LabelObject< TLabel, VImageDimension >::LineType

Definition at line 86 of file itkLabelObject.h.

template<typename TLabel, unsigned int VImageDimension>
typedef Offset< VImageDimension > itk::LabelObject< TLabel, VImageDimension >::OffsetType

Definition at line 84 of file itkLabelObject.h.

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

Definition at line 71 of file itkLabelObject.h.

template<typename TLabel, unsigned int VImageDimension>
typedef LabelObject itk::LabelObject< TLabel, VImageDimension >::Self

Standard class typedefs

Definition at line 68 of file itkLabelObject.h.

template<typename TLabel, unsigned int VImageDimension>
typedef itk::SizeValueType itk::LabelObject< TLabel, VImageDimension >::SizeValueType

Definition at line 89 of file itkLabelObject.h.

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

Definition at line 69 of file itkLabelObject.h.

Constructor & Destructor Documentation

template<typename TLabel , unsigned int VImageDimension>
itk::LabelObject< TLabel, VImageDimension >::LabelObject ( )
protected

Definition at line 29 of file itkLabelObject.hxx.

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

Member Function Documentation

template<typename 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.

Definition at line 158 of file itkLabelObject.hxx.

References itk::LabelObjectLine< VImageDimension >::GetLength(), itk::LabelObjectLine< VImageDimension >::IsNextIndex(), and itk::LabelObjectLine< VImageDimension >::SetLength().

template<typename 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.

Definition at line 179 of file itkLabelObject.hxx.

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

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

Definition at line 191 of file itkLabelObject.hxx.

void itk::LightObject::BreakOnError ( )
staticinherited

This method is called when itkExceptionMacro executes. It allows the debugger to break on error.

Definition at line 150 of file itkLightObject.cxx.

template<typename TLabel , unsigned int VImageDimension>
void itk::LabelObject< TLabel, VImageDimension >::Clear ( void  )

Definition at line 369 of file itkLabelObject.hxx.

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

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

Definition at line 280 of file itkLabelObject.hxx.

References NULL.

template<typename TLabel , unsigned int VImageDimension>
void itk::LabelObject< TLabel, VImageDimension >::CopyAttributesFrom ( const Self src)
virtual
template<typename 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::ShapeLabelObject< TLabel, VImageDimension >, and itk::StatisticsLabelObject< TLabel, VImageDimension >.

void itk::LightObject::Delete ( )
virtualinherited

Delete an itk object. This method should always be used to delete an object when the new operator was used to create it. Using the C delete method will not work with reference counting.

Delete a itk object. This method should always be used to delete an object when the new operator was used to create it. Using the C++ delete method will not work with reference counting.

Definition at line 91 of file itkLightObject.cxx.

template<typename 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.

Definition at line 235 of file itkLabelObject.hxx.

template<typename TLabel , unsigned int VImageDimension>
LabelObject< TLabel, VImageDimension >::AttributeType itk::LabelObject< TLabel, VImageDimension >::GetAttributeFromName ( const std::string &  s)
static
template<typename TLabel , unsigned int VImageDimension>
LabelObject< TLabel, 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.

Definition at line 242 of file itkLabelObject.hxx.

References itk::Index< VIndexDimension >::GetIndex().

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

Set/Get the label associated with the object.

Set/Get the label associated with that object.

Definition at line 66 of file itkLabelObject.hxx.

template<typename TLabel , unsigned int VImageDimension>
const LabelObject< TLabel, VImageDimension >::LineType & itk::LabelObject< TLabel, VImageDimension >::GetLine ( SizeValueType  i) const

Definition at line 206 of file itkLabelObject.hxx.

template<typename TLabel , unsigned int VImageDimension>
LabelObject< TLabel, VImageDimension >::LineType & itk::LabelObject< TLabel, VImageDimension >::GetLine ( SizeValueType  i)

Definition at line 213 of file itkLabelObject.hxx.

template<typename TLabel , unsigned int VImageDimension>
std::string itk::LabelObject< TLabel, VImageDimension >::GetNameFromAttribute ( const AttributeType a)
static
template<typename TLabel, unsigned int VImageDimension>
virtual const char* itk::LabelObject< TLabel, VImageDimension >::GetNameOfClass ( ) const
virtual
template<typename TLabel , unsigned int VImageDimension>
LabelObject< TLabel, VImageDimension >::SizeValueType itk::LabelObject< TLabel, VImageDimension >::GetNumberOfLines ( ) const

Definition at line 198 of file itkLabelObject.hxx.

virtual int itk::LightObject::GetReferenceCount ( ) const
inlinevirtualinherited

Gets the reference count on this object.

Definition at line 112 of file itkLightObject.h.

template<typename 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.

Definition at line 84 of file itkLabelObject.hxx.

LightObject::Pointer itk::LightObject::InternalClone ( ) const
protectedvirtualinherited
itk::LightObject::itkCloneMacro ( Self  )
inherited
template<typename TLabel, unsigned int VImageDimension>
static Pointer itk::LabelObject< TLabel, VImageDimension >::New ( )
static

Method for creation through the object factory.

template<typename TLabel, unsigned int VImageDimension>
void itk::LabelObject< TLabel, VImageDimension >::operator= ( const Self )
private
template<typename 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

Definition at line 293 of file itkLabelObject.hxx.

References itk::LabelObjectLine< VImageDimension >::GetIndex(), itk::Index< VIndexDimension >::GetIndex(), and itk::LabelObjectLine< VImageDimension >::GetLength().

void itk::LightObject::Print ( std::ostream &  os,
Indent  indent = 0 
) const
inherited

Cause the object to print itself out.

Avoid DLL boundary problems. This function will be common to all itk objects. It just calls the header/self/trailer virtual print methods, which can be overriden by subclasses (any itk object).

Definition at line 137 of file itkLightObject.cxx.

References itk::Indent::GetNextIndent().

Referenced by itk::operator<<(), and itk::VideoStream< TFrameType >::PrintSelf().

void itk::LightObject::PrintHeader ( std::ostream &  os,
Indent  indent 
) const
protectedvirtualinherited

Define a default print header for all objects.

Definition at line 315 of file itkLightObject.cxx.

template<typename 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.

Chaining method to print an object's instance variables, as well as its superclasses.

Reimplemented from itk::LightObject.

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

Definition at line 376 of file itkLabelObject.hxx.

Referenced by itk::AttributeLabelObject< TLabel, VImageDimension, TAttributeValue >::PrintSelf(), and itk::ShapeLabelObject< TLabel, VImageDimension >::PrintSelf().

void itk::LightObject::PrintTrailer ( std::ostream &  os,
Indent  indent 
) const
protectedvirtualinherited

Define a default print trailer for all objects.

Definition at line 325 of file itkLightObject.cxx.

void itk::LightObject::Register ( ) const
virtualinherited

Increase the reference count (mark as used by another object).

Reimplemented in itk::Object, and itk::ExceptionObject::ReferenceCountedExceptionData.

Definition at line 158 of file itkLightObject.cxx.

Referenced by itk::ExceptionObject::ReferenceCountedExceptionData::Register().

template<typename 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.

Definition at line 104 of file itkLabelObject.hxx.

References itk::Index< VIndexDimension >::GetIndex(), and itk::Index< VIndexDimension >::SetIndex().

template<typename TLabel , unsigned int VImageDimension>
void itk::LabelObject< TLabel, VImageDimension >::SetLabel ( const LabelType label)

Definition at line 73 of file itkLabelObject.hxx.

void itk::LightObject::SetReferenceCount ( int  ref)
virtualinherited

Sets the reference count on this object. This is a dangerous method, use it with care.

Sets the reference count (use with care)

Reimplemented in itk::Object.

Definition at line 240 of file itkLightObject.cxx.

template<typename TLabel , unsigned int VImageDimension>
void itk::LabelObject< TLabel, VImageDimension >::Shift ( OffsetType  offset)
template<typename TLabel , unsigned int VImageDimension>
LabelObject< TLabel, VImageDimension >::SizeValueType itk::LabelObject< TLabel, VImageDimension >::Size ( void  ) 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.

Definition at line 220 of file itkLabelObject.hxx.

void itk::LightObject::UnRegister ( ) const
virtualinherited

Decrease the reference count (release by another object).

Reimplemented in itk::Object, and itk::ExceptionObject::ReferenceCountedExceptionData.

Definition at line 189 of file itkLightObject.cxx.

Referenced by itk::LightObject::New(), and itk::ExceptionObject::ReferenceCountedExceptionData::UnRegister().

Member Data Documentation

template<typename TLabel, unsigned int VImageDimension>
const unsigned int itk::LabelObject< TLabel, VImageDimension >::ImageDimension = VImageDimension
static

Definition at line 81 of file itkLabelObject.h.

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

Definition at line 91 of file itkLabelObject.h.

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

Definition at line 374 of file itkLabelObject.h.

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

Definition at line 373 of file itkLabelObject.h.

InternalReferenceCountType itk::LightObject::m_ReferenceCount
mutableprotectedinherited

Number of uses of this object by other objects.

Definition at line 156 of file itkLightObject.h.

SimpleFastMutexLock itk::LightObject::m_ReferenceCountLock
mutableprotectedinherited

Mutex lock to protect modification to the reference count

Definition at line 159 of file itkLightObject.h.


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

Generated at Sat Mar 8 2014 17:17:20 for Orfeo Toolbox with doxygen 1.8.3.1