質問

グレースケール値(0-255)をRGB値/表現に変換するにはどうすればよいですか? これはSVG画像で使用するためのもので、グレースケールをサポートしていないようです。RGBのみです。

注:これはRGBではありません->グレースケール。別の質問で既に回答されています。 RGBをグレースケール/強度に変換

役に立ちましたか?

解決

迅速かつダーティなアプローチは、RGBの各コンポーネントのグレースケール強度を繰り返すことです。したがって、グレースケール120がある場合、RGB(120、120、120)に変換されます。

得られる実効輝度は、使用しているデバイスのR、G、Bサブピクセルの実際の輝度に依存するため、これは迅速で汚れています。

他のヒント

変数にグレースケール値があり、0x00RRGGBBの形式で新しい値を生成する場合、簡単な方法は次のとおりです。

int rgb = grey * 0x00010101;

または選択した言語の同等物。

グレースケールのRGBへの変換は簡単です。単にR = G = B =グレー値を使用します。基本的な考え方は、色(RGBの観点でモニターに表示される)は付加的なシステムであるということです。

http://en.wikipedia.org/wiki/Additive_color

したがって、赤を緑に追加すると黄色になります。そのミックスに同じ量の青を追加すると、中間色になります。 [赤、緑、青] = [255 255 255]で完全にすると、白になります。 [0,0,0]はモニターを黒にします。 R = G = Bがすべて等しい中間値は、指定されたグレーレベルの名目上中立な色を生成します。

軽微な問題は、色の表示方法によって異なり、完全にニュートラルではない場合があります。これは、モニター(またはプリンター)の調整方法によって異なります。この時点から、色彩科学の興味深い深さを探ることができます。ここでやめます。

グレースケールは、すべての値が同じ強度を持つことを意味します。すべてのチャネル(RGB)をグレー値に等しく設定すると、RGB白黒画像が得られます。

ピクセルごとにR、G、Bを同じ値(グレースケール値)に設定すると、正しいグレーのシェードが得られませんか?

また、私のソリューション RGB8画像をRGB32画像に変換する高速アセンブリ最適化方法。グレーチャンネルは、他のすべてのチャンネルで単純に繰り返されます。

目的は、x86 / SSEを使用した変換の高速化可能なソリューションを見つけることでした。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top