Spine Tumor Detection Using MRI
Md. Abdullah Al Mahmud*, A. H. M. Zadidul Karim, Farhana Akter Mou, Shaikh Rashedur Rahman
Department of Electrical and Electronic Engineering, University of Asia Pacific, Dhaka, Bangladesh
To cite this article:
Md. Abdullah Al Mahmud, A. H. M. Zadidul Karim, Farhana Akter Mou, Shaikh Rashedur Rahman. Spine Tumor Detection Using MRI. International Journal of Biomedical Materials Research. Vol. 4, No. 3, 2016, pp. 35-42. doi: 10.11648/j.ijbmr.20160403.15
Received: October 27, 2016; Accepted: November 9, 2016; Published: December 12, 2016
Abstract: Spine tumor, a severe disease, has affected and destroyed many lives. This disease has been the center of attraction of thousands of researchers for many decades, around the world. Researchers have combined their knowledge and efforts from many areas ranging from medical to mathematical sciences, to better understand the disease and to find more effective treatments. The key objective of this paper is to form a methodology for detection and extraction of spine tumor from a patient’s MRI. This method incorporates with some noise removal functions, segmentation and morphological operations which are the basic needs of image processing. Proposed methodology will detect tumor and finally the fractional area of spine tumor will be calculated. All of this processing will be done by MATLAB software.
Keywords: Spine Tumor, MRI, MATLAB, Binary Image
In human body there a lot of diseases. Spine diseases are common in human body. It comes in different forms. Infections, Low back pain, Sciatica, Radiculopathy, Lumbar disk disease, Cervical disk rupture, Spinal stenosis, Degenerative disk disease, Arthritis of the spine are the major categories of spine diseases [1-2].
Spine Tumour: There are mainly two types of spine tumor. Those that start in the spine (primary) is benign tumor and those that spread in the body (malignant) is called cancer. Primary spine tumors, such as Osteogeric Sarcoma, happen less often, and when they do they are mostly malignant (cancerous). A malignant tumor is a mass or clump of cancer cells that keeps growing; it doesn't do anything except feed off the body so it can grow [3-4].
MRI: An MRI (or magnetic resonance imaging) scan is a radiology technique that uses magnetism, radio waves, and a computer to produce images of body structures. The MRI scanner is a tube surrounded by a giant circular magnet. The patient is placed on a moveable bed that is inserted into the magnet. The magnet creates a strong magnetic field that aligns the protons of hydrogen atoms, which are then exposed to a beam of radio waves. This spins the various protons of the body, and they produce a faint signal that is detected by the receiver portion of the MRI scanner. The receiver information is processed by a computer, and an image is produced [5-6].
The image and resolution produced by MRI is quite detailed and can detect tiny changes of structures within the body. For some procedures, contrast agents, such as gadolinium, are used to increase the accuracy of the images .
In this paper a fully automatic method is designed to detect spine tumor . Proposed system will consider MR Image as an input. Then it will be processed using image processing tool of MATLAB. If any type of tumor is available then it will be automatically detected and finally the percentage of tumor affected area will also be calculated. Again if any types of tumor aren’t available system will tell the users that "there is no tumor". Some performance parameter like image histogram and image profile is used for normal and abnormal image so that anybody can easily identify the normality or abnormality of the input image.
2. Methodology of Tumor Detection
In this section a methodology for detecting tumor has been developed.
(1). Taking an MRI image as an input.
(2). Convert it to gray scale image and obtain the maximum intensity.
(3). Adjusting the MRI image using the max intensity level in order to avoid excess data.
(4). Converting MRI image to binary image.
(5). Calculating the area of the spine cross section.
(6). Detecting the boundary of spine cross section after converting another adjusted image to binary image.
(7). Eliminating other portion of spine and detecting the tumor affected region.
(8). Calculating the area of tumor.
2.1. Taking an MRI Image as an Input
To read an image for processing the ‘imread’ command of MATLAB have been used. The example reads one of the sample images ‘t.bmp’ and stores it in an array named I .
I = imread ('t.bmp');
If the file (sample image) is not in the current folder, then the full path with the filename is specified. The text string ‘.bmp’ specifies the format of the file by its standard file extension. For example, '.gif ' for Graphics Interchange Format files can be specified. To see a list of supported formats, with their file extensions, the ‘informate’ function can be used. If ‘imread’ cannot find a file named 'filename’, it looks for a file named 'filename. fmt'.
As it is already mentioned that the return value I is an array containing the image data for the case of aforementioned example. If the file contains a grayscale image, I is an M-by-N array. If the file contains a truecolor image, I is an M-by-N-by-3 dimensional array. For TIFF files containing color images that use the CMYK color space, I is an M-by-N-by-4 dimensional array. The class of A depends on the bits-per-sample of the image data, rounded to the next byte boundary. For example, ‘imread’ returns 24-bit color data as an array of unit 8 data because the sample size for each color component is 8 bits.
2.2. Conversion to Gray Scale Image
MRI images are magnetic resonance images which can be acquired on computer when a patient is scanned by MRI machine. MRI images of a part of the body which is under test or desired can be acquired. Generally when we see MRI images on computer they look like black and white images. In analog practice, gray scale imaging is sometimes called "black and white," but technically this is a misnomer. In true black and white, also known as halftone, the only possible shades are pure black and pure white. The illusion of gray shading in a halftone image is obtained by rendering the image as a grid of black dots on a white background (or vice-versa), with the sizes of the individual dots determining the apparent lightness of the gray in their vicinity. The halftone technique is commonly used for printing photographs in newspapers and as MRI image is taken on computer then in the case of transmitted light (for example, the image on a computer display), the brightness levels of the red (R), green (G) and blue (B) components are each represented as a number from decimal 0 to 255 or binary 00000000 to 11111111. For every pixel in a red-green-blue (RGB) grayscale image is R = G = B. The lightness of the gray is directly proportional to the number representing the brightness levels of the primary colors. Black is represented by R = G = B = 0 or R = G = B = 00000000 and white is represented by R = G = B = 255 or R = G = B = 11111111. Because there are 8 bits in the binary representation of the gray level, this imaging method is called 8-bit grayscale . MATLAB command for conversion of grayscale is
J = rgb2gray (I);
It converts the true color image RGB to the grayscale intensity image. Gray scaling is done by eliminating the hue and saturation information while retaining the luminance.
2.3. Adjusting MRI Image
In order to adjust (eliminate excess data) the gray scaled image we have used the built in function ‘imadjust’.
K1 = imadjust (J, [0.55 0.8], [ ]);
Which actually adjust the intensity values in grayscale image J to new values in k1 such that 1% of data is saturated at low and high intensities of J. This increases the contrast of the output image k1.
k1 = imadjust (J, [ ow_in; high_in], [ ow_out; high_out]);
It also maps the Values in I to new values in J such that values between low_in and high_in map to values between low_out and high_out. Values below low_in and above high_in are clipped. That is values below low_in map to low_out and those above high_in map to high_out. We can use an empty matrix for [low_in high_in] or for [low_out high_out] to specify the default of ].
2.4. Conversion to Binary Image
K2 = imadjust (J, [0.1 0.5], ]);
BW_K2 = im2bw (K2, level);
The adjusted grayscale image K2 is converted to a binary image. The output image BW replaces all pixels in the input image with luminance greater than level with the value 1 (white) and replaces all other pixels with the value 0 (black). The range [0,1], regardless of the class of the input image can be specified. The function ‘graythresh’ can be used to compute the level argument automatically. Level = .5 for the function ‘im2bw’is specified. Using ‘imfill’ command for filtering image k2. The ‘imfill’ command displays the binary image BW on the screen and lets us define the region to fill by selecting points interactively by using the mouse. To use this interactive syntax, BW must be a 2D image. Backspace or Delete keys are pressed to remove the previously selected point. A shift click, right click or double click selects a final point and starts the fill operation. By Pressing Return finishes the selection without adding a point.
2.5. Calculation of Area of Spine Cross Section
‘regionprops’ command in MATLAB is used that measures a set of properties for each connected component (object) in the binary image, BW.
stats = regionprops (BWfill, 'Area');
The image BW is a logical array. It can have any dimension. For loop in MATLAB will calculate the total volume of spine. Using ‘bwperim’ command that returns a binary image contains only the perimeter pixels of objects in the input image. A pixel is part of the perimeter if it is non zero and it is connected to at least one zero valued pixel. The default connectivity is 4 for two dimensions, 6 for three dimensions and for higher dimensions.
spine_area = 0;
for i = 1: kk
spine_area = spine_area + stats (i). Area;
For loop will calculate the total spine area cross section. It will show the boundary of the spine.
2.6. Detecting the Boundary of Spine Cross Section
BW_K1 = im2bw (K1, level);
Again leveling the adjusting image K1, It is converted into binary image. Using ‘ceil’ command in MATLAB it rounds the elements of new adjusted binary image to the nearest integers greater than or equal to ‘Bw_k1’. For complex, ‘Bw_k1’ the imaginary and real parts are rounded independently. For morphologically opening binary image we use ‘bwareaopen’ command.
BW2 = bwareaopen (BW_K1, tuning+5);
It removes from a binary image all connected components (objects) that have fewer than tuning+5 pixels, producing another binary image, BW2. The default connectivity is 8 for two dimensions, 26 for three dimensions and conndef (ndims(BW), 'maximal') for higher dimensions.
2.7. Elimination of Boundary and Tumor Detection
To eliminate the boundary two processed image is subtracted.
sub1 = BW2 – BWsdil;
First one is when boundary area is open. Second one is when image is processed by ‘Imdilate’ command.
BWsdil = imdilate (BWoutline, SE);
It dilates the grayscale, binary or packed binary image ‘BW outline’, returning the dilated image ‘BWsdil’. The argument ‘SE’ is a structuring element object or array of structuring element objects, returned by the ‘strel’ function. If ‘BW outline’ is logical and the structuring element is flat, ‘imdilate’ performs binary dilation. Otherwise, it performs grayscale dilation. If SE is an array of structuring element objects, ‘imdilate’ performs multiple dilations of the input image, using each structuring element in SE in succession.
BWoutline = bwperim (sub2);
By using ‘BWperim’ command perimeter of objects in binary image has been detected. The image is processed to round toward positive infinity by ‘ceil’ command in MATLAB. By using ‘strel’ command image is converted to morphological structure. It creates a structuring element SE, of the type specified by shape. Dilate the image by using ‘imdilate’ command. It dilates the grayscale, binary or packed binary image returning the dilated image, structuring element object or array of structuring element objects, returned by the ‘strel’ function. Finally the tumor area will be detected.
2.8. Calculating the Tumor Area
In this part calculation for the volume of tumor affected area is focused. By using ‘max’ command the largest elements along different dimensions of an array is calculated to detect tumor. Then a loop is used for calculating the area of tumor cross-section.
For i = 1: kk
tumor_area = tumor_area + stats (i). Area;
‘For’ command execute block of code specified number of times and ‘end’ command terminate block of code or indicate last array index.
3. Results and Discussion
Here two samples of MRI image is used one is tumor affected and another one is normal.
4. Conclusion and Future Work
In this paper an algorithm has been designed to detect spine tumor and some performance parameter like image histogram and image profile has been used. Various filtering method have been applied to detect spine tumor clearly. Finally spine tumor has been detected and tumor area has also calculated. Observing the final outcome of this paper anybody can easily identify the percentage of tumor affected area in a human spine. In future some extra features will be added so that it can tell us which disc of a spine is affected by tumor, what types of tumor is detected in a spine?