-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathFrontPostProcessing.py
More file actions
45 lines (43 loc) · 1.96 KB
/
FrontPostProcessing.py
File metadata and controls
45 lines (43 loc) · 1.96 KB
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
43
44
45
import numpy as np
from skimage import measure, morphology
# Returns filtered fronts excluding a border region
def filterFronts(image, border):
threshold = 0.45
minlen = 2
filteredImage = np.zeros_like(image)
numChannels = image.shape[-1]
assert(numChannels > 1)
for channel in range(numChannels):
thinImg = image[:,border:-border, border:-border,channel]>threshold
labeledImage = morphology.binary_dilation(thinImg, selem = np.ones((1,3,3)))
#labeledImage = morphology.skeletonize(labeledImage)
labeledImage = measure.label(labeledImage, background = 0)
labeledImage *= thinImg
numLabels = np.max(labeledImage)
for pidx in range(1,numLabels+1):
singleLabel = (labeledImage == pidx)*1
points = np.nonzero(singleLabel)
if len(points[0]) < minlen:
labeledImage[points] = 0
filteredImage[:,border:-border,border:-border,channel] = (labeledImage>0)*1
return filteredImage
def filterFrontsFreeBorder(image, northBorder, southBorder, westBorder, eastBorder):
threshold = 0.45
minlen = 2
filteredImage = np.zeros_like(image)
numChannels = image.shape[-1]
assert(numChannels > 1)
for channel in range(numChannels):
thinImg = image[:,northBorder:-southBorder, westBorder:-eastBorder,channel]>threshold
labeledImage = morphology.binary_dilation(thinImg, selem = np.ones((1,3,3)))
#labeledImage = morphology.skeletonize(labeledImage)
labeledImage = measure.label(labeledImage, background = 0)
labeledImage *= thinImg
numLabels = np.max(labeledImage)
for pidx in range(1,numLabels+1):
singleLabel = (labeledImage == pidx)*1
points = np.nonzero(singleLabel)
if len(points[0]) < minlen:
labeledImage[points] = 0
filteredImage[:,northBorder:-southBorder,westBorder:-eastBorder,channel] = (labeledImage>0)*1
return filteredImage