Research Documentation
Research Documentation
1 Getting Started...................................................................................................................................................................................................................1
1.1 Research Support............................................................................................................................................................................................1
1.2 Online Training................................................................................................................................................................................................1
3 Sonix RP.............................................................................................................................................................................................................................3
3.1 Introduction......................................................................................................................................................................................................3
3.2 Important Notice..............................................................................................................................................................................................4
3.3 Main Topics.....................................................................................................................................................................................................4
4 Sonix RP Basics................................................................................................................................................................................................................5
4.1 Overview..........................................................................................................................................................................................................5
4.2 Operational Modes..........................................................................................................................................................................................5
4.3 RF Collection...................................................................................................................................................................................................5
5 SonixTOUCH......................................................................................................................................................................................................................7
5.1 Introduction......................................................................................................................................................................................................7
5.2 Important Notice..............................................................................................................................................................................................7
5.3 Main Topics.....................................................................................................................................................................................................8
6 SonixTABLET Research....................................................................................................................................................................................................9
6.1 Introduction......................................................................................................................................................................................................9
6.2 Main Topics.....................................................................................................................................................................................................9
7 SonixTABLET...................................................................................................................................................................................................................10
7.1 Introduction....................................................................................................................................................................................................10
7.2 Main Topics...................................................................................................................................................................................................11
8 SonixTouchPlus...............................................................................................................................................................................................................12
8.1 Introduction....................................................................................................................................................................................................12
8.2 Important Notice............................................................................................................................................................................................13
8.3 Main Topics...................................................................................................................................................................................................13
9 SonixTabletPlus...............................................................................................................................................................................................................14
9.1 Introduction....................................................................................................................................................................................................14
9.2 Important Notice............................................................................................................................................................................................15
9.3 Main Topics...................................................................................................................................................................................................15
12 Imaging Parameters......................................................................................................................................................................................................25
12.1 Research Menus.........................................................................................................................................................................................25
12.2 Main Screen Parameters.............................................................................................................................................................................26
12.3 VCA Parameters..........................................................................................................................................................................................27
12.4 Color Doppler Parameters...........................................................................................................................................................................27
12.5 Presets........................................................................................................................................................................................................28
13 Customizable Files........................................................................................................................................................................................................29
13.1 Digital RF Filters (Exam 5.7)........................................................................................................................................................................29
13.2 Transmit Shapes.........................................................................................................................................................................................29
13.3 Element Masking.........................................................................................................................................................................................29
i
Table of Contents
15 Exam B-DYNRNG...........................................................................................................................................................................................................32
15.1 Exam 6.0.3..................................................................................................................................................................................................32
16 Exam B-FOCUS..............................................................................................................................................................................................................34
16.1 Exam 6.0.3..................................................................................................................................................................................................34
17 Exam B-GAIN.................................................................................................................................................................................................................36
17.1 Exam 6.0.3..................................................................................................................................................................................................36
18 Exam B-GEOM...............................................................................................................................................................................................................39
18.1 Exam 6.0.3..................................................................................................................................................................................................39
19 Exam B-IQFILT...............................................................................................................................................................................................................41
19.1 Exam 6.0.3..................................................................................................................................................................................................41
20 Exam B-RX.....................................................................................................................................................................................................................43
20.1 Exam 6.0.3..................................................................................................................................................................................................43
20.2 Exam 5.x......................................................................................................................................................................................................44
21 Exam B-SCVT.................................................................................................................................................................................................................45
21.1 Exam 6.0.3..................................................................................................................................................................................................45
22 Exam B-TX......................................................................................................................................................................................................................47
22.1 Exam 6.0.3..................................................................................................................................................................................................47
23 Exam CDI........................................................................................................................................................................................................................49
23.1 Exam 6.0.3..................................................................................................................................................................................................49
24 Exam CDI-GAIN..............................................................................................................................................................................................................51
24.1 Exam 6.0.3..................................................................................................................................................................................................51
25 Exam CDI-GEOM............................................................................................................................................................................................................53
25.1 Exam 6.0.3..................................................................................................................................................................................................53
26 Exam CDI-TX..................................................................................................................................................................................................................55
26.1 Exam 6.0.3..................................................................................................................................................................................................55
27 Exam M...........................................................................................................................................................................................................................57
27.1 Exam 6.0.3..................................................................................................................................................................................................57
28 Exam PWD......................................................................................................................................................................................................................59
28.1 Exam 6.0.3..................................................................................................................................................................................................59
30 ECG.................................................................................................................................................................................................................................69
30.1 Overview......................................................................................................................................................................................................69
30.2 ECG Models................................................................................................................................................................................................70
30.3 Data Collection............................................................................................................................................................................................70
30.4 R-Wave Triggering......................................................................................................................................................................................72
30.5 Driver Installation.........................................................................................................................................................................................72
31 Protocol Setup...............................................................................................................................................................................................................73
33 4d.....................................................................................................................................................................................................................................76
33.1 Data Capture...............................................................................................................................................................................................76
33.2 Data Format.................................................................................................................................................................................................77
34 IQ Demodulation............................................................................................................................................................................................................79
34.1 Version 6.x Software...................................................................................................................................................................................79
34.2 General Signal Processing..........................................................................................................................................................................79
34.3 Down Mixing................................................................................................................................................................................................79
34.4 Low Pass filtering........................................................................................................................................................................................79
34.5 Envelope detection......................................................................................................................................................................................79
ii
Table of Contents
34 IQ Demodulation
34.6 Log compression.........................................................................................................................................................................................80
35 Introduction....................................................................................................................................................................................................................81
36 SonixDAQ.......................................................................................................................................................................................................................82
36.1 Introduction..................................................................................................................................................................................................82
36.2 Important Notice..........................................................................................................................................................................................82
36.3 Technical Specifications..............................................................................................................................................................................82
36.4 Manufacturer Contact..................................................................................................................................................................................82
36.5 PDF Download............................................................................................................................................................................................83
36.6 Main Topics.................................................................................................................................................................................................83
37 SonixDAQ Hardware......................................................................................................................................................................................................84
37.1 Contents of the Box.....................................................................................................................................................................................84
37.2 SonixDAQ I/O Connections.........................................................................................................................................................................84
37.3 Connecting the SonixDAQ to the Sonix System..........................................................................................................................................84
37.4 Connecting USB Cable................................................................................................................................................................................87
37.5 Connecting BNC Cable for Sync Signal......................................................................................................................................................87
37.6 Connecting BNC Cable for Clock Signal (Optional).....................................................................................................................................88
37.7 Connecting to the Power Socket-Outlet......................................................................................................................................................88
37.8 SonixDAQ Ratings and Environmental Conditions......................................................................................................................................88
37.9 Maintenance and Service............................................................................................................................................................................89
37.10 Hardware Block Diagram...........................................................................................................................................................................89
38 SonixDAQ Software.......................................................................................................................................................................................................98
38.1 DAQ Demo Software (5.x)...........................................................................................................................................................................98
38.2 DAQ Demo Software (6.0).........................................................................................................................................................................106
38.3 DAQ Demo Software (6.1).........................................................................................................................................................................109
40 SonixDAQ Installation.................................................................................................................................................................................................118
40.1 Downloading Software...............................................................................................................................................................................118
40.2 Installing the USB Driver (prior to ver 6.1).................................................................................................................................................118
40.3 Uninstalling the USB Driver (before ver 6.1)..............................................................................................................................................120
40.4 Installing the USB Driver (after ver 6.1).....................................................................................................................................................120
45 SDK 6.1.x.....................................................................................................................................................................................................................136
46 SDK 6.0.x.....................................................................................................................................................................................................................137
46.1 Experimental Setup...................................................................................................................................................................................137
46.2 Signal Processing and Results..................................................................................................................................................................137
46.3 Remarks....................................................................................................................................................................................................138
iii
Table of Contents
47 Receiving Ultrasound Data.........................................................................................................................................................................................139
47.1 Shape of the Ultrasound Data as a Function of Time................................................................................................................................139
47.2 Pre-beam Forming RF Data Processing on Sonix Platforms.................................................................................................................139
47.3 Receive Beam Forming.............................................................................................................................................................................140
47.4 Receive Beam Forming on Sonix Platforms..........................................................................................................................................141
47.5 Beam Formed RF Data Processing on Sonix Platforms........................................................................................................................142
48 SDK Overview..............................................................................................................................................................................................................143
48.1 Imaging......................................................................................................................................................................................................143
48.2 Peripheral Control......................................................................................................................................................................................143
49 Amplio...........................................................................................................................................................................................................................144
49.1 Overview....................................................................................................................................................................................................144
49.2 PDF Download..........................................................................................................................................................................................144
49.3 Amplio SDK...............................................................................................................................................................................................144
49.4 Amplio Demo Program..............................................................................................................................................................................146
49.5 Amplio in Real-Time..................................................................................................................................................................................148
50 SDK Download.............................................................................................................................................................................................................149
50.1 Downloading Software...............................................................................................................................................................................149
51 Fluctus..........................................................................................................................................................................................................................150
51.1 Overview....................................................................................................................................................................................................150
51.2 Programming.............................................................................................................................................................................................150
51.3 PDF Download..........................................................................................................................................................................................153
52 Impero...........................................................................................................................................................................................................................154
52.1 Overview....................................................................................................................................................................................................154
52.2 PDF Download..........................................................................................................................................................................................154
52.3 Button Identifiers........................................................................................................................................................................................154
52.4 Programming.............................................................................................................................................................................................155
53 Licensing......................................................................................................................................................................................................................156
53.1 Exam/SDK version 6.0 and older..............................................................................................................................................................156
53.2 Exam/SDK version 6.1 and after...............................................................................................................................................................156
55 SonixDataTools............................................................................................................................................................................................................160
55.1 Version 6.1.0.............................................................................................................................................................................................160
56 Matlab Ulterius.............................................................................................................................................................................................................165
57 Matlab Texo..................................................................................................................................................................................................................167
58 Porta..............................................................................................................................................................................................................................170
58.1 Overview....................................................................................................................................................................................................170
58.2 History and Versions.................................................................................................................................................................................170
58.3 Development Partners...............................................................................................................................................................................170
58.4 PDF Download..........................................................................................................................................................................................170
58.5 Main Topics...............................................................................................................................................................................................170
iv
Table of Contents
60 Porta Data and Imaging...............................................................................................................................................................................................174
60.1 Callbacks...................................................................................................................................................................................................174
60.2 Real-time Handling....................................................................................................................................................................................174
60.3 Acquiring Data while Frozen......................................................................................................................................................................174
62 Propello........................................................................................................................................................................................................................178
62.1 Introduction................................................................................................................................................................................................178
62.2 Motor Controls...........................................................................................................................................................................................179
62.3 Data Storage.............................................................................................................................................................................................180
62.4 Probe Parameters.....................................................................................................................................................................................182
62.5 Imaging Parameters..................................................................................................................................................................................183
62.6 Supported Probes......................................................................................................................................................................................184
62.7 Programming.............................................................................................................................................................................................184
62.8 Future Version Development.....................................................................................................................................................................185
63 Release Notes..............................................................................................................................................................................................................186
63.1 SDK 6.2.....................................................................................................................................................................................................186
63.2 SDK 6.1.2..................................................................................................................................................................................................186
63.3 SDK 6.1.1..................................................................................................................................................................................................186
63.4 SDK 6.1.0..................................................................................................................................................................................................187
63.5 SDK 6.0.7..................................................................................................................................................................................................188
63.6 SDK 6.0.6..................................................................................................................................................................................................189
63.7 SDK 6.0.5..................................................................................................................................................................................................190
63.8 SDK 6.0.4..................................................................................................................................................................................................190
63.9 SDK 6.0.3..................................................................................................................................................................................................190
63.10 SDK 6.0...................................................................................................................................................................................................190
63.11 SDK 5.7...................................................................................................................................................................................................190
64 Texo..............................................................................................................................................................................................................................191
64.1 Overview....................................................................................................................................................................................................191
64.2 History and Versions.................................................................................................................................................................................191
64.3 PDF Download..........................................................................................................................................................................................191
64.4 Main Topics...............................................................................................................................................................................................191
65 Texo Sequencing.........................................................................................................................................................................................................192
65.1 Sequencing Overview................................................................................................................................................................................192
65.2 Sequencing Examples...............................................................................................................................................................................192
66 Texo Parameters..........................................................................................................................................................................................................194
66.1 Global Parameters.....................................................................................................................................................................................194
66.2 Generic Parameters..................................................................................................................................................................................194
66.3 Transmit Parameters.................................................................................................................................................................................194
66.4 Analog Front End (AFE)............................................................................................................................................................................195
66.5 Receive Parameters..................................................................................................................................................................................195
v
Table of Contents
70 Texo Licensing.............................................................................................................................................................................................................212
71 Ulterius.........................................................................................................................................................................................................................213
71.1 Overview....................................................................................................................................................................................................213
71.2 Imaging Parameters..................................................................................................................................................................................213
71.3 Data Acquisition.........................................................................................................................................................................................213
71.4 Image Injection..........................................................................................................................................................................................213
71.5 History and Versions.................................................................................................................................................................................213
71.6 PDF Download..........................................................................................................................................................................................214
71.7 Main Topics...............................................................................................................................................................................................214
73 Ulterius Injection..........................................................................................................................................................................................................217
73.1 Overview....................................................................................................................................................................................................217
73.2 Real-time Handling with Injection..............................................................................................................................................................217
74 Compiler Setup............................................................................................................................................................................................................218
74.1 Generic Setup............................................................................................................................................................................................218
74.2 Specific Setups..........................................................................................................................................................................................218
75 Qt Setup........................................................................................................................................................................................................................219
75.1 Windows Setup..........................................................................................................................................................................................219
75.2 Visual Studio Setup...................................................................................................................................................................................219
75.3 Simple Example.........................................................................................................................................................................................219
78 Qt Creator.....................................................................................................................................................................................................................232
78.1 Installation.................................................................................................................................................................................................232
78.2 Opening SDK Files....................................................................................................................................................................................232
78.3 Compiling Demo Files...............................................................................................................................................................................232
78.4 External links.............................................................................................................................................................................................234
79 Sequencing..................................................................................................................................................................................................................235
79.1 B-Mode Sequence.....................................................................................................................................................................................235
79.2 M-Mode Sequence....................................................................................................................................................................................236
79.3 Pulse(d) Wave Doppler Sequence............................................................................................................................................................237
79.4 Color/Power Doppler Sequence................................................................................................................................................................238
82 Voltage Levels..............................................................................................................................................................................................................249
83 White Papers................................................................................................................................................................................................................251
83.1 PDF Download..........................................................................................................................................................................................251
83.2 General Information...................................................................................................................................................................................251
83.3 Special Techniques...................................................................................................................................................................................251
vi
Table of Contents
83 White Papers
83.4 Special Imaging Modes.............................................................................................................................................................................251
83.5 References................................................................................................................................................................................................251
84 Rx Timing.....................................................................................................................................................................................................................252
84.1 Exam 6.1.0................................................................................................................................................................................................252
84.2 Exam 6.0.3................................................................................................................................................................................................253
85 Block Diagrams............................................................................................................................................................................................................256
85.1 System Diagram........................................................................................................................................................................................256
85.2 Processing Chain Path Diagrams (ver 5.x)................................................................................................................................................256
85.3 Processing Chain Path Diagrams (ver 6.x)................................................................................................................................................259
86 System Curves.............................................................................................................................................................................................................260
88 Synchronization...........................................................................................................................................................................................................263
88.1 Overview....................................................................................................................................................................................................263
88.2 Output Synchronization.............................................................................................................................................................................265
88.3 Input Synchronization................................................................................................................................................................................267
88.4 FAQ...........................................................................................................................................................................................................268
89 Transmit Control..........................................................................................................................................................................................................269
89.1 Transmit Clocking......................................................................................................................................................................................269
89.2 Transmit Shaping......................................................................................................................................................................................269
90 Gain Engine..................................................................................................................................................................................................................271
90.1 Exam 6.0.x.................................................................................................................................................................................................271
90.2 Exam 5.0.x to 5.7.x....................................................................................................................................................................................273
90.3 Early Software (2.x - 3.x)...........................................................................................................................................................................275
91 FIR RF Filtering............................................................................................................................................................................................................277
91.1 Background...............................................................................................................................................................................................277
91.2 No Filtering................................................................................................................................................................................................277
91.3 Frequency Compounding..........................................................................................................................................................................277
91.4 Depth Based Filtering................................................................................................................................................................................278
91.5 Filter Design..............................................................................................................................................................................................280
92 Receive Bandwidth......................................................................................................................................................................................................281
92.1 Experimental Setup...................................................................................................................................................................................281
92.2 Signal Processing and Results..................................................................................................................................................................282
92.3 Remarks....................................................................................................................................................................................................283
93 Transducer Care..........................................................................................................................................................................................................284
94 Transducer Types........................................................................................................................................................................................................285
94.1 Naming Convention of Ultrasonix Transducers......................................................................................................................................285
94.2 Transducer Specifications.........................................................................................................................................................................285
96 Dynamic focus.............................................................................................................................................................................................................287
97 Elastography................................................................................................................................................................................................................288
97.1 Introduction................................................................................................................................................................................................288
97.2 Static Elastography....................................................................................................................................................................................288
97.3 Real-Time Elastography............................................................................................................................................................................288
97.4 Implementation on Sonix Systems............................................................................................................................................................289
97.5 References................................................................................................................................................................................................289
98 Strain Ratio...................................................................................................................................................................................................................290
98.1 Introduction................................................................................................................................................................................................290
98.2 Experimental Setup...................................................................................................................................................................................290
98.3 Results and Discussions...........................................................................................................................................................................290
98.4 References................................................................................................................................................................................................291
vii
Table of Contents
99 Pulsed Wave Doppler..................................................................................................................................................................................................293
99.1 Introduction................................................................................................................................................................................................293
99.2 Sequencing and Processing......................................................................................................................................................................293
101 ARFI............................................................................................................................................................................................................................298
101.1 Introduction..............................................................................................................................................................................................298
101.2 Implementation........................................................................................................................................................................................298
101.3 Measurements.........................................................................................................................................................................................299
101.4 Remaining Issues....................................................................................................................................................................................302
viii
1 Getting Started
1. Confirm an online training date and time by emailing [email protected]. Please use the subject: 'Request for Online Training for
[Your Institution Name]'
2. Ensure the Sonix system has access to the Internet by plugging an Ethernet cable into the port on the back of the device.
3. (Optional) Install the Internet VoIP software, Skype, onto the device by downloading the latest version.
4. Once your training date and time is confirmed, a 6 digit pin code will be sent 15 minutes prior to the start of the meeting. At the time of training,
go to the Support Login on the ultrasound system and enter the pin code to start the training session.
5. Allow for 1 hour for training.
1
2 A Reference on Ultrasound Imaging
This reference is a practical crash course on ultrasound imaging, with a focus on describing the technicalities of how Ultrasonix systems operate. It
documents the high level of flexibility achieved in our systems and helps you to benefit from this flexibility for your research purposes.
Introduction
Sequencing
B-Mode Sequence
M-Mode Sequence
Pulse(d) Wave Doppler Sequence
Color/Power Doppler Sequence
Transducer Types
Naming Convention of Ultrasonix Transducers
Transducer Specifications
Transducer Care
Appendices
Gain Engine
Transmit Control
Dynamic focus
FIR RF Filtering
Pulsed Wave Doppler
Transducer Prototyping
Voltage Levels
2
3 Sonix RP
3.1 Introduction
SonixRP
The Sonix RP is a diagnostic ultrasound system packaged with an Ultrasound Research Interface (URI). The URI is an interface that allows for:
In addition to the URI component, the Sonix RP also has the ability to run special research tools for performing tasks such as:
Transducer prototyping
Connecting to the system through a network for parameter setting and data capture
Low-level ultrasound beam sequencing and control
Development of commercial ultrasound applications running on the Sonix platform
Here are some quick specifications that the researcher should be aware of before using the device for research:
Hardware
128 element transducers (64 on phased-arrays)
256 transmit channels (128 on both positive and negative)
32 receive channels
40 MHz transmit delays calculation clock
40 MHz receive sampling clock
10-bit ADC
Operating system
Windows XP
Software
Exam 5.7.x
SDK 5.7.x
3
3.2 Important Notice
Given that the Sonix RP is designed to give maximum flexibility in the way of programming the ultrasound parameters, including transmission
parameters, caution must be used, and the ALARA principle should be followed at all times when scanning human subjects.
4
4 Sonix RP Basics
4.1 Overview
Using the Sonix RP system is quite simple once the functions and basic concepts have been learned.
4.3 RF Collection
One of the most popular uses of the Sonix RP is to collect digital Radio Frequency (RF) data. RF data is the signal before any digital filtering, envelope
detection or compression has been applied in the processing chain.
The architecture of the Sonix RP is one where the electronics send a specific data type over to the PC. When the system is in B mode imaging, there is
no RF data being sent to the PC, just envelope data. Therefore to acquire RF data, a special mode of operation, called RF Mode, was created so that
the RF data could be streamed across. The mode is operational on any Sonix RP system and can be accessed by pressing the B-Mode key when the
system is already imaging in B-mode. To return to regular B-mode when in RF mode, the B-MODE key can be pressed again. RF mode is available in
both Clinical and Research modes of operation. In Clinical mode, the RF spectrum will not be displayed, and B/RF acquisition mode (see below) is
automatically selected.
RF mode has two displays, the top display shows a B-mode image, and the bottom shows an RF trace. The RF trace corresponds to the movable line
on the B-mode image. Although the RF trace only shows a single line, the RF data is actually being acquired across the entire transducer (for the
specified line-density and sector), and stored in cine memory.
5
RF signal
1. Acquire B
2. Acquire RF
3. Acquire B/RF
The acquisition type is displayed on the main screen and can be toggled by pressing the UPDATE key. When in acquiring B/RF at the same time, the
frame rate will be dropped to half from the regular scanning frame rate due to the fact that the B and RF data are acquired separately. The sequence is
to acquire one B frame, one RF frame, one B frame, one RF frame, and continues.
Decimation can be adjusted using the research menu options. The sampling rate is displayed on the upper left corner of the RF trace box. The
maximum sampling rate that the RF data can be acquired is at 40 MHz, and the data is always in 16 bit samples.
In B/RF mode, the B image is collected first, followed by an RF frame. In this case, the typical frame rate scenario is cut in half. If frame rate is a
concern, then RF would be the mode of choice, otherwise if a reference B image is desired, the B/RF mode are quite useful.
4.3.2 RF Data
RF data can be collected as a beamformed signal, where an entire frame of RF is collected, using the same number of scanlines used to create the B
image. The Texo SDK and SonixDAQ products offer more flexibility for capturing pre-beamformed RF data, if that is required.
6
5 SonixTOUCH
5.1 Introduction
SonixTOUCH
The SonixTOUCH is a diagnostic ultrasound system packaged with an Ultrasound Research Interface (URI). The URI is an interface that allows for:
In addition to the URI component, the SonixTOUCH Research also has the ability to run special research tools for performing tasks such as:
Transducer prototyping
Connecting to the system through a network for parameter setting and data capture
Low-level ultrasound beam sequencing and control
Development of commercial ultrasound applications running on the Sonix platform
Hardware
128 element transducers (64 on phased-arrays)
256 transmit channels (128 on both positive and negative)
64 receive channels
80 MHz transmit delays calculation clock
40 MHz receive sampling clock
14-bit ADC
Operating system
Windows XP
Software
Exam 6.0.x
SDK 6.0.x
7
5.3 Main Topics
SonixTouch Research Basics
Working with Data
Imaging Parameters
Customizable Files
GPS Data Collection
ECG
3D/4D
Protocol Setup
Visualizing Channel Data
Transducer Prototyping
IQ Demodulation
Online Research Forum
Upgrading
8
6 SonixTABLET Research
6.1 Introduction
The SonixTABLET [1] is a compact ultrasound system with a 19? touch screen that can be mounted from the ceiling or wall to preserve floor space. This
unique system provides the same premium image quality as higher-end Ultrasonix models.
9
7 SonixTABLET
7.1 Introduction
SonixTABLET
The SonixTABLET SonixTABLET is a compact ultrasound system with a 19? touch screen that can be mounted from the ceiling or wall to preserve floor
space. The system is packaged with an Ultrasound Research Interface (URI). The URI is an interface that allows for:
In addition to the URI component, the SonixTABLET Research also has the ability to run special research tools for performing tasks such as:
Transducer prototyping
Connecting to the system through a network for parameter setting and data capture
Low-level ultrasound beam sequencing and control
Development of commercial ultrasound applications running on the Sonix platform
Here are some quick specifications that the researcher should be aware of before using the device for research:
Hardware
128 element transducers (64 on phased-arrays)
256 transmit channels (128 on both positive and negative)
64 receive channels
80 MHz transmit delays calculation clock
40 MHz receive sampling clock
14-bit ADC
Operating system
Windows XP
Software
Exam 6.0.x
SDK 6.0.x
10
7.2 Main Topics
SonixTABLET Research Basics
Working with Data
Imaging Parameters
Customizable Files
Protocol Setup
3D/4D
Visualizing Channel Data
Transducer Prototyping
Research Menu
Online Research Forum
Upgrading
11
8 SonixTouchPlus
8.1 Introduction
SonixTouchPlus
The SonixTouchPlus is a diagnostic ultrasound system packaged with an Ultrasound Research Interface (URI). The URI is an interface that allows for:
In addition to the URI component, the SonixTouch Research also has the ability to run special research tools for performing tasks such as:
Transducer prototyping
Connecting to the system through a network for parameter setting and data capture
Low-level ultrasound beam sequencing and control
Development of commercial ultrasound applications running on the Sonix platform
Here are some quick specifications that the researcher should be aware of before using the device for research:
Hardware
128 element transducers (64 on phased-arrays)
256 transmit channels (128 on both positive and negative)
64 receive channels
80 MHz transmit delays calculation clock
40 MHz receive sampling clock
14-bit ADC
Operating system
Windows 7
Software
Exam 6.1.x
SDK 6.1.x
12
8.2 Important Notice
Given that the SonixTouchPlus Research is designed to give maximum flexibility in the way of programming the ultrasound parameters, including
transmission parameters, caution must be used, and the ALARA principle should be followed at all times when scanning human subjects.
13
9 SonixTabletPlus
9.1 Introduction
SonixTabletPlus
The SonixTabletPlus is a diagnostic ultrasound system packaged with an Ultrasound Research Interface (URI). The URI is an interface that allows for:
In addition to the URI component, the SonixTabletPlus Research also has the ability to run special research tools for performing tasks such as:
Transducer prototyping
Connecting to the system through a network for parameter setting and data capture
Low-level ultrasound beam sequencing and control
Development of commercial ultrasound applications running on the Sonix platform
Here are some quick specifications that the researcher should be aware of before using the device for research:
Hardware
128 element transducers (64 on phased-arrays)
256 transmit channels (128 on both positive and negative)
64 receive channels
80 MHz transmit delays calculation clock
40 MHz receive sampling clock
14-bit ADC
Operating system
Windows 7
Software
Exam 6.1.x
SDK 6.1.x
14
9.2 Important Notice
Given that the SonixTabletPlus Research is designed to give maximum flexibility in the way of programming the ultrasound parameters, including
transmission parameters, caution must be used, and the ALARA principle should be followed at all times when scanning human subjects.
15
10 SonixTouch Research Basics
10.1 Overview
Using the SonixTOUCH Research system is quite simple once the functions and basic concepts have been learned.
Touchscreen Layout in Research Mode (Exam 5.7). In higher versions of the Exam (Exam 6.0 and higher), RF mode does not exist since RF data is
accessible in every imaging mode.
The message Investigational Use Only will be displayed on the ultrasound image
The system software will look like a Microsoft Windows? application with a title bar and minimize/maximize/close buttons
The Microsoft Windows? desktop is active for use like a PC
The system software will cover the entire monitor and access to the Microsoft Windows? desktop will not be possible
16
Feature Clinical Mode Research Mode
Standard Features X X
RF Mode X X
Data Storage Screen X X
Research Menus X
Investigational Use Only Message X
Ulterius Connection X
10.3 RF Collection
One of the most popular uses of the SonixTOUCH Research is to collect digital Radio Frequency (RF) data. RF data is the signal before any digital
filtering, envelope detection or compression has been applied in the processing chain.
The architecture of the SonixTOUCH Research is one where the electronics send a specific data type over to the PC. When the system is in B mode
imaging, there is no RF data being sent to the PC, just envelope data. Therefore to acquire RF data, a special mode of operation, called RF Mode, was
created so that the RF data could be streamed across. The mode is operational on any SonixTOUCH Research system and can be accessed by
pressing the RF button on the touchscreen. To return to regular B-mode while in RF mode, the B button can be pressed on the touchscreen. RF mode is
available in both Clinical and Research modes of operation. In Clinical mode, the RF spectrum will not be displayed, and B/RF acquisition mode (see
below) is automatically selected.
RF mode has two displays, the top display shows a B-mode image, and the bottom shows an RF trace. The RF trace corresponds to the movable line
on the B-mode image. Although the RF trace only shows a single line, the RF data is actually being acquired across the entire transducer (for the
specified line-density and sector), and stored in cine memory.
RF signal
Acquire B
Acquire RF
Acquire B/RF
The sequence is to acquire one B frame, one RF frame, one B frame, one RF frame, and continues. The sampling rate is displayed on the right corner
of the RF trace box; it may be necessary to adjust the decimation if the preset defaults to 20MHz and 40MHz is desired; data is always in 16 bit
samples.
Starting Exam 6.0, the hardware no longer provides B data and the processing to generate B-mode images is done in the software by processing the
original RF data. As a result, the RF data will always be available in the system in all the imaging modes and the system no longer needs to have a
dedicated RF mode. This also doubles the frame rate since for every B-mode image the corresponding RF image also exist. In other words, there is no
need to ask the system to acquire one frame of RF data followed by another frame of B-mode data.
In B/RF, the B image is collected first, followed by an RF frame. In this case, the typical frame rate scenario is cut in half. If frame rate is a concern, then
RF would be the mode of choice, otherwise if a reference B image is desired, the B/ modes are quite useful.
10.3.2 RF Data
RF data can be collected as an entire frame of beamformed signals; this will use the same number of scanlines used to create the B image.
17
11 Working with Data
11.1 Overview
The Sonix systems have many different types of data that can be stored. The imaging mode determines the type of data that is available to store at any
given time.
Data type
Imaging depth
Imaging sector & line density
If the cine size is changed, caution should be taken as to not over-allocate the system with memory beyond it's capacity, otherwise sluggishness of the
interface will result. An on-screen cine control acts as an interface to the current displayed frame, as well as determining what frames shall be stored to
disk. The control can be selected using the Select button on the console, and then the trackball shall perform scrolling through the frames. The display is
organized as below:
Cine Display
The start and end frames for storing data or playing back the cine can be set by clicking on the Start and End guides on the cine control, and then
scrolling the values using the trackball. Once the range has been selected, the record button on the touchscreen should be pressed to bring up the Data
Storage screen.
1) Go into Menu->Options->Administrator->Research and check the "Show Storage Dialog in Clinical Mode" option.
18
Setup storage dialog in clinical mode
2) Program the print key to "record cine" by going into Menu->Options->Administrator->Custom Keys and choose the "Record Cine" option and click OK.
Doing so whenever the print key is pressed, it will bring up the storage dialog.
19
Setup custom key to bring up storage dialog
20
Data Storage Screen
All data types will be displayed, however only the ones that are available in the current imaging mode will have a value of ?Yes? in the Available column,
as well as a non-zero frame count in the Frames column.
To speed up storage, data types can be selected by default when the Data Storage screen is displayed. To do this, check off the data types that should
be defaulted, and click on Set Selection As Default. All data is stored under the D:\PatientInfo. If a patient and study have been created, then the data is
under a folder with the naming convention of: D:\PatientInfo\Patient ID\Study Date\. If there is no patient selected then the data will be stored under
D:\PatientInfo\.~default\Study Date\.
21
11.6 Data Types
There are many data types that can be stored from the Sonix systems. Some important notations when reading the table:
22
FC + (packet
Color RF data acquired at the Color PRF with Vector (ensemble
Color RF 16/RF size * V * S * .crf
full packet-size groups)
2)
Color/B Interpolated and processed B and color data Raster 32/XRGB W*H*4 .col
Interpolated and processed color velocity (Y) 16/Color values, where first 8 bit
Color
and variance data (X). Variance is power data Raster frame is velocity, second 8 bit W*H*2 .cvv
Velocity/Variance
in Power Doppler mode frame is variance
Interpolated and processed B and elastography
Elasto/B Raster 32/XRGB W*H*4 .el
data
Elasto Overlay Interpolated and processed elastography data Raster 8/Elasto W*H .elo
Midway processed elastography data before
Elasto Pre Scan
interpolation, and after RF and strain Vector 8/Elasto V*S .epr
Converted
conversion
ECG ECG spectrum data Vector 8/ECG W .ecg
GPS GPS co-ordinate data Vector Ascension SDK N/A .gps
All data types are configured to store a range of frames except for Screen Capture, PW Spectrum, and M: Scan Converted. The frame range can be
entered on screen when the Frames option is selected. Alternatively, if the Time option is selected, data is stored retrospectively based on the duration
specified in milliseconds.
struct uFileHeader
{
int type; // data type (can be determined by file extensions)
int frames; // number of frames in file
int w; // width (number of vectors for raw, image width for processed data)
int h; // height (number of samples for raw, image height for processed data)
int ss; // data sample size in bits
int ulx; // roi - upper left (x)
int uly; // roi - upper left (y)
int urx; // roi - upper right (x)
int ury; // roi - upper right (y)
int brx; // roi - bottom right (x)
int bry; // roi - bottom right (y)
int blx; // roi - bottom left (x)
int bly; // roi - bottom left (y)
int probe; // probe identifier - additional probe information can be found using this id
int txf; // transmit frequency in Hz
int sf; // sampling frequency in Hz
int dr; // data rate (fps or prp in Doppler modes)
int ld; // line density (can be used to calculate element spacing if pitch and native # elements is known
int extra; // extra information (ensemble for color RF)
};
Although data types can be determined by the file extension, there is also a type entry in the file header; this can be parsed to determine the data type
as well. The enumeration for data types is as follows:
23
11.7.2 Exam 6.0.2
enum uData
{
udtScreen = 0x00000001,
udtBPre = 0x00000002,
udtBPost = 0x00000004,
udtBPost32 = 0x00000008,
udtRF = 0x00000010,
udtMPre = 0x00000020,
udtMPost = 0x00000040,
udtPWRF = 0x00000080,
udtPWSpectrum = 0x00000100,
udtColorRF = 0x00000200,
udtColorCombined = 0x00000400,
udtColorVelocityVariance = 0x00000800,
udtElastoCombined = 0x00002000,
udtElastoOverlay = 0x00004000,
udtElastoPre = 0x00008000,
udtECG = 0x00010000,
udtGPS = 0x00020000,
udtPNG = 0x10000000
};
In Spatial Compounding mode, B data can be stored as normal, however the raw pre-scan converted frames stored will alternate between the angles
preset in the mode. The upper 4 bytes of the frame header will determine the angle count, whereas the lower 4 bytes always is correlated to the frame
counter.
11.8.2 RF Mode
RF mode will by default, store post-beamformed RF data when in RF or B/RF update modes. The data will match the B mode geometry based on the
line density, depth and sector. In ChRF and B/ChRF modes, the RF is stored as pre-beamformed and always contains 32 separate RF lines (on Sonix
RP only) that are centered around the RF visualization line on screen.
A compounding RF mode is also available, where frames of RF data are stored in a similar fashion as described in regular Compound Mode above.
RF data used to generate the strain image can be captured by selecting the regular RF data option. All other elastography data captures relate to the
relative strain. Displacement data is not yet exportable.
24
12 Imaging Parameters
There is an abundance of imaging parameters that control the system; they will not all be explored here. However, an overview of how the system works
will be demonstrated.
When a parameter is clicked on, the description will update on the menu. To change a parameter value or the active menu, highlight the parameter or
menu title and use one of the following to scroll:
25
12.2 Main Screen Parameters
Parameter Description Unit
Updates frequency, receive filters and other parameters to optimize the image for certain settings. Displayed on screen as
B Optimization N/A
?Penetration?, ?General?, ?Resolution?, or ?Harmonics?.
Freq The displayed frequency. Changed through the B Optimization. MHz
Depth The depth to acquire B or RF data. cm
Sector The percentage of the vectors being acquired, as a maximum of the line density. %
Gain The overall B image gain. %
FR The frame-rate optimization. Automatically adjusts the line density. N/A
26
FPS The acquisition rate in frames per second. Hz
Dyn Adjusts dynamic range by altering the log compression table after envelope detection. dB
Persist The frame averaging level. N/A
Map The greyscale map index that adjusts brightness, contrast and gamma. N/A
Chroma The chroma index to colorize the image. N/A
Power The power level, where 0 is the max power in volts. N/A
Acoustic
The MI/TI readings that adhere to the AIUM/NEMA standards. N/A
Reading
Clarity Level of the image-enhancement filter. N/A
(NOT USED)
color-persistence The number of frames to apply frame averaging on the color image. 0 to 9
Adaptive Filter Parameters
27
0 = off, 1 =
color-edge smooth Smooths the color edges so that on the edges the speed value phases out.
on
color-persistence after sc Persistence of color data. 0 to 10
Post Processing Filter Parameters (applied to power doppler image using same filter method as above)
Parameter Description
color-r0 min Minimum R0 value the signal must have in order to be considered real flow. Velocities below this value are ignored.
color-r0 clutter max Maximum R0 clutter value the Color Doppler signal can have before it is discarded. 0 means it is not used
color-r0 clutter max power Maximum R0 clutter value the Power Doppler signal can have before it is discarded. 0 means it is not used.
color-velocity min The minimum velocity value the Doppler signal must have in order to be considered true flow.
power-r0 shift The shift value applied to R0, before R0 gets interpolated to the color map (0 to 31).
Maximum sigma value the Doppler signal can have before it is discarded. 0 means it is not used
color-sigma max
color-r0 max.
color-r0 minmax thresh The maximum r0 value to set. Any r0 above this value will be set to this parameter value.
Threshold for r0 noise. Works with the variable ?color-vel max noise? Signals with low R0 and with high velocity (likely
color-r0 min noise
to be noise).
Threshold for velocity noise. Works with ?color-r0 min noise? Signals with low R0 and with high velocity is likely to be
color-vel max noise
noise.
12.5 Presets
Imaging presets are stored in the C:\Program Files\Ultrasonix\Exam\presets\ folder. Variable IDs are string values. All the variables that are used within
the software are stored in the file imaging.lst.xml. This file includes a description of each variable (if available) as well as the research menu where the
parameter can be found.
An example of the B frequency parameter in the imaging.lst.xml is shown below. The unit for the b-freq parameter is in MHz, and the menu which it can
be found is the B TX research menu in exam.
The file imaging.set.xml contains variable boundaries and default image settings. These default settings are used when a parameter is not found in the
Gen-General .xml preset for a probe. An example of the b-freq parameter in the imaging.set.xml file is shown below. Here, the default value is 10MHz
while the boundary of the file is specified as a range from 1MHz to 10MHz in increments (steps) of 0.5MHz.
For each probe, there is a Gen-General preset that is stored in the C:\Program Files\Ultrasonix\Exam\presets\imaging\ folder. The Gen-General preset
file is the master preset which contains the default image settings for a particular probe. When a preset is loaded (eg. MSK-General (L14-5 38mm).xml),
the software first loads the settings from the Gen-General preset .xml file to get the default parameters and then loads the additional parameters in the
MSK-General (L14-5 38mm).xml file.
28
13 Customizable Files
This section goes into detail on various system files that may be interesting from the researcher?s perspective. All of these files can be modified by the
user as to add filters and transmit shapes, or change parameter ranges.
Identifies the filter. The file has been set up so that the filter ID is equal to the filter frequency multiplied by 10 plus an index to the type and
Filter ID
length
Name The name of the filter
Description A brief description of the filter.
Length The number of coefficients.
Coefficents The coefficient list.
Shift Shift value used to increase or decrease the coefficient amplitude before being applied to the data.
Example:
: <43>
: Cardiac1
: Band-pass filter at 4MHz with 15 taps
: 15
: -20 -63 -84 -72 -29 31 81 101 81 31 -29 -72 -84 -63 -20
: 1
RF FIR A
RF FIR B
RF FIR C
29
14 Category:Exam Software Parameters
There is an abundance of imaging parameters that control the system. These parameters, are documented here.
Research Menu
In addition to the parameters that can be adjusted from the console and touchscreen, there are many research menus that contain lower-level
parameters that play a role in image formation and processing.
In order to be able to access the menu, you need to have a research license installed and activated on your system. Moreover, the Exam software
should be switched to research mode. Once in research mode, you can bring out the menu by moving the mouse to the extreme right or left side of the
screen.
When a parameter is clicked on, the description will update on the menu. To change a parameter value or the active menu, highlight the parameter or
menu title and use one of the following to scroll:
30
14.2 Abbreviations
B Brightness Mode
CDI Color Doppler Imaging
CWD Continuous Wave Doppler
PWD Pulsed Wave Doppler
Elasto Elastography
M Motion Mode
POSTP Post Processing Parameters
RX Receive Parameters
TX Transmit Parameters
Here is a table of all the variables available in the research menu.
Optimization Menu
31
15 Exam B-DYNRNG
The following curve shows the log compression and dynamic range reduction of the Exam software. The parameters that determine the shape of the
curve are described here.
32
The DR Reject Sum determines the minimum level of the signal for which there will be a nonzero intensity in the image. All signals below this level are
considered noise and mapped to the zero intensity. The DR Log Sum determines the range of signals for the logarithmic portion of the curve, and the
DR Linear determines the range of signals for the linear portion of the curve. The DR Pivot Out determines the intensity level in the output gray scale
image below which a logarithmic compression is used, and above which a linear mapping is used. A DR Pivot Out of 255 essentially eliminates the
linear portion of the curve, and a level of 0 eliminates the logarithmic portion.
DR Reject Sum
DR Log Sum
DR Linear
DR Pivot Out
In order to account for differences in the A-mode data resulting from the hardware versions, calibration offset parameters are used. The DR Log Sum is
thus the sum of DR Log, which is the hardware independent dynamic range for the logarithmic portion of the curve chosen by the user, plus a
hardware specific offset determined by the factory which is in DR Log Offset. Similarly, for the noise rejection level, the DR Reject Sum is the sum of DR
Reject, which could be the hardware independent range chosen by the user, plus DR Reject Offset, the hardware specific calibration offset added by
the factory.
DR Log
DR Log Offset
DR Reject
DR Reject Offset
33
16 Exam B-FOCUS
16.1.1 Sequencing
Gives the pre-adjustment number of focal depths. Focus Count of 0 means Auto Focus (AF). The Focus Count is not the actual number of focal depths
used. See Focus Count Adj(usted)
Focus Count
The actual number of focal depths in the sequence. This parameter is adjusted automatically for PIH to reflect the presence of the two pulses. However
it can also be ajusted manually to a different number than Focus Count.
34
Focus Span
Focus Depth
The 1st to 8th depth of focus in auto-focusing. Auto-focus is activated if Focus Count is zero.
AF Depth[1..8]
AF Lineduration
35
17 Exam B-GAIN
The analog signal from the transducer is fed to a Voltage Controlled Amplifier (VCA) which performs: 1. termination 2. amplification 3. low pass filtering.
All three functionalities of the VCA can be digitally programmed. The VCA Amplification determines the gain of the amplifier. The VCA LPF sets the
cutoff frequency of the low-pass filter on the VCA. VCA LNA Input Clamp determines the LNA voltage clamp. VCA Active Termination is used to reduce
reflection from mismatches and achieving better axial resolution. See VCA Parameters.
VCA Amplification
VCA LPF
VCA LNA Input Clamp
VCA Active Termination
The analog TGC for RF data collection is determined through a number of parameters. The main TGC curve is specified by TGC:Analog (see System
Curves). The maximum depth that the TGC:Analog curve is used to is detemined by TGC:Depth. Depths beyond will use the last calculated value of the
curve.
36
TGC: Analog
TGC: Depth
A user adjustable software digital gain is calculated and applied to the beam formed RF data by the software. The software digital gain has two
components, both of which are determined by the user. A depth dependent component which comes from the sliders, and an overall component. This
makes the software digital gain dependent on the depth, and hence a TGC in essence.
The gain chosen by the user is Gain:Overall. Its value should be mapped to 0% to 100% in the digital gain range. In order to maintain a uniform look
across different frequencies, an offset is added to this overall gain which is determined by Gain: Overall (Digital) Offset. The values of these parameters
are on a logarithmic scale and will be the exponent of the actual multiplicative gain. The minimum digital gain (in dB) is determined by Gain:Min Ampl.
The size of the range of digital gains possible (in dB) is determined by Gain:Range.
Gain: Overall
Gain: Overall (Digital) Offset
Gain: Range
Gain: Min Ampl
The TGC curve is adjustable by the user by a set of sliders representing different depths from the console of the ultrasound system. This is
accomplished by applying a digital TGC on the beam formed RF data. Slider values from the console are reflected in TGC:Sliders. The effect of the user
TGC (sliders) on the overall TGC is determined by TGC:Sensitivity.
TGC: Sliders
TGC: Sensitivity
A lateral gain curve is also implemented. This parameter is used for phased array probes only. If the curve is defined in the preset, it gets applied
laterally to compensate for the bright middle region. It is applied digitally per scan line. It represents half transducer, applied symmetrically.
TGC: Lateral
TGC: Lateral Offset
The system's auto-adjust for the gain can be enabled by the TGC:Auto Enable.
37
38
18 Exam B-GEOM
Changing the preset frame rate setting through this parameter will load default values for the other parameters:
Frame Rate
Steer
The depth of imaging determines the time duration for the recording of the RF signals:
Depth
39
For pulse inversion harmonics:
Decimation
18.1.4 Sequencing
The number of lines used in the sequence for the entire width of the transducer array:
Line Density
Line Density (HD Zoom)
Line Density (B/HD Zoom)
Accumulator determines the number of times a scan line should be repeated in the sequence (For averaging and/or PIH), the RF data for these lines will
be averaged automatically. If Fast PIH mode is turned on, a default accumulator = 1 is used.
Accumulator
Accumulator Out (B)
The percentage of the width of the transducer that is used for imaging. The sector is always centered with respect to the transducer array. The actual
number of lines that are used in the sequence can be found by multiplying the Line Density by the Sector. The Sector can be set to more than 100%, in
which case additional scan-lines are programmed on both sides of the image with beam steering to increase the field of view.
Sector
The range of angles for the acquired scan-lines will span (-Extension Angle/2, Extension Angle/2) which will be added to the steering angle. Please see
the following figure.
Extension Angle
LD Adjust
40
19 Exam B-IQFILT
The RF data is low-pass filtered in the base band after down mixing. The order of filter (number of taps) is proportional to IQ Window Factor (see here).
The Cutoff Frequency is in percent of the sampling frequency/2.
IQ Window Factor
Cutoff Frequency
To account for the downshifting of the center frequency of the RF signal as a function of depth, the carrier frequency used in the IQ demodulation is not
constant but is sliding. More accurately it changes linearly with depth. The frequency used at the top of the image (depth zero) is Top Frequency. The
frequency used at the Bottom Frequency Depth is Bottom Frequency.
Top Frequency
Bottom Frequency
Bottom Frequency Depth
41
19.1.2 Harmonic Imaging
When doing PIH imaging, the carrier frequency is double the frequency of the transmitted pulses. Therefore another set of values are needed for
harmonic imaging:
The harmonic signals are typically weaker than the original signals, specially for deeper tissue. Therefore the harmonic images are always blended into
the b-mode images. Percentage of blending is determined by Blend Percent Base where 0 mean no blending and 100 means full blending. The depth to
start the blending for harmonic and B-mode images is determined by Blend Depth Base 1. The depth to maximize the blending for harmonic and
B-mode images is determined by Blend Depth Base 2.
19.1.3 TODO
42
20 Exam B-RX
Starting version 6.x. The Rx aperture curve in no longer used. Instead, a fixed F-number is used to determine the aperture size for each focal depth.
This parameter can be set through:
Rx F Number
The correct Sound Velocity is needed for properly calculating the delays in the delay-and-sum algorithm of the beam forming. The value for most soft
tissue is 1540 m/s.
Sound Velocity
Apodization: The pre beam forming RF data from different elements in the aperture are weighted according to an apodization function such as Guassian
or Hanning. The B Weidth Type selects this function.
B Weight Type (0: Boxcar, 1-12: different versions of Hanning, 13: Hamming, 14: Blackman)
Note: The following parameters reside in the menu from the earlier versions, but are deprecated and have no effect in this version of the software:
43
Rx Aperture
Rx Aperture Max
Rx Curve Depth
Use Rx Aperture (Accum)
Rx Aperture (Accum)
Rx Aperture Max (Accum)
Rx Curve Depth (Accum)
The aperture opening for different depths is determined through a curve, Rx Aperture, which represents the receive aperture as a function of elements
vs depth (see System Curves). The maximum number of elements that can be in the receive aperture is determined by Rx Aperture Max. Value
represents half the aperture, as all calculations are symmetrical. The maximum depth at which the Rx Aperture Curve is valid for is determined by Rx
Curve Depth. All depths beyond this value will use the last calculated value of the curve at this depth.
Rx Aperture
Rx Aperture Max
Rx Curve Depth
If the sequence involves multiple acquisitions of each scan line through the Accumulator parameter, a second aperture opening curve can be
programmed for a second scan line. The use of the second aperture curve is determined by the Use Rx Aperture (Accum) parameter. The Accumulator
MUST be set to two.
The correct Sound Velocity is needed for properly calculating the delays in the delay-and-sum algorithm of the beam forming. The value for most soft
tissue is 1540 m/s.
Sound Velocity
44
21 Exam B-SCVT
The Exam software uses the parameters related to the probe, as well as the B-TX and B-RX to automatically determine the geometry of the transducer
grid. This is a deterministic process and does not involve any input from the user. The geometry of the screen grid as well as its respective location with
respect to the transducer gird can be adjusted by the user. Microns Per Pixel (MPP) is the vertical and horizontal (physical) sizes of the display pixel in
microns. The origin determines the vertical and horizontal coordinates of the center of the transducer grid in the display coordinates. For instance, when
the horizontal size of the image is 640 pixels, a value of 320 for the first Origin parameter puts the center of the transducer grid in the center of the
image, horizontally.
MPP
Origin
Since each pixel of the screen is processed by the scan conversion algorithm (its value is calculated based on the values of the pre scan conversion
B-mode data) the software has the ability to perform such tasks as flipping and zooming in this step. The following parameters can be used for this
purpose:
Initial Zoom
Image Flip
Zoom - User
45
Zoom Offset
46
22 Exam B-TX
Changing the preset transmit setting through this parameter will load default values for the other parameters:
B-Freq
The exam software can send up to two temporal pulse shapes (A & B) for each scan line. (The software can send many more pulses of the same
temporal shape but with different focal distance, for the same scan line. see ...) The pattern of the pulse is loaded from a file called pulses.txt which can
be found in \Ultrasonix\Exam\config folder. The indices of the chosen patterns from this file for the two pulses A and B are set by these parameters:
Pulse Index A
Pulse Index B
The pattern can be repeated a number of times. By default, the pattern is repeated just once. The number of repetitions is determined by:
Pulse Repeat
47
The transmit frequency is set through the parameter:
Tx Frequency
The positive and negative amplitudes are determined through three parameters. The positive and negative voltage indices:
Voltage+
Voltage-
and the Power. The actual voltage index is Voltage(pluse/minus) - (15 - Power), where 15 is the maximum index value.
Power
The conversion between the indices and actual voltages can be found here.
The two wires connected to the transducer elements can carry offset voltages, determined by:
Voltage Offset+
Voltage Offset-
The transmit focusing can be turned off to achieve a plane wave transmission through:
Plane Wave
22.1.3 Display
The frequency displayed to the user on the screen is determined by User Frequency. The value is usually selected based on the transmit frequency and
selected filters, but can have any value.
User Frequency
48
23 Exam CDI
The optimized/default parameters can be loaded for different CDI imaging sub-modes such as color Doppler, power Doppler and flow imaging through:
Color Mode
23.1.1 Sequencing
The number of scan lines (line density) in each ensemble is determined by Ensemble. The CDI box is divided into ensembles of width equal to
Ensemble, each of which can be acquired at a higher frame rate.
Ensemble
There are four pulse repetition periods listed under the parameters in this menu. The first PRP serves as a requested PRP by the user. The actual PRP
is computed based on this requested number, the minimum possible PRP in the current settings, and if in triplex mode, the PRP for the PWD mode. The
result of this computation is the PRP Color parameter. Changing this parameter from the interface does not change anything internally, and it will be
updated once the requested PRP changes.
49
PRP (first one)
Color PRP
The same duo, requested and actual PRP, exist for the dual CDI imaging
23.1.2 Processing
The image to be generated is chosen through Mode, 0=Color Doppler, 1=Power Doppler, 2=Tissue Doppler, 3=Color Flow, 4=Power Flow.
Mode
23.1.3 Display
Color Visibility
50
24 Exam CDI-GAIN
TGC
A user adjustable software digital gain is calculated and applied to the beam formed RF data by the software. The software digital gain has two
components, both of which are determined by the user. A depth dependent component which comes from the sliders, and an overall component. This
makes the software digital gain dependent on the depth, and hence a TGC in essence.
The gain chosen by the user is Gain. Its value should be mapped to 0% to 100% in the digital gain range. In order to maintain a uniform look across
different frequencies, an offset is added to this overall gain which is determined by Gain Offset. The values of these parameters are on a logarithmic
scale and will be the exponent of the actual multiplicative gain. The minimum digital gain (in dB) is determined by Doppler Digital Gain Min. The size of
51
the range of digital gains possible (in dB) is determined by Doppler Digital Gain Range.
Gain
Gain Offset
Doppler Digital Gain Min
Doppler Digital Gain Range
The TGC curve is adjustable by the user by a set of sliders representing different depths from the console of the ultrasound system. This is
accomplished by applying a digital TGC on the beam formed RF data. Slider values from the console are reflected in TGC Digital.
TGC Digital
A lateral gain curve is also implemented. This parameter is used for phased array probes only. If the curve is defined in the preset, it gets applied
laterally to compensate for the bright middle region. It is applied digitally per scan line. It represents half transducer, applied symmetrically.
TGC Lateral
52
25 Exam CDI-GEOM
Changing the optimized preset settings through Color FR will load default values for the other parameters, specially the two Line Density parameters:
Color FR
Steer
RF Decimation
53
25.1.3 Sequencing
The number of lines used in the CDI sequence for the entire width of the transducer array is determined by the CLD which stands for CDI Line Density.
For the B-mode section of the sequence, the Line Density determines the number of lines:
CLD
Line Density
The extents of the CDI box with respect to the B-mode image, is determined through Color Box. This parameter also determines the sequence of
ensembles that is programmed, as the Color Doppler sequence is only acquired for this box.
Color Box
25.1.4 Processing
The data is down-sampled a second time, after it has been converted to I/Q data. The sampling frequency of the I/Q data is determined by CSF (CDI
Sampling Frequency):
CSF
54
26 Exam CDI-TX
The temporal pulse shape of the CDI scan lines can be chosen by the user. The pattern of the pulse is loaded from a file called pulses.txt which can be
found in \Ultrasonix\Exam\config folder. The index of the chosen pattern from this file is set through
The positive and negative amplitudes are determined through the positive and negative voltage indices:
Voltage+
Voltage-
These are typically lower than the values used for the B-mode imaging due to the faster energy deposition in the tissue in CDI. The conversion between
the indices and actual voltages can be found here.
55
26.1.2 Transmit Beam Forming
Since the CDI sequences have a faster energy deposition in the tissue, in order to meet the safety limits, the aperture used for the transmission is
reduced. Tx Aperture Cutoff cuts the aperture for CDI transmissions. This is to reduce the acoustic output when the default calculated B-mode transmit
aperture is too big for a CDI transmission.
Tx Aperture Cutoff
56
27 Exam M
27.1.1 Transmit/Receive
Steer
27.1.2 Sequencing
The mono (m-mode only) or duplex (m-mode plus b-mode) sequence is chosen through:
Mode
The line segment (gate) over which the M-mode data is acquired and the image is generated is determined by:
M Line
57
M Line Depth
M Line Size
LRP
Line Density
27.1.3 Display
The layout of the screen (relative position of the B-mode and M-mode images) is determined by the provisional Screen Layout. This parameter does not
do anything in this version of the Exam software. The zoom of the B-mode image can be changed through the Initial Zoom. The tint of the m-mode
image can be changed through Chroma. The Scroll Mode determines how the m-mode image is swept: like an oscilloscope trace, or continuously
running.
Scroll Mode
Initial Zoom
Chroma
Screen Layout
58
28 Exam PWD
59
28.1.1 Temporal Shaping of the PWD Pulse
In order to make more accurate measurements of the blood velocity, the temporal pattern of the pulse is typically repeated. This will result in a narrower
bandwidth of the transmitted pulse, which can make more accurate velocity measurements. The number of repetitions is determined by Pulse Repeat. If
set to 0, the size of the gate will determine the pulse repeat, limited by the Tx Max Pulses (PW).
Pulse Repeat
Tx Max Pulses (PW)
Frequency
Since the PWD line is repeatedly scanned at a high PRF, localized heat is deposited into the tissue. In order to meet the safety limits, the amplitude of
the pulse should be reduced. The following voltage indexes determine how the amplitude will be adjusted for increased PRFs:
Voltage- HighPRF
Voltage- MedPRF
Voltage- LowPRF
The conversion between the indices and actual voltages can be found here.
60
28.1.2 Transmit Beam Forming
The focal point of the PW transmit is determined by Tx Focus Distance. If set to 0, the focal point would be at the center of the gate. Either way, the
focus distance can be limited to a minimum set by Tx Focus Min Distance.
Tx Focus Distance
Tx Focus Min Distance
Since the PWD line is repeatedly scanned at a high PRF, localized heat is deposited into the tissue. In order to meet the safety limits, the aperture used
for the transmission is reduced. Tx Aperture Cutoff cuts the aperture for PW transmissions. This is to reduce the acoustic output when the default
calculated B-mode transmit aperture is too big for a PW transmission.
Tx Aperture Cutoff
The beam angle for the PWD scan line can be adjusted through:
Steer
The downsampling of the RF data collected from the PWD gate is determined by:
PW RF Decimation
The analog TGC for PWD RF data collection is determined through a number of parameters. The main TGC curve is specified by TGC (see System
Curves). The maximum depth that the TGC curve is used to is determined by Gn Curve Depth. Depths beyond will use the last calculated value of the
curve.
TGC
Gn Curve Depth
A digital TGC is also applied to PWD RF data. The TGC curve is specified by TGC Digital (see System Curves). The maximum depth for the TGC Digital
curve is the same as the analog TGC
TGC Digital
28.1.4 Sequencing
The choice between mono (only PWD) and duplex (PWD and B-mode) sequences are made through Mode. A value of 0 only runs a B-mode sequence.
A value of 1 runs a PWD mono sequence, and a value of two runs a PWD duplex sequence.
Mode
The scan line on which the gate is located is the PWD Line. This line will be repeated in the sequence. The PWD line and the location and span of the
gate are determined through:
PW Line
Gate Depth
Gate Size
When using the interrupted PWD duplex sequences, three parameters determine the sequence of PWD and B-mode scan-lines that are programmed.
The Frames Before Skip is the number of PWD scan lines acquired before a B-mode line is acquired. The Frames Skipped is the number of PWD scan
lines which are skipped to open up time for acquiring B-mode data. The system automatically segments the B-mode image into smaller sectors which
would fit in this interval. The ratio of the PWD scan lines which are acquired to the ones which are skipped is determined by the Interrupt Ratio. As can
be seen the three parameters are dependent by:
Although this dependency is not enforced in the user interface, internally, Frames Before Skip gets determined based on the other two parameters as
shown above.
Interrupt Ratio
Frames Before Skip (Duplex)
Frames Skipped (Duplex)
The repetition period (and thus frequency) of the the scanning for the PWD scan line is determined by:
PRP
61
28.1.5 Processing
The parameters of the wall filter are adjustable. The cutoff frequency, as a percentage of the pulse repetition frequency (one over PRP) is determined by
WF. The wall filter is an IIR filter. The order of the wall filter is 8 by default in the mono mode. In the interrupted duplex (and triplex) mode only, the
order of the filter is determined by WF Order (Duplex) parameter.
WF
WF Order (Duplex)
In the duplex (and triplex) mode, because of the missed PWD scan lines, the wall filter should be adjusted. The order is determined by Num Init
Samples (Duplex WF) and Frames Before Skip. The wall filter is still an IIR filter. Initial in this context means the maximum order of the filter tried for
the filter design. This usually is the filter order, however the design process may end up with a lower order filter. The actual order is determined from:
When the direction of blood flow (long axis of the blood vessel) has an angle with the PWD scan line direction, the measured blood velocity numbers are
the projection of the actual velocity along the scan line. A correction factor (1/cos of the angle) can be applied to get the correct velocities displayed.
Correction Angle
28.1.6 Display
The position of the time axis in the PWD spectrum image can be shifted up and down through Baseline. This also changes the range of speeds
displayed. Note that because of the aliasing in the frequency domain, the PWD spectrum image has a wrap around property. The Invert parameter,
inverts the velocity axis, so positive and negative velocities are switched.
Baseline
Invert
The time-extent of the PWD spectrum image can be changed through Line Repetition Period (LRP). The area showing this image consists of 629 pixels
on my system. If the LRP is set to 10,000 micro seconds, each line in this area represents 10,000 microseconds. The total extent would be 6.29
seconds for my system.
LRP
The layout of the screen (relative position of the B-mode and PWD images) is determined by the provisional Screen Layout. This parameter does not do
anything in this version of the Exam software. The zoom of the B-mode image can be changed through the Initial Zoom. The tint of the PWD image can
be changed through Chroma.
Screen Layout
Initial Zoom
Chroma
Audio Gain
Audio Shift
Audio Mask Num Bit
Audio Filter Size
62
29 GPS Data Collection
In exam clinical mode, both the transducer and needle are position are tracked. The GPS drive bay has four slots for connecting sensors. The first two
slots are designated for GPS-enabled transducers (eg. L14-5/38 or C5-2/60). The last two slots are designated for needles with built in sensors.
To program the correct transducer and needle type that are plugged into the system, go to Menu->Administrator Settings->Sonix GPS. Under SonixGPS
Settings, choose the transducer type (linear or convex) and the needle sensor type (0.9mm, 0.5mm, bracket, eTRAX).
SonixGPS Settings
Once the GPS mode is turned on using the 'GPS' touchscreen button, the display will show the needle and probe position status. The quality indicator
bar on screen will show the worse case between the needle and probe sensor assuming both the devices are plugged in.
63
Probe and Needle Tracking
In research mode, the user has the option to turn off needle tracking to track only the ultrasound transducer. To disable needle tracking, go to the
SonixGPS Settings dialog and check the 'Turn Off Needle Tracking' option. Once Sonix GPS is turned on, only the probe position will be tracked and the
quality indicator on screen will be for the probe.
64
SonixGPS Dialog
65
SonixGPS Dialog
With the SonixGPS add-on, and a GPS-enabled transducer, users of the SonixTOUCH can collect positional information. The user has the option to
save the positional information from both the transducer and needle from the data storage dialog. GPS1 is for the transducer while GPS2 is for the
needle.
66
Data Storage Dialog
The file header of data collected from Ulterius or Exam is the same as other imaging files (link), and the structure for each GPS sample is as follows:
Ultrasonix also provides Matlab code to read the GPS positional data file. It is available for download from the research forum (link)
There are 896 bits per sample, however, this structure is padded with an extra 6 bytes (48 bits) at the end, and should read 0xCCCCCC. Each double is
8 bytes, and the unsigned short is 2 bytes.
All the parameters in GPS coordinate transformation is in mm. The matrix above is a rotation matrix between the receiver coordinate system to the
transmit coordinate system. This matrix is constructed by the A, E, R values provided by the sensor. The x, y, z values for the translation are also saved
in the same file. To reconstruct the whole 3D volume from 2D frames acquired with different rotations/translations, one needs to convert all 2D
ultrasound image pixels to the global transmit coordinate system. This requires:
1. Transfer from the ultrasound coordinate system to the probe receive coordinate system through a probe calibration matrix (see below)
2. Transfer from the probe receive coordinate system to the global transmit coordinate system through the rotation matrix and translation vector.
67
One can assume the transmitter's coordinate system is the world reference coordinate system and that the receiver's coordinate system is the
intermediary "local" coordinate system. The rotation matrix goes from transmit to receive, so the equation used is just x_world = Calibration * x.
1
y
x
If the sensor you are using is different from the calibrated sensor, there is an extra transform will be involved:
RActual = record;
RIdeal = RActual * transformMatrix;
tempVector = RIdeal * transformVector;
pIdeal.a = record.x - tempVector.a;
pIdeal.b = record.y - tempVector.b;
pIdeal.c = record.z - tempVector.c;
Where record is the values you read from the sensor inside the probe.
Then finally, the transmit coordinate can be calculated by: TransPt = RIdeal * Cali * uImpt + pIdeal;
Since each probe may be different, please request the transform Matrix and transform Vector from Ultrasonix.
68
30 ECG
30.1 Overview
The SonixTOUCH Research and Sonix RP may be installed with an ECG that enables synchronization between electrocardiogram signals and
ultrasound images. This feature is especially useful for non-invasive cardiac monitoring. The L&T and Corscience ECG modules are currently supported
on the systems. Before plugging in the ECG device, ensure that the necessary drivers have been installed; more information on this can be found below,
under Driver Installation.
To enable the ECG trace on the interface, ensure the ECG is setup and lead cables are connected. The phased array transducers supporting cardiac
applications (eg. SA4-2/24 and PA7-4/12) will automatically be preset to display the ECG trace; when the research software is running, choose a cardiac
preset from the touchscreen menu or from QSonix.
To display the ECG trace for additional applications, go to the ECG research menu, and ensure the parameter ECG Visible State is set to 1.
Alternatively, presets can be re-programmed with the line <variable id="ecg visible state" value="1"/>, where preset files reside at: C:\Program
Files\Ultrasonix\Exam\Data\presets\imaging.
The ECG trace is displayed below the image. The bottom left of the trace show the lead, gain, and heart rate information. The cable status will show if
there are any leads off or cable unplugged.
ECG Trace
The touchscreen menu includes options for toggling the ECG trace on/off and modifying the ECG baseline position, gain, lead and inverting the trace.
69
Touchscreen ECG Options
1. MCC
2. L&T
3. Corscience
The MCC is no longer supported, the L&T and Corscience models are still supported within the software and Fluctus SDK.
The L&T module is a serial based board that also requires external power. Sampling rate is fixed at 200Hz.
The latest model, Corscience, uses a USB for data transfer and power. Sampling rate is programmable up to 1000Hz.
70
Data Storage with ECG Option
Alternatively, the Ulterius SDK can be used to capture ECG data in real-time.
71
Ulterius Interface for ECG Collection
72
31 Protocol Setup
There is a protocol setup screen which allows for images to be captured during set intervals. Images can be captured at specific time intervals or on part
of the cardiac cycle by triggering on different parts of the ECG signal.
73
32 Visualizing Channel Data
The Sonix research devices have a special program installed that allow users to view the individual channel data in real-time. This software is a
hardware test software, or HwTest, since it also contains additional functionality for various hardware specifics. The Texo SDK contains a demonstration
program, called channels-demo, that also performs the same function as the HwTest software, it may be of interest to run the Texo version, since the
source code is available.
32.1 Startup
1. Ensure that the Sonix research software is closed
2. Run the HwTest program and press the Initialize button to load the system
3. Press the Channel Analysis button to enter the channel view
4. Select the desired transducer from the Probe Selection list on the right
5. Press Run to start running the sequence
32.3 Sequence
74
Note that since parallel channels cannot be captured, the sequence is actually formulated of 32 (Sonix RP) or 64 (SonixTOUCH Research) separate
transmit and receives. With each scanline, a single receive channel is allowed through the beamforming summation, and all other channels are masked
off. By sliding the mask, each channel can be visualized in semi-realtime. One final scanline is done at the end which is not masked and acts as a full
summation of all the channels.
75
33 4d
3D images can be acquired using the 3D/4D software package. To begin acquiring, press the 3D button and select either the 3D or 4D option. Adjust the
yellow box over the region of interest. Press update to begin capture. If the 3D option is selected, the motor will stop after one sweep. When the 4D
option is selected, the motor will continue to sweep until the freeze button is pressed.
Sample volume
76
3D Thumbnail
The .3dd volume file contains the raw 2D images (not scan-converted) used to construct the 3D volume.
The .3dv volume file contains scan-converted 3D volume data.
A Matlab reader for all these data types are provided in the SDK\Matlab folder. For more information see Matlab Imaging Modes.
To construct volume from the .3dd file you need to apply scan conversion in the x-y and y-z planes. An xml file with extension .3dd.xml is saved along
with the volume data. The xml file contains additional volume information which is shown below.
Probe specific parameters that are used for scan conversion (such as probe radius and motor radius) can be found in the probes.xml file located in the
directory C:\Program Files\Ultrasonix\Exam\data\config\. An example for the 4DC7-3 probe is shown below.
77
<radius>27250</radius>
<steps>205</steps>
<homeCorrection>1</homeCorrection>
</motor>
<numElements>128</numElements>
<pinOffset>0</pinOffset>
<pitch>425</pitch>
<radius>40000</radius>
<support>
<freehand3d>0</freehand3d>
<tempAngleSensor>0</tempAngleSensor>
<trus>0</trus>
</support>
<muxWrap>
<Rx>0</Rx>
<Tx>0</Tx>
</muxWrap>
<elevationLength>1.0</elevationLength>
<maxPwPrp>800</maxPwPrp>
<invertedElements>0</invertedElements>
</probe>
78
34 IQ Demodulation
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.
Currently, the low pass filter is an FIR filter and implemented as follows
I = filter( b, 1, I );
Q = filter( b, 1, Q );
where
where
To make the filter band width narrower, set the "cutoff" to zero and increase the "window factor" parameter.
79
34.6 Log compression
Roughly speaking the compression table is as follows
B_dB = 20*log10(Env)
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.
80
35 Introduction
SonixTOUCH
Ultrasound imaging is the art of sending high frequency sound waves (ultrasound) into biological tissue from its surface and recording echos coming
back to the surface from within the tissue and interpreting these echos to form an image.
Ultrasound imaging is considered one of the safest imaging methods, as it does not involve ionizing radiation thus is used as the principle medical
imaging method for obstetrics. The relatively low price of ultrasound machines has made them more accessible than other methods such as magnetic
resonance imaging (MRI). Yet the most significant feature of ultrasound imaging could be its real-time imaging capability, as it can provide the clinician
with a tool to observe the internal organs in real-time.
In this reference, the principles of ultrasound imaging are briefly reviewed for ease of reference with respect to the research tools provided by
Ultrasonix Medical Corporation. For further reading regarding this topic please refer to textbooks on medical ultrasound imaging.
81
36 SonixDAQ
36.1 Introduction
SonixDAQ
The SonixDAQ is a research add-on to Sonix ultrasound systems that allows the user to collect raw pre-beamformed channel data in parallel. This
pre-beamformed data is the raw signal coming from each individual element from the ultrasonic transducer prior to any processing and has proven to be
critical in several ultrasound-based signal processing applications.
Parallel access to pre-beamformed data enables the users to collect ultrasound data in lowest possible level. This allows the users to acquire ultrasound
data at a rate of up to 20,000 frames per second which is 100 times faster than the frame rate on ultrasound systems.
This page is prepared to help the user in order to setup the SonixDAQ and Sonix systems for data collection.
SonixDAQ can also be combined with the Texo SDK that provides full control over the transmit signals. This way custom signals such as plane wave
and angular compounding can be transmitted and corresponding pre-beamform data can be acquired.
82
130-4311 Viking Way
V6V2K9
Tel: 1-604-279-8550
Fax: 1-604-279-8559
83
37 SonixDAQ Hardware
The SonixDAQ
One USB cable,
Two BNC cables, and
A power adapter.
SonixDAQ 1.1
Probe connector
Power supply connector
BNC connectors:
External Trigger
External Clock
USB 2.0 connector
The labels on the device can be used to identify each of the connections. The next section contains figures and instructions for assembling the
SonixDAQ.
Warning: The safety of any assembled system incorporating the SonixDAQ is the responsibility of the assembler of the system.
84
SonixDAQ Probe Connector
SonixDAQ on SonixTouch
Note that for SonixMDP and Sonix RP systems, the two bumpers underneath the probe connectors on the DAQ need to be removed. This is shown in
the figure below:
85
Removing Bumpers
Also on the SonixMDP system the plastic on the bottom needs to be removed. This is shown in the figure below:
86
SonixDAQ on SonixMDP
SonixDAQ BNC Ports, the BNC port on the left is the Sync Signal and the BNC on the right is the clock Signal
87
Sonix RP BNC Ports
Note: Regardless of the sampling frequency of the SonixDAQ, this clock always has to 40MHz. SonixDAQ generates the higher sampling frequency
from this 40MHz clock.
Note: 40MHz clock on the second BNC cable is only available on the SonixTOUCH and the SonixMDP systems. SonixRP systems are not able to
provide the system clock through the BNC cable.
Note: To disconnect the device from the power socket-outlet, unplug the DAQ's power supply from the outlet.
Warning: Mains supply voltage fluctuations are not to exceed 10 percent of the nominal supply voltage.
Input : 100 - 240Vac 5.0A, 110 Vac 5.0A, 220 Vac 5.0A, 50 ? 60 Hz
Output : 12V, 21.67A, 260W max
SonixDAQ:
Operational Temperature:
Operational Humidity:
88
30 to 75% relative humidity
2000 m
Operational Pollution:
degree 2
Installation Category:
Shipping/Storage Conditions:
Shipping/Storage Humidity:
10 to 90% (non-condensing)
Shipping/Storage Pressure:
Note: This device is to be used only with the PSU and medical grade power supply cord provided by Ultrasonix.
Warning: Operate in an indoor environment only, free from moisture, flammable liquids, gases, corrosive substances, strong electrical or magnetic
fields, and equipment that generate high frequency waves. Ultrasonix cannot guarantee the proper performance of the system if used in the above listed
conditions.
Warning: If the equipment is used in a manner not specified by Ultrasonix, the protection provided by the equipment may be impaired.
Inside SonixDAQ
A high-level block diagram of the SonixDAQ is shown below. The orange circles show some of the parameters provided to the user for controlling the
data acquisition. The details of these parameters are given in the SonixDAQ software.
89
SonixDAQ General Block Diagram
A block diagram of the SonixDAQ hardware that provides a detailed description of the signal processing chain and imaging parameters can be found
below. The document shows individual components namely transmit/receive switch, LNA, PGA, AA filter, ... and the parameters which are used to adjust
their performance.
90
Signal Chain
91
Signal Chain
92
Signal Chain
93
Signal Chain
94
Signal Chain
95
Signal Chain
96
Signal Chain
97
38 SonixDAQ Software
The following figure shows the main user interface of the SonixDAQ software. The menu section of this window contains:
Directory : is the path of the collected data and can be used to load acquired channel data
Sequence (the same as the Create Sequence push button): programs the DAQ and opens another window "Sequence Control" which
provides data acquisition options to the user. More detail is given below.
View: to show/hide the frame control in the main window
Help: shows the information about the software version.
Sampling: to select the 80MHz bitstream to be loaded.
Main Window
The channel-by-channel waveform of the collected data (e.g. decrease/increase the time scale),
98
The FFT or FFT average of the data (In case decimation is used during data collection, the same value needs to be set in this window for the
frequency spectrum to show the correct frequencies),
One or more channels (up to 32) on the screen (by adjusting "Channel Scale"), and
Different acquisition frames (by pressing "<<" and ">>").
A sample screen shot of the window when displaying the results is shown below:
Channel Data
Note: By default when clicking on "Create Sequence ..." the 40MHz bitstream will be loaded into the DAQ FPGA. As a result only sampling frequency of
40MHz and lower can be used for data collection. To load the 80MHz bitstream, you need to first click on 80MHz in the Sampling tab prior to clicking on
the "Create Sequence ...". If you do this correctly, a tick should appear beside 80MHz. You can double check this by clicking on the 'Sampling' tap and
seeing the status of the 80MHz. After this step, if you click on the "Create Sequence ..." the 80MHz bitstream will be loaded into DAQ FPGA. Once
programming is finished you should be able to select the 80MHz sampling in the next window.
Note: If you program the DAQ with one bitstream e.g. 40MHz and want to switch to the other bitstream i.e. 80MHz you need to turn off the DAQ and turn
it back on. If you skip this step, the DAQ will always respond as already being initialized and will not load the new bitstream.
After pressing the "Create Sequence" button, the DAQ software will program the DAQ hardware. Once the DAQ is programmed, the "Sequence Control"
window will appear. The Sequence Control window, which is shown below, allows the user to adjust the parameters for data acquisition, start/stop the
sequencing, and download/transfer the captured data to PC.
99
Sequence Control Window
The flowchart of the supported sequence control is depicted in a figure below and will be explained in detail in the following sections.
100
Software Flow Chart
The user can obtain the desired TGC curve in the top section of the window. Both adjustable TGC (as a function of depth) and fixed TGC can be
programmed.
This window allows the user to adjust the imaging parameters such as
Number of Samples: number of samples that will be acquired regardless of the sampling frequency,
Receive Delay: the delay (in micro seconds) after the sync signal and before start of data collection,
Line Duration: duration of each acquisition in micro seconds,
Gain Delay, delay after the transmit before the TGC is applied in micro seconds,
101
Gain Offset, shifts the TGC curve up based on the Gain offset value, the value is in micro volts and it ranges from 0 to 1600 (1.6 Volt
maximum gain),
The effects of these parameters on data acquisition are depicted in a figure below. Further explanations are provided in the next subsections.
Time Line
The parameters either has to be entered manually, or loaded from a file. Note that some combination of the parameters are not supported by the DAQ.
In case "Load From File" option is selected. The first three parameters will be loaded from the file (D:\daq-b.prm). It should be noted that for this option
to work properly, the Sonix system has to write these information to the same file. For this purpose, the "writeDAQparams" has to be set to 1 on the
mouse over menu in the Exam software. For further information refer to Sonix system setup.
In case the "external" synchronization pulse is selected, the Line Duration is determined by the input sync/trigger coming from the Sonix system or
another external triggering system. Also, it is up to the user to ensure that Number of Samples is short enough to fit in between the sync pulses.
Otherwise, the DAQ will miss some of the triggers and unwanted transmits will occur during data acquisition. This is due to the fact that the DAQ will not
look for the trigger signal during data collection. Once predefined number of samples are acquired, the DAQ will wait for the next trigger.
If "internal" synchronization pulse is selected, the DAQ software checks the feasibility of the selected combination of Number of samples, Line Duration
and Receive Delay.
The DAQ has its own internal clock that runs at 40MHz. This clock is different from the Sonix clock. In this section you set the DAQ to use its own
internal clock or to use the external clock provided to the DAQ through a BNC cable. This will make sure that both the DAQ and the Sonix system are
using the same clock. It is important to note that this clock always has to be 40MHz regardless of the sampling frequency. The DAQ uses this 40MHz
clock to generate the sampling frequency (i.e. 40MHz or 80MHz).
For general imaging it is not necessary to use the external clock. Small differences between the two clocks will not introduce any problem. But for
tracking applications (e.g. tissue tracking or blood flow imaging) you should always use the external clock to make sure your data are all synced.
Otherwise, you will notice small drifts over time in your channel data samples.
Note: This option is only available on the Sonix systems with the new PCI card (i.e. SonixTouch, SonixMDP, and modified SonixRP). On the old
SonixRP system only the internal clock should be used.
In this section you select synchronization pulse source: internal or external. The synchronization pulse is a pulse which indicates the beginning of each
acquisition. The user can choose the source of this pulse based on the purpose of the data collection. If the purpose is to test the DAQ, it is not required
to connect the synchronization BNC to the Sonix system?s BNC. The DAQ is capable of generating this pulse internally.
In this scenario, the source of the synchronization pulse must be selected as internal. Also, it is not required to connect the DAQ to the probe slot.
Instead, the DAQ's probe connector can be connected to a signal generator, which generates a wave form with a frequency less than 20MHz and
amplitude less than 50mV.
However, if the goal is to capture synchronized ultrasound data from the Sonix system, the DAQ has to be connected to the Sonix system's probe
connector and DAQ's BNC input signal has to be connected to Sonix's BNC output signal. In this scenario, the source of the synchronization pulse must
be selected as external.
102
38.1.2.5 Channel Mapping
There are four separate boards inside the DAQ. Each board acquires data from 32 channel.
Inside SonixDAQ
Active channels can be any combination of channels from 1 to 128. Next figure shows the active channel selection window.
103
Channel Mapping
This is a digital filter that performs as a DC canceler. The cut off frequency for this filter is 280kHz. The user can bypass this filter by selecting the
Bypass HPF option.
Note: In addition to this digital HPF, the sonixDAQ has anti-aliasing filters as well. The AA filter is a combination of a low pass filter LPF and a high pass
filter HPF. Currently the cut-off values for AA filter are set to be:
In other words the pass band for AA filter is approximately from 0.6MHz to 13.3MHz for sampling frequency of F_sampling = 40MHz. Subsequently, the
pass band for sampling frequency of F_sampling = 80MHz is approximately from 1.2MHz to 26.6MHz.
104
38.1.2.7 Operating Mode
Normal mode: the data is written to the memory (i.e. DDR2) until it gets full. In this mode, the user can choose the max capacity of the
memory.
Free-Run mode: the memory is treated as a ring buffer. In this mode, the user has to press the stop button in order to stop writing the data into
memory before downloading the stored data.
38.1.2.8 Decimation/Sampling
The DAQ FPGA runs at 40MHz but the receive board (rx board) can generate higher clock frequencies (e.g. 80MHz) from the same 40MHz clock. This
will allow the DAQ to sample the data at higher frequencies. Currently both 40MHz and 80MHz samplings are supported by the DAQ.
You can always pre-calculate your frame size as follows: Frame size = number of channels x number of samples x sample size
This means if you set your file size to 8MB you should be able to acquire 16 frames per download. The decimation option allows the user to reduce the
sampling frequency (i.e. down sampling). This option can be used to store more frames on the DAQ. Currently, this is the only parameter that allows the
user to control the sampling frequency as follows:
Note: Decimation is not supported for the 80MHz sampling bitstream. If lower sampling frequencies are of interest 40MHz bitstream should be used
instead. Also, at the moment, decimation only uses down-sampling with no anti-aliasing filter. Thus, setting the sampling frequency too low will result in
aliasing.
The file size allows the user to set the maximum memory size for each board on the DAQ. Since there are four boards on the DAQ, setting the File Size
to 4GB will result in capturing 16GB of channel data. Currently the following options are supported for the File Size:
4GB (divisor = 0)
2GB (divisor = 1, i.e. 4G/2^1 = 2G)
1GB (divisor = 2, i.e. 4G/2^2 = 1G)
...
128K (divisor = 15, i.e. 4G/2^15 = 128K)
Note: due to limited bandwidth of the USB cable, increasing the memory size will result in longer transfer time. Thus, it is recommended to set the file
size lower than the maximum value unless it is necessary.
In this section LNA gain, PGA gain, and the Switch gain can be adjusted. For detailed description of these gains please refer to hardware block diagram.
Note: Setting the Switch gain to 0 will turn off the TR switch. Thus, you will not receive any echo. To acquire data, make sure this gain is set higher than
0.
Note: Maximizing all the gain may cause the TR switch to saturate. Thus, the values have to be adjusted depending on the application.
The write procedure to memory can be terminated by either pressing the stop button or when memory is filled to capacity (only in Normal mode). The
user can download the captured data from DAQ. The following figure shows the download window.
105
Download Window
In the output directory, the ultrasound data is stored in binary files CHZZZ-YYYY.daq, where ZZZ is the channel number from 0 to 127 and YYYY is the
file number. For example, CH000-0000.daq is the first set of data for channel 0, while CH000-0001.daq is the second set of data for channel 0. At the
beginning of each file is a header consisting of two unsigned integers (32 bits each) which contain the number of lines and the number of samples per
line, respectively. The ultrasound samples are 16-bit signed integers, stored in lines after the header.
For example, if the integers are 10 and 1024, respectively, the file contains ten lines of 1024 samples per line, for a total of 10,240 samples. Since the
ultrasound samples are stored in lines, to read the first line of samples one would simply read 1024 * (2 bytes/sample) = 2048 bytes from the file beyond
the header. Each line would be the next 2048 bytes beyond that.
When using the latest version of the SDK (v6.0.1) data that is downloaded to disk from the SonixDAQ using an API function call has a slightly modified
header structure. The header now consists of three 32-bit unsigned integers. The first represents the channel number (0 through 127), the second gives
the number of lines and the third gives the number of samples per line. Moreover, the data file is saved as CHZZZ.daq where ZZZ is the channel
number between 0 and 127.
The following figure shows the main user interface of the SonixDAQ software:
106
The options tab on the top allows the user to adjust the initialization (i.e. sampling rate/frequency) as well as some of the sequencing parameters (e.g.
start and clock configuration)
Once you set the sampling rate, press the Power button. This will start the initialization process. During the initialization a progress bar will be displayed
on the top as a feedback to the user. Once the initialization is complete the Play bottom will be activated allowing the user to run the DAQ.
The right side menu allows the user to adjust most of the sequencing parameters.
107
Sequence Side Menu
Other sequencing parameters such as start and clock configuration can also be modified in the options tab. This version also allows the user to set the
TGC to both fix value and adjustable as a function of depth:
After setting the sequencing parameters, the user can press the Play button to run the DAQ. Note that if you like to change the sampling from 40MHz to
80MHz you need to turn off the DAQ and re-initialized it with the new sample rate. Otherwise the DAQ will keep the previous sampling frequency. Also,
by default the Bias Current is set to 0 which will turf off the receive. To turn it back on you need to set this parameter nonzero.
108
38.2.2 Loading DAQ Data
In order to load previously recorded data the user can click on the Data tab on the top and choose Load from file .... This way, previously recorded DAQ
data can be loaded and displayed.
The following figure shows the main user interface of the SonixDAQ software (6.1):
This version allows the user to visualize the channel Data acquired from the DAQ as an image (right screen) as well as individual channels (left screen).
The user can scroll through different frames using the slider on the top. Sliders on the left can be used to help with visualization of different channels.
One slider sets the start channel for display and the other slider sets the number of channels for display. Slider on the bottom plus the span ratio can
also be used to control the axial zoom for channel display.
DAQ indexing check box on the top also allows the user to see the channel data with daq channel index (checked) or with transducer element index
(unchecked). This option allows the user to visualize the DAQ data such that each channel corresponds to the same element index on the transducer
(i.e. proper image).
109
38.3.2.2 Beamforming
By selecting the Beamforming check box, a parallel beamforming will be applied to the DAQ data to generate the RF image. After beamforming, the user
may need to adjust the digital gain (slider in the center) in order to properly visualize the beamformed signal.
Note: By default the demo software assumes the L14-5/38 for beamforming. In order to make the software compatible with other transducers the users
need to modify the source code and recompile the Demo software.
The software also allows the user to save channel data (or beamformed RF frames when Beamforming check box is checked) into a .rf file with proper
header information. This file can then be processed by the Amplio Demo Program for generating the corresponding B mode images. The save button
will save all the frames into daqData.rf file. This file will be stored in the same folder as the raw data. This option enables the user to generate
beamform DAQ data very fast.
Starting version 6.1, the analog front end's low pass filter's cut-off frequency can be adjusted through the API (This is also known as anti-aliasing filter).
The analog front end's high pass filter's cut-off frequency can also be adjusted through the API.
110
39 SonixDAQ Software V6.X
The SonixDAQ software is separated from the Exam software. This section will only focus on the DAQ software which is used to:
The following figure shows the main user interface of the SonixDAQ software:
Note: If you program the DAQ with one bitstream e.g. 40MHz and want to switch to the other bitstream i.e. 80MHz you need to turn off the DAQ and turn
it back on. If you skip this step, the DAQ will always respond as already being initialized and will not load the new bitstream. Also, by default the Bias
Current is set to 0 which will turf off the receive. To turn it back on you need to set this parameter nonzero.
After pressing the "initialized" button, the DAQ software will program the DAQ hardware. Once the DAQ is programmed, the right side menu allows the
user to adjust the parameters for data acquisition, start/stop the sequencing, and download/transfer the captured data to PC.
111
Sequence Option Tab
Note: If you program the DAQ with one bitstream e.g. 40MHz and want to switch to the other bitstream i.e. 80MHz you need to stop the DAQ and
re-initialized it with the new sample rate. If you skip this step, the DAQ will always respond as already being initialized and will not load the new
bitstream.
The flowchart of the supported sequence control is depicted in a figure below and will be explained in detail in the following sections.
112
Software Flow Chart
The user can obtain the desired TGC curve in the top section of the window. Both adjustable TGC (as a function of depth) and fixed TGC can be
programmed.
113
TGC Curve and Dial
This window allows the user to adjust the imaging parameters such as
Number of Samples: number of samples that will be acquired regardless of the sampling frequency,
Receive Delay: the delay (in micro seconds) after the sync signal and before start of data collection,
Line Duration: duration of each acquisition in micro seconds,
Gain Delay, delay after the transmit before the TGC is applied in micro seconds,
Gain Offset, shifts the TGC curve up based on the Gain offset value, the value is in micro volts and it ranges from 0 to 1600 (1.6 Volt
maximum gain),
The effects of these parameters on data acquisition are depicted in a figure below. Further explanations are provided in the next subsections.
Time Line
The DAQ has its own internal clock that runs at 40MHz. This clock is different from the Sonix clock. In this section you set the DAQ to use its own
internal clock or to use the external clock provided to the DAQ through a BNC cable. This will make sure that both the DAQ and the Sonix system are
using the same clock. It is important to note that this clock always has to be 40MHz regardless of the sampling frequency. The DAQ uses this 40MHz
clock to generate the sampling frequency (i.e. 40MHz or 80MHz).
For general imaging it is not necessary to use the external clock. Small differences between the two clocks will not introduce any problem. But for
tracking applications (e.g. tissue tracking or blood flow imaging) you should always use the external clock to make sure your data are all synced.
Otherwise, you will notice small drifts over time in your channel data samples.
Note: This option is only available on the Sonix systems with the new PCI card (i.e. SonixTouch, SonixMDP, and modified SonixRP). On the old
SonixRP system only the internal clock should be used.
In this section you select synchronization pulse source: internal or external. The synchronization pulse is a pulse which indicates the beginning of each
acquisition. The user can choose the source of this pulse based on the purpose of the data collection. If the purpose is to test the DAQ, it is not required
to connect the synchronization BNC to the Sonix system?s BNC. The DAQ is capable of generating this pulse internally.
In this scenario, the source of the synchronization pulse must be selected as internal. Also, it is not required to connect the DAQ to the probe slot.
Instead, the DAQ's probe connector can be connected to a signal generator, which generates a wave form with a frequency less than 20MHz and
amplitude less than 50mV.
There are four separate boards inside the DAQ. Each board acquires data from 32 channel.
114
Inside SonixDAQ
Active channels can be any combination of channels from 1 to 128. Next figure shows the active channel selection window.
115
Channel Mapping
The following figure shows the main user interface of the SonixDAQ software (6.1):
116
39.2.2 Additional Features
This version allows the user to visualize the channel Data acquired from the DAQ as an image (right screen) as well as individual channels (left screen).
The user can scroll through different frames using the slider on the top. Sliders on the left can be used to help with visualization of different channels.
One slider sets the start channel for display and the other slider sets the number of channels for display. Slider on the bottom plus the span ratio can
also be used to control the axial zoom for channel display. By selecting the Beamforming check box, a parallel beamforming will be applied to the DAQ
data to generate the RF image.
The software also allows the user to save these Channel data (or beamformed RF frames when check box is selected) into a .rf file with proper header
information such that it can be processed by the Amplio Demo Program for generating the corresponding B mode images. The save button will save all
the frames into daqData.rf file in the same folder as that raw data have been acquired. This option enables the user to beamform DAQ data a lot faster
than Matlab.
DAQ indexing check box on the top allows the user to see the channel data a) with transducer element index or b) daq channel index. This option can
be used for debugging to see if a specific board on the DAQ is not functioning properly.
Note: By default the demo software assumes a linear transducer for beamforming. In order to make the software compatible with other transducers the
users need to modify the source code and recompile the Demo software.
117
40 SonixDAQ Installation
Select the Install from a list ... and press Next. In the next window select the Include this location ....
Currently there are two versions of the DAQ which are supported. The first model is called 1.0 and does not have the LED status indicator on the top
(black tape). The newer model is called 1.1 and has the LED status indicator which turns on as you program the DAQ. It is important to make sure that
correct driver is selected at this step. To simplify the installation the two drivers are placed in separate folders:
For DAQ version 1.0, set the driver path to be the same as yourfolder\usb\1.0\ (e.g. D:\daqcontrol-1.2\usb\1.0\),
For DAQ version 1.1, set the driver path to be the same as yourfolder\usb\1.1\ (e.g. D:\daqcontrol-1.2\usb\1.1\).
118
DAQ Control Software
The installation should start shortly. Once installation is complete, press Finish.
119
Finished Installation Window
In order to confirm proper installation of the DAQ, go to the Control panel -> system -> hardware -> device manager->Universal Serial Bus Controller.
You should see Ultrasonix DAQ Cube as a new device on your system. Right click on Ultrasonix DAQ Cube and select properties. In the details tab the
product ID (PID) should be as follows:
For the DAQ version 1.0 this number should be 1004 and
For the DAQ version 1.1 it should be 1005.
Device Manager
Connect the DAQ and remove its drivers from your system. You can do that from the device manager.
Go to the windows\system32\drivers folder and manually remove one file and one folder associated with the cypress driver (cy*.*) i.e. cyMon
and CyUsb.
If you are installing the DAQ on one of the Ultrasonix ultrasound systems such as SonixTouch, SonixTablet, or Modulo go to the
\Install_DAQ_on_a_Sonix_Ultrasound_Machine\ folder.
120
If your system has 32 bit WindowsXP (systems shipped prior to 2014) go to the \x86(WindowsXP)\ folder.
If your system has 64 bit Windows7 (2014 and newer) go to the \x64(Windows7-64bit)\ folder.
If you are installing the DAQ on a stand-alone PC, like your personal laptop go to the \Install_DAQ_on_a_Generic_PC\ folder.
If your O/S is 32 bit, go to the .\x86(WindowsXP)(Widnows7-32bit)\ folder.
If your O/S is 64 bit, go to the .\x64(Windows7-64bit)(Windows8-64bit)\ folder.
Run the appropriate installer, based on the version of the DAQ that you have. All newer DAQs are 1.1. These DAQs come with a black sticker on the top
with LEDs underneath it that will light up once the DAQ is programmed. The older DAQs without the black sticker and LEDs are 1.0. Connect the DAQ
to a USB port and turn it on. You should see "Uninitialized Sonix DAQ Cube" appear under the "windriver" in the device manager.
Note: In case you see a red cross on the driver, turn the DAQ off, choose a different USB slot, and turn the DAQ back on.
The default DLL is for 32bit so you can skip this step if you are running on 32 bit OS otherwise go to the \sdk\bin\ folder and delete the existing
wdapi1120.dll.
121
41 SonixDAQ Quick Test
41.1 Overview
The section outlines the procedure to test the SonixDAQ for collecting synchronized data.
The following section shows the list of all the parameters on the Sonix Exam (version 3.x) that need to be adjusted prior to the data collection.
Run the Exam software on the Sonix system. Switch to the standard B-mode imaging and enable the research mode.
Once the Exam software is running, on the left mouse-over menu adjust the following parameters:
Open Connector ->3 : This will open the 3rd connector (i.e. the last connector) so that the DAQ can see the signals from individual
channels to the DAQ probe connector.
Output Sync ->1 : This will activate the output synchronization signal on the Sonix's BNC connector. The DAQ will use this signal as
a trigger to start the acquisition after each transmit.
Focus Count -> 1: This will make sure only one transmit is used for each scan line/channel acquisition.
Write DAQ -> 1 : This will force the Sonix Exam to write the DAQ parameters (i.e. line duration, number of samples, and receive
delay) into a binary file (D:\daq-b.prm). This file can then be used in the DAQ software to load data acquisition parameters
automatically. This step is optional and the parameters can also be entered manually in the DAQ software.
It is important to note that the signal will be the same for both the probe connector and DAQ probe connector. The DAQ will capture the channel data in
a parallel form without affecting the signal in the probe connector. Thus the standard imaging process remains untouched during channel data
acquisition.
122
SonixRP Exam Menu
It should be noted that SonixDAQ is only an acquisition/receive module and has not control over the transmits. Thus, all the parameters that have any
effect on the transmit sequence need to be set properly prior to data acquisition. The following figure shows the list of all the parameters and their
category on the Sonix Exam (version 5.x) that need to be adjusted prior to the data collection.
123
SonixTouch Exam Menu
In Category B-TX
Set ?TX Aperture Max? to 64: Transmit with all the elements. Note that this number is half aperture. Thus setting it to 64 will result
in aperture size of 128.
Set ?Pulse Repeat? to 1: Transmit only one pulse. This pulse is defined by ?pulse index?. For example if pulse index is 0 i.e. +-
setting ?Pulse Repeat? to 4 will change the transmit pulse to +-+-+-+-.
Set ?Plane Wave? to 1: Centers the aperture and sets all the transmit time delays to zero to generate unfocused plane wave
transmits. If this parameter is set to zero the aperture center will move across the image similar to standard imaging. Also focusing
time delays will be applied to all transmits.
In Category B-GEOM
Set ?Line Density? to 128: Force the exam to work with true elements instead of virtual elements.
In Category B-FOC
Set ?focusCount? to 1: Force Exam to fire only one transmit for each receive data. Otherwise, you will see secondary transmits in
the middle of your received data.
In Category SYNC
Set ?Trigger Out A? to 1: Sends Synchronization signal to the BNC cable for the DAQ where 1 means one trigger after each
transmit, 2 means one trigger after each frame i.e. after every 128 transmits.
Set ?Trigger Out B? to 3: Sends 40MHz Clock signal to the other BNC cable that can be used by the DAQ. Note that this step is
optional and the DAQ can use its own internal clock. If you prefer to use the internal clock set this parameter to 0 and also in the
DAQ SDK set the ?clock configuration? to be internal.
In Category DAQ
Set ?Open Connector? to 3: Opens the third connector on the SonixTouch so that the DAQ can listen and capture the echo
signals as well as the probe itself.
Set ?DAQ Output? to 1 (Writes the DAQ parameters into a file so that DAQSDK can use them. Note that this is optional. In case the
user wants to enter the parameters manually this parameter does not need to be adjusted.
Note: The parameters which are bold are important and have to be set for proper data collection. Other parameters are optional and can be
changed/ignored depending on the application. For more information, please see the explanation for each individual parameter in front of it.
124
41.3.3 Software 6.x
Starting Software version 6.x, dedicated DAQ demo and Texo_DAQ_QT demo are provided in the SDK folder that allows real-time imaging with the
DAQ. These demo software are the simplest way to test the DAQ without having to use the Exam. For more information please check the SonixDAQ
Software (real-time).
BNC Output
125
DAQ 1.1 After Initialization
Once DAQ is initialized and the FPGAs on the DAQ are programmed, the "Sequencer Window" shows up as shown below.
Select Load From File. This option will only work if you have previously set the Exam software to save the DAQ parameters (i.e.
SaveDaqParam ->1 in the Exam software). Alternatively you can enter the parameters manually.
Select all the channels.
Set the Start Configuration to external. This will force the DAQ to wait for the trigger signal before starting the data acquisition. For
this mode to work properly the trigger signal should be available (i.e. Sync Out ->1 in the Exam Software).
Set the DDR2 Size to be 8MB (instead of 4GB). This will significantly reduce the time required to transfer the data from the DAQ
back to the PC.
Press the Start Sequencing. If the test works fine the buffer will be filled with data very soon an you will see All RX buffers have been filled
message in the Status box, other wise you will see RX buffer 1 is not full yet.
Once data are acquired, transfer/save the data by pressing Download Data.
Once data are downloaded, look at the results using the Main window in the DAQ software (please see the DAQ software Section for this).
Alternatively, provided Matlab subroutines can be used to load the channel data into Matlab environment.
126
DAQ Parameter Menu
41.6 Notes
Make sure during the data collection that the Exam software is running and is not frozen. If the software is frozen, SonixDAQ will not receive
the trigger signal and will not collect any data and the message RX buffer 1 is not full yet will remain in the Status box.
In case you always receive the message RX buffer is not full yet, change the Start Configuration to be internal and repeat the data acquisition.
This will force the DAQ to collect data without waiting for the sync signal. If with this modification you can collect data, it means that the sync
signal is not meeting the predefined specifications. This is either due to using wrong BNC output for the sync signal or improper PCI card
modification.
127
42 SonixDAQ Software (SDK)
42.1 Introduction
As mentioned before the DAQ is only a receive module and has no control over the transmit. The DAQ SDK uses Texo SDK in order to provide full
control over the transmit. This way the transmit sequence can be customized using the Texo and the corresponding pre-beamformed channel data can
be received using the DAQ.
42.2.1 Initialization
The DAQ SDK is very similar to the Texo SDK. First, both DAQ and Texo need to be initialized. For proper initialization of the Texo refer to Texo SDK
documentation.
The following code initializes the DAQ. The code first checks to see if the DAQ is connected or not. If connected, the software checks to see if the DAQ
has already been programmed or not. If programmed, the software will skip the initialization. Otherwise it will start the programming.
For proper initialization of the DAQ make sure DAQ_FIRMWARE_PATH is referring to the correct path for the DAQ firmware
Note: Inside the fw folder there are different folders for different versions of the DAQ. The software will automatically use the correct folder. Thus, sub
folders should not be included in the firmware path.
The variable sampling_80MHz tells the DAQ either to load the 80MHz sampling bitstream or original 40MHz sampling bitstream. To see this better, if
you check inside the firmware folder, you can see that there are two RX bitsreams. One is called daqrx.bit and the other is called daqrx80.bit.
If sampling_80MHz = true, the DAQ will load the 80MHz sampling bitstream.
If sampling_80MHz = false, the DAQ will load the 40MHz sampling bitstream.
daq = sonixdaq::getInstance();
if (!daq->isConnected())
{
printf("DAQ not connected or off\n");
scanf("%c", &sel);
return -1;
}
else
{
printf("is connected ... ");
}
if (!daq->isInitialized())
{
daq->setFirmwarePath(DAQ_FIRMWARE_PATH);
printf("Programming ... ");
if (!daq->init(sampling_80MHz))
{
printf(daq->getLastError().c_str());
scanf("%c", &sel);
return -1;
}
printf("Done\n\n");
}
tex.setSyncSignals(0, 1, 3);
This line sets up the synchronization pulses for BNC cables. The inputs for setSyncSignals are as follows
128
The above setting sets the Sonix to send line Trigger (i.e. 1) to the first BNC output and 40MHz clock (i.e. 3) to the second BNC output. For further
information refer to Texo SDK.
Note: Clock output is only available on the SonixTouch and Upgraded SonixRP systems.
Note: Setting the output trigger to 2 will activate the frame trigger instead of line trigger. For further information check the Texo SDK.
The last step in the initialization is to open up the DAQ connector. Assuming that the DAQ is connected to the lower probe connector i.e. 3, the following
code will open the 3rd connector so that it can listen to the same echoes that are coming back from the transducer simultaneously
tex.forceConnector(3);
After initialization, a probe needs to be selected and a transmit sequence needs to be loaded into the hardware. These steps are very similar to
programming Texo SDK. Some custom transmit sequences are provided as examples. These include: fixed plane wave transmit and transmits with
sliding aperture.
Once you trigger run function, both Texo and DAQ will start the data collection simultaneously. For each transmit, Texo will collect one beamformed
scan line and DAQ will collect pre-beamformed channel data corresponding to the same transmit.
Following data collection you can save the data. Once you enter the folder name, the DAQ data will be recorded in the following address:
D:\\DAQDATA\\myfolder
The corresponding texo data will also be recorded in the same folder with the name data.txo.
seqprms.freeRun = false;
seqprms.hpfBypass = false;
seqprms.divisor = 10; // data size = 16GB / 2^divisor
seqprms.externalTrigger = true;
seqprms.externalClock = false; // set to true if external clock is provided
seqprms.lnaGain = 1; // 16dB, 18dB, 21dB
seqprms.pgaGain = 1; // 21dB, 24dB, 27dB, 30dB
seqprms.biasCurrent = 1; // 0,1,2,...,7
...
129
biasCurrent: switch gain [0:1:7] where 0 completely turns off the switch.
fixedTGC: defines whether the DAQ should use flat TGC or adjustable TGC.
fixedTGCLevel: [0:1:100] fixed TGC value. This value is only used if fixedTGC parameter is set to be true.
TGCcurve: If fixedTGC is set to be false, a TGC curve needs to be defined. Currently, this curve is defines by 3 points with X, Y values
ranging from 0 to 1 where 1 corresponds to maximum value of TGC for Y and maximum acquisition depth for X.
if (seqprms.fixedTGC)
{
seqprms.fixedTGCLevel = 100;
}
else
{
// set TGC curve
tgc.setX(0, 0.0f);
tgc.setX(1, 0.5f);
tgc.setX(2, 0.8f);
tgc.setY(0, 1.0f);
tgc.setY(1, 1.0f);
tgc.setY(2, 1.0f);
}
The following two parameters control the sampling frequency of the DAQ data: sampling, decimation. Setting the boolean variable parameters
sampling_80MHz will take care of sampling frequency in the code as follows:
130
43 SonixDAQ Software (real-time)
This Demo software is a combination of three SDKs namely Texo, Amplio, and DAQ. SDK 6.X comes with executable Texo Daq Demo file
located at \sdk\bin\texo_daq_qt.exe. Alternately, Qt Creator can be used to compile the GUI demo using the steps provided at the Qt Creator page.
Following regular B-mode imaging, the trigger is turned on for the plane wave to trigger the DAQ for channel data acquisition. For plane wave transmit,
the acquisition depth in the Texo is set to be zero. This forces the Texo not receive any data corresponding to plane waves. This way, the two parts
(conventional B-mode imaging with Texo and Plane wave imaging with DAQ) is completely separated. Following data acquisition, the Amplio SDK is
used to generate the B-mode image from the rf data for both Texo and DAQ data.
43.5 Interface
The following figures show the main user interface of the Texo Demo Qt software (6.1) when
131
132
The image on the right is coming from the Texo (Sonix System) and the image on the left is coming from the DAQ. Note that the DAQ data acquisition is
pseudo real-time since the DAQ first collects a certain buffer (e.g. 16MB) and then transfers it to the PC through the USB cable. To have true real-time
stream from the DAQ to PC we need much higher bandwidth than what USB offers (e.g. using PCI express card) which requires complete hardware
redesign.
The user can scroll through different Texo frames when the imaging is stopped using the cine scroll.
The software also allows the user to store the RF data from Texo into .rf files with proper header information when the imaging is stopped.
This stored .rf file can then be processed by the Amplio Demo Program for generating B-mode images off-line. The save button will save all
the frames in the buffer into TexoData.rf file in the same folder as the executable file.
43.7 Licensing
Starting version 6.1, Texo will require a license to function properly.
133
Texo looks into the following address to locate its license \sdk610\texo\dat\licenses_web.txt. This is different from the licensing path that you use for
your Exam. So you need to make sure to copy and past your Exam license string into this file.
Note: You need to press an enter in the end. Otherwise the software will not be able to read your license.
134
44 SonixDAQ Receive Bandwidth
135
45 SDK 6.1.x
The receive bandwidth of the DAQ can now be adjusted through the daq API. The low pass filter (anti-aliasing) cut-off frequency can be set through
daqSequencePrms.lowPassFilterCutOff as a function of sampling frequency (which is either 40 or 80 MHz). The high pass filter (removes the DC)
cut-off frequency can be set through daqSequencePrms.highPassFilterCutOff as a function of low pass filter's cut-off frequency. Please see the
daq_def.h file for more details.
136
46 SDK 6.0.x
Continuous wave sinusoidal signal was inject to all the channels at the same time,
The amplitude of the signal was set to be 20 mVpp for each channel (peak to peak),
The frequency of the signal was changed from 1MHz to 20MHz in steps of 1MHz for 40MHz sampling and from 1MHz to 40MHz in steps of
1MHz for 80MHz sampling.
For each frequency, the signal was injected into the DAQ connector. The channel data corresponding to each signal was then recorded for off-line
processing. This process was repeated for all the frequencies. In all the experiments, the decimation was set to be zero.
The estimated transfer function for both 40MHz sampling and 80MHz sampling are shown in the figure below. The results are displayed in dB. Separate
normalization was used for each graph.
137
SonixDAQ with 80MHz sampling.
46.3 Remarks
DAQ with 40MHz sampling
138
47 Receiving Ultrasound Data
As an ultrasound pulse propagates in the tissue, it interacts with organs and cellular structures. As a result of this interaction, part of the ultrasound
energy is reflected back towards the transducer. This is the so-called ultrasound echo. The transducer converts this mechanical energy into an electrical
signal.
The signal processing pipeline for the ultrasound echo consists of three main steps:
Pre-beam forming data processing: This includes analog signal conditioning and adjusting the temporal shape of the ultrasound data
collected by individual transducer elements.
Beam forming: This step combines the signals from the transducers elements in the aperture into a single echo signal which is focused at
different spatial locations.
Post-beam formed data processing: This step further adjusts the temporal shape of the combined ultrasound data.
The transmitted ultrasound pulse typically consists of a short duration (one or a few cycles) sinusoid. As soon as this pulse enters tissue, echos start
getting back to the transducer. As the transmitted pulse travels deeper and deeper into tissue, weaker and weaker echos keep getting back to the
transducer. Therefore, unlike the transmitted pulse, the echo signal is not of a short duration. As a matter of fact, the echo looks like a continuous
sinusoids whose amplitude and phase are changing over time. Because of the similarity of the temporal shape of the echo signal to the temporal shape
of Radio Frequency (RF) signals used in telecommunications, the echo signal is called the RF Signal and the received ultrasound data by the
transducers, the RF data in the jargon of ultrasound imaging.
In addition to the attenuation of the ultrasound by tissue, which manifests itself as a decreasing amplitude in the RF data, a second major effect is
present in the RF data. This is the downshifting of the carrier frequency.
After the ultrasound pulse has been transmitted, the transducers are electronically switched from transmit to receive. The Sonix will then start recording
the RF data and after some time, stop recording them. The start time and stop time for recording the RF data are both adjustable.
139
The RF data is always sampled at the sampling rate determined by the clock cycle of the system, typically 20, 40, or 80 MHz. However, the data can be
downsampled before being returned to the research users. The downsampling is determined by a decimation factor. The data will be downsampled by
a factor of 2^decimation factor.
Also see:
Gain Engine
Texo Parameters for RF Data Shaping
Exam Parameters for RF Data Shaping:
Through B-GAIN
Through CDI-GAIN
Through CDI-GEOM
As with the transmit of ultrasound pulses, a single element transducer usually has a wide field of view. That means when the ultrasound pulse bounces
back from different reflectors that are located at the same distance from the transducer, all of the echos arrive at the transducer at the same time.
Therefore it would be impossible to distinguish between these reflectors by using the RF data collected by the transducer.
It is ideal that the ultrasound transducer would only see the reflectors that are located on a narrow beam right in front of it. The RF data from such a
transducer can be used to generate an image of the tissue features on a narrow line. An array of such transducers would generate a plane image, for
instance. As with the transmit of ultrasound pulses, techniques that are used to narrow the field of view of the transducer are called beam forming, or
receive beam forming in this case. The two common ways to do so are through physical lenses and electronic beam forming.
One way to narrow the field of view to a smaller area is through the use of physical lenses. Just as an optical lens can be used to focus the optics on a
focal zone at a certain distance, an ultrasound lens, attached to the transducer surface can narrow the field of view and focus it on a certain zone. This
is called mechanical focusing.
140
A second way to narrow the field of view is through the use of multiple transducers. This technique is called electronic beam forming. The next figure
shows the concept. Five transducer elements are placed side-by-side. For simplicity, let us assume that there is no interaction between the emitted
ultrasound pulse and the medium, except from a reflection off the single reflector shown in the figure. As can be seen in this figure, the reflected waves
from this reflector arrive at the transducers at different times, because of the difference in the distance from the reflector to the individual transducers.
The RF data collected by each transducer shows a pulse at a different time. These are called the pre-beam forming RF data. To focus the received
data on the reflector, the pre-beam forming RF data are shifted in time so that the pulses are matched. Then the signals are added. The resulting signal
is the beam formed RF data.
As one might notice, there is a caveat in this simplified scenario. we do not know where the reflector is (otherwise we wouldn't be imaging it), so we
cannot possibly know how much to shift each of the RF data to get the pulses to match. The key here is to note that we can not possibly be focusing the
ultrasound beam on the reflector. The ultrasound beam is out of our hands, and we do not know the location of the reflector. What we can do is to
focus the pre-beam forming RF data on a specific point in space.
The pre-beam forming RF data which are also called Channel Data are acquired and stored in some memory by the ultrasound machine. The receive
beam forming consists mostly of computational methods to process this data. We first choose a certain point in space (the focal point). Then we
calculate the distances hrom the focus point to the individual transducers. These distances are converted to individual time delays for each transducer
element by dividing them by the speed of sound (1540 m/s in soft tissue). The pre-beam forming RF data which is residing in the memory is then shifted
by its corresponding calculated delay, and then the signals are summed. The resulting sum is the beam formed RF data.
Now if the reflector happens to be at our chosen focal point, it will show up in the beam formed RF data as a big spike. In this case, we say the
reflector is in focus. If the reflector is not at our focal point, it will have a blurry appearance on the beam formed RF data.
From this explanation it is clear that we have a choice on where to focus the data. Ideally we would like to focus the data at all the points in the image,
one point at a time, to get a clear image at all points. This is one of the main advantages of electronic focusing over mechanical focusing. It is in fact
possible, provided that we have:
enough memory to store all the channel data (pre-beam forming RF data)
enough bandwidth to transport the data hrom memory to a processing unit and back
enough processing capability to do all the beam forming calculations repeatedly for individual points.
Focusing the ultrasound data at all points throughout the image is called dynamic receive focusing, or dynamic receive beam forming.
In older ultrasound machines, due to hardware limitations, typically a fixed receive focusing was performed. In that scheme, a fixed point located at the
center of the elements (center of the aperture) at a selected focal depth was used for the bream forming calculations.
SonixDAQ is our platform for collecting pre-beam formed RF data (channel data). It can be used together with our other Sonix platforms, or as a
separate module for collecting RF data. However, SonixDAQ does not perform any computation, in particular beam forming, on the RF data.
The Sonix platforms calculate the beam formed RF data by performing a delay and sum algorithm on the pre-beam forming RF data, as described
above.
The relative delays for different elements can be determined either automatically, or (manually) by the researcher. In the case of automatic delays, a
focal depth needs to be specified for the Sonix software. The Sonix Software then calculates the delays that would focus the RF data at the specified
depth.
141
In the case of manual time delays, the researcher can specify the time delays (needless to say, as a multiple of the clock cycle of the system).
Another adjustable parameter is the aperture, which determines how many elements will be involved in the acquisition of the RF data. These elements
will always be chosen evenly on both sides of the center element.
See also:
The user can adjust the TGC curve by using a set of sliders on the console of the system. Also the overall gain is adjustable by the user.
Also see:
Gain Engine
RF data Filtering in versions prior to 6.0.x
Texo Parameters for RF Data Shaping
Exam Parameters for RF Data Shaping:
Through B-GAIN
Note that in versions of the software and firmware after 6.0.x the beam formed RF data is not filtered except when it is processed for computing
ultrasound images such as the B-Mode images. The filtering is done in the base band in the IQ Demodulation process. The Exam parameters for IQ
Demodulation are described here.
142
48 SDK Overview
Ultrasonix provides many Software Development Kits (SDK's) that can be used for research and development. This page contains a short list of the
SDK's and brief descriptions of their functionality.
48.1 Imaging
48.1.1 Ulterius
The Ulterius SDK allows users to connect to the research interface software through a TCP/IP connection. The client program can run on the ultrasound
system itself or on a remote PC. Some of the advantages to using Ulterius include: access to real-time data, full control over all imaging parameters, and
ability to inject processed data back into the system.
48.1.2 Texo
Texo allows researchers to program the ultrasound system for maximum research capability. It goes beyond standard data collection and parameter
modification by giving very low-level control over beamforming parameters. Texo can be used to create custom firing sequences; for instance, with the
standard research software or Ulterius, sequences are limited to pre-defined sector sizes that always move sequentially from one side to the other.
These sequences cannot be programmed with parameters such as transmit pulse or aperture size which are unique for each scanline. Texo overcomes
this limitation by giving the user full control over the sequence of firings, providing adjustable per-scanline parameters such as transmit frequency, pulse
shape and length, and by allowing different data types to be collected from within a single scan.
48.1.3 Porta
The Porta SDK is more of an OEM tool for commercial software; however, it also has uses for research. Porta is the base of all clinical Sonix software,
and is used to drive the core part of the imaging system. The idea behind releasing Porta is for customers to be able to create their own commercial or
pre-commercial ultrasound solutions, namely the systems that run the GUI and processing algorithms, while having all the imaging functionality that the
ultrasound electronics provides.
48.1.4 Propello
The Propello SDK is used for 3D/4D imaging. This SDK enables the user to control the motor and acquire 3D B-mode, RF, and Doppler data.
48.1.5 Amplio
Amplio is a tool used to process ultrasound data, starting at the RF level through the processing chain of an interpolated ultrasound image. It uses the
patented fast scan conversion algorithm designed by Ultrasonix, as well as unique CPU based high-performance image enhancement methods.
48.2.1 Impero
The Impero SDK can be used to connect to the Sonix RP console and receive button and slider events from the ultrasound machine. Currently, the SDK
supports simple console initialization, event listeners for TGC, push button and dials, alphanumeric keypad backlight control and LED state and colour
control. Using the Impero SDK together with the Porta or Texo SDKs, users can customize their own functions for the ultrasound machine.
48.2.2 Fluctus
Fluctus allows for control of ECG devices. This SDK currently supports MCC, L&T, and Corscience ECG modules. Besides standard data collection,
additional features such as peak detection, and signal filtering are provided for easy data analysis. If used in conjunction with the Porta or Texo SDKs,
users can create their own solutions for cardiac monitoring.
143
49 Amplio
49.1 Overview
The Amplio SDK can be used to generate greyscale B-mode data from raw RF data, scan convert greyscale data, and apply speckle reduction post
processing algorithms. In the past, 3 separate SDK's were used for this purpose (Amplio, Pando, and Mucro). Starting ver 6.x all these SDKs are
combined into one and are name Amplio.
RF to B conversion
Speckle Reduction
Scan Conversion
49.3.1 RF to B
This function allows the user to create pre-scan conversion 8 bit B-image from the 16bit RF-image. This is done by applying the following signal
processing steps:
IQ demodulation: this step mixes the RF signal with since and cosine table for IQ demodulation. The start and end frequency for this tables
need to be entered during the initialization step.
Low pass filtering: this steps applies an FIR filter in order to remove the high frequency signal which appears after mixing.
Envelope detection: this step calculates the envelope signal from the low pass filtered IQ signals.
Log compression: following envelope detection, the 16bit data go through a compression table to create the final 8bit B image.
Decimation: this steps is applied to reduce the sampling frequency of the B.
Note: The frequency compounding method which was used in Amplio ver 5.x is no longer used in the ver 6.x. Instead, IQ demodulation with adjustable
demodulation frequency is used to allow smooth transition from one frequency to another.
Unprocessed image
144
Processed image
Amplio's speckle reduction processing is ideal for custom programs built with Texo or other programs that generate raw data, where generated or
captured B images need to be enhanced. The methods can also be used to take output of MATLAB processed images and enhance them using a fast
and tested method.
The internal functions use the same engine run in the Sonix software, built on fast assembly and intrinsic functions. On the Exam software, Speckle
Reduction is denoted as the Clarity setting on the main screen. Below is an example of and unprocessed and scan-converted B mode image, and the
effect of the filter.
49.3.2.1 CV
The default filter is based on the 3rd party technology, GOPView, from ContextVision. GOPView requires special activation of a license for the system
that Amplio speckle reduction functions are being run on.
Dongle activation:
GOPView requires a dongle that plugs into the parallel port. If the Sonix system did not come with a dongle, Mucro 2.x should be used
instead.
Obtain the serial number from the physical dongle, and provide it to Ultrasonix support; a string character key will be sent.
At the Ultrasonix Support website, download the ContextVision dongle driver and run the executable. This will ensure the dongle can be
recognized by Windows.
From the same website download the Clarity Registration package, and follow the steps below:
Ensure you have the dongle plugged into the parallel port
Extract the cvliccon.exe program contained in this package and ensure that the .def and .dll files are in the same directory as the
executable.
From a command prompt, go to the directory you placed the files and run: cvliccon <dongle-key>, where the dongle-key is the string
provided by the Ultrasonix support team.
49.3.2.2 ASR
Ultrasonix also has a home-brew speckle reduction algorithm named Adaptive Speckle Reduction (ASR). Starting Exam 6.1. ASR is used as the main
speckle reduction algorithm for B-mode image.
Amplio's scan conversion (or interpolation) methods help to convert linear B scan data into geometrically correct images. The methods are the same
used in the Sonix software, built on fast assembly and intrinsic functions.
Pando is ideal for custom programs built with Texo or other programs that generate raw data, where generated or captured greyscale linear B scan data
needs to be interpolated. The functions can also be used to take output of MATLAB processed images and scan convert them using a fast and tested
method.
Scan conversion is the process of taking linear data and interpolating into a different coordinate system. For the case of ultrasound, scanline greyscale
data conversion to pixel based greyscale data.
145
Scan Conversion Imaging Blocks
Alternately, Qt Creator can be used to compile the GUI demo using the steps provided at the Qt Creator page.
The demo can be used to process and RF data and generate all the B data both before and after scan conversion. In order to apply it on a set of RF
data:
press the power bottom to top ans locate your .rf data
press the play bottom to run amplio
to change any of the parameter just manually enter them and press Apply Param and press the Play bottom again.
This demo software will generate all the output files and save them into separate file with a proper header in the same folder
The demo software processes/saves all the frames in the file. The user can scroll through the frames by moving the cursor on the bottom of the demo
software.
The following figures also show the correct parameters for proper signal processing and scan conversion for Linear, Convex, and Phased array
transducers.
146
Amplio Qt Demo (Linear Transducer)
147
Amplio Qt Demo (Phased Array Transducer)
148
50 SDK Download
149
51 Fluctus
51.1 Overview
Fluctus is an SDK for connecting to the ECG unit on a Sonix system (note that SonixTOUCH Research comes standard with ECG, but not Sonix RP).
Programs using Fluctus should not run while the Sonix research interface software is running, as the port will be held by the software and not available
to Fluctus.
Fluctus is ideal for custom programs built with Texo or Porta that require the use of ECG gating or trace capture during imaging or the acquisition of
images and raw data. The Sonix research platform supports the use of the L&T and Corscience ECG modules.
51.2 Programming
The following show the settings that are supported by each ECG module type. The pseudo-code below shows how to initialize and modify the ecg
parameters.
enum ecgVersion
{
////////////////////////////////////////////////////////////////////////////////
/// L&T ECG
/// Supports:
/// \li Selectable lead retrieval (I, II, III, STD)
/// \li 3 Gain levels
/// \li Fixed 200 Hz sampling rate
/// \li Lead off / cable off detection
/// \li Pulse rate values
/// \li Arrhythmia values
////////////////////////////////////////////////////////////////////////////////
ecgVersionLT = 2,
////////////////////////////////////////////////////////////////////////////////
/// Corscience ECG
/// \par
/// Supports:
/// \li Selectable lead retrieval (II and III)
/// \li Programmable sampling rates
/// \li Lead off / cable off detection
/// \li Pulse rate values
/// \li Arrhythmia values
////////////////////////////////////////////////////////////////////////////////
ecgVersionCorscience = 3
};
////////////////////////////////////////////////////////////////////////////////
/// ECG Information Codes
////////////////////////////////////////////////////////////////////////////////
enum ecgInformation
{
////////////////////////////////////////////////////////////////////////////////
/// Used internally.
////////////////////////////////////////////////////////////////////////////////
ecgUnknown = 0,
////////////////////////////////////////////////////////////////////////////////
/// Lead data message
/// L&T and Corscience Version
/// Data: selected lead data
////////////////////////////////////////////////////////////////////////////////
ecgLeadData = 1,
////////////////////////////////////////////////////////////////////////////////
/// Pulse rate message
/// L&T and Corscience Versions
/// Data: pulse rate in Hz
////////////////////////////////////////////////////////////////////////////////
ecgPulseRate,
////////////////////////////////////////////////////////////////////////////////
/// Arrhythmia message
/// L&T Version
/// Data: arrhythmia value
////////////////////////////////////////////////////////////////////////////////
ecgArrhythmia,
////////////////////////////////////////////////////////////////////////////////
/// Lead off message
/// L&T Versions
/// Data: unused
////////////////////////////////////////////////////////////////////////////////
ecgLeadOff,
////////////////////////////////////////////////////////////////////////////////
/// No cable connected message
/// L&T and Corscience Version
/// Data: unused
////////////////////////////////////////////////////////////////////////////////
ecgNoCableDetected,
////////////////////////////////////////////////////////////////////////////////
150
/// Lead and gain information message
/// L&T Version
/// Data: selected lead (high 16 bits), and selected gain (low 16 bits)
////////////////////////////////////////////////////////////////////////////////
ecgLeadGainInfo,
////////////////////////////////////////////////////////////////////////////////
/// Version information message
/// L&T Version
/// Data: ecg version
////////////////////////////////////////////////////////////////////////////////
ecgVersionInfo,
////////////////////////////////////////////////////////////////////////////////
/// Information code passed back when the previous lead data sent back was
/// detected as the requested part of the waveform to be detected (QRS+PT)
/// L&T Versions
/// Data: unused
////////////////////////////////////////////////////////////////////////////////
ecgWFDetect
};
////////////////////////////////////////////////////////////////////////////////
/// ECG Lead Selection
/// Supports: L&T (all leads), and Corscience (leads II and III)
////////////////////////////////////////////////////////////////////////////////
enum ecgLead
{
////////////////////////////////////////////////////////////////////////////////
/// Lead I
////////////////////////////////////////////////////////////////////////////////
ecgLeadI = 0,
////////////////////////////////////////////////////////////////////////////////
/// Lead II
////////////////////////////////////////////////////////////////////////////////
ecgLeadII = 1,
////////////////////////////////////////////////////////////////////////////////
/// Lead III
////////////////////////////////////////////////////////////////////////////////
ecgLeadIII,
////////////////////////////////////////////////////////////////////////////////
/// Lead STD
////////////////////////////////////////////////////////////////////////////////
ecgLeadSTD
};
////////////////////////////////////////////////////////////////////////////////
/// ECG Gain Selection
/// Supports: L&T Version
////////////////////////////////////////////////////////////////////////////////
enum ecgGainLevel
{
////////////////////////////////////////////////////////////////////////////////
/// Low Gain
/// L&T: 0.3 mV
////////////////////////////////////////////////////////////////////////////////
ecgGainLow = 0,
////////////////////////////////////////////////////////////////////////////////
/// Medium Gain
/// L&T: 1 mV
////////////////////////////////////////////////////////////////////////////////
ecgGainMed = 1,
////////////////////////////////////////////////////////////////////////////////
/// High Gain
/// L&T: 2 mV
////////////////////////////////////////////////////////////////////////////////
ecgGainHigh
};
////////////////////////////////////////////////////////////////////////////////
/// ECG Sampling Rate Selection
/// Supports: Corscience Version
////////////////////////////////////////////////////////////////////////////////
enum ecgSamplingRate
{
////////////////////////////////////////////////////////////////////////////////
/// Low Sampling Rate
/// Corscience: 100 Hz
////////////////////////////////////////////////////////////////////////////////
ecgSamplingRateLow = 0,
////////////////////////////////////////////////////////////////////////////////
/// Medium Sampling Rate
/// Corscience: 200 Hz
////////////////////////////////////////////////////////////////////////////////
ecgSamplingRateMed = 1,
////////////////////////////////////////////////////////////////////////////////
/// High Sampling Rate
/// Corscience: 500 Hz
////////////////////////////////////////////////////////////////////////////////
ecgSamplingRateHigh,
////////////////////////////////////////////////////////////////////////////////
/// Max Sampling Rate
151
/// Corscience: 1000 Hz
////////////////////////////////////////////////////////////////////////////////
ecgSamplingRateMax
};
////////////////////////////////////////////////////////////////////////////////
/// ECG Peak Detection Selection
/// Supports: L&T Version
////////////////////////////////////////////////////////////////////////////////
enum ecgPeakDetection
{
////////////////////////////////////////////////////////////////////////////////
/// No detection
////////////////////////////////////////////////////////////////////////////////
ecgDetectNone = 0,
////////////////////////////////////////////////////////////////////////////////
/// P Wave detection
////////////////////////////////////////////////////////////////////////////////
ecgDetectPWave = 1,
////////////////////////////////////////////////////////////////////////////////
/// Q Wave detection
////////////////////////////////////////////////////////////////////////////////
ecgDetectQWave = 2,
////////////////////////////////////////////////////////////////////////////////
/// R Wave detection
////////////////////////////////////////////////////////////////////////////////
ecgDetectRWave = 3,
////////////////////////////////////////////////////////////////////////////////
/// S Wave detection
////////////////////////////////////////////////////////////////////////////////
ecgDetectSWave = 4,
////////////////////////////////////////////////////////////////////////////////
/// T Wave detection
////////////////////////////////////////////////////////////////////////////////
ecgDetectTWave = 3
};
////////////////////////////////////////////////////////////////////////////////
/// ECG Error Codes
////////////////////////////////////////////////////////////////////////////////
enum ecgError
{
////////////////////////////////////////////////////////////////////////////////
/// No error
////////////////////////////////////////////////////////////////////////////////
ecgErrorNone = 0,
////////////////////////////////////////////////////////////////////////////////
/// Generic error
////////////////////////////////////////////////////////////////////////////////
ecgErrorGeneric = 1,
////////////////////////////////////////////////////////////////////////////////
/// ECG has not been initialized
////////////////////////////////////////////////////////////////////////////////
ecgErrorInitialization,
////////////////////////////////////////////////////////////////////////////////
/// Function not supported by ECG version
////////////////////////////////////////////////////////////////////////////////
ecgErrorFunctionNotSupported,
////////////////////////////////////////////////////////////////////////////////
/// Serial port error
////////////////////////////////////////////////////////////////////////////////
ecgErrorSerialPort,
////////////////////////////////////////////////////////////////////////////////
/// Thread synchronization error
////////////////////////////////////////////////////////////////////////////////
ecgErrorThreadSync
};
return false;
}
152
// where gain can be ecgGainHigh, ecgGainMed or ecgGainLow
ecg.setGain(gain);
}
153
52 Impero
52.1 Overview
Impero is an SDK for capturing the events from the Ultrasonix console devices. Impero works by connecting to the various consoles through the serial
port to communicate with the hardware/firmware layers. When running the Sonix research software, note that a connection through Impero is not
possible due to the research software already having the console port open.
Impero is ideal for custom programs built upon Texo or Porta, where imaging functions are taking place. The SDK can be integrated into the program to
handle button events, and then relay specific actions to the Texo or Porta interface to change parameters, etc.
154
SonixTOUCH Console Button IDs
52.4 Programming
The following pseudo-code gives an idea of how to use Impero:
void main()
{
// setup program
startThread(eventThread)
impero->connect(port)
impero->setCallback(onButton)
}
void eventThread()
{
while(1)
{
// block until freeze event is set
WaitForEvent(freezeEvent)
155
53 Licensing
Licensing is used to enable/disable some of the internal features on the Sonix systems.
Basic Research License: Enables saving of greyscale clinical images in the clinical mode, i.e. B-mode, both before and after scan
conversion.
RF Access License: Enables access to RF data in every mode which is available namely B-mode, Harmonic, Compound, Doppler, Color,
PW, Strain Imaging, ..., note that some imaging mode such as elastography require their own license to be available.
Advanced Access License: Provides access to Windows as well as access to all Internal Imaging Parameters, with this license you can
run 3rd party programs on the system and also manipulate beamformer and imageformer parameters on the clinical scanner for customization
or learning purposes. Without this license you can not go outside of clinical mode.
Sync Access License: Enables the BNC signals for input and output triggering, this allows the user to synchronize the scanner with other
equipment.
Streamer/Telemed License: Enables remote access to the scanner using the Ulterius SDK, this allows the user to collect images and
change internal parameters remotely over the network. This license also enables the Matlab wrapper for Ulterius SDK, this way the user can
run these SDKs from within Matlab working environment without having to write any C/C++ code or compiling a project.
Sequencer License:Enable custom pulse sequencing using the Texo SDK, this allows the user to develop unconventional imaging
techniques such as ultrafast imaging, synthetic aperture beamforming, coded excitation, photo-acoustic imaging. This license also enables the
Matlab wrapper for Texo SDK, this way the user can run these SDKs from within Matlab working environment without having to write any
C/C++ code or compiling a project.
156
54 Matlab Imaging Modes
Starting version 6.1.1, a folder inside Matlab directory in the SDK \MATLAB\ImagingModes that contains sample data sets with all the Matlab files for
reading, processing, and visualizing the same data set. Inside this folder you will find the following folders:
B-mode Imaging,
RF Imaging,
Harmonic B-mode imaging,
M-mode imaging,
Harmonic M-mode imaging,
Elastography and Strain Imaging,
Pulsed Wave Doppler Imaging,
Continuous Wave Doppler Imaging ,
Color Flow Doppler Imaging,
3D and 4D Imaging with Exam and Propello,
Parallel Beamforming and Ultrafast imaging with DAQ,
GPS coordinate acquisition,
3D volume reconstruction using GPS data, ...
For each imaging mode you just need to open the runMe.m function inside Matlab and run it. Sample outputs are displayed below:
157
Sample Matlab M mode Display
158
Sample Matlab PW Display
159
55 SonixDataTools
55.1.1 Introduction
SonixDataTools is a MATLAB toolkit for visualizing the data saved by the Sonix? research platforms. It serves as a starting point for researchers
interested in developing new image processing algorithms in the MATLAB environment. It also brings together the MATLAB codes previously
published on the Ultrasonix? research forum: http://research.ultrasonix.com/index.php
Unzip the sample data provided with the toolkit. These are in two zip files located in the folder: .\SonixDataTools\SampleData\ Run the
SonixDataTools.m GUI located in the folder .\SonixDataTools\GUI\. Open one of the sample data files provided with the package by clicking the Open
File icon frm the toolbar or choosing the File>>Open frm the menus. Alternatively run one of the scripts in the .\SonixDataTools\ExampleScripts\ folder
to get a typical image.
55.1.3 GUI
The SonixDataTools GUI is a user interface for reviewing the data collected by the Sonix research platforms and performing simple image processing
algorithms on it. Open the GUI by running the SonixDataTools.m GUI located in the folder .\SonixDataTools\GUI\. Data can be loaded into the GUI by
clicking the Open File icon frm the toolbar or choosing the File>>Open frm the menus.
Opening a file
In the "Open a SonixRP? Compatible File" dialog box, the type of the file can be selected. These include the file types saved by the Sonix? research
interface, as well as the SonixDAQ?. Select the file type you want to open and then select the file you want to open.
The package comes with some sample data to get you started, one collected with the Sonix? research interface which is located in the
.\SonixDataTools\SampleData\Liver_and_kidney_imaged_by_C5-2slash60\ folder and the other one with the SonixDAQ? which is located in the
.\SonixDataTools\SampleData\Carotid_artery_imaged_by_L14-5slash38_and_DAQ\ folder.
160
Selecting a file type
Once the data has been loaded into the GUI, it will be displayed in the left axes. If the data consists of multiple frames, the Play/Pause button and
horizontal slider bar below the axes become activated. These two can be used to explore different frames of the data.
Pushing the Play/Pause button will cycle through multiple frames in the data, and the slider bar can be used to manually browse through the frames.
The vertical slider bar (when activated) can be used to change the contrast of the image for better visualization. This slider bar only changes the range
of displayed valued in the image by changing the upper bound of the 'CLim' property of the image.
161
On the right hand side, a table will be displayed which has three parts. The first part contains the information stored with the data as the header of the
file. The second part comes frm the probes.xml file and displays the name of the probe used to acquire the data, as well as its physical dimensions.
The last part is the calculated imaging depth frm the information contained in the header file. In the case of scan-converted images, the depth is
unknown, as the conversion ratio between pixels to millimeters is not stored in the header.
Note that for the SonixDAQ?, the header does not include the details necessary to fill up this table. The software builds a virtual header by using the
function header4DAQ.m located in the .\SonixDataTools\Misc\ folder. If you are using the DAQ to acquire data, make sure you modify this file to reflect
the exact acquisition parameters you used. Also you need to select the right probe frm the Settings>>Settings menu.
For some of the data types further image processing algorithms and data exploration options are provided by the right hand axes. If further processing is
available, the Analyze button and the drop down menu on the right hand side become activated.
162
In order to close an open file, you can use either the red close button, or frm the menus select File>>Close. Also opening a new file will automatically
close the previously opened file. The software does not support multiple open documents.
Since some of the formats and file types have changed slightly during the evolution of our research and clinical software platforms, in order to properly
import the data, you need to let the software know which version of the research interface you have used to acquire the data. This can be done by going
to the Settings>>Settings menu and choosing the right version frm the drop down list.
One last setting that you should be aware of is the path to the probes.xml file. Currently a copy of the latest file has been included in the SonixDataTools
package. However, it is more prudent to use the pathway to the SDK with the same version as the one used to collect the data. This would avert any
inconsistency due to changes in the probes.xml file.
We hope you find this tool useful. Please let us know of your comments through our research forum under the Programming\MATLAB:
http://research.ultrasonix.com/viewforum.php?f=5
55.1.4 Features
The Sonix? research software can save on the hard drive a number of different data types depending on the imaging mode selected. For a list of the
data types see the wikisonix page: http://www.ultrasonix.com/wikisonix/index.php/Working_with_Data The structure of the saved files have evolved with
new demands. This release of the SonixDataTools supports the data saved by the Exam software versions 5.7.x and 6.0.x up to 6.1.0.
Ultrasonix? has previously provided a number of MATLAB functions and scripts for importing the data into the MATLAB environment and processing
it. These are published under different folders: .\SonixDataTools\ImageProcessing\CFI\ for converting color RF data (.crf) into color flow images (CFI).
.\SonixDataTools\ImageProcessing\BeamForming\ for beam forming channel data acquired by the SonixDAQ?. .\SonixDataTools\ImageProcessing\PW\
for converting pulse Doppler RF data (.drf) into Doppler spectrum images. .\SonixDataTools\DataReaders\RPread\ contains the ReadRP.m file, which is
the main file used to import the data into the MATLAB environment. .\SonixDataTools\UltrasonixLegacy\UltrasoundGUI\ contains a previously
developed RF-processing MATLAB GUI which includes contributions frm the community acknowledged in this documents.
In order to display the data imported into the MATLAB environment by ReadRP.m a set of plotting functions have been developed which can be found
in .\SonixDataTools\PlotFunctions\. The plot_SonixRP.m function handles all different types of data and generates proper MATLAB figures. For simple
data types, this function includes the implementation of the plotting functions. For more complicated data types, it invokes one of the other functions in
this folder: plot_BColor.m, plot_BColor.m, plot_ColorRF.m, plot_EnvDetLogComp.m, and plot_VelocityVariance.m.
Example scripts are provided for calling the plot_SonixRP.m function to plot the data. These example scripts are located in the folder
.\SonixDataTools\ExampleScripts\ and have the name format ShowMe???.m where ??? is the extension of the file to be displayed. There is also
another function in the PlotFunctions folder which is called plot_AnalyzedData.m. This function can be used to perform some typical ultrasound image
processing, such as RF to B-mode data conversion on the imported data.
Sample code is provided in this package for performing the basic image processing steps used in ultrasound imaging. These codes are typically simple
in nature and serve to demonstrate the basics of how these steps are carried out for researchers. They are not MATLAB implementations of the
algorithms which generate the clinical images on our systems.
The following image processing functions are provided: .\ImageProcessing\rf2bmode.m converts beam-formed RF data into B-mode images
.\ImageProcessing\scanconvert.m converts the prescanconverted B-mode images into scanconverted B-mode images. The implementation is only for
2D images. .\SonixDataTools\ImageProcessing\CFI\colorrf2flow.m converts color Doppler RF into different color flow images, such as velocity, variance,
and power Doppler. .\SonixDataTools\ImageProcessing\PW\doppler2rfspectrum.m converts the pulse Doppler RF into I/Q data and spectrum data.
.\SonixDataTools\ImageProcessing\BeamForming\beamform.m performs the post receipt beam-forming of RF data for plane wave transmission and an
L14-5/38 probe.
The properties of the probe used for imaging can be read into a MATLAB structure by using the file readprobe.m which is in the
.\SonixDataTools\Misc\ folder.
At the time of the release of the 6.1.0 version of the package, there are known issues about the data saved in the .ecg and .epr formats. The GUI gives
a warning about these file types and does not open them as the feature has been disabled. The issue will be addressed in future releases of the Exam
software and the data display will be enabled in the GUI again.
163
55.1.10 Acknowledgements
The UltrasoundGUI (RF Processing GUI) was originally developed by Ultrasnoix Medical Corporation. It was further developed and enhanced by
Michael C. Kolios of Sunnybrook/Ryerson University, Michael Stauffer of University of Pennsylvania, Philadelphia and Tony de Souza-Daw of La Trobe
University, the contributions of which are hereby appreciated and acknowledged (see the following thread on the research forum for the history of the
development): http://research.ultrasonix.com/viewtopic.php?f=5&t=10
164
56 Matlab Ulterius
In order to provide the researchers with the ability to control the Ultrasonix systems from the Matlab environment, we have developed the Matlab
Ulterius SDK. The most important feature of the SDK is the ability to acquire live images in the Matlab environment in real-time. Matlab has the ability to
connect to COM servers, and receive events from them in real-time. This feature is used in the Matlab Ulterius SDK.
The SDK contains sample scripts which shows its basic functions.
The UlteriusCOM server is registered in the windows. This operation can be done either from within the Matlab environment or from the
command prompt of Windows. It is essentially a Windows system operation. It registers and starts the UlteriusCOM.dll as a COM server on
the machine, which allows Matlab to connect to it.
Matlab connects to the UlteriusCOM.Server as a client and gets a handle to the server.
h = actxserver('UlteriusCOM.Server');
165
The server then provides all the functions that Ulterius SDK provides in the C++ environment, to the user in the Matlab environment, via the
handle. For example to connect to a Sonix system:
h.connect(SONIX_IP);
Moreover, the frame and parameter callback feature of the Ulterius SDK is provided via events that propagate to the Matlab client from the
COM server. You can register a Matlab function to these events. The function (which you write) will essentially do the same thing as the
callback functions do in the C++ environment, and provide real-time capabilities to the Ulterius Matlab SDK.
Once done, the server can be shut down and unregistered from within the Matlab environment (or command prompt of Windows):
A list of all the implemented methods, together with the default methods associated with COM servers can be obtained by typing methods(h) in the
Matlab environment.
>>methods(h)
addproperty
connect
constructorargs
decParam
delete
deleteproperty
disconnect
events
get
getActiveImagingMode
getActivePreset
getActiveProbe
getCineData
getCineDataCount
getCompressionStatus
getDataDescriptor
getDataToAcquire
getFreezeState
getInjectMode
getLastError
getMaxCineFrames
getParam
getParamValue
getPatientInfo
getPresets
getProbes
getSharedMemoryStatus
getStreamStatus
getdataRateReductionFactor
incParam
injectImage
interfaces
invoke
isConnected
isDataAvailable
load
move
propedit
release
save
saveScreenImage
selectMode
selectPreset
selectProbe
send
set
setCompressionStatus
setDataToAcquire
setInjectMode
setMessaging
setParamValue
setSharedMemoryStatus
setTimeout
setdataRateReductionFactor
stopStream
streamScreen
testCallback
testParamCallback
toggleFreeze
166
57 Matlab Texo
In order to provide the researchers with the ability to control the Ultrasonix systems at the sequencer level, from the Matlab environment, we have
developed the Matlab Texo SDK. The most important feature of the SDK is the ability to acquire live images in the Matlab environment in real-time.
Matlab has the ability to connect to COM servers, and receive events from them in real-time. This feature is used in the Matlab Texo SDK.
The SDK contains sample scripts which shows its basic functions.
the TexoCOM server is registered in the windows. This operation can be done either from within the Matlab environment or from the
command prompt of Windows. It is essentially a Windows system operation. It registers and starts the TexoCOM.dll as a COM server on the
machine, which allows Matlab to connect to it.
Matlab connects to the TexoCOM.Server as a client and gets a handle to the server.
h = actxserver('TexoCOM.Server');
The server then provides all the functions that Texo SDK provides in the C++ environment, to the user in the Matlab environment, via the
handle. For example to activate probe connector 0:
167
h.texoActivateProbeConnector(0);
Moreover, the frame callback feature of the Texo SDK is provided via events that propagate to the Matlab client from the COM server. You
can register a Matlab function to these events. The function (which you write) will essentially do the same thing as the callback functions do in
the C++ environment, and provide real-time capabilities to the Texo Matlab SDK.
Once done, the server can be shut down and unregistered from within the Matlab environment (or command prompt of Windows):
A list of all the implemented methods, together with the default methods associated with COM servers can be obtained by typing methods(h) in the
Matlab environment. The methods which start with texo are the Texo SDK function. The methods which start with texoRP_ set the properties of the
receive parameter structure, and so forth. The reason that you need to call single functions for setting properties of the receive parameters, transmit
paramters, etc is that Matlab does not support structures as one of the types that can be passed on to COM servers and back.
>> methods(h)
addproperty
constructorargs
delete
deleteproperty
events
get
getdataRateReductionFactor
interfaces
invoke
load
move
propedit
release
save
send
set
setdataRateReductionFactor
texoActivateProbeConnector
texoAddLine
texoAddReceive
texoAddTGC
texoAddTGCFixed
texoAddTransmit
texoBeginSequence
texoClearTGCs
texoCloseDelayReadBack
texoEnableSyncNotify
texoEndSequence
texoForceConnector
texoGetCine
texoGetCollectedFrameCount
texoGetFrameRate
texoGetFrameSize
texoGetMaxFrameCount
texoGetProbeCenterFreq
texoGetProbeCode
texoGetProbeFOV
texoGetProbeHasMotor
texoGetProbeName
texoGetProbeNumElements
texoGoToPosition
texoInit
texoIsImaging
texoIsInitialized
texoRP_setAcquisitionDepth
texoRP_setAngle
texoRP_setAperture
texoRP_setApplyFocus
texoRP_setCenterElement
texoRP_setChannelMask
texoRP_setCustomLineDuration
texoRP_setDecimation
texoRP_setLGCValue
texoRP_setManualDelays
texoRP_setMaxApertureDepth
texoRP_setNumChannels
texoRP_setSaveDelay
texoRP_setSpeedOfSound
texoRP_setTGCSel
texoRP_setTableIndex
texoRP_setUseCustomWindow
texoRP_setUseManualDelays
texoRP_setWeightType
texoRP_setWindow
texoRP_setrxAprCrv_btm
168
texoRP_setrxAprCrv_mid
texoRP_setrxAprCrv_top
texoRP_setrxAprCrv_vmid
texoRunImage
texoSelectProbe
texoSetDelayReadBack
texoSetPower
texoSetSyncSignals
texoSetVCAInfo
texoSetupMotor
texoShutdown
texoStepMotor
texoStopImage
texoTGCCrv_setBtm
texoTGCCrv_setMid
texoTGCCrv_setTop
texoTGCCrv_setVmid
texoTP_setAngle
texoTP_setAperture
texoTP_setCenterElement
texoTP_setFocusDistance
texoTP_setFrequency
texoTP_setManualDelays
texoTP_setMask
texoTP_setPulseShape
texoTP_setSpeedOfSound
texoTP_setSync
texoTP_setTableIndex
texoTP_setUseManualDelays
texoTP_setUseMask
texoTestCallback
texoVCAInfo_setActivetermination
texoVCAInfo_setAmplification
texoVCAInfo_setHPFDigitalEnable
texoVCAInfo_setHPFDigitalValue
texoVCAInfo_setInclamp
texoVCAInfo_setLNAIntegratorEnable
texoVCAInfo_setLPF
texoVCAInfo_setPGAIntegratorEnable
169
58 Porta
58.1 Overview
Porta is a development toolkit that allows users to build their own custom software based on standard ultrasound imaging techniques. Where the main
clinical and research software has many features that support the imaging, such as a patient database, measurement tools, system setup, etc., Porta is
a scaled down version of the software that performs purely imaging functions, such as running B and Doppler modes, and providing access to
parameters that control the image formation. This makes using Porta a more lightweight solution, with fewer dependencies with respect to the research
software provided by default.
Typically, new research users are encouraged to start with the research software to acquire data through the freeze and store to disk methods. When
more flexibility is required, the Ulterius package is suggested, as data can be transferred to a client program in real-time through a TCP/IP or shared
memory interface. When even more flexibility and real-time functionality is needed, Porta is the logical next step, as callbacks that link directly to the cine
buffer are available, as well as real-time processed image access (ie. scan converted and post-process filtered data).
Porta is the tool of choice for OEM customers of Ultrasonix who purchase Ultrasonix technology (boards/Modulos/full-carts) for the construction and sale
of custom medical device equipment. Porta is also a great tool for researchers wanting to build a more clinically relevant solution with additional
customized software, perhaps with the potential for a future commercial solution.
Version 1.0 could be considered a bunch of source code files provided in a jumbled mess.
Version 2.0 actually packaged them into a set of custom classes and binary files, the first real SDK.
Version 3.0 simplified things with respect to the number of functions that were required to be called to initialize the system, and the official
name Porta took shape.
Version 4.0 condensed everything once more, and a single class was all that was (and still is) needed to interface to the system. Version 4.0
became mainstream and had numerous updates to support the multiple customers using it, however one of this versions' pitfalls was the fact
that it was branched off into it's own code-base and had few imaging engine updates that took place over the years of Ultrasonix
development.
Version 5.0 now solves that issue by providing an SDK engine that is built directly off of Ultrasonix' latest code-base, which takes advantage
of the latest imaging presets that have been optimized for clinical scenarios. This version works best right now with the latest 64 receive
channel beamformer, however a project has been started to ensure backwards compatibility with the older 32 channel beamformer works
properly and images just as well as in version 4.0.
LJB Development
170
59 Porta Function Overview
59.1 Initialization
Porta is initialized through the function init(). This function allows for the following:
Specification of the cine buffer size (more RAM used = more frames upon freeze)
Path setup for supporting firmware, preset and look-up table files
Hardware version configuration
59.2 Licensing
Porta is designed to be modular in terms of imaging mode functionality. Some functions are licensed and based on 3rd party and/or patented
technologies, therefore proper licenses may be required.
The license file should be named "licenses_web.txt" and be placed in the folder specified upon initialization. In order to obtain/purchase
licenses, you will need the serial number of your Sonix (or Modulo) device, as well as the System ID that is unique to each hardware module.
To retrieve the System ID, simply make a call to getSystemID().
59.4 Transducers
The important abilities for Porta to interact with transducers include the following:
Once activateProbeConnector() has been called, the system is setup to image with the transducer plugged into that port.
Porta also has a function called testProbeElements() for testing transducer elements, though it is up to the caller to perform analysis on the data. Porta
will only use a built-in Texo SDK scipt to transmit and receive a single element across the transducer. The results of the data must be interpreted
externally, and signal quality from each element will vary depending on the probe type and surface that the probe is imaging on, therefore this data
should be used with caution.
171
59.7 Presets
Presets can be thought of as a subset of parameters that are optimized to a specific clinical application. For instance, the L14-5/38 transducer can be
used to scan the breast or thyroid; each of these applications should have a specific preset to optimize the imaging parameters for that body part (and/or
body type as well). Each transducer has a generic preset, also known as the master preset. This preset contains the default values that should work well
for general scanning in all clinical applications. Sub-presets of each transducer will typically have many less values optimized when compared to the
master preset. Many Porta based applications will work just fine with the master preset, however, if the transducer is custom, as is often the case for
OEM customers, a custom sub-preset may need to be created with the help of Ultrasonix engineers.
Since Ultrasonix platforms use WinDriver (see Jungo) to communicate with the PCI card that interfaces to the ultrasound electronics, interrupts can
technically be set for DMA events. This has been informally tested, and may one day be the method of choice for detecting new ultrasound frames,
since the collector thread depends on non-blockage as well as a continuous and steady frame counter.
59.9 Callbacks
Porta uses callbacks as interrupts that flag when a new frame or image has been acquired. As discussed in the pipeline, the collector thread will look for
the proper ID of a frame that matches a counter to signal that a frame has been acquired. Data collected from the cine buffer is termed Raw Data, and
setRawDataCallback() can be used to notify when a new frame comes into the cine buffer. This is useful if the custom program uses B image data that
needs to be processed prior to scan conversion, or if RF data is required. Processed image data or Display Data is the actual image that the user would
see on the screen, and when a new frame is ready, setDisplayCallback() can be used for notifications. It should be noted that the internal structure of
Porta and other Ultrasonix software only stores a full cine of Raw Data, and not Display Data. Display data is only available once the collector thread
has signaled another process to take the data from the cine and perform scan-conversion and other filtering or processing methods, and is offered in a
single buffer. Once frozen, the calling program can access Display Data by calling processCineImage() and then making the appropriate call to get
access to it. This is important to note, because processing of a frame may take some time, depending on the type of frame (B, Color Doppler, etc.) as
well as the parameters set (filtering, zoom, etc.).
This can be slow due to the time it takes to recalculate tables and upload the tables to the hardware. Ultrasonix optimizes this process in it's clinical and
research interface software by queueing up parameter changes, and using a worker thread to do the updating. For instance, if the user dials the gain 5
clicks, it may not be important to process each individual click, as this will result in a lag to the user. The worker thread can queue up these clicks, until
some timer has expired, then update the final result of 5 clicks at once (ie. if gain were 50% and 1 click = 1%, a 5% change would result at once to the
user, not 1% times 5 separate updates).
172
59.12 Display Processing
Display data, as discussed is the actual ultrasound image that the user should see. It has been scan-converted and processed with various mapping
curves and filtering techniques to enhance image quality. The size of the display ultrasound image is specified when calling setDisplayDimensions().
Note that the larger the dimensions, the slower it will be to process a single frame. Typical Ultrasonix software uses a 640x480 display area. If the
processing takes too long, the collector thread will still notify the processing worker thread, however it will be ignored if busy, and the display frame rate
will be lower than the acquisition frame rate. Typical display times can be estimated at 10 to 30 milliseconds depending on the type of data and
parameters setting.
Greyscale is probably the best for most cases, however RGB may be desirable for chroma imaging, and a must when acquiring color Doppler data,
since Doppler processing has to use a 32 bit color map. Chroma and color maps can be imported through some of Porta's functions.
173
60 Porta Data and Imaging
60.1 Callbacks
Callbacks are method used for acquiring image data from Porta. As discussed on a previous documentation page, Porta has two callbacks, one for Raw
Data, which is direct cine buffer data, and one for Display Data, which is a processed ultrasound image to be displayed to the end user.
For Raw Data, the function setRawDataCallback() should be setup, and monitored for newly found frames in the cine buffer. This is useful for collecting:
For Display Data, the function setDisplayCallback() should be setup, and monitored for newly processed frames. This is useful for collecting:
void main()
{
porta->setRawDataCallback(rawCB)
while(1)
{
// do something
}
}
void processingFn()
{
// run some algorithm on 'buffer'
}
void main()
{
porta->setDisplayCallback(dispCB)
while(1)
{
// do something
}
}
void MyDisplay::draw()
{
// apply any buffering techniques
// post message to redraw window
}
void onFreeze()
{
count = porta->getFrameCount(0)
}
174
void onGetFrame(int frame)
{
// enforce boundaries
if (frame < 0 || frame >= count)
return
To acquire display data while frozen, the following pseudo-code steps should be taken:
void onFreeze()
{
count = porta->getFrameCount(0)
}
porta->processCineImage(0, frame)
porta->getBwImage(0, buffer)
// notify display to copy buffer, redraw, etc...
}
175
61 Porta Synchronization Signals
Porta provides access to the synchronization control on the ultrasound system. There are 2 BNC inputs and 2 BNC outputs on the latest platform, and
only 1 of each on the older Sonix RP platform. The BNC ports are accessible on the PCI card that provides an interface between the ultrasound
electronics and the PC.
61.1.1 Input
When trigger in is set to 0 (default), the Porta function pollBnc() should be implemented in a worker thread that will wait for an interrupt to occur. Typical
clinical scenarios would denote this input as a footswitch function, where the software will respond to the interrupt with a programmable command such
as freezing the pipeline, or storing an image. When pollBnc() returns true, a call to ackBnc() should be made to tell the ultrasound hardware that the
interrupt has been dealt with. Most likely, programs polling for this interrupt will want to post a message to the main thread to process and perform the
footswitch function.
When trigger in is set to 1 or 2, then the imaging pipeline will be halted, and the ultrasound hardware will wait for a TTL signal to arrive on the BNC input.
With a value of 1, the system will transmit and receive exactly one ultrasound line. So for instance, if a B mode image is made up of 256 scanlines
(100% Sector and 256 line density), then the trigger needs to happen 256 times for the entire frame to be collected. In this case, a pulse-repetition
frequency (PRF) should be maintained, or perhaps not, depending on the algorithm employed. The collector thread will not actually pick up the new
frame after 256 inputs, but 257 are actually needed, as discussed in another Porta documentation page, the thread looks at the frame header of the
following frame to signal that the previous frame is ready for processing. With a value of 2, the system will will transmit and receive the entire ultrasound
frame at the PRF that would occur based on the parameters that have been set (ie. depth, sector, etc). Again, in this case, the callback for that frame
won't happen until the following frame has been triggered.
Please note that the second BNC input has not been implemented as of yet.
61.1.2 Output
When trigger out or trigger out 2 are set to 0 (default), the Porta function signalBnc() should be implemented to send a pulse out on one of the BNC
connectors. Typical clinical scenarios would denote this output as a print function, whereby the activation of a button such as print would send a signal
to trigger a photo printer that is connected to the BNC, and the video output to capture a snapshot of the video at the time of the signal.
When trigger out or trigger out 2 are set to 1 or 2, then the BNC ports are used as a highly calibrated synchronization tool for triggering other devices.
With a value of 1, the system will send a pulse at the beginning of each ultrasound line. So for instance, if a B mode image is made up of 256 scanlines
(100% Sector and 256 line density), then the BNC will output 256 TTL pulses per frame in a consistent manner (maximum jitter of 25ns). With a value of
2, the BNC will send a signal out at the beginning of each frame, and thereby provide a consistent pulse at the exact ultrasound acquisition frame rate.
void main()
{
start pollThread()
while(1)
{
// do something
}
}
void pollThread()
{
while(1)
{
if (porta->pollBnc())
{
porta->ackBnc()
// trigger main thread
}
sleep(10ms)
}
}
The following pseudo-code gives an idea of how sending a signal on an output BNC would work:
void main()
{
while(1)
176
{
// do something
}
}
void onSomeKey()
{
porta->signalBnc()
}
177
62 Propello
62.1 Introduction
Propello is a program derived from the Porta SDK, that allows the collection of volume data from motorized ultrasound transducers. Many types of data
can be collected, and with the program, users have full control over the motor and sweeping parameters. Some of the more important features included:
Two acquisition modes: manual motor movement and automatic motor sweeping
Access to pre and post scan-converted B data, color velocity/variance data, bitmapped color data, color RF ensembles, and unfiltered *RF
data created from B mode geometry
B/Color and RF displays
Support for all Ultrasonix 4D transducers
Access to basic imaging parameters for B and Color modes
256 MB of cine for volume storage
Simple file formats for easy read into MATLAB
Imaging based on clinically driven presets
In latin, the word propello is defined as "to drive before one, drive away". The name was chosen for the application because the purpose is to drive the
motor on the ultrasound probe.
1. Extract the zip package to any specified drive or folder on the Sonix RP system.
2. Ensure the dat and fw folders are kept in the same folder as the executable and DLL's
3. Ensure any application that uses the ultrasound imaging system has been closed
4. Run propello.exe to start the program
This section provides a summary of the application components. The main screen is shown below.
178
1. Probe Information ? Detects the transducer, and displays probe information. The application only detects for probes with 3D/4D capability.
Other probes will be considered invalid.
2. Imaging Selection ? The data types to collect while imaging.
3. Capture Method ? The method used for controlling the motor.
4. Controls ? Imaging parameters access, and other controls for automatic and manual motor control.
5. Status ? Displays the imaging status, frames per second, volumes per second, and frames acquired.
6. B-mode display ? Displays the B image with optional color Doppler overlay.
7. RF spectrum display ? Displays the center RF line of the transducer.
This mode enables manual stepping of the motor to a specific position. The motor can be programmed to go to a Motor Start position, and then moved
to that location at any time by pressing Go To Start. At zero degrees, the motor is positioned to one edge of the probe. The range for the start position is
from 0 degrees to the probe's field of view (FOV).
179
The step-by-step motor movement is done through the Move Motor arrow buttons. The number of steps that the motor can move depends on the
degrees per step and the FOV of the transducer. By default, each button press will move 8 steps, the actual degrees moved will be reflected in the
Motor Location box.
When Go To Start is pressed, the Motor Location is initialized to the start. Every time the motor is moved step-by-step, the location is updated. If for
whatever reason the stepping gets out of sync, then the motor should be moved to the start once again.
The imaging pipeline can be run while in manual mode as well. Individual B-mode and RF frames can be acquired during manual motor control by
pressing Acquire Image button, this will bring up the Store Data dialog where images can be saved.
This mode allows for automatic sweeping of the motor. In automatic mode, the motor will be sweeping continuously while acquiring images. Once
imaging is stopped, all of the frames in the cine buffer can be accessed and stored.
Each of these parameters is bounded internally through the boundaries.xml file in the dat folder. The default values for degrees per frame are 8, 16 and
24 steps per frame, which get translated to degrees per frame on the screen. Note that not all transducers will support 24 steps per frame, as the motor
cannot keep up with rotation speed required. The FOV display is updated whenever any of these parameters are changed.
In this mode, the volume starts at an offset of half the FOV from the center. So if the FOV generated is 45, then the volume will start at 22.5 clockwise
from center. Also note that volumes are acquired both frontwards and backwards, so the corresponding frames will be reversed for every 2nd volume.
Since the motor is continuously moving, the frame alignment will also be different between frontwards and backwards volumes. See the below figure for
an explanation of this.
Acquisition in automatic mode is different than manual mode, in that individual images are not captured, but rather entire volumes of data. When Store
Volumes is pressed, the Store Data dialog will be shown, and volumes can be stored from here. Also note that the cine buffer is cleared when:
The dialog has slightly different options for manual and automatic mode, as can be seen below:
180
Every time an image or volume is stored, an internal counter is incremented and is used default filename plus the extension for convenience purposes.
To reset the counter, press Reset Counter. The counter is also automatically reset when the acquisition type changes.
Unlike other RP software, Propello removes the 4 byte frame header when storing data from the cine buffer. This should be taken into consideration if
existing MATLAB programs are used to parse pre-scan B and Rf data.
In manual mode, single frames of the specified image format can be stored. Conforming to the ulterius specification, pre scan-converted Band RF data
are stored with extensions .bpr and .rf respectively, and there is also an option to include the ulterius file header. Post scan-converted B data is stored
as a bitmap image (.bmp), which can make MATLAB parsing a bit easier. The File Name can be input through typing, or by pressing Choose, which
opens up a dialog for selecting a folder. Note that the default filename when entering the dialog will include the internal counter as mentioned previously.
Here is the ulterius based file header that is can be optionally included in single frame acquisitions in Propello:
struct uFileHeader
{
int type; // data type
int frames; // number of frames in file (always 1 in Propello)
int w; // width (number of scanlines or pixels)
int h; // height (number of samples or pixels)
int ss; // sample size in bits
int ulx; // roi - upper left (x) (unused in Propello)
int uly; // roi - upper left (y) (unused in Propello)
int urx; // roi - upper right (x) (unused in Propello)
int ury; // roi - upper right (y) (unused in Propello)
int brx; // roi - bottom right (x) (unused in Propello)
int bry; // roi - bottom right (y) (unused in Propello)
int blx; // roi - bottom left (x) (unused in Propello)
int bly; // roi - bottom left (y) (unused in Propello)
int probe; // probe identifier
int txf; // transmit frequency in Hz
int sf; // sampling frequency in Hz
int dr; // data rate (always fps)
int ld; // line density (number of scanlines at 100% sector)
int extra; // extra information (always 0 in Propello)
};
181
62.3.2 Volume File Format
In automatic mode, volumes are captured and stored in a single .vol file with the header information shown below. The Volume Range can be selected
in the Store Data dialog to only store the desired volumes.
Note that the volume files contain stacks of 2D images that can be used to construct the 3D volumes. Saving pre-scan converted data will require two
scan conversions (in the x-y and y-z planes) to be applied to the data set for volume reconstruction. Saving post-scan converted data will provide the
scan converted 2D images in the x-y plane so that it is only necessary to apply scan conversion in the y-z plane.
struct propelloHeader
{
int type; // type of data (0 = pre-scan, 1 = post-scan, 2 = rf)
int volumes; // volumes inside the file
int fpv; // frames per volume
int w; // width of a frame (pixels for post-scan, scanlines for
// pre-scan or rf data)
int h; // height of frame (pixels for post-scan, samples for
// pre-scan or rf data)
int ss; // sample size in bits
int degPerFr; // degree step between frames
};
182
62.5 Imaging Parameters
The imaging parameters available under the controls tab are shown below:
Gain: Adjusts the analog gain applied to both the B and RF data
Depth: The depth to acquire B and RF data at
Sector: Adjusts the number of scanlines within B and RF frames
B-Opt: Optimizes the frequency and receive filters for different tissue types and depths
Tx Freq: Adjusts the transmit frequency for both B and RF data
Focus Depth: The depth of the focal marker
Zoom: Adjusts the zooming level of the post scan-converted B image
Map: Adjusts the map curve of the post scan-converted B image to a specific map index
Additional controls may be added for future versions, for now, just a basic set have been included. Some nice-to-have controls may be TGC, color box
width and height, and dynamic range.
183
62.6 Supported Probes
The following probes are currently supported:
4DC7-3/40
m4DC7-3/40
4DL14-5/38
4DEC9-5/10
62.7 Programming
62.7.1 C++
Propello is based on the Porta SDK, an imaging API built by Ultrasonix for custom ultrasound applications. The program was written in C++, using MFC
for the graphical and widget toolkit, and was developed using the Visual Studio 6 environment. The source code for the program can be found in Porta
versions 4.3 and higher.
62.7.2 MATLAB
The loadvol.m file provides the functionality to read the volume data that is exported from the Propello application into MATLAB. The function inputs are
the data path and the volume number to read. The program outputs the imaging parameters from the header file, a description of which is provided
above.
The figures below show sample image slices respectively from pre-scan B and post-scan B volumes:
184
This figure shows an RF line sample from an image slice:
185
63 Release Notes
Texo Features
Full support for Sonix Embrace has now been added to Texo, this includes the ability to set custom mux tables for the Sonix
Embrace probe.
Added toggle for high frequency firmware in texo_daq_qt demo.
Propello Features
New Matlab file readers
Minor bug Fixes
Amplio Features
Minor bug Fixes
Remote Cine
Enhancement to the UI
General
Bug fix: In 6.1.0 Demo SDKs only work with the first probe connector. This problem is now fixed. See specific comments below.
Texo Features
The texoInit() function is modified to get the Hardware Cine Size as a parameter. The default value is still 32MB, but the user can
change that if larger sequences need to be programmed. It's value can be between 16MB and 512 MB.
A known issue is now fixed, where a transducer which was connected to connectors other than the one with an ID of 0, could not
acquire images in real-time.
Porta Features
The portaGetFrameRate() function's return type is changed to double. The frame rate was previously converted to an integer, but
now it will be returned with double precision accuracy.
A known issue is now fixed, where a transducer which was connected to connectors other than the one with an ID of 0, could not
acquire images in real-time.
Matlab Toolboxes
186
Added a folder inside Matlab directory in the SDK \MATLAB\ImagingModes that contains sample data sets with all the Matlab files
for reading, processing, and visualizing the same data set. For more information see Matlab Imaging Modes.
The kernel mode drivers used for communication with the hardware are updated from windriver 6.2 to 11.20. The upgrading of the exam software will
result in the removal of the old drivers and installation of the new drivers. If you want to downgrade from 6.1.0 to prior versions, make sure to run an
extra patch to downgrade the windriver as well, as this is not part of the previously released update packages.
General
All the demo software are now using the new QT style sheet.
It is possible to save the time stamps together with the raw data from the research interface of the Exam software. The time stamps
go into the lowest level, that is RF-line time stamps.
A long standing issue with manual control of the 3D probe's stepper motor has been resolved.
Exam
The DAQ is now integrated into the Exam software, and can acquire channel data and store it concurrently with the clinical
software.
The .mpr files saved through the research interface where not working properly. The bug has been fixed, and also a new data type
added .mrf to distinguish between the 16-bit rf data in the M-mode and the 8-bit envelope detected log-compressed data.
Scan-cnverted 3D volumes can now be saved from the Sonix 3D engine.
This is part of research features that allows researchers to gain access to data before (pre-scancnversion) and after 3D
reconstruction.
It shares the same "Save Volume" button on the Sonix Touch interface, and would save the reconstructed raw data to the
same location as the current pre-scanconversion data.
The current pre-scanconversion data is called "volume.3dd", and the new reconstructed volume is called "volume.3dv".
A remote_cine program has been added to sdk package, based on the Ulterius sdk that can record raw data for extended periods of
time. It directly writes the data to the hard drive.
DAQ
The driver now supports both 32 and 64 bit Windows systems. Please make sure to install the appropriate drivers depending on the
version of your DAQ and OS.
It is possible to run multiple DAQs at the same time (up to 4 DAQs supported)
Demo software are both updated. Please check the DAQ page to see the new interface and newly added features.
A major threading bug was fixed which involved resource and memory leaks.
The programming of the DAQ sequence is now separated from restarting it. This removes an unnecessary delay caused by
reprogramming the DAQ.
The public interface has been changed. Use both daqProgramSequence() and daqRun() instead of the old daqRun().
The daqRun() function cannot be called from within the callback anymore. It will not restart the DAQ if called from with the callback.
See texo_daq_qt for an example of the proper way to do it.
the daqIsInitialized() would return false if called when the daq was running. Now it returns true.
A function daqDataIndexToChannelIndex() is added to give the mapping between the raw data read from the DAQ, and the actual
transducer elements.
The DAQ driver had a conflict with the GPS driver. Customers having both devices could not use them at the same time. This
issue is resolved for newer DAQs (DAQ 1.1) in this release.
The analog front end's low pass filter's cut-off frequency can now be adjusted through the API (This is the antialiasing filter).
The analog front end's high pass filter's cut-off frequency can now be adjusted through the API.
Amplio
There was a bug in calculation of the scan conversion table which was causing the software to go beyond the input buffer size. The
bug is now fixed in both console and demo software.
Texo
Demo software is now updated. Please check the Texo page to see the new interface and newly added features.
Time delay calculations for beamforming is revised to fixed the jagged line issue when line density is set higher than 128.
rx.rxAprCrv is no longer used, instead F-number for receive beamformer can now be programmed through rx.fnumber parameter.
The user can still use the rx.weightType for setting the apodization for receive beamforming.
A bug was fixed with rx.customLineDuration. In the previous version, saveDelay was summed with the customLineDuration to
form the actual line duration. This is not desirable if the user wants to get a pre-defined frame rate with a nonzero saveDelay.
A long standing issue with manual control of the 3D probe's stepper motor has been resolved.
rx.rxBeamFormingDelay has been added to the API. This parameter can be used to define the start of the receive beam forming
with respect to the start/sync signal.
MATLAB
The folder structure of SonixDataTools has been updated. If you are using any of the code, make sure you use the new folder paths
in your code.
The beam forming code which was packaged with SonixDataTools was not functioning properly. The code has been updated to do
the beam forming more efficiently.
Python
The functionalities of the SonixDataTools in pySonix has been expanded to more closely match the Matlab implementation.
187
A beam-forming function has been added to the imageprocessors module of pySonix which can be used to beam-form channel data
from curved probes as well as linear probes.
Porta
A long standing issue with manual control of the 3D probe's stepper motor has been resolved.
COM
The COM servers had a memory leak issue which is fixed in this release.
General:
If you are using CMake 2.8.12 or later to create your project files, you may need a patch. Please download it from the research
forum: Ultrasonix Research Forum.
Exam
The RF-line display feature which was present prior to 6.0.x and was eliminated is back now due to popular demand. To display the
RF-line spectrum, bring out the research menu B-RF and set the variable to visible.
Ulterius
A new imaging parameter is added that is updated when the user touches the SonixTouch's touchscreen. The parameter updates
on the touch_up event.
Texo
tx.txRepeat is introduced as a new parameter that allows the user to repeat the transmit pulse train (48 pulses) up to 255 times.
This parameter can be used to generate long transmits pulses (e.g. ARFI application, coded excitations, ...)
tx.txDelay is introduced as a new parameter that allows the user to choose the delay from the start signal (or sync signal) to the
transmission of the ultrasound pulse.
Texo sequencing through AddTransmit and AddReceive had stopped working. The bug is fixed, and also an example is added to
the texo_qt_demo to show how to program a sequence using a look up table. Using this method, more lines can be programmed
into a single sequence.
Python
A new Python module is added that can be used to read all the data types saved through the Exam software research interface into
the Python environment, and visualize them.
188
63.6 SDK 6.0.6
General:
If you are using CMake 2.8.12 or later to create your project files, you may need a patch. Please download it from the research
forum: Ultrasonix Research Forum
DAQ:
An option is added for transfer of DAQ data directly into memory without the need to write to the hard drive
Impero:
Impero sdk has been refactored internally to fix possible firmware corruptions. The C interface layer stays mainly unchanged (see
doxygen and the console demo for more details).
Supports Sonix Touch and Sonix MDP(Arrakis) consoles only. Legacy consoles (eg. Sonix RP and older generation MDP consoles)
are no longer supported.
MATLAB
A SonixDataTools package is released for processing and visualizing the data collected by the Exam software and the DAQ.
Previously released Matlab codes on the forum to read/process data are now included in the SDK package and will be updated with
each release.
TexoCOMServer and UlteriusCOMServer are provided as COM servers that can be interfaced with MATLAB code.
Client demo MATLAB codes are provided that connect to the COM servers and acquire data both off-line and in real-time. These
demo software will act as Matlab wrapper for both Ulterius and Texo SDKs.
Porta:
189
Fixed noise in color doppler.
Texo:
The tx.mask's definition is corrected to char[128] instead of int[128].
tx.centerElement = 0.2;
rx.centerElement = 1.24;
Porta:
The signal processing for color doppler imaging was completely re-implemented to make it more sensitive and provide more
dynamic range in both color and power Doppler images (New color/power maps with 256 levels were added). New parameters are
added and some of the old parameters were re-moved (parameters in CDI-UNUSED) or re-used (parameters in CDI-PROC). The
color doppler preset parameters for all the probes were updated to take advantage of these new changes.
190
64 Texo
64.1 Overview
Texo is a development toolkit that allows for lower level control of the ultrasound system for functions such custom beam sequencing, RF data
acquisition, and better transmit and receive control. Custom sequences can be created by setting both transmit and receive parameters for a single
scanline. The ability to set per-scanline parameters make Texo a unique tool to develop with. Texo acquires the corresponding RF data that can be used
for further processing.
191
65 Texo Sequencing
Each sequence programmed will result in single frame of ultrasound data being collected. Frames will continue to be collected into a cyclic cine buffer,
where they can be read in real-time or once the imaging has been frozen.
Sequencing Flow
void main()
{
elem = texoGetProbeNumElements()
192
{
tx.center = rx.center = i
texoAddLine(tx, rx)
}
}
void main()
{
tx.center = rx.center = X
rx.lineduration = PRF_setting
texoAddLine(tx, rx)
}
It is important to note the setting of the line duration for a single line sequence. If the acquisition PRF is based purely on the acquisition depth that was
set, then it may be too high for the power settings used. Always use caution when creating high PRF sequences.
void main()
{
for (i = 0; i < numBlocks; i++)
{
for (j = 0; j < ensemble; j++)
{
for (k = 0; k < linesPerBlock; k++)
{
tx.center = rx.center = (i * linesPerBlock) + k
tx.pulseShape = getPulseBasedOnEnsemble(j)
texAddLine(tx, rx)
}
}
}
}
193
66 Texo Parameters
Texo has three types of parameters, transmit, receive, and data control. The API listing documents these parameters briefly, however this page will offer
more insights on how to use them and some of their nuances.
centerElement
The center element parameter determines where the firing and/or receive will occur on the transducer. Most probes have 64 or 128
elements, and centerElement can be any value in between. Element interpolation is a feature that is automatically programmed into
Ultrasonix software, so that element centers can be specified in 1/10th of an element. Interpolation is done through moderate
alterations to the time delays to steer the transmit beams and receive delays by small increments. Because the aperture of the
transmit or receive must be an even number, most centerElement specifications should interpolate to a half element. For instance if
element 64 is desired as the center, 63.5 (parameter set as 635) should be specified.
Elements Specification
aperture
The aperture parameter specified how many elements are in either the transmit firing and/or receive beamforming. For transmit, up
to 128 elements can be in the aperture, where more elements means greater energy output. A single element can be setup to
transmit if the aperture is set equal to 0. Setting to 1 would be logical, however because of the even aperture requirement, 1 is
handled differently internally. For receive, the Sonix RP can have up to 32 receive elements, and the SonixTOUCH, up to 64. The
channel masking parameter, as discussed below, also plays an important role in acquiring data with specific aperture sizes and
elements.
angle
The angle is in 1/1000th of a degree, and steers the transmit beam by altering the time delays on the transmit firings, and for
receive will alter the time delays in the beamforming process. Steering is useful for phased array transducers, for steering and
compounding applications, and for aligning transmit and receive beams when the center elements are different for a single scanline.
speedOfSound
The speed of sound can be defined so that the time delays are altered to reflect the material or tissue that the wave is propagating
through. This can be useful to try and optimize results when analyzing a received signal.
Additional Notes:
When the centerElement is near an edge, and the aperture goes beyond the transducer element boundary, the aperture will be automatically
cut off, however focusing will still occur with just part of the aperture missing.
focusDistance
The focus distance specifies at what point to focus the transmit beam at. This is accomplished by the software calculating the
proper time delays based on the aperture requested. A focus distance of large distance, for example 30cm can be set in order to
create a plane, or near-plane wave. Its value is specified in microns.
194
frequency
Specified in Hz, the frequency will emit a pulse at a specific frequency. More information regarding transmit pulses can be found
here. Note that each transducer will have a specific bandwidth that it operates best at, as well as a central resonating frequency,
however with Texo, one has the ability to try any frequency value.
pulseShape
The pulse shape alters the transmit pulse as a function of time at the frequency specified. Three values can be set in the string for
defining a pulse: '0' for off, '+' for positive excitation, and '-' for negative excitation. By combining strings of '+' and '-', and using the
proper transmit frequency, one can embed frequencies within a single transmission.
useManualDelays
If set to false, then the focusDistance parameter shall be used to calculate the time delays, if set to true, then it is up to the user to
provide an array of time delay values as described in the following parameter.
manualDelays
This array can be populated to set a delay for each element in 25ns values if useManualDelays is set to true. The number of delay
values (maximum of 128), should reflect the aperture setting, and is always 0 based (i.e. for an aperture of 64, populate array
indicies 0 to 63).
tableIndex
In order to gain the ability to add more scanlines to a custom sequence, transmit definitions can be re-used when calling
addTransmit(). The order in which these are added determines the index to reference, where the first call to addTransmit() refers to
index of 0. If set to -1, then a new transmit definition is automatically added.
useDeadElements
If set to false, then every element is deemed to be working within the aperture, if set to false, then the following parameter can be
populated to emulate dead elements within the transducer, and they will not be part of the firing sequence.
deadElements
When useDeadElements is set to true, this array can be populated with 1's and 0's, where 1 specifies a working element and 0
specifies a dead element. To be implemented properly, the entire array should be populated with valid values.
sync
Enables 1 or disables 0 the trigger output for each scan line. This parameter combined with line trigger allows the user to selectively
turn the trigger on/off for each individual transmit independently.
VCAInfo vcaInfo;
vcaInfo.amplification = 10;
vcaInfo.activetermination = 4;
vcaInfo.inclamp = 1600;
vcaInfo.LPF = 3;
vcaInfo.lnaIntegratorEnable = 0;
vcaInfo.pgaIntegratorEnable = 0;
vcaInfo.hpfDigitalEnable = 1;
vcaInfo.hpfDigitalValue = 2;
where
These parameter affect the gain and frequency response of your RF signal. Depending on your hardware and transducer, you need to optimize these
parameters to get the best range for your RF signal. To see the default values used for each probe in the Exam, look at the "Gen-general(probe
name).xml" file in the Imaging\ folder, under hardware optimizations.
acquisitionDepth
Specified in microns, how deep to acquire data. This will also determine the line duration for the scanline, unless overridden by the
custom line duration.
saveDelay
Data can stored after a certain amount of time. The delay is in microns, and will not delay the acquisition past the depth specified.
For example, if delay is 1cm and depth is 4cm, only 1cm to 4cm will be acquired for a total of 3cm, the first cm will be discarded.
channelMask
An important parameter for acquiring pre-beamformed data or shutting off elements during receive. The mask is split into two 32 bit
words, where on the Sonix RP, only the first word is used since it has only 32 channels, and the SonixTOUCH will use all 64 bits.
Setting all bits to 0, except for one specific index to 1, will result in a pre-beamformed data capture. The mask is centered around
the centerElement that is set in the receive parameters.
195
Masking Channels
useCustomWindow
The index refers to different weighting functions (windowing) that can be applied to the 64 receive channels. 0 means box filter (all
weights equal to 1), 1 is hanning window, ...
applyFocus
If set to true, then dynamic receive beamforming is implemented. If set to false, then all channels specified in the aperture will have
no delay applied.
useManualDelays
If set to false, then dynamic beamforming time delays will be calculated internally based on the applyFocus setting. If set to true,
then it is up to the user to provide an array of time delay values as described in the following parameter. For now, only one delay
can be programmed, however to make dynamic receive beamforming, a very large set of arrays (perhaps a pointer) should be
passable in the future.
manualDelays
This array can be populated to set a delay for each element in 25ns values if useManualDelays is set to true. The number of delay
values (maximum of 64 on SonixTOUCH and 32 on Sonix RP), should reflect the aperture setting, and is always 0 based (i.e. for
an aperture of 16, populate array indicies 0 to 16).
customLineDuration
Programmed in ns, and if set to 0 no effect on the receive, however if non-zero then the line duration will be extended to program a
custom PRF that is different from the pre-calculated duration when the acquisition depth is set. Note that this duration should be
longer than the depth of acquisition duration, otherwise no effect will take place.
lgcValue
A digital gain value that can be applied to the entire scanline.
tgcSel
196
The index into the table in which TGC curves are stored. Up to 10 curves can be stored when calling an addTGC() function.
tableIndex
In order to gain the ability to add more scanlines to a custom sequence, receive definitions can be re-used when calling
addReceive(). The order in which these are added determines the index to reference, where the first call to addReceive() refers to
index of 0. If set to -1, then a new receive definition is automatically added.
decimation
The decimation applied to the RF or B data being captured. Since the sampling is at 40MHz, setting to 0 will have effect, where 1
will result in 20MHz sampled data, 2 will result in 10MHz, etc. Note that for most cases the Sonix RP can only transfer back 20MHz
sampled data, due to PCI card restrictions, and the SonixTOUCH can typically handle up to 15cm of 40MHz sampled data.
numChannels
Since the SonixTOUCH can technically have a variable number of channels (32 or 64), this should be set to properly reflect the
hardware configuration.
rxAprCrv
Programming this curvature allows you to have control over the number of element in the RX aperture as a function of depth. Using
this parameter a fixed F-number can be used for RX beamforming. This curvature can be programmed as follows
rxPrms.rxAprCrv.top = 10; // top point (e.g. 10% of the aperture) rxPrms.rxAprCrv.mid = 50; // mid point (e.g. 50% of the aperture) rxPrms.rxAprCrv.btm
= 100; // bottom point (e.g. 100% of the aperture) rxPrms.rxAprCrv.vmid = 50; // location of the mid point (e.g. in the center)
This is the same as adjusting your Rx Apr curve in the Exam software.
197
67 Texo Data Processing Prior to 6.0.x
DATA structure
Each block represents one byte. The number of samples in one line can be derived by:
Pseudocode: (Texo::getFrameSize()-4)/(numberOfScanlinesPerFrame*sizeof(short))
filename: Name of the raw RF data file, including all the directory information.
eg. \\D:\Data\Texo\RF\output.raw
w: Number of scanlines per frame. This information is determined by counting the times the function texo::addLine() was called for the
sequence
h: Size of each line in bytes. This value can be calculated by dividing the frame size in bytes by the number of scanlines per frame (w).
However, the header of each file takes up 4 bytes, so it is necessary to get rid of first 4 bytes header which is used as a time-stamp for each
frame collected from the cine buffer. The value of frame size is obtained by the function texo::getFrameSize().
frame_no: Number of frames acquired. This information is obtained by calling texo::getCollectedFrameCount().
A known error on the Sonix hardware is the fact that the first RF line on the first frame captured will be distorted. The easiest way to deal with this
problem is to ignore the very first frame. Therefore it is advised to acquire one extra frame than actually necessary and discard the first frame.
fid = fopen(filename,'r');
frame_no*(w*h/2+2);
[v,count] = fread(fid,inf,'short');
count;
images = [];
BigMatrix=[];
The following MATLAB code provides an alternative method to read RF-data from a file. It will create a 3d-matrix containing the single scanlines sorted
by frames.
clear;
%Constants
filename = 'frames.rf'; %Filename of the RF-file
headerSize = 4; %Size of frame header in bytes (constant if not changed by a new version of Texo)
frameSize = 124676; %Size of a single frame in bytes
198
numberOfFrames = 10;
linesPerFrame = 4; %Number of scanlines per frame
%Read RF-file
fid = fopen(filename,'r');
[dataFromFile] = fread(fid,inf,'short');
fclose(fid); %Close the file, we have what we needed
%Sort frames
numberOfFrames = numberOfFrames-1; %drop first frame as invalid, as described in forum
frames = zeros(frameSize/2,numberOfFrames); %create empty matrix (speeds up copying)
for i = 1:numberOfFrames, %copy whole frames in matrix
frames(:,i) = dataFromFile(i*frameSize/2+1:(i+1)*frameSize/2);
end;
clear dataFromFile; %Delete data to free memory
The enevelope detected samples have to be allocated to grayvalues. Note that more than 8bit resolution are not neccessary or useful, since the human
eye can only resolve less, than a hundred grayvalues. One single frame of Texo's envelope detected RF data has to be split into the single scanlines it
consists of and these scanlines have to be arranged next to each other. In the following image, the process is simplified and broken down for laymen, so
there are only two grayvalues, black and white.
Creating Images
Here is an pseudocode example of a thread's function, that constructs an image out of the raw data. The sequence that goes hand in hand with this
image generation method, is a simple linear sequence:
199
for(int i=0;i<tex->getProbeNumElements();i++) {
rx.centerElement = i*10+5;
tx.centerElement = i*10+5;
tex->addLine(envData, tx, rx);
}
Since the process of generating an image can be quite time consuming, it should be delegated to a thread, in order to not make the program
unresponsive. Note, that the geometrical dimensions of the wavelength and the dimension of the probe are not respected in this simple example. Also it
is not an ideal representation of the grayvalues, since the human eye has a higher sensitivity for green colors, depending on the method to display the
image a weighting function should be used.
i=0
for(x=0, x<numberOfLines, x++) { //iterate through the scanlines along the transducer
for(y=0, y<samplesPerLine, y++) { //iterate through the samples perpendiculat to the transducer
brightness = data[i]
setColorRGB(brightness, brightness, brightness) //a RGB-color with identical values in every channel is always a shade of gray
drawPoint(x,y)
i++
}
}
200
68 Texo Parameter Effects
68.1 Introduction
In order to characterize the Sonix RP machine in terms of the relationship between its image and TEXO parameters, several experiments were
conducted. To minimize variables, a default setting is applied to all parameters except for the variable in question. The default setting is as follows:
System SonixRP
Target Multipurpose ATS Phantom Model 539
Transducer L14-5/38
Imaging Depth 50 mm
Transmit Aperture 64 elements
Receive Aperture 32 elements
Transmit Frequency 9.5 MHz
Transmit Cycles 4 Cycles
Transmit Power 15
TGC 0.80 (80%)
Transmit Focus 25 mm (Depth/2)
Dynamic Focus ON
Mask 0xFFFFFFFF
In all the experiment, to avoid imaging artifacts, the first frame was ignored and the second frame was used in the study.
201
Results
202
Results
203
Results
204
Results
205
Results
206
Results
207
Results
208
Results
209
69 Texo GUI Demo
SDK 6.X comes with executable Texo demo file located at \sdk\bin\texo_demo_qt.exe
Alternately, Qt Creator can be used to compile the GUI demo using the steps provided at the Qt Creator page.
Texo Qt GUI
69.2 Setup
Run the Texo_demo_qt.exe on Ultrasonix machine and make sure that Sonix Exam program is turned off.
Click on the Initialize tab on the top and make sure the Mian Board and PCI Card are set correctly based on your system.
Press the Power button and wait for the Texo to initialize.
Select the probe (if more than one connected).
Click on the Run button (imaging will start).
Click on the Stop button (imaging will stop).
If you change any image parameter, press the "Apply Changes" button every time. Guide for the function of each parameter can be found in Texo
Parameters.
210
69.3 Interface (6.1)
The following figure shows the main user interface of the Texo Demo Qt software (6.1):
The user can display the RF image both horizontally and vertically using Transpose RF check box.
The user can scroll through different frames when the imaging is stopped using thecine scroll.
Sliders on the left can be used to help with visualization of different channels. Slider on the bottom plus the span ratio can also be used to
control the axial zoom for different channel display in real-time.
The software also allows the user to store the RF data into .rf files with proper header information when the imaging is stopped. This stored .rf
file can then be processed by the Amplio Demo Program for generating B-mode images off-line. The save button will save all the frames in the
buffer into TexoData.rf file in the same folder as the executable file.
211
70 Texo Licensing
Starting software version 6.1.x, Texo will require a license to function properly. If you do not provide a license you will receive the following message
To check for licensing, Texo looks into the following address to locate its license \sdk610\texo\dat\licenses_web.txt. This is different from the licensing
path that you use for your Exam which is D:\Ultrasonix Settings\licenses_web.txt. You need to copy and past the Exam license into the texo license.
Note: You need to press an enter in the end. Otherwise the software will not be able to read your license.
212
71 Ulterius
71.1 Overview
Ulterius is a tool that allows users to control the system without having to physically be using the console, or even be in the same room. It allows full
control of all the imaging parameters, the ability to perform system functions such as switch probes, freeze/unfreeze and change imaging modes, as well
as capture any data that the research software offers. What makes Ulterius unique is it's ability to perform all of these operations over a network
connection. Applications using Ulterius can run directly on the ultrasound system but can also operate on a PC connected to the same network.
Task automation either on the machine or through a network, so physical console operation is necessary
Real-time data collection for processing and display
Device synchronization through software interrupts
Distribution of data processing to multiple PCs
The demonstration programs that come with Ulterius take advantage of all of the major functionality including:
Retrieval of the imaging parameter list, as well as parameter properties and values
Parameter value setting (useful for going beyond preset boundaries the interface implements)
Incrementing or decrementing a parameter by a fixed amount
The data injection feature can also be useful when imaging in the Dual B mode to compare ultrasound images that have been processed differently.
Version 0.x could be considered as the RP-SDK toolkit which first took advantage of shared memory transfers and an interface for remotely
interacting with the ultrasound software.
213
Version 1.0 created a brand new interface to work with the Sonix RP software, and it was named Ulterius. This version offered true network
functionality with acquisition of multiple data types in real-time.
Version 2.0 implements the same interface, however the parameters structuring on the SonixTOUCH (version 5.5.x software), was changed,
so Ulterius was updated to reflect this. The older 3.x series for the Sonix RP was also updated to reflect the changes.
214
72 Ulterius Data Acquisition
Since there are many different types of data that can be collected on the ultrasound and through Ulterius, a special function needs to be called to tell the
research software what data to send to Ulterius. The function setDataToAcquire() should be used to specify this, where the input is an integer mask with
each bit representing a data type to enable.
enum uData
{
udtScreen = 0x00000001,
udtBPre = 0x00000002,
udtBPost = 0x00000004,
udtBPost32 = 0x00000008,
udtRF = 0x00000010,
udtMPre = 0x00000020,
udtMPost = 0x00000040,
udtPWRF = 0x00000080,
udtPWSpectrum = 0x00000100,
udtColorRF = 0x00000200,
udtColorCombined = 0x00000400,
udtColorVelocityVariance = 0x00000800,
udtElastoCombined = 0x00002000,
udtElastoOverlay = 0x00004000,
udtElastoPre = 0x00008000,
udtECG = 0x00010000,
udtPNG = 0x10000000
};
Note that udtScreen and udtPNG are reserved for future use.
bool newFrame(void * data, int type, int sz, bool cine, int frmnum)
Each time the callback is triggered, it will be necessary to find out what type of data got sent, in the case where a mask with more than one bit was set.
The callback implemented must have a type input parameter that will correspond to the data enumeration above. The callback also provides a pointer to
the data sent to Ulterius through the data parameter. This buffer should be treated as temporary, and if the program needs to work with the data, then a
memcpy() should be used to transfer the data into an additional buffer created by the program. The size of the data is held in the sz parameter, however
a call to getDataDescriptor() will also retrieve information about a specific type of data, including size. The cine boolean is used to specify whether the
data is coming from real-time acquisition or after the pipeline has been frozen. Finally, the frmnum parameter will act as a counter and if tracked, the
program can determine if any frames were dropped.
void main()
{
ulterius->setCallback(datamask)
while(1)
{
// do something
}
}
void processingFn()
{
215
if (datatype == X)
{
// run some algorithm on 'buffer'
}
else if (datatype == Y)
{
// run a different algorithm
}
}
void main()
{
ulterius->setCallback(datamask)
frames = ulterius->getCineDataCount(datatype)
if (use_callback)
{
ulterius->getCineData(datatype, frame_number, true)
}
else
{
ulterius->getCineData(datatype, frame_number, false, buffer, sz_buffer)
// do something with the data in buffer
}
}
72.4.1 Compression
Since frames of data can be large, some special features have been implemented for additional options. TCP/IP transfers can be slow since, since it is a
reliable protocol (i.e. vs UDP). When acquiring data on the ultrasound through an Ulterius program, one typicaly does not witness too much of a
slowdown, however over a network there may be some lag. Ulterius has a compression feature, which will compress frames using a Huffman algorithm
to be send across the TCP/IP connection, this is set through setCompressionStatus(). The Ulterius SDK will decompress the data automatically, and the
client program gets access to the full frame of data. Not all data compresses well, so one should test out various types before automatically setting
compression to on. If compression takes a long time for a certain type of data, then the lag will be longer than without compression.
Shared memory is also a new feature as of version 2.0 of Ulterius, that can be set by calling setSharedMemoryStatus(). If one is collecting multiple types
of data on the system, for example B mode prescan, B mode scan-converted and RF data all at once, then the TCP/IP data transfer connection may lag,
and frames will be dropped. To help overcome this, a shared memory interface can be used instead of TCP/IP; this is transparent to the Ulterius
program, and fully handled internally in the Ulterius SDK. It uses fast memcpy() functions to copy data from ultrasound software to the Ulterius program.
It must be noted that transfers using shared memory, can only be performed when the Ulterius client is running on the ultrasound itself, and not over a
network.
216
73 Ulterius Injection
73.1 Overview
Image injection is a useful feature where Ulterius programs can make use of the already available imaging display provided by the main research
software. Graphical programming, though useful, does not necessarily have to take place when developing with Ulterius. The injection feature allows a
program to hijack the B mode display in any given imaging mode and display some custom contents. Using setInjectMode() will enable or disable this
feature. When enabled, the B mode image will stop displaying anything; when this occurs, the imaging pipeline is still running, and the system is still
acquiring data, however nothing will be displayed. This may be useful when in RF mode, the Ulterius program can capture the RF in real-time, process
the data into a viewable format, and then inject back into the research software.
1. The first is where the entire B mode display area is available to write over with the injection of 8 bit greyscale data. The research software will
automatically convert it to 32 bit format and apply the chroma map if enabled.
2. The other format is similar, however the user injects 32 bit data, and essentially sets each RGB pixel as required. This is useful if
meta-information is required to be overlaid on the image, for example, data from an external source or some numeric value to be displayed
that was computed in a special algorithm.
3. The final format is a 8 bit greyscale as well, however the data provided to the injection function is in a ultrasound scanline/sample format,
where pre-scan data is automatically scan-converted for display.
The first two formats may require use of the Pando SDK, if one wishes to scan-convert the processed data prior to display, otherwise the third format will
negate the need to do so, but also limits the availability of the display buffer for custom graphics.
void main()
{
ulterius->setInjectMode(true)
while(1)
{
// do something
}
}
void processingFn()
{
// do something with the acquired buffer
// ...
217
74 Compiler Setup
In the past, Ultrasonix released it's SDK packages with project settings for Visual Studio 6.0, our base developing platform. Currently, we now use the
CMake system to generate workspaces and projects. Because of the use of CMake as well as the large selection of compilers available, no project files
are included with the demo SDK programs.
218
75 Qt Setup
Qt is great platform that allows for easy to build GUI applications, and will help make software more portable, as perhaps the future of Ultrasonix
platforms lies in multiple platform supports.
#include <QtGui/QtGui>
#ifdef WIN32
#include <windows.h>
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
return main(__argc, __argv);
}
#endif
219
76 Qt With Visual Studio 2010 Setup (SDK 6.x)
Qt is great platform that allows for easy to build GUI applications, and will help make software more portable, as perhaps the future of Ultrasonix
platforms lies in multiple platform supports.
CMake
Click on Configure
Once configuration is successful, click on Generate
220
76.3 Visual Studio Setup
Open Visual Studio 2010.
Open Qt Menu -> Qt Options
Make sure the Qt Library's directory is linked correctly.
Qt Add-on Menu
Once CMake has generated the built solution for the SDK, open the generated folder (e.g. C:\sdk6_CMake)
221
CMake
Pick which SDK you want to run and right click and choose properties.
Under Configuration Properties ->Debugging -> Environment add ..\..\..\..\bin to the PATH then click OK
Note: If you still get an error for not linking the .dll file, then copy the file into the bin folder by the CMake.
222
Adding Environment Path
223
77 Visual Studio 2010 Setup
You can compile all the SDK's from version 5.7.4 and up using Visual Studio 2010.
Empty project
In the next window select An empty project. and press Finish and the OK.
In the project tab go to project->Add Existing Item. Select all the files in the folder and press OK to add them to your project. Don't forget to
also add the resource files under the res folder.
224
Adding files to your project
To compile the project, the following changes need to be added to your project properties. These settings can be modified by going into
Project->Properties. In the project properties:
225
MFC in shared dll
226
setting directories
227
project settings
Note: for SDK Version 6.x, if you get error LNK2019 then remove the wWinMainCRTStartup
228
output file name
229
input
230
setting entry point
Now you can press OK and the console project should compile.
231
78 Qt Creator
Qt Creator is a cross-platform C++ development environment which is part of the Qt SDK. As Ultrasonix moving to cross-platform development, starting
V6.0, SDK packages include Qt project files to be easily compiled with Qt Creator.
78.1 Installation
Qt Creator can be downloaded from the official website.
Version 2.5 is released at time of this writing.
To open a project:
232
Run Button in Qt Side Menu
233
Building Project Files in Qt
Qt will ask for the setup options for the project:
Once the project is opened, click on the RUN to start building the project and running it.
Note: qt.pro file should have all the correct project Path to link all the necessary libraries. If you get an error about linking to library, please check the
path in the file and correct it.
Another error that might be generated for some of the SDK has to do with connecting to the .dll files in the bin directory. In order to fix the error is first
checking the path is correct in the qt.pro file. If the error still issued, then copy the files in the bin folder to the debug folder that is generated by Qt
Creator to build the project.
234
79 Sequencing
Sequencing is the process through which a sequence of ultrasound pulses are transmitted into the tissue and the RF data are collected. Typically, the
sequence depends on the type of the ultrasound transducer used, and the type of the image to be acquired.
Ultrasonix systems use 1D transducers arrays, in which the single transducer elements are arranged in a one-dimensional array. For this type of
transducer, the sequences used are described here.
In the simplest B-Mode sequence, the beam is moved across the face of the transducer array one line at a time. Typically 96, 128, or 256 pulses are
transmitted along the lateral direction of the array and RF data are collected for each transmission. The number of scan lines is called the Line Density
in the jargon of ultrasound imaging.
The ultrasound propagates through most soft tissue at a speed of 1540 m/s. Therefore to image deeper points in the tissue, the ultrasound system has
to wait long enough for the echoes to come back. For instance to acquire RF data to a depth of 80 mm, 80e-3*2/1540 = 103 microseconds is required.
To acquire 128 lines of RF data, 128*103e-6 = 13.3 milliseconds is required. Hence, the physical limitation of ultrasound speed together with the
imaging sequence determines the maximum frame rate at which the imaging can be performed. In this case the maximum frame rate would be 1/13.3 =
75 Hz.
In practice, more complex sequences are usually used for B-Mode imaging. The Sonix platforms provide great flexibility for the design of complex
sequences. Here, some of the more important complex sequences are described.
In the simple B-Mode sequence, the beam can only be focused at a single depth for each scan-line. The resulting B-mode image has a higher resolution
and focus at this single focal depth than other depths. To get a good resolution and image quality at different depths, multiple transmissions can be used
for the same physical location, but with differing focal depths. For example with a Line Density of 128 and two focal depths at 40 mm and 60 mm, first
128 scan lines are acquired with a transmit focus of 40 mm, and then 128 more scan lines are acquired from the same locations but with a transmit
focus of 60 mm. Therefore, the total sequence in this case consists of 256 lines. Given the same depth of imaging as the previous example the frame
rate will drop to 37.6 Hz. As a general rule, the more the number of focal depths, the lower the frame rate.
235
79.1.2 Pulse Inversion Harmonics
Tissue mechanical behavior is nonlinear in nature. Although a large portion of the transmitted energy to the tissue in the form of ultrasound waves has a
linear interaction with the tissue, a small amount of nonlinear interaction is always present. This interaction is useful for imaging special features of
tissue.
Because of the nonlinear interaction, the RF data not only contains a signal centered at the transmission pulse frequency, but also has signals around
multiples of the transmission frequency, or its harmonics. One method of imaging the harmonics is to scan each location with two pulses which have
an identical shape but reverse polarities. When the RF data coming back from tissue for these two pulses are added together, the signals centered at
the transmission frequency, as well as its odd harmonics will be cancelled out. However the signals around the even numbered harmonics will be added
together. This method is called Pulse Inversion Harmonics (PIH) imaging.
Spatial compounding is a techniques for producing better quality ultrasound images by looking at the tissue from different angles. The technique uses
beam-steering to illuminate the tissue from a number of different angles. In the jargon of ultrasound imaging, the images are then compounded to
produce the better quality images.
The B-Mode sequence for spatial compounding consists of a set of B-mode sequences acquired consecutively at different beam-steered angles. The
number and range of angles used depends on the application and probe type, and determines the improvement in image quality. The trade-off is that
the sequences would be longer, and will result in reduced frame rates. The reduced frame rate results in more motion artifacts which in turn reduces the
image quality.
For information on how to use the Sonix platforms for custom sequencing see:
Texo Sequencing
Texo functions and parameters for sequencing
Exam parameters for sequencing
Through B-GEOM
Through B-FOCUS
236
79.3 Pulse(d) Wave Doppler Sequence
Pulsed Wave Doppler imaging (or PWD imaging) is commonly used to image and monitor the velocity profile of blood flow in blood vessels. The profile
image is presented to the user as a swept-over-time image which is called the Doppler spectrum in the jargon of ultrasound imaging. Moreover, the
signal is typically sent to an audio amplifier and presented to the clinician via speakers on the system so they can hear the blood velocity profile.
The typical frame rate of a B-mode sequence is not high enough to track the fast moving blood, specially in larger vessels. Therefore a special
sequence is required with a high frame rate to achieve PWD imaging. As a solution, the velocity profile is taken along a single scan line. A single scan
line can be acquired repeatedly at a high frame rate, form which the velocity information can be derived. The line segment along which the velocity
information is collected is called the gate in the jargon. In summary, simplest PWD sequence , often called PWD mono, consists of multiple scanning of
the same scan line at a certain Pulse Repetition Period (PRP).
In order to give the clinician, the ability to adjust the gate in real-time on the B-mode image the simple PWD sequence needs to be combined with a
B-mode sequence. This is the origin of the PWD Duplex sequence. Acquiring B-mode images at the same time as the fast PWD sequence is not trivial.
Depending on the level of PRP, two types of sequences are possible.
If the PRP has a long duration, for instance more than 1 ms, it is possible to acquire other data in between the acquisitions of the PWD scan line. The
B-mode sequence is thus broken down to small sectors, each of which is fit in between the successive acquisitions of the PWD scan line. This sequence
is called non-interrupted PWD Duplex as the acquisition of the PWD scan lines is not interrupted by the B-mode sequence.
However, if the PRP is too short, for instance 100 microseconds, there is not enough time to acquire even a single scan-line from the B-mode sequence
in between the successive acquisitions of the PWD scan line. In this case, the acquisition of the PWD needs to be interrupted, for part of a B-mode
image to be acquired. Therefore the sequence will consist of the PWD mono sequence and B-mode sequence interleaved. These are called interrupted
PWD Duplex sequences.
Also see:
237
Exam Parameters for PWD Sequencing
As with PWD, the typical frame rate of a B-mode sequence is not high enough to track the fast moving blood, specially in larger vessels. Therefore a
special sequence is required with a high frame rate to achieve color/power Doppler imaging. The solution here is to divide the ROI into smaller sectors,
each of which can be scanned at a higher frame rate. Each sector is repeatedly scanned for a set number of times before the sequencer moves to the
next sector, until the entire ROI has been scanned. The set of RF data acquired from the ROI are often called the ensembles. To give the clinician live
feedback from the tissue anatomy, in addition to the ensembles, a B-mode sequence is often added. Hence, the final sequence consists of the
ensembles plus a B-mode sequence.
See Also:
238
80 Transmitting Ultrasound Pulses
Ultrasound pulses are mechanical waves which can propagate in tissue. In order to create these pulses, ultrasound transducers are used. An
ultrasound transducer can typically convert mechanical energy into electrical energy and vice versa.
pulse waves
continuous waves
An ultrasound pulse wave is generated by a applying a short duration electrical signal (a pulse) to an ultrasound transducer. The pulse can be a a signal
like this:
u(t) = sin(2pi5MHzt)
No transducer can convert the electrical pulse into a perfectly matching pulse of the same shape. What determines the shape of the emitted pulse wave
(as a function of time) from the transducer is not just the shape of the applied electrical pulse, but also the frequency response of the transducer.
Applying an electrical pulse to a transducer is sometimes compared to banging a bell with a stick. The bell will keep ringing even after the stick is no
longer there. The figure shows schematically the input electrical pulse and output mechanical pulse from a transducer.
Although to quantify the frequency response of a transducer, a graph of energy vs. frequency is needed, what is typically assumed in most ultrasound
applications is that the ultrasound transducer is a bandpass filter. That means it will pass frequencies in a certain range, but block very low and very high
frequencies. Therefore one only needs to know the lower and higher cut-off frequencies of the transducer.
Ultrasonix has a very straight forward convention for communicating the lower and higher cut-off frequencies of its transducers to its customers. See
Naming Convention of Ultrasonix Transducers.
In the following figure, the a+ and a- are the positive and negative amplitudes of the signal, which are adjustable (See here). dt which is the shortest unit
of time used in the pulse is also adjustable, and determined by the transmit frequency. Needless to say, the transmit frequency has to be a multiple of
the clock cycle of the system (20, 40, or 80 MHz). The very first system we shipped had a clock cycle of 20 MHz. Almost all of the operational Sonix
systems in the field at this time (2013) have a clock cycle of 40 MHz. SonixDAQ's clock cycle can be chosen through software to be either 40 or 80
239
MHz. The shape of the pulse itself can be programmed as a pattern consisting of the three characters +, 0, and - as shown in the bottom of the figure.
Sonix systems provide yet another feature for designing longer pulses: A certain pulse pattern, for instance "++-0-" can be repeated an arbitrary number
of times to design a longer pulse. For example if the above pulse is repeated, the following pulse is obtained:
Also see:
Voltage Levels
Transmit Control
Texo Parameters
Texo Parameter Effects
Texo Parameters for Temporal Shaping
Exam software parameters for temporal shaping:
In B-mode Imaging
In Pulsed Wave Doppler Imaging (PWD)
In Color Doppler Imaging (CDI)
When an ideal point source of waves emits ultrasound waves in a medium, the energy will propagate on the surface of an expanding sphere. Moreover,
the amplitude of the pulse will be the same on all points on this sphere.
Ultrasound transducers are not ideal point sources. They come in different shapes and sizes such as rectangular and cylindrical. When a single
ultrasound transducer emits mechanical energy in the form of the ultrasound wave, the energy still propagates on the surface of an expanding surface,
which is very close in shape to a sphere, specially if the transducer is small. However, the amplitude of the pulse is not the same in different directions.
In other words, there is a directionality pattern associated with the transducer.
Speaking in terms of optics the transducer has a beam width: It can illuminate objects which are right in front of it but cannot illuminate objects which are
to the sides. This is a desirable feature, however: Imagine if the beam width could be decreased to a narrow beam, like a laser, the transducer would be
able to image a single line of the tissue! An array of such transducers would be able to scan multiple lines, forming a cross-sectional image of the
tissue. As one would expect, this ideal situation never happens. However through techniques collectively known as beam forming the spatial shape of
the pulse is adjusted to make it as close as possible to such a narrow beam.
240
One way to narrow the beam is through the use of physical lenses. Just as an optical lens can be used to narrow a diverging beam of light, an
ultrasound lens, attached to the transducer surface can narrow the beam, and focus it at a certain point. This is called mechanical beam forming.
A second way to narrow the beam is through the use of multiple transducers, which transmit at different times. This technique is called electronic beam
forming. The next figure shows the concept. Five transducer elements are placed side-by-side. Similar pulses are applied to the transducer elements,
however the electrical pulse is applied to the outer elements before the inner elements. As a result, the spherical wave fronts will intersect at a focal
point. The figure also shows schematically how the beam would look like in this situation. The main advantage of electronic beam forming over
mechanical beam forming is that by changing the time delays, the focal point can be changed.
Ultrasound transducers are commonly arranged in a 1D array, the transducer array. Each of the transducers in the array is called an element. The
next figure shows a typical arrangement in a linear probe. Typical dimensions of the elements and pitch are also given.
241
With such an arrangement, it is possible to carry out electronic beam forming in the lateral direction, which is the direction in which the elements are
arranged in the array. However the beam would still be divergent in the elevational direction. To overcome this problem, mechanical beam forming is
used in the elevational direction. In other words, a fixed physical lens is present in ultrasound transducers which focuses the beam in the elevational
direction at a fixed elevational focus depth. Electronic beam forming is used to focus the beam in the lateral direction.
Another technique commonly used in ultrasound imaging to determine the spatial shape of the ultrasound pulses is beam steering. Through this
technique, the angle of the beam with respect to the transducer can be changed. The technique is implemented in transducer arrays through electronic
beam forming. The time delays of the electric pulses sent to the individual transducer elements are adjusted to steer the beam in one direction or the
other. This is particularly useful for looking at anatomical structures from a different angle by illuminating them from the side.
242
Sonix platforms provide a number of different parameters which can be used for electronic beam-forming using transducer arrays. This is achieved
through the application of identically-shaped temporal pulses to different transducer elements in an array, with differing time delays.
The elements to which the pulse will be applied can be selected via a mask. A center element needs to be specified which determines the position of
the center of the beam with respect to the transducer array.
The relative delays for different elements can be determined either automatically, or (manually) by the researcher. In the case of automatic delays, a
focal depth needs to be specified for the Sonix software. The Sonix software then calculates the delays that would focus the ultrasound beam at the
specified depth.
In the case of manual time delays, the researcher can specify the time delays (needless to say, as a multiple of the clock cycle of the system).
Another adjustable parameter is the aperture, which determines how many elements will be involved in the formation of the ultrasound pulse. These
elements will always be chosen evenly on both sides of the center element.
When automatic time delay calculation is used, the angle of the beam can also be changed via a parameter passed to the software. This parameter can
be used to steer the ultrasound beam.
Also see:
Texo Parameters
Texo Parameter Effects
Texo Parameters For Transmit Beam Forming
Exam Parameters For Transmit Beam Forming:
Through B-TX
Through B-GEOM
Through PWD
Through CDI-TX
Through CDI-GEOM
243
81 Ultrasound Image Computation
After the beam formed RF data passes through all its processing stages, it becomes ready as an input to ultrasound image computation processes.
Different types of ultrasound images are used in clinical practice, each conveying a particular type of information to the clinician.
The RF data is an alternating sinusoid whose amplitude and phase are changing. The alternations by themselves carry little information about the
structure of tissue being image. On the other hand, the amplitude of the sinusoid shows how much reflection and backscattering has happened at a
particular depth in tissue. Therefore the amplitude demodulation is carried out to take out the alternations, and leave the amplitude signal in tact.
Techniques for amplitude demodulation in ultrasound imaging are adapted from telecommunications. The two most popular methods are through the
Hilbert Transform, and IQ demodulation. In version 6.0.x of the Exam software, the demodulation technique is IQ Demodulation. It also includes filtering
of the RF data in the base band. The cutoff frequency and the order of the filter can be adjusted flexibly through Exam B-IQFILT.
Traditional B-Mode images are 2D cross-sectional images of tissue acquired using 1D transducer arrays. A cross sectional image of the tissue can be
formed by placing the A-Mode data for successive scan-lines side by side to form a 2D array of data. However, a number of processing steps are
carried out on this array, before it becomes a presentable B-Mode image. These steps are described here.
From beam formed RF data to pre scan converted B-Mode images in version 6.0.x
From beam formed RF data to pre scan converted B-Mode images in versions prior to 6.0.x
The variation in the amplitude of the RF data is relatively high. If the same image is mapped linearly to a 0-255 gray scale image, many important tissue
structures will only have image values of 0-9. In other words, the presence of a few very high amplitude points in the image overshadows everything
else. In order to achieve a balance (or a more even histogram), the amplitude values are mapped nonlinearly by a logarithmic-looking function which
adjusts the dynamic range.
244
In version 6.0.x of the Exam software, the dynamic range adjustment is performed by dividing the range of values into two portions at a pivot point.
Below the pivot point a logarithmic compression is used, and above the pivot point a linear mapping is used. The parameters for both parts can be
adjusted flexibly through Exam B-DYNRNG .
From a clinical perspective, it is very important that the geometry of the B-mode image shows the exact geometry of the tissue being imaged. For
instance if a tumor has a spherical shape in reality, it is essential that its cross sectional B-mode image has a circular profile, and for instance, not an
elliptical profile.
The B-mode image obtained by putting together the A-lines, however, does NOT have this property. As this image does not take into account the
geometry of the transducer, and the manner in which the RF data has been acquired, the generated image, although containing information about the
structure of tissue, is not geometrically correct. Scan conversion is the process through which the data is mapped to the actual geometry of the tissue.
As an example, assume that a curved transducer has been used to acquire the data. In this case, the samples of the data in the array come from a
curvi-linear grid as shown in the figure. The coordinates of the data on the transducer grid are:
The sample number, determined by the sampling frequency, decimation factors, etc.
The line number, determined by the line density, etc.
The B-mode image in the transducer grid is called the pre scan converted B-mode image.
In order to obtain a geometrically correct image, the pre scan converted image needs to be interpolated into the display grid, which represents the
display pixels on the LCD screen of the system. Therefore, scan conversion is essentially an interpolation process. The importance of the LCD
pixels is that if the pixels are not square in shape, this should be taken into account in the image generation. Otherwise the final image would appear
skewed on the screen. The figure shows a typical display grid (dashed lines) overlaid on the transducer grid.
245
In order to perform the scan conversion, the geometry of the transducer grid and the screen grid must be known, as well as their location with respect to
each other. The Exam software has some parameters as inputs to scan conversion. See Exam B-SCVT .
The B-mode ultrasound images usually have a grainy look, unique to ultrasound images. The grainy pattern comes from multiple scattering of the waves
from the scattereres in tissue and their constructive-destructive interference. These grains are called speckles in the jargon. To enhance the quality of
the B-mode images, image processing algorithms are used to reduce the speckles. These algorithms are usually called speckle reduction algorithms.
The speckle patterns differ from one tissue type to another as well as from healthy to diseased tissue. They help the clinicians in the diagnosis.
Therefore speckle reduction is an art which retains these information, while enhancing the appearance of the images. Ultrasonix uses proprietary
software for the image enhancement, and cannot distribute it to its research customers. However the Amplio SDK provides some in-house developed
speckle reduction filters.
246
81.3 M-Mode Images
M-Mode images are images that show the motion of different points of tissue along a SINGLE scan line as a function of time. To generate the M-Mode
images, the A-mode data from successive acquisitions (frames) of the same scan line are placed side by side in an array as an image. The image is
updated in real-time as newer data become available. As can be seen from this description, after the A-line has been computed, there is really not
further processing needed on the data. Therefore the Exam software does not have any particular parameters related to the processing of the M-mode
images. See Exam M.
The acquired RF echo signals go through a demodulation to generate in-phase and quadrature components (I/Q).
I/Q signals then go through a high pass filter, also known as a wall filter, to remove strong slower motions.
The wall filtered signals are then used to generate the spectrum using short time Fourier analysis.
See also:
247
Back to A Reference on Ultrasound Imaging
248
82 Voltage Levels
The positive and negative voltage levels for the transmission pulses depends on the version of the hardware.
The version can be found using regedit of windows under HKEY_CURRENT_USER\Software\Ultrasonix\Exam\System\Revisions. Look for the "Main"
revision, which is the revision of the main ultrasound board.
249
250
83 White Papers
83.5 References
1. ? Urban, Matthew. Mayo Clinic. Shearwave experiments with the Sonix RP. 2009.
2. ? Hoyt, Kenneth. University of Alabama. Contrast experiments with Sonix RP. 2010.
251
84 Rx Timing
SequencerCustom is behind the Texo. In this version, the bug with customLineDuration is fixed. User can determine tempoBeforeShoot.
252
84.2 Exam 6.0.3
The hardware/software timing for sequencerB which is our main sequencer is as follows:
253
The hardware/software timing for sequencerCustom which is the Texo sequencer is as follows:
254
255
85 Block Diagrams
256
85.2.2 Sum After Envelope
257
85.2.3 Sum Before Envelope
258
85.3 Processing Chain Path Diagrams (ver 6.x)
Starting version 6.x, all the signal processing blocks have been moved to the PC side. For all the imaging modes, such as B/M/D/C/E, the front block is
only responsible for beamforming. The reconstructed RF signals is then transferred to the PC in real-time. All the other processing steps such as
are all done on the PC side. For more information please check the Amplio SDK.
259
86 System Curves
The variable type UMC_CURVE is used to represent many different parameters in the Ultrasonix software; vertical and lateral TGC?s, aperture
openings, and delay curves are all typical parameters that use this type.
class UMC_CURVE
{
public:
int t;
int m;
int b;
int vm;
};
There are 4 parameters that represent the curve: t, m, b, and vm. The curve represents a 100 x 100 unit box that is interpolated based on the parameter
that the curve represents.
t is the horizontal position of the top-most point of the curve. The range is 0 - 100. Note that this point?s vertical position is always fixed to 0.
m is the horizontal position of the mid-point of the curve. The range is 0 ? 100.
b is the horizontal position of the bottom-most point of the. The range is 0 ? 100. Note that this point?s vertical position is always fixed to 100.
vm is the vertical position of the mid-point of the curve. The range is 0 ? 100.
The figure below, shows a visual representation of the curve represented by the following values. Note that the actual interpolation curve is a
piece-wise linear curve as demonstrated by the code. Only for visual representation, the curve looks smooth.
t=100
m=18
b=0
vm=60
Interpolation
// POINTS
// getting the coordinates of the zone points; curve contains the % coordinates
// and getCurvePosition() converts it to pixel coordinates point 1
p1.x = 0;
p1.y = getCurvePosition(curve.t, maxY);
// point 2
p2.x = getCurvePosition(curve.vm, maxx);
p2.y = getCurvePosition(curve.m, maxY);
// point 3
p3.x = maxx;
p3.y = getCurvePosition(curve.b, maxY);
// SLOPES
// if the line has reached the middle point already we have to
// calculate slope for a second line which will go to the bottom zone point
double slope;
if (p2.x > x)
{
slope = (double)(p2.y - p1.y) / (double)(p2.x - p1.x);
}
else
{
slope = (double)(p3.y - p2.y) / (double)(p3.x - p2.x);
}
// Y-INTERCEPTS
int yintercept1 = -p1.y;
int yintercept2 = (int)((slope * (double)p2.x) - p2.y);
260
// return values
int value;
if (p2.x > x)
{
// calculation of the x value
value = (int)((slope * (double)x) - yintercept1);
}
else
{
// calculation of the x value
value = (int)((slope * (double)x) - yintercept2);
}
return value;
}
261
87 Saving volume data in freehand 3D
The saved data will be a .3dd raw data file, together with a .3dd.xml file which contains the information about the sizes of the data. The saved data, in
addition to the roi, includes the top portion of the acquired image. Therefore the size of the data in the .3dd file should be calculated as explained in the
following figure.
262
88 Synchronization
88.1 Overview
The Sonix systems allow for synchronization through BNC ports on the Ultrasonix PCI card installed on all systems. Depending on the system, the
number of ports may vary. The BNC is a 5V TTL signal by nature, however some hardware modification may needed due to filters placed on the PCI to
draw out the signal and lower the amplitude for signal connectivity to thermal printer devices.
The Sonix RP has 2 BNC ports, one input and one output, and the SonixTOUCH Research has 4 BNC ports, two inputs and two outputs; the diagram
below shows the configuration as installed within the system.
263
PCI Configurations
264
88.1.2 SonixTablet Sync
The diagram shows the signals on the extension cable that brings out the in and out sync signals from the Sonix Tablet
Cabling:
21 OUTPUT1
25 OUTPUT2
20 INPUT1
26 INPUT2
265
Modified Pulse Shape
By default, the Sonix systems have resistors on the PCI card to draw out the TTL pulse on the BNC output signals and reduce the amplitude to properly
trigger thermal printers used, often in clinical environments. To amplify the pulse for other device synchronization including triggering the SonixDAQ, the
below modifications should be made:
SonixTOUCH Research:
Sonix RP:
Note that for the SonixTOUCH Research, the capacitors and resistors are located on the other side of the board.
266
Sonix RP PCI Card Closeup
The input BNC should receive a 3-5 V TTL pulse, with a duration of 50-100 ns in order to trigger the system properly.
The hardware only looks at the rising edge of the signal.
Currently, the SonixTOUCH Research only supports 1 input signal (Input BNC #1), as no method for differentiation of signals has been
implemented. Note that this corresponds to Input Trigger #2 on the PCI card (also see FAQ below).
While triggering the system to acquire data, it is important to implement some safeguards with respect to frames being dropped:
From a hardware perspective it is important not to trigger the system faster than the programmed frame rate (or PRF if in scanline mode),
otherwise trigger signals will be ignored while the system is still in the process of transmitting and receiving scanline/frame data.
From a software perspective, if a callback has been implemented in one of the SDKs, it is important not to block the callback for very long,
otherwise the software interrupt will be overlooked. Typically, the amount of work in a callback should just be to memcpy() data into another
buffer and set another worker thread to do the processing.
It should be noted that a frame is found through a software implemented collector thread that looks for new frame headers. The software looks for the
frame header of the next frame to determine that the previous frame is ready. This is important to note as it may have some implications in
programming the system. If the software were to trigger a callback when the current frame is being collected, it may recognize the frame as being valid
too soon. For example, the first scanline (of a multi-scanline frame) includes the 4 byte frame header. If recognized by the thread while other scanlines
are still being transmit/receive for the frame, then the copy of data from memory may be errorneous by the fact that invalid data would be contained in
the memory for that frame.
The collector thread thus looks for the frame header of the next frame to ensure that the previous frame has finished its transmit/receive. This of course
adds a slight delay to when the frame is actually recognized vs when the frame has actually finished acquired. This delay is small, and can be calculated
at roughly FR*(1/LD), where FR is the frame-rate of imaging, and LD is the number of scanlines that make up the image.
267
Frame Collection via Trigger and Software Interrupts
For continuous capture, the above explanation warrants only the fact that for triggered capture, at least 2 triggers must be sent to the system for a frame
to be acknowledged within the collector thread. Of course, for non-continuous capture, this poses some more problems. For example, in the second
frame collection from diagram above, a delay of n is imposed after triggering two frames. Once the third trigger is received, frame ID=1 will be
acknowledge, which will be of course n time units in the past. A double triggering method should then be employed all the time to ensure real-time frame
data is collected via software properly.
88.4 FAQ
Q) I turned the Output Trigger but there is no trigger on the BNC connection in the back of the system.
Sometimes the BNC connection in the back is not directly connected to the BNC output that you need on the PCI card. If this is the case, you need to
connect your BNC cable directly to the PCI card output. On SonixRP and SonixMDP, this can be done easily by opening the door underneath the
console to have direct access to the PCI card. On SonixTouch, you need to open the side panel to have direct access to the BNC connections on the
PCI card. Also, always check the output trigger with the scope to make sure that it is functioning the way you need it to prior to connecting to your
experimental setup.
This is expected. When you turn on the input trigger, the Sonix will not do any imaging unless it detects a proper trigger on the proper connector. In this
mode, you need to make sure you provide the correct trigger to the correct BNC connector. Otherwise, the Sonix system will not do anything.
Q) I turned the Input Trigger on but the Sonix system does not accept my input trigger.
As we mentioned in the previous case, sometimes the BNC connection in the back is not directly connected to the BNC output that you need on the PCI
card. If this is the case, you need to connect your BNC cable directly to the PCI card output. On SonixRP and SonixMDP, this can be done easily by
opening the door underneath the console to have direct access to the PCI card. On SonixTouch, you need to open the side panel to have direct access
to the BNC connections on the PCI card. On newer machines you will need to use Input Trigger #2. Also, make sure your input trigger meets the exact
requirements mentioned above for pulse amplitude and duration.
268
89 Transmit Control
The ultrasound system has the capability to send out pulses at a specific frequency. This is represented as a square wave pulse from the transmit
electronics, and filtered as a sine wave when viewed from hydrophone data. Each transducer has a center frequency and a specific bandwidth, however
with the research package any frequency or combination of frequencies can be applied during scanning.
40 MHz Firmware
SonixDAQ is used in conjunction with the ultrasound and its sampling rate is set to 80MHz
The L40-8/13 transducer is used to emit higher frequency pulses
269
By repeating the pulse pattern (ex. +-+-+-+-), the transmit signal spectrum can be narrowed and signal power can be increased. Due to the transfer
function of the transducer, which can be highly biased depending on the system used, it may be desirable to increase the transmit frequency component
of the signal by repetition of the pulse pattern.
89.2.1.1 5 Mhz
To create a 5 MHz transmit excitation, set the transmit frequency to 5 MHz and set the pulse shape to + ?
A different method to create a 5 MHz transmit excitation is to set the transmit frequency to 20 MHz and set the pulse shape to + + + + ? ? ? ?
To create a blended frequency of 4 and 5 MHz, set the transmit frequency to 20 MHz and set the pulse shape + + + + ? ? ? ? + + + + + ? ? ? ?
?
89.2.2 Note
If the transmit frequency is limited, then the range of the parameter needs to be adjusted in the setup files or through modification via the Ulterius SDK.
Pulse Shaping
270
90 Gain Engine
The gain is constructed from two main components which are the Hardware Analog TGC & Digital TGC and the Software Digital Gain.
The 'b-tgc' four point curve now gets applied to both the analog and digital hardware TGC.
For analog tgc, this four point curve represents a percentage of the total maximum analog. The same applies to the hardware digital tgc, where the four
point curve represents a percentage of the total maximum digital tgc along the 'b-gn curve depth'. The resulting hardware digital gain value acts as a
multiplier to the signal. The maximum analog tgc and maximum digital tgc is a fixed value depending on the hardware:
The software digital gain applied to the image is determined by the gain offset and user tgc. The digital gain gets applied to the signal after IQ
demodulation so that
User TGC
Gain Offset
The gain offset parameter is the 'b-gain' variable found in presets. The range of this variable is from -3000 to 3000. This value gets remapped
to 0 to 100% .
271
272
90.2 Exam 5.0.x to 5.7.x
90.2.1 Parameters
b-tgc
b-gn curve depth
gain curve
b-gain
tgcMaxDigitalValue
tgcDigitalGainMinAmp
tgcDigitalGainRange
b-tgc lateral
The % of analog and digital tgc depends on three settings: the analog tgc curve, overall gain offset, and user tgc.
The analog tgc is mapped to the range of analog input. The maximum analog input is hardware dependent (see section on Final Analog TGC
below).
The Digital TGC has the same shape as the analog TGC but mapped to the preferred digital range.
TGC
Analog TGC Curve
Is defined as the parameter 'b-tgc' (which is a curve as part of the imaging parameters in preset files).
This curve uses the b-gn curve depth parameter and if b-gn curve depth < number of samples, the last value gets applied up to the number of
samples.
The four values in this curve parameter (eg. "[C] 1, 51, 51, 30") represents the positions along the curve x1, x2, x3, and y2 respectively (refer
to the image below)
273
b-tgc curve
Gain Offset
The gain offset parameter is the 'b-gain' variable found in presets. The range of this variable is from -3000 to 3000. This value gets remapped
to -100% to 100% in the tgc equation.
User TGC
Va = TGC % x TGCAnalogRange
Where tgcMaxDigitalValue, tgcDigitalGainMinAmp, tgcDigitalGainRange are values specified in the preset or imaging.set.xml file
274
90.3 Early Software (2.x - 3.x)
This page gives a brief overview of the gain systems within the Ultrasonix engine.
There are 4 parameters that adjust the TGC in the Ultrasonix engine.
Internally, the gain range is from 0 to 3000. The parameters described above work together to create a table of a certain length, where each point is
within the gain range. The TGC Analog (B) parameter is the starting point, this is a UTX_CURVE variable, and its values are interpolated to be within the
gain range. The number of vertical values depends on the Gn Curve Depth (B) parameter. The User TGC sliders range from 0 to 255, with an output
range from -500 to 500 (programmable internally), this parameter, along with the Gain (B) general offset parameter get applied to the gain table created
from the TGC Analog (B) parameter.
for(i = 0 to numpoints)
{
gainTable[i] = tgcA[i] + tgcU[i] + genOffset
check min and max on gainTable[i]
}
The lateral gain curve is applied across the image in a digital manner. It does not program the analog components, but rather applies an offset to an
entire line of data once it arrives on the FPGA. The range of this parameter is 0 to 2000 (programmable internally), and on-screen, is represented as the
curve for half of the image, the other half is mirrored symmetrically in the computations. The name of the parameter is TGC Lateral, and it is a
UTX_CURVE variable.
On the Sonix RP, the TGC is implemented by the VCA2612 component, a variable gain amplifier by Texas Instruments. The gain is interpolated into
values ranging from 0 to 3000, which corresponds linearly to 24dB to 45 dB gain. An example in Texo SDK would be to call addTGC(0.5) to get a linear
curve, which implies that the TGC curve is flat at 50% of the gain range, which would correspond to a value of 1500. This in turn results in about 34.5dB
gain.
Experimentally, the following curve was obtained while scanning a aluminum block at 5 MHz and power level 10.
275
TGC Energy Curve
The exact energy level may differ from measurement to measurement, but the curve shows a non linear relationship in the energy content as TGC is
increased, though the software does not compensate for this. This may be something to keep in mind while designing experiments.
276
91 FIR RF Filtering
91.1 Background
There are three RF filtering modes that the Sonix systems can take advantage of:
No Filtering
Frequency Compounding Filtering
Depth Dependent Filtering
No filtering allows the entire signal to pass through unbanded, resulting in a raw looking B image.
Frequency compounding splits the beamformed digital RF signal into 3 paths after it gone through a constant digital gain filter. Each path performs an
FIR of varying center frequency and bandwidth that is selectable on the research menus. Also included is an adjustable filter gain level that is controlled
through coefficient shift values, found on the research menus as well. After the FIR, each path performs it's own envelope detection, and is compounded
into one signal before going through a lookup table that converts the data from 16 to 8 bits before being sent to the PC for scan-conversion and other
processing.
Depth dependent RF filtering does not use compounding, but rather applies a different filter at certain image depths. As with the compounding method,
there are 3 selectable filters that can be selected. This method may be more applicable when scanning tissue that is very sensitive to higher resolution
in the near field and deeper penetration for the far field. Harmonic imaging uses this mode as to enhance the effectiveness of the cancellation
techniques required.
91.2 No Filtering
To work with this method, the following parameters should be set as specified:
277
Frequency compound image
With no FIR Overlap set, the image will have significant boundaries shown, as can be seen below.
278
Depth filtering setup
279
Depth filtering image (with overlap)
280
92 Receive Bandwidth
For each frequency, the signal was injected into the probe connector. The RF data corresponding to each signal was then recorded using RF mode for
off-line processing. This process was repeated for all the frequencies.
For all the systems decimation was set to be zero (i.e. 40MHz sampling frequency). To avoid signal saturation, the System gain was set to be low.
Experimental Setup
281
92.2 Signal Processing and Results
Recorded RF data were processed off-line. Fourier analysis was performed to estimate the transfer function for each system. A sample RF signal at
5MHz is shown in a figure below for both Sonix RP and SonixTouch systems:
Experimental Setup
The estimated transfer function for all the systems are shown in the figure below. The results are displayed in dB. Separate normalization was used for
each graph.
282
Comparison between SonixTOUCH AFE5807 hardware with different cut-off frequencies.
92.3 Remarks
Sonix RP
SonixTOUCH Research
10dB improvement compared to Old Touch @15MHz and 20dB improvement compared to the RF/OP/SP @15MHz,
-6dB to -12dB gain drop is still present at 15MHz to 20MHz.
283
93 Transducer Care
It is highly important to ensure the right precautions are taken when working with ultrasonic transducers. These components can be especially fragile
due to the nature of the internal wiring and manufacturing processes involved.
Damage Scenarios
Physical Abuse
Do not drop transducers. The probe head and the connector are especially fragile.
Do not run over the cabling, this may damage wires.
Cleaning
Try to use water or T-spray when possible, Cidex is a powerful cleanser and may deteriorate transducer materials more rapidly
Wipe off gels after transducer use
Experimentation
When placing transducer in water, do not keep in longer than 3 hours, and try not to dip transducer head fully into water so the cabling
becomes wet as well
If transducer needs to be in water for longer than 3 hours, use a probe sleeve with gel inside to gain coupling
When using a shaker to vibrate transducer, try not to exceed 20G
Imaging
If increasing the PRF to high values, ensure to lower the voltage levels to minimum to ensure lens does not burn. This precaution also needs
to be taken for patient safety
Limit the amount of time scanning at higher output levels. For example high PRF's or transmissions with long duration pulses
Laboratory Logistics
Because many students may be using a single system in the lab and it may be moved to different locations, the lab may want to setup a
location to sign out transducers as to keep track of what is being used where and for what projects
284
94 Transducer Types
There are many different types of ultrasound transducers. See our product page:
http://www.ultrasonix.com/products/transducers
285
95 Changing the Sequence in Texo
In this version of the software, it is not possible to issue the texoStopImage() from within the Texo callback function. The reason being that the callback
function will be part of the Texo frame collector thread, and texoStopImage() tries to destroy this thread from within in, which does not work.
Therefore the above six steps would be taken inside the main thread of the program using Texo, or any other thread but not inside the callback. As a
result, Texo will acquire many frames (typically 100 frames) between successive steps 3 and 4 above which takes a significant amount of time.
Moreover, it is not possible to acquire a single frame using the first sequence, and then switch to the next. Around 100 frames of the first sequence will
be acquired one way or another.
Having said that, the following graph shows the time required for carrying out a change of sequence (the time required for any 3 consecutive steps from
above). The system specs were as follows:
As can be seen the time required is roughly 400 ms. However, as the small difference between 256 and 512 scan-lines demonstrates, most of the 400
ms has nothing to do with the programming the sequence step (step 2 or 5 above), but is spent between steps 3 and 4, where the sequencer will be
acquiring 100 frames of data.
286
96 Dynamic focus
Focusing is the method of adding the data of several in such a manner, that all of them are "in phase", meaning, they are individually delayed, to
compensate the differences in the time of flight. This would be easy to accomplish, if the distance to the object, that is to be resolved was known. In an
ultrasound measurement, this is not the case (hence the term measurement), so a focusing strategy has to applied, that allows making the focusing
calculations, without having to repeat the measurement with different focal lengths.
For dynamic focusing the data of several channels is stored in a fast memory. So the focusing calculations can be carried out, after a scanline is
captured, without having to repeat the measurement.
Dynamic Focusing
287
97 Elastography
97.1 Introduction
Many diseases cause changes in tissue mechanical properties. Current imaging devices such as computed tomography (CT), ultrasound (US) and
magnetic resonance imaging (MRI) are not directly capable of measuring the mechanical properties of soft tissue. Elastography as a strain imaging
technique has been well established in the literature as a new imaging method. The strain distributions in tissues in response to an external deformation
are closely related to the distribution of tissue elasticity. These strain images can give a clear illustration of the underlying tissue stiffness distributions
which has been shown to provide useful clinical information.
Static Elastography
288
97.4 Implementation on Sonix Systems
1D normalized cross-correlation with adjustable windows size and overlap is used to estimate the motions. In order to speed up the computation,
time-delay estimator with prior estimates (TDPE) was employed. TDPE uses dynamic programming to reduce the size of the search region for the
cross-correlation. [1] Following the motion estimation, the strains were estimated using an optimized least square strain estimator. The estimated strains
were scaled, filtered, color-coded and displayed on the screen beside or superimposed on sonograms.
in-vivo results
97.5 References
1. ? Zahiri-Azar R, Salcudean T. Motion Estimation in Ultrasound Images Using Time Domain Cross Correlation With Prior Estimates. IEEE
Transactions on Biomedical Engineering. 2006;53:1990-2000.
289
98 Strain Ratio
98.1 Introduction
It has been shown that the strain contrast values measured across slices obtained from soft tissue can closely approximate the modulus contrast [1]-[3].
In this work we evaluate the performance of the strain ratio measurement on the SonixTouch using the Elasticity QA phantom (Model 049, CIRS).
Each inclusion was imaged in real-time elastography mode [4] while a continuous longitudinal compression was applied to its surface. Once a good
contrast was observed, the measurement was carried out.
290
The quantitative results are also shown in the following table:
98.4 References
[1] Kallel, F., Prihoda, C.D. and Ophir, J.: Contrast-transfer efficiency for continuously varying tissue moduli: simulation and phantom validation.
Ultrasound in Medicine and Biology, Vol. 27, No. 8, pp. 1115-1125, 2001.
[2] Srinivasan, S., Krouskop, T., Ophir, J.: Comparing Elastographic Strain Images with Modulus Images Obtained Using Nano-Indentation: Preliminary
Results Using Phantoms and Tissue Samples. Ultrasound in Medicine and Biology, Vol.30, No.3, pp.329-343, 2004.
291
[3] Srinivasan, S., Krouskop, T. and Ophir, J.: A quantitative comparison of modulus images obtained using nanoindentation with strain elastograms.
Ultrasound in Medicine and Biology, Vol. 30, No. 7, pp. 899-918, July 2004.
[4] Zahiri Azar R., Salcudean T. Motion Estimation in Ultrasound Images Using Time Domain Cross Correlation With Prior Estimates. IEEE Transactions
on Biomedical Engineering. 2006;53:1990-2000.
292
99 Pulsed Wave Doppler
99.1 Introduction
Pulsed Waved Doppler Imaging, or PW Mode, is a method to use ultrasound for determining blood velocity and direction.
The echo signals from the gate are acquired at a predefined Pulse Repetition Frequency (PRF).
These echo signals are then used to measure the component of the motion along the direction of beam propagation.
The acquired RF echo signals go through a demodulation to generate in-phase and quadrature components (I/Q).
I/Q signals then go through a high pass filter, also known as a wall filter, to remove strong slower motions.
The wall filtered signals are then used to generate the spectrum using short time Fourier analysis.
293
Screen Output of PW Mode
294
100 Transmission Ultrasound
100.1 Overview
Through-transmission ultrasound, or transmission ultrasound for short, is the method in which one transducer emits sound waves, and another
transducer not part of the transmitting array receives the signals. This is different from conventional ultrasound where the echos are captured from a 180
degree reflection, in the fact that the wave travels through a medium and is picked up on the other side.
The Sonix systems can be setup to perform transmission ultrasound with the following setup:
100.2 Implementation
Both transducers share the same sequencer for transmit and receive
The sequencer is set to start the transmit at one end and start the receive at the other end
The transmits and receives are aligned by flipping one of the transducers while facing each other
Half of the transducers are used for imaging and the other halves are covered to block unwanted transmits
The following is some pseudo-code that would run a Texo sequence for transmission ultrasound:
295
Element Setup in the Texo Sequence
During the experimental setup, the transducers should be placed directly facing each other in a water bath or with a medium in between, similar to the
diagram below.
Transducer Setup
100.3 Results
Below are some results from a simple experiment in a water bath with two linear transducers.
296
Echo Received from Transducer #1
297
101 ARFI
101.1 Introduction
Acoustic Radiation Force Imaging, or ARFI, is a method where high power ultrasonic waves are used to displace tissue for the purpose of tissue
characterization and measurements.
101.2 Implementation
ARFI Sequence
Programmable sequencer
Transmit pulses with long durations up to 500 microsec
298
ARFI Sequence
The Texo SDK can be used to program the ARFI sequence. Below is some pseudo-code for programming the Texo sequence:
101.3 Measurements
The figures below show some measurements from an oscilloscope attached to a Sonix RP system.
299
ARFI Scope Measurements
300
ARFI Hydrophone Measurements
The figure below shows the resulting displacement from an ARFI sequence.
301
ARFI Displacment
302
102 High Frame Rate Acquisition
102.1 Overview
The Sonix systems can be configured to run at very high frame rates, the methods described below show how to perform high frame rate imaging.
Easy to implement
No hardware overhead
Supports long observation time
Disadvantages:
102.3 Synchronization
By dividing the image into small sectors each sector can be acquired at high frame rates. By synchronizing the excitation and the start of the image
acquisition for each sector, the acquisition delays can be removed (this step is generally called re-phasing). This way the data can be acquired at a
virtual high frame rates. The above settings (10 lines per sector) results in virtual frame rate of 1000 frames per second (fps). Using one line per sector
will result in 10,000 fps.
303
Sonix supports both input synchronization and output synchronization schemes. Thus, in one approach, (i) Sonix itself can be used as a synchronizer.
This way, at the beginning of the acquisition for each sector, it can send a pulse (output synch). This pulse can be used to restart the exciter. In another
approach (ii) Sonix can wait for an external pulse before starting the acquisition for each sector (input synch). This way, an external synchronizer is
required to control both Sonix and the exciter.
To implement both of these techniques on Sonix machine, a custom sequencer needs to be implemented. The Texo SDK can be used for this.
Disadvantages:
304
103 Multiple Signal Paths
103.1 Overview
This page provides some insight into how the probe connectors can be used together for altering the signal path of the system.
305
104 Contrast Imaging
104.1 Overview
This page provides some insight into how the system can be setup to perform contrast enhanced imaging and flash features.
Contrast imaging consists of using micro-bubbles that flow through the bloodstream. Their reflections produce B mode images that show flow, similar to
an enhanced B-Flow mode. Contrast microbubbles can be destroyed by intense ultrasound and the scattered signal level can increase abruptly for a
short time during microbubble destruction, resulting in sudden increase in echogenicity (acoustical "flash"). Intermittent imaging with high acoustic output
utilizes the unique property of contrast microbubbles to improve blood-to-tissue image contrast by imaging intermittently at very low frame rates instead
of the conventional 30 frames per second. The frame rate is usually reduced to about one frame per second, or it is synchronized with cardiac cycles so
that enough contrast microbubbles can flow into the imaging site where most microbubbles have been destroyed by the previous acoustic pulse.
Because bubbles are destroyed by ultrasound, controlling the delay time between frames produces images whose contrast emphasizes regions with
rapid blood flow or regions with high or low blood volume.
Harmonic imaging
A flash mode
306
105 Online Research Forum
The online research forum contains a wealth of information related to the usage of Ultrasonix research devies. It is divided into categories including:
The forum gets read frequently by the Ultrasonix engineering team to answer questions as well as make new posts pertaining to new software
availability, documentation, and other technical notes. Apart from this wiki, the forum is the best place to get help for using the systems and tools; it is
found at http://research.ultrasonix.com. Below is an example of the forum in action.
307