algebra op• Data kinds: qimage → qimage
• Call: import quatimage; quatimage.quat_normalize_image(qimage) -> 'np.ndarray' (or opsquat.get("quat_normalize_image"))
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 :func:quat_color_rotate.)
Raises `ValueError`: any pixel has modulus 0.
• quaternion_monogenic family guide
• 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.
• quaternion_monogenic — py -3.11 examples/quaternion_monogenic.py
qimage as input)quaternion_to_rgb · quat_norm · quat_conjugate_image · quat_image_multiply · monogenic_amplitude · monogenic_phase · monogenic_orientation · quat_color_rotate
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.