先日、オンラインディスカッションに出ていた、ほぼ Bチャンネルが欠落して、値が0になった画像の補正について触れました。
その際、途中の過程で、読み込んだ画像のレイヤーを複製し、画像の平均値で塗りつぶしてから反転し、それをカラーモードで不透明度を落とした画像を作成しました。
なぜあのような方法をとるとうまくいくのか、その理由を探ってみます。
まずオリジナル画像のヒストグラムをとってみます。なお、引き続き st. raw氏の画像を CC-BY-SA 4.0 に準拠して引用させていただきます。
青がほぼ 0 になっているほか、緑と赤の分布の山も結構ずれが出ています。この平均値で塗りつぶしたものを反転したレイヤーで、LChカラーモードで重ねて半透明化したものが、以下でした。
これにホワイトバランスの自動調整を適用したもののヒストグラムをとってみます。
なんと、R, G, B のヒストグラムの山が揃っています。おそらく B チャンネルに、R と G をブレンドした画像を代入するとともに、コントラストが高かった R チャンネルと、低かった G チャンネルのコントラストを揃える効果があるようです。r, g, b バラバラにヒストグラム平坦化をかけた (r, g, b のダイナミックレンジを広げた上で、分布の範囲や山を揃える) のに近い効果があると言えそうです。ただしヒストグラムの平坦化の場合、画像によりけりではありますが、一発で、かなり自然な感じに修正できる場合があります。しかし、平均値を反転させてカラーモードで重ね合わせる方法だと、彩度の低めの画像ができるだけで、そこからの追加調整が必須です。ヒストグラムの平坦化と比較した時に、ヒストグラム上のローカルな r, g, b カーブの違いをやや取り去りすぎる傾向があるものと思われます。
参考までに、GIMP 上でオリジナル画像に対し平滑化 (ヒストグラム平坦化) を掛けてみると以下のようになりました。
ヒストグラムの形は異なりますが、当然ながら、R と G の形は揃います。しかし、あそこまで、Bチャンネルの情報が欠落していると、平滑化を掛けても B チャンネルは復元されず、ほぼ真っ黒に近かったのが、真っ白に近くなっただけです。ただ、ヒストグラム平坦化の原理を考えると、何か R と G を混合した画像を B チャンネルに代入してから平滑化を掛けるとうまくいくかもしれません。
ところでこの手法、他の画像でも、ヒストグラムの山を揃える効果が発揮できるのか、手持ちの画像で試してみました。以下はかなり青紫がかってしまった画像です。不均等黄変も見られます。
同じ手法を掛けてみると....
上のケースほど劇的ではないものの、やはりヒストグラムが前より揃っています。画像によっては効果の出方に差が出るようですが、ヒストグラムが揃う傾向は確認できます。
ただ、場合によると R, G, B のヒストグラムが揃い過ぎてモノクロ画像に近くなる場合もあるようです。いずれにせよ、この手法だけで適切な画像が得られるのではなく、補正を掛けるベースを作るために有効、というあたりかと思われます。
また、反転した平均色を調整することで、RGBのヒストグラムが揃いすぎるのを調整できるのかどうか、また反転した画像をLChカラーモードで重ねるとなぜヒストグラムが揃うのか、原理を理解していないので、この辺りは、まだ分かっていません。