ITK python 包装器在注册期间不与其他优化器一起工作 (v4)

ITK python wrapper not working with other optimizers during registration (v4)

使用 itk 网站上给出的示例,我能够让 RegularStepGradientDescentOptimizerv4 与 python 中的 MeanSquaresImageToImageMetricv4 和 ImageRegistrationMethodv4 一起工作。但是,当我想使用 QuasiNewtonOptimizerv4 时,出现错误 TypeError: in method 'itkImageRegistrationMethodv4REGv4F2F2_SetOptimizer', argument 2 of type 'itkObjectToObjectOptimizerBaseTemplateD *'.

我的代码如下。

    PixelType = itk.ctype('float')
    fixedImage = itk.GetImageFromArray(fixed_img.astype(np.float32))
    movingImage = itk.GetImageFromArray(moving_img.astype(np.float32))
    
    Dimension = fixedImage.GetImageDimension()
    FixedImageType = itk.Image[PixelType, Dimension]
    MovingImageType = itk.Image[PixelType, Dimension]

    TransformType = itk.TranslationTransform[itk.D, Dimension]
    initialTransform = TransformType.New()

    optimizer = itk.QuasiNewtonOptimizerv4Template.New()

    optimizer1 = itk.RegularStepGradientDescentOptimizerv4.New(
        LearningRate=1,
        MinimumStepLength=0.001,
        RelaxationFactor=0.05,
        NumberOfIterations=100,
    )
    
    
    metric = itk.MeanSquaresImageToImageMetricv4[FixedImageType, MovingImageType].New()
    
    #THIS WORKS
    registration = itk.ImageRegistrationMethodv4.New(
        FixedImage=fixedImage,
        MovingImage=movingImage,
        Metric=metric,
        Optimizer=optimizer1,
        InitialTransform=initialTransform,
    )


    #THIS DOESN'T WORK
    registration = itk.ImageRegistrationMethodv4.New(
        FixedImage=fixedImage,
        MovingImage=movingImage,
        Metric=metric,
        Optimizer=optimizer,
        InitialTransform=initialTransform,
    )

有没有办法注册 QuasiNewtonOptimizerv4 以在 python 中工作?请指教,谢谢

也许您需要像这样声明优化器: optimizer = itk.QuasiNewtonOptimizerv4Template[itk.D].New()