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()
使用 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()