グレースケール値 (0-255) を RGB 値/表現に変換するにはどうすればよいですか? これは、グレースケールのサポートがなく、RGB のみがサポートされているように見える SVG 画像で使用するためのものです...
注: これは RGB -> グレースケールではなく、別の質問で既に回答されています。たとえば、RGB をグレースケール/強度に変換するなど) 。
グレースケール値 (0-255) を RGB 値/表現に変換するにはどうすればよいですか? これは、グレースケールのサポートがなく、RGB のみがサポートされているように見える SVG 画像で使用するためのものです...
注: これは RGB -> グレースケールではなく、別の質問で既に回答されています。たとえば、RGB をグレースケール/強度に変換するなど) 。
手っ取り早い方法は、RGB の各コンポーネントのグレースケール強度を繰り返すことです。したがって、グレースケールが 120 の場合、RGB (120、120、120) に変換されます。
得られる実効輝度は、使用しているデバイスの R、G、および B サブピクセルの実際の輝度に依存するため、これは簡単で汚いものです。
グレースケールから RGB への変換は簡単です。R = G = B = グレー値を使用するだけです。基本的な考え方は、色 (RGB でモニターに表示される) は加算システムであるということです。
http://en.wikipedia.org/wiki/Additive_color
したがって、緑に赤を加えると黄色になります。その混合物に同量の青を加えると、ニュートラルな色になります. [red, green, blue] = [255 255 255] をフルにすると白になります。[0,0,0] はモニターの黒を生成します。R=G=B がすべて等しい場合の中間値は、指定されたグレー レベルの名目上のニュートラル カラーを生成します。
マイナーな問題は、色の見方によっては、完全にニュートラルではない場合があることです. これは、モニター (またはプリンター) のキャリブレーション方法によって異なります。この時点から、色科学には興味深い深みがあります。ここでやめます。
グレースケールは、すべての値が同じ強度を持つことを意味します。すべてのチャネル (RGB) をグレー値に等しく設定すると、RGB 白黒画像が得られます。
R、G、B を各ピクセルに同じ値 (グレースケール値) に設定すると、正しいグレーの色合いが得られませんか?
また、私のソリューション、より高速なアセンブリ最適化方法を RGB8 イメージから RGB32 イメージに変換する方法もご覧ください。灰色のチャネルは、他のすべてのチャネルで単純に繰り返されます。
目的は、x86/SSE を使用して変換するための断食可能な解決策を見つけることでした。