web-dev-qa-db-ja.com

RGB値を常に255で割るのはなぜですか?

RGB値を常に255で割るのはなぜですか?範囲は[0-1]であることを知っています。しかし、なぜ255でのみですか? RGB値の概念について教えてください。

19
Tabish Sohail

RGB(赤、緑、青)はそれぞれ8ビットです。
個々の色の範囲は0〜255です(2 ^ 8 = 256通り)。
組み合わせの範囲は256 * 256 * 256です。

255で除算することにより、0〜255の範囲を0.0〜1.0の範囲で記述できます。0.0は0(0x00)を意味し、1.0は255(0xFF)を意味します。

30
Tarun Chaudhary

これはプラットフォームやメソッドに固有である可能性があるため、少し一般的な質問です。本当に数学と0から1の間の値を取得します。 255が最大値であるため、255で割ると0-1の表現になります。

各チャネル(赤、緑、青は各チャネル)は8ビットであるため、それぞれ256に制限されています。この場合は0が含まれるため255です。参照が示すように、システムは通常、浮動小数点値を使用する場合、0-1の間の値を使用します。

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

数値表現を参照してください。

これらの範囲は、いくつかの異なる方法で定量化することができます:0から1の間に小数値が含まれます。この表現は、理論的分析および浮動小数点表現を使用するシステムで使用されます。各色成分値は、0%から100%の割合で書き込むこともできます。コンピューターでは、コンポーネントの値は多くの場合、0〜255の範囲の整数として保存されます。これは、単一の8ビットバイトが提供できる範囲です。多くの場合、これらは10進数または16進数で表されます。ハイエンドデジタル画像機器は、多くの場合、24ビット( 3つの8ビット値)から32ビット単位、48ビット単位、または64ビット単位(特定のコンピューターのWordサイズにほぼ依存しない)。

6
Chris

RGB値は1バイトのデータを正確に消費するため、0から255まで上がります。 1バイトは8ビットに等しく、各ビットは0または1を表します。これにより、8ビットバイナリで0が作成されます:00000000および25511111111。最後のビットは、値に1があるかどうかを示します。 2番目の値は、値に2があるかどうかを示します。最後の3番目は、値に4があるかどうかを示し、毎回2倍になります。存在する小さな値をすべて合計すると、合計値が得られます。例えば、

    =10110101
    =1*128 + 0*64 + 1*32 + 1*16 + 0*8 + 1*4 + 0*2 + 1*1
    =128 + 32 + 16 + 4 + 1
    =181

これは、2進数の10110101が10進数の181に等しいことを意味します。

3
ThePiMan

RGB値は通常、メモリを節約するために整数として保存されます。しかし、色の計算は通常、フロートで行われます。なぜなら、それはより簡単で、より強力で、より正確だからです。浮動小数点数を整数に変換する動作は「量子化」と呼ばれ、精度を捨てます。

通常、RGB値は0〜255の範囲の8ビット整数としてエンコードされます。0.0fを黒、1.0fを白(最大輝度)と考えることが業界標準です。 [0、255]を[0.0f、1.0f]に変換するには、255.0fで除算するだけです。

気にするなら、これは整数に変換する公式です:(int)floor(x * 255.0f + 0.5f)。ただし、必要に応じて最初にxを[0.0f、1.0f]にクランプします。

1
James Stanard

現在、各Ocketは8ビットで構成されています(bi nary digi t

次のようにOcketが満たされているとします:

1   0   1   0   0   1   0   1

ビットごとに2つの可能性があります:0または1

2 x 2 x 2 x 2 x 2 x 2 x 2 x 2    = 2^8 = 256

合計:256

And for hexadecimal colors :
given that you have 3 couples of characters, dash excluded => ex: #00ff00
0, 1, 2, 3, 4 , 5, 6, 7, 8, 9, a, b, c, d, e, f = 16 possibilities 

16 x 16 = 256

R      V     B   = color
256  x 256 x 256 = 16 777 216 colors)
0
marcdahan