ImFusion C++ SDK 4.5.0
ImFusion::US::ProcessedUltrasoundStream Class Reference

#include <ImFusion/LiveUS/ProcessedUltrasoundStream.h>

ImageStream that preprocesses live ultrasound frames and attaches frame geometry metadata. More...

Inheritance diagram for ImFusion::US::ProcessedUltrasoundStream:

Detailed Description

ImageStream that preprocesses live ultrasound frames and attaches frame geometry metadata.

Wraps an input ImageStream (frame grabber or similar), forwards each 2D frame through ProcessUltrasound (grayscale conversion, optional crop, mask, depth-based spacing, Doppler handling), and emits new ImageStreamData on this stream. Each output frame carries FrameGeometryMetadata and UltrasoundMetadata (depth range when applyDepth is enabled). Modality is set to ultrasound.

FrameGrabbingPresets can match incoming frames to stored templates and switch geometry and depth automatically when automaticPresetChange is true. detectGeometry() buffers frames until more than ten have been received, then runs GeometryDetection on that buffer in doGeometryDetection().

A FrameGeometry can be specified through the AttachUSGeometryDataController, and the image can be optionally cropped and/or the pixels outside the US geometry can be set to zero to hide UI elements in the incoming frame-grabbed images.

Typical use: created by ProcessUltrasoundStreamAlgorithm, or constructed directly around an ImageStream. Configure via frameGrabbingPresets and processing sub-properties, or the legacy presets / geometry layouts.

See also
ProcessUltrasound
FrameGrabbingPresets
ProcessUltrasoundStreamAlgorithm
ProcessUltrasoundStreamController

Public Member Functions

 ProcessedUltrasoundStream (ImageStream *imgStream)
 ProcessedUltrasoundStream (ImageStream *imgStream, std::unique_ptr< FrameGrabbingPresets > &&presets)
bool openImpl () override
 Open stream.
bool closeImpl () override
 Close stream.
bool startImpl () override
 Start stream.
bool stopImpl () override
 Stop stream.
bool topDown () const override
 Delegates to the input ImageStream, or true if there is no input.
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 initFromCache ()
 Try to initialize the ProcessUltrasound instance using the last cached frame from ImageStreamCache through onStreamData() when the input stream is not running.
ProcessUltrasoundParameters currentProcessingParameters () const
 Returns a copy of the current ProcessUltrasoundParameters.
void setProcessingParameters (const ProcessUltrasoundParameters &params)
 Replaces ProcessUltrasound processing parameters.
void setAutomaticPresetChange (bool enabled)
 If true, match() on FrameGrabbingPresets may switch the active preset on each incoming frame.
bool automaticPresetChange () const
 Whether preset switching from template matching is enabled.
std::optional< ImageDescriptorlastImageOriginalDescriptor ()
 Descriptor of the last received image.
std::optional< ImageDescriptorlastImageProcessedDescriptor ()
 Descriptor of the last processed output image.
void initGeometry ()
 Initializes ProcessUltrasound geometry from the last received image descriptor, if available.
void setGeometryToWholeImage ()
 Sets ProcessUltrasound geometry to cover the full last received image.
void detectGeometry ()
 Starts collecting frames for automatic geometry detection (see detectingGeometry()).
bool detectingGeometry ()
 Returns true while frames are being buffered for detectGeometry() (until doGeometryDetection() completes).
const ImageStream * inputStream () const
 Return a read-only pointer to the input stream.
std::vector< std::stringpresetNames ()
 Names of all FrameGrabbingPresets entries.
bool applyPreset (const std::string &presetName)
 Activates the preset with the given name.
bool savePreset (const std::string &presetName)
 Adds a preset from the current ProcessUltrasound geometry and depth (no ImageTemplate).
bool removePreset (const std::string &presetName)
 Removes the preset with the given name.
FrameGrabbingPresetspresets ()
 Frame-grabbing preset collection used for matching and depth/geometry switching.
void onStreamData (std::shared_ptr< const StreamData > streamData)
 Callback for each frame from the input stream: rotate, optional preset match, process, emit output StreamData.
Public Member Functions inherited from ImFusion::ImageStream
 ImageStream (const std::string &name="")
Data::Kind kind () const override final
 Returns the kind (typically IMAGESTREAM or VOLUMESTREAM).
void setModality (Modality m)
 Set the modality descriptor of this stream.
Modality modality () const override final
 Return the modality of this stream.
std::optional< ImageDescriptordescriptor () const
 Return the image descriptor of this stream.
int size () const override
 Returns the number of images of the image stream per emission.
std::string describe () const override
 Short description of the stream including latest state and update rate information.
Public Member Functions inherited from ImFusion::Stream
 Stream (const std::string &name="")
 Constructor with the name for this stream.
virtual ThreadingMode threadingMode () const
 Configures threading mode of stream.
virtual bool supportsAsyncOperation ()
 Returns true if xxxAsync() methods support execution in a background thread.
std::shared_future< bool > openAsync ()
 Open stream in an asynchronous fashion (wait on the returned future before taking further actions). Returns whether the operation was successful.
std::shared_future< bool > closeAsync ()
 Close stream in an asynchronous fashion (wait on the returned future before taking further actions). Returns whether the operation was successful.
std::shared_future< bool > startAsync ()
 Start stream in an asynchronous fashion (wait on the returned future before taking further actions). Returns whether the operation was successful.
std::shared_future< bool > stopAsync ()
 Stop stream in an asynchronous fashion (wait on the returned future before taking further actions). Returns whether the operation was successful.
std::shared_future< bool > pauseAsync ()
 Pause stream in an asynchronous fashion (wait on the returned future before taking further actions). Returns whether the operation was successful.
std::shared_future< bool > resumeAsync ()
 Resume stream in an asynchronous fashion (wait on the returned future before taking further actions). Returns whether the operation was successful.
bool open ()
 Open stream and wait for the operation to complete. Returns whether the operation was successful.
bool close ()
 Close stream and wait for the operation to complete. Returns whether the operation was successful.
bool start ()
 Start stream and wait for the operation to complete. Returns whether the operation was successful.
bool stop ()
 Stop stream and wait for the operation to complete. Returns whether the operation was successful.
bool pause ()
 Pause stream and wait for the operation to complete. Returns whether the operation was successful.
bool resume ()
 Resume stream and wait for the operation to complete. Returns whether the operation was successful.
virtual bool supportsPausing () const
 Override and return true if this stream implements the pausing and resume operations.
bool restart ()
 Stops, closes, opens and starts the stream. Returns whether the operation was successful.
virtual bool reset ()
 Reverts stream to first frame, if possible. Returns whether the operation was successful.
virtual bool isRunning () const
 Return whether stream is currently running.
virtual std::string uuid ()
 Unique identifier for stream.
State currentState () const
bool isStateOneOf (const std::vector< State > &states) const
Geometry::AlignedBox bounds () const override
 Per default a Stream has empty/invalid bounds.
Pose::TransformationConvention matrixConvention () const override
 Matrices of streams by default map to the world coordinate system.
virtual bool createDefaultStreamController ()
 Indicates whether a StreamController should be created for the stream (by default returns true).
double updateRate () const
 Average update rate in Hz of the signalStreamData.
std::string describe () const override
 Short description of the stream including latest state and update rate information.
Public Member Functions inherited from ImFusion::Data
 Data (const std::string &name="")
 Data (const Data &other)
Data & operator= (const Data &other)
virtual ~Data ()
 Mandatory virtual destructor.
const std::stringname () const
 Return the name of this data.
void setName (const std::string &name)
 Sets the name of this data.
virtual bool isAnnotationType () const
 Return whether this data type is visualized through an annotation (e.g. mesh).
const DataComponentListcomponents () const
 Returns the list of DataComponents for this data.
DataComponentListcomponents ()
virtual void setMatrixFromWorld (const mat4 &m)
 Set matrix mapping from the world coordinate system to the data coordinate system.
virtual void setMatrixToWorld (const mat4 &m)
 Set matrix mapping from the data coordinate system to the world coordinate system.
virtual mat4 matrixFromWorld () const
 Get matrix mapping from the world coordinate system to the data coordinate system.
virtual mat4 matrixToWorld () const
 Get matrix mapping from the data coordinate system to the world coordinate system.
virtual mat4 matrix () const
 Return the transformation matrix.
virtual void setMatrix (const mat4 &m)
 Set the transformation matrix.
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
Public Member Functions inherited from ImFusion::Selectable
 Selectable (const Selectable &)
 Selectable (Selectable &&)
Selectable & operator= (const Selectable &)
Selectable & operator= (Selectable &&)
virtual Selection selection () const
virtual int focus () const
virtual void setSelection (const Selection &sel)
 Set the underlying selection.
virtual void setFocus (int index)
 Set focus of the selection.
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.
SignalReceiveroperator= (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 Attributes

Signal presetChanged
 Emitted when the active FrameGrabbingPresets entry changes.
Signal presetsListChanged
 Emitted when presets are added, removed, or loaded.
Public Attributes inherited from ImFusion::ImageStream
Signal< Data::KindsignalKindChanged
 Is emitted when the stream changes between IMAGESTREAM and VOLUMESTREAM, before the next ImageStreamData is emitted.
Public Attributes inherited from ImFusion::Stream
ProtectedSignal< StateChangesignalStateChanged
 Emitted after a state change has been completed with the old and new state.
ProtectedSignal signalEnded
 Indicates that the stream reached the end of its data, e.g. when a video stream has played to the end.
ProtectedSignal< std::shared_ptr< const StreamData > > signalStreamData
 Signal that is emitted by the stream when a new StreamData is available.
DeprecatedSignal< ProtectedSignal< std::shared_ptr< const StreamData > >, const StreamData & > signalNewData
 Signal that is emitted by the stream when a new StreamData is available.
Public Attributes inherited from ImFusion::Data
Signal< const Data * > signalDeleted
 Signal emitted when this instance is deleted.
Signal< const Data * > signalMatrixChanged
 Signal emitted when the transformation of this Data has changed.
Signal< std::stringsignalNameChanged
 Signal emitted when the name changed.
Public Attributes inherited from ImFusion::Configurable
Signal signalParametersChanged
 Emitted whenever one of the registered Parameters' or SubPropertys' signalValueChanged signal was emitted.
Public Attributes inherited from ImFusion::Selectable
ProtectedSignal signalSelectionChanged
 Signals that the selection or size might have changed.

Protected Member Functions

std::optional< WorkContinuationdoWork () override
 Create one StreamData and publish it (this function will be called at the desired frame rate) If this is not desired, you can do the following: return std::nullopt;.
Protected Member Functions inherited from ImFusion::ImageStream
void setKind (Kind k)
 Sets the kind (typically IMAGESTREAM or VOLUMESTREAM) and emits signalKindChanged.
bool workerThreadRequiresOpenGl () const override
 Ensure the thread has an GL context before the main loop starts.
Protected Member Functions inherited from ImFusion::Stream
virtual bool pauseImpl ()
 Pause stream (not required to be supported).
virtual bool resumeImpl ()
 Resume stream from pause (only required to be supported when pauseImpl() is supported).
virtual bool worksWhilePaused () const
 Override if doWork() should be called also in the Paused state.
void changeState (State newState)
std::shared_future< bool > attemptStateChange (std::function< bool()> work, State stateWorking, State stateSuccess, State stateError)
Protected Member Functions inherited from ImFusion::Data
void swapWith (Data &other)
 Swaps the data and emits a matrix and name changed signal for both.
Protected Member Functions inherited from ImFusion::SignalReceiver
void disconnectAll ()
 Disconnects all existing connections.

Additional Inherited Members

Public Types inherited from ImFusion::Stream
enum class  ThreadingMode { BaseClassRunsWorkerThread , DerivedClassHandlesThreading }
 This flag represents the two supported threading modes of a Stream. More...
enum class  State {
  Closed , Opening , Open , Starting ,
  Running , Pausing , Paused , Resuming ,
  Stopping , Closing
}
Public Types inherited from ImFusion::Data
enum  Kind {
  UNKNOWN = 0 , IMAGE = 1 , VOLUME = 2 , IMAGESET = 3 ,
  VOLUMESET = 4 , IMAGESTREAM = 5 , VOLUMESTREAM = 6 , POINTSET = 7 ,
  SURFACE = 8 , TRACKINGSTREAM = 9 , LIVETRACKINGSTREAM = TRACKINGSTREAM , TRACKINGDATA = 10 ,
  TREE = 11 , TENSOR = 12 , POLYDATASTREAM = 13 , STEREOIMAGESET = 14 ,
  STEREOIMAGESTREAM = 15 , VOLUMETRICMESH = 16
}
 Kind of data. More...
enum  Modality {
  NA = 0 , XRAY = 1 , CT = 2 , MRI = 3 ,
  ULTRASOUND = 4 , VIDEO = 5 , NM = 6 , OCT = 7 ,
  LABEL = 8 , DISTANCE = 9
}
 Image modality of the data. More...
Static Public Member Functions inherited from ImFusion::Stream
static std::string stateToString (State state)
Static Public Member Functions inherited from ImFusion::Data
static std::string modalityString (Data::Modality m)
 Return the name of an image modality.
static Data::Modality stringToModality (const std::string &s)
 Returns the modality corresponding to a modality string or NA if nothing matches.
Protected Attributes inherited from ImFusion::Data
mat4 m_matrix
 Transformation matrix.
std::recursive_mutexm_matrixMutex
 Used to internally synchronize access to the matrix of data.
DataComponentList m_dataComponentList
 The list of DataComponents for this data.
Protected Attributes inherited from ImFusion::Configurable
std::vector< Paramm_params
 List of all registered Parameter and SubProperty instances.
Protected Attributes inherited from ImFusion::Selectable
std::mutex m_selectionMutex
 Mutex protecting the selection.
Selection m_sel

Constructor & Destructor Documentation

◆ ProcessedUltrasoundStream() [1/2]

ImFusion::US::ProcessedUltrasoundStream::ProcessedUltrasoundStream ( ImageStream * imgStream)
explicit
Parameters
imgStreamInput stream whose frames are processed, must outlive this object until signalEnded clears the pointer.

◆ ProcessedUltrasoundStream() [2/2]

ImFusion::US::ProcessedUltrasoundStream::ProcessedUltrasoundStream ( ImageStream * imgStream,
std::unique_ptr< FrameGrabbingPresets > && presets )
Parameters
imgStreamInput image stream.
presetsOwned preset collection (template matching and geometry/depth per preset).

Member Function Documentation

◆ openImpl()

bool ImFusion::US::ProcessedUltrasoundStream::openImpl ( )
overridevirtual

Open stream.

Returns whether the operation was successful. This method is responsible for allocating necessary resources, initializing device handles, and establishing connections to devices. Implementers should ensure that all one-time setup tasks are completed here.

Implements ImFusion::Stream.

◆ closeImpl()

bool ImFusion::US::ProcessedUltrasoundStream::closeImpl ( )
overridevirtual

Close stream.

Returns whether the operation was successful. This method should be used to free any resources that were allocated during the openImpl() call and to disconnect from any devices. Implementers must ensure that all resources are properly released to avoid memory leaks.

Implements ImFusion::Stream.

◆ startImpl()

bool ImFusion::US::ProcessedUltrasoundStream::startImpl ( )
overridevirtual

Start stream.

Returns whether the operation was successful. This method is intended to initiate the actual data readout process or to connect a callback function for data handling. Implementers should ensure that the stream is ready and producing data after this call.

Implements ImFusion::Stream.

◆ stopImpl()

bool ImFusion::US::ProcessedUltrasoundStream::stopImpl ( )
overridevirtual

Stop stream.

Returns whether the operation was successful. This method should halt any ongoing data readouts or callbacks, effectively pausing the data flow to reduce CPU load. Implementers should ensure that the stream can be restarted after this call.

Implements ImFusion::Stream.

◆ topDown()

bool ImFusion::US::ProcessedUltrasoundStream::topDown ( ) const
overridevirtual

Delegates to the input ImageStream, or true if there is no input.

Reimplemented from ImFusion::ImageStream.

◆ configure()

void ImFusion::US::ProcessedUltrasoundStream::configure ( const Properties * p)
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.

See also
configuration() for the inverse functionality

Reimplemented from ImFusion::Configurable.

◆ configuration()

void ImFusion::US::ProcessedUltrasoundStream::configuration ( Properties * p) const
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.

See also
configure() for the inverse functionality

Reimplemented from ImFusion::Configurable.

◆ doWork()

std::optional< WorkContinuation > ImFusion::US::ProcessedUltrasoundStream::doWork ( )
inlineoverrideprotectedvirtual

Create one StreamData and publish it (this function will be called at the desired frame rate) If this is not desired, you can do the following: return std::nullopt;.

Implements ImFusion::Stream.


The documentation for this class was generated from the following file:
  • ImFusion/LiveUS/ProcessedUltrasoundStream.h
Search Tab / S to search, Esc to close