4

たとえば、次の値を持つピクセルがあります。

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 を計算する既知の方法はありますか?

4

1 に答える 1

4

RGBカラーをLabカラースペースに変換したいですか?もちろん、それは可能です。

しかし、さまざまな規格があり、それらを総称して「ラボ」カラーと呼びます。アルゴリズムを作成するときに使用するものを選択する必要があります。特に PhotoshopCIELAB D50 標準を使用しているため、その処理を正確にシミュレートする必要がある場合は、CIELAB D50 標準を使用することをお勧めします。

もう 1 つ注意しなければならないことは、RGB モデルはデバイスに依存するということです。つまり、RGB から Lab に変換するには、まず RGB からデバイスに依存しない絶対色空間に変換する必要があります。Adobe は「Adobe RGB」形式でこれを行いますが、sRGB などの標準的なものを使用できます。調整プロセスでは、RGB カラーのデバイス依存性が考慮されますが、デバイスに依存しない色に変換されます。それができたら、色を Lab 色空間に変換する最後のステップを実行できます。

ウィキペディアの記事では、変換アルゴリズムを作成する際の背景情報と便利な式について説明しています。そして、これはすでにそのような変換アルゴリズムを書いている人です。そして、おそらく変換できるMATLAB用のもの。

あなたがどれだけ真剣に取り組んでいるかにもよりますが (そうではないかもしれません)、GIMPのソースをダウンロードして、変換アルゴリズムがどのように実装されているかを確認することもできます。彼らのソフトウェアは、Lab スペースをサポートすると主張しています。

ただし、 RGBに戻す場合は注意してください。Lab 色空間は、sRGB の範囲外の色を表すことができます。Photoshop でさえ、画像を RGB (または CMYK) に戻すと、Lab モードで表示されるもののほとんどが破棄されます。


編集: RGB よりも人間の色知覚に近い色空間で色を明るくすることが唯一の目標である場合は、Lab で大騒ぎする必要がないことも考慮する価値があります。多くのアプリケーションは、HSL または HSV 色空間に変換することでこれを行います。(Photoshop は HSV、HSB を呼び出します)。

利点は、「明度」または「値」の値を調整して色の強度を変更できることです (Lab 色空間で「輝度」の値を調整するのと同じように) が、変換アルゴリズムははるかに単純です (多くの場合、選択した言語の標準ライブラリに組み込まれています)。

たとえば、.NET 言語で記述された変換アルゴリズムについては、この質問に対する私の回答を参照してください。

于 2011-06-25T14:25:51.533 に答える