InsightSoftwareConsortium / InsightSoftwareConsortium/ITKElastix

Error when using keyword arguments for the itk.elastix_registration_method

Open
#212 3 comments 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
281
Forks
29
Avg merge
16h 28m
Merged PRs (30d)
8

Description

It seems that `itk.elastix_registration_method` doesn't deduce image types correctly when keyword arguments are used for the images instead of just arguments. See minimal example:

```
import itk
import numpy as np

# Create 3D images
fixed_image = itk.image_from_array(np.random.rand(50, 50, 50).astype(np.float32))
moving_image = itk.image_from_array(np.random.rand(50, 50, 50).astype(np.float32))

# Create parameter object
parameter_object = itk.ParameterObject.New()
parameter_object.SetParameterMap(parameter_object.GetDefaultParameterMap('bspline'))

# This works fine
print("Registration ... ")
result_image, result_parameters = itk.elastix_registration_method(fixed_image,
moving_image,
parameter_object=parameter_object)

# The following doesn't work
print("Registration with keyword arguments ... ")
result_image, result_parameters = itk.elastix_registration_method(fixed_image=fixed_image,
moving_image=moving_image,
parameter_object=parameter_object)
```

And the output is:
```
Registration ...
Registration with keyword arguments ...
Traceback (most recent call last):
File "C:\Users\kntatsis\work\keyword_argument_bug\keyword_bug.py", line 20, in
result_image, result_parameters = itk.elastix_registration_method(fixed_image=fixed_image,
File "C:\Users\kntatsis\miniconda3\envs\itk-elastix-env\lib\site-packages\itk\support\helpers.py", line 176, in image_filter_wrapper
return image_filter(*args, **kwargs)
File "C:\Users\kntatsis\miniconda3\envs\itk-elastix-env\lib\site-packages\itk\itkElastixRegistrationMethodPython.py", line 756, in elastix_registration_method
instance = itk.ElastixRegistrationMethod.New(*args, **kwargs)
File "C:\Users\kntatsis\miniconda3\envs\itk-elastix-env\lib\site-packages\itk\support\template_class.py", line 735, in New
return self[list(keys)[0]].New(*args, **kwargs)
File "C:\Users\kntatsis\miniconda3\envs\itk-elastix-env\lib\site-packages\itk\itkElastixRegistrationMethodPython.py", line 521, in New
template_class.New(obj, *args, **kargs)
File "C:\Users\kntatsis\miniconda3\envs\itk-elastix-env\lib\site-packages\itk\support\template_class.py", line 800, in New
itk.set_inputs(self, args, kargs)
File "C:\Users\kntatsis\miniconda3\envs\itk-elastix-env\lib\site-packages\itk\support\extras.py", line 1580, in set_inputs
attrib(itk.output(value))
TypeError: Expecting argument of type itkImageF2 or itkImageSourceIF2.
```

I am not sure if it is discussed/documented somewhere else.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.