写真の物理学 ㊸ 水中・霧中・宇宙の光

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

光の振る舞いは媒質によって劇的に変わる。空気中で当たり前に成り立つ前提が、水中では屈折と吸収に支配され、霧の中では散乱に飲み込まれ、宇宙空間では散乱する媒質そのものが消える。本稿では水中、霧中、宇宙空間という三つの極端な環境での光の物理を、写真撮影の実務と結びつけながら記述する。

水中での光の屈折

水の屈折率は可視光域で $n \approx 1.333$ である。空気($n \approx 1.000$)から水中に光が入射するとスネルの法則 $n_1 \sin\theta_1 = n_2 \sin\theta_2$ に従って屈折角が小さくなり、光線は法線方向に曲がる。

この屈折が写真撮影にもたらす影響は二つある。

画角の縮小。 空気中で焦点距離 $f$ のレンズが持つ画角を $2\alpha$ とすると、水中でフラットポート越しに撮影した場合の実効画角はおよそ $2\alpha / n$ に狭まる。35mm換算で24mmの広角レンズが、水中では約32mm相当の画角になる計算である。

見かけの距離の短縮。 水中の被写体は、屈折によって実際の距離の約 $3/4$($= 1/n$)の位置にあるように見える。1m先の被写体が約75cmの距離に見える。この見かけ上の距離短縮は、オートフォーカスの挙動やマニュアルフォーカスの距離目盛にも影響を与える。

水中での色の吸収

水は波長によって異なる吸収係数を持つ。純水の吸収係数が最小になるのは波長約420nm付近(青色域)で、そこから長波長側に向かって吸収は急激に増大する。赤色光(620nm以上)の吸収係数は青色光の数十倍に達するため、深度が増すにつれて赤、橙、黄の順に失われ、水中の世界は青一色に近づいていく。

この波長選択的減衰はベール・ランベルトの法則で定量化できる。光路長 $d$ を通過した後の光強度 $I$ は

$$ I(\lambda) = I_0(\lambda) \cdot e^{-\alpha(\lambda) \cdot d} $$

で与えられる。ここで $\alpha(\lambda)$ は波長 $\lambda$ における吸収係数、$I_0(\lambda)$ は入射光強度である。長波長側から順に減衰し、波長700nm付近では水深5mで入射光の95%以上が吸収される。水深30mを超えると肉眼で識別できる色はほぼ青のみとなる。

水中撮影で被写体の本来の色を記録するためには、ストロボや水中ライトで近距離から白色光を補う必要がある。光源から被写体までの距離が短ければ、光が水中を通過する距離も短くなり、吸収による色の偏りを最小限に抑えられる。ストロボの色再現についてはストロボ撮影で色がずれる理由と対策も参考になる。

スネルの窓

水中から水面を見上げると、頭上に円形の「窓」が見える。これがスネルの窓(Snell's window)である。

水から空気への臨界角は $\theta_c = \arcsin(1/n) \approx 48.6°$ であり、この角度を超える入射光は全反射して水面を透過できない。したがって水中の観察者にとって、水面上の180°の半球全体が $48.6° \times 2 \approx 97.2°$ の円錐内に圧縮されて見える。この円錐の外側では水面が鏡のように水底や周囲の水中を映し出す。

スネルの窓は水面が穏やかなときほど明瞭に現れる。波や揺れがあると窓の輪郭はゆがみ、全反射と屈折の境界が複雑に揺れ動く。水中で広角レンズを上方に向けて撮影すると、この窓を円形のフレームとして構図に取り込むことができる。

全反射そのものの物理やフレネルの式によるp偏光・s偏光の反射率の違いについては、既出の記事で詳しく扱っている。

水中の散乱

水中には常にプランクトン、砂粒、気泡、有機物などの浮遊粒子が存在する。これらの粒子による散乱は、水中写真の大敵であるバックスキャッター(後方散乱)を引き起こす。

ストロボ光がレンズの光軸に近い位置から発光されると、光路上の粒子が後方に散乱した光をレンズが拾い、画面上に無数の白い点として記録される。これはちょうど、暗い夜道で車のヘッドライトが霧の粒子を照らして前方が真っ白になるのと同じ原理である。

バックスキャッターを軽減するための基本戦略は二つある。

  1. ストロボをレンズ光軸から離す。 アーム等でストロボを横や上に大きくオフセットすることで、レンズの視野内にある粒子を直接照射しにくくなる。
  2. 被写体に近づく。 レンズと被写体の間の水柱(水の層)が短いほど、散乱に寄与する粒子の数が減る。水中写真で「寄れるだけ寄る」が鉄則とされるのは、逆二乗則によるストロボ光の減衰を抑えつつ、散乱と色吸収の両方を低減できるからである。

フラットポートとドームポートの光学

水中撮影用ハウジングのポート(レンズの前に位置する透明な窓)には、大きく分けてフラットポートとドームポートの二種類がある。

フラットポートは平面ガラスである。水から空気への屈折が平面で生じるため、前述のとおり画角は約 $1/n$ 倍に狭まり、被写体は約33%拡大されて見える。マクロ撮影では拡大効果がむしろ有利に働くことがあるため、マクロレンズにはフラットポートが一般的に使われる。ただし画面周辺部では屈折による歪曲収差と色収差が増大する。

ドームポートは球面(半球状)のガラスまたはアクリルである。球の中心にレンズの入射瞳を一致させると、すべての光線が球面に対して法線方向に入射するため屈折が生じない。結果として空気中とほぼ同じ画角が維持される。ドームポートは水中に仮想像(バーチャルイメージ)を形成し、その仮想像はレンズのすぐ前方に位置する。このためレンズは非常に近い距離にピントを合わせる必要があり、最短撮影距離やクローズアップレンズの追加が問題になることがある。広角レンズにはドームポートが標準的に選ばれる。

霧の物理

霧は直径1から数十μmの微小な水滴が大気中に浮遊した状態である。水滴の直径が可視光の波長(0.4から0.7μm)よりはるかに大きいため、霧粒子による散乱はミー散乱の領域に属する。

ミー散乱の重要な特徴は、散乱が前方に強く偏ることである。レイリー散乱(粒径が波長より十分に小さい場合)では前方と後方の散乱強度がほぼ等しいのに対し、ミー散乱では散乱光の大部分が前方の狭い角度範囲に集中する。これが、霧の中で車のハイビームが逆効果になる理由である。前方に放たれた強い光が霧粒子で前方散乱され、ドライバーの目に向かって戻ってくる。ロービームのほうが有効なのは、光源の位置が低く、散乱光が目の高さに届きにくいためである。

写真撮影において霧は被写体のコントラストを低下させる。これは散乱光が光路に混入する「エアライト」の効果であり、遠方の被写体ほどエアライトの寄与が大きくなって背景に溶け込んでいく。霧の中の風景に独特の奥行き感が生まれるのは、距離に応じたコントラスト低下が視覚的な空気遠近法を強調するからである。

ミー散乱はレイリー散乱と異なり波長依存性が弱い。霧が白く見えるのはこのためで、すべての可視光がほぼ均等に散乱される。夕焼けが赤いのは太陽光と大気の物理学で扱ったように短波長光が優先的にレイリー散乱されるからだが、霧にはそのような色の選択性がない。

視程の定義

視程(Meteorological Optical Range, MOR)は、背景に対する黒い対象物のコントラストがある閾値まで低下する距離として定義される。

コシュミーダー(Koschmieder)の理論では、距離 $d$ における対象物と背景のコントラスト $C(d)$ は

$$ C(d) = C_0 \cdot e^{-\beta d} $$

で表される。$C_0$ は距離ゼロでのコントラスト(黒い対象物なら $C_0 = 1$)、$\beta$ は大気の消散係数(散乱係数と吸収係数の和)である。

人間の目がコントラストを識別できる閾値を $\epsilon$ とすると、視程 $V$ は $C(V) = \epsilon$ から

$$ V = \frac{-\ln \epsilon}{\beta} $$

と導かれる。国際的な気象視程の定義ではコントラスト閾値 $\epsilon = 0.05$(5%)が採用されており、このとき $V = \ln(1/0.05)/\beta \approx 3.0/\beta$ となる。日常的に使われるコシュミーダーの式 $V = 3.912/\beta$ は閾値を $\epsilon = 0.02$(2%)とした場合の値であり、$\ln(1/0.02) \approx 3.912$ から得られる。

この指数関数的なコントラスト減衰こそが、霧の中で数十メートル先が見えなくなる一方、薄霧では数キロメートル先まで見通せる理由を定量的に説明する。消散係数 $\beta$ が10倍になれば視程は10分の1になる。

宇宙空間での光

宇宙空間には光を散乱する媒質がほぼ存在しない。大気がなければレイリー散乱もミー散乱も起こらず、空は真っ黒になる。太陽光は直進し、影には光が回り込まない。

この「散乱の不在」が生み出す最も顕著な視覚的特徴は、極端なコントラストである。太陽光が直接当たる面は激しく明るく、影の部分はほぼ完全な暗闇になる。地上では大気散乱による拡散光(天空光)が影を柔らかく照らすが、宇宙空間にはこの拡散光が存在しない。月面や宇宙ステーションの写真で影が真っ黒に落ちるのはこのためである。

唯一の例外は、近くに大きな反射面がある場合である。月面では地表(レゴリス)からの反射光がわずかに影を照らし、宇宙ステーションでは地球からの照り返し(アースライト)が補助光源として機能する。しかしその照度は直射日光に比べて桁違いに低い。

宇宙写真の露出問題

宇宙空間での撮影は、地上では経験しない露出の問題を突きつける。太陽光直射面の輝度と影部の輝度の差が20EVを優に超えるのである。

ダイナミックレンジとビット深度で述べたように、現代のデジタルセンサーのダイナミックレンジは高性能なもので14から15EV程度である。20EV以上の輝度差を一枚の画像に収めることは原理的に不可能であり、ハイライトかシャドウのいずれかを犠牲にするか、複数露出を合成する必要がある。

宇宙ステーションからの地球撮影でも同様の問題が生じる。昼側の地表は十分に明るいが、そこから90度視線を振れば宇宙の漆黒が広がり、その中に微かな星が点在する。一枚の露出でこの両方を記録することは、センサーのダイナミックレンジの限界を超える。HDRとトーンマッピングの数学で扱った技術が、宇宙写真の後処理でも重要になる理由がここにある。

月面写真の光学

アポロ計画の月面写真に星が写っていないことは、かつて陰謀論の「根拠」として引き合いに出された。しかしこれは露出の物理で完全に説明できる。

月面の太陽光直射面の露出値はおよそEV 15である。アポロの宇宙飛行士が使用したハッセルブラッドのカメラは、ISO 160のフィルムでシャッター速度1/250秒、絞りf/5.6からf/11程度に設定されていた。これはEV 13から15に相当し、太陽光に照らされた月面と宇宙服を適正露出にするための設定である。

一方、月のない晴天の夜空は、一等星のような明るい恒星が見えていてもその輝度はEV -5前後にすぎない。月面の適正露出EV 15との差は20EV、すなわち光量にして約100万倍に達する。月面を適正露出にした時点で、星の光はフィルムのノイズフロア以下に沈む。星が写らないのは物理的に当然の結果である。

同じ原理は地上でも成り立つ。昼間に星が見えないのは大気散乱による空の明るさ(天空光)が星の光を圧倒するためであり、夜間でも街灯や月明かりの下で長時間露光しなければ暗い星は写らない。

光害と夜空の輝度

都市部での天体撮影を制限する最大の要因は光害である。地上の人工照明が大気中の分子や粒子でレイリー散乱およびミー散乱され、夜空全体に拡散光を生む。この拡散光が夜空の背景輝度を底上げし、暗い天体のコントラストを奪う。

光害の影響は、大気の光学的厚さと散乱特性によって決まる。大気のスケールハイト(密度が $1/e$ に減少する高度)は約8.5kmであり、地上の光源から放たれた光は主にこの高度範囲内の大気で散乱される。都市からの距離が増すと散乱光の強度は減少するが、現代の都市規模では数十から百キロメートル離れても光害の影響は残る。

天体写真における光害の定量的な指標としてボートルスケール(Bortle scale)がある。クラス1(最も暗い空)からクラス9(都心部)までの9段階で夜空の明るさを評価する尺度であり、クラス4以上では天の川の構造が識別しにくくなり、クラス7以上では主要な星座の形を追うのがやっとになる。星空を眺めるで述べたように、暗い空での周辺視(averted vision)や暗順応の活用は、光害の少ない環境でこそ真価を発揮する。

光害は短波長側(青色域)でより顕著である。レイリー散乱の強度は波長の4乗に反比例するため、青い光は赤い光より強く散乱される。かつて水銀灯が主流だった時代はナローバンドフィルターで光害の輝線を除去できたが、演色性で論じた広帯域スペクトルを持つLED照明が普及した現在、フィルターによる光害低減は難しくなりつつある。


写真を撮る環境が変われば、光の物理そのものが変わる。水中ではレンズの前に屈折と吸収の壁が立ちはだかり、霧の中では散乱がコントラストを奪い、宇宙空間では散乱がないこと自体が問題になる。それぞれの環境で何が起きているかを物理的に把握することが、適切な機材選択と撮影手法の出発点となる。

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