ITK
6.0.0
Insight Toolkit
|
#include <itkSmoothingQuadEdgeMeshFilter.h>
QuadEdgeMesh Smoothing Filter.
This filter adjusts point coordinates using Laplacian smoothing. The effect is to "relax" the mesh, making the cells better shaped and the vertices more evenly distributed.
For one iteration the location of one vertex is computed as follows:
\[ \boldsymbol{ v' }_i = v_i + m_RelaxationFactor \cdot \frac{ \sum_j w_{ij} ( \boldsymbol{ v_j } - \boldsymbol{ v_i } ) }{ \sum_j w_{ij} } \]
where \( w_{ij} \) is computed by the means of the set functor CoefficientsComputation
This process is then repeated for m_NumberOfIterations (the more iterations, the smoother the output mesh will be).
At each iteration, one can run DelaunayConformingQuadEdgeMeshFilter resulting a more regular (in terms of connectivity) and smoother mesh. Depending on the mesh size and configuration it could be an expensive process to run it at each iterations, especially if the number of iterations is large. Note that one can still run N iterations without DelaunayConformingQuadEdgeMeshFilter, then run this filter and apply this process M times.
Definition at line 58 of file itkSmoothingQuadEdgeMeshFilter.h.
Public Types | |
using | CoefficientsComputation = MatrixCoefficients< OutputMeshType > |
using | ConstPointer = SmartPointer< const Self > |
using | InputMeshPointer = typename InputMeshType::Pointer |
using | InputMeshType = TInputMesh |
using | OutputCellsContainerIterator = typename OutputMeshType::CellsContainerIterator |
using | OutputCellsContainerPointer = typename OutputMeshType::CellsContainerPointer |
using | OutputCoordType = typename OutputPointType::CoordRepType |
using | OutputEdgeCellType = typename OutputMeshType::EdgeCellType |
using | OutputMeshPointer = typename OutputMeshType::Pointer |
using | OutputMeshType = TOutputMesh |
using | OutputPointIdentifier = typename OutputMeshType::PointIdentifier |
using | OutputPointsContainer = typename OutputMeshType::PointsContainer |
using | OutputPointsContainerIterator = typename OutputMeshType::PointsContainerIterator |
using | OutputPointsContainerPointer = typename OutputMeshType::PointsContainerPointer |
using | OutputPointType = typename OutputMeshType::PointType |
using | OutputPolygonCellType = typename OutputMeshType::PolygonCellType |
using | OutputQEType = typename OutputMeshType::QEType |
using | OutputVectorType = typename OutputPointType::VectorType |
using | Pointer = SmartPointer< Self > |
using | Self = SmoothingQuadEdgeMeshFilter |
using | Superclass = QuadEdgeMeshToQuadEdgeMeshFilter< TInputMesh, TOutputMesh > |
Public Types inherited from itk::QuadEdgeMeshToQuadEdgeMeshFilter< TInputMesh, TInputMesh > | |
using | ConstPointer = SmartPointer< const Self > |
using | InputCellDataContainer = typename InputMeshType::CellDataContainer |
using | InputCellsContainerConstIterator = typename InputMeshType::CellsContainerConstIterator |
using | InputCellsContainerConstPointer = typename InputMeshType::CellsContainerConstPointer |
using | InputCellTraits = typename InputMeshType::CellTraits |
using | InputCoordRepType = typename InputMeshType::CoordRepType |
using | InputEdgeCellType = typename InputMeshType::EdgeCellType |
using | InputMeshConstPointer = typename InputMeshType::ConstPointer |
using | InputMeshPointer = typename InputMeshType::Pointer |
using | InputMeshType = TInputMesh |
using | InputPointDataContainer = typename InputMeshType::PointDataContainer |
using | InputPointDataContainerConstPointer = typename InputPointDataContainer::ConstPointer |
using | InputPointIdentifier = typename InputMeshType::PointIdentifier |
using | InputPointIdList = typename InputMeshType::PointIdList |
using | InputPointsContainerConstIterator = typename InputMeshType::PointsContainerConstIterator |
using | InputPointsContainerConstPointer = typename InputMeshType::PointsContainerConstPointer |
using | InputPointsIdInternalIterator = typename InputCellTraits::PointIdInternalIterator |
using | InputPointType = typename InputMeshType::PointType |
using | InputPolygonCellType = typename InputMeshType::PolygonCellType |
using | InputQEIterator = typename InputQEPrimal::IteratorGeom |
using | InputQEPrimal = typename InputMeshType::QEPrimal |
using | InputVectorType = typename InputMeshType::VectorType |
using | OutputCellDataContainer = typename OutputMeshType::CellDataContainer |
using | OutputCoordRepType = typename OutputMeshType::CoordRepType |
using | OutputMeshConstPointer = typename OutputMeshType::ConstPointer |
using | OutputMeshPointer = typename OutputMeshType::Pointer |
using | OutputMeshType = TInputMesh |
using | OutputPointDataContainer = typename OutputMeshType::PointDataContainer |
using | OutputPointIdentifier = typename OutputMeshType::PointIdentifier |
using | OutputPointsContainerConstPointer = typename OutputMeshType::PointsContainerConstPointer |
using | OutputPointsContainerIterator = typename OutputMeshType::PointsContainerIterator |
using | OutputPointsContainerPointer = typename OutputMeshType::PointsContainerPointer |
using | OutputPointType = typename OutputMeshType::PointType |
using | OutputQEIterator = typename OutputQEPrimal::IteratorGeom |
using | OutputQEPrimal = typename OutputMeshType::QEPrimal |
using | OutputVectorType = typename OutputMeshType::VectorType |
using | Pointer = SmartPointer< Self > |
using | Self = QuadEdgeMeshToQuadEdgeMeshFilter |
using | Superclass = MeshToMeshFilter< TInputMesh, TInputMesh > |
Public Types inherited from itk::MeshToMeshFilter< TInputMesh, TInputMesh > | |
using | ConstPointer = SmartPointer< const Self > |
using | InputMeshPointer = typename InputMeshType::Pointer |
using | InputMeshType = TInputMesh |
using | OutputMeshPointer = typename OutputMeshType::Pointer |
using | OutputMeshType = TInputMesh |
using | Pointer = SmartPointer< Self > |
using | Self = MeshToMeshFilter |
using | Superclass = MeshSource< TInputMesh > |
Public Types inherited from itk::MeshSource< TInputMesh > | |
using | ConstPointer = SmartPointer< const Self > |
using | DataObjectIdentifierType = Superclass::DataObjectIdentifierType |
using | DataObjectPointer = DataObject::Pointer |
using | OutputMeshPointer = typename OutputMeshType::Pointer |
using | OutputMeshType = TInputMesh |
using | Pointer = SmartPointer< Self > |
using | Self = MeshSource |
using | Superclass = ProcessObject |
using | DataObjectPointerArraySizeType = ProcessObject::DataObjectPointerArraySizeType |
Public Types inherited from itk::ProcessObject | |
using | ConstPointer = SmartPointer< const Self > |
using | DataObjectIdentifierType = DataObject::DataObjectIdentifierType |
using | DataObjectPointer = DataObject::Pointer |
using | DataObjectPointerArray = std::vector< DataObjectPointer > |
using | DataObjectPointerArraySizeType = DataObjectPointerArray::size_type |
using | MultiThreaderType = MultiThreaderBase |
using | NameArray = std::vector< DataObjectIdentifierType > |
using | Pointer = SmartPointer< Self > |
using | Self = ProcessObject |
using | Superclass = Object |
Public Types inherited from itk::Object | |
using | ConstPointer = SmartPointer< const Self > |
using | Pointer = SmartPointer< Self > |
using | Self = Object |
using | Superclass = LightObject |
Public Types inherited from itk::LightObject | |
using | ConstPointer = SmartPointer< const Self > |
using | Pointer = SmartPointer< Self > |
using | Self = LightObject |
Static Public Member Functions | |
static Pointer | New () |
Static Public Member Functions inherited from itk::QuadEdgeMeshToQuadEdgeMeshFilter< TInputMesh, TInputMesh > | |
static Pointer | New () |
Static Public Member Functions inherited from itk::MeshToMeshFilter< TInputMesh, TInputMesh > | |
static Pointer | New () |
Static Public Member Functions inherited from itk::MeshSource< TInputMesh > | |
static Pointer | New () |
Static Public Member Functions inherited from itk::Object | |
static bool | GetGlobalWarningDisplay () |
static void | GlobalWarningDisplayOff () |
static void | GlobalWarningDisplayOn () |
static Pointer | New () |
static void | SetGlobalWarningDisplay (bool val) |
Static Public Member Functions inherited from itk::LightObject | |
static void | BreakOnError () |
static Pointer | New () |
Static Public Attributes | |
static constexpr unsigned int | PointDimension = OutputMeshType::PointDimension |
Protected Types | |
using | InputOutputDelaunayConformingPointer = typename InputOutputDelaunayConformingType::Pointer |
using | InputOutputDelaunayConformingType = DelaunayConformingQuadEdgeMeshFilter< InputMeshType, OutputMeshType > |
using | OutputDelaunayConformingPointer = typename OutputDelaunayConformingType::Pointer |
using | OutputDelaunayConformingType = DelaunayConformingQuadEdgeMeshFilter< OutputMeshType, OutputMeshType > |
Protected Attributes | |
CoefficientsComputation * | m_CoefficientsMethod {} |
bool | m_DelaunayConforming {} |
InputOutputDelaunayConformingPointer | m_InputDelaunayFilter {} |
unsigned int | m_NumberOfIterations {} |
OutputDelaunayConformingPointer | m_OutputDelaunayFilter {} |
OutputCoordType | m_RelaxationFactor {} |
Protected Attributes inherited from itk::ProcessObject | |
TimeStamp | m_OutputInformationMTime {} |
bool | m_Updating {} |
Protected Attributes inherited from itk::LightObject | |
std::atomic< int > | m_ReferenceCount {} |
Additional Inherited Members | |
Static Protected Member Functions inherited from itk::ProcessObject | |
template<typename TSourceObject > | |
static void | MakeRequiredOutputs (TSourceObject &sourceObject, const DataObjectPointerArraySizeType numberOfRequiredOutputs) |
static constexpr float | progressFixedToFloat (uint32_t fixed) |
static uint32_t | progressFloatToFixed (float f) |
using itk::SmoothingQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::CoefficientsComputation = MatrixCoefficients<OutputMeshType> |
Definition at line 94 of file itkSmoothingQuadEdgeMeshFilter.h.
using itk::SmoothingQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::ConstPointer = SmartPointer<const Self> |
Definition at line 65 of file itkSmoothingQuadEdgeMeshFilter.h.
using itk::SmoothingQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::InputMeshPointer = typename InputMeshType::Pointer |
Definition at line 75 of file itkSmoothingQuadEdgeMeshFilter.h.
using itk::SmoothingQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::InputMeshType = TInputMesh |
Definition at line 74 of file itkSmoothingQuadEdgeMeshFilter.h.
|
protected |
Definition at line 124 of file itkSmoothingQuadEdgeMeshFilter.h.
|
protected |
Definition at line 123 of file itkSmoothingQuadEdgeMeshFilter.h.
using itk::SmoothingQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::OutputCellsContainerIterator = typename OutputMeshType::CellsContainerIterator |
Definition at line 90 of file itkSmoothingQuadEdgeMeshFilter.h.
using itk::SmoothingQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::OutputCellsContainerPointer = typename OutputMeshType::CellsContainerPointer |
Definition at line 89 of file itkSmoothingQuadEdgeMeshFilter.h.
using itk::SmoothingQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::OutputCoordType = typename OutputPointType::CoordRepType |
Definition at line 85 of file itkSmoothingQuadEdgeMeshFilter.h.
|
protected |
Definition at line 129 of file itkSmoothingQuadEdgeMeshFilter.h.
|
protected |
Definition at line 128 of file itkSmoothingQuadEdgeMeshFilter.h.
using itk::SmoothingQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::OutputEdgeCellType = typename OutputMeshType::EdgeCellType |
Definition at line 79 of file itkSmoothingQuadEdgeMeshFilter.h.
using itk::SmoothingQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::OutputMeshPointer = typename OutputMeshType::Pointer |
Definition at line 78 of file itkSmoothingQuadEdgeMeshFilter.h.
using itk::SmoothingQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::OutputMeshType = TOutputMesh |
Definition at line 77 of file itkSmoothingQuadEdgeMeshFilter.h.
using itk::SmoothingQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::OutputPointIdentifier = typename OutputMeshType::PointIdentifier |
Definition at line 82 of file itkSmoothingQuadEdgeMeshFilter.h.
using itk::SmoothingQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::OutputPointsContainer = typename OutputMeshType::PointsContainer |
Definition at line 86 of file itkSmoothingQuadEdgeMeshFilter.h.
using itk::SmoothingQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::OutputPointsContainerIterator = typename OutputMeshType::PointsContainerIterator |
Definition at line 88 of file itkSmoothingQuadEdgeMeshFilter.h.
using itk::SmoothingQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::OutputPointsContainerPointer = typename OutputMeshType::PointsContainerPointer |
Definition at line 87 of file itkSmoothingQuadEdgeMeshFilter.h.
using itk::SmoothingQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::OutputPointType = typename OutputMeshType::PointType |
Definition at line 83 of file itkSmoothingQuadEdgeMeshFilter.h.
using itk::SmoothingQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::OutputPolygonCellType = typename OutputMeshType::PolygonCellType |
Definition at line 80 of file itkSmoothingQuadEdgeMeshFilter.h.
using itk::SmoothingQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::OutputQEType = typename OutputMeshType::QEType |
Definition at line 81 of file itkSmoothingQuadEdgeMeshFilter.h.
using itk::SmoothingQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::OutputVectorType = typename OutputPointType::VectorType |
Definition at line 84 of file itkSmoothingQuadEdgeMeshFilter.h.
using itk::SmoothingQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::Pointer = SmartPointer<Self> |
Definition at line 64 of file itkSmoothingQuadEdgeMeshFilter.h.
using itk::SmoothingQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::Self = SmoothingQuadEdgeMeshFilter |
Definition at line 63 of file itkSmoothingQuadEdgeMeshFilter.h.
using itk::SmoothingQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::Superclass = QuadEdgeMeshToQuadEdgeMeshFilter<TInputMesh, TOutputMesh> |
Definition at line 66 of file itkSmoothingQuadEdgeMeshFilter.h.
|
protected |
|
overrideprotected |
|
virtual |
Set/Get if DelaunayConformingQuadEdgeMeshFilter is used at the end of each iterations
|
overrideprotectedvirtual |
This method causes the filter to generate its output.
Reimplemented from itk::ProcessObject.
|
virtual |
Set/Get if DelaunayConformingQuadEdgeMeshFilter is used at the end of each iterations
|
overridevirtual |
Reimplemented from itk::ProcessObject.
|
virtual |
Set/Get the number of iterations
|
virtual |
Set/Get relaxation factor applied for each iteration
|
static |
New macro for creation of through a Smart Pointer
|
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::ProcessObject.
void itk::SmoothingQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::SetCoefficientsMethod | ( | CoefficientsComputation * | iMethod | ) |
|
virtual |
Set/Get if DelaunayConformingQuadEdgeMeshFilter is used at the end of each iterations
|
virtual |
Set/Get the number of iterations
|
virtual |
Set/Get relaxation factor applied for each iteration
|
protected |
Definition at line 121 of file itkSmoothingQuadEdgeMeshFilter.h.
|
protected |
Definition at line 133 of file itkSmoothingQuadEdgeMeshFilter.h.
|
protected |
Definition at line 126 of file itkSmoothingQuadEdgeMeshFilter.h.
|
protected |
Definition at line 135 of file itkSmoothingQuadEdgeMeshFilter.h.
|
protected |
Definition at line 131 of file itkSmoothingQuadEdgeMeshFilter.h.
|
protected |
Definition at line 137 of file itkSmoothingQuadEdgeMeshFilter.h.
|
staticconstexpr |
Definition at line 92 of file itkSmoothingQuadEdgeMeshFilter.h.