Elasticity Imaging with Ultrasound JEE 4980 Final Report. George Michaels and Mary Watts

Similar documents
JEE 4980 Senior Design

Senior Design Project

DATA COMPRESSION USING THE FFT

Chapter 7. Scanner Controls

Doubletalk Detection

Spectrum Analyser Basics

Automatic LP Digitalization Spring Group 6: Michael Sibley, Alexander Su, Daphne Tsatsoulis {msibley, ahs1,

Getting Started. Connect green audio output of SpikerBox/SpikerShield using green cable to your headphones input on iphone/ipad.

The Cocktail Party Effect. Binaural Masking. The Precedence Effect. Music 175: Time and Space

LabView Exercises: Part II

Predicting the immediate future with Recurrent Neural Networks: Pre-training and Applications

NENS 230 Assignment #2 Data Import, Manipulation, and Basic Plotting

DELTA MODULATION AND DPCM CODING OF COLOR SIGNALS

Supplemental Material for Gamma-band Synchronization in the Macaque Hippocampus and Memory Formation

Distortion Analysis Of Tamil Language Characters Recognition

StaMPS Persistent Scatterer Practical

A Novel Approach towards Video Compression for Mobile Internet using Transform Domain Technique

StaMPS Persistent Scatterer Exercise

How to Obtain a Good Stereo Sound Stage in Cars

Please feel free to download the Demo application software from analogarts.com to help you follow this seminar.

hit), and assume that longer incidental sounds (forest noise, water, wind noise) resemble a Gaussian noise distribution.

Similarity Measurement of Biological Signals Using Dynamic Time Warping Algorithm

The Effect of Time-Domain Interpolation on Response Spectral Calculations. David M. Boore

Lecture 2 Video Formation and Representation

Broken Wires Diagnosis Method Numerical Simulation Based on Smart Cable Structure

Application Note AN-708 Vibration Measurements with the Vibration Synchronization Module

Pole Zero Correction using OBSPY and PSN Data

Graphing Your Motion

ECE438 - Laboratory 1: Discrete and Continuous-Time Signals

CHARACTERIZATION OF END-TO-END DELAYS IN HEAD-MOUNTED DISPLAY SYSTEMS

CURIE Day 3: Frequency Domain Images

EE373B Project Report Can we predict general public s response by studying published sales data? A Statistical and adaptive approach

Implementation of an MPEG Codec on the Tilera TM 64 Processor

CS229 Project Report Polyphonic Piano Transcription

Lab 5 Linear Predictive Coding

Reconstruction of Ca 2+ dynamics from low frame rate Ca 2+ imaging data CS229 final project. Submitted by: Limor Bursztyn

Audio Compression Technology for Voice Transmission

CSE 166: Image Processing. Overview. Representing an image. What is an image? History. What is image processing? Today. Image Processing CSE 166

Koester Performance Research Koester Performance Research Heidi Koester, Ph.D. Rich Simpson, Ph.D., ATP

A Matlab toolbox for. Characterisation Of Recorded Underwater Sound (CHORUS) USER S GUIDE

ECG Denoising Using Singular Value Decomposition

A Parametric Autoregressive Model for the Extraction of Electric Network Frequency Fluctuations in Audio Forensic Authentication

Characterization and improvement of unpatterned wafer defect review on SEMs

PS User Guide Series Seismic-Data Display

Digital Image and Fourier Transform

Laboratory Assignment 3. Digital Music Synthesis: Beethoven s Fifth Symphony Using MATLAB

Audacity Tips and Tricks for Podcasters

Motion Video Compression

Single-switch Scanning Example. Learning Objectives. Enhancing Efficiency for People who Use Switch Scanning. Overview. Part 1. Single-switch Scanning

A Parametric Autoregressive Model for the Extraction of Electric Network Frequency Fluctuations in Audio Forensic Authentication

MIE 402: WORKSHOP ON DATA ACQUISITION AND SIGNAL PROCESSING Spring 2003

Marc I. Johnson, Texture Technologies Corp. 6 Patton Drive, Hamilton, MA Tel

Analysis of WFS Measurements from first half of 2004

MITOCW ocw f08-lec19_300k

Using Multiple DMs for Increased Spatial Frequency Response

An Overview of Video Coding Algorithms

Communication Theory and Engineering

STAT 113: Statistics and Society Ellen Gundlach, Purdue University. (Chapters refer to Moore and Notz, Statistics: Concepts and Controversies, 8e)

ONE SENSOR MICROPHONE ARRAY APPLICATION IN SOURCE LOCALIZATION. Hsin-Chu, Taiwan

Type-2 Fuzzy Logic Sensor Fusion for Fire Detection Robots

What to consider when choosing a mammography display

Detection and demodulation of non-cooperative burst signal Feng Yue 1, Wu Guangzhi 1, Tao Min 1

Multi-Shaped E-Beam Technology for Mask Writing

Supplemental Information. Dynamic Theta Networks in the Human Medial. Temporal Lobe Support Episodic Memory

EDDY CURRENT IMAGE PROCESSING FOR CRACK SIZE CHARACTERIZATION

Why Engineers Ignore Cable Loss

System Identification

Speech and Speaker Recognition for the Command of an Industrial Robot

Module 8 VIDEO CODING STANDARDS. Version 2 ECE IIT, Kharagpur

Film Sequence Detection and Removal in DTV Format and Standards Conversion

Smoothing Techniques For More Accurate Signals

ON THE INTERPOLATION OF ULTRASONIC GUIDED WAVE SIGNALS

ADJUSTABLE RANGE OF PARAMETERS [End of the Book]

Time Domain Simulations

WEAVE: Web-based Educational Framework for Analysis, Visualization, and Experimentation. Steven M. Lattanzio II 1

y POWER USER MUSIC PRODUCTION and PERFORMANCE With the MOTIF ES Mastering the Sample SLICE function

Appendix D. UW DigiScope User s Manual. Willis J. Tompkins and Annie Foong

Getting Started with the LabVIEW Sound and Vibration Toolkit

Removing the Pattern Noise from all STIS Side-2 CCD data

Hugo Technology. An introduction into Rob Watts' technology

ME EN 363 ELEMENTARY INSTRUMENTATION Lab: Basic Lab Instruments and Data Acquisition

Normalization Methods for Two-Color Microarray Data

CHAPTER 2 SUBCHANNEL POWER CONTROL THROUGH WEIGHTING COEFFICIENT METHOD

Reduced complexity MPEG2 video post-processing for HD display

AltiumLive 2017: Effective Methods for Advanced Routing

2. AN INTROSPECTION OF THE MORPHING PROCESS

MODE FIELD DIAMETER AND EFFECTIVE AREA MEASUREMENT OF DISPERSION COMPENSATION OPTICAL DEVICES

Musical Hit Detection

Peak Dynamic Power Estimation of FPGA-mapped Digital Designs

SCANNER TUNING TUTORIAL Author: Adam Burns

UNIVERSITY OF BAHRAIN COLLEGE OF ENGINEERING DEPARTMENT OF ELECTRICAL AND ELECTRONIC ENGINEERING

THE DIGITAL DELAY ADVANTAGE A guide to using Digital Delays. Synchronize loudspeakers Eliminate comb filter distortion Align acoustic image.

Understanding Compression Technologies for HD and Megapixel Surveillance

For the SIA. Applications of Propagation Delay & Skew tool. Introduction. Theory of Operation. Propagation Delay & Skew Tool

UC San Diego UC San Diego Previously Published Works

Example: compressing black and white images 2 Say we are trying to compress an image of black and white pixels: CSC310 Information Theory.

jamaseis Guide for Displaying Seismic Data

More Info at Open Access Database Process Control for Computed Tomography using Digital Detector Arrays

COSC3213W04 Exercise Set 2 - Solutions

Assessing and Measuring VCR Playback Image Quality, Part 1. Leo Backman/DigiOmmel & Co.

Transcription:

Elasticity Imaging with Ultrasound JEE 4980 Final Report George Michaels and Mary Watts University of Missouri, St. Louis Washington University Joint Engineering Undergraduate Program St. Louis, Missouri April 29, 2008

Abstract Gaining elasticity information of tissues from ultra-sound images would be useful in diagnosing cancers in patients without invasive biopsies. The elasticity would be determined by generating a strain image that tells you the tissues response to compression. Two tofu phantoms were used to simulate tissue with differing elasticity. Ultrasound images were then taken of the phantoms being compressed. Two images at different stages of compression were selected to be analyzed. These images were compared using cross-correlation to get the displacement of the second image with respect to the first. Then a displacement image was created. This image was then averaged to filter out noise and errors. The differential was then taken of the displacement image to create the strain image. Using this method, strain images were produced of the tofu phantoms that accurately portrayed the elasticity of the two types of tofu in the phantoms. Introduction Some cancers are hard to detect with current technology. Breast cancer mammography struggles with small cancers and with people with dense breast tissue. Ultrasound can detect different bodies in tissue but cannot determine whether those bodies are cancerous. Palpation is the current method used to evaluate the stiffness of these tumors; the relative stiffness can indicate the type of tumor or lump present. However, palpation is not possible with some of the lumps or tumors that are found in people, and even when practical, it is a highly subjective measure. Biopsy is then needed to achieve a diagnosis. A tool that could reliably determine the stiffness or elasticity of the tissue is needed to create a faster and more accurate diagnosis of cancer. We have developed a method of creating elasticity images. Elasticity imaging is a byproduct of the standard ultrasound. [A1] The images are constructed from the displacement and strain of ultrasound images of tissue in various stages of compression. Elasticity imaging has emerged as a sensitive and accurate method that more clearly demonstrates relative tissue stiffness or hardness, infiltration, and cystic region. [A1] This technology, if implemented correctly, could be crucial in the early detection of cancer and become a non-invasive replacement for biopsies. We have created an algorithm in MatLab that takes ultrasound images as the input and calculates and displays the strain image of the ultrasound signal.

Methodology A large part of our methodology was to take the project and break it down into smaller parts or stages. Then attack the smaller problems one at a time, building upon each completed part. The first step in the process was to create a simple algorithm that takes two signals as the input, cross-correlates them, and outputs the displacement. To accomplish this task we used simulation data that was provided to us. We used the simulation data because we knew that the displacement curve should look like a sinc function, so we would know if the algorithm was working properly based on the output. We developed xcorrfun.m, a function that takes a segment from each of the two signals and cross-correlates them. The function breaks the two signals into segments (windows) of different sizes, one larger than the other. The smaller of the two windows scans along the larger and cross-correlation matches up the data. The function then computes the amplitude difference of the two signals and outputs that number as the result. We found that up-sampling was very useful in the cross-correlation process. Next, we developed For1.m, a script that calls our xcorr function and plots the results. This script is where we obtained our displacement curve. The For1.m script allowed us to have variable parameters, for the window sizes and the upsampling rate. Having these adjustable parameters lead to a process of trial and error that assisted in reducing the error in our displacement image. After we were satisfied with our results for the displacement curve, we decided to apply our cross-correlation function to more complicated data. We used the Forearm Reduced 4980.mat file to test out function. Before we began to run the data on our function, we used group four s movie script to find frames that seemed to have the least amount of lateral movement. We wanted as little lateral movement as possible because we felt it would help our function have fewer errors as it runs only in one dimension, axially. We decided that frames 24 to 28 were the best frames for what we needed. Then we selected frames 24 and 25 to use in our script. We then selected a small square from the two frames that seemed to have some parts that compressed and some that did not. Groups from last semester also chose this general area and that aided in our decision as well.

Below are frames 24 and 25. These squares are 375 by 60 in size.

Magnified image of areas of interest in frame 24 and 25 We then wrote a script called ForearmFor.m i that used two for loops to implement our cross correlation function on the two squares. Our first attempts had many errors. To combat these errors we increased the upsampling rate from 6 to 9. We increased our small window size from 36 to 60 and we increased our maxlags to three times the sampling rate. These changes decreased our errors and produced a reasonable displacement image. We feel that it was a reasonable displacement image, despite the fact there were still errors, because it had linear increase in displacement as the compression occurred. After we decided that we were satisfied with our displacement image script, we moved on to work on the strain image. Obtaining the strain image was our main goal. All the work up to this point was the basis for the main part of the project. Before we attempted to get the strain image from the data files, we created test data to make sure we had our code working correctly. We made a simple program that loads and plots a sine wave. We used a sine wave because we knew that differentiating the sine function would produce a cosine function. Knowing this, we could judge how well the code worked based on the output. After we had the sine wave, we used the diff function to obtain the cosine wave. We then went one step farther and added random noise to the test data. We added the noise to simulate a more realistic situation because mostly like any practical application would not have perfectly smooth data. The noise presented a problem because when we applied the diff function to the noisy sine wave, it did not produce a clean cosine wave. We tried two different approaches to solve this problem.

The first was using the polyfit function. This function fits a smooth line to the data. Applying this function to our noisy sine wave produced a good result, but in the end, we opted not to use this method. Although this method gave good results, we concluded that it might be problematic on complicated data. The next approach we tried was to average the noisy sine wave and then use the diff function. We used an averaging function that we found in the MatLab help section. The function takes a single point, creates a window around it, and then averages all the points within the window. Then the window slides to a new point and does the same process. This continually happens until the end of the data. The averaging function essentially smoothes out the curve, eliminating any large spikes. This is the method we used to help generate a smoother displacement image, essentially eliminating noise. We then created a function, Strainpic.m, to generate the actual strain images from the data files. The function takes the displacement image as the input and applies the averaging function on it. Then runs the diff function on the smooth, averaged displacement and outputs the strain image. This is the function we used to generate our final results.

Results Preliminary Results: Displacement Curve for simulation data from our For1.m ii script The ideal displacement curve should look like a smooth sinc function. Our curve has the general outline of the sinc function, but has undesirable blips. We determined that the blips were acceptable for us to continue with our method.

Displacement image for ForearmFor.m ii script using the forearm data. We are satisfied with this displacement image. Although it may look a little crude, we feel it was a good result. A good displacement image will have a linearly increasing displacement as it moves down the data due to the nature of compression from the top. As you can see our picture does have this displacement characteristic so we felt our method was working.

Final Results: Below are results from Tofu1 phantom created by Dr. Trobaugh. This phantom has softer tofu inside of the firmer tofu. Tofu1: Displacement image (created with TofuFor.m Frames 40 and 50 Size 100:1100 and 1:256) This is a good displacement image. Again we have a linearly increasing displacement from top to bottom. The very top we expect some errors due to the ultrasound wand. The specs are errors from the cross-correlation function and are acceptable for our purposes.

Tofu1: Strain image (created with Strain.m) This is a good result. There is a clear area where the tofu changes density. We would expect the softer tissue inside the circle to compress more and the color inside the tofu is about.4 whereas the outside, which we would expect to have less compression, is.1 to.2. The red and orange on the top left of the cylinder might be an air bubble in the tofu 1 data. The area at the top is a result of our averaging function, the area is the same length as our averaging window, up until that point the averaging function is using a lot of zeros to average each point. Below are results from Tofu1 phantom created by Dr. Trobaugh. This phantom has a firmer tofu cylinder inside of the softer tofu.

Tofu2: Displacement image (created with TofuFor.m using Frames 40 and 50 Size 100:1200 and 1:256) Once again this displacement image is giving good results. There is a linearly increasing displacement which is disrupted slightly by the firmer tofu. There are still errors in this image but they are manageable. We have a larger amount of errors, which show up as red dots under the cylinder of tofu in this image. There are more errors in this region than any other. We think our cross-correlation function struggled with the displacement in this area due to the firmer tofu causing the displacement to change more drastically in this area.

Tofu2: Strain image (created with Strain.m) This is the best result we obtained. We would expect from the phantom composition that the cylinder would have less compression and the surrounding tofu to have more compression. Using the colorbar, the cylinder of firmer tofu has a strain of very close to 0 and the softer tofu has a strain of.2. The errors from the displacement picture transferred over to the strain image but it does not seem to affect the results very much.

Conclusion We believe this project was a success. Based on the results we feel that we have successfully created a software program that is capable of taking ultrasound images and outputting an accurate strain image. We feel this way because our Tofu2 results closely resemble the results from the Righetti paper, which used an almost identical phantom. It is clear from our strain images that the elasticity is different in the two sections of tofu, just as it is in the published paper. Our images may not be as clear as those published, that is due to the errors produced in our code, which are a result of our limited coding ability. Overall, we feel our results are good enough to demonstrate that we have a clear understanding of the problem and have engineered an adequate solution. Recommendations Based on our project so far, we believe we have a solid foundation for future work. There are things that could be done to improve the function of our algorithm and the quality of the results. The first step for improvement would be to refine the code. The number of errors would need to be reduced. This could be addressed by adding spike prevention which other groups have successfully done. This would eliminate the visible blips from our images and provide clearer results. Two-dimensional tracking should also eventually be added. This addition could fully compensate for any lateral movement which our current code has great difficulty handling. Another basic area for improvement would be to make the algorithm run faster so it could work in a real-life situation. Our code takes a long time to run on large pieces of data, this would prevent real-time strain image production. Our algorithm is comprised of very basic coding techniques and more advanced code would most likely help speed up the process.

MatLab Scripts and Functions Xcorrfun.m %% George Michaels & Mary Watts -- Senior Design %% takes two signals and xcorr's them, plots the xcorr and also plots the signals against each %% other. function [shift] = XcorrFun(y1,y2,samplerate) %% Cross-correlation of y1 and y2 maxlags = 6*samplerate; [c,lags] = xcorr(y1,y2,maxlags); %% Getting Max location of cross-correlation [Y, I] = max(c); L = lags(i); %% gave us displacement of the lags max %figure(1); %clf %hold on %%Temp comment %%plot(lags, c) %% plotting cross-correlation vs. lags %%Temp Comment shift = L; figure(1) clf hold on %%plot signal one plot(y1) %%plot signal two plot([1:length(y2)] + L, y2, 'r') title ('Cross-Correlation Match-up')

TofuFor.m %% Mary Watts & George Michaels %% For loop code takes two signals and using xcorr function to get a %% displacement image. %% Data Input load tfu2.mat y1 = b_data040; y2 = b_data050; %% load appropriate data into workspace %% Enter first frame file name %% Enter second frame file name %% Selecting portion of data to cross-correlate rowindex = 100:1200; %% This is the vertical range can be changed to zoom in on areas of interest columnindex = 1:256; %% This is the horizontal range can be changed to zoom in on areas of interest shift = [1:1100,1:1100]; %% This creates a shift matrix to store the final portion in, the size is at least the size of the data. %% Loop to breakdown image matrix to a vector for upsampling and cross-correlating for x = columnindex; y1vector = y1(rowindex, x); y2vector = y2(rowindex, x); %% Selects out a vertical vector of data %% upsampling samplerate = 9; %% Sample rate can be adjusted to get best results, we found 5-10 a good range. y1up = resample(y1vector,samplerate,1); y2up = resample(y2vector,samplerate,1); [row, column] = size(y1up); %% getting size of data %% Window size parameters size1 = 30; %% These can be adjusted as needed. size2 = 50; diffofsize = size2 - size1; for i = 1+size2*samplerate:2*samplerate:row-size2*samplerate central point to move around %%starting i as a Start1 = i-size1*samplerate; Stop1 = i+size1*samplerate; %%small window start %%small window end

Start2 = i-size2*samplerate; %%big window start Stop2 = i+size2*samplerate; %%big window end y1shift = [zeros(diffofsize*samplerate,1); y1up(start1:stop1,1)]; %% Padding zeros to small window to make them start at %% beginning point of big window shift(i, x) = XcorrFun(y1shift, y2up(start2:stop2), samplerate); end figure(2) plot(shift(1+size2*samplerate:2*samplerate:row-size2*samplerate, x)); %% This function allows us to watch the function and see how it is working, %% will help gauge if maxlags is set to correct amount. drawnow end [row2, column2] = size(shift); shiftcut = shift(1+size2*samplerate:2*samplerate:row-size2*samplerate, columnindex); is the final displacement matrix. %%This figure(3) imagesc([0 4], [0 4],shiftcut); figure(gcf) %% Display displacement image colorbar caxis([15 40]) %% Colorbar settings might need adjustment for different data title ('Displacement Picture', 'FontSize', 12) xlabel('cm','fontsize',12) ylabel('cm','fontsize',12) axis equal

StrainPic.m %% Mary Watts and George Michaels %% JEE 4980 Spring Semester 2008 %% Strain Image %% This script takes the output of the TofuFor.m file, shiftcut and creates a strain image. windowsize = 25; %% Set size of window to average around average = filter(ones(1,windowsize)/windowsize,1,shiftcut); %% Averaging output from TofuFor.m DiffFit = diff(average); %% Take difference of averaged data clf figure(1) imagesc([0 4], [0 4],average); %% Display averaged displacement image title ('Tofu2 Phantom Averaged Displacement Image') xlabel('cm','fontsize',12) ylabel('cm','fontsize',12) axis equal clf figure(2) imagesc([0 4], [0 4],DiffFit); figure(gcf) colorbar caxis([0 1]) title ('Tofu2 Phantom Strain Image') xlabel('cm','fontsize',12) ylabel('cm','fontsize',12) axis equal %% Display strain image

References [A1] Revolutionary Elasticity Imaging. 2002-2008. Siemens. 27 Feb. 2008 <http://medical.siemens.com> AAPM/RSNA Physics Tutorial for Residents: Topics in US. Timothy J. Hall, PhD. RadioGraphics 2003. The feasibility of estimating and imaging the mechanical behavior of poroelastic materials using axial strain elastgraphy. Righetti, Rafaella, Mariapaola Righetti, Jonathan Ophir and Thomas A Krouskop, Physics in Medicine and Biology 15 May 2007 Group 1 Final Project Groups 2 Final Project Group 3 Final Project Group 4 Final Project http://classes.engineering.wustl.edu/jee4980/