使用 CC-359 数据集进行 MRI 重建(二)

参考资料:https://github.com/Deep-Imaging-Group/MD-Recon-Net(这份资料的数据似乎和现在官网的数据格式不太一样)

在这篇博客里,我们将学会如何使用 CC-359 数据集中的数据。这里我们针对 CC-359 中的 single_coil 部分。

CC-359 官网下载地址为:CC-359数据集

由于访问官网需要科学上网,这里我也放了一份到百度网盘中,方便大家下载。提取码:c9yt

首先我们需要明确是,这份数据集以 numpy 数组形式存储,其中的数据是图像的频域数据。每个 .npy 文件的尺寸为(img_nums, 256, 256, 2), 第一维为该 .npy 文件所含 MRI 图片的数量,第二、三维为每张图片的宽高(256 x 256),最后一维2代表频域数据的实部和虚部。

mask 为采样模板,尺寸为(256,256),由 0 、1组成。这里我使用的是顶部所列“参考资料”里的mask,也可以通过百度网盘下载。提取码:722w

代码如下:

import torch
import matplotlib.pyplot as plt
import numpy as np
import scipy.io as sio

def to_complex(data):  
    # from data[256,256,2] to [256,256]complex
    data = data[:,:,0] + 1j*data[:,:,1]
    return data

file_path = "/home/jinfeng/Desktop/Brain_workplace/Brain_datasets/Train/e13991s3_P01536.7.npy"
data = np.load(file_path)
# print(data.shape)   # (170, 256, 256, 2),最后一维代表复数,实部和虚部分开存储
# mask 为所用的欠采样模板,(256,256)
mask = sio.loadmat("/home/jinfeng/Desktop/Brain_workplace/MD-Recon-Net-master/mask/brain/radial/radial_256_256_20.mat")['Umask']

target_kspace = data[100] # (256,256,2), 全采样 k-空间数据,最后一维代表复数,实部和虚部分开存储
# K空间欠采样
under_kspace = np.zeros_like(target_kspace)
under_kspace[:,:,0] = np.fft.ifftshift(np.where(mask == 0, 0,np.fft.fftshift(target_kspace[:,:,0])))   #保留大部分低频成分
under_kspace[:,:,1] = np.fft.ifftshift(np.where(mask == 0, 0,np.fft.fftshift(target_kspace[:,:,1])))   #保留大部分低频成分
#转成 tensor,之后训练网络的时候需要
target_kspace_tensor = torch.from_numpy(target_kspace)
under_kspace_tensor = torch.from_numpy(under_kspace)
#(256,256) 目标图像,直接由全采样 k-空间数据逆傅立叶变换而来
target_img_tensor = torch.ifft(target_kspace_tensor, 2, normalized=True)
under_img_tensor = torch.ifft(under_kspace_tensor, 2, normalized=True)

plt.figure()
plt.rcParams['figure.figsize'] = (20.0, 20.0)
plt.subplot(1,2,1)
plt.imshow(np.fft.fftshift(np.log(1+np.abs(to_complex(target_kspace_tensor.numpy())))),cmap='gray')
plt.title("full K space")

plt.subplot(1,2,2)
plt.imshow(np.abs(to_complex(target_img_tensor.numpy())),cmap='gray')
plt.title("full image space")
plt.show()


plt.figure()
plt.rcParams['figure.figsize'] = (20.0, 20.0)

plt.subplot(1,3,1)
plt.imshow(mask,cmap='gray')
plt.title("mask")

plt.subplot(1,3,2)
plt.imshow(np.fft.fftshift(np.log(1+np.abs(to_complex(under_kspace_tensor.numpy())))),cmap='gray')
plt.title("DownSample K space")

plt.subplot(1,3,3)
plt.imshow(np.abs(to_complex(under_img_tensor.numpy())),cmap='gray')
plt.title("DownSample image space")
plt.show()

运行结果如下:

 

 

  • 3
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 17
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值