Added LED setpoint calculation
This commit is contained in:
parent
af0e5cabbc
commit
9b7475f8c0
4 changed files with 318 additions and 3 deletions
|
|
@ -2,7 +2,7 @@
|
|||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"execution_count": 277,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
|
|
@ -13,6 +13,7 @@
|
|||
"from IPython import display\n",
|
||||
"from datetime import datetime\n",
|
||||
"import scipy.interpolate as inter\n",
|
||||
"from scipy import integrate\n",
|
||||
"\n",
|
||||
"import numpy as np\n",
|
||||
"from matplotlib import pyplot as plt\n",
|
||||
|
|
@ -6652,12 +6653,100 @@
|
|||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"execution_count": 271,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# CIE XYZ Color matching functions\n",
|
||||
"# rows are: λ[nm], x, y, z\n",
|
||||
"CMFs = { fn[:-4]: np.genfromtxt(fn, delimiter=',')\n",
|
||||
" for fn in ['cie_xyz_1931.csv', 'cie_xyz_judd_1951.csv', 'cie_xyz_judd_vos_1978.csv'] }\n",
|
||||
"CMFs = { name: np.hstack([inter.interp1d(d[:,0], d[:,i]) for i in range(1,4)])\n",
|
||||
" for name, d in CMFs.items() }"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 285,
|
||||
"metadata": {
|
||||
"collapsed": true
|
||||
},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
"source": [
|
||||
"def integrate_tristimulus_response(data, colorspace='cie_xyz_1931'):\n",
|
||||
" a = np.array([[\n",
|
||||
" integrate.simps(\n",
|
||||
" np.multiply(CMFs[colorspace][j](data[i][0]), data[i][1]),\n",
|
||||
" data[i][0])\n",
|
||||
" for j in range(3) ]\n",
|
||||
" for i in range(len(data)) ])\n",
|
||||
" # normalize by largest component\n",
|
||||
" return a / np.max(np.sum(a, axis=0))"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 289,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"array([[ 3.46142003e-01, 1.73335974e-01, -7.18827590e-05],\n",
|
||||
" [ 9.01721797e-02, 1.69512416e-01, 2.15830281e-02],\n",
|
||||
" [ 1.75128165e-01, 2.49230694e-01, 9.78488855e-01]])"
|
||||
]
|
||||
},
|
||||
"execution_count": 289,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"tristimulus_data = integrate_tristimulus_response(data_rgb)\n",
|
||||
"tristimulus_data"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 330,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def led_setpoint_from_xyz(x, y, z):\n",
|
||||
" # returns [r, g, b] array.\n",
|
||||
" # Note that many xyz tristimulus values cannot be produced because one component is outside [0, 1]\n",
|
||||
" #return np.linalg.solve(tristimulus_data.T, np.array([x, y, z]))\n",
|
||||
" return np.dot(np.linalg.inv(tristimulus_data.T), np.array([x, y, z]))"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 332,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"array([ 0.72869072, 0.1386238 , 0.20139265])"
|
||||
]
|
||||
},
|
||||
"execution_count": 332,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"led_setpoint_from_xyz(0.3, 0.2, 0.2)"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
|
|
|
|||
95
firmware/cie_xyz_1931.csv
Normal file
95
firmware/cie_xyz_1931.csv
Normal file
|
|
@ -0,0 +1,95 @@
|
|||
360,0.000129900000,0.000003917000,0.000606100000
|
||||
365,0.000232100000,0.000006965000,0.001086000000
|
||||
370,0.000414900000,0.000012390000,0.001946000000
|
||||
375,0.000741600000,0.000022020000,0.003486000000
|
||||
380,0.001368000000,0.000039000000,0.006450001000
|
||||
385,0.002236000000,0.000064000000,0.010549990000
|
||||
390,0.004243000000,0.000120000000,0.020050010000
|
||||
395,0.007650000000,0.000217000000,0.036210000000
|
||||
400,0.014310000000,0.000396000000,0.067850010000
|
||||
405,0.023190000000,0.000640000000,0.110200000000
|
||||
410,0.043510000000,0.001210000000,0.207400000000
|
||||
415,0.077630000000,0.002180000000,0.371300000000
|
||||
420,0.134380000000,0.004000000000,0.645600000000
|
||||
425,0.214770000000,0.007300000000,1.039050100000
|
||||
430,0.283900000000,0.011600000000,1.385600000000
|
||||
435,0.328500000000,0.016840000000,1.622960000000
|
||||
440,0.348280000000,0.023000000000,1.747060000000
|
||||
445,0.348060000000,0.029800000000,1.782600000000
|
||||
450,0.336200000000,0.038000000000,1.772110000000
|
||||
455,0.318700000000,0.048000000000,1.744100000000
|
||||
460,0.290800000000,0.060000000000,1.669200000000
|
||||
465,0.251100000000,0.073900000000,1.528100000000
|
||||
470,0.195360000000,0.090980000000,1.287640000000
|
||||
475,0.142100000000,0.112600000000,1.041900000000
|
||||
480,0.095640000000,0.139020000000,0.812950100000
|
||||
485,0.057950010000,0.169300000000,0.616200000000
|
||||
490,0.032010000000,0.208020000000,0.465180000000
|
||||
495,0.014700000000,0.258600000000,0.353300000000
|
||||
500,0.004900000000,0.323000000000,0.272000000000
|
||||
505,0.002400000000,0.407300000000,0.212300000000
|
||||
510,0.009300000000,0.503000000000,0.158200000000
|
||||
515,0.029100000000,0.608200000000,0.111700000000
|
||||
520,0.063270000000,0.710000000000,0.078249990000
|
||||
525,0.109600000000,0.793200000000,0.057250010000
|
||||
530,0.165500000000,0.862000000000,0.042160000000
|
||||
535,0.225749900000,0.914850100000,0.029840000000
|
||||
540,0.290400000000,0.954000000000,0.020300000000
|
||||
545,0.359700000000,0.980300000000,0.013400000000
|
||||
550,0.433449900000,0.994950100000,0.008749999000
|
||||
555,0.512050100000,1.000000000000,0.005749999000
|
||||
560,0.594500000000,0.995000000000,0.003900000000
|
||||
565,0.678400000000,0.978600000000,0.002749999000
|
||||
570,0.762100000000,0.952000000000,0.002100000000
|
||||
575,0.842500000000,0.915400000000,0.001800000000
|
||||
580,0.916300000000,0.870000000000,0.001650001000
|
||||
585,0.978600000000,0.816300000000,0.001400000000
|
||||
590,1.026300000000,0.757000000000,0.001100000000
|
||||
595,1.056700000000,0.694900000000,0.001000000000
|
||||
600,1.062200000000,0.631000000000,0.000800000000
|
||||
605,1.045600000000,0.566800000000,0.000600000000
|
||||
610,1.002600000000,0.503000000000,0.000340000000
|
||||
615,0.938400000000,0.441200000000,0.000240000000
|
||||
620,0.854449900000,0.381000000000,0.000190000000
|
||||
625,0.751400000000,0.321000000000,0.000100000000
|
||||
630,0.642400000000,0.265000000000,0.000049999990
|
||||
635,0.541900000000,0.217000000000,0.000030000000
|
||||
640,0.447900000000,0.175000000000,0.000020000000
|
||||
645,0.360800000000,0.138200000000,0.000010000000
|
||||
650,0.283500000000,0.107000000000,0.000000000000
|
||||
655,0.218700000000,0.081600000000,0.000000000000
|
||||
660,0.164900000000,0.061000000000,0.000000000000
|
||||
665,0.121200000000,0.044580000000,0.000000000000
|
||||
670,0.087400000000,0.032000000000,0.000000000000
|
||||
675,0.063600000000,0.023200000000,0.000000000000
|
||||
680,0.046770000000,0.017000000000,0.000000000000
|
||||
685,0.032900000000,0.011920000000,0.000000000000
|
||||
690,0.022700000000,0.008210000000,0.000000000000
|
||||
695,0.015840000000,0.005723000000,0.000000000000
|
||||
700,0.011359160000,0.004102000000,0.000000000000
|
||||
705,0.008110916000,0.002929000000,0.000000000000
|
||||
710,0.005790346000,0.002091000000,0.000000000000
|
||||
715,0.004109457000,0.001484000000,0.000000000000
|
||||
720,0.002899327000,0.001047000000,0.000000000000
|
||||
725,0.002049190000,0.000740000000,0.000000000000
|
||||
730,0.001439971000,0.000520000000,0.000000000000
|
||||
735,0.000999949300,0.000361100000,0.000000000000
|
||||
740,0.000690078600,0.000249200000,0.000000000000
|
||||
745,0.000476021300,0.000171900000,0.000000000000
|
||||
750,0.000332301100,0.000120000000,0.000000000000
|
||||
755,0.000234826100,0.000084800000,0.000000000000
|
||||
760,0.000166150500,0.000060000000,0.000000000000
|
||||
765,0.000117413000,0.000042400000,0.000000000000
|
||||
770,0.000083075270,0.000030000000,0.000000000000
|
||||
775,0.000058706520,0.000021200000,0.000000000000
|
||||
780,0.000041509940,0.000014990000,0.000000000000
|
||||
785,0.000029353260,0.000010600000,0.000000000000
|
||||
790,0.000020673830,0.000007465700,0.000000000000
|
||||
795,0.000014559770,0.000005257800,0.000000000000
|
||||
800,0.000010253980,0.000003702900,0.000000000000
|
||||
805,0.000007221456,0.000002607800,0.000000000000
|
||||
810,0.000005085868,0.000001836600,0.000000000000
|
||||
815,0.000003581652,0.000001293400,0.000000000000
|
||||
820,0.000002522525,0.000000910930,0.000000000000
|
||||
825,0.000001776509,0.000000641530,0.000000000000
|
||||
830,0.000001251141,0.000000451810,0.000000000000
|
||||
|
41
firmware/cie_xyz_judd_1951.csv
Normal file
41
firmware/cie_xyz_judd_1951.csv
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
370,0.0008,0.0001,0.0046
|
||||
380,0.0045,0.0004,0.0224
|
||||
390,0.0201,0.0015,0.0925
|
||||
400,0.0611,0.0045,0.2799
|
||||
410,0.1267,0.0093,0.5835
|
||||
420,0.2285,0.0175,1.0622
|
||||
430,0.3081,0.0273,1.4526
|
||||
440,0.3312,0.0379,1.6064
|
||||
450,0.2888,0.0468,1.4717
|
||||
460,0.2323,0.0600,1.2880
|
||||
470,0.1745,0.0910,1.1133
|
||||
480,0.0920,0.1390,0.7552
|
||||
490,0.0318,0.2080,0.4461
|
||||
500,0.0048,0.3230,0.2644
|
||||
510,0.0093,0.5030,0.1541
|
||||
520,0.0636,0.7100,0.0763
|
||||
530,0.1668,0.8620,0.0412
|
||||
540,0.2926,0.9540,0.0200
|
||||
550,0.4364,0.9950,0.0088
|
||||
560,0.5970,0.9950,0.0039
|
||||
570,0.7642,0.9520,0.0020
|
||||
580,0.9159,0.8700,0.0016
|
||||
590,1.0225,0.7570,0.0011
|
||||
600,1.0544,0.6310,0.0007
|
||||
610,0.9922,0.5030,0.0003
|
||||
620,0.8432,0.3810,0.0002
|
||||
630,0.6327,0.2650,0.0001
|
||||
640,0.4404,0.1750,0.0000
|
||||
650,0.2787,0.1070,0.0000
|
||||
660,0.1619,0.0610,0.0000
|
||||
670,0.0858,0.0320,0.0000
|
||||
680,0.0459,0.0170,0.0000
|
||||
690,0.0222,0.0082,0.0000
|
||||
700,0.0113,0.0041,0.0000
|
||||
710,0.0057,0.0021,0.0000
|
||||
720,0.0028,0.0011,0.0000
|
||||
730,0.0015,0.0005,0.0000
|
||||
740,0.0005,0.0002,0.0000
|
||||
750,0.0003,0.0001,0.0000
|
||||
760,0.0002,0.0001,0.0000
|
||||
770,0.0001,0.0000,0.0000
|
||||
|
90
firmware/cie_xyz_judd_vos_1978.csv
Normal file
90
firmware/cie_xyz_judd_vos_1978.csv
Normal file
|
|
@ -0,0 +1,90 @@
|
|||
380,2.689900e-003,2.000000e-004,1.226000e-002
|
||||
385,5.310500e-003,3.955600e-004,2.422200e-002
|
||||
390,1.078100e-002,8.000000e-004,4.925000e-002
|
||||
395,2.079200e-002,1.545700e-003,9.513500e-002
|
||||
400,3.798100e-002,2.800000e-003,1.740900e-001
|
||||
405,6.315700e-002,4.656200e-003,2.901300e-001
|
||||
410,9.994100e-002,7.400000e-003,4.605300e-001
|
||||
415,1.582400e-001,1.177900e-002,7.316600e-001
|
||||
420,2.294800e-001,1.750000e-002,1.065800e+000
|
||||
425,2.810800e-001,2.267800e-002,1.314600e+000
|
||||
430,3.109500e-001,2.730000e-002,1.467200e+000
|
||||
435,3.307200e-001,3.258400e-002,1.579600e+000
|
||||
440,3.333600e-001,3.790000e-002,1.616600e+000
|
||||
445,3.167200e-001,4.239100e-002,1.568200e+000
|
||||
450,2.888200e-001,4.680000e-002,1.471700e+000
|
||||
455,2.596900e-001,5.212200e-002,1.374000e+000
|
||||
460,2.327600e-001,6.000000e-002,1.291700e+000
|
||||
465,2.099900e-001,7.294200e-002,1.235600e+000
|
||||
470,1.747600e-001,9.098000e-002,1.113800e+000
|
||||
475,1.328700e-001,1.128400e-001,9.422000e-001
|
||||
480,9.194400e-002,1.390200e-001,7.559600e-001
|
||||
485,5.698500e-002,1.698700e-001,5.864000e-001
|
||||
490,3.173100e-002,2.080200e-001,4.466900e-001
|
||||
495,1.461300e-002,2.580800e-001,3.411600e-001
|
||||
500,4.849100e-003,3.230000e-001,2.643700e-001
|
||||
505,2.321500e-003,4.054000e-001,2.059400e-001
|
||||
510,9.289900e-003,5.030000e-001,1.544500e-001
|
||||
515,2.927800e-002,6.081100e-001,1.091800e-001
|
||||
520,6.379100e-002,7.100000e-001,7.658500e-002
|
||||
525,1.108100e-001,7.951000e-001,5.622700e-002
|
||||
530,1.669200e-001,8.620000e-001,4.136600e-002
|
||||
535,2.276800e-001,9.150500e-001,2.935300e-002
|
||||
540,2.926900e-001,9.540000e-001,2.004200e-002
|
||||
545,3.622500e-001,9.800400e-001,1.331200e-002
|
||||
550,4.363500e-001,9.949500e-001,8.782300e-003
|
||||
555,5.151300e-001,1.000100e+000,5.857300e-003
|
||||
560,5.974800e-001,9.950000e-001,4.049300e-003
|
||||
565,6.812100e-001,9.787500e-001,2.921700e-003
|
||||
570,7.642500e-001,9.520000e-001,2.277100e-003
|
||||
575,8.439400e-001,9.155800e-001,1.970600e-003
|
||||
580,9.163500e-001,8.700000e-001,1.806600e-003
|
||||
585,9.770300e-001,8.162300e-001,1.544900e-003
|
||||
590,1.023000e+000,7.570000e-001,1.234800e-003
|
||||
595,1.051300e+000,6.948300e-001,1.117700e-003
|
||||
600,1.055000e+000,6.310000e-001,9.056400e-004
|
||||
605,1.036200e+000,5.665400e-001,6.946700e-004
|
||||
610,9.923900e-001,5.030000e-001,4.288500e-004
|
||||
615,9.286100e-001,4.417200e-001,3.181700e-004
|
||||
620,8.434600e-001,3.810000e-001,2.559800e-004
|
||||
625,7.398300e-001,3.205200e-001,1.567900e-004
|
||||
630,6.328900e-001,2.650000e-001,9.769400e-005
|
||||
635,5.335100e-001,2.170200e-001,6.894400e-005
|
||||
640,4.406200e-001,1.750000e-001,5.116500e-005
|
||||
645,3.545300e-001,1.381200e-001,3.601600e-005
|
||||
650,2.786200e-001,1.070000e-001,2.423800e-005
|
||||
655,2.148500e-001,8.165200e-002,1.691500e-005
|
||||
660,1.616100e-001,6.100000e-002,1.190600e-005
|
||||
665,1.182000e-001,4.432700e-002,8.148900e-006
|
||||
670,8.575300e-002,3.200000e-002,5.600600e-006
|
||||
675,6.307700e-002,2.345400e-002,3.954400e-006
|
||||
680,4.583400e-002,1.700000e-002,2.791200e-006
|
||||
685,3.205700e-002,1.187200e-002,1.917600e-006
|
||||
690,2.218700e-002,8.210000e-003,1.313500e-006
|
||||
695,1.561200e-002,5.772300e-003,9.151900e-007
|
||||
700,1.109800e-002,4.102000e-003,6.476700e-007
|
||||
705,7.923300e-003,2.929100e-003,4.635200e-007
|
||||
710,5.653100e-003,2.091000e-003,3.330400e-007
|
||||
715,4.003900e-003,1.482200e-003,2.382300e-007
|
||||
720,2.825300e-003,1.047000e-003,1.702600e-007
|
||||
725,1.994700e-003,7.401500e-004,1.220700e-007
|
||||
730,1.399400e-003,5.200000e-004,8.710700e-008
|
||||
735,9.698000e-004,3.609300e-004,6.145500e-008
|
||||
740,6.684700e-004,2.492000e-004,4.316200e-008
|
||||
745,4.614100e-004,1.723100e-004,3.037900e-008
|
||||
750,3.207300e-004,1.200000e-004,2.155400e-008
|
||||
755,2.257300e-004,8.462000e-005,1.549300e-008
|
||||
760,1.597300e-004,6.000000e-005,1.120400e-008
|
||||
765,1.127500e-004,4.244600e-005,8.087300e-009
|
||||
770,7.951300e-005,3.000000e-005,5.834000e-009
|
||||
775,5.608700e-005,2.121000e-005,4.211000e-009
|
||||
780,3.954100e-005,1.498900e-005,3.038300e-009
|
||||
785,2.785200e-005,1.058400e-005,2.190700e-009
|
||||
790,1.959700e-005,7.465600e-006,1.577800e-009
|
||||
795,1.377000e-005,5.259200e-006,1.134800e-009
|
||||
800,9.670000e-006,3.702800e-006,8.156500e-010
|
||||
805,6.791800e-006,2.607600e-006,5.862600e-010
|
||||
810,4.770600e-006,1.836500e-006,4.213800e-010
|
||||
815,3.355000e-006,1.295000e-006,3.031900e-010
|
||||
820,2.353400e-006,9.109200e-007,2.175300e-010
|
||||
825,1.637700e-006,6.356400e-007,1.547600e-010
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue