メインメニューを開く

差分

グレースケール変換

1,323 バイト追加, 2019年9月24日 (火) 08:32
グレースケール変換とは、カラー画像をクレースケール画像に変換する処理をいう。
 
一般的にグレースケールは「輝度を一定の数値範囲に丸め込んだもの」なので、「[[輝度]]」を求める計算式とほぼ同じである。
 
== Rec.709輝度値を使った方法 ==
カラー画像をグレースケール画像に変換する方法の中でももっとも手軽だとされている方法がこれ。輝度値が[[PC]]におけるRGBで表現されるカラー画像をグレースケール画像に変換する方法の中でももっとも手軽だとされている方法がこれ。輝度値が[[Rec. 709]]に準拠している場合に使用できる。よほど特殊なに準拠している場合に使用できる。よほど特殊な[[コンピューター]]でもない限り準拠している。
グレースケール変換用の輝度値
float gray = dot(color.rgb, luma);
}
 
== Rec. 601輝度値を使った方法 ==
アナログテレビの時代はちょっと違った。
 
グレースケール変換用の輝度値
R = 0.299
G = 0.587
B = 0.114
 
== 緑色だけ使う方法 ==
前述のRec.709やRec.601の変換方法で使用している輝度値を見ると「緑色(G)」の数字が特出して大きい。ならば「細かいことを考えず[[RGB]]の緑色だけ抽出すればよくね?」「赤と青を緑に置き換えれば灰色じゃん」という手法もある。
 
float gray = color.green;
 
float3 gray = float3(color.green, color.green, color.green);
 
この手法は[[動画]]に対してリアルタイムで遅延なく超高速で[[アンチエイリアシング]]を掛ける「[[FXAA]]」で使われている。[[浮動小数点演算]]を伴わないどころか[[変数]]のコピーしか発生しないので超高速で処理できる。「正確さ」よりも「速さ」が重要な場合はこれでいいのだ。
== 関連項目 ==
匿名利用者