vbeam core

Contents

vbeam core#

Interfaces and kernel function for the core of the beamforming algorithm.

vbeam is built around a small functional core found in this package. It is built around the signal_for_point() kernel [1] which depend on a set of interfaces to calculate the delayed, interpolated, and weighted signal for a given point.

A generalized delay-and-sum beamformer can be expressed as in equation (1):

(1)#\[b_{DAS}(p) = \sum_{a=0}^{N-1} \sum_{m=0}^{M-1} w(a, m, p)\, s_{a, m}(t)\, e^{i2\pi f_{mod}t}, t := \frac{d(a, m, p)}{c}\]

where \(a\), \(m\), and \(p\) represent a given transmit, receiver, and point, respectively. Note that this equation is for a full delay-and-sum (DAS) beamformer while the signal_for_point() function is only the inner part of the loop, i.e.: it computes the delayed signal for a single transmit, receiver, and point. For building up a full DAS beamformer from signal_for_point(), see vbeam.beamformers.

In equation (1):

  • \(w(a, m, p)\) weights the delayed and interpolated signal and is represented by the Apodization class in vbeam.

  • \(s_{a, m}(t)\) is the delayed and interpolated signal for the transmit and receiver at time \(t\) seconds (defined below). Interpolation is represented by the InterpolationSpace1D class.

  • \(e^{i2\pi f_{mod}t}\) is the modulation frequency correction, which should be applied if the signal is a demodulated IQ signal. \(f_{mod}\) is the modulation frequency, represented as a number, and given as an argument to signal_for_point().

  • \(d(a, m, p)\) is the distance the wave has travelled from the sender to the point, and back to the receiver. This is represented by the ReflectedWavefront and TransmittedWavefront classes.

  • \(t := \frac{d(a, m, p)}{c}\) is the delay in seconds, computed by dividing the distance by the speed of sound. The speed of sound may be just a number, or in more advanced cases, an instance of the SpeedOfSound class.

Again, it is important to keep in mind that signal_for_point() runs for just a single point, a single receiving element, a single transmitted wave, etc. In general, it returns a scalar value.

Footnotes

Modules#

kernels

Function (signal_for_point()) for beamforming a single point, which is usually repeated over all points, receivers and transmits (or any other arbitrary dimensions).

wavefront

Wavefront models that return the distance that a wave has traveled.

apodization

Point-based apodization for weighting the delayed signal.

element_geometry

A datastructure for representing a transducer element (or the full array), including the position, orientation, etc.

wave_data

A datastructure for data related to a transmitted wave.

speed_of_sound

Interface for sampling the speed of sound on a line, typically the line between a sender and a point, and a point and a receiver.

interpolation

Interface for interpolating the signal given a delay.

kernel_data