私は24ビットのビットマップを読んでいます:RGBイメージで赤と青を交換して明るさを保つ方法は?
var P: PByteArray;
...
for y:=0 to Bmp.Height-1 do begin
P := Bmp.ScanLine[y];
for x:=0 to Bmp.Width-1 do begin
R := P[3*x+2];
G := P[3*x+1];
B := P[3*x ];
は今、私はBGRでRGBを交換:私は私のイメージに赤い何かを持っていた場合
P[3*x+2] := B;
P[3*x+1] := G;
P[3*x ] := R;
は、だから、今青だし、どのような青だったことは赤です。しかし、問題は明るさの変化で、新しい画像は元の画像より暗くなったり明るくなったりします。 出力画像を入力画像と同じ明るさ/暗色にするにはどうすればよいですか?
線形に変換、光度関数と重みを:https://en.wikipedia.org/wiki/Relative_luminance –
@J ...だから私は、その後、古い輝度、新しい輝度を計算し、古い/新しいを分割しなければなりません新しいBと新しいRにこの値を掛けますか? – Tom
はい、新しい輝度=古い輝度ですが、RGB値ではなく、輝度関数のR/B重みを入れ替えます。 –