使用nipype对额外图像应用FLIRT配准时出错

0 投票
1 回答
1459 浏览
提问于 2025-04-16 23:20

我正在使用nipype这个包在Python中进行一些注册操作。对于基本的注册,它是成功的:

from nipype.interfaces import fsl
from nipype.testing import example_data
flt = fsl.FLIRT(bins=640, cost_func='mutualinfo')
flt.inputs.in_file = 'myInput.img'
flt.inputs.reference = 'myReference.img'
flt.inputs.out_file = 'moved_subject.nii'
flt.inputs.out_matrix_file = 'subject_to_template.mat'
res = flt.run() 

这次注册成功了。不过,我想把这个注册的变换应用到一个非脑部的图像上,这个图像和输入的MRI在同一个空间里,我使用的是输出的 flt.inputs.out_matrix_file = 'subject_to_template.mat'。

我尝试了以下操作:

from nipype.interfaces import fsl
flt = fsl.FLIRT(bins=640, cost_func='mutualinfo')
flt.inputs.in_file = 'myNonBrainImage.img'
flt.inputs.reference = 'myReference.img'
flt.inputs.out_file = 'regNonBrain.nii'
flt.inputs.in_matrix_file = 'subject_to_template.mat'
flt.inputs.apply_xfm = True
res = flt.run() 

我希望通过设置 flt.inputs.in_matrix_file 和 flt.inputs.apply_xfm = True 这两个选项,能够覆盖标准的注册过程,直接使用这个矩阵来注册额外的图像,但我遇到了这个错误:

INFO:interface:stderr 2011-08-10T14:59:17.307116:Unrecognised option D
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/bin/python27/lib/python2.7/site-packages/nipype-0.4.1-py2.7.egg/nipype/interfaces/base.py", line 775, in run
    runtime = self._run_interface(runtime)
  File "/usr/bin/python27/lib/python2.7/site-packages/nipype-0.4.1-py2.7.egg/nipype/interfaces/base.py", line 1050, in _run_interface
    self.raise_exception(runtime)
  File "/usr/bin/python27/lib/python2.7/site-packages/nipype-0.4.1-py2.7.egg/nipype/interfaces/base.py", line 1027, in raise_exception
    raise RuntimeError(message)
RuntimeError: Command:
flirt -in RF8869_3D_XRT_Dose_CT_A.img -ref clo010809T1Gd.img -out regDose.nii -omat /root/Desktop/Test Data/RF8869_3D_XRT_Dose_CT_A_flirt.mat -applyxfm -bins 640 -searchcost mutualinfo -init subject_to_template.mat
Standard output:

Standard error:
Unrecognised option D
Return code: 255
Interface FLIRT failed to run. 

你知道这是为什么吗?我该怎么解决这个问题呢?

1 个回答

2

你的图片所在的文件夹或文件名里有空格:

/root/Desktop/Test Data

把“Test Data”改成“Test_Data”,这样就可以正常使用了。

撰写回答