Skip to main content

raygeo.geo.algo.hull

Hull computation from binary images.

Provides convex and concave (shrink-wrap) hull generation from boolean images, using contour tracing and Bézier gravity attraction. Coordinates are returned in image pixel space (y increases downward).

Functions

get_concave_hull()

get_concave_hull(
boolean_image: numpy.ndarray,
gravity: float = 0.1,
) -> geo.Geometry | None

Compute a concave (shrink-wrap) hull with Bézier gravity.

ParameterTypeDescription
boolean_imagenumpy.ndarray2D boolean array.
gravityfloat = 0.1Shrink-wrap factor 0.0-1.0. 0 gives convex hull.
Returnsgeo.Geometry | NoneConcave hull as Geometry in pixel coords, or None.
ComplexityO(wh + n log n + n * g) time, O(n) space where wh is the image size, n the number of contour points, and g the number of gravity iterations

Concave vs convex hull

Concave vs convex hull

get_enclosing_hull()

get_enclosing_hull(boolean_image: numpy.ndarray) -> geo.Geometry | None

Compute a single convex hull enclosing all content.

ParameterTypeDescription
boolean_imagenumpy.ndarray2D boolean array.
Returnsgeo.Geometry | NoneConvex hull as Geometry in pixel coords, or None.
ComplexityO(wh + n log n) time, O(n) space where wh is the image size and n the number of contour points

get_hulls_from_image()

get_hulls_from_image(boolean_image: numpy.ndarray) -> list[geo.Geometry]

Compute a separate convex hull for each distinct component.

ParameterTypeDescription
boolean_imagenumpy.ndarray2D boolean array.
Returnslist[geo.Geometry]List of Geometry objects in pixel coords.
ComplexityO(wh + n log n) time, O(n) space where wh is the image size and n the total number of contour points