Illustrate synthetic transmit focusing for Alpinion data

by Ole Marius Hoel Rindal olemarius@olemarius.net

Last updated 15.05.2018

Contents

Setting up file path

clear all; close all;

% data location
url='http://ustb.no/datasets/';      % if not found downloaded from here
local_path = [ustb_path(),'/data/']; % location of example data

% Choose dataset
filename='Alpinion_L3-8_FI_hypoechoic.uff';

% check if the file is available in the local path or downloads otherwise
tools.download(filename, url, local_path);

Reading channel data from UFF file

channel_data=uff.read_object([local_path filename],'/channel_data');
channel_data.N_frames = 1;
UFF: reading channel_data [uff.channel_data]
UFF: reading sequence [uff.wave] [====================] 100%
Warning: You just deleted all frames except frames 1 to 1, I hope you meant to! 
%Print info about the dataset
channel_data.print_authorship
Name: 		 FI dataset of hypoechic cyst recorded on an  
		 Alpinion scanner with a L3-8 Probe from a CIRC  
		 General Purpose Ultrasound Phantom 
Reference: 	 www.ultrasoundtoolbox.com 
Author(s): 	 Ole Marius Hoel Rindal <olemarius@olemarius.net> 
		 Muyinatu Lediju Bell <mledijubell@jhu.edu> 
Version: 	 1.0.2 

Define Scan

z_axis=linspace(0e-3,60e-3,750).';
x_axis=zeros(channel_data.N_waves,1);
for n=1:channel_data.N_waves
    x_axis(n) = channel_data.sequence(n).source.x;
end

scan=uff.linear_scan('x_axis',x_axis,'z_axis',z_axis);

Delay the data with DAS

das = midprocess.das();
das.channel_data=channel_data;
das.dimension = dimension.transmit();
das.scan=scan;
das.transmit_apodization.window=uff.window.tukey25;
das.transmit_apodization.f_number=4;
das.receive_apodization.window=uff.window.tukey25;
das.receive_apodization.f_number=3;
b_data_RTB = das.go();
USTB MEX C beamformer...Completed in 1.75 seconds.

Estimate coherence on RTB data

cf = postprocess.coherence_factor()
cf.dimension = dimension.receive;
cf.input = b_data_RTB;
cf_RTB = cf.go();
cf_RTB = cf.CF;
cf = 

  coherence_factor with properties:

                          CF: []
    active_element_criterium: 0.1600
                   dimension: both
                       input: []
                      output: []
         receive_apodization: []
        transmit_apodization: []
                        name: 'Coherence Factor MATLAB'
                   reference: 'R. Mallart and M. Fink, Adaptive focusing in scattering media through sound-speed inhomogeneities: The van Cittert Zernike approach and focusing criterion, J. Acoust. Soc. Am., vol. 96, no. 6, pp. 3721-3732, 1994'
              implemented_by: {1x2 cell}
                     version: 'v1.0.5'

Rerun the DAS with scanline transmit apodization

das.transmit_apodization.window=uff.window.scanline;
b_data_scanline = das.go();

% Estimate coherence on scanline delayed data
cf.input = b_data_scanline;
cf_scanline = cf.go();
cf_scanline = cf.CF;
USTB MEX C beamformer...Completed in 0.34 seconds.
cf_RTB.plot(subplot(121),'CF',[],['none']);
colormap default;
cf_scanline.plot(subplot(122),'CF',[],['none']);
colormap default;

b data compare

cf_compare = uff.beamformed_data(cf_RTB);
cf_compare.data(:,1,1,1) = cf_scanline.data;
cf_compare.data(:,1,1,2) = cf_RTB.data;
cf_compare.plot([],'CF',[],['none']);colormap default;