Reading data from an UFF file recorded with the Verasonics CPWC_L7 example

In this example we show how to read channel and beamformed data from a UFF (Ultrasound File Format) file recorded with the Verasonics example. You will need an internet connectionto download data. Otherwise, you can run the CPWC_L7.m Verasonics example so the file 'L7_CPWC_193328.uff' is in the current path.

by Alfonso Rodriguez-Molares alfonso.r.molares@ntnu.no and Ole Marius Hoel Rindal olemarius@olemarius.net

$Last updated: 2017/09/15$

Contents

Checking the file is in the path

To read data from a UFF file the first we need is, you guessed it, a UFF file. We check if it is on the current path and download it from the USTB websever.

% data location
url='http://ustb.no/datasets/';      % if not found data will be downloaded from here
filename='L7_CPWC_193328.uff';

% checks if the data is in your data path, and downloads it otherwise.
% The defaults data path is under USTB's folder, but you can change this
% by setting an environment variable with setenv(DATA_PATH,'the_path_you_want_to_use');
tools.download(filename, url, data_path);

Checking what's inside

Now that the file is in the machine we can start loading data. The first would be to check what is in there with the uff.index function

uff.index([data_path filesep filename],'/',true);
UFF: Contents of \\kant\ifi-ansatt-u08\omrindal\Repos\USTB_summer_student_2021\data\L7_CPWC_193328.uff at /
   - /channel_data: channel_data [uff.channel_data] size(1,1)

Let's read the channel data,

channel_data=uff.read_object([data_path filesep filename],'/channel_data');
UFF: reading channel_data [uff.channel_data]
UFF: reading sequence [uff.wave] [====================] 100%

define a scan

scan=uff.linear_scan();
scan.x_axis = linspace(channel_data.probe.x(1),channel_data.probe.x(end),256).';
scan.z_axis = linspace(0,50e-3,256).';

and beamform

mid=midprocess.das();
mid.dimension = dimension.both;

mid.channel_data=channel_data;
mid.scan=scan;

mid.transmit_apodization.window=uff.window.none;
mid.transmit_apodization.f_number=1.7;

mid.receive_apodization.window=uff.window.none;
mid.receive_apodization.f_number=1.7;

b_data2=mid.go();
b_data2.plot();
USTB General beamformer MEX v1.1.2 .............done!