我正在使用 SimpleITK 分析动态 PET 数据。我有一个包含 148 * N 图像的文件夹(其中 N 是我的动态 PET 的帧数),我想分离每个帧的图像。首先,我为每一帧创建了一个带有相应图像的子文件夹。
>folder #Folder of dynamic data
>subfolder1 #Subfolder with images of Frame 1
>image1, image2, ..., image148
>subfolder2 #Subfolder with images of Frame 2
>image149 image 150, ..., image296
我正在阅读我的图片如下:
series_reader = sitk.ImageSeriesReader()
image = sitk.ReadImage(series_reader.GDCMSeriesFileNames(path_subfolder1))
创建所有这些子文件夹对用户不是很友好,所以我尝试将图像的所有路径存储在列表中:
frame1 = [image1, ..., image148]
frame2 = [image149, ..., image296]
...
frame_list = [frame1, frame2, ..., frameN]
并阅读这样的图像:
image = sitk.ReadImage(frame_list[0])
问题是,当我查看位于相同坐标 (x, y, z) 中的体素值时,这两种方法无法获得相同的值。似乎使用series_reader.GDCMSeriesFileNames()
SimpleITK 检索有关 DICOM 图像的一些信息,例如 Origin。
SimpleITK 检索了哪些信息来创建他的图像series_reader.GDCMSeriesFileNames()
,我需要拥有完全相同的图像?还是有另一种方法可以使用路径列表获得相同的图像?
PS:在这篇文章中,所有以“图像”命名的变量都是图像的路径,而不是 SimpleITK 图像对象。
编辑:就我而言,我所有的框架都有相同的序列号,所以我不能使用series_reader.GDCMSeriesFileNames(path_folder, series_ID)