Skip to content

Commit f03acf7

Browse files
author
donglaiw
committed
add get_valid_pos
1 parent f41ff1d commit f03acf7

File tree

1 file changed

+26
-0
lines changed

1 file changed

+26
-0
lines changed

connectomics/data/utils/data_crop.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import numpy as np
2+
from scipy.ndimage import convolve
23

34
####################################################################
45
## Process image stacks.
@@ -16,3 +17,28 @@ def crop_volume(data, sz, st=(0, 0, 0)):
1617
return data[st[0]:st[0]+sz[0], st[1]:st[1]+sz[1], st[2]:st[2]+sz[2]]
1718
else: # crop spatial dimensions
1819
return data[:, st[0]:st[0]+sz[0], st[1]:st[1]+sz[1], st[2]:st[2]+sz[2]]
20+
21+
def get_valid_pos(mask, vol_sz, valid_ratio):
22+
mask_sum = convolve(mask, np.ones(vol_sz), mode='constant', cval=0)
23+
valid_thres = valid_ratio * np.prod(vol_sz)
24+
data_sz = mask.shape
25+
pad_sz_pre = (np.array(vol_sz) - 1) // 2
26+
pad_sz_post = data_sz - (vol_sz - pad_sz_pre - 1)
27+
if len(vol_sz) == 3:
28+
mask_sum = mask_sum[pad_sz_pre[0]:pad_sz_post[0], \
29+
pad_sz_pre[1]:pad_sz_post[1], \
30+
pad_sz_pre[2]:pad_sz_post[2]] >= valid_thres
31+
zz, yy, xx = np.meshgrid(np.arange(mask_sum.shape[0]), \
32+
np.arange(mask_sum.shape[1]), \
33+
np.arange(mask_sum.shape[2]))
34+
valid_pos = np.stack([zz.T[mask_sum], \
35+
yy.T[mask_sum], \
36+
xx.T[mask_sum]], axis=1)
37+
else:
38+
mask_sum = mask_sum[pad_sz_pre[0]:pad_sz_post[0], \
39+
pad_sz_pre[1]:pad_sz_post[1]] >= valid_thres
40+
yy, xx = np.meshgrid(np.arange(mask_sum.shape[0]), \
41+
np.arange(mask_sum.shape[1]))
42+
valid_pos = np.stack([yy.T[mask_sum], \
43+
xx.T[mask_sum]], axis=1)
44+
return valid_pos

0 commit comments

Comments
 (0)