CT Image Processing
Skills: MATLAB, Image projection
Skills: MATLAB, Image projection
Computed Tomography (CT) scan is a noninvasive medical imaging technique that uses a combination of radiation and computer technology. An X-ray source is sent through the subject with a detector on the opposite side of the subject receiving the amount of radiation that has passed through. The X-ray and detector pair rotate completely around the subject to collect information from all angles and that information is processed into an image.
The Original Image
For this study, I wanted to replicate how CTs process images. Because CT scans can produce detailed images of bone, organs, and blood, I wanted to replicate the different intensities these structures would have in an image. For simplification, the original image I used consisted of three squares with varying intensities, which was stored as a matrix of values in MATLAB.
The image is then processed into a sinogram, the raw data the CT receives, and then reverted back into the original image by combining backprojections spanning 180º.
Sinogram from Radon Transform
The MATLAB radon function processes an image and conducts a radon transform at a range of given angles or the default range of 0-180. The radon transform takes the integral across the images at each angle within the range and graphs the projection of the image intensity. The sinogram represents the raw data usually collected in bioimaging and the original image can then be derived from that data.
The MATLAB iradon function processes a radon transform and reconstructs the original image. When the data from CT scans are collected, the iradon function can be used to produce an image of what was being captured.
By rotating the matrix of values, the integral from top to bottom can be taken in order to get backprojection at specific values. Combining these backprojections, the original image can be put together.
The backprojections were combined over 180º to reproduce the original image.
CT scans without contrast produce blurry images, similar to the first image with no filter which has a 1/r blur around the squares. Applying filters, or contrast with CT, can result in sharper images. In MATLAB, I used the default Ram-Lak filter which uses nearest-neighbor interpolation to reduce noise. The Hann filter resulted in the clearest image, using linear interpolation, matching the original image.
Check out my MATLAB Image Filtering Project!