|School:||The State University of New York at Geneseo|
|E-mail:||rayannel (at) reu.dimacs.rutgers.edu|
The work done at the Pre-Clinical Imaging Shared Resource at the Rutgers Cancer Institute of New Jersey is an important step between studying cancer at the cellular level and Phase 1 clinical trials, which are conducted on humans. This intermediate step involves the analysis of cancer drugs and treatments on rodents. The analysis done also helps narrow the funnel of potential cancer drugs on their way to FDA approval. CT scans use ionizing radiation in the form of x-rays to detect cancerous tissue or bone. This radiation has the ability to modify molecules of the body, making it able to both cause and treat cancer. Thus, CT technology is a double-edged sword.
The overarching goal of my project this summer is to allow my mentor to reduce the exposure time of a CT scan. There is a trade-off to reducing scan time: doing so, you lower the image quality of the output. My project is to find settings that optimize image quality while allowing for low-exposure scans. To do so, I will be modifying and/or creating new filters to process the raw images in terms of artifact reduction and edge detection. In order to determine if I have been successful, I will be using (non-standard) metrics already in place to decide if the image quality of my results is acceptable. I will also be using scans with extended scan time (which exposes the rodents to higher than average levels of radiation) as the "gold standard" with which to compare, because with longer scan time comes improved image quality. The reach goal of the project is to be able to use subpar images and still get results. These low-quality images are often generated from scans of rodents who have developed advanced-stage cancer and are thus more difficult to image. Although difficult, this one of the most important steps in a sequence of drug or treatment trials, as it is crucial to be able to analyze the progress of the cancer.
The first week I met with my mentor and learned more about the structure and goals of my project. I visited the Cancer Institute and learned about the specific work that my mentor does. After being given datasets of raw images from my mentor, I began to play around in MATLAB and see what the software could do in terms of image processing. I also worked to put together my presentation for Friday, which gave background on CT technology and outlined the general goals of my project.
Computed Tomography, often abbreviated to CT, uses special x-ray equipment to create many 2D images, which may be looked at separately or together in a compiled 3D image. Information from the object (or being) that is being scanned is collected by passing x-rays through the object, and then a detector measures attenuated, or absorbed, x-rays. The probability than an x-ray will be absorbed depends on the density of the material and the energy of the x-ray. Measurements of the absorption coefficients of the x-rays are stored in a matrix, and this produces a shadow image. A reconstruction algorithm is applied to obtain a "virtual slice," or 2D image.
Micro-CT includes the prefix "micro" because the machine used for the scans is scaled down from the size of humans to that of rodents. On average, a mouse in a CT scan is exposed to about 60-70 seconds of radiation. As noted before, this poses problems because, over longitudinal studies, the ionizing radiation exposure causes cancer in the mice. The Pre-Clinical Imaging Shared Resource takes mice through all the stages of cancer in order to study the effects of drugs and treatments.
Current CT scan analysis techniques use software that includes built-in filters. Different filters accomplish different goals. Low-pass filters "blur" the image to get rid of noise, or artifacts. High-pass filters are used for edge detection (for example, distinguishing between lung tissue and bone). My mentor currently adjusts settings manually to isolate specific tissue with the best possible image quality. For my project, I will first be focusing on improving the analysis of lung tissue, but if this goal is reached I will look at bone as well.
I spent a good part of a day this week reading a paper by Mary L Bouxsein et al., which described guidelines for Micro-CT analysis of bone microstructure. The paper also touches upon some important introductory topics to CT scan analysis.
I used MATLAB to process multiple datasets of scans of varying exposure time (and thus, varying image quality) to examine the effect of the amount of blurring added by a filter on the ability to reduce noise in the image while still preserving edges. I also filtered different datasets that had subpar image quality because the mouse being scanned had developed advanced-stage lung cancer. During this process, I was able to get a sense for when filters can and cannot allow a researcher to extract information from poor quality images.
My mentor has given me more introduction into edge detection and segmentation, and so my goal for the weekend is to learn more about and play around with edge detection filters and binary filters (used for segmentation). He also gave me a paper to read that includes information about radiation dose assessment in micro-CT scans.
There were definitely a lot of hitches and glitches this week as I started to move past a basic exploration of the image processing abilities of MATLAB and tried to tailor certain functions to work with the datasets of CT scans. There were long stretches of fighting with MATLAB to make it do what I wanted, sometimes followed by success and sometimes followed by brainstorming other avenues by which I could achieve the same goal.
Early this week I played with a binary function that can be used to segment out certain types of tissue based on image intensity thresholds. I also explored functions that allow one to specify a polygon region of interest and then create a binary mask based on the polygon. I plan to spend more time looking into the possibility of using this strategy to create a mask and then segment out a section of an image. This would allow one to visualize only the mouse (not the components of the CT scan machine that are visible in each image) or certain areas of interest in the mouse (the lungs, in particular).
I started exploring some built-in edge detection functions in MATLAB, their various parameters, and the effect on the images. Different methods can tend to pick out more or less edges in general, and different thresholds allow one to decide just what intensity drop constitutes an edge. I still need to learn more about which edges are most important for the CT scan analysis my mentor does before I deem a certain edge detection method and set of parameter values my default.
One day this week my mentor and I fought with MATLAB for about three hours, only to give up in defeat for the day. On the bright side, the app we were trying to get to work ended up working perfectly on a desktop computer at my mentor's office, but unfortunately continues to resist any attempts to make it work on my laptop. I'm very glad it works at least in some respect, because the app allows one to take a dataset of 2D virtual slices and view them together as a 3D representation of the section of the animal being imaged. After this issue was half-way solved, my mentor and I turned to the problem of deciding what range of values would work best to view the images in this MATLAB app. The datasets of images have values of a specific range, there is a default range of intensity values that MATLAB prefers, and then there is something called the Hounsfield scale that my mentor is used to working with. A goal I worked towards was being able to take information in the header of an image file and rescale the pixel intensity values to the scale my mentor works with; alas, there were complications. This remains something I plan to look into soon.
I have now begun looking into functions that improve the contrast of images. Also, I am exploring a particular filter that is known to be useful when analyzing images containing soft tissue. My goal for over the weekend is to optimize the paramater settings on my contrast function, run this (and possibly a filter added on top) to all the datasets of images I have, and be able to look at them in the 3D viewer app that still doesn't play well with my laptop. Another goal that might take more time is to create or modify an existing app so that we can input folders of images, play with the contrast, add filters, do edge detection, etc. while working with the intensity scales that my mentor is used to.
On Sunday I did some reading on radiation dosage calculations. Dosage during micro-CT scans has been investigated by using the Monte Carlo method, which is something I may end up looking into more if my research progresses enough in its current direction. Monte Carlo is a broad term that Wolfram Math World describes as "any method that solves a problem by generating suitable random numbers and observing that fraction of the numbers obeying some property or properties." If I can successfully allow my mentor to reduce the exposure time of a scan, it would be nice to look into the various ways that exist for calculating a good estimation for the amount of radiation a mouse is exposed to.
The next few days of this week were spent trying to bridge the gap between code written on my Mac and code written on a Windows machine. I was able to figure out why the 3D Viewer app didn't work on my Mac, and attempted to remedy the problem, to no avail. However, I added some code of my own to the program and was able to make some exciting progress with the output on my mentor's PC. However, just when I thought things were rolling along smoothly (finally), I hit another road block and am now currently having difficulty figuring out how to segment out certain tissues (particularly, we would like to segment out the lungs) based on an intensity value range. This would be nice if it could be another user input in the 3D Viewer app, but this is proving more difficult than I originally thought. However, I have been able to look at 2D slices, segment out the lungs, and calculate the area. Goals for the weekend and in the future include a total surface area calculation of the lungs as well as user input prompts in the 3D Viewer app that would allow for a certain intensity value range to be viewed and a surface area calculation to be done of that particular range of values (usually representing a specific type of tissue).
This week I managed to write two programs in MATLAB: one to calculate the surface area of the mouse lungs for a single dataset (composed of hundreds of 2D slices) and another to calculate the volume of the lungs. I attempted to minimize background artifacts left from the imaging and non-lung tissue (mostly fat) that the program incorrectly counted as lung. Much time was spent perfecting this process and writing error checking into my code. Once the programs were complete, I began to run them on my datasets and store the results. I compared these results with the lung volume estimates from my mentor's software program. For each run of the program, I varied either the dataset being used, the standard deviation of the Gaussian filter (used to reduce the number of artifacts in the original image), and the threshold value (in Hounsfield units) by which the program determined what tissue was considered lung and what was not. I then created graphs to visualize my results: graphs of each dataset with the various thresholds along the x-axis, and graphs for each threshold value with the various datasets along the x-axis. (Recall that the datasets vary in slice number, that is, total number of images taken during the scan, and therefore have different image quality.)
I also began looking into different filters to see what effect they would have on my results. My mentor asked me to focus on filters that preserve edges and/or improve the contrast of the original image. My plan is to re-write my programs using these different filters and see how the results compare to my previous results that use a Gaussian filter.
From this point on, I focused only on my volume calculations--they were the metric by which I would measure how good of a job the various datasets did at approximating the mouse lung volume relative to a high quality control dataset (with very high exposure time lending itself to high image quality). I performed all necessary runs of my volume calculation on a second set of datasets that I obtained from my mentor that included many more datasets with a wider range of variation in number of projections and exposure per slice. Looking at my results along with my mentor, we determined whih threshold values were less useful to look at (counted too much non-lung tissue as lung tissue). My mentor and I also found a particular dataset to be wildly overestimating the lung volume in comparison to the other datasets, and believe it it most likely attributable to the lack of data present in the dataset (low exposure and number of slices).
I also found a second filter that preserves edges in images. The filter takes the image in question and uses it as a guide when performing the filter, this keeping any edges distinct. I performed a comparison (using lung volume as the metric) between my Gaussian filter and this guided filter, and surprisingly both filters were fairly consistent with one another, even across both standard deviation values I used with the Gaussian filter. This might be a good sign, and mean that the volume program is doing a decent job at estimating the lung volume regardless of the filter used. Looking ahead, I plan to do a volume comparison between these new datasets and the high quality dataset that was taken with the same scan settings for consistency. Hopefully, I will find a dataset that does a decent job estimating the lung volume relative to the high quality control, but also has lower total exposure!
Last week in the States! This week was all about wrapping the project up by obtaining results worth showing researchers (ones my mentor works for) and preparing for our final presentations. I created graphs of relative change in percentage of lung volume to the high quality control dataset over each threshold value to see if there was one or more datasets that consistently came close to the volume estimation given by the high quality control. I also looked at the total exposure time for each dataset relative to the exposure time of the normal scan settings that my mentor uses (far less than the exposure of the high quality control dataset). Thankfully, there were two datasets that gave good volume estimates relative to the high quality control across the different threshold values I looked at, and excitingly, one of these two datasets had a lower total exposure than that of the normal scan settings!
Essentially, it seems to be that there is a combination of number of projections, exposure time per slice, and type of scan (full or half) that comes very close to approximating the volume estimate given by the high quality dataset (where the exposure is more than 6 times as much) and also would allow my mentor to decrease the total exposure time spent running a scan at these settings. It would be very exciting to see these settings put into practice with success!
And now, off to Prague!