fullseye

light_wavelengths — OPTICS scene op

使い方

光源のスペクトルを、撮像に使う数本の波長と重みに落とす。

レーザー = 1 本、LED = 狭帯域を数本、ハロゲン = 広帯域を数本。同じ面でも 波長で鏡面/散乱の配分が変わるので、広帯域は重ね合わせて撮るのが正しい。

スペクトルの形(2026-10-15 から実形状): LED は Ohno 2005 のモデル(spectralrad.led_spectrum、 半値全幅 = bandwidth_nm、峰 ± 1.5 半値全幅で切る)、ハロゲンは Planck の黒体 (spectralrad.blackbody_spectrum、color_temperature_k 既定 3000 K、峰は Wien の変位則で約 966 nm)を band_nm(既定 380〜1100 nm、Si が感じる範囲)で切ったもの、レーザーは 1 本。light_spec の band_nm で帯域を変えられる。2026-10-15 まではハロゲンを 600 ± 150 nm のガウスで代用していた (3000 K の黒体の峰は 966 nm なので、近赤外の光の大半を落としていた)。

手順: 帯域を k = max(samples, 1) 個の等幅の区間に分け、各区間のエネルギー ∫ S(λ) dλ を重み、区間内のエネルギー重心を波長にする。重みは和が 1。k == 1 なら帯域全体の 重心 1 本(LED は峰、ハロゲンは重心)。レーザー・帯域 0 は λ 1 本・重み 1。 重みはエネルギーの割合で、光子数への換算(λ/hc)と QE は layout_capture(mode="spectral") が掛ける。

layout_capture が spectral_samples 本でこれを呼び、波長ごとの結果を この重みで足し合わせる。

空の入力(light が空の dict)は ValueError。

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

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

詳しい使い方ガイド

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

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

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

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

mtf50 · energy_to_photons · spectral_product · spectral_integral · spectral_integral_table · spectral_stats · kubelka_munk_reflectance · hyperspectral_capture

同カテゴリ(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.