48 lines
1.8 KiB
Python
Executable File
48 lines
1.8 KiB
Python
Executable File
import numpy as np
|
|
import SimpleITK as sitk
|
|
from os import listdir
|
|
from pip import main
|
|
from scipy.fftpack import fftshift, ifftshift, ifftn
|
|
from umcglib.utils import apply_parallel
|
|
import time
|
|
|
|
mypath = f'/data/pca-rad/datasets/miccai_2022/K2S_MICCAI2022_GRP/train/data/TBrecon1/train/untarred'
|
|
files = [f for f in listdir(mypath)]
|
|
# save_file = files[1]
|
|
# seg = np.load(f'{mypath}/{save_file}/{save_file}_seg.npy')
|
|
# kspace = np.load(f'{mypath}/{save_file}/{save_file}_ksp.npy')
|
|
|
|
def k2p_to_img(kspace_single_coil):
|
|
kspace_padded = np.pad(np.squeeze(kspace_single_coil[:,:,:]),[(128,128),(128,128),(0,0)],'constant')
|
|
coil_image = np.abs(fftshift(fftshift(ifftn(ifftshift(kspace_padded)),axes=0),axes=1))
|
|
return coil_image
|
|
|
|
def img_from_ksp(
|
|
kspace: np.array):
|
|
kspace = np.transpose(kspace, (2, 0, 1, 3))
|
|
coil_images = apply_parallel(kspace, k2p_to_img, 12)
|
|
image = np.round(np.sqrt(np.sum(np.power(coil_images,2),0)))
|
|
image = image[:,:,2:-2]
|
|
image = image[:,:,::-1]
|
|
return image
|
|
|
|
for file_idx in range(167,300):
|
|
image_recon = []
|
|
kspace = []
|
|
save_file = []
|
|
save_file = files[file_idx]
|
|
kspace = np.load(f'{mypath}/{save_file}/{save_file}_ksp.npy')
|
|
image_recon = img_from_ksp(kspace)
|
|
np.save(f'{mypath}/{save_file}/{save_file}_rss_recon.npy',image_recon)
|
|
print('done:',file_idx,' ',f'{mypath}/{save_file}/{save_file}_rss_recon.npy')
|
|
|
|
|
|
# quit()
|
|
# seg = sitk.GetImageFromArray(np.squeeze(seg))
|
|
# sitk.WriteImage(seg, f"../test_seg_2.nii.gz")
|
|
# img_s = sitk.GetImageFromArray(np.squeeze(image))
|
|
# # img_s.CopyInformation(seg)
|
|
# sitk.WriteImage(img_s, f"../test_image_3.nii.gz")
|
|
# img_s = sitk.GetImageFromArray(np.squeeze(coil_image))
|
|
# # img_s.CopyInformation(seg)
|
|
# sitk.WriteImage(img_s, f"../test_last_coil_image_2.nii.gz") |