typed op• 資料種類:qimage → image
• 呼叫:fullseye.apply(img, "tb_monogenic_orientation", a=0.5, b=0.5)(2-D 的模型是一張圖 + 兩個純量旋鈕 a,b∈[0,1])

*圖為在 128×128 合成輸入上實際執行的輸出。左為輸入,右為輸出。點雲以俯視散點顯示(亮度 = z),一維序列為折線,體資料為沿 z 的最大值投影,影片為中間影格,複數影像為振幅;無法成像的回傳值直接顯示數值。*
*輸出以類 viridis 偽彩色顯示(深紫 = 小,黃 = 大),便於讀取距離、相位、方向、深度這類「量的場」。*
*旋鈕 a 不改變輸出(實測: 0.1 / 0.5 / 0.9 相同)。*
*旋鈕 b 不改變輸出(實測: 0.1 / 0.5 / 0.9 相同)。*
階段(前置運算子 → 本運算子,由左至右):
▸ tb_monogenic_orientation: 處理階段 (文件網站)
換別的影像(合成場景 / 照片 / 硬幣。上排為輸入,下排為對應輸出。旋鈕取預設):
▸ tb_monogenic_orientation: 其他輸入影像 (文件網站)
單演訊號的局部方向 atan2(R2, R1)。→ (H, W)。
> 以下的詳細說明為原文 —— 摘要與標題已翻譯。
Radians in [0, pi): an orientation is defined modulo pi (a grating at 10 degrees and one at 190 degrees are the same grating), and the value is folded into that range rather than left in (-pi, pi] where the same structure would read as two different numbers on either side of a contrast reversal. display=True maps it to [0, 1].
Continuous, not quantised — the angle is read directly from two filters, for any angle, where a steerable bank with K orientations interpolates between its K. Measured against eight grid-exact grating orientations the error is at most 3.6e-15 rad, including the obliques. (Whether that buys anything downstream is a separate question, and the measured answer is mostly *no* — see riesz_displacement.)
Where it is undefined, and the mask is not the one you expect. The orientation dies where the *Riesz vector* dies, which is at every even-symmetric point — local phase 0 or pi, the crest of a bright or dark line — and the amplitude is at full strength there. Measured on a 45-degree grating, the worst orientation error over the whole frame is 0.2764 rad, at a pixel where |R| = 6.8e-16 and monogenic_amplitude reads 1.0000. So masking on the amplitude does not protect you; mask on hypot(q[..., 1], q[..., 2]), the Riesz magnitude. With that mask the error over the same eight orientations is at most 3.6e-15 rad.
Where the Riesz vector is exactly zero, atan2(0, 0) = 0 is returned — a *value*, not a measurement.
Raises ValueError: the input is not a valid quaternion field, or its k component is non-zero; *display* is not a bool.
Typed bridge of the quat op monogenic_orientation into the 2-D evolution registry: the same implementation, called under the op(v, a, b) convention. This op has no tunable parameter; a and b are unused.
• 範例資料目錄(下載 URL / 授權) —— 2-D 用 skimage.data(BSD/公有領域)加合成圖,3-D 給出真實資料源(Stanford/PDS 等)的下載 URL。
• 運算子來歷與參考文獻 —— 該運算子族所依據的研究/方法出處。
下面的程式已確認可以執行(與圖相同的輸入)。在 Studio 說明中,此區塊會變成按鈕,可當場載入並執行。
img_to_monogenic 0.50 0.50 tb_monogenic_orientation 0.50 0.50
下面的範例呼叫的是底層帳本運算子 monogenic_orientation。此橋接運算子只是把同一實作適配為 fn(v, a, b) 慣例,行為完全相同(只是呼叫形式不同)。
• quaternion_monogenic — py -3.11 examples/quaternion_monogenic.py
image 作為輸入)identity · gaussian · mean_box · bilateral · unsharp · median · min_filter · max_filter
typed)tb_points_to_voxel · tb_estimate_point_normals · tb_iss_keypoints · tb_project_points · tb_render_point_depth · tb_statistical_outlier_removal · tb_radius_outlier_removal · tb_voxel_grid_downsample
*Provenance: ops.py — 2D 運算子登記表。本條目由 tools/opdocs.py md 自動產生(請勿手動編輯)。*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.