使用 CC 359 資料集進行 MRI 重建(二)

2021-10-13 06:15:25 字數 2661 閱讀 5499

參考資料:這份資料的資料似乎和現在官網的資料格式不太一樣)

在這篇部落格裡,我們將學會如何使用 cc-359 資料集中的資料。這裡我們針對 cc-359 中的 single_coil 部分。

首先我們需要明確是,這份資料集以 numpy 陣列形式儲存,其中的資料是影象的頻域資料。每個 .npy 檔案的尺寸為(img_nums, 256, 256, 2), 第一維為該 .npy 檔案所含 mri 的數量,第

二、三維為每張的寬高(256 x 256),最後一維2代表頻域資料的實部和虛部。

**如下:

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

執行結果如下:

使用 CC 359 資料集進行 MRI 重建(三)

本篇,我們將利用 cc 359 資料集進行 mri 的重建。關於 mri 的重建,我將提供兩種方法 方法一 直接建立 零填充的欠取樣影象 到 全取樣影象 之間的對映,具體操作如下,對於 cc 359 資料集中的原始資料 target k space,256x256x2 經欠取樣得到 under k ...

使用sklearn進行mnist資料集分類

深度之眼 西瓜書課後 import time import matplotlib.pyplot as plt import numpy as np from sklearn.datasets import fetch openml from sklearn.linear model import l...

使用UIUC資料集進行汽車檢測

第二步驟 編寫 如下 import cv2 import numpy as np from os.path import join datapath home utryjc pictures trainimages def path cls,i return s s d.pgm datapath,c...