def modified_topology_features(ds, seg_id, use_2d_edges):
modified_features = ds.topology_features(seg_id, use_2d_edges)
if not ds.defect_slices:
return modified_features
skip_edges = get_skip_edges( ds, seg_id)
skip_ranges = get_skip_ranges( ds, seg_id)
skip_starts = get_skip_starts( ds, seg_id)
delete_edge_ids = get_delete_edge_ids(ds, seg_id)
# delete all features corresponding to delete - edges
modified_features = np.delete(modified_features, delete_edge_ids, axis = 0)
# get topo features for the new skip edges
seg = ds.seg(seg_id)
lower_slices = np.unique(skip_starts)
skip_edge_pairs_to_slice = {z : skip_edges[skip_starts == z] for z in lower_slices}
skip_edge_indices_to_slice = {z : np.where(skip_starts == z)[0] for z in lower_slices}
skip_edge_ranges_to_slice = {z : skip_ranges[skip_starts == z] for z in lower_slices}
n_feats = modified_features.shape[1]
skip_topo_features = np.zeros( (skip_edges.shape[0], n_feats) )
for z in lower_slices:
_get_skip_topo_features_for_slices(
z,
seg,
skip_edge_pairs_to_slice[z],
skip_edge_ranges_to_slice[z],
skip_edge_indices_to_slice[z],
use_2d_edges,
skip_topo_features)
skip_topo_features[np.isinf(skip_topo_features)] = 0.
skip_topo_features[np.isneginf(skip_topo_features)] = 0.
skip_topo_features = np.nan_to_num(skip_topo_features)
assert skip_topo_features.shape[1] == modified_features.shape[1]
return np.concatenate([modified_features, skip_topo_features],axis = 0)
# the last argument is only for caching results with different features correctly
defect_handling.py 文件源码
python
阅读 30
收藏 0
点赞 0
评论 0
评论列表
文章目录