#convert 3D images to stacks of 2D slice images
    #create a transform for each 2D slice
    #create a initialisation using 2D slice stacks
    #compute H for each LR image

    psfList = []
    for i in range(len(inputImages)):
        LRSpacing = np.float32(np.array(inputImages[i].header['pixdim'][1:4]))
        HRpsf = compute_psf(LRSpacing, HRSpacing, args.psf)
        psfList.append(HRpsf)

    #Compute H
    HList = []
    for i in range(len(inputImages)):
        HList.append(
            compute_H(inputImages[i], initHRImage, inputTransforms[i],
                      psfList[i], maskImages[i]))

    #Intensity correction To do
    #N4 on initHR
    #local correction
    #New init HR
    if args.bias == True:
        initHRImage_N4 = apply_N4_on_image(initHRImage, shrink_factor=1)

        xN4 = convert_image_to_vector(initHRImage_N4)
        hrN4Data = np.zeros(initHRImage.get_data().shape)
        for i in range(len(inputImages)):
            simu = convert_vector_to_image(HList[i].dot(xN4), inputImages[i])
            im = gaussian_biais_correction(inputImages[i], simu, 5)

            warped = apply_affine_itk_transform_on_image(
  else:
    #no transform provided : use identity as transform and zero as center
    m = np.identity(4)
    c = np.array([0, 0, 0, 1])
    inputTransform = (m,c) 

  print('Creating mask image using the following padding value:'+str(args.padding))
  data = np.zeros(HRimage.get_data().shape)
  data[HRimage.get_data() > args.padding] = 1
  maskHRImage = nibabel.Nifti1Image(data, HRimage.affine)
  print('Percentage of HR masked values : %.2f '%( np.size(np.nonzero((data))) / (1.0*np.size(data.shape)) * 100.0 / np.size(data) ) )
  data = np.zeros(LRimage.get_data().shape)
  data[LRimage.get_data() > args.padding] = 1
  maskLRImage = nibabel.Nifti1Image(data, LRimage.affine)
  print('Percentage of LR masked values : %.2f '%( np.size(np.nonzero((data))) / (1.0*np.size(data.shape)) * 100.0 / np.size(data) ) )
  
  HRSpacing = np.float32(np.array(HRimage.header['pixdim'][1:4]))  
  LRSpacing = np.float32(np.array(LRimage.header['pixdim'][1:4]))  
  psf = compute_psf(LRSpacing, HRSpacing, args.psf)
  H = compute_H(LRimage, HRimage, inputTransform, psf, maskLRImage)    
  
  x = convert_image_to_vector(HRimage)
  maskX = convert_image_to_vector(maskHRImage)
  #Let mask the HR image
  x = x*maskX

  nibabel.save(convert_vector_to_image(H.dot(x),LRimage),args.output)

  

Example #3
0
        m = np.identity(4)
        c = np.array([0, 0, 0, 1])
        inputTransform = (m, c)

    print('Creating mask image using the following padding value:' +
          str(args.padding))
    data = np.zeros(HRimage.get_data().shape)
    data[HRimage.get_data() > args.padding] = 1
    maskHRImage = nibabel.Nifti1Image(data, HRimage.affine)
    print('Percentage of HR masked values : %.2f ' %
          (np.size(np.nonzero(
              (data))) / (1.0 * np.size(data.shape)) * 100.0 / np.size(data)))
    data = np.zeros(LRimage.get_data().shape)
    data[LRimage.get_data() > args.padding] = 1
    maskLRImage = nibabel.Nifti1Image(data, LRimage.affine)
    print('Percentage of LR masked values : %.2f ' %
          (np.size(np.nonzero(
              (data))) / (1.0 * np.size(data.shape)) * 100.0 / np.size(data)))

    HRSpacing = np.float32(np.array(HRimage.header['pixdim'][1:4]))
    LRSpacing = np.float32(np.array(LRimage.header['pixdim'][1:4]))
    psf = compute_psf(LRSpacing, HRSpacing, args.psf)
    H = compute_H(LRimage, HRimage, inputTransform, psf, maskLRImage)

    x = convert_image_to_vector(HRimage)
    maskX = convert_image_to_vector(maskHRImage)
    #Let mask the HR image
    x = x * maskX

    nibabel.save(convert_vector_to_image(H.dot(x), LRimage), args.output)
Example #4
0
    # convert 3D images to stacks of 2D slice images
    # create a transform for each 2D slice
    # create a initialisation using 2D slice stacks
    # compute H for each LR image

    psfList = []
    for i in range(len(inputImages)):
        LRSpacing = np.float32(np.array(inputImages[i].header["pixdim"][1:4]))
        HRpsf = compute_psf(LRSpacing, HRSpacing, args.psf)
        psfList.append(HRpsf)

    # Compute H
    HList = []
    for i in range(len(inputImages)):
        HList.append(compute_H(inputImages[i], initHRImage, inputTransforms[i], psfList[i], maskImages[i]))

    # Intensity correction To do
    # N4 on initHR
    # local correction
    # New init HR
    if args.bias == True:
        initHRImage_N4 = apply_N4_on_image(initHRImage, shrink_factor=1)

        xN4 = convert_image_to_vector(initHRImage_N4)
        hrN4Data = np.zeros(initHRImage.get_data().shape)
        for i in range(len(inputImages)):
            simu = convert_vector_to_image(HList[i].dot(xN4), inputImages[i])
            im = gaussian_biais_correction(inputImages[i], simu, 5)

            warped = apply_affine_itk_transform_on_image(