我试图通过使用图像处理工具箱中可用的功能来获得视网膜的图像(下面的图像1),以仅显示黑白血管(图像2,下图),阈值,形态运算等。我尝试了以下内容,但它没有得到我需要的结果:
% READ IMAGES
eye1 = imread('Retina1.png');
%display coloured version(original)
imshow(eye1);
% convert to grayscale
grayeye1 =rgb2gray(eye1);
% display grayscale
imshow(grayeye1);
% make darker
dgrayeye1 = imadjust(grayeye1,[0.1 0.9],[]);
imshow(a);
se = strel('disk',1);
cannyeye = edge(dgrayeye1,'canny',0.15);
figure,imshow(cannyeye);
dilate = imdilate(cannyeye,se);
figure, imshow(dilate)
图1:
图片2:
答案 0 :(得分:4)
这不是一件容易的事。您可能需要调查几篇参考文献:
Retinal vessel extraction by matched filter with first-order derivative of Gaussian。 Matlab代码包含在此post。
An Automatic Hybrid Method for Retinal Blood Vessel Extraction。它使用形态学方法,开/关和顶帽变换。模糊聚类应用于此之后。
最常用的血管检测方法来自Frangi等人的论文Hessian-based Multiscale Vessel Enhancement Filtering。有一个Matlab实现,FrangiFilter2D,适用于2D血管图像。
我在你的情况下试过这段代码,希望你可以从这里开始......
options=struct('FrangiScaleRange', [1 5], 'FrangiScaleRatio', 1, 'FrangiBetaOne', 1,...
'FrangiBetaTwo', 7.5, 'verbose',true,'BlackWhite',true);
[outIm,whatScale,Direction] = FrangiFilter2D(double(dgrayeye1), options);
imshow(outIm)
图像: