fullseye

kubelka_munk_reflectance — OPTICS spectral op

使い方

散乱する層の拡散反射率を Kubelka–Munk の閉形式で(吸収係数の曲線から)。

K = diffuse_factor · α(拡散光は斜めに通るので平行光の吸収係数の約 2 倍、Kubelka 1948)、 S = scattering_per_mm。thickness_mm(既定 1 mm)が None なら無限厚 R∞ = 1 + K/S − √((K/S)² + 2K/S)、 有限の厚さ X なら背景 R_g の上の層:

R = [1 − R_g (a − b coth(bSX))] / [a − R_g + b coth(bSX)],  a = 1 + K/S, b = √(a² − 1)

(Kubelka, J. Opt. Soc. Am. 38, 448 (1948))。極限: X → ∞ で R∞、K → 0 で (SX(1 − R_g) + R_g)/(1 + SX(1 − R_g))、R_g = R∞ なら厚さに依らず R∞。逆は K/S = (1 − R∞)²/(2R∞)。

absorption は pairs(λ nm, α 1/mm)(materials.material_nir_absorption の返り値)。 scattering_per_mm は数か、absorption と同じ波長の pairs。

返り値: pairs(λ nm, R)。界面の鏡面反射は含まない(:func:spectral_reflectance_from_material が Saunderson の補正で足す)。

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

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

詳しい使い方ガイド

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

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

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

mtf50 · energy_to_photons · spectral_product · spectral_integral · spectral_stats · hyperspectral_capture · film_thickness_fft · film_thickness_fit

同カテゴリ(spectral)

blackbody_spectrum · cie_illuminant_a · led_spectrum · bandpass_spectrum · silicon_photodiode_qe · energy_to_photons · spectral_product · spectral_integral


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

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