@@ -222,6 +222,8 @@ def nlmeans_proxy(in_file, settings,
222222 """
223223 package_check ('dipy' , version = '0.8.0.dev' )
224224 from dipy .denoise .nlmeans import nlmeans
225+ from scipy .ndimage .morphology import binary_erosion
226+ from scipy import ndimage
225227
226228 if out_file is None :
227229 fname , fext = op .splitext (op .basename (in_file ))
@@ -235,24 +237,42 @@ def nlmeans_proxy(in_file, settings,
235237 data = img .get_data ()
236238 aff = img .get_affine ()
237239
238- if data .ndims < 4 :
240+ if data .ndim < 4 :
239241 data = data [..., np .newaxis ]
240242 b0 = data [..., 0 ]
241243
242244 if smask is None :
243245 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 )
245249
246250 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
253265 else :
254266 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+
256276
257277 den = np .zeros_like (data )
258278 snr = []
0 commit comments