The Quest for Good Color - 1. Spectral Sensitivity Functions (SSFs) and Camera Profiles

Beware of terminology. In normal usage, “white balance” changes pixels without changing the primaries (it is a simple multiplication of RGB channels), but “chromatic adaptation” does change the primaries. In this thread, when @anon41087856 writes “stupid white balancing” I think he means “chromatic adaptation by XYZ scaling”. But I could be wrong, of course.

See Chromatic adaptation - Wikipedia and Welcome to Bruce Lindbloom's Web Site

1 Like

@samuelchia RT’s CIECAM02 module allows you to adapt. It can affect other modules such as Tonemap. Whatever @jdc has worked or is working on: e.g., newlocallab branch. ART may have this too (ask @agriggio).

Thanks @afre. I almost never use the CIECAM02 module for any of my editing and I have never encountered the extreme effects which @anon41087856 is showing. Or maybe it’s somehow escaped me without my knowing :S.

My understanding from my reading of Anders Torger’s writings on camera profiling is that adaption does occur but again I’m not sure I ever encountered such extreme distortion of colours relating to the camera’s sensitivity to UV light. There is something I’m clearly not understanding which I can hopefully learn about.

@snibgo Yeah, the terminology is confusing for me. I see that @anon41087856 has a history of being pedantic (I don’t meant this in a negative way at all) about terminology, I just wanted to understand what he is saying better. I looked at some of the past discourse and I have found his writing difficult to understand, and I imagine it might be too for those who are missing one more more pieces of key knowledge. Obviously he is extremely knowledgeable and I would be happy to learn.

In digital, white balance is the dumbed GUI name for what chromatic adaptation does. Changing the pixels or changing the primaries is the same, at the end of the day, since it’s only vector algebra. White balance is CAT. In film, white balance was done with tuning directly the RGB filters, aka the primaries. Stupid white balancing is indeed XYZ scaling, aka the most simple yet fairly inaccurate way.

The massive shift happening is simply the consequence of a white balance/CAT. It depends of course what the original illuminant of the scene is, but the same kind of distortion happens everytime. If you have pixels in the deep blue-purple-UV region, they will look like fully saturated color blobs with no details or gradients. If you don’t have pixels in that region, then you might not see it, but it still happens.

UV and IR filters don’t entirely remove them. But the main problem is the 3 primaries, that are the solution of a linear mapping problem (color checker RGB → XYZ space) which doesn’t care about bounds. The camera primaries, stored in the input matrice, only care about moving camera RGB accurately in the central part of the visible locus, not about staying in that visible locus, which would require the spectral goodness @ggbutcher is trying to unleash here.

… and I turn to the right to regard the Rube Goldberg contraption perched on the corner of my desk and say, “you’d better clean up your act, buddy…” :smiley:

Actually, I have some data, so installment 2 is plausible within a week or so…

@ggbutcher , great post, I think I pretty much follow what you said, though not some of the follow-up posts which are def. beyond me!

Perhaps you’ve heard of Bill Claff, if not he does a lot of measurement, frequently posts in DPReview forums and has a site - https://www.photonstophotos.net/
I just had a quick skim but no obvious spectral data except for this -
Spectral Response of Bayer and X3

Looking forward to part 2!

How about this? It’s pretty cheap compared to others.
https://www.aliexpress.com/item/4000329457996.html?spm=a2g0o.productlist.0.0.3b084c4elLb0dJ&algo_pvid=181b9e47-ce43-4e7d-8c30-dca3efca2445&algo_expid=181b9e47-ce43-4e7d-8c30-dca3efca2445-8&btsid=0b0a01f816090858158561470eefdd&ws_ab_test=searchweb0_0,searchweb201602_,searchweb201603_

1 Like

Yes indeed, much better…

I just captured Nikon D5600 spectra from my son’s new camera, do enjoy the simplicity of two images vs dozens required for a monochromator campaign, but the lure of “lab-grade” still haunts… :laughing:

1 Like

I’d like to make my own setup one day. I own the spectrometer already, but I don’t know if it can be used for anything besides monitor calibration (software wise).

A spectrometer is probably my next major purchase. Thinking about its uses, in addition to monitor calibration:

  • Re-measure an old ColorChecker to update the calibration data
  • Make one’s own charts for specific colorations
  • Measure light spectra; IMHO more important lately with all the LED mixtures being promoted as “white”…
1 Like

I have X-rite i1Studio spectrometer but it seems to have an integrated UV cut filter as per ArgyllCMS website, altho argyll does not see my spectrometer as i1Studio but as ColorMunki it still warns me about the UV filter and doesn’t let me measure paper. I’m trying to find the specs for mine as it’s the newest version.

Edit: damn, it has uv cut filter :cry: https://xritephoto.com/i1Studio

Yes the hardware for the Munki and the i1Studio is supposedly the same, just a re-brand. They both have UV cut filters but they measure down to 400nm every 10/3nm and most camera SSFs let through very little if any signal there. I am not sure what you mean about not allowing the measurement of paper: forget about X-rite software, set it to reflective mode (down) and use Argyll Spotread or similar. This is ambient mode (up, where it goes through a diffuser) on a gray afternoon:

2700K Led:

1 Like

For SSF workflow, a spectrometer is used to measure spectral power distribution of the light source. If I’m able to get decent (~2.9 max DE on CC24 training data) power-adjusted SSF data using a measurement from a comparable light source, IMHO extrapolating the lower 20nm from the i1Studio measurement shouldn’t be debilitating, unless you’re extremely interested in extreme blue performance…

1 Like

Don’t modern lenses have coating that block most UV anyway?

I’d venture a guess that this is highly likely. And I’d still call 380nm not really UV, it’s the border to UV-A (380-315nm).

Aren’t we all these days?! :smile_cat:

1 Like

…One Profile To Rule Them All… my precious… :flushed:

2 Likes

This:
" !!! Instrument has UV filter - can’t measure FWA !!!" warning

$ illumread -H ikea_led_bulb.sp

Press 1 .. 7
1) Measure direct illuminant
2) Measure illuminant reflected from paper
3) Measure paper
4) Select another instrument, Currently 1 ( '/dev/bus/usb/001/006 (X-Rite ColorMunki)')
5) Compute illuminant spectrum, average result with 0 previous readings & save it
6) Compute illuminant spectrum from this reading & save result
7) Exit
'1'

Instrument needs a calibration before continuing

Set instrument sensor to calibration position,
 and then hit any key to continue,
 or hit Esc or Q to abort: 
Calibration complete

(If applicable) set instrument to ambient measurenent mode, or place
ambient adapter on it, and position it so as to measure the illuminant directly.
Hit ESC or Q to abort, or instrument switch or any other key to take a reading: 

Press 1 .. 7
1) Measure direct illuminant (measured)
2) Measure illuminant reflected from paper
3) Measure paper
4) Select another instrument, Currently X-Rite ColorMunki
5) Compute illuminant spectrum, average result with 0 previous readings & save it
6) Compute illuminant spectrum from this reading & save result
7) Exit
'6'
Need to measure the illuminant reflected off paper

Press 1 .. 7
1) Measure direct illuminant (measured)
2) Measure illuminant reflected from paper
3) Measure paper
4) Select another instrument, Currently X-Rite ColorMunki
5) Compute illuminant spectrum, average result with 0 previous readings & save it
6) Compute illuminant spectrum from this reading & save result
7) Exit
'2'

(If applicable) set instrument to telephoto measurenent mode,
position it so as to measure the illuminant reflected from the paper.
Hit ESC or Q to abort, or instrument switch or any other key to take a reading: 


Illuminant measure failed due to the sensor being in the wrong position
(Sensor should be in projector position)

Press 1 .. 7
1) Measure direct illuminant (measured)
2) Measure illuminant reflected from paper
3) Measure paper
4) Select another instrument, Currently X-Rite ColorMunki
5) Compute illuminant spectrum, average result with 0 previous readings & save it
6) Compute illuminant spectrum from this reading & save result
7) Exit
'2'

(If applicable) set instrument to telephoto measurenent mode,
position it so as to measure the illuminant reflected from the paper.
Hit ESC or Q to abort, or instrument switch or any other key to take a reading: 


Press 1 .. 7
1) Measure direct illuminant (measured)
2) Measure illuminant reflected from paper (measured)
3) Measure paper
4) Select another instrument, Currently X-Rite ColorMunki
5) Compute illuminant spectrum, average result with 0 previous readings & save it
6) Compute illuminant spectrum from this reading & save result
7) Exit
'3'
!!! Instrument has UV filter - can't measure FWA !!!

Press 1 .. 7
1) Measure direct illuminant (measured)
2) Measure illuminant reflected from paper (measured)
3) Measure paper
4) Select another instrument, Currently X-Rite ColorMunki
5) Compute illuminant spectrum, average result with 0 previous readings & save it
6) Compute illuminant spectrum from this reading & save result
7) Exit
'3'
!!! Instrument has UV filter - can't measure FWA !!!

Press 1 .. 7
1) Measure direct illuminant (measured)
2) Measure illuminant reflected from paper (measured)
3) Measure paper
4) Select another instrument, Currently X-Rite ColorMunki
5) Compute illuminant spectrum, average result with 0 previous readings & save it
6) Compute illuminant spectrum from this reading & save result
7) Exit
'6'
Need to measure the paper

Press 1 .. 7
1) Measure direct illuminant (measured)
2) Measure illuminant reflected from paper (measured)
3) Measure paper
4) Select another instrument, Currently X-Rite ColorMunki
5) Compute illuminant spectrum, average result with 0 previous readings & save it
6) Compute illuminant spectrum from this reading & save result
7) Exit

Unless I am missing something Illumread is for measuring illuminants. Spotread is for measuring reflective stuff.