Version 6.x Software
Starting from version 6.0 software, we are moving away from frequecy compounding and adopting the IQ demodulation instead. In this page, the general signal processing to generate the B mode image from RF signals using IQ demodulation on the Sonix Series is explained.
General Signal Processing
The general signal processing to generate B mode image from RF signal is as follows:
- Down mixing (multiplication with sine and cosine table)
- Low pass filtering both signals
- Envelope detection
- Log compression
Down mixing is the first step in IQ demodulation. The real valued RF-signal is multiplied/mixed with a sine/cosie signals. After this step, the frequency spectrum is moved down in the frequency plane.
- I = RF x cos(wt)
- Q = RF x -sin(wt)
Currently, the center frequency for both sine and cosine table are adjustable as a sliding frequency. Typically the down mixing starts with a high frequency at the probe location (start freq) and goes down linearly as we image deeper (stop freq). After a certain depth (stop freq depth) it remains the same value. This is to account for the downshifting of the center frequency of the RF data due to attenuation by tissue.
Low Pass filtering
After down mixing, the signal is low-pass filtered to remove the negative frequency spectrum and noise outside the desired bandwidth.
Currently, the low pass filter is an FIR filter and implemented as follows
- I = filter( b, 1, I );
- Q = filter( b, 1, Q );
- b: is a vector containing FIR coefficients: b = fir1( nTaps, cutoff),
- cutoff: is the "cutoff" parameter in BIQ-Filter (in percent), and
- nTaps: is equal to ( numberOfRFSamplesPerPixel x "windowFactor" )
- numberOfRFSamplesPerPixel = ( SamplingFreq >> rfDecimation) / "bSampling freq",
- Sampling Freq = 40MHz, and
- "rfDecimation" is a parameter which is typically 0 for linear probes (i.e. 40MHz sampling) and 1 for phased array and convex probes (i.e. 20MHz sampling) since they are working with lower frequencies.
To make the filter band width narrower, set the "cutoff" to zero and increase the "window factor" parameter.
Is simply impleted as follows
- Env = sqrt( I*I + Q*Q )
where I/Q are the output of the low pass filtering.
Roughly speaking the compression table is as follows
- B_dB = 20*log10(Env)
and the final gray scale mapping is as follows
- B = 255 x ( B_dB - "reject") / ("Dynamic range")
where both reject and dynamic range parameters can be adjusted in the B-DYNRANGE.
Note: In the system this curve is only applied up to a certain value (Pivot out). After this point the compression is linear instead of logarithmic.