![]() |
ImFusion C++ SDK 4.5.0
|
#include <ImFusion/US/GeometryDetectionAlgorithm.h>
Algorithm that detects the actual image region of interest (ROI) in an ultrasound video and returns a matching US::FrameGeometry. More...
Algorithm that detects the actual image region of interest (ROI) in an ultrasound video and returns a matching US::FrameGeometry.
Input is a single non-empty ultrasound SharedImageSet with 8-bit frames. The algorithm collects one or more frames (either the current selection (p_useSelection) or a window around the focus index) and runs GeometryDetection. With multiple frames, pixels whose intensity varies between frames are treated as ultrasound content. With a single frame, pixels above an intensity threshold are used instead.
After compute(), read the result via geometry(), geometryBoundingBox(), or debugImage() on the base class. Optionally, p_applyGeometry writes the detected geometry onto an input UltrasoundSweep and, when p_mask is true, assigns a FanMask to all sweep frames.
When p_useSelection is true and the image set has more than one frame, selectionChanged() triggers compute() automatically once the focus index is at least p_numFramesLimit - 1.
Public Member Functions | |
| GeometryDetectionAlgorithm (SharedImageSet *images) | |
| void | configure (const Properties *p) override |
| Configure this object instance by de-serializing the given Properties. | |
| void | configuration (Properties *p) const override |
| Serialize the current object configuration into the given Properties object. | |
| void | compute () override |
| Execute the algorithm. | |
| void | selectionChanged () |
| Re-runs compute() when the SharedImageSet selection changes, if p_useSelection is true and focus >= p_numFramesLimit - 1. | |
| Public Member Functions inherited from ImFusion::SignalReceiver | |
| SignalReceiver ()=default | |
| Default constructor. | |
| SignalReceiver (const SignalReceiver &other) | |
| Copy constructor, does not copy any existing signal connections from other. | |
| SignalReceiver & | operator= (SignalReceiver rhs) |
| Assignment operator, disconnects all existing connections, does not copy any existing signal connections from rhs. | |
| virtual | ~SignalReceiver () |
| Virtual destructor disconnects from all connected signals. | |
| Public Member Functions inherited from ImFusion::US::BaseGeometryDetectionAlgorithm | |
| const ImageDescriptor & | imageDescriptor () const |
| The descriptor of the last frame used for detection (same as the most recent entry in the internal frame buffer). | |
| const US::FrameGeometry & | geometry () const |
| Detected frame geometry in pixel coordinates if isGeometryAvailable() returns true, otherwise create and return a default linear geometry. | |
| bool | isGeometryAvailable () const |
| Returns true after computeImpl() has assigned m_geometry. | |
| void | geometryBoundingBox (vec2i &offset, vec2i &extent) const |
| Axis-aligned bounding box of the detected content in pixel coordinates, adjusted for topDown(). | |
| SharedImageSet * | debugImage () const |
| Debug visualization image set, or nullptr if GeometryDetection::p_enableDebugImage is false. | |
| bool | mask () const |
| Returns the value of p_mask flag (whether callers should apply a fan mask after assigning geometry). | |
| Public Member Functions inherited from ImFusion::Algorithm | |
| Algorithm () | |
| Default constructor will registers a single "compute" action that calls compute() and returns status(). | |
| virtual OwningDataList | takeOutput () |
| Return any new Data that was created by the Algorithm during the last call to compute(). | |
| 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 ImFusion::Configurable | |
| 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 (const DataList &data, Algorithm **a=nullptr) |
| Static Public Member Functions inherited from ImFusion::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< bool > | p_useSelection = {"useSelection", true, this} |
| If true, use SharedImageSet::selection() as the frame source (subsampled to p_numFramesLimit when needed). If false, use frames from focus() up to p_numFramesLimit. | |
| Parameter< bool > | p_applyGeometry = {"applyGeometry", false, this} |
| If true and the input is an UltrasoundSweep, set its frame geometry to the detected result after compute(), apply FanMask to all frames when p_mask is true. | |
| Public Attributes inherited from ImFusion::US::BaseGeometryDetectionAlgorithm | |
| Parameter< int > | p_numFramesLimit = {"numFramesLimit", 8, this} |
| Maximum number of frames passed to GeometryDetection. Values below 2 mean no limit (all supplied frames are used). | |
| Parameter< bool > | p_mask = {"mask", false, this} |
| If true, in addition to assigning geometry to a sweep, attach a FanMask to sweep frames (see GeometryDetectionAlgorithm::p_applyGeometry). | |
| Public Attributes inherited from ImFusion::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 ImFusion::Configurable | |
| Signal | signalParametersChanged |
| Emitted whenever one of the registered Parameters' or SubPropertys' signalValueChanged signal was emitted. | |
Protected Member Functions | |
| bool | topDown () const override |
| Whether the images are created from ultrasound beams that travel from the top of the image to the bottom (true), or from the bottom to the top (false). | |
| Protected Member Functions inherited from ImFusion::SignalReceiver | |
| void | disconnectAll () |
| Disconnects all existing connections. | |
| Protected Member Functions inherited from ImFusion::US::BaseGeometryDetectionAlgorithm | |
| void | computeImpl () |
| void | maskImage (MemImage *img) const |
| Sets pixels outside the detected fan to zero on the given image (requires m_geometry and m_fanMask). | |
| Protected Member Functions inherited from ImFusion::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. | |
Protected Attributes | |
| SharedImageSet * | m_images = nullptr |
| Input image set. | |
| Protected Attributes inherited from ImFusion::US::BaseGeometryDetectionAlgorithm | |
| std::unique_ptr< GeometryDetection > | m_detectionAlg |
| implementation of the actual detection algorithm | |
| std::shared_ptr< FanMask > | m_fanMask |
| Fan mask built from detected geometry when masking is requested. | |
| std::unique_ptr< SharedImageSet > | m_imgOut |
| Output data for visualization. | |
| std::deque< std::unique_ptr< const TypedImage< unsigned char > > > | m_frames |
| Copies of input frames used for the last detection. | |
| ImageDescriptor | m_imageDesc |
| Image frame descriptor taken from the last frame in m_frames. | |
| std::unique_ptr< US::FrameGeometry > | m_geometry |
| Detected frame geometry (detected or fallback linear). | |
| Protected Attributes inherited from ImFusion::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 ImFusion::Configurable | |
| std::vector< Param > | m_params |
| List of all registered Parameter and SubProperty instances. | |
Additional Inherited Members | |
| Public Types inherited from ImFusion::Algorithm | |
| enum | Status { Unknown = -1 , Success = 0 , Error = 1 , InvalidInput , IncompleteInput , OutOfMemoryHost , OutOfMemoryGPU , UnsupportedGPU , UnknownAction , AbortedByUser , User = 1000 } |
| Status codes. More... | |
|
explicit |
| images | Non-null ultrasound SharedImageSet (8-bit frames) that remains owned by the caller. |
|
overridevirtual |
Configure this object instance by de-serializing the given Properties.
The default implementation will do so automatically for all registered Parameter and SubProperty instances.
Reimplemented from ImFusion::Configurable.
|
overridevirtual |
Serialize the current object configuration into the given Properties object.
The default implementation will do so automatically for all registered Parameter and SubProperty instances.
Reimplemented from ImFusion::Configurable.
|
overridevirtual |
Execute the algorithm.
Implements ImFusion::Algorithm.
|
overrideprotectedvirtual |
Whether the images are created from ultrasound beams that travel from the top of the image to the bottom (true), or from the bottom to the top (false).
Implements ImFusion::US::BaseGeometryDetectionAlgorithm.