-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathspeckle_tracking.html
More file actions
403 lines (334 loc) · 23.8 KB
/
Copy pathspeckle_tracking.html
File metadata and controls
403 lines (334 loc) · 23.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
<!DOCTYPE html>
<html lang="en">
<!-- ======= Head Section ======= -->
<head>
<meta charset="utf-8">
<meta content="width=device-width, initial-scale=1.0" name="viewport">
<title>Speckle Tracking</title>
<link href="assets/img/logo.png" rel="icon">
<!-- Google Fonts -->
<link href="https://fonts.googleapis.com/css?family=Open+Sans:300,300i,400,400i,600,600i,700,700i|Raleway:300,300i,400,400i,500,500i,600,600i,700,700i|Poppins:300,300i,400,400i,500,500i,600,600i,700,700i" rel="stylesheet">
<!-- Vendor CSS Files -->
<link href="assets/vendor/aos/aos.css" rel="stylesheet">
<link href="assets/vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet">
<link href="assets/vendor/bootstrap-icons/bootstrap-icons.css" rel="stylesheet">
<link href="assets/vendor/boxicons/css/boxicons.min.css" rel="stylesheet">
<link href="assets/vendor/glightbox/css/glightbox.min.css" rel="stylesheet">
<link href="assets/vendor/remixicon/remixicon.css" rel="stylesheet">
<link href="assets/vendor/swiper/swiper-bundle.min.css" rel="stylesheet">
<!-- Main CSS File -->
<link href="assets/css/style.css" rel="stylesheet">
</head>
<!-- ======= Body Section ======= -->
<body>
<!-- ======= Navigation Bar ======= -->
<header id="header" class="fixed-top">
<div class="container d-flex align-items-center justify-content-between">
<a href="index.html" class="logo"><img src="assets/img/logo.png" alt="" class="img-fluid"></a>
<nav id="navbar" class="navbar">
<ul>
<li><a class="nav-link scrollto" href="index.html">Home</a></li>
<li><a class="nav-link scrollto" href="index.html#projects">Projects</a></li>
<li><a class="nav-link scrollto" href="index.html#team">People</a></li>
<li><a class="nav-link scrollto" href="index.html#resources">Resources</a></li>
<li><a class="nav-link scrollto" href="index.html#funding">Funding</a></li>
<li><a class="nav-link scrollto" href="index.html#partners">Partners</a></li>
<li><a class="nav-link scrollto" href="index.html#workwithus">Vacancies</a></li>
<li><a class="nav-link scrollto" href="index.html#contact">Contact</a></li>
</ul>
<i class="bi bi-list mobile-nav-toggle"></i>
</nav>
</div>
</header><!-- End Navigation Bar -->
<!-- ======= Title Section ======= -->
<section id="project-title" class="d-flex align-items-center">
<div class="container position-relative" data-aos="fade-up" data-aos-delay="100">
<div class="row">
<div class="col-12 text-left">
<h1>Development of optimisation-based approaches for speckle tracking</h1>
<!-- <h2><i>Neda Azarmehr <sup>1,2</sup>, Xujiong Ye <sup>1</sup>, Joseph D. Howes <sup>1</sup>, Benjamin Docking <sup>1</sup>, James P. Howard <sup>2</sup>, Darrel P Francis <sup>2</sup>, Massoud Zolgharni <sup>2,3</sup><i></h2>
<h3><sup>1</sup> School of Computer Science, University of Lincoln, Lincoln, United Kingdom<h3>
<h3><sup>2</sup> National Heart and Lung Institute, Imperial College, London, United Kingdom<h3>
<h3><sup>3</sup> School of Computing and Engineering, University of West London, London, United Kingdom<h3> -->
</div>
</div>
</div>
</section><!-- End Title -->
<!-- Main Webpage Section -->
<main id="project-main">
<!-- ======= Project Body Section ======= -->
<section id="project-body">
<!-- ======= Project Introduction ======= -->
<div class="project-intro">
<div class="container">
<div class="row justify-content-left">
<div class="col-12">
<hr>
<h1>Our team has developed an an optimised-based block matching algorithm to perform speckle tracking iteratively.
In this project, a new displacement estimation method is introduced by formulating the tracking as an optimisation
problem that jointly penalises intensity disparity and motion discontinuity and is, therefore, more robust to the
signal decorrelation when compared with previous approaches. The speckle tracking algorithm combines the BM algorithm with
a smoothness constraint for a neighbourhood of kernels. The proposed technique was evaluated using healthy and ischaemic cases.</h1>
<br>
</div>
</div>
<!-- <div class="text-left">
<a class="btn btn-primary" href="https://link.springer.com/article/10.1007/s11517-020-02142-8" role="button">Download the paper</a>
</div> -->
</div>
</div>
<!-- ======= Project Dataset ======= -->
<div class = "project-dataset">
<div class="container project-container">
<div class="row justify-content-left">
<div class="col-12 col-md-12 col-lg-6 col-xl-6">
<img class="img-fluid" src="assets\img\projects\STE\dataset.PNG" alt="echocardiogram">
</div>
<div class="col-12 col-md-12 col-lg-6 col-xl-6">
<div align="justify">
<h2>Dataset</h2> <br>
<h3>We used a publicly available synthetic echocardiographic dataset with known ground-truth (exact solutions) from several major vendors.
Synthetic ultrasound images from 7 major vendors have been provided: GE, Hitachi-Aloka, Esaote, Philips, Samsung, Siemens, and Toshiba.
<br> <br>
To take realistic speckle texture for each vendor, scattering amplitude was sampled from a 2D real clinical recording
ultrasound as a template. Then, an electromechanical cardiac model was used to relocate the scatterers inside the
myocardium and to have a realistic heart motion in the simulated images. Moreover, synthetic probe settings such as
scan depth, focus depth, beam density, etc. were specialised by using the values communicated by each vendor upon
signature of nondisclosure agreements.
</h3>
<br>
<div class="text-left">
<a class="btn btn-primary" href="https://ieeexplore.ieee.org/document/8234682" role="button">Download the dataset</a>
</div>
</div>
</div>
</div>
</div>
<!-- ======= Project Architecture ======= -->
<div class = "project-architecture">
<div class="container">
<hr>
<div class="row justify-content-left">
<div class="col-12">
<h2>Methods</h2>
</div>
<div class="col-12 col-md-12 col-lg-6 col-xl-6">
<div align="justify">
<h3>
<p> <b> Standard block matching </b> <br><br>
Classic BM begins by positioning a window on one frame and searching for a pattern with the most similar features
within the dimensions of the placed window in the next frame. A cluster of speckles can be combined into one functional unit which is
called a kernel; each kernel has a unique fingerprint that is determined using a similarity measure and can be
tracked throughout the entire cine loop by the BM algorithm. In the reference frame (first image in Fig. 1, the
current frame or a frame at time t0), the region of interest (blue square) has speckle patterns. In the next frame
(a frame at time t + 1), a broad region of the image is searched for a similar speckle pattern. The location whose
speckle pattern matches best is considered to be the estimated new location of the original kernel, thereby providing an
estimated displacement vector. <br>
This procedure is repeated across the whole of the reference frame, obtaining a displacement map between the two images. Repeating this procedure across the whole image sequence produces a vector field across space and time. In this study, sum of squared differences (SSD) is used as a similarity measure which calculates the difference between the intensity pattern of a grid of pixels (original kernel) in one frame and a set of identically sized kernels in the next frame, to find the best-matched kernel.<br><br>
<img class="img-fluid" src="assets\img\projects\STE\fig2.PNG" alt="echocardiogram"> <br>
<h3> Fig. 2 Flowchart showing the steps involved in solving the proposed optimisation-based tracking algorithm </h3>
</h3>
</div>
</div>
<div class="col-12 col-md-12 col-lg-6 col-xl-6">
<div align="justify">
<br> <br>
<img class="img-fluid" src="assets\img\projects\STE\fig1.PNG" alt="echocardiogram" width="450px" height="500px"> <br><br>
<h3> Fig. 1 Speckle tracking using BM where a region in the image (kernel) is selected and sought for in the next image by
sequentially trying out different positions, testing the similarity between the kernel and the pattern observed in that position. The position
where the similarity between the kernel and the observed pattern is maximal is accepted as the new position of the original kernel </h3>
<br><br><br>
<h3> <p> <b>Proposed optimised block matching approach </b> <br> <br>
In this paper, a new displacement estimation method is introduced by formulating the tracking as an optimisation problem that jointly
penalises intensity disparity and motion discontinuity and is, therefore, more robust to the signal decorrelation when compared with
previous approaches. The speckle tracking algorithm combines the BM algorithm with a smoothness constraint for a neighbourhood of kernels,
and minimises the cost function. Fig 2 to the left shows the flow chart of the steps involved in solving the proposed optimisation-based
tracking algorithm. <br><br>
<b>Tracking parameters</b> <br> <br>
The standard BM was carried out with a kernel size of (11×11) pixels with a spacing of 1 pixel,
providing a dense solution. This kernel size is deemed to be a good compromise for the optimum tracking accuracy. <br>
For the optimised BM approach, the number of iterations was set to 20, which was deemed to be a good compromise between the accuracy and computational run time; a threshold for which the solution was converged and any further update in the displacement vectors were insignificant.
The parameter λ was 0.3, giving more emphasis to the data term versus the regularisation term in the cost function equation.
Larger values of λ tend to heavily regularise the displacement vectors, which would result in an unrealistically uniform vector
field where most of the vectors are aligned. A neighbourhood of (45×45) kernels was included in the iterations for updating the
solution for the central kernel. The tracking accuracy was estimated by comparing the displacement field obtained from the speckle
tracking algorithms and the ground-truth
</p>
</h3>
</div>
</div>
</div>
</div>
</div>
<div class = "project-results">
<div class="container">
<hr>
<div class="row justify-content-left">
<div class="col-12">
<h2>Results</h2>
</div>
<div class="col-12 col-md-12 col-lg-6 col-xl-6">
<div align="justify">
<h3>
<p> <b><br> Displacement vector field </b> <br><br><br>
The tracking parameters were similar for all vendors and cases. The algorithm returned a dense displacement
field between pairs of consecutive frames. Figure 3 illustrates an example A4C view from the healthy Siemens
sequence in the rapid ejection phase (peak systole), together with the corresponding ground-truth. a Zoomed view of LV cropped from the original image. b Ground-truth.
c–d Displacement fields obtained from standard BM and optimised BM approach in the rapid ejection phase, respectively.
<br><br>The computed displacement vector field by the two tracking approaches (standard BM and optimised BM approach)
is also shown. The presence of noise in the results is evident in the standard BM technique, whereas the optimised
BM approach seems to suffer less from this problem. <br><br> </h3>
<img class="img-fluid" src="assets\img\projects\STE\fig4.PNG" alt="echocardiogram">
<h3> Fig 4: Boxplots of the error for the healthy sequence from Siemens. </h3> <br><br>
</p> <b>Regional and global strain measurements</b><br> <br>
Regional (segmental) longitudinal strain values were calculated from the estimated displacement vector field. Figure 6 displays the violin plots of the regional strain error
the difference between the speckle tracked and the ground-truth) for all LV segments, for the same image sequence as shown in Figs. 3 and 4.
<br> <br> Top: an A4C view with the LV myocardium segmentation regions overlaid. <br> <br>Below: violin plots of the error in the segmental strain
measurements for the healthy synthetic sequence from Siemens. The solid black line represents mean,
and the green line represents the median; the box signifies the quartiles, and the whiskers represent the 2.5% and 97.5% percentiles
<br><br>
More results and details are in the full paper, the link is in the refereces section.
</div>
</div>
<div class="col-12 col-md-12 col-lg-6 col-xl-6">
<div align="justify">
<br> <br>
<img class="img-fluid" src="assets\img\projects\STE\fig3.PNG" alt=" examples">
<h3> Fig 3: an example A4C view from the healthy Siemens sequence in the rapid ejection phase </h3> <br><br>
<h3>Figure 4 shows the distribution of error for the same image sequence, obtained from both
tracking methods. The displacement errors across all vendors for their corresponding healthy image sequences are shown in Fig. 5. The error is computed as the magnitude of the difference between the calculated and ground-truth
displacement vectors and is provided for standard (left) and proposed (right) tracking methods. The x-axis shows the frame number
</h3> <br>
<img class="img-fluid" src="assets\img\projects\STE\fig6.PNG" alt="echocardiogram">
<h3> Fig 6: Top: an A4C view with the LV myocardium segmentation regions overlaid. Below: violin plots of the error
in the segmental strain measurements for the healthy synthetic sequence from Siemens. </h3>
</div>
</div>
</div>
</div>
</div>
<!-- ======= Contact Section ======= -->
<!-- <section id="contact" class="contact">
<div class="container">
<div class="section-title">
<hr>
<h2>Request Access to the project dataset</h2>
<h3>We have made the PACS-dataset used for training and testing our multibeat phase detection model public for the purpose of benchmarking against future studies.</h3>
<br><h3><b><i>If you would like to request access to the PACS-dataset, please complete the form below.<i><b></h3>
<h3>Please note that the EchoNet dataset used for testing only in this study is available at the following URL: https://echonet.github.io/dynamic/</h3>
<br>
<h2>Important information about the PACS-dataset:</h2>
<h3>We took a large random sample of echocardiographic studies from different patients performed between 2010 and 2020 from Imperial College Healthcare NHS Trust’s echocardiogram database. Ethical approval was obtained from the Health Regulatory Agency for the anonymised export of large quantities of imaging data. It was not necessary to approach patients individually for consent of data originally acquired for clinical purposes.
The images were acquired during examinations performed by experienced echocardiographers, according to the standard protocols for using ultrasound equipment from GE and Philips manufacturers. Only studies with full patient demographic data, and without intravenous contrast administration, were included. Automated anonymisation was performed to remove the patient-identifiable information.
A CNN model, previously developed in our research group to detect different echocardiographic views, was then used to identify and separate the A4C views. A total of 1,000 videos from different patients of varying lengths, were randomly selected.
Two accredited and experienced cardiology experts manually selected ED and ES frames, each blinded to the judgment of the other. We developed a custom-made program closely replicating the interface of clinical echocardiography hardware. Operators visually inspected the cine loops by controlled animation using a trackball, or arrow keys. The operators were asked to pick ED and ES frames in the A4C view, as they would in preparation for a Biplane Simpson’s measurement in clinical practice. All image sequences were down sampled by cubic interpolation into a standardised size of 112×112 pixels.<h3>
<br>
<h3>The image below shows a snapshot of the labels accompanying the dataset which you will receive once your access request has been accepted.</h3>
<h3><b>Op1</b> refers to operator 1, annotations from whom our network was trained/tested upon.</h3>
<h3><b>Op2</b> refers to operator 2, the second expert to annotate the dataset. Operator 2 annotations were used for testing and evaluation of observer variability only.</h3>
<h3><b>AVIname<b> refers to the name of the avi file</h3>
<h3><b>Number Of Frames<b> is the total number of frames in the video</h3>
<h3><b>Training/Testing</b> refers to whether the video was used for training or testing only</h3>
<h3><b>Beats</b> for ease of use, we have limited the number of beats in each video to 4. If you wish to have the unlimited beats label file, please specify when you request access to the dataset</h3>
<h3>Where there is no annotation in a cell, it means the first frame of interest is ES or the annotator did not select a frame</h3>
</div>
</div>
<div class="container">
<div class="row">
<div class="col-12">
<img class="img-fluid" src="assets/img/projects/phase_detection/labels-example.png" alt="example labels" >
</div>
</div>
</div>
<div class="container">
<div class="section-title">
<h3><b>If you wish to request access, please complete the form below:<b></h3>
<br>
</div>
<div class="row">
<div class="col-12">
<form action="https://formspree.io/f/myylgpzr" method="post" role="form" class="php-email-form">
<div class="row justify-content-center align-middle">
<div class="col-6 form-group">
<input type="text" name="name" class="form-control" id="name" placeholder="Your Name" required>
</div>
</div>
<div class="row justify-content-center align-middle">
<div class="col-6 form-group">
<input type="email" class="form-control" name="email" id="email" placeholder="Your Email" required>
</div>
</div>
<div class="row justify-content-center align-middle">
<div class="col-6 form-group ">
<input type="text" class="form-control" name="institution" id="subject" placeholder="Institution/Workplace" required>
</div>
</div>
<div class="row justify-content-center align-middle">
<div class="col-9 form-group">
<textarea class="form-control" name="message" rows="5" placeholder="Please let us know why you would like access to this dataset and what you intend to use it for" required></textarea>
</div>
</div>
<br>
<div class="text-center"><button type="submit">Submit</button></div>
</form>
</div>
</div>
</div> -->
<!-- </section> --> <!-- End Contact Section -->
<div class="container">
<hr>
<div class="row justify-content-left">
<div class="col-12">
<div class="text-left">
<h1> <b> Project Team </b></h1>
<h6> <a href="https://www.uwl.ac.uk/staff/neda-azarmehr" target="_blank" rel="noopener noreferrer"> Neda Azarmehr </a></h6>
<h6> <a href="https://www.uwl.ac.uk/staff/massoud-zolgharni" target="_blank" rel="noopener noreferrer"> Massoud Zolgharni </a></h6>
</div >
</div>
</div>
</div>
<div class="container">
<hr>
<div class="row justify-content-left">
<div class="col-12">
<div class="text-left">
<h1> <b> References</b> </h1>
<br>
<h3> <a href="https://link.springer.com/article/10.1007/s11517-020-02142-8" >Development of optimisation-based approaches for speckle tracking</a></h3>
</div>
</div>
</div>
</div>
</section><!-- End project-body -->
</main><!-- End #main -->
<!-- ======= Footer ======= -->
<footer id="footer">
<div class="container d-md-flex py-4">
<div class="me-md-auto text-center text-md-start">
<div class="copyright">
© Copyright <strong><span>IntSaV</span></strong>. All Rights Reserved
</div>
</div>
<div class="social-links text-center text-md-right pt-3 pt-md-0">
<a href="#" class="twitter"><i class="bx bxl-twitter"></i></a>
<a href="#" class="facebook"><i class="bx bxl-facebook"></i></a>
<a href="#" class="instagram"><i class="bx bxl-instagram"></i></a>
<a href="#" class="google-plus"><i class="bx bxl-skype"></i></a>
<a href="#" class="linkedin"><i class="bx bxl-linkedin"></i></a>
</div>
</div>
</footer><!-- End Footer -->
<div id="preloader"></div>
<a href="#" class="back-to-top d-flex align-items-center justify-content-center"><i class="bi bi-arrow-up-short"></i></a>
<!-- Vendor JS Files -->
<script src="assets/vendor/aos/aos.js"></script>
<script src="assets/vendor/bootstrap/js/bootstrap.bundle.min.js"></script>
<script src="assets/vendor/glightbox/js/glightbox.min.js"></script>
<script src="assets/vendor/isotope-layout/isotope.pkgd.min.js"></script>
<script src="assets/vendor/php-email-form/validate.js"></script>
<script src="assets/vendor/purecounter/purecounter.js"></script>
<script src="assets/vendor/swiper/swiper-bundle.min.js"></script>
<!-- Template Main JS File -->
<script src="assets/js/main.js"></script>
</body>
</html>