@@ -41,7 +41,7 @@ def __init__(self, p):
41
41
self .config = p
42
42
return
43
43
44
- def staticMask (self , addmask = None ):
44
+ def staticMask (self , addmask = None ):
45
45
'''
46
46
create a static mask according existing mask file. This mask remain unchanged for different images
47
47
@@ -53,40 +53,40 @@ def staticMask(self, addmask = None):
53
53
54
54
:return: 2d array of boolean, 1 stands for masked pixel
55
55
'''
56
- addmask = self .addmask if addmask == None else addmask
56
+ addmask = self .addmask if addmask == None else addmask
57
57
58
58
rv = np .zeros ((self .ydimension , self .xdimension ))
59
- #fit2d mask
59
+ # fit2d mask
60
60
maskfit2ds = filter (lambda msk : msk .endswith ('.msk' ), addmask )
61
- if len (maskfit2ds )> 0 :
61
+ if len (maskfit2ds ) > 0 :
62
62
for maskfit2d in maskfit2ds :
63
63
if os .path .exists (maskfit2d ):
64
64
immask = fabio .openimage .openimage (maskfit2d )
65
- #rv += self.flipImage(immask.data)
65
+ # rv += self.flipImage(immask.data)
66
66
rv += immask .data
67
- #.npy mask
67
+ # .npy mask
68
68
npymasks = filter (lambda msk : msk .endswith ('.npy' ), addmask )
69
- if len (npymasks )> 0 :
69
+ if len (npymasks ) > 0 :
70
70
for npymask in npymasks :
71
71
if os .path .exists (npymask ):
72
72
rv += np .load (npymask )
73
- #.tif mask
73
+ # .tif mask
74
74
tifmasks = filter (lambda msk : msk .endswith ('.tif' ), addmask )
75
- if len (tifmasks )> 0 :
75
+ if len (tifmasks ) > 0 :
76
76
for tifmask in tifmasks :
77
77
if os .path .exists (tifmask ):
78
78
immask = fabio .openimage .openimage (tifmask )
79
79
rv += self .flipImage (immask .data )
80
- #edge mask
80
+ # edge mask
81
81
edgemask = filter (lambda msk : msk .startswith ('edge' ), addmask )
82
- if len (edgemask )> 0 :
83
- if np .sum (self .maskedges )!= 0 :
82
+ if len (edgemask ) > 0 :
83
+ if np .sum (self .maskedges ) != 0 :
84
84
rv += self .edgeMask (self .maskedges )
85
85
86
86
self .staticmask = (rv > 0 )
87
87
return self .staticmask
88
88
89
- def dynamicMask (self , pic , addmask = None ):
89
+ def dynamicMask (self , pic , addmask = None ):
90
90
'''
91
91
create a dynamic mask according to image array. This mask changes for different images
92
92
@@ -98,22 +98,22 @@ def dynamicMask(self, pic, addmask = None):
98
98
:return: 2d array of boolean, 1 stands for masked pixel
99
99
'''
100
100
101
- addmask = self .addmask if addmask == None else addmask
101
+ addmask = self .addmask if addmask == None else addmask
102
102
rv = np .zeros ((self .ydimension , self .xdimension ))
103
103
flag = False
104
- #deadpixel mask
104
+ # deadpixel mask
105
105
dpmask = filter (lambda msk : msk .startswith ('dead' ), addmask )
106
- if len (dpmask )> 0 :
106
+ if len (dpmask ) > 0 :
107
107
rv += self .deadPixelMask (pic )
108
108
flag = True
109
- #bright pixel mask
109
+ # bright pixel mask
110
110
bpmask = filter (lambda msk : msk .startswith ('bright' ), addmask )
111
- if len (bpmask )> 0 :
111
+ if len (bpmask ) > 0 :
112
112
rv += self .brightPixelMask (pic )
113
113
flag = True
114
- #return None if none mask applied
114
+ # return None if none mask applied
115
115
if flag :
116
- self .dynamicmask = (rv > 0 )
116
+ self .dynamicmask = (rv > 0 )
117
117
else :
118
118
self .dynamicmask = None
119
119
return self .dynamicmask
@@ -127,14 +127,14 @@ def deadPixelMask(self, pic):
127
127
:return: 2d array of boolean, 1 stands for masked pixel
128
128
'''
129
129
avgpic = np .average (pic )
130
- ks = np .ones ((5 ,5 ))
131
- ks1 = np .ones ((7 ,7 ))
132
- picb = snf .percentile_filter (pic , 5 , 3 ) < avgpic / 10
130
+ ks = np .ones ((5 , 5 ))
131
+ ks1 = np .ones ((7 , 7 ))
132
+ picb = snf .percentile_filter (pic , 5 , 3 ) < avgpic / 10
133
133
picb = snm .binary_dilation (picb , structure = ks )
134
134
picb = snm .binary_erosion (picb , structure = ks1 )
135
135
return picb
136
136
137
- def brightPixelMask (self , pic , size = 5 , r = 1.2 ):
137
+ def brightPixelMask (self , pic , size = 5 , r = 1.2 ):
138
138
'''
139
139
pixels with much higher intensity compare to adjacent pixels will be masked,
140
140
this mask is used when there are some bright spots/pixels whose intensity is higher
@@ -152,7 +152,7 @@ def brightPixelMask(self, pic, size=5, r = 1.2):
152
152
:return: 2d array of boolean, 1 stands for masked pixel
153
153
'''
154
154
rank = snf .rank_filter (pic , - size , size )
155
- ind = snm .binary_dilation (pic > rank * r , np .ones ((3 ,3 )))
155
+ ind = snm .binary_dilation (pic > rank * r , np .ones ((3 , 3 )))
156
156
return ind
157
157
158
158
def edgeMask (self , edges = None ):
@@ -164,27 +164,27 @@ def edgeMask(self, edges=None):
164
164
165
165
:return: 2d array of boolean, 1 stands for masked pixel
166
166
'''
167
- edges = self .maskedges if edges == None else edges
167
+ edges = self .maskedges if edges == None else edges
168
168
rv = np .zeros ((self .ydimension , self .xdimension ))
169
- if edges [0 ]!= 0 :
170
- rv [:,:edges [0 ]] = 1
171
- if edges [1 ]!= 0 :
172
- rv [:,- edges [1 ]:] = 1
173
- if edges [2 ]!= 0 :
174
- rv [- edges [2 ]:, :] = 1
175
- if edges [3 ]!= 0 :
176
- rv [: edges [3 ]:, :] = 1
169
+ if edges [0 ] != 0 :
170
+ rv [:, :edges [0 ]] = 1
171
+ if edges [1 ] != 0 :
172
+ rv [:, - edges [1 ]:] = 1
173
+ if edges [2 ] != 0 :
174
+ rv [: edges [2 ], :] = 1
175
+ if edges [3 ] != 0 :
176
+ rv [- edges [3 ]::, :] = 1
177
177
178
178
ra = edges [4 ]
179
- ball = np .zeros ((ra * 2 , ra * 2 ))
180
- radi = (np .arange (ra * 2 ) - ra ).reshape ((1 , ra * 2 ))** 2 + \
181
- (np .arange (ra * 2 ) - ra ).reshape ((ra * 2 , 1 )) ** 2
179
+ ball = np .zeros ((ra * 2 , ra * 2 ))
180
+ radi = (np .arange (ra * 2 ) - ra ).reshape ((1 , ra * 2 )) ** 2 + \
181
+ (np .arange (ra * 2 ) - ra ).reshape ((ra * 2 , 1 )) ** 2
182
182
radi = np .sqrt (radi )
183
183
ind = radi > ra
184
- rv [edges [3 ]: edges [3 ]+ ra , edges [0 ]:edges [0 ]+ ra ] = ind [: ra , :ra ]
185
- rv [edges [3 ]: edges [3 ]+ ra , - edges [1 ]- ra :- edges [1 ]] = ind [: ra , - ra :]
186
- rv [- edges [2 ]- ra : - edges [2 ], edges [0 ]:edges [0 ]+ ra ] = ind [- ra : , :ra ]
187
- rv [- edges [2 ]- ra : - edges [2 ], - edges [1 ]- ra :- edges [1 ]] = ind [- ra :, - ra :]
184
+ rv [- edges [3 ] - ra : - edges [3 ], edges [0 ]:edges [0 ] + ra ] = ind [- ra :, :ra ]
185
+ rv [- edges [3 ] - ra : - edges [3 ], - edges [1 ] - ra :- edges [1 ]] = ind [- ra :, - ra :]
186
+ rv [edges [2 ]: edges [2 ] + ra , edges [0 ]:edges [0 ] + ra ] = ind [: ra , :ra ]
187
+ rv [edges [2 ]: edges [2 ] + ra , - edges [1 ] - ra :- edges [1 ]] = ind [: ra , - ra :]
188
188
return rv
189
189
190
190
def undersample (self , undersamplerate ):
@@ -207,9 +207,9 @@ def flipImage(self, pic):
207
207
:return: 2d array, flipped image array
208
208
'''
209
209
if self .fliphorizontal :
210
- pic = pic [:,::- 1 ]
210
+ pic = pic [:, ::- 1 ]
211
211
if self .flipvertical :
212
- pic = pic [::- 1 ,:]
212
+ pic = pic [::- 1 , :]
213
213
return pic
214
214
215
215
def saveMask (self , filename , pic = None , addmask = None ):
@@ -226,11 +226,11 @@ def saveMask(self, filename, pic=None, addmask=None):
226
226
'''
227
227
if not hasattr (self , 'mask' ):
228
228
self .normalMask (addmask )
229
- if (not hasattr (self , 'dynamicmask' )) and (pic != None ):
229
+ if (not hasattr (self , 'dynamicmask' )) and (pic != None ):
230
230
self .dynamicMask (pic , addmask = addmask )
231
231
tmask = self .mask
232
232
if hasattr (self , 'dynamicmask' ):
233
- if self .dynamicmask != None :
234
- tmask = np .logical_or (self .mask , self .dynamicmask ) if pic != None else self .mask
233
+ if self .dynamicmask != None :
234
+ tmask = np .logical_or (self .mask , self .dynamicmask ) if pic != None else self .mask
235
235
np .save (filename , tmask )
236
- return tmask
236
+ return tmask
0 commit comments