擅长:python、mysql、java
<p>我找到的临时解决方案是:</p>
<p>1)使用<code>sitk.ImageFileReader()</code>创建包含每个切片作为图像对象的列表:</p>
<pre><code>frame1 = [Image1, ..., Image148]
frame2 = [Image149, ..., Image296]
...
frame_list = [frame1, frame2, ..., frameN]
</code></pre>
<p>在这里,我们不处理第一个图像</p>
<p>2)修改DICOM标题中的每个图像seriesID:</p>
^{pr2}$
<p>3)使用<code>writer = sitk.ImageFileWriter()</code>和<code>writer.KeepOriginalImageUIDOn()</code>将带有新seriesID的图像写入缓冲文件夹</p>
<p>4)使用@blowekamp方法将所有不同的序列号与相关图像路径存储在字典中:</p>
<pre><code>series_dic = { series_id: reader.GetGDCMSeriesFileNames(path, series_id) for series_id in reader.GetGDCMSeriesIDs(path) }
</code></pre>
<p>5)阅读系列并将其存储在列表中:</p>
<pre><code>for keys in series_dic:
Img_list.append(sitk.ReadImage(series_dic[keys]))
</code></pre>
<p>6)最后我用<code>shutil.rmtree(path, ignore_errors=True)</code>删除缓冲文件夹</p>
<p>这不是很优化,因为我必须写新的图像然后删除它。如果你有更好的答案,请随时评论!在</p>