<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v2.3 20070202//EN" "journalpublishing.dtd">
<article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" xml:lang="en" article-type="research-article">
<front>
<journal-meta>
<journal-id journal-id-type="nlm-ta">Sensors</journal-id>
<journal-title>Sensors</journal-title>
<issn pub-type="epub">1424-8220</issn>
<publisher>
<publisher-name>Molecular Diversity Preservation International (MDPI)</publisher-name></publisher></journal-meta>
<article-meta>
<article-id pub-id-type="doi">10.3390/s120606920</article-id>
<article-id pub-id-type="publisher-id">sensors-12-06920</article-id>
<article-categories>
<subj-group>
<subject>Article</subject></subj-group></article-categories>
<title-group>
<article-title>Ultra-Fast Displaying Spectral Domain Optical Doppler Tomography System Using a Graphics Processing Unit</article-title></title-group>
<contrib-group>
<contrib contrib-type="author">
<name><surname>Jeong</surname><given-names>Hyosang</given-names></name><xref ref-type="aff" rid="af1-sensors-12-06920"><sup>1</sup></xref></contrib>
<contrib contrib-type="author">
<name><surname>Cho</surname><given-names>Nam Hyun</given-names></name><xref ref-type="aff" rid="af1-sensors-12-06920"><sup>1</sup></xref></contrib>
<contrib contrib-type="author">
<name><surname>Jung</surname><given-names>Unsang</given-names></name><xref ref-type="aff" rid="af1-sensors-12-06920"><sup>1</sup></xref></contrib>
<contrib contrib-type="author">
<name><surname>Lee</surname><given-names>Changho</given-names></name><xref ref-type="aff" rid="af1-sensors-12-06920"><sup>1</sup></xref></contrib>
<contrib contrib-type="author">
<name><surname>Kim</surname><given-names>Jeong-Yeon</given-names></name><xref ref-type="aff" rid="af2-sensors-12-06920"><sup>2</sup></xref></contrib>
<contrib contrib-type="author">
<name><surname>Kim</surname><given-names>Jeehyun</given-names></name><xref ref-type="aff" rid="af1-sensors-12-06920"><sup>1</sup></xref><xref ref-type="corresp" rid="c1-sensors-12-06920"><sup>*</sup></xref></contrib></contrib-group>
<aff id="af1-sensors-12-06920">
<label>1</label>School of Electrical Engineering and Computer Science, Kyungpook National University, 1370, Sankyuk-dong, Buk-gu, Daegu 702-701, Korea; E-Mails: <email>hyosangj@gmail.com</email> (H.J.); <email>nhcho@knu.ac.kr</email> (N.H.C.); <email>cester@paran.com</email> (U.J.); <email>song31037@knu.ac.kr</email> (C.L.)</aff>
<aff id="af2-sensors-12-06920">
<label>2</label>Division of General Studies, Ulsan National Institute of Science and Technology, Ulsan 689-798, Korea; E-Mail: <email>jkim@unist.ac.kr</email></aff>
<author-notes>
<corresp id="c1-sensors-12-06920">
<label>*</label>Author to whom correspondence should be addressed; E-Mail: <email>jeehk@knu.ac.kr</email>; Tel./Fax: +82-53-9507-221.</corresp></author-notes>
<pub-date pub-type="collection">
<year>2012</year></pub-date>
<pub-date pub-type="epub">
<day>25</day>
<month>05</month>
<year>2012</year></pub-date>
<volume>12</volume>
<issue>6</issue>
<fpage>6920</fpage>
<lpage>6929</lpage>
<history>
<date date-type="received">
<day>22</day>
<month>03</month>
<year>2012</year></date>
<date date-type="rev-recd">
<day>02</day>
<month>05</month>
<year>2012</year></date>
<date date-type="accepted">
<day>21</day>
<month>05</month>
<year>2012</year></date></history>
<permissions>
<copyright-statement>© 2012 by the authors; licensee MDPI, Basel, Switzerland</copyright-statement>
<copyright-year>2012</copyright-year>
<license>
<p>This article is an open access article distributed under the terms and conditions of the Creative Commons Attribution license (http://creativecommons.org/licenses/by/3.0/).</p></license></permissions>
<abstract>
<p>We demonstrate an ultrafast displaying Spectral Domain Optical Doppler Tomography system using Graphics Processing Unit (GPU) computing. The calculation of FFT and the Doppler frequency shift is accelerated by the GPU. Our system can display processed OCT and ODT images simultaneously in real time at 120 fps for 1,024 pixels × 512 lateral A-scans. The computing time for the Doppler information was dependent on the size of the moving average window, but with a window size of 32 pixels the ODT computation time is only 8.3 ms, which is comparable to the data acquisition time. Also the phase noise decreases significantly with the window size. Since the performance of a real-time display for OCT/ODT is very important for clinical applications that need immediate diagnosis for screening or biopsy. Intraoperative surgery can take much benefit from the real-time display flow rate information from the technology. Moreover, the GPU is an attractive tool for clinical and commercial systems for functional OCT features as well.</p></abstract>
<kwd-group>
<kwd>ODT</kwd>
<kwd>OCT</kwd>
<kwd>GPU</kwd>
<kwd>real-time</kwd>
<kwd>CUDA</kwd></kwd-group></article-meta></front>
<body>
<sec sec-type="intro">
<label>1.</label>
<title>Introduction</title>
<p>Optical Coherence Tomography (OCT) has been widely accepted as a non-invasive high resolution imaging modality for <italic>in vivo</italic> biological specimens [<xref ref-type="bibr" rid="b1-sensors-12-06920">1</xref>]. After the emergence of spectral domain OCT (SD-OCT) and swept source OCT (SSOCT), the real time imaging and displaying feature has become one of the major competing categories [<xref ref-type="bibr" rid="b2-sensors-12-06920">2</xref>–<xref ref-type="bibr" rid="b4-sensors-12-06920">4</xref>]. Real time displaying feature is another key parameter to deliver the OCT technology to clinical and industrial fields because dynamic changes of the targets are often screened by human vision. Current real-time video-rate display is commonly limited to displaying OCT intensity images. Phase information related to flowing objects requires a significant post-processing effort, and also most flow dynamics require high speed acquisition to trigger certain interesting events. The need for real-time display of Doppler frequency shift images is urgently required for monitoring flow samples, but such a feature has not been reported yet.</p>
<p>Recent commercialization for massive parallel processing units provides an easily adaptable solution to this problem. Recently developed Graphics Processing Units (GPUs) enable very fast processing of OCT signals, but also can execute parallel, general purpose numerical solutions surpassing the use of CPUs. Several years ago NVIDIA Corporation presented a parallel computing architecture named Compute Unified Device Architecture (CUDA) commonly adapted in computer games for more natural presentation of sceneries. Use of GPUs in the OCT research field for fast display of intensity images has been reported several times [<xref ref-type="bibr" rid="b5-sensors-12-06920">5</xref>–<xref ref-type="bibr" rid="b8-sensors-12-06920">8</xref>]. In this paper, we report a novel ultra-fast displaying Spectral Domain Optical Doppler Tomography (SD-ODT) by use of CUDA processes for real-time display of OCT intensity and Doppler images simultaneously at a frame rate of 120 fps for a 2,048 × 512 pixel image size.</p></sec>
<sec>
<label>2.</label>
<title>System Configuration and Signal Processing Architecture</title>
<p>The schematic diagram of the developed SD-OCT system is shown at <xref ref-type="fig" rid="f1-sensors-12-06920">Figure 1</xref>. A 12-bit CMOS line scanning camera (Sprint spL2048-140 k, Basler AG) with 70,000 line/s effective line rate at 2,048 pixel mode was used as the detector of the SD-OCT system. The transmission type diffraction grating (Spatial Frequency 1,800 lpmm, Nominal AOI/AOD 46.05 Degrees, Wasatch Photonics) was adapted to enhance light efficiency in the detection path. Combined with a superluminescence diode (SLED) (λ<sub>0</sub> = 850 nm, Δλ = 55 nm, Exalos AG) as a light source, a fiber-based interferometer was implemented. The light source was split into sample and reference arms with the latter terminated by a stationary mirror. A probe at the end of the sample arm delivered light to a sample and collected back-scattered light from different depths in the sample. B-mode scanning was performed using a galvanometer scanning mirror (GVS002, Thorlabs) at the back focal plane of the objective lens at the sample arm. The developed system with the axial and lateral resolutions of 4 μm and about 12 μm, respectively. The measured depth range was 4 mm.</p>
<p>A scattering particle filled capillary tube with a 750 μm diameter was used to demonstrate the flow rate imaging feature. A syringe pump (Harvard Apparatus, accuracy ±0.5%, flow rate maximum 7.909 mL/mm, flow rate minimum 0.0014 μL/h) provided changes of the flow rate in the tube. The detected OCT signals were transferred to a host memory in the PC (Personal Computer) mounted with six CPUs (Core i7 980X Hexa cores, 3.33 GHz Clock rate, Intel) through a frame grabber (PCIe-1433, 850 MB/s Bandwidth, National Instruments, USA). The galvanometer scanning mirror was driven by the PC with a data acquisition board (PCIe-6321, National Instruments). The PC also contained a graphics card (Geforce GTX480, 700 MHz Clock rate, 480 CUDA processor, NVIDIA).</p>
<p>In order to apply the GPU technology to both OCT and ODT signal processing, an optimum combination of CPU and GPU is designed. Two separate buffers are allocated in the host memory of CPU and they are assigned as CPU thread one. These buffers are mainly dedicated for temporal data storage right after data acquisition. Due to the limited data transfer channel between CPU and GPU careful data handling was necessary to minimize any bottleneck events during the data transfer. We report a significant decrease in the processing time when we host memory to allocate the acquired data. The conventional method utilizing the memory in the frame grabber measures 16 ms processing for 2,048 × 512 pixel data size compared to 8.3 ms of the proposed two-separate buffer method. As a device memory in the GPU, the signal processing job is divided into 480 CUDA processors.</p>
<p><xref ref-type="fig" rid="f2-sensors-12-06920">Figure 2</xref> displays the data flow chart for the system including the flow of data path, thread events, and the buffer ring. First the data acquisition thread stored incoming two dimensional signals into the first buffer allocated in the host memory and called a signal processing thread. Later, the self-iterated acquisition thread continuously transferred the incoming signals to the second buffer without any temporal delay between the acquisition events. The signal processing thread copied the frame data stored in the buffers of the host memory through the PCI express x16 2.0 interface into the device memory. Later, the processing divided 480 CUDA sub-processors to process further signal processing for OCT and ODT. K-domain linearization was completed using the full-range k-domain linearization [<xref ref-type="bibr" rid="b9-sensors-12-06920">9</xref>]. The reconstructed OCT and ODT image were transferred back to the host memory to be displayed.</p></sec>
<sec>
<label>3.</label>
<title>Doppler Frequency Shift</title>
<p>The interference fringe pattern can include structural and phase information. After Fourier transformation of the complex signal <italic>I</italic> + <italic>jQ</italic>, the structural OCT image was calculated from <xref rid="FD1" ref-type="disp-formula">Equation (1)</xref> [<xref ref-type="bibr" rid="b10-sensors-12-06920">10</xref>,<xref ref-type="bibr" rid="b11-sensors-12-06920">11</xref>]. The phase information was extracted from real and imaginary values and the Doppler frequency shift was calculated from <xref rid="FD2" ref-type="disp-formula">Equation (2)</xref> [<xref ref-type="bibr" rid="b10-sensors-12-06920">10</xref>–<xref ref-type="bibr" rid="b12-sensors-12-06920">12</xref>]:
<disp-formula id="FD1">
<label>(1)</label>
<mml:math id="mm1" display="block">
<mml:semantics id="sm1">
<mml:mrow>
<mml:msub>
<mml:mi>S</mml:mi>
<mml:mrow>
<mml:mtext mathvariant="italic">OCT</mml:mtext></mml:mrow></mml:msub>
<mml:mo>=</mml:mo>
<mml:msqrt>
<mml:mrow>
<mml:msup>
<mml:mi>I</mml:mi>
<mml:mn>2</mml:mn></mml:msup>
<mml:mo>+</mml:mo>
<mml:msup>
<mml:mi>Q</mml:mi>
<mml:mn>2</mml:mn></mml:msup></mml:mrow></mml:msqrt></mml:mrow></mml:semantics></mml:math></disp-formula>
<disp-formula id="FD2">
<label>(2)</label>
<mml:math id="mm2" display="block">
<mml:semantics id="sm2">
<mml:mrow>
<mml:msub>
<mml:mi>f</mml:mi>
<mml:mi>D</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi>f</mml:mi>
<mml:mi>a</mml:mi></mml:msub></mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mi>π</mml:mi></mml:mrow></mml:mfrac>
<mml:msup>
<mml:mrow>
<mml:mo>tan</mml:mo></mml:mrow>
<mml:mrow>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msup>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mrow>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>M</mml:mi>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>N</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow></mml:mrow></mml:mfrac>
<mml:munderover>
<mml:mtext>∑</mml:mtext>
<mml:mrow>
<mml:mi>m</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn></mml:mrow>
<mml:mi>M</mml:mi></mml:munderover>
<mml:mrow>
<mml:munderover>
<mml:mtext>∑</mml:mtext>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mrow>
<mml:mi>N</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:munderover>
<mml:mrow>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>I</mml:mi>
<mml:mrow>
<mml:mi>m</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>n</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msub>
<mml:msub>
<mml:mi>Q</mml:mi>
<mml:mrow>
<mml:mi>m</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>n</mml:mi></mml:mrow></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mi>Q</mml:mi>
<mml:mrow>
<mml:mi>m</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>n</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msub>
<mml:msub>
<mml:mi>I</mml:mi>
<mml:mrow>
<mml:mi>m</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>n</mml:mi></mml:mrow></mml:msub></mml:mrow>
<mml:mo>]</mml:mo></mml:mrow></mml:mrow></mml:mrow></mml:mrow>
<mml:mrow>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mrow>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>M</mml:mi>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>N</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow></mml:mrow></mml:mfrac>
<mml:munderover>
<mml:mtext>∑</mml:mtext>
<mml:mrow>
<mml:mi>m</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn></mml:mrow>
<mml:mi>M</mml:mi></mml:munderover>
<mml:mrow>
<mml:munderover>
<mml:mtext>∑</mml:mtext>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mrow>
<mml:mi>N</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:munderover>
<mml:mrow>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>Q</mml:mi>
<mml:mrow>
<mml:mi>m</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>n</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msub>
<mml:msub>
<mml:mi>Q</mml:mi>
<mml:mrow>
<mml:mi>m</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>n</mml:mi></mml:mrow></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mi>I</mml:mi>
<mml:mrow>
<mml:mi>m</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>n</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msub>
<mml:msub>
<mml:mi>I</mml:mi>
<mml:mrow>
<mml:mi>m</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>n</mml:mi></mml:mrow></mml:msub></mml:mrow>
<mml:mo>]</mml:mo></mml:mrow></mml:mrow></mml:mrow></mml:mrow></mml:mfrac></mml:mrow>
<mml:mo>}</mml:mo></mml:mrow></mml:mrow></mml:semantics></mml:math></disp-formula>where <italic>f<sub>a</sub></italic> is the sampling rate, and <italic>I</italic> and <italic>Q</italic> represent in-phase and quadrature phase information in the interference signal. <italic>M</italic> and <italic>N</italic> are the moving average window size for axial and lateral directions, respectively, whereas m and n is the data position in the window. Calculation of the kasai autocorrelation algorithm [<xref ref-type="bibr" rid="b13-sensors-12-06920">13</xref>,<xref ref-type="bibr" rid="b14-sensors-12-06920">14</xref>] was divided to two different steps for GPU processing as shown in <xref ref-type="fig" rid="f3-sensors-12-06920">Figure 3</xref>. Firstly, &lt;X&gt; and &lt;Y&gt; are calculated by <xref rid="FD3" ref-type="disp-formula">Equation (3)</xref>. All the OCT data is processed by parallel processing, because GPU computing is specialized for highly parallel computation. The moving average calculation can be processed after the <xref rid="FD3" ref-type="disp-formula">Equation (3)</xref> is complete:
<disp-formula id="FD3">
<label>(3)</label>
<mml:math id="mm3" display="block">
<mml:semantics id="sm3">
<mml:mtable columnalign="left">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mo>〈</mml:mo>
<mml:mi>Y</mml:mi>
<mml:mo>〉</mml:mo></mml:mrow>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mi>I</mml:mi>
<mml:mrow>
<mml:mi>m</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>n</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msub>
<mml:msub>
<mml:mi>Q</mml:mi>
<mml:mrow>
<mml:mi>m</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>n</mml:mi></mml:mrow></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mi>Q</mml:mi>
<mml:mrow>
<mml:mi>m</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>n</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msub>
<mml:msub>
<mml:mi>I</mml:mi>
<mml:mrow>
<mml:mi>m</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>n</mml:mi></mml:mrow></mml:msub></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mo>〈</mml:mo>
<mml:mi>X</mml:mi>
<mml:mo>〉</mml:mo></mml:mrow>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mi>Q</mml:mi>
<mml:mrow>
<mml:mi>m</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>n</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msub>
<mml:msub>
<mml:mi>Q</mml:mi>
<mml:mrow>
<mml:mi>m</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>n</mml:mi></mml:mrow></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mi>I</mml:mi>
<mml:mrow>
<mml:mi>m</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>n</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msub>
<mml:msub>
<mml:mi>I</mml:mi>
<mml:mrow>
<mml:mi>m</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>n</mml:mi></mml:mrow></mml:msub></mml:mtd></mml:mtr></mml:mtable></mml:semantics></mml:math></disp-formula></p>
<p>Then <italic>M</italic> × <italic>N</italic> window averaging and <italic>f<sub>D</sub></italic> was evaluated using <xref rid="FD4" ref-type="disp-formula">Equation (4)</xref> after cropping phase noise below a predefined threshold:
<disp-formula id="FD4">
<label>(4)</label>
<mml:math id="mm4" display="block">
<mml:semantics id="sm4">
<mml:mrow>
<mml:msub>
<mml:mi>f</mml:mi>
<mml:mi>D</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi>f</mml:mi>
<mml:mi>a</mml:mi></mml:msub></mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mi>π</mml:mi></mml:mrow></mml:mfrac>
<mml:msup>
<mml:mrow>
<mml:mo>tan</mml:mo></mml:mrow>
<mml:mrow>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msup>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mrow>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>M</mml:mi>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>N</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow></mml:mrow></mml:mfrac>
<mml:munderover>
<mml:mtext>∑</mml:mtext>
<mml:mrow>
<mml:mi>m</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn></mml:mrow>
<mml:mi>M</mml:mi></mml:munderover>
<mml:mrow>
<mml:munderover>
<mml:mtext>∑</mml:mtext>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mrow>
<mml:mi>N</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:munderover>
<mml:mrow>
<mml:mrow>
<mml:mo>〈</mml:mo>
<mml:mi>Y</mml:mi>
<mml:mo>〉</mml:mo></mml:mrow></mml:mrow></mml:mrow></mml:mrow>
<mml:mrow>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mrow>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>M</mml:mi>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>N</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow></mml:mrow></mml:mfrac>
<mml:munderover>
<mml:mtext>∑</mml:mtext>
<mml:mrow>
<mml:mi>m</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn></mml:mrow>
<mml:mi>M</mml:mi></mml:munderover>
<mml:mrow>
<mml:munderover>
<mml:mtext>∑</mml:mtext>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mrow>
<mml:mi>N</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:munderover>
<mml:mrow>
<mml:mrow>
<mml:mo>〈</mml:mo>
<mml:mi>X</mml:mi>
<mml:mo>〉</mml:mo></mml:mrow></mml:mrow></mml:mrow></mml:mrow></mml:mfrac></mml:mrow>
<mml:mo>}</mml:mo></mml:mrow></mml:mrow></mml:semantics></mml:math></disp-formula></p></sec>
<sec sec-type="methods">
<label>4.</label>
<title>ODT Data Processing</title>
<p>The moving average calculation is still the most computation intensive procedure in the CUDA processing and the calculation time is linearly proportional to the window size. The effect of the moving average window size to the frame rate was examined by measuring the OCT and ODT processing time at different window sizes as shown in <xref ref-type="fig" rid="f4-sensors-12-06920">Figure 4</xref>. The time interval between frames for a 2,048 × 512 pixel sized data took 8.3 ms in the developed system. The frame interval time is determined by other processing threads than the moving average calculation when the window size is below 32 pixels. <xref ref-type="fig" rid="f5-sensors-12-06920">Figure 5</xref> shows the processing time variation according to the change of the lateral scan size when the window size was 32 pixels.</p>
<p>The resultant ODT images are shown at <xref ref-type="fig" rid="f6-sensors-12-06920">Figure 6</xref> after B-mode scanning of the flowing particle filled tube at different averaging window sizes. ODT calculation results using CUDA also confirm that the window size is inversely proportional the phase noise as previously reported in the conventional ODT technique. The velocity variance each was calculated by using the four-quadrant arctan method and displayed color coded [<xref ref-type="bibr" rid="b12-sensors-12-06920">12</xref>].</p></sec>
<sec sec-type="results">
<label>5.</label>
<title>Results and ODT Imaging</title>
<p><xref ref-type="fig" rid="f7-sensors-12-06920">Figure 7</xref> shows ODT images of a capillary tube with flowing particles at different flow rates. The average window size was 12 × 20 pixels in the axial and lateral direction, respectively. The ODT displaying frame rate was 120 fps for the image size of 1,024 × 512 pixels. The central velocity variance profiles at each flow rate (<xref ref-type="fig" rid="f7-sensors-12-06920">Figure 7</xref>) are calculated at <xref ref-type="fig" rid="f8-sensors-12-06920">Figure 8</xref>.</p>
<p><xref ref-type="fig" rid="f9-sensors-12-06920">Figure 9</xref> shows the captured movie of experiment for OCT and ODT images of flowing particles in a capillary tube. The movie contains a scattering flow channel with different flow velocities from 0 to 120 mm/s with increase of 20 mm/s. The frame rate was calculated by averaging the total processing time for 500 frame displays including acquisition and display time. The average frame rate was 120 fps for simultaneous display OCT and ODT images.</p></sec>
<sec sec-type="discussion|conclusions">
<label>6.</label>
<title>Discussion and Conclusions</title>
<p>We demonstrate an ultrafast displaying SD-ODT using GPU computing. The calculation of FFT and Doppler frequency shift is accelerated by the GPU. The computing time for the Doppler information was dependent on the size of the moving average window, but for a window size of 32 pixels the ODT computing time is 8.3 ms, which is comparable with the data acquisition thread time. The phase noise also decreases significantly with size. Our system can display processed OCT and ODT images simultaneously in real time at 120 fps for 1,024 pixels × 512 lateral A-scans. Since the performance of a real-time display for OCT/ODT is very important for clinical applications that need immediate diagnosis for screening or biopsy, intraoperative surgery can benefit greatly from the real-time display flow rate information possible with this technology. Moreover, the GPU is an attractive tool for clinical and commercial systems for its functional OCT features as well.</p></sec></body>
<back>
<ack>
<p>This work was supported by the National Research Foundation of Korea (NRF) grant funded by the Korea government (MEST) (No. 2010-0014461), DAEGU Metropolitan City R&amp;D Project, Ministry of Health &amp; Welfare, Republic of Korea through the Korea Healthcare technology R&amp;D Project (No. A102024-1011-0000200), the Ministry of Knowledge Economy (MKE), Korea Institute for Advancement of Technology (KIAT) and DAEGU Leading Industry Office through the Leading Industry Development for Economic Region (No. 2010-T-2-A-Y0-C-15) and the National Research Foundation of Korea (No. 2011-0006286).</p></ack>
<ref-list>
<title>References</title>
<ref id="b1-sensors-12-06920"><label>1.</label><citation citation-type="book"><person-group person-group-type="author"><name><surname>Bouma</surname><given-names>B.E.</given-names></name><name><surname>Tearney</surname><given-names>G.J.</given-names></name></person-group><source>Handbook of Optical Coherence Tomography</source><publisher-name>Marcel Dekker</publisher-name><publisher-loc>New York, NY, USA</publisher-loc><year>2002</year><fpage>741</fpage></citation></ref>
<ref id="b2-sensors-12-06920"><label>2.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Potsaid</surname><given-names>B.</given-names></name><name><surname>Gorczynska</surname><given-names>I.</given-names></name><name><surname>Srinivasan</surname><given-names>V.J.</given-names></name><name><surname>Chen</surname><given-names>Y.L.</given-names></name><name><surname>Jiang</surname><given-names>J.</given-names></name><name><surname>Cable</surname><given-names>A.</given-names></name><name><surname>Fujimoto</surname><given-names>J.G.</given-names></name></person-group><article-title>Ultrahigh speed Spectral/Fourier domain OCT ophthalmic imaging at 70,000 to 312,500 axial scans per second</article-title><source>Opt. Express</source><year>2008</year><volume>16</volume><fpage>15149</fpage><lpage>15169</lpage><pub-id pub-id-type="doi">10.1364/OE.16.015149</pub-id><pub-id pub-id-type="pmid">18795054</pub-id></citation></ref>
<ref id="b3-sensors-12-06920"><label>3.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Oh</surname><given-names>W.Y.</given-names></name><name><surname>Vakoc</surname><given-names>B.J.</given-names></name><name><surname>Shishkov</surname><given-names>M.</given-names></name><name><surname>Tearney</surname><given-names>G.J.</given-names></name><name><surname>Bouma</surname><given-names>B.E.</given-names></name></person-group><article-title>&gt;400 kHz repetition rate wavelength-swept laser and application to high-speed optical frequency domain imaging</article-title><source>Opt. Lett.</source><year>2010</year><volume>35</volume><fpage>2919</fpage><lpage>2921</lpage><pub-id pub-id-type="doi">10.1364/OL.35.002919</pub-id><pub-id pub-id-type="pmid">20808369</pub-id></citation></ref>
<ref id="b4-sensors-12-06920"><label>4.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Kim</surname><given-names>J.</given-names></name><name><surname>Oh</surname><given-names>J.</given-names></name><name><surname>Milner</surname><given-names>T.E.</given-names></name><name><surname>Nelson</surname><given-names>J.S.</given-names></name></person-group><article-title>Hemoglobin contrast in magnetomotive optical Doppler tomography</article-title><source>Opt. Lett.</source><year>2006</year><volume>31</volume><fpage>778</fpage><lpage>780</lpage><pub-id pub-id-type="doi">10.1364/OL.31.000778</pub-id><pub-id pub-id-type="pmid">16544621</pub-id></citation></ref>
<ref id="b5-sensors-12-06920"><label>5.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Watanabe</surname><given-names>Y.</given-names></name><name><surname>Itagaki</surname><given-names>T.</given-names></name></person-group><article-title>Real-time display on Fourier domain optical coherence tomography system using a graphics processing unit</article-title><source>J. Biomed. Opt.</source><year>2009</year><volume>14</volume><pub-id pub-id-type="doi">10.1117/1.JBO.17.5.050503.</pub-id></citation></ref>
<ref id="b6-sensors-12-06920"><label>6.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Zhang</surname><given-names>K.</given-names></name><name><surname>Kang</surname><given-names>J.U.</given-names></name></person-group><article-title>Real-time 4D signal processing and visualization using graphics processing unit on a regular nonlinear-k Fourier-domain OCT system</article-title><source>Opt. Express</source><year>2010</year><volume>18</volume><fpage>11772</fpage><lpage>11784</lpage><pub-id pub-id-type="doi">10.1364/OE.18.011772</pub-id><pub-id pub-id-type="pmid">20589038</pub-id></citation></ref>
<ref id="b7-sensors-12-06920"><label>7.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Zhang</surname><given-names>K.</given-names></name><name><surname>Kang</surname><given-names>J.U.</given-names></name></person-group><article-title>Real-time intraoperative 4D full-range FD-OCT based on the dual graphics processing units architecture for microsurgery guidance</article-title><source>Biomed. Opt. Express</source><year>2011</year><volume>2</volume><fpage>764</fpage><lpage>770</lpage><pub-id pub-id-type="doi">10.1364/BOE.2.000764</pub-id><pub-id pub-id-type="pmid">21483601</pub-id></citation></ref>
<ref id="b8-sensors-12-06920"><label>8.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Watanabe</surname><given-names>Y.</given-names></name><name><surname>Maeno</surname><given-names>S.</given-names></name><name><surname>Aoshima</surname><given-names>K.</given-names></name><name><surname>Hasegawa</surname><given-names>H.</given-names></name><name><surname>Koseki</surname><given-names>H.</given-names></name></person-group><article-title>Real-time processing for full-range fourier-domain optical-coherence tomography with zero-filling interpolation using multiple graphic processing units</article-title><source>Appl. Opt.</source><year>2010</year><volume>49</volume><fpage>4756</fpage><lpage>4762</lpage><pub-id pub-id-type="doi">10.1364/AO.49.004756</pub-id><pub-id pub-id-type="pmid">20820218</pub-id></citation></ref>
<ref id="b9-sensors-12-06920"><label>9.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Jeon</surname><given-names>M.</given-names></name><name><surname>Kim</surname><given-names>J.</given-names></name><name><surname>Jung</surname><given-names>U.</given-names></name><name><surname>Lee</surname><given-names>C.</given-names></name><name><surname>Jung</surname><given-names>W.</given-names></name><name><surname>Boppart</surname><given-names>S.A.</given-names></name></person-group><article-title>Full-range k-domain linearization in spectral-domain optical coherence tomography</article-title><source>Appl. Opt.</source><year>2011</year><volume>50</volume><fpage>1158</fpage><lpage>1163</lpage><pub-id pub-id-type="doi">10.1364/AO.50.001158</pub-id><pub-id pub-id-type="pmid">21394187</pub-id></citation></ref>
<ref id="b10-sensors-12-06920"><label>10.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Mariampillai</surname><given-names>A.</given-names></name><name><surname>Standish</surname><given-names>B.A.</given-names></name><name><surname>Munce</surname><given-names>N.R.</given-names></name><name><surname>Randall</surname><given-names>C.</given-names></name><name><surname>Liu</surname><given-names>G.</given-names></name><name><surname>Jiang</surname><given-names>J.Y.</given-names></name><name><surname>Cable</surname><given-names>A.E.</given-names></name><name><surname>Vitkin</surname><given-names>I.A.</given-names></name><name><surname>Yang</surname><given-names>V.X.D.</given-names></name></person-group><article-title>Doppler optical cardiogram gated 2D color flow imaging at 1,000 <italic>fps</italic> and 4D <italic>in vivo</italic> visualization of embryonic heart at 45 <italic>fps</italic> on a swept source OCT system</article-title><source>Opt. Express</source><year>2007</year><volume>15</volume><fpage>1627</fpage><lpage>1638</lpage><pub-id pub-id-type="doi">10.1364/OE.15.001627</pub-id><pub-id pub-id-type="pmid">19532397</pub-id></citation></ref>
<ref id="b11-sensors-12-06920"><label>11.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Yang</surname><given-names>V.X.D.</given-names></name><name><surname>Gordon</surname><given-names>M.L.</given-names></name><name><surname>Mok</surname><given-names>A.</given-names></name><name><surname>Zhao</surname><given-names>Y.H.</given-names></name><name><surname>Chen</surname><given-names>Z.P.</given-names></name><name><surname>Cobbold</surname><given-names>R.S.C.</given-names></name><name><surname>Wilson</surname><given-names>B.C.</given-names></name><name><surname>Vitkin</surname><given-names>I.A.</given-names></name></person-group><article-title>Improved phase-resolved optical Doppler tomography using the kasai velocity estimator and histogram segmentation</article-title><source>Opt. Commun.</source><year>2002</year><volume>208</volume><fpage>209</fpage><lpage>214</lpage><pub-id pub-id-type="doi">10.1016/S0030-4018(02)01501-8</pub-id></citation></ref>
<ref id="b12-sensors-12-06920"><label>12.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Yang</surname><given-names>V.X.D.</given-names></name><name><surname>Gordon</surname><given-names>M.L.</given-names></name><name><surname>Qi</surname><given-names>B.</given-names></name><name><surname>Pekar</surname><given-names>J.</given-names></name><name><surname>Lo</surname><given-names>S.</given-names></name><name><surname>Seng-Yue</surname><given-names>E.</given-names></name><name><surname>Mok</surname><given-names>A.</given-names></name><name><surname>Wilson</surname><given-names>B.C.</given-names></name><name><surname>Vitkin</surname><given-names>I.A.</given-names></name></person-group><article-title>High speed, wide velocity dynamic range Doppler optical coherence tomography (Part I): System design, signal processing, and performance</article-title><source>Opt. Express</source><year>2003</year><volume>11</volume><fpage>794</fpage><lpage>809</lpage><pub-id pub-id-type="doi">10.1364/OE.11.000794</pub-id><pub-id pub-id-type="pmid">19461792</pub-id></citation></ref>
<ref id="b13-sensors-12-06920"><label>13.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Makita</surname><given-names>S.</given-names></name><name><surname>Fabritius</surname><given-names>T.</given-names></name><name><surname>Yasuno</surname><given-names>Y.</given-names></name></person-group><article-title>Quantitative retinal-blood flow measurement with three-dimensional vessel geometry determination using ultrahigh-resolution Doppler optical coherence angiography</article-title><source>Opt. Lett.</source><year>2008</year><volume>33</volume><fpage>836</fpage><lpage>838</lpage><pub-id pub-id-type="doi">10.1364/OL.33.000836</pub-id><pub-id pub-id-type="pmid">18414549</pub-id></citation></ref>
<ref id="b14-sensors-12-06920"><label>14.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Ahn</surname><given-names>Y.C.</given-names></name><name><surname>Jung</surname><given-names>W.</given-names></name><name><surname>Chen</surname><given-names>Z.P.</given-names></name></person-group><article-title>Quantification of a three-dimensional velocity vector using spectral-domain Doppler optical coherence tomography</article-title><source>Opt. Lett.</source><year>2007</year><volume>32</volume><fpage>1587</fpage><lpage>1589</lpage><pub-id pub-id-type="doi">10.1364/OL.32.001587</pub-id><pub-id pub-id-type="pmid">17546197</pub-id></citation></ref></ref-list>
<sec sec-type="display-objects">
<title>Figures</title>
<fig id="f1-sensors-12-06920" position="float">
<label>Figure 1.</label>
<caption>
<p>Schematic of the SD-ODT system. C: Collimator. FL: Focusing lens. RM: Reference mirror. FC: 2 × 2 Fiber coupler. LSC: CMOS Line scan camera. DG: Diffraction grating. GS: Galvanometer scanner. SP: Syringe pump. CT: 750 μm Capillary tube. PCIe: PCI express. FG: Frame grabber. COM: Host computer.</p></caption>
<graphic xlink:href="sensors-12-06920f1.gif"/></fig>
<fig id="f2-sensors-12-06920" position="float">
<label>Figure 2.</label>
<caption>
<p>Architecture of the SD-ODT system with signal processing part implemented in a GPU.</p></caption>
<graphic xlink:href="sensors-12-06920f2.gif"/></fig>
<fig id="f3-sensors-12-06920" position="float">
<label>Figure 3.</label>
<caption>
<p>Flowchart of Doppler frequency shift calculation by a GPU.</p></caption>
<graphic xlink:href="sensors-12-06920f3.gif"/></fig>
<fig id="f4-sensors-12-06920" position="float">
<label>Figure 4.</label>
<caption>
<p>Comparison in ODT processing time between averaging window sizes.</p></caption>
<graphic xlink:href="sensors-12-06920f4.gif"/></fig>
<fig id="f5-sensors-12-06920" position="float">
<label>Figure 5.</label>
<caption>
<p>Comparison in ODT processing time between lateral A-scans numbers. Averaging window size: 12 + 20 (<italic>M</italic> + <italic>N</italic>).</p></caption>
<graphic xlink:href="sensors-12-06920f5.gif"/></fig>
<fig id="f6-sensors-12-06920" position="float">
<label>Figure 6.</label>
<caption>
<p>B-scan ODT images of flowing particles in a capillary tube with different averaging window sizes. Doppler angle: 80°. Flow velocity: 80 mm/s.</p></caption>
<graphic xlink:href="sensors-12-06920f6.gif"/></fig>
<fig id="f7-sensors-12-06920" position="float">
<label>Figure 7.</label>
<caption>
<p>B-scan ODT images of capillary tube with different flow velocities. Doppler angle: 80°. Averaging window size: 12 + 20 (<italic>M</italic> + <italic>N</italic>).</p></caption>
<graphic xlink:href="sensors-12-06920f7.gif"/></fig>
<fig id="f8-sensors-12-06920" position="float">
<label>Figure 8.</label>
<caption>
<p>The velocity profile in the depth direction in the center of ODT images.</p></caption>
<graphic xlink:href="sensors-12-06920f8.gif"/></fig>
<fig id="f9-sensors-12-06920" position="float">
<label>Figure 9.</label>
<caption>
<p>Captured movie of experiment for a capillary tube ODT. Doppler angle: 80°. Averaging window size: 12 + 20 (<italic>M</italic> + <italic>N</italic>). Displaying image size: 512 W × 300 H pixel. (<bold>a</bold>) System setup. Red line: actual frame rate; (<bold>b</bold>) OCT image; (<bold>c</bold>) ODT image; (<bold>d</bold>) The watch for time comparison.</p></caption>
<graphic xlink:href="sensors-12-06920f9.gif"/></fig></sec></back></article>
