isl-org / isl-org/Open3D

Defining own feature descriptor in open3d python

Open
#4,351 0 comments 0 reactions 0 assignees View on GitHub
feature request registration
Dominant language
C++
Stars
14k
Forks
2.6k
Avg merge
5d 18h
Merged PRs (30d)
6

Description

**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

I tried to implement some feature descriptor in python and defined it using o3d.pipelines:

```
feature = np.zeros((2, num_pts))
descriptor = o3d.pipelines.registration.Feature
descriptor.dimension = 2
descriptor.num = num_pts # number of points in a point cloud
descriptor.data = feature
```

When I run `registration_ransac_based_on_feature_matching` in open3d for matching, the function refuses it with a type error:

```
TypeError: registration_ransac_based_on_feature_matching(): incompatible function arguments. The following argument types are supported:
1. (source: open3d.cpu.pybind.geometry.PointCloud, target: open3d.cpu.pybind.geometry.PointCloud, source_feature: open3d::pipelines::registration::Feature, target_feature: open3d::pipelines::registration::Feature, mutual_filter: bool, max_correspondence_distance: float, estimation_method: open3d.cpu.pybind.pipelines.registration.TransformationEstimation = TransformationEstimationPointToPoint without scaling., ransac_n: int = 3, checkers: List[open3d.cpu.pybind.pipelines.registration.CorrespondenceChecker] = [], criteria: open3d.cpu.pybind.pipelines.registration.RANSACConvergenceCriteria = RANSACConvergenceCriteria class with max_iteration=100000, and confidence=9.990000e-01) -> open3d.cpu.pybind.pipelines.registration.RegistrationResult

Invoked with: PointCloud with 945 points., PointCloud with 1024 points., , , False, 0.015, TransformationEstimationPointToPoint without scaling., 4, [CorrespondenceCheckerBasedOnEdgeLength with similarity_threshold=0.900000, CorrespondenceCheckerBasedOnDistance with distance_threshold=0.015000], RANSACConvergenceCriteria class with max_iteration=4000000, and confidence=5.000000e+02
```

I presume that `open3d.cpu.pybind.pipelines.registration.Feature` does not equal to `open3d::pipelines::registration::Feature` and causes the issue.

**Describe the solution you'd like**
A clear and concise description of what you want to happen.

Is there a way for a user to easily do some experiments on different feature descriptor implementations with python environment (i.e., making functions accept `open3d.cpu.pybind.pipelines.registration.Feature` format)?

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.