slicerMorph - ALPACA registration error in open3d

Operating system: Windows 10
Slicer version: 4.11.20210226 r29738 / 7a593c8

Expected behavior:
I am trying to redo an example of the SlicerMORPH workshop (S_2020/README.md at master · SlicerMorph/S_2020 · GitHub). Data can be loaded in the ALPACA module, the “subsampling” step works too, and the points are visualized. Next the “rigid alignment” should work.

Actual behavior:
But the “rigid alignment” does not work / start. Instead the following errors is shown:

Traceback (most recent call last):
File “C:/Program Files/SlicerVersions/Slicer 4.11.20210226/NA-MIC/Extensions-29738/SlicerMorph/lib/Slicer-4.11/qt-scripted-modules/ALPACA.py”, line 513, in onAlignButton
self.transformMatrix = logic.estimateTransform(self.sourcePoints, self.targetPoints, self.sourceFeatures, self.targetFeatures, self.voxelSize, self.skipScalingCheckBox.checked, self.parameterDictionary)
File “C:/Program Files/SlicerVersions/Slicer 4.11.20210226/NA-MIC/Extensions-29738/SlicerMorph/lib/Slicer-4.11/qt-scripted-modules/ALPACA.py”, line 1048, in estimateTransform
parameters[“distanceThreshold”], parameters[“maxRANSAC”], parameters[“maxRANSACValidation”], skipScaling)
File “C:/Program Files/SlicerVersions/Slicer 4.11.20210226/NA-MIC/Extensions-29738/SlicerMorph/lib/Slicer-4.11/qt-scripted-modules/ALPACA.py”, line 1147, in execute_global_registration
], registration.RANSACConvergenceCriteria(maxIter, maxValidation))
TypeError: registration_ransac_based_on_feature_matching(): incompatible function arguments. The following argument types are supported:
1. (source: open3d.open3d_pybind.geometry.PointCloud, target: open3d.open3d_pybind.geometry.PointCloud, source_feature: open3d::registration::Feature, target_feature: open3d::registration::Feature, max_correspondence_distance: float, estimation_method: open3d.open3d_pybind.registration.TransformationEstimation = registration::TransformationEstimationPointToPoint without scaling., ransac_n: int = 4, checkers: List[open3d.open3d_pybind.registration.CorrespondenceChecker] = [], criteria: open3d.open3d_pybind.registration.RANSACConvergenceCriteria = registration::RANSACConvergenceCriteria class with max_iteration=100000, and max_validation=100) → open3d.open3d_pybind.registration.RegistrationResult

As an information:

  • List item Extension “Sandbox” is not installed since it can´t be found in the extension manager

  • List item the “Auto3dgm” module works fine.

Any idea how to solve this issue?

THANKS!!!

Best,
Markus

This is due to a change in open3d (library we use for point cloud registration) versions. If you uninstall and reinstall SlicerMorph, this should be fixed (it should automatically update the open3d to the correct version).

Let us know if that doesn’t help.

Hi,

I deinstalled:

  • List item slicerMorph

  • List item 3dgm

Now I try to perform the registration without the 3dgm model, which must fail since
the module is not installed.

The error message is identical:

File “C:/Program Files/SlicerVersions/Slicer 4.11.20210226/NA-MIC/Extensions-29738/SlicerMorph/lib/Slicer-4.11/qt-scripted-modules/ALPACA.py”, line 513, in onAlignButton
self.transformMatrix = logic.estimateTransform(self.sourcePoints, self.targetPoints, self.sourceFeatures, self.targetFeatures, self.voxelSize, self.skipScalingCheckBox.checked, self.parameterDictionary)
File “C:/Program Files/SlicerVersions/Slicer 4.11.20210226/NA-MIC/Extensions-29738/SlicerMorph/lib/Slicer-4.11/qt-scripted-modules/ALPACA.py”, line 1048, in estimateTransform
parameters[“distanceThreshold”], parameters[“maxRANSAC”], parameters[“maxRANSACValidation”], skipScaling)
File “C:/Program Files/SlicerVersions/Slicer 4.11.20210226/NA-MIC/Extensions-29738/SlicerMorph/lib/Slicer-4.11/qt-scripted-modules/ALPACA.py”, line 1147, in execute_global_registration
], registration.RANSACConvergenceCriteria(maxIter, maxValidation))
TypeError: registration_ransac_based_on_feature_matching(): incompatible function arguments. The following argument types are supported:
1. (source: open3d.open3d_pybind.geometry.PointCloud, target: open3d.open3d_pybind.geometry.PointCloud, source_feature: open3d::registration::Feature, target_feature: open3d::registration::Feature, max_correspondence_distance: float, estimation_method: open3d.open3d_pybind.registration.TransformationEstimation = registration::TransformationEstimationPointToPoint without scaling., ransac_n: int = 4, checkers: List[open3d.open3d_pybind.registration.CorrespondenceChecker] = [], criteria: open3d.open3d_pybind.registration.RANSACConvergenceCriteria = registration::RANSACConvergenceCriteria class with max_iteration=100000, and max_validation=100) → open3d.open3d_pybind.registration.RegistrationResult

For my understanding:

  • List item open3d
  • List item auto3dgm

are two different modules / functions?

Thanks.

Best,
Markus

First off, Auto3Dgm has nothing to do with a ALPACA. They are separate modules and they do not work together or depend each other. They serve different functions as well.

There is currently an issue with the stable and open3d. If you want to use ALPACA, you have to options:

  1. Download a preinstalled stable from this link and use as is, without updating anything. (I.e., just uncompress the zip file and run Slicer) https://app.box.com/shared/static/xziombnoti3jbrc8hqp236v95ghcz2c2.zip

  2. Use the latest preview version and install SlicerMorph.

Hi,

  • List item preinstalled stable Slicer works; slicerMorph and ALPACA are running too; in the Extension there is also now the SandBox extension installed! Previously SandBox was not available in the ExtensionManager

  • List item slicerMorph is not available in the ExtensionManager of the the latest preview version of 3DSlicer

For now I will work with the precompiled version of Slicer; as long as slicerMorph is not available for the latest preview version.

Best,
Markus

The extension had not yet completed its nightly build on the Windows platform. The build for it was started approximately 21 minutes after your post here at 9:57 UTC. SlicerMorph is one of the last extensions built for the night. Something SlicerMorph has knowledge about it and has created Remove SlicerMorph dependencies but provide a convenient mechanism to install those extensions · Issue #195 · SlicerMorph/SlicerMorph · GitHub.