Class representing adaptive tetrahedral mesh.
|
Public Types |
enum | { MARKED = 1 << 10,
DOMAIN_BOUNDARY = 1 << 11
} |
| Custom flags used to mark vertices in the mesh. More...
|
typedef std::vector< CTetraFeatures > | tSegments |
| Vector of image features.
|
typedef mds::base::CSharedPtr<
CTetraMesh > | tSmartPtr |
| Smart pointer type.
|
Public Member Functions |
bool | approachEdges (bool bCheckIsotropicMinEdgeLength=false) |
| Introduces new points lying on image edges to the mesh.
|
virtual bool | attractVertex (vctl::MCPoint3D *pPoint) |
| Modifies position of a given vertex.
|
void | changeRegion (int iMinIndex, int iMaxIndex=-1, int iFinalRegion=-1) |
| Overrides classification of all tetrahedron in a specified region.
|
bool | checkBoundaryEdge (vctl::MCEdge *pEdge, vctl::MCVector3D *pNormal, double dThreshold=DEFAULT_DISTANCE_THRESHOLD) |
| Checks if a given edge is a boundary edge.
|
bool | checkBoundaryTriangle (vctl::MCPoint3D *p0, vctl::MCPoint3D *p1, vctl::MCPoint3D *p2, double dThreshold=DEFAULT_DISTANCE_THRESHOLD) |
| Checks if a given triangle forms boundary between two regions.
|
bool | checkTetrahedronVolume (vctl::MCTetra *pTetra) |
| Checks a tetrahedron volume.
|
bool | classifyAdjacent (double dBThreshold=DEFAULT_DISTANCE_THRESHOLD) |
| Classify all non-classified tetrahedra with respect to the neighbours.
|
void | clearTriangles () |
| Clears the helper list of triangles.
|
void | createTriangles (double dQuality, int iRegion=-1) |
| Creates the helper list of triangles.
|
void | createTriangles (double a, double b, double c, double d, int iRegion=-1) |
| Creates the helper list of triangles.
|
void | createTriangles (int iRegion=-1, bool bBoundary=false) |
| Creates the helper list of triangles.
|
| CTetraMesh () |
| Default constructor.
|
template<class S> |
void | deserialize (mds::mod::CChannelSerializer< S > &Reader) |
| Deserializes all class members the tetrahedron mesh.
|
bool | edgeSplitting (double dOrientThreshold=DEFAULT_SPLITTING_THRESHOLD) |
| Adaptation of the triangular mesh to the underlying volume.
|
int | evalEdgeDistancePoint (vctl::MCPoint3D *pPoint, mds::img::CPoint3D &Normal, int iMaxDistance) |
bool | evaluateFeatures (bool bSkipSmall=true) |
| Evaluates features of all tetrahedra in the mesh.
|
bool | evaluateSegmentFeatures (bool bSkipSmall=true) |
| Evaluates features of all segments in the mesh.
|
void | findIsolatedRegions () |
| Identifies individual isolated regions of tetrahedra in the pre-classified mesh.
|
double | getControlSpaceLength (vctl::MCPoint3D &p1, vctl::MCPoint3D &p2) |
| Returns length of the edge in the control space.
|
mds::img::CDensityVolume * | getControlSpacePtr () |
| Returns pointer to the underlying control space volume.
|
double | getControlSpaceValue (const mds::img::CPoint3D &Point) |
| Returns subpixel control space value.
|
double | getCornerMinEdgeLength () |
| Returns the minimal edge length near corners.
|
mds::img::CDensityVolume * | getEdgeVolumePtr () |
| Returns pointer to the underlying edge volume.
|
vctl::MCTri * | getFirstTriangle () |
| Returns pointer to the first triangle in the helper list.
|
int | getNumOfSegments () const |
| Returns number of regions.
|
int | getNumOfTriangles () |
| Returns the number of triangles in the helper list.
|
tSegments & | getSegments () |
| Returns vector of image features.
|
vctl::MCTriS * | getTriangles () |
| Returns pointer to the helper list of triangles.
|
double | getVertexNeighbourhood () |
| Return size of a neighbourhood used to attract new vertex to an image edge.
|
mds::img::CDensityVolume * | getVolumePtr () |
| Returns pointer to the underlying volume.
|
bool | init (double dThreshold=DEFAULT_INIT_THRESHOLD, tSize CellSize=DEFAULT_CELL, tSize NumOfNodes=DEFAULT_NUMBER_OF_NODES) |
| Initializes the Delaunay triangulation.
|
bool | isBoundaryTriangle (vctl::MCVertex *p0, vctl::MCVertex *p1, vctl::MCVertex *p2) |
| Basic test if a given triangle forms boundary between two regions.
|
bool | isotropicAttractVertex (vctl::MCPoint3D *pPoint) |
| Modifies position of a given vertex.
|
bool | isotropicEdgeSplitting (double dThreshold, bool bBoundaryEdges=false) |
| Helper vertex position accumulator structure used by variational meshing.
|
bool | isotropicSplitEdge (vctl::MCVertex *pV0, vctl::MCVertex *pV1, double dThreshold, tPoints &EdgePoints, tPoints &Points, bool bBoundary=false) |
| Anisotropic splitting of a given edge.
|
bool | isotropicSplitSubEdge (vctl::MCPoint3D &p1, vctl::MCPoint3D &p2, double dThreshold, double dRestrictedZone, tPoints &Points) |
| Anisotropic splitting of a given edge.
|
bool | isotropicVertexMoving () |
| Adaptation of the mesh by means of a vertex moving.
|
bool | markBoundaryVertices () |
| Finds all vertices lying close to an image edge.
|
| MDS_ENTITY_BLOCK_SIZE (4096) |
| Standard method getEntityBlockSize().
|
| MDS_ENTITY_COMPRESSION (mds::mod::CC_RAW) |
| Standard method getEntityCompression().
|
| MDS_ENTITY_NAME ("TetraMesh") |
| Standard method getEntityName().
|
bool | noiseReduction () |
| Removes noisy (wrong classified) tetrahedra in the mesh.
|
bool | optimizeByVertexMoving (double dMinQuality) |
| Optimization of the mesh by means of a vertex moving.
|
bool | prepareControlSpace (double dK=DEFAULT_K, double dAvgTetrahedronSize=DEFAULT_AVG_TETRA_SIZE) |
| Makes the control space necessary for anisotropic meshing.
|
void | reassignRegions () |
| Eliminates unused indexes of regions shaking down all currently assigned indexes.
|
bool | regionGrowing (CTetraSimilarityMeasure &Measure, double dBThreshold=DEFAULT_DISTANCE_THRESHOLD) |
| Simple region growing segmentation.
|
bool | regionMerging (CTetraSimilarityMeasure &Measure, double dBThreshold=DEFAULT_DISTANCE_THRESHOLD, double dDeltaThreshold=DEFAULT_DELTA_THRESHOLD, tSize NumOfRegions=-1, bool bMergeAdjacent=true) |
| Aglomerative merging of regions in the mesh.
|
bool | saveSTL (mds::mod::CChannel &Channel) |
| Writes the helper list of triangles to a given output channel in STL format.
|
bool | saveVRML (mds::mod::CChannel &Channel) |
| Writes the helper list of triangles to a given output channel in VRML format.
|
template<class S> |
void | serialize (mds::mod::CChannelSerializer< S > &Writer) |
| Serializes the tetrahedron mesh.
|
void | setControlSpace (mds::img::CDensityVolume *pControlSpace) |
| Selection of the volume for segmentation.
|
void | setCornerMinEdgeLength (double dValue=DEFAULT_CORNER_MIN_EDGE_LENGTH) |
| Sets minimal allowed edge length in the triangulation near corners.
|
void | setEdgeVolume (mds::img::CDensityVolume *pEdgeVolume) |
| Selection of the volume for segmentation.
|
void | setNumOfSegments (int i) |
| Sets the number of regions.
|
void | setVertexNeighbourhood (tSize Value=DEFAULT_VERTEX_NEIGHBOURHOOD) |
| Sets size of a neighbourhood used to attract new vertex to an image edge.
|
void | setVolume (mds::img::CDensityVolume *pVolume) |
| Selection of the volume for segmentation.
|
bool | splitEdge (vctl::MCEdge *pEdge, double dThreshold, tPoints &Points) |
| Splits a given edge.
|
bool | splitTetrahedron (vctl::MCTetra *pTetrahedron) |
| Splits a given tetrahedron.
|
bool | subpixelAttractVertex (vctl::MCPoint3D *pPoint) |
| Modifies position of a given vertex.
|
bool | subpixelVertexMoving () |
| Adaptation of the mesh by means of a vertex moving.
|
bool | tetrahedronSplitting (CTetraHomogeneityMeasure &Measure) |
| Adaptation of the triangular mesh to the underlying volume.
|
bool | variationalMeshing (bool bCheckIsotropicMinEdgeLength=false) |
| Variational approach to tetrahedral isotropic meshing.
|
void | visualize (mds::img::CDVolume *pVolume) |
| Visualizes the triangular mesh.
|
virtual | ~CTetraMesh () |
| Virtual destructor.
|
Static Public Member Functions |
static bool | checkBoundaryFacetFunc (vctl::MCPoint3D *p1, vctl::MCPoint3D *p2, vctl::MCPoint3D *p3, CDelaunayTetra *pMesh) |
| Checks if a given facet forms boundary between two image regions.
|
static bool | checkIsotropicMinEdgeLengthFunc (vctl::MCPoint3D *p1, vctl::MCPoint3D *p2, CDelaunayTetra *pMesh) |
| Checks minimal edge length in the cavity.
|
static bool | checkIsotropicMinEdgeLengthFunc2 (vctl::MCPoint3D *p1, vctl::MCPoint3D *p2, CDelaunayTetra *pMesh) |
static bool | checkNoImageEdgeIntersectionFunc (vctl::MCPoint3D *p1, vctl::MCPoint3D *p2, CDelaunayTetra *pMesh) |
| Checks if edge intersects any image edge.
|
static void | edgeSplittingInsertFunc (vctl::MCTetra *pTetrahedron, CDelaunayTetra *pMesh) |
| Inserts tetrahedron edges to the list of edges.
|
static void | edgeSplittingRemoveFunc (vctl::MCTetra *pTetrahedron, CDelaunayTetra *pMesh) |
| Inserts tetrahedron edges to the list of edges.
|
static void | isotropicEdgeSplittingInsertFunc (vctl::MCTetra *pTetrahedron, CDelaunayTetra *pMesh) |
| Inserts tetrahedron edges to the list of edges.
|
static void | isotropicEdgeSplittingRemoveFunc (vctl::MCTetra *pTetrahedron, CDelaunayTetra *pMesh) |
| Inserts tetrahedron edges to the list of edges.
|
static void | tetrahedronSplittingInsertFunc (vctl::MCTetra *pTetrahedron, CDelaunayTetra *pMesh) |
| Evaluates tetrahedron homogeneity and inserts tetrahedron to the sorted queue.
|
static void | tetrahedronSplittingRemoveFunc (vctl::MCTetra *pTetrahedron, CDelaunayTetra *pMesh) |
| Unsorts tetrahedron from the queue.
|
Static Public Attributes |
static const double | DEFAULT_AVG_TETRA_SIZE = 30.0 |
static const tSize | DEFAULT_CELL = 3 |
| Default parameters.
|
static const tSize | DEFAULT_CELL_MARGIN = 5 |
static const double | DEFAULT_CORNER_MIN_EDGE_LENGTH = 0.5 |
static const double | DEFAULT_DELTA_THRESHOLD = 1.5 |
static const double | DEFAULT_DISTANCE_THRESHOLD = 1.5 |
static const double | DEFAULT_INIT_THRESHOLD = 0.5 |
static const double | DEFAULT_K = 1.0 |
static const double | DEFAULT_SPLITTING_THRESHOLD = 0.5 |
static const tSize | DEFAULT_VERTEX_NEIGHBOURHOOD = 3 |
static const double | MIN_TETRAHEDRON_VOLUME = 2.0 |
Protected Types |
typedef std::vector< vctl::MCPoint3D > | tPoints |
| Vector of points.
|
Protected Attributes |
double | m_dCornerMinEdgeLength |
| ! Minimal edge length near corners.
|
int | m_iNumOfSegments |
| Number of segments in the mesh.
|
CTetraHomogeneityMeasure * | m_pHomogeneityMeasure |
| Currently used homogeneity measure.
|
tSegments | m_Segments |
| Vector of image features extracted for every region.
|
mds::img::CDensityVolumePtr | m_spControlSpace |
| Pointer to the control space.
|
mds::img::CDensityVolumePtr | m_spEdgeVolume |
| Pointer to the underlying edge volume.
|
mds::img::CDensityVolumePtr | m_spVolume |
| Pointer to the underlying volume.
|
mds::tSize | m_VertexNeighbourhood |
| Size of a neighbourhood used to attract new vertex to an image edge.
|
Friends |
class | mds::base::CSharedPtr< CTetraMesh > |