-
Notifications
You must be signed in to change notification settings - Fork 0
/
fixEdgesBetweenMergedRegions.m
42 lines (34 loc) · 1.43 KB
/
fixEdgesBetweenMergedRegions.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
34
35
36
37
38
39
40
41
42
function [newWS, invisibleEdgeLIDs] = fixEdgesBetweenMergedRegions(...
newWS,cell_mergedWsIDs_original,wsOld,edges2pixels,expandedWsIDs)
% Inputs:
% newWS -
% mergedWsIDs_original - cell array. each array element is a vector with
% the old wsRegionIDs
% wsOld -
% edges2pixels - first column contains the edgeIDs
% expandedWsIDs - the regions that spread to other regions. The order
% directly corresponds to the merged regions given in
% cell_mergedWsIDs_original
% Outputs -
% find out whether there are edges separating merged regions. If so, remove
% them and assign them the mergedRegionID
invisibleEdgeLIDs = [];
edgepixels = edges2pixels;
edgepixels(:,1) = [];
for i = 1:numel(cell_mergedWsIDs_original)
mergedRegionIDs_orig = cell_mergedWsIDs_original{i};
edgeLIDssCommonToMergedRegions = getCommonEdgesForRegions(...
mergedRegionIDs_orig,wsOld,edges2pixels);
% fix the edges if any found
numCommonEdges = sum(edgeLIDssCommonToMergedRegions>0);
if(numCommonEdges>0)
invisibleEdgeLIDs = [invisibleEdgeLIDs; edgeLIDssCommonToMergedRegions];
% fix newWS
% get edge pixels
edgePixelsToChange = edgepixels(edgeLIDssCommonToMergedRegions,:);
edgePixelsToChange = edgePixelsToChange(edgePixelsToChange>0);
% change ws id
wsIDToAssign = expandedWsIDs(i);
newWS(edgePixelsToChange) = wsIDToAssign;
end
end