66 lines
2.2 KiB
Python
Executable File
66 lines
2.2 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
|
|
import h5py
|
|
|
|
mypath = f'/data/pca-rad/datasets/miccai_2022/K2S_MICCAI2022_GRP/train/data/TBrecon1/train/untarred'
|
|
files = [f for f in listdir(mypath)]
|
|
KSPACE_U_PATH = f'/data/pca-rad/datasets/miccai_2022/K2S_MICCAI2022_GRP/train/data/TBrecon1/train/R_8_mask.h5'
|
|
f = h5py.File(KSPACE_U_PATH,'r')
|
|
kspace_mask = f['us_mask'][()]
|
|
|
|
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_masked = np.multiply(kspace, kspace_mask)
|
|
kspace_masked = np.transpose(kspace_masked, (2, 0, 1, 3))
|
|
coil_images = apply_parallel(kspace_masked, 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.astype(np.float32)
|
|
|
|
for file_idx in range(264,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_usampled.npy',image_recon)
|
|
print('done:',file_idx,' ',f'{mypath}/{save_file}/{save_file}_rss_recon_usampled.npy')
|
|
|
|
# img_s = sitk.GetImageFromArray(np.squeeze(image_recon))
|
|
# sitk.WriteImage(img_s, f"../job_test_undersampled_{save_file}.nii.gz")
|
|
|
|
|
|
|
|
|
|
|
|
# print(f.keys())
|
|
# print(np.shape(f['us_mask'][()]))
|
|
# print(type(f['us_mask'][()]))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 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") |