12

RGB -> 輝度に移行する式があることは知っていますが、画像の RGB 値を変更するには、輝度パラメータを指定する必要があります。それ、どうやったら出来るの?

ありがとう

4

7 に答える 7

22

最も簡単な方法は、R、G、Bの各値に定数を掛けることです。定数が1より大きい場合は明るくなり、1未満の場合は暗くなります。明るくする場合は、各値をテストして、最大値(通常は255)を超えないことを確認する必要があります。

これは、RGBからHSLに変換して元に戻すよりも単純であるだけでなく、物理的なオブジェクトに異なる量の光を当てたときに何が起こるかをより厳密に近似します。

于 2012-06-22T20:57:24.120 に答える
19

RGB から HSL (色相/彩度/輝度) にマッピングし、色相と彩度を同じに保ち、輝度を変更するだけで、HSL から RGB への逆方向マッピングを実行します。

RGB から HSL への変換と HSL から RGB への変換の詳細については、こちらを参照してください。

于 2012-06-22T20:29:52.580 に答える
0

LookupTable と LookupOp を試すことができます。LookupTable を変更して写真の明るさを調整できるようにします。画像を明るくするには、RGB に何らかの値を追加するだけです。

BufferedImage dstImage = new BufferedImage(input.getWidth(), input.getHeight(),BufferedImage.TYPE_3BYTE_BGR);
        LookupTable lookupTable = new ShortLookupTable(0, data);
        LookupOp op = new LookupOp(lookupTable, null);
        op.filter(toBeTone, dstImage);
于 2021-07-04T03:14:47.193 に答える
-3

画像の明るさの調整は、実行できる最も簡単な画像処理操作の 1 つです。関係するのは、赤、緑、青の各色成分に必要な明るさの変化を追加することだけです。

次のようになります。

colour = GetPixelColour(x, y)
   newRed   = Truncate(Red(colour)   + brightness)
   newGreen = Truncate(Green(colour) + brightness)
   newBlue  = Truncate(Blue(colour)  + brightness)
   PutPixelColour(x, y) = RGB(newRed, newGreen, newBlue)

赤、緑、青の新しい値が有効な範囲内であることを確認するコード。

Procedure Truncate(value)
      If value < 0 Then value = 0
      If value > 255 Then value = 255
      Return value
   EndProcedure
于 2015-02-22T11:58:05.417 に答える