forked from petteriTeikari/twoPhotonVessels
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsegment_createRegionFromVessel.m
33 lines (25 loc) · 1.21 KB
/
segment_createRegionFromVessel.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
function regionInit = segment_createRegionFromVessel(vessel)
plotON = false;
regionMask = zeros(size(vessel));
ind1 = floor(0.05*size(vessel,1)); ind2 = ceil(0.95*size(vessel,1));
regionMask(ind1:ind2, ind1:ind2, :) = 1;
regionInit = zeros(size(vessel));
regionInit2 = regionInit; regionInit3 = regionInit;
regionInit4 = regionInit; regionInit5 = regionInit;
region = regionInit;
for i = 1 : size(vessel,3)
regionInit(:,:,i) = im2bw(abs(vessel(:,:,i)),0.02);
myfilter = fspecial('gaussian',[3 3], 2);
regionInit2(:,:,i) = imfilter(double(regionInit(:,:,i)), myfilter, 'replicate');
se = strel('disk',2);
regionInit3(:,:,i) = imclose(regionInit2(:,:,i) ,se); % Perform a morphological close operation on the image.
regionInit4(:,:,i) = imfill(regionInit3(:,:,i));
% get rid of the borders
regionInit5(:,:,i) = regionMask(:,:,i) .* regionInit4(:,:,i);
region(:,:,i) = im2bw(regionInit5(:,:,i), 0.9);
if plotON
subplot(1,3,1); imshow(abs(vessel(:,:,i)), []);
subplot(1,3,2); imshow(regionInit3(:,:,i), []);
subplot(1,3,3); imshow(region(:,:,i), []);
end
end