Spectral Characteristics: The Graph

In the process of pulling together a talk for the Trinity Robotics contest, I rediscovered my spreadsheet of spectral response data. It’s been compiled over the years from myriad sources (utterly without attribution), suffers from gaps & interpolations, and undoubtedly emits a fairly high bogon flux density.

To wit: trust nothing!

Spectral Response
Spectral Response

Horizontal scale has UV on the left and IR on the right.

Vertical scale is linear, roughly corresponding to power in or out at a particular wavelength. It should, of course, be logarithmic, but that’s in the nature of fine tuning, as no source data has that much resolution.

Things to note:

  • Human eyes are tuned to see chlorophyll and not much else. That must’a been important at one time or another…
  • The nice bumps on the left are visible LEDS: violet blue green orange yellow red. The IR LED over on the right stands alone.
  • There’s no overlap between human vision and IR LED emission, but you can still see a dim red glow if you stick it right up against your eye.
  • Don’t do that with a UV LED, though.
  • White LEDs are just blue LEDs with fancy phosphors. That’s why the spectrum looks like a blue LED with a bump in the yellow-orange neighborhood. They’re not well-balanced at all.
  • High-pressure sodium lights kill IR sensors stone cold dead. Look at that peak, perfectly aligned with the photodiode response. If you could see in IR, you’d go blind. That’s what made the Trinity contest so challenging for so many years; they recently switched to fluorescent lighting and the complaints dropped dramatically.
  • Those emission spikes are why camera color correction doesn’t work well: if there’s no energy in a region, you can’t crank the gain up enough to make a difference.
  • An 87C Wratten filter is great for excluding visible light, but the overlap with that HP-Na spike tells you it won’t do jack with that sort of lighting.
  • Fluorescent tubes produce intense spikes at 436 and 546, corresponding to mercury emission lines. Their phosphor emissions extend far into the IR, too, but the data I have doesn’t include that region.
  • Ditto for metal halide bulbs.

To produce the graph, apply this bash script to the CSV file…


#!/bin/sh
export GDFONTPATH="/usr/share/fonts/TTF/"
gnuplot << EOF
#set term x11
set term png font "arialbd.ttf" 24 size 1200,800
set output "Spectral Response.png"
set title "Spectral Response"
#set key 28,-0.75 Left reverse samplen 2 noautotitles
#set key right noautotitles
unset key
unset mouse
set bmargin 4
set grid xtics ytics
set xlabel "Wavelength - nm"
set format x "%3.0f"
#set xrange [0:9]
#set xtics 0,10
#set mxtics 4
set ytics nomirror autofreq
set ylabel "Relative Response"
#set format y "%3.0f"
set yrange [0:1.1]
#set y2label "Panel Power - mW"
#set format y2 "%3.0f"
#set y2range [0:800]
#set y2tics 200
set datafile separator ","
set label 1 "Eye" at 550,1.05 font "arialbd,14" center
set label 2 "White" at 480,1.05 font "arialbd,14" center
set label 3 "IR" at 940,1.05 font "arialbd,14" center
set label 4 "87C Filter" at 1050,0.85 font "arialbd,14" center
set label 5 "Photodiode" at 825,1.05 font "arialbd,14" center
set label 6 "Tungsten" at 1050,1.00 font "arialbd,14" center
set label 7 "Fluor" at 410,0.42 font "arialbd,14" right
set label 8 "Halide" at 680,0.41 font "arialbd,14" left
set label 9 "HP-Na" at 805,0.60 font "arialbd,14" right
set label 10 "Violet" at 410,1.05 font "arialbd,14" center
set label 11 "Red" at 635,1.05 font "arialbd,14" center
plot    "Spectral Response Curves.csv" \
 using 1:2 with lines lt -1  lw 3 title "Eye", \
 "Spectral Response Curves.csv" \
 using 1:3 with lines lt 1 lw 2 lc rgb "light-blue" title "White" , \
 "Spectral Response Curves.csv" \
 using 1:4 with lines lt 1 lw 2 lc rgb "dark-violet" title "Violet" , \
 "Spectral Response Curves.csv" \
 using 1:5 with lines lt 1 lw 2 lc rgb "blue" title "Blue" , \
 "Spectral Response Curves.csv" \
 using 1:6 with lines lt 1 lw 2 lc rgb "green" title "Green" , \
 "Spectral Response Curves.csv" \
 using 1:7 with lines lt 1 lw 2 lc rgb "gold" title "Yellow" , \
 "Spectral Response Curves.csv" \
 using 1:8 with lines lt 1 lw 2 lc rgb "orange" title "Orange" , \
 "Spectral Response Curves.csv" \
 using 1:9 with lines lt 1 lw 2 lc rgb "red" title "Red", \
 "Spectral Response Curves.csv" \
 using 1:10 with lines lt 1 lw 2 lc rgb "magenta" title "IR" , \
 "Spectral Response Curves.csv" \
 using 1:11 with lines lt 1 lw 2 lc rgb "dark-red" title "Photodiode" , \
 "Spectral Response Curves.csv" \
 using 1:12 with lines lt 1 lw 2 lc rgb "dark-gray" title "87C Filter" , \
 "Spectral Response Curves.csv" \
 using 1:13 with lines lt 1 lw 2 lc rgb "dark-yellow" title "Tungsten" , \
 "Spectral Response Curves.csv" \
 using 1:14 with lines lt 1 lw 2 lc rgb "orange-red" title "HP-Na" , \
 "Spectral Response Curves.csv" \
 using 1:15 with lines lt 1 lw 2 lc rgb "brown" title "Halide" , \
 "Spectral Response Curves.csv" \
 using 1:18 with lines lt 1 lw 2 lc rgb "midnight-blue" title "Fluorescent"
EOF

And the data in CSV format because WordPress doesn’t allow spreadsheets…


#"Wavelength","Eyeball","White LED","Violet LED","Blue LED","Green LED","Yellow LED","Orange LED","Red LED","IR LED","Photodiode","IR Filter","Incandescent","Sodium","Metal Halide","Daylight Flour","Moon Fluor","Fluorescent"
300,,,,,,,,,,,,,,,,,
310,,,,,,,,,,,,,,,,,
320,,,,,,,,,,,,,,,,,
340,,,,,,,,,,,,,,,,,
350,,,,,,,,,,,,,,,,,
360,,,,,,,,,,,,,,,,,
370,,,0.02,,,,,,,,,,,,,,
380,,,0.11,,,,,,,,,,,0.06,0.04,0.03,0.03
385,,,,,,,,,,,,,,0.06,0.05,0.04,0.03
390,,,0.33,,,,,,,,,,,0.07,0.06,0.05,0.04
395,,,,,,,,,,,,,,0.08,0.07,0.06,0.05
400,,,0.90,,,,,,,0.05,,0.09,,0.09,0.09,0.07,0.06
405,,,,,,,,,,,,,,0.10,0.40,0.37,0.39
410,,,1.00,,,,,,,,,,,0.10,0.13,0.10,0.09
415,,,,,,,,,,,,,,0.15,0.13,0.10,0.09
420,0.05,0.02,0.33,0.02,,,,,,0.12,,0.12,,0.26,0.15,0.11,0.10
425,,,,,,,,,,,,,,0.16,0.16,0.13,0.11
430,,0.05,0.11,0.11,,,,,,,,,,0.13,0.18,0.14,0.12
435,,,,,,,,,,,,,,0.13,1.00,1.00,1.00
440,0.16,0.08,0.05,0.92,,,,,,0.19,,0.15,,0.11,0.21,0.17,0.14
445,,,,,,,,,,,,,,0.11,0.22,0.18,0.15
450,,0.30,,1.00,,,,,,,,,,0.13,0.24,0.19,0.16
455,,,,,,,,,,,,,,0.15,0.26,0.20,0.17
460,0.25,0.65,,0.77,,,,,,0.25,,0.19,,0.18,0.26,0.21,0.17
465,,,,,,,,,,,,,,0.15,0.26,0.21,0.18
470,,0.90,,0.22,,,,,,,,,,0.15,0.26,0.21,0.18
475,,,,,,,,,,,,,,0.17,0.27,0.22,0.18
480,0.36,1.00,,0.11,,,,,,0.32,,0.22,0.02,0.20,0.27,0.22,0.18
485,,,,,,,,,,,,,,0.16,0.27,0.22,0.18
490,,0.80,,0.03,,,,,,,,,,0.20,0.27,0.22,0.18
495,,,,,,,,,,,,,,0.17,0.27,0.22,0.18
500,0.50,0.32,,,,,,,,0.39,,0.25,0.10,0.18,0.26,0.21,0.18
505,,,,,,,,,,,,,,0.23,0.25,0.21,0.17
510,,,,,,,,,,,,,,0.22,0.25,0.20,0.17
515,,,,,,,,,,,,,,0.22,0.24,0.20,0.17
520,0.70,0.30,,,,,,,,0.44,,,0.02,0.18,0.24,0.20,0.18
525,,,,,,,,,,,,,,0.20,0.24,0.20,0.19
530,,,,,,,,,,,,,,0.22,0.24,0.20,0.21
535,,,,,,,,,,,,,,1.00,0.24,0.21,0.24
540,1.00,0.48,,,0.08,,,,,0.49,,,0.02,0.45,0.26,0.23,0.27
545,,,,,,,,,,,,,,0.27,0.70,0.67,0.78
550,1.00,0.55,,,0.45,,,,,0.52,,,0.05,0.18,0.29,0.27,0.36
555,,,,,,,,,,,,,,0.20,0.30,0.30,0.40
560,1.00,0.55,,,0.95,0.13,,,,0.54,,,0.10,0.18,0.32,0.32,0.45
565,0.91,,,,1.00,0.34,,,,0.55,,,0.30,0.24,0.33,0.35,0.49
570,0.83,,,,0.85,0.55,,,,0.57,,,0.43,0.24,0.34,0.37,0.52
575,,,,,,,,,,,,,,0.26,0.39,0.44,0.59
580,0.65,,,,0.37,0.96,0.08,,,0.59,,,0.33,0.24,0.42,0.46,0.61
585,0.61,,,,0.31,1.00,0.19,,,0.60,,,0.40,0.23,0.34,0.39,0.52
590,0.58,,,,0.24,0.94,0.30,,,0.62,,,0.15,0.24,0.32,0.38,0.51
595,,,,,,,,,,,,,,0.29,0.30,0.37,0.48
600,0.50,0.40,,,0.11,0.60,0.80,0.13,,0.64,,0.51,0.46,0.37,0.28,0.34,0.44
605,,,,,,,,,,,,,,0.30,0.26,0.31,0.41
608,0.46,,,,,0.56,1.00,0.29,,,,,0.33,,,,
610,0.45,,,,,0.55,0.97,0.33,,,,,0.32,0.37,0.24,0.29,0.36
615,,,,,,,,,,,,,,0.33,0.21,0.27,0.33
620,0.40,0.32,,,,0.20,0.80,0.60,,,,,0.32,0.26,0.19,0.24,0.29
625,,,,,,,,,,,,,,0.33,0.17,0.21,0.25
630,0.30,0.28,,,,,0.52,0.95,,,,,0.20,0.25,0.15,0.18,0.22
634,0.26,,,,,,0.43,1.00,,,,,0.19,,,,
635,,,,,,,,,,,,,,0.27,0.13,0.16,0.19
640,0.20,0.25,,,,,0.30,0.90,,,,,0.17,0.27,0.11,0.14,0.16
645,,,,,,,,,,,,,,0.26,0.10,0.12,0.14
650,0.15,,,,,,0.20,0.60,,,,,0.16,0.25,0.09,0.10,0.12
655,,,,,,,,,,,,,,0.31,0.08,0.09,0.10
660,0.10,,,,,,0.10,0.43,,,,,0.14,0.27,0.07,0.08,0.09
665,,,,,,,,,,,,,,0.29,0.06,0.07,0.07
670,0.08,,,,,,,0.30,,,,,0.13,0.24,0.05,0.06,0.06
675,,,,,,,,,,,,,,0.28,0.05,0.05,0.05
680,0.05,,,,,,,0.20,,,,,0.11,0.25,0.04,0.05,0.05
685,,,,,,,,,,,,,,0.37,0.04,0.04,0.04
690,0.03,,,,,,,0.10,,,,,0.10,0.26,0.03,0.04,0.04
695,,,,,,,,,,,,,,0.24,0.03,0.03,0.03
700,,0.24,,,,,,,,0.84,,0.81,0.09,0.26,0.03,0.03,0.03
705,,,,,,,,,,,,,,0.21,0.02,0.03,0.02
710,,,,,,,,,,,,,,0.16,0.02,0.02,0.02
715,,,,,,,,,,,,,,0.15,0.02,0.02,0.02
720,,0.20,,,,,,,,0.87,,0.84,0.08,0.14,0.02,0.02,0.02
740,,0.10,,,,,,,,0.90,,0.87,0.06,,,,
760,,0.08,,,,,,,,0.93,,0.89,0.05,,,,
770,,,,,,,,,,0.94,,0.90,0.11,,,,
780,,0.04,,,,,,,,0.96,,0.92,0.05,,,,
800,,0.02,,,,,,,,0.99,0.03,0.95,0.06,,,,
810,,,,,,,,,,1.00,0.08,0.96,0.07,,,,
820,,,,,,,,,,1.00,0.16,0.97,1.00,,,,
840,,,,,,,,,,1.00,0.38,0.97,0.07,,,,
860,,,,,,,,,,0.96,0.58,0.98,0.06,,,,
880,,,,,,,,,,0.91,0.73,0.99,0.05,,,,
900,,,,,,,,,0.15,0.87,0.81,1.00,,,,,
910,,,,,,,,,0.37,,,,,,,,
920,,,,,,,,,0.67,,,,,,,,
930,,,,,,,,,0.96,,,,,,,,
935,,,,,,,,,1.00,,,,,,,,
940,,,,,,,,,0.97,,,,,,,,
950,,,,,,,,,0.73,,,,,,,,
960,,,,,,,,,0.45,,,,,,,,
970,,,,,,,,,0.26,,,,,,,,
980,,,,,,,,,0.16,,,,,,,,
1000,,,,,,,,,0.10,0.43,0.89,0.98,,,,,
1020,,,,,,,,,,0.36,0.90,0.97,,,,,
1040,,,,,,,,,,0.29,0.91,0.96,,,,,
1060,,,,,,,,,,0.22,0.91,0.94,,,,,
1080,,,,,,,,,,0.15,0.92,0.93,,,,,
1100,,,,,,,,,,0.08,0.93,0.92,,,,,