22from __future__ import absolute_import , print_function
33
44import numpy as np
5- import scipy .ndimage
6- import nibabel as nib
75
86from niftynet .layer .base_layer import RandomisedLayer
97
@@ -70,7 +68,7 @@ def _generate_bias_field_map(self, shape):
7068 if spatial_rank == 3 :
7169 z_range = np .arange (- shape [2 ] / 2 , shape [2 ] / 2 )
7270 x_mesh , y_mesh , z_mesh = np .asarray (np .meshgrid (x_range , y_range ,
73- z_range ), dtype = float )
71+ z_range ), dtype = float )
7472 x_mesh /= float (np .max (x_mesh ))
7573 y_mesh /= float (np .max (y_mesh ))
7674 z_mesh /= float (np .max (z_mesh ))
@@ -80,8 +78,8 @@ def _generate_bias_field_map(self, shape):
8078 rand_coeff = self ._bf_coeffs [i ]
8179
8280 new_map = rand_coeff * np .power (x_mesh , order_x ) * \
83- np .power (y_mesh , order_y ) * \
84- np .power (z_mesh , order_z )
81+ np .power (y_mesh , order_y ) * \
82+ np .power (z_mesh , order_z )
8583 # print(np.asarray(np.where(np.abs(new_map) >
8684 # 0)).shape, np.unique(
8785 # new_map).shape)
@@ -96,7 +94,7 @@ def _generate_bias_field_map(self, shape):
9694 for order_y in range (0 , self .order + 1 - order_x ):
9795 rand_coeff = self ._bf_coeffs [i ]
9896 new_map = rand_coeff * np .power (x_mesh , order_x ) * \
99- np .power (y_mesh , order_y )
97+ np .power (y_mesh , order_y )
10098 bf_map += np .transpose (new_map , (1 , 0 ))
10199 i += 1
102100 return np .exp (bf_map )
@@ -112,16 +110,7 @@ def _apply_transformation(self, image):
112110 '''
113111 assert self ._bf_coeffs is not None
114112 bf_map = self ._generate_bias_field_map (image .shape )
115- print (np .asarray (np .where (np .abs (bf_map )> 0 )).shape )
116113 bf_image = image * bf_map
117- print (bf_image .shape , image .shape , np .max (bf_image ), np .max (image ),
118- np .max (bf_map ), np .min (bf_map ))
119- bf_nii = nib .Nifti1Image (bf_map , np .diag ([1 ,1 ,1 ,1 ]))
120- bf_image_nii = nib .Nifti1Image (bf_image , np .diag ([1 ,1 ,1 ,1 ]))
121- image_nii = nib .Nifti1Image (image , np .diag ([1 ,1 ,1 ,1 ]))
122- nib .save (bf_nii , './TestBF.nii.gz' )
123- nib .save (bf_image_nii , './TestModif.nii.gz' )
124- nib .save (image_nii , './InitModify.nii.gz' )
125114 return bf_image
126115
127116 def layer_op (self , inputs , interp_orders , * args , ** kwargs ):
@@ -144,25 +133,4 @@ def layer_op(self, inputs, interp_orders, *args, **kwargs):
144133 raise NotImplementedError ("unknown input format" )
145134 return inputs
146135
147- # if inputs.spatial_rank == 3:
148- # if inputs.data.ndim == 4:
149- # for mod_i in range(inputs.data.shape[-1]):
150- # inputs.data[..., mod_i] = self._apply_transformation_3d(
151- # inputs.data[..., mod_i], inputs.interp_order)
152- # if inputs.data.ndim == 5:
153- # for t in range(inputs.data.shape[-1]):
154- # for mod_i in range(inputs.data.shape[-2]):
155- # inputs.data[..., mod_i, t] = \
156- # self._apply_transformation_3d(
157- # inputs.data[..., mod_i, t], inputs.interp_order)
158- # if inputs.interp_order > 0:
159- # inputs.data = inputs.data.astype(np.float)
160- # elif inputs.interp_order == 0:
161- # inputs.data = inputs.data.astype(np.int64)
162- # else:
163- # raise ValueError('negative interpolation order')
164- # return inputs
165- # else:
166- # # TODO: rotation for spatial_rank is 2
167- # # currently not supported 2/2.5D rand rotation
168- # return inputs
136+
0 commit comments