写真の物理学 ⑧ 絞りと有効口径の物理的意味

Share
📐
写真の物理学シリーズ ⑧
このシリーズでは、写真にまつわる現象を物理学の言葉で記述する。「なんとなくそうなる」を「なぜそうなるか」に変換することが目的である。

「明るいレンズ」、「暗いレンズ」という区別は、F値という一つの数に集約される。だが、なぜ焦点距離を口径で割っただけの無次元量がセンサー面の明るさを決定するのか。本記事では、立体角と照度の物理からF値の意味を導き、有効口径の定義から極端に明るいレンズが直面する光学的困難までを扱う。

有効口径とは何か

レンズの「口径」は前玉の物理的な直径ではない。光学系が集める光束の幅を実質的に決定するのは開口絞り(aperture stop)であり、この絞りを物体側から光学系を通して見たときの像を入射瞳(entrance pupil)と呼ぶ。入射瞳の直径 $D$ が有効口径である。

有効口径が重要なのは、物体空間から見た光学系の「窓」の大きさを決めるのがこの量だからである。被写体から発せられた光のうち、入射瞳を通過する光束だけがセンサーに到達する。 $D$ が大きいほど、より多くの光を集められる。同じ原理は人間の眼の光学にも成り立ち、虹彩が開口絞り、瞳孔径が有効口径に対応する。

F値はなぜ明るさの指標になるのか

F値(F-number)は次のように定義される。

$$ F = \frac{f}{D} $$

$f$ は焦点距離、 $D$ は有効口径である。この比率がなぜ「明るさ」を表すのかを理解するには、拡散面光源からセンサーに届く照度を導出する必要がある。

十分に遠いランベルト面(完全拡散面)の輝度を $L$ とする。被写体が十分遠いとき、センサー上の一点から射出瞳(exit pupil、絞りの像を像側から見たもの)を見込む立体角 $\Omega$ は、近軸近似のもとで射出瞳径を入射瞳径と等しく $D$ とおくと

$$ \Omega \approx \frac{\pi (D/2)^2}{f^2} = \frac{\pi D^2}{4f^2} $$

と表される。この立体角を通じてセンサーに到達する照度 $E_s$ は

$$ E_s = \pi L \left(\frac{D}{2f}\right)^2 = \frac{\pi L}{4F^2} $$

となる。この式が意味するのは、拡散面光源に対するセンサー面照度が輝度 $L$ とF値だけで決まり、焦点距離にも被写体距離にも依存しないということである。

壁を撮影するとき、カメラと壁の距離を変えても露出が変わらないのはこのためである。ただし被写体がレンズに近づき像倍率が無視できなくなるマクロ領域では、像距離の増大に伴って実効F値が表示値から乖離する。この問題はマクロ領域の光学で詳しく扱う。距離を半分にすれば単位面積あたりの光束は逆二乗則で4倍になるが、像倍率の関数的記述で導いたように像もセンサー上で4倍の面積に拡大され、単位面積あたりの照度は相殺される。この現象の詳細な導出は 白い壁に近づいても露出が変わらない物理学的理由 で扱っている。

点光源の場合

点光源(恒星など)では事情が異なる。点光源はセンサー上に有限面積の像を結ばず、回折限界のエアリーディスクに集光される。

点光源から距離 $d$ にあるレンズが受ける光束 $\Phi$ は、光源の光度 $I$ に対して

$$ \Phi = \frac{\pi I D^2}{4d^2} $$

である。この光束がエアリーディスクの微小面積に集中するため、像に集まる光束は $D$ の2乗に比例し、逆二乗則とガイドナンバーの物理学が記述するように光源までの距離 $d$ への依存も残る。拡散面光源のように距離と像の拡大が相殺する機構が働かないため、点光源の撮影ではF値ではなく有効口径の絶対値 $D$ が決定的に重要になる。天体望遠鏡の性能が口径で語られるのはこの理由による。同じ原理は拡散面のボケにも通じており、同じ被写体サイズでのボケ比較で示すように、背景ボケの大きさもまた有効口径に収束する。

F値の段と $\sqrt{2}$ の数列

$E_s = \pi L/(4F^2)$ から明らかなように、センサー面照度はF値の2乗に反比例する。したがって光量を2倍にするにはF値を $1/\sqrt{2}$ 倍にすればよい。

これがF値の「段」(stop)の物理的根拠である。1段絞りを開けるとはF値を $\sqrt{2} \approx 1.414$ で割ることであり、1段絞るとは $\sqrt{2}$ を掛けることである。ここから標準的な等比数列が得られる。

$$ f/1 \;\to\; f/1.4 \;\to\; f/2 \;\to\; f/2.8 \;\to\; f/4 \;\to\; f/5.6 \;\to\; f/8 \;\to\; f/11 \;\to\; f/16 \;\to\; f/22 $$

隣り合うF値の比はすべて $\sqrt{2}$ であり、対応する照度比はすべて2倍である。2段の差は $(\sqrt{2})^2 = 2$ 倍のF値、 $2^2 = 4$ 倍の光量差に対応する。この2のべき乗に基づく「段」のシステムはシャッタースピードやISO感度にも適用され、シャッターの物理学や露出の統合と逆数則で体系的に展開される。

面積の観点からも同じ結論に至る。入射瞳の面積は $\pi(D/2)^2$ であるから、 $D$ が $\sqrt{2}$ 倍になれば面積は2倍になる。F値を1段開けることは、入射瞳の面積を2倍にすることと等価である。

T値という補正

実際のレンズは、光と物質の相互作用で扱ったように、ガラス内部の吸収やレンズ面でのフレネル反射によって光を損失する。F値は純粋に幾何学的な量であり、この損失を反映しない。そこで導入されるのがT値(T-number)である。

レンズ全体の透過率を $\tau$ ( $0 < \tau \leq 1$ ) とすると、T値は

$$ T = \frac{F}{\sqrt{\tau}} $$

で定義される。たとえば $F = 2.0$ のレンズの透過率が $\tau = 0.80$ (20%損失)であれば、 $T = 2.0 / \sqrt{0.80} \approx 2.24$ となる。幾何学的にはF2.0であるが、実効的な明るさはF2.24相当である。

T値が特に重要なのは映画撮影においてである。映画ではカットごとにレンズを交換することが多く、F値が同じでも透過率が異なれば露出が変わってしまう。T値で管理すれば、レンズ交換時に一貫した露出を保てる。シネレンズがT値を表記するのはこのためであり、Log収録とシネマカラーサイエンスで扱うシーン参照ワークフローにおいても、T値による一貫した露出管理が前提となる。

一方、スチル写真ではF値が広く使われる。オートフォーカスの精度や被写界深度の計算は幾何学的な光線の広がり、すなわちF値に依存し、透過率とは独立だからである。

絞り羽根の物理的役割

光束制限とボケの形状

絞り羽根は入射瞳の大きさを連続的に変える機構であり、これによってF値と光量を制御する。しかし絞り羽根にはもう一つの重要な役割がある。ボケの形状を決定することである。

ボケの円を関数で記述するで定量的に導出するように、焦点の合っていない点光源の像は、入射瞳の形状をそのまま反映した光の円盤になる。絞り羽根が5枚なら五角形、6枚なら六角形のボケが生じる。枚数が多いほど開口形状は真円に近づき、ボケも滑らかな円形になる。円形絞りを採用するレンズが多いのは、この光学的理由による。

回折限界

絞りを絞りすぎると、電磁波としての光で記述した波動性に起因する回折が無視できなくなる。円形開口の角度分解能はレイリー基準で

$$ \theta_R = 1.22\,\frac{\lambda}{D} $$

と与えられる( $\lambda$ は光の波長)。 $D$ が小さくなると回折パターンが広がり、像の解像度が低下する。デジタルカメラでF11やF16を超えて絞ると画像が甘くなるのは、回折がセンサーの画素ピッチを超えて像をぼかすためであり、その劣化はMTFで読むレンズの解像力で定量化される。この被写界深度と回折のトレードオフの定量的な分析は回折限界と最適絞りのトレードオフで展開する。

ズームレンズとF値の変動

ズームレンズの多くは、焦点距離によってF値が変動する。18–55mm f/3.5–5.6 というスペックは、広角端でF3.5、望遠端でF5.6であることを意味する。

この挙動は $F = f/D$ から直ちに理解できる。ズーム操作で $f$ が変化するとき、有効口径 $D$ がほぼ一定であれば、F値は焦点距離に比例して増大する。焦点距離が2倍になればF値も2倍、光量は4分の1になる。焦点距離と画角を幾何学で導くで示したように画角も焦点距離に依存するから、ズーム操作は画角と光量を同時に変化させる。

一方、いわゆる通しF値のズームレンズ(たとえば70–200mm f/2.8)は、焦点距離にかかわらずF値を一定に保つ。これは焦点距離の増大に連動して有効口径 $D$ も拡大する機構を備えていることを意味する。200mm f/2.8 では $D = 200/2.8 \approx 71\,\mathrm{mm}$ もの有効口径が必要であり、大口径の前玉と複雑な光学設計が求められる。通しF値のズームレンズが大型で高価になるのは、この物理的制約の帰結である。センサーサイズと換算焦点距離の正体で論じたように、小型センサー用のレンズでは同じ画角をより短い焦点距離で実現できるため、通しF値の設計は物理的に容易になる。

非常に明るいレンズの光学的困難

F1.0を下回るような極端に明るいレンズは、いくつかの根本的な壁に直面する。

収差の急激な増大

レンズの収差は有効口径の拡大に対して急速に増大する。収差の物理学で体系化したザイデル収差理論によれば、球面収差の横収差量は有効口径の3乗に、コマ収差は2乗にそれぞれ比例する。F1.0を達成するには有効口径を焦点距離と同じ大きさにする必要があり、光軸から大きく離れた領域を通過する光線が増えるため、薄肉レンズの結像を支える近軸近似の前提が崩れる。この収差を実用的な水準まで補正するには多数のレンズエレメントと特殊硝材が必要になり、設計の複雑さ、重量、コストが飛躍的に増大する。

周辺減光

画面周辺部では、光軸からの画角 $\theta$ に対してセンサー面照度が

$$ E(\theta) = E_0 \cos^4\theta $$

に従って低下する。いわゆる $\cos^4\theta$ 則であり、斜め方向から見た射出瞳の射影面積の減少、センサーまでの光路長の増大、およびセンサー面への斜入射の効果が複合した結果である。

明るいレンズではこれに加え、機械的ケラレが深刻になる。光円錐が広いため、画面周辺において鏡胴やレンズエレメントの縁が光束の一部を遮りやすい。開放付近ほどこの影響は顕著であり、絞り込むと周辺減光が改善されるのはこの機構による。なお、この減光はRAW現像の信号処理で扱うレンズ補正の主要な対象でもある。

理論的下限

空気中のレンズのF値には理論的な下限がある。像側の最大半頂角を $\theta_{\max}$ として

$$ F = \frac{1}{2\sin\theta_{\max}} $$

が成り立つ。これは開口数 $\mathrm{NA} = \sin\theta_{\max}$ を用いれば $F = 1/(2\,\mathrm{NA})$ と等価である。空気中では $\sin\theta_{\max} \leq 1$ であるから $F \geq 0.5$ が理論的下限となる。 $F = 0.5$ は光円錐の半頂角が90°に達する極限であり、物理的に実現することは不可能に近い。

市販された最も明るいレンズとしては Leica Noctilux-M 50mm f/0.95 ASPH、NIKKOR Z 58mm f/0.95 S Noct、Canon EF 50mm f/1.0L USM などが挙げられるが、これらですら理論限界からわずか2段弱の領域に位置している。センサーサイズとボケの統一的理解で示すように、この下限の存在は小型センサーがフルサイズのボケに追いつけない物理的な理由でもある。この領域では、F値をわずかに小さくするだけで収差補正と周辺減光の問題が指数関数的に悪化する。

まとめ

F値とは焦点距離と有効口径の比 $F = f/D$ として定義される幾何学的な量であり、その物理的意味はセンサー面照度の式 $E_s = \pi L/(4F^2)$ に集約される。この一つの関係式から、 $\sqrt{2}$ の等比数列も、点光源との挙動の違いも、ズームレンズの可変F値も、明るいレンズの困難も、すべて演繹的に理解できる。

T値は透過率を加味した実効F値であり、絞り羽根はボケの形状と回折限界を同時に支配する。そして $F \geq 0.5$ という下限は、レンズ設計の根本的な制約を物理法則のレベルで示している。

F値の背後にある光の幾何学を知ることは、道具の限界と可能性を理解する第一歩である。

Read more

Dependabotの対応が面倒なのでRenovateを導入する

Dependabotくんはある程度の依存関係の更新を通知してくれるが、山のようにprojectを抱えているとなんとも痒いところに手が届かない。 ということで、Renovateを使ってみる。 Build software better, togetherGitHub is where people build software. More than 150 million people use GitHub to discover, fork, and contribute to over 420 million projects.GitHub ここからGitHub Appを入れる。 あとは、指示に従ってポチポチするだけで、超かんたんだった。 感想 自動化最高。

By Sakashita Yasunobu

nodejsのバグを見つけたのでPRを投げてみた

概要 要するに、node --testで特定のバイナリを標準出力に書くと、テストランナーが固まったり、異常終了したりするバグです。 バグ自体は既知のものだったようで、修正がされていました。 test_runner: infinite loop in FileTest#drainRawBuffer when child stdout contains FF 0F followed by large size bytes · Issue #62693 · nodejs/nodeVersion v25.9.0 (also reproduced on v24.14.1 LTS, v22.21.0 LTS, v23.4.0) Platform Darwin 25.

By Sakashita Yasunobu
青空文庫のParser

青空文庫のParser

青空文庫のParserを作ってます。 GitHub - P4suta/aozora: Pure-functional Rust parser for 青空文庫記法 (Aozora Bunko notation): ルビ, 傍点, 縦中横, 外字, 返り点, indent containers, page breaks.Pure-functional Rust parser for 青空文庫記法 (Aozora Bunko notation): ルビ, 傍点, 縦中横, 外字, 返り点, indent containers, page breaks. - P4suta/aozoraGitHubP4suta Rustで作ってますが、配布物はcargoのほかにnpm/pypiでも入手できます Documentation * Playground — try it in

By Sakashita Yasunobu