Defining own feature descriptor in open3d python
- 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.