![]() |
ImFusion SDK 4.3
|
#include <SpinePlugin/include/ImFusion/Spine/VertebraDissectionAlgorithm.h>
Algorithm for extracting structures of interest from an instance of SpineData The structures are extracted by performing a deformable mesh registration of a template structure onto the given input SpineData. More...
Inheritance diagram for VertebraDissectionAlgorithm:Algorithm for extracting structures of interest from an instance of SpineData The structures are extracted by performing a deformable mesh registration of a template structure onto the given input SpineData.
The template spine must already have the relevant faces labeled in order to perform the extraction.
Public Member Functions | |
| VertebraDissectionAlgorithm (SpineData &inSpine, SpineData &spineTemplate) | |
| void | compute () override |
| Computes output spine, its end plates and disc meshes using the functions documented below. | |
| void | computeTransformedSpine (Progress *p) |
| Compute the output SpineData instance using both the input and template one. | |
| void | computeEndPlates (Progress *p) |
| Compute superior and inferior end plates for all vertebrae. | |
| void | computeDiscMeshes (Progress *p) |
| Computes the disc meshes for all vertebra pairs The resulting meshes are attached to their respective vertebrae in the output SpineData instance. | |
| OwningDataList | takeOutput () override |
| Return any new Data that was created by the Algorithm during the last call to compute(). | |
Public Member Functions inherited from Algorithm | |
| Algorithm () | |
| Default constructor will registers a single "compute" action that calls compute() and returns status(). | |
| virtual void | setProgress (Progress *progress) |
| Sets a Progress interface the algorithm can use to notify observers about its computing progress. | |
| Progress * | progress () const |
| Returns the progress interface if set. | |
| virtual int | status () const |
| Indicates the status of the last call to compute(). | |
| virtual bool | survivesDataDeletion (const Data *) const |
| Indicates whether the algorithm can handle (partial) deletion of the specified data, by default this checks whether the data is in the input list. | |
| const FactoryInfo & | factoryInfo () const |
| Returns the record describing how this Algorithm was instantiated by the AlgorithmFactory. | |
| void | setFactoryInfo (const FactoryInfo &value) |
| Sets the record describing how this Algorithm was instantiated by the AlgorithmFactory. | |
| Status | runAction (const std::string &id) |
Run the action with name id if it exists. | |
| const std::vector< Action > & | actions () |
| Get a mapping from Action id to Action as registered in this algorithm. | |
Public Member Functions inherited from Configurable | |
| virtual void | configure (const Properties *p) |
| Configure this object instance by de-serializing the given Properties. | |
| virtual void | configuration (Properties *p) const |
| Serialize the current object configuration into the given Properties object. | |
| virtual void | configureDefaults () |
| Retrieve the properties of this object, replaces values with their defaults and sets it again. | |
| void | registerParameter (ParameterBase *param) |
| Register the given Parameter or SubProperty, so that it will be configured during configure()/configuration(). | |
| void | unregisterParameter (const ParameterBase *param) |
| Remove the given Parameter or SubProperty from the list of registered parameters. | |
| Configurable (const Configurable &rhs) | |
| Configurable (Configurable &&rhs) noexcept | |
| Configurable & | operator= (const Configurable &) |
| Configurable & | operator= (Configurable &&) noexcept |
Static Public Member Functions | |
| static bool | createCompatible (DataList dl, Algorithm **alg) |
| static std::unique_ptr< PointCloud > | getEndPlate (const AnatomicalStructure &anatStruct, unsigned int relevantFaceLabel, double ransacThreshold, vec4 &outPlane) |
| Given an anatomical structure (vertebra or sacrum), extracts the vertices of faces with the specified face label, and performs a RANSAC plane-fitting on them. | |
| static std::unique_ptr< Mesh > | makeDiscMesh (const PointCloud &inferiorEndPlateAbove, const PointCloud &superiorEndPlateBelow) |
| Given two point clouds representing respectively the inferior end plate of the vertebra above, and the superior end plate of the vertebra below, returns the mesh representing the disc space between the two vertebrae. | |
Static Public Member Functions inherited from Algorithm | |
| static bool | createCompatible (const DataList &data, Algorithm **a=nullptr) |
| Factory function to check algorithm compatibility with input data and optionally instantiate it. | |
Public Attributes | |
| Parameter< unsigned int > | p_faceLabelSuperiorEndPlate = {"faceLabelSuperiorEndPlate", 1, this} |
| The end-plate detection requires that the superior and inferior end plates have been marked in the meshes of the 'spineTemplate', and therefore transferred. | |
| Parameter< unsigned int > | p_faceLabelInferiorEndPlate = {"faceLabelInferiorEndPlate", 2, this} |
| Parameter< double > | p_endPlateRansacThreshold = {"endPlateRansacThreshold", 1.0, this} |
| Distance in mm to the plate, for a point to be considered part of the end plate. | |
| Parameter< double > | p_resolution = {"resolution", 1.5, this} |
| Resolution used internally in shape registration. | |
Public Attributes inherited from Algorithm | |
| Signal | signalOutputChanged |
| Signal should be emitted by Algorithms when their output/result has changed. | |
| Signal | signalParametersChanged |
| Signal should be emitted by Algorithms when their parameter configuration has changed. | |
Public Attributes inherited from Configurable | |
| Signal | signalParametersChanged |
Emitted whenever one of the registered Parameters' or SubPropertys' signalValueChanged signal was emitted. | |
Static Protected Member Functions | |
| static std::vector< std::pair< OrientedVertebra *, OrientedVertebra * > > | getAdjacentVertebraPairs (SpineData &spine) |
| static std::vector< vec3 > | getVerticesOfFaceLabel (const Mesh &mesh, unsigned int faceLabel) |
Protected Attributes | |
| SpineData & | m_inSpine |
| SpineData & | m_spineTemplate |
| std::unique_ptr< SpineData > | m_outputSpine |
Protected Attributes inherited from Algorithm | |
| std::string | m_name |
| Algorithm name. | |
| Progress * | m_progress = nullptr |
| Non-owing pointer to a progress interface. May be a nullptr. | |
| FactoryInfo | m_factoryInfo = {} |
| Record describing how this algorithm was instantiated by the AlgorithmFactory. | |
| int | m_status = Status::Unknown |
| Algorithm status after last call to compute() | |
| std::vector< Action > | m_actions |
| Map of key given by the id of the action, of the available actions of this algorithm. | |
Protected Attributes inherited from Configurable | |
| std::vector< Param > | m_params |
| List of all registered Parameter and SubProperty instances. | |
Additional Inherited Members | |
Public Types inherited from Algorithm | |
| enum | Status { Unknown = -1 , Success = 0 , Error = 1 , InvalidInput , IncompleteInput , OutOfMemoryHost , OutOfMemoryGPU , UnsupportedGPU , UnknownAction , AbortedByUser , User = 1000 } |
| Status codes. More... | |
Protected Member Functions inherited from Algorithm | |
| void | loadDefaults () |
| void | registerAction (const std::string &id, const std::string &guiName, const std::function< Algorithm::Status(void)> &action) |
| Register an action to be run via runAction. | |
| template<typename D> | |
| void | registerAction (const std::string &id, const std::string &guiName, Algorithm::Status(D::*action)(void)) |
| Template version of runAction that can be used with a pointer to a member function. | |
| void | registerAction (const Action &action) |
| Register an action. | |
|
overridevirtual |
Computes output spine, its end plates and disc meshes using the functions documented below.
Implements Algorithm.
| void computeTransformedSpine | ( | Progress * | p | ) |
| void computeEndPlates | ( | Progress * | p | ) |
Compute superior and inferior end plates for all vertebrae.
The resulting point clouds are attached to their respective vertebrae in the output SpineData instance.
| void computeDiscMeshes | ( | Progress * | p | ) |
Computes the disc meshes for all vertebra pairs The resulting meshes are attached to their respective vertebrae in the output SpineData instance.
Only the lower disc is attached to each vertebra.
|
static |
Given an anatomical structure (vertebra or sacrum), extracts the vertices of faces with the specified face label, and performs a RANSAC plane-fitting on them.
The face label should represent either the faces of the top end plate, or the bottom end plate. Returns the list of points belonging to the plane.
|
static |
Given two point clouds representing respectively the inferior end plate of the vertebra above, and the superior end plate of the vertebra below, returns the mesh representing the disc space between the two vertebrae.
The mesh is generated using poisson reconstruction.
|
overridevirtual |
| Parameter<unsigned int> p_faceLabelSuperiorEndPlate = {"faceLabelSuperiorEndPlate", 1, this} |
The end-plate detection requires that the superior and inferior end plates have been marked in the meshes of the 'spineTemplate', and therefore transferred.
The p_faceLabelSuperiorEndPlate and p_faceLabelInferiorEndPlate parameters can be used to indicate which face labels should be used for the vertex extraction.