写真のしくみ ⑳ りんごが赤い理由と色が見えるしくみ

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

私たちは毎日、色にあふれた世界で暮らしています。でも「色」は、光のなかにも、目のなかにも、そのままの形では存在していません。光と目と脳が協力してはじめて生まれるものです。

今回は、りんごの赤をきっかけに、色覚のしくみをたどり、デジタルカメラとの意外な共通点まで見ていきましょう。

りんごは「赤い光」を投げ返している

きみの目の前に、つやつやの赤いりんごがあるとしましょう。「りんごは赤い」なんて当たり前すぎて、ふだんは気にもとめませんよね。でも、ちょっと待ってください。そもそも、なぜりんごは赤く「見える」のでしょう?

答えを先に言ってしまいましょう。りんごが赤いのは、りんご自身が赤い光を出しているからではありません。 りんごは太陽や蛍光灯の光を浴びて、そのなかの「赤い成分」だけを跳ね返し、残りの色の光をぜんぶ吸い込んでいます。跳ね返った赤い光だけが私たちの目に届くから、りんごは赤く見える。それだけのことです。

たとえ話をしましょう。きみが友だちと7色のボールで遊んでいるとします。友だちが7色のボールをまとめて投げてきた。きみは赤いボールだけをキャッチして投げ返し、ほかの色のボールは全部受け止めて手元にしまってしまう。遠くから見ている人には、きみから飛んでくるのは赤いボールだけです。りんごがやっていることは、まさにこれと同じです。

太陽の光は白く見えるけれど、じつはたくさんの色の光が混ざり合っています。虹を思い出してみてください。雨上がりに太陽光が空気中の水滴を通り抜けると、赤・橙・黄・緑・青・藍・紫と色が分かれて見えますよね。ふだん白く見えているあの太陽光には、もともとこれだけの色が含まれていたんです。りんごの皮は、そのなかから赤い光を反射し、それ以外を吸収しています。だからりんごは赤く見えるんですね。

では逆に、真っ暗な部屋にりんごを置いたらどうなるでしょう。光がなければ、反射する光もありません。りんごは何色にも見えません。色は、光があってはじめて存在するのです。

光の色は「波の長さ」で決まる

ここまで「赤い光」「青い光」と言ってきましたが、光の色はいったい何で決まるのでしょう?

答えは波長です。

光は「波」の性質を持っています。海の波を思い浮かべてみてください。波の山からつぎの山までの距離、これが「波長」です。光にもこの波長があって、波長が変わると私たちの目に映る色が変わります。

人間の目に見える光の波長は、おおよそ380ナノメートル(nm)から780ナノメートルの範囲です。1ナノメートルは1ミリメートルの100万分の1。想像もつかないくらい小さいけれど、この狭い範囲のなかに、虹のすべての色がぎゅっとつまっています。

  • 波長が短い側(380~450nm付近) → 紫や青の光
  • 波長が中くらい(500~550nm付近) → 緑の光
  • 波長が長い側(620~700nm付近) → 赤の光

虹の色が「紫→藍→青→緑→黄→橙→赤」と並んでいるのは、波長の短い順にきれいに並んでいるからです。りんごが反射しているのは、この並びでいうと波長が長い側の光、つまり赤い光というわけですね。

ちなみに、380nmよりも短い光は「紫外線(しがいせん)」、780nmよりも長い光は「赤外線(せきがいせん)」と呼ばれます。どちらも人間の目には見えないけれど、確かにそこにあります。日焼けの原因になる紫外線も、リモコンに使われている赤外線も、目に見える光と同じ「光の仲間」です。私たちが「色のある世界」として見ているのは、じつは光のほんの一部分にすぎません。

目の奥にいる3人のセンサー

さて、光に色の正体(=波長のちがい)があるとわかりました。でも、波長がちがうだけの光を、私たちはどうやって「赤」や「青」と感じ分けているのでしょう。ここからは、目と脳の出番です。

私たちの目の奥には、網膜(もうまく) という薄い膜があります。ここに、光を感じとるセンサー役の細胞がびっしり並んでいます。そのなかで、色を感じとる役割を担っているのが 錐体(すいたい) という細胞です。顕微鏡で見ると円すいに似た形をしているので、この名前がつきました。

錐体には 3種類 あります。

  • S錐体(Short=短い波長担当): およそ 420nm付近 の光にもっとも強く反応します。青紫あたりの光が得意です。
  • M錐体(Medium=中くらいの波長担当): およそ 530nm付近 の光にもっとも強く反応します。緑の光が得意です。
  • L錐体(Long=長い波長担当): およそ 560nm付近 の光にもっとも強く反応します。

ここで、ひとつ気をつけてほしいことがあります。L錐体はよく「赤の錐体」と呼ばれますが、じつはL錐体の感度のピークは560nm付近で、これは色でいうと 黄緑に近い のです。700nm付近の純粋な赤にだけ反応するわけではなく、黄色や橙の光にも幅広く反応します。だから「赤を専門に感じとるセンサー」というよりは、「長めの波長をおもに担当するセンサー」と考えたほうが正確です。

教科書や解説書では、便宜上「赤・緑・青」の3色で説明されることが多いですよね。わかりやすいからそう呼ぶのですが、実態はもうすこし複雑だということを、頭の片隅に置いておいてください。

3種類の錐体は、目に入ってくる光の波長に応じて、それぞれちがう強さで反応します。そして、その 「3つの信号の組み合わせ」 を脳に送ります。脳はその組み合わせのパターンから「これは赤だ」「これは青だ」と判断しているのです。

脳が「色」をつくりだす

3種類の錐体が送ってくる信号を、脳はどう処理しているのでしょう。いくつかの例で見てみましょう。

りんごの赤を見るとき。 りんごが反射した赤い光(波長650nm前後)が目に入ると、L錐体が強く反応します。M錐体は弱めに反応し、S錐体はほとんど反応しません。脳はこの「L:強、M:弱、S:ほぼゼロ」というパターンを受け取って、「赤だ」と判断します。

新緑の葉っぱを見るとき。 波長530nm付近の光が目に入ると、今度はM錐体がいちばん強く反応します。L錐体もそこそこ反応し、S錐体はあまり反応しません。脳はこのパターンから「緑だ」と解釈します。

紫を見るとき。 ここが面白いところです。紫にはふたつの「なりたち」があります。ひとつは虹の端っこにある波長の短い紫(短波長の光そのもの)。もうひとつは、赤い光と青い光が同時に混ざって見える紫です。後者の場合、L錐体とS錐体がどちらも強く反応し、M錐体はあまり反応しません。この信号パターンは、虹のなかのどの単一波長にも対応しません。つまり、虹のどこにも存在しない色を、脳がつくりだしている のです。

こういうことです。光そのものに「赤」「青」「緑」と書かれた名札がついているわけではありません。光にあるのは波長だけ。その波長に対して3種類の錐体がそれぞれの強さで反応し、3本の信号を脳に送る。脳がその信号パターンから「色」という感覚を組み立てているのです。

色とは、光の物理的な性質と、脳の解釈の共同作業なのです。

同じ光でも色が変わる?

「色は脳がつくっている」と聞くと、少し不思議な気持ちになるかもしれません。でも、これを実感できる場面は身のまわりにたくさんあります。

たとえば、白い紙を蛍光灯の下で見ると白く見えます。同じ紙を夕焼けの光の下に持っていくと、紙はオレンジっぽく染まっているはずです。でも、私たちはふつうそれを「オレンジ色の紙だ」とは思いません。「夕焼けに照らされている白い紙だ」と感じます。

これは 色の恒常性(こうじょうせい) と呼ばれる脳のはたらきです。脳は、まわりの照明の色が変わっても、ものの「本来の色」を推測して補正をかけてくれます。だから、蛍光灯の下でも夕日の下でも、白い紙はだいたい「白い」と感じられるのです。とても賢い機能ですが、完璧ではありません。

2015年にインターネットを大騒ぎにさせた「あのドレス」の写真を知っていますか。まったく同じ1枚の写真を見て、「白と金に見える」と言う人と「青と黒に見える」と言う人に分かれ、世界中で議論になりました。これはまさに、脳が「背景の照明をどう解釈するか」によって、色の見え方がまるで変わってしまうという現象の見事な例でした。

色は、光の波長という物理現象だけでは完結しません。そこに脳という解釈者が加わってはじめて「色」になります。だから「りんごは赤い」というのは、正確に言えば「りんごが反射した光を、私たちの脳が赤と解釈している」ということなのです。

カメラは目のまねをしている

ここまでの話を読んで、「人間の目って面白い仕組みだな」と思ってくれたなら、もうひとつ面白い話があります。デジタルカメラも、まったく同じ発想で色を記録しているのです。

デジタルカメラの心臓部であるイメージセンサー(撮像素子)は、光の強さ(明るいか暗いか)を検出できます。しかし、そのままでは光の波長を区別できません。つまり、センサー単体では色がわからないのです。

そこで、センサーの画素(ピクセル)ひとつひとつの前に、赤(R)・緑(G)・青(B)のごく小さなカラーフィルター をモザイク状に並べます。この配列を考案者の名前にちなんで ベイヤー配列 と呼びます。赤フィルターがかぶさった画素は赤い光の量だけを、緑フィルターの画素は緑の光の量だけを、青フィルターの画素は青の光の量だけを、それぞれ記録します。

ここで面白いのが、緑のフィルターが赤や青の 2倍 の数だけ配置されていることです。ベイヤー配列の基本単位は「赤1個・緑2個・青1個」の4画素で構成されています。なぜ緑が多いのでしょう。それは、人間の視覚が明るさの変化をもっとも敏感にとらえるのが緑付近の波長だからです。私たちの目は明るさの情報の多くを緑の光から得ているため、緑の画素を増やしたほうが、人間の目にとって自然で精細な画像をつくれます。カメラの設計者たちは、人間の目のこうした特性をよく研究したうえで、この配列を考え出したのです。

ただし、各画素が持っているのは赤・緑・青のうち1色の情報だけです。フルカラーの画像をつくるには、隣り合った画素の情報をもとに、自分が持っていない色を計算で推測する処理が必要になります。これを デモザイク処理 と呼びます。こうしてはじめて、すべての画素がRGB3色ぶんの情報を持った1枚のフルカラー写真ができあがるのです。

3種類の錐体が光の3成分を感じとり、脳が色を組み立てる。カメラはRGBフィルターで光の3成分を分け、プロセッサーが色を計算する。仕組みがそっくりだということに気づいたでしょうか。デジタルカメラとは、人間の色覚のしくみをテクノロジーで再現した装置だと言ってもいいのです。

この回のまとめ

今回は、りんごの赤をきっかけに、光と目と脳が協力して「色」を生みだすしくみをたどってきました。ポイントを整理しましょう。

  • りんごが赤く見える理由。 りんごは赤い波長の光だけを反射し、それ以外の色の光を吸収しています。反射した赤い光が目に届くから、赤く見えるのです。色は光があってはじめて存在します。
  • 光の色は波長で決まる。 人間の目に見える光はおよそ380nmから780nmの範囲で、波長が短いほど紫に、長いほど赤に見えます。この範囲の外には紫外線や赤外線があり、私たちが見ている「色の世界」は光のほんの一部にすぎません。
  • 人間の目には3種類の錐体(S・M・L)がある。 それぞれ異なる波長に敏感に反応します。L錐体は「赤の錐体」と呼ばれがちですが、実際のピーク感度は黄緑付近(約560nm)で、長めの波長を幅広く担当するセンサーです。
  • 色は脳がつくりだしている。 3種類の錐体からの信号パターンを脳が解釈して「色」という感覚を生みだします。虹に存在しない紫のような色も、脳の解釈によって生まれます。色の恒常性のはたらきで、同じ光でもちがう色に見えることがあります。
  • カメラは人間の目のしくみをまねている。 ベイヤー配列のRGBフィルターで光を3成分に分け、デモザイク処理で計算してフルカラー画像を組み立てます。3種類の錐体と脳の関係が、3色のフィルターとプロセッサーの関係にそのまま対応しています。

色は、光の波長と脳の解釈が出会うところに生まれるもの。では、光源そのものの色がちがうとき、写真にはどんな影響があるのでしょう。次回は、光の色を「温度」で表す色温度と、カメラがその色のちがいに対処するホワイトバランスのしくみに迫ります。

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