please help me for retina optic disc segmentation code
moorthysmart opened this issue · 4 comments
@moorthysmart How do you expect us to help you? You mean by some paper or algorithm?
Please help me with optic disc removal. Below is the code i tried following a paper tilted "Feature extraction and classification of retinal images for automated detection of Diabetic Retinopathy" link "https://ieeexplore.ieee.org/document/7802862/". The code is working fine, but not with all the images. By following mentioned paper I am creating meshgrid and then finding the x-y cordinates that corresponds to maximum intensity values (as optic disc has the highest intenstiy in retinal images). and then creating a circle of raius 45 around the brightest point. I used "diaretdb0 database" for testing. Out of 126 images, the result for 8 image is wrong.
retina = imread('Input_Image.png');
retinaGband = retina(:,:,2); %Green Chanel extraction
retinaGband = imresize(retinaGband,[512 512]);
mask = imread('fmask.tif'); %mask
mask = imresize(mask,size(retinaGband));
%% Histogram Equalization
heImage = adapthisteq(retinaGband,'clipLimit',0.02,'Distribution','rayleigh');
% Mask the image.
heImage = heImage .* uint8(mask);
med2 = medfilt2(heImage);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%;
[imageSizeX, imageSizeY] = size(med2);
[x, y] = meshgrid(1:imageSizeX, 1:imageSizeY); %meshgrid creation
[r, c] = find(med2 == max(med2(:))); %finding max values row and column wise
centerX = max(r); %x-cordniate with max intensity value
centerY = max(c); % y-cordinate with max intensity value
radius = 45;
circlePixels = (x - centerY).^2 ...
+ (y - centerX).^2 <= radius.^2;
circlePixels = imcomplement(circlePixels);
%% masking
mask1 = med2 .* uint8(circlePixels);
figure,imshow(mask1);