11.07.2015 Views

GPU-Based Real-Time Imaging Software Suite for Medical Ultrasound

GPU-Based Real-Time Imaging Software Suite for Medical Ultrasound

GPU-Based Real-Time Imaging Software Suite for Medical Ultrasound

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Figure 2. <strong>Real</strong>-time image reconstruction procedure.graphics card (Nvidia, Santa Clara, CA), a Virtex-6 FPGAboard (ML605, Xilinx Inc., San Jose, CA), a Surelite OPO Pluslaser (Continuum, Santa Clara, CA), and a custom-designedinterface PCB. Table I lists relevant specifications of thegraphics card we used in this implementation.As this system aims to be a flexible imaging plat<strong>for</strong>m <strong>for</strong>various types of probes and imaging schemes, it providesmultiple options <strong>for</strong> excitation. To excite the transducers <strong>for</strong>transmit, we can either program the FPGA to control the onchippursers integrated with the CMUT probe, or simply usethe Verasonics pulsers. In photoacoustic imaging mode, theFPGA is programmed to control the laser and synchronize itwith the data acquisition system.The software takes raw RF data collected by the Verasonicsdata acquisition system, and processes them on <strong>GPU</strong> toreconstruct real-time images. Fig. 2 shows the real-time imagereconstruction procedure of this software. Task parallelismbetween the copy engine and the kernel engine of <strong>GPU</strong> wasimplemented using two CUDA streams. While the copy enginetransfers a block of raw data to the <strong>GPU</strong> memory, the kernelengine processes the previous data block <strong>for</strong> analytic signalconversion combined with optional Hadamard decoding andaperture weighting, as depicted in Fig. 3. Delay-and-sumoperations are single instruction multiple data (SIMD)executions, and are thus suitable <strong>for</strong> <strong>GPU</strong> parallel processing.Fig. 4 describes the data-level parallelism implemented <strong>for</strong>delay-and-sum operations. To reconstruct an image with Npixels, M∙N CUDA threads are created and M threads areassigned to each pixel, where M is empirically optimized <strong>for</strong>each imaging application. The threads assigned to adjacentpixels are grouped together in the same thread block tomaximize the memory access efficiency by utilizing the spatialFigure 3. Task parallelism in data transfer and data processing.Figure 4. Data-level parallelism in delay-and-sum operations.locality of the raw data samples stored in the 2-D texturememory.III.REAL-TIME IMAGING SOFTWARE SUITEThe software suite consists of multiple imaging programscustomized <strong>for</strong> different purposes, a real-time RF data analyzer,and a Verasonics transmit controller. The individual programsin the suite are listed and briefly described in Table II.General Imager is the most-general purpose imagingprogram that works with arbitrary probe geometry and variousimaging schemes, including conventional phased arrayimaging, synthetic phased array imaging with and withoutProgramGeneral ImagerRotating Plane ImagerMIP ImagerPA ImagerVolume ImagerFlow ImagerRF AnalyzerTX ControllerDescriptionTABLE IIPROGRAMS IN THE REAL-TIME IMAGING SOFTWARE SUITEThe most general-purpose imaging program displaying three arbitrary cross-sectional imagesA fast real-time imaging program showing one B-mode image rotating about the axis<strong>Software</strong> displaying a rotating B-mode image and its maximum intensity projection (MIP)Photoacoustic and ultrasound dual-mode imaging software<strong>Real</strong>-time volume reconstruction program displaying a volume-rendered image and three cross-sectional images.Ultrafast flow imaging software (under development)A 4-channel real-time RF data analyzerVerasonics transmit controller <strong>for</strong> use in drug delivery and high-intensity focused ultrasound (HIFU) applications

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!