fullseye

four_f_filter — OPTICS wave op

使い方

4f 光学プロセッサ: 2 枚のレンズとフーリエ面のフィルタを通した出力。

入力面 → レンズ 1 → フーリエ面(transfer を掛ける)→ レンズ 2 → 出力面。スカラ回折の理想 4f 系では出力は

``out(x, y) = (u * h)(-x, -y)``

—— 畳み込みに座標反転が付く。2 枚のレンズがそれぞれ前向きのフーリエ 変換を行い、F{F{u}}(x) = u(-x) だからである。「フーリエ面で掛けるだけ」 の計算と実物の 4f 系はここが違うので、反転は既定でする。

離散でもこの反転は厳密で、添字の写像 n -> (-n) mod N になる (np.roll(a[::-1], 1))。反転そのものは添字の入れ替えなので誤差を持たない —— 残る誤差は FFT の往復が乗せる 1e-16 台だけである(transfer を 1 に した実測で最大絶対差 3.4e-16)。

invert を False にすると反転を省く(フィルタ後の場を入力座標のまま 見たいとき。物理の 4f 系ではないので、既定にはしない)。

真値(この op が再現するもの):

Raises ValueError: field / transfer が 2-D でない、形が違う、 2x2 未満、:data:MAX_FIELD_ELEMENTS 超、非有限、マスク付き。

ファミリ共通の入力契約(fail-closed)

optics の全 op は入力を検証してから計算する(黙って通さない):

詳しい使い方ガイド

参考(サンプルデータ・文献)

実行できる例(この op を実際に呼ぶ検証済みサンプル)

型が繋がる次の op(cimage を入力に取れる)

angular_spectrum_propagate · jones_apply

同カテゴリ(wave)

airy_pattern · angular_spectrum_propagate · fraunhofer_pattern · fourier_plane_filter · gaussian_beam · defocus_from_shift · pupil_psf · pupil_blur


Provenance: optics.py — OPTICS operator registry. この per-op ノートは tools/opdocs.py md が自動生成(手編集しない)。

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.