ITK  4.1.0
Insight Segmentation and Registration Toolkit
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions
itk::NormalQuadEdgeMeshFilter< TInputMesh, TOutputMesh > Class Template Reference

#include <itkNormalQuadEdgeMeshFilter.h>

+ Inheritance diagram for itk::NormalQuadEdgeMeshFilter< TInputMesh, TOutputMesh >:
+ Collaboration diagram for itk::NormalQuadEdgeMeshFilter< TInputMesh, TOutputMesh >:

List of all members.

Public Types

typedef SmartPointer< const SelfConstPointer
typedef InputMeshType::Pointer InputMeshPointer
typedef TInputMesh InputMeshType
typedef
InputMeshType::PointIdentifier 
InputPointIdentifier
typedef InputMeshType::PointType InputPointType
typedef InputMeshType::QEType InputQEType
typedef InputMeshType::VectorType InputVectorType
typedef
OutputMeshType::CellAutoPointer 
OutputCellAutoPointer
typedef
OutputMeshType::CellDataContainer 
OutputCellDataContainer
typedef
OutputMeshType::CellIdentifier 
OutputCellIdentifier
typedef
OutputMeshType::CellsContainerConstIterator 
OutputCellsContainerConstIterator
typedef
OutputMeshType::CellsContainerConstIterator 
OutputCellsContainerPointer
typedef OutputMeshType::CellType OutputCellType
typedef
OutputFaceNormalType::ValueType 
OutputFaceNormalComponentType
typedef
OutputMeshTraits::CellPixelType 
OutputFaceNormalType
typedef OutputMeshType::Pointer OutputMeshPointer
typedef OutputMeshType::MeshTraits OutputMeshTraits
typedef TOutputMesh OutputMeshType
typedef
OutputMeshType::PointDataContainer 
OutputPointDataContainer
typedef
OutputMeshType::PointIdentifier 
OutputPointIdentifier
typedef
OutputMeshType::PointIdIterator 
OutputPointIdIterator
typedef
OutputMeshType::PointsContainerIterator 
OutputPointsContainerIterator
typedef
OutputMeshType::PointsContainerPointer 
OutputPointsContainerPointer
typedef OutputMeshType::PointType OutputPointType
typedef
OutputPolygonType::SelfAutoPointer 
OutputPolygonAutoPointer
typedef
QuadEdgeMeshPolygonCell
< OutputCellType
OutputPolygonType
typedef OutputMeshType::QEType OutputQEType
typedef OutputPointType::VectorType OutputVectorType
typedef
OutputVertexNormalType::ValueType 
OutputVertexNormalComponentType
typedef OutputMeshTraits::PixelType OutputVertexNormalType
typedef SmartPointer< SelfPointer
typedef NormalQuadEdgeMeshFilter Self
typedef
QuadEdgeMeshToQuadEdgeMeshFilter
< TInputMesh, TOutputMesh > 
Superclass
typedef TriangleHelper
< OutputPointType
TriangleType
enum  WeightType {
  GOURAUD = 0,
  THURMER,
  AREA
}

Public Member Functions

virtual ::itk::LightObject::Pointer CreateAnother (void) const
virtual const char * GetNameOfClass () const
virtual WeightType GetWeight () const
virtual void SetWeight (WeightType _arg)

Static Public Member Functions

static Pointer New ()

Protected Member Functions

void ComputeAllFaceNormals ()
void ComputeAllVertexNormals ()
OutputFaceNormalType ComputeFaceNormal (OutputPolygonType *iPoly)
OutputVertexNormalType ComputeVertexNormal (const OutputPointIdentifier &iId)
void GenerateData ()
 NormalQuadEdgeMeshFilter ()
void PrintSelf (std::ostream &os, Indent indent) const
OutputVertexNormalComponentType Weight (const OutputPointIdentifier &iPId, const OutputCellIdentifier &iCId)
 ~NormalQuadEdgeMeshFilter ()

Protected Attributes

WeightType m_Weight

Private Member Functions

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

Detailed Description

template<class TInputMesh, class TOutputMesh>
class itk::NormalQuadEdgeMeshFilter< TInputMesh, TOutputMesh >

Filter which computes normals to faces and vertices and store it in the output mesh. Normals to face are first computed, then normals to vertices are computed as linear combination of neighbor face normals, i.e.

\[ n_v = \frac{\sum_{i=0}^{N_f} \omega_i \cdot n_i}{\| \sum_{k=0}^{N_f} \omega_x \cdot n_k\|} \]

.

The difference between each method relies in the definition of the weight $ \omega_i $ that you can specify by the method SetWeight.

These weights are defined in the literature:

Note:
By default the weight is set to the TURMER weight.
Todo:
Fix run-time issues regarding the difference between the Traits of TInputMesh and the one of TOutputMesh. Right now, it only works if TInputMesh::MeshTraits == TOutputMesh::MeshTraits (and of course it requires that the output have some itk::Vector for point data and cell data.

Definition at line 68 of file itkNormalQuadEdgeMeshFilter.h.


Member Typedef Documentation

template<class TInputMesh , class TOutputMesh >
typedef SmartPointer< const Self > itk::NormalQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::ConstPointer
template<class TInputMesh , class TOutputMesh >
typedef InputMeshType::Pointer itk::NormalQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::InputMeshPointer
template<class TInputMesh , class TOutputMesh >
typedef TInputMesh itk::NormalQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::InputMeshType

Input types.

Reimplemented from itk::QuadEdgeMeshToQuadEdgeMeshFilter< TInputMesh, TOutputMesh >.

Definition at line 80 of file itkNormalQuadEdgeMeshFilter.h.

template<class TInputMesh , class TOutputMesh >
typedef InputMeshType::PointIdentifier itk::NormalQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::InputPointIdentifier
template<class TInputMesh , class TOutputMesh >
typedef InputMeshType::PointType itk::NormalQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::InputPointType
template<class TInputMesh , class TOutputMesh >
typedef InputMeshType::QEType itk::NormalQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::InputQEType

Definition at line 87 of file itkNormalQuadEdgeMeshFilter.h.

template<class TInputMesh , class TOutputMesh >
typedef InputMeshType::VectorType itk::NormalQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::InputVectorType
template<class TInputMesh , class TOutputMesh >
typedef OutputMeshType::CellAutoPointer itk::NormalQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::OutputCellAutoPointer

Definition at line 100 of file itkNormalQuadEdgeMeshFilter.h.

template<class TInputMesh , class TOutputMesh >
typedef OutputMeshType::CellDataContainer itk::NormalQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::OutputCellDataContainer
template<class TInputMesh , class TOutputMesh >
typedef OutputMeshType::CellIdentifier itk::NormalQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::OutputCellIdentifier

Definition at line 99 of file itkNormalQuadEdgeMeshFilter.h.

template<class TInputMesh , class TOutputMesh >
typedef OutputMeshType::CellsContainerConstIterator itk::NormalQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::OutputCellsContainerConstIterator

Definition at line 102 of file itkNormalQuadEdgeMeshFilter.h.

template<class TInputMesh , class TOutputMesh >
typedef OutputMeshType::CellsContainerConstIterator itk::NormalQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::OutputCellsContainerPointer

Definition at line 101 of file itkNormalQuadEdgeMeshFilter.h.

template<class TInputMesh , class TOutputMesh >
typedef OutputMeshType::CellType itk::NormalQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::OutputCellType

Definition at line 98 of file itkNormalQuadEdgeMeshFilter.h.

template<class TInputMesh , class TOutputMesh >
typedef OutputFaceNormalType::ValueType itk::NormalQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::OutputFaceNormalComponentType

Definition at line 117 of file itkNormalQuadEdgeMeshFilter.h.

template<class TInputMesh , class TOutputMesh >
typedef OutputMeshTraits::CellPixelType itk::NormalQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::OutputFaceNormalType

Definition at line 116 of file itkNormalQuadEdgeMeshFilter.h.

template<class TInputMesh , class TOutputMesh >
typedef OutputMeshType::Pointer itk::NormalQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::OutputMeshPointer
template<class TInputMesh , class TOutputMesh >
typedef OutputMeshType::MeshTraits itk::NormalQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::OutputMeshTraits

Definition at line 112 of file itkNormalQuadEdgeMeshFilter.h.

template<class TInputMesh , class TOutputMesh >
typedef TOutputMesh itk::NormalQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::OutputMeshType

Output types.

Reimplemented from itk::QuadEdgeMeshToQuadEdgeMeshFilter< TInputMesh, TOutputMesh >.

Definition at line 89 of file itkNormalQuadEdgeMeshFilter.h.

template<class TInputMesh , class TOutputMesh >
typedef OutputMeshType::PointDataContainer itk::NormalQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::OutputPointDataContainer
template<class TInputMesh , class TOutputMesh >
typedef OutputMeshType::PointIdentifier itk::NormalQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::OutputPointIdentifier
template<class TInputMesh , class TOutputMesh >
typedef OutputMeshType::PointIdIterator itk::NormalQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::OutputPointIdIterator

Definition at line 95 of file itkNormalQuadEdgeMeshFilter.h.

template<class TInputMesh , class TOutputMesh >
typedef OutputMeshType::PointsContainerIterator itk::NormalQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::OutputPointsContainerIterator
template<class TInputMesh , class TOutputMesh >
typedef OutputMeshType::PointsContainerPointer itk::NormalQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::OutputPointsContainerPointer
template<class TInputMesh , class TOutputMesh >
typedef OutputMeshType::PointType itk::NormalQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::OutputPointType
template<class TInputMesh , class TOutputMesh >
typedef OutputPolygonType::SelfAutoPointer itk::NormalQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::OutputPolygonAutoPointer

Definition at line 107 of file itkNormalQuadEdgeMeshFilter.h.

template<class TInputMesh , class TOutputMesh >
typedef QuadEdgeMeshPolygonCell< OutputCellType > itk::NormalQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::OutputPolygonType

Definition at line 106 of file itkNormalQuadEdgeMeshFilter.h.

template<class TInputMesh , class TOutputMesh >
typedef OutputMeshType::QEType itk::NormalQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::OutputQEType

Definition at line 93 of file itkNormalQuadEdgeMeshFilter.h.

template<class TInputMesh , class TOutputMesh >
typedef OutputPointType::VectorType itk::NormalQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::OutputVectorType
template<class TInputMesh , class TOutputMesh >
typedef OutputVertexNormalType::ValueType itk::NormalQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::OutputVertexNormalComponentType

Definition at line 114 of file itkNormalQuadEdgeMeshFilter.h.

template<class TInputMesh , class TOutputMesh >
typedef OutputMeshTraits::PixelType itk::NormalQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::OutputVertexNormalType

Definition at line 113 of file itkNormalQuadEdgeMeshFilter.h.

template<class TInputMesh , class TOutputMesh >
typedef SmartPointer< Self > itk::NormalQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::Pointer
template<class TInputMesh , class TOutputMesh >
typedef NormalQuadEdgeMeshFilter itk::NormalQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::Self

Basic types.

Reimplemented from itk::QuadEdgeMeshToQuadEdgeMeshFilter< TInputMesh, TOutputMesh >.

Definition at line 72 of file itkNormalQuadEdgeMeshFilter.h.

template<class TInputMesh , class TOutputMesh >
typedef QuadEdgeMeshToQuadEdgeMeshFilter< TInputMesh, TOutputMesh > itk::NormalQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::Superclass
template<class TInputMesh , class TOutputMesh >
typedef TriangleHelper< OutputPointType > itk::NormalQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::TriangleType

Definition at line 104 of file itkNormalQuadEdgeMeshFilter.h.


Member Enumeration Documentation

template<class TInputMesh , class TOutputMesh >
enum itk::NormalQuadEdgeMeshFilter::WeightType
Enumerator:
GOURAUD 
THURMER 
AREA 

Definition at line 119 of file itkNormalQuadEdgeMeshFilter.h.


Constructor & Destructor Documentation

template<class TInputMesh , class TOutputMesh >
itk::NormalQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::NormalQuadEdgeMeshFilter ( ) [protected]
template<class TInputMesh , class TOutputMesh >
itk::NormalQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::~NormalQuadEdgeMeshFilter ( ) [protected]
template<class TInputMesh , class TOutputMesh >
itk::NormalQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::NormalQuadEdgeMeshFilter ( const Self ) [private]

Member Function Documentation

template<class TInputMesh , class TOutputMesh >
void itk::NormalQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::ComputeAllFaceNormals ( ) [protected]

Compute the normal to all faces on the mesh.

Note:
This method should be implemented in a multi-thread way in order to reduce the processing time.
template<class TInputMesh , class TOutputMesh >
void itk::NormalQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::ComputeAllVertexNormals ( ) [protected]

Compute the normal to all vertices on the mesh.

Note:
This method should be implemented in a multi-thread way in order to reduce the processing time.
template<class TInputMesh , class TOutputMesh >
OutputFaceNormalType itk::NormalQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::ComputeFaceNormal ( OutputPolygonType iPoly) [protected]

Compute the normal to a face iPoly. It assumes that iPoly != 0 and iPoly is a Triangle, i.e. 3 points only.

Note:
The normal computation itself can be further improved by making possible to cast a CellType into a TriangleType.
template<class TInputMesh , class TOutputMesh >
OutputVertexNormalType itk::NormalQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::ComputeVertexNormal ( const OutputPointIdentifier iId) [protected]

Compute the normal to one vertex by a weighted sum of the faces normal in the 0-ring.

Note:
The weight is chosen by the member m_Weight.
template<class TInputMesh , class TOutputMesh >
virtual::itk::LightObject::Pointer itk::NormalQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::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::QuadEdgeMeshToQuadEdgeMeshFilter< TInputMesh, TOutputMesh >.

template<class TInputMesh , class TOutputMesh >
void itk::NormalQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::GenerateData ( ) [protected, virtual]
Note:
Calling Superclass::GenerateData( ) is the longest part in the filter! Something must be done in the class itkQuadEdgeMeshToQuadEdgeMeshFilter.

Reimplemented from itk::ProcessObject.

template<class TInputMesh , class TOutputMesh >
virtual const char* itk::NormalQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::GetNameOfClass ( ) const [virtual]

Run-time type information (and related methods).

Reimplemented from itk::QuadEdgeMeshToQuadEdgeMeshFilter< TInputMesh, TOutputMesh >.

template<class TInputMesh , class TOutputMesh >
virtual WeightType itk::NormalQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::GetWeight ( ) const [virtual]
template<class TInputMesh , class TOutputMesh >
static Pointer itk::NormalQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::New ( ) [static]

Method for creation through the object factory.

Reimplemented from itk::QuadEdgeMeshToQuadEdgeMeshFilter< TInputMesh, TOutputMesh >.

template<class TInputMesh , class TOutputMesh >
void itk::NormalQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::operator= ( const Self ) [private]

Time when GenerateOutputInformation was last called.

Reimplemented from itk::QuadEdgeMeshToQuadEdgeMeshFilter< TInputMesh, TOutputMesh >.

template<class TInputMesh , class TOutputMesh >
void itk::NormalQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::PrintSelf ( std::ostream &  os,
Indent  indent 
) const [protected, virtual]

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::MeshSource< TOutputMesh >.

template<class TInputMesh , class TOutputMesh >
virtual void itk::NormalQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::SetWeight ( WeightType  _arg) [virtual]
template<class TInputMesh , class TOutputMesh >
OutputVertexNormalComponentType itk::NormalQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::Weight ( const OutputPointIdentifier iPId,
const OutputCellIdentifier iCId 
) [protected]

Definition of the weight in the 0-ring used for the vertex normal computation. By default m_Weight = THURMER;.


Member Data Documentation

template<class TInputMesh , class TOutputMesh >
WeightType itk::NormalQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::m_Weight [protected]

Definition at line 132 of file itkNormalQuadEdgeMeshFilter.h.


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