Edited at

# 標準光源Dの分光分布

More than 1 year has passed since last update.

これらのDシリーズは「Illuminant series D」や「CIE昼光(D)」と呼ばれる。

S(λ) = S0(λ) + S1(λ) *M1 + S2(λ) *M2

## 参考

↓ここに計算方法が書いてある

Standard illuminant - Wikipedia

↓計算しているエクセルシートがあり、そこにs0,s1,s2の値も書いてある。

RIT | Color Science | Resources | Useful Color data

「Excel Daylight Series Calculator」をクリックすると「DaylightSeries.xlsx」がダウンロードできる

## プロットして確認

```import numpy as np
import matplotlib.pyplot as plt

#illuminantDの計算で使うs0,s1,s2の分光分布の入力 300-830nm 10nm step
s0 = np.array([[0.04,6,29.6,55.3,57.3,61.8,61.5,68.8,63.4,65.8,94.8,104.8,105.9,96.8,113.9,125.6,125.5,121.3,121.3,113.5,113.1,110.8,106.5,108.8,105.3,104.4,100,96,95.1,89.1,90.5,90.3,88.4,84,85.1,81.9,82.6,84.9,81.3,71.9,74.3,76.4,63.3,71.7,77,65.2,47.7,68.6,65,66,61,53.3,58.9,61.9]])
s1 = np.array([[0.02,4.5,22.4,42,40.6,41.6,38,42.4,38.5,35,43.4,46.3,43.9,37.1,36.7,35.9,32.6,27.9,24.3,20.1,16.2,13.2,8.6,6.1,4.2,1.9,0,-1.6,-3.5,-3.5,-5.8,-7.2,-8.6,-9.5,-10.9,-10.7,-12,-14,-13.6,-12,-13.3,-12.9,-10.6,-11.6,-12.2,-10.2,-7.8,-11.2,-10.4,-10.6,-9.7,-8.3,-9.3,-9.8]])
s2 = np.array([[0,2,4,8.5,7.8,6.7,5.3,6.1,2,1.2,-1.1,-0.5,-0.7,-1.2,-2.6,-2.9,-2.8,-2.6,-2.6,-1.8,-1.5,-1.3,-1.2,-1,-0.5,-0.3,0,0.2,0.5,2.1,3.2,4.1,4.7,5.1,6.7,7.3,8.6,9.8,10.2,8.3,9.6,8.5,7,7.6,8,6.7,5.2,7.4,6.8,7,6.4,5.5,6.1,6.5]])
Vaxis = np.array(range(300, 831, 10))

#色温度を指定してD光源の分光分布を合成
def calcIlluminantD(temperature):
T = temperature
xd = 0.0
if (4000<= T and T<=7000):
xd = 0.244063+0.09911*10**3/T + 2.9678*10**6/(T**2)-4.6070*10**9/(T**3)
elif  (7000<= T and T<=25000):
xd = 0.237040+0.24748*10**3/T + 1.9018*10**6/(T**2)-2.0064*10**9/(T**3)
yd = -3.0*xd**2 + 2.87*xd -0.275
m = 0.0241+0.2562*xd-0.7341*yd
m1 = (-1.3515-1.7703*xd+5.9114*yd)/m
m2 = (0.03-31.4424*xd+30.0717*yd)/m
sd = s0 + s1*m1 + s2*m2
return (sd.reshape(54))

#グラフのプロット
def plotIlluminantD(Tlist):
for T in Tlist:
sd = calcIlluminantD(T)
plt.plot(Vaxis,sd,label=str(T)+'k')
plt.title("illuminant D")
plt.xlabel("wavelength [nm]")
plt.ylim(ymax=250)
plt.xlim(xmax=830)
plt.legend()
plt.show()

Tlist = [25000,13000,9000,6500,5000,4000]
plotIlluminantD(Tlist)
```

## 他参考

2番目は“変化する”部分です。S1は雲があるかどうか、或いは直接的な太陽光の強さと位置で決まる“ブルー/イエロー”の変化量のことです。

3番目も“変化”する部分で、S2は蒸気や霧による湿度で決まる“ピンク/グリーン”の変化量のことです。

しかし、実際には、色温度と光源をベースにした2つの値、xDとyDを決定する単純な式で表わされます。