我最近刚从matlab转到python所以我可以使用simpleitk并抱歉如果这是一个愚蠢的问题。
我使用simpleitk进行恶魔注册后转换tx。我希望通过执行以下操作获得位移字段及其反转,
disp_field = tx.GetDisplacementField()
disp_field_inv = tx.GetInverseDisplacementField()
事实证明,disp_field正是我所需要的 - 图像体积为256 * 256 * 176。但是disp_field_inv是一个空数组。有谁知道为什么?
然后我尝试了以下内容,
disp_field_inv = sitk.InverseDisplacementField(disp_field,disp_field.GetSize(),disp_field.GetOrigin(),disp_field.GetSpacing(),
subsamplingFactor=16)
但是python就像永远一样。有人知道如何正确地做到这一点吗?
答案 0 :(得分:0)
以下是运行InvertDisplacementField
程序界面
Image itk::simple::InvertDisplacementField (const Image & image1,
uint32_t maximumNumberOfIterations = 10u,
double maxErrorToleranceThreshold = 0.1,
double meanErrorToleranceThreshold = 0.001,
bool enforceBoundaryCondition = true)
所以我认为你通过了
disp_field.GetSize(),disp_field.GetOrigin(),disp_field.GetSpacing(), subsamplingFactor=16
作为参数2到5意味着你传递的界面不是预期的那样?
尝试运行disp_field_inv = sitk.InverseDisplacementField(disp_field)
并查看它是否迭代到结果!
答案 1 :(得分:0)
对于这些年来的价值,我只是想指出,原来的问题和g.stevo的答案(到目前为止)混淆了SimpleITK中可用的两个不同的过滤器,即:
sitk.InverseDisplacementField
sitk.InvertDisplacementField
每个过程API及其各自的图像过滤器都有不同的Execute
函数参数。