软件版本:3D slicer5.8.1
问题描述:能导入图像,也可以读取数据但是最后勾画完成之后不能用相应插件计算出我想要的数据,一直在报错
1.建议粘贴完整错误日志;
2.是应用SlicerRadiomics模块进行计算吗?
是的,是应用SlicerRadiomics 进行计算
日志文件
Doneb’[2025-11-02 21:33:30] I: radiomics.script: Starting PyRadiomics (version: v3.1.0.post2+g146e3bd)\r\n[2025-11-02 21:33:30] I: radiomics.script: Processing input…\r\n[2025-11-02 21:33:30] I: radiomics.featureextractor: Loading parameter file C:/Users/\xd5\xc5\xb1\xf9\xd1\xde/AppData/Local/Temp/Slicer\RadiomicsLogicParams.json\r\n[2025-11-02 21:33:31] I: radiomics.featureextractor: Applying custom setting overrides: {‘label’: 1, ‘correctMask’: True}\r\n[2025-11-02 21:33:31] I: radiomics.script: Input valid, starting sequential extraction from 1 case(s)…\r\n[2025-11-02 21:33:31] I: radiomics.script: Processing case 1\r\n[2025-11-02 21:33:31] I: radiomics.featureextractor: Calculating features with label: 1\r\n[2025-11-02 21:33:31] I: radiomics.featureextractor: Loading image and mask\r\n[2025-11-02 21:33:31] E: radiomics.script: Feature extraction failed!\r\nTraceback (most recent call last):\r\n File “D:\Slicer 5.8.1\slicer.org\Extensions-33241\SlicerRadiomics\Lib\site-packages\radiomics\scripts\segment.py”, line 70, in _extractFeatures\r\n feature_vector.update(extractor.execute(imageFilepath, maskFilepath, label, label_channel))\r\n File “D:\Slicer 5.8.1\slicer.org\Extensions-33241\SlicerRadiomics\Lib\site-packages\radiomics\featureextractor.py”, line 272, in execute\r\n image, mask = self.loadImage(imageFilepath, maskFilepath, generalInfo, **_settings)\r\n File “D:\Slicer 5.8.1\slicer.org\Extensions-33241\SlicerRadiomics\Lib\site-packages\radiomics\featureextractor.py”, line 371, in loadImage\r\n image = sitk.ReadImage(ImageFilePath)\r\n File “D:\Slicer 5.8.1\lib\Python\Lib\site-packages\SimpleITK\extra.py”, line 384, in ReadImage\r\n return reader.Execute()\r\n File “D:\Slicer 5.8.1\lib\Python\Lib\site-packages\SimpleITK\SimpleITK.py”, line 6218, in Execute\r\n return _SimpleITK.ImageFileReader_Execute(self)\r\nRuntimeError: Exception thrown in SimpleITK ImageFileReader_Execute: C:\D\S\S-0-build\ITK\Modules\IO\NRRD\src\itkNrrdImageIO.cxx:294:\r\nitk::ERROR: NrrdImageIO(00000277880C4780): ReadImageInformation: Error reading C:/Users/\xd5\xc5\xb1\xf9\xd1\xde/AppData/Local/Temp/Slicer/CIFDC_vtkMRMLScalarVolumeNodeE.nrrd:\r\n[nrrd] nrrdLoad: fopen(“C:/Users//AppData/Local/Temp/Slicer/CIFDC_vtkMRMLScalarVolumeNodeE.nrrd”,“rb”) failed: Illegal byte sequence\r\n\r\n[2025-11-02 21:33:31] I: radiomics.script: Processing results…\r\n[2025-11-02 21:33:31] I: radiomics.script: Finished segment-based extraction successfully…\r\n’
关键点在这句报错:
Illegal byte sequence
fopen("C:/Users//AppData/Local/Temp/Slicer/CIFDC_vtkMRMLScalarVolumeNodeE.nrrd","rb") failed
和上面那行:
C:/Users/\xd5\xc5\xb1\xf9\xd1\xde/AppData/Local/Temp/Slicer\RadiomicsLogicParams.json
也就是说:
-
你的 Windows 用户名是中文(张××);
-
SlicerRadiomics 在临时目录
C:/Users/张…/AppData/Local/Temp/Slicer里写入 NRRD 文件; -
到 SimpleITK 读取时,路径里的中文被编码成乱码,最后变成
C:/Users//AppData/...,
NRRD 库就报了Illegal byte sequence,导致特征提取失败。
图像导入、分割都没问题,只是 插件把数据写到临时目录后读不回来,所以计算失败。
解决思路:让 Radiomics 用“纯英文路径”
步骤一:把 Slicer 临时目录改到英文路径
-
打开 3D Slicer。
-
菜单栏:
Edit→Application Settings… -
左侧选 General(通用)。
-
找到 Temporary directory(临时目录),点右边的
…:-
先在磁盘上新建一个纯英文目录,例如:
D:\SlicerTemp(不要有空格、不要有中文)。 -
在 Slicer 里把 Temporary directory 改成
D:\SlicerTemp。
-
-
点击右下角 Apply / OK,然后 关闭并重新启动 Slicer。
Radiomics 是 CLI 模块,它用的就是这个 Temporary directory,改了之后输出的 nrrd 就不会再落到带中文的
C:\Users\张…下面。
步骤二:把你的影像和标签也放到英文路径
为保险起见,最好所有参与 Radiomics 的路径都不要有中文:
-
在 D 盘新建一个例如:
D:\SlicerData\case01\
-
把原始影像、分割结果保存到这个目录:
- 在 Slicer 里
File → Save,把 Volume、Segmentation 的保存路径都改到上述文件夹,文件名也用英文或数字。
- 在 Slicer 里
-
再重新打开这些文件,从头到尾按你原来的流程勾画 → 打开 SlicerRadiomics → 计算特征。
步骤三:再次运行 Radiomics,确认是否解决
-
重新设置好 ROI / Label(通常 label = 1)。
-
点击运行,观察 Python Interactor 或 Radiomics 日志:
-
如果不再出现
Illegal byte sequence, -
且能正常输出
csv或结果表,就说明问题就是路径编码。
-
如果仍然报错,可以再检查这几项
-
Radiomics 参数文件
RadiomicsLogicParams.json的保存路径是不是也改到新的英文临时目录了(重启后会自动用新的 temp)。 -
确认没有挂载网络盘或奇怪的路径(如桌面路径含中文)。
小结
这是 Windows 中文用户名 + 老版本 SimpleITK / NRRD 库不支持非 ASCII 路径 的老问题。
解决办法就是:把 Slicer 的临时目录和你的数据目录都改成只含英文的路径。
你可以先按上面三步改一改,再跑一次 Radiomics ,如果还有报错,把新的日志贴给我。
如果成功反馈一下给我。

