4

Photoshop と同じように、色温度を 1000 から 10.000 の間の値に設定するように割り当てられています。これまでのところ、ここで値を示す表を見つけることができましたが 、Gimp で同じ関数を見つけようとしました (これはオープン ソースであり、コードを読むことで学習するため) が、それに直接相当するものはありません。色レベルを選択し、いくつかの曲線を曲げる必要があります。顧客は Photoshop と同じように値を設定したいと言われました。スケールを作成するために正しい方向を示すことができる人はいますか?

追記:リンク修正。

4

1 に答える 1

18

各色温度に相当する RGB の表は既に見つかりましたが、どこにあるのかはわかりませんでした

自然の景色は、当たる光の色に比例して光を反射します。これは、単純な線形変換で目的の効果が得られることを意味します。既存の画像がすでにホワイト バランスが取れており、純粋な白が (255,255,255) であると仮定すると、各ピクセルの r、g、b 値のそれぞれに色温度に対応する比率を掛けるだけの問題になります。

Python のサンプル コードを次に示します。乗算は、行列を使用して間接的に行われます。

from PIL import Image

kelvin_table = {
    1000: (255,56,0),
    1500: (255,109,0),
    2000: (255,137,18),
    2500: (255,161,72),
    3000: (255,180,107),
    3500: (255,196,137),
    4000: (255,209,163),
    4500: (255,219,186),
    5000: (255,228,206),
    5500: (255,236,224),
    6000: (255,243,239),
    6500: (255,249,253),
    7000: (245,243,255),
    7500: (235,238,255),
    8000: (227,233,255),
    8500: (220,229,255),
    9000: (214,225,255),
    9500: (208,222,255),
    10000: (204,219,255)}


def convert_temp(image, temp):
    r, g, b = kelvin_table[temp]
    matrix = ( r / 255.0, 0.0, 0.0, 0.0,
               0.0, g / 255.0, 0.0, 0.0,
               0.0, 0.0, b / 255.0, 0.0 )
    return image.convert('RGB', matrix)

ここにいくつかのサンプルがあります。最初はオリジナルで、2500K と 9500K での出力が続きます。

オリジナル 2500K 9500K

于 2012-08-09T17:06:17.300 に答える