Skip to content

Instantly share code, notes, and snippets.

@ormike
Last active November 30, 2017 03:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ormike/20af06ee650cccf8fcf36ffdebc06458 to your computer and use it in GitHub Desktop.
Save ormike/20af06ee650cccf8fcf36ffdebc06458 to your computer and use it in GitHub Desktop.
cie_1931_standard_observer
.ipynb_checkpoints
We can make this file beautiful and searchable if this error is corrected: Any value after quoted field isn't allowed in line 1.
"wavelength, nm" "x-bar" "y-bar" "z-bar" "little-x" "little-y"
380 0.001368 0.000039 0.006450 0.17411 0.00496
385 0.002236 0.000064 0.010550 0.17401 0.00498
390 0.004243 0.000120 0.020050 0.17380 0.00492
395 0.007650 0.000217 0.036210 0.17356 0.00492
400 0.014310 0.000396 0.067850 0.17334 0.00480
405 0.023190 0.000640 0.110200 0.17302 0.00478
410 0.043510 0.001210 0.207400 0.17258 0.00480
415 0.077630 0.002180 0.371300 0.17209 0.00483
420 0.134380 0.004000 0.645600 0.17141 0.00510
425 0.214770 0.007300 1.039050 0.17030 0.00579
430 0.283900 0.011600 1.385600 0.16888 0.00690
435 0.328500 0.016840 1.622960 0.16690 0.00856
440 0.348280 0.023000 1.747060 0.16441 0.01086
445 0.348060 0.029800 1.782600 0.16110 0.01379
450 0.336200 0.038000 1.772110 0.15664 0.01770
455 0.318700 0.048000 1.744100 0.15099 0.02274
460 0.290800 0.060000 1.669200 0.14396 0.02970
465 0.251100 0.073900 1.528100 0.13550 0.03988
470 0.195360 0.090980 1.287640 0.12412 0.05780
475 0.142100 0.112600 1.041900 0.10959 0.08684
480 0.095640 0.139020 0.812950 0.09129 0.13270
485 0.057950 0.169300 0.616200 0.06871 0.20072
490 0.032010 0.208020 0.465180 0.04539 0.29498
495 0.014700 0.258600 0.353300 0.02346 0.41270
500 0.004900 0.323000 0.272000 0.00817 0.53842
505 0.002400 0.407300 0.212300 0.00386 0.65482
510 0.009300 0.503000 0.158200 0.01387 0.75019
515 0.029100 0.608200 0.111700 0.03885 0.81202
520 0.063270 0.710000 0.078250 0.07430 0.83380
525 0.109600 0.793200 0.057250 0.11416 0.82621
530 0.165500 0.862000 0.042160 0.15472 0.80586
535 0.225750 0.914850 0.029840 0.19288 0.78163
540 0.290400 0.954000 0.020300 0.22962 0.75433
545 0.359700 0.980300 0.013400 0.26578 0.72432
550 0.433450 0.994950 0.008750 0.30160 0.69231
555 0.512050 1.000000 0.005750 0.33736 0.65885
560 0.594500 0.995000 0.003900 0.37310 0.62445
565 0.678400 0.978600 0.002750 0.40874 0.58961
570 0.762100 0.952000 0.002100 0.44406 0.55471
575 0.842500 0.915400 0.001800 0.47877 0.52020
580 0.916300 0.870000 0.001650 0.51249 0.48659
585 0.978600 0.816300 0.001400 0.54479 0.45443
590 1.026300 0.757000 0.001100 0.57515 0.42423
595 1.056700 0.694900 0.001000 0.60293 0.39650
600 1.062200 0.631000 0.000800 0.62704 0.37249
605 1.045600 0.566800 0.000600 0.64823 0.35139
610 1.002600 0.503000 0.000340 0.66576 0.33401
615 0.938400 0.441200 0.000240 0.68008 0.31975
620 0.854450 0.381000 0.000190 0.69150 0.30834
625 0.751400 0.321000 0.000100 0.70061 0.29930
630 0.642400 0.265000 0.000050 0.70792 0.29203
635 0.541900 0.217000 0.000030 0.71403 0.28593
640 0.447900 0.175000 0.000020 0.71903 0.28093
645 0.360800 0.138200 0.000010 0.72303 0.27695
650 0.283500 0.107000 0.000000 0.72599 0.27401
655 0.218700 0.081600 0.000000 0.72827 0.27173
660 0.164900 0.061000 0.000000 0.72997 0.27003
665 0.121200 0.044580 0.000000 0.73109 0.26891
670 0.087400 0.032000 0.000000 0.73199 0.26801
675 0.063600 0.023200 0.000000 0.73272 0.26728
680 0.046770 0.017000 0.000000 0.73342 0.26658
685 0.032900 0.011920 0.000000 0.73405 0.26595
690 0.022700 0.008210 0.000000 0.73439 0.26561
695 0.015840 0.005723 0.000000 0.73459 0.26541
700 0.011359 0.004102 0.000000 0.73469 0.26531
705 0.008111 0.002929 0.000000 0.73469 0.26531
710 0.005790 0.002091 0.000000 0.73469 0.26531
715 0.004109 0.001484 0.000000 0.73469 0.26531
720 0.002899 0.001047 0.000000 0.73469 0.26531
725 0.002049 0.000740 0.000000 0.73469 0.26531
730 0.001440 0.000520 0.000000 0.73469 0.26531
735 0.001000 0.000361 0.000000 0.73469 0.26531
740 0.000690 0.000249 0.000000 0.73469 0.26531
745 0.000476 0.000172 0.000000 0.73469 0.26531
750 0.000332 0.000120 0.000000 0.73469 0.26531
755 0.000235 0.000085 0.000000 0.73469 0.26531
760 0.000166 0.000060 0.000000 0.73469 0.26531
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# The CIE 1931 Standard Observer\n",
"Some charts and calculations based on color matching functions and spectral power distribution numbers from CIE 15: Technical Report: Colorimetry, 3rd edition. CIE 15:2004"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"%matplotlib inline\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Get color matching functions from CIE 15:2004. This is Table T.4. _CIE 1931 standard colorimetric observer_, copied from the pdf and pasted into the csv"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"cmf = np.loadtxt(\"cie1931.csv\", skiprows=1).reshape((-1,6))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Get spectral power distribution for various standard illuminants. This is Table T.1. _Relative spectral power distributions of CIE illuminants_, copied from the pdf and pasted into the csv"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"spd = np.loadtxt(\"cie1931_spd.csv\", skiprows=1).reshape((-1,7))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Recommendation ITU-R BT.709 color primaries and reference white "
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"color_primaries_709 = np.array([[0.64, 0.33, 0.03], [0.3, 0.6, 0.1], [0.15, 0.06, 0.79]]).transpose()\n",
"reference_white_709 = np.array([0.312727, 0.329024, 0.358249])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"J is the relative weighting of color primaries to get the reference white color"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 0.64446254, 0. , 0. ],\n",
" [ 0. , 1.19192148, 0. ],\n",
" [ 0. , 0. , 1.20290795]])"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"J = np.matmul(np.linalg.inv(color_primaries_709), reference_white_709) / reference_white_709[1]\n",
"np.diag(J)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The middle row of color_primaries_709 is for luminance, Y. When multiplied by the relative weights of color primaries J the result is normalized to unity. This is a check on the computation of J"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1.0"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.inner(color_primaries_709[1,:], J)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This is the same calculation but for all three XYZ components. If you start with RGB = (1, 1, 1) which is white then what values do you get for XYZ?"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 0.95046866, 1. , 1.08882331])"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.matmul(np.matmul(color_primaries_709, np.diag(J)), np.array([1.0, 1.0, 1.0]))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"By the way, this is the same as reference white"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 0.95046866, 1. , 1.08882331])"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"reference_white_709 / reference_white_709[1]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Sum all the values in the color matching functions for X, Y, Z. They are normalized to have equal sums:"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"21.371223000000001"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.sum(cmf[:,1])"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"21.371218999999996"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.sum(cmf[:,2])"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"21.37154"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.sum(cmf[:,3])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Plot the color matching functions"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7ff4f84880f0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig = plt.figure(figsize=(6.0, 3.0), dpi=100)\n",
"fig.subplots_adjust(hspace=0.5)\n",
"ax = fig.add_subplot(111)\n",
"ax.plot(cmf[:,0],cmf[:,1], label=r'$\\overline{x}$', color='red')\n",
"ax.plot(cmf[:,0],cmf[:,2], label=r'$\\overline{y}$', color='green')\n",
"ax.plot(cmf[:,0],cmf[:,3], label=r'$\\overline{z}$', color='blue')\n",
"ax.set_xlabel(r'wavelength of light $\\lambda$ (nm)')\n",
"ax.set_ylabel('relative sensitivity')\n",
"ax.set_title(r'CIE 1931 $2\\degree$ color matching functions')\n",
"ax.legend()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Plot the spectral power distribution for D65 illuminant"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7ff4f6346940>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig = plt.figure(figsize=(6.0, 3.0), dpi=100)\n",
"fig.subplots_adjust(hspace=0.5)\n",
"ax = fig.add_subplot(111)\n",
"ax.plot(spd[:,0],spd[:,2], label=r'$M_{rel}(\\lambda)$')\n",
"ax.set_xlabel(r'wavelength of light $\\lambda$ (nm)')\n",
"ax.set_ylabel('relative power')\n",
"ax.set_title(r'spectral power distribution for $D_{65}$ illuminant')\n",
"ax.legend(loc='lower right')\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Compute X, Y, Z for the D65 illuminant"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(1.0059112269402001e-05, 1.0593608756991503e-05, 1.150575810585e-05)"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X = np.inner(spd[16:93,2],cmf[:,1]) * 5e-9\n",
"Y = np.inner(spd[16:93,2],cmf[:,2]) * 5e-9\n",
"Z = np.inner(spd[16:93,2],cmf[:,3]) * 5e-9\n",
"(X, Y, Z)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Normalize by dividing by X + Y + Z to get x, y"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(0.31279813414174473, 0.32941883580464121)"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"x = X / (X + Y + Z)\n",
"y = Y / (X + Y + Z)\n",
"(x,y)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This is the same as the reference white position on the CIE 1931 Chromaticity Diagram"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.5.2"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
We can make this file beautiful and searchable if this error is corrected: No commas found in this CSV file in line 0.
"lambda. nm" "Standard IIluminant A" "Standard Iliuminant D65" "Illuminant C" "IIluminant D50" "Illuminant D55" "Illuminant D75"
300 0.930483 0.0341000 0.00 0.019 0.024 0.043
305 1.12821 1.66430 0.00 1.035 1.048 2.588
310 1.35769 3.29450 0.00 2.051 2.072 5.133
315 1.62219 11.7652 0.00 4.914 6.648 17.470
320 1.92508 20.2360 0.01 7.778 11.224 29.808
325 2.26980 28.6447 0.20 11.263 15.936 42.369
330 2.65981 37.0535 0.40 14.748 20.647 54.930
335 3.09861 38.5011 1.55 16.348 22.266 56.095
340 3.58968 39.9488 2.70 17.948 23.885 57.259
345 4.13648 42.4302 4.85 19.479 25.851 60.000
350 4.74238 44.9117 7.00 21.010 27.817 62.740
355 5.41070 45.7750 9.95 22.476 29.219 62.861
360 6.14462 46.6383 12.90 23.942 30.621 62.982
365 6.94720 49.3637 17.20 25.451 32.464 66.647
370 7.82135 52.0891 21.40 26.961 34.308 70.312
375 8.76980 51.0323 27.50 25.724 33.446 68.507
380 9.79510 49.9755 33.00 24.488 32.584 66.703
385 10.8996 52.3118 39.92 27.179 35.335 68.333
390 12.0853 54.6482 47.40 29.871 38.087 69.963
395 13.3543 68.7015 55.17 39.589 49.518 85.946
400 14.7080 82.7549 63.30 49.308 60.949 101.929
405 16.1480 87.1204 71.81 52.910 64.751 106.911
410 17.6753 91.4860 80.60 56.513 68.554 111.894
415 19.2907 92.4589 89.53 58.273 70.065 112.346
420 20.9950 93.4318 98.10 60.034 71.577 112.798
425 22.7883 90.0570 105.80 58.926 69.746 107.945
430 24.6709 86.6823 112.40 57.818 67.914 103.092
435 26.6425 95.7736 117.75 66.321 76.760 112.145
440 28.7027 104.865 121.50 74.825 85.605 121.198
445 30.8508 110.936 123.45 81.036 91.799 127.104
450 33.0859 117.008 124.00 87.247 97.993 133.010
455 35.4068 117.410 123.60 88.930 99.228 132.682
460 37.8121 117.812 123.10 90.612 100.463 132.355
465 40.3002 116.336 123.30 90.990 100.188 129.838
470 42.8693 114.861 123.80 91.368 99.913 127.322
475 45.5174 115.392 124.09 93.238 101.326 127.061
480 48.2423 115.923 123.90 95.109 102.739 126.800
485 51.0418 112.367 122.92 93.536 100.409 122.291
490 53.9132 108.811 120.70 91.963 98.078 117.783
495 56.8539 109.082 116.90 93.843 99.379 117.186
500 59.8611 109.354 112.10 95.724 100.680 116.589
505 62.9320 108.578 106.98 96.169 100.688 115.146
510 66.0635 107.802 102.30 96.613 100.695 113.702
515 69.2525 106.296 98.81 96.871 100.341 111.181
520 72.4959 104.790 96.90 97.129 99.987 108.659
525 75.7903 106.239 96.78 99.614 102.098 109.552
530 79.1326 107.689 98.00 102.099 104.210 110.445
535 82.5193 106.047 99.94 101.427 103.156 108.367
540 85.9470 104.405 102.10 100.755 102.102 106.289
545 89.4124 104.225 103.95 101.536 102.535 105.596
550 92.9120 104.046 105.20 102.317 102.968 104.904
555 96.4423 102.023 105.67 101.159 101.484 102.452
560 100.000 105.30 100.000 100.000 100.000 100.000
565 103.582 98.1671 104.11 98.868 98.608 97.808
570 107.184 96.3342 102.30 97.735 97.216 95.616
575 110.803 96.0611 100.15 98.327 97.482 94.914
580 114.436 95.7880 97.80 98.918 97.749 94.213
585 118.080 92.2368 95.43 96.208 94.590 90.605
590 121.731 88.6856 93.20 93.499 91.432 86.997
595 125.386 89.3459 91.22 95.593 92.926 87.112
600 129.043 90.0062 89.70 97.688 94.419 87.227
605 132.697 89.8026 88.83 98.478 94.780 86.684
610 136.346 89.5991 88.40 99.269 95.140 86.140
615 139.988 88.6489 88.19 99.155 94.680 84.861
620 143.618 87.6987 88.10 99.042 94.220 83.581
625 147.235 85.4936 88.06 97.382 92.334 81.164
630 150.836 83.2886 88.00 95.722 90.448 78.747
635 154.418 83.4939 87.86 97.290 91.389 78.587
640 157.979 83.6992 87.80 98.857 92.330 78.428
645 161.516 81.8630 87.99 97.262 90.592 76.614
650 165.028 80.0268 88.20 95.667 88.854 74.801
655 168.510 80.1207 88.20 96.929 89.586 74.562
660 171.963 80.2146 87.90 98.190 90.317 74.324
665 175.383 81.2462 87.22 100.597 92.133 74.873
670 178.769 82.2778 86.30 103.003 93.950 75.422
675 182.118 80.2810 85.30 101.068 91.953 73.499
680 185.429 78.2842 84.00 99.133 89.956 71.576
685 188.701 74.0027 82.21 93.257 84.817 67.714
690 191.931 69.7213 80.20 87.381 79.677 63.852
695 195.118 70.6652 78.24 81.258 64.464 66.697
700 198.261 71.6091 76.30 91.604 82.840 65.076
705 201.359 72.9790 74.36 92.246 83.842 66.573
710 204.409 74.3490 72.40 92.889 84.844 68.070
715 207.411 67.9765 70.40 84.872 77.539 62.256
720 210.365 61.6040 68.30 76.854 70.235 56.443
725 213.268 65.7448 66.30 81.683 74.768 60.343
730 216.120 69.8856 64.40 86.511 79.301 64.242
735 218.920 72.4863 62.80 89.546 82.147 66.697
740 221.667 75.0870 61.50 92.580 84.993 69.151
745 224.361 69.3398 60.20 85.405 78.437 63.890
750 227.000 63.5927 59.20 78.230 71.880 58.629
755 229.585 55.0054 58.50 67.961 62.337 50.623
760 232.115 46.4182 58.10 57.692 52.793 42.617
765 234.589 56.6118 58.00 70.307 64.360 51.985
770 237.008 66.8054 58.20 82.923 75.927 61.352
775 239.370 65.0941 58.50 80.599 73.872 59.838
780 241.675 63.3828 59.10 78.274 71.818 58.324
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment