Superquadrics Toolbox

A toolbox containing functions and algorithms for plotting and visualization, even-spaced points sampling, and fitting of superquadrics.
51 Downloads
Updated 15 Feb 2023

View License

This MATLAB toolbox provide a probablistic algorithm (EMS) for robust and accurate superquadric recovery from point clouds, together with several useful utility functions and algorithms related to superquadrics.
Introduction to the EMS:
An algorithm to recover a superquadric surface/primitive from a given point cloud, with good robustness to noise and outliers, accuracy and efficiency. Superquadrics are a family of geometric primitives with a rich shape vocabulary, including cuboids, cylinders, ellipsoids, octahedra and their intermediates. The superquadric recovered from a point cloud provides a concise, volumetric, and geometrically meaningful interpretation of objects and environment. It can work as a low-level volumetric abstraction, from which higher level tasks, e.g., motion planning, collision detection and robot-environment interaction, can be built up.
  • The EMS algorithm is located in EMS_matlab/src/EMS.m.
  • The multi-superquadric extension is located in EMS_matlab/src/Hierarchical_EMS.m.
  • Implementation demos are included in the /example_scripts.
Other classical methods and utility functions are located in EMS_matlab/src/utilities, where
  • superquadricsFitting.m summarized the least square superquadric recovery methods, based on different objective functions (implicit function[1], radial distance[2]).
  • robust_fitting.m is an implementation of the robust fitting algorithm proposed in [3].
  • numerical_fitting.m is an implementation of the numerical stable recovery method proposed in [4].
  • showSuperquadrics.m is for visualization of superquadrics meshes. Note that one can choose to visualize a tapered superquadric in its option.
  • sphericalProduct_sampling.m is an algorithm to sample points almost uniformly spaced on the surface of a given superquadric.
For any further implementation details, you are welcomed to visit https://github.com/bmlklwx/EMS-superquadric_fitting and start an issue.
If you find this package usefule, please cite:
------------------------------------------------------------------------------------------------------------------
W. Liu, Y. Wu, S. Ruan, G. S. Chirikjian, Robust and Accurate Superquadric Recovery: a Probabilistic Approach, 2022 IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR), New Orleans, LA, USA, 2022, pp. 2666-2675.
------------------------------------------------------------------------------------------------------------------
Reference:
[1] F. Solina and R. Bajcsy. Recovery of parametric models fromr ange images: the case for superquadrics with global defomations. IEEE Transactions on Pattern Analysis and Machine Intelligence, 12(2):131–147, 1990
[2] A. D. Gross and T. E. Boult. Error of fit measures for recovering parametric solids. In Proceedings of the IEEE/CVF International Conference on Computer Vision (ICCV), pages 690–694, 1988
[3] Y. Hu and W. G. Wee. Robust 3D part extraction from range images with deformable superquadric models. In Signal Processing, Sensor Fusion, and Target Recognition IV, volume 2484, pages 524 – 535. International Society for Optics and Photonics, SPIE, 1995
[4] N. Vaskevicius and A. Birk. Revisiting superquadric fitting: A numerically stable formulation. IEEE Transactions on Pattern Analysis and Machine Intelligence, 41(1):220–233, 2019

Cite As

Weixiao Liu (2024). Superquadrics Toolbox (https://www.mathworks.com/matlabcentral/fileexchange/111745-superquadrics-toolbox), MATLAB Central File Exchange. Retrieved .

W. Liu, Y. Wu, S. Ruan, G. Chirikjian, Robust and Accurate Superquadric Recovery: a Probabilistic Approach, CVPR 2022

MATLAB Release Compatibility
Created with R2022a
Compatible with any release
Platform Compatibility
Windows macOS Linux

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!
Version Published Release Notes
1.0.3

fix a dependence

1.0.2

edit readme

1.0.1

Adding references.

1.0.0