写真の物理学 ⑬ 同じ被写体サイズでのボケ比較

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

「望遠レンズはボケる」。写真を撮る人なら一度は聞いたことがある。しかしこの命題は、何と比較しているのか、どの条件を揃えているのかを明示しなければ不完全だ。本記事では、被写体を同じ大きさに写す制約のもとで、ボケ量が焦点距離・F値・背景距離の関数としてどう振る舞うかを厳密に記述する。

前提の確認

本稿では、ボケの円を関数で記述するで導出した以下のボケ円径の公式を出発点とする。合焦距離 $d$ にピントを合わせたとき、距離 $d_{\text{bg}}$ にある背景の点光源がセンサー上に作るボケ円の直径 $b$ は

$$ b = \frac{f^2}{N} \left| \frac{1}{d} - \frac{1}{d_{\text{bg}}} \right| $$

だ。 $f$ は焦点距離、 $N$ はF値である。背景が合焦面より遠い場合( $d_{\text{bg}} > d$ )、絶対値を外して

$$ b = \frac{f^2}{N} \cdot \frac{d_{\text{bg}} - d}{d \cdot d_{\text{bg}}} $$

と書ける。以下では後ボケ(背景のボケ)のみを扱い、 $d_{\text{bg}} > d$ を仮定する。

倍率一定の制約条件

像倍率の関数的記述で導いたように、横倍率の絶対値は

$$ |m| = \frac{f}{d - f} $$

で与えられる。「被写体を同じ大きさに写す」とは、この倍率 $m$ を一定に保つことにほかならない。以下では $m$ を定数として扱い、添字を省略して単に $m$ と書く。

$m = f/(d - f)$ を $d$ について解くと

$$ d = f + \frac{f}{m} = \frac{f(m + 1)}{m} $$

が得られる。撮影距離は焦点距離に正比例する。50mmから85mmに交換して同じフレーミングを保つには、撮影距離を $85/50 = 1.7$ 倍にしなければならない。パースペクティブは撮影距離だけで決まることを思い出せば、この距離の変化がパースペクティブも同時に変えてしまうことがわかる。ボケと遠近感はレンズ交換のたびに連動して変わる。

自由度の整理

倍率 $m$ を固定すると、撮影距離 $d$ は焦点距離 $f$ の従属変数になる。残る自由なパラメータは次の三つだ。

  • 焦点距離 $f$
  • F値 $N$
  • 背景までの距離 $d_{\text{bg}}$

ボケ円径 $b$ をこれら三つの関数として書き直すのが次の目標である。

ボケ円径の変数変換

ボケ円径の式に $d = f(m + 1)/m$ を代入する。

$$ b = \frac{f^2}{N} \cdot \frac{d_{\text{bg}} - \dfrac{f(m+1)}{m}}{\dfrac{f(m+1)}{m} \cdot d_{\text{bg}}} $$

分母を整理すると

$$ b = \frac{f^2}{N} \cdot \frac{m}{f(m+1)} \cdot \frac{d_{\text{bg}} - \dfrac{f(m+1)}{m}}{d_{\text{bg}}} $$

$$ = \frac{fm}{N(m+1)} \cdot \left(1 - \frac{f(m+1)}{m \cdot d_{\text{bg}}}\right) $$

$d = f(m+1)/m$ を思い出せば、括弧内は

$$ 1 - \frac{d}{d_{\text{bg}}} $$

にほかならない。したがって

$$ \boxed{\; b = \frac{fm}{N(m+1)} \left(1 - \frac{d}{d_{\text{bg}}}\right) \;} $$

これが倍率一定条件のもとでのボケ円径だ。右辺は二つの因子の積として読める。

  • 第一因子 $fm / (N(m+1))$ は背景が無限遠にあるときのボケ円径の上限
  • 第二因子 $(1 - d/d_{\text{bg}})$ は背景の有限距離による減衰

背景が十分遠い場合

$d_{\text{bg}} \gg d$ のとき $d/d_{\text{bg}} \to 0$ であるから

$$ b \approx \frac{fm}{N(m+1)} $$

通常のポートレートや物撮りでは $m \ll 1$ (たとえば全身ポートレートで $m \approx 0.02$ 、バストアップで $m \approx 0.05$ )であるから $m + 1 \approx 1$ として

$$ b \approx \frac{fm}{N} $$

この近似には明快な物理的解釈がある。ボケ円径をセンサー上の像ではなく、物体空間に射影して考えよう。物体空間でのボケの大きさ $b_{\text{obj}}$ は、センサー上のボケ円径を倍率で割ったものだ。

$$ b_{\text{obj}} = \frac{b}{m} \approx \frac{f}{N} = D $$

$D = f/N$ は入射瞳の直径、すなわち有効口径である。背景が十分遠いとき、物体空間でのボケの大きさはレンズの有効口径そのものに一致する。絞りと有効口径の物理的意味で論じたように、有効口径はレンズが光を集める「窓」の直径だ。遠くの背景がボケるとき、その窓がそのまま背景の上に投影されているのだと理解できる。

「望遠はボケる」の条件付き証明

近似式 $b \approx fm/N$ から、F値 $N$ と倍率 $m$ を揃えた比較では、ボケ円径は焦点距離に正比例する。

$$ \frac{b_2}{b_1} = \frac{f_2}{f_1} \quad (N_1 = N_2,\; m_1 = m_2,\; d_{\text{bg}} \gg d) $$

これが「望遠はボケる」の数学的内容だ。ただし、この命題が成立するには三つの条件が同時に満たされなければならない。

  1. 被写体を同じ大きさに写している(倍率一定)
  2. F値が同じ
  3. 背景が十分遠い

条件1を外すと比較の性質が変わる。同じ場所から同じF値で焦点距離だけ変えた場合、ボケ円径の一般式 $b = (f^2/N)|1/d - 1/d_{\text{bg}}|$ において $d$ は変わらないから、 $b \propto f^2$ となって二乗に比例する。一見すると望遠の優位がさらに強まるように見えるが、これは画角が狭くなることによる「見かけ上の効果」を含んでおり、フレーミングを揃えた比較ではない。

具体例

NIKKOR Z 35mm f/1.8 S、50mm f/1.8 S、85mm f/1.8 Sの三本で、バストアップ( $m \approx 0.05$ )の撮影を考える。F値はすべてf/1.8だ。背景が十分遠い場合のセンサー上のボケ円径は

$$ b_{35} \approx \frac{35 \times 0.05}{1.8} \approx 0.97 \;\text{mm} $$

$$ b_{50} \approx \frac{50 \times 0.05}{1.8} \approx 1.39 \;\text{mm} $$

$$ b_{85} \approx \frac{85 \times 0.05}{1.8} \approx 2.36 \;\text{mm} $$

比率は $35 : 50 : 85 = 1 : 1.43 : 2.43$ であり、焦点距離の比そのものだ。85mmのボケは35mmの約2.4倍。同じf/1.8であっても、焦点距離の差がそのままボケの差になる。

物体空間に換算すれば、いずれも $b_{\text{obj}} \approx f/N = f/1.8$ であるから、35mmなら約19mm、50mmなら約28mm、85mmなら約47mmの直径のボケが背景に浮かぶことになる。

背景距離の定量的影響

背景が無限遠でない場合、補正因子 $(1 - d/d_{\text{bg}})$ が効いてくる。撮影距離 $d = f(m+1)/m$ は焦点距離に比例するため、焦点距離が長いほど $d/d_{\text{bg}}$ は大きくなり、補正因子は小さくなる。

近い背景でのボケの比較

先ほどの三本のレンズで $m = 0.05$ のとき、各レンズの撮影距離は

$$ d_{35} = \frac{35 \times 1.05}{0.05} = 735 \;\text{mm} \approx 0.74 \;\text{m} $$

$$ d_{50} = \frac{50 \times 1.05}{0.05} = 1050 \;\text{mm} \approx 1.05 \;\text{m} $$

$$ d_{85} = \frac{85 \times 1.05}{0.05} = 1785 \;\text{mm} \approx 1.79 \;\text{m} $$

背景が被写体から3メートル後方にある場合を考えよう。背景までのレンズからの距離は $d_{\text{bg}} = d + 3000$ mmとなるから

$$ d_{\text{bg},35} = 3735 \;\text{mm}, \quad d_{\text{bg},50} = 4050 \;\text{mm}, \quad d_{\text{bg},85} = 4785 \;\text{mm} $$

補正因子はそれぞれ

$$ 1 - \frac{d_{35}}{d_{\text{bg},35}} = 1 - \frac{735}{3735} \approx 0.803 $$

$$ 1 - \frac{d_{50}}{d_{\text{bg},50}} = 1 - \frac{1050}{4050} \approx 0.741 $$

$$ 1 - \frac{d_{85}}{d_{\text{bg},85}} = 1 - \frac{1785}{4785} \approx 0.627 $$

ボケ円径の実際の比率は

$$ b_{35} : b_{50} : b_{85} = 35 \times 0.803 : 50 \times 0.741 : 85 \times 0.627 $$

$$ = 28.1 : 37.1 : 53.3 = 1 : 1.32 : 1.90 $$

無限遠背景での比率 $1 : 1.43 : 2.43$ と比べて、望遠側の優位が縮小している。85mmの優位は2.43倍から1.90倍に減った。背景が近いほど、焦点距離によるボケの差は小さくなる。

メカニズムの説明

なぜ背景が近いと差が縮まるのか。理由は幾何学的だ。望遠レンズで同じフレーミングを保つと撮影距離が伸びる。撮影距離が伸びれば、被写体と背景の距離比 $d_{\text{bg}}/d$ は小さくなる。ボケは合焦面と背景の「距離の差」から生まれるから、被写体と背景が相対的に接近すれば、ボケが生まれる余地が減る。

これはパースペクティブは撮影距離だけで決まるで述べた圧縮効果と同根の現象だ。望遠レンズで離れると、被写体と背景の奥行き方向の距離比が縮小して前後が圧縮される。ボケの文脈では、この圧縮がボケの「原料」である距離の差を奪う方向に働く。焦点距離が長くなることで有効口径が大きくなりボケが増える効果と、撮影距離が遠くなり距離の差が相対的に縮小してボケが減る効果が拮抗する。遠い背景ほど前者が支配的になり、近い背景ほど後者が無視できなくなる。

F値を揃えた比較と有効口径を揃えた比較

ここまでの議論はF値を揃えて焦点距離を変える比較だった。しかしセンサーサイズと換算焦点距離の正体で論じたように、「何を揃えるか」によって結論は変わる。有効口径 $D = f/N$ を揃えたらどうなるか。

有効口径一定の条件 $D = f/N = \text{const}$ 、すなわち $N = f/D$ を代入すると

$$ b = \frac{fm}{f/D \cdot (m+1)} \left(1 - \frac{d}{d_{\text{bg}}}\right) = \frac{Dm}{m+1} \left(1 - \frac{d}{d_{\text{bg}}}\right) $$

第一因子 $Dm/(m+1)$ は $f$ に依存しない。つまり背景が十分遠い場合

$$ b \approx \frac{Dm}{m+1} \approx Dm \quad (m \ll 1) $$

であり、ボケ円径は有効口径だけで決まる。焦点距離によらない。

しかし背景が有限距離にあるとき、第二因子の $d = f(m+1)/m$ が $f$ に依存する。焦点距離が長いほど $d/d_{\text{bg}}$ が大きくなるため、補正因子が小さくなり、ボケは減る。有効口径を揃えた場合、望遠レンズは広角レンズよりもボケが少なくなりうる。

二つの比較のまとめ

背景が十分遠い極限では

  • F値を揃えた比較: $b \propto f$ 。焦点距離に比例。望遠ほどボケる。
  • 有効口径を揃えた比較: $b$ は $f$ に依存しない。焦点距離によらず同じボケ。

「望遠はボケる」が成り立つのは、F値を揃えた比較においてだ。同じf/1.8でも85mmの有効口径は $85/1.8 \approx 47$ mm、35mmでは $35/1.8 \approx 19$ mmであり、有効口径は2.4倍も異なる。ボケの差の実体は、F値の差ではなく有効口径の差にある。

F値という指標は露出の統合と逆数則で見たように露出の管理には便利だが、ボケの比較においては物理の本質を覆い隠す。ボケの大きさを支配しているのは、あくまで有効口径 $D$ だ。

実用的なボケの予測手順

撮影前にボケ量を見積もるための手順を整理する。

ステップ1: 倍率の推定

被写体の実寸 $S$ とセンサーの短辺長 $H$ (フルサイズなら24mm)から、被写体がセンサー短辺の何割を占めるかで倍率を見積もる。

$$ m \approx \frac{H \times (\text{占有率})}{S} $$

たとえば身長170cmの人物をフルサイズセンサーの短辺いっぱいに写す場合、 $m \approx 24/1700 \approx 0.014$ だ。

ステップ2: ボケ円径の計算

背景が十分遠ければ $b \approx fm/N$ を使う。背景の距離がわかっていれば完全な式を使う。

$$ b = \frac{fm}{N(m+1)} \left(1 - \frac{f(m+1)}{m \cdot d_{\text{bg}}}\right) $$

ステップ3: 鑑賞サイズへの換算

センサー上のボケ円径 $b$ を鑑賞サイズに換算する。鑑賞サイズの長辺を $W_{\text{view}}$ 、センサーの長辺を $W_{\text{sensor}}$ (フルサイズなら36mm)とすると、鑑賞時のボケ円の直径は

$$ b_{\text{view}} = b \times \frac{W_{\text{view}}}{W_{\text{sensor}}} $$

A4横(長辺297mm)に印刷するなら拡大率は約8.25倍だ。センサー上の1mmのボケ円は、印刷上で約8.25mmの円になる。

実用上の目安

フルサイズでバストアップ( $m \approx 0.05$ )、遠景背景の条件では

  • 85mm f/1.8: $b \approx 2.4$ mm(A4で約20mm径のボケ。背景は大きくとろける)
  • 50mm f/1.8: $b \approx 1.4$ mm(A4で約12mm径。背景の輪郭がやや残る)
  • 35mm f/1.8: $b \approx 1.0$ mm(A4で約8mm径。背景の形が識別できる程度のボケ)

ボケ円径が1mmを超えると、A4サイズでも背景が十分に溶ける。0.5mm以下では背景の構造が残りやすい。

まとめ

倍率一定(同じ被写体サイズ)の制約条件のもとで、ボケ円径を焦点距離・F値・背景距離の関数として導出し、次の結果を得た。

  • ボケ円径は $b = \dfrac{fm}{N(m+1)}\!\left(1 - \dfrac{d}{d_{\text{bg}}}\right)$ で与えられ、 $d = f(m+1)/m$ は焦点距離に比例する
  • F値を揃えた比較では、背景が十分遠いときボケ円径は焦点距離に正比例する。「望遠はボケる」はこの条件のもとで成立する
  • 有効口径を揃えた比較では、背景が十分遠いときボケ円径は焦点距離に依存しない。ボケの本質は有効口径にある
  • 背景が近いと、望遠レンズの撮影距離の増大が距離比を縮小させ、焦点距離によるボケの差は縮まる
  • 物体空間でのボケの大きさは、背景が十分遠ければ有効口径 $D = f/N$ に収束する

「望遠はボケる」は間違いではないが、それは条件付きの真実だ。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