riesz opimage2d → qimageimport fullseye as fs; fs.ledger.riesz_transform(image) -> 'np.ndarray' (実装を直接呼ぶなら import quatimage; quatimage.riesz_transform(image) -> 'np.ndarray'、台帳から引くなら opsquat.get("riesz_transform"))The 2-D Riesz transform of an image, as a pure quaternion field. → (H, W, 4).
The isotropic generalisation of the Hilbert transform: a pair of filters
with frequency responses -i*u/|w| and -i*v/|w|, returned as the
quaternion (0, R1 f, R2 f, 0). It is the 2-D object that has no complex
analogue — the 1-D analytic signal needs a direction to say which way “90
degrees later” is, and in 2-D there is no single direction, so the answer
needs two components and therefore an algebra with room for them.
For a grating cos(2*pi*(u0*x + v0*y)) sampled on the DFT grid,
``R1 = (u0/|w0|) * sin(2*pi*(u0*x + v0*y))``,
``R2 = (v0/|w0|) * sin(...)``
exactly. Measured over a table of eight grid-exact orientations from 0 to
159.4 degrees on a 64x64 frame, the largest absolute deviation from that
closed form is 6.1e-15, and the orientation recovered through
:func:monogenic_orientation matches the grating’s to 3.6e-15 rad at
every one of them. There is no tolerance to choose.
Note the scalar component is 0, so this is the Riesz transform and not the
monogenic signal — feeding it to :func:monogenic_phase gives pi/2
everywhere, correctly but uselessly. Use :func:monogenic_signal, which
keeps the band-pass image in the scalar slot.
Raises ValueError: image is not a finite real (H, W) array with
H, W >= 2, or exceeds :data:MAX_PIXELS.
py -3.11 examples/quaternion_monogenic.pyqimage を入力に取れる)quaternion_to_rgb · quat_norm · quat_conjugate_image · quat_normalize_image · quat_image_multiply · monogenic_amplitude · monogenic_phase · monogenic_orientation
riesz)monogenic_signal · monogenic_amplitude · monogenic_phase · monogenic_orientation
Provenance: quatimage.py — QUAT operator registry. この per-op ノートは tools/opdocs.py md が自動生成(手編集しない)。
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.