fullseye

dolp_to_zenith — OPTICS shape_from_polarization op

使い方

Invert DoLP to the set of zenith angles that produce it — one for the diffuse model, two (straddling Brewster) for the specular model.

Returns a dict (a table):

out_of_range decides what the unreachable pixels hold: "clamp" (default — the nearest reachable angle, 90 degrees for the diffuse model, flagged by n_solutions == 0, so a caller cannot mistake it for a solution), "nan" or "raise".

The inversion is bisection on the monotone branches of :func:sfp_dolp_model’s closed form (64 halvings — finer than float64). Near Brewster’s angle the specular curve is flat, so a DoLP rounding error of 1e-16 moves the zenith by up to ~1e-6 degrees; that is the conditioning of the problem, not of the solver.

Raises ValueError: DoLP outside [0, 1] or non-finite; refractive_index not > 1; unknown model / out_of_range; with out_of_range="raise", any unreachable pixel.

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

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

詳しい使い方ガイド

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

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

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

abcd_matrix · wavefront_stats · sfr_from_edge · paraxial_trace · seidel_coefficients · spot_stats · tolerance_analysis · wavefront_from_opd

同カテゴリ(shape_from_polarization)

sfp_dolp_model · aolp_to_azimuth · sfp_render · sfp_normals · sfp_disambiguate · sfp_estimate_index · sfp_height


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

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