quat_normalize_image — QUAT algebra op

• Data kinds: qimage → qimage

• Call: import fullseye as fs; fs.ledger.quat_normalize_image(qimage) -> 'np.ndarray' (to call the implementation directly, import quatimage; quatimage.quat_normalize_image(qimage) -> 'np.ndarray'; from the registry, opsquat.get("quat_normalize_image"))

Usage

Per-pixel normalisation to unit modulus. → (H, W, 4).

Fail-closed on a zero pixel. A quaternion image routinely contains exact zeros — a black pixel is (0,0,0,0) — so the case is not hypothetical, and a zero quaternion has no direction to normalise towards. It is refused by name, with the count and the first offending pixel's row and column in the message, rather than divided by norm + eps: that idiom returns zero, and a zero used as a rotor becomes the identity rotation with no exception and no NaN to mark it. (pose_quat.quat_normalize did exactly that until 2026-09-01 and now fail-closes too; see quat_color_rotate.)

Raises ValueError: any pixel has modulus 0.

Detailed usage guide

• quaternion_monogenic 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)

• quaternion_monogenic — py -3.11 examples/quaternion_monogenic.py

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

quaternion_to_rgb · quat_norm · quat_conjugate_image · quat_image_multiply · monogenic_amplitude · monogenic_phase · monogenic_orientation · quat_color_rotate

Same category (algebra)

quat_conjugate_image · quat_image_multiply


*Provenance: quatimage.py — QUAT 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.