-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy path_key_bindings.py
More file actions
118 lines (93 loc) · 3.54 KB
/
_key_bindings.py
File metadata and controls
118 lines (93 loc) · 3.54 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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
# from napari.layers.labels import Labels
# import math
# import os
# from skimage import morphology, measure
# from scipy import stats
# from .util import erode_img
# @Labels.bind_key('Shift-C')
# def closing(self, layer):
# """Apply the closing operation (key-binding: SHIFT-C)
# This function applies the closing operation by dilating the selected label
# pixels, following by erosion
# Parameters
# ----------
# layer : napari.layers.Labels
# """
# dilation(layer)
# erosion(layer)
# @Labels.bind_key('Shift-O')
# def opening(self, layer):
# """Apply the opening operation (key-binding: SHIFT-O)
# This function applies the opening operation by eroding the selected label
# pixels, following by dilation
# Parameters
# ----------
# layer : napari.layers.Labels
# """
# erosion(layer)
# dilation(layer)
# @Labels.bind_key('Shift-E')
# def erosion(self, layer):
# """Apply the erosion operation (key-binding: SHIFT-E)
# This function applies the erosion operation on selected label pixels
# Parameters
# ----------
# layer : napari.layers.Labels
# """
# labeled = extract_label(layer.data, layer.selected_label)
# selem = morphology.selem.square(3)
# processed_img = erode_img(layer.data, target_label=layer.selected_label)
# merged = merge_label(processed_img, layer.data, layer.selected_label)
# layer.data = merged
# @Labels.bind_key('Shift-D')
# def dilation(self, layer):
# """Apply the dilation operation (key-binding: SHIFT-D)
# This function applies the dilation operation on selected label pixels
# Parameters
# ----------
# layer : napari.layers.Labels
# """
# labeled = extract_label(layer.data, layer.selected_label)
# selem = morphology.selem.square(3)
# processed_img = morphology.dilation(labeled, selem)
# merged = merge_label(processed_img, layer.data, layer.selected_label)
# layer.data = merged
# @Labels.bind_key('Shift-F')
# def fill_holes(self, layer):
# """apply the fill holes operation (key-binding: SHIFT-D)
# This function applies the fill holes operation on the selected label pixels
# Parameters
# ----------
# viewer : Segmentify Viewer
# Returns
# -------
# The procssed image
# """
# labeled = extract_label(layer.data, layer.selected_label)
# if len(labeled.shape) > 2:
# processed_imgs = []
# for i in range(labeled.shape[0]):
# processed_img = morphology.remove_small_holes(labeled[i].astype(bool)).astype(int)
# processed_imgs.append(processed_img)
# processed_img = np.stack(processed_imgs, 0)
# else:
# processed_img = morphology.remove_small_holes(labeled.astype(bool)).astype(int)
# merged = merge_label(processed_img, layer.data, layer.selected_label)
# layer.data = merged
# def extract_label(data, label):
# """Extract data pixels with selected label"""
# labeled = np.zeros_like(data)
# labeled[data == label] = 1
# return labeled
# def merge_label(processed, data, label):
# """Extract data pixels with selected label"""
# # merge processed image with original
# stored_background_label = 1
# all_labels = np.unique(data)
# if len(all_labels) == 2:
# background_label = all_labels[all_labels != label][0]
# data[(processed == 0) & (data == label)] = background_label
# else:
# data[(processed == 0) & (original == curr_label)] = stored_background_label
# data[processed == 1] = curr_label
# return data