Matlab仅在图像中获取血管

时间:2014-02-02 23:17:59

标签: image matlab image-processing

我试图通过使用图像处理工具箱中可用的功能来获得视网膜的图像(下面的图像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:

enter image description here

图片2:

enter image description here

1 个答案:

答案 0 :(得分:4)

这不是一件容易的事。您可能需要调查几篇参考文献:

  1. Retinal vessel extraction by matched filter with first-order derivative of Gaussian。 Matlab代码包含在此post

  2. An Automatic Hybrid Method for Retinal Blood Vessel Extraction。它使用形态学方法,开/关和顶帽变换。模糊聚类应用于此之后。

  3. 最常用的血管检测方法来自Frangi等人的论文Hessian-based Multiscale Vessel Enhancement Filtering。有一个Matlab实现,FrangiFilter2D,适用于2D血管图像。

  4. 我在你的情况下试过这段代码,希望你可以从这里开始......

    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)
    

    图像:

    enter image description here