答案 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)
答案 1 :(得分:0)
我建议采用以下方法:
对输入图像设置阈值并将所有值保持在阈值以下。 这将产生一个面罩,其中血管和微动脉瘤标记为白色,其余部分用黑色标记。 可以通过使用图像直方图来确定阈值。 从观察图像看,阈值似乎应该很低(因为血管和微动脉瘤相对较暗)。
使用bwconncomp计算图像中的连通分量。
从前一阶段对面罩进行噪音清洁。 这可以通过使用形态学操作(例如imclose)或将连接的组件归零来完成 太小,不能归类为微动脉瘤。
最大的连接组件应代表血管 - 将其从面罩上移除。 该阶段的输出将是期望的结果。