写真のしくみ ㉒ 光の足し算と絵の具の引き算で読み解く色のしくみ

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

スマホの画面を、ぐーっと目を近づけて見たことはありますか。虫めがねやルーペがあれば最高です。よく観察すると、画面にはとても小さな光の粒がびっしりと並んでいます。赤、緑、青。たったこの3色の光だけで、写真も動画も、空の青もリンゴの赤も、ぜんぶ表現されています。

ところで、図工や美術の時間を思い出してみてください。絵の具をいろいろ混ぜていくと、どんどん色が暗くなって、最後にはなんだか黒っぽいドロドロになった経験はないでしょうか。

光を混ぜると明るくなる。絵の具を混ぜると暗くなる。同じ「色を混ぜる」はずなのに、まるっきり逆の結果になります。この不思議の正体をつかまえるのが、今回のテーマです。

テレビやスマホの画面をのぞいてみよう

テレビやスマホ、パソコンのディスプレイは、光を出して映像を映しています。この光の正体は、ものすごく小さな 画素(ピクセル) と呼ばれる光の点です。ひとつひとつの画素の中には、赤(Red)・緑(Green)・青(Blue) の3つの光源が詰まっています。この3色の頭文字をとって RGB と呼びます。

この3色の光を、それぞれどのくらいの強さで光らせるかを変えるだけで、ディスプレイはさまざまな色を作り出します。赤の光を全力、緑も全力、青はゼロにすると黄色に見えます。赤と青を全力にして緑をゼロにすると、マゼンタと呼ばれるピンクっぽい紫色が現れます。3色とも全力で光らせれば白。3色とも消せば、もちろん真っ暗です。

光を足す「加法混色」

この 光を重ねて色を作る方法 を 加法混色(かほうこんしょく) といいます。「加法」は「足し算」のこと。光を足せば足すほど、色はどんどん明るくなります。

具体的に見てみましょう。

  • 赤 + 緑 → 黄色
  • 緑 + 青 → シアン(水色っぽい青緑)
  • 赤 + 青 → マゼンタ(鮮やかなピンク紫)
  • 赤 + 緑 + 青 → 白

暗い部屋で赤いライトと緑のライトを同じ壁に当てると、重なったところには黄色い光が映ります。ここにさらに青いライトを重ねると、白い光になります。光は足せば足すほど白に近づいていくんです。

「赤と緑を混ぜたら黄色? ウソでしょ?」と思うかもしれません。たしかに、絵の具の赤と緑を混ぜても黄色にはなりません。でも光の世界ではこれが本当に起こります。その理由は、このあとすぐにわかります。

絵の具はなぜ暗くなる?「減法混色」

今度は絵の具のほうを考えてみましょう。絵の具やインク、カラー印刷で使われるのは、光とは逆の原理です。こちらでは シアン(Cyan)・マゼンタ(Magenta)・イエロー(Yellow) の3色が基本になります。頭文字をとって CMY と呼びます。

「シアン? マゼンタ? 聞いたことないけど?」という人もいるかもしれません。小学校の図工では「赤・青・黄」が三原色だと教わることが多いですよね。実はこれは歴史的に長く使われてきた分類なのですが、再現できる色の範囲という点では、シアン・マゼンタ・イエローのほうが広い範囲をカバーできます。だから現代のカラープリンターやカラー印刷では、CMYが使われているんです。

さて、この CMYで色を作る方法 を 減法混色(げんぽうこんしょく) といいます。「減法」は「引き算」です。いったい何の引き算なのでしょうか。

白い紙に光が当たっている場面を想像してみてください。白い紙は、赤・緑・青のすべての光を反射するから白く見えています。ここにシアンのインクを塗ると、シアンは 赤い光を吸収 します。つまり、白い光から赤を引き算したことになります。残った緑と青の光が目に届くので、青緑っぽい色に見えるというわけです。

同じように整理すると、こうなります。

  • シアン → 赤の光を吸収する(白から赤を引く)
  • マゼンタ → 緑の光を吸収する(白から緑を引く)
  • イエロー → 青の光を吸収する(白から青を引く)

2色を混ぜるとどうなるでしょうか。

  • シアン + マゼンタ → 赤と緑を吸収 → 残るのは青
  • シアン + イエロー → 赤と青を吸収 → 残るのは緑
  • マゼンタ + イエロー → 緑と青を吸収 → 残るのは赤
  • シアン + マゼンタ + イエロー → 赤も緑も青もぜんぶ吸収 → 理論上は 黒

色を混ぜれば混ぜるほど、光がどんどん吸い取られて暗くなっていきます。まさに「引き算」ですね。

加法混色と減法混色、なぜ逆になるのか

ここまで読めば、もう答えは見えてきたのではないでしょうか。

光の混色(加法混色) は、光そのものを足し合わせています。光が増えるから、混ぜるほど明るくなります。全部足すと白になります。

絵の具やインクの混色(減法混色) は、光を吸収するもの同士を重ねています。吸収するものが増えるから、混ぜるほど暗くなります。全部混ぜると(理論的には)黒になります。

つまり、光は「足し算」の世界、絵の具は「引き算」の世界。同じ「色を混ぜる」という言葉を使っていても、起きていることがまるで違うんです。

絵の具で赤と緑を混ぜても黄色にならなかった理由も、これで説明がつきます。赤い絵の具は青と緑の光を吸収し、緑の絵の具は赤と青の光を吸収します。両方を混ぜると吸収される光が増えて、残る光はごくわずか。結果、くすんだ暗い色になってしまいます。光の足し算とは、やっていることが根本的に違うんです。

ちなみに、実際にシアン・マゼンタ・イエローのインクを全部混ぜても、きれいな真っ黒にはなかなかなりません。少し濁った暗い茶色のような色になってしまいます。理由はいくつかありますが、ひとつには、現実のインクは「特定の色だけを完璧に吸収する」という理想どおりには振る舞ってくれないからです。そこで、カラー印刷ではCMYに加えて 黒(K) のインクを別途用意しています。このKは Key(キー) の頭文字とされています。印刷では、黒インクを刷る版を「キープレート(基準版)」と呼び、他の色の版をこの黒版に合わせて位置決めします。その「基準」という役割から、黒をKと表すようになったといわれています。CMYにKを加えた4色、これが CMYK です。

色空間という「色のルールブック」

ここまでで、光の3色(RGB)と絵の具の3色(CMY)で色が作れることがわかりました。ここでもうひとつ、大事な話をしましょう。

「赤い光」とひとくちに言っても、どのくらいの赤なのかは決まっていません。トマトの赤とイチゴの赤は違いますし、夕焼けの赤ともまた違います。ディスプレイのメーカーが変われば、「赤」の色味が微妙に異なることだってあります。

もし、撮影した写真の色を正しく伝えたいのに、見る機器によって赤の意味がバラバラだったら困りますよね。

そこで登場するのが 色空間(いろくうかん) という考え方です。英語では Color Space と呼びます。色空間とは、「赤はこの赤、緑はこの緑、青はこの青」と、RGBの各色を数値できっちり定義した ルールブック のようなものです。同じルールブックに従っている機器同士なら、同じ数値を送れば同じ色を再現できます。

よく名前を聞く色空間をふたつ紹介しましょう。

sRGB(エスアールジービー)

1996年にマイクロソフトとHPが共同で提案し、1999年にIEC(国際電気標準会議)が国際規格(IEC 61966-2-1)として正式に定めました。現在、世界でもっとも広く使われている色空間で、ほとんどのパソコン、スマートフォン、ウェブサイト、SNSがsRGBを基準にしています。カメラの設定を何もいじっていなければ、撮った写真はたいていsRGBで記録されています。

Adobe RGB(アドビアールジービー)

1998年にAdobe Systems(現在のAdobe)が提案した色空間です。sRGBよりも、とくに緑から青緑にかけての色を広く表現できます。もともとカラー印刷(CMYK)で再現できる色の多くをカバーする目的で作られました。写真のプリントにこだわる人や、印刷の仕事をする人たちに重宝されています。ただし、Adobe RGBで記録した色をきちんと画面に映すには、対応した専用のディスプレイが必要です。

色域(ガマット)という「色の守備範囲」

色空間が「色のルールブック」なら、色域(しきいき) はそのルールブックで 表現できる色の範囲 のことです。英語では ガマット(Gamut) と呼びます。

人間の目が見分けられる色の範囲は、とてつもなく広いものです。1931年に、CIE(国際照明委員会)という国際機関が「人間の目が知覚できるすべての色」を1枚の図にまとめました。これが CIE 1931色度図 と呼ばれる有名な図で、舌のような、あるいは馬の蹄のような独特の形をしています。この図の輪郭の内側が「人間に見えるすべての色」です。

この図の上に、各色空間が表現できる範囲を三角形として描くことができます。三角形の頂点が、その色空間が定義する赤・緑・青の3色に対応します。

  • sRGBの三角形 は、舌型の中にすっぽり収まる、やや控えめなサイズです。
  • Adobe RGBの三角形 は、sRGBより一回り大きく、とくに緑の頂点がぐっと外側に広がっています。

三角形が大きいほど「色域が広い」、つまり表現できる色の種類が多いということです。しかし、どんな色空間の三角形も、CIEの舌型全体をすっぽり覆うことはできません。人間の目が見えるすべての色を、ひとつのディスプレイやプリンターで完全に再現するのは、現在の技術ではまだ実現していないんです。

画面の色と印刷の色が合わない理由

写真をプリントしたことがある人なら、「画面で見たときと印刷で色が違う」と感じた経験があるかもしれません。その理由の大きなひとつが、ここまでの話とつながっています。

ディスプレイはRGBの加法混色で色を作ります。プリンターはCMYKの減法混色で色を作ります。そもそも色を生み出す方法が違う上に、それぞれが持つ色域も異なります。

ディスプレイでは鮮やかに表示できるのにプリンターでは再現しきれない色もあれば、逆にプリンターのインクでは出せるのにディスプレイでは正しく映せない色もあります。たとえば、画面で見た鮮やかな青緑が、プリントするとちょっとくすんで感じられたりします。これは機器の故障ではなく、加法混色と減法混色の性質の違い、そしてそれぞれの色域の違いから来るものです。

この「画面と印刷の色のズレ」をできるだけ小さくするための仕組みが カラーマネジメント と呼ばれる技術です。色空間を統一したり、ディスプレイやプリンターごとの特性に合わせて色を補正したりすることで、「画面で見た色にできるだけ近い色で印刷する」ことを目指します。写真を本格的にプリントする人にとって、カラーマネジメントはとても大切な技術です。

この回のまとめ

今回は、「色を混ぜる」という身近な体験の裏側にある、2つの正反対のルールを見てきました。ポイントを整理しましょう。

  • 加法混色は、光を足して色を作る方法。 赤・緑・青(RGB)の光を重ねると色はどんどん明るくなり、3色すべてを全力で足すと白になります。テレビやスマホのディスプレイなど、自ら光を発するものがこの方法を使っています。
  • 減法混色は、光を吸収して色を作る方法。 シアン・マゼンタ・イエロー(CMY)のインクや絵の具は、白い光から特定の色を引き算します。混ぜれば混ぜるほど吸収される光が増えて暗くなり、3色すべてを混ぜると理論上は黒になります。プリンターやカラー印刷がこの方法を使っています。
  • 色空間は、RGBの色を数値できっちり定義したルールブック。 sRGBは世界中で広く使われている標準規格で、Adobe RGBはとくに緑方向に広い色域を持ち、印刷との相性を考えて作られました。
  • 色域(ガマット)は、色空間で表現できる色の範囲のこと。 CIE 1931色度図の上に三角形として描くと、色空間ごとの守備範囲の広さが目に見えてわかります。
  • ディスプレイとプリンターで色が違って見えるのは、色の作り方と色域が異なるから。 加法混色(RGB)と減法混色(CMYK)の性質の違いを橋渡しするのが、カラーマネジメントの役割です。

光を足すか、光を引くか。たったそれだけの違いで、色の世界はまったく異なる顔を見せます。次にスマホの画面を見るとき、あるいは絵の具を手に取るとき、「足し算と引き算」のことをちょっとだけ思い出してみてください。きっと、色の見え方が少しだけ変わるはずです。

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