fullseye

optical_camera — OPTICS scene op

使い方

実在の諸元(焦点距離・画素ピッチ・解像度・作動距離)から理想ピンホールを組む。

tilt_deg は真上(0°)からの傾き、azimuth_deg はその方位。カメラは look_at_mm を見下ろす。返り値には内部行列 K [px] と姿勢 (R, t) が入る ―― calib / calibration3d 系の op と同じ規約なので、そのまま 再投影や校正の検証に渡せる。

視野は tan 半角 = (画素数/2 · 画素ピッチ) / 像距離 で決まる。作動距離での 視野幅 [mm] を fov_mm に入れてあるので、部品が収まるかを見てから撮れる。

image_distance_mm はピンホールからセンサーまでの距離(像距離 v)。省くと focal_mm(無限遠に合焦した近似)。★レンズを作動距離に合焦させた構成では v = f·WD/(WD − f) で、倍率は v/WD = f/(WD − f)(optical_budget と同じ薄肉の式)。 2026-10-15 まで vision_layout と observe_surface が v の代わりに f を渡していて、 描く画像の倍率は f/WD、バジェットの倍率は f/(WD − f) と同じ構成で 2 つのモデルが混ざって いた(f 25 mm・WD 200 mm で視野が 14 % 広い)。focal_mm はレンズの焦点距離のまま 残る(被写界深度のぼけ defocus_blur が使う)。

telecentric=True は物体側テレセントリック: 主光線が光軸に平行なので、光線は 1 点(視点)から 放射状に出るのでなく、光軸に平行に出る(正射影)。画素の物体側の実寸は作動距離での値 pixel · WD / v に固定され、部品を持ち上げても像の大きさが変わらない(寸法測定でテレセンを 使う理由そのもの)。この場合 K は作動距離の面でだけ成り立つ名目の値で、projection が "orthographic" になる(透視の再投影には使えない)。2026-10-15 まで lens_spec(telecentric=True) を読むコードが無く、旗を立てても部品を 20 mm 持ち上げると像が 11 % 大きくなっていた。

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

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

詳しい使い方ガイド

背景知識ガイド(この op の手前にある物理・規約)

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

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

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

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

同カテゴリ(scene)

scene_material · scene_plane · scene_sphere · scene_box · scene_cylinder · surface_defect · surface_finish · random_defects


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

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