Ejemplo n.º 1
0
def axis_align_dwi(dwi, outfile=None, precision=5):
    dwi_hdr = get_hdr(dwi)
    spcdir_orig = matrix(find_spc_dir(dwi_hdr))
    print(spcdir_orig)
    sizes = diag([linalg.norm(spcdir_orig[0,:]),linalg.norm(spcdir_orig[1,:]),linalg.norm(spcdir_orig[2,:])])
    print(sizes)
    R = get_numpy_rotation(spcdir_orig)
    print(R)
    spcdir_new = matrix.round(sizes *R*linalg.inv(sizes)*spcdir_orig,4)
    print(spcdir_new)

    mf_orig = find_mf(dwi_hdr)
    print(mf_orig)
    mf_new = matrix.round(R * matrix(mf_orig),4)
    print(mf_new)
    mf_new = [','.join(map(str, x)) for x in mf_new.tolist()]
    newline = 'measurement frame: (%s) (%s) (%s)\n' % (mf_new[0], mf_new[1],
                                                     mf_new[2])
    dwi_new = splitext(dwi)[0] + '_axisaligned.nhdr' if not outfile else \
            outfile
    t('unu save -f nrrd -e gzip -i %s -o %s' % (dwi, dwi_new))
    replace_line_in_file(dwi_new, 'measurement frame:', newline)

    newline = 'space directions: (%s) (%s) (%s) none\n' % (','.join(map(str, spcdir_new[0])),
                                                           ','.join(map(str, spcdir_new[1])),
                                                           ','.join(map(str, spcdir_new[2])))
    replace_line_in_file(dwi_new, 'space directions:', newline)
Ejemplo n.º 2
0
def axis_align_3d(image, outfile=None):
    img_hdr = get_hdr(image)
    spcdir_orig = matrix(find_spc_dir(img_hdr))
    print(spcdir_orig)
    sizes = diag([linalg.norm(spcdir_orig[0,:]),linalg.norm(spcdir_orig[1,:]),linalg.norm(spcdir_orig[2,:])])
    print(sizes)
    R = get_numpy_rotation(spcdir_orig)
    print(R)
    spcdir_new = matrix.round(sizes *R*linalg.inv(sizes)*spcdir_orig,4)
    print(spcdir_new)

    image_new = splitext(image)[0] + '_axisaligned.nhdr' if not outfile else \
            outfile
    t('unu save -f nrrd -e gzip -i %s -o %s' % (image, image_new))
    newline = 'space directions: (%s) (%s) (%s)\n' % (','.join(map(str, spcdir_new[0])),
                                                      ','.join(map(str, spcdir_new[1])),
                                                      ','.join(map(str, spcdir_new[2])))
    replace_line_in_file(image_new, 'space directions:', newline)