Coder Social home page Coder Social logo

frli8848 / dream Goto Github PK

View Code? Open in Web Editor NEW
5.0 1.0 1.0 6.94 MB

The DREAM toolbox is a free open source acoustic field simulation and processing tool

License: GNU General Public License v2.0

CMake 6.62% Makefile 1.25% C 2.93% C++ 42.93% TeX 12.68% PostScript 22.19% Perl 0.59% MATLAB 6.07% Python 2.64% Julia 2.09%

dream's Introduction

Introduction

The DREAM (Discrete REpresentation Array Modeling) toolbox is a free open source toolbox for simulating acoustic fields radiated from common ultrasonic transducer types and arbitrarily complicated ultrasonic transducers arrays. The DREAM toolbox enables analysis of beam-steering, beam-focusing, and apodization for wideband (pulse) excitation both in near and far fields.

The DREAM toolbox can be used to, for example, simulate and evaluate array designs, evaluate imaging methods etc. An example is shown in Figure 1 below where the wavefield of an (undersampled) 32 element linear array has been simulated.

Figure 1. Simulated wavefield snapshot for a 32 element linear array.

The toolbox consists of a set of routines for computing (discrete) spatial impulse responses (SIRs) for various single-element transducer geometries as well as multi-element transducer arrays. Based on linear systems theory, these SIR functions can then be convolved with the transducer's electrical impulse response to obtain the acoustic field at an observation point. By using the DREAM toolbox one can simulate ultrasonic measurement systems for many configurations including phased arrays and measurements performed in lossy media.

The DREAM toolbox uses a numerical procedure based on based on the discrete representation (DR) computational concept [[1],[2]] which is a method based on the general approach of the spatial impulse responses [[3],[4]].

The DREAM Toolbox can be used using:

  • Matlab and Octave,
  • Python (experimental),
  • Julia (experimental, only tested on Linux),

Features

  • Computes spatial impulse responses (SIRs) directly in a discrete form,
  • Support for many common transducer and array types,
  • Support for parallel processing using threads (and on the GPU on select functions),
  • Compute SIRs for lossy media,
  • Accelerated delay-and-sum (DAS) synthetic aperture imaging beamforming (SAFT, TFM and row-column adressed [RCA] array DAS).

User Manual

There is a PDF version of the user manual for each release available here:

https://github.com/frli8848/DREAM/releases

Look under Assets for the corresponding release.

Functions

Function Description MATLAB Octave Python Julia
dreamline Strip/line transducer Yes Yes Yes Yes
dreamrect Rectangular transducer Yes Yes (*) Yes Yes
dreamrect_f Focused rectangular transducer Yes Yes Yes Yes
dreamcirc Circular transducer Yes Yes (*) Yes Yes
dreamcirc_f Focused circular transducer Yes Yes Yes Yes
dreamsphere Spherical concave/convex transducer (defocused/defocused) Yes Yes Yes Yes
dreamcylind Cylindrical concave/convex transducer (focused/defocused) Yes Yes Yes Yes
dream_arr_rect Array with rectangular elements Yes Yes Yes Yes
dream_arr_circ Array with circular elements Yes Yes Yes Yes
dream_arr_cylind Array with cylindrical concave/convex elements (focused/defocused) Yes Yes Yes Yes
dream_arr_annu Annular array Yes Yes Yes Yes

Table 1. DR-based transducer functions.

Function Description MATLAB Octave Python Julia
rect_sir time-continous (analytic) rectangual ransducer Yes Yes (*) N/A N/A
circ_sir time-continous (analytic) circular ransducer Yes Yes N/A N/A
scirc_sir sampled time-continous (analytic) circular transducer Yes Yes N/A N/A

Table 2. Analytic transducer functions.

Function Description MATLAB Octave Python Julia
conv_p threaded one dimensional convolution Yes Yes N/A N/A
fftconv_p threaded one dimensional FFT based convolutions Yes Yes N/A N/A
fftconv_ola threaded one dimensional FFT based convolutions using overlap-and-add Yes Yes N/A N/A
sum_fftconv threaded sum of one dimensional FFT based convolutions Yes Yes N/A N/A
das threaded delay-and-sum (DAS) beamforming (SAFT, TFM, and RCA) Yes (*) Yes (*) N/A N/A
das_uni (OpenCL only) DAS beamforming using uniform grids (SAFT, TFM, and RCA) Yes (*) Yes (*) N/A N/A

Table 3. Threaded (parallel) signal processing algorithms.

(*) Experimental GPU support (OpenCL).

See also known issues here.

References

[1] B.Piwakowski and B. Delannoy. "Method for Computing Spatial Pulse Response: Time-domain Approach", Journal of the Acoustical Society of America, vol. 86, no. 6, pp. 2422--32, Dec. 1989.

[2] B. Piwakowski and K. Sbai. "A New Approach to Calculate the Field Radiated from Arbitrarily Structured Transducer Arrays", IEEE Transactions on Ultrasonics, Ferroelectrics and Frequency Control, vol. 46, no. 2, pp. 422--40, March 1999.

[3] G. E. Tupholme, "Generation of acoustic pulses by baffled plane pistons", Mathematika, vol 16, pp. 209--224, 1969.

[4] P.R. Stepanishen. "Transient radiation from pistons in an infinite planar baffle", Journal of the Acoustical Society of America, vol 49, pp. 1629--38, 1971.

Installation

See the installation instructions here.

dream's People

Contributors

frli8848 avatar

Stargazers

Serge Volkov avatar  avatar Grunde Waag avatar  avatar

Watchers

Grunde Waag avatar

Forkers

grundew

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.