t-hom’s diary

主にVBAネタを扱っているブログ…とも言えなくなってきたこの頃。

黒つぶれ、白とびについて(ノンプログラマー向け)

今日書いた記事について、面白いけど難しいという意見をいただいたので、もう少しざくっと書いてみようと思う。

これが先ほどのバージョン
thom.hateblo.jp

黒つぶれに見えても、階調が生きていればなんとかなるという結論だったが、なんでも暗い方が良いという誤解を与えてしまうとまずいので、その補足の意味もこめて書こうと思う。

それぞれのケースをシミュレーションしてみた。
GIFアニメにしたので、グラフの形に注目してほしい。

階調が生きている例

f:id:t-hom:20150816201054g:plain

明るくするとは、すなわち各色の発色を強めることであるが、最大値である255以内に収まっているうちは、色のバランスは保たれている。明るくした画像を暗くすれば元の色が得られる。

白とびしてしまった例

※ループするので開始点が分りにくいかもしれません。紫色がスタートです。
f:id:t-hom:20150816201144g:plain

こちらは青の明るさが限界に達した後になお明るくしようとして他の色を明るくしたため、色のバランスが崩れてしまった例。

黒つぶれの例

※ループするので開始点が分りにくいかもしれません。紫色がスタートです。
f:id:t-hom:20150816201215g:plain

こちらは緑の暗さが限界に達した後になお暗くしようとして他の色を暗くしたため、色のバランスが崩れてしまった例。

まとめ

前記事でも紹介した以下の記事であるが、
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

当ブログは、amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、 Amazonアソシエイト・プログラムの参加者です。