Diff of /Final_Brain_Tumor.m [000000] .. [0743ee]

Switch to side-by-side view

--- a
+++ b/Final_Brain_Tumor.m
@@ -0,0 +1,152 @@
+clc
+close all
+clear all
+
+%% Input
+[I,path]=uigetfile('*.jpg','select a input image');
+str=strcat(path,I);
+s=imread(str);
+
+figure;
+imshow(s);
+title('Input image','FontSize',20);
+
+%% Filter
+num_iter = 10;
+    delta_t = 1/7;
+    kappa = 15;
+    option = 2;
+    disp('Preprocessing image please wait . . .');
+    inp = anisodiff(s,num_iter,delta_t,kappa,option);
+    inp = uint8(inp);
+    
+inp=imresize(inp,[256,256]);
+if size(inp,3)>1
+    inp=rgb2gray(inp);
+end
+figure;
+imshow(inp);
+title('Filtered image','FontSize',20);
+
+%% thresholding
+sout=imresize(inp,[256,256]);
+t0=mean(s(:));
+th=t0+((max(inp(:))+min(inp(:)))./2);
+for i=1:1:size(inp,1)
+    for j=1:1:size(inp,2)
+        if inp(i,j)>th
+            sout(i,j)=1;
+        else
+            sout(i,j)=0;
+        end
+    end
+end
+
+%% Morphological Operation
+
+label=bwlabel(sout);
+stats=regionprops(logical(sout),'Solidity','Area','BoundingBox');
+density=[stats.Solidity];
+area=[stats.Area];
+high_dense_area=density>0.7;
+max_area=max(area(high_dense_area));
+tumor_label=find(area==max_area);
+tumor=ismember(label,tumor_label);
+
+if max_area>200
+   figure;
+   imshow(tumor)
+   title('tumor alone','FontSize',20);
+else
+    h = msgbox('No Tumor!!','status');
+    %disp('no tumor');
+    return;
+end
+            
+%% Bounding box
+
+box = stats(tumor_label);
+wantedBox = box.BoundingBox;
+figure
+imshow(inp);
+title('Bounding Box','FontSize',20);
+hold on;
+rectangle('Position',wantedBox,'EdgeColor','y');
+hold off;
+
+
+%% Getting Tumor Outline - image filling, eroding, subtracting
+% erosion the walls by a few pixels
+
+dilationAmount = 5;
+rad = floor(dilationAmount);
+[r,c] = size(tumor);
+filledImage = imfill(tumor, 'holes');
+
+for i=1:r
+   for j=1:c
+       x1=i-rad;
+       x2=i+rad;
+       y1=j-rad;
+       y2=j+rad;
+       if x1<1
+           x1=1;
+       end
+       if x2>r
+           x2=r;
+       end
+       if y1<1
+           y1=1;
+       end
+       if y2>c
+           y2=c;
+       end
+       erodedImage(i,j) = min(min(filledImage(x1:x2,y1:y2)));
+   end
+end
+figure
+imshow(erodedImage);
+title('eroded image','FontSize',20);
+
+%% subtracting eroded image from original BW image
+
+tumorOutline=tumor;
+tumorOutline(erodedImage)=0;
+
+figure;  
+imshow(tumorOutline);
+title('Tumor Outline','FontSize',20);
+
+%% Inserting the outline in filtered image in red color
+
+rgb = inp(:,:,[1 1 1]);
+red = rgb(:,:,1);
+red(tumorOutline)=255;
+green = rgb(:,:,2);
+green(tumorOutline)=0;
+blue = rgb(:,:,3);
+blue(tumorOutline)=0;
+
+tumorOutlineInserted(:,:,1) = red; 
+tumorOutlineInserted(:,:,2) = green; 
+tumorOutlineInserted(:,:,3) = blue; 
+
+
+figure
+imshow(tumorOutlineInserted);
+title('Detected Tumer','FontSize',20);
+
+%% Display Together
+
+figure
+subplot(231);imshow(s);title('Input image','FontSize',20);
+subplot(232);imshow(inp);title('Filtered image','FontSize',20);
+
+subplot(233);imshow(inp);title('Bounding Box','FontSize',20);
+hold on;rectangle('Position',wantedBox,'EdgeColor','y');hold off;
+
+subplot(234);imshow(tumor);title('tumor alone','FontSize',20);
+subplot(235);imshow(tumorOutline);title('Tumor Outline','FontSize',20);
+subplot(236);imshow(tumorOutlineInserted);title('Detected Tumor','FontSize',20);
+
+