各色温度に相当する 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 での出力が続きます。
