def test_check_images(): data = np.zeros((91, 91, 60)) affine = np.eye(4) affine[:, 3] = np.ones(4) file1 = '/tmp/file1.nii' file2 = '/tmp/file2.nii' file3 = '/tmp/file3.nii' nibabel.Nifti1Image(data, affine).to_filename(file1) nibabel.Nifti1Image(data, affine * 3).to_filename(file2) nibabel.Nifti1Image(data + 1, affine * 3).to_filename(file3) _utils.check_images(file1, file1) assert_raises(ValueError, _utils.check_images, file1, file2) assert_raises(ValueError, _utils.check_images, file1, file3)
def apply_mask(in_file, mask_file, mask_value=np.nan): """Masks input with a binary mask_file. """ # Load images image = nibabel.load(in_file) data = image.get_data() mask_image = nibabel.load(mask_file) mask_data = mask_image.get_data() # Check shapes and affines check_images(in_file, mask_file) # Compute the masked image data[mask_data == 0] = mask_value out_image = nibabel.Nifti1Image(data, image.get_affine(), image.get_header()) out_file = add_prefix('masked_', in_file) nibabel.save(out_image, out_file) return out_file
def apply_mask(in_file, mask_file, mask_value=np.nan, out_file=None): """Masks input with a binary mask_file. Parameters ---------- in_file : str Path to the 3D image mask_file : str Path to the binary mask image mask_value : float, optional Value to allocate to masked voxels. out_file : str or None, optional Path to the masked image Returns ------- out_file : str Path to the masked image """ # Load images image = nibabel.load(in_file) data = image.get_data() mask_image = nibabel.load(mask_file) mask_data = mask_image.get_data() # Check shapes and affines check_images(in_file, mask_file) # Compute the masked image data[mask_data == 0] = mask_value out_image = nibabel.Nifti1Image(data, image.get_affine(), image.get_header()) if out_file is None: out_file = _add_prefix('masked_', in_file) nibabel.save(out_image, out_file) return out_file