blob_seeds — BLOB split op

• Data kinds: image2d → labels2d

• Call: import fullseye as fs; fs.ledger.blob_seeds(distance: 'Any', h: 'float', connectivity: 'int' = 8) -> 'np.ndarray' (to call the implementation directly, import blob2d; blob2d.blob_seeds(distance: 'Any', h: 'float', connectivity: 'int' = 8) -> 'np.ndarray'; from the registry, opsblob.get("blob_seeds"))

Usage

h-maxima seeds. h is an absolute value in the same units as distance.

Keeps only the "maxima that rise at least h high", numbers their connected components and returns them. Used as seeds when splitting merged clumps.

How it differs from the existing fs.op.xsk2_h_maxima (a gap that poc_cell_counting

recorded):

• That one clips its input to [0, 1], so passing a raw distance map breaks it (2 px and 20 px both become 1.0). This one does not clip.

• Its h is 0.05 + 0.3a = a ratio relative to the normalised image, so 1 large object in the image already raises the effective h on the small-object side (measured: the lower bound moved 0.42 → 0.80 px). Here it is in pixels (or physical units).

Speed: the reconstruction runs only inside the bounding box of each connected component. Propagation through the background disappears, so for 200 discs in 512x512: 237.7 ms → 15.3 ms (15.5x), with the result identical at every pixel (measured 2026-09-06).

Parameters

distance : array_like

2-D real-valued field. Usually the output of blob_distance.

h : float

Rise height. Same unit as distance; must be greater than 0.

Larger values give fewer seeds (= less over-splitting, more under-splitting).

connectivity : {4, 8}

How maxima are connected.

Returns

numpy.ndarray

int32 label image (background 0, seeds 1..n).

Detailed usage guide

• blob_analysis family guide

References (sample data, literature)

• Sample-data catalog (download URLs / licences) — 2-D uses skimage.data (BSD/public domain) plus synthetic images; 3-D lists download URLs for real data sources (Stanford, PDS, …).

• Operator provenance and references — the sources of the research/methods this op family came from.

• The canonical algorithm (author, year) and its uses are named in the family usage guide above.

Runnable examples (verified samples that actually call this op)

• blob_split_tour — py -3.11 examples/blob_split_tour.py

Ops the type connects to (they accept labels2d as input)

blob_features · blob_select · blob_select_largest · blob_split · blob_region · blob_boundaries · blob_overlay

Same category (split)

blob_distance · blob_split


*Provenance: blob2d.py — BLOB operator registry. This per-op note is generated by tools/opdocs.py md (do not hand-edit).*

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.