Types
Configuration Types
BlobBoards.PatternConfig — Type
PatternConfigDeterministic configuration for pattern generation.
Fields (selected)
pattern_resolution::Size2: logical size of the pattern regionmin_scale: minimum σ (in logical units)max_scale: maximum σ (in logical units) — the top of the scale ladder, exact (seecalc_blob_scales). The constructor keyword'snothing(its default) stores a disc diameter of 20% of the short side; the field is always a σ. Users give sizes throughblob_sizes(printed disc diameters) onblob_pattern/blob_board; this struct stores only σ in px (schema v2).seed::UInt64: RNG seed for reproducibilitypixel_type: requested output colorant type (e.g.Gray{N0f16})polarity::Symbol: blob polarity (:darkfor dark blobs on light background,:lightfor light blobs on dark background)
BlobBoards.BoardConfig — Type
BoardConfigPhysical board configuration including canvas, print density, border, and ruler. Construct using physical units (e.g. mm or inch).
BlobBoards.BoardPreamble — Type
BoardPreambleMetadata for a board, bundling the physical BoardConfig and the embedded PatternConfig used to render the pattern region.
Bundle Types
BlobBoards.PatternBundle — Type
PatternBundle <: AbstractBundleContainer returned by blob_pattern with configuration and blob list.
Fields:
pattern_config::PatternConfigblobs::Vector{Disc}
BlobBoards.BoardBundle — Type
BoardBundle <: AbstractBundleContainer returned by blob_board with preamble, generated blobs, and optional saddle points.
Fields:
preamble::BoardPreambleblobs::Vector{Disc}- blob locations in logical units (pixels, COLMAP convention)saddle_points::Vector{Point2{VgcQuantity{Float64}}}- saddle point locations in pixel units (only forframe_style=:saddle)
Blobs and saddle points are stored internally in logical (pixel) coordinates in :pattern reference frame. Use blobs(bundle, reference_frame; units=mm) or saddle_points(bundle, reference_frame; units=mm) to extract in different frames or units.
It is populated only by frame_style = :saddle, and no printed board uses it: all 50 boards in the shipped artifact are frame_style = :ruler with zero saddle points (checked 2026-09-10). The detection pipeline never reads this field either — correspondences are built from blob CENTROIDS alone, so a board's saddles play no part in detection, matching or pose.
An empty vector here is therefore normal, not a defect or a load failure. The capability itself is live and tested (plot_saddle in the authoring extension, saddle_points_python in the Python one) — it is simply unused by the current board population.
Layout Types
BlobBoards.LogicalBoardSizes — Type
LogicalBoardSizesDerived logical sizes (in dots) for a board layout at a given density. Provides canvas, pattern, corner, and frame sizes used by layout_grid.
The margin field is a 4-tuple (left, right, bottom, top) of integral padding values suitable for Makie's figure_padding parameter.
Ruler Types
BlobBoards.RulerOrientation — Type
RulerOrientationEnum for specifying ruler orientation on calibration boards.
BlobBoards.RulerTick — Type
RulerTick{T}Tick specification for a printed ruler. Fields
spacing::T: center-to-center distance between tickswidth::T: the tick's full drawn length across the frame band (physical)
BlobBoards.RulerSpec — Type
RulerSpec{RT<:RulerTick}Ruler specification: the major_tick and minor_tick spacings and widths.
A tick's width is its FULL drawn length across the frame band, in physical units, centred in the band. BoardConfig's defaults (major = the padded band frame_width − 2·frame_padding, minor = half of it) fill the band with major ticks. Requires 0 < minor ≤ major ≤ frame_width − 2·frame_padding (checked by BoardConfig for frame_style = :ruler).
Schema: board bundles before blobboards/board/v3 stored a third field, width (the "ruler width"), and HALF-extent tick widths; the reader drops that field and doubles the tick widths (StructTypes.construct below), which reproduces exactly the ruler those boards were drawn with. The stored hashes.config stays their identity.
Constants
BlobBoards.PRINT_SIZES — Constant
PRINT_SIZESMapping of common paper sizes (ISO/ANSI names) to physical Size2 dimensions. Use with blob_board(paper_size::String, ...).
UID Generation
BlobBoards.hash_config — Function
hash_config(config)Hash a configuration (PatternConfig or BoardPreamble) — SHA-256 over the canonical v1 encoding (canonical_config_json); full hex string.
Minting only: identities of existing boards come from their STORED hashes.config (authoritative on load), never from recomputation.