モノクロフィルタ


 1.はじめに…
今回はモノクロフィルタやってみました。




 2.概要
 モノクロにするためには,色情報から輝度情報をとりだして,その輝度情報に基づいて白黒の濃淡を描画してやるそうです。
で,この輝度情報を取り出す方法として,RGBをYIQに変換する方法などがあるそうです。YIQにはルミナンス(輝度)と2つのクロミナンス(色差)の値が含まれるそうです。
RGBからYIQを計算する式がもうあるそうで,下の式だそうです。

  Y = 0.299×R + 0.587×G + 0.114×B
  I = 0.596×R - 0.274×G - 0.322×B
  Q = 0.211×R - 0.522×G + 0.311×B

YIQからRGBを計算するには下の式を使うそうです。

  R = Y + 0.956×I + 0.620×Q
    G = Y - 0.272×I - 0.647×Q
  B = Y - 1.108×I + 1.705×Q

画面の色をモノクロにするには色差(IとQ)を0に設定すればいいそうです。ちなみにこのYIQというのはWikiPediaの情報が正しいとすると(最近,Wikipediaはうそっぱちの情報が多いよね…)1950年代当時のカラーのブラウン管の性能に基づき定められているそうで,当時は青の発色が悪かったため,YIQは青の表現力にかけるそうです。
これをプログラムで実装するにはピクセルシェーダー(フラグメントシェーダー)で送られてきた色をRGBからYIQに変換してIとQの値をゼロに設定して,今度はYIQからRGBに戻してそれを画面に送ってやればいいみたいです。


 Download
本ソースコードおよびプログラムを使用したことによる如何なる損害も製作者は責任を負いません。
本ソースコードおよびプログラムは自己責任でご使用ください。
プログラムの作成にはMicrosoft Visual Studio 2008 SP1 Professional, Micosoft DirectX SDK (June 2010)を用いています。







Flashを利用するためにはPluginが必要です。 <!-- <div style="text-align: center;"><div style="display: inline-block; position: relative; z-index: 9999;"><script type="text/javascript" charset="utf-8" src="//asumi.shinobi.jp/fire?f=434"></script></div></div></body> -->