Spectral emissions from modern light sources (more graphs added)

color

(Glenn Butcher) #21

dcamprof is your friend:

glenn@caliente:~/Downloads$ dcamprof dcp2json EOS\ 6D\ 50mm\ sunshine\ June.dcp  EOS\ 6D\ 50mm\ sunshine\ June.json
glenn@caliente:~/Downloads$ cat EOS\ 6D\ 50mm\ sunshine\ June.json 
{
  "UniqueCameraModel": "Canon EOS 6D",
  "ProfileName": "EOS 6D 50mm sunshine June",
  "ProfileEmbedPolicy": "Allow copying",
  "CalibrationIlluminant1": "D55",
  "ColorMatrix1": [
    [  0.607600, -0.025400, -0.055000 ],
    [ -0.532900,  1.287200,  0.274700 ],
    [ -0.152500,  0.244900,  0.622000 ]
  ],
  "ProfileHueSatMapDims": [ 6, 6, 3 ],
  "ProfileHueSatMap1": [
    { "HueDiv":  0, "SatDiv":  0, "ValDiv":  0, "HueShift":   0.000000, "SatScale": 1.000000, "ValScale": 1.000000 },
    { "HueDiv":  0, "SatDiv":  0, "ValDiv":  1, "HueShift":   0.000000, "SatScale": 1.000000, "ValScale": 1.000000 },
    { "HueDiv":  0, "SatDiv":  0, "ValDiv":  2, "HueShift":   0.000000, "SatScale": 1.000000, "ValScale": 1.000000 },
    { "HueDiv":  0, "SatDiv":  1, "ValDiv":  0, "HueShift":   0.000000, "SatScale": 1.000000, "ValScale": 1.000000 },
    { "HueDiv":  0, "SatDiv":  1, "ValDiv":  1, "HueShift":  -6.223228, "SatScale": 1.040475, "ValScale": 0.988021 },
    { "HueDiv":  0, "SatDiv":  1, "ValDiv":  2, "HueShift":  -5.721206, "SatScale": 1.036666, "ValScale": 0.973357 },
    { "HueDiv":  0, "SatDiv":  2, "ValDiv":  0, "HueShift":   0.000000, "SatScale": 1.000000, "ValScale": 1.000000 },
    { "HueDiv":  0, "SatDiv":  2, "ValDiv":  1, "HueShift":  -2.043063, "SatScale": 1.016483, "ValScale": 0.962219 },
    { "HueDiv":  0, "SatDiv":  2, "ValDiv":  2, "HueShift":  -2.578055, "SatScale": 1.014032, "ValScale": 0.957057 },
    { "HueDiv":  0, "SatDiv":  3, "ValDiv":  0, "HueShift":   0.000000, "SatScale": 1.000000, "ValScale": 1.000000 },
    { "HueDiv":  0, "SatDiv":  3, "ValDiv":  1, "HueShift":  -1.433088, "SatScale": 1.030400, "ValScale": 0.956474 },
    { "HueDiv":  0, "SatDiv":  3, "ValDiv":  2, "HueShift":  -2.097436, "SatScale": 1.026946, "ValScale": 0.955720 },
    { "HueDiv":  0, "SatDiv":  4, "ValDiv":  0, "HueShift":   0.000000, "SatScale": 1.000000, "ValScale": 1.000000 },
    { "HueDiv":  0, "SatDiv":  4, "ValDiv":  1, "HueShift":  -1.191141, "SatScale": 1.031467, "ValScale": 0.961666 },
    { "HueDiv":  0, "SatDiv":  4, "ValDiv":  2, "HueShift":  -1.308072, "SatScale": 1.020441, "ValScale": 0.972878 },
    { "HueDiv":  0, "SatDiv":  5, "ValDiv":  0, "HueShift":   0.000000, "SatScale": 1.000000, "ValScale": 1.000000 },
    { "HueDiv":  0, "SatDiv":  5, "ValDiv":  1, "HueShift":  -0.585341, "SatScale": 1.011132, "ValScale": 0.993417 },
    { "HueDiv":  0, "SatDiv":  5, "ValDiv":  2, "HueShift":  -0.206819, "SatScale": 1.003279, "ValScale": 1.003997 },
    { "HueDiv":  1, "SatDiv":  0, "ValDiv":  0, "HueShift":   0.000000, "SatScale": 1.000000, "ValScale": 1.000000 },
    { "HueDiv":  1, "SatDiv":  0, "ValDiv":  1, "HueShift":  -2.363967, "SatScale": 0.975908, "ValScale": 1.000000 },
    { "HueDiv":  1, "SatDiv":  0, "ValDiv":  2, "HueShift":  -2.272153, "SatScale": 0.982975, "ValScale": 1.000000 },
    { "HueDiv":  1, "SatDiv":  1, "ValDiv":  0, "HueShift":   0.000000, "SatScale": 1.000000, "ValScale": 1.000000 },
    { "HueDiv":  1, "SatDiv":  1, "ValDiv":  1, "HueShift":  -2.363967, "SatScale": 0.975908, "ValScale": 0.995387 },
    { "HueDiv":  1, "SatDiv":  1, "ValDiv":  2, "HueShift":  -2.272153, "SatScale": 0.982975, "ValScale": 0.978850 },
    { "HueDiv":  1, "SatDiv":  2, "ValDiv":  0, "HueShift":   0.000000, "SatScale": 1.000000, "ValScale": 1.000000 },
    { "HueDiv":  1, "SatDiv":  2, "ValDiv":  1, "HueShift":   0.171870, "SatScale": 1.011072, "ValScale": 0.980223 },
    { "HueDiv":  1, "SatDiv":  2, "ValDiv":  2, "HueShift":   0.722666, "SatScale": 1.005402, "ValScale": 0.969851 },
    { "HueDiv":  1, "SatDiv":  3, "ValDiv":  0, "HueShift":   0.000000, "SatScale": 1.000000, "ValScale": 1.000000 },
    { "HueDiv":  1, "SatDiv":  3, "ValDiv":  1, "HueShift":   0.618820, "SatScale": 1.017282, "ValScale": 0.970643 },
    { "HueDiv":  1, "SatDiv":  3, "ValDiv":  2, "HueShift":   0.536536, "SatScale": 0.992694, "ValScale": 0.964624 },
    { "HueDiv":  1, "SatDiv":  4, "ValDiv":  0, "HueShift":   0.000000, "SatScale": 1.000000, "ValScale": 1.000000 },
    { "HueDiv":  1, "SatDiv":  4, "ValDiv":  1, "HueShift":  -0.333802, "SatScale": 1.003912, "ValScale": 0.960836 },
    { "HueDiv":  1, "SatDiv":  4, "ValDiv":  2, "HueShift":  -0.116653, "SatScale": 0.988490, "ValScale": 0.960113 },
    { "HueDiv":  1, "SatDiv":  5, "ValDiv":  0, "HueShift":   0.000000, "SatScale": 1.000000, "ValScale": 1.000000 },
    { "HueDiv":  1, "SatDiv":  5, "ValDiv":  1, "HueShift":  -0.930101, "SatScale": 0.994783, "ValScale": 0.981835 },
    { "HueDiv":  1, "SatDiv":  5, "ValDiv":  2, "HueShift":  -0.498363, "SatScale": 0.994729, "ValScale": 0.978392 },
    { "HueDiv":  2, "SatDiv":  0, "ValDiv":  0, "HueShift":   0.000000, "SatScale": 1.000000, "ValScale": 1.000000 },
    { "HueDiv":  2, "SatDiv":  0, "ValDiv":  1, "HueShift":  -0.768260, "SatScale": 0.998313, "ValScale": 1.000000 },
    { "HueDiv":  2, "SatDiv":  0, "ValDiv":  2, "HueShift":  -0.508900, "SatScale": 0.996094, "ValScale": 1.000000 },
    { "HueDiv":  2, "SatDiv":  1, "ValDiv":  0, "HueShift":   0.000000, "SatScale": 1.000000, "ValScale": 1.000000 },
    { "HueDiv":  2, "SatDiv":  1, "ValDiv":  1, "HueShift":  -0.768260, "SatScale": 0.998313, "ValScale": 0.986646 },
    { "HueDiv":  2, "SatDiv":  1, "ValDiv":  2, "HueShift":  -0.508900, "SatScale": 0.996094, "ValScale": 0.968572 },
    { "HueDiv":  2, "SatDiv":  2, "ValDiv":  0, "HueShift":   0.000000, "SatScale": 1.000000, "ValScale": 1.000000 },
    { "HueDiv":  2, "SatDiv":  2, "ValDiv":  1, "HueShift":  -1.700042, "SatScale": 1.041945, "ValScale": 0.976196 },
    { "HueDiv":  2, "SatDiv":  2, "ValDiv":  2, "HueShift":   0.615310, "SatScale": 1.010225, "ValScale": 0.961559 },
    { "HueDiv":  2, "SatDiv":  3, "ValDiv":  0, "HueShift":   0.000000, "SatScale": 1.000000, "ValScale": 1.000000 },
    { "HueDiv":  2, "SatDiv":  3, "ValDiv":  1, "HueShift":  -0.497281, "SatScale": 1.010197, "ValScale": 0.963300 },
    { "HueDiv":  2, "SatDiv":  3, "ValDiv":  2, "HueShift":   1.328176, "SatScale": 1.004911, "ValScale": 0.959678 },
    { "HueDiv":  2, "SatDiv":  4, "ValDiv":  0, "HueShift":   0.000000, "SatScale": 1.000000, "ValScale": 1.000000 },
    { "HueDiv":  2, "SatDiv":  4, "ValDiv":  1, "HueShift":   0.099982, "SatScale": 0.997549, "ValScale": 0.970038 },
    { "HueDiv":  2, "SatDiv":  4, "ValDiv":  2, "HueShift":   0.504854, "SatScale": 0.999362, "ValScale": 0.984709 },
    { "HueDiv":  2, "SatDiv":  5, "ValDiv":  0, "HueShift":   0.000000, "SatScale": 1.000000, "ValScale": 1.000000 },
    { "HueDiv":  2, "SatDiv":  5, "ValDiv":  1, "HueShift":   0.309064, "SatScale": 0.997570, "ValScale": 1.012038 },
    { "HueDiv":  2, "SatDiv":  5, "ValDiv":  2, "HueShift":   0.313786, "SatScale": 0.997648, "ValScale": 1.013355 },
    { "HueDiv":  3, "SatDiv":  0, "ValDiv":  0, "HueShift":   0.000000, "SatScale": 1.000000, "ValScale": 1.000000 },
    { "HueDiv":  3, "SatDiv":  0, "ValDiv":  1, "HueShift":   3.879327, "SatScale": 1.027860, "ValScale": 1.000000 },
    { "HueDiv":  3, "SatDiv":  0, "ValDiv":  2, "HueShift":   3.532059, "SatScale": 1.019343, "ValScale": 1.000000 },
    { "HueDiv":  3, "SatDiv":  1, "ValDiv":  0, "HueShift":   0.000000, "SatScale": 1.000000, "ValScale": 1.000000 },
    { "HueDiv":  3, "SatDiv":  1, "ValDiv":  1, "HueShift":   3.879327, "SatScale": 1.027860, "ValScale": 1.000480 },
    { "HueDiv":  3, "SatDiv":  1, "ValDiv":  2, "HueShift":   3.532059, "SatScale": 1.019343, "ValScale": 0.979018 },
    { "HueDiv":  3, "SatDiv":  2, "ValDiv":  0, "HueShift":   0.000000, "SatScale": 1.000000, "ValScale": 1.000000 },
    { "HueDiv":  3, "SatDiv":  2, "ValDiv":  1, "HueShift":  -0.577362, "SatScale": 1.009899, "ValScale": 0.977843 },
    { "HueDiv":  3, "SatDiv":  2, "ValDiv":  2, "HueShift":   0.948862, "SatScale": 1.016268, "ValScale": 0.967812 },
    { "HueDiv":  3, "SatDiv":  3, "ValDiv":  0, "HueShift":   0.000000, "SatScale": 1.000000, "ValScale": 1.000000 },
    { "HueDiv":  3, "SatDiv":  3, "ValDiv":  1, "HueShift":   0.080757, "SatScale": 1.001733, "ValScale": 0.977333 },
    { "HueDiv":  3, "SatDiv":  3, "ValDiv":  2, "HueShift":   2.074743, "SatScale": 1.019212, "ValScale": 0.982167 },
    { "HueDiv":  3, "SatDiv":  4, "ValDiv":  0, "HueShift":   0.000000, "SatScale": 1.000000, "ValScale": 1.000000 },
    { "HueDiv":  3, "SatDiv":  4, "ValDiv":  1, "HueShift":   0.803052, "SatScale": 0.999782, "ValScale": 0.989461 },
    { "HueDiv":  3, "SatDiv":  4, "ValDiv":  2, "HueShift":   2.366079, "SatScale": 1.010309, "ValScale": 1.002712 },
    { "HueDiv":  3, "SatDiv":  5, "ValDiv":  0, "HueShift":   0.000000, "SatScale": 1.000000, "ValScale": 1.000000 },
    { "HueDiv":  3, "SatDiv":  5, "ValDiv":  1, "HueShift":   0.873238, "SatScale": 0.997550, "ValScale": 1.007838 },
    { "HueDiv":  3, "SatDiv":  5, "ValDiv":  2, "HueShift":   1.393285, "SatScale": 1.001151, "ValScale": 1.008462 },
    { "HueDiv":  4, "SatDiv":  0, "ValDiv":  0, "HueShift":   0.000000, "SatScale": 1.000000, "ValScale": 1.000000 },
    { "HueDiv":  4, "SatDiv":  0, "ValDiv":  1, "HueShift":   1.938873, "SatScale": 1.089184, "ValScale": 1.000000 },
    { "HueDiv":  4, "SatDiv":  0, "ValDiv":  2, "HueShift":   2.840321, "SatScale": 1.088911, "ValScale": 1.000000 },
    { "HueDiv":  4, "SatDiv":  1, "ValDiv":  0, "HueShift":   0.000000, "SatScale": 1.000000, "ValScale": 1.000000 },
    { "HueDiv":  4, "SatDiv":  1, "ValDiv":  1, "HueShift":   1.938873, "SatScale": 1.089184, "ValScale": 1.029355 },
    { "HueDiv":  4, "SatDiv":  1, "ValDiv":  2, "HueShift":   2.840321, "SatScale": 1.088911, "ValScale": 1.000902 },
    { "HueDiv":  4, "SatDiv":  2, "ValDiv":  0, "HueShift":   0.000000, "SatScale": 1.000000, "ValScale": 1.000000 },
    { "HueDiv":  4, "SatDiv":  2, "ValDiv":  1, "HueShift":  -0.020651, "SatScale": 1.016369, "ValScale": 1.039608 },
    { "HueDiv":  4, "SatDiv":  2, "ValDiv":  2, "HueShift":   0.459173, "SatScale": 1.025850, "ValScale": 1.009484 },
    { "HueDiv":  4, "SatDiv":  3, "ValDiv":  0, "HueShift":   0.000000, "SatScale": 1.000000, "ValScale": 1.000000 },
    { "HueDiv":  4, "SatDiv":  3, "ValDiv":  1, "HueShift":  -0.138498, "SatScale": 0.996484, "ValScale": 1.056785 },
    { "HueDiv":  4, "SatDiv":  3, "ValDiv":  2, "HueShift":   0.451256, "SatScale": 1.008665, "ValScale": 1.028304 },
    { "HueDiv":  4, "SatDiv":  4, "ValDiv":  0, "HueShift":   0.000000, "SatScale": 1.000000, "ValScale": 1.000000 },
    { "HueDiv":  4, "SatDiv":  4, "ValDiv":  1, "HueShift":   0.847942, "SatScale": 0.993002, "ValScale": 1.081948 },
    { "HueDiv":  4, "SatDiv":  4, "ValDiv":  2, "HueShift":   0.752981, "SatScale": 1.000165, "ValScale": 1.048380 },
    { "HueDiv":  4, "SatDiv":  5, "ValDiv":  0, "HueShift":   0.000000, "SatScale": 1.000000, "ValScale": 1.000000 },
    { "HueDiv":  4, "SatDiv":  5, "ValDiv":  1, "HueShift":   0.546762, "SatScale": 1.000008, "ValScale": 1.033266 },
    { "HueDiv":  4, "SatDiv":  5, "ValDiv":  2, "HueShift":   0.351330, "SatScale": 1.000754, "ValScale": 1.015978 },
    { "HueDiv":  5, "SatDiv":  0, "ValDiv":  0, "HueShift":   0.000000, "SatScale": 1.000000, "ValScale": 1.000000 },
    { "HueDiv":  5, "SatDiv":  0, "ValDiv":  1, "HueShift":  -7.740164, "SatScale": 1.141988, "ValScale": 1.000000 },
    { "HueDiv":  5, "SatDiv":  0, "ValDiv":  2, "HueShift":  -5.995917, "SatScale": 1.140704, "ValScale": 1.000000 },
    { "HueDiv":  5, "SatDiv":  1, "ValDiv":  0, "HueShift":   0.000000, "SatScale": 1.000000, "ValScale": 1.000000 },
    { "HueDiv":  5, "SatDiv":  1, "ValDiv":  1, "HueShift":  -7.740164, "SatScale": 1.141988, "ValScale": 1.027035 },
    { "HueDiv":  5, "SatDiv":  1, "ValDiv":  2, "HueShift":  -5.995917, "SatScale": 1.140704, "ValScale": 1.001403 },
    { "HueDiv":  5, "SatDiv":  2, "ValDiv":  0, "HueShift":   0.000000, "SatScale": 1.000000, "ValScale": 1.000000 },
    { "HueDiv":  5, "SatDiv":  2, "ValDiv":  1, "HueShift":  -6.221800, "SatScale": 1.065223, "ValScale": 1.032295 },
    { "HueDiv":  5, "SatDiv":  2, "ValDiv":  2, "HueShift":  -4.662898, "SatScale": 1.072518, "ValScale": 1.009416 },
    { "HueDiv":  5, "SatDiv":  3, "ValDiv":  0, "HueShift":   0.000000, "SatScale": 1.000000, "ValScale": 1.000000 },
    { "HueDiv":  5, "SatDiv":  3, "ValDiv":  1, "HueShift":  -2.976302, "SatScale": 1.039025, "ValScale": 1.039473 },
    { "HueDiv":  5, "SatDiv":  3, "ValDiv":  2, "HueShift":  -2.678050, "SatScale": 1.041198, "ValScale": 1.017745 },
    { "HueDiv":  5, "SatDiv":  4, "ValDiv":  0, "HueShift":   0.000000, "SatScale": 1.000000, "ValScale": 1.000000 },
    { "HueDiv":  5, "SatDiv":  4, "ValDiv":  1, "HueShift":  -0.840111, "SatScale": 1.018951, "ValScale": 1.037068 },
    { "HueDiv":  5, "SatDiv":  4, "ValDiv":  2, "HueShift":  -0.786371, "SatScale": 1.015569, "ValScale": 1.017200 },
    { "HueDiv":  5, "SatDiv":  5, "ValDiv":  0, "HueShift":   0.000000, "SatScale": 1.000000, "ValScale": 1.000000 },
    { "HueDiv":  5, "SatDiv":  5, "ValDiv":  1, "HueShift":   0.547382, "SatScale": 1.005646, "ValScale": 1.033023 },
    { "HueDiv":  5, "SatDiv":  5, "ValDiv":  2, "HueShift":   0.309819, "SatScale": 1.003338, "ValScale": 1.018318 }
  ]
}

There’s no ForwardMatrix in the profile, so it looks like the HueSatMap LUT is what does the color conversion. Again, dcamprof is your friend, here’s the doc section on HueSatMap in DCPs:

https://www.ludd.ltu.se/~torger/dcamprof.html#dcp_hsm


(Glenn Butcher) #22

Not too much; camera profiles are how we deal with the spectral response of the camera.


(Morgan Hardwood) #23

That is why small matte targets like the ColorChecker Passport are recommended, because lighting them evenly is in fact quite simple.

To the contrary:

The IT 8.7 camera target from Wolf Faust does not have white patches along its periphery, but the X-Rite ColorChecker SG does (and is used by Imaging Resource, e.g. https://www.imaging-resource.com/PRODS/nikon-d750/D750hVFAI00100.HTM ).

The open-source program DCamProf automatically models and corrects for glare and applies flat-field correction to correct for uneven lighting.

:laughing:

If you already have a good general-purpose dual-illuminant profile, e.g. from me, then it is my opinion that a color target is not a worthwhile purchase, it won’t be of much use for everyday photography, and it would be difficult to justify the cost.

It has a color matrix for illuminant D65 and a HueSatMap LUT which adds corrections on top of the matrix.


(Glenn Butcher) #24

I guess I need to read Anders’ missive more carefully, as I got the impression that the ColorMatrixes were for color temperature correction, and that it took a ForwardMatrix to do the PCS transform… ??


(Morgan Hardwood) #25

@ggbutcher yes, you are right:


#26

Do you mean those embedded in RawTherapee?


(Morgan Hardwood) #27

They’re not embedded, just bundled, but yes, though some of them (the ones under 1MB, less than half of them) are old, single-illuminant and of unknown quality. Regardless whether we have a DCP for your camera or not, if you have access to a color target then send me your shots (StdA and D65).


(jo) #28

while i like to make fun of 4x4 cars too… i disagree that we should give up and only use colour matrices. the camera rgb values come from spectral responsivity of the camera and the incident light spectrum. this combination is absolutely not described by a 3x3 matrix in tristimulus. i don’t see any other reason than “this is the first thing we tried” to justify a matrix. and it does become horribly wrong for colours you didn’t care about so much when fitting the matrix. this is mostly for highly saturated colours (blue/pink is a notorious artifact), but depends just the same on the kind of target you used to fit the matrix as it would if you had fitted a lut/higher order mapping. and yes, the 24 checker thing is not really useful to fit any more data than is contained in a matrix.

fwiw, the clut module in darktable uses a thin plate spline with the first dimensions fixed to a matrix, so it smoothly degenerates to the expressive power (or lack thereof) of a matrix. the rest it interpolates the datapoints you give it precisely and minimises ringing in between.


(Aurélien Pierre) #29

It depends what sort of profile you are making…

A LUT is a sparse description of a continuous transfer function. Between the samples of the LUT, you need to interpolate the data. Interpolation comes always with an error (its upper bound is half the interpolation step). The more samples you get, the smaller the interpolation steps becomes, and the interpolation error follows.

On the other way, if you get too many patches, it is possible that you will overconstrain your problem when computing the inverse transform… But it is always possible to use local averages of patches if so, so you undersample.

That’s why matrice profiles are generally safer: using a 24 patches chart to create a 3×3 matrice averages every possible local errors on the chart. Whereas doing a 24 (or more) samples LUT just carries them away.

Generally speaking, you want a n^2 chart with randomly positionned patches, to build an 2n LUT maximum. Or else you do some filtering. Anyway, I disagree with It’s more important to have a good reference measurement of the test target than to have many patches. It might be a hint his solver is broken.


(Aurélien Pierre) #30

Yep, except that people don’t have diffuse controlled D65 or D50 lighting at home with black walls to control light spills and reflections. So at the end, garbage data in, garbage LUT out…


(Morgan Hardwood) #31

Eppur si muove.


#32

But I’m not sure I have a 2800K (incandescent) lamp for that StdA. The last ones I bought were horrible 5000K (led) from Ikea :blush:


#33

Free advertisement for Ik**.

Did I miss your answer, @Claes?


#34

Yes.


#35

Oh, it is in the edit of the OP.


#36

@Morgan_Hardwood My target for daylight anyway https://filebin.net/ak0dcv70qa588it0


(Morgan Hardwood) #37

@geldo let’s take this in private so we don’t hijack the thread.


#38

In order to try to steer this thread back onto its original track:
Could you please be a little more specific? What is printed on
the bulb base? Name? Wattage? Part number? &c


#39

RYET LED1748G6K5 E27 600lm 5.4W 5000K

My comment was about domestic usage where I much prefer a warmer tint.


#40

5000k? horrible, not even usable in cellar or attic!
some 3000k irc /cri 90-99 LED lamps here (french site):

https://www.lampesdirect.fr/lampe-led/ampoules-led-spots/ampoule-led-gu10-230v?light_color=39381&color_rendering_ra=40598

some leds have even redshift by dimming