写真の物理学 ⑱ マクロ領域の光学

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

通常の撮影では像倍率はほぼゼロであり、薄肉レンズの結像公式は簡潔な近似で事足りる。ところが被写体がレンズに近づき倍率が無視できなくなると、実効F値は増大し、被写界深度は急激に浅くなり、回折の影響が深刻化する。本記事では、結像公式と倍率の定義を出発点に、マクロ領域で顕在化するこれらの光学的変化を体系的に記述する。

通常撮影からマクロへの連続的移行

像倍率 $m$ は物体距離 $a$ と像距離 $b$ の比 $m = b/a$ で定義される。結像公式から $b = f(1 + m)$、$a = f(1 + 1/m)$ が導かれる。

たとえば焦点距離 100 mm のレンズで 3 m 先の被写体を撮るとき、$m \approx 0.034$ である。像距離はほぼ焦点距離に等しく、$m$ に依存する補正項はほとんど効かない。ところが被写体距離が短くなるにつれ $m$ は増大し、像距離 $b = f(1+m)$ は焦点距離から乖離していく。

一般に $m \geq 0.1$ 程度からマクロ領域と呼ばれることが多い。ただし物理的に明確な閾値があるわけではなく、変化はあくまで連続的である。倍率の増加とともに顕在化する効果は主に次の四つである。

  • 像距離の増大に伴う光量低下
  • 被写界深度の急激な浅化
  • 回折限界の実効的な悪化
  • 前ボケと後ボケの非対称性の増大

いずれも $m$ の関数として定量的に記述できる。以下で順に導出していく。

実効F値の幾何学的導出

F値 $N$ は、焦点距離 $f$ と入射瞳径 $D$ の比 $N = f/D$ として定義される。この定義は無限遠からの平行光束を前提としたものであり、被写体が有限距離にあるとき、像側での光錐の開きは変化し、実効的なF値は表示値から乖離する。

像距離 $b$ において、射出瞳からセンサーへ向かう光錐を考えよう。瞳倍率 $p = 1$(対称光学系)のとき、射出瞳径は入射瞳径 $D$ に等しい。センサー面での有効な開口比は $b/D$ であるから、

$$ N_{\text{eff}} = \frac{b}{D} = \frac{f(1 + m)}{D} = N(1 + m) $$

これがベローズファクター(bellows factor)と呼ばれる関係である。$m = 0$ で $N_{\text{eff}} = N$、$m = 1$(等倍)で $N_{\text{eff}} = 2N$ となる。絞りを f/4 に設定しても、等倍撮影では実効的に f/8 相当の光錐でしかセンサーに光が到達しない。

非対称な光学系では瞳倍率 $p$(射出瞳径と入射瞳径の比)を考慮する必要があり、一般式は次のようになる。

$$ N_{\text{eff}} = N\!\left(1 + \frac{m}{p}\right) $$

マクロ専用レンズの多くは $p \approx 1$ に設計されており、$N_{\text{eff}} = N(1 + m)$ は実用上よい近似である。

実効F値と露出

実効F値の増大は、センサーへの到達光量の低下を意味する。単位面積あたりの照度はF値の2乗に反比例するから、倍率 $m$ での露出倍数は次の通りである。

$$ \text{露出倍数} = \left(\frac{N_{\text{eff}}}{N}\right)^{2} = (1 + m)^{2} $$

段数(EV)に換算すれば、

$$ \Delta\text{EV} = 2\log_{2}(1 + m) $$

$m = 0.5$ で約 1.2 段、$m = 1$ でちょうど 2 段の光量損失が生じる。

現代のカメラが備えるTTL測光はレンズを通過した光を直接測定するため、この減光を自動的に補正する。白い壁に近づいても露出が変わらない物理学的理由で論じたように、TTL測光はセンサーに実際に到達する光を基準とする仕組みである。マクロ撮影でもこの原理は変わらず、ベローズファクターによる光量損失は測光結果に自動的に反映される。

ただし、外部露出計を使用する場合や手動でストロボの出力を計算する場合には、露出倍数 $(1 + m)^{2}$ を自分で補正に織り込まなければならない。

マクロにおける被写界深度

被写界深度の厳密な導出で導出した公式をマクロ領域に適用する。許容錯乱円径を $c$、物体距離を $a = f(1 + 1/m)$ として、ピント面前後の許容範囲を求める。

マクロ領域では過焦点距離に比べて撮影距離が極めて短い。一般式を $m$ で整理すると、被写界深度は次の近似で表される。

$$ \text{DoF} \approx \frac{2cN(1 + m)}{m^{2}} $$

ここで $N$ は表示F値、$c$ は許容錯乱円径である。実効F値 $N_{\text{eff}} = N(1+m)$ を用いれば $\text{DoF} \approx 2cN_{\text{eff}}/m^{2}$ とも書ける。

注目すべきは $m^{2}$ に反比例する項である。倍率が2倍になれば、被写界深度は約4分の1に縮小する。具体的に見てみよう。35 mm フルフレーム($c = 0.03$ mm)で $N = 8$ のとき、

  • $m = 0.1$:$\text{DoF} \approx 52.8$ mm
  • $m = 0.5$:$\text{DoF} \approx 2.88$ mm
  • $m = 1.0$:$\text{DoF} \approx 0.96$ mm
  • $m = 2.0$:$\text{DoF} \approx 0.36$ mm

等倍ですでに 1 mm を切り、倍率が上がるほど急激に浅くなっていく。マクロ撮影でフォーカスブラケッティングや深度合成(focus stacking)が常套手段となるのは、この物理的必然による。

マクロ領域のボケ円径

ピント面から外れた点がセンサー上に描くボケ円の径は、ボケの円を関数で記述するで導いたように、物体のピント面からのずれ量と有効口径の関係で幾何学的に決まる。

マクロ領域で特徴的なのは、前ボケと後ボケの非対称性が極めて大きくなることである。通常撮影($m \ll 1$)では前後のボケ量はほぼ対称に見えるが、$m$ が大きくなるにつれ、後ボケ(背景ボケ)は前ボケ(前景ボケ)よりも顕著に大きくなる。

これは薄肉レンズの幾何学から直接導かれる。ピント面の後方(背景側)にずれた点のボケ円径は、物体距離に対する相対的なずれが大きくなるほど拡大する。マクロ領域では物体距離自体が短いため、背景側の同じ絶対的な距離ずれでも相対値が大きくなり、後ボケが急速に拡大する。一方、前方のボケは物体がレンズの前玉や焦点に近づくことで物理的に制約される。

マクロ撮影の作例で背景が溶けるように大きくぼけ、前景は相対的に控えめなボケにとどまる傾向は、この非対称性の帰結である。センサーサイズとボケの統一的理解も合わせて考えれば、小さなセンサーで同じ被写体サイズを得るにはより高い倍率が必要であり、その分ボケの非対称性も増幅される。

等倍撮影の光学

等倍($m = 1$)は、物体と像が同じ大きさでセンサーに結像する条件であり、マクロ撮影の一つの基準点となる。結像公式に $m = 1$ を代入すると、

$$ a = 2f, \quad b = 2f $$

が得られる。物体距離と像距離が等しく、いずれも焦点距離の2倍である。全共役距離(物体からセンサーまでの距離)は $a + b = 4f$ であり、これは薄肉レンズで実像を結ぶときの最小共役距離でもある。

等倍撮影の光学的特徴をまとめると次の通りである。

  • 実効F値は表示値の2倍:$N_{\text{eff}} = 2N$
  • 光量損失はちょうど 2 段
  • 被写界深度は $\text{DoF} \approx 4cN$
  • 物体側と像側の光路が完全に対称

この対称性は、等倍ではレンズを前後逆に取り付けても結像が成立することを意味する。この性質は次に述べる超等倍撮影の手法へとつながる。

超等倍の結像

$m > 1$ の超等倍領域では、像は物体よりも大きくセンサーに投影される。結像公式から物体距離と像距離の大小関係が等倍を境に反転することがわかる。

$$ m > 1 \implies a = f\!\left(1 + \frac{1}{m}\right) < 2f, \quad b = f(1 + m) > 2f $$

物体は焦点距離の1倍と2倍の間に位置し、像はその反対側で2倍焦点距離よりも遠くに結ばれる。通常撮影($m < 1$)では物体が遠く像が近いが、超等倍ではこの関係が入れ替わる。

ここで興味深い見方ができる。倍率 $m$ での結像は、倍率 $1/m$ の結像で物体と像の位置を交換したものと等価である。$m = 2$ の撮影は、$m = 0.5$ の系で物体と像を入れ替えた構成に他ならない。

この性質を利用したのがレンズの逆付け(リバースマウント)である。通常のレンズは $m < 1$ の領域で収差補正が最適化されているため、超等倍では前後を逆に取り付けることで、設計上の物体側と像側を光学的に正しい向きに戻せる。焦点距離の短いレンズほど、同じフランジバックに対して高い倍率が得られるため、リバースマウントでは広角レンズがしばしば選ばれる。

超等倍では前述の各効果がさらに増幅される。$m = 2$ ならば実効F値は $3N$、光量損失は約 3.2 段、被写界深度は等倍の 4 割弱にまで縮小する。

エクステンションチューブとベローズの光学

レンズ単体の最短撮影距離を超えて倍率を上げる手段の一つが、レンズとカメラボディの間に挿入するエクステンションチューブ(中間リング)やベローズである。

これらの装置は光学素子を含まず、レンズとセンサーの間の距離を物理的に延長するだけの構造をもつ。像距離が増大すると、結像公式に従って対応する物体距離は短くなり、倍率が上がる。

無限遠合焦時($m = 0$、$b = f$)を基準として、繰り出し量 $\Delta b$ だけ像距離を延長した場合の追加倍率は次の通りである。

$$ m_{\text{add}} = \frac{\Delta b}{f} $$

焦点距離が短いレンズほど、同じ繰り出し量で高い追加倍率が得られる。たとえば 25 mm の繰り出しに対して、焦点距離 50 mm のレンズでは追加倍率 0.5、焦点距離 100 mm では 0.25 となる。

もとのレンズの最大倍率を $m_{0}$ とすれば、エクステンションチューブ使用時の合計倍率は $m_{0} + \Delta b / f$ で近似できる。ただしインナーフォーカス方式のレンズでは繰り出しと実効焦点距離の関係が複雑になるため、厳密には修正が必要となる。

ベローズは繰り出し量を連続的に変えられるため倍率の微調整に適している。エクステンションチューブは固定長だが、複数本の組み合わせで段階的に倍率を制御できる。いずれも光学素子を追加しないためレンズ固有の収差特性をそのまま引き継ぐ利点がある一方、像距離の延長に伴って実効F値が増大し、光量損失も増加する。

クローズアップレンズの光学

エクステンションチューブが像側の距離を操作するのに対し、クローズアップレンズ(クローズアップフィルター)は物体側から系の焦点距離を変更するアプローチをとる。

クローズアップレンズは凸レンズであり、撮影レンズの前面にフィルターのように装着する。焦点距離 $f_{\text{cl}}$ のクローズアップレンズを焦点距離 $f$ の撮影レンズに密着させた場合、合成系の焦点距離 $f_{\text{total}}$ は薄肉レンズの合成公式から次のように求まる。

$$ \frac{1}{f_{\text{total}}} = \frac{1}{f} + \frac{1}{f_{\text{cl}}} $$

合成焦点距離は元の焦点距離より短くなるため、同じ像距離でもより高い倍率が得られる。

クローズアップレンズの強さはディオプター(D)で表記されることが多い。ディオプターは焦点距離(メートル単位)の逆数であり、$D = 1000 / f_{\text{cl}} \text{ [mm]}$ である。+2 ディオプターのレンズは焦点距離 500 mm、+4 ディオプターは 250 mm に相当する。

クローズアップレンズは像距離を変えないため露出倍数の増加がなく、取り付けも手軽である。しかし、単玉構成のクローズアップレンズは色収差と球面収差を付加し、画質の劣化が目立ちやすい。高品位な撮影にはアクロマートダブレット(2枚接合の色消しレンズ)構成のクローズアップレンズが推奨される。アクロマート構成はコストが上がるが、色収差を大幅に抑制でき、実用的な画質を保つことができる。

マクロと回折限界の交差

レンズを絞るほど被写界深度は深くなるが、回折による解像度の低下が同時に進行する。マクロ撮影では、このトレードオフが通常撮影よりはるかに厳しくなる。

エアリーディスク(回折による点像の広がり)の直径は、実効F値を用いて次のように表される。

$$ d_{\text{Airy}} = 2.44\,\lambda\,N_{\text{eff}} = 2.44\,\lambda\,N(1 + m) $$

ここで $\lambda$ は光の波長である。可視光の中央付近 $\lambda = 550$ nm を仮定し、等倍撮影($m = 1$)で $N = 8$ に設定した場合、

$$ d_{\text{Airy}} = 2.44 \times 0.00055 \times 8 \times 2 \approx 0.0215\,\text{mm} = 21.5\,\mu\text{m} $$

これは通常撮影で $N = 16$ に絞ったときの回折ディスクに相当する。マクロ撮影では、表示F値の割に回折の影響が大きく効いてくるのである。

回折ディスクの径が許容錯乱円径 $c$ を下回るための条件を求めると、

$$ N \leq \frac{c}{2.44\,\lambda\,(1 + m)} $$

フルフレーム($c = 0.03$ mm)で $m = 1$ のとき $N \leq 11.2$ 程度となる。等倍撮影では f/11 付近が回折の実質的な限界であり、それ以上絞ると被写界深度は深くなるものの解像度は低下していく。

被写界深度を確保するために絞りたい要求と、回折を抑えるために開けたい要求は、マクロ領域で正面から衝突する。この物理的な衝突を回避する実践的手段が深度合成(focus stacking)であり、ピント位置をわずかにずらした複数枚の画像を合成することで、絞りを開いたまま見かけ上の被写界深度を拡大する手法である。

まとめ

マクロ撮影の光学を倍率 $m$ の関数として通観した。通常撮影からの連続的な延長でありながら、$m$ が大きくなるにつれて各パラメータは劇的に変化する。

  • 実効F値:$N_{\text{eff}} = N(1 + m)$。等倍で表示値の2倍。
  • 光量損失:$(1 + m)^{2}$ 倍、段数では $2\log_{2}(1 + m)$ 段。TTL測光が自動で補正する。
  • 被写界深度:$\text{DoF} \approx 2cN(1 + m)/m^{2}$。$m^{2}$ に反比例し、等倍で 1 mm を切る。
  • 回折ディスク:$d_{\text{Airy}} = 2.44\,\lambda\,N(1 + m)$。絞りの実効的な影響が増幅される。

等倍($m = 1$)は物体距離と像距離が等しくなる対称点であり、超等倍($m > 1$)では両者の関係が反転する。倍率を上げる手段として、エクステンションチューブは像距離を延長して追加倍率 $\Delta b/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