写真のしくみ ㉕ 暗い写真がザラつく理由とノイズの正体

Share
💡
シリーズ「写真のしくみ」について
光はまっすぐ進み、レンズは世界をひっくり返す。写真と映像にひそむ小さな「なぜ?」を、数式なしで解き明かす全40回。

夜の街を撮った写真、薄暗い部屋で撮った友だちの写真。あとからスマホやパソコンで拡大してみると、なんだかザラザラしていることがあります。このザラザラの正体が ノイズ です。ノイズはなぜ生まれるのか、どうすれば減らせるのか。今回はその秘密をとことん追いかけてみましょう。

暗い写真がザラザラする

暗い場所で撮った写真を思いきり拡大してみてください。本来なめらかなはずの空や壁に、赤や青や緑のつぶつぶが浮いているのが見えるはずです。

ノイズは英語で「雑音」という意味です。音楽を聴いているときにまじるザーッという雑音と、写真のザラザラは、名前だけでなく原理もよく似ています。どちらも、「本来の信号に対して、いらない情報がまじってしまう」現象だからです。

では、どうしてデジタル写真にノイズが出るのでしょう? それを知るには、まずカメラのセンサーがどうやって光を記録しているかを思い出す必要があります。

光の粒をかぞえる仕事

デジタルカメラのセンサーには、何百万、何千万もの小さな受光素子(ピクセル)がびっしり並んでいます。シャッターが開いている間、一つひとつのピクセルに光の粒(光子、フォトンとも呼びます)が飛び込んできます。ピクセルはその光子を電気の信号に変えて、数字として記録します。

つまりデジタルカメラの仕事は、ものすごく単純に言うと「光の粒をかぞえること」です。

ここでひとつ、大事なことがあります。光の粒は、きれいに均等に飛んでくるわけではありません。光というのは、実はとても気まぐれなのです。

光の粒はランダムにやってくる

想像してみてください。雨の日に、地面にバケツを置いて雨粒を集めるとします。1分間に平均100粒の雨がバケツに入るとしても、毎回きっちり100粒ということはありません。あるときは93粒、あるときは108粒。数えるたびにちがう数字になります。

光の粒もまったく同じです。ある明るさの光がピクセルに当たっているとき、平均して100個の光子が届くとしても、実際にはあるピクセルには90個、隣のピクセルには112個、というふうにばらつきます。このばらつきは光そのものの性質であり、どんなに高級なカメラを使っても原理的になくすことができません。

このばらつきこそが、ノイズの最も根っこにある原因です。物理学では ショットノイズ と呼ばれています。

💡
ちょっと気になる人へ
光子のばらつきは、統計学で「ポアソン分布」と呼ばれる法則に従います。ポアソン分布にはきれいな性質があって、平均の光子数がNなら、ばらつき(標準偏差)はおおよそ√Nです。平均10,000個なら√10,000 = 100個程度のばらつき。平均100個なら√100 = 10個程度。光が多いほどばらつきの「絶対値」は大きくなりますが、信号に対する「割合」(= 1/√N)は小さくなります。これがSN比の本質的な意味につながっています。

明るいところではノイズが気にならない理由

ここで不思議に思うかもしれません。「光がばらつくなら、明るい写真だってノイズだらけのはずじゃない?」と。

実は、明るいところにもノイズはあります。でも、気にならない。その理由はこうです。

たとえば、平均10,000個の光子が届くピクセルがあるとします。ばらつきは、だいたい100個ぐらい。10,000個のうちの100個ですから、全体の 1% にすぎません。写真を見ても、ほとんど気づきません。

ところが暗い部分では、平均100個しか光子が届きません。ばらつきはだいたい10個ぐらい。100個のうちの10個ですから、全体の 10% になります。10%もずれていたら、隣のピクセルと明るさが目に見えてちがってくる。これが「ザラザラ」として見えるわけです。

💡
ポイント: ノイズそのものの大きさは、光が多いほうが実は大きい。でも「信号に対するノイズの割合」は、光が少ないほうがずっと大きくなります。だから暗い部分ほどザラザラが目立つのです。

信号がノイズに比べてどれだけ大きいかを表す指標を、SN比(信号対雑音比)と呼びます。カメラやオーディオの世界でとても大事な考え方です。SN比が高いほどきれいで、低いほどノイズが目立ちます。

光の粒だけじゃない、もうひとつのノイズ

光の粒のばらつき(ショットノイズ)は、どんな高性能なカメラでもなくせません。でも実は、カメラの内部にも別のノイズがあります。

センサーが光子を受け取って電気信号に変えたあと、その信号をカメラの回路が読み取ります。この「読み取り」のときに、回路の中の電子がわずかに揺れ動いて、余計な信号をまじらせてしまいます。電子部品には温度があり、温度がある限り電子は微妙に振動しているからです。これを 読み出しノイズ(リードノイズ)といいます。

読み出しノイズの面白いところは、光の量に関係なく一定のノイズが発生するということです。真っ暗でも、回路を動かすだけでノイズが出ます。だから暗い写真では、もともと少ない光の信号に対して読み出しノイズの影響が相対的に大きくなってしまうのです。

うれしいことに、カメラの技術はどんどん進歩していて、最近のカメラは読み出しノイズがとても小さくなっています。ひと昔前のカメラと比べると、その差は歴然です。

ISO感度を上げるとノイズが増えるのはなぜ?

暗い場所で撮影するとき、カメラの ISO感度 を上げることがあります。ISO感度を上げると、暗いシーンでも明るい写真が撮れます。でも、引き換えにザラザラが増えてしまう。なぜでしょう?

まず知っておきたいのは、ISO感度を上げても センサーに届く光の量は変わらない ということです。ISO感度は「光をもっと集める」機能ではありません。「集めた光の信号を、あとから増幅する」機能なのです。

ここがとても大事なポイントです。たとえ話をしましょう。

友だちと遠くで話しているとき、声が小さくて聞こえにくい。そこでボリュームを上げたらどうなるでしょうか。友だちの声は大きくなるけれど、周囲の雑音も同じだけ大きくなります。結局、聞こえにくさは変わりません。

ISO感度を上げるというのは、まさにこの「ボリュームを上げる」のと同じことです。センサーが受け取った信号を電気的に増幅すると、本来の光の信号だけでなく、ショットノイズも読み出しノイズも一緒に増幅されてしまいます。

もう少し具体的に言いましょう。ISO 100で撮影するところをISO 3200に上げたとします。5段分の増感です。するとカメラは、光を集める時間(シャッタースピード)を短くして、同じ明るさの写真を撮ろうとします。その結果、センサーが受け取る光子の数はISO 100のときの 32分の1 にまで減ってしまいます。

光子が32分の1しかなければ、SN比は大きく下がります。そして、その低いSN比の信号をカメラが電気的に増幅して、無理やり明るく見せている。だからザラザラが目立つのです。

💡
ISO感度の本質: ISO感度を上げて「ノイズが増える」というのは、正確には少しちがいます。本当は「少ない光で撮った、ノイズの割合が大きい信号を引き伸ばしている」のです。ノイズが増えたのではなく、光が減ったことが原因です。

センサーが大きいとノイズに強い理由

「フルサイズのカメラはノイズに強い」「スマホよりも一眼カメラのほうが暗所に強い」という話を聞いたことがあるかもしれません。これも、光の粒の話で説明できます。

また雨とバケツのたとえに戻りましょう。同じ雨のなかで、小さなコップと大きなバケツを並べて置いたとします。1分後、大きなバケツにはたくさんの雨粒が集まっています。小さなコップには少ししか集まっていません。

センサーのピクセルも同じです。ピクセルが大きければ、それだけたくさんの光子を受けとめることができます。光子がたくさん集まれば、SN比が上がって、ノイズが目立ちにくくなります。

フルサイズセンサー(約36mm x 24mm)は、スマホの小さなセンサーに比べて面積が何十倍も大きい。ピクセル数が同じなら、1ピクセルあたりの面積もそのぶん大きくなり、光子をたくさん集められます。だからフルサイズカメラは暗い場所に強いのです。

APS-Cセンサーは、フルサイズの約4割強の面積を持っています。フルサイズよりは小さいけれど、スマホのセンサーに比べればずっと大きい。暗所性能は、ちょうどその中間あたりに位置します。

ただし注意が必要なのは、センサーサイズだけで画質が決まるわけではないということです。レンズの明るさ、カメラ内部の処理技術、そもそもの撮影条件など、画質を左右する要素はたくさんあります。「センサーが大きい=いい写真」という単純な話ではありません。でも「暗いところでノイズが少ない」という点に限って言えば、大きなセンサーが有利であることは物理的な事実です。

長時間露光すると出てくるもうひとつのノイズ

星空を撮ったり、夜景を三脚でじっくり撮ったりするとき、シャッターを何秒も、ときには何分も開けっぱなしにすることがあります。長時間露光と呼ばれる撮り方です。

長時間露光では、光をたくさん集められるぶんSN比が上がって、暗い被写体もきれいに写せるはずです。ところが、露光時間が長くなるにつれて、ちょっと困ったことが起きます。

センサーは半導体(シリコン)でできています。シリコンの中の電子は、温度があるかぎり熱の力で勝手に動き出してしまいます。光が当たっていなくても、熱エネルギーだけでピクセルに電荷がたまっていくのです。これを 暗電流(ダークカレント)といいます。「暗いのに電流が流れる」という意味です。

暗電流による電荷は、露光時間が長いほどたくさんたまります。そしてセンサーの温度が高いほど暗電流は大きくなります。目安として、温度が約5度から8度上がると暗電流はおよそ2倍になるとされています。真夏の暑い日に長時間露光すると、冬の寒い日よりもノイズが増えやすいのはこのためです。

だから天体写真を本格的に撮る人たちは、センサーをわざわざ冷やす専用のカメラを使うことがあります。冷却カメラと呼ばれるもので、ペルチェ素子という部品でセンサーの温度を外気温よりマイナス数十度も下げます。温度を下げれば暗電流が劇的に減り、何分もの露光でもノイズの少ないきれいな星空が撮れるのです。

カメラの中のノイズ退治

ノイズのしくみがわかったところで、次はカメラやソフトがどうやってノイズを減らしているかを見てみましょう。

いちばんシンプルな方法は、周囲のピクセルの値を平均することです。ザラザラしたピクセルの値を周りと混ぜ合わせれば、ばらつきがならされてなめらかになります。でも、この方法には大きな弱点があります。写真の細かい部分、たとえば髪の毛の1本1本や文字の輪郭まで一緒にぼやけてしまうのです。

「ノイズは消したい、でもディテールは残したい」。このふたつの要求はお互いに矛盾します。ノイズを強く消せば写真はぼやけ、ディテールを残そうとすればノイズが残る。ノイズ除去技術の歴史は、このトレードオフとの格闘の歴史だと言ってもいいでしょう。

現代のカメラやRAW現像ソフトは、もっと賢い方法を使っています。たとえば、明るさが似ているピクセル同士だけを平均する方法。これなら、明暗の境目(エッジ)をまたいで混ぜ合わせることがないので、輪郭をくっきり保ったままノイズだけを減らせます。

写真のなかの似たパターンを見つけ出して、離れた場所にあっても似ている部分同士を平均するという方法もあります。壁紙の模様の繰り返しや、空の同じようなトーンを利用するわけです。

そして近年、この分野に大きな変革をもたらしたのが AIによるノイズ除去 です。大量の写真を学習したAIが「ここは本来の模様、ここはノイズ」と判断して、驚くほど自然にノイズだけを消してくれます。数年前まではザラザラで使いものにならなかったような高感度の写真が、AIのノイズ除去を通すとなめらかで美しい写真に生まれ変わる。スマホのカメラが暗い場所でもきれいに撮れるようになった背景にも、こうしたAI処理の進歩があります。

もっとも、AIも万能ではありません。あまりにノイズがひどいと、本来あったはずの細かい模様や質感までAIが「ノイズだ」と判断して消してしまうことがあります。ノイズ除去は結局のところ「失われた情報を推測で埋める」作業であり、もともとの光の情報が多いに越したことはありません。

🔍
やってみよう
暗めの部屋で、スマートフォンやカメラのマニュアルモードを使って写真を撮ってみましょう(スマートフォンのナイトモードはオフにすると違いがわかりやすいです)。撮った写真を拡大して、明るく写っている部分と暗く写っている部分を見比べてみてください。同じ1枚の写真のなかでも、暗い部分のほうがザラザラしているはず。SN比のちがいを自分の目で確かめられます。

この回のまとめ

今回は、暗い写真に現れるザラザラ、ノイズ の正体を追いかけてきました。ポイントをふり返りましょう。

  • ノイズ とは、本来の信号にまじる余計な情報のこと。暗い写真のザラザラの正体がこれです。
  • ノイズの最も根本的な原因は、光の粒(光子)がランダムに届くこと。これは物理法則そのものなので、どんなカメラでも原理的になくせません(ショットノイズ)。
  • 暗い部分でノイズが目立つのは、光の粒が少ないと「信号に対するノイズの割合(SN比)」が悪くなるからです。
  • カメラの回路が信号を読み取るときにも、電子の熱運動によるノイズが発生します(読み出しノイズ)。
  • ISO感度 を上げると、少ない光の信号を電気的に増幅します。信号だけでなくノイズも一緒に増幅されるため、ザラザラが目立つ。正確には「ノイズが増える」のではなく「少ない光の信号を引き伸ばしている」のです。
  • センサーが大きい カメラがノイズに強いのは、ピクセルひとつひとつが大きく、より多くの光子を集められるからです。
  • 長時間露光 では、半導体の熱によって光がなくても電荷がたまる暗電流ノイズが加わります。温度が高いほど、露光が長いほど影響が大きくなります。
  • カメラやソフトの ノイズ除去 は「ノイズを消しつつディテールを残す」というトレードオフとの戦い。近年はAIの進歩によって飛躍的に性能が向上しました。

ノイズの正体がわかると、「なぜ暗い写真がザラつくのか」「なぜ大きいセンサーが有利なのか」「なぜ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