Ultrasound beamforming: is phased array toolbox the best way?

18 views (last 30 days)
Hi, I am trying to evaluate and develop beamforming methods for ultrasound images. A lot of principles for signal processing carry over from sensors and communication, but I am wondering if this is the best way to implement beamforming for ultrasound on matlab or if there are other matlab tools which may be more useful than the phased array functions?
For example I am currently using the MVDR beamformer to combine signals from a 1x64 ultrasound array, and this works okay but I ended up using a nested for-loop to estimate the signal at each lateral and axial position, which is extremely slow. If there is a faster implementation or if anyone has tips on writing a similar custom function that would be much appreciated.

Accepted Answer

Jai Khurana
Jai Khurana on 15 Feb 2023
Matlab's phased array toolbox provides a comprehensive set of functions to perform beamforming for ultrasound imaging. However, depending on the size of the array and the complexity of the beamforming algorithm, the processing time may become a bottleneck. In this case, you may want to consider alternative methods for implementing beamforming that are faster and more efficient.
One approach you can try is to use parallel processing to speed up the computation. You can use the Parallel Computing Toolbox in Matlab to distribute the processing across multiple cores or machines, which can significantly reduce the processing time. The 'parfor' loop in Matlab is a parallel version of the regular for loop that can be used to perform operations in parallel. For example, you can use 'parfor' to parallelize the nested for-loop that you are currently using to estimate the signal at each lateral and axial position. You can refer to this documentation to lean more about 'parfor' - https://in.mathworks.com/help/parallel-computing/parfor.html
Another approach is to use GPU computing to accelerate the computation. Matlab's Parallel Computing Toolbox provides functions that allow you to perform computations on a GPU, which can be much faster than using the CPU. You can use the 'gpuArray' function to move the data to the GPU, and then use built-in functions such as 'gather', 'bsxfun', and 'arrayfun' to perform the computation. You can refer to this documentation for 'gpuarray' - https://in.mathworks.com/help/parallel-computing/gpuarray.html
  1 Comment
Jad El Harake
Jad El Harake on 15 Feb 2023
Makes sense to use parfor thank you! Is there a way to run beamforming functions on the GPU? Looks like they only accept float input, did you mean to run other parts of the code on GPUarrays to speed up overall computation?

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!