去除血管

时间:2016-04-14 04:45:49

标签: matlab image-processing

我想在此图片中移除血管,请建议任何方法,并想要检测微动脉瘤(图像中的红色小点),下面是我的图像增强后:

enter image description here

2 个答案:

答案 0 :(得分:1)

你可以这样做:

A = imread ('tFKeD.jpg');

C=bwlabel(A);
IM2 = imcomplement(C); % // invert the image so that your objects are 1
se = strel('diamond',3); % // Create a morphological object
BW2 = imdilate(IM2,se);  
L=bwlabel(BW2); % // Label your objects

E = regionprops(L,'area'); % // Get the respective area
Area = cell2mat(struct2cell(E)); % // Convert to a matrix
[~,largestObject] = max(Area); % // Find the one with the largest area
vessel = L==largestObject; 
imshow(vessel)

enter image description here

答案 1 :(得分:0)

我建议采用以下方法:

  1. 对输入图像设置阈值并将所有值保持在阈值以下。 这将产生一个面罩,其中血管和微动脉瘤标记为白色,其余部分用黑色标记。 可以通过使用图像直方图来确定阈值。 从观察图像看,阈值似乎应该很低(因为血管和微动脉瘤相对较暗)。

  2. 使用bwconncomp计算图像中的连通分量。

  3. 从前一阶段对面罩进行噪音清洁。 这可以通过使用形态学操作(例如imclose)或将连接的组件归零来完成 太小,不能归类为微动脉瘤。

  4. 最大的连接组件应代表血管 - 将其从面罩上移除。 该阶段的输出将是期望的结果。