MRI转光声图像:数据集的选择与预处理
cycleGAN所需:256x256的jpg图像,各5000张左右。这里的数据基本上都没用上= =都是血泪啊 走的歪路
光声图像
Duke PAM Dataset
Duke PAM Dataset由杜克大学使用在《光学快报》(Optics Letters)2019年第44卷第15期(M. Chen等人的文章"Simultaneous photoacoustic imaging of intravascular and tissue oxygenation")中描述的光学分辨率PAM系统收集,使用的波长为532纳米。这个数据集主要由小鼠脑微血管图像组成,还包括一些小鼠耳朵和肿瘤的图像。虽然是三维采集的,但为了便于查看、收集和存储,这些图像已经通过最大幅值投影(MAP)转换成二维。
https://img-blog.csdnimg.cn/direct/0ac70aa4b625484b9fa558ae1de2061a.png
“clean”子集包含了经过预处理的不同大小的PAM图像,存储为uint8格式的.jpg图像。
“patches”子集包含了“clean”图像中不重叠的128×128像素补丁,存储为uint8格式的.jpg图像。
“raw”子集包含了未经预处理的不同大小的PAM图像(存储为uint16格式的.png图像)。
对于一般的深度学习任务,可以使用“clean”数据集并进行随机裁剪(所有图像的尺寸都不小于128×128像素)。如果需要统一尺寸的图像而不需要使用随机裁剪,“patches”子集将是最佳选择。“raw”子集最适合于期望输入图像更接近原始/未经处理的PAM图像并愿意承担加载uint16 .png图像的内存负担的深度学习任务。
目前处理情况:需要裁剪,只有300多张
要在一张1600×1200像素的JPEG图像上随机抽取几个256×256像素的图像,你可以使用Python的PIL库(Python Imaging Library,现在称为Pillow)来完成这个任务。以下是一个简单的示例,展示了如何实现这个过程:
[*] 首先,确保已安装Pillow库:
如果还没有安装,可以通过pip安装Pillow库:
pip install Pillow
[*] 然后,使用以下Python脚本进行随机抽取:
from PIL import Image
import random
def random_crop(image_path, output_folder, num_crops, crop_size=(256, 256)):
"""在给定图像上随机抽取指定数量和大小的图像。
参数:
image_path (str): 原始图像的路径。
output_folder (str): 输出图像的保存文件夹。
num_crops (int): 需要抽取的图像数量。
crop_size (tuple): 抽取的图像大小,默认为256x256。
"""
image = Image.open(image_path)
width, height = image.size
for i in range(num_crops):
# 随机选择起始点
left = random.randint(0, width - crop_size)
upper = random.randint(0, height - crop_size)
# 计算裁剪框的边界
right = left + crop_size
lower = upper + crop_size
# 进行裁剪
cropped_image = image.crop((left, upper, right, lower))
# 保存裁剪后的图像
cropped_image.save(f"{output_folder}/crop_{i}.jpg")
# 使用示例
image_path = "path/to/your/image.jpg"# 原始图像的路径
output_folder = "path/to/output/folder"# 输出文件夹的路径
num_crops = 5# 抽取的图像数量
random_crop(image_path, output_folder, num_crops)
请将image_path和output_folder变量替换为你的JPEG图像路径和希望保存裁剪图像的文件夹路径。num_crops变量表示你希望抽取的图像数量。
这个脚本首先读取指定的JPEG图像,然后在图像的可能区域内随机选择一个位置作为裁剪起点,根据指定的裁剪大小(这里是256×256像素)计算裁剪框的边界,并对原图进行裁剪。裁剪后的图像将被保存到指定的输出文件夹中。通过更改num_crops变量的值,你可以控制需要抽取的图像数量。
PAT 肿瘤血管
共享的数据包括三个主要元素 - 光声数据、分析数据及相关图表和未编入图表的其他数据。
光声数据以重建图像的形式共享(变量名为Recon)。每个成像会话都在OE扫描矩阵和DCE扫描矩阵中总结。Recon矩阵是四维的,维度结构如下:空间x,空间y,时间,光谱。每个成像会话的数据都放在一个以日期和小鼠ID命名的文件夹中。文件夹中有两个文件。第一个,OE_data.mat包括OE图像矩阵(‘Recon’),以及用于绘制感兴趣区域的高分辨率图像(‘FrameForROI’),以及绘制的感兴趣区域。在2个肿瘤可见且被分析的情况下,这些被称为‘roi_L_tumor’和‘roi_R_tumor’。当只有一个存在时,它被称为roi_tumor’。在另一个文件‘DCE_data.mat’中是DCE图像矩阵‘Recon’。这些数据的分析是使用提供的两个matlab脚本OE_analysis.m和DCE_analysis.m进行的。脚本使用的详细说明包含在注释中。每个成像数据集首先使用OE_analyse.m进行分析,然后是DCE_analyse.m。相关的指标和图像作为Matlab变量产生。用于光谱解混(如代码中详细描述)所需的光谱在库‘Spectra_OE’和‘Spectra_DCE’中提供。所有的matlab代码文件都存在于文件夹‘MSOT code’中。
成像数据分为两个主要文件夹:CA4P+vehicle小鼠是在治疗前后进行了两次成像会话的动物,治疗使用的是CA4P(子文件夹‘Treated’)或载体(子文件夹‘Vehicle’)。在这个文件夹中,每个动物有2次成像会话,用相同的小鼠ID标记,但日期不同,较早的一个是治疗前的成像会话。其余动物在另一个文件夹‘Cohort No CA4P’中。每个动物包括一次成像会话。
用于产生手稿中呈现的图表的分析数据,存在于文件Figures_sources.opj中,可以使用Origin软件(OriginLab)打开。每个图表的标题为FigXX,后跟对内容的简要描述,其中XX代表图表和面板中使用的图表的编号。请参阅相关图例以获取有关特定数据的更多信息。然后可以在文档中的电子表格中访问用于创建图表的数据。
用于量化肿瘤内清除和保留区域行为的少量剩余数据未制成图表。因此,这些数字在Excel电子表格Clearing_retaining_data中总结。文档中的两个标签页将K8484和PC3肿瘤队列分开,数据在列标题中描述。
目前处理情况:太少了,只适合用于光谱解混
MRI图像:膝盖fastMRI
约2000个患者的数据,每个患者有5-6张DICOM三维图像数据,2张冠状位、2张矢状位和1张轴向
各方向切片
选择合适的膝盖MRI切片取决于您的研究目的或应用需求。在膝盖MRI中,常见的切片方向有轴向(AX)、冠状(COR)、和矢状(SAG)。每个方向的切片都能提供不同的视角和信息,关键是要确定您最感兴趣的结构或病变类型。
轴向(AX)切片
https://img-blog.csdnimg.cn/direct/4462f1abd7864382a5a588dbd50ffe13.png
[*]优点:轴向切片适合观察膝盖关节中的交叉韧带、半月板以及软骨的状况。这种方向的切片可以很好地展示半月板的撕裂和交叉韧带的损伤。
[*]使用场景:如果您的研究或诊断重点是交叉韧带损伤或半月板问题,轴向切片会是很好的选择。
冠状(COR)切片
https://img-blog.csdnimg.cn/direct/6b4da94fa5014ac9bfcc83d99b40ba3c.png
[*]优点:冠状切片侧重于展示膝盖的侧面结构,包括侧副韧带、髌骨以及大腿骨和胫骨的对齐情况。
[*]使用场景:这种切片适用于研究膝盖的结构对齐和侧副韧带的状况,以及髌骨的位置和状态。
矢状(SAG)切片
https://img-blog.csdnimg.cn/direct/8d68ba4590d643a990343e2231a499ee.png
[*]优点:矢状切片提供了从前到后的视角,非常适合评估交叉韧带的完整性、骨骼结构以及可能的骨折。
[*]使用场景:如果您对前交叉韧带或后交叉韧带的评估特别感兴趣,或者需要检查膝盖前部或后部的病变,矢状切片是一个很好的选择。
综合考虑
[*]在选择切片时,还应考虑所需的图像分辨率和切片厚度。高分辨率和薄切片可以提供更详细的图像,但可能会增加扫描时间和数据量。
[*]通常,为了全面评估膝盖的状况,结合使用这三个方向的切片会是最佳选择。但如果您的研究或应用有特定焦点,选择最能突出该焦点的切片方向会更为有效。
最后,如果您正在处理的是一个特定的研究项目或具有特定的医学诊断目的,考虑与专业的放射科医生或医学成像专家合作,以确保您选择的切片最适合您的需求。
膝盖MRI图像模拟光声成像
为了按照提供的代码框架处理已分割的膝盖MRI轴向图,并为骨骼、肌肉、脂肪分配不同的声学属性(密度和吸收系数),我们可以按以下步骤重写代码:
1. 设置计算网格
首先,我们定义计算网格和时间参数,这与原代码类似。
% create the computational grid
Nx = 300; % number of grid points in the x (row) direction
Ny = 300; % number of grid points in the y (column) direction
dx = 0.1e-3; % grid point spacing in the x direction
dy = 0.1e-3; % grid point spacing in the y direction
kgrid = kWaveGrid(Nx, dx, Ny, dy);
dt = 15e-9; % time step
Nt = 2001; % number of time steps
kgrid.setTime(Nt, dt);
2. 处理MRI图像并分配声学属性
这里我们加载分割好的MRI图像,这些图像应该明确标记了骨骼、肌肉和脂肪的区域。
% load segmented MRI image
segmented = imread('path_to_segmented_image.png');
% assuming segmented image has labels: 1 for bone, 2 for muscle, 3 for fat
bone = segmented == 1;
muscle = segmented == 2;
fat = segmented == 3;
% initialize matrices
medium.sound_speed = zeros(Nx, Ny);
medium.density = zeros(Nx, Ny);
medium.alpha_coeff = zeros(Nx, Ny);
% assign properties based on tissue type
% sound speed , density , and absorption coefficient
medium.sound_speed(bone) = 4080;% sound speed for bone
medium.sound_speed(muscle) = 1580;% sound speed for muscle
medium.sound_speed(fat) = 1450;% sound speed for fat
medium.density(bone) = 1900;% density for bone
medium.density(muscle) = 1060;% density for muscle
medium.density(fat) = 950;% density for fat
medium.alpha_coeff(bone) = 3.3;% absorption for bone
medium.alpha_coeff(muscle) = 1.0;% absorption for muscle
medium.alpha_coeff(fat) = 0.9;% absorption for fat
medium.alpha_power = 1;% assuming linear frequency dependence for simplicity
3. 其他设置(如果有)
这部分代码可以根据需要进行添加,例如设置声源、传感器配置、运行模拟等。
4. 可视化和保存
可视化声学属性分布和保存设置,确认一切设置正确。
% Visualize the medium properties
figure;
subplot(1, 3, 1);
imagesc(medium.sound_speed);
title('Sound Speed');
colorbar;
subplot(1, 3, 2);
imagesc(medium.density);
title('Density');
colorbar;
subplot(1, 3, 3);
imagesc(medium.alpha_coeff);
title('Absorption Coefficient');
colorbar;
% Optionally, save the medium settings
save('medium_properties.mat', 'medium');
以上步骤展示了如何根据已分割的MRI图像为不同组织分配声学属性。通过这种方法,我们可以有效地模拟声波在各种组织中的传播,以支持更复杂的光声成像或声学成像研究。
页:
[1]