「グレースケール変換」の版間の差分
ページの作成:「== Rec.709輝度値を使った方法 == カラー画像をグレースケール画像に変換する方法の中でももっとも手軽だとされている方法がこ…」 |
imported>Administrator |
||
| (2人の利用者による、間の4版が非表示) | |||
| 1行目: | 1行目: | ||
グレースケール変換とは、カラー画像をクレースケール画像に変換する処理をいう。 | |||
一般的にグレースケールは「輝度を一定の数値範囲に丸め込んだもの」なので、「[[輝度]]」を求める計算式とほぼ同じである。 | |||
== Rec.709輝度値を使った方法 == | == Rec.709輝度値を使った方法 == | ||
[[PC]]におけるRGBで表現されるカラー画像をグレースケール画像に変換する方法の中でももっとも手軽だとされている方法がこれ。輝度値が[[Rec. 709]]に準拠している場合に使用できる。よほど特殊な[[コンピューター]]でもない限り準拠している。 | |||
グレースケール変換用の輝度値 | グレースケール変換用の輝度値 | ||
| 10行目: | 12行目: | ||
各[[ピクセル]]の[[RGB]]値と上記のRec709輝度値の[[ドット積]]をとるとグレースケールになる。 | 各[[ピクセル]]の[[RGB]]値と上記のRec709輝度値の[[ドット積]]をとるとグレースケールになる。 | ||
float3 luma = float3(0.2126, 0.7152, 0.0722); | const float3 luma = float3(0.2126, 0.7152, 0.0722); | ||
float gray = dot(color.rgb, luma); | loop (全ピクセル) { | ||
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]]」で使われている。[[浮動小数点演算]]を伴わないどころか[[変数]]のコピーしか発生しないので超高速で処理できる。「正確さ」よりも「速さ」が重要な場合はこれでいいのだ。 | |||
== 関連項目 == | == 関連項目 == | ||