たとえば、次の値を持つピクセルがあります。
CGFloat red = 34 // 0 - 255
CGFloat green = 128
CGFloat blue = 190
青が 255 になるように輝度を上げたいと思います。 注: 「輝度」とは、LAB 色空間における Photoshop の L コンポーネントを意味します。写真を見てください!
RGB 値は非線形の方法で変更されるため、増加した輝度の RGB 値を計算する特別な式が必要です!
証明: Photoshop でテストを行い、これと同じ色を作成し、カラー ピッカーを開いて調べました。
次に、ルミナンスを制御する LAB 色空間の L コンポーネントをアクティブにしました (少なくとも、これは私が話していることです。L コンポーネントによって制御される明るさを意味します。それはルミナンスだと思います)。
L がアクティブな状態で、B が 255 に達するまで左上のスライダーを上にドラッグしました。
結果の RGB 値を読み取ります。
CGFloat newRed = 112 // 0 - 255
CGFloat newGreen = 188
CGFloat newBlue = 255
これらの違いは次のとおりです。
newRed - red = +78
newGreen - green = +60
newBlue - blue = +65
パーセンテージは次のとおりです。
red shift: +38.42%
green shift: +29.55%
blue shift: +32.01%
これは、RGB から輝度を計算するための既知の式とは一致しません。これは に近いものluminance = (red * 0.3) + (green * 0.6) + (blue * 0.1)
です。
明らかに、それらは非線形の方法でシフトされています。
Photoshop と同様の方法で、赤、緑、青から newRed、newGreen、newBlue を計算する既知の方法はありますか?