@@ -222,6 +222,8 @@ def nlmeans_proxy(in_file, settings,
222
222
"""
223
223
package_check ('dipy' , version = '0.8.0.dev' )
224
224
from dipy .denoise .nlmeans import nlmeans
225
+ from scipy .ndimage .morphology import binary_erosion
226
+ from scipy import ndimage
225
227
226
228
if out_file is None :
227
229
fname , fext = op .splitext (op .basename (in_file ))
@@ -235,24 +237,42 @@ def nlmeans_proxy(in_file, settings,
235
237
data = img .get_data ()
236
238
aff = img .get_affine ()
237
239
238
- if data .ndims < 4 :
240
+ if data .ndim < 4 :
239
241
data = data [..., np .newaxis ]
240
242
b0 = data [..., 0 ]
241
243
242
244
if smask is None :
243
245
smask = np .zeros_like (b0 )
244
- smask [b0 > np .percentile (b0 , 0.85 )] = 1
246
+ smask [b0 > np .percentile (b0 , 85. )] = 1
247
+
248
+ smask = binary_erosion (smask .astype (np .uint8 ), iterations = 2 ).astype (np .uint8 )
245
249
246
250
if nmask is None :
247
- nmask = np .zeros_like (b0 )
248
- try :
249
- bmask = settings ['mask' ]
250
- nmask [~ bmask ] = 1
251
- except AttributeError :
252
- nmask [b0 < np .percentile (b0 , 0.15 )] = 1
251
+ nmask = np .ones_like (b0 , dtype = np .uint8 )
252
+ bmask = settings ['mask' ]
253
+ if bmask is None :
254
+ bmask = np .zeros_like (b0 )
255
+ bmask [b0 > np .percentile (b0 , 55 )] = 1
256
+ label_im , nb_labels = ndimage .label (bmask )
257
+ sizes = ndimage .sum (bmask , label_im , range (nb_labels + 1 ))
258
+ maxidx = np .argmax (sizes )
259
+ bmask = np .zeros_like (b0 , dtype = np .uint8 )
260
+ bmask [label_im == maxidx ] = 1
261
+
262
+ nb .Nifti1Image (bmask , aff ,
263
+ None ).to_filename ('bmask.nii.gz' )
264
+ nmask [bmask > 0 ] = 0
253
265
else :
254
266
nmask = np .squeeze (nmask )
255
- nmask [nmask > 0 ] = 1
267
+ nmask [nmask > 0.0 ] = 1
268
+ nmask [nmask < 1 ] = 0
269
+ nmask = nmask .astype (bool )
270
+
271
+ nmask = binary_erosion (nmask , iterations = 1 ).astype (np .uint8 )
272
+
273
+ nb .Nifti1Image (smask .astype (np .uint8 ), aff ,
274
+ None ).to_filename ('smask.nii.gz' )
275
+
256
276
257
277
den = np .zeros_like (data )
258
278
snr = []
0 commit comments