BMODE B-mode image

BMODE creates B-mode images from I/Q signals.



BMODE(IQ,DR) converts the I/Q signals (in IQ) to 8-bit log-compressed ultrasound images with a dynamic range DR (in dB). IQ is a complex whose real (imaginary) part contains the inphase (quadrature) component.

BMODE(IQ) uses DR = 40 dB;

Example: Speckle tracking in B-mode images

This example shows how to obtain the motion field of a rotating disk insonified with plane waves.

A rotating disk (diameter of 2 cm) was insonified by a series of 32 unsteered plane waves with a Verasonics scanner, and a linear transducer, at a PRF (pulse repetition frequency) of 10 kHz. The RF signals were downsampled at 4/3 ${\times}$ (5 MHz) = 6.66 MHz. The properties of the linear array were:

Download the experimental RF data. The 3-D array RF contains 128 columns (as the transducer contained 128 elements), and its length is 32 in the third dimension (as 32 plane waves were transmitted).


The structure param contains some experimental properties that are required for the following steps.

disp('''param'' is a structure whose fields are:')
'param' is a structure whose fields are:
           fs: 6.6667e+06
        pitch: 2.9800e-04
           fc: 5000000
            c: 1480
           t0: 9.9500e-06
          PRF: 10000
        width: 2.6200e-04
    Nelements: 128
      TXdelay: [1×128 double]
    bandwidth: 15

Demodulate the RF signals with RF2IQ.

IQ = rf2iq(RF,param);

Create a 2.5-cm-by-2.5-cm image grid.

dx = 1e-4; % grid x-step (in m)
dz = 1e-4; % grid z-step (in m)
[x,z] = meshgrid(-1.25e-2:dx:1.25e-2,1e-2:dz:3.5e-2);

Create a Delay-And-Sum DAS matrix with DASMTX.

param.fnumber = []; % an f-number will be determined by DASMTX
M = dasmtx(1i*size(IQ),x,z,param,'nearest');

Beamform the I/Q signals.

IQb = M*reshape(IQ,[],32);
IQb = reshape(IQb,[size(x) 32]);

Create the B-mode images with BMODE.

I = bmode(IQb,30);

Display the first ultrasound image.

c = colorbar;
c.YTick = [0 255];
c.YTickLabel = {'-30 dB','0 dB'};
colormap gray
title('The 1^{st} B-mode image')
axis equal tight ij

Create an ROI.

param.ROI = median(I,3)>64;

Track the speckles with SPTRACK.

param.winsize = [32 32; 24 24; 16 16]; % size of the subwindows
param.iminc = 4; % image increment
[Di,Dj,id,jd] = sptrack(I,param);

Display the motion field.

colormap gray
hold on
h = quiver(jd,id,Dj,Di,3,'r');
hold off
title('Motion field (in pix) by speckle tracking')
axis equal off ij

See also

rf2iq, tgc, sptrack

About the author

Damien Garcia, Eng., Ph.D.
INSERM researcher
Creatis, University of Lyon, France

websites: BioméCardio, MUST

Date modified