今日書いた記事について、面白いけど難しいという意見をいただいたので、もう少しざくっと書いてみようと思う。
これが先ほどのバージョン
thom.hateblo.jp
黒つぶれに見えても、階調が生きていればなんとかなるという結論だったが、なんでも暗い方が良いという誤解を与えてしまうとまずいので、その補足の意味もこめて書こうと思う。
それぞれのケースをシミュレーションしてみた。
GIFアニメにしたので、グラフの形に注目してほしい。
階調が生きている例
明るくするとは、すなわち各色の発色を強めることであるが、最大値である255以内に収まっているうちは、色のバランスは保たれている。明るくした画像を暗くすれば元の色が得られる。
白とびしてしまった例
※ループするので開始点が分りにくいかもしれません。紫色がスタートです。
こちらは青の明るさが限界に達した後になお明るくしようとして他の色を明るくしたため、色のバランスが崩れてしまった例。
黒つぶれの例
※ループするので開始点が分りにくいかもしれません。紫色がスタートです。
こちらは緑の暗さが限界に達した後になお暗くしようとして他の色を暗くしたため、色のバランスが崩れてしまった例。
まとめ
前記事でも紹介した以下の記事であるが、
photo-studio9.com
悪い素材とされているほうは、建物を優先して空の階調を飛ばしてしまっている。
良い素材とされているほうは、空の階調をつぶさないように暗めに撮りつつ、建物の階調も黒つぶれせず(人の目には黒つぶれに見えるが)ギリギリ生きていた。
つまりは、全体の階調が生きるように素材を撮ると、後で鮮やかによみがえらせることが出来るということだと思う。
おまけ(VBA)
今回シートモジュールに書いたコードはこちら。
グラフは普通にExcelのグラフである。
Property Let 赤(x As Integer) If x < 0 Then x = 0 If x > 255 Then x = 255 Range("d7").Value = x End Property Property Get 赤() As Integer 赤 = Range("d7").Value End Property Property Let 緑(x As Integer) If x < 0 Then x = 0 If x > 255 Then x = 255 Range("d8").Value = x End Property Property Get 緑() As Integer 緑 = Range("d8").Value End Property Property Let 青(x As Integer) If x < 0 Then x = 0 If x > 255 Then x = 255 Range("d9").Value = x End Property Property Get 青() As Integer 青 = Range("d9").Value End Property Property Let 色見本(x As Long) Range("I9:J14").Interior.Color = x End Property Sub 明るく() 赤 = 赤 + 20 緑 = 緑 + 20 青 = 青 + 20 色見本 = RGB(赤, 緑, 青) End Sub Sub 暗く() 赤 = 赤 - 20 緑 = 緑 - 20 青 = 青 - 20 色見本 = RGB(赤, 緑, 青) End Sub