今回はGPUを使ってモノクロフィルタをやってみます。
エフェクト(6) モノクロフィルタ★ 1.はじめに…
今回はGPUを使ってモノクロフィルタをやってみます。
★ 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 2005とCg Toolkit 1.5 Septemberを用いています。 |