fast-mri/scripts/miccai_rss_recon_undersampl...

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")