写真の物理学 ⑤ センサーサイズと換算焦点距離の正体

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

「35mm換算50mm」。カメラの仕様表で頻繁に目にする表記だが、この「換算」が何を保存し何を保存しないかを厳密に理解している人は少ない。本稿ではクロップファクターをセンサー対角線の幾何学から導出し、換算焦点距離と換算F値の物理的意味を明確にする。「換算焦点距離が同じなら同じ写真が撮れる」という素朴な理解が、なぜ物理的には誤りなのかを示す。

画角とセンサーの幾何学

シリーズ第1回で示したように、焦点距離 $f$ のレンズが無限遠に合焦しているとき、像はレンズの後方焦点面に結ばれる。像距離 $b = f$ であり、センサーはこの焦点面に置かれる。

このとき、センサーの寸法が画角を決定する。幅 $w$ 、高さ $h$ のセンサーの対角線長を $d_s$ とすると

$$ d_s = \sqrt{w^2 + h^2} $$

無限遠に合焦した状態での対角画角 $2\alpha$ は

$$ \tan\alpha = \frac{d_s}{2f} $$

$$ 2\alpha = 2\arctan\frac{d_s}{2f} $$

で与えられる。第4回で詳しく導いたように、画角を決定するのは焦点距離とセンサーサイズの 比 $d_s / f$ であり、どちらか一方だけでは画角は定まらない。初めてのレンズに迷ったらで「焦点距離が画角を決める」と述べたのは、センサーサイズが固定されている前提の話だった。センサーサイズが変われば、同じ焦点距離でも画角は変わる。

クロップファクターの幾何学的導出

35mmフルフレームセンサーの寸法は $36 \times 24$ mm である。対角線長は

$$ d_{\text{FF}} = \sqrt{36^2 + 24^2} = \sqrt{1296 + 576} = \sqrt{1872} \approx 43.27 \text{ mm} $$

任意のセンサーの対角線長を $d_s$ としたとき、クロップファクター $C$ は

$$ C = \frac{d_{\text{FF}}}{d_s} $$

と定義される。これは二つのセンサーの対角線長の比にすぎない。純粋に幾何学的な量であり、光学的な性質は一切含まれていない。

代表的なフォーマットのクロップファクターを確認する。

  • APS-C(Nikon DX): $23.5 \times 15.6$ mm、$d_s \approx 28.2$ mm、$C \approx 1.53$
  • APS-C(Canon): $22.2 \times 14.8$ mm、$d_s \approx 26.7$ mm、$C \approx 1.62$
  • マイクロフォーサーズ: $17.3 \times 13.0$ mm、$d_s \approx 21.6$ mm、$C \approx 2.0$
  • 1型: $13.2 \times 8.8$ mm、$d_s \approx 15.9$ mm、$C \approx 2.72$
  • スマートフォン(1/1.56型相当): 約 $8.2 \times 6.1$ mm、$d_s \approx 10.2$ mm、$C \approx 4.2$

クロップファクターの「クロップ」は切り取りを意味する。小さなセンサーは、レンズが形成する像円の中央部分だけを切り取って記録する。切り取られた範囲が狭いから画角が狭くなる。ただそれだけのことだ。

「35mm換算焦点距離」の正体

焦点距離 $f$ のレンズを対角線長 $d_s$ のセンサーで使ったとき、同じ画角をフルフレームで得るために必要な焦点距離 $f_{\text{eq}}$ を求める。

画角一致の条件は

$$ \frac{d_s}{2f} = \frac{d_{\text{FF}}}{2f_{\text{eq}}} $$

すなわち

$$ f_{\text{eq}} = f \times \frac{d_{\text{FF}}}{d_s} = f \times C $$

これが「35mm換算焦点距離」だ。APS-C($C \approx 1.5$)に装着した50mmレンズの換算焦点距離は $50 \times 1.5 = 75$ mm となる。これは「75mmレンズをフルフレームで使ったときと同じ画角になる」ことを意味する。

ここで決定的に重要な事実を強調する。換算焦点距離は画角の等価を表す記法であって、光学系の等価を意味しない。 50mmレンズの焦点距離は、どのセンサーに装着しても物理的に50mmのままだ。結像公式 $1/f = 1/a + 1/b$ における $f$ は変わらない。変わったのはセンサーのサイズであり、像円から切り取られる範囲が変わっただけである。

この操作は、写真のトリミングと本質的に同じだ。フルフレームで撮影した画像の中央部分を切り出せば、APS-Cセンサーで撮影したのと同じ画角の画像が得られる。センサーサイズの違いとは、光学的には「異なるサイズのトリミング」に相当する。

換算で保存されるもの

換算焦点距離の一致が成立しているとき、何が保存されるかを明確にする。

画角

定義から保存される。換算焦点距離の存在理由がこれだ。

パースペクティブ

物撮りは遠くからで論じ、第6回で厳密に証明したように、パースペクティブ(遠近感の見え方)を決定するのはカメラと被写体の距離のみであり、焦点距離にもセンサーサイズにも依存しない。同じ位置から撮影する限り、パースペクティブは完全に保存される。

換算で保存されないもの

画角が一致しても、以下の物理量は一致しない。ここが多くの誤解の源泉だ。

ボケ量と被写界深度

ボケ円の直径は、第8回で定義した有効口径(入射瞳径)$D = f/N$ に依存する。同じ画角を得るために焦点距離を変えた場合、F値 $N$ が同じでも有効口径は異なる。

フルサイズで75mm f/2.8のレンズと、APS-Cで50mm f/2.8のレンズを比較する。画角は一致する。しかし有効口径は

  • フルサイズ: $D = 75 / 2.8 \approx 26.8$ mm
  • APS-C: $D = 50 / 2.8 \approx 17.9$ mm

と大きく異なる。有効口径はボケ円の物理的な直径を決定する量であり、これが異なる以上、同じF値でもボケ量は等しくならない。被写界深度も同様だ。

回折限界

回折によるエアリーディスクの直径は

$$ d_{\text{Airy}} = 2.44 \, \lambda \, N $$

( $\lambda$ は第2回で述べた光の波長)であり、F値 $N$ のみに依存する。センサーサイズとは無関係だ。

しかし、回折が最終画像の解像度に与える影響はピクセルピッチとの関係で決まる。同じ画素数ならば小さなセンサーほどピクセルピッチが小さい。たとえば2400万画素のフルサイズとAPS-Cでは、ピクセルピッチは約 $5.9 \, \mu\text{m}$ と $3.9 \, \mu\text{m}$ になる。同じF値で撮影しても、エアリーディスクのサイズは同じだが、ピクセルピッチの小さなAPS-Cではエアリーディスクが複数ピクセルにまたがりやすくなり、より早く回折の影響が顕在化する。

ノイズ特性

ノイズの主因はフォトンショットノイズであり、信号対雑音比(SNR)はセンサーが捕集する光子数 $n$ に対して $\text{SNR} \propto \sqrt{n}$ で与えられる。同じ露出設定(同じF値、シャッタースピード、ISO)で撮影した場合、センサー上の照度は等しいが、大きなセンサーはより広い面積で光を受けるため、総光子数が多い。フルサイズのセンサー面積はAPS-C(Nikon DX)の約 $1.5^2 = 2.25$ 倍であり、同一条件で約2.25倍の光子を捕集する。

換算F値の物理的意味

「換算F値」は誤解を招きやすい概念だが、物理的な意味は明確だ。

F値 $N$ は焦点距離 $f$ と有効口径 $D$ の比で定義される。

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

画角を一致させるとき $f_{\text{eq}} = f \times C$ だ。もし有効口径 $D$ が変わらないなら、F値は

$$ N_{\text{eq}} = \frac{f_{\text{eq}}}{D} = \frac{f \times C}{D} = N \times C $$

になる。これが換算F値だ。元のF値にクロップファクターを乗じたものにすぎない。

APS-C($C = 1.5$)の50mm f/1.8は、有効口径 $D = 50/1.8 \approx 27.8$ mm である。フルサイズの75mm f/2.7も、有効口径 $D = 75/2.7 \approx 27.8$ mm だ。有効口径が等しい。換算F値とは、有効口径を基準にした比較を、F値の言葉で表現したものである。

ここから先は、この「f/2.7相当」が何を意味するかを、三つの観点から整理する。

換算F値論争の整理

換算F値をめぐる議論が紛糾するのは、F値が三つの異なる物理量に同時に関与しているからだ。

観点1: 光束と露出

センサー上の照度(単位面積あたりに到達する光束)は、被写体の輝度 $L$ とF値 $N$ によって

$$ E_{\text{sensor}} = \frac{\pi \, L}{4 N^2} $$

で与えられる。白い壁に近づいても露出が変わらない物理学的理由で論じた面光源の性質から、この照度はセンサーサイズに依存しない。

したがって、露出の文脈では換算F値を使う必要がない。 f/2.8はどのセンサーサイズでもf/2.8であり、同じシャッタースピードとISO感度で同じ露出(同じ画像の明るさ)が得られる。「APS-Cのf/1.8はフルサイズのf/2.7相当だから暗い」という主張は、物理的に誤りだ。センサー上の照度はf/1.8そのものであり、暗くなることはない。

観点2: ボケと被写界深度

最終画像上のボケの大きさを比較するには、センサー上のボケ円径をセンサーの寸法で正規化する必要がある。

被写体距離 $s$ の被写体に合焦し、距離 $s_b$ にある背景のボケ円径 $c$ は、近似的に

$$ c \approx \frac{f^2}{N} \cdot \frac{|s_b - s|}{s \cdot s_b} $$

で与えられる。最終画像上での相対的なボケの大きさは $c / d_s$ だ。

画角を一致させ、同じ被写体距離から撮影する場合、$f$ はクロップファクターに比例して変わる($f_1 = C \cdot f_2$、ここでフォーマット1がフルサイズ、フォーマット2が小型センサー)。最終画像上で同じボケの大きさを得る条件は

$$ \frac{c_1}{d_{\text{FF}}} = \frac{c_2}{d_{s,2}} $$

これが成立するのは、二つのレンズの有効口径 $D = f/N$ が等しいときだ。すなわち $N_1 = N_2 \times C$ のとき、あるいは逆に $N_2 = N_1 / C$ のときである。

ボケの等価にはまさに換算F値を使う必要がある。 APS-Cのf/1.8がフルサイズのf/2.7と同等のボケだという主張は、この文脈では正しい(同じ被写体サイズでの比較は第13回で、フォーマット間の定量比較は第14回で展開する)。

観点3: 回折

エアリーディスクの直径 $d_{\text{Airy}} = 2.44 \lambda N$ はF値のみに依存し、センサーサイズには依存しない。

ボケの等価条件($N_2 = N_1 / C$)に従って絞りを揃えると、小型センサー側のF値は小さくなる。これはエアリーディスクを小さくする方向に働く。一方、小型センサーはピクセルピッチが小さいため、F値が小さくてもピクセルレベルでは回折の影響を受けやすい。

この二つの効果は独立に評価する必要がある。回折に関しては、F値、ピクセルピッチ、要求される解像度の三者の関係で判断すべきであり、「換算F値で回折も等価になる」という単純化は成立しない。

等価条件の完全な定式化

画角、パースペクティブ、被写界深度、ノイズのすべてにおいて等価な写真を撮るための条件を定式化する(色再現を含むパイプライン全体の統合は最終回で扱う)。

基準系として、フルサイズ(フォーマット1)で焦点距離 $f_1$ 、F値 $N_1$ 、ISO感度 $\text{ISO}_1$ 、シャッタースピード $t$ で撮影するとする。クロップファクター $C$ の小型センサー(フォーマット2)で同じ写真を撮るには、以下の五つの条件をすべて満たす必要がある。

条件1. 同じ撮影位置

パースペクティブの保存。これは焦点距離やセンサーサイズとは独立の条件だ。

条件2. 焦点距離の換算

$$ f_2 = \frac{f_1}{C} $$

画角の保存。$d_{s,1} / f_1 = d_{s,2} / f_2$ から直ちに導かれる。

条件3. F値の換算

$$ N_2 = \frac{N_1}{C} $$

被写界深度とボケの保存。有効口径 $D = f/N$ を等しく保つ条件だ。

条件4. ISO感度の換算

$$ \text{ISO}_2 = \frac{\text{ISO}_1}{C^2} $$

ノイズの保存。この条件の根拠を示す。

条件3により、フォーマット2のF値はフォーマット1より小さい。センサー上の照度は $E \propto 1/N^2$ であるから、フォーマット2のセンサー上の照度はフォーマット1の $C^2$ 倍になる。一方、フォーマット2のセンサー面積はフォーマット1の $1/C^2$ 倍である。

$$ \text{総光子数}2 \propto E_2 \times A_2 \propto \frac{C^2}{N_1^2} \times \frac{d{\text{FF}}^2}{C^2} = \frac{d_{\text{FF}}^2}{N_1^2} \propto \text{総光子数}_1 $$

総光子数は等しい。したがって、フォトンショットノイズに起因するSNRも等しい。しかし、センサー上の照度が $C^2$ 倍になっているため、同じ画像の明るさを得るにはISO感度を $1/C^2$ に下げる必要がある。

条件5. 同じシャッタースピード

モーションブラーの保存。シャッタースピードはセンサーサイズとは独立の変数だ。

具体例

フルサイズで 50mm f/2.0、ISO 800、1/250秒 で撮影した場合、APS-C($C = 1.5$)で同じ写真を得るには

  • $f_2 = 50 / 1.5 \approx 33$ mm
  • $N_2 = 2.0 / 1.5 \approx 1.33$
  • $\text{ISO}_2 = 800 / 1.5^2 \approx 356$
  • シャッタースピード: 1/250秒(変更なし)

33mm f/1.33というレンズは、APS-C用としても入手困難だ。ここに小型フォーマットの物理的な限界が表れている。大きなセンサーと同じボケとノイズ性能を小型センサーで再現するには、より大きな有効口径のレンズが必要であり、それはしばしばレンズの光学設計上の限界を超える。

逆方向も考えてみよう。マイクロフォーサーズ($C = 2.0$)の 25mm f/1.4、ISO 200、1/500秒 と等価な写真をフルサイズで得るには

  • $f_1 = 25 \times 2.0 = 50$ mm
  • $N_1 = 1.4 \times 2.0 = 2.8$
  • $\text{ISO}_1 = 200 \times 2.0^2 = 800$
  • シャッタースピード: 1/500秒

50mm f/2.8、ISO 800は何の変哲もない設定だ。フルサイズにとっては平凡な条件が、マイクロフォーサーズではf/1.4という大口径レンズを必要とする。等価条件の非対称性がここに見える。

まとめ

クロップファクターはセンサー対角線長の比であり、純粋に幾何学的な量だ。

換算焦点距離は画角の等価を表す記法であり、光学系の等価を意味しない。50mmレンズの焦点距離は、どのセンサーに装着しても50mmだ。

換算F値は有効口径を基準にした等価であり、ボケと被写界深度に関しては正当な比較指標だが、露出の文脈で使えば誤りになる。回折に関しては、F値とピクセルピッチの両方を考慮する必要があり、換算F値だけでは判断できない。

異なるセンサーサイズで「同じ写真」を厳密に再現するには、焦点距離、F値、ISO感度のすべてをクロップファクターに基づいて変換する必要がある。そしてその変換は、小型センサーに対して常に厳しい方向に働く。大型センサーの優位性は「ボケる」ことではなく、同じ写真を、より緩い光学的条件で実現できることにある。

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