Sei sulla pagina 1di 315

Table of Contents

1 Getting Started...................................................................................................................................................................................................................1
1.1 Research Support............................................................................................................................................................................................1
1.2 Online Training................................................................................................................................................................................................1

2 A Reference on Ultrasound Imaging................................................................................................................................................................................2

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

10 SonixTouch Research Basics......................................................................................................................................................................................16


10.1 Overview......................................................................................................................................................................................................16
10.2 Operational Modes......................................................................................................................................................................................16
10.3 RF Collection...............................................................................................................................................................................................17

11 Working with Data.........................................................................................................................................................................................................18


11.1 Overview......................................................................................................................................................................................................18
11.2 Cine Buffer...................................................................................................................................................................................................18
11.3 Setup Data Storage In Clinical Mode..........................................................................................................................................................18
11.4 Storage Screen............................................................................................................................................................................................20
11.5 MATLAB Integration....................................................................................................................................................................................21
11.6 Data Types..................................................................................................................................................................................................22
11.7 Data File Information...................................................................................................................................................................................23
11.8 Imaging Mode Details..................................................................................................................................................................................24

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

14 Category:Exam Software Parameters..........................................................................................................................................................................30


14.1 Research Menus.........................................................................................................................................................................................30
14.2 Abbreviations...............................................................................................................................................................................................31

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

29 GPS Data Collection......................................................................................................................................................................................................63


29.1 Transducer and Needle Tracking................................................................................................................................................................63

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

32 Visualizing Channel Data..............................................................................................................................................................................................74


32.1 Startup.........................................................................................................................................................................................................74
32.2 Screen Layout.............................................................................................................................................................................................74
32.3 Sequence....................................................................................................................................................................................................74

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

39 SonixDAQ Software V6.X............................................................................................................................................................................................111


39.1 DAQ Demo Software (6.0).........................................................................................................................................................................111
39.2 DAQ Demo Software (6.1).........................................................................................................................................................................116

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

41 SonixDAQ Quick Test..................................................................................................................................................................................................122


41.1 Overview....................................................................................................................................................................................................122
41.2 Preparing the Sonix System Hardware.....................................................................................................................................................122
41.3 Preparing the Sonix System Software.......................................................................................................................................................122
41.4 Testing the BNC Output............................................................................................................................................................................125
41.5 Preparing the SonixDAQ...........................................................................................................................................................................125
41.6 Notes.........................................................................................................................................................................................................127

42 SonixDAQ Software (SDK)..........................................................................................................................................................................................128


42.1 Introduction................................................................................................................................................................................................128
42.2 Console Program.......................................................................................................................................................................................128
42.3 DAQ Parameters.......................................................................................................................................................................................129

43 SonixDAQ Software (real-time)..................................................................................................................................................................................131


43.1 Image Sequencer......................................................................................................................................................................................131
43.2 Real-time Imaging with DAQ.....................................................................................................................................................................131
43.3 Imaging Parameters..................................................................................................................................................................................131
43.4 DAQ Data Storage.....................................................................................................................................................................................131
43.5 Interface.....................................................................................................................................................................................................131
43.6 Additional Features....................................................................................................................................................................................133
43.7 Licensing...................................................................................................................................................................................................133

44 SonixDAQ Receive Bandwidth...................................................................................................................................................................................135

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

54 Matlab Imaging Modes................................................................................................................................................................................................157

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

59 Porta Function Overview............................................................................................................................................................................................171


59.1 Initialization................................................................................................................................................................................................171
59.2 Licensing...................................................................................................................................................................................................171
59.3 Synchronization Signals............................................................................................................................................................................171
59.4 Transducers...............................................................................................................................................................................................171
59.5 Testing Functions......................................................................................................................................................................................171
59.6 Imaging Modes..........................................................................................................................................................................................171
59.7 Presets......................................................................................................................................................................................................172
59.8 Imaging Pipeline........................................................................................................................................................................................172
59.9 Callbacks...................................................................................................................................................................................................172
59.10 Parameter Control...................................................................................................................................................................................172
59.11 Parameter Types.....................................................................................................................................................................................172
59.12 Display Processing..................................................................................................................................................................................173
59.13 Image Geometry and Scaling..................................................................................................................................................................173
59.14 Motor Control...........................................................................................................................................................................................173

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

61 Porta Synchronization Signals...................................................................................................................................................................................176


61.1 Parameter Control.....................................................................................................................................................................................176
61.2 General Usage..........................................................................................................................................................................................176

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

67 Texo Data Processing Prior to 6.0.x..........................................................................................................................................................................198


67.1 Data representation...................................................................................................................................................................................198
67.2 MATLAB method to read data-file.............................................................................................................................................................198
67.3 A Short Introduction to Imaging.................................................................................................................................................................199

68 Texo Parameter Effects...............................................................................................................................................................................................201


68.1 Introduction................................................................................................................................................................................................201
68.2 Transmit Frequency Effects.......................................................................................................................................................................201
68.3 Burst Cycle Effects....................................................................................................................................................................................202
68.4 Varying Power Level..................................................................................................................................................................................203
68.5 Varying TGC Setting..................................................................................................................................................................................204
68.6 Varying Transmit Aperture Size.................................................................................................................................................................205
68.7 Varying Receive Aperture Size..................................................................................................................................................................206
68.8 Masking Mechanism Characterization.......................................................................................................................................................207
68.9 Dynamic Focus..........................................................................................................................................................................................208

69 Texo GUI Demo............................................................................................................................................................................................................210


69.1 Interface (6.0)............................................................................................................................................................................................210
69.2 Setup.........................................................................................................................................................................................................210
69.3 Interface (6.1)............................................................................................................................................................................................211

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

72 Ulterius Data Acquisition............................................................................................................................................................................................215


72.1 Callbacks and the Mask............................................................................................................................................................................215
72.2 Real-time Handling....................................................................................................................................................................................215
72.3 Acquiring Data while Frozen......................................................................................................................................................................216
72.4 Special Acquisition Features.....................................................................................................................................................................216

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

76 Qt With Visual Studio 2010 Setup (SDK 6.x).............................................................................................................................................................220


76.1 Required Programs...................................................................................................................................................................................220
76.2 CMake Setup.............................................................................................................................................................................................220
76.3 Visual Studio Setup...................................................................................................................................................................................221

77 Visual Studio 2010 Setup............................................................................................................................................................................................224


77.1 Creating an empty project.........................................................................................................................................................................224

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

80 Transmitting Ultrasound Pulses................................................................................................................................................................................239


80.1 Shape of the Ultrasound Pulse as a Function of Time..............................................................................................................................239
80.2 Temporal Shape of the Pulse on Sonix Platforms.....................................................................................................................................239
80.3 Shape of the Ultrasound Pulse as a Function of Space............................................................................................................................240
80.4 Spatial Shape of the Pulse on Sonix Platforms.........................................................................................................................................242

81 Ultrasound Image Computation.................................................................................................................................................................................244


81.1 A-Mode Data.............................................................................................................................................................................................244
81.2 B-Mode Images.........................................................................................................................................................................................244
81.3 M-Mode Images.........................................................................................................................................................................................247
81.4 Pulse(d) Wave Doppler Images.................................................................................................................................................................247
81.5 Power/Color Doppler Images....................................................................................................................................................................247
81.6 Elastography Images.................................................................................................................................................................................248

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

87 Saving volume data in freehand 3D...........................................................................................................................................................................262


87.1 Release 6.0.4............................................................................................................................................................................................262

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

95 Changing the Sequence in Texo................................................................................................................................................................................286


95.1 Software Release 6.0.3.............................................................................................................................................................................286

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

100 Transmission Ultrasound.........................................................................................................................................................................................295


100.1 Overview..................................................................................................................................................................................................295
100.2 Implementation........................................................................................................................................................................................295
100.3 Results.....................................................................................................................................................................................................296

101 ARFI............................................................................................................................................................................................................................298
101.1 Introduction..............................................................................................................................................................................................298
101.2 Implementation........................................................................................................................................................................................298
101.3 Measurements.........................................................................................................................................................................................299
101.4 Remaining Issues....................................................................................................................................................................................302

102 High Frame Rate Acquisition....................................................................................................................................................................................303


102.1 Overview..................................................................................................................................................................................................303
102.2 Small Sector............................................................................................................................................................................................303
102.3 Synchronization.......................................................................................................................................................................................303

103 Multiple Signal Paths.................................................................................................................................................................................................305


103.1 Overview..................................................................................................................................................................................................305

104 Contrast Imaging.......................................................................................................................................................................................................306


104.1 Overview..................................................................................................................................................................................................306

105 Online Research Forum............................................................................................................................................................................................307

viii
1 Getting Started

1.1 Research Support


If you have any question regarding the use of Sonix systems, SDKs, or Matlab files please post the on our Research Forum and our scientist will try to
get back to you in a timely manner. For all the other research related inquiries, please contact the support team by sending an email to
rpsupport@ultrasonix.com.

1.2 Online Training


If you have recently purchased a Sonix system with a Research license, we can offer you an online training. If you would like to receive this online
training, please perform the following steps:

1. Confirm an online training date and time by emailing rpsupport@ultrasonix.com. 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

Transmitting Ultrasound Pulses


Shape of the Ultrasound Pulse as a Function of Time
Temporal Shape of the Pulse on Sonix Platforms
Shape of the Ultrasound Pulse as a Function of Space
Spatial Shape of the Pulse on Sonix Platforms

Receiving Ultrasound Data


Shape of the Ultrasound Data as a Function of Time
Pre-beam Forming RF Data Processing on Sonix Platforms
Receive Beam Forming
Receive Beam Forming on Sonix Platforms
Beam Formed RF Data Processing on Sonix Platforms

Sequencing
B-Mode Sequence
M-Mode Sequence
Pulse(d) Wave Doppler Sequence
Color/Power Doppler Sequence

Ultrasound Image Computation


A-Mode Data
B-Mode Images
M-Mode Images
Pulse(d) Wave Doppler Images
Color/Power Doppler Images

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

Download the reference as a PDF.

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:

The use of operational modes not available on a purely clinical system


The retrieval and modification of low-level parameters used to generate ultrasound images
The acquisition and storage of raw data in a variety of formats

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.

3.3 Main Topics


Sonix RP Basics
Working with Data
Imaging Parameters
Customizable Files
ECG
3D/4D
Protocol Setup
Visualizing Channel Data
Transducer Prototyping
Research Menu
Online Research Forum

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.2 Operational Modes


There are two general modes of operation that the Sonix RP can run; Clinical Mode and Research Mode. Clinical mode puts the system in standard
diagnostic mode without any research capabilities, and Research Mode puts the system in a mode where special parameters and imaging modes can
be accessed. To switch between the two modes, press the RESEARCH key, which is located on the upper left part of the console.

Research Button Location


When Research Mode is active:

The Research key will be lit orange


The system software will look like a Microsoft Windows? application with a title bar and minimize/maximize/close buttons
It will be possible to access the Microsoft Windows? desktop, including the start menu and taskbar

When Clinical Mode is active:

The Research key will be lit blue


The system software will cover the entire monitor and access to the Microsoft Windows? desktop will not be possible

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

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.

The trace shows a single RF line on the screen.

5
RF signal

There are three acquisition types in RF mode:

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.

4.3.1 B/RF Mode

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:

The use of operational modes not available on a purely clinical system


The retrieval and modification of low-level parameters used to generate ultrasound images
The acquisition and storage of raw data in a variety of formats

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

5.2 Important Notice


Given that the SonixTOUCH 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.

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.

6.2 Main Topics


Working with Data
Imaging Parameters
Customizable Files
Protocol Setup
Visualizing Channel Data
Transducer Prototyping
Online Research Forum

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:

The use of operational modes not available on a purely clinical system


The retrieval and modification of low-level parameters used to generate ultrasound images
The acquisition and storage of raw data in a variety of formats

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:

The use of operational modes not available on a purely clinical system


The retrieval and modification of low-level parameters used to generate ultrasound images
The acquisition and storage of raw data in a variety of formats

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.

8.3 Main Topics


Licensing
Matlab Imaging Modes

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:

The use of operational modes not available on a purely clinical system


The retrieval and modification of low-level parameters used to generate ultrasound images
The acquisition and storage of raw data in a variety of formats

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.

9.3 Main Topics


Licensing
Matlab Imaging Modes

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.

10.2 Operational Modes


There are two general modes of operation that the SonixTOUCH Research can run; Clinical Mode and Research Mode. Clinical mode puts the system
in standard diagnostic mode without any research capabilities, and Research Mode puts the system in a mode where special parameters and imaging
modes can be accessed. To switch between the two modes, ensure the following steps are performed:

Press Q button on the console to enter the QSonix screen


Click Select Protocol
Choose the Research protocol, which will layout the touchscreen appropriately
Press the Research button on the touchscreen to toggle the operational mode

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.

When Research Mode is active:

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

When Clinical Mode is active:

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.

The trace shows a single RF line on the screen.

RF signal

There are three acquisition types in RF mode:

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.

10.3.1 B/RF Mode

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.

11.2 Cine Buffer


The cine is programmable, but defaults to 128MB. The number of frames of data that can be stored in the cine depends on:

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.

11.3 Setup Data Storage In Clinical Mode


Follow these steps to setup the storage dialog in clinical mode:

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

11.4 Storage Screen


The Data Storage screen is used to select the types of data that are desired to be stored to disk. A filename can be entered, however the default name
is the current time at which the record button was clicked. The requested frame range will be initialized with the values adjusted from the cine control,
however they can be modified in this screen as necessary. The default extensions for the data types are given within the screen.

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\.

11.5 MATLAB Integration


Whenever data is stored, a MATLAB icon corresponding to the data type saved will appear on the bottom of the screen assuming thumbnail selection is
turned on. Clicking on this icon will open the first image in the series from a pre-defined script.

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:

Frame sizes in bytes


GS = Grayscale Data
FC = 4 Byte Header
V = Vectors
S = Samples
W = Image Width
H = Image Height

Type Description Organization BPP/Format Frame Size Extension


Codec 800x600 or full
AVI Compressed file of screen captures Codec Dependent .avi
Dependent screen
B Pre Scan
Envelope detected B data Vector 8 or 16/GS FC + (V * S) .bpr
Converted
B Post Scan
Interpolated and post-processed B data Raster 8/GS W*H .b8
Converted (8)
B Post Scan
Interpolated and post-processed B data Raster 32/XRGB W*H*4 .b32
Converted (32)
FC + (V * S *
RF Pre or Post-beamformed RF data Vector 16/RF .rf
2)
M Pre Scan
Envelope detected and log-compressed M lines Vector 8/GS FC + S .mpr
Converted
Interpolated M line data stored as a single
M Spectrum Raster 8/GS W*H .m
spectrum capture
Doppler RF gate data acquired at the Doppler
PW RF Vector 16/RF FC + (S * 2) .drf
PRF
Interpolated FFT data stored as a single
PW Spectrum Raster 8/GS W*H .pw
spectrum capture

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.

11.7 Data File Information


The default header used when storing any data from the storage screen is as follows:

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:

11.7.1 Exam 6.0.3 and 6.0.4


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,
udtContrast = 0x00001000,
udtElastoCombined = 0x00002000,
udtElastoOverlay = 0x00004000,
udtElastoPre = 0x00008000,
udtECG = 0x00010000,
udtGPS1 = 0x00020000,
udtGPS2 = 0x00040000,
udtPNG = 0x10000000
};

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
};

11.8 Imaging Mode Details

11.8.1 Compound Mode

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.

Header example with 3 angles in compound imaging:

Frame Count First 4 Bytes Last 4 Bytes


1 0x0000 0x0000
2 0x0001 0x0001
3 0x0002 0x0002
4 0x0003 0x0000
5 0x0004 0x0001
6 0x0005 0x0002

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.

11.8.3 Elastography Mode

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.

12.1 Research Menus


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.

A research menu is split into 3 areas:

1. The parameter list


2. The parameter description
3. The current menu title

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:

Mouse wheel with externally plugged-in mouse


Audio knob on the Sonix RP or Sonix MDP systems
Menu Param button on the SonixTOUCH touchscreen

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

12.3 VCA Parameters


Parameter Description Unit
VCA Amplification Amplification setting sent to the VCA - see VCA datasheet for system version (RP/TouchV3/TouchV4) N/A
Sets the cutoff frequency of the low-pass filter on the VCA. V2 (VCA2612): 0 = off, 1 = on. V4 (AFE): 0 = 10MHz, 1 =
VCA LPF N/A
15MHz, 2 = 20MHz, 3 = 30MHz
VCA Input Clamp LNA voltage clamp. 800 = 800mVpp, 1200 = 1.2Vpp, 1600 = 1.6Vpp. N/A
VCA Active VCA active termination used to reduce reflection from mismatches and achieving better axial resolution. 0 = off, 1 = 50
N/A
Termination Ohm, 2 = 100 Ohm, 3 = 200 Ohm, 4 = 400 Ohm.

12.4 Color Doppler Parameters


General CDI Parameters

Parameter Description Range


(-125 to
color-baseline Baseline for the color velocity map.
125)
color-priority The color priority that is applied against the B map 0 to 250
color-median param The median filter method applied to color data.
color-velocity min The minimum velocity value the Doppler signal must have in order to be considered true flow. This parameter is
0 to 100
display applied to the map level in post-processing, and is not part of the regular Doppler threshold processing.
color-blur (NOT
Applies the average filter selection to the color data. 0 to 8
USED)
color-median turn on/off median filter on color processing 0 = off 1 = on. 0 to 1
color-temporal filter

(NOT USED)
color-persistence The number of frames to apply frame averaging on the color image. 0 to 9
Adaptive Filter Parameters

Parameter Description Range


color-adapt window sz Window size of adaptive filter 3 to 15
0 = average, 1 =
color-adapt method Adaptive filter method.
median
color-adapt scale Scale factor of adaptive filter. 0 to 100
color-adapt minmax discard Discarded samples min/max errors for adaptive filter. 0 to 100
Sticks Filter Parameters

Parameter Description Range


sticks filter size Scale factor for the sticks filter. 3 to 15
sticks window size Sticks filter window size. 1 to 15
sticks method Sticks filter method. 0 to 10
Post Processing Filter Parameters (applied to post scan converted color image)

Parameter Description Range


post-asr smooth level ASR filter smooth level. 0 to 40
post-asr line strength ASR filter smooth level. 0 to 50
post-asr lp cut ASR low pass cutoff (applied to color data). 1 to 150
post-asr contrast ASR contrast. 0 to 40
post-asr thresh ASR threshold. 0 to 31
pre-asr weight color ASR weight. 0 to 40

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 Range


pre-asr smooth level ASR filter smooth level parameter applied to prescan converted data. 0 to 40
pre-asr weight ASR filter weight parameter applied to prescan converted data. 0 to 40
pre-asr line strength ASR filter line strength parameter applied to prescan converted data. 0 to 50
pre-asr lp cut ASR low pass cutoff applied to prescan converted data. 1 to 150
pre-asr contrast ASR contrast applied to prescan converted data. 0 to 40
pre-asr thresh ASR threshold applied to prescan converted data. 0 to 31
post-asr power lp cut ASR low pass cutoff applied to postscan converted data. 1 to 150
Color Threshold Parameters

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.

<variable id="b-freq" name="Tx Frequency" type="integer">


<unit disp="MHz">Hz</unit>
<desc>Transmit frequency for B imaging</desc>
<category root="B" sub="TX"/>
<lock>
<type>freeze</type>
</lock>
</variable>

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.

<variable id="b-freq" value="10000000">


<range start="1000000" step="500000" stop="10000000"/>
</variable>

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.

13.1 Digital RF Filters (Exam 5.7)


There is a file that defines all of the RF filters used by the system called filters.txt which is located in the folder: C:\Program Files\Ultrasonix\Exam\config
An entry into the file has the following format:

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

The filters are chosen through the parameters:

RF FIR A
RF FIR B
RF FIR C

13.2 Transmit Shapes


There is a file that defines all of the transmit shapes that the system can use called pulses.txt which is located in the folder: C:\Program
Files\Ultrasonix\Exam\config. An excitation is defined as a series of +,?,0 characters, with the maximum length being 96. Each excitation is placed on a
new line. The first line is identified as index 0 from the Pulse A/B/C parameters, the second line is identified as index 1, and so on. Combining similar
characters does not bring the signal down, but rather stays high to allow the combination of frequencies. For more information, see Transmit Control.

13.3 Element Masking


Element masking allows elements to be turned off or on for transmit and receive. There is a file mask.txt which is located in the folder: C:\Program
Files\Ultrasonix\Exam\config. This file is comprised of lines of 128 0's and 1's which correspond to element on (1) and element off (0). To select a mask
from the interface, adjust the 'Element Mask' parameter. When this is set to 0, it will select the first line in the file, setting to 1, selects the second line,
and so on. Note that setting the mask affects both transmit and receive, these cannot be adjusted individually at this time.

29
14 Category:Exam Software Parameters
There is an abundance of imaging parameters that control the system. These parameters, are documented here.

14.1 Research Menus

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.

A research menu is split into 3 areas:

1. The parameter list


2. The parameter description
3. The current menu title

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:

Mouse wheel with externally plugged-in mouse


Audio knob on the Sonix RP or Sonix MDP systems
Menu Param button on the SonixTOUCH touchscreen

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

15.1 Exam 6.0.3

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 Exam 6.0.3

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.

Focus Count Adj

16.1.2 Transmit Beam Forming

The spacing between focus markers

34
Focus Span

The spacing between focus markers (adjusted for harmonic/non-harmonic imaging)

Focus Span Adjusted

The depth of the central focus marker

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]

Sets auto focus position 1 to 0.

Auto Focus Pos 1 Off

16.1.3 Temporal Shape of the RF data

AF Lineduration

35
17 Exam B-GAIN

17.1 Exam 6.0.3

17.1.1 Temporal Shaping of the Pre-beam Formed RF data

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

17.1.2 Temporal Shaping of the beam Formed RF data

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.

TGC: Auto Enable


TGC: Auto Method (debug)

For more info see Gain Engine.

37
38
18 Exam B-GEOM

18.1 Exam 6.0.3

Changing the preset frame rate setting through this parameter will load default values for the other parameters:

Frame Rate

18.1.1 Transmit Beam Forming

The beam steering angle is determined through:

Steer

18.1.2 Temporal Shape of the RF Data

The depth of imaging determines the time duration for the recording of the RF signals:

Depth

39
For pulse inversion harmonics:

Fast PIH Mode


Fast PIH Mode Out(B)

The down-sampling rate of the RF data is determined by:

Decimation

18.1.3 Receive Beam Forming

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

19.1 Exam 6.0.3

19.1.1 B-Mode Imaging

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:

Top Frequency Base


Bottom Frequency Base
Bottom Frequency Depth Base

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.

Blend Depth Base 1


Blend Depth Base 2
Blend Percent Base

19.1.3 TODO

B-iq Fast Processing

42
20 Exam B-RX

20.1 Exam 6.0.3

20.1.1 Receive Beam Forming

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)

20.2 Exam 5.x

20.2.1 Receive Beam Forming

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.

Use Rx Aperture (Accum)


Rx Aperture (Accum)
Rx Aperture Max (Accum)
Rx Curve Depth (Accum)

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

21.1 Exam 6.0.3

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

22.1 Exam 6.0.3

Changing the preset transmit setting through this parameter will load default values for the other parameters:

B-Freq

22.1.1 Temporal Shaping

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-

22.1.2 Transmit Beam Forming

The aperture opening for different depths is determined through:

Tx Aperture (see System Curves)


Tx Aperture Max
Tx Curve Depth

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

23.1 Exam 6.0.3

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

PRP (second one)


Dual Color PRP

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

The CDI image overlay can be displayed or hidden by changing

Color Visibility

50
24 Exam CDI-GAIN

24.1 Exam 6.0.3

24.1.1 Temporal Shaping of the Pre-beam Formed RF data

The analog TGC for RF data collection is determined through

TGC

24.1.2 Temporal Shaping of the beam Formed RF data

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

For more info see Gain Engine.

52
25 Exam CDI-GEOM

25.1 Exam 6.0.3

Changing the optimized preset settings through Color FR will load default values for the other parameters, specially the two Line Density parameters:

Color FR

25.1.1 Transmit Beam Forming

The beam steering angle is determined through:

Steer

25.1.2 Temporal Shape of the RF Data

The down-sampling rate applied to the RF data is determined by RF Decimation.

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

26.1 Exam 6.0.3

26.1.1 Temporal Shaping

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

Color Pulse Shape

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 Exam 6.0.3

27.1.1 Transmit/Receive

The beam angle for the M-line can be adjusted through:

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

The rate at which the line will be scanned is determined by:

LRP

The Line Density of the B-mode image is determined through:

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

28.1 Exam 6.0.3

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)

The transmit frequency of the PWD pulse is set through:

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

28.1.3 Temporal Shaping of the RF Data

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:

Frames Before Skip = Interrupt Ratio * Frames Skipped.

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:

int numOfPoles = 1 + (Num_Init_Samples_Duplex_WF >= Frames_Before_Skip) ? Frames_Before_Skip - 1 : Num_Init_Samples_Duplex_WF;

Num Init Samples (Duplex WF)

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

28.1.7 Audio Processing

Audio Gain
Audio Shift
Audio Mask Num Bit
Audio Filter Size

62
29 GPS Data Collection

29.1 Transducer and Needle Tracking

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

29.1.1 Transducer Tracking Only

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

29.1.1.1 Data Format

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)

typedef struct tagDOUBLE_POSITION_MATRIX_TIME_Q_RECORD


{
double x;
double y;
double z;
double s[3][3];
double time;
unsigned short quality;
} DOUBLE_POSITION_MATRIX_TIME_Q_RECORD;

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.

The matrix information based on the A, E, R, X, Y, and Z:

s[0][0] = cosE * cosA;


s[0][1] = -1.0*cosR * sinA + sinR*sinE*cosA;
s[0][2] = sinR*sinA + cosR*sinE*cosA;
s[1][0] = cosE*sinA;
s[1][1] = cosR*cosA + sinR*sinE*sinA;
s[1][2] = -1*sinR*cosA + cosR*sinE*sinA;
s[2][0] = -1*sinE;
s[2][1] = sinR*cosE;
s[2][2] = cosR*cosE;

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.

The calibration matrix for the linear probe is:

14.8449 0.9477 -0.0018


15.0061 0.0016 1.00
0.1638 0.0166 0.0052
The calibration matrix for the convex probe is:

-29.7558 0.9433 -0.0034


-0.087 0.0033 1.00
-0.7053 0.0132 -0.0087
and the ultrasound image should be put into a vector format like:

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

30.2 ECG Models


The Ultrasonix systems/software have supported 3 models over the history of the device:

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.

30.3 Data Collection


When the ECG is turned on, data can be captured once the image is frozen via the Data Storage screen.

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

30.4 R-Wave Triggering


Information to come...

30.5 Driver Installation


The Corscience ECG module requires installation prior to usage. The driver can be downloaded from here. Unzip the files and follow the installation
instructions. Before installation, ensure that other applications such as Exam are closed. Once the necessary drivers have been successfully installed,
the device is ready for use.

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.2 Screen Layout

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.

Selecting the 3D region of interest

Sample volume

33.1 Data Capture


When the image is frozen, capture a volume using the save option on the touchscreen. A thumbnail with a box will appear on the bottom of the screen
once a 3D volume has been saved. Clicking on the thumbnail will open the volume in the 3D engine assuming it is within 24 hours of the scan.

76
3D Thumbnail

33.2 Data Format


The volume data with a .3dd .3dv file extension are saved in the same folder location where regular print screen images are saved D:\PatientInfo\:

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.

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>


<Params xmlns="">
<FourD class="_3dParams" datafile="volume.3dd.xml">
<img_dims cx="438" cy="297"/>
<microns_pp cx="164" cy="164"/>
<roi bottom="0" left="0" right="0" top="0"/>
<axis_offset_mm>32.252000</axis_offset_mm>
<volume_angle>43.902439</volume_angle>
<nimages_per_volume>31</nimages_per_volume>
<sampleDistance_mm>50.512001</sampleDistance_mm>
<sampleNum>200</sampleNum>
<roiSampleNum>164</roiSampleNum>
<lineNum>72</lineNum>
<frame_angle>57.985119</frame_angle>
<frame_offset_mm>40.000000</frame_offset_mm>
<roiSampleLOffset>55</roiSampleLOffset>
<roiSampleROffset>55</roiSampleROffset>
</FourD>
</Params>

angle between frames = <volume_angle>/(number of frames - 1)


angle between scan lines = <frame_angle>/(number of lines - 1)

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.

<probe enabled="1" id="15" name="4DC7-3/40">


<type>0</type>
<transmitoffset>0.000000</transmitoffset>
<vendors>
<vendor name="Vermon">
<model>CLA5.0/R40/128-1165(4D-PROBE)</model>
<partnumber cableexit="left">00.035.071</partnumber>
</vendor>
</vendors>
<icon>4DC7-4_40.png</icon>
<biopsy>
<angle>0</angle>
<depth>0</depth>
<distance>0</distance>
<width>0</width>
</biopsy>
<frequency>
<center>4500000</center>
<bandwidth>3600000</bandwidth>
</frequency>
<maxfocusdistance>300000</maxfocusdistance>
<maxsteerangle>15000</maxsteerangle>
<minFocusDistanceDoppler>80000</minFocusDistanceDoppler>
<minlineduration>120</minlineduration>
<motor>
<FOV>75000</FOV>
<homeMethod>2</homeMethod>
<minTimeBetweenPulses>40000</minTimeBetweenPulses>

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

34.1 Version 6.x Software


Starting from version 6.0 software, we are moving away from frequecy compounding and adopting the IQ demodulation instead. In this page, the
general signal processing to generate the B mode image from RF signals using IQ demodulation on the Sonix Series is explained.

34.2 General Signal Processing


The general signal processing to generate B mode image from RF signal is as follows:

Down mixing (multiplication with sine and cosine table)


Low pass filtering both signals
Envelope detection
Log compression

34.3 Down Mixing


Down mixing is the first step in IQ demodulation. The real valued RF-signal is multiplied/mixed with a sine/cosie signals. After this step, the frequency
spectrum is moved down in the frequency plane.

I = RF x cos(wt)
Q = RF x -sin(wt)

Currently, the center frequency for both sine and cosine table are adjustable as a sliding frequency. Typically the down mixing starts with a high
frequency at the probe location (start freq) and goes down linearly as we image deeper (stop freq). After a certain depth (stop freq depth) it remains the
same value. This is to account for the downshifting of the center frequency of the RF data due to attenuation by tissue.

34.4 Low Pass filtering


After down mixing, the signal is low-pass filtered to remove the negative frequency spectrum and noise outside the desired bandwidth.

Currently, the low pass filter is an FIR filter and implemented as follows

I = filter( b, 1, I );
Q = filter( b, 1, Q );

where

b: is a vector containing FIR coefficients: b = fir1( nTaps, cutoff),


cutoff: is the "cutoff" parameter in BIQ-Filter (in percent), and
nTaps: is equal to ( numberOfRFSamplesPerPixel x "windowFactor" )

where

numberOfRFSamplesPerPixel = ( SamplingFreq >> rfDecimation) / "bSampling freq",


Sampling Freq = 40MHz, and
"rfDecimation" is a parameter which is typically 0 for linear probes (i.e. 40MHz sampling) and 1 for phased array and convex probes (i.e.
20MHz sampling) since they are working with lower frequencies.

To make the filter band width narrower, set the "cutoff" to zero and increase the "window factor" parameter.

34.5 Envelope detection


Is simply impleted as follows

Env = sqrt( I*I + Q*Q )

where I/Q are the output of the low pass filtering.

79
34.6 Log compression
Roughly speaking the compression table is as follows

B_dB = 20*log10(Env)

and the final gray scale mapping is as follows

B = 255 x ( B_dB - "reject") / ("Dynamic range")

where both reject and dynamic range parameters can be adjusted in the B-DYNRANGE.

Note: In the system this curve is only applied up to a certain value (Pivot out). After this point the compression is linear instead of logarithmic.

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.

Back to A Reference on 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.

36.2 Important Notice


The SonixDAQ is a receive module. The SonixDAQ does not control the transmit and has no effect on the actual imaging process of the Sonix
ultrasound systems. Thus, it can be used in a parallel manner while a standard ultrasound imaging is in progress.

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.

36.3 Technical Specifications


The technical specifications of the SonixDAQ that the user should be aware of before using the device for research include:

Supports up to 128 channels (parallel receive) each equipped with an ADC


16GB of internal memory for recording the data
40MHz internal clock
Supports both 80MHz sampling (10-bit ADC) and 40MHz sampling (12-bit ADC)
Supports external triggering for synchronous data acquisition
USB connection for programming the DAQ and transferring data back to the PC

36.4 Manufacturer Contact


For technical assistance, contact:

Ultrasonix Analogic Ultrasound

82
130-4311 Viking Way

Richmond, BC, Canada

V6V2K9

Toll-free in NA: 1-866-437-9508

Tel: 1-604-279-8550

Fax: 1-604-279-8559

36.5 PDF Download


Download all SonixDAQ documentation as a PDF

36.6 Main Topics


SonixDAQ Hardware
SonixDAQ Software
SonixDAQ Installation
SonixDAQ Quick Test
SonixDAQ Software (SDK)
SonixDAQ Software (real-time)
SonixDAQ with External Clock
SonixDAQ Receive Bandwidth

83
37 SonixDAQ Hardware

37.1 Contents of the Box


The SonixDAQ box contains:

The SonixDAQ
One USB cable,
Two BNC cables, and
A power adapter.

SonixDAQ 1.1

37.2 SonixDAQ I/O Connections


The SonixDAQ has the following connections:

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.

37.3 Connecting the SonixDAQ to the Sonix System


In order to capture the data, the SonixDAQ has to be connected to the Sonix ultrasound system. For this purpose, the SonixDAQ probe connector
should be connected to the Sonix system's lowest probe slot. The other probe slot of the Sonix system is reserved for the actual probe that transmits
and receives the ultrasound signal in a standard way.

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

37.4 Connecting USB Cable


Connecting the USB cable is straight forward. Like other USB devices just connect one side of the USB cable to the DAQ and the other side of the USB
cable to on of the USB port on the Sonix system. Note that USB connector is used both for programming the DAQ and transferring the data from DAQ to
PC.

37.5 Connecting BNC Cable for Sync Signal


The next step is to connect the DAQ BNC Sync cable to the correct Sonix systems's BNC for proper synchronization. In the synchronous data
acquisition mode, the DAQ waits for the sync signal before starting to acquire data. Thus, care should be taken to ensure that the DAQ's correct BNC
connector (input sync) is connected to the Sonix system's correct BNC connector (output sync). The following figures show the correct connectors for
both the DAQ and the Sonix systems.

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

SonixTOUCH BNC Ports

37.6 Connecting BNC Cable for Clock Signal (Optional)


The SonixDAQ has its own internal clock for data acquisition which is running at 40MHz. This clock may not be perfectly synchronized with the Sonix
systems internal clock. This may introduce one sample shift in-between sequences of channel data. To resolve this issue, the second BNC can be used
to provide external clock to the DAQ. In the external clock data acquisition mode, the DAQ will ignore its internal clock and will rely on the clock which is
provided to it through the second BNC cable. For this mode to work properly, the Sonix system should be programmed to output its internal clock
(@40MHz) to one of the BNC cable. This signal should then be connected to the DAQ through its second port using the other BNC cable.

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.

37.7 Connecting to the Power Socket-Outlet


To connect the DAQ to the power outlet, make sure that the voltage of the outlet in your area matches the specifications of the power supply provided
with the DAQ. Make sure the on-off switch of the DAQ is in the off state. Connect the power supply to the DAQ and the power outlet. After this step, the
SonixDAQ is ready to be powered up by its on-off switch. Once powered up, three green LEDs beside the power button should turn on.

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.

37.8 SonixDAQ Ratings and Environmental Conditions


SonixDAQ Power Supply (PSU):

Input : 100 - 240Vac 5.0A, 110 Vac 5.0A, 220 Vac 5.0A, 50 ? 60 Hz
Output : 12V, 21.67A, 260W max

SonixDAQ:

Input : 12Vdc 20A

Operational Temperature:

50 to 104 degrees F (10 to 40 degrees C)

Operational Humidity:

88
30 to 75% relative humidity

Operational Altitude (Max):

2000 m

Operational Pollution:

degree 2

Installation Category:

Category II (including the PSU)

Shipping/Storage Conditions:

5 to 122 degrees F (-15 to 50 degrees C)

Shipping/Storage Humidity:

10 to 90% (non-condensing)

Shipping/Storage Pressure:

50 kPa to 106 kPa (kiloPascal)

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.

37.9 Maintenance and Service


Do not try to service or repair the SonixDAQ or otherwise open the casing of the device by yourself. Please contact Ultrasonix in case the SonixDAQ
needs maintenance or service.

37.10 Hardware Block Diagram


Inside the DAQ there are four receive board each capturing 32 channel (128 channel total). There is also one main board that control the data
acquisition process. Inside the DAQ is shown in a figure below:

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

38.1 DAQ Demo Software (5.x)


The SonixDAQ software is separated from the Exam software. This section will only focus on the DAQ software which is used to:

Program the DAQ by pressing "Create Sequence ..."


Adjust the DAQ parameters and capture channel data the by pressing "Start Sequencing"
Transfer the DAQ data back to PC by pressing "Download Data"
Load the collected data from the Sonix system (PC) and display the results by pressing "...".

38.1.1 Main Window

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

This window enables the user to view:

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.

38.1.2 Sequence Control

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

38.1.2.1 Choose the TGC Curve

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.

38.1.2.2 Imaging Parameters

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.

38.1.2.3 Clock Configuration

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.

38.1.2.4 Start Configuration

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

38.1.2.6 Select/Deselect HPF

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:

HPF cut-off = F_high = F_sampling/3 = 40MHz/3 = 13.3MHz and


LPF cut-off = F_low = F_high/20.7 = 650kHz.

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

The SonixDAQ can work in two different operating modes:

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

For example:128 channels x 2000 samples x 2 bytes per sample = 512 kB

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:

80MHz (decimation = 0) <<80MHz bitstream>>


40MHz (decimation = 0) <<40MHz bitstream>>
20MHz (decimation = 1) <<40MHz bitstream>>
13MHz (decimation = 2) <<40MHz bitstream>>
10MHz (decimation = 3) <<40MHz bitstream>>

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.

38.1.2.9 File Size

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.

38.1.2.10 Gain Adjustments

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.

38.1.2.11 Download data

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

38.1.2.12 Format of the stored data

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.

38.2 DAQ Demo Software (6.0)


This version offers a new interface for the DAQ Demo software while maintaining all the previous functionality.

38.2.1 Main Window

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)

Sequence Option Tab

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:

TGC Curve and Dial

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.

38.3 DAQ Demo Software (6.1)

38.3.1 Main Window

The following figure shows the main user interface of the SonixDAQ software (6.1):

38.3.2 New Features

38.3.2.1 Enhancing Data Visualization

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.

38.3.2.3 Saving Data

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.

38.3.2.4 Anti Aliasing Filter

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

39.1 DAQ Demo Software (6.0)

39.1.1 Main Window

The SonixDAQ software is separated from the Exam software. This section will only focus on the DAQ software which is used to:

Initialize the DAQ.


Adjust the DAQ parameters from Side Menu.
Selecting the buffer size.
Adjusting the gain and TGC curve.

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.

39.1.2 Sequence Control

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.

Sequence Side Menu

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

39.1.2.1 Adjust the TGC Curve

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

39.1.2.2 Imaging Parameters

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

39.1.2.3 Clock Configuration

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.

39.1.2.4 Start Configuration

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.

39.1.2.5 Channel Mapping

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

39.2 DAQ Demo Software (6.1)

39.2.1 Main Window

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

40.1 Downloading Software


For download instruction see the [SDK Download Page]

40.2 Installing the USB Driver (prior to ver 6.1)


Connect the power adapter to the DAQ and make sure it is turned off. Connect the DAQ to the Sonix system via a USB cable and turn on the DAQ.
Once you turned it on the following window should appear

Adding the DAQ as a new hardware

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\).

Once you set the path press Next.

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

40.3 Uninstalling the USB Driver (before ver 6.1)


In order to uninstall the old DAQ drivers,

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.

40.4 Installing the USB Driver (after ver 6.1)


Starting version 6.1, the cypress driver is no longer used for the DAQ. Instead, a new WinDriver is provided instead. If you have prior drivers installed on
your system, you need to remove the old drivers first before installing the new drivers (see the instructions above).

40.4.1 Installing the new driver

In order to install the new DAQ drivers, go to the \daq\drivers\

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.

Adding the DAQ as a new hardware

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.

40.4.2 Renaming the appropriate WDAPI library

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.

If your O/S is 32 bit, rename the wdapi1120_32bit.dll to wdapi1120.dll.


If your O/S is 64 bit, rename the wdapi1120_64bit.dll to wdapi1120.dll.

40.4.3 Initializing the DAQ

To make a second association to the installed driver go to the \sdk\bin\ folder.

Run the daq_demo_qt.exe program, and push the initialize button.


The programming of the DAQ should start in a few seconds, but fail to progress, because the system would recognize a new USB hardware
(which is the programmed DAQ).
You have already installed the driver in step 2, just be patient until Windows associates the DAQ with that driver.
If the first attempt fails try it one more time
turn the DAQ off, and back on again
Exit the daq_demo_qt.exe, and run it again and push the initialize button. The programming of the DAQ should start in a few
seconds, and progress all the way to 100%.
Check the device manager: You should be able to find "Initialized Sonix DAQ Cube" under "Windriver" instead of the uninitialized
device.

121
41 SonixDAQ Quick Test

41.1 Overview
The section outlines the procedure to test the SonixDAQ for collecting synchronized data.

41.2 Preparing the Sonix System Hardware


In case you are using older research systems (2010 or earlier), the PCI card may need to be modified to send proper output pulses to trigger the
SonixDAQ. To make the required modifications follow the instructions here. To check whether you need the modification or not, check the BNC Output
Section below.

41.3 Preparing the Sonix System Software

41.3.1 Software 3.x

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

41.3.2 Software 5.x

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

The description of each parameter is provided below:

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.

In Category TX Aperture Curve


Make the curve flat so that at the beginning of the transmit, the full aperture is used.

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).

41.4 Testing the BNC Output


Connect the output of the Sonix's BNC connector to an oscilloscope and make sure the synchronization signal is working properly. The output has to
have 5 volt amplitude and 50 ns duty cycle. The frequency of the synchronization pulse is determined by the Sonix system. In case of using Line Trigger
(Output Sync ->1), the frequency should be around 10kHz and in case of using Frame Trigger (Output Sync ->2), the frequency should be around
100Hz. Once you the sync signal passed the test, disconnect it from the oscilloscope and connect it to the DAQ.

BNC Output

41.5 Preparing the SonixDAQ


Make sure your DAQ is properly connected and the power is on (please see the DAQ hardware Section for this).
Run the DAQ software and press "Create Sequence ..." to initialize the DAQ.

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 Console Program

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

#define DAQ_FIRMWARE_PATH "D:\\mydaq\\fw\\"

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");
}

The following two steps will finalize the initialization:

tex.setSyncSignals(0, 1, 3);

This line sets up the synchronization pulses for BNC cables. The inputs for setSyncSignals are as follows

tex.setSyncSignals(input trigger, 1st output trigger, 2nd output trigger)

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);

42.2.2 Loading a Sequence

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.

42.2.3 Running The Sequence for Data Collection

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.

42.2.4 Saving Data

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.

42.3 DAQ Parameters


The followings are the DAQ parameters that can be programmed in the DAQ SDK. The parameter corresponds the same settings that are provided in
the DAQ control software

rlprms.lineDuration = 110; // line duration in micro seconds


rlprms.numSamples = 4000 / (1 + rlprms.decimation); // assuming 3000 samples at 40MHz

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
...

42.3.1 Acquisition Parameters

lineDuration: acquisition time, this value is in micro seconds


numSamples: number of samples to be acquired from each channel
freeRun: sets the DAQ to acquire continuously or stop after defined acquisition data size.
hpfBypass: by pass the digital high pass filter or not.
divisor: the size of data to be acquired i.e. dataSize = 16GB / 2^divisor
externalTrigger: defines whether the DAQ should listen to the external sync signal or not. To have synchronized data, this parameter has to be
true. Otherwise, the acquisition of the DAQ will not be in sync with transmit.
externalClock: defines whether the DAQ should use the external clock or use its own internal clock. Set this to false if external clock is not
provided.

42.3.2 Gain Parameters

lnaGain: LNA gain [0:1:2] corresponds to [16dB, 18dB, 21dB].


pgaGain: PGA gain [0:1:3] corresponds to [21dB, 24dB, 27dB, 30dB].

129
biasCurrent: switch gain [0:1:7] where 0 completely turns off the switch.

42.3.3 TGC Parameters

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);
}

42.3.4 Sampling Frequency Parameters

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:

// sampling and decimation


if (sampling_80MHz)
{
rlprms.sampling = 80; // DAQ sampling frequency 80 -> 80 [MHz]
rlprms.decimation = 0; // no decimation for 80MHz sampling
}
else
{
rlprms.sampling = 40; // DAQ sampling frequency 40 -> 40 [MHz]
rlprms.decimation = 0; // Fs = sampling / (1+decimation) e.g. decimation = 1 -> Fs=20 MHz
}

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.

43.1 Image Sequencer


The Texo SDK is used to generate conventional imaging (on the right) followed by a sequences of plane transmits for the DAQ (on the left). To separate
the two sequences, the trigger signal is turned off for the first part i.e. conventional imaging. This way the DAQ is not trigger during the regular B-mode
imaging.

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.2 Real-time Imaging with DAQ


In order to enable real-time imaging with the DAQ, the file size is set to be small (i.e. 16MB). This allows the the DAQ data to be transferred to the PC
fast (using the same USB connection). Note that this will result in pseudo real-time imaging with the DAQ since the streaming is not continuous and the
DAQ constantly switches between acquisition and downloading.

43.3 Imaging Parameters


The parameters for each of these SDKs can be found in their corresponding tab. The Amplio can be turned on/off in real-time. This allows the user to
look at both B-mode images or RF images in real-time. Furthermore, a real-time beamforming feature is also implement for the DAQ data. This enables
the user to turn the beamfroming on/off in real-time.

43.4 DAQ Data Storage


The DAQ data corresponding to each download can be found in the D:\DAQRT\ folder. The Demos software keeps the last 30 downloads in this folder.
Once it reaches the folder number 30, it will reset the counter and start overwriting the previously acquired folders.

43.5 Interface
The following figures show the main user interface of the Texo Demo Qt software (6.1) when

Amplio is On and DAQ Beamforming is Off,


Amplio is On and DAQ Beamforming is On,
Amplio is Off and DAQ Beamforming is On:

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.

43.6 Additional Features


With this version:

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

46.1 Experimental Setup


In order to study and measure the receive bandwidth of the SonixDAQ for both 40MHz and 80MHz sampling frequencies, a series of experiments were
performed. A signal generator was used for this purpose with the following settings:

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.

46.2 Signal Processing and Results


Recorded channel data were processed off-line. For all the injected signals, Fourier analysis was performed on each channel data and the resulting
spectrum were average over all 128 channels to estimate the transfer function.

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.

SonixDAQ with 40MHz sampling

137
SonixDAQ with 80MHz sampling.

46.3 Remarks
DAQ with 40MHz sampling

-10dB drop from 4 to 20MHz,

DAQ with 80MHz sampling

-15dB drop from 4 to 40MHz.

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.

47.1 Shape of the Ultrasound Data as a Function of Time

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.

Back to A Reference on Ultrasound Imaging

47.2 Pre-beam Forming RF Data Processing on Sonix Platforms


The temporal shape of the RF signal is determined by a number of different parameters. To compensate for the decreasing amplitude of the RF signal
due to tissue attenuation, the (analog) signal is amplified more as the time elapses. This technique is called Time Gain Compensation (TGC) because
of the change in the amplifier gain as a function of time. Please see the receive signal path here. In addition to the TGC, there is also a Digital Gain
which is applied to the entire RF data at all depths. The way we apply the TGC has evolved with the evolution of our systems. Please refer to Gain
Engine for more details.

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

Back to A Reference on Ultrasound Imaging

47.3 Receive Beam Forming

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.

See also: Dynamic focus

Back to A Reference on Ultrasound Imaging

47.4 Receive Beam Forming on Sonix Platforms


Sonix platforms provide a number of different parameters which can be used for dynamic receive beam-forming using transducer arrays. The SonixRP,
SonixTOUCH, and SonixTABLET platforms all perform the receive beam-forming on an FPGA, prior to the transfer of RF-data to the CPU memory of
the system. Therefore the pre-beam forming RF data are not available to the user on these systems. Please see the RF signal path here.

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:

Texo Parameters For Receive Beam Forming


Exam Parameters For Receive Beam Forming:
Through B-RX

Back to A Reference on Ultrasound Imaging

47.5 Beam Formed RF Data Processing on Sonix Platforms


After the RF Data from different ultrasound transducers are passed through the delay and sum algorithm of dynamic receive beam forming, the result is
a beam formed RF Data. The Sonix systems provide further processing such as filtering and TGC on this data.

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.

Back to A Reference on Ultrasound Imaging

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 Peripheral Control

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.

49.2 PDF Download


Download all Amplio SDK documentation as a PDF

49.3 Amplio SDK


Amplio SDK consists of the following three functions:

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.

49.3.2 Speckle Reduction

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.

Amplio employs two different methods of speckle reduction listed below.

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.

49.3.3 Scan Conversion

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

49.4 Amplio Demo Program


SDK 6.X comes with executable amplio demo file located at \sdk\bin\amplio_demo_qt.exe

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

.bpr (pre scan conversion B data)


.bpr (pre scan conversion B data after speckle reduction)
.b8 (scan converted image)

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 current interface of amplio is shown in the figures below:

Top left shows the original RF data.


Top right shows the B image.
Bottom left shows the B image after speckle reduction.
Bottom right shows the B image after speckle reduction and scan conversion.

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)

Amplio Qt Demo (Convex Transducer)

147
Amplio Qt Demo (Phased Array Transducer)

49.5 Amplio in Real-Time


Amplio console can also be used for real-time RF signal processing in order to generate proper B-mode image. An example of amplio SDK for real-time
B-mode generation is provided in the Texo_DAQ_QT Demo. This Demos software uses Amplio to generate B mode images coming both from Texo and
the DAQ data for side-by-side comparison.

148
50 SDK Download

50.1 Downloading Software


You can find the latest Exam Software, SDK, user manuals, and service manuals on the Research Forum. To obtain login credentials, register on the
research forum and view the Download and Documentation post in the Announcement section. Once you downloaded the software, extract it in your
hard drive.

SDK download page on Research Forum

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
};

bool startEcg(ecgVersion version, int port)


{
// initialize the ECG the version can be L&T or Corscience module
if (ecg.init(version, port))
{
// start running
ecg.start();
return true;
}

return false;
}

void setSamplingRate(ecgSamplingRate sr)


{
// where sr can be ecgSamplingRateLow, ecgSamplingRateMed, ecgSamplingRateHigh
// for the Corscience ecg it is best to set a rate of 100Hz or 200Hz
ecg.setSamplingRate(sr);
}

void adjustGain(ecgGainLevel gain)


{

152
// where gain can be ecgGainHigh, ecgGainMed or ecgGainLow
ecg.setGain(gain);
}

void adjustLead(ecgLead lead)


{
// where:
// lead can be set to ecgLeadII or ecgLeadIII for Corscience ecg
// lead can be set to ecgLeadSTD, ecgLeadI, ecgLeadII or ecgLeadIII for L&T ecg
ecg.setLead(lead);
}

51.3 PDF Download


Download all Fluctus SDK documentation as a PDF

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.

52.2 PDF Download


Download all Impero SDK documentation as a PDF

52.3 Button Identifiers


In the example program for Impero, the callback function receives a pointer void * data, that points to the information, about which button or dial on the
panel has started the callback. In the figure below, the values that are expected from the pointer as interpreted as an unsigned integer, are shown over
each button control. Note that the Sonix RP layout is also valid for the Sonix MDP system, though the Sonix MDP has one additional dial control near
the touchscreen.

Sonix RP Console Button IDs

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 onButton(type, data)


{
// check for freeze button push
if (type == imperoEventPush && data == freezeButton)
{
SetEvent(freezeEvent)
}
}

void eventThread()
{
while(1)
{
// block until freeze event is set
WaitForEvent(freezeEvent)

// Texo or Porta could be used here to toggle imaging status


ImagingSDK->toggleFreeze();
}
}

155
53 Licensing
Licensing is used to enable/disable some of the internal features on the Sonix systems.

53.1 Exam/SDK version 6.0 and older


Imaging modes can be enabled/disabled by different licenses. In these version, one license called Research Package used to enable all the research
features.

53.2 Exam/SDK version 6.1 and after


Starting Exam/SDK version 6.1.0 the previous Research Package is broken into the following sub-licenses to enable/disable different research features
on the system

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:

Sample 3D and Elasto Matlab Display

Sample Matlab B mode Display

157
Sample Matlab M mode Display

Sample Matlab Color Doppler Display

158
Sample Matlab PW Display

Sample Matlab Beamforming

159
55 SonixDataTools

SonixDataTool Sample RF processing screen shot

55.1 Version 6.1.0

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

55.1.2 Quick Start

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.

The image displayed in the left hand side panel

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.

Analyzing the data


Choose the type of the analysis you want to perform and press the Analyze button. For instance for the prescanconverted b-mode data stored in the .bpr
files, one can do the scan-conversion. The analyzed data will be displayed in the right hand axes. Again, depending on the data type, a vertical slider
bar might appear which can be used to change the contrast of the image.

Analyzed data is displayed in the right hand panel


Once the Analyze button is pressed, the type of analysis cannot be changed. However you can still browse through the frames using the Play/Pause
button and horizontal slider bar. In order to change the type of analysis, you need to toggle the Analyze button to clear the right hand axes. Also when
the software is sequencing through different frames (when you push the Play/Pause button), you cannot toggle the state of the Analyze button. Please
stop the sequence first, then make changes to the analysis.

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.

55.1.5 Legacy Code

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.

55.1.6 Plotting Functions

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.

55.1.7 Image Processing Functions

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.

55.1.8 Other Functions

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.

55.1.9 Known Issues

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.

Matlab Ulterius SDK

The SDK contains sample scripts which shows its basic functions.

The following steps are taken in each sample scripts:

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.

% SDK path to find the UlteriusCOM server


SDK_BIN_PATH = '../../bin';

% Registering the UlteriusCOM server on the computer


system(['cd "' SDK_BIN_PATH '" && ' 'regsvr32 UlteriusCOM.dll']);

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.

% registering the callbacks


h.registerevent({'newFrameEvent' 'dataCallback'});
h.registerevent({'paramEvent' 'paramCallback'});

Once done, the server can be shut down and unregistered from within the Matlab environment (or command prompt of Windows):

system(['cd "' SDK_BIN_PATH '" && ' 'regsvr32 /u UlteriusCOM.dll']);

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)

Methods for class COM.UlteriusCOM_Server:

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.

Matlab Texo SDK

The SDK contains sample scripts which shows its basic functions.

The following steps are taken in each sample scripts:

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.

% SDK path to find the TexoCOM server


SDK_BIN_PATH = '../../bin';

% Registering the TexoCOM server on the computer


system(['cd "' SDK_BIN_PATH '" && ' 'regsvr32 TexoCOM.dll']);

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.

% registering the callback


h.registerevent({'newFrameEvent' 'yourFunctionName'});

Once done, the server can be shut down and unregistered from within the Matlab environment (or command prompt of Windows):

system(['cd "' SDK_BIN_PATH '" && ' 'regsvr32 /u TexoCOM.dll']);

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)

Methods for class COM.TexoCOM_Server:

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.

58.2 History and Versions


Porta started out in 2004 as a project for Ultrasonix' first OEM customer, where they required access to the imaging engine.

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.

58.3 Development Partners


The following partners have a rich history of working with Ultrasonix, and specifically programming using the Porta SDK. We strongly recommend
contacting them if an OEM or Porta based software solution is required for a project:

LJB Development

58.4 PDF Download


Download all Porta SDK documentation as a PDF

58.5 Main Topics


Porta Function Overview
Porta Data and Imaging
Porta Synchronization Signals

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

If initialization fails, some important things to first look at:

Paths are pointing to the proper location


Hardware version matches the development platform

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.

For Version 5.0 and higher:

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.3 Synchronization Signals


Porta has the ability to interface to and to control the ultrasound BNC ports that come standard on the hardware. Please note that Sonix RP has one
input and one output, and the SonixTOUCH Research and Sonix MDP have 2 of each.

More information on this can be found here.

59.4 Transducers
The important abilities for Porta to interact with transducers include the following:

Retrieve the probe ID from each of the 3 connectors individually


Get the name of the probe based on the ID read
Select a connector to be active

Once activateProbeConnector() has been called, the system is setup to image with the transducer plugged into that port.

59.5 Testing Functions


Porta has the ability to test the individual components on the ultrasound electronics in cases where a problem may exist (most notably in case proper
initialization fails). Under normal circumstances, all the tests should pass, with the function testElectronicComponent() returning true. Since running all
the tests (especially power tests) may take a while, custom programs may not want to run the tests at every startup.

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.

59.6 Imaging Modes


Most of the imaging modes that the main research interface can run are also available in Porta (see licensing information for modes that are not active
by default). An imaging mode programs the ultrasound transducer in a generic manner, so that a B image or Pulsed Wave Doppler spectrum can be
acquired for example. Each imaging mode has a special purpose, and some are simple extensions of a base mode, such as 4B mode, which is B mode,
but having the ability to display up to 4 displays on the screen at the same time so the user can can compare images.

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.

59.8 Imaging Pipeline


The imaging pipeline is a generic term used in the Ultrasonix software to denote the actual acquisition of images, or the time in which the ultrasound
transducer is transmitting and receiving signal to produce an image. Once a probe and imaging mode are setup, the imaging pipeline can be started by
calling runImage(). Internally, this tells the ultrasound hardware to start the transmit/receive on the probe, start the DMA process, so frames can be
stored into PC memory, and finally wake up a collector thread, which is used in all Ultrasonix software including the reserach interface, Porta and Texo,
for detecting new frames. The collector thread searches for a new frame header, which is a 4 byte number at the beginning of each ultrasound frame (or
line in spectral modes). The frame counter will reset to 0 when it reaches 16000. Since the cine buffer (the RAM where image data is DMA'ed to) is
cyclic, it is important not to stall the collector thread during callbacks, as if the frame counter overwrites itself at the current address, the thread will
assume a problem has occurred in the pipeline, and no new frames will be detected, even though the DMA is still occurring. The function stopImage()
will halt the transmitting of the transducer, and suspend the collector thread. It should also be noted that the collector thread actually looks for the frame
ID of the 'next frame to denote that the previous frame has been successfully DMA'ed. The reason for this is that the protocol uses a beginning of frame
tag (BOF), and not an end of frame tag (EOF). If the collector thread looked at the BOF for the current frame, the DMA for the various ultrasound lines
that make up the frame could still be taking place while the software signaled that a new frame was ready, when it fact it is not. This is OK for most
cases, since the first line of the next frame is DMA'ed very quickly after the previous frame, however, in cases where the Max FR parameter is set, this
will add a delay in between frames, and an actual frame that has finished being collected will not be notified until after this delay period.

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.).

More information on this can be found here.

59.10 Parameter Control


Parameters can be a challenge to wrap one's head around, as there are hundreds of parameters that control how imaging is done on the ultrasound
system. Thankfully, there are many presets that come with Porta that optimize these parameters so little modification needs to be performed. General
functions such as imaging depth, gain and frequency are typical for most applications and therefore Porta based applications will want to make use of
these through the parameters interface. Changing a parameter is as simple as a call to setParam() or cycleParam(). Internally, if imaging is running,
these functions will temporarily freeze the image, modify the parameter and upload the tables to the hardware, and then restart the imaging. If a
parameter such as map or persistence is changed, then the imaging does not need to be interrupted.

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).

59.11 Parameter Types


There are various types of parameters that Porta and other Ultrasonix software makes use of. Most of the parameters are integer values, however some
important ones that may need to be changed include the 8 point gain curve that represents the time-gain-control (or TGC) curve. There are also
rectangle parameters for specifying bounding areas, and 3 point curves that represent system gain curves and aperture openings as a function of time.

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.

Two types of display data can be obtained:

1. Greyscale data in 8 bit format


2. RGB data in 32 bit format

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.

59.13 Image Geometry and Scaling


To make it simpler for drawing overlays on images, Porta implements some useful functions for:

Obtaining region-of-interests (ROI)


Converting pixel coordinates into ultrasound coordinates and vice-versa
Obtaining scaling parameters for making measurements
Obtaining GDI based arc rectangles for properly drawing overlays on fan (convex transducers) and phased-array images

59.14 Motor Control


Propello is a popular open-source application developed on top of the Porta SDK, that can be used for acquiring volumetric ultrasound data. Apart from
Propello, developers can implement their own motor control to volumetric probes by interfacing with the functions and parameters that Porta provides.
Both manual and automatic modes can be programmed; where manual mode allows stepping of the motor to specific locations in between imaging, and
automatic mode allows for continual sweeping of the transducer back and forth while in a given imaging mode.

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:

Pre-scan converted B mode frames and M mode lines


RF data (i.e. special research mode)
Raw color Doppler and pulsed wave Doppler RF data

For Display Data, the function setDisplayCallback() should be setup, and monitored for newly processed frames. This is useful for collecting:

Processed B mode images


Processed Color Doppler images
Spectrum data from M or Pulsed Wave modes

60.2 Real-time Handling


To acquire raw data, the following pseudo-code steps should be taken:

void main()
{
porta->setRawDataCallback(rawCB)

while(1)
{
// do something
}
}

bool rawCB(void * data)


{
memcpy(buffer, data)
// notify main thread, get out of here quickly!
postMessage(processingFn)
}

void processingFn()
{
// run some algorithm on 'buffer'
}

To acquire display data, the following pseudo-code steps should be taken:

void main()
{
porta->setDisplayCallback(dispCB)

while(1)
{
// do something
}
}

bool dispCB(void * prm)


{
porta->getBwImage(0, buffer)
(MyDisplay *)prm->draw()
}

void MyDisplay::draw()
{
// apply any buffering techniques
// post message to redraw window
}

60.3 Acquiring Data while Frozen


To acquire raw data while frozen, the following pseudo-code steps should be taken:

void onFreeze()
{
count = porta->getFrameCount(0)
}

174
void onGetFrame(int frame)
{
// enforce boundaries
if (frame < 0 || frame >= count)
return

data = porta->getFrameAddress(0, frame)


// process raw frame
// ... do something with 'data'
}

To acquire display data while frozen, the following pseudo-code steps should be taken:

void onFreeze()
{
count = porta->getFrameCount(0)
}

void onCineScroll(int frame)


{
// enforce boundaries
if (frame < 0 || frame >= count)
return

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 Parameter Control


There are a few parameters that control how the BNC is setup, namely trigger in, trigger out, and trigger out 2. These can be used in various ways.

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.

61.2 General Usage


The following pseudo-code gives an idea of how polling for a signal on the input BNC would work:

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.

62.1.1 Installation Steps

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

62.1.2 Interface Details

This section provides a summary of the application components. The main screen is shown below.

Description of interface components:

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.

62.2 Motor Controls


Two types of capture methods, manual and automatic mode. Why have two modes? Automatic mode is nice, because it will automatically acquire
volumes into the cine, and do it with some speed, however it does not truly provide full motor control, which is the point of the application. Automatic
mode also faces the issue that for every reverse sweep volume acquired, the corresponding frames will skewed the opposite direction, as the motor is
continuously moving while acquiring the frame. For this reason, it may not be desired to use the reverse sweep volumes without some sort of alignment
algorithm in place.

62.2.1 Manual Mode

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.

62.2.2 Automatic Mode

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.

The user has control of two parameters:

Degrees per frame


Frames per volume

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 acquisition is stopped and restarted


The degrees per frame or frames per volume is changed
Any imaging parameter is modified

62.3 Data Storage


The data storage dialog as shown in Figure 3.1 is used to store individual images as well as full volumes. Three types of data are available for capture:

Pre scan-converted B data


Post scan-converted B data
Unfiltered 20 MHz RF data
Color Velocity/Variance data
Color RF data
Post scan-converted B/Color data

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.

62.3.1 Single Image File Formats

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
};

62.4 Probe Parameters


Some probe specific parameters including probe radius, and motor radius specifications from the probe manufacturer can be found in the probes.xml
file. The units for the radius, and pitch parameters are reported in microns. A snippet of the parameters used for 3D reconstruction from the probes.xml
file for the 4DC7-3 probe is shown below. Alternatively, you can also refer to the probes information panel for probe specific parameters from the
manufacturer (see the Probe Information panel below).

<probe enabled="1" id="16" name="m4DC7-3/40">


<motor>
<radius>27250</radius>
<steps>205</steps>
</motor>
<numElements>128</numElements>
<pitch>425</pitch>
<radius>40000</radius>
</probe>

From the above, the following parameters can be derived.

probe length = pitch * numElements

probe angle = probe length / probe radius * 180 / PI (where PI = 3.14...)

frame angle length = ( numLines / linedensity ) * probe angle

angle between frames = volume angle / ( frames per volume - 1 )

angle between scan lines = frame angle length /( number of lines - 1 )

182
62.5 Imaging Parameters
The imaging parameters available under the controls tab are shown below:

Each control controls B and RF parameters in the following manner:

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

Color Doppler also contains it's own adjustments:

Gain: Adjusts the analog gain applied to the color image


Tx Freq: The transmit frequency for color image
PRF: The pulse repetition period for visualizing different ranges of blood speed
Persistence: The level of time-motion filtering applied
Mode: Switches between Color Doppler Imaging and Power Doppler Imaging

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.

62.5.1 Important Imaging Notes

1. The General (or master) preset is loaded upon probe detection


2. Line Density is automatically set to 128 (the native transducer element count) no matter what value the master preset holds. Setting line
density to 128 maximizes the frame rate. The faster the frame rate, the faster the motor will move.
3. RF decimation is automatically set to 1, to acquire 20 MHz RF data, since 40 MHz collection is not always reliable
4. There is only one focus used because RF mode (the mode that is configured for Propello), only supports 1, and because having more than
one focus will slow down the frame rate and volume rate

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.

function [volume, datatype, numVols, fpV, h, w, ss] = loadvol(datapath, volN)

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:

62.8 Future Version Development


Future additions to the application may include:

Access to images and volumes in real-time


Development of a plugin framework to allow volume rendering engines to be implemented
Access to more imaging parameters
Support for more 4D transducers such as EV and linear probes
One common header for volumes and single images? Maybe alter the Ulterius header slightly?

185
63 Release Notes

63.1 SDK 6.2


(ETR Sept 2016)

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

63.2 SDK 6.1.2


General
Minor bugfixes

63.3 SDK 6.1.1

Sample Matlab Display

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.

63.4 SDK 6.1.0


Also known as Quantom Release

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.

63.5 SDK 6.0.7


(Released on Jan 13, 2014)

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.

Real-time RF line Display

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.

Matlab Ulterius SDK

Matlab Texo SDK

Porta:

189
Fixed noise in color doppler.

Texo:
The tx.mask's definition is corrected to char[128] instead of int[128].

63.7 SDK 6.0.5


Texo:
texoSetPower would return a 0, if it where called prior to programming a sequence, although it would do its job. This bug is fixed
now.

63.8 SDK 6.0.4


No SDK upgrade.

63.9 SDK 6.0.3


Texo
tx.sync is introduced as a new parameter that allows the user to selectively turn the output trigger on/off for individual scan lines.
The user still needs to set the output trigger to line trigger.
The tx.centerElement and rx.centerElement can now be programmed with double precision accuracy. Previous implementation
only allowed the user to move the center element in 1/10 of actual element spacing. Starting this version Texo users can program
the center line as follows:

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.

63.10 SDK 6.0


The Exam uses a new beamformer and imageformer which all SDKs benefit from.
QT libraries are now used instead of MFC,
Demo SDKs are upgraded with new QT based interfaces,
Pando and Mucro SDKs are integrated into a new SDK called Amplio that can be used to generate a B-mode image from RF data,
Pre-complied executable version of SDKs are now provided inside the \bin folder,

63.11 SDK 5.7


This is the last SDK update that supports older SonixRP systems (i.e. version 2 hardware).

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.

64.2 History and Versions


Texo was developed in 2006 for the Sonix RP system, and was initially going to be a graphical program called Sequence Builder. It made more sense to
build a full SDK, and Texo was thus born. Though there have been numerous updates to Texo over the years, the updates have been relatively minor,
and the same functionality that was available upon initial release has not changed much. Version 2.0 will be on a different codebase to have better
support on the SonixTOUCH, whereas version 1.x was focused on the Sonix RP. The latest version also implements the DAQ SDK for interfacing to the
SonixDAQ device.

64.3 PDF Download


Download all Texo SDK documentation as a PDF

64.4 Main Topics


Texo Sequencing
Texo Parameters
Texo Data Processing
Texo Parameter Effects
Texo GUI Demo
Texo Licensing

191
65 Texo Sequencing

65.1 Sequencing Overview


Sequencing can be defined as the ordering and arrangement of transmit and receive pulses for a given ultrasound frame. An ultrasound frame can be
made up of any sort of data, for instance envelope detected B mode data, or RF data. A typical sequence in ultrasound runs across the transducer from
one end to the other, such as in B mode. Other sequences for M mode and Pulsed Doppler will stay in a single position on the transducer, and modes
like Color Doppler will have complex sequences used to time the PRF of an ensemble of scanlines used as input into an autocorrelation algorithm. Texo
allows for all these types of sequences to be built, plus whatever other ideas can be creatively implemented. The SDK allows for a transmit to occur at
one location of the transducer, and for the receive to occur at a completely different one, which can be useful for angular beams and/or picking up
weaker signals from the backscatter.

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

65.2 Sequencing Examples


Simple pseudo-code for creating a linear sequence would look as follows:

void main()
{
elem = texoGetProbeNumElements()

for (i = 0; i < elem; i++)

192
{
tx.center = rx.center = i
texoAddLine(tx, rx)
}
}

A simple M mode sequence could look as follows:

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.

Finally, a more complex sequence may look like:

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.

66.1 Global Parameters


texoSetPower(int overallPower, int MaxPositivePower, int maxNegativePower)
Sets the power values for the sequence. All values ranges from 0 to 15.

66.2 Generic Parameters


The following parameters are generic to both transmit and receive and deserve some detailed information:

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.

66.3 Transmit Parameters


The transmit parameters are set for each scanline that is programmed in Texo, there is the flexibility to create different parameters for each line, or they
can all use the same properties.

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.

66.4 Analog Front End (AFE)


Analog front end parameters are set in the VCA

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

PGA is Programmable gain amplifier


LNA is low noise amplifier
AAF/LPF is Antialiasing filter
Digital HPF is there to avoid RF saturation

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.

66.5 Receive Parameters


The receive parameters are set for each scanline that is programmed in Texo, there is the flexibility to create different parameters for each line, or they
can all use the same properties.

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.

Clock Diagram with Custom Line Duration

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

67.1 Data representation


The data in the CINE-Buffer and respectively in the output files of the console example program is stored in the following manner:

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))

67.2 MATLAB method to read data-file


To display the results of Texo data capture, the MATLAB code below provides a simple example. It is a function that will take in raw RF values outputted
from Texo, and create a large matrix that will hold all RF lines organized into frames.

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=[];

for frame_count = 1:frame_no,


BigMatrix(frame_count,:) = v(((frame_count-1)*(h/2*w+2)+3) : ((frame_count)*(h/2*w+2)))';
end;
for i=1:frame_no,
A = reshape(BigMatrix(i,:),h/2,w);
images(:,:,i) = A;
plot(A);%,axis([0 xmax ymin ymax ]);%imagesc(A);colormap gray;
end;
fclose(fid);

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

%Split up frames into scanlines


samplesPerLine = ((frameSize-headerSize)/2)/linesPerFrame;
frames(1:2,:) = []; %delete frame headers
linesByFrame = zeros(samplesPerLine,linesPerFrame,numberOfFrames); %empty 3d-matrix to hold lines
for i = 1:numberOfFrames,
for j = 1:linesPerFrame,
linesByFrame(:,j,i) = frames((j-1)*samplesPerLine+1:j*samplesPerLine,i);
end;
end;
clear frames; %Delete data to free memory

%Example of how to extract a single frame (frame 2 in this case)


frame1(:,:) = linesByFrame(:,:,2);

67.3 A Short Introduction to Imaging


To create an image from scanlines a, the ultrasound data have to be envelope detected. Using Texo, the easiest way to achieve this, is to order
envelope detected data from the machine:

tex->addLine(envData, tx, rx))

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.

68.2 Transmit Frequency Effects


The first experiment will determine the effects of pulse frequency on the return echo pulse shape. In this experiment, the frequency was varied from 4
MHz ~ 10 MHz.

201
Results

68.3 Burst Cycle Effects


The second experiment will determine the effects of pulse length on the return echo pulse shape. In this experiment, the length of the transmitted burst
was set at 2, 4, and 8 cycles.

202
Results

68.4 Varying Power Level


This experiment will determine the effects of varying power level on the return echo pulse shape. In this experiment, the power level was varied from 5
to 15.

203
Results

68.5 Varying TGC Setting


This experiment will determine the effects of varying TGC setting on the return echo pulse shape. In this experiment, the TGC was varied from 0% to
100% in 10% increments.

204
Results

68.6 Varying Transmit Aperture Size


A series of scans were taken at different transmit to receive aperture ratios: Tx/Rx: 64/32, 32/32, 16/32, 8/32

205
Results

68.7 Varying Receive Aperture Size


A series of scans were taken at different transmit to receive aperture ratios: Tx/Rx: 16/32, 16/16, 16/8, 16/4

206
Results

68.8 Masking Mechanism Characterization


In order to depict the masking mechanism, a series of scans were taken using different masks.

207
Results

68.9 Dynamic Focus


Finally, to display the effect of dynamic focus it is turned on and off for two scans.

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.

69.1 Interface (6.0)


The Texo interface includes the individual channel information (RF signal), the beamformed image, some parameters to change and the option to save
the data.

Texo Qt GUI

1) Initialize, run and stop buttons.


2) RF signal from each channel.
3) Constructed image out of the raw data.
4) Parameters option.
5) Probe selection.
6) Frequency of the image (frames per second FPS).

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):

With this version:

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.

Ulterius applications could include:

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:

Connecting and disconnecting to the ultrasound system


Transducer selection
Imaging mode selection
Preset selection
Freeze / unfreeze ability
Parameter retrieval
Parameter set / increment / decrement
Data acquisition
Image injection

71.2 Imaging Parameters


All imaging parameters on the research interface are available through Ulterius. The functions for parameter control include:

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

71.3 Data Acquisition


Ulterius provides an interface for data acquisition, with some specific features that include:

Retrieval raw data or processed images in real-time


Data descriptor retrieval for getting information on the data (width, height, sample size, etc)
Finding out how many frames are in the cine buffer once frozen, as well as acquiring individual or all frames from the buffer
Optional Huffman data compression for speedier network transfers (note that not all data will compress well)
Shared memory interface to ensure frames are never (or rarely) dropped while running the program on the ultrasound system directly

More information on this topic can be found here.

71.4 Image Injection


Image injection into the main research software is useful when processing raw data, then having a simple interface to display it to users, without having
to always write custom display GUI programs. When injection mode is on, the ultrasound B-mode image display is stopped on the research software,
and the display buffer is fully controllable from Ulterius. Pre scan-converted data can be captured and injected as well, forcing the research software to
perform scan conversion on grayscale data.

The data injection feature can also be useful when imaging in the Dual B mode to compare ultrasound images that have been processed differently.

More information on this topic can be found here.

71.5 History and Versions


Ulterius started out in 2001 as a project for the University of British Columbia to use Ultrasonix' first ultrasound engine as a research device, back then it
was called the RP-SDK.

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.

71.6 PDF Download


Download all Ulterius SDK documentation as a PDF

71.7 Main Topics


Ulterius Data Acquisition
Ulterius Injection

214
72 Ulterius Data Acquisition

72.1 Callbacks and the Mask


Data acquisition in Ulterius typically takes place through the use of a callback function. Implementing setCallback() will tell Ulterius to notify a specific
function when new raw data has been acquired or an image has been processed for display.

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.

The enumeration below is the list of data masks:

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.

The callback prototype looks as follows:

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.

72.2 Real-time Handling


To implement real-time data acquisition, the following pseudo-code steps should be taken:

void main()
{
ulterius->setCallback(datamask)

// ensure imaging is running


if (!ulterius->getFreezeState())
{
ulterius->toggleFreeze()
}

while(1)
{
// do something
}
}

bool callback(void * data, int type)


{
memcpy(buffer, data)
datatype = type;

// notify main thread, get out of here quickly!


postMessage(processingFn)
}

void processingFn()
{

215
if (datatype == X)
{
// run some algorithm on 'buffer'
}
else if (datatype == Y)
{
// run a different algorithm
}
}

72.3 Acquiring Data while Frozen


Acquiring data while frozen can be implemented through two methods: a callback method, or a blocking wait. When acquiring data through the callback,
the parameter useCallback should be set to true when calling getCineData(). To block and wait for data to arrive from the cine buffer of the research
software, useCallback should be set to false, and a pointer to a buffer set as data parameter must also be present, along with the size of the buffer.

To implement a frozen acquisition, the following pseudo-code steps should be taken:

void main()
{
ulterius->setCallback(datamask)

// ensure imaging is frozen


if (ulterius->getFreezeState())
{
ulterius->toggleFreeze()
}

frames = ulterius->getCineDataCount(datatype)

// ..also ensure frame_number is within 0 and frames

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
}
}

bool callback(void * data, int type, int sz, bool fromCine)


{
memcpy(buffer, data)
datatype = type;

// do something with the data in buffer


}

72.4 Special Acquisition Features

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.

72.4.2 Shared Memory

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.

Injecting images can take place with 3 different formats:

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.

73.2 Real-time Handling with Injection


To implement injection, the following pseudo-code steps should be taken:

void main()
{
ulterius->setInjectMode(true)

// ensure imaging is running


if (!ulterius->getFreezeState())
{
ulterius->toggleFreeze()
}

while(1)
{
// do something
}
}

bool callback(void * data, int type)


{
memcpy(buffer, data)
datatype = type;

// notify main thread, get out of here quickly!


postMessage(processingFn)
}

void processingFn()
{
// do something with the acquired buffer
// ...

// inject a 32 bit image that covers the full display area


ulterius->injectImage(processed_buffer, x, y, 32, false)
}

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.

74.1 Generic Setup


Some basic setup steps to ensure the SDK programs compile properly out of the box:

Ensure the include path includes ../../inc


Ensure the link path includes ../../lib, as well as the actual link-to file is set as sdkname.lib
Ensure the output path includes ../../../bin, and that the executable gets output to this directory, or the directory where the SDK DLL files reside

74.2 Specific Setups


Visual Studio 2010 Setup
Qt With Visual Studio 2010 Setup (SDK 6.x)
Qt Setup
Qt Creator

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.

75.1 Windows Setup


Windows 7 or Windows XP SP3
Visual Studio Express 2010
Recommended to start for free; as long as no MFC, ATL or .NET bindings are used.
Qt (LGPL)
Get the Windows libraries compiled under Visual Studio to ensure the proper linker files are packaged. Note the full Windows SDK
does not include the proper linker files, but rather MinGW compiled libraries. The full SDK does however include QtCreator, a nice
free IDE if you want to go down a VS free route.
Version 4.8.1 is released at time of this writing

75.2 Visual Studio Setup


Ensure Qt DLL's are in the Windows PATH environment variable (i.e. C:\Qt\4.8.0\bin)
Configure a new empty project in Visual Studio
Project settings
C++
Include Qt include directory (i.e. C:\Qt\4.8.0\include)
Linker
Set the sub-system to Windows, or Console if you want to have a console window floating around with your application
Include Qt library directory (i.e. C:\Qt\4.8.0\lib)
At minimum you'll want to link to QtGuiX.lib and QtCoreX.lib, where X is the Qt version (4 at the time of writing this).

75.3 Simple Example


If you use the Windows sub-system in your linker settings, the below code will work with no linking errors. If you use the Console sub-system, and are
OK with having a console window floating around, just remove the #ifdef block.

#include <QtGui/QtGui>

int main(int argc, char **argv)


{
QApplication app(argc, argv);
QWidget window;
window.resize(320, 240);
window.show();
window.setWindowTitle(Application::translate("toplevel", "Top-level widget"));
return app.exec();
}

#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.

76.1 Required Programs


All these programs are required before compiling the SDK's:

Windows 7 or Windows XP SP3


Visual Studio 2010
Qt Library for VS 2010
Version 4.8.2 is released at time of this writing
Qt Add-on for VS 2010
CMake
CMake is a cross-platform, open-source build system. CMake is a family of tools designed to build, test and package software.

76.2 CMake Setup


After installing CMake on your computer:

Run CMake (cmake-gui)


Add the directory of the SDK in Where is the source code: (e.g. C:\sdk6)
Add the directory of where the built SDK to be in Where to build the binaries: (e.g. C:\sdk6_CMake)

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)

Open sonixsdk.sln with Visual Studio 2010.


You will notice the new Qt menu from the Qt Add-on installed.
You will have all the SDK's solution built.

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

Run the SDK.

223
77 Visual Studio 2010 Setup
You can compile all the SDK's from version 5.7.4 and up using Visual Studio 2010.

77.1 Creating an empty project

Open the Microsoft VS 2010


In the File menu select the New and select Win32 Console Application. Set the Location to be the path to your console project (e.g.
D:\Porta\demo\) and set the Project name to be gui and press OK.

Empty project

In the next window select An empty project. and press Finish and the OK.

77.1.1 Adding files to your project

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

77.1.2 Project Settings

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:

In the Configuration Properties tab,


go to General and choose Use MFC in a shared DLL in the Use Of MFC and choose Use Unicode Character Set in the Character
Set.
in the same tab change Output Directory and Intermediate Directory to the path that contains the dlls for the project. In this case, it
will be ../../../../bin/.
go to Debugging and set Environment to PATH=%PATH%;../../../../bin/

225
MFC in shared dll

226
setting directories

In the C/C++ tab,


go to General and add ../../../inc in the Additional include directories:.

227
project settings

In the Linker tab,


on the same page, add ../../../lib in the Additional Library Directories:
go to the Input tab and add porta.lib to Additional Dependencies.
go to the Advanced tab and add wWinMainCRTStartup to Entry Point.

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.

78.2 Opening SDK Files


All SDK packages starting Veriosn 6.X includes all the Qt project files in order to compile them in Qt Creator. Qt Creator project file has the extension of
.pro. Each SDK will have a qt.pro file that can be used to open the project.

To open a project:

Open Qt Creator -> File -> Open File or Project


Browse in the directory of the SDK, and select file qt.pro

Opening Project Files in Qt

78.3 Compiling Demo Files

232
Run Button in Qt Side Menu

233
Building Project Files in Qt
Qt will ask for the setup options for the project:

Select Desktop and un-select every other option.


Create Build Configuration for One Qt Version and One Release
Choose the appropriate Qt Version installed on your machine(Currently 4.8.1). Then Click Finish

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.

78.4 External links


Official web page
Qt Creator Manual

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.

79.1 B-Mode Sequence


Traditional B-Mode images are 2D cross-sectional images of tissue acquired using 1D transducer arrays. When transducer arrays are used, through
electronic transmit beam forming, the ultrasound beam can be narrowed down to scan a small column of tissue. The center of this beam and its direction
can be chosen by changing the elements involved in forming the beam, and their respective time delays (see 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.

79.1.1 Multiple Focal Depths

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.

79.1.3 Spatial Compounding

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

Back to A Reference on Ultrasound Imaging

79.2 M-Mode Sequence


See PWD Sequence.

Back to A Reference on Ultrasound Imaging

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).

79.3.1 Combining PWD and B-Mode Sequences

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

Back to A Reference on Ultrasound Imaging

79.4 Color/Power Doppler Sequence


As with the PWD imaging, color and power Doppler imaging are mainly used to image the blood flow. The difference is that in color/power Doppler
imaging, an image of the blood flow distribution is generated, for a region of interest (ROI) chosen by the clinician, which anatomically matches the
B-mode image and can be overlaid on top of it.

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:

Exam parameters for color Doppler sequencing:


Through CDI-GEOM

Back to A Reference on Ultrasound Imaging

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.

80.1 Shape of the Ultrasound Pulse as a Function of Time


To image tissue with ultrasound waves, two main types of ultrasound waves are used:

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.

Back to A Reference on Ultrasound Imaging

80.2 Temporal Shape of the Pulse on Sonix Platforms


Sonix Platforms provide a number of adjustable parameters for adjusting and designing the temporal shape of the ultrasound pulse. The Sonix platforms
do not include digital to analog convertors (D2A's) on board and it is not possible to apply arbitrary shaped electrical signals to the transducers. The
shape of the electrical pulse that is applied to the transducers is always a square wave shape. However, the shape of the square-wave pulse can be
adjusted flexibly through a number of different parameters. The limited bandwidth of the transducer causes the emitted mechanical pulse to be of
approximately a sinusoidal shape.

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)

Back to A Reference on Ultrasound Imaging

80.3 Shape of the Ultrasound Pulse as a Function of Space

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.

80.3.1 Beam Steering

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.

Back to A Reference on Ultrasound Imaging

80.4 Spatial Shape of the Pulse on Sonix Platforms

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

Back to A Reference on Ultrasound Imaging

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.

81.1 A-Mode Data


The A-Mode data is the most basic type of ultrasound image derived from RF data, and forms the basis for other types of ultrasound images. With the
analogy to telecommunications in mind, the A-Mode data is the result of amplitude demodulation of the RF data. In simpler terms, it is a signal that
captures the variation in the amplitude of the RF data. The A-Mode data is therefore a 1D array of data, and strictly speaking not an image.

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.

Back to A Reference on Ultrasound Imaging

81.2 B-Mode Images

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

81.2.1 Logarithmic Compression and Adjustment in the Dynamic Range

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 .

81.2.2 Scan Conversion

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 .

81.2.3 Image Enhancement

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.

Back to A Reference on Ultrasound Imaging

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.

Back to A Reference on Ultrasound Imaging

81.4 Pulse(d) Wave Doppler Images


Pulsed Waved Doppler Imaging, or PW Mode, is a method to use ultrasound for determining blood velocity and direction. The RF data goes through
following steps to generate the PWD images:

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:

Pulsed Wave Doppler


Exam Parameters for PWD processing:
Through PWD

Back to A Reference on Ultrasound Imaging

81.5 Power/Color Doppler Images


Exam Parameters for CDI processing:
Through CDI

247
Back to A Reference on Ultrasound Imaging

81.6 Elastography Images

See also: Elastography

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.1 PDF Download


Download all white paper documentation as a PDF

83.2 General Information


Block Diagrams
System Curves
Synchronization
Gain Engine
Tx/Rx Timing
Voltage Levels
Transducer Types
Transducer Care
Bench-marking:
Receive Bandwidth
Changing the Sequence in Texo

83.3 Special Techniques


Transmission Ultrasound
ARFI [1]
High Frame Rate Acquisition
Multiple Signal Paths
Saving volume data in freehand 3D
Contrast Imaging [2]
Transducer Prototyping

83.4 Special Imaging Modes


Elastography
Strain Ratio

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

84.1 Exam 6.1.0


SequencerB is our main sequencer in the exam software. In this version, the txDelay ins applied only once. The hardware/software timing is as follows:

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

85.1 System Diagram

85.2 Processing Chain Path Diagrams (ver 5.x)

85.2.1 Receive Path on 64 Channel Beamformer Systems

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

IQ demodulation and filtering


envelope detection and log compression
scan conversion and spatial filtering

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.

The definition of the type is as follows:

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

Here are some functions that interpolate a UTX_CURVE variable:

int getCurvePosition(int percentage, int maxlength)


{
return (int) (( (double)percentage * (double)maxlength) / 100.0);
}

int getCurveValue(UTX_CURVE curve, int maxX, int maxY, int x)


{
POINT p1, p2, p3;

// 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

87.1 Release 6.0.4


From release 6.0.4, it is possible to save the volume data acquired by freehand 3D, in research mode only.

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.

88.1.1 BNC Layout

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

88.2 Output Synchronization


By default the pulse on the output will look as below, an approximately 25ns 1V peak-to-peak pulse. This may be inadequate for triggering some
devices, therefore the instructions below should be implemented to change the characteristics.

Default Pulse Shape


With PCI modification as described below, the following 3-5V peak-to-peak pulse can be achieved:

265
Modified Pulse Shape

88.2.1 PCI Modification

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:

Short R32 with 0 ohm resistor


Short XR41 with 0 ohm resistor
Remove XC32
Remove C52

Sonix RP:

Short R32 with 0 ohm resistor


Remove C52

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

88.3 Input Synchronization

88.3.1 General Details

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).

88.3.2 Missing Frames

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.

88.3.3 Software Callbacks

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.

Triggering and software interrupts can be summarized in the below diagram.

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.

Q) I turned the Input Trigger on but nothing is happening.

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.

89.1 Transmit Clocking


The transmit electronics firmware run at specific clock frequencies that determine what the valid frequency outputs are, these can be summarized in the
table below. For 40 MHz transmit firmware, each pulse shape symbol (+, -, 0) corresponds to 25ns. Because the hardware can only control the pulse in
25ns resolution, this implies that only certain frequencies are achievable. The 80 MHz firmware reduces the pulse shape symbol duration to 12.5ns,
allowing for better frequency control.

40 MHz Firmware

Divider Period (ns) Frequency (MHz)


1 25 40
2 50 20
3 75 13.33
4 100 10
5 125 8
6 150 6.67
7 175 5.71
8 200 5
9 225 4.44
10 250 4
11 275 3.64
12 300 3.33
13 325 3.08
14 350 2.86
15 375 2.67
80 MHz Firmware

Divider Period (ns) Frequency (MHz)


1 12.5 80
2 25 40
3 37.5 26.67
4 50 20
5 62.5 16
6 75 13.33
7 87.5 11.43
8 100 10
9 112.5 8.88
10 125 8
11 137.5 7.27
12 150 6.66
13 175 6.15
14 200 5.71
15 125 5.33
Since the highest sampling frequency on the Sonix systems is 40 MHz, a transmission of a 20 MHz pulse would be considered the maximum to send to
the transmitters. Cases where frequency output could be shifted include:

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

89.2 Transmit Shaping


The transmit shape is created by programming characters into a buffer that is used internally on the Sonix systems, including the Texo SDK. The buffer
allows for up to 96 characters to be programmed.

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.

Valid Pulse Character

89.2.1 Excitation Examples

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 + + + + ? ? ? ?

89.2.1.2 4+5 MHz Blended

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

90.1 Exam 6.0.x

90.1.1 Construction of Analog and Digital TGC

The gain is constructed from two main components which are the Hardware Analog TGC & Digital TGC and the Software Digital Gain.

90.1.2 Hardware Analog & Digital TGC

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:

MaxTGCAnalogTGC for HW2 = 3000 mV


MaxTGCAnalogTGC for HW3 = 1638 mV
MaxTGCAnalogTGC for HW4 = 1228 mV

MaxDigitalTGC for HW2 = 4095


MaxDigitalTGC for HW3 = 1024
MaxDigitalTGC for HW4 = 1024

90.1.3 Software Digital Gain

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

valI = I * Digital Gain;


valQ = Q * Digital Gain

The software digital gain is calculated as:

Percent TGC = User TGC + GainOffset;


dTGC_dB = (Percent TGC / 100.0f * Max Digital Range in dB);
Digital Gain = (pow(10.0, dTGC_dB / 20.0)) - 1.0f )* Digital Minimum;

User TGC

Is defined as a gain curve from the 7 adjustable sliders.


The amount of contribution (in %) that the User TGC curve has in the final tgc depends on the 'usergaincurvesensitivity' parameter in the
preset. For example, if this value is set to 25, than the user tgc gets mapped in the following manner.

User TGC = 25 + slider value * (25 ? (-25)) / 255.0,

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% .

Max Digital Range

The max digital gain range in dB is determined by the variable ?b-gain-digirange?.

Max Min Amplification

This parameter in dB is determined by the variable ?b-gain-digimin?.


Digital Minimum = pow(10.0, (?b-gain-digimin?) / 20.0));

The block diagram for the gain engine is as follows:

271
272
90.2 Exam 5.0.x to 5.7.x

90.2.1 Parameters

The parameters affecting tgc calculations are as follows:

b-tgc
b-gn curve depth
gain curve
b-gain
tgcMaxDigitalValue
tgcDigitalGainMinAmp
tgcDigitalGainRange
b-tgc lateral

90.2.2 Construction of Analog and Digital TGC

A combination of analog and digital tgc is applied internally on the image.

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 + gain Offset + user tgc

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

Is defined as a gain curve from the 7 adjustable sliders.


The amount of contribution (in %) that the User TGC curve has in the final tgc depends on the 'usergaincurvesensitivity' parameter in the
preset. For example, if this value is set to 25, than the user tgc gets mapped to -25% to 25%.

90.2.2.1 Final Analog TGC

Va = TGC % x TGCAnalogRange

The TGCAnalogRange is hardware dependant where:

TGCAnalogRange for HW2 = 3000 mV


TGCAnalogRange for HW3 = 1638 mV
TGCAnalogRange for HW4 = 1228 mV

90.2.2.2 Final Digital TGC

tgcdb = TGC% x TGCDigitalGainRange


Vd = 10^(tgcdb/20) x 10^(tgcDigitalGainMinAmp/20)
Vd = min(Vd, tgcMaxDigitalValue)

Where tgcMaxDigitalValue, tgcDigitalGainMinAmp, tgcDigitalGainRange are values specified in the preset or imaging.set.xml file

90.2.3 Lateral TGC

Set with the parameter 'b-tgc' lateral


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.

274
90.3 Early Software (2.x - 3.x)
This page gives a brief overview of the gain systems within the Ultrasonix engine.

90.3.1 Analog TGC

There are 4 parameters that adjust the TGC in the Ultrasonix engine.

TGC Analog (B)


This is the system gain curve that is used, assuming the parameters below are not applied.
TGC Max
This is a curve that ensures that the analog gain does not go beyond a certain limit. This is useful in removing saturations that can
occur by overgaining, especially in the near-field.
User TGC
This is the slider control on the console that can also be programmed through software.
Gain (B)
This parameter is the overall offset that adjusts the TGC curve.
Gn Curve Depth (B)
This is the maximum depth that the gain curve is applied to. At greater depths the image is adjusted to the last point in the curve.

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.

Here is some pseudo code for programming the gainTable:

numpoints = calculate from Gn Curve Depth (B)


tgcA = Interpolate TGC Analog (B) curve to gain range within numpoints
tgcU = Interpolate User TGC to user range within numpoints

for(i = 0 to numpoints)
{
gainTable[i] = tgcA[i] + tgcU[i] + genOffset
check min and max on gainTable[i]
}

load gainTable to hardware

90.3.2 Lateral Gain Curve

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.

90.3.3 TGC Response

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:

RF FIR Type must be set to 0

91.3 Frequency Compounding


To work with this method, the following parameters should be set as specified:

RF FIR Type must be set to 1


FC Disable must be set to 0
RF FIR A is the selection into the index file for the first frequency to be compounded
RF FIR A Shift is the gain control for the FIR A coefficients
RF FIR B is the selection into the index file for the second frequency to be compounded
RF FIR B Shift is the gain control for the FIR B coefficients
RF FIR C is the selection into the index file for the third frequency to be compounded
RF FIR C Shift is the gain control for the FIR C coefficients
FC Ampl A is set at a level between 30 and 60, depending on the probe and preset

91.3.1 Parameter Setup

Frequency compound setup

91.3.2 Example Image

277
Frequency compound image

91.4 Depth Based Filtering


To work with this method, the following parameters should be set as specified:

RF FIR Type must be set to 1


FC Disable must be set to 1
RF FIR A is the selection into the index file for the first frequency to be compounded
RF FIR A Shift is the gain control for the FIR A coefficients
RF FIR B is the selection into the index file for the second frequency to be compounded
RF FIR B Shift is the gain control for the FIR B coefficients
RF FIR C is the selection into the index file for the third frequency to be compounded
RF FIR Depth A is the depth for the FIR A to work until (ie. 0 cm to A cm)
RF FIR Depth B is the depth for the FIR B to work within (ie. A cm to B cm)
FIR C will work within B cm to the bottom of the image
RF FIR Overlap is the number of samples to overlap in between the seams of the filters
FC Ampl A needs to be increased to get proper gain levels (approximately 3 times the value in frequency compounding mode)

With no FIR Overlap set, the image will have significant boundaries shown, as can be seen below.

91.4.1 Parameter Setup

278
Depth filtering setup

91.4.2 Example Image (No Overlap Set)

Depth filtering image (no overlap)

91.4.3 Example Image (Overlap Set)

279
Depth filtering image (with overlap)

91.5 Filter Design


All the filters in the filters.txt file on the system were created with the ScopeFIR program. These are standard band-pass filters ranging from 15 to 63
taps. The text file also has space for automatic gain compensation parameters, so preset adjustment on the screen does not necessarily need to take
place.

More information can be found here.

280
92 Receive Bandwidth

92.1 Experimental Setup


In order to study and measure the receive bandwidth on the Sonix Systems, a series of experiments were performed. A signal generator was used for
this purpose with the following settings:

Continuous wave sinusoidal signal,


The amplitude of the signal was set to be 20 mVpp (peak to peak),
The frequency of the signal was changed from 1MHz to 20MHz in steps of 1MHz.

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.

The following Sonix systems we used for this study:

Sonix RP (32 element receive aperture),


SonixTOUCH Research (64 element receive aperture),
SonixTOUCH Research (AFE5807 - w/ adjustable anti-aliasing filter):
Anti-aliasing with 10MHz cutoff frequency
Anti-aliasing with 15MHz cutoff frequency
Anti-aliasing with 20MHz cutoff frequency
Anti-aliasing with 30MHz cutoff frequency

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.

Comparison between Sonix RP and SonixTOUCH Research

282
Comparison between SonixTOUCH AFE5807 hardware with different cut-off frequencies.

92.3 Remarks
Sonix RP

-6dB drop from 3 to 5MHz,


-6dB drop from 5 to 7.5MHz,
-6dB drop from 7.5 to 10MHz.

SonixTOUCH Research

-6dB drop from 2 to 10MHz,


-12dB drop from 10 to 15MHz.

SonixTOUCH Research (AFE5807)

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

Crystals in the array break resulting in holes in the image


Wiring becomes loose or gets damaged resulting in shadows in the image
Lens starts to delaminate resulting in poor image quality or shadows in the image

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

94.1 Naming Convention of Ultrasonix Transducers


The frequency response of the probe is coded in the naming convention of our transducers. The lower and higher cutoff frequencies are the two
numbers separated by a dash. For example L14-5/38 means that the lower cutoff frequency of the transducer is at 5 MHz and the higher cutoff
frequency is at 14 MHz.

Back to A Reference on Ultrasound Imaging

94.2 Transducer Specifications


The information about the supported probes are stored in a file called probes.xml which can be found in \Ultrasonix\Exam\config\ folder. The xml uses
nested tags, the descriptions of which can be found here. Other specifications such as the material types and dimensions and sizes of the matching
layers and backing layers and the piezo elements are propitiatory to our vendors. Please contact your transducer vendor for more information.

Tags: Transducer Datasheet

Back to A Reference on Ultrasound Imaging

285
95 Changing the Sequence in Texo

95.1 Software Release 6.0.3


In order to change the sequence in Texo, six actions need to be carried out:

1. The sequencer be stopped by texoStopImage()


2. A sequence be programmed
3. The sequencer be started by texoRunImage()
4. The sequencer be stopped by texoStopImage()
5. A new sequence be programmed
6. The sequencer be restarted by texoRunImage()

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:

O/S : Windows 7 Professional 32bit


Usuable memory: 2.95 GB
Processor: Intel(R) Core(TM) i7-3770 CPU @ 3.40 GHz
Ultrasonix PCI card revision : 3
Ultrasonix main board revision: 3

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.

Different imaging modalities compared to strain imaging for remote palpation

97.2 Static Elastography


Static elastography is performed by (i) obtaining a set of ultrasonic radio frequency echo signals from a target (i.e. pre-compression RF frame), (ii)
subjecting the target to a small axial deformation and (iii) obtaining a second set of echo signals (i.e. post-compression RF frame). Motions along the
direction of the applied load are estimated by performing piecewise motion estimation on corresponding pairs of signal segments. Once displacements
are calculated, strain estimation algorithms can be applied to generate the strain images generally referred to as elastograms.

Static Elastography

97.3 Real-Time Elastography


In real-time elastography RF frames are acquired continuously and elastograms are generated in real-time by estimating strain between sequential
frames similarly to static methods. Fast algorithms are necessary in this kind of imaging. Also strains in-between-frames are small thus sensitivity of the
algorithms is also very important.

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).

98.2 Experimental Setup


The Elasticity Phantom consists of four inclusions (i.e. two hard inclusions and two soft inclusions):

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.

98.3 Results and Discussions


The results are shown in the following figure:

290
The quantitative results are also shown in the following table:

Modulus Ratio Measured Strain Ratio


Type I/Background 0.33 0.1 0.31
Type II/Background 0.56 0.1 0.52
Type III/Background 1.8 0.2 1.60
Type IV/Background 3.2 0.4 2.83
The results show that the strain ratio on SonixTouch closely estimates the modulus ratio in real-time elastography. This is consistent with previously
published results for off-line elastography [1]-[3].

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.

Screen Output of PW Mode

99.2 Sequencing and Processing

99.2.1 Pulsing Sequencing

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.

99.2.2 Signal Processing

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.

Transmission Ultrasound Sound Wave Path

The Sonix systems can be setup to perform transmission ultrasound with the following setup:

One Sonix RP or SonixTOUCH Research system


Two of the same model transducers (i.e. L14-5/38)
Access to the Texo SDK

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:

// assume probes plugged into top and middle ports


texo->activateProbeConnector(0)
texo->forceConnector(2)

for (i = 0; i < numElements / 2; i++)


{
tx.centerElement = (i * 10) + 5
rx.centerElement = ((numElements - i -1) * 10) + 5
texo->addLine(tx, rx)
}

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

Echo Received from Transducer #2

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.

The basic process is as follows:

Acoustic waves deposits energy into the tissue.


This energy generates a force that causes displacement of the tissue.
These motions are used to derive information about the tissue.

ARFI Focused Beam

101.2 Implementation

101.2.1 Pulse Sequencing

The basic sequence for programming ARFI is as follows:

Acquire imaging line/lines (used as a reference)


Apply the push pulse (a long transmit)
Acquire imaging line/lines afterward to use for tracking

ARFI Sequence

101.2.2 System Requirements

To perform the sequence above, an ultrasound system must be composed of:

Programmable sequencer
Transmit pulses with long durations up to 500 microsec

298
ARFI Sequence

101.2.3 Texo Implementation (6.1)

The Texo SDK can be used to program the ARFI sequence. Below is some pseudo-code for programming the Texo sequence:

// 1) program reference scanlines


...

// 2) program the push pulse


// transmit aperture
tx.aperture = 64;
// transmit center element
tx.centerElement = pushLine + 0.5;
// fill out the entire transmit pulse train (48 cycles)
tx.pulseShape= "+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-";
// repeat the transmit pulse train as many as required (maximum 255)
tx.txRepeat = 20;
// push duration + additional wait time
rx.customLineDuration = pushDuration * 1000;
// no acquisition for ARFI pulse
rx.acquisitionDepth = 0;
// add the push pulse to the sequence
texo->addLine(tx, rx);

// 3) program tracking scanlines


...

101.3 Measurements

101.3.1 Electronic Measurements

The figures below show some measurements from an oscilloscope attached to a Sonix RP system.

299
ARFI Scope Measurements

101.3.2 Acoustic Measurements

The needle hydrophone results can be shown below.

300
ARFI Hydrophone Measurements

101.3.3 Displacement Measurements

The figure below shows the resulting displacement from an ARFI sequence.

100 microsec push duration


1 kHz RF sampling
Displacement profile at push location shown below

301
ARFI Displacment

101.4 Remaining Issues


Hold over effect
The switching from short pulses to long pulses introduces artifacts in the echo signal that appear in the displacement estimates. The
user need to make sure enough delay exist between the push pulse and the imaging pulse. This can be controlled by the
customLineDuration parameter.
Voltage Droop
Ideally the amplitude should stay steady during the transmit push pulses.

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.

102.2 Small Sector


For 6cm imaging depth, a single RF line can be acquired at 10 kHz. Thus, 10 lines can be acquired at 1 kHz.

To implement this using the research software interface:

Run the Sonix software in the B/RF collection mode


Use an Ulterius SDK client to connect to Exam and set the Sector parameter to 5-10%. The frame rate will be displayed on the screen
Setting the line density can also be used to adjust the spacing between lines (64,128,256...)
Alternatively, the Texo SDK can be used by itself to have full control over the number of lines, spacing between lines, and location of the
sector

High Frame Rate Setup


Advantages:

Easy to implement
No hardware overhead
Supports long observation time

Disadvantages:

Small field of view


Small acquisition delay exists between individual lines in the sector since the lines are still acquired sequentially.

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.

High Frame Rate Setup with External Synchronization


Advantages:

Filed of view can be maximized.

Disadvantages:

External hardware overhead is required


Observation time can be limited (number of scan lines that can be programmed for the sequencer is limited)
Sources of motion other than the excitation (i.e. transducer or tissue motion) should be minimized during acquisition.
Acquisition lag still exists between individual lines in each sector

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.

Multiple Signal Path Techniques

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.

For an ultrasound system to have Contrast Imaging, it typically requires:

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:

General research platform usage


Transducers
MATLAB
SDK Usage

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.

Online Research Forum

307

Potrebbero piacerti anche