デジカメで撮ると、なぜ偽色が発生するのか

2022/06/03

デジカメで写真を撮ると、コントラストが変わる境目に偽色が出る事は良く知られています。

偽色(パープルフリンジ)の発生した写真

ところが、その理由を正確に知っている方は少ない様です。

そんな訳で、デジカメで偽色が発生する理由を分かり易く説明してみたいと思います。

偽色はベイヤー配列の撮像素子だから発生する

デジカメには、主にベイヤー配列の撮像素子が使われています。

べイヤー配列とは、コダックの技術者だったべイヤーさんが考案した単板式撮像素子に使われる3色フィルターの配列です。

べイヤー配列の3色フィルター

ではなぜこんなに複雑なフィルターが必要なのでしょう。

その理由は、高級なビデオカメラに採用されている3板式の撮像素子を見ると分かり易いと思います。

3板式撮像素子の画像処理

この場合、3枚の撮像素子の上に赤緑青のフィルターが乗っていますので、それぞれの撮像素子から読み取った3色の画像情報を合成すればカラーの画像を読み取る事ができます。

ただしこの場合、3枚の撮像素子と被写体からの光を3本に分光するプリズムまで必要になりますので、高価で大きくなります。

だったら、何とか1枚の撮像素子でカラー画像を読み取るにはどうしたら良いでしょうか?

そこで登場するのがべイヤー配列です。

これでしたら、1枚の撮像素子に3色のフィルターが乗っていますので、カラー画像を読み取る事が可能です。

ただし大きな問題があります。

それは、1画素上の画像を1色でしか読めない事です。

このためこのままでは、下の写真の様にツギハギだらけの写真になってしまいます。

補完しない場合のべイヤー配列のイメージ画像

上の画像は簡易的に作成したイメージ画像なので全く正確ではありませんが、カラーで読み取る事ができても、さすがにこれではカラー写真とは言えません。

グラデーションの補間

だったら、どうすれば良いのか?

1素子が読み取れない他の2色の色情報を、隣りの素子から借りてくれば良いのです。

例えば下の図の様に、上から下に緩やかに濃さの変わる画像があったとします。

グラデーションのある元画像

これを1素子(1画素)256諧調の撮像素子で読ませると、以下の様になります。

元画像をベイヤー配列の撮像素子で読みこんだ値

この9個の素子の中で、今回は中央の緑の素子に注目します。

この素子の画像データは、緑の光量が190だという事だけで、赤や青の情報は一切ありません。

ですので赤については、両隣りの光量が160なので、多分中央の素子の赤の光量も160だろうと推測するという訳です。

周囲の画像データから中央のレッドとブルーを推測した値

同じ様に青の光量は、上と下が230と240なので、恐らく235になるだろうという訳です。

これで作成した色が下の画像中央部分で、(全く同じではないものの)凡そ周囲と似た色になるのが分かって頂けると思います。

推定値から再現した画像(中央部)

これを専門用語で補間と呼び、各光学機器メーカーで色々工夫を凝らした補間処理が行われています。

さらに、これと同じ処理を全画素において行えば、1枚の撮像素子でもフルカラーが再現できる事になります。

ただし、(毎度の事ながら)これでメデタシメデタシといかない所がミソです。

コントラストの変化が大きい場合の補間

上記の様に被写体の色が滑らかに変わっていれば良いのですが、例えば急激に色が変わっているとなると、とんでもない事が起きます。

例えば、下の図の様に黒と白のくっきりした像があったとします。

黒白の元画像

その画像が、先ほどの9個の撮像素子の上に、下の様に結像したとします。

元画像を撮像素子で読ませた値

これを前述と同じ方法で補間すると、中央の画素の色情報は以下の様になります。

周囲の画像データから中央のレッドとブルーを推測した値

本来ならば3色とも255になる筈が、赤だけ128という変な値になっています。

数値だけ見てもピントこないかもしれませんが、これを画像(色)にすると下の様になります。

黒と白の境界に発生した偽色(R:128、G:255、B:255の水色)

すなわち、本来白である所に、いきなり全く存在しない水色(偽色)が発生するという訳です。

まとめ

以上をまとめますと、以下の様になります。

①ベイヤー配列の撮像素子を使って1画素に3色分の色情報を持たせるには、周囲の色情報を使った補間を行なわなければならい。

②補間を行うと、少なからず本来の色と異なる色を再現する事になる。

③特に色の変化や、コントラストの変化が急な個所には目立つ偽色が発生する。