-
Notifications
You must be signed in to change notification settings - Fork 2.5k
Adding minimum volume oriented bounding ellipsoid matching functionality #7377
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Adding minimum volume oriented bounding ellipsoid matching functionality #7377
Conversation
…t/OrientedBoundingEllipsoid
…t/OrientedBoundingEllipsoid
|
Thanks for submitting this pull request! The maintainers of this repository would appreciate if you could update the CHANGELOG.md based on your changes. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This PR adds Oriented Bounding Ellipsoid (OBE) support to Open3D, implementing minimum volume enclosing ellipsoids using Khachiyan's algorithm. The feature provides a tighter geometric approximation than axis-aligned or oriented bounding boxes for certain shapes.
Key changes:
- Implements Khachiyan's algorithm for computing minimum volume enclosing ellipsoids
- Adds OrientedBoundingEllipsoid class to both legacy and tensor-based APIs
- Integrates ellipsoid support across all 3D geometry types with visualization capabilities
Reviewed changes
Copilot reviewed 46 out of 46 changed files in this pull request and generated 9 comments.
Show a summary per file
| File | Description |
|---|---|
| cpp/open3d/t/geometry/kernel/MinimumOBE.cpp | Core Khachiyan algorithm implementation for computing minimum volume ellipsoids |
| cpp/open3d/geometry/BoundingVolume.h/cpp | Legacy API OrientedBoundingEllipsoid class with transformation operations |
| cpp/open3d/t/geometry/BoundingVolume.h/cpp | Tensor-based OrientedBoundingEllipsoid implementation |
| cpp/open3d/geometry/TriangleMeshFactory.cpp | CreateEllipsoid factory method for generating ellipsoid meshes |
| cpp/open3d/geometry/LineSetFactory.cpp | Factory method for creating wireframe representation of ellipsoids |
| cpp/pybind/geometry/boundingvolume.cpp | Python bindings for OrientedBoundingEllipsoid |
| cpp/open3d/visualization/* | Visualization support for rendering ellipsoids |
| cpp/tests/t/geometry/TriangleMesh.cpp | Unit test for CreateEllipsoid functionality |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Co-authored-by: Copilot <[email protected]>
Co-authored-by: Copilot <[email protected]>
Co-authored-by: Copilot <[email protected]>
Co-authored-by: Copilot <[email protected]>
Co-authored-by: Copilot <[email protected]>
Co-authored-by: Copilot <[email protected]>
Co-authored-by: Copilot <[email protected]>
Add Oriented Bounding Ellipsoid (OBE) support to Open3D
Type
Motivation and Context
This PR adds support for Oriented Bounding Ellipsoids (OBE) to Open3D, complementing the existing bounding volume primitives (AABB and OBB). Oriented bounding ellipsoids provide a tighter fit for certain geometries compared to boxes, which can be beneficial for:
The implementation uses Khachiyan's algorithm to compute the minimum volume enclosing ellipsoid, providing an efficient approximation of the optimal bounding ellipsoid.
Checklist:
python util/check_style.py --applyto apply Open3D code styleto my code.
updated accordingly.
results (e.g. screenshots or numbers) here.
Description
Core Implementation
New Classes:
Key Features:
GetOrientedBoundingEllipsoid()method to all 3D geometry base classes (Geometry3D.h:74-75)create_from_points()static method with robust optioncenter,R(rotation),radii,colorTry it: